<?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>75592</bug_id>
          
          <creation_ts>2012-01-04 17:55:54 -0800</creation_ts>
          <short_desc>[EFL] Move viewport functions to new files</short_desc>
          <delta_ts>2012-11-28 19:28:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>joone.hur</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>t.morawski</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>529913</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-04 17:55:54 -0800</bug_when>
    <thetext>Too many functions are implemented to ewk_view.cpp. I think that independent features need to be moved to new files. This patch moves APIs and internal functions related to viewport meta tag to new files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529919</commentid>
    <comment_count>1</comment_count>
      <attachid>121198</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-04 18:00:45 -0800</bug_when>
    <thetext>Created attachment 121198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529989</commentid>
    <comment_count>2</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-04 21:11:12 -0800</bug_when>
    <thetext>CC&apos;ing kenneth and joone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530044</commentid>
    <comment_count>3</comment_count>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-01-04 23:50:57 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=121198&amp;action=review

&gt; Source/WebKit/efl/ChangeLog:12
&gt; +        * CMakeListsEfl.txt:

Could you add more description about changes that you have made in your patch here?

&gt; Source/WebKit/efl/ewk/ewk_viewport_attributes.cpp:60
&gt; +    int desktopWidth = 980;

What this magic number means? Why it is 980 or not 982? Missing comment. 

&gt; Source/WebKit/efl/ewk/ewk_viewport_attributes.cpp:125
&gt; +

You may use new operator insted of calloc. Please read below url. http://trac.webkit.org/wiki/EFLWebKitCodingStyle

&gt; Source/WebKit/efl/ewk/ewk_viewport_attributes_private.h:27
&gt; +#endif

I wonder if there is a appropriate to use extern &quot;C&quot; in all private header now since all files are c++ files that are compiled by c++ compiler...

&gt; Source/WebKit/efl/ewk/ewk_viewport_attributes_private.h:36
&gt; +

Where is function that delete Ewk_Viewport_Private_Data* object? Or where at least viewportAttributes form _Ewk_View_Private_Data is deleted? It looks like mem leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530080</commentid>
    <comment_count>4</comment_count>
      <attachid>121236</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-05 01:03:29 -0800</bug_when>
    <thetext>Created attachment 121236
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530085</commentid>
    <comment_count>5</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-05 01:11:06 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=121198&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_viewport_attributes.cpp:60
&gt; &gt; +    int desktopWidth = 980;

AFAIK, 980 works well for most web pages for desktop browsers. Other ports(gtk, qt and so on) are using this value as well.
 
&gt; &gt; Source/WebKit/efl/ewk/ewk_viewport_attributes_private.h:27
&gt; &gt; +#endif
&gt; 
&gt; I wonder if there is a appropriate to use extern &quot;C&quot; in all private header now since all files are c++ files that are compiled by c++ compiler...

You right. this header file doesn&apos;t need to use extern &quot;C&quot;.
 
&gt; &gt; Source/WebKit/efl/ewk/ewk_viewport_attributes_private.h:36
&gt; &gt; +
&gt; 
&gt; Where is function that delete Ewk_Viewport_Private_Data* object? Or where at least viewportAttributes form _Ewk_View_Private_Data is deleted? It looks like mem leak.

I missed to delete private data from ewk view&apos;s private data. I fix it.


Thank you for your review. Previous patch was incomplete. I update this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530091</commentid>
    <comment_count>6</comment_count>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-01-05 01:26:44 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=121236&amp;action=review

&gt; Source/WebKit/efl/ewk/ewk_viewport_attributes.cpp:120
&gt; +    if (!ewkView)

or EINA_SAFETY_ON_NULL_RETURN could be used

&gt; Source/WebKit/efl/ewk/ewk_viewport_attributes.h:36
&gt; +

Is it possible to move this declaration to ewk_viewport_attributes_private.h?

&gt; Source/WebKit/efl/ewk/ewk_viewport_attributes_private.h:28
&gt; +

Is extern &quot;c&quot; is needed here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530109</commentid>
    <comment_count>7</comment_count>
      <attachid>121236</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-01-05 01:56:58 -0800</bug_when>
    <thetext>Comment on attachment 121236
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=121236&amp;action=review

&gt; Source/WebKit/efl/ewk/ewk_private.h:38
&gt; +#include &quot;ewk_viewport_attributes_private.h&quot;

IMO, we can move this into cpp files which use this header.

&gt; Source/WebKit/efl/ewk/ewk_viewport_attributes.cpp:121
&gt; +    if (!ewkView)
&gt; +        return 0;

how do you think about ASSERT(ewkView);

&gt; Source/WebKit/efl/ewk/ewk_viewport_attributes.h:35
&gt; +typedef struct _Ewk_Viewport_Attributes Ewk_Viewport_Attributes;

Should we open _Ewk_Viewport_Attributes ?

And I think that extern &quot;C&quot; is needed.

&gt; Source/WebKit/efl/ewk/ewk_viewport_attributes_private.h:27
&gt; +#ifdef __cplusplus
&gt; +extern &quot;C&quot; {
&gt; +#endif

extern &quot;C&quot; is not required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530142</commentid>
    <comment_count>8</comment_count>
      <attachid>121249</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-05 02:58:48 -0800</bug_when>
    <thetext>Created attachment 121249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530145</commentid>
    <comment_count>9</comment_count>
      <attachid>121250</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-05 03:03:44 -0800</bug_when>
    <thetext>Created attachment 121250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530147</commentid>
    <comment_count>10</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-05 03:04:57 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 121236 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=121236&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_private.h:38
&gt; &gt; +#include &quot;ewk_viewport_attributes_private.h&quot;
&gt; 
&gt; IMO, we can move this into cpp files which use this header.

Yes, that file should be included by cpp file directly.

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_viewport_attributes.cpp:121
&gt; &gt; +    if (!ewkView)
&gt; &gt; +        return 0;
&gt; 
&gt; how do you think about ASSERT(ewkView);

I also think ASSERT is better.

&gt; &gt; Source/WebKit/efl/ewk/ewk_viewport_attributes.h:35
&gt; &gt; +typedef struct _Ewk_Viewport_Attributes Ewk_Viewport_Attributes;
&gt; 
&gt; Should we open _Ewk_Viewport_Attributes ?
&gt; 
&gt; And I think that extern &quot;C&quot; is needed.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_viewport_attributes_private.h:27
&gt; &gt; +#ifdef __cplusplus
&gt; &gt; +extern &quot;C&quot; {
&gt; &gt; +#endif
&gt; 
&gt; extern &quot;C&quot; is not required.

This is my mistake. Thank you for your review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530156</commentid>
    <comment_count>11</comment_count>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-01-05 03:32:42 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #7)
&gt; &gt; &gt; Source/WebKit/efl/ewk/ewk_viewport_attributes.cpp:121
&gt; &gt; &gt; +    if (!ewkView)
&gt; &gt; &gt; +        return 0;
&gt; &gt; 
&gt; &gt; how do you think about ASSERT(ewkView);
&gt; 
&gt; I also think ASSERT is better.
I think current implementation is quite good. I don&apos;t think if this is a good solution. Assert should be never used in that context. Moreover, it only work in  debug code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530161</commentid>
    <comment_count>12</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-05 03:44:11 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; &gt; Source/WebKit/efl/ewk/ewk_viewport_attributes.cpp:121
&gt; &gt; &gt; &gt; +    if (!ewkView)
&gt; &gt; &gt; &gt; +        return 0;
&gt; &gt; &gt; 
&gt; &gt; &gt; how do you think about ASSERT(ewkView);
&gt; &gt; 
&gt; &gt; I also think ASSERT is better.
&gt; I think current implementation is quite good. I don&apos;t think if this is a good solution. Assert should be never used in that context. Moreover, it only work in  debug code.

It seems to me that Ryuan think ewkView is almost exist. Because, that function is invoked by ChromeClientEfl.cpp. But, IMO, if other functions call this function, we&apos;re able to need to check if ewkView is null. Ryuan, how do you think ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530212</commentid>
    <comment_count>13</comment_count>
      <attachid>121250</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-01-05 05:20:05 -0800</bug_when>
    <thetext>Comment on attachment 121250
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=121250&amp;action=review

This new architecture is weird and does not seem to simplify things very much. We have moved from a situation in which ChromeClientEfl called code in ewk_view to one in which ChromClientEfl uses a view to get private viewport data that is then passed to another viewport function, and all these parts have pointers to the view. Plus, it looks like the user cannot retrieve the viewport data anymore.

The situation at stake here is quite simple: ChromeClientEfl needs to notify that the viewport&apos;s properties have changed, and ewk needs to provide access to the viewport&apos;s properties (ie. convert the WebCore data types to user-visible data types). This all sounds like view-specific stuff to me.

I agree that refactoring and breaking up ewk_view and ewk_frame is good (they are huge), but this specific refactoring does not help much.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:-3553
&gt; -void ewk_view_viewport_attributes_get(const Evas_Object* ewkView, int* width, int* height, float* initScale, float* maxScale, float* minScale, float* devicePixelRatio, Eina_Bool* userScalable)

How does a user get this information now?

&gt; Source/WebKit/efl/ewk/ewk_view.h:-83
&gt; - *  - &quot;viewport,changed&quot;, void: reports that viewport was changed.

The signal is still emitted by the view.

&gt; Source/WebKit/efl/ewk/ewk_viewport_attributes.cpp:24
&gt; +#include &quot;ChromeClientEfl.h&quot;

ewk shouldn&apos;t access WebCoreSupport.

&gt; Source/WebKit/efl/ewk/ewk_viewport_attributes.cpp:128
&gt; +    if (!priv) {
&gt; +        CRITICAL(&quot;could not allocate Ewk_Viewport_Private_Data&quot;);
&gt; +        return 0;
&gt; +    }

new never returns 0.

&gt; Source/WebKit/efl/ewk/ewk_viewport_attributes.h:24
&gt; +#include &lt;Eina.h&gt;
&gt; +#include &lt;Evas.h&gt;

Not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530214</commentid>
    <comment_count>14</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-01-05 05:27:24 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; &gt; &gt; Source/WebKit/efl/ewk/ewk_viewport_attributes.cpp:121
&gt; &gt; &gt; &gt; &gt; +    if (!ewkView)
&gt; &gt; &gt; &gt; &gt; +        return 0;
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; how do you think about ASSERT(ewkView);
&gt; &gt; &gt; 
&gt; &gt; &gt; I also think ASSERT is better.
&gt; &gt; I think current implementation is quite good. I don&apos;t think if this is a good solution. Assert should be never used in that context. Moreover, it only work in  debug code.
&gt; 
&gt; It seems to me that Ryuan think ewkView is almost exist. Because, that function is invoked by ChromeClientEfl.cpp. But, IMO, if other functions call this function, we&apos;re able to need to check if ewkView is null. Ryuan, how do you think ?

IMO, ewkView should not be null, whoever call this internal function.
It make sense for me to be crashed if someone call this as wrong way.
 
As similar reason, ChromeClientEfl should be created with non-null ewkView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530912</commentid>
    <comment_count>15</comment_count>
      <attachid>121393</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-05 21:08:22 -0800</bug_when>
    <thetext>Created attachment 121393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530916</commentid>
    <comment_count>16</comment_count>
      <attachid>121395</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-05 21:14:25 -0800</bug_when>
    <thetext>Created attachment 121395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530918</commentid>
    <comment_count>17</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-05 21:31:33 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 121250 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=121250&amp;action=review
&gt; 
&gt; This new architecture is weird and does not seem to simplify things very much. We have moved from a situation in which ChromeClientEfl called code in ewk_view to one in which ChromClientEfl uses a view to get private viewport data that is then passed to another viewport function, and all these parts have pointers to the view. Plus, it looks like the user cannot retrieve the viewport data anymore.

User can get viewport meta tag by signal callback.
    evas_object_smart_callback_call(priv-&gt;ewkView, &quot;viewport,changed&quot;, &amp;attributes);
In addition, I will add _get function as well. But, in this patch, I would like to concentrate on refactoring.

In addition, GTK port has similar structure. GTK port also has webkitviewportattributesXXX files. It has a view reference.
    http://trac.webkit.org/browser/trunk/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp#L814
    http://trac.webkit.org/browser/trunk/Source/WebKit/gtk/webkit/webkitviewportattributesprivate.h#L31


The viewport meta tag is *very* important for mobile domain. Although EFL port has simple implementation now, more features will be added because viewport meta tag specification is being improved further. After this patch is landed, I or my co-workers will improve viewport functions. So, I decided to move viewport functions to new files.
 
&gt; I agree that refactoring and breaking up ewk_view and ewk_frame is good (they are huge), but this specific refactoring does not help much.
&gt; 

Yes, ewk_view, ewk_frame is too huge. So, this patch will be able to become an example, how to break up ewk_view, ewk_frame.

Ryuan, 
Why don&apos;t we file a bug for your suggestion? I&apos;d like to concentrate on viewport meta tag in this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531923</commentid>
    <comment_count>18</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-01-08 19:08:11 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #13)
&gt; &gt; This new architecture is weird and does not seem to simplify things very much. We have moved from a situation in which ChromeClientEfl called code in ewk_view to one in which ChromClientEfl uses a view to get private viewport data that is then passed to another viewport function, and all these parts have pointers to the view. Plus, it looks like the user cannot retrieve the viewport data anymore.
&gt; 
&gt; User can get viewport meta tag by signal callback.
&gt;     evas_object_smart_callback_call(priv-&gt;ewkView, &quot;viewport,changed&quot;, &amp;attributes);

Yet there is no way for a user to query this `attributes&apos; object, as its definition is private and there are no functions to retrieve its data anymore.

&gt; In addition, I will add _get function as well. But, in this patch, I would like to concentrate on refactoring.

In this case, the refactoring work is also removing functionality without adding a replacement anywhere. This is a no-go.

&gt; In addition, GTK port has similar structure. GTK port also has webkitviewportattributesXXX files. It has a view reference.
&gt;     http://trac.webkit.org/browser/trunk/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp#L814
&gt;     http://trac.webkit.org/browser/trunk/Source/WebKit/gtk/webkit/webkitviewportattributesprivate.h#L31

Still, the way the current patch tries to replicate the structure used by the GTK+ port is cumbersome: the naming scheme and the data types do not match (eg. Ewk_Viewport_Private_Data and ewk_viewport_attributes_new) and there are many more private functions and data types than needed.

Assuming it makes sense to split this stuff out of ewk_view, right now one only needs the following:
 - ewk_view_viewport_attributes_get (or ewk_view_viewport_get etc), similar to GTK&apos;s webkit_web_view_get_viewport_attributes, which is public and returns a viewport object.
 - getters for the information stored in a viewport object.
 - A way for the ChromeClient to recalculate the viewport data and emitting the appropriate signal.

Getting rid of _Ewk_Viewport_Private_Data, making the compute function also emit the &quot;viewport,changed&quot; signal and keeping all ewk_view functions in ewk_view.{cpp,h}, for example, would reduce the size of the patch and make things easier to read and accept.

&gt; The viewport meta tag is *very* important for mobile domain. Although EFL port has simple implementation now, more features will be added because viewport meta tag specification is being improved further. After this patch is landed, I or my co-workers will improve viewport functions. So, I decided to move viewport functions to new files.

The importance of the feature is orthogonal to the discussion -- newer features and refactoring are indeed welcome. But this does not mean the refactoring in this patch does not need to be improved before being landed. As it is, it needlessly complicates things and will make maintenance needlessly harder.

It would be nice to hear what the plans for new viewport features are, so we can also see if they contribute to the case of moving this code out of ewk_view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531924</commentid>
    <comment_count>19</comment_count>
      <attachid>121395</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-01-08 19:11:07 -0800</bug_when>
    <thetext>Comment on attachment 121395
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=121395&amp;action=review

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:133
&gt; +    Ewk_Viewport_Private_Data* viewportPrivateData;

You could use an OwnPtr here to avoid having to manage the memory manually.

&gt; Source/WebKit/efl/ewk/ewk_viewport_attributes.cpp:56
&gt; +    WebCore::ViewportArguments arguments;

It may not be necessary to keep this object around if you recompute everything anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778613</commentid>
    <comment_count>20</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-28 19:28:57 -0800</bug_when>
    <thetext>This patch is not needed anymore.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121198</attachid>
            <date>2012-01-04 18:00:45 -0800</date>
            <delta_ts>2012-01-05 01:03:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75592-20120105110044.patch</filename>
            <type>text/plain</type>
            <size>20700</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzOTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZDVkNGI1OWY5
ZmI2MDU0YmUxMGVkNDc0YzNhYzA2MzhmNTA2MDBkMC4uMTRmNDIwZDAxZDNjYzVjOWVkY2VkN2I5
MTI1OTkzYzIyYWQwM2VhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEy
LTAxLTAzICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW0VGTF0gTW92ZSB2aWV3cG9ydCBmdW5jdGlvbnMgdG8gbmV3IGZpbGVzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1OTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb28gbWFueSBmdW5jdGlvbnMg
YXJlIGltcGxlbWVudGVkIHRvIGV3a192aWV3LmNwcC4gU28sIGluZGVwZW5kZW50IGZlYXR1cmVz
IG5lZWQgdG8KKyAgICAgICAgYmUgbW92ZWQgdG8gbmV3IGZpbGVzLiBUaGlzIHBhdGNoIG1vdmVz
IEFQSXMgYW5kIGludGVybmFsIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHZpZXdwb3J0IG1ldGEgdGFn
CisgICAgICAgIHRvIG5ldyBmaWxlcy4KKworICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0Ogor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hh
bmdlKToKKyAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKKyAgICAgICAgKiBld2svZXdrX3Zp
ZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKGV3a192aWV3
X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KToKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKKyAg
ICAgICAgKiBld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUpOgorICAgICAgICAoZXdrX3Zp
ZXdwb3J0X2F0dHJpYnV0ZXNfY2hhbmdlZCk6CisgICAgICAgIChld2tfdmlld3BvcnRfYXR0cmli
dXRlc19uZXcpOgorICAgICAgICAqIGV3ay9ld2tfdmlld3BvcnRfYXR0cmlidXRlcy5oOiBBZGRl
ZC4KKyAgICAgICAgKiBld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfcHJpdmF0ZS5oOiBBZGRl
ZC4KKwogMjAxMi0wMS0wMiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIFtFRkxdIFJlbW92ZSB3aGl0ZXNwYWNlL2RlY2xhcmF0aW9uIHN0eWxlIGV4
Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9DTWFrZUxpc3RzRWZsLnR4dAppbmRleCBjNWVmNjU2NGY1NDIx
YWRkYzI4ODdlZDBjNmEwOTliNTQ5MTM1MzcxLi4wZjkxNmZhOWEwOGJmMjRkYTQwMzljYjhiMWY2
M2FhYjZlOTI2NDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DTWFrZUxpc3RzRWZs
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DTWFrZUxpc3RzRWZsLnR4dApAQCAtODgsNiAr
ODgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIGVmbC9ld2svZXdrX3RpbGVk
X21vZGVsLmNwcAogICAgIGVmbC9ld2svZXdrX3V0aWwuY3BwCiAgICAgZWZsL2V3ay9ld2tfdmll
dy5jcHAKKyAgICBlZmwvZXdrL2V3a192aWV3cG9ydF9hdHRyaWJ1dGVzLmNwcAogICAgIGVmbC9l
d2svZXdrX3ZpZXdfc2luZ2xlLmNwcAogICAgIGVmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwCiAg
ICAgZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKaW5kZXggYTI1ZjlkMGU0
NzA4YmIwYWE1NWI0YmY1NzIyODBmOTU5Mjk5MjBjYy4uODA1MDQ1NmRkZjk1OWFiNmY0YmMyMDkx
YWUxYzhlNDczYzFkM2E2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAi
Vmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1
ZGUgImV3a19wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNTMxLDcgKzUzMiw3IEBAIHZvaWQgQ2hyb21l
Q2xpZW50RWZsOjpsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUlj
b25Mb2FkZXIqKQogCiB2b2lkIENocm9tZUNsaWVudEVmbDo6ZGlzcGF0Y2hWaWV3cG9ydFByb3Bl
cnRpZXNEaWRDaGFuZ2UoY29uc3QgVmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cykgY29uc3QK
IHsKLSAgICBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldChtX3ZpZXcsIGFyZ3VtZW50
cyk7CisgICAgZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY2hhbmdlZChld2tfdmlld192aWV3cG9y
dF9hdHRyaWJ1dGVzX2dldChtX3ZpZXcpKTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnRFZmw6OnNl
bGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19w
cml2YXRlLmgKaW5kZXggYTUzMDdmMDhkNmYyYjhjZTBkZDAzNzlkNmE0Njk1NjZiYjVkZDQzYS4u
ZTgwZDIzZTRiMWQ2ZmZiOTJjYjA1NDVlMzFkMmVhZDQxYmUyNTY1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19wcml2YXRlLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJld2tfaGlzdG9y
eS5oIgogI2luY2x1ZGUgImV3a19qcy5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCisjaW5jbHVk
ZSAiZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEV2YXMuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAg
LTEzOSw3ICsxNDAsNiBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGV3a192aWV3
X2ZyYW1lX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhcwogV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdr
VmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5T
aXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNv
bnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3Ry
aW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwogCiB2b2lkIGV3a192aWV3X3BvcHVw
X25ldyhFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGll
bnQsIGludCBzZWxlY3RlZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7Ci12b2lkIGV3
a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25z
dCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzKTsKIAogdm9pZCBld2tfdmll
d19kb3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWQqIGRv
d25sb2FkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggMjhlOWYwYjg5MTUy
ZTc3YTA1ZTNkYzc0ZTc3ZjVlYWI2M2Q0MzczNy4uMThlZjYyZGI3ODc5ZmMwODQzNTVmMWU1ZTE5
YjU2ZDRmNGU3ZmY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC0zMCw3ICsz
MCw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEcmFnQ2xpZW50
RWZsLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50RWZsLmgiCi0jaW5jbHVkZSAiRWZsU2NyZWVu
VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRm9jdXND
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRFZmwuaCIKQEAgLTUzLDYg
KzUyLDcgQEAKICNpbmNsdWRlICJjX2luc3RhbmNlLmgiCiAjaW5jbHVkZSAiZXdrX2xvZ2dpbmcu
aCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3cG9ydF9hdHRy
aWJ1dGVzX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVpbmEuaD4K
ICNpbmNsdWRlIDxFdmFzLmg+CkBAIC0xMjksOCArMTI5LDggQEAgc3RydWN0IF9Fd2tfVmlld19Q
cml2YXRlX0RhdGEgewogICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2U7CiAgICAgV2ViQ29yZTo6U2V0
dGluZ3MqIHBhZ2VTZXR0aW5nczsKICAgICBXZWJDb3JlOjpGcmFtZSogbWFpbkZyYW1lOwotICAg
IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzOwogICAgIEV3a19I
aXN0b3J5KiBoaXN0b3J5OworICAgIEV3a19WaWV3cG9ydF9Qcml2YXRlX0RhdGEqIHZpZXdwb3J0
QXR0cmlidXRlczsKICAgICBzdHJ1Y3QgewogICAgICAgICBFd2tfTWVudSBtZW51OwogICAgICAg
ICBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIG1lbnVDbGllbnQ7CkBAIC02MjYsMTMgKzYyNiw3
IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tf
Vmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAgICAgICAgIGdvdG8gZXJyb3Jfc2V0dGluZ3M7
CiAgICAgfQogCi0gICAgcHJpdi0+dmlld3BvcnRBcmd1bWVudHMud2lkdGggPSBXZWJDb3JlOjpW
aWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwotICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRz
LmhlaWdodCA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87Ci0gICAgcHJp
di0+dmlld3BvcnRBcmd1bWVudHMuaW5pdGlhbFNjYWxlID0gV2ViQ29yZTo6Vmlld3BvcnRBcmd1
bWVudHM6OlZhbHVlQXV0bzsKLSAgICBwcml2LT52aWV3cG9ydEFyZ3VtZW50cy5taW5pbXVtU2Nh
bGUgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwotICAgIHByaXYtPnZp
ZXdwb3J0QXJndW1lbnRzLm1heGltdW1TY2FsZSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRz
OjpWYWx1ZUF1dG87Ci0gICAgcHJpdi0+dmlld3BvcnRBcmd1bWVudHMudGFyZ2V0RGVuc2l0eURw
aSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87Ci0gICAgcHJpdi0+dmll
d3BvcnRBcmd1bWVudHMudXNlclNjYWxhYmxlID0gdHJ1ZTsKKyAgICBwcml2LT52aWV3cG9ydEF0
dHJpYnV0ZXMgPSBld2tfdmlld3BvcnRfYXR0cmlidXRlc19uZXcoc21hcnREYXRhLT5zZWxmKTsK
IAogICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHRy
dWUpOwogICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUo
Imlzby04ODU5LTEiKTsKQEAgLTEwODIsMjEgKzEwNzYsNiBAQCBzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfem9vbV9hbmltYXRpb25fc3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9ld2tfdmlld196b29tX2Fu
aW1hdG9yX2NiLCBzbWFydERhdGEpOwogfQogCi1zdGF0aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoY29uc3QgRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQotewotICAgIGludCBkZXNrdG9wV2lkdGggPSA5ODA7Ci0g
ICAgaW50IGRldmljZURQSSA9IFdlYkNvcmU6OmdldERQSSgpOwotCi0gICAgV2ViQ29yZTo6SW50
UmVjdCBhdmFpbGFibGVSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChwcml2LT5wYWdlLT5jaHJvbWUo
KS0+Y2xpZW50KCktPnBhZ2VSZWN0KCkpOwotICAgIFdlYkNvcmU6OkludFJlY3QgZGV2aWNlUmVj
dCA9IGVuY2xvc2luZ0ludFJlY3QocHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5k
b3dSZWN0KCkpOwotCi0gICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMg
PSBXZWJDb3JlOjpjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKHByaXYtPnZpZXdwb3J0QXJndW1l
bnRzLCBkZXNrdG9wV2lkdGgsIGRldmljZVJlY3Qud2lkdGgoKSwgZGV2aWNlUmVjdC5oZWlnaHQo
KSwgZGV2aWNlRFBJLCBhdmFpbGFibGVSZWN0LnNpemUoKSk7Ci0gICAgV2ViQ29yZTo6cmVzdHJp
Y3RNaW5pbXVtU2NhbGVGYWN0b3JUb1ZpZXdwb3J0U2l6ZShhdHRyaWJ1dGVzLCBhdmFpbGFibGVS
ZWN0LnNpemUoKSk7Ci0gICAgV2ViQ29yZTo6cmVzdHJpY3RTY2FsZUZhY3RvclRvSW5pdGlhbFNj
YWxlSWZOb3RVc2VyU2NhbGFibGUoYXR0cmlidXRlcyk7Ci0KLSAgICByZXR1cm4gYXR0cmlidXRl
czsKLX0KLQogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZGlzYWJsZV9yZW5kZXIo
RXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogewogICAgIFdSTigibm90IHN1cHBvcnRl
ZCBieSBlbmdpbmUuIHNtYXJ0RGF0YT0lcCIsIHNtYXJ0RGF0YSk7CkBAIC0zNTMzLDQ0ICszNTEy
LDYgQEAgdm9pZCBld2tfdmlld19qc193aW5kb3dfb2JqZWN0X2NsZWFyKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUpCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChld2tWaWV3LCAianMsd2luZG93b2JqZWN0LGNsZWFyIiwgZnJhbWUpOwogfQogCi0v
KioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB0aGUgdmlld3BvcnQgaGFzIGNoYW5nZWQuCi0g
KgotICogQHBhcmFtIGFyZ3VtZW50cyB2aWV3cG9ydCBhcmd1bWVudC4KLSAqCi0gKiBFbWl0cyBz
aWduYWw6ICJ2aWV3cG9ydCxjaGFuZ2VkIiB3aXRoIG5vIHBhcmFtZXRlcnMuCi0gKi8KLXZvaWQg
ZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNv
bnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpCi17Ci0gICAgRVdLX1ZJ
RVdfU0RfR0VUKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21h
cnREYXRhLCBwcml2KTsKLQotICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzID0gYXJndW1lbnRz
OwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInZpZXdwb3J0
LGNoYW5nZWQiLCAwKTsKLX0KLQotdm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2dl
dChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgaW50KiB3aWR0aCwgaW50KiBoZWlnaHQsIGZs
b2F0KiBpbml0U2NhbGUsIGZsb2F0KiBtYXhTY2FsZSwgZmxvYXQqIG1pblNjYWxlLCBmbG9hdCog
ZGV2aWNlUGl4ZWxSYXRpbywgRWluYV9Cb29sKiB1c2VyU2NhbGFibGUpCi17Ci0gICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwotICAgIFdlYkNvcmU6OlZpZXdwb3J0
QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29t
cHV0ZShwcml2KTsKLQotICAgIGlmICh3aWR0aCkKLSAgICAgICAgKndpZHRoID0gYXR0cmlidXRl
cy5sYXlvdXRTaXplLndpZHRoKCk7Ci0gICAgaWYgKGhlaWdodCkKLSAgICAgICAgKmhlaWdodCA9
IGF0dHJpYnV0ZXMubGF5b3V0U2l6ZS5oZWlnaHQoKTsKLSAgICBpZiAoaW5pdFNjYWxlKQotICAg
ICAgICAqaW5pdFNjYWxlID0gYXR0cmlidXRlcy5pbml0aWFsU2NhbGU7Ci0gICAgaWYgKG1heFNj
YWxlKQotICAgICAgICAqbWF4U2NhbGUgPSBhdHRyaWJ1dGVzLm1heGltdW1TY2FsZTsKLSAgICBp
ZiAobWluU2NhbGUpCi0gICAgICAgICptaW5TY2FsZSA9IGF0dHJpYnV0ZXMubWluaW11bVNjYWxl
OwotICAgIGlmIChkZXZpY2VQaXhlbFJhdGlvKQotICAgICAgICAqZGV2aWNlUGl4ZWxSYXRpbyA9
IGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbzsKLSAgICBpZiAodXNlclNjYWxhYmxlKQotICAg
ICAgICAqdXNlclNjYWxhYmxlID0gc3RhdGljX2Nhc3Q8Ym9vbD4oYXR0cmlidXRlcy51c2VyU2Nh
bGFibGUpOwotfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGZsb2F0IG1pblNjYWxlLCBmbG9hdCBtYXhTY2FsZSkKIHsKQEAgLTM4NzUs
NiArMzgxNiwyMiBAQCB2b2lkIGV3a192aWV3X21peGVkX2NvbnRlbnRfcnVuX3NldChFdmFzX09i
amVjdCogZXdrVmlldywgYm9vbCBoYXNSdW4pCiAgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwoZXdrVmlldywgIm1peGVkY29udGVudCxydW4iLCAwKTsKIH0KIAorLyoqCisg
KiBAaW50ZXJuYWwKKyAqIEdldHMgdmlld3BvcnQgYXR0cmlidXRlcyBmcm9tIHByaXZhdGUgZGF0
YSBvZiB2aWV3IG9iamVjdC4KKyAqCisgKiBAcGFyYW0gZXdrVmlldyB2aWV3LgorICoKKyAqIEBy
ZXR1cm4gdmlld3BvcnQgYXR0cmlidXRlcyBkYXRhLgorICovCitFd2tfVmlld3BvcnRfUHJpdmF0
ZV9EYXRhKiBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2dldChFdmFzX09iamVjdCogZXdr
VmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgMCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
MCk7CisKKyAgICByZXR1cm4gcHJpdi0+dmlld3BvcnRBdHRyaWJ1dGVzOworfQorCiBFaW5hX0Jv
b2wgZXdrX3ZpZXdfdmlzaWJpbGl0eV9zdGF0ZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3
a19QYWdlX1Zpc2liaWxpdHlfU3RhdGUgcGFnZVZpc2liaWxpdHlTdGF0ZSwgRWluYV9Cb29sIGlu
aXRpYWxTdGF0ZSkKIHsKICNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmgKaW5kZXggZDFjNjVlYjRlOWI5YjI1MTdiODdiMzM0OTE3MmZkNGJiNzZh
NWVhYi4uNzIxNDQ4ZjgyMzEyZWFhYjg5MTkzODM3ZDYzNDlhMjJjZjVmNGViZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmgKQEAgLTgwLDcgKzgwLDYgQEAKICAqICAtICJ0b29sdGlwLHRleHQs
c2V0IiwgY29uc3QgY2hhcio6IHNldHMgdG9vbHRpcCB0ZXh0IGFuZCBkaXNwbGF5cyBpZiBpdCBp
cyBjdXJyZW50bHkgaGlkZGVuLgogICogIC0gInVyaSxjaGFuZ2VkIiwgY29uc3QgY2hhcio6IHVy
aSBvZiB0aGUgbWFpbiBmcmFtZSB3YXMgY2hhbmdlZC4KICAqICAtICJ2aWV3LHJlc2l6ZWQiLCB2
b2lkOiB2aWV3IG9iamVjdCdzIHNpemUgd2FzIGNoYW5nZWQuCi0gKiAgLSAidmlld3BvcnQsY2hh
bmdlZCIsIHZvaWQ6IHJlcG9ydHMgdGhhdCB2aWV3cG9ydCB3YXMgY2hhbmdlZC4KICAqICAtICJ6
b29tLGFuaW1hdGVkLGVuZCIsIHZvaWQ6IHJlcXVlc3RlZCBhbmltYXRlZCB6b29tIGlzIGZpbmlz
aGVkLgogICovCiAKQEAgLTIxMjEsMjIgKzIxMjAsNiBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmll
d19wYWludChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3QgKmNyLCBjb25zdCBF
aQogICovCiBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19wYWludF9jb250ZW50cyhFd2tfVmlld19Q
cml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3QgKmNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJl
YSk7CiAKLS8qKgotICogR2V0cyB0aGUgYXR0cmlidXRlcyBvZiB0aGUgdmlld3BvcnQgbWV0YSB0
YWcuCi0gKgotICogUHJvcGVydGllcyBhcmUgcmV0dXJuZWQgaW4gdGhlIHJlc3BlY3RpdmUgcG9p
bnRlcnMuIFBhc3NpbmcgQGMgMCB0byBhbnkgb2YKLSAqIHRoZXNlIHBvaW50ZXJzIHdpbGwgbWFr
ZSB0aGF0IHByb3BlcnR5IHRvIG5vdCBiZSByZXR1cm5lZC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3
IG9iamVjdCB0byBnZXQgdGhlIHZpZXdwb3J0IGF0dHJpYnV0ZXMKLSAqIEBwYXJhbSB3IHRoZSBw
b2ludGVyIHRvIHN0b3JlIHRoZSB3aWR0aCBvZiB0aGUgdmlld3BvcnQKLSAqIEBwYXJhbSBoIHRo
ZSBwb2ludGVyIHRvIHN0b3JlIHRoZSBoZWlnaHQgb2YgdGhlIHZpZXdwb3J0Ci0gKiBAcGFyYW0g
aW5pdF9zY2FsZSB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgaW5pdGlhbCBzY2FsZSB2YWx1ZQot
ICogQHBhcmFtIG1heF9zY2FsZSB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgbWF4aW11bSBzY2Fs
ZSB2YWx1ZQotICogQHBhcmFtIG1pbl9zY2FsZSB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgbWlu
aW11bSBzY2FsZSB2YWx1ZQotICogQHBhcmFtIGRldmljZV9waXhlbF9yYXRpbyB0aGUgcG9pbnRl
ciB0byBzdG9yZSB0aGUgZGV2aWNlIHBpeGVsIHJhdGlvIHZhbHVlCi0gKiBAcGFyYW0gdXNlcl9z
Y2FsYWJsZSB0aGUgcG9pbnRlciB0byBzdG9yZSBpZiB1c2VyIGNhbiBzY2FsZSB2aWV3cG9ydAot
ICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQoY29uc3QgRXZh
c19PYmplY3QgKm8sIGludCAqdywgaW50ICpoLCBmbG9hdCAqaW5pdF9zY2FsZSwgZmxvYXQgKm1h
eF9zY2FsZSwgZmxvYXQgKm1pbl9zY2FsZSwgZmxvYXQgKmRldmljZV9waXhlbF9yYXRpbyAsIEVp
bmFfQm9vbCAqdXNlcl9zY2FsYWJsZSk7CiAKIC8qKgogICogU2V0cyB0aGUgem9vbSByYW5nZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld3BvcnRfYXR0cmlidXRl
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQ4MGQ1ZDlmZDEyNTNhMjM5OGUwZjA4OTAzY2QzMDMxMThlMmVkOGEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0X2F0dHJp
YnV0ZXMuY3BwCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJl
d2tfdmlld3BvcnRfYXR0cmlidXRlcy5oIgorCisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVk
ZSAiQ2hyb21lQ2xpZW50RWZsLmgiCisjaW5jbHVkZSAiRWZsU2NyZWVuVXRpbGl0aWVzLmgiCisj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdl
LmgiCisjaW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgor
I2luY2x1ZGUgPEV2YXMuaD4KKworLyoqCisgKiBcc3RydWN0ICBfRXdrX1ZpZXdwb3J0X0F0dHJp
YnV0ZXMKKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSB2aWV3cG9ydCBhdHRyaWJ1dGVzIGRhdGEu
CisgKi8KK3N0cnVjdCBfRXdrX1ZpZXdwb3J0X0F0dHJpYnV0ZXMgeworICAgIGZsb2F0IHdpZHRo
OworICAgIGZsb2F0IGhlaWdodDsKKyAgICBmbG9hdCBpbml0aWFsU2NhbGU7CisgICAgZmxvYXQg
bWluaW11bVNjYWxlOworICAgIGZsb2F0IG1heGltdW1TY2FsZTsKKyAgICBmbG9hdCBkZXZpY2VQ
aXhlbFJhdGlvOworICAgIGZsb2F0IHVzZXJTY2FsYWJsZTsKK307CisKKy8qKgorICogQGJyaWVm
IFZpZXdwb3J0IHByaXZhdGUgZGF0YSB0aGF0IGlzIHVzZWQgaW50ZXJuYWxseSBieSBFRkwgV2Vi
S2l0CisgKiBhbmQgc2hvdWxkIG5ldmVyIGJlIG1vZGlmaWVkIGZyb20gb3V0c2lkZS4KKyAqCisg
KiBAaW50ZXJuYWwKKyAqLworc3RydWN0IF9Fd2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRhIHsKKyAg
ICBFdmFzX09iamVjdCogZXdrVmlldzsKKyAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyBh
cmd1bWVudHM7Cit9OworCitzdGF0aWMgRXdrX1ZpZXdwb3J0X0F0dHJpYnV0ZXMgX2V3a192aWV3
X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShjb25zdCBFd2tfVmlld3BvcnRfUHJpdmF0ZV9E
YXRhKiBwcml2KQoreworICAgIGludCBkZXNrdG9wV2lkdGggPSA5ODA7CisgICAgaW50IGRldmlj
ZURQSSA9IFdlYkNvcmU6OmdldERQSSgpOworCisgICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IEVX
S1ByaXZhdGU6OmNvcmVQYWdlKHByaXYtPmV3a1ZpZXcpOworCisgICAgV2ViQ29yZTo6SW50UmVj
dCBhdmFpbGFibGVSZWN0ID0gV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVjdChwYWdlLT5jaHJvbWUo
KS0+Y2xpZW50KCktPnBhZ2VSZWN0KCkpOworICAgIFdlYkNvcmU6OkludFJlY3QgZGV2aWNlUmVj
dCA9IFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53
aW5kb3dSZWN0KCkpOworCisgICAgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMgYXJndW1lbnRz
ID0gcGFnZS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCktPnZpZXdwb3J0QXJndW1lbnRzKCk7Cisg
ICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBXZWJDb3JlOjpjb21w
dXRlVmlld3BvcnRBdHRyaWJ1dGVzKGFyZ3VtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVza3RvcFdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VSZWN0LndpZHRoKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZVJlY3QuaGVpZ2h0KCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRldmljZURQSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxl
UmVjdC5zaXplKCkpOworCisgICAgV2ViQ29yZTo6cmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JU
b1ZpZXdwb3J0U2l6ZShhdHRyaWJ1dGVzLCBhdmFpbGFibGVSZWN0LnNpemUoKSk7CisgICAgV2Vi
Q29yZTo6cmVzdHJpY3RTY2FsZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGUo
YXR0cmlidXRlcyk7CisKKyAgICBFd2tfVmlld3BvcnRfQXR0cmlidXRlcyBld2tBdHRyaWJ1dGVz
OworICAgIGV3a0F0dHJpYnV0ZXMud2lkdGggPSBhdHRyaWJ1dGVzLmxheW91dFNpemUud2lkdGgo
KTsKKyAgICBld2tBdHRyaWJ1dGVzLmhlaWdodCA9IGF0dHJpYnV0ZXMubGF5b3V0U2l6ZS5oZWln
aHQoKTsKKyAgICBld2tBdHRyaWJ1dGVzLmluaXRpYWxTY2FsZSA9IGF0dHJpYnV0ZXMuaW5pdGlh
bFNjYWxlOworICAgIGV3a0F0dHJpYnV0ZXMubWluaW11bVNjYWxlID0gYXR0cmlidXRlcy5taW5p
bXVtU2NhbGU7CisgICAgZXdrQXR0cmlidXRlcy5tYXhpbXVtU2NhbGUgPSBhdHRyaWJ1dGVzLm1h
eGltdW1TY2FsZTsKKyAgICBld2tBdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8gPSBhdHRyaWJ1
dGVzLmRldmljZVBpeGVsUmF0aW87CisgICAgZXdrQXR0cmlidXRlcy51c2VyU2NhbGFibGUgPSBh
dHRyaWJ1dGVzLnVzZXJTY2FsYWJsZTsKKworICAgIHJldHVybiBld2tBdHRyaWJ1dGVzOworfQor
CisvKioKKyAqIEBpbnRlcm5hbAorICogUmVwb3J0cyB0aGUgdmlld3BvcnQgaGFzIGNoYW5nZWQu
CisgKgorICogQHBhcmFtIGFyZ3VtZW50cyB2aWV3cG9ydCBhcmd1bWVudC4KKyAqCisgKiBFbWl0
cyBzaWduYWw6ICJ2aWV3cG9ydCxjaGFuZ2VkIiB3aXRoIEV3a19WaWV3cG9ydF9BdHRyaWJ1dGVz
IHBhcmFtZXRlcnMuCisgKi8KK3ZvaWQgZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY2hhbmdlZChF
d2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRhKiBwcml2KQoreworICAgIEV3a19WaWV3cG9ydF9BdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMgPSBfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRl
KHByaXYpOworICAgIERCRygiY29tcHV0ZWQgdmlld3BvcnQgYXR0cmlidXRlOiB3aWR0aDolZiwg
aGVpZ2h0OiVmLCBpbml0aWFsU2NhbGU6JWYsIG1pbmltdW1TY2FsZTolZiwiCisgICAgICAgICJt
YXhpbXVtU2NhbGU6JWYsIGRldmljZVBpeGVsUmF0aW86JWYsIHVzZXJTY2FsYWJsZTolZCIsIGF0
dHJpYnV0ZXMud2lkdGgsIGF0dHJpYnV0ZXMuaGVpZ2h0LAorICAgICAgICBhdHRyaWJ1dGVzLmlu
aXRpYWxTY2FsZSwgYXR0cmlidXRlcy5taW5pbXVtU2NhbGUsIGF0dHJpYnV0ZXMubWF4aW11bVNj
YWxlLCBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW8sCisgICAgICAgIHN0YXRpY19jYXN0PGJv
b2w+KGF0dHJpYnV0ZXMudXNlclNjYWxhYmxlKSk7CisKKyAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKHByaXYtPmV3a1ZpZXcsICJ2aWV3cG9ydCxjaGFuZ2VkIiwgJmF0dHJpYnV0
ZXMpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogQ3JlYXRlcyBwcml2YXRlIGRhdGEgZm9y
IHZpZXdwb3J0IGF0dHJpYnV0ZXMuCisgKgorICogQHBhcmFtIGV3a1ZpZXcgdmlldyBvYmplY3Qu
CisgKgorICogQHJldHVybiBwcml2YXRlIGRhdGEgZm9yIHZpZXdwb3J0IGF0dHJpYnV0ZXMuCisg
Ki8KK0V3a19WaWV3cG9ydF9Qcml2YXRlX0RhdGEqIGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX25l
dyhFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBpZiAoIWV3a1ZpZXcpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgRXdrX1ZpZXdwb3J0X1ByaXZhdGVfRGF0YSogcHJpdiA9CisgICAgICAg
IHN0YXRpY19jYXN0PEV3a19WaWV3cG9ydF9Qcml2YXRlX0RhdGEqPihjYWxsb2MoMSwgc2l6ZW9m
KEV3a19WaWV3cG9ydF9Qcml2YXRlX0RhdGEpKSk7CisKKyAgICBpZiAoIXByaXYpIHsKKyAgICAg
ICAgQ1JJVElDQUwoImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRh
Iik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHByaXYtPmV3a1ZpZXcgPSBld2tW
aWV3OworICAgIHByaXYtPmFyZ3VtZW50cy53aWR0aCA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1l
bnRzOjpWYWx1ZUF1dG87CisgICAgcHJpdi0+YXJndW1lbnRzLmhlaWdodCA9IFdlYkNvcmU6OlZp
ZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CisgICAgcHJpdi0+YXJndW1lbnRzLmluaXRpYWxT
Y2FsZSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CisgICAgcHJpdi0+
YXJndW1lbnRzLm1pbmltdW1TY2FsZSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1
ZUF1dG87CisgICAgcHJpdi0+YXJndW1lbnRzLm1heGltdW1TY2FsZSA9IFdlYkNvcmU6OlZpZXdw
b3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CisgICAgcHJpdi0+YXJndW1lbnRzLnRhcmdldERlbnNp
dHlEcGkgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOworICAgIHByaXYt
PmFyZ3VtZW50cy51c2VyU2NhbGFibGUgPSB0cnVlOworCisgICAgcmV0dXJuIHByaXY7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMu
aCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld3BvcnRfYXR0cmlidXRlcy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ4ZDU1ODllZTQxNjAxMGJhNTJjNWNhZDI3NGZiYTliMTU4ZDM1MDEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMu
aApAQCAtMCwwICsxLDQ0IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVs
ZWN0cm9uaWNzLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfaAorI2RlZmlu
ZSBld2tfdmlld3BvcnRfYXR0cmlidXRlc19oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVk
ZSA8RXZhcy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisK
Ky8qKgorICogQGZpbGUgICAgZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuaAorICogQGJyaWVmICAg
Vmlld3BvcnQgTWV0YSBUYWcgaW5mb3JtYXRpb24uCisgKgorICogVGhlIGZvbGxvd2luZyBzaWdu
YWxzIChzZWUgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKCkpIGFyZSBlbWl0dGVkOgor
ICogIC0gInZpZXdwb3J0LGNoYW5nZWQiLCBFd2tfVmlld3BvcnRfQXR0cmlidXRlczogcmVwb3J0
cyB0aGF0IHZpZXdwb3J0IHdhcyBjaGFuZ2VkLgorICovCisKKy8vLyBDcmVhdGVzIGEgdHlwZSBu
YW1lIGZvciBAYSBfRXdrX1ZpZXdwb3J0X0F0dHJpYnV0ZXMuCit0eXBlZGVmIHN0cnVjdCBfRXdr
X1ZpZXdwb3J0X0F0dHJpYnV0ZXMgRXdrX1ZpZXdwb3J0X0F0dHJpYnV0ZXM7CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3ZpZXdwb3J0X2FyZ3VtZW50cy5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0
ZXNfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3cG9ydF9hdHRyaWJ1
dGVzX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTljZDkxYjVhNDhmYjJlMzA1MzZkM2Y4MTlmN2E0
YjNmMDVhZjY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGUuaApAQCAtMCwwICsxLDQwIEBACisvKgorICAgIENv
cHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX3Zp
ZXdwb3J0X2F0dHJpYnV0ZXNfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a192aWV3cG9ydF9hdHRyaWJ1
dGVzX3ByaXZhdGVfaAorCisjaW5jbHVkZSA8RXZhcy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMK
K2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBf
RXdrX1ZpZXdfU21hcnRfRGF0YS4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfVmlld3BvcnRfUHJpdmF0
ZV9EYXRhIEV3a19WaWV3cG9ydF9Qcml2YXRlX0RhdGE7CisKK0V3a19WaWV3cG9ydF9Qcml2YXRl
X0RhdGEqIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KEV2YXNfT2JqZWN0KiBld2tW
aWV3KTsKKwordm9pZCBld2tfdmlld3BvcnRfYXR0cmlidXRlc19jaGFuZ2VkKEV3a19WaWV3cG9y
dF9Qcml2YXRlX0RhdGEqIHByaXYpOworRXdrX1ZpZXdwb3J0X1ByaXZhdGVfRGF0YSogZXdrX3Zp
ZXdwb3J0X2F0dHJpYnV0ZXNfbmV3KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvLyBld2tfdmlld3BvcnRfYXR0cmlidXRlc19w
cml2YXRlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121236</attachid>
            <date>2012-01-05 01:03:29 -0800</date>
            <delta_ts>2012-01-05 02:58:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75592-20120105180329.patch</filename>
            <type>text/plain</type>
            <size>21108</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzOTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZDVkNGI1OWY5
ZmI2MDU0YmUxMGVkNDc0YzNhYzA2MzhmNTA2MDBkMC4uZWNmYTMzM2MxODEzODk0OTNiYjExZjk5
NDNjNzM0YmZjMTI4NTVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEy
LTAxLTAzICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW0VGTF0gTW92ZSB2aWV3cG9ydCBmdW5jdGlvbnMgdG8gbmV3IGZpbGVzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1OTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb28gbWFueSBmdW5jdGlvbnMg
YXJlIGltcGxlbWVudGVkIHRvIGV3a192aWV3LmNwcC4gU28sIGluZGVwZW5kZW50IGZlYXR1cmVz
IG5lZWQgdG8KKyAgICAgICAgYmUgbW92ZWQgdG8gbmV3IGZpbGVzLiBUaGlzIHBhdGNoIG1vdmVz
IEFQSXMgYW5kIGludGVybmFsIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHZpZXdwb3J0IG1ldGEgdGFn
CisgICAgICAgIHRvIG5ldyBmaWxlcy4KKworICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OiBB
ZGQgZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmNwcDogVXNlIGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX2NoYW5nZWQg
ZnVuY3Rpb24gaW5zdGVhZCBvZiBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldCBmdW5j
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6ZGlzcGF0Y2hWaWV3cG9y
dFByb3BlcnRpZXNEaWRDaGFuZ2UpOgorICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6IEFkZCB2aWV3cG9ydCBwcml2YXRlIGRhdGEgdG8gRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhLgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAg
ICAgKGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KToKKyAgICAgICAgKiBld2svZXdr
X3ZpZXcuaDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwOiBBZGRl
ZC4gVGhpcyBmaWxlIGhhcyB2aWV3cG9ydCBhdHRyaWJ1dGVzIHByaXZhdGUgZGF0YSBhbmQgZnVu
Y3Rpb25zIHJlbGF0ZWQgdG8gdmlld3BvcnQuCisgICAgICAgIChfZXdrX3ZpZXdfdmlld3BvcnRf
YXR0cmlidXRlc19jb21wdXRlKToKKyAgICAgICAgKGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX2No
YW5nZWQpOgorICAgICAgICAoZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfbmV3KToKKyAgICAgICAg
KiBld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3
a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGUuaDogQWRkZWQuCisKIDIwMTItMDEtMDIgIEd5
dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBS
ZW1vdmUgd2hpdGVzcGFjZS9kZWNsYXJhdGlvbiBzdHlsZSBleGNlcHRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktpdC9lZmwv
Q01ha2VMaXN0c0VmbC50eHQKaW5kZXggYzVlZjY1NjRmNTQyMWFkZGMyODg3ZWQwYzZhMDk5YjU0
OTEzNTM3MS4uMGY5MTZmYTlhMDhiZjI0ZGE0MDM5Y2I4YjFmNjNhYWI2ZTkyNjQyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTg4LDYgKzg4LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0X1NPVVJDRVMKICAgICBlZmwvZXdrL2V3a190aWxlZF9tb2RlbC5jcHAKICAgICBlZmwv
ZXdrL2V3a191dGlsLmNwcAogICAgIGVmbC9ld2svZXdrX3ZpZXcuY3BwCisgICAgZWZsL2V3ay9l
d2tfdmlld3BvcnRfYXR0cmlidXRlcy5jcHAKICAgICBlZmwvZXdrL2V3a192aWV3X3NpbmdsZS5j
cHAKICAgICBlZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcAogICAgIGVmbC9ld2svZXdrX3dpbmRv
d19mZWF0dXJlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IGEyNWY5ZDBlNDcwOGJiMGFhNTViNGJmNTcyMjgw
Zjk1OTI5OTIwY2MuLmY0YzkyMGIwZWNmY2QzYWMyNjY1OTc1YjZlMjk2NjQwYzZlYTBiYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgi
CiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgor
I2luY2x1ZGUgImV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxF
Y29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KQEAgLTUzMSw3ICs1MzIsNyBAQCB2b2lkIENocm9tZUNsaWVudEVmbDo6bG9hZEljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikKIAogdm9pZCBD
aHJvbWVDbGllbnRFZmw6OmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0
IFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpIGNvbnN0CiB7Ci0gICAgZXdrX3ZpZXdfdmll
d3BvcnRfYXR0cmlidXRlc19zZXQobV92aWV3LCBhcmd1bWVudHMpOworICAgIGV3a192aWV3cG9y
dF9hdHRyaWJ1dGVzX2NoYW5nZWQoZXdrX3ZpZXdfdmlld3BvcnRfcHJpdmF0ZV9kYXRhX2dldCht
X3ZpZXcpKTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnRFZmw6OnNlbGVjdEl0ZW1Xcml0aW5nRGly
ZWN0aW9uSXNOYXR1cmFsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKaW5kZXggYTUz
MDdmMDhkNmYyYjhjZTBkZDAzNzlkNmE0Njk1NjZiYjVkZDQzYS4uZTgwZDIzZTRiMWQ2ZmZiOTJj
YjA1NDVlMzFkMmVhZDQxYmUyNTY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJld2tfaGlzdG9yeS5oIgogI2luY2x1ZGUgImV3
a19qcy5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdwb3J0X2F0
dHJpYnV0ZXNfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTEzOSw3ICsxNDAsNiBAQCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFz
X09iamVjdCogZXdrVmlldywgRXZhcwogV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4g
ZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3Qq
IGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1M
UGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBX
VEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdU
Rjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9v
bCBsb2FkTWFudWFsbHkpOwogCiB2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCog
ZXdrVmlldywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGludCBzZWxlY3RlZCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7Ci12b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0
dHJpYnV0ZXNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpWaWV3cG9y
dEFyZ3VtZW50cyYgYXJndW1lbnRzKTsKIAogdm9pZCBld2tfdmlld19kb3dubG9hZF9yZXF1ZXN0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWQqIGRvd25sb2FkKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggMjhlOWYwYjg5MTUyZTc3YTA1ZTNkYzc0ZTc3ZjVl
YWI2M2Q0MzczNy4uZjIxNDBlNTQ0OGQwNzQ5MzliNTYyZmQwMTdkNjU2MzhkMDI1YzdhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAi
RG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEcmFnQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAi
RWRpdG9yQ2xpZW50RWZsLmgiCi0jaW5jbHVkZSAiRWZsU2NyZWVuVXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJDbGllbnRFZmwuaCIKQEAgLTUzLDYgKzUyLDcgQEAKICNpbmNsdWRl
ICJjX2luc3RhbmNlLmgiCiAjaW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIKICNpbmNsdWRlICJld2tf
cHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGUuaCIK
ICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxFdmFzLmg+
CkBAIC0xMjksOCArMTI5LDggQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAg
IFdlYkNvcmU6OlBhZ2UqIHBhZ2U7CiAgICAgV2ViQ29yZTo6U2V0dGluZ3MqIHBhZ2VTZXR0aW5n
czsKICAgICBXZWJDb3JlOjpGcmFtZSogbWFpbkZyYW1lOwotICAgIFdlYkNvcmU6OlZpZXdwb3J0
QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzOwogICAgIEV3a19IaXN0b3J5KiBoaXN0b3J5Owor
ICAgIEV3a19WaWV3cG9ydF9Qcml2YXRlX0RhdGEqIHZpZXdwb3J0UHJpdmF0ZURhdGE7CiAgICAg
c3RydWN0IHsKICAgICAgICAgRXdrX01lbnUgbWVudTsKICAgICAgICAgV2ViQ29yZTo6UG9wdXBN
ZW51Q2xpZW50KiBtZW51Q2xpZW50OwpAQCAtNjI2LDEzICs2MjYsNyBAQCBzdGF0aWMgRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhKQogICAgICAgICBnb3RvIGVycm9yX3NldHRpbmdzOwogICAgIH0KIAotICAgIHBy
aXYtPnZpZXdwb3J0QXJndW1lbnRzLndpZHRoID0gV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6
OlZhbHVlQXV0bzsKLSAgICBwcml2LT52aWV3cG9ydEFyZ3VtZW50cy5oZWlnaHQgPSBXZWJDb3Jl
OjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwotICAgIHByaXYtPnZpZXdwb3J0QXJndW1l
bnRzLmluaXRpYWxTY2FsZSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87
Ci0gICAgcHJpdi0+dmlld3BvcnRBcmd1bWVudHMubWluaW11bVNjYWxlID0gV2ViQ29yZTo6Vmll
d3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bzsKLSAgICBwcml2LT52aWV3cG9ydEFyZ3VtZW50cy5t
YXhpbXVtU2NhbGUgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwotICAg
IHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLnRhcmdldERlbnNpdHlEcGkgPSBXZWJDb3JlOjpWaWV3
cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwotICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLnVz
ZXJTY2FsYWJsZSA9IHRydWU7CisgICAgcHJpdi0+dmlld3BvcnRQcml2YXRlRGF0YSA9IGV3a192
aWV3cG9ydF9hdHRyaWJ1dGVzX25ldyhzbWFydERhdGEtPnNlbGYpOwogCiAgICAgcHJpdi0+cGFn
ZVNldHRpbmdzLT5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkodHJ1ZSk7CiAgICAgcHJpdi0+
cGFnZVNldHRpbmdzLT5zZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZSgiaXNvLTg4NTktMSIpOwpA
QCAtNzU4LDYgKzc1Miw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19wcml2X2RlbChFd2tfVmll
d19Qcml2YXRlX0RhdGEqIHByaXYpCiAKICAgICBld2tfaGlzdG9yeV9mcmVlKHByaXYtPmhpc3Rv
cnkpOwogCisgICAgZGVsZXRlIHByaXYtPnZpZXdwb3J0UHJpdmF0ZURhdGE7CiAgICAgZGVsZXRl
IHByaXYtPnBhZ2U7CiAgICAgZnJlZShwcml2KTsKIH0KQEAgLTEwODIsMjEgKzEwNzcsNiBAQCBz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRpb25fc3RhcnQoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcnREYXRhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiLCBzbWFydERhdGEpOwogfQogCi1zdGF0aWMgV2Vi
Q29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2Nv
bXB1dGUoY29uc3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQotewotICAgIGludCBkZXNr
dG9wV2lkdGggPSA5ODA7Ci0gICAgaW50IGRldmljZURQSSA9IFdlYkNvcmU6OmdldERQSSgpOwot
Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBhdmFpbGFibGVSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChw
cml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBhZ2VSZWN0KCkpOwotICAgIFdlYkNvcmU6
OkludFJlY3QgZGV2aWNlUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QocHJpdi0+cGFnZS0+Y2hyb21l
KCktPmNsaWVudCgpLT53aW5kb3dSZWN0KCkpOwotCi0gICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMgPSBXZWJDb3JlOjpjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKHBy
aXYtPnZpZXdwb3J0QXJndW1lbnRzLCBkZXNrdG9wV2lkdGgsIGRldmljZVJlY3Qud2lkdGgoKSwg
ZGV2aWNlUmVjdC5oZWlnaHQoKSwgZGV2aWNlRFBJLCBhdmFpbGFibGVSZWN0LnNpemUoKSk7Ci0g
ICAgV2ViQ29yZTo6cmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1ZpZXdwb3J0U2l6ZShhdHRy
aWJ1dGVzLCBhdmFpbGFibGVSZWN0LnNpemUoKSk7Ci0gICAgV2ViQ29yZTo6cmVzdHJpY3RTY2Fs
ZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGUoYXR0cmlidXRlcyk7Ci0KLSAg
ICByZXR1cm4gYXR0cmlidXRlczsKLX0KLQogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21h
cnRfZGlzYWJsZV9yZW5kZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogewogICAg
IFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNtYXJ0RGF0YT0lcCIsIHNtYXJ0RGF0YSk7
CkBAIC0zNTMzLDQ0ICszNTEzLDYgQEAgdm9pZCBld2tfdmlld19qc193aW5kb3dfb2JqZWN0X2Ns
ZWFyKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUpCiAgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAianMsd2luZG93b2JqZWN0LGNsZWFy
IiwgZnJhbWUpOwogfQogCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB0aGUgdmlld3Bv
cnQgaGFzIGNoYW5nZWQuCi0gKgotICogQHBhcmFtIGFyZ3VtZW50cyB2aWV3cG9ydCBhcmd1bWVu
dC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJ2aWV3cG9ydCxjaGFuZ2VkIiB3aXRoIG5vIHBhcmFt
ZXRlcnMuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19zZXQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVu
dHMpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKLQotICAgIHByaXYtPnZpZXdwb3J0QXJn
dW1lbnRzID0gYXJndW1lbnRzOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
ZXdrVmlldywgInZpZXdwb3J0LGNoYW5nZWQiLCAwKTsKLX0KLQotdm9pZCBld2tfdmlld192aWV3
cG9ydF9hdHRyaWJ1dGVzX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgaW50KiB3aWR0
aCwgaW50KiBoZWlnaHQsIGZsb2F0KiBpbml0U2NhbGUsIGZsb2F0KiBtYXhTY2FsZSwgZmxvYXQq
IG1pblNjYWxlLCBmbG9hdCogZGV2aWNlUGl4ZWxSYXRpbywgRWluYV9Cb29sKiB1c2VyU2NhbGFi
bGUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEp
OwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwotICAg
IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gX2V3a192aWV3X3ZpZXdw
b3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShwcml2KTsKLQotICAgIGlmICh3aWR0aCkKLSAgICAgICAg
KndpZHRoID0gYXR0cmlidXRlcy5sYXlvdXRTaXplLndpZHRoKCk7Ci0gICAgaWYgKGhlaWdodCkK
LSAgICAgICAgKmhlaWdodCA9IGF0dHJpYnV0ZXMubGF5b3V0U2l6ZS5oZWlnaHQoKTsKLSAgICBp
ZiAoaW5pdFNjYWxlKQotICAgICAgICAqaW5pdFNjYWxlID0gYXR0cmlidXRlcy5pbml0aWFsU2Nh
bGU7Ci0gICAgaWYgKG1heFNjYWxlKQotICAgICAgICAqbWF4U2NhbGUgPSBhdHRyaWJ1dGVzLm1h
eGltdW1TY2FsZTsKLSAgICBpZiAobWluU2NhbGUpCi0gICAgICAgICptaW5TY2FsZSA9IGF0dHJp
YnV0ZXMubWluaW11bVNjYWxlOwotICAgIGlmIChkZXZpY2VQaXhlbFJhdGlvKQotICAgICAgICAq
ZGV2aWNlUGl4ZWxSYXRpbyA9IGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbzsKLSAgICBpZiAo
dXNlclNjYWxhYmxlKQotICAgICAgICAqdXNlclNjYWxhYmxlID0gc3RhdGljX2Nhc3Q8Ym9vbD4o
YXR0cmlidXRlcy51c2VyU2NhbGFibGUpOwotfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9y
YW5nZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0IG1pblNjYWxlLCBmbG9hdCBtYXhT
Y2FsZSkKIHsKQEAgLTM4NzUsNiArMzgxNywyMiBAQCB2b2lkIGV3a192aWV3X21peGVkX2NvbnRl
bnRfcnVuX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBoYXNSdW4pCiAgICAgICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgIm1peGVkY29udGVudCxydW4i
LCAwKTsKIH0KIAorLyoqCisgKiBAaW50ZXJuYWwKKyAqIEdldHMgdmlld3BvcnQgcHJpdmF0ZSBk
YXRhIGZyb20gZXdrVmlldydzIHByaXZhdGUgZGF0YS4KKyAqCisgKiBAcGFyYW0gZXdrVmlldyB2
aWV3LgorICoKKyAqIEByZXR1cm4gdmlld3BvcnQgcHJpdmF0ZSBkYXRhLgorICovCitFd2tfVmll
d3BvcnRfUHJpdmF0ZV9EYXRhKiBld2tfdmlld192aWV3cG9ydF9wcml2YXRlX2RhdGFfZ2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCAwKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCAwKTsKKworICAgIHJldHVybiBwcml2LT52aWV3cG9ydFByaXZhdGVEYXRh
OworfQorCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdmlzaWJpbGl0eV9zdGF0ZV9zZXQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV3a19QYWdlX1Zpc2liaWxpdHlfU3RhdGUgcGFnZVZpc2liaWxpdHlTdGF0
ZSwgRWluYV9Cb29sIGluaXRpYWxTdGF0ZSkKIHsKICNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZ
X0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXggZDFjNjVlYjRlOWI5YjI1MTdiODdi
MzM0OTE3MmZkNGJiNzZhNWVhYi4uNzIxNDQ4ZjgyMzEyZWFhYjg5MTkzODM3ZDYzNDlhMjJjZjVm
NGViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAgLTgwLDcgKzgwLDYgQEAKICAqICAt
ICJ0b29sdGlwLHRleHQsc2V0IiwgY29uc3QgY2hhcio6IHNldHMgdG9vbHRpcCB0ZXh0IGFuZCBk
aXNwbGF5cyBpZiBpdCBpcyBjdXJyZW50bHkgaGlkZGVuLgogICogIC0gInVyaSxjaGFuZ2VkIiwg
Y29uc3QgY2hhcio6IHVyaSBvZiB0aGUgbWFpbiBmcmFtZSB3YXMgY2hhbmdlZC4KICAqICAtICJ2
aWV3LHJlc2l6ZWQiLCB2b2lkOiB2aWV3IG9iamVjdCdzIHNpemUgd2FzIGNoYW5nZWQuCi0gKiAg
LSAidmlld3BvcnQsY2hhbmdlZCIsIHZvaWQ6IHJlcG9ydHMgdGhhdCB2aWV3cG9ydCB3YXMgY2hh
bmdlZC4KICAqICAtICJ6b29tLGFuaW1hdGVkLGVuZCIsIHZvaWQ6IHJlcXVlc3RlZCBhbmltYXRl
ZCB6b29tIGlzIGZpbmlzaGVkLgogICovCiAKQEAgLTIxMjEsMjIgKzIxMjAsNiBAQCBFQVBJIEVp
bmFfQm9vbCBld2tfdmlld19wYWludChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJv
X3QgKmNyLCBjb25zdCBFaQogICovCiBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19wYWludF9jb250
ZW50cyhFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3QgKmNyLCBjb25zdCBFaW5h
X1JlY3RhbmdsZSAqYXJlYSk7CiAKLS8qKgotICogR2V0cyB0aGUgYXR0cmlidXRlcyBvZiB0aGUg
dmlld3BvcnQgbWV0YSB0YWcuCi0gKgotICogUHJvcGVydGllcyBhcmUgcmV0dXJuZWQgaW4gdGhl
IHJlc3BlY3RpdmUgcG9pbnRlcnMuIFBhc3NpbmcgQGMgMCB0byBhbnkgb2YKLSAqIHRoZXNlIHBv
aW50ZXJzIHdpbGwgbWFrZSB0aGF0IHByb3BlcnR5IHRvIG5vdCBiZSByZXR1cm5lZC4KLSAqCi0g
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIHZpZXdwb3J0IGF0dHJpYnV0ZXMKLSAq
IEBwYXJhbSB3IHRoZSBwb2ludGVyIHRvIHN0b3JlIHRoZSB3aWR0aCBvZiB0aGUgdmlld3BvcnQK
LSAqIEBwYXJhbSBoIHRoZSBwb2ludGVyIHRvIHN0b3JlIHRoZSBoZWlnaHQgb2YgdGhlIHZpZXdw
b3J0Ci0gKiBAcGFyYW0gaW5pdF9zY2FsZSB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgaW5pdGlh
bCBzY2FsZSB2YWx1ZQotICogQHBhcmFtIG1heF9zY2FsZSB0aGUgcG9pbnRlciB0byBzdG9yZSB0
aGUgbWF4aW11bSBzY2FsZSB2YWx1ZQotICogQHBhcmFtIG1pbl9zY2FsZSB0aGUgcG9pbnRlciB0
byBzdG9yZSB0aGUgbWluaW11bSBzY2FsZSB2YWx1ZQotICogQHBhcmFtIGRldmljZV9waXhlbF9y
YXRpbyB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgZGV2aWNlIHBpeGVsIHJhdGlvIHZhbHVlCi0g
KiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB0aGUgcG9pbnRlciB0byBzdG9yZSBpZiB1c2VyIGNhbiBz
Y2FsZSB2aWV3cG9ydAotICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRl
c19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGludCAqdywgaW50ICpoLCBmbG9hdCAqaW5pdF9z
Y2FsZSwgZmxvYXQgKm1heF9zY2FsZSwgZmxvYXQgKm1pbl9zY2FsZSwgZmxvYXQgKmRldmljZV9w
aXhlbF9yYXRpbyAsIEVpbmFfQm9vbCAqdXNlcl9zY2FsYWJsZSk7CiAKIC8qKgogICogU2V0cyB0
aGUgem9vbSByYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
d3BvcnRfYXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0
X2F0dHJpYnV0ZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2M2QxYjQyMGY5NWQ0MzAxNjZjYzI4ZmYyOTA2
ZTJiMzE1YmE1YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJld2tfdmlld3BvcnRfYXR0cmlidXRlcy5oIgorCisjaW5jbHVkZSAiQ2hy
b21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50RWZsLmgiCisjaW5jbHVkZSAiRWZsU2NyZWVu
VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJl
d2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEV2YXMuaD4KKworLyoqCisgKiBcc3RydWN0ICBfRXdr
X1ZpZXdwb3J0X0F0dHJpYnV0ZXMKKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSB2aWV3cG9ydCBh
dHRyaWJ1dGVzIGRhdGEuCisgKi8KK3N0cnVjdCBfRXdrX1ZpZXdwb3J0X0F0dHJpYnV0ZXMgewor
ICAgIGZsb2F0IHdpZHRoOworICAgIGZsb2F0IGhlaWdodDsKKyAgICBmbG9hdCBpbml0aWFsU2Nh
bGU7CisgICAgZmxvYXQgbWluaW11bVNjYWxlOworICAgIGZsb2F0IG1heGltdW1TY2FsZTsKKyAg
ICBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvOworICAgIGZsb2F0IHVzZXJTY2FsYWJsZTsKK307CisK
Ky8qKgorICogQGJyaWVmIFZpZXdwb3J0IHByaXZhdGUgZGF0YSB0aGF0IGlzIHVzZWQgaW50ZXJu
YWxseSBieSBFRkwgV2ViS2l0CisgKiBhbmQgc2hvdWxkIG5ldmVyIGJlIG1vZGlmaWVkIGZyb20g
b3V0c2lkZS4KKyAqCisgKiBAaW50ZXJuYWwKKyAqLworc3RydWN0IF9Fd2tfVmlld3BvcnRfUHJp
dmF0ZV9EYXRhIHsKKyAgICBFdmFzX09iamVjdCogZXdrVmlldzsKKyAgICBXZWJDb3JlOjpWaWV3
cG9ydEFyZ3VtZW50cyBhcmd1bWVudHM7Cit9OworCitzdGF0aWMgRXdrX1ZpZXdwb3J0X0F0dHJp
YnV0ZXMgX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShjb25zdCBFd2tfVmll
d3BvcnRfUHJpdmF0ZV9EYXRhKiBwcml2KQoreworICAgIGludCBkZXNrdG9wV2lkdGggPSA5ODA7
IC8vIFRoaXMgdmFsdWUgd29ya3Mgd2VsbCBmb3IgbW9zdCB3ZWIgcGFnZXMgZGVzaWduZWQgZm9y
IGRlc2t0b3AgYnJvd3NlcnMuCisgICAgaW50IGRldmljZURQSSA9IFdlYkNvcmU6OmdldERQSSgp
OworCisgICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IEVXS1ByaXZhdGU6OmNvcmVQYWdlKHByaXYt
PmV3a1ZpZXcpOworCisgICAgV2ViQ29yZTo6SW50UmVjdCBhdmFpbGFibGVSZWN0ID0gV2ViQ29y
ZTo6ZW5jbG9zaW5nSW50UmVjdChwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBhZ2VSZWN0KCkp
OworICAgIFdlYkNvcmU6OkludFJlY3QgZGV2aWNlUmVjdCA9IFdlYkNvcmU6OmVuY2xvc2luZ0lu
dFJlY3QocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5kb3dSZWN0KCkpOworCisgICAgV2Vi
Q29yZTo6Vmlld3BvcnRBcmd1bWVudHMgYXJndW1lbnRzID0gcGFnZS0+bWFpbkZyYW1lKCktPmRv
Y3VtZW50KCktPnZpZXdwb3J0QXJndW1lbnRzKCk7CisgICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMgPSBXZWJDb3JlOjpjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKGFy
Z3VtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVza3RvcFdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXZpY2VSZWN0LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRldmljZVJlY3QuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZURQSSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlUmVjdC5zaXplKCkpOworCisgICAgV2Vi
Q29yZTo6cmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1ZpZXdwb3J0U2l6ZShhdHRyaWJ1dGVz
LCBhdmFpbGFibGVSZWN0LnNpemUoKSk7CisgICAgV2ViQ29yZTo6cmVzdHJpY3RTY2FsZUZhY3Rv
clRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGUoYXR0cmlidXRlcyk7CisKKyAgICBFd2tf
Vmlld3BvcnRfQXR0cmlidXRlcyBld2tBdHRyaWJ1dGVzOworICAgIGV3a0F0dHJpYnV0ZXMud2lk
dGggPSBhdHRyaWJ1dGVzLmxheW91dFNpemUud2lkdGgoKTsKKyAgICBld2tBdHRyaWJ1dGVzLmhl
aWdodCA9IGF0dHJpYnV0ZXMubGF5b3V0U2l6ZS5oZWlnaHQoKTsKKyAgICBld2tBdHRyaWJ1dGVz
LmluaXRpYWxTY2FsZSA9IGF0dHJpYnV0ZXMuaW5pdGlhbFNjYWxlOworICAgIGV3a0F0dHJpYnV0
ZXMubWluaW11bVNjYWxlID0gYXR0cmlidXRlcy5taW5pbXVtU2NhbGU7CisgICAgZXdrQXR0cmli
dXRlcy5tYXhpbXVtU2NhbGUgPSBhdHRyaWJ1dGVzLm1heGltdW1TY2FsZTsKKyAgICBld2tBdHRy
aWJ1dGVzLmRldmljZVBpeGVsUmF0aW8gPSBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW87Cisg
ICAgZXdrQXR0cmlidXRlcy51c2VyU2NhbGFibGUgPSBhdHRyaWJ1dGVzLnVzZXJTY2FsYWJsZTsK
KworICAgIHJldHVybiBld2tBdHRyaWJ1dGVzOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICog
UmVwb3J0cyB0aGUgdmlld3BvcnQgaGFzIGNoYW5nZWQuCisgKgorICogQHBhcmFtIGFyZ3VtZW50
cyB2aWV3cG9ydCBhcmd1bWVudC4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJ2aWV3cG9ydCxjaGFu
Z2VkIiB3aXRoIEV3a19WaWV3cG9ydF9BdHRyaWJ1dGVzIHBhcmFtZXRlcnMuCisgKi8KK3ZvaWQg
ZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY2hhbmdlZChFd2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRh
KiBwcml2KQoreworICAgIEV3a19WaWV3cG9ydF9BdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBfZXdr
X3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRlKHByaXYpOworICAgIERCRygiY29tcHV0
ZWQgdmlld3BvcnQgYXR0cmlidXRlOiB3aWR0aDolZiwgaGVpZ2h0OiVmLCBpbml0aWFsU2NhbGU6
JWYsIG1pbmltdW1TY2FsZTolZiwiCisgICAgICAgICJtYXhpbXVtU2NhbGU6JWYsIGRldmljZVBp
eGVsUmF0aW86JWYsIHVzZXJTY2FsYWJsZTolZCIsIGF0dHJpYnV0ZXMud2lkdGgsIGF0dHJpYnV0
ZXMuaGVpZ2h0LAorICAgICAgICBhdHRyaWJ1dGVzLmluaXRpYWxTY2FsZSwgYXR0cmlidXRlcy5t
aW5pbXVtU2NhbGUsIGF0dHJpYnV0ZXMubWF4aW11bVNjYWxlLCBhdHRyaWJ1dGVzLmRldmljZVBp
eGVsUmF0aW8sCisgICAgICAgIHN0YXRpY19jYXN0PGJvb2w+KGF0dHJpYnV0ZXMudXNlclNjYWxh
YmxlKSk7CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKHByaXYtPmV3a1Zp
ZXcsICJ2aWV3cG9ydCxjaGFuZ2VkIiwgJmF0dHJpYnV0ZXMpOworfQorCisvKioKKyAqIEBpbnRl
cm5hbAorICogQ3JlYXRlcyBwcml2YXRlIGRhdGEgZm9yIHZpZXdwb3J0IGF0dHJpYnV0ZXMuCisg
KgorICogQHBhcmFtIGV3a1ZpZXcgdmlldyBvYmplY3QuCisgKgorICogQHJldHVybiBwcml2YXRl
IGRhdGEgZm9yIHZpZXdwb3J0IGF0dHJpYnV0ZXMuCisgKi8KK0V3a19WaWV3cG9ydF9Qcml2YXRl
X0RhdGEqIGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX25ldyhFdmFzX09iamVjdCogZXdrVmlldykK
K3sKKyAgICBpZiAoIWV3a1ZpZXcpCisgICAgICAgIHJldHVybiAwOworCisgICAgRXdrX1ZpZXdw
b3J0X1ByaXZhdGVfRGF0YSogcHJpdiA9IG5ldyBFd2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRhOwor
CisgICAgaWYgKCFwcml2KSB7CisgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgYWxsb2NhdGUg
RXdrX1ZpZXdwb3J0X1ByaXZhdGVfRGF0YSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisK
KyAgICBwcml2LT5ld2tWaWV3ID0gZXdrVmlldzsKKyAgICBwcml2LT5hcmd1bWVudHMud2lkdGgg
PSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOworICAgIHByaXYtPmFyZ3Vt
ZW50cy5oZWlnaHQgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOworICAg
IHByaXYtPmFyZ3VtZW50cy5pbml0aWFsU2NhbGUgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50
czo6VmFsdWVBdXRvOworICAgIHByaXYtPmFyZ3VtZW50cy5taW5pbXVtU2NhbGUgPSBXZWJDb3Jl
OjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOworICAgIHByaXYtPmFyZ3VtZW50cy5tYXhp
bXVtU2NhbGUgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOworICAgIHBy
aXYtPmFyZ3VtZW50cy50YXJnZXREZW5zaXR5RHBpID0gV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVu
dHM6OlZhbHVlQXV0bzsKKyAgICBwcml2LT5hcmd1bWVudHMudXNlclNjYWxhYmxlID0gdHJ1ZTsK
KworICAgIHJldHVybiBwcml2OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3cG9ydF9hdHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXdwb3J0X2F0dHJpYnV0ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWQyMmFhYjlhMGFhZmViYWNiZTQ1ODg3
NjYwMWI0Y2VhZDcxMTljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3cG9ydF9hdHRyaWJ1dGVzLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a192aWV3
cG9ydF9hdHRyaWJ1dGVzX2gKKyNkZWZpbmUgZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfaAorCisj
aW5jbHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPEV2YXMuaD4KKworLyoqCisgKiBAZmlsZSAgICBl
d2tfdmlld3BvcnRfYXR0cmlidXRlcy5oCisgKiBAYnJpZWYgICBWaWV3cG9ydCBNZXRhIFRhZyBp
bmZvcm1hdGlvbi4KKyAqCisgKiBUaGUgZm9sbG93aW5nIHNpZ25hbHMgKHNlZSBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19hZGQoKSkgYXJlIGVtaXR0ZWQ6CisgKiAgLSAidmlld3BvcnQsY2hh
bmdlZCIsIEV3a19WaWV3cG9ydF9BdHRyaWJ1dGVzOiByZXBvcnRzIHRoYXQgdmlld3BvcnQgd2Fz
IGNoYW5nZWQuCisgKi8KKworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfVmll
d3BvcnRfQXR0cmlidXRlcy4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfVmlld3BvcnRfQXR0cmlidXRl
cyBFd2tfVmlld3BvcnRfQXR0cmlidXRlczsKKworI2VuZGlmIC8vIGV3a192aWV3cG9ydF9hcmd1
bWVudHMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3cG9ydF9h
dHRyaWJ1dGVzX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld3BvcnRf
YXR0cmlidXRlc19wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzc3MzM1ZmQyYjQ0MzgzZjg4ZWMyNTAx
Y2Y1YzFmZjhjZmRhMGVkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlld3BvcnRfYXR0cmlidXRlc19wcml2YXRlLmgKQEAgLTAsMCArMSw0MCBAQAorLyoK
KyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVm
IGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGVfaAorI2RlZmluZSBld2tfdmlld3BvcnRf
YXR0cmlidXRlc19wcml2YXRlX2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKworI2lmZGVmIF9fY3Bs
dXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBm
b3IgQGEgX0V3a19WaWV3X1NtYXJ0X0RhdGEuCit0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdwb3J0
X1ByaXZhdGVfRGF0YSBFd2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRhOworCitFd2tfVmlld3BvcnRf
UHJpdmF0ZV9EYXRhKiBld2tfdmlld192aWV3cG9ydF9wcml2YXRlX2RhdGFfZ2V0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KTsKKwordm9pZCBld2tfdmlld3BvcnRfYXR0cmlidXRlc19jaGFuZ2VkKEV3
a19WaWV3cG9ydF9Qcml2YXRlX0RhdGEqIHByaXYpOworRXdrX1ZpZXdwb3J0X1ByaXZhdGVfRGF0
YSogZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfbmV3KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKwor
I2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvLyBld2tfdmlld3BvcnRfYXR0
cmlidXRlc19wcml2YXRlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121249</attachid>
            <date>2012-01-05 02:58:48 -0800</date>
            <delta_ts>2012-01-05 03:03:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75592-20120105195848.patch</filename>
            <type>text/plain</type>
            <size>21092</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzOTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZDVkNGI1OWY5
ZmI2MDU0YmUxMGVkNDc0YzNhYzA2MzhmNTA2MDBkMC4uZWNmYTMzM2MxODEzODk0OTNiYjExZjk5
NDNjNzM0YmZjMTI4NTVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEy
LTAxLTAzICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW0VGTF0gTW92ZSB2aWV3cG9ydCBmdW5jdGlvbnMgdG8gbmV3IGZpbGVzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1OTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb28gbWFueSBmdW5jdGlvbnMg
YXJlIGltcGxlbWVudGVkIHRvIGV3a192aWV3LmNwcC4gU28sIGluZGVwZW5kZW50IGZlYXR1cmVz
IG5lZWQgdG8KKyAgICAgICAgYmUgbW92ZWQgdG8gbmV3IGZpbGVzLiBUaGlzIHBhdGNoIG1vdmVz
IEFQSXMgYW5kIGludGVybmFsIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHZpZXdwb3J0IG1ldGEgdGFn
CisgICAgICAgIHRvIG5ldyBmaWxlcy4KKworICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OiBB
ZGQgZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmNwcDogVXNlIGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX2NoYW5nZWQg
ZnVuY3Rpb24gaW5zdGVhZCBvZiBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldCBmdW5j
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6ZGlzcGF0Y2hWaWV3cG9y
dFByb3BlcnRpZXNEaWRDaGFuZ2UpOgorICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6IEFkZCB2aWV3cG9ydCBwcml2YXRlIGRhdGEgdG8gRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhLgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAg
ICAgKGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KToKKyAgICAgICAgKiBld2svZXdr
X3ZpZXcuaDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwOiBBZGRl
ZC4gVGhpcyBmaWxlIGhhcyB2aWV3cG9ydCBhdHRyaWJ1dGVzIHByaXZhdGUgZGF0YSBhbmQgZnVu
Y3Rpb25zIHJlbGF0ZWQgdG8gdmlld3BvcnQuCisgICAgICAgIChfZXdrX3ZpZXdfdmlld3BvcnRf
YXR0cmlidXRlc19jb21wdXRlKToKKyAgICAgICAgKGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX2No
YW5nZWQpOgorICAgICAgICAoZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfbmV3KToKKyAgICAgICAg
KiBld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3
a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGUuaDogQWRkZWQuCisKIDIwMTItMDEtMDIgIEd5
dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBS
ZW1vdmUgd2hpdGVzcGFjZS9kZWNsYXJhdGlvbiBzdHlsZSBleGNlcHRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktpdC9lZmwv
Q01ha2VMaXN0c0VmbC50eHQKaW5kZXggYzVlZjY1NjRmNTQyMWFkZGMyODg3ZWQwYzZhMDk5YjU0
OTEzNTM3MS4uMGY5MTZmYTlhMDhiZjI0ZGE0MDM5Y2I4YjFmNjNhYWI2ZTkyNjQyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTg4LDYgKzg4LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0X1NPVVJDRVMKICAgICBlZmwvZXdrL2V3a190aWxlZF9tb2RlbC5jcHAKICAgICBlZmwv
ZXdrL2V3a191dGlsLmNwcAogICAgIGVmbC9ld2svZXdrX3ZpZXcuY3BwCisgICAgZWZsL2V3ay9l
d2tfdmlld3BvcnRfYXR0cmlidXRlcy5jcHAKICAgICBlZmwvZXdrL2V3a192aWV3X3NpbmdsZS5j
cHAKICAgICBlZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcAogICAgIGVmbC9ld2svZXdrX3dpbmRv
d19mZWF0dXJlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IGEyNWY5ZDBlNDcwOGJiMGFhNTViNGJmNTcyMjgw
Zjk1OTI5OTIwY2MuLmY0YzkyMGIwZWNmY2QzYWMyNjY1OTc1YjZlMjk2NjQwYzZlYTBiYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgi
CiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgor
I2luY2x1ZGUgImV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxF
Y29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KQEAgLTUzMSw3ICs1MzIsNyBAQCB2b2lkIENocm9tZUNsaWVudEVmbDo6bG9hZEljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikKIAogdm9pZCBD
aHJvbWVDbGllbnRFZmw6OmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0
IFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpIGNvbnN0CiB7Ci0gICAgZXdrX3ZpZXdfdmll
d3BvcnRfYXR0cmlidXRlc19zZXQobV92aWV3LCBhcmd1bWVudHMpOworICAgIGV3a192aWV3cG9y
dF9hdHRyaWJ1dGVzX2NoYW5nZWQoZXdrX3ZpZXdfdmlld3BvcnRfcHJpdmF0ZV9kYXRhX2dldCht
X3ZpZXcpKTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnRFZmw6OnNlbGVjdEl0ZW1Xcml0aW5nRGly
ZWN0aW9uSXNOYXR1cmFsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKaW5kZXggYTUz
MDdmMDhkNmYyYjhjZTBkZDAzNzlkNmE0Njk1NjZiYjVkZDQzYS4uZTgwZDIzZTRiMWQ2ZmZiOTJj
YjA1NDVlMzFkMmVhZDQxYmUyNTY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJld2tfaGlzdG9yeS5oIgogI2luY2x1ZGUgImV3
a19qcy5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdwb3J0X2F0
dHJpYnV0ZXNfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTEzOSw3ICsxNDAsNiBAQCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGV3a192aWV3X2ZyYW1lX2NyZWF0ZShFdmFz
X09iamVjdCogZXdrVmlldywgRXZhcwogV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4g
ZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3Qq
IGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1M
UGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBX
VEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdU
Rjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9v
bCBsb2FkTWFudWFsbHkpOwogCiB2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCog
ZXdrVmlldywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGludCBzZWxlY3RlZCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7Ci12b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0
dHJpYnV0ZXNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpWaWV3cG9y
dEFyZ3VtZW50cyYgYXJndW1lbnRzKTsKIAogdm9pZCBld2tfdmlld19kb3dubG9hZF9yZXF1ZXN0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWQqIGRvd25sb2FkKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggMjhlOWYwYjg5MTUyZTc3YTA1ZTNkYzc0ZTc3ZjVl
YWI2M2Q0MzczNy4uZjIxNDBlNTQ0OGQwNzQ5MzliNTYyZmQwMTdkNjU2MzhkMDI1YzdhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAi
RG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEcmFnQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAi
RWRpdG9yQ2xpZW50RWZsLmgiCi0jaW5jbHVkZSAiRWZsU2NyZWVuVXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJDbGllbnRFZmwuaCIKQEAgLTUzLDYgKzUyLDcgQEAKICNpbmNsdWRl
ICJjX2luc3RhbmNlLmgiCiAjaW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIKICNpbmNsdWRlICJld2tf
cHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGUuaCIK
ICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxFdmFzLmg+
CkBAIC0xMjksOCArMTI5LDggQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAg
IFdlYkNvcmU6OlBhZ2UqIHBhZ2U7CiAgICAgV2ViQ29yZTo6U2V0dGluZ3MqIHBhZ2VTZXR0aW5n
czsKICAgICBXZWJDb3JlOjpGcmFtZSogbWFpbkZyYW1lOwotICAgIFdlYkNvcmU6OlZpZXdwb3J0
QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzOwogICAgIEV3a19IaXN0b3J5KiBoaXN0b3J5Owor
ICAgIEV3a19WaWV3cG9ydF9Qcml2YXRlX0RhdGEqIHZpZXdwb3J0UHJpdmF0ZURhdGE7CiAgICAg
c3RydWN0IHsKICAgICAgICAgRXdrX01lbnUgbWVudTsKICAgICAgICAgV2ViQ29yZTo6UG9wdXBN
ZW51Q2xpZW50KiBtZW51Q2xpZW50OwpAQCAtNjI2LDEzICs2MjYsNyBAQCBzdGF0aWMgRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhKQogICAgICAgICBnb3RvIGVycm9yX3NldHRpbmdzOwogICAgIH0KIAotICAgIHBy
aXYtPnZpZXdwb3J0QXJndW1lbnRzLndpZHRoID0gV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6
OlZhbHVlQXV0bzsKLSAgICBwcml2LT52aWV3cG9ydEFyZ3VtZW50cy5oZWlnaHQgPSBXZWJDb3Jl
OjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwotICAgIHByaXYtPnZpZXdwb3J0QXJndW1l
bnRzLmluaXRpYWxTY2FsZSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87
Ci0gICAgcHJpdi0+dmlld3BvcnRBcmd1bWVudHMubWluaW11bVNjYWxlID0gV2ViQ29yZTo6Vmll
d3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bzsKLSAgICBwcml2LT52aWV3cG9ydEFyZ3VtZW50cy5t
YXhpbXVtU2NhbGUgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwotICAg
IHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLnRhcmdldERlbnNpdHlEcGkgPSBXZWJDb3JlOjpWaWV3
cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwotICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLnVz
ZXJTY2FsYWJsZSA9IHRydWU7CisgICAgcHJpdi0+dmlld3BvcnRQcml2YXRlRGF0YSA9IGV3a192
aWV3cG9ydF9hdHRyaWJ1dGVzX25ldyhzbWFydERhdGEtPnNlbGYpOwogCiAgICAgcHJpdi0+cGFn
ZVNldHRpbmdzLT5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkodHJ1ZSk7CiAgICAgcHJpdi0+
cGFnZVNldHRpbmdzLT5zZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZSgiaXNvLTg4NTktMSIpOwpA
QCAtNzU4LDYgKzc1Miw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19wcml2X2RlbChFd2tfVmll
d19Qcml2YXRlX0RhdGEqIHByaXYpCiAKICAgICBld2tfaGlzdG9yeV9mcmVlKHByaXYtPmhpc3Rv
cnkpOwogCisgICAgZGVsZXRlIHByaXYtPnZpZXdwb3J0UHJpdmF0ZURhdGE7CiAgICAgZGVsZXRl
IHByaXYtPnBhZ2U7CiAgICAgZnJlZShwcml2KTsKIH0KQEAgLTEwODIsMjEgKzEwNzcsNiBAQCBz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRpb25fc3RhcnQoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcnREYXRhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiLCBzbWFydERhdGEpOwogfQogCi1zdGF0aWMgV2Vi
Q29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2Nv
bXB1dGUoY29uc3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQotewotICAgIGludCBkZXNr
dG9wV2lkdGggPSA5ODA7Ci0gICAgaW50IGRldmljZURQSSA9IFdlYkNvcmU6OmdldERQSSgpOwot
Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBhdmFpbGFibGVSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChw
cml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBhZ2VSZWN0KCkpOwotICAgIFdlYkNvcmU6
OkludFJlY3QgZGV2aWNlUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QocHJpdi0+cGFnZS0+Y2hyb21l
KCktPmNsaWVudCgpLT53aW5kb3dSZWN0KCkpOwotCi0gICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMgPSBXZWJDb3JlOjpjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKHBy
aXYtPnZpZXdwb3J0QXJndW1lbnRzLCBkZXNrdG9wV2lkdGgsIGRldmljZVJlY3Qud2lkdGgoKSwg
ZGV2aWNlUmVjdC5oZWlnaHQoKSwgZGV2aWNlRFBJLCBhdmFpbGFibGVSZWN0LnNpemUoKSk7Ci0g
ICAgV2ViQ29yZTo6cmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1ZpZXdwb3J0U2l6ZShhdHRy
aWJ1dGVzLCBhdmFpbGFibGVSZWN0LnNpemUoKSk7Ci0gICAgV2ViQ29yZTo6cmVzdHJpY3RTY2Fs
ZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGUoYXR0cmlidXRlcyk7Ci0KLSAg
ICByZXR1cm4gYXR0cmlidXRlczsKLX0KLQogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21h
cnRfZGlzYWJsZV9yZW5kZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogewogICAg
IFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNtYXJ0RGF0YT0lcCIsIHNtYXJ0RGF0YSk7
CkBAIC0zNTMzLDQ0ICszNTEzLDYgQEAgdm9pZCBld2tfdmlld19qc193aW5kb3dfb2JqZWN0X2Ns
ZWFyKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUpCiAgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAianMsd2luZG93b2JqZWN0LGNsZWFy
IiwgZnJhbWUpOwogfQogCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB0aGUgdmlld3Bv
cnQgaGFzIGNoYW5nZWQuCi0gKgotICogQHBhcmFtIGFyZ3VtZW50cyB2aWV3cG9ydCBhcmd1bWVu
dC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJ2aWV3cG9ydCxjaGFuZ2VkIiB3aXRoIG5vIHBhcmFt
ZXRlcnMuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19zZXQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVu
dHMpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKLQotICAgIHByaXYtPnZpZXdwb3J0QXJn
dW1lbnRzID0gYXJndW1lbnRzOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
ZXdrVmlldywgInZpZXdwb3J0LGNoYW5nZWQiLCAwKTsKLX0KLQotdm9pZCBld2tfdmlld192aWV3
cG9ydF9hdHRyaWJ1dGVzX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgaW50KiB3aWR0
aCwgaW50KiBoZWlnaHQsIGZsb2F0KiBpbml0U2NhbGUsIGZsb2F0KiBtYXhTY2FsZSwgZmxvYXQq
IG1pblNjYWxlLCBmbG9hdCogZGV2aWNlUGl4ZWxSYXRpbywgRWluYV9Cb29sKiB1c2VyU2NhbGFi
bGUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEp
OwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwotICAg
IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gX2V3a192aWV3X3ZpZXdw
b3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShwcml2KTsKLQotICAgIGlmICh3aWR0aCkKLSAgICAgICAg
KndpZHRoID0gYXR0cmlidXRlcy5sYXlvdXRTaXplLndpZHRoKCk7Ci0gICAgaWYgKGhlaWdodCkK
LSAgICAgICAgKmhlaWdodCA9IGF0dHJpYnV0ZXMubGF5b3V0U2l6ZS5oZWlnaHQoKTsKLSAgICBp
ZiAoaW5pdFNjYWxlKQotICAgICAgICAqaW5pdFNjYWxlID0gYXR0cmlidXRlcy5pbml0aWFsU2Nh
bGU7Ci0gICAgaWYgKG1heFNjYWxlKQotICAgICAgICAqbWF4U2NhbGUgPSBhdHRyaWJ1dGVzLm1h
eGltdW1TY2FsZTsKLSAgICBpZiAobWluU2NhbGUpCi0gICAgICAgICptaW5TY2FsZSA9IGF0dHJp
YnV0ZXMubWluaW11bVNjYWxlOwotICAgIGlmIChkZXZpY2VQaXhlbFJhdGlvKQotICAgICAgICAq
ZGV2aWNlUGl4ZWxSYXRpbyA9IGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbzsKLSAgICBpZiAo
dXNlclNjYWxhYmxlKQotICAgICAgICAqdXNlclNjYWxhYmxlID0gc3RhdGljX2Nhc3Q8Ym9vbD4o
YXR0cmlidXRlcy51c2VyU2NhbGFibGUpOwotfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9y
YW5nZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0IG1pblNjYWxlLCBmbG9hdCBtYXhT
Y2FsZSkKIHsKQEAgLTM4NzUsNiArMzgxNywyMiBAQCB2b2lkIGV3a192aWV3X21peGVkX2NvbnRl
bnRfcnVuX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBoYXNSdW4pCiAgICAgICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgIm1peGVkY29udGVudCxydW4i
LCAwKTsKIH0KIAorLyoqCisgKiBAaW50ZXJuYWwKKyAqIEdldHMgdmlld3BvcnQgcHJpdmF0ZSBk
YXRhIGZyb20gZXdrVmlldydzIHByaXZhdGUgZGF0YS4KKyAqCisgKiBAcGFyYW0gZXdrVmlldyB2
aWV3LgorICoKKyAqIEByZXR1cm4gdmlld3BvcnQgcHJpdmF0ZSBkYXRhLgorICovCitFd2tfVmll
d3BvcnRfUHJpdmF0ZV9EYXRhKiBld2tfdmlld192aWV3cG9ydF9wcml2YXRlX2RhdGFfZ2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCAwKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCAwKTsKKworICAgIHJldHVybiBwcml2LT52aWV3cG9ydFByaXZhdGVEYXRh
OworfQorCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdmlzaWJpbGl0eV9zdGF0ZV9zZXQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV3a19QYWdlX1Zpc2liaWxpdHlfU3RhdGUgcGFnZVZpc2liaWxpdHlTdGF0
ZSwgRWluYV9Cb29sIGluaXRpYWxTdGF0ZSkKIHsKICNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZ
X0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXggZDFjNjVlYjRlOWI5YjI1MTdiODdi
MzM0OTE3MmZkNGJiNzZhNWVhYi4uNzIxNDQ4ZjgyMzEyZWFhYjg5MTkzODM3ZDYzNDlhMjJjZjVm
NGViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAgLTgwLDcgKzgwLDYgQEAKICAqICAt
ICJ0b29sdGlwLHRleHQsc2V0IiwgY29uc3QgY2hhcio6IHNldHMgdG9vbHRpcCB0ZXh0IGFuZCBk
aXNwbGF5cyBpZiBpdCBpcyBjdXJyZW50bHkgaGlkZGVuLgogICogIC0gInVyaSxjaGFuZ2VkIiwg
Y29uc3QgY2hhcio6IHVyaSBvZiB0aGUgbWFpbiBmcmFtZSB3YXMgY2hhbmdlZC4KICAqICAtICJ2
aWV3LHJlc2l6ZWQiLCB2b2lkOiB2aWV3IG9iamVjdCdzIHNpemUgd2FzIGNoYW5nZWQuCi0gKiAg
LSAidmlld3BvcnQsY2hhbmdlZCIsIHZvaWQ6IHJlcG9ydHMgdGhhdCB2aWV3cG9ydCB3YXMgY2hh
bmdlZC4KICAqICAtICJ6b29tLGFuaW1hdGVkLGVuZCIsIHZvaWQ6IHJlcXVlc3RlZCBhbmltYXRl
ZCB6b29tIGlzIGZpbmlzaGVkLgogICovCiAKQEAgLTIxMjEsMjIgKzIxMjAsNiBAQCBFQVBJIEVp
bmFfQm9vbCBld2tfdmlld19wYWludChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJv
X3QgKmNyLCBjb25zdCBFaQogICovCiBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19wYWludF9jb250
ZW50cyhFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3QgKmNyLCBjb25zdCBFaW5h
X1JlY3RhbmdsZSAqYXJlYSk7CiAKLS8qKgotICogR2V0cyB0aGUgYXR0cmlidXRlcyBvZiB0aGUg
dmlld3BvcnQgbWV0YSB0YWcuCi0gKgotICogUHJvcGVydGllcyBhcmUgcmV0dXJuZWQgaW4gdGhl
IHJlc3BlY3RpdmUgcG9pbnRlcnMuIFBhc3NpbmcgQGMgMCB0byBhbnkgb2YKLSAqIHRoZXNlIHBv
aW50ZXJzIHdpbGwgbWFrZSB0aGF0IHByb3BlcnR5IHRvIG5vdCBiZSByZXR1cm5lZC4KLSAqCi0g
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIHZpZXdwb3J0IGF0dHJpYnV0ZXMKLSAq
IEBwYXJhbSB3IHRoZSBwb2ludGVyIHRvIHN0b3JlIHRoZSB3aWR0aCBvZiB0aGUgdmlld3BvcnQK
LSAqIEBwYXJhbSBoIHRoZSBwb2ludGVyIHRvIHN0b3JlIHRoZSBoZWlnaHQgb2YgdGhlIHZpZXdw
b3J0Ci0gKiBAcGFyYW0gaW5pdF9zY2FsZSB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgaW5pdGlh
bCBzY2FsZSB2YWx1ZQotICogQHBhcmFtIG1heF9zY2FsZSB0aGUgcG9pbnRlciB0byBzdG9yZSB0
aGUgbWF4aW11bSBzY2FsZSB2YWx1ZQotICogQHBhcmFtIG1pbl9zY2FsZSB0aGUgcG9pbnRlciB0
byBzdG9yZSB0aGUgbWluaW11bSBzY2FsZSB2YWx1ZQotICogQHBhcmFtIGRldmljZV9waXhlbF9y
YXRpbyB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgZGV2aWNlIHBpeGVsIHJhdGlvIHZhbHVlCi0g
KiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB0aGUgcG9pbnRlciB0byBzdG9yZSBpZiB1c2VyIGNhbiBz
Y2FsZSB2aWV3cG9ydAotICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRl
c19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGludCAqdywgaW50ICpoLCBmbG9hdCAqaW5pdF9z
Y2FsZSwgZmxvYXQgKm1heF9zY2FsZSwgZmxvYXQgKm1pbl9zY2FsZSwgZmxvYXQgKmRldmljZV9w
aXhlbF9yYXRpbyAsIEVpbmFfQm9vbCAqdXNlcl9zY2FsYWJsZSk7CiAKIC8qKgogICogU2V0cyB0
aGUgem9vbSByYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
d3BvcnRfYXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0
X2F0dHJpYnV0ZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOTJhOWEzNDUwNzIzNGVkMDJmYzhlZGQ4YjQy
Nzc2YTQzZGRkYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJld2tfdmlld3BvcnRfYXR0cmlidXRlcy5oIgorCisjaW5jbHVkZSAiQ2hy
b21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50RWZsLmgiCisjaW5jbHVkZSAiRWZsU2NyZWVu
VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJl
d2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEV2YXMuaD4KKworLyoqCisgKiBcc3RydWN0ICBfRXdr
X1ZpZXdwb3J0X0F0dHJpYnV0ZXMKKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSB2aWV3cG9ydCBh
dHRyaWJ1dGVzIGRhdGEuCisgKi8KK3N0cnVjdCBfRXdrX1ZpZXdwb3J0X0F0dHJpYnV0ZXMgewor
ICAgIGZsb2F0IHdpZHRoOworICAgIGZsb2F0IGhlaWdodDsKKyAgICBmbG9hdCBpbml0aWFsU2Nh
bGU7CisgICAgZmxvYXQgbWluaW11bVNjYWxlOworICAgIGZsb2F0IG1heGltdW1TY2FsZTsKKyAg
ICBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvOworICAgIGZsb2F0IHVzZXJTY2FsYWJsZTsKK307CisK
Ky8qKgorICogQGJyaWVmIFZpZXdwb3J0IHByaXZhdGUgZGF0YSB0aGF0IGlzIHVzZWQgaW50ZXJu
YWxseSBieSBFRkwgV2ViS2l0CisgKiBhbmQgc2hvdWxkIG5ldmVyIGJlIG1vZGlmaWVkIGZyb20g
b3V0c2lkZS4KKyAqCisgKiBAaW50ZXJuYWwKKyAqLworc3RydWN0IF9Fd2tfVmlld3BvcnRfUHJp
dmF0ZV9EYXRhIHsKKyAgICBFdmFzX09iamVjdCogZXdrVmlldzsKKyAgICBXZWJDb3JlOjpWaWV3
cG9ydEFyZ3VtZW50cyBhcmd1bWVudHM7Cit9OworCitzdGF0aWMgRXdrX1ZpZXdwb3J0X0F0dHJp
YnV0ZXMgX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShjb25zdCBFd2tfVmll
d3BvcnRfUHJpdmF0ZV9EYXRhKiBwcml2KQoreworICAgIGludCBkZXNrdG9wV2lkdGggPSA5ODA7
IC8vIFRoaXMgdmFsdWUgd29ya3Mgd2VsbCBmb3IgbW9zdCB3ZWIgcGFnZXMgZGVzaWduZWQgZm9y
IGRlc2t0b3AgYnJvd3NlcnMuCisgICAgaW50IGRldmljZURQSSA9IFdlYkNvcmU6OmdldERQSSgp
OworCisgICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IEVXS1ByaXZhdGU6OmNvcmVQYWdlKHByaXYt
PmV3a1ZpZXcpOworCisgICAgV2ViQ29yZTo6SW50UmVjdCBhdmFpbGFibGVSZWN0ID0gV2ViQ29y
ZTo6ZW5jbG9zaW5nSW50UmVjdChwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBhZ2VSZWN0KCkp
OworICAgIFdlYkNvcmU6OkludFJlY3QgZGV2aWNlUmVjdCA9IFdlYkNvcmU6OmVuY2xvc2luZ0lu
dFJlY3QocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5kb3dSZWN0KCkpOworCisgICAgV2Vi
Q29yZTo6Vmlld3BvcnRBcmd1bWVudHMgYXJndW1lbnRzID0gcGFnZS0+bWFpbkZyYW1lKCktPmRv
Y3VtZW50KCktPnZpZXdwb3J0QXJndW1lbnRzKCk7CisgICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMgPSBXZWJDb3JlOjpjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKGFy
Z3VtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVza3RvcFdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXZpY2VSZWN0LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRldmljZVJlY3QuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZURQSSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlUmVjdC5zaXplKCkpOworCisgICAgV2Vi
Q29yZTo6cmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1ZpZXdwb3J0U2l6ZShhdHRyaWJ1dGVz
LCBhdmFpbGFibGVSZWN0LnNpemUoKSk7CisgICAgV2ViQ29yZTo6cmVzdHJpY3RTY2FsZUZhY3Rv
clRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGUoYXR0cmlidXRlcyk7CisKKyAgICBFd2tf
Vmlld3BvcnRfQXR0cmlidXRlcyBld2tBdHRyaWJ1dGVzOworICAgIGV3a0F0dHJpYnV0ZXMud2lk
dGggPSBhdHRyaWJ1dGVzLmxheW91dFNpemUud2lkdGgoKTsKKyAgICBld2tBdHRyaWJ1dGVzLmhl
aWdodCA9IGF0dHJpYnV0ZXMubGF5b3V0U2l6ZS5oZWlnaHQoKTsKKyAgICBld2tBdHRyaWJ1dGVz
LmluaXRpYWxTY2FsZSA9IGF0dHJpYnV0ZXMuaW5pdGlhbFNjYWxlOworICAgIGV3a0F0dHJpYnV0
ZXMubWluaW11bVNjYWxlID0gYXR0cmlidXRlcy5taW5pbXVtU2NhbGU7CisgICAgZXdrQXR0cmli
dXRlcy5tYXhpbXVtU2NhbGUgPSBhdHRyaWJ1dGVzLm1heGltdW1TY2FsZTsKKyAgICBld2tBdHRy
aWJ1dGVzLmRldmljZVBpeGVsUmF0aW8gPSBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW87Cisg
ICAgZXdrQXR0cmlidXRlcy51c2VyU2NhbGFibGUgPSBhdHRyaWJ1dGVzLnVzZXJTY2FsYWJsZTsK
KworICAgIHJldHVybiBld2tBdHRyaWJ1dGVzOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICog
UmVwb3J0cyB0aGUgdmlld3BvcnQgaGFzIGNoYW5nZWQuCisgKgorICogQHBhcmFtIGFyZ3VtZW50
cyB2aWV3cG9ydCBhcmd1bWVudC4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJ2aWV3cG9ydCxjaGFu
Z2VkIiB3aXRoIEV3a19WaWV3cG9ydF9BdHRyaWJ1dGVzIHBhcmFtZXRlcnMuCisgKi8KK3ZvaWQg
ZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY2hhbmdlZChFd2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRh
KiBwcml2KQoreworICAgIEV3a19WaWV3cG9ydF9BdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBfZXdr
X3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRlKHByaXYpOworICAgIERCRygiY29tcHV0
ZWQgdmlld3BvcnQgYXR0cmlidXRlOiB3aWR0aDolZiwgaGVpZ2h0OiVmLCBpbml0aWFsU2NhbGU6
JWYsIG1pbmltdW1TY2FsZTolZiwiCisgICAgICAgICJtYXhpbXVtU2NhbGU6JWYsIGRldmljZVBp
eGVsUmF0aW86JWYsIHVzZXJTY2FsYWJsZTolZCIsIGF0dHJpYnV0ZXMud2lkdGgsIGF0dHJpYnV0
ZXMuaGVpZ2h0LAorICAgICAgICBhdHRyaWJ1dGVzLmluaXRpYWxTY2FsZSwgYXR0cmlidXRlcy5t
aW5pbXVtU2NhbGUsIGF0dHJpYnV0ZXMubWF4aW11bVNjYWxlLCBhdHRyaWJ1dGVzLmRldmljZVBp
eGVsUmF0aW8sCisgICAgICAgIHN0YXRpY19jYXN0PGJvb2w+KGF0dHJpYnV0ZXMudXNlclNjYWxh
YmxlKSk7CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKHByaXYtPmV3a1Zp
ZXcsICJ2aWV3cG9ydCxjaGFuZ2VkIiwgJmF0dHJpYnV0ZXMpOworfQorCisvKioKKyAqIEBpbnRl
cm5hbAorICogQ3JlYXRlcyBwcml2YXRlIGRhdGEgZm9yIHZpZXdwb3J0IGF0dHJpYnV0ZXMuCisg
KgorICogQHBhcmFtIGV3a1ZpZXcgdmlldyBvYmplY3QuCisgKgorICogQHJldHVybiBwcml2YXRl
IGRhdGEgZm9yIHZpZXdwb3J0IGF0dHJpYnV0ZXMuCisgKi8KK0V3a19WaWV3cG9ydF9Qcml2YXRl
X0RhdGEqIGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX25ldyhFdmFzX09iamVjdCogZXdrVmlldykK
K3sKKyAgICBBU1NFUlQoZXdrVmlldyk7CisKKyAgICBFd2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRh
KiBwcml2ID0gbmV3IEV3a19WaWV3cG9ydF9Qcml2YXRlX0RhdGE7CisKKyAgICBpZiAoIXByaXYp
IHsKKyAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfVmlld3BvcnRfUHJp
dmF0ZV9EYXRhIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHByaXYtPmV3a1Zp
ZXcgPSBld2tWaWV3OworICAgIHByaXYtPmFyZ3VtZW50cy53aWR0aCA9IFdlYkNvcmU6OlZpZXdw
b3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CisgICAgcHJpdi0+YXJndW1lbnRzLmhlaWdodCA9IFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CisgICAgcHJpdi0+YXJndW1lbnRz
LmluaXRpYWxTY2FsZSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87Cisg
ICAgcHJpdi0+YXJndW1lbnRzLm1pbmltdW1TY2FsZSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1l
bnRzOjpWYWx1ZUF1dG87CisgICAgcHJpdi0+YXJndW1lbnRzLm1heGltdW1TY2FsZSA9IFdlYkNv
cmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CisgICAgcHJpdi0+YXJndW1lbnRzLnRh
cmdldERlbnNpdHlEcGkgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwor
ICAgIHByaXYtPmFyZ3VtZW50cy51c2VyU2NhbGFibGUgPSB0cnVlOworCisgICAgcmV0dXJuIHBy
aXY7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0X2F0
dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld3BvcnRfYXR0cmlidXRl
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ4ZDU1ODllZTQxNjAxMGJhNTJjNWNhZDI3NGZiYTliMTU4ZDM1MDEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0X2F0
dHJpYnV0ZXMuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNf
aAorI2RlZmluZSBld2tfdmlld3BvcnRfYXR0cmlidXRlc19oCisKKyNpbmNsdWRlIDxFaW5hLmg+
CisjaW5jbHVkZSA8RXZhcy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgewor
I2VuZGlmCisKKy8qKgorICogQGZpbGUgICAgZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuaAorICog
QGJyaWVmICAgVmlld3BvcnQgTWV0YSBUYWcgaW5mb3JtYXRpb24uCisgKgorICogVGhlIGZvbGxv
d2luZyBzaWduYWxzIChzZWUgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKCkpIGFyZSBl
bWl0dGVkOgorICogIC0gInZpZXdwb3J0LGNoYW5nZWQiLCBFd2tfVmlld3BvcnRfQXR0cmlidXRl
czogcmVwb3J0cyB0aGF0IHZpZXdwb3J0IHdhcyBjaGFuZ2VkLgorICovCisKKy8vLyBDcmVhdGVz
IGEgdHlwZSBuYW1lIGZvciBAYSBfRXdrX1ZpZXdwb3J0X0F0dHJpYnV0ZXMuCit0eXBlZGVmIHN0
cnVjdCBfRXdrX1ZpZXdwb3J0X0F0dHJpYnV0ZXMgRXdrX1ZpZXdwb3J0X0F0dHJpYnV0ZXM7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3ZpZXdwb3J0X2Fy
Z3VtZW50cy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0
X2F0dHJpYnV0ZXNfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3cG9y
dF9hdHRyaWJ1dGVzX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjRmMTNmYTQyZmI5NGQ1NDQ0ZmE1
ZmIwOGFkOWMzZmFlMDllNjE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGUuaApAQCAtMCwwICsxLDMzIEBACisv
KgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5k
ZWYgZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a192aWV3cG9y
dF9hdHRyaWJ1dGVzX3ByaXZhdGVfaAorCisjaW5jbHVkZSA8RXZhcy5oPgorCisvLy8gQ3JlYXRl
cyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19WaWV3X1NtYXJ0X0RhdGEuCit0eXBlZGVmIHN0cnVj
dCBfRXdrX1ZpZXdwb3J0X1ByaXZhdGVfRGF0YSBFd2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRhOwor
CitFd2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRhKiBld2tfdmlld192aWV3cG9ydF9wcml2YXRlX2Rh
dGFfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKwordm9pZCBld2tfdmlld3BvcnRfYXR0cmli
dXRlc19jaGFuZ2VkKEV3a19WaWV3cG9ydF9Qcml2YXRlX0RhdGEqIHByaXYpOworRXdrX1ZpZXdw
b3J0X1ByaXZhdGVfRGF0YSogZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfbmV3KEV2YXNfT2JqZWN0
KiBld2tWaWV3KTsKKworI2VuZGlmIC8vIGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGVf
aAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121250</attachid>
            <date>2012-01-05 03:03:44 -0800</date>
            <delta_ts>2012-01-05 21:08:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75592-20120105200342.patch</filename>
            <type>text/plain</type>
            <size>20931</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzOTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZDVkNGI1OWY5
ZmI2MDU0YmUxMGVkNDc0YzNhYzA2MzhmNTA2MDBkMC4uZWNmYTMzM2MxODEzODk0OTNiYjExZjk5
NDNjNzM0YmZjMTI4NTVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEy
LTAxLTAzICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW0VGTF0gTW92ZSB2aWV3cG9ydCBmdW5jdGlvbnMgdG8gbmV3IGZpbGVzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1OTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb28gbWFueSBmdW5jdGlvbnMg
YXJlIGltcGxlbWVudGVkIHRvIGV3a192aWV3LmNwcC4gU28sIGluZGVwZW5kZW50IGZlYXR1cmVz
IG5lZWQgdG8KKyAgICAgICAgYmUgbW92ZWQgdG8gbmV3IGZpbGVzLiBUaGlzIHBhdGNoIG1vdmVz
IEFQSXMgYW5kIGludGVybmFsIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHZpZXdwb3J0IG1ldGEgdGFn
CisgICAgICAgIHRvIG5ldyBmaWxlcy4KKworICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OiBB
ZGQgZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmNwcDogVXNlIGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX2NoYW5nZWQg
ZnVuY3Rpb24gaW5zdGVhZCBvZiBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldCBmdW5j
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6ZGlzcGF0Y2hWaWV3cG9y
dFByb3BlcnRpZXNEaWRDaGFuZ2UpOgorICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6IEFkZCB2aWV3cG9ydCBwcml2YXRlIGRhdGEgdG8gRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhLgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAg
ICAgKGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KToKKyAgICAgICAgKiBld2svZXdr
X3ZpZXcuaDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwOiBBZGRl
ZC4gVGhpcyBmaWxlIGhhcyB2aWV3cG9ydCBhdHRyaWJ1dGVzIHByaXZhdGUgZGF0YSBhbmQgZnVu
Y3Rpb25zIHJlbGF0ZWQgdG8gdmlld3BvcnQuCisgICAgICAgIChfZXdrX3ZpZXdfdmlld3BvcnRf
YXR0cmlidXRlc19jb21wdXRlKToKKyAgICAgICAgKGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX2No
YW5nZWQpOgorICAgICAgICAoZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfbmV3KToKKyAgICAgICAg
KiBld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3
a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGUuaDogQWRkZWQuCisKIDIwMTItMDEtMDIgIEd5
dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBS
ZW1vdmUgd2hpdGVzcGFjZS9kZWNsYXJhdGlvbiBzdHlsZSBleGNlcHRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktpdC9lZmwv
Q01ha2VMaXN0c0VmbC50eHQKaW5kZXggYzVlZjY1NjRmNTQyMWFkZGMyODg3ZWQwYzZhMDk5YjU0
OTEzNTM3MS4uMGY5MTZmYTlhMDhiZjI0ZGE0MDM5Y2I4YjFmNjNhYWI2ZTkyNjQyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTg4LDYgKzg4LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0X1NPVVJDRVMKICAgICBlZmwvZXdrL2V3a190aWxlZF9tb2RlbC5jcHAKICAgICBlZmwv
ZXdrL2V3a191dGlsLmNwcAogICAgIGVmbC9ld2svZXdrX3ZpZXcuY3BwCisgICAgZWZsL2V3ay9l
d2tfdmlld3BvcnRfYXR0cmlidXRlcy5jcHAKICAgICBlZmwvZXdrL2V3a192aWV3X3NpbmdsZS5j
cHAKICAgICBlZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcAogICAgIGVmbC9ld2svZXdrX3dpbmRv
d19mZWF0dXJlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IGEyNWY5ZDBlNDcwOGJiMGFhNTViNGJmNTcyMjgw
Zjk1OTI5OTIwY2MuLmY0YzkyMGIwZWNmY2QzYWMyNjY1OTc1YjZlMjk2NjQwYzZlYTBiYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgi
CiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgor
I2luY2x1ZGUgImV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxF
Y29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KQEAgLTUzMSw3ICs1MzIsNyBAQCB2b2lkIENocm9tZUNsaWVudEVmbDo6bG9hZEljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikKIAogdm9pZCBD
aHJvbWVDbGllbnRFZmw6OmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0
IFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpIGNvbnN0CiB7Ci0gICAgZXdrX3ZpZXdfdmll
d3BvcnRfYXR0cmlidXRlc19zZXQobV92aWV3LCBhcmd1bWVudHMpOworICAgIGV3a192aWV3cG9y
dF9hdHRyaWJ1dGVzX2NoYW5nZWQoZXdrX3ZpZXdfdmlld3BvcnRfcHJpdmF0ZV9kYXRhX2dldCht
X3ZpZXcpKTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnRFZmw6OnNlbGVjdEl0ZW1Xcml0aW5nRGly
ZWN0aW9uSXNOYXR1cmFsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKaW5kZXggYTUz
MDdmMDhkNmYyYjhjZTBkZDAzNzlkNmE0Njk1NjZiYjVkZDQzYS4uYjhkODEyZjAzZGZiNjUxMGRm
Yjk5YWNiZGVkMzYwOGFmNmU2YzMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgK
QEAgLTEzOSw3ICsxMzksNiBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGV3a192
aWV3X2ZyYW1lX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhcwogV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCog
ZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVn
aW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMs
IGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwogCiB2b2lkIGV3a192aWV3X3Bv
cHVwX25ldyhFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBj
bGllbnQsIGludCBzZWxlY3RlZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7Ci12b2lk
IGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBj
b25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzKTsKIAogdm9pZCBld2tf
dmlld19kb3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWQq
IGRvd25sb2FkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggMjhlOWYwYjg5
MTUyZTc3YTA1ZTNkYzc0ZTc3ZjVlYWI2M2Q0MzczNy4uZjIxNDBlNTQ0OGQwNzQ5MzliNTYyZmQw
MTdkNjU2MzhkMDI1YzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC0zMCw3
ICszMCw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEcmFnQ2xp
ZW50RWZsLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50RWZsLmgiCi0jaW5jbHVkZSAiRWZsU2Ny
ZWVuVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRm9j
dXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRFZmwuaCIKQEAgLTUz
LDYgKzUyLDcgQEAKICNpbmNsdWRlICJjX2luc3RhbmNlLmgiCiAjaW5jbHVkZSAiZXdrX2xvZ2dp
bmcuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3cG9ydF9h
dHRyaWJ1dGVzX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVpbmEu
aD4KICNpbmNsdWRlIDxFdmFzLmg+CkBAIC0xMjksOCArMTI5LDggQEAgc3RydWN0IF9Fd2tfVmll
d19Qcml2YXRlX0RhdGEgewogICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2U7CiAgICAgV2ViQ29yZTo6
U2V0dGluZ3MqIHBhZ2VTZXR0aW5nczsKICAgICBXZWJDb3JlOjpGcmFtZSogbWFpbkZyYW1lOwot
ICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzOwogICAgIEV3
a19IaXN0b3J5KiBoaXN0b3J5OworICAgIEV3a19WaWV3cG9ydF9Qcml2YXRlX0RhdGEqIHZpZXdw
b3J0UHJpdmF0ZURhdGE7CiAgICAgc3RydWN0IHsKICAgICAgICAgRXdrX01lbnUgbWVudTsKICAg
ICAgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBtZW51Q2xpZW50OwpAQCAtNjI2LDEzICs2
MjYsNyBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXco
RXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgICAgICBnb3RvIGVycm9yX3NldHRp
bmdzOwogICAgIH0KIAotICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLndpZHRoID0gV2ViQ29y
ZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bzsKLSAgICBwcml2LT52aWV3cG9ydEFyZ3Vt
ZW50cy5oZWlnaHQgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwotICAg
IHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLmluaXRpYWxTY2FsZSA9IFdlYkNvcmU6OlZpZXdwb3J0
QXJndW1lbnRzOjpWYWx1ZUF1dG87Ci0gICAgcHJpdi0+dmlld3BvcnRBcmd1bWVudHMubWluaW11
bVNjYWxlID0gV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bzsKLSAgICBwcml2
LT52aWV3cG9ydEFyZ3VtZW50cy5tYXhpbXVtU2NhbGUgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3Vt
ZW50czo6VmFsdWVBdXRvOwotICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLnRhcmdldERlbnNp
dHlEcGkgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwotICAgIHByaXYt
PnZpZXdwb3J0QXJndW1lbnRzLnVzZXJTY2FsYWJsZSA9IHRydWU7CisgICAgcHJpdi0+dmlld3Bv
cnRQcml2YXRlRGF0YSA9IGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX25ldyhzbWFydERhdGEtPnNl
bGYpOwogCiAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2Fs
bHkodHJ1ZSk7CiAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXREZWZhdWx0VGV4dEVuY29kaW5n
TmFtZSgiaXNvLTg4NTktMSIpOwpAQCAtNzU4LDYgKzc1Miw3IEBAIHN0YXRpYyB2b2lkIF9ld2tf
dmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiAKICAgICBld2tfaGlz
dG9yeV9mcmVlKHByaXYtPmhpc3RvcnkpOwogCisgICAgZGVsZXRlIHByaXYtPnZpZXdwb3J0UHJp
dmF0ZURhdGE7CiAgICAgZGVsZXRlIHByaXYtPnBhZ2U7CiAgICAgZnJlZShwcml2KTsKIH0KQEAg
LTEwODIsMjEgKzEwNzcsNiBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRpb25f
c3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiLCBzbWFydERh
dGEpOwogfQogCi1zdGF0aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tfdmlld192
aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoY29uc3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBw
cml2KQotewotICAgIGludCBkZXNrdG9wV2lkdGggPSA5ODA7Ci0gICAgaW50IGRldmljZURQSSA9
IFdlYkNvcmU6OmdldERQSSgpOwotCi0gICAgV2ViQ29yZTo6SW50UmVjdCBhdmFpbGFibGVSZWN0
ID0gZW5jbG9zaW5nSW50UmVjdChwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBhZ2VS
ZWN0KCkpOwotICAgIFdlYkNvcmU6OkludFJlY3QgZGV2aWNlUmVjdCA9IGVuY2xvc2luZ0ludFJl
Y3QocHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5kb3dSZWN0KCkpOwotCi0gICAg
V2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBXZWJDb3JlOjpjb21wdXRl
Vmlld3BvcnRBdHRyaWJ1dGVzKHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLCBkZXNrdG9wV2lkdGgs
IGRldmljZVJlY3Qud2lkdGgoKSwgZGV2aWNlUmVjdC5oZWlnaHQoKSwgZGV2aWNlRFBJLCBhdmFp
bGFibGVSZWN0LnNpemUoKSk7Ci0gICAgV2ViQ29yZTo6cmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0
b3JUb1ZpZXdwb3J0U2l6ZShhdHRyaWJ1dGVzLCBhdmFpbGFibGVSZWN0LnNpemUoKSk7Ci0gICAg
V2ViQ29yZTo6cmVzdHJpY3RTY2FsZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFi
bGUoYXR0cmlidXRlcyk7Ci0KLSAgICByZXR1cm4gYXR0cmlidXRlczsKLX0KLQogc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZGlzYWJsZV9yZW5kZXIoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc21hcnREYXRhKQogewogICAgIFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNtYXJ0
RGF0YT0lcCIsIHNtYXJ0RGF0YSk7CkBAIC0zNTMzLDQ0ICszNTEzLDYgQEAgdm9pZCBld2tfdmll
d19qc193aW5kb3dfb2JqZWN0X2NsZWFyKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVj
dCogZnJhbWUpCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAi
anMsd2luZG93b2JqZWN0LGNsZWFyIiwgZnJhbWUpOwogfQogCi0vKioKLSAqIEBpbnRlcm5hbAot
ICogUmVwb3J0cyB0aGUgdmlld3BvcnQgaGFzIGNoYW5nZWQuCi0gKgotICogQHBhcmFtIGFyZ3Vt
ZW50cyB2aWV3cG9ydCBhcmd1bWVudC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJ2aWV3cG9ydCxj
aGFuZ2VkIiB3aXRoIG5vIHBhcmFtZXRlcnMuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfdmlld3BvcnRf
YXR0cmlidXRlc19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdlYkNvcmU6OlZpZXdw
b3J0QXJndW1lbnRzJiBhcmd1bWVudHMpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcs
IHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKLQot
ICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzID0gYXJndW1lbnRzOwotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInZpZXdwb3J0LGNoYW5nZWQiLCAwKTsKLX0K
LQotdm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldywgaW50KiB3aWR0aCwgaW50KiBoZWlnaHQsIGZsb2F0KiBpbml0U2NhbGUsIGZs
b2F0KiBtYXhTY2FsZSwgZmxvYXQqIG1pblNjYWxlLCBmbG9hdCogZGV2aWNlUGl4ZWxSYXRpbywg
RWluYV9Cb29sKiB1c2VyU2NhbGFibGUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYpOwotICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1
dGVzID0gX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShwcml2KTsKLQotICAg
IGlmICh3aWR0aCkKLSAgICAgICAgKndpZHRoID0gYXR0cmlidXRlcy5sYXlvdXRTaXplLndpZHRo
KCk7Ci0gICAgaWYgKGhlaWdodCkKLSAgICAgICAgKmhlaWdodCA9IGF0dHJpYnV0ZXMubGF5b3V0
U2l6ZS5oZWlnaHQoKTsKLSAgICBpZiAoaW5pdFNjYWxlKQotICAgICAgICAqaW5pdFNjYWxlID0g
YXR0cmlidXRlcy5pbml0aWFsU2NhbGU7Ci0gICAgaWYgKG1heFNjYWxlKQotICAgICAgICAqbWF4
U2NhbGUgPSBhdHRyaWJ1dGVzLm1heGltdW1TY2FsZTsKLSAgICBpZiAobWluU2NhbGUpCi0gICAg
ICAgICptaW5TY2FsZSA9IGF0dHJpYnV0ZXMubWluaW11bVNjYWxlOwotICAgIGlmIChkZXZpY2VQ
aXhlbFJhdGlvKQotICAgICAgICAqZGV2aWNlUGl4ZWxSYXRpbyA9IGF0dHJpYnV0ZXMuZGV2aWNl
UGl4ZWxSYXRpbzsKLSAgICBpZiAodXNlclNjYWxhYmxlKQotICAgICAgICAqdXNlclNjYWxhYmxl
ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oYXR0cmlidXRlcy51c2VyU2NhbGFibGUpOwotfQogCiBFaW5h
X0Jvb2wgZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0
IG1pblNjYWxlLCBmbG9hdCBtYXhTY2FsZSkKIHsKQEAgLTM4NzUsNiArMzgxNywyMiBAQCB2b2lk
IGV3a192aWV3X21peGVkX2NvbnRlbnRfcnVuX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9v
bCBoYXNSdW4pCiAgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmll
dywgIm1peGVkY29udGVudCxydW4iLCAwKTsKIH0KIAorLyoqCisgKiBAaW50ZXJuYWwKKyAqIEdl
dHMgdmlld3BvcnQgcHJpdmF0ZSBkYXRhIGZyb20gZXdrVmlldydzIHByaXZhdGUgZGF0YS4KKyAq
CisgKiBAcGFyYW0gZXdrVmlldyB2aWV3LgorICoKKyAqIEByZXR1cm4gdmlld3BvcnQgcHJpdmF0
ZSBkYXRhLgorICovCitFd2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRhKiBld2tfdmlld192aWV3cG9y
dF9wcml2YXRlX2RhdGFfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKKyAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKKworICAgIHJldHVybiBwcml2
LT52aWV3cG9ydFByaXZhdGVEYXRhOworfQorCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdmlzaWJpbGl0
eV9zdGF0ZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19QYWdlX1Zpc2liaWxpdHlfU3Rh
dGUgcGFnZVZpc2liaWxpdHlTdGF0ZSwgRWluYV9Cb29sIGluaXRpYWxTdGF0ZSkKIHsKICNpZiBF
TkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXgg
ZDFjNjVlYjRlOWI5YjI1MTdiODdiMzM0OTE3MmZkNGJiNzZhNWVhYi4uNzIxNDQ4ZjgyMzEyZWFh
Yjg5MTkzODM3ZDYzNDlhMjJjZjVmNGViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAg
LTgwLDcgKzgwLDYgQEAKICAqICAtICJ0b29sdGlwLHRleHQsc2V0IiwgY29uc3QgY2hhcio6IHNl
dHMgdG9vbHRpcCB0ZXh0IGFuZCBkaXNwbGF5cyBpZiBpdCBpcyBjdXJyZW50bHkgaGlkZGVuLgog
ICogIC0gInVyaSxjaGFuZ2VkIiwgY29uc3QgY2hhcio6IHVyaSBvZiB0aGUgbWFpbiBmcmFtZSB3
YXMgY2hhbmdlZC4KICAqICAtICJ2aWV3LHJlc2l6ZWQiLCB2b2lkOiB2aWV3IG9iamVjdCdzIHNp
emUgd2FzIGNoYW5nZWQuCi0gKiAgLSAidmlld3BvcnQsY2hhbmdlZCIsIHZvaWQ6IHJlcG9ydHMg
dGhhdCB2aWV3cG9ydCB3YXMgY2hhbmdlZC4KICAqICAtICJ6b29tLGFuaW1hdGVkLGVuZCIsIHZv
aWQ6IHJlcXVlc3RlZCBhbmltYXRlZCB6b29tIGlzIGZpbmlzaGVkLgogICovCiAKQEAgLTIxMjEs
MjIgKzIxMjAsNiBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19wYWludChFd2tfVmlld19Qcml2
YXRlX0RhdGEgKnByaXYsIGNhaXJvX3QgKmNyLCBjb25zdCBFaQogICovCiBFQVBJIEVpbmFfQm9v
bCBld2tfdmlld19wYWludF9jb250ZW50cyhFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNh
aXJvX3QgKmNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7CiAKLS8qKgotICogR2V0cyB0
aGUgYXR0cmlidXRlcyBvZiB0aGUgdmlld3BvcnQgbWV0YSB0YWcuCi0gKgotICogUHJvcGVydGll
cyBhcmUgcmV0dXJuZWQgaW4gdGhlIHJlc3BlY3RpdmUgcG9pbnRlcnMuIFBhc3NpbmcgQGMgMCB0
byBhbnkgb2YKLSAqIHRoZXNlIHBvaW50ZXJzIHdpbGwgbWFrZSB0aGF0IHByb3BlcnR5IHRvIG5v
dCBiZSByZXR1cm5lZC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIHZp
ZXdwb3J0IGF0dHJpYnV0ZXMKLSAqIEBwYXJhbSB3IHRoZSBwb2ludGVyIHRvIHN0b3JlIHRoZSB3
aWR0aCBvZiB0aGUgdmlld3BvcnQKLSAqIEBwYXJhbSBoIHRoZSBwb2ludGVyIHRvIHN0b3JlIHRo
ZSBoZWlnaHQgb2YgdGhlIHZpZXdwb3J0Ci0gKiBAcGFyYW0gaW5pdF9zY2FsZSB0aGUgcG9pbnRl
ciB0byBzdG9yZSB0aGUgaW5pdGlhbCBzY2FsZSB2YWx1ZQotICogQHBhcmFtIG1heF9zY2FsZSB0
aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgbWF4aW11bSBzY2FsZSB2YWx1ZQotICogQHBhcmFtIG1p
bl9zY2FsZSB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgbWluaW11bSBzY2FsZSB2YWx1ZQotICog
QHBhcmFtIGRldmljZV9waXhlbF9yYXRpbyB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgZGV2aWNl
IHBpeGVsIHJhdGlvIHZhbHVlCi0gKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB0aGUgcG9pbnRlciB0
byBzdG9yZSBpZiB1c2VyIGNhbiBzY2FsZSB2aWV3cG9ydAotICovCi1FQVBJIHZvaWQgZXdrX3Zp
ZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGludCAqdywg
aW50ICpoLCBmbG9hdCAqaW5pdF9zY2FsZSwgZmxvYXQgKm1heF9zY2FsZSwgZmxvYXQgKm1pbl9z
Y2FsZSwgZmxvYXQgKmRldmljZV9waXhlbF9yYXRpbyAsIEVpbmFfQm9vbCAqdXNlcl9zY2FsYWJs
ZSk7CiAKIC8qKgogICogU2V0cyB0aGUgem9vbSByYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlld3BvcnRfYXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkNWNhYzI5
NmQ2M2NmMjkyNGI3NDEwMmI3NmFiZDBmZWIxYjg4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwCkBAIC0wLDAgKzEs
MTQwIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfdmlld3BvcnRfYXR0cmlidXRl
cy5oIgorCisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50RWZsLmgi
CisjaW5jbHVkZSAiRWZsU2NyZWVuVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiZXdrX2xv
Z2dpbmcuaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3cG9y
dF9hdHRyaWJ1dGVzX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxFdmFzLmg+CisKKy8qKgorICogXHN0
cnVjdCAgX0V3a19WaWV3cG9ydF9BdHRyaWJ1dGVzCisgKiBAYnJpZWYgICBDb250YWlucyB0aGUg
dmlld3BvcnQgYXR0cmlidXRlcyBkYXRhLgorICovCitzdHJ1Y3QgX0V3a19WaWV3cG9ydF9BdHRy
aWJ1dGVzIHsKKyAgICBmbG9hdCB3aWR0aDsKKyAgICBmbG9hdCBoZWlnaHQ7CisgICAgZmxvYXQg
aW5pdGlhbFNjYWxlOworICAgIGZsb2F0IG1pbmltdW1TY2FsZTsKKyAgICBmbG9hdCBtYXhpbXVt
U2NhbGU7CisgICAgZmxvYXQgZGV2aWNlUGl4ZWxSYXRpbzsKKyAgICBmbG9hdCB1c2VyU2NhbGFi
bGU7Cit9OworCisvKioKKyAqIEBicmllZiBWaWV3cG9ydCBwcml2YXRlIGRhdGEgdGhhdCBpcyB1
c2VkIGludGVybmFsbHkgYnkgRUZMIFdlYktpdAorICogYW5kIHNob3VsZCBuZXZlciBiZSBtb2Rp
ZmllZCBmcm9tIG91dHNpZGUuCisgKgorICogQGludGVybmFsCisgKi8KK3N0cnVjdCBfRXdrX1Zp
ZXdwb3J0X1ByaXZhdGVfRGF0YSB7CisgICAgRXZhc19PYmplY3QqIGV3a1ZpZXc7CisgICAgV2Vi
Q29yZTo6Vmlld3BvcnRBcmd1bWVudHMgYXJndW1lbnRzOworfTsKKworc3RhdGljIEV3a19WaWV3
cG9ydF9BdHRyaWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoY29u
c3QgRXdrX1ZpZXdwb3J0X1ByaXZhdGVfRGF0YSogcHJpdikKK3sKKyAgICBpbnQgZGVza3RvcFdp
ZHRoID0gOTgwOyAvLyBUaGlzIHZhbHVlIHdvcmtzIHdlbGwgZm9yIG1vc3Qgd2ViIHBhZ2VzIGRl
c2lnbmVkIGZvciBkZXNrdG9wIGJyb3dzZXJzLgorICAgIGludCBkZXZpY2VEUEkgPSBXZWJDb3Jl
OjpnZXREUEkoKTsKKworICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSBFV0tQcml2YXRlOjpjb3Jl
UGFnZShwcml2LT5ld2tWaWV3KTsKKworICAgIFdlYkNvcmU6OkludFJlY3QgYXZhaWxhYmxlUmVj
dCA9IFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5w
YWdlUmVjdCgpKTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGRldmljZVJlY3QgPSBXZWJDb3JlOjpl
bmNsb3NpbmdJbnRSZWN0KHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+d2luZG93UmVjdCgpKTsK
KworICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIGFyZ3VtZW50cyA9IHBhZ2UtPm1haW5G
cmFtZSgpLT5kb2N1bWVudCgpLT52aWV3cG9ydEFyZ3VtZW50cygpOworICAgIFdlYkNvcmU6OlZp
ZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gV2ViQ29yZTo6Y29tcHV0ZVZpZXdwb3J0QXR0
cmlidXRlcyhhcmd1bWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2t0b3BXaWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlUmVjdC53aWR0aCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXZpY2VSZWN0LmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXZpY2VEUEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZVJlY3Quc2l6ZSgpKTsK
KworICAgIFdlYkNvcmU6OnJlc3RyaWN0TWluaW11bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNpemUo
YXR0cmlidXRlcywgYXZhaWxhYmxlUmVjdC5zaXplKCkpOworICAgIFdlYkNvcmU6OnJlc3RyaWN0
U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKGF0dHJpYnV0ZXMpOwor
CisgICAgRXdrX1ZpZXdwb3J0X0F0dHJpYnV0ZXMgZXdrQXR0cmlidXRlczsKKyAgICBld2tBdHRy
aWJ1dGVzLndpZHRoID0gYXR0cmlidXRlcy5sYXlvdXRTaXplLndpZHRoKCk7CisgICAgZXdrQXR0
cmlidXRlcy5oZWlnaHQgPSBhdHRyaWJ1dGVzLmxheW91dFNpemUuaGVpZ2h0KCk7CisgICAgZXdr
QXR0cmlidXRlcy5pbml0aWFsU2NhbGUgPSBhdHRyaWJ1dGVzLmluaXRpYWxTY2FsZTsKKyAgICBl
d2tBdHRyaWJ1dGVzLm1pbmltdW1TY2FsZSA9IGF0dHJpYnV0ZXMubWluaW11bVNjYWxlOworICAg
IGV3a0F0dHJpYnV0ZXMubWF4aW11bVNjYWxlID0gYXR0cmlidXRlcy5tYXhpbXVtU2NhbGU7Cisg
ICAgZXdrQXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvID0gYXR0cmlidXRlcy5kZXZpY2VQaXhl
bFJhdGlvOworICAgIGV3a0F0dHJpYnV0ZXMudXNlclNjYWxhYmxlID0gYXR0cmlidXRlcy51c2Vy
U2NhbGFibGU7CisKKyAgICByZXR1cm4gZXdrQXR0cmlidXRlczsKK30KKworLyoqCisgKiBAaW50
ZXJuYWwKKyAqIFJlcG9ydHMgdGhlIHZpZXdwb3J0IGhhcyBjaGFuZ2VkLgorICoKKyAqIEBwYXJh
bSBhcmd1bWVudHMgdmlld3BvcnQgYXJndW1lbnQuCisgKgorICogRW1pdHMgc2lnbmFsOiAidmll
d3BvcnQsY2hhbmdlZCIgd2l0aCBFd2tfVmlld3BvcnRfQXR0cmlidXRlcyBwYXJhbWV0ZXJzLgor
ICovCit2b2lkIGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX2NoYW5nZWQoRXdrX1ZpZXdwb3J0X1By
aXZhdGVfRGF0YSogcHJpdikKK3sKKyAgICBFd2tfVmlld3BvcnRfQXR0cmlidXRlcyBhdHRyaWJ1
dGVzID0gX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShwcml2KTsKKyAgICBE
QkcoImNvbXB1dGVkIHZpZXdwb3J0IGF0dHJpYnV0ZTogd2lkdGg6JWYsIGhlaWdodDolZiwgaW5p
dGlhbFNjYWxlOiVmLCBtaW5pbXVtU2NhbGU6JWYsIgorICAgICAgICAibWF4aW11bVNjYWxlOiVm
LCBkZXZpY2VQaXhlbFJhdGlvOiVmLCB1c2VyU2NhbGFibGU6JWQiLCBhdHRyaWJ1dGVzLndpZHRo
LCBhdHRyaWJ1dGVzLmhlaWdodCwKKyAgICAgICAgYXR0cmlidXRlcy5pbml0aWFsU2NhbGUsIGF0
dHJpYnV0ZXMubWluaW11bVNjYWxlLCBhdHRyaWJ1dGVzLm1heGltdW1TY2FsZSwgYXR0cmlidXRl
cy5kZXZpY2VQaXhlbFJhdGlvLAorICAgICAgICBzdGF0aWNfY2FzdDxib29sPihhdHRyaWJ1dGVz
LnVzZXJTY2FsYWJsZSkpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChw
cml2LT5ld2tWaWV3LCAidmlld3BvcnQsY2hhbmdlZCIsICZhdHRyaWJ1dGVzKTsKK30KKworLyoq
CisgKiBAaW50ZXJuYWwKKyAqIENyZWF0ZXMgcHJpdmF0ZSBkYXRhIGZvciB2aWV3cG9ydCBhdHRy
aWJ1dGVzLgorICoKKyAqIEBwYXJhbSBld2tWaWV3IHZpZXcgb2JqZWN0LgorICoKKyAqIEByZXR1
cm4gcHJpdmF0ZSBkYXRhIGZvciB2aWV3cG9ydCBhdHRyaWJ1dGVzLgorICovCitFd2tfVmlld3Bv
cnRfUHJpdmF0ZV9EYXRhKiBld2tfdmlld3BvcnRfYXR0cmlidXRlc19uZXcoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCit7CisgICAgQVNTRVJUKGV3a1ZpZXcpOworCisgICAgRXdrX1ZpZXdwb3J0X1By
aXZhdGVfRGF0YSogcHJpdiA9IG5ldyBFd2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRhOworCisgICAg
aWYgKCFwcml2KSB7CisgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgYWxsb2NhdGUgRXdrX1Zp
ZXdwb3J0X1ByaXZhdGVfRGF0YSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBw
cml2LT5ld2tWaWV3ID0gZXdrVmlldzsKKyAgICBwcml2LT5hcmd1bWVudHMud2lkdGggPSBXZWJD
b3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOworICAgIHByaXYtPmFyZ3VtZW50cy5o
ZWlnaHQgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOworICAgIHByaXYt
PmFyZ3VtZW50cy5pbml0aWFsU2NhbGUgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFs
dWVBdXRvOworICAgIHByaXYtPmFyZ3VtZW50cy5taW5pbXVtU2NhbGUgPSBXZWJDb3JlOjpWaWV3
cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOworICAgIHByaXYtPmFyZ3VtZW50cy5tYXhpbXVtU2Nh
bGUgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOworICAgIHByaXYtPmFy
Z3VtZW50cy50YXJnZXREZW5zaXR5RHBpID0gV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZh
bHVlQXV0bzsKKyAgICBwcml2LT5hcmd1bWVudHMudXNlclNjYWxhYmxlID0gdHJ1ZTsKKworICAg
IHJldHVybiBwcml2OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3cG9ydF9hdHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0
X2F0dHJpYnV0ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGQ1NTg5ZWU0MTYwMTBiYTUyYzVjYWQyNzRmYmE5
YjE1OGQzNTAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3cG9ydF9hdHRyaWJ1dGVzLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAgICBDb3B5cmlnaHQg
KEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a192aWV3cG9ydF9h
dHRyaWJ1dGVzX2gKKyNkZWZpbmUgZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfaAorCisjaW5jbHVk
ZSA8RWluYS5oPgorI2luY2x1ZGUgPEV2YXMuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRl
cm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIEBmaWxlICAgIGV3a192aWV3cG9ydF9hdHRyaWJ1
dGVzLmgKKyAqIEBicmllZiAgIFZpZXdwb3J0IE1ldGEgVGFnIGluZm9ybWF0aW9uLgorICoKKyAq
IFRoZSBmb2xsb3dpbmcgc2lnbmFscyAoc2VlIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Fk
ZCgpKSBhcmUgZW1pdHRlZDoKKyAqICAtICJ2aWV3cG9ydCxjaGFuZ2VkIiwgRXdrX1ZpZXdwb3J0
X0F0dHJpYnV0ZXM6IHJlcG9ydHMgdGhhdCB2aWV3cG9ydCB3YXMgY2hhbmdlZC4KKyAqLworCisv
Ly8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19WaWV3cG9ydF9BdHRyaWJ1dGVzLgor
dHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3cG9ydF9BdHRyaWJ1dGVzIEV3a19WaWV3cG9ydF9BdHRy
aWJ1dGVzOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8vIGV3a192
aWV3cG9ydF9hcmd1bWVudHMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlld3BvcnRfYXR0cmlidXRlc19wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y0ZjEzZmE0MmZi
OTRkNTQ0NGZhNWZiMDhhZDljM2ZhZTA5ZTYxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlld3BvcnRfYXR0cmlidXRlc19wcml2YXRlLmgKQEAgLTAsMCAr
MSwzMyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisq
LworCisjaWZuZGVmIGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGVfaAorI2RlZmluZSBl
d2tfdmlld3BvcnRfYXR0cmlidXRlc19wcml2YXRlX2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKwor
Ly8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfVmlld19TbWFydF9EYXRhLgordHlw
ZWRlZiBzdHJ1Y3QgX0V3a19WaWV3cG9ydF9Qcml2YXRlX0RhdGEgRXdrX1ZpZXdwb3J0X1ByaXZh
dGVfRGF0YTsKKworRXdrX1ZpZXdwb3J0X1ByaXZhdGVfRGF0YSogZXdrX3ZpZXdfdmlld3BvcnRf
cHJpdmF0ZV9kYXRhX2dldChFdmFzX09iamVjdCogZXdrVmlldyk7CisKK3ZvaWQgZXdrX3ZpZXdw
b3J0X2F0dHJpYnV0ZXNfY2hhbmdlZChFd2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRhKiBwcml2KTsK
K0V3a19WaWV3cG9ydF9Qcml2YXRlX0RhdGEqIGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX25ldyhF
dmFzX09iamVjdCogZXdrVmlldyk7CisKKyNlbmRpZiAvLyBld2tfdmlld3BvcnRfYXR0cmlidXRl
c19wcml2YXRlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121393</attachid>
            <date>2012-01-05 21:08:22 -0800</date>
            <delta_ts>2012-01-05 21:14:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75592-20120106140822.patch</filename>
            <type>text/plain</type>
            <size>20230</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzOTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZDVkNGI1OWY5
ZmI2MDU0YmUxMGVkNDc0YzNhYzA2MzhmNTA2MDBkMC4uZWNmYTMzM2MxODEzODk0OTNiYjExZjk5
NDNjNzM0YmZjMTI4NTVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEy
LTAxLTAzICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW0VGTF0gTW92ZSB2aWV3cG9ydCBmdW5jdGlvbnMgdG8gbmV3IGZpbGVzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1OTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb28gbWFueSBmdW5jdGlvbnMg
YXJlIGltcGxlbWVudGVkIHRvIGV3a192aWV3LmNwcC4gU28sIGluZGVwZW5kZW50IGZlYXR1cmVz
IG5lZWQgdG8KKyAgICAgICAgYmUgbW92ZWQgdG8gbmV3IGZpbGVzLiBUaGlzIHBhdGNoIG1vdmVz
IEFQSXMgYW5kIGludGVybmFsIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHZpZXdwb3J0IG1ldGEgdGFn
CisgICAgICAgIHRvIG5ldyBmaWxlcy4KKworICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OiBB
ZGQgZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmNwcDogVXNlIGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX2NoYW5nZWQg
ZnVuY3Rpb24gaW5zdGVhZCBvZiBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldCBmdW5j
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6ZGlzcGF0Y2hWaWV3cG9y
dFByb3BlcnRpZXNEaWRDaGFuZ2UpOgorICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6IEFkZCB2aWV3cG9ydCBwcml2YXRlIGRhdGEgdG8gRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhLgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAg
ICAgKGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KToKKyAgICAgICAgKiBld2svZXdr
X3ZpZXcuaDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwOiBBZGRl
ZC4gVGhpcyBmaWxlIGhhcyB2aWV3cG9ydCBhdHRyaWJ1dGVzIHByaXZhdGUgZGF0YSBhbmQgZnVu
Y3Rpb25zIHJlbGF0ZWQgdG8gdmlld3BvcnQuCisgICAgICAgIChfZXdrX3ZpZXdfdmlld3BvcnRf
YXR0cmlidXRlc19jb21wdXRlKToKKyAgICAgICAgKGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX2No
YW5nZWQpOgorICAgICAgICAoZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfbmV3KToKKyAgICAgICAg
KiBld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3
a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGUuaDogQWRkZWQuCisKIDIwMTItMDEtMDIgIEd5
dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBS
ZW1vdmUgd2hpdGVzcGFjZS9kZWNsYXJhdGlvbiBzdHlsZSBleGNlcHRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktpdC9lZmwv
Q01ha2VMaXN0c0VmbC50eHQKaW5kZXggYzVlZjY1NjRmNTQyMWFkZGMyODg3ZWQwYzZhMDk5YjU0
OTEzNTM3MS4uMGY5MTZmYTlhMDhiZjI0ZGE0MDM5Y2I4YjFmNjNhYWI2ZTkyNjQyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTg4LDYgKzg4LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0X1NPVVJDRVMKICAgICBlZmwvZXdrL2V3a190aWxlZF9tb2RlbC5jcHAKICAgICBlZmwv
ZXdrL2V3a191dGlsLmNwcAogICAgIGVmbC9ld2svZXdrX3ZpZXcuY3BwCisgICAgZWZsL2V3ay9l
d2tfdmlld3BvcnRfYXR0cmlidXRlcy5jcHAKICAgICBlZmwvZXdrL2V3a192aWV3X3NpbmdsZS5j
cHAKICAgICBlZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcAogICAgIGVmbC9ld2svZXdrX3dpbmRv
d19mZWF0dXJlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IGEyNWY5ZDBlNDcwOGJiMGFhNTViNGJmNTcyMjgw
Zjk1OTI5OTIwY2MuLmY0YzkyMGIwZWNmY2QzYWMyNjY1OTc1YjZlMjk2NjQwYzZlYTBiYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgi
CiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgor
I2luY2x1ZGUgImV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxF
Y29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KQEAgLTUzMSw3ICs1MzIsNyBAQCB2b2lkIENocm9tZUNsaWVudEVmbDo6bG9hZEljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikKIAogdm9pZCBD
aHJvbWVDbGllbnRFZmw6OmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0
IFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpIGNvbnN0CiB7Ci0gICAgZXdrX3ZpZXdfdmll
d3BvcnRfYXR0cmlidXRlc19zZXQobV92aWV3LCBhcmd1bWVudHMpOworICAgIGV3a192aWV3cG9y
dF9hdHRyaWJ1dGVzX2NoYW5nZWQoZXdrX3ZpZXdfdmlld3BvcnRfcHJpdmF0ZV9kYXRhX2dldCht
X3ZpZXcpKTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnRFZmw6OnNlbGVjdEl0ZW1Xcml0aW5nRGly
ZWN0aW9uSXNOYXR1cmFsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKaW5kZXggYTUz
MDdmMDhkNmYyYjhjZTBkZDAzNzlkNmE0Njk1NjZiYjVkZDQzYS4uYjhkODEyZjAzZGZiNjUxMGRm
Yjk5YWNiZGVkMzYwOGFmNmU2YzMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgK
QEAgLTEzOSw3ICsxMzksNiBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGV3a192
aWV3X2ZyYW1lX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhcwogV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCog
ZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVn
aW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMs
IGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwogCiB2b2lkIGV3a192aWV3X3Bv
cHVwX25ldyhFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBj
bGllbnQsIGludCBzZWxlY3RlZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7Ci12b2lk
IGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBj
b25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzKTsKIAogdm9pZCBld2tf
dmlld19kb3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWQq
IGRvd25sb2FkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggMjhlOWYwYjg5
MTUyZTc3YTA1ZTNkYzc0ZTc3ZjVlYWI2M2Q0MzczNy4uZjIxNDBlNTQ0OGQwNzQ5MzliNTYyZmQw
MTdkNjU2MzhkMDI1YzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC0zMCw3
ICszMCw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEcmFnQ2xp
ZW50RWZsLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50RWZsLmgiCi0jaW5jbHVkZSAiRWZsU2Ny
ZWVuVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRm9j
dXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRFZmwuaCIKQEAgLTUz
LDYgKzUyLDcgQEAKICNpbmNsdWRlICJjX2luc3RhbmNlLmgiCiAjaW5jbHVkZSAiZXdrX2xvZ2dp
bmcuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3cG9ydF9h
dHRyaWJ1dGVzX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVpbmEu
aD4KICNpbmNsdWRlIDxFdmFzLmg+CkBAIC0xMjksOCArMTI5LDggQEAgc3RydWN0IF9Fd2tfVmll
d19Qcml2YXRlX0RhdGEgewogICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2U7CiAgICAgV2ViQ29yZTo6
U2V0dGluZ3MqIHBhZ2VTZXR0aW5nczsKICAgICBXZWJDb3JlOjpGcmFtZSogbWFpbkZyYW1lOwot
ICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzOwogICAgIEV3
a19IaXN0b3J5KiBoaXN0b3J5OworICAgIEV3a19WaWV3cG9ydF9Qcml2YXRlX0RhdGEqIHZpZXdw
b3J0UHJpdmF0ZURhdGE7CiAgICAgc3RydWN0IHsKICAgICAgICAgRXdrX01lbnUgbWVudTsKICAg
ICAgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBtZW51Q2xpZW50OwpAQCAtNjI2LDEzICs2
MjYsNyBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXco
RXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgICAgICBnb3RvIGVycm9yX3NldHRp
bmdzOwogICAgIH0KIAotICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLndpZHRoID0gV2ViQ29y
ZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bzsKLSAgICBwcml2LT52aWV3cG9ydEFyZ3Vt
ZW50cy5oZWlnaHQgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwotICAg
IHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLmluaXRpYWxTY2FsZSA9IFdlYkNvcmU6OlZpZXdwb3J0
QXJndW1lbnRzOjpWYWx1ZUF1dG87Ci0gICAgcHJpdi0+dmlld3BvcnRBcmd1bWVudHMubWluaW11
bVNjYWxlID0gV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bzsKLSAgICBwcml2
LT52aWV3cG9ydEFyZ3VtZW50cy5tYXhpbXVtU2NhbGUgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3Vt
ZW50czo6VmFsdWVBdXRvOwotICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLnRhcmdldERlbnNp
dHlEcGkgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwotICAgIHByaXYt
PnZpZXdwb3J0QXJndW1lbnRzLnVzZXJTY2FsYWJsZSA9IHRydWU7CisgICAgcHJpdi0+dmlld3Bv
cnRQcml2YXRlRGF0YSA9IGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX25ldyhzbWFydERhdGEtPnNl
bGYpOwogCiAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2Fs
bHkodHJ1ZSk7CiAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXREZWZhdWx0VGV4dEVuY29kaW5n
TmFtZSgiaXNvLTg4NTktMSIpOwpAQCAtNzU4LDYgKzc1Miw3IEBAIHN0YXRpYyB2b2lkIF9ld2tf
dmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiAKICAgICBld2tfaGlz
dG9yeV9mcmVlKHByaXYtPmhpc3RvcnkpOwogCisgICAgZGVsZXRlIHByaXYtPnZpZXdwb3J0UHJp
dmF0ZURhdGE7CiAgICAgZGVsZXRlIHByaXYtPnBhZ2U7CiAgICAgZnJlZShwcml2KTsKIH0KQEAg
LTEwODIsMjEgKzEwNzcsNiBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRpb25f
c3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiLCBzbWFydERh
dGEpOwogfQogCi1zdGF0aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tfdmlld192
aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoY29uc3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBw
cml2KQotewotICAgIGludCBkZXNrdG9wV2lkdGggPSA5ODA7Ci0gICAgaW50IGRldmljZURQSSA9
IFdlYkNvcmU6OmdldERQSSgpOwotCi0gICAgV2ViQ29yZTo6SW50UmVjdCBhdmFpbGFibGVSZWN0
ID0gZW5jbG9zaW5nSW50UmVjdChwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBhZ2VS
ZWN0KCkpOwotICAgIFdlYkNvcmU6OkludFJlY3QgZGV2aWNlUmVjdCA9IGVuY2xvc2luZ0ludFJl
Y3QocHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5kb3dSZWN0KCkpOwotCi0gICAg
V2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBXZWJDb3JlOjpjb21wdXRl
Vmlld3BvcnRBdHRyaWJ1dGVzKHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLCBkZXNrdG9wV2lkdGgs
IGRldmljZVJlY3Qud2lkdGgoKSwgZGV2aWNlUmVjdC5oZWlnaHQoKSwgZGV2aWNlRFBJLCBhdmFp
bGFibGVSZWN0LnNpemUoKSk7Ci0gICAgV2ViQ29yZTo6cmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0
b3JUb1ZpZXdwb3J0U2l6ZShhdHRyaWJ1dGVzLCBhdmFpbGFibGVSZWN0LnNpemUoKSk7Ci0gICAg
V2ViQ29yZTo6cmVzdHJpY3RTY2FsZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFi
bGUoYXR0cmlidXRlcyk7Ci0KLSAgICByZXR1cm4gYXR0cmlidXRlczsKLX0KLQogc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZGlzYWJsZV9yZW5kZXIoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc21hcnREYXRhKQogewogICAgIFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNtYXJ0
RGF0YT0lcCIsIHNtYXJ0RGF0YSk7CkBAIC0zNTMzLDQ0ICszNTEzLDYgQEAgdm9pZCBld2tfdmll
d19qc193aW5kb3dfb2JqZWN0X2NsZWFyKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVj
dCogZnJhbWUpCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAi
anMsd2luZG93b2JqZWN0LGNsZWFyIiwgZnJhbWUpOwogfQogCi0vKioKLSAqIEBpbnRlcm5hbAot
ICogUmVwb3J0cyB0aGUgdmlld3BvcnQgaGFzIGNoYW5nZWQuCi0gKgotICogQHBhcmFtIGFyZ3Vt
ZW50cyB2aWV3cG9ydCBhcmd1bWVudC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJ2aWV3cG9ydCxj
aGFuZ2VkIiB3aXRoIG5vIHBhcmFtZXRlcnMuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfdmlld3BvcnRf
YXR0cmlidXRlc19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdlYkNvcmU6OlZpZXdw
b3J0QXJndW1lbnRzJiBhcmd1bWVudHMpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcs
IHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKLQot
ICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzID0gYXJndW1lbnRzOwotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInZpZXdwb3J0LGNoYW5nZWQiLCAwKTsKLX0K
LQotdm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldywgaW50KiB3aWR0aCwgaW50KiBoZWlnaHQsIGZsb2F0KiBpbml0U2NhbGUsIGZs
b2F0KiBtYXhTY2FsZSwgZmxvYXQqIG1pblNjYWxlLCBmbG9hdCogZGV2aWNlUGl4ZWxSYXRpbywg
RWluYV9Cb29sKiB1c2VyU2NhbGFibGUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYpOwotICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1
dGVzID0gX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShwcml2KTsKLQotICAg
IGlmICh3aWR0aCkKLSAgICAgICAgKndpZHRoID0gYXR0cmlidXRlcy5sYXlvdXRTaXplLndpZHRo
KCk7Ci0gICAgaWYgKGhlaWdodCkKLSAgICAgICAgKmhlaWdodCA9IGF0dHJpYnV0ZXMubGF5b3V0
U2l6ZS5oZWlnaHQoKTsKLSAgICBpZiAoaW5pdFNjYWxlKQotICAgICAgICAqaW5pdFNjYWxlID0g
YXR0cmlidXRlcy5pbml0aWFsU2NhbGU7Ci0gICAgaWYgKG1heFNjYWxlKQotICAgICAgICAqbWF4
U2NhbGUgPSBhdHRyaWJ1dGVzLm1heGltdW1TY2FsZTsKLSAgICBpZiAobWluU2NhbGUpCi0gICAg
ICAgICptaW5TY2FsZSA9IGF0dHJpYnV0ZXMubWluaW11bVNjYWxlOwotICAgIGlmIChkZXZpY2VQ
aXhlbFJhdGlvKQotICAgICAgICAqZGV2aWNlUGl4ZWxSYXRpbyA9IGF0dHJpYnV0ZXMuZGV2aWNl
UGl4ZWxSYXRpbzsKLSAgICBpZiAodXNlclNjYWxhYmxlKQotICAgICAgICAqdXNlclNjYWxhYmxl
ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oYXR0cmlidXRlcy51c2VyU2NhbGFibGUpOwotfQogCiBFaW5h
X0Jvb2wgZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0
IG1pblNjYWxlLCBmbG9hdCBtYXhTY2FsZSkKIHsKQEAgLTM4NzUsNiArMzgxNywyMiBAQCB2b2lk
IGV3a192aWV3X21peGVkX2NvbnRlbnRfcnVuX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9v
bCBoYXNSdW4pCiAgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmll
dywgIm1peGVkY29udGVudCxydW4iLCAwKTsKIH0KIAorLyoqCisgKiBAaW50ZXJuYWwKKyAqIEdl
dHMgdmlld3BvcnQgcHJpdmF0ZSBkYXRhIGZyb20gZXdrVmlldydzIHByaXZhdGUgZGF0YS4KKyAq
CisgKiBAcGFyYW0gZXdrVmlldyB2aWV3LgorICoKKyAqIEByZXR1cm4gdmlld3BvcnQgcHJpdmF0
ZSBkYXRhLgorICovCitFd2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRhKiBld2tfdmlld192aWV3cG9y
dF9wcml2YXRlX2RhdGFfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKKyAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKKworICAgIHJldHVybiBwcml2
LT52aWV3cG9ydFByaXZhdGVEYXRhOworfQorCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdmlzaWJpbGl0
eV9zdGF0ZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19QYWdlX1Zpc2liaWxpdHlfU3Rh
dGUgcGFnZVZpc2liaWxpdHlTdGF0ZSwgRWluYV9Cb29sIGluaXRpYWxTdGF0ZSkKIHsKICNpZiBF
TkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXgg
ZDFjNjVlYjRlOWI5YjI1MTdiODdiMzM0OTE3MmZkNGJiNzZhNWVhYi4uZTYwYjYyZDA2YjkyNTM3
N2M5NDFlZDBhNDU4Yjk4MWExNTBhY2Q1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAg
LTIxMjEsMjIgKzIxMjEsNiBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19wYWludChFd2tfVmll
d19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3QgKmNyLCBjb25zdCBFaQogICovCiBFQVBJIEVp
bmFfQm9vbCBld2tfdmlld19wYWludF9jb250ZW50cyhFd2tfVmlld19Qcml2YXRlX0RhdGEgKnBy
aXYsIGNhaXJvX3QgKmNyLCBjb25zdCBFaW5hX1JlY3RhbmdsZSAqYXJlYSk7CiAKLS8qKgotICog
R2V0cyB0aGUgYXR0cmlidXRlcyBvZiB0aGUgdmlld3BvcnQgbWV0YSB0YWcuCi0gKgotICogUHJv
cGVydGllcyBhcmUgcmV0dXJuZWQgaW4gdGhlIHJlc3BlY3RpdmUgcG9pbnRlcnMuIFBhc3Npbmcg
QGMgMCB0byBhbnkgb2YKLSAqIHRoZXNlIHBvaW50ZXJzIHdpbGwgbWFrZSB0aGF0IHByb3BlcnR5
IHRvIG5vdCBiZSByZXR1cm5lZC4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQg
dGhlIHZpZXdwb3J0IGF0dHJpYnV0ZXMKLSAqIEBwYXJhbSB3IHRoZSBwb2ludGVyIHRvIHN0b3Jl
IHRoZSB3aWR0aCBvZiB0aGUgdmlld3BvcnQKLSAqIEBwYXJhbSBoIHRoZSBwb2ludGVyIHRvIHN0
b3JlIHRoZSBoZWlnaHQgb2YgdGhlIHZpZXdwb3J0Ci0gKiBAcGFyYW0gaW5pdF9zY2FsZSB0aGUg
cG9pbnRlciB0byBzdG9yZSB0aGUgaW5pdGlhbCBzY2FsZSB2YWx1ZQotICogQHBhcmFtIG1heF9z
Y2FsZSB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgbWF4aW11bSBzY2FsZSB2YWx1ZQotICogQHBh
cmFtIG1pbl9zY2FsZSB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgbWluaW11bSBzY2FsZSB2YWx1
ZQotICogQHBhcmFtIGRldmljZV9waXhlbF9yYXRpbyB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUg
ZGV2aWNlIHBpeGVsIHJhdGlvIHZhbHVlCi0gKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB0aGUgcG9p
bnRlciB0byBzdG9yZSBpZiB1c2VyIGNhbiBzY2FsZSB2aWV3cG9ydAotICovCi1FQVBJIHZvaWQg
ZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGlu
dCAqdywgaW50ICpoLCBmbG9hdCAqaW5pdF9zY2FsZSwgZmxvYXQgKm1heF9zY2FsZSwgZmxvYXQg
Km1pbl9zY2FsZSwgZmxvYXQgKmRldmljZV9waXhlbF9yYXRpbyAsIEVpbmFfQm9vbCAqdXNlcl9z
Y2FsYWJsZSk7CiAKIC8qKgogICogU2V0cyB0aGUgem9vbSByYW5nZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld3BvcnRfYXR0cmlidXRlcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3
MDc3MzkyMDI0M2VmYWNhMjkwODllZDcxMjBhMzMzZjc0Zjg2YzIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwCkBAIC0w
LDAgKzEsMTM2IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfdmlld3BvcnRfYXR0
cmlidXRlcy5oIgorCisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCisjaW5jbHVkZSAiRWZsU2NyZWVuVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0
LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiZXdr
X2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3
cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxFdmFzLmg+CisKKy8qKgorICog
XHN0cnVjdCAgX0V3a19WaWV3cG9ydF9BdHRyaWJ1dGVzCisgKiBAYnJpZWYgICBDb250YWlucyB0
aGUgdmlld3BvcnQgYXR0cmlidXRlcyBkYXRhLgorICovCitzdHJ1Y3QgX0V3a19WaWV3cG9ydF9B
dHRyaWJ1dGVzIHsKKyAgICBmbG9hdCB3aWR0aDsKKyAgICBmbG9hdCBoZWlnaHQ7CisgICAgZmxv
YXQgaW5pdGlhbFNjYWxlOworICAgIGZsb2F0IG1pbmltdW1TY2FsZTsKKyAgICBmbG9hdCBtYXhp
bXVtU2NhbGU7CisgICAgZmxvYXQgZGV2aWNlUGl4ZWxSYXRpbzsKKyAgICBmbG9hdCB1c2VyU2Nh
bGFibGU7Cit9OworCisvKioKKyAqIEBicmllZiBWaWV3cG9ydCBwcml2YXRlIGRhdGEgdGhhdCBp
cyB1c2VkIGludGVybmFsbHkgYnkgRUZMIFdlYktpdAorICogYW5kIHNob3VsZCBuZXZlciBiZSBt
b2RpZmllZCBmcm9tIG91dHNpZGUuCisgKgorICogQGludGVybmFsCisgKi8KK3N0cnVjdCBfRXdr
X1ZpZXdwb3J0X1ByaXZhdGVfRGF0YSB7CisgICAgRXZhc19PYmplY3QqIGV3a1ZpZXc7CisgICAg
V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMgYXJndW1lbnRzOworfTsKKworc3RhdGljIEV3a19W
aWV3cG9ydF9BdHRyaWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUo
Y29uc3QgRXdrX1ZpZXdwb3J0X1ByaXZhdGVfRGF0YSogcHJpdikKK3sKKyAgICBpbnQgZGVza3Rv
cFdpZHRoID0gOTgwOyAvLyBUaGlzIHZhbHVlIHdvcmtzIHdlbGwgZm9yIG1vc3Qgd2ViIHBhZ2Vz
IGRlc2lnbmVkIGZvciBkZXNrdG9wIGJyb3dzZXJzLgorICAgIGludCBkZXZpY2VEUEkgPSBXZWJD
b3JlOjpnZXREUEkoKTsKKworICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSBFV0tQcml2YXRlOjpj
b3JlUGFnZShwcml2LT5ld2tWaWV3KTsKKworICAgIFdlYkNvcmU6OkludFJlY3QgYXZhaWxhYmxl
UmVjdCA9IFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocGFnZS0+Y2hyb21lKCktPmNsaWVudCgp
LT5wYWdlUmVjdCgpKTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGRldmljZVJlY3QgPSBXZWJDb3Jl
OjplbmNsb3NpbmdJbnRSZWN0KHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+d2luZG93UmVjdCgp
KTsKKworICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIGFyZ3VtZW50cyA9IHBhZ2UtPm1h
aW5GcmFtZSgpLT5kb2N1bWVudCgpLT52aWV3cG9ydEFyZ3VtZW50cygpOworICAgIFdlYkNvcmU6
OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gV2ViQ29yZTo6Y29tcHV0ZVZpZXdwb3J0
QXR0cmlidXRlcyhhcmd1bWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2t0b3BXaWR0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlUmVjdC53aWR0aCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXZpY2VSZWN0LmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXZpY2VEUEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZVJlY3Quc2l6ZSgp
KTsKKworICAgIFdlYkNvcmU6OnJlc3RyaWN0TWluaW11bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNp
emUoYXR0cmlidXRlcywgYXZhaWxhYmxlUmVjdC5zaXplKCkpOworICAgIFdlYkNvcmU6OnJlc3Ry
aWN0U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKGF0dHJpYnV0ZXMp
OworCisgICAgRXdrX1ZpZXdwb3J0X0F0dHJpYnV0ZXMgZXdrQXR0cmlidXRlczsKKyAgICBld2tB
dHRyaWJ1dGVzLndpZHRoID0gYXR0cmlidXRlcy5sYXlvdXRTaXplLndpZHRoKCk7CisgICAgZXdr
QXR0cmlidXRlcy5oZWlnaHQgPSBhdHRyaWJ1dGVzLmxheW91dFNpemUuaGVpZ2h0KCk7CisgICAg
ZXdrQXR0cmlidXRlcy5pbml0aWFsU2NhbGUgPSBhdHRyaWJ1dGVzLmluaXRpYWxTY2FsZTsKKyAg
ICBld2tBdHRyaWJ1dGVzLm1pbmltdW1TY2FsZSA9IGF0dHJpYnV0ZXMubWluaW11bVNjYWxlOwor
ICAgIGV3a0F0dHJpYnV0ZXMubWF4aW11bVNjYWxlID0gYXR0cmlidXRlcy5tYXhpbXVtU2NhbGU7
CisgICAgZXdrQXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvID0gYXR0cmlidXRlcy5kZXZpY2VQ
aXhlbFJhdGlvOworICAgIGV3a0F0dHJpYnV0ZXMudXNlclNjYWxhYmxlID0gYXR0cmlidXRlcy51
c2VyU2NhbGFibGU7CisKKyAgICByZXR1cm4gZXdrQXR0cmlidXRlczsKK30KKworLyoqCisgKiBA
aW50ZXJuYWwKKyAqIFJlcG9ydHMgdGhlIHZpZXdwb3J0IGhhcyBjaGFuZ2VkLgorICoKKyAqIEBw
YXJhbSBhcmd1bWVudHMgdmlld3BvcnQgYXJndW1lbnQuCisgKgorICogRW1pdHMgc2lnbmFsOiAi
dmlld3BvcnQsY2hhbmdlZCIgd2l0aCBFd2tfVmlld3BvcnRfQXR0cmlidXRlcyBwYXJhbWV0ZXJz
LgorICovCit2b2lkIGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX2NoYW5nZWQoRXdrX1ZpZXdwb3J0
X1ByaXZhdGVfRGF0YSogcHJpdikKK3sKKyAgICBFd2tfVmlld3BvcnRfQXR0cmlidXRlcyBhdHRy
aWJ1dGVzID0gX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShwcml2KTsKKyAg
ICBEQkcoImNvbXB1dGVkIHZpZXdwb3J0IGF0dHJpYnV0ZTogd2lkdGg6JWYsIGhlaWdodDolZiwg
aW5pdGlhbFNjYWxlOiVmLCBtaW5pbXVtU2NhbGU6JWYsIgorICAgICAgICAibWF4aW11bVNjYWxl
OiVmLCBkZXZpY2VQaXhlbFJhdGlvOiVmLCB1c2VyU2NhbGFibGU6JWQiLCBhdHRyaWJ1dGVzLndp
ZHRoLCBhdHRyaWJ1dGVzLmhlaWdodCwKKyAgICAgICAgYXR0cmlidXRlcy5pbml0aWFsU2NhbGUs
IGF0dHJpYnV0ZXMubWluaW11bVNjYWxlLCBhdHRyaWJ1dGVzLm1heGltdW1TY2FsZSwgYXR0cmli
dXRlcy5kZXZpY2VQaXhlbFJhdGlvLAorICAgICAgICBzdGF0aWNfY2FzdDxib29sPihhdHRyaWJ1
dGVzLnVzZXJTY2FsYWJsZSkpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChwcml2LT5ld2tWaWV3LCAidmlld3BvcnQsY2hhbmdlZCIsICZhdHRyaWJ1dGVzKTsKK30KKwor
LyoqCisgKiBAaW50ZXJuYWwKKyAqIENyZWF0ZXMgcHJpdmF0ZSBkYXRhIGZvciB2aWV3cG9ydCBh
dHRyaWJ1dGVzLgorICoKKyAqIEBwYXJhbSBld2tWaWV3IHZpZXcgb2JqZWN0LgorICoKKyAqIEBy
ZXR1cm4gcHJpdmF0ZSBkYXRhIGZvciB2aWV3cG9ydCBhdHRyaWJ1dGVzLgorICovCitFd2tfVmll
d3BvcnRfUHJpdmF0ZV9EYXRhKiBld2tfdmlld3BvcnRfYXR0cmlidXRlc19uZXcoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCit7CisgICAgaWYgKCFld2tWaWV3KQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIEV3a19WaWV3cG9ydF9Qcml2YXRlX0RhdGEqIHByaXYgPSBuZXcgRXdrX1ZpZXdwb3J0X1By
aXZhdGVfRGF0YTsKKworICAgIHByaXYtPmV3a1ZpZXcgPSBld2tWaWV3OworICAgIHByaXYtPmFy
Z3VtZW50cy53aWR0aCA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87Cisg
ICAgcHJpdi0+YXJndW1lbnRzLmhlaWdodCA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpW
YWx1ZUF1dG87CisgICAgcHJpdi0+YXJndW1lbnRzLmluaXRpYWxTY2FsZSA9IFdlYkNvcmU6OlZp
ZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CisgICAgcHJpdi0+YXJndW1lbnRzLm1pbmltdW1T
Y2FsZSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CisgICAgcHJpdi0+
YXJndW1lbnRzLm1heGltdW1TY2FsZSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1
ZUF1dG87CisgICAgcHJpdi0+YXJndW1lbnRzLnRhcmdldERlbnNpdHlEcGkgPSBXZWJDb3JlOjpW
aWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOworICAgIHByaXYtPmFyZ3VtZW50cy51c2VyU2Nh
bGFibGUgPSB0cnVlOworCisgICAgcmV0dXJuIHByaXY7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlld3BvcnRfYXR0cmlidXRlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhMDZiYTZjYzVk
ZGQ0ZDRlODVjZGM3ZjU0OTIyNjYzNjIxZGQ0NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuaApAQCAtMCwwICsxLDM4IEBA
CisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNp
Zm5kZWYgZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfaAorI2RlZmluZSBld2tfdmlld3BvcnRfYXR0
cmlidXRlc19oCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwor
LyoqCisgKiBAZmlsZSAgICBld2tfdmlld3BvcnRfYXR0cmlidXRlcy5oCisgKiBAYnJpZWYgICBW
aWV3cG9ydCBNZXRhIFRhZyBpbmZvcm1hdGlvbi4KKyAqLworCisvLy8gQ3JlYXRlcyBhIHR5cGUg
bmFtZSBmb3IgQGEgX0V3a19WaWV3cG9ydF9BdHRyaWJ1dGVzLgordHlwZWRlZiBzdHJ1Y3QgX0V3
a19WaWV3cG9ydF9BdHRyaWJ1dGVzIEV3a19WaWV3cG9ydF9BdHRyaWJ1dGVzOworCisjaWZkZWYg
X19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8vIGV3a192aWV3cG9ydF9hdHRyaWJ1dGVz
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld3BvcnRfYXR0cmli
dXRlc19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0X2F0dHJp
YnV0ZXNfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmNGYxM2ZhNDJmYjk0ZDU0NDRmYTVmYjA4YWQ5
YzNmYWUwOWU2MTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgICAg
Q29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tf
dmlld3BvcnRfYXR0cmlidXRlc19wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3ZpZXdwb3J0X2F0dHJp
YnV0ZXNfcHJpdmF0ZV9oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisKKy8vLyBDcmVhdGVzIGEgdHlw
ZSBuYW1lIGZvciBAYSBfRXdrX1ZpZXdfU21hcnRfRGF0YS4KK3R5cGVkZWYgc3RydWN0IF9Fd2tf
Vmlld3BvcnRfUHJpdmF0ZV9EYXRhIEV3a19WaWV3cG9ydF9Qcml2YXRlX0RhdGE7CisKK0V3a19W
aWV3cG9ydF9Qcml2YXRlX0RhdGEqIGV3a192aWV3X3ZpZXdwb3J0X3ByaXZhdGVfZGF0YV9nZXQo
RXZhc19PYmplY3QqIGV3a1ZpZXcpOworCit2b2lkIGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX2No
YW5nZWQoRXdrX1ZpZXdwb3J0X1ByaXZhdGVfRGF0YSogcHJpdik7CitFd2tfVmlld3BvcnRfUHJp
dmF0ZV9EYXRhKiBld2tfdmlld3BvcnRfYXR0cmlidXRlc19uZXcoRXZhc19PYmplY3QqIGV3a1Zp
ZXcpOworCisjZW5kaWYgLy8gZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfcHJpdmF0ZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121395</attachid>
            <date>2012-01-05 21:14:25 -0800</date>
            <delta_ts>2012-02-07 17:52:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75592-20120106141425.patch</filename>
            <type>text/plain</type>
            <size>20719</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzOTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZDVkNGI1OWY5
ZmI2MDU0YmUxMGVkNDc0YzNhYzA2MzhmNTA2MDBkMC4uZWNmYTMzM2MxODEzODk0OTNiYjExZjk5
NDNjNzM0YmZjMTI4NTVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEy
LTAxLTAzICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW0VGTF0gTW92ZSB2aWV3cG9ydCBmdW5jdGlvbnMgdG8gbmV3IGZpbGVzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1OTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb28gbWFueSBmdW5jdGlvbnMg
YXJlIGltcGxlbWVudGVkIHRvIGV3a192aWV3LmNwcC4gU28sIGluZGVwZW5kZW50IGZlYXR1cmVz
IG5lZWQgdG8KKyAgICAgICAgYmUgbW92ZWQgdG8gbmV3IGZpbGVzLiBUaGlzIHBhdGNoIG1vdmVz
IEFQSXMgYW5kIGludGVybmFsIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHZpZXdwb3J0IG1ldGEgdGFn
CisgICAgICAgIHRvIG5ldyBmaWxlcy4KKworICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OiBB
ZGQgZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmNwcDogVXNlIGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX2NoYW5nZWQg
ZnVuY3Rpb24gaW5zdGVhZCBvZiBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldCBmdW5j
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6ZGlzcGF0Y2hWaWV3cG9y
dFByb3BlcnRpZXNEaWRDaGFuZ2UpOgorICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6IEFkZCB2aWV3cG9ydCBwcml2YXRlIGRhdGEgdG8gRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhLgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAg
ICAgKGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfZ2V0KToKKyAgICAgICAgKiBld2svZXdr
X3ZpZXcuaDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwOiBBZGRl
ZC4gVGhpcyBmaWxlIGhhcyB2aWV3cG9ydCBhdHRyaWJ1dGVzIHByaXZhdGUgZGF0YSBhbmQgZnVu
Y3Rpb25zIHJlbGF0ZWQgdG8gdmlld3BvcnQuCisgICAgICAgIChfZXdrX3ZpZXdfdmlld3BvcnRf
YXR0cmlidXRlc19jb21wdXRlKToKKyAgICAgICAgKGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX2No
YW5nZWQpOgorICAgICAgICAoZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfbmV3KToKKyAgICAgICAg
KiBld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3
a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGUuaDogQWRkZWQuCisKIDIwMTItMDEtMDIgIEd5
dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBS
ZW1vdmUgd2hpdGVzcGFjZS9kZWNsYXJhdGlvbiBzdHlsZSBleGNlcHRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktpdC9lZmwv
Q01ha2VMaXN0c0VmbC50eHQKaW5kZXggYzVlZjY1NjRmNTQyMWFkZGMyODg3ZWQwYzZhMDk5YjU0
OTEzNTM3MS4uMGY5MTZmYTlhMDhiZjI0ZGE0MDM5Y2I4YjFmNjNhYWI2ZTkyNjQyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTg4LDYgKzg4LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0X1NPVVJDRVMKICAgICBlZmwvZXdrL2V3a190aWxlZF9tb2RlbC5jcHAKICAgICBlZmwv
ZXdrL2V3a191dGlsLmNwcAogICAgIGVmbC9ld2svZXdrX3ZpZXcuY3BwCisgICAgZWZsL2V3ay9l
d2tfdmlld3BvcnRfYXR0cmlidXRlcy5jcHAKICAgICBlZmwvZXdrL2V3a192aWV3X3NpbmdsZS5j
cHAKICAgICBlZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcAogICAgIGVmbC9ld2svZXdrX3dpbmRv
d19mZWF0dXJlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IGEyNWY5ZDBlNDcwOGJiMGFhNTViNGJmNTcyMjgw
Zjk1OTI5OTIwY2MuLmY0YzkyMGIwZWNmY2QzYWMyNjY1OTc1YjZlMjk2NjQwYzZlYTBiYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgi
CiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgor
I2luY2x1ZGUgImV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxF
Y29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KQEAgLTUzMSw3ICs1MzIsNyBAQCB2b2lkIENocm9tZUNsaWVudEVmbDo6bG9hZEljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikKIAogdm9pZCBD
aHJvbWVDbGllbnRFZmw6OmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0
IFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpIGNvbnN0CiB7Ci0gICAgZXdrX3ZpZXdfdmll
d3BvcnRfYXR0cmlidXRlc19zZXQobV92aWV3LCBhcmd1bWVudHMpOworICAgIGV3a192aWV3cG9y
dF9hdHRyaWJ1dGVzX2NoYW5nZWQoZXdrX3ZpZXdfdmlld3BvcnRfcHJpdmF0ZV9kYXRhX2dldCht
X3ZpZXcpKTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnRFZmw6OnNlbGVjdEl0ZW1Xcml0aW5nRGly
ZWN0aW9uSXNOYXR1cmFsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKaW5kZXggYTUz
MDdmMDhkNmYyYjhjZTBkZDAzNzlkNmE0Njk1NjZiYjVkZDQzYS4uYjhkODEyZjAzZGZiNjUxMGRm
Yjk5YWNiZGVkMzYwOGFmNmU2YzMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgK
QEAgLTEzOSw3ICsxMzksNiBAQCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGV3a192
aWV3X2ZyYW1lX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhcwogV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCog
ZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVn
aW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMs
IGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwogCiB2b2lkIGV3a192aWV3X3Bv
cHVwX25ldyhFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBj
bGllbnQsIGludCBzZWxlY3RlZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7Ci12b2lk
IGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBj
b25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzKTsKIAogdm9pZCBld2tf
dmlld19kb3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWQq
IGRvd25sb2FkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggMjhlOWYwYjg5
MTUyZTc3YTA1ZTNkYzc0ZTc3ZjVlYWI2M2Q0MzczNy4uZjIxNDBlNTQ0OGQwNzQ5MzliNTYyZmQw
MTdkNjU2MzhkMDI1YzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC0zMCw3
ICszMCw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEcmFnQ2xp
ZW50RWZsLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50RWZsLmgiCi0jaW5jbHVkZSAiRWZsU2Ny
ZWVuVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRm9j
dXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRFZmwuaCIKQEAgLTUz
LDYgKzUyLDcgQEAKICNpbmNsdWRlICJjX2luc3RhbmNlLmgiCiAjaW5jbHVkZSAiZXdrX2xvZ2dp
bmcuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3cG9ydF9h
dHRyaWJ1dGVzX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVpbmEu
aD4KICNpbmNsdWRlIDxFdmFzLmg+CkBAIC0xMjksOCArMTI5LDggQEAgc3RydWN0IF9Fd2tfVmll
d19Qcml2YXRlX0RhdGEgewogICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2U7CiAgICAgV2ViQ29yZTo6
U2V0dGluZ3MqIHBhZ2VTZXR0aW5nczsKICAgICBXZWJDb3JlOjpGcmFtZSogbWFpbkZyYW1lOwot
ICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzOwogICAgIEV3
a19IaXN0b3J5KiBoaXN0b3J5OworICAgIEV3a19WaWV3cG9ydF9Qcml2YXRlX0RhdGEqIHZpZXdw
b3J0UHJpdmF0ZURhdGE7CiAgICAgc3RydWN0IHsKICAgICAgICAgRXdrX01lbnUgbWVudTsKICAg
ICAgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBtZW51Q2xpZW50OwpAQCAtNjI2LDEzICs2
MjYsNyBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXco
RXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgICAgICBnb3RvIGVycm9yX3NldHRp
bmdzOwogICAgIH0KIAotICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLndpZHRoID0gV2ViQ29y
ZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bzsKLSAgICBwcml2LT52aWV3cG9ydEFyZ3Vt
ZW50cy5oZWlnaHQgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwotICAg
IHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLmluaXRpYWxTY2FsZSA9IFdlYkNvcmU6OlZpZXdwb3J0
QXJndW1lbnRzOjpWYWx1ZUF1dG87Ci0gICAgcHJpdi0+dmlld3BvcnRBcmd1bWVudHMubWluaW11
bVNjYWxlID0gV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bzsKLSAgICBwcml2
LT52aWV3cG9ydEFyZ3VtZW50cy5tYXhpbXVtU2NhbGUgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3Vt
ZW50czo6VmFsdWVBdXRvOwotICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLnRhcmdldERlbnNp
dHlEcGkgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwotICAgIHByaXYt
PnZpZXdwb3J0QXJndW1lbnRzLnVzZXJTY2FsYWJsZSA9IHRydWU7CisgICAgcHJpdi0+dmlld3Bv
cnRQcml2YXRlRGF0YSA9IGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX25ldyhzbWFydERhdGEtPnNl
bGYpOwogCiAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2Fs
bHkodHJ1ZSk7CiAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXREZWZhdWx0VGV4dEVuY29kaW5n
TmFtZSgiaXNvLTg4NTktMSIpOwpAQCAtNzU4LDYgKzc1Miw3IEBAIHN0YXRpYyB2b2lkIF9ld2tf
dmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiAKICAgICBld2tfaGlz
dG9yeV9mcmVlKHByaXYtPmhpc3RvcnkpOwogCisgICAgZGVsZXRlIHByaXYtPnZpZXdwb3J0UHJp
dmF0ZURhdGE7CiAgICAgZGVsZXRlIHByaXYtPnBhZ2U7CiAgICAgZnJlZShwcml2KTsKIH0KQEAg
LTEwODIsMjEgKzEwNzcsNiBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfem9vbV9hbmltYXRpb25f
c3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiLCBzbWFydERh
dGEpOwogfQogCi1zdGF0aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tfdmlld192
aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoY29uc3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBw
cml2KQotewotICAgIGludCBkZXNrdG9wV2lkdGggPSA5ODA7Ci0gICAgaW50IGRldmljZURQSSA9
IFdlYkNvcmU6OmdldERQSSgpOwotCi0gICAgV2ViQ29yZTo6SW50UmVjdCBhdmFpbGFibGVSZWN0
ID0gZW5jbG9zaW5nSW50UmVjdChwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBhZ2VS
ZWN0KCkpOwotICAgIFdlYkNvcmU6OkludFJlY3QgZGV2aWNlUmVjdCA9IGVuY2xvc2luZ0ludFJl
Y3QocHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5kb3dSZWN0KCkpOwotCi0gICAg
V2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBXZWJDb3JlOjpjb21wdXRl
Vmlld3BvcnRBdHRyaWJ1dGVzKHByaXYtPnZpZXdwb3J0QXJndW1lbnRzLCBkZXNrdG9wV2lkdGgs
IGRldmljZVJlY3Qud2lkdGgoKSwgZGV2aWNlUmVjdC5oZWlnaHQoKSwgZGV2aWNlRFBJLCBhdmFp
bGFibGVSZWN0LnNpemUoKSk7Ci0gICAgV2ViQ29yZTo6cmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0
b3JUb1ZpZXdwb3J0U2l6ZShhdHRyaWJ1dGVzLCBhdmFpbGFibGVSZWN0LnNpemUoKSk7Ci0gICAg
V2ViQ29yZTo6cmVzdHJpY3RTY2FsZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFi
bGUoYXR0cmlidXRlcyk7Ci0KLSAgICByZXR1cm4gYXR0cmlidXRlczsKLX0KLQogc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZGlzYWJsZV9yZW5kZXIoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc21hcnREYXRhKQogewogICAgIFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNtYXJ0
RGF0YT0lcCIsIHNtYXJ0RGF0YSk7CkBAIC0zNTMzLDQ0ICszNTEzLDYgQEAgdm9pZCBld2tfdmll
d19qc193aW5kb3dfb2JqZWN0X2NsZWFyKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVj
dCogZnJhbWUpCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAi
anMsd2luZG93b2JqZWN0LGNsZWFyIiwgZnJhbWUpOwogfQogCi0vKioKLSAqIEBpbnRlcm5hbAot
ICogUmVwb3J0cyB0aGUgdmlld3BvcnQgaGFzIGNoYW5nZWQuCi0gKgotICogQHBhcmFtIGFyZ3Vt
ZW50cyB2aWV3cG9ydCBhcmd1bWVudC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJ2aWV3cG9ydCxj
aGFuZ2VkIiB3aXRoIG5vIHBhcmFtZXRlcnMuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfdmlld3BvcnRf
YXR0cmlidXRlc19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdlYkNvcmU6OlZpZXdw
b3J0QXJndW1lbnRzJiBhcmd1bWVudHMpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcs
IHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKLQot
ICAgIHByaXYtPnZpZXdwb3J0QXJndW1lbnRzID0gYXJndW1lbnRzOwotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInZpZXdwb3J0LGNoYW5nZWQiLCAwKTsKLX0K
LQotdm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldywgaW50KiB3aWR0aCwgaW50KiBoZWlnaHQsIGZsb2F0KiBpbml0U2NhbGUsIGZs
b2F0KiBtYXhTY2FsZSwgZmxvYXQqIG1pblNjYWxlLCBmbG9hdCogZGV2aWNlUGl4ZWxSYXRpbywg
RWluYV9Cb29sKiB1c2VyU2NhbGFibGUpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYpOwotICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1
dGVzID0gX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShwcml2KTsKLQotICAg
IGlmICh3aWR0aCkKLSAgICAgICAgKndpZHRoID0gYXR0cmlidXRlcy5sYXlvdXRTaXplLndpZHRo
KCk7Ci0gICAgaWYgKGhlaWdodCkKLSAgICAgICAgKmhlaWdodCA9IGF0dHJpYnV0ZXMubGF5b3V0
U2l6ZS5oZWlnaHQoKTsKLSAgICBpZiAoaW5pdFNjYWxlKQotICAgICAgICAqaW5pdFNjYWxlID0g
YXR0cmlidXRlcy5pbml0aWFsU2NhbGU7Ci0gICAgaWYgKG1heFNjYWxlKQotICAgICAgICAqbWF4
U2NhbGUgPSBhdHRyaWJ1dGVzLm1heGltdW1TY2FsZTsKLSAgICBpZiAobWluU2NhbGUpCi0gICAg
ICAgICptaW5TY2FsZSA9IGF0dHJpYnV0ZXMubWluaW11bVNjYWxlOwotICAgIGlmIChkZXZpY2VQ
aXhlbFJhdGlvKQotICAgICAgICAqZGV2aWNlUGl4ZWxSYXRpbyA9IGF0dHJpYnV0ZXMuZGV2aWNl
UGl4ZWxSYXRpbzsKLSAgICBpZiAodXNlclNjYWxhYmxlKQotICAgICAgICAqdXNlclNjYWxhYmxl
ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oYXR0cmlidXRlcy51c2VyU2NhbGFibGUpOwotfQogCiBFaW5h
X0Jvb2wgZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0
IG1pblNjYWxlLCBmbG9hdCBtYXhTY2FsZSkKIHsKQEAgLTM4NzUsNiArMzgxNywyMiBAQCB2b2lk
IGV3a192aWV3X21peGVkX2NvbnRlbnRfcnVuX3NldChFdmFzX09iamVjdCogZXdrVmlldywgYm9v
bCBoYXNSdW4pCiAgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmll
dywgIm1peGVkY29udGVudCxydW4iLCAwKTsKIH0KIAorLyoqCisgKiBAaW50ZXJuYWwKKyAqIEdl
dHMgdmlld3BvcnQgcHJpdmF0ZSBkYXRhIGZyb20gZXdrVmlldydzIHByaXZhdGUgZGF0YS4KKyAq
CisgKiBAcGFyYW0gZXdrVmlldyB2aWV3LgorICoKKyAqIEByZXR1cm4gdmlld3BvcnQgcHJpdmF0
ZSBkYXRhLgorICovCitFd2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRhKiBld2tfdmlld192aWV3cG9y
dF9wcml2YXRlX2RhdGFfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKKyAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKKworICAgIHJldHVybiBwcml2
LT52aWV3cG9ydFByaXZhdGVEYXRhOworfQorCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdmlzaWJpbGl0
eV9zdGF0ZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19QYWdlX1Zpc2liaWxpdHlfU3Rh
dGUgcGFnZVZpc2liaWxpdHlTdGF0ZSwgRWluYV9Cb29sIGluaXRpYWxTdGF0ZSkKIHsKICNpZiBF
TkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXgg
ZDFjNjVlYjRlOWI5YjI1MTdiODdiMzM0OTE3MmZkNGJiNzZhNWVhYi4uMjExNjU4ZDNiYTEzYzUx
Y2E4ZDdlYzZhMGE5MjQ4YzZiNGY3OGU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAg
LTgwLDcgKzgwLDcgQEAKICAqICAtICJ0b29sdGlwLHRleHQsc2V0IiwgY29uc3QgY2hhcio6IHNl
dHMgdG9vbHRpcCB0ZXh0IGFuZCBkaXNwbGF5cyBpZiBpdCBpcyBjdXJyZW50bHkgaGlkZGVuLgog
ICogIC0gInVyaSxjaGFuZ2VkIiwgY29uc3QgY2hhcio6IHVyaSBvZiB0aGUgbWFpbiBmcmFtZSB3
YXMgY2hhbmdlZC4KICAqICAtICJ2aWV3LHJlc2l6ZWQiLCB2b2lkOiB2aWV3IG9iamVjdCdzIHNp
emUgd2FzIGNoYW5nZWQuCi0gKiAgLSAidmlld3BvcnQsY2hhbmdlZCIsIHZvaWQ6IHJlcG9ydHMg
dGhhdCB2aWV3cG9ydCB3YXMgY2hhbmdlZC4KKyAqICAtICJ2aWV3cG9ydCxjaGFuZ2VkIiwgRXdr
X1ZpZXdwb3J0X0F0dHJpYnV0ZXM6IHJlcG9ydHMgdGhhdCB2aWV3cG9ydCBtZXRhIHRhZyB3YXMg
Y2hhbmdlZC4KICAqICAtICJ6b29tLGFuaW1hdGVkLGVuZCIsIHZvaWQ6IHJlcXVlc3RlZCBhbmlt
YXRlZCB6b29tIGlzIGZpbmlzaGVkLgogICovCiAKQEAgLTIxMjEsMjIgKzIxMjEsNiBAQCBFQVBJ
IEVpbmFfQm9vbCBld2tfdmlld19wYWludChFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNh
aXJvX3QgKmNyLCBjb25zdCBFaQogICovCiBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19wYWludF9j
b250ZW50cyhFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYsIGNhaXJvX3QgKmNyLCBjb25zdCBF
aW5hX1JlY3RhbmdsZSAqYXJlYSk7CiAKLS8qKgotICogR2V0cyB0aGUgYXR0cmlidXRlcyBvZiB0
aGUgdmlld3BvcnQgbWV0YSB0YWcuCi0gKgotICogUHJvcGVydGllcyBhcmUgcmV0dXJuZWQgaW4g
dGhlIHJlc3BlY3RpdmUgcG9pbnRlcnMuIFBhc3NpbmcgQGMgMCB0byBhbnkgb2YKLSAqIHRoZXNl
IHBvaW50ZXJzIHdpbGwgbWFrZSB0aGF0IHByb3BlcnR5IHRvIG5vdCBiZSByZXR1cm5lZC4KLSAq
Ci0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIHZpZXdwb3J0IGF0dHJpYnV0ZXMK
LSAqIEBwYXJhbSB3IHRoZSBwb2ludGVyIHRvIHN0b3JlIHRoZSB3aWR0aCBvZiB0aGUgdmlld3Bv
cnQKLSAqIEBwYXJhbSBoIHRoZSBwb2ludGVyIHRvIHN0b3JlIHRoZSBoZWlnaHQgb2YgdGhlIHZp
ZXdwb3J0Ci0gKiBAcGFyYW0gaW5pdF9zY2FsZSB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgaW5p
dGlhbCBzY2FsZSB2YWx1ZQotICogQHBhcmFtIG1heF9zY2FsZSB0aGUgcG9pbnRlciB0byBzdG9y
ZSB0aGUgbWF4aW11bSBzY2FsZSB2YWx1ZQotICogQHBhcmFtIG1pbl9zY2FsZSB0aGUgcG9pbnRl
ciB0byBzdG9yZSB0aGUgbWluaW11bSBzY2FsZSB2YWx1ZQotICogQHBhcmFtIGRldmljZV9waXhl
bF9yYXRpbyB0aGUgcG9pbnRlciB0byBzdG9yZSB0aGUgZGV2aWNlIHBpeGVsIHJhdGlvIHZhbHVl
Ci0gKiBAcGFyYW0gdXNlcl9zY2FsYWJsZSB0aGUgcG9pbnRlciB0byBzdG9yZSBpZiB1c2VyIGNh
biBzY2FsZSB2aWV3cG9ydAotICovCi1FQVBJIHZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmli
dXRlc19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGludCAqdywgaW50ICpoLCBmbG9hdCAqaW5p
dF9zY2FsZSwgZmxvYXQgKm1heF9zY2FsZSwgZmxvYXQgKm1pbl9zY2FsZSwgZmxvYXQgKmRldmlj
ZV9waXhlbF9yYXRpbyAsIEVpbmFfQm9vbCAqdXNlcl9zY2FsYWJsZSk7CiAKIC8qKgogICogU2V0
cyB0aGUgem9vbSByYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlld3BvcnRfYXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdw
b3J0X2F0dHJpYnV0ZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3MDc3MzkyMDI0M2VmYWNhMjkwODllZDcx
MjBhMzMzZjc0Zjg2YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXMuY3BwCkBAIC0wLDAgKzEsMTM2IEBACisvKgorICAgIENv
cHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJld2tfdmlld3BvcnRfYXR0cmlidXRlcy5oIgorCisjaW5jbHVkZSAi
Q2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRWZsU2NyZWVu
VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJl
d2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX3ByaXZhdGUu
aCIKKyNpbmNsdWRlIDxFdmFzLmg+CisKKy8qKgorICogXHN0cnVjdCAgX0V3a19WaWV3cG9ydF9B
dHRyaWJ1dGVzCisgKiBAYnJpZWYgICBDb250YWlucyB0aGUgdmlld3BvcnQgYXR0cmlidXRlcyBk
YXRhLgorICovCitzdHJ1Y3QgX0V3a19WaWV3cG9ydF9BdHRyaWJ1dGVzIHsKKyAgICBmbG9hdCB3
aWR0aDsKKyAgICBmbG9hdCBoZWlnaHQ7CisgICAgZmxvYXQgaW5pdGlhbFNjYWxlOworICAgIGZs
b2F0IG1pbmltdW1TY2FsZTsKKyAgICBmbG9hdCBtYXhpbXVtU2NhbGU7CisgICAgZmxvYXQgZGV2
aWNlUGl4ZWxSYXRpbzsKKyAgICBmbG9hdCB1c2VyU2NhbGFibGU7Cit9OworCisvKioKKyAqIEBi
cmllZiBWaWV3cG9ydCBwcml2YXRlIGRhdGEgdGhhdCBpcyB1c2VkIGludGVybmFsbHkgYnkgRUZM
IFdlYktpdAorICogYW5kIHNob3VsZCBuZXZlciBiZSBtb2RpZmllZCBmcm9tIG91dHNpZGUuCisg
KgorICogQGludGVybmFsCisgKi8KK3N0cnVjdCBfRXdrX1ZpZXdwb3J0X1ByaXZhdGVfRGF0YSB7
CisgICAgRXZhc19PYmplY3QqIGV3a1ZpZXc7CisgICAgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVu
dHMgYXJndW1lbnRzOworfTsKKworc3RhdGljIEV3a19WaWV3cG9ydF9BdHRyaWJ1dGVzIF9ld2tf
dmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoY29uc3QgRXdrX1ZpZXdwb3J0X1ByaXZh
dGVfRGF0YSogcHJpdikKK3sKKyAgICBpbnQgZGVza3RvcFdpZHRoID0gOTgwOyAvLyBUaGlzIHZh
bHVlIHdvcmtzIHdlbGwgZm9yIG1vc3Qgd2ViIHBhZ2VzIGRlc2lnbmVkIGZvciBkZXNrdG9wIGJy
b3dzZXJzLgorICAgIGludCBkZXZpY2VEUEkgPSBXZWJDb3JlOjpnZXREUEkoKTsKKworICAgIFdl
YkNvcmU6OlBhZ2UqIHBhZ2UgPSBFV0tQcml2YXRlOjpjb3JlUGFnZShwcml2LT5ld2tWaWV3KTsK
KworICAgIFdlYkNvcmU6OkludFJlY3QgYXZhaWxhYmxlUmVjdCA9IFdlYkNvcmU6OmVuY2xvc2lu
Z0ludFJlY3QocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5wYWdlUmVjdCgpKTsKKyAgICBXZWJD
b3JlOjpJbnRSZWN0IGRldmljZVJlY3QgPSBXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KHBhZ2Ut
PmNocm9tZSgpLT5jbGllbnQoKS0+d2luZG93UmVjdCgpKTsKKworICAgIFdlYkNvcmU6OlZpZXdw
b3J0QXJndW1lbnRzIGFyZ3VtZW50cyA9IHBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT52
aWV3cG9ydEFyZ3VtZW50cygpOworICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRy
aWJ1dGVzID0gV2ViQ29yZTo6Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyhhcmd1bWVudHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc2t0b3BXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2aWNlUmVjdC53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VSZWN0
LmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VEUEksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGF2YWlsYWJsZVJlY3Quc2l6ZSgpKTsKKworICAgIFdlYkNvcmU6OnJlc3Ry
aWN0TWluaW11bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNpemUoYXR0cmlidXRlcywgYXZhaWxhYmxl
UmVjdC5zaXplKCkpOworICAgIFdlYkNvcmU6OnJlc3RyaWN0U2NhbGVGYWN0b3JUb0luaXRpYWxT
Y2FsZUlmTm90VXNlclNjYWxhYmxlKGF0dHJpYnV0ZXMpOworCisgICAgRXdrX1ZpZXdwb3J0X0F0
dHJpYnV0ZXMgZXdrQXR0cmlidXRlczsKKyAgICBld2tBdHRyaWJ1dGVzLndpZHRoID0gYXR0cmli
dXRlcy5sYXlvdXRTaXplLndpZHRoKCk7CisgICAgZXdrQXR0cmlidXRlcy5oZWlnaHQgPSBhdHRy
aWJ1dGVzLmxheW91dFNpemUuaGVpZ2h0KCk7CisgICAgZXdrQXR0cmlidXRlcy5pbml0aWFsU2Nh
bGUgPSBhdHRyaWJ1dGVzLmluaXRpYWxTY2FsZTsKKyAgICBld2tBdHRyaWJ1dGVzLm1pbmltdW1T
Y2FsZSA9IGF0dHJpYnV0ZXMubWluaW11bVNjYWxlOworICAgIGV3a0F0dHJpYnV0ZXMubWF4aW11
bVNjYWxlID0gYXR0cmlidXRlcy5tYXhpbXVtU2NhbGU7CisgICAgZXdrQXR0cmlidXRlcy5kZXZp
Y2VQaXhlbFJhdGlvID0gYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvOworICAgIGV3a0F0dHJp
YnV0ZXMudXNlclNjYWxhYmxlID0gYXR0cmlidXRlcy51c2VyU2NhbGFibGU7CisKKyAgICByZXR1
cm4gZXdrQXR0cmlidXRlczsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMgdGhl
IHZpZXdwb3J0IGhhcyBjaGFuZ2VkLgorICoKKyAqIEBwYXJhbSBhcmd1bWVudHMgdmlld3BvcnQg
YXJndW1lbnQuCisgKgorICogRW1pdHMgc2lnbmFsOiAidmlld3BvcnQsY2hhbmdlZCIgd2l0aCBF
d2tfVmlld3BvcnRfQXR0cmlidXRlcyBwYXJhbWV0ZXJzLgorICovCit2b2lkIGV3a192aWV3cG9y
dF9hdHRyaWJ1dGVzX2NoYW5nZWQoRXdrX1ZpZXdwb3J0X1ByaXZhdGVfRGF0YSogcHJpdikKK3sK
KyAgICBFd2tfVmlld3BvcnRfQXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gX2V3a192aWV3X3ZpZXdw
b3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShwcml2KTsKKyAgICBEQkcoImNvbXB1dGVkIHZpZXdwb3J0
IGF0dHJpYnV0ZTogd2lkdGg6JWYsIGhlaWdodDolZiwgaW5pdGlhbFNjYWxlOiVmLCBtaW5pbXVt
U2NhbGU6JWYsIgorICAgICAgICAibWF4aW11bVNjYWxlOiVmLCBkZXZpY2VQaXhlbFJhdGlvOiVm
LCB1c2VyU2NhbGFibGU6JWQiLCBhdHRyaWJ1dGVzLndpZHRoLCBhdHRyaWJ1dGVzLmhlaWdodCwK
KyAgICAgICAgYXR0cmlidXRlcy5pbml0aWFsU2NhbGUsIGF0dHJpYnV0ZXMubWluaW11bVNjYWxl
LCBhdHRyaWJ1dGVzLm1heGltdW1TY2FsZSwgYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvLAor
ICAgICAgICBzdGF0aWNfY2FzdDxib29sPihhdHRyaWJ1dGVzLnVzZXJTY2FsYWJsZSkpOworCisg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChwcml2LT5ld2tWaWV3LCAidmlld3Bv
cnQsY2hhbmdlZCIsICZhdHRyaWJ1dGVzKTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIENy
ZWF0ZXMgcHJpdmF0ZSBkYXRhIGZvciB2aWV3cG9ydCBhdHRyaWJ1dGVzLgorICoKKyAqIEBwYXJh
bSBld2tWaWV3IHZpZXcgb2JqZWN0LgorICoKKyAqIEByZXR1cm4gcHJpdmF0ZSBkYXRhIGZvciB2
aWV3cG9ydCBhdHRyaWJ1dGVzLgorICovCitFd2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRhKiBld2tf
dmlld3BvcnRfYXR0cmlidXRlc19uZXcoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgaWYg
KCFld2tWaWV3KQorICAgICAgICByZXR1cm4gMDsKKworICAgIEV3a19WaWV3cG9ydF9Qcml2YXRl
X0RhdGEqIHByaXYgPSBuZXcgRXdrX1ZpZXdwb3J0X1ByaXZhdGVfRGF0YTsKKworICAgIHByaXYt
PmV3a1ZpZXcgPSBld2tWaWV3OworICAgIHByaXYtPmFyZ3VtZW50cy53aWR0aCA9IFdlYkNvcmU6
OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CisgICAgcHJpdi0+YXJndW1lbnRzLmhlaWdo
dCA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CisgICAgcHJpdi0+YXJn
dW1lbnRzLmluaXRpYWxTY2FsZSA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1
dG87CisgICAgcHJpdi0+YXJndW1lbnRzLm1pbmltdW1TY2FsZSA9IFdlYkNvcmU6OlZpZXdwb3J0
QXJndW1lbnRzOjpWYWx1ZUF1dG87CisgICAgcHJpdi0+YXJndW1lbnRzLm1heGltdW1TY2FsZSA9
IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CisgICAgcHJpdi0+YXJndW1l
bnRzLnRhcmdldERlbnNpdHlEcGkgPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVB
dXRvOworICAgIHByaXYtPmFyZ3VtZW50cy51c2VyU2NhbGFibGUgPSB0cnVlOworCisgICAgcmV0
dXJuIHByaXY7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdw
b3J0X2F0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld3BvcnRfYXR0
cmlidXRlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhMDZiYTZjYzVkZGQ0ZDRlODVjZGM3ZjU0OTIyNjYzNjIx
ZGQ0NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdw
b3J0X2F0dHJpYnV0ZXMuaApAQCAtMCwwICsxLDM4IEBACisvKgorICAgIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX3ZpZXdwb3J0X2F0dHJp
YnV0ZXNfaAorI2RlZmluZSBld2tfdmlld3BvcnRfYXR0cmlidXRlc19oCisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBAZmlsZSAgICBld2tfdmll
d3BvcnRfYXR0cmlidXRlcy5oCisgKiBAYnJpZWYgICBWaWV3cG9ydCBNZXRhIFRhZyBpbmZvcm1h
dGlvbi4KKyAqLworCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19WaWV3cG9y
dF9BdHRyaWJ1dGVzLgordHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3cG9ydF9BdHRyaWJ1dGVzIEV3
a19WaWV3cG9ydF9BdHRyaWJ1dGVzOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgor
I2VuZGlmIC8vIGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlld3BvcnRfYXR0cmlidXRlc19wcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfcHJpdmF0ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNmNGYxM2ZhNDJmYjk0ZDU0NDRmYTVmYjA4YWQ5YzNmYWUwOWU2MTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfcHJp
dmF0ZS5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1
bmcgRWxlY3Ryb25pY3MuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfdmlld3BvcnRfYXR0cmlidXRlc19wcml2
YXRlX2gKKyNkZWZpbmUgZXdrX3ZpZXdwb3J0X2F0dHJpYnV0ZXNfcHJpdmF0ZV9oCisKKyNpbmNs
dWRlIDxFdmFzLmg+CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBfRXdrX1ZpZXdf
U21hcnRfRGF0YS4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRhIEV3
a19WaWV3cG9ydF9Qcml2YXRlX0RhdGE7CisKK0V3a19WaWV3cG9ydF9Qcml2YXRlX0RhdGEqIGV3
a192aWV3X3ZpZXdwb3J0X3ByaXZhdGVfZGF0YV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwor
Cit2b2lkIGV3a192aWV3cG9ydF9hdHRyaWJ1dGVzX2NoYW5nZWQoRXdrX1ZpZXdwb3J0X1ByaXZh
dGVfRGF0YSogcHJpdik7CitFd2tfVmlld3BvcnRfUHJpdmF0ZV9EYXRhKiBld2tfdmlld3BvcnRf
YXR0cmlidXRlc19uZXcoRXZhc19PYmplY3QqIGV3a1ZpZXcpOworCisjZW5kaWYgLy8gZXdrX3Zp
ZXdwb3J0X2F0dHJpYnV0ZXNfcHJpdmF0ZV9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>