<?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>84124</bug_id>
          
          <creation_ts>2012-04-16 20:25:31 -0700</creation_ts>
          <short_desc>[EFL][WK2] Add and refactor ewk API in order to support MiniBrowser without WK API.</short_desc>
          <delta_ts>2012-06-10 07:21:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>87923</dependson>
          <blocked>61838</blocked>
    
    <blocked>61850</blocked>
    
    <blocked>88207</blocked>
    
    <blocked>88631</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryuan Choi">ryuan.choi</reporter>
          <assigned_to name="Ryuan Choi">ryuan.choi</assigned_to>
          <cc>cshu</cc>
    
    <cc>enmi.lee</cc>
    
    <cc>g.czajkowski</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>603743</commentid>
    <comment_count>0</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-04-16 20:25:31 -0700</bug_when>
    <thetext>As commented little at Bug 61850 (#38), exporting an API looks better like other WebKit2/Gtk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635863</commentid>
    <comment_count>1</comment_count>
      <attachid>144514</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-05-29 04:30:17 -0700</bug_when>
    <thetext>Created attachment 144514
WIP:minimum</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636110</commentid>
    <comment_count>2</comment_count>
      <attachid>144514</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-05-29 09:33:10 -0700</bug_when>
    <thetext>Comment on attachment 144514
WIP:minimum

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

It looks this patch is to support basic functionality. However, I think this bug doesn&apos;t have clear purpose. I think you need to modify that this patch can be reviewed more easily.

&gt; Source/WebKit2/ChangeLog:3
&gt; +        [EFL][WK2] Export an API similar to WebKit1

Personally, I don&apos;t like this bug title because this title doesn&apos;t represent this patch well. In addition, it seems to me this patch mixes multiple patches. I think it would good to modify bug title or divide this patch into more smaller ones.

&gt; Source/WebKit2/ChangeLog:10
&gt; +        In addition, make them installable.

It looks you need to write more descriptions for this patch.

&gt; Source/WebKit2/Shared/API/c/WKBase.h:44
&gt; +#if defined(WTF_PLATFORM_EFL)

I like to use #if PLATFORM(EFL) instead above style. It looks other WK2 ports also use this style

&gt; Source/WebKit2/UIProcess/API/C/WKAPICast.h:367
&gt; +#if defined(WTF_PLATFORM_EFL)

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_private.h:41
&gt; +WebKit::WebPageProxy* ewkViewGetPage(Evas_Object* ewkView);

Do you decide WebKit function name style for private functions ? If not so, you have to modify this function as below,

ewk_view_base_add(...), ewk_view_page_get(...)

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:492
&gt; +/* private */

It looks this comment style is not proper for EFL port.  Please remove this comment or use doxygen style.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:524
&gt; +/* public */

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:126
&gt; +EAPI Evas_Object* ewk_view_add(Evas* e);

As you know, we are using efl coding style for Webkit1&apos;s public APIs. If this is public APIs, it looks this need to be adjusted by our WebKit-EFL coding style as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636524</commentid>
    <comment_count>3</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-05-29 16:14:36 -0700</bug_when>
    <thetext>Thanks for your comment.

(In reply to comment #2)
&gt; (From update of attachment 144514 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144514&amp;action=review
&gt; 
&gt; It looks this patch is to support basic functionality. However, I think this bug doesn&apos;t have clear purpose. I think you need to modify that this patch can be reviewed more easily.


OK, I will try to seperate this and apply your other comments.

&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:3
&gt; &gt; +        [EFL][WK2] Export an API similar to WebKit1
&gt; 
&gt; Personally, I don&apos;t like this bug title because this title doesn&apos;t represent this patch well. In addition, it seems to me this patch mixes multiple patches. I think it would good to modify bug title or divide this patch into more smaller ones.
&gt; 

OK, I want to use this bug as meta bug and make another for this patch.

&gt; &gt; Source/WebKit2/Shared/API/c/WKBase.h:44
&gt; &gt; +#if defined(WTF_PLATFORM_EFL)
&gt; 
&gt; I like to use #if PLATFORM(EFL) instead above style. It looks other WK2 ports also use this style
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/WKAPICast.h:367
&gt; &gt; +#if defined(WTF_PLATFORM_EFL)
&gt; 
&gt; ditto.

It should be as-is, because they don&apos;t know Platform.h

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_private.h:41
&gt; &gt; +WebKit::WebPageProxy* ewkViewGetPage(Evas_Object* ewkView);
&gt; 
&gt; Do you decide WebKit function name style for private functions ? If not so, you have to modify this function as below,

Yes, It&apos;s not decided yet. I will change them like WebKit/efl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637885</commentid>
    <comment_count>4</comment_count>
      <attachid>144963</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-05-30 18:06:44 -0700</bug_when>
    <thetext>Created attachment 144963
WIP:minimalized</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637901</commentid>
    <comment_count>5</comment_count>
      <attachid>144963</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-05-30 18:22:55 -0700</bug_when>
    <thetext>Comment on attachment 144963
WIP:minimalized

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_private.h:35
&gt; +WKContextRef ewk_context_WKContext_get(Ewk_Context*);

As you may know, EFL WK1 divided up into each file&apos;s private files. For exmaple, ewk_contextmenu_private.h, ewk_history_private.h. In addition, WK2 GTK port also has similar structure.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:41
&gt; +

It looks this is unneeded line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638267</commentid>
    <comment_count>6</comment_count>
      <attachid>145059</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-05-31 05:22:40 -0700</bug_when>
    <thetext>Created attachment 145059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638271</commentid>
    <comment_count>7</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-05-31 05:26:11 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 144963 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144963&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_private.h:35
&gt; &gt; +WKContextRef ewk_context_WKContext_get(Ewk_Context*);
&gt; 
&gt; As you may know, EFL WK1 divided up into each file&apos;s private files. For exmaple, ewk_contextmenu_private.h, ewk_history_private.h. In addition, WK2 GTK port also has similar structure.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:41
&gt; &gt; +
&gt; 
&gt; It looks this is unneeded line.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638863</commentid>
    <comment_count>8</comment_count>
      <attachid>145059</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-05-31 18:04:26 -0700</bug_when>
    <thetext>Comment on attachment 145059
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:129
&gt; + * Creates a new EFL WebKit View object.

View -&gt; view.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:141
&gt; + * @param o view object to load @a uri

uri -&gt; URI.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:149
&gt; + * Returns the current uri string of page.

uri -&gt; URI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639008</commentid>
    <comment_count>9</comment_count>
      <attachid>145220</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-05-31 23:52:10 -0700</bug_when>
    <thetext>Created attachment 145220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639013</commentid>
    <comment_count>10</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-05-31 23:57:26 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 145059 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145059&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:129
&gt; &gt; + * Creates a new EFL WebKit View object.
&gt; 
&gt; View -&gt; view.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:141
&gt; &gt; + * @param o view object to load @a uri
&gt; 
&gt; uri -&gt; URI.

Thanks.

I change little bit more like webkit/efl.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:149
&gt; &gt; + * Returns the current uri string of page.
&gt; 
&gt; uri -&gt; URI.

I am not sure. it is same as webkit/efl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639026</commentid>
    <comment_count>11</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-01 00:14:31 -0700</bug_when>
    <thetext>(In reply to comment #10)

&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:149
&gt; &gt; &gt; + * Returns the current uri string of page.
&gt; &gt; 
&gt; &gt; uri -&gt; URI.
&gt; 
&gt; I am not sure. it is same as webkit/efl.

uri is abbreviation for Uniform Resource Identifier. As far as I know, we need to use uppercase for abbreviation in comment.

Looks at below links.

- http://trac.webkit.org/browser/trunk/Source/WebKit/gtk/webkit/webkitwebframe.cpp#L600 

- http://trac.webkit.org/browser/trunk/Source/WebKit/efl/ewk/ewk_view.h#L724
- http://trac.webkit.org/browser/trunk/Source/WebKit/efl/ewk/ewk_view.h#L2566
- http://trac.webkit.org/browser/trunk/Source/WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp#L174
- http://trac.webkit.org/browser/trunk/Source/WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp#L213

If WebKit1 EFL have mixed to use uppercase / lowercase, I think we need to modify it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639035</commentid>
    <comment_count>12</comment_count>
      <attachid>145226</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-01 00:23:15 -0700</bug_when>
    <thetext>Created attachment 145226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639038</commentid>
    <comment_count>13</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-01 00:24:28 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:149
&gt; &gt; &gt; &gt; + * Returns the current uri string of page.
&gt; &gt; &gt; 
&gt; &gt; &gt; uri -&gt; URI.
&gt; &gt; 
&gt; &gt; I am not sure. it is same as webkit/efl.
&gt; 
&gt; uri is abbreviation for Uniform Resource Identifier. As far as I know, we need to use uppercase for abbreviation in comment.
&gt; 
&gt; Looks at below links.
&gt; 
&gt; - http://trac.webkit.org/browser/trunk/Source/WebKit/gtk/webkit/webkitwebframe.cpp#L600 
&gt; 
&gt; - http://trac.webkit.org/browser/trunk/Source/WebKit/efl/ewk/ewk_view.h#L724
&gt; - http://trac.webkit.org/browser/trunk/Source/WebKit/efl/ewk/ewk_view.h#L2566
&gt; - http://trac.webkit.org/browser/trunk/Source/WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp#L174
&gt; - http://trac.webkit.org/browser/trunk/Source/WebKit2/UIProcess/API/gtk/WebKitHitTestResult.cpp#L213
&gt; 
&gt; If WebKit1 EFL have mixed to use uppercase / lowercase, I think we need to modify it.

OK, I fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639047</commentid>
    <comment_count>14</comment_count>
      <attachid>145226</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-06-01 00:36:58 -0700</bug_when>
    <thetext>Comment on attachment 145226
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EWebKit2.h:20
&gt; +

Please add @file and @brief tags.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:37
&gt; +    defaultContext.context = WKContextGetSharedProcessContext();

If someone calls ewk_context_default_get() few times this assignment will be repeated too. It doesn&apos;t make sense especially if WKContextGetSharedProcessContext() returns the same pointer.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:41
&gt; +WKContextRef ewk_context_WKContext_get(Ewk_Context* ewkContext)

Please add const modifier to parameter.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:20
&gt; +

Please add @file and @brief tags.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:30
&gt; +typedef struct _Ewk_Context Ewk_Context;

Please add docs.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:32
&gt; +EAPI Ewk_Context *ewk_context_default_get();

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_private.h:28
&gt; +WKContextRef ewk_context_WKContext_get(Ewk_Context*);

Please add const modifier.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:269
&gt; +

I think this line is unnecessary.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:271
&gt; +

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:497
&gt; +Evas_Object* ewk_view_add_with_context(Evas* canvas, Ewk_Context* context)

ewk_view_add_with_context -&gt; ewk_view_with_context_add doesn&apos;t sound better ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:25
&gt;  

Can you add @file and @brief tags here too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640269</commentid>
    <comment_count>15</comment_count>
      <attachid>145504</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-03 19:37:09 -0700</bug_when>
    <thetext>Created attachment 145504
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640276</commentid>
    <comment_count>16</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-03 19:44:46 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 145226 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145226&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EWebKit2.h:20
&gt; &gt; +
&gt; 
&gt; Please add @file and @brief tags.
&gt; 
Thank you.
I tried to fix and add comments which you commented without below.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:37
&gt; &gt; +    defaultContext.context = WKContextGetSharedProcessContext();
&gt; 
&gt; If someone calls ewk_context_default_get() few times this assignment will be repeated too. It doesn&apos;t make sense especially if WKContextGetSharedProcessContext() returns the same pointer.
&gt; 

ewk_context_default_get only calls createDefaultWebContext to initialize static variable.
So, I believe that WKContextGetSharedProcessContext will be called only one time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640279</commentid>
    <comment_count>17</comment_count>
      <attachid>145504</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-03 19:54:17 -0700</bug_when>
    <thetext>Comment on attachment 145504
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:34
&gt; +static Ewk_Context* createDefaultWebContext()

I think it is better to add a comment that this function returns same context object.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:43
&gt; + * Get default Ewk_Context instance.

Get? Gets? I&apos;m not sure which one is correct. But, in a rough way, EFL APIs have used to add *s* until now.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:146
&gt; + * Asks the object to load the given uri.

uri -&gt; URI ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:148
&gt; + * @param o view object to load @a uri

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:156
&gt; + * Returns the current uri string of view object.

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:161
&gt; + * @param o view object to get current uri

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:163
&gt; + * @return current uri on success or @c 0 on failure

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640288</commentid>
    <comment_count>18</comment_count>
      <attachid>145510</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-03 20:18:50 -0700</bug_when>
    <thetext>Created attachment 145510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640289</commentid>
    <comment_count>19</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-03 20:21:40 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 145504 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145504&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:34
&gt; &gt; +static Ewk_Context* createDefaultWebContext()
&gt; 
&gt; I think it is better to add a comment that this function returns same context object.
&gt; 
I changed this internal function name as more descritive.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:43
&gt; &gt; + * Get default Ewk_Context instance.
&gt; 
&gt; Get? Gets? I&apos;m not sure which one is correct. But, in a rough way, EFL APIs have used to add *s* until now.
&gt; 
Done.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:146
&gt; &gt; + * Asks the object to load the given uri.
&gt; 
&gt; uri -&gt; URI ?
&gt; 
Oop sorry, I lost this changes. fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640371</commentid>
    <comment_count>20</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2012-06-04 00:23:42 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 145226 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145226&amp;action=review
&gt; 

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:497
&gt; &gt; +Evas_Object* ewk_view_add_with_context(Evas* canvas, Ewk_Context* context)
&gt; 
&gt; ewk_view_add_with_context -&gt; ewk_view_with_context_add doesn&apos;t sound better ?

In my opinion, ewk_view_add_with_context() is better.

I&apos;ve found some examples from WebKit1 APIs and most APIs have a preposition at the end of the name.
- ewk_history_forward_list_get_with_limit()
- ewk_frame_view_create_for_view()
- ewk_window_features_new_from_core()
- ewk_security_origin_new_from_string()

So, I think it is better to add preposition at the end of the function name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640381</commentid>
    <comment_count>21</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2012-06-04 00:49:26 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #14)
&gt; &gt; (From update of attachment 145226 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145226&amp;action=review
&gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:37
&gt; &gt; &gt; +    defaultContext.context = WKContextGetSharedProcessContext();
&gt; &gt; 
&gt; &gt; If someone calls ewk_context_default_get() few times this assignment will be repeated too. It doesn&apos;t make sense especially if WKContextGetSharedProcessContext() returns the same pointer.
&gt; &gt; 
&gt; 
&gt; ewk_context_default_get only calls createDefaultWebContext to initialize static variable.
&gt; So, I believe that WKContextGetSharedProcessContext will be called only one time.

Yes, but if ewk_context_default_get() is called in the other function, the assignment will be repeated.

How about adding a constructor for _Ewk_Context which has a WKContextRef as a parameter?
The defaultContext.context&apos;s assignment can be replaced with constructor&apos;s parameter, and defaultcontext.context will be set only one time.

Additionally, below static variable also can be changed to local variable.
 46Ewk_Context* ewk_context_default_get()
 47{
 48    static Ewk_Context* context = _ewk_context_default_get();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641127</commentid>
    <comment_count>22</comment_count>
      <attachid>145682</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-04 19:36:51 -0700</bug_when>
    <thetext>Created attachment 145682
eunmi&apos;s suggestion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641128</commentid>
    <comment_count>23</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-04 19:42:31 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #14)
&gt; &gt; (From update of attachment 145226 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145226&amp;action=review
&gt; &gt; 
&gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:497
&gt; &gt; &gt; +Evas_Object* ewk_view_add_with_context(Evas* canvas, Ewk_Context* context)
&gt; &gt; 
&gt; &gt; ewk_view_add_with_context -&gt; ewk_view_with_context_add doesn&apos;t sound better ?
&gt; 
&gt; In my opinion, ewk_view_add_with_context() is better.
&gt; 
&gt; I&apos;ve found some examples from WebKit1 APIs and most APIs have a preposition at the end of the name.
&gt; - ewk_history_forward_list_get_with_limit()
&gt; - ewk_frame_view_create_for_view()
&gt; - ewk_window_features_new_from_core()
&gt; - ewk_security_origin_new_from_string()
&gt; 
&gt; So, I think it is better to add preposition at the end of the function name.

Thank you.
I don&apos;t have an opinion about both, but I preferred consistency.
Grzegorz, could you give me your opinion?

(In reply to comment #21)
&gt; Yes, but if ewk_context_default_get() is called in the other function, the assignment will be repeated.
&gt; 
&gt; How about adding a constructor for _Ewk_Context which has a WKContextRef as a parameter?
&gt; The defaultContext.context&apos;s assignment can be replaced with constructor&apos;s parameter, and defaultcontext.context will be set only one time.
&gt; 
&gt; Additionally, below static variable also can be changed to local variable.
&gt;  46Ewk_Context* ewk_context_default_get()
&gt;  47{
&gt;  48    static Ewk_Context* context = _ewk_context_default_get();

I tried like what you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641138</commentid>
    <comment_count>24</comment_count>
      <attachid>145682</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-04 20:23:07 -0700</bug_when>
    <thetext>Comment on attachment 145682
eunmi&apos;s suggestion

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

&gt; Source/WebKit2/UIProcess/API/efl/EWebKit2.h:18
&gt; + *

Style nit : Unneeded line.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:18
&gt; + *

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:18
&gt; + *

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_private.h:18
&gt; + *

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641186</commentid>
    <comment_count>25</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2012-06-04 22:02:51 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #20)
&gt; &gt; (In reply to comment #14)
&gt; &gt; &gt; (From update of attachment 145226 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145226&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:497
&gt; &gt; &gt; &gt; +Evas_Object* ewk_view_add_with_context(Evas* canvas, Ewk_Context* context)
&gt; &gt; &gt; 
&gt; &gt; &gt; ewk_view_add_with_context -&gt; ewk_view_with_context_add doesn&apos;t sound better ?
&gt; &gt; 
&gt; &gt; In my opinion, ewk_view_add_with_context() is better.
&gt; &gt; 
&gt; &gt; I&apos;ve found some examples from WebKit1 APIs and most APIs have a preposition at the end of the name.
&gt; &gt; - ewk_history_forward_list_get_with_limit()
&gt; &gt; - ewk_frame_view_create_for_view()
&gt; &gt; - ewk_window_features_new_from_core()
&gt; &gt; - ewk_security_origin_new_from_string()
&gt; &gt; 
&gt; &gt; So, I think it is better to add preposition at the end of the function name.
&gt; 
&gt; Thank you.
&gt; I don&apos;t have an opinion about both, but I preferred consistency.
&gt; Grzegorz, could you give me your opinion?
&gt; 
&gt; (In reply to comment #21)
&gt; &gt; Yes, but if ewk_context_default_get() is called in the other function, the assignment will be repeated.
&gt; &gt; 
&gt; &gt; How about adding a constructor for _Ewk_Context which has a WKContextRef as a parameter?
&gt; &gt; The defaultContext.context&apos;s assignment can be replaced with constructor&apos;s parameter, and defaultcontext.context will be set only one time.
&gt; &gt; 
&gt; &gt; Additionally, below static variable also can be changed to local variable.
&gt; &gt;  46Ewk_Context* ewk_context_default_get()
&gt; &gt;  47{
&gt; &gt;  48    static Ewk_Context* context = _ewk_context_default_get();
&gt; 
&gt; I tried like what you want.

LGTM :)
and I also want to listen Grzegorz&apos;s opinion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641226</commentid>
    <comment_count>26</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-06-04 23:54:30 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #20)
&gt; &gt; (In reply to comment #14)
&gt; &gt; &gt; (From update of attachment 145226 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145226&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:497
&gt; &gt; &gt; &gt; +Evas_Object* ewk_view_add_with_context(Evas* canvas, Ewk_Context* context)
&gt; &gt; &gt; 
&gt; &gt; &gt; ewk_view_add_with_context -&gt; ewk_view_with_context_add doesn&apos;t sound better ?
&gt; &gt; 
&gt; &gt; In my opinion, ewk_view_add_with_context() is better.
&gt; &gt; 
&gt; &gt; I&apos;ve found some examples from WebKit1 APIs and most APIs have a preposition at the end of the name.
&gt; &gt; - ewk_history_forward_list_get_with_limit()
&gt; &gt; - ewk_frame_view_create_for_view()
&gt; &gt; - ewk_window_features_new_from_core()
&gt; &gt; - ewk_security_origin_new_from_string()
&gt; &gt; 
&gt; &gt; So, I think it is better to add preposition at the end of the function name.
&gt; 
&gt; Thank you.
&gt; I don&apos;t have an opinion about both, but I preferred consistency.
&gt; Grzegorz, could you give me your opinion?
&gt; 

Thanks Eunmi for your information and examples. WebKit-EFL tends to keep verb at the end of function name so the most API has suffix *_set *_get _add etc. But if you prefer ewk_view_add_with_context I don&apos;t mind :)


&gt; (In reply to comment #21)
&gt; &gt; Yes, but if ewk_context_default_get() is called in the other function, the assignment will be repeated.
&gt; &gt; 
&gt; &gt; How about adding a constructor for _Ewk_Context which has a WKContextRef as a parameter?
&gt; &gt; The defaultContext.context&apos;s assignment can be replaced with constructor&apos;s parameter, and defaultcontext.context will be set only one time.
&gt; &gt; 
&gt; &gt; Additionally, below static variable also can be changed to local variable.
&gt; &gt;  46Ewk_Context* ewk_context_default_get()
&gt; &gt;  47{
&gt; &gt;  48    static Ewk_Context* context = _ewk_context_default_get();
&gt; 
&gt; I tried like what you want.

ewk_context_default_get has been added to API so application can call it many times. I think adding constructor to structure is something new for WebKit-EFL but if you prefer that way we can try to contribute it.
It looks like ewk_context_default_get() is responsible for getting Ewk_Context object but it is created when ewk_context_default_get is called first time. We can just add additional private function responsible for initialization of Ewk_Context object for example:


static void ewkContextInitialize(Ewk_Context* context)
{
   static Eina_Bool didInitializeContext = false;
   if (didInitializeContext)
        return;
   
   // Initialize context to default values.
 
   didInitializeContext = true;
}

static Ewk_Context* ewk_context_default_get()
{
    DEFINE_STATIC_LOCAL(Ewk_Context, defaultContext (WKContextGetSharedProcessContext()));
    ewkContextInitialize(&amp;defaultContext);
    return &amp;defaultContext; 
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641239</commentid>
    <comment_count>27</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-05 00:18:58 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; ewk_context_default_get has been added to API so application can call it many times. I think adding constructor to structure is something new for WebKit-EFL but if you prefer that way we can try to contribute it.
&gt; It looks like ewk_context_default_get() is responsible for getting Ewk_Context object but it is created when ewk_context_default_get is called first time. We can just add additional private function responsible for initialization of Ewk_Context object for example:
&gt; 
&gt; 
&gt; static void ewkContextInitialize(Ewk_Context* context)
&gt; {
&gt;    static Eina_Bool didInitializeContext = false;
&gt;    if (didInitializeContext)
&gt;         return;
&gt; 
&gt;    // Initialize context to default values.
&gt; 
&gt;    didInitializeContext = true;
&gt; }
&gt; 
&gt; static Ewk_Context* ewk_context_default_get()
&gt; {
&gt;     DEFINE_STATIC_LOCAL(Ewk_Context, defaultContext (WKContextGetSharedProcessContext()));
&gt;     ewkContextInitialize(&amp;defaultContext);
&gt;     return &amp;defaultContext; 
&gt; }

I understood your point.
But I think that it is not required, at least now.

When we add features of ewk_context,
I will consider to add it if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641493</commentid>
    <comment_count>28</comment_count>
      <attachid>145780</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-05 06:47:46 -0700</bug_when>
    <thetext>Created attachment 145780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641495</commentid>
    <comment_count>29</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-05 06:51:55 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 145682 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145682&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EWebKit2.h:18
&gt; &gt; + *
&gt; 
&gt; Style nit : Unneeded line.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_context.cpp:18
&gt; &gt; + *
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:18
&gt; &gt; + *
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_context_private.h:18
&gt; &gt; + *
&gt; 
&gt; ditto.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643213</commentid>
    <comment_count>30</comment_count>
      <attachid>145780</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-06 22:22:12 -0700</bug_when>
    <thetext>Comment on attachment 145780
Patch

Looks good to me now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645125</commentid>
    <comment_count>31</comment_count>
      <attachid>145780</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2012-06-08 16:35:38 -0700</bug_when>
    <thetext>Comment on attachment 145780
Patch

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

&gt; Source/WebKit2/ChangeLog:9
&gt; +        instead of the WK API.

I don&apos;t really understand why WebKIt2 API is considered higher than WK API. I thought a platform-dependent WebKit2 API sometimes takes the advantage of the platform infrastructure or using Cpp-style rather than the plain C-style WK API.

&gt; Source/WebKit2/ChangeLog:10
&gt; +        This patch provide the minimum to support MiniBrowser.

provide -&gt; provides

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:39
&gt; +typedef struct _Ewk_Context Ewk_Context;

I thought we don&apos;t have to do this kind of &quot;typedef&quot; anymore. Maybe I am wrong. :)

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context_private.h:25
&gt; +typedef struct _Ewk_Context Ewk_Context;

Is this a duplicate of the line in ewk_context.h?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:42
&gt; +    const char* uri;

I didn&apos;t seem to find a place where uri is initialized. Is this ok?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:515
&gt; +    return true;

Do you want to return false if load failed here?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:24
&gt; + * This object allows the high level access to WebKit2-EFL component.

Would this be better?
This object provides Webkit2 APIs to EFL&apos;s view object (or something like that).
The original comment seems to indicate ewk_view is the API to access all EFL components.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:158
&gt; + * It returns a internal string and should not

a -&gt; an</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645305</commentid>
    <comment_count>32</comment_count>
      <attachid>146696</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-09 05:43:58 -0700</bug_when>
    <thetext>Created attachment 146696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645307</commentid>
    <comment_count>33</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-09 05:57:37 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (From update of attachment 145780 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145780&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:9
&gt; &gt; +        instead of the WK API.
&gt; 
&gt; I don&apos;t really understand why WebKIt2 API is considered higher than WK API. I thought a platform-dependent WebKit2 API sometimes takes the advantage of the platform infrastructure or using Cpp-style rather than the plain C-style WK API.
&gt; 
Thank you for the review.

I changed comment little bit.
Becasue I am not good english speaker, please let me know if it is still bad.

&gt; &gt; Source/WebKit2/ChangeLog:10
&gt; &gt; +        This patch provide the minimum to support MiniBrowser.
&gt; 
&gt; provide -&gt; provides
&gt;
Done.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:39
&gt; &gt; +typedef struct _Ewk_Context Ewk_Context;
&gt; 
&gt; I thought we don&apos;t have to do this kind of &quot;typedef&quot; anymore. Maybe I am wrong. :)
&gt;
This is for applications to use ewk_context_default_get and future APIs related to ewk_context.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_context_private.h:25
&gt; &gt; +typedef struct _Ewk_Context Ewk_Context;
&gt; 
&gt; Is this a duplicate of the line in ewk_context.h?
&gt;
Yes, but I tried not to include ewk_context.h in ewk_context_private.h

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:42
&gt; &gt; +    const char* uri;
&gt; 
&gt; I didn&apos;t seem to find a place where uri is initialized. Is this ok?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:515
&gt; &gt; +    return true;
&gt;
&gt; Do you want to return false if load failed here?
&gt; 
This is to try to match WebKit/efl API.
I changed comment little bit.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:24
&gt; &gt; + * This object allows the high level access to WebKit2-EFL component.
&gt; 
&gt; Would this be better?
&gt; This object provides Webkit2 APIs to EFL&apos;s view object (or something like that).
&gt; The original comment seems to indicate ewk_view is the API to access all EFL components.
&gt;
Thanks, I changed little bit.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:158
&gt; &gt; + * It returns a internal string and should not
&gt; 
&gt; a -&gt; an
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645334</commentid>
    <comment_count>34</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2012-06-09 08:32:38 -0700</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:42
&gt; &gt; &gt; +    const char* uri;
&gt; &gt; 
&gt; &gt; I didn&apos;t seem to find a place where uri is initialized. Is this ok?

Did you address this? All the others are minor except this one. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645454</commentid>
    <comment_count>35</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-09 23:59:54 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:42
&gt; &gt; &gt; &gt; +    const char* uri;
&gt; &gt; &gt; 
&gt; &gt; &gt; I didn&apos;t seem to find a place where uri is initialized. Is this ok?
&gt; 
&gt; Did you address this? All the others are minor except this one. :)

Sorry, I missed it.

Because private is allocated as calloc, I believe that it is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645479</commentid>
    <comment_count>36</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-10 04:34:50 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (From update of attachment 145780 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145780&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:9
&gt; &gt; +        instead of the WK API.
&gt; 
&gt; I don&apos;t really understand why WebKIt2 API is considered higher than WK API. I thought a platform-dependent WebKit2 API sometimes takes the advantage of the platform infrastructure or using Cpp-style rather than the plain C-style WK API.

As far as I know, WK2 ports can own specific APIs which are not supported by common WK APIs. So, each port can support proper APIs for each platform application. However, I&apos;m not sure whether WK2 decides to use both WK and port specific APIs. It seems to me each port can decide it. In EFL port case, it seems to me WK2 EFL port supports both WK2 and EFL specific APIs, right ? 

By the way, personally, I don&apos;t like to land unclear meaning patch like this. Patch like this may occur ambiguous problems. However, we need to land this patch to work for WK2 EFL first. So, I agree with landing this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645497</commentid>
    <comment_count>37</comment_count>
      <attachid>146696</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2012-06-10 06:46:01 -0700</bug_when>
    <thetext>Comment on attachment 146696
Patch

Thanks for addressing all the issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645502</commentid>
    <comment_count>38</comment_count>
      <attachid>146696</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-10 07:21:49 -0700</bug_when>
    <thetext>Comment on attachment 146696
Patch

Clearing flags on attachment: 146696

Committed r119928: &lt;http://trac.webkit.org/changeset/119928&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645503</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-10 07:21:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144514</attachid>
            <date>2012-05-29 04:30:17 -0700</date>
            <delta_ts>2012-05-29 16:14:48 -0700</delta_ts>
            <desc>WIP:minimum</desc>
            <filename>bug-84124-20120529203016.patch</filename>
            <type>text/plain</type>
            <size>13242</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDA5YjJjNTY0MDkyOTUz
MTQ4MWRlODk0MmYwMmNhMTc2ZTNkMThmMC4uNjIxYjRhYzVkOWZjOTBhZDA4ZmUwMzlhMDk0OTc2
YTljN2RlMTE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA1LTI5ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEV4
cG9ydCBhbiBBUEkgc2ltaWxhciB0byBXZWJLaXQxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDEyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1vZGlmeSBld2tfdmlldyBhbmQgYWRkIGV3a19jb250ZXh0
IHRvIHByb3ZpZGUgYSBoaWdoIGxldmVsIFdlYktpdDIgQVBJCisgICAgICAgIHRoYXQgd3JhcHMg
dGhlIEMgQVBJIGZvciBFZmwgcG9ydC4KKyAgICAgICAgSW4gYWRkaXRpb24sIG1ha2UgdGhlbSBp
bnN0YWxsYWJsZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHA6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKHVwZGF0ZVVS
SSk6CisgICAgICAgIChld2tWaWV3QmFzZUFkZCk6CisgICAgICAgIChld2tWaWV3R2V0UGFnZSk6
CisgICAgICAgIChld2tfdmlld19hZGRfd2l0aF9jb250ZXh0KToKKyAgICAgICAgKGV3a192aWV3
X2FkZCk6CisgICAgICAgIChld2tfdmlld191cmlfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3Vy
aV9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisKIDIwMTIt
MDUtMjkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIEFkZCByZXR1cm4gdmFsdWUgaW5mb3JtYXRpb24gdG8gV2ViS2l0V2ViVmlldzo6
bG9hZC1mYWlsZWQgc2lnbmFsIGRvY3VtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXgg
OWZlNDMyYWE3NjljNmYxMzM3NDIxMGIzMmEwODhkMzlkM2U5Nzg2MS4uYzFhMDhjZjY0MDQ0YzQx
MTU5ODNlYmMxZjllYTFiZWM3MDM5NDBlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTUxMCw3
ICs1MTAsNiBAQCBTRVQoV2ViS2l0Ml9MSUJSQVJJRVMKICAgICAke1dlYkNvcmVfTElCUkFSWV9O
QU1FfQogKQogCi1TRVQoV2ViUHJvY2Vzc19OQU1FIC4uL2Jpbi9XZWJQcm9jZXNzKQogU0VUKFdl
YlByb2Nlc3NfU09VUkNFUyAiIikKIAogU0VUKFdlYlByb2Nlc3NfTElCUkFSSUVTCkBAIC01MzMs
MTUgKzUzMiwxNyBAQCBBRERfREVQRU5ERU5DSUVTKCR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9ICR7
Rm9yd2FyZGluZ05ldHdvcmtIZWFkZXJzX05BTUV9KQogVEFSR0VUX0xJTktfTElCUkFSSUVTKCR7
V2ViS2l0Ml9MSUJSQVJZX05BTUV9ICR7V2ViS2l0Ml9MSUJSQVJJRVN9KQogU0VUX1RBUkdFVF9Q
Uk9QRVJUSUVTKCR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9IFBST1BFUlRJRVMgRk9MREVSICJXZWJL
aXQiKQogU0VUX1RBUkdFVF9QUk9QRVJUSUVTKCR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9IFBST1BF
UlRJRVMgTElOS19JTlRFUkZBQ0VfTElCUkFSSUVTICIiKQorU0VUX1RBUkdFVF9QUk9QRVJUSUVT
KCR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9IFBST1BFUlRJRVMgVkVSU0lPTiAke1BST0pFQ1RfVkVS
U0lPTn0gU09WRVJTSU9OICR7UFJPSkVDVF9WRVJTSU9OX01BSk9SfSkKIAotQUREX0VYRUNVVEFC
TEUoJHtXZWJQcm9jZXNzX05BTUV9ICR7V2ViUHJvY2Vzc19TT1VSQ0VTfSkKLVRBUkdFVF9MSU5L
X0xJQlJBUklFUygke1dlYlByb2Nlc3NfTkFNRX0gJHtXZWJQcm9jZXNzX0xJQlJBUklFU30pCi1T
RVRfVEFSR0VUX1BST1BFUlRJRVMoJHtXZWJQcm9jZXNzX05BTUV9IFBST1BFUlRJRVMgRk9MREVS
ICJXZWJLaXQiKQorQUREX0VYRUNVVEFCTEUoJHtXZWJLaXQyX1BST0NFU1NfTkFNRX0gJHtXZWJQ
cm9jZXNzX1NPVVJDRVN9KQorVEFSR0VUX0xJTktfTElCUkFSSUVTKCR7V2ViS2l0Ml9QUk9DRVNT
X05BTUV9ICR7V2ViUHJvY2Vzc19MSUJSQVJJRVN9KQorU0VUX1RBUkdFVF9QUk9QRVJUSUVTKCR7
V2ViS2l0Ml9QUk9DRVNTX05BTUV9IFBST1BFUlRJRVMgRk9MREVSICJXZWJLaXQiKQorU0VUX1RB
UkdFVF9QUk9QRVJUSUVTKCR7V2ViS2l0Ml9QUk9DRVNTX05BTUV9IFBST1BFUlRJRVMgUlVOVElN
RV9PVVRQVVRfRElSRUNUT1JZICIke0NNQUtFX0JJTkFSWV9ESVJ9L2JpbiIpCiAKLVNFVF9UQVJH
RVRfUFJPUEVSVElFUygke1dlYktpdDJfTElCUkFSWV9OQU1FfSBQUk9QRVJUSUVTIFZFUlNJT04g
JHtQUk9KRUNUX1ZFUlNJT059IFNPVkVSU0lPTiAke1BST0pFQ1RfVkVSU0lPTl9NQUpPUn0pCiBJ
RiAoV2ViS2l0Ml9MSU5LX0ZMQUdTKQogICAgIEFERF9UQVJHRVRfUFJPUEVSVElFUygke1dlYktp
dDJfTElCUkFSWV9OQU1FfSBMSU5LX0ZMQUdTICIke1dlYktpdDJfTElOS19GTEFHU30iKQotICAg
IEFERF9UQVJHRVRfUFJPUEVSVElFUygke1dlYlByb2Nlc3NfTkFNRX0gTElOS19GTEFHUyAiJHtX
ZWJLaXQyX0xJTktfRkxBR1N9IikKKyAgICBBRERfVEFSR0VUX1BST1BFUlRJRVMoJHtXZWJLaXQy
X1BST0NFU1NfTkFNRX0gTElOS19GTEFHUyAiJHtXZWJLaXQyX0xJTktfRkxBR1N9IikKIEVORElG
ICgpCiAKIElOU1RBTEwoVEFSR0VUUyAke1dlYktpdDJfTElCUkFSWV9OQU1FfSBERVNUSU5BVElP
TiAiJHtMSUJfSU5TVEFMTF9ESVJ9IikKK0lOU1RBTEwoVEFSR0VUUyAke1dlYktpdDJfUFJPQ0VT
U19OQU1FfSBERVNUSU5BVElPTiAiYmluIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
NmI3NjhkMzczMzhhMmM5YWQyOWYxNGM3OTFkMzkzMzdiYTdjMGNhNy4uMzFmNWE3MmQ0MWUzY2I3
OWUyNGY3ZTRhNDdkYjQ2ZGRjMTIyNjk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAg
LTI0LDggKzI0LDExIEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9l
ZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAogICAgIFNoYXJlZC9lZmwvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzRWZsLmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCisKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKIAog
ICAgIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKIApAQCAtNjcsNiArNzAs
NyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL25ldHdvcmsvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL2VmbCIKKyAg
ICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL2VmbC8iCiAgICAgIiR7V0VCS0lUMl9E
SVJ9L1VJUHJvY2Vzcy9BUEkvZWZsLyIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9E
b3dubG9hZHMvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL2VmbCIKQEAgLTEy
MiwzICsxMjYsMTcgQEAgQUREX0NVU1RPTV9UQVJHRVQoZm9yd2FyZGluZy1oZWFkZXJTb3VwCiAg
ICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJLSVQyX0RJUn0vU2NyaXB0cy9nZW5l
cmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwgJHtXRUJLSVQyX0RJUn0gJHtERVJJVkVEX1NPVVJD
RVNfV0VCS0lUMl9ESVJ9L2luY2x1ZGUgc291cAogKQogU0VUKEZvcndhcmRpbmdOZXR3b3JrSGVh
ZGVyc19OQU1FIGZvcndhcmRpbmctaGVhZGVyU291cCkKKworQ09ORklHVVJFX0ZJTEUoZWZsL2V3
ZWJraXQyLnBjLmluCisgICAgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9ld2Via2l0
Mi5wYyBAT05MWSkKK0lOU1RBTEwoRklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2Vm
bC9ld2Via2l0Mi5wYworICAgIERFU1RJTkFUSU9OIGxpYi9wa2djb25maWcpCisKK1NFVCAoRVdl
YktpdDJfSEVBREVSUworICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgiCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oIgorKQorCitJTlNUQUxMKEZJTEVT
ICR7RVdlYktpdDJfSEVBREVSU30KKyAgICBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9M
SUJSQVJZX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9SfSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0Jhc2UuaAppbmRleCAyOGU3YWVkNjI1NzNlMjEwNmUyMjhmZmJhMjNkOTIwYjllNDdi
NzZlLi40MDJhZjhmZDUzY2IxZmI3YWYxYjIzZDU3ZmExZjEwMDFmOGEwNTRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCkBAIC00MSw2ICs0MSwxMCBAQAogI2luY2x1ZGUgPFdl
YktpdDIvV0tCYXNlU291cC5oPgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9F
RkwpCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2VFZmwuaD4KKyNlbmRpZgorCiAvKiBXZWJLaXQy
IHNoYXJlZCB0eXBlcyAqLwogCiB0eXBlZGVmIHVpbnQzMl90IFdLVHlwZUlEOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCmluZGV4IGU0N2IwNWZmNWIwZDc5NTg5
YzdlMTIxMzE0OWYzYzFjODYxOTRhOTAuLmNmZjcwZjQ4YjQ0YmQ4Y2U0NDlhMGExOTk4Zjc5MTUx
MDg3YWJiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgK
QEAgLTM2NCw0ICszNjQsOCBAQCBpbmxpbmUgUHJveHlpbmdSZWZQdHI8V2ViR3JhbW1hckRldGFp
bD4gdG9BUEkoY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYgZ3JhbQogI2luY2x1ZGUgIldL
QVBJQ2FzdFNvdXAuaCIKICNlbmRpZgogCisjaWYgZGVmaW5lZChXVEZfUExBVEZPUk1fRUZMKQor
I2luY2x1ZGUgIldLQVBJQ2FzdEVmbC5oIgorI2VuZGlmCisKICNlbmRpZiAvLyBXS0FQSUNhc3Rf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wcml2YXRlLmgKaW5k
ZXggZDMzMWQ5OTZmODc4MjU2NmIwMTRhMTFiYTdlM2I1MmVhMmJlMzRhZi4uNzI4MjE2OTY5OTlh
YWM3NGY5MzgzMGQ4MWMwMTlmMjc5NmY5NzViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfcHJpdmF0ZS5oCkBAIC0yMSwxNCArMjEsMjMgQEAKICNpZm5kZWYg
ZXdrX3ByaXZhdGVfaAogI2RlZmluZSBld2tfcHJpdmF0ZV9oCiAKKyNpbmNsdWRlICJXZWJQYWdl
UHJveHkuaCIKICNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiB9
CiAKK3R5cGVkZWYgc3RydWN0IF9Fd2tfQ29udGV4dCBFd2tfQ29udGV4dDsKKworV0tDb250ZXh0
UmVmIGV3a0NvbnRleHRHZXRXS0NvbnRleHQoRXdrX0NvbnRleHQqKTsKKwogdm9pZCBld2tfdmll
d19kaXNwbGF5KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBy
ZWN0KTsKIHZvaWQgZXdrX3ZpZXdfaW1hZ2VfZGF0YV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IHZvaWQqIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSk7CiAKK0V2YXNf
T2JqZWN0KiBld2tWaWV3QmFzZUFkZChFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiwgV0tQYWdl
R3JvdXBSZWYpOworV2ViS2l0OjpXZWJQYWdlUHJveHkqIGV3a1ZpZXdHZXRQYWdlKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KTsKKwogI2VuZGlmIC8vIGV3a19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCAyNjljMDcyZDY0YTkwNTM0
OTRhMGQ2Mjk3YTIwMDY4NDEyMDM4OTY5Li5iNTk1NWEwNmIyODI4ZTFmN2NlMWVkMzIyMTZmNzJi
ZTBlMjIyMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuY3BwCkBAIC0yNSw2ICsyNSwxMSBAQAogI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQu
aCIKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgor
I2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV0tVUkwuaCIKKyNpbmNsdWRlICJl
d2tfY29udGV4dC5oIgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC0zMyw2ICszOCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIEVXS19WSUVXX1RZ
UEVfU1RSW10gPSAiRVdLMl9WaWV3IjsKIAogc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEg
ewogICAgIE93blB0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsKKyAgICBDU3RyaW5nIHVy
aTsKIH07CiAKICNkZWZpbmUgRVdLX1ZJRVdfVFlQRV9DSEVDSyhld2tWaWV3LCByZXN1bHQpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC00NjEsNyArNDY3LDMwIEBAIHN0
YXRpYyBpbmxpbmUgRXZhc19TbWFydCogX2V3a192aWV3X3NtYXJ0X2NsYXNzX25ldyh2b2lkKQog
ICAgIHJldHVybiBzbWFydDsKIH0KIAotRXZhc19PYmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBj
YW52YXMsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBS
ZWYpCitzdGF0aWMgYm9vbCB1cGRhdGVVUkkoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisK
KyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCk7CisKKyAg
ICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsUmVmKEFkb3B0V0ssIFdLUGFnZUNvcHlBY3RpdmVV
UkwodG9BUEkocGFnZSkpKTsKKyAgICBpZiAoIXVybFJlZikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgQ1N0cmluZyB1cmkgPSB0b0ltcGwodXJsUmVmLmdldCgpKS0+c3RyaW5nKCkudXRm
OCgpOworICAgIGlmICh1cmkuaXNOdWxsKCkgfHwgdXJpID09IHByaXYtPnVyaSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcHJpdi0+dXJpID0gdXJpOworCisgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAidXJpLGNoYW5nZWQiLCAodm9pZCopcHJpdi0+
dXJpLmRhdGEoKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLyogcHJpdmF0ZSAqLworRXZh
c19PYmplY3QqIGV3a1ZpZXdCYXNlQWRkKEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKIHsKICAgICBFdmFzX09iamVjdCog
ZXdrVmlldyA9IGV2YXNfb2JqZWN0X3NtYXJ0X2FkZChjYW52YXMsIF9ld2tfdmlld19zbWFydF9j
bGFzc19uZXcoKSk7CiAgICAgaWYgKCFld2tWaWV3KQpAQCAtNDg0LDEyICs1MTMsNDQgQEAgRXZh
c19PYmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiBjb250ZXh0
UmVmLCBXS1BhZ2VHcm91cFJlZgogICAgIHJldHVybiBld2tWaWV3OwogfQogCi1XS1BhZ2VSZWYg
ZXdrX3ZpZXdfcGFnZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCitXZWJQYWdlUHJveHkqIGV3
a1ZpZXdHZXRQYWdlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKKworICAgIHJldHVybiBwcml2LT5wYWdl
Q2xpZW50LT5wYWdlKCk7Cit9CisKKy8qIHB1YmxpYyAqLworRXZhc19PYmplY3QqIGV3a192aWV3
X2FkZF93aXRoX2NvbnRleHQoRXZhcyogY2FudmFzLCBFd2tfQ29udGV4dCogY29udGV4dCkKK3sK
KyAgICByZXR1cm4gZXdrVmlld0Jhc2VBZGQoY2FudmFzLCBld2tDb250ZXh0R2V0V0tDb250ZXh0
KGNvbnRleHQpLCAwKTsKK30KKworRXZhc19PYmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBjYW52
YXMpCit7CisgICAgcmV0dXJuIGV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoY2FudmFzLCBld2tf
Y29udGV4dF9kZWZhdWx0X2dldCgpKTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3VyaV9zZXQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHVyaSkKK3sKKyAgICBXZWJQYWdlUHJv
eHkqIHBhZ2UgPSBld2tWaWV3R2V0UGFnZShld2tWaWV3KTsKKyAgICBpZiAoIXBhZ2UpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmwoQWRvcHRX
SywgV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcodXJpKSk7CisgICAgV0tQYWdlTG9hZFVSTCh0
b0FQSShwYWdlKSwgdXJsLmdldCgpKTsKKyAgICB1cGRhdGVVUkkoZXdrVmlldyk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworY29uc3QgY2hhciogZXdrX3ZpZXdfdXJpX2dldChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgMCk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdiwgMCk7CiAKLSAgICByZXR1cm4gdG9BUEkocHJpdi0+cGFnZUNsaWVudC0+cGFn
ZSgpKTsKKyAgICByZXR1cm4gcHJpdi0+dXJpLmRhdGEoKTsKIH0KIAogdm9pZCBld2tfdmlld19k
aXNwbGF5KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXggYzg5NTZiY2E3Mjdi
OWEzODlkYTAwNWI4OWI0NWUxZjJjMTNjNzgyNS4uZGNjNjRmMjFiOGMzZjJlNzA4ODdmMzc2MDJm
MTc2ZDZlNTUxOWJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5oCkBAIC0yMCw4ICsyMCw4IEBACiAjaWZuZGVmIGV3a192aWV3X2gKICNkZWZpbmUgZXdr
X3ZpZXdfaAogCisjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlIDxFdmFzLmg+Ci0j
aW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4g
IkMiIHsKQEAgLTEyMCwyMSArMTIwLDQxIEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSB7
CiAgKiBDcmVhdGVzIGEgbmV3IEVGTCBXZWJLaXQgVmlldyBvYmplY3QuCiAgKgogICogQHBhcmFt
IGUgY2FudmFzIG9iamVjdCB3aGVyZSB0byBjcmVhdGUgdGhlIHZpZXcgb2JqZWN0Ci0gKiBAcGFy
YW0gY29udGV4dCBXS0NvbnRleHQncyBSZWZlcmVuY2UgcG9pbnRlcgotICogQHBhcmFtIHBhZ2Vf
Z3JvdXAgV0tQYWdlR3JvdXAncyBSZWZlcmVuY2UgcG9pbnRlcgogICoKICAqIEByZXR1cm4gdmll
dyBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKICAqLwotRUFQSSBFdmFzX09i
amVjdCogZXdrX3ZpZXdfYWRkKEV2YXMqIGUsIFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VH
cm91cFJlZiBwYWdlX2dyb3VwKTsKK0VBUEkgRXZhc19PYmplY3QqIGV3a192aWV3X2FkZChFdmFz
KiBlKTsKIAogLyoqCi0gKiBHZXRzIHRoZSBXS1BhZ2VSZWYgb2YgdGhpcyB2aWV3LgorICogQ3Jl
YXRlcyBhIG5ldyBFRkwgV2ViS2l0IFZpZXcgb2JqZWN0LgorICoKKyAqIEBwYXJhbSBlIGNhbnZh
cyBvYmplY3Qgd2hlcmUgdG8gY3JlYXRlIHRoZSB2aWV3IG9iamVjdAorICogQHBhcmFtIGNvbnRl
eHQgRXdrX0NvbnRleHQgb2JqZWN0IHRvIGRlY2xhcmUgcHJvY2VzcyBtb2RlbAorICoKKyAqIEBy
ZXR1cm4gdmlldyBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKKyAqLworRUFQ
SSBFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkX3dpdGhfY29udGV4dChFdmFzKiBlLCBFd2tfQ29u
dGV4dCogY29udGV4dCk7CisKKy8qKgorICogUmVxdWVzdHMgbG9hZGluZyBvZiB0aGUgZ2l2ZW4g
VVJJIHN0cmluZy4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBsb2FkIEBhIHVyaQor
ICogQHBhcmFtIHVyaSB1bmlmb3JtIHJlc291cmNlIGlkZW50aWZpZXIgdG8gbG9hZAorICoKKyAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3NmdWwgcmVxdWVzdCBvciBAYyBFSU5BX0ZB
TFNFIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXJpX3NldChFdmFz
X09iamVjdCogbywgY29uc3QgY2hhciogdXJpKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBjdXJy
ZW50IHVyaSBzdHJpbmcgb2YgcGFnZS4KKyAqCisgKiBUaGUgcmV0dXJuZWQgc3RyaW5nIEBiIHNo
b3VsZCBiZSBmcmVlZCBhZnRlciB1c2UuCiAgKgotICogQHBhcmFtIG8gdGhlIHZpZXcgb2JqZWN0
IHRvIGdldCB0aGUgV0tQYWdlUmVmCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgY3Vy
cmVudCB1cmkKICAqCi0gKiBAcmV0dXJuIHRoZSBXS1BhZ2VSZWYgb2YgdGhpcyB2aWV3CisgKiBA
cmV0dXJuIGN1cnJlbnQgdXJpIG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCiAgKi8KLUVB
UEkgV0tQYWdlUmVmIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBvKTsKK0VBUEkgY29u
c3QgY2hhciogZXdrX3ZpZXdfdXJpX2dldChjb25zdCBFdmFzX09iamVjdCogbyk7CiAKICNpZmRl
ZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3Rz
LnR4dAppbmRleCA5MGZmMDNhYjc4YWRkOTJlNjg1YTQzYzVlNjIzODY1MmUxM2UzYWRhLi5jYzJm
MjhkZGJlMWE2MGQ5ODMxNWU0Y2QwNTZmOThjNDdjN2EyYWJlIDEwMDY0NAotLS0gYS9DTWFrZUxp
c3RzLnR4dAorKysgYi9DTWFrZUxpc3RzLnR4dApAQCAtMTEwLDYgKzExMCw3IEBAIFNFVChKYXZh
U2NyaXB0Q29yZV9MSUJSQVJZX05BTUUgSmF2YVNjcmlwdENvcmUpCiBTRVQoV2ViQ29yZV9MSUJS
QVJZX05BTUUgV2ViQ29yZSkKIFNFVChXZWJLaXRfTElCUkFSWV9OQU1FIFdlYktpdCkKIFNFVChX
ZWJLaXQyX0xJQlJBUllfTkFNRSBXZWJLaXQyKQorU0VUKFdlYktpdDJfUFJPQ0VTU19OQU1FIFdl
YlByb2Nlc3MpCiBTRVQoV2ViQ29yZVRlc3RTdXBwb3J0X0xJQlJBUllfTkFNRSBXZWJDb3JlVGVz
dFN1cHBvcnQpCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0NoYW5nZUxv
ZyBiL0NoYW5nZUxvZwppbmRleCBjOWYyZjU3M2ZjZWZjNjY4MDlmYTA1OWI2NjM2NjdkZTdhMmE0
ZmVlLi5iYzllODUxMWFmM2M5NTA3YWFlMDQwOWUyMWE2YzU5NjljZDUwZmMxIDEwMDY0NAotLS0g
YS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDUtMjkg
IFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dL
Ml0gRXhwb3J0IGFuIEFQSSBzaW1pbGFyIHRvIFdlYktpdDEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MTI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIFdlYktpdDJf
UFJPQ0VTU19OQU1FIHZhcmlhYmxlLgorCiAyMDEyLTA1LTI1ICBKZXN1cyBTYW5jaGV6LVBhbGVu
Y2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBXZWJLaXRUZXN0
UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0SmF2YVNjcmlw
dFByb2ZpbGluZ0VuYWJsZWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144963</attachid>
            <date>2012-05-30 18:06:44 -0700</date>
            <delta_ts>2012-05-31 05:22:33 -0700</delta_ts>
            <desc>WIP:minimalized</desc>
            <filename>bug-84124-20120531100642.patch</filename>
            <type>text/plain</type>
            <size>12029</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4OTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDQ3MmMzNjE2MWJmYzAw
ZjEzYmZhMWE1NDAwOGMyYjI5NTcwMjcyMC4uODRiYTI5ODM4YjE1YWQyNTBmYzljMDRiM2M4MmE4
NzZlYmU0NmI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA1LTMwICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBhbmQgcmVmYWN0b3IgZXdrIEFQSSBpbiBvcmRlciB0byBzdXBwb3J0IE1pbmlCcm93c2VyIHdp
dGhvdXQgV0sgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQxMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb2RpZnkgZXdrX3ZpZXcgYW5kIGFkZCBld2tfY29udGV4dCB0byBwcm92aWRlIGEgaGln
aCBsZXZlbCBXZWJLaXQyIEFQSS4KKyAgICAgICAgaW5zdGVhZCBvZiB0aGUgV0sgQVBJLgorICAg
ICAgICBUaGlzIHBhdGNoIHByb3ZpZGUgdGhlIG1pbmltdW0gdG8gc3VwcG9ydCBNaW5pQnJvd3Nl
ci4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBhZGQgZXdrX2NvbnRleHQuY3BwLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChfRXdr
X0NvbnRleHQpOgorICAgICAgICAoY3JlYXRlRGVmYXVsdFdlYkNvbnRleHQpOgorICAgICAgICAo
ZXdrX2NvbnRleHRfV0tDb250ZXh0X2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9kZWZhdWx0
X2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X2RlbCk6CisgICAgICAgIChld2tfdmll
d19iYXNlX2FkZCk6CisgICAgICAgIChld2tfdmlld19hZGRfd2l0aF9jb250ZXh0KToKKyAgICAg
ICAgKGV3a192aWV3X2FkZCk6CisgICAgICAgIChld2tfdmlld191cmlfc2V0KToKKyAgICAgICAg
KGV3a192aWV3X3VyaV9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
Lmg6CisKIDIwMTItMDUtMzAgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdW1dLMl0gRXJyb3JzIGluIGRvY3VtZW50YXRpb24gYWJvdXQg
IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtl
CmluZGV4IGJjNmU5NjYzOGQyOTRhZjQ0M2RkZDY0NjM4ZjQxMGIwYWM2YWM1NDYuLmZmMWRkMTg2
NmE0N2QxZDkzYTJhODQyZmViYmEzYzlmODVlZGVlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC0yOCw2ICsyOCw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcAogCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCiAKICAgICBV
SVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTg1NzFkMmU4YmQ1YmJhZTYx
ZmU5NTNlNmI2NDEyOWY0ZTg0ODIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgRVdlYktpdDJf
aAorI2RlZmluZSBFV2ViS2l0Ml9oCisKKyNpbmNsdWRlICJld2tfY29udGV4dC5oIgorI2luY2x1
ZGUgImV3a192aWV3LmgiCisKKyNlbmRpZiAvLyBFV2ViS2l0Ml9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDUzOGRh
YTY3ZGQ0NWZhNGMzOTkwM2UyNWViNDkwODMzNDZkM2YyYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApAQCAtMCwwICsx
LDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFt
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dC5oIgorCisjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKworc3RydWN0IF9Fd2tfQ29udGV4dCB7CisgICAgV0tSZXRhaW5QdHI8V0tD
b250ZXh0UmVmPiBjb250ZXh0OworfTsKKworc3RhdGljIEV3a19Db250ZXh0KiBjcmVhdGVEZWZh
dWx0V2ViQ29udGV4dCgpCit7CisgICAgc3RhdGljIEV3a19Db250ZXh0IGRlZmF1bHRDb250ZXh0
OworICAgIGRlZmF1bHRDb250ZXh0LmNvbnRleHQgPSBXS0NvbnRleHRHZXRTaGFyZWRQcm9jZXNz
Q29udGV4dCgpOworICAgIHJldHVybiAmZGVmYXVsdENvbnRleHQ7Cit9CisKK1dLQ29udGV4dFJl
ZiBld2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KEV3a19Db250ZXh0KiBld2tDb250ZXh0KQorewor
ICAgIHJldHVybiBld2tDb250ZXh0LT5jb250ZXh0LmdldCgpOworfQorCitFd2tfQ29udGV4dCog
ZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKQoreworICAgIHN0YXRpYyBFd2tfQ29udGV4dCogY29u
dGV4dCA9IGNyZWF0ZURlZmF1bHRXZWJDb250ZXh0KCk7CisgICAgcmV0dXJuIGNvbnRleHQ7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42MTBmNDczODdjOWRkYTU1MjBjMGVkZTA1ZWQ1OTBjMmViZGJkOTMzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQu
aApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRfaAorI2RlZmluZSBld2tfY29udGV4dF9o
CisKKyNpbmNsdWRlIDxFdmFzLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7
CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Db250ZXh0IEV3a19Db250ZXh0OworCitF
QVBJIEV3a19Db250ZXh0KiBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpOworCisjaWZkZWYgX19j
cGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX2NvbnRleHRfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wcml2YXRlLmgKaW5kZXggZDMzMWQ5OTZm
ODc4MjU2NmIwMTRhMTFiYTdlM2I1MmVhMmJlMzRhZi4uNGYxZTAxYzQzMDI4ODExNWIwODA2MTRi
MTdlYTQzNzIzMzA1YTY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcHJpdmF0ZS5oCkBAIC0yMSwxNCArMjEsMjIgQEAKICNpZm5kZWYgZXdrX3ByaXZhdGVf
aAogI2RlZmluZSBld2tfcHJpdmF0ZV9oCiAKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNp
bmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiB9CiAKK3R5cGVkZWYg
c3RydWN0IF9Fd2tfQ29udGV4dCBFd2tfQ29udGV4dDsKKworV0tDb250ZXh0UmVmIGV3a19jb250
ZXh0X1dLQ29udGV4dF9nZXQoRXdrX0NvbnRleHQqKTsKKwogdm9pZCBld2tfdmlld19kaXNwbGF5
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KTsKIHZv
aWQgZXdrX3ZpZXdfaW1hZ2VfZGF0YV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIGlt
YWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSk7CiAKK0V2YXNfT2JqZWN0KiBl
d2tfdmlld19iYXNlX2FkZChFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiwgV0tQYWdlR3JvdXBS
ZWYpOworCiAjZW5kaWYgLy8gZXdrX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDI2OWMwNzJkNjRhOTA1MzQ5NGEwZDYyOTdh
MjAwNjg0MTIwMzg5NjkuLmM3OTBkZWM1YTM5YjY4MTE0M2JmY2FiNTEzMGEwNTc2YzlmY2EzOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAg
LTI1LDYgKzI1LDExIEBACiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgogI2luY2x1
ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAi
V0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJXS1VSTC5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0
LmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
QEAgLTMzLDYgKzM4LDggQEAgc3RhdGljIGNvbnN0IGNoYXIgRVdLX1ZJRVdfVFlQRV9TVFJbXSA9
ICJFV0syX1ZpZXciOwogCiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgT3du
UHRyPFBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50OworCisgICAgY29uc3QgY2hhciogdXJpOwog
fTsKIAogI2RlZmluZSBFV0tfVklFV19UWVBFX0NIRUNLKGV3a1ZpZXcsIHJlc3VsdCkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTI1OSw2ICsyNjYsOSBAQCBzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfcHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQogICAg
ICAgICByZXR1cm47CiAKICAgICBwcml2LT5wYWdlQ2xpZW50ID0gbnVsbHB0cjsKKworICAgIGVp
bmFfc3RyaW5nc2hhcmVfZGVsKHByaXYtPnVyaSk7CisKICAgICBmcmVlKHByaXYpOwogfQogCkBA
IC00NjEsNyArNDcxLDcgQEAgc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfc21h
cnRfY2xhc3NfbmV3KHZvaWQpCiAgICAgcmV0dXJuIHNtYXJ0OwogfQogCi1FdmFzX09iamVjdCog
ZXdrX3ZpZXdfYWRkKEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK0V2YXNfT2JqZWN0KiBld2tfdmlld19iYXNlX2FkZChF
dmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdl
R3JvdXBSZWYpCiB7CiAgICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSBldmFzX29iamVjdF9zbWFy
dF9hZGQoY2FudmFzLCBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KCkpOwogICAgIGlmICghZXdr
VmlldykKQEAgLTQ4NCwxMiArNDk0LDM1IEBAIEV2YXNfT2JqZWN0KiBld2tfdmlld19hZGQoRXZh
cyogY2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYKICAgICBy
ZXR1cm4gZXdrVmlldzsKIH0KIAotV0tQYWdlUmVmIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQorRXZhc19PYmplY3QqIGV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZh
cyogY2FudmFzLCBFd2tfQ29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gZXdrX3ZpZXdf
YmFzZV9hZGQoY2FudmFzLCBld2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KGNvbnRleHQpLCAwKTsK
K30KKworRXZhc19PYmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBjYW52YXMpCit7CisgICAgcmV0
dXJuIGV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoY2FudmFzLCBld2tfY29udGV4dF9kZWZhdWx0
X2dldCgpKTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3VyaV9zZXQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIGNvbnN0IGNoYXIqIHVyaSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdiwgMCk7CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsKEFk
b3B0V0ssIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVyaSkpOworICAgIFdLUGFnZUxvYWRV
UkwodG9BUEkocHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpKSwgdXJsLmdldCgpKTsKKworICAgIGVp
bmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+dXJpLCB1cmkpOworCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2NvbnN0IGNoYXIqIGV3a192aWV3X3VyaV9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIDApOwogCi0gICAgcmV0dXJuIHRvQVBJKHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKSk7Cisg
ICAgcmV0dXJuIHByaXYtPnVyaTsKIH0KIAogdm9pZCBld2tfdmlld19kaXNwbGF5KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXggYzg5NTZiY2E3MjdiOWEzODlkYTAwNWI4OWI0
NWUxZjJjMTNjNzgyNS4uNWEzZTUyZTIwZTBmMjVmNDhiNzljMmU3YWUzOTk4ODVjNmU5MzFkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC0yMCw4
ICsyMCw4IEBACiAjaWZuZGVmIGV3a192aWV3X2gKICNkZWZpbmUgZXdrX3ZpZXdfaAogCisjaW5j
bHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8V2ViS2l0
Mi9XS0Jhc2UuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKQEAgLTEyMCwy
MSArMTIwLDQxIEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSB7CiAgKiBDcmVhdGVzIGEg
bmV3IEVGTCBXZWJLaXQgVmlldyBvYmplY3QuCiAgKgogICogQHBhcmFtIGUgY2FudmFzIG9iamVj
dCB3aGVyZSB0byBjcmVhdGUgdGhlIHZpZXcgb2JqZWN0Ci0gKiBAcGFyYW0gY29udGV4dCBXS0Nv
bnRleHQncyBSZWZlcmVuY2UgcG9pbnRlcgotICogQHBhcmFtIHBhZ2VfZ3JvdXAgV0tQYWdlR3Jv
dXAncyBSZWZlcmVuY2UgcG9pbnRlcgogICoKICAqIEByZXR1cm4gdmlldyBvYmplY3Qgb24gc3Vj
Y2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKICAqLwotRUFQSSBFdmFzX09iamVjdCogZXdrX3ZpZXdf
YWRkKEV2YXMqIGUsIFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlX2dy
b3VwKTsKK0VBUEkgRXZhc19PYmplY3QgKmV3a192aWV3X2FkZChFdmFzICplKTsKIAogLyoqCi0g
KiBHZXRzIHRoZSBXS1BhZ2VSZWYgb2YgdGhpcyB2aWV3LgorICogQ3JlYXRlcyBhIG5ldyBFRkwg
V2ViS2l0IFZpZXcgb2JqZWN0LgorICoKKyAqIEBwYXJhbSBlIGNhbnZhcyBvYmplY3Qgd2hlcmUg
dG8gY3JlYXRlIHRoZSB2aWV3IG9iamVjdAorICogQHBhcmFtIGNvbnRleHQgRXdrX0NvbnRleHQg
b2JqZWN0IHRvIGRlY2xhcmUgcHJvY2VzcyBtb2RlbAorICoKKyAqIEByZXR1cm4gdmlldyBvYmpl
Y3Qgb24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFdmFzX09iamVjdCAq
ZXdrX3ZpZXdfYWRkX3dpdGhfY29udGV4dChFdmFzICplLCBFd2tfQ29udGV4dCAqY29udGV4dCk7
CisKKy8qKgorICogUmVxdWVzdHMgbG9hZGluZyBvZiB0aGUgZ2l2ZW4gVVJJIHN0cmluZy4KKyAq
CisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBsb2FkIEBhIHVyaQorICogQHBhcmFtIHVyaSB1
bmlmb3JtIHJlc291cmNlIGlkZW50aWZpZXIgdG8gbG9hZAorICoKKyAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIG9uIHN1Y2Nlc3NmdWwgcmVxdWVzdCBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUK
KyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXJpX3NldChFdmFzX09iamVjdCAqbywgY29u
c3QgY2hhciAqdXJpKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHVyaSBzdHJpbmcg
b2YgcGFnZS4KKyAqCisgKiBUaGUgcmV0dXJuZWQgc3RyaW5nIEBiIHNob3VsZCBiZSBmcmVlZCBh
ZnRlciB1c2UuCiAgKgotICogQHBhcmFtIG8gdGhlIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgV0tQ
YWdlUmVmCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgY3VycmVudCB1cmkKICAqCi0g
KiBAcmV0dXJuIHRoZSBXS1BhZ2VSZWYgb2YgdGhpcyB2aWV3CisgKiBAcmV0dXJuIGN1cnJlbnQg
dXJpIG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCiAgKi8KLUVBUEkgV0tQYWdlUmVmIGV3
a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBvKTsKK0VBUEkgY29uc3QgY2hhciAqZXdrX3Zp
ZXdfdXJpX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145059</attachid>
            <date>2012-05-31 05:22:40 -0700</date>
            <delta_ts>2012-05-31 23:52:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84124-20120531212238.patch</filename>
            <type>text/plain</type>
            <size>13507</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWY5ZDMzZDljNTU4NmFm
NzJjODIxZTI4YTJmZTY2N2RhNzc1ZmMyMy4uZTliNTk2YjM0MjA0MDQwYmMzNzI1MDZjMTc2YWVh
ZjhlZTIyYTcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA1LTMxICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBhbmQgcmVmYWN0b3IgZXdrIEFQSSBpbiBvcmRlciB0byBzdXBwb3J0IE1pbmlCcm93c2VyIHdp
dGhvdXQgV0sgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQxMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb2RpZnkgZXdrX3ZpZXcgYW5kIGFkZCBld2tfY29udGV4dCB0byBwcm92aWRlIGEgaGln
aCBsZXZlbCBXZWJLaXQyIEFQSQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBXSyBBUEkuCisgICAg
ICAgIFRoaXMgcGF0Y2ggcHJvdmlkZSB0aGUgbWluaW11bSB0byBzdXBwb3J0IE1pbmlCcm93c2Vy
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IGFkZCBld2tfY29udGV4dC5jcHAuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tf
Q29udGV4dCk6CisgICAgICAgIChjcmVhdGVEZWZhdWx0V2ViQ29udGV4dCk6CisgICAgICAgIChl
d2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X2RlZmF1bHRf
Z2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9F
d2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKKyAg
ICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToKKyAgICAgICAgKGV3a192aWV3X2FkZF93aXRoX2Nv
bnRleHQpOgorICAgICAgICAoZXdrX3ZpZXdfYWRkKToKKyAgICAgICAgKGV3a192aWV3X3VyaV9z
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdXJpX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19w
cml2YXRlLmg6CisKIDIwMTItMDUtMzEgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIFJlbmFtZSBld2tfcHJpdmF0ZS5oIHRvIGV3
a192aWV3X3ByaXZhdGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBiYzZlOTY2Mzhk
Mjk0YWY0NDNkZGQ2NDYzOGY0MTBiMGFjNmFjNTQ2Li5mZjFkZDE4NjZhNDdkMWQ5M2EyYTg0MmZl
YmJhM2M5Zjg1ZWRlZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMjgsNiArMjgs
NyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291
cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHAKIAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VD
bGllbnRJbXBsLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAogCiAgICAgVUlQcm9jZXNzL2NhaXJvL0Jh
Y2tpbmdTdG9yZUNhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VX
ZWJLaXQyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDk4NTcxZDJlOGJkNWJiYWU2MWZlOTUzZTZiNjQxMjlmNGU4
NDgyMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0VXZWJLaXQyLmgKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIEVXZWJLaXQyX2gKKyNkZWZpbmUgRVdlYktp
dDJfaAorCisjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKKyNpbmNsdWRlICJld2tfdmlldy5oIgor
CisjZW5kaWYgLy8gRVdlYktpdDJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4ZGYyNjViMTE3NWY3YzY4YzgzNmVh
MTA1N2JlNDk3ZDVjOTNiY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgor
I2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5o
IgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdHJ1Y3QgX0V3a19Db250ZXh0IHsKKyAg
ICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQ7Cit9OworCitzdGF0aWMgRXdrX0Nv
bnRleHQqIGNyZWF0ZURlZmF1bHRXZWJDb250ZXh0KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEV3a19Db250ZXh0LCBkZWZhdWx0Q29udGV4dCwgKCkpOworICAgIGRlZmF1bHRDb250ZXh0
LmNvbnRleHQgPSBXS0NvbnRleHRHZXRTaGFyZWRQcm9jZXNzQ29udGV4dCgpOworICAgIHJldHVy
biAmZGVmYXVsdENvbnRleHQ7Cit9CisKK1dLQ29udGV4dFJlZiBld2tfY29udGV4dF9XS0NvbnRl
eHRfZ2V0KEV3a19Db250ZXh0KiBld2tDb250ZXh0KQoreworICAgIHJldHVybiBld2tDb250ZXh0
LT5jb250ZXh0LmdldCgpOworfQorCitFd2tfQ29udGV4dCogZXdrX2NvbnRleHRfZGVmYXVsdF9n
ZXQoKQoreworICAgIHN0YXRpYyBFd2tfQ29udGV4dCogY29udGV4dCA9IGNyZWF0ZURlZmF1bHRX
ZWJDb250ZXh0KCk7CisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDRmMmQwYzRmMzg3
ODg4Mjk5NzVlNGFhNjZmZGRmNmI1ZDVmZDYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaApAQCAtMCwwICsxLDM4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYg
ZXdrX2NvbnRleHRfaAorI2RlZmluZSBld2tfY29udGV4dF9oCisKKyNpbmNsdWRlIDxFdmFzLmg+
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwordHlwZWRlZiBz
dHJ1Y3QgX0V3a19Db250ZXh0IEV3a19Db250ZXh0OworCitFQVBJIEV3a19Db250ZXh0ICpld2tf
Y29udGV4dF9kZWZhdWx0X2dldCgpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgor
CisjZW5kaWYgLy8gZXdrX2NvbnRleHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxZmUzMjA2
ZDYyZjM3ZTU4YTBlNzllYWRjMjY4NjQ4MzA3YjA3NDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKQEAgLTAs
MCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaWZuZGVmIGV3a19jb250ZXh0X3ByaXZhdGVfaAorI2RlZmluZSBld2tfY29udGV4dF9w
cml2YXRlX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKK3R5cGVkZWYgc3RydWN0
IF9Fd2tfQ29udGV4dCBFd2tfQ29udGV4dDsKKworV0tDb250ZXh0UmVmIGV3a19jb250ZXh0X1dL
Q29udGV4dF9nZXQoRXdrX0NvbnRleHQqKTsKKworI2VuZGlmIC8vIGV3a19jb250ZXh0X3ByaXZh
dGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmlu
ZGV4IDI2OWMwNzJkNjRhOTA1MzQ5NGEwZDYyOTdhMjAwNjg0MTIwMzg5NjkuLjljMTljNjA1ZmQy
MjBmNmE0OWIwYTYyOGFhNjE2ZDM4NjYwMGZhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTI1LDYgKzI1LDEyIEBACiAjaW5jbHVkZSAi
TmF0aXZlV2ViV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCiAjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJX
S1VSTC5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRf
cHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKQEAgLTMzLDYgKzM5LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgRVdLX1ZJRVdf
VFlQRV9TVFJbXSA9ICJFV0syX1ZpZXciOwogCiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0
YSB7CiAgICAgT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50OworICAgIGNvbnN0IGNo
YXIqIHVyaTsKIH07CiAKICNkZWZpbmUgRVdLX1ZJRVdfVFlQRV9DSEVDSyhld2tWaWV3LCByZXN1
bHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0yNTksNiArMjY2LDkg
QEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
cHJpdikKICAgICAgICAgcmV0dXJuOwogCiAgICAgcHJpdi0+cGFnZUNsaWVudCA9IG51bGxwdHI7
CisKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChwcml2LT51cmkpOworCiAgICAgZnJlZShwcml2
KTsKIH0KIApAQCAtNDYxLDcgKzQ3MSw3IEBAIHN0YXRpYyBpbmxpbmUgRXZhc19TbWFydCogX2V3
a192aWV3X3NtYXJ0X2NsYXNzX25ldyh2b2lkKQogICAgIHJldHVybiBzbWFydDsKIH0KIAotRXZh
c19PYmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiBjb250ZXh0
UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCitFdmFzX09iamVjdCogZXdrX3ZpZXdf
YmFzZV9hZGQoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwUmVmKQogewogICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gZXZhc19v
YmplY3Rfc21hcnRfYWRkKGNhbnZhcywgX2V3a192aWV3X3NtYXJ0X2NsYXNzX25ldygpKTsKICAg
ICBpZiAoIWV3a1ZpZXcpCkBAIC00ODQsMTIgKzQ5NCwzNSBAQCBFdmFzX09iamVjdCogZXdrX3Zp
ZXdfYWRkKEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3Vw
UmVmCiAgICAgcmV0dXJuIGV3a1ZpZXc7CiB9CiAKLVdLUGFnZVJlZiBld2tfdmlld19wYWdlX2dl
dChFdmFzX09iamVjdCogZXdrVmlldykKK0V2YXNfT2JqZWN0KiBld2tfdmlld19hZGRfd2l0aF9j
b250ZXh0KEV2YXMqIGNhbnZhcywgRXdrX0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJu
IGV3a192aWV3X2Jhc2VfYWRkKGNhbnZhcywgZXdrX2NvbnRleHRfV0tDb250ZXh0X2dldChjb250
ZXh0KSwgMCk7Cit9CisKK0V2YXNfT2JqZWN0KiBld2tfdmlld19hZGQoRXZhcyogY2FudmFzKQor
eworICAgIHJldHVybiBld2tfdmlld19hZGRfd2l0aF9jb250ZXh0KGNhbnZhcywgZXdrX2NvbnRl
eHRfZGVmYXVsdF9nZXQoKSk7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld191cmlfc2V0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB1cmkpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOworCisgICAgV0tSZXRhaW5QdHI8V0tVUkxS
ZWY+IHVybChBZG9wdFdLLCBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1cmkpKTsKKyAgICBX
S1BhZ2VMb2FkVVJMKHRvQVBJKHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKSksIHVybC5nZXQoKSk7
CisKKyAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnVyaSwgdXJpKTsKKworICAg
IHJldHVybiB0cnVlOworfQorCitjb25zdCBjaGFyKiBld2tfdmlld191cmlfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCAwKTsKIAotICAgIHJldHVybiB0b0FQSShwcml2LT5wYWdlQ2xpZW50LT5w
YWdlKCkpOworICAgIHJldHVybiBwcml2LT51cmk7CiB9CiAKIHZvaWQgZXdrX3ZpZXdfZGlzcGxh
eShFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGM4OTU2YmNhNzI3YjlhMzg5
ZGEwMDViODliNDVlMWYyYzEzYzc4MjUuLjVhM2U1MmUyMGUwZjI1ZjQ4Yjc5YzJlN2FlMzk5ODg1
YzZlOTMxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
aApAQCAtMjAsOCArMjAsOCBAQAogI2lmbmRlZiBld2tfdmlld19oCiAjZGVmaW5lIGV3a192aWV3
X2gKIAorI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCiAjaW5jbHVkZSA8RXZhcy5oPgotI2luY2x1
ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7
CkBAIC0xMjAsMjEgKzEyMCw0MSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgewogICog
Q3JlYXRlcyBhIG5ldyBFRkwgV2ViS2l0IFZpZXcgb2JqZWN0LgogICoKICAqIEBwYXJhbSBlIGNh
bnZhcyBvYmplY3Qgd2hlcmUgdG8gY3JlYXRlIHRoZSB2aWV3IG9iamVjdAotICogQHBhcmFtIGNv
bnRleHQgV0tDb250ZXh0J3MgUmVmZXJlbmNlIHBvaW50ZXIKLSAqIEBwYXJhbSBwYWdlX2dyb3Vw
IFdLUGFnZUdyb3VwJ3MgUmVmZXJlbmNlIHBvaW50ZXIKICAqCiAgKiBAcmV0dXJuIHZpZXcgb2Jq
ZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCiAgKi8KLUVBUEkgRXZhc19PYmplY3Qq
IGV3a192aWV3X2FkZChFdmFzKiBlLCBXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3JvdXBS
ZWYgcGFnZV9ncm91cCk7CitFQVBJIEV2YXNfT2JqZWN0ICpld2tfdmlld19hZGQoRXZhcyAqZSk7
CiAKIC8qKgotICogR2V0cyB0aGUgV0tQYWdlUmVmIG9mIHRoaXMgdmlldy4KKyAqIENyZWF0ZXMg
YSBuZXcgRUZMIFdlYktpdCBWaWV3IG9iamVjdC4KKyAqCisgKiBAcGFyYW0gZSBjYW52YXMgb2Jq
ZWN0IHdoZXJlIHRvIGNyZWF0ZSB0aGUgdmlldyBvYmplY3QKKyAqIEBwYXJhbSBjb250ZXh0IEV3
a19Db250ZXh0IG9iamVjdCB0byBkZWNsYXJlIHByb2Nlc3MgbW9kZWwKKyAqCisgKiBAcmV0dXJu
IHZpZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRXZh
c19PYmplY3QgKmV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyAqZSwgRXdrX0NvbnRleHQg
KmNvbnRleHQpOworCisvKioKKyAqIFJlcXVlc3RzIGxvYWRpbmcgb2YgdGhlIGdpdmVuIFVSSSBz
dHJpbmcuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gbG9hZCBAYSB1cmkKKyAqIEBw
YXJhbSB1cmkgdW5pZm9ybSByZXNvdXJjZSBpZGVudGlmaWVyIHRvIGxvYWQKKyAqCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzZnVsIHJlcXVlc3Qgb3IgQGMgRUlOQV9GQUxTRSBv
biBmYWlsdXJlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3VyaV9zZXQoRXZhc19PYmpl
Y3QgKm8sIGNvbnN0IGNoYXIgKnVyaSk7CisKKy8qKgorICogUmV0dXJucyB0aGUgY3VycmVudCB1
cmkgc3RyaW5nIG9mIHBhZ2UuCisgKgorICogVGhlIHJldHVybmVkIHN0cmluZyBAYiBzaG91bGQg
YmUgZnJlZWQgYWZ0ZXIgdXNlLgogICoKLSAqIEBwYXJhbSBvIHRoZSB2aWV3IG9iamVjdCB0byBn
ZXQgdGhlIFdLUGFnZVJlZgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IGN1cnJlbnQg
dXJpCiAgKgotICogQHJldHVybiB0aGUgV0tQYWdlUmVmIG9mIHRoaXMgdmlldworICogQHJldHVy
biBjdXJyZW50IHVyaSBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFpbHVyZQogICovCi1FQVBJIFdL
UGFnZVJlZiBld2tfdmlld19wYWdlX2dldChFdmFzX09iamVjdCogbyk7CitFQVBJIGNvbnN0IGNo
YXIgKmV3a192aWV3X3VyaV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCiAjaWZkZWYgX19j
cGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3X3ByaXZhdGUuaAppbmRleCBlNzc2NzI1Y2M0NWYyNzUzNjFjMTBkZmI2N2YyMDhlMzg2
M2U0YjA3Li4xOWQwYzg2ODkyNjk0NjcwOGM2OGUxYzU3ZjFhZDVmYWNlYWM3MDI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5o
CkBAIC0yMSw3ICsyMSw5IEBACiAjaWZuZGVmIGV3a192aWV3X3ByaXZhdGVfaAogI2RlZmluZSBl
d2tfdmlld19wcml2YXRlX2gKIAorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUg
PEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBJbnRSZWN0OwpAQCAtMzEsNCArMzMsNiBAQCBjbGFzcyBJbnRTaXplOwogdm9p
ZCBld2tfdmlld19kaXNwbGF5KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiByZWN0KTsKIHZvaWQgZXdrX3ZpZXdfaW1hZ2VfZGF0YV9zZXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIHZvaWQqIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSk7
CiAKK0V2YXNfT2JqZWN0KiBld2tfdmlld19iYXNlX2FkZChFdmFzKiBjYW52YXMsIFdLQ29udGV4
dFJlZiwgV0tQYWdlR3JvdXBSZWYpOworCiAjZW5kaWYgLy8gZXdrX3ZpZXdfcHJpdmF0ZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145220</attachid>
            <date>2012-05-31 23:52:10 -0700</date>
            <delta_ts>2012-06-01 00:23:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84124-20120601155208.patch</filename>
            <type>text/plain</type>
            <size>13682</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmRkODMwYzFjMDdiZDcx
OGYxNDlmZmRiZWVmNGI4Y2ZmZGE4YTc5ZS4uYWViYjk0NzNhZjZhNGM3YTlhNDcyNDNmZjJiNzlj
NmQ0Y2M0ZDAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA1LTMxICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBhbmQgcmVmYWN0b3IgZXdrIEFQSSBpbiBvcmRlciB0byBzdXBwb3J0IE1pbmlCcm93c2VyIHdp
dGhvdXQgV0sgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQxMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb2RpZnkgZXdrX3ZpZXcgYW5kIGFkZCBld2tfY29udGV4dCB0byBwcm92aWRlIGEgaGln
aCBsZXZlbCBXZWJLaXQyIEFQSQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBXSyBBUEkuCisgICAg
ICAgIFRoaXMgcGF0Y2ggcHJvdmlkZSB0aGUgbWluaW11bSB0byBzdXBwb3J0IE1pbmlCcm93c2Vy
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IGFkZCBld2tfY29udGV4dC5jcHAuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tf
Q29udGV4dCk6CisgICAgICAgIChjcmVhdGVEZWZhdWx0V2ViQ29udGV4dCk6CisgICAgICAgIChl
d2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X2RlZmF1bHRf
Z2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9F
d2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKKyAg
ICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToKKyAgICAgICAgKGV3a192aWV3X2FkZF93aXRoX2Nv
bnRleHQpOgorICAgICAgICAoZXdrX3ZpZXdfYWRkKToKKyAgICAgICAgKGV3a192aWV3X3VyaV9z
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdXJpX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19w
cml2YXRlLmg6CisKIDIwMTItMDUtMzEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTE3NTcyKTogZWRpdGluZy9zcGVsbGluZy9z
cGVsbGNoZWNrLWFzeW5jLXJlbW92ZS1mcmFtZS5odG1sIGNyYXNoZXMgb24gTWFjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCmluZGV4IGJjNmU5NjYzOGQyOTRhZjQ0M2RkZDY0NjM4ZjQxMGIwYWM2
YWM1NDYuLmZmMWRkMTg2NmE0N2QxZDkzYTJhODQyZmViYmEzYzlmODVlZGVlYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0yOCw2ICsyOCw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJf
U09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNw
cAogCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCisgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuY3BwCiAKICAgICBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTg1
NzFkMmU4YmQ1YmJhZTYxZmU5NTNlNmI2NDEyOWY0ZTg0ODIzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAtMCwwICsxLDI3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBw
cm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
Zm5kZWYgRVdlYktpdDJfaAorI2RlZmluZSBFV2ViS2l0Ml9oCisKKyNpbmNsdWRlICJld2tfY29u
dGV4dC5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisKKyNlbmRpZiAvLyBFV2ViS2l0Ml9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDhkZjI2NWIxMTc1ZjdjNjhjODM2ZWExMDU3YmU0OTdkNWM5M2JjYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
LmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfY29udGV4
dC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIK
KyNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CisKK3N0cnVjdCBfRXdrX0NvbnRleHQgeworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJl
Zj4gY29udGV4dDsKK307CisKK3N0YXRpYyBFd2tfQ29udGV4dCogY3JlYXRlRGVmYXVsdFdlYkNv
bnRleHQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRXdrX0NvbnRleHQsIGRlZmF1bHRD
b250ZXh0LCAoKSk7CisgICAgZGVmYXVsdENvbnRleHQuY29udGV4dCA9IFdLQ29udGV4dEdldFNo
YXJlZFByb2Nlc3NDb250ZXh0KCk7CisgICAgcmV0dXJuICZkZWZhdWx0Q29udGV4dDsKK30KKwor
V0tDb250ZXh0UmVmIGV3a19jb250ZXh0X1dLQ29udGV4dF9nZXQoRXdrX0NvbnRleHQqIGV3a0Nv
bnRleHQpCit7CisgICAgcmV0dXJuIGV3a0NvbnRleHQtPmNvbnRleHQuZ2V0KCk7Cit9CisKK0V3
a19Db250ZXh0KiBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpCit7CisgICAgc3RhdGljIEV3a19D
b250ZXh0KiBjb250ZXh0ID0gY3JlYXRlRGVmYXVsdFdlYkNvbnRleHQoKTsKKyAgICByZXR1cm4g
Y29udGV4dDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ0NGYyZDBjNGYzODc4ODgyOTk3NWU0YWE2NmZkZGY2YjVkNWZk
NjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBld2tfY29udGV4dF9oCisjZGVmaW5lIGV3
a19jb250ZXh0X2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitl
eHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRleHQgRXdrX0Nv
bnRleHQ7CisKK0VBUEkgRXdrX0NvbnRleHQgKmV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCk7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfY29udGV4dF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFmZTMyMDZkNjJmMzdlNThhMGU3OWVhZGMyNjg2NDgz
MDdiMDc0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaApAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRf
cHJpdmF0ZV9oCisjZGVmaW5lIGV3a19jb250ZXh0X3ByaXZhdGVfaAorCisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0Jhc2UuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Db250ZXh0IEV3a19Db250ZXh0
OworCitXS0NvbnRleHRSZWYgZXdrX2NvbnRleHRfV0tDb250ZXh0X2dldChFd2tfQ29udGV4dCop
OworCisjZW5kaWYgLy8gZXdrX2NvbnRleHRfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggMjY5YzA3MmQ2NGE5MDUzNDk0YTBk
NjI5N2EyMDA2ODQxMjAzODk2OS4uOWMxOWM2MDVmZDIyMGY2YTQ5YjBhNjI4YWE2MTZkMzg2NjAw
ZmE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cApAQCAtMjUsNiArMjUsMTIgQEAKICNpbmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCiAj
aW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNs
dWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgIldLVVJMLmgiCisjaW5jbHVkZSAiZXdrX2Nv
bnRleHQuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdr
X3ZpZXdfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMzMsNiArMzks
NyBAQCBzdGF0aWMgY29uc3QgY2hhciBFV0tfVklFV19UWVBFX1NUUltdID0gIkVXSzJfVmlldyI7
CiAKIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBPd25QdHI8UGFnZUNsaWVu
dEltcGw+IHBhZ2VDbGllbnQ7CisgICAgY29uc3QgY2hhciogdXJpOwogfTsKIAogI2RlZmluZSBF
V0tfVklFV19UWVBFX0NIRUNLKGV3a1ZpZXcsIHJlc3VsdCkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKQEAgLTI1OSw2ICsyNjYsOSBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
cHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQogICAgICAgICByZXR1cm47CiAK
ICAgICBwcml2LT5wYWdlQ2xpZW50ID0gbnVsbHB0cjsKKworICAgIGVpbmFfc3RyaW5nc2hhcmVf
ZGVsKHByaXYtPnVyaSk7CisKICAgICBmcmVlKHByaXYpOwogfQogCkBAIC00NjEsNyArNDcxLDcg
QEAgc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KHZv
aWQpCiAgICAgcmV0dXJuIHNtYXJ0OwogfQogCi1FdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2
YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZikKK0V2YXNfT2JqZWN0KiBld2tfdmlld19iYXNlX2FkZChFdmFzKiBjYW52YXMsIFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiB7CiAg
ICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSBldmFzX29iamVjdF9zbWFydF9hZGQoY2FudmFzLCBf
ZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KCkpOwogICAgIGlmICghZXdrVmlldykKQEAgLTQ4NCwx
MiArNDk0LDM1IEBAIEV2YXNfT2JqZWN0KiBld2tfdmlld19hZGQoRXZhcyogY2FudmFzLCBXS0Nv
bnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYKICAgICByZXR1cm4gZXdrVmlldzsK
IH0KIAotV0tQYWdlUmVmIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQor
RXZhc19PYmplY3QqIGV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyogY2FudmFzLCBFd2tf
Q29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gZXdrX3ZpZXdfYmFzZV9hZGQoY2FudmFz
LCBld2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KGNvbnRleHQpLCAwKTsKK30KKworRXZhc19PYmpl
Y3QqIGV3a192aWV3X2FkZChFdmFzKiBjYW52YXMpCit7CisgICAgcmV0dXJuIGV3a192aWV3X2Fk
ZF93aXRoX2NvbnRleHQoY2FudmFzLCBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpKTsKK30KKwor
RWluYV9Cb29sIGV3a192aWV3X3VyaV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNo
YXIqIHVyaSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgMCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgMCk7CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsKEFkb3B0V0ssIFdLVVJMQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKHVyaSkpOworICAgIFdLUGFnZUxvYWRVUkwodG9BUEkocHJpdi0+
cGFnZUNsaWVudC0+cGFnZSgpKSwgdXJsLmdldCgpKTsKKworICAgIGVpbmFfc3RyaW5nc2hhcmVf
cmVwbGFjZSgmcHJpdi0+dXJpLCB1cmkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2NvbnN0
IGNoYXIqIGV3a192aWV3X3VyaV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwogICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwogCi0gICAg
cmV0dXJuIHRvQVBJKHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKSk7CisgICAgcmV0dXJuIHByaXYt
PnVyaTsKIH0KIAogdm9pZCBld2tfdmlld19kaXNwbGF5KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBj
b25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmgKaW5kZXggYzg5NTZiY2E3MjdiOWEzODlkYTAwNWI4OWI0NWUxZjJjMTNjNzgyNS4u
MDMzMDY2MDA4ZjAzODkxODdlZWI3MjNlOWFjMDgwZmE2OTM0N2ZkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC0yMCw4ICsyMCw4IEBACiAjaWZu
ZGVmIGV3a192aWV3X2gKICNkZWZpbmUgZXdrX3ZpZXdfaAogCisjaW5jbHVkZSAiZXdrX2NvbnRl
eHQuaCIKICNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAog
I2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKQEAgLTExNywyNCArMTE3LDQ1IEBAIHN0
cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSB7CiB9OwogCiAvKioKLSAqIENyZWF0ZXMgYSBuZXcg
RUZMIFdlYktpdCBWaWV3IG9iamVjdC4KKyAqIENyZWF0ZXMgYSBuZXcgRUZMIFdlYktpdCB2aWV3
IG9iamVjdC4KICAqCiAgKiBAcGFyYW0gZSBjYW52YXMgb2JqZWN0IHdoZXJlIHRvIGNyZWF0ZSB0
aGUgdmlldyBvYmplY3QKLSAqIEBwYXJhbSBjb250ZXh0IFdLQ29udGV4dCdzIFJlZmVyZW5jZSBw
b2ludGVyCi0gKiBAcGFyYW0gcGFnZV9ncm91cCBXS1BhZ2VHcm91cCdzIFJlZmVyZW5jZSBwb2lu
dGVyCiAgKgogICogQHJldHVybiB2aWV3IG9iamVjdCBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFp
bHVyZQogICovCi1FQVBJIEV2YXNfT2JqZWN0KiBld2tfdmlld19hZGQoRXZhcyogZSwgV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VfZ3JvdXApOworRUFQSSBFdmFzX09i
amVjdCAqZXdrX3ZpZXdfYWRkKEV2YXMgKmUpOwogCiAvKioKLSAqIEdldHMgdGhlIFdLUGFnZVJl
ZiBvZiB0aGlzIHZpZXcuCisgKiBDcmVhdGVzIGEgbmV3IEVGTCBXZWJLaXQgdmlldyBvYmplY3Qg
YmFzZWQgb24gc3BlY2lmaWMgRXdrX0NvbnRleHQuCiAgKgotICogQHBhcmFtIG8gdGhlIHZpZXcg
b2JqZWN0IHRvIGdldCB0aGUgV0tQYWdlUmVmCisgKiBAcGFyYW0gZSBjYW52YXMgb2JqZWN0IHdo
ZXJlIHRvIGNyZWF0ZSB0aGUgdmlldyBvYmplY3QKKyAqIEBwYXJhbSBjb250ZXh0IEV3a19Db250
ZXh0IG9iamVjdCB0byBkZWNsYXJlIHByb2Nlc3MgbW9kZWwKKyAqCisgKiBAcmV0dXJuIHZpZXcg
b2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRXZhc19PYmpl
Y3QgKmV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyAqZSwgRXdrX0NvbnRleHQgKmNvbnRl
eHQpOworCisvKioKKyAqIEFza3MgdGhlIG9iamVjdCB0byBsb2FkIHRoZSBnaXZlbiBVUkkuCisg
KgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gbG9hZCBAYSB1cmkKKyAqIEBwYXJhbSB1cmkg
dW5pZm9ybSByZXNvdXJjZSBpZGVudGlmaWVyIHRvIGxvYWQKKyAqCisgKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBvbiBzdWNjZXNzZnVsIHJlcXVlc3Qgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJl
CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3VyaV9zZXQoRXZhc19PYmplY3QgKm8sIGNv
bnN0IGNoYXIgKnVyaSk7CisKKy8qKgorICogUmV0dXJucyB0aGUgY3VycmVudCB1cmkgc3RyaW5n
IG9mIHZpZXcgb2JqZWN0LgorICoKKyAqIEl0IHJldHVybnMgYSBpbnRlcm5hbCBzdHJpbmcgYW5k
IHNob3VsZCBub3QKKyAqIGJlIG1vZGlmaWVkLiBUaGUgc3RyaW5nIGlzIGd1YXJhbnRlZWQgdG8g
YmUgc3RyaW5nc2hhcmVkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBjdXJy
ZW50IHVyaQogICoKLSAqIEByZXR1cm4gdGhlIFdLUGFnZVJlZiBvZiB0aGlzIHZpZXcKKyAqIEBy
ZXR1cm4gY3VycmVudCB1cmkgb24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKICAqLwotRUFQ
SSBXS1BhZ2VSZWYgZXdrX3ZpZXdfcGFnZV9nZXQoRXZhc19PYmplY3QqIG8pOworRUFQSSBjb25z
dCBjaGFyICpld2tfdmlld191cmlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggZTc3NjcyNWNjNDVmMjc1MzYxYzEwZGZiNjdmMjA4
ZTM4NjNlNGIwNy4uMTlkMGM4Njg5MjY5NDY3MDhjNjhlMWM1N2YxYWQ1ZmFjZWFjNzAyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZh
dGUuaApAQCAtMjEsNyArMjEsOSBAQAogI2lmbmRlZiBld2tfdmlld19wcml2YXRlX2gKICNkZWZp
bmUgZXdrX3ZpZXdfcHJpdmF0ZV9oCiAKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNs
dWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgSW50UmVjdDsKQEAgLTMxLDQgKzMzLDYgQEAgY2xhc3MgSW50U2l6ZTsK
IHZvaWQgZXdrX3ZpZXdfZGlzcGxheShFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgcmVjdCk7CiB2b2lkIGV3a192aWV3X2ltYWdlX2RhdGFfc2V0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCB2b2lkKiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNp
emUpOwogCitFdmFzX09iamVjdCogZXdrX3ZpZXdfYmFzZV9hZGQoRXZhcyogY2FudmFzLCBXS0Nv
bnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmKTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVf
aAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145226</attachid>
            <date>2012-06-01 00:23:15 -0700</date>
            <delta_ts>2012-06-03 19:37:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84124-20120601162313.patch</filename>
            <type>text/plain</type>
            <size>13682</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmRkODMwYzFjMDdiZDcx
OGYxNDlmZmRiZWVmNGI4Y2ZmZGE4YTc5ZS4uYWViYjk0NzNhZjZhNGM3YTlhNDcyNDNmZjJiNzlj
NmQ0Y2M0ZDAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA1LTMxICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBhbmQgcmVmYWN0b3IgZXdrIEFQSSBpbiBvcmRlciB0byBzdXBwb3J0IE1pbmlCcm93c2VyIHdp
dGhvdXQgV0sgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQxMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb2RpZnkgZXdrX3ZpZXcgYW5kIGFkZCBld2tfY29udGV4dCB0byBwcm92aWRlIGEgaGln
aCBsZXZlbCBXZWJLaXQyIEFQSQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBXSyBBUEkuCisgICAg
ICAgIFRoaXMgcGF0Y2ggcHJvdmlkZSB0aGUgbWluaW11bSB0byBzdXBwb3J0IE1pbmlCcm93c2Vy
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IGFkZCBld2tfY29udGV4dC5jcHAuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tf
Q29udGV4dCk6CisgICAgICAgIChjcmVhdGVEZWZhdWx0V2ViQ29udGV4dCk6CisgICAgICAgIChl
d2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X2RlZmF1bHRf
Z2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9F
d2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKKyAg
ICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToKKyAgICAgICAgKGV3a192aWV3X2FkZF93aXRoX2Nv
bnRleHQpOgorICAgICAgICAoZXdrX3ZpZXdfYWRkKToKKyAgICAgICAgKGV3a192aWV3X3VyaV9z
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdXJpX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19w
cml2YXRlLmg6CisKIDIwMTItMDUtMzEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTE3NTcyKTogZWRpdGluZy9zcGVsbGluZy9z
cGVsbGNoZWNrLWFzeW5jLXJlbW92ZS1mcmFtZS5odG1sIGNyYXNoZXMgb24gTWFjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCmluZGV4IGJjNmU5NjYzOGQyOTRhZjQ0M2RkZDY0NjM4ZjQxMGIwYWM2
YWM1NDYuLmZmMWRkMTg2NmE0N2QxZDkzYTJhODQyZmViYmEzYzlmODVlZGVlYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0yOCw2ICsyOCw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJf
U09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNw
cAogCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCisgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuY3BwCiAKICAgICBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTg1
NzFkMmU4YmQ1YmJhZTYxZmU5NTNlNmI2NDEyOWY0ZTg0ODIzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApAQCAtMCwwICsxLDI3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBw
cm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
Zm5kZWYgRVdlYktpdDJfaAorI2RlZmluZSBFV2ViS2l0Ml9oCisKKyNpbmNsdWRlICJld2tfY29u
dGV4dC5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisKKyNlbmRpZiAvLyBFV2ViS2l0Ml9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDhkZjI2NWIxMTc1ZjdjNjhjODM2ZWExMDU3YmU0OTdkNWM5M2JjYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
LmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfY29udGV4
dC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIK
KyNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CisKK3N0cnVjdCBfRXdrX0NvbnRleHQgeworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJl
Zj4gY29udGV4dDsKK307CisKK3N0YXRpYyBFd2tfQ29udGV4dCogY3JlYXRlRGVmYXVsdFdlYkNv
bnRleHQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRXdrX0NvbnRleHQsIGRlZmF1bHRD
b250ZXh0LCAoKSk7CisgICAgZGVmYXVsdENvbnRleHQuY29udGV4dCA9IFdLQ29udGV4dEdldFNo
YXJlZFByb2Nlc3NDb250ZXh0KCk7CisgICAgcmV0dXJuICZkZWZhdWx0Q29udGV4dDsKK30KKwor
V0tDb250ZXh0UmVmIGV3a19jb250ZXh0X1dLQ29udGV4dF9nZXQoRXdrX0NvbnRleHQqIGV3a0Nv
bnRleHQpCit7CisgICAgcmV0dXJuIGV3a0NvbnRleHQtPmNvbnRleHQuZ2V0KCk7Cit9CisKK0V3
a19Db250ZXh0KiBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpCit7CisgICAgc3RhdGljIEV3a19D
b250ZXh0KiBjb250ZXh0ID0gY3JlYXRlRGVmYXVsdFdlYkNvbnRleHQoKTsKKyAgICByZXR1cm4g
Y29udGV4dDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ0NGYyZDBjNGYzODc4ODgyOTk3NWU0YWE2NmZkZGY2YjVkNWZk
NjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBld2tfY29udGV4dF9oCisjZGVmaW5lIGV3
a19jb250ZXh0X2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitl
eHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRleHQgRXdrX0Nv
bnRleHQ7CisKK0VBUEkgRXdrX0NvbnRleHQgKmV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCk7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfY29udGV4dF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFmZTMyMDZkNjJmMzdlNThhMGU3OWVhZGMyNjg2NDgz
MDdiMDc0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaApAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRf
cHJpdmF0ZV9oCisjZGVmaW5lIGV3a19jb250ZXh0X3ByaXZhdGVfaAorCisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0Jhc2UuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Db250ZXh0IEV3a19Db250ZXh0
OworCitXS0NvbnRleHRSZWYgZXdrX2NvbnRleHRfV0tDb250ZXh0X2dldChFd2tfQ29udGV4dCop
OworCisjZW5kaWYgLy8gZXdrX2NvbnRleHRfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggMjY5YzA3MmQ2NGE5MDUzNDk0YTBk
NjI5N2EyMDA2ODQxMjAzODk2OS4uOWMxOWM2MDVmZDIyMGY2YTQ5YjBhNjI4YWE2MTZkMzg2NjAw
ZmE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cApAQCAtMjUsNiArMjUsMTIgQEAKICNpbmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCiAj
aW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNs
dWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgIldLVVJMLmgiCisjaW5jbHVkZSAiZXdrX2Nv
bnRleHQuaCIKKyNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdr
X3ZpZXdfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMzMsNiArMzks
NyBAQCBzdGF0aWMgY29uc3QgY2hhciBFV0tfVklFV19UWVBFX1NUUltdID0gIkVXSzJfVmlldyI7
CiAKIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBPd25QdHI8UGFnZUNsaWVu
dEltcGw+IHBhZ2VDbGllbnQ7CisgICAgY29uc3QgY2hhciogdXJpOwogfTsKIAogI2RlZmluZSBF
V0tfVklFV19UWVBFX0NIRUNLKGV3a1ZpZXcsIHJlc3VsdCkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKQEAgLTI1OSw2ICsyNjYsOSBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
cHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQogICAgICAgICByZXR1cm47CiAK
ICAgICBwcml2LT5wYWdlQ2xpZW50ID0gbnVsbHB0cjsKKworICAgIGVpbmFfc3RyaW5nc2hhcmVf
ZGVsKHByaXYtPnVyaSk7CisKICAgICBmcmVlKHByaXYpOwogfQogCkBAIC00NjEsNyArNDcxLDcg
QEAgc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KHZv
aWQpCiAgICAgcmV0dXJuIHNtYXJ0OwogfQogCi1FdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2
YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZikKK0V2YXNfT2JqZWN0KiBld2tfdmlld19iYXNlX2FkZChFdmFzKiBjYW52YXMsIFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiB7CiAg
ICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSBldmFzX29iamVjdF9zbWFydF9hZGQoY2FudmFzLCBf
ZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KCkpOwogICAgIGlmICghZXdrVmlldykKQEAgLTQ4NCwx
MiArNDk0LDM1IEBAIEV2YXNfT2JqZWN0KiBld2tfdmlld19hZGQoRXZhcyogY2FudmFzLCBXS0Nv
bnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYKICAgICByZXR1cm4gZXdrVmlldzsK
IH0KIAotV0tQYWdlUmVmIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQor
RXZhc19PYmplY3QqIGV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyogY2FudmFzLCBFd2tf
Q29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gZXdrX3ZpZXdfYmFzZV9hZGQoY2FudmFz
LCBld2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KGNvbnRleHQpLCAwKTsKK30KKworRXZhc19PYmpl
Y3QqIGV3a192aWV3X2FkZChFdmFzKiBjYW52YXMpCit7CisgICAgcmV0dXJuIGV3a192aWV3X2Fk
ZF93aXRoX2NvbnRleHQoY2FudmFzLCBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpKTsKK30KKwor
RWluYV9Cb29sIGV3a192aWV3X3VyaV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNo
YXIqIHVyaSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgMCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgMCk7CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsKEFkb3B0V0ssIFdLVVJMQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKHVyaSkpOworICAgIFdLUGFnZUxvYWRVUkwodG9BUEkocHJpdi0+
cGFnZUNsaWVudC0+cGFnZSgpKSwgdXJsLmdldCgpKTsKKworICAgIGVpbmFfc3RyaW5nc2hhcmVf
cmVwbGFjZSgmcHJpdi0+dXJpLCB1cmkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2NvbnN0
IGNoYXIqIGV3a192aWV3X3VyaV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwogICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwogCi0gICAg
cmV0dXJuIHRvQVBJKHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKSk7CisgICAgcmV0dXJuIHByaXYt
PnVyaTsKIH0KIAogdm9pZCBld2tfdmlld19kaXNwbGF5KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBj
b25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmgKaW5kZXggYzg5NTZiY2E3MjdiOWEzODlkYTAwNWI4OWI0NWUxZjJjMTNjNzgyNS4u
NzEwNzBmMWE2MmM1OTVmZjgxMzE1YjA1M2Y0MjAxMWNkNjgwNTU3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC0yMCw4ICsyMCw4IEBACiAjaWZu
ZGVmIGV3a192aWV3X2gKICNkZWZpbmUgZXdrX3ZpZXdfaAogCisjaW5jbHVkZSAiZXdrX2NvbnRl
eHQuaCIKICNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAog
I2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKQEAgLTExNywyNCArMTE3LDQ1IEBAIHN0
cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSB7CiB9OwogCiAvKioKLSAqIENyZWF0ZXMgYSBuZXcg
RUZMIFdlYktpdCBWaWV3IG9iamVjdC4KKyAqIENyZWF0ZXMgYSBuZXcgRUZMIFdlYktpdCB2aWV3
IG9iamVjdC4KICAqCiAgKiBAcGFyYW0gZSBjYW52YXMgb2JqZWN0IHdoZXJlIHRvIGNyZWF0ZSB0
aGUgdmlldyBvYmplY3QKLSAqIEBwYXJhbSBjb250ZXh0IFdLQ29udGV4dCdzIFJlZmVyZW5jZSBw
b2ludGVyCi0gKiBAcGFyYW0gcGFnZV9ncm91cCBXS1BhZ2VHcm91cCdzIFJlZmVyZW5jZSBwb2lu
dGVyCiAgKgogICogQHJldHVybiB2aWV3IG9iamVjdCBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFp
bHVyZQogICovCi1FQVBJIEV2YXNfT2JqZWN0KiBld2tfdmlld19hZGQoRXZhcyogZSwgV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VfZ3JvdXApOworRUFQSSBFdmFzX09i
amVjdCAqZXdrX3ZpZXdfYWRkKEV2YXMgKmUpOwogCiAvKioKLSAqIEdldHMgdGhlIFdLUGFnZVJl
ZiBvZiB0aGlzIHZpZXcuCisgKiBDcmVhdGVzIGEgbmV3IEVGTCBXZWJLaXQgdmlldyBvYmplY3Qg
YmFzZWQgb24gc3BlY2lmaWMgRXdrX0NvbnRleHQuCiAgKgotICogQHBhcmFtIG8gdGhlIHZpZXcg
b2JqZWN0IHRvIGdldCB0aGUgV0tQYWdlUmVmCisgKiBAcGFyYW0gZSBjYW52YXMgb2JqZWN0IHdo
ZXJlIHRvIGNyZWF0ZSB0aGUgdmlldyBvYmplY3QKKyAqIEBwYXJhbSBjb250ZXh0IEV3a19Db250
ZXh0IG9iamVjdCB0byBkZWNsYXJlIHByb2Nlc3MgbW9kZWwKKyAqCisgKiBAcmV0dXJuIHZpZXcg
b2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRXZhc19PYmpl
Y3QgKmV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyAqZSwgRXdrX0NvbnRleHQgKmNvbnRl
eHQpOworCisvKioKKyAqIEFza3MgdGhlIG9iamVjdCB0byBsb2FkIHRoZSBnaXZlbiB1cmkuCisg
KgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gbG9hZCBAYSB1cmkKKyAqIEBwYXJhbSB1cmkg
dW5pZm9ybSByZXNvdXJjZSBpZGVudGlmaWVyIHRvIGxvYWQKKyAqCisgKiBAcmV0dXJuIEBjIEVJ
TkFfVFJVRSBvbiBzdWNjZXNzZnVsIHJlcXVlc3Qgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJl
CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3VyaV9zZXQoRXZhc19PYmplY3QgKm8sIGNv
bnN0IGNoYXIgKnVyaSk7CisKKy8qKgorICogUmV0dXJucyB0aGUgY3VycmVudCB1cmkgc3RyaW5n
IG9mIHZpZXcgb2JqZWN0LgorICoKKyAqIEl0IHJldHVybnMgYSBpbnRlcm5hbCBzdHJpbmcgYW5k
IHNob3VsZCBub3QKKyAqIGJlIG1vZGlmaWVkLiBUaGUgc3RyaW5nIGlzIGd1YXJhbnRlZWQgdG8g
YmUgc3RyaW5nc2hhcmVkLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBjdXJy
ZW50IHVyaQogICoKLSAqIEByZXR1cm4gdGhlIFdLUGFnZVJlZiBvZiB0aGlzIHZpZXcKKyAqIEBy
ZXR1cm4gY3VycmVudCB1cmkgb24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKICAqLwotRUFQ
SSBXS1BhZ2VSZWYgZXdrX3ZpZXdfcGFnZV9nZXQoRXZhc19PYmplY3QqIG8pOworRUFQSSBjb25z
dCBjaGFyICpld2tfdmlld191cmlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggZTc3NjcyNWNjNDVmMjc1MzYxYzEwZGZiNjdmMjA4
ZTM4NjNlNGIwNy4uMTlkMGM4Njg5MjY5NDY3MDhjNjhlMWM1N2YxYWQ1ZmFjZWFjNzAyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZh
dGUuaApAQCAtMjEsNyArMjEsOSBAQAogI2lmbmRlZiBld2tfdmlld19wcml2YXRlX2gKICNkZWZp
bmUgZXdrX3ZpZXdfcHJpdmF0ZV9oCiAKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNs
dWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgSW50UmVjdDsKQEAgLTMxLDQgKzMzLDYgQEAgY2xhc3MgSW50U2l6ZTsK
IHZvaWQgZXdrX3ZpZXdfZGlzcGxheShFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgcmVjdCk7CiB2b2lkIGV3a192aWV3X2ltYWdlX2RhdGFfc2V0KEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCB2b2lkKiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNp
emUpOwogCitFdmFzX09iamVjdCogZXdrX3ZpZXdfYmFzZV9hZGQoRXZhcyogY2FudmFzLCBXS0Nv
bnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmKTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVf
aAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145504</attachid>
            <date>2012-06-03 19:37:09 -0700</date>
            <delta_ts>2012-06-03 20:18:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84124-20120604113707.patch</filename>
            <type>text/plain</type>
            <size>14402</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjhjMDg2ZjhmNzBjNmFl
NzZjNzBjZTEyYWFiYTQzMWQzZjZkOWY4OS4uNTFiYjM5OWJmMjllYWUyZDAzNDg0NWIzZTQ0ZWVl
MWI4NDkxNzkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA2LTAzICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBhbmQgcmVmYWN0b3IgZXdrIEFQSSBpbiBvcmRlciB0byBzdXBwb3J0IE1pbmlCcm93c2VyIHdp
dGhvdXQgV0sgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQxMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb2RpZnkgZXdrX3ZpZXcgYW5kIGFkZCBld2tfY29udGV4dCB0byBwcm92aWRlIGEgaGln
aCBsZXZlbCBXZWJLaXQyIEFQSQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBXSyBBUEkuCisgICAg
ICAgIFRoaXMgcGF0Y2ggcHJvdmlkZSB0aGUgbWluaW11bSB0byBzdXBwb3J0IE1pbmlCcm93c2Vy
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IGFkZCBld2tfY29udGV4dC5jcHAuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tf
Q29udGV4dCk6CisgICAgICAgIChjcmVhdGVEZWZhdWx0V2ViQ29udGV4dCk6CisgICAgICAgIChl
d2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X2RlZmF1bHRf
Z2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9F
d2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKKyAg
ICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToKKyAgICAgICAgKGV3a192aWV3X2FkZF93aXRoX2Nv
bnRleHQpOgorICAgICAgICAoZXdrX3ZpZXdfYWRkKToKKyAgICAgICAgKGV3a192aWV3X3VyaV9z
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdXJpX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19w
cml2YXRlLmg6CisKIDIwMTItMDYtMDIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBUcnkgdG8gZml4IHRoZSBXaW5kb3dzIGJ1aWxkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQppbmRleCBiYzZlOTY2MzhkMjk0YWY0NDNkZGQ2NDYzOGY0MTBiMGFjNmFjNTQ2
Li5mZjFkZDE4NjZhNDdkMWQ5M2EyYTg0MmZlYmJhM2M5Zjg1ZWRlZWI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMjgsNiArMjgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJD
RVMKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHAKIAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAorICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cAogCiAgICAgVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDMzMDAyNDk3
OGU2MThiN2FlODY2NWNkY2E4ODI1NThjNDI4OGY1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTAsMCArMSwzNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh
bTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisvKioKKyAq
IEBmaWxlICAgIEVXZWJLaXQyLmgKKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBoZWFkZXIgZmls
ZXMgdGhhdCBhcmUgcmVxdWlyZWQgYnkgV2ViS2l0Mi1FRkwuCisgKgorICogSXQgaW5jbHVkZXMg
dGhlIGFsbCBoZWFkZXIgZmlsZXMgdGhhdCBhcmUgZXhwb3J0ZWQgdG8gcHVibGljIEFQSS4KKyAq
LworCisjaWZuZGVmIEVXZWJLaXQyX2gKKyNkZWZpbmUgRVdlYktpdDJfaAorCisjaW5jbHVkZSAi
ZXdrX2NvbnRleHQuaCIKKyNpbmNsdWRlICJld2tfdmlldy5oIgorCisjZW5kaWYgLy8gRVdlYktp
dDJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJmNWI4NDIzYWQyODJkZmMxMWI1ZTQxM2ZhMGViYTk3M2EwZGFjMDQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dC5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdr
X2NvbnRleHQuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLUmV0YWlu
UHRyLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OworCitzdHJ1Y3QgX0V3a19Db250ZXh0IHsKKyAgICBXS1JldGFpblB0cjxXS0Nv
bnRleHRSZWY+IGNvbnRleHQ7Cit9OworCitzdGF0aWMgRXdrX0NvbnRleHQqIGNyZWF0ZURlZmF1
bHRXZWJDb250ZXh0KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEV3a19Db250ZXh0LCBk
ZWZhdWx0Q29udGV4dCwgKCkpOworICAgIGRlZmF1bHRDb250ZXh0LmNvbnRleHQgPSBXS0NvbnRl
eHRHZXRTaGFyZWRQcm9jZXNzQ29udGV4dCgpOworICAgIHJldHVybiAmZGVmYXVsdENvbnRleHQ7
Cit9CisKK1dLQ29udGV4dFJlZiBld2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KGNvbnN0IEV3a19D
b250ZXh0KiBld2tDb250ZXh0KQoreworICAgIHJldHVybiBld2tDb250ZXh0LT5jb250ZXh0Lmdl
dCgpOworfQorCitFd2tfQ29udGV4dCogZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKQoreworICAg
IHN0YXRpYyBFd2tfQ29udGV4dCogY29udGV4dCA9IGNyZWF0ZURlZmF1bHRXZWJDb250ZXh0KCk7
CisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZGI1MGRhNDA1NzJjOWI5MGMyNTNhYjhk
ZDIwMjQyYWM1MGI4OTUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdr
X2NvbnRleHQuaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBjb250ZXh0IEFQSS4KKyAqCisg
KiBAbm90ZSBld2tfY29udGV4dCBlbmNhcHN1bGF0ZXMgYWxsIHBhZ2VzIHJlbGF0ZWQgdG8gc3Bl
Y2lmaWMgdXNlIG9mIFdlYktpdC4KKyAqIEFsbCBwYWdlcyBpbiB0aGlzIGNvbnRleHQgc2hhcmUg
dGhlIHNhbWUgdmlzaXRlZCBsaW5rIHNldCwKKyAqIGxvY2FsIHN0b3JhZ2Ugc2V0LCBhbmQgcHJl
ZmVyZW5jZXMuIAorICovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRfaAorI2RlZmluZSBld2tfY29u
dGV4dF9oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfQ29u
dGV4dC4gKi8KK3R5cGVkZWYgc3RydWN0IF9Fd2tfQ29udGV4dCBFd2tfQ29udGV4dDsKKworLyoq
CisgKiBHZXQgZGVmYXVsdCBFd2tfQ29udGV4dCBpbnN0YW5jZS4KKyAqCisgKiBAcmV0dXJuIEV3
a19Db250ZXh0IG9iamVjdC4KKyAqLworRUFQSSBFd2tfQ29udGV4dCAqZXdrX2NvbnRleHRfZGVm
YXVsdF9nZXQoKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8v
IGV3a19jb250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjQ4YzYzMGQ0YzhhNThjOTE5
ODJhZjAzY2QwYWMxYzg1OGQzNWM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRl
ZiBld2tfY29udGV4dF9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX2NvbnRleHRfcHJpdmF0ZV9oCisK
KyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCit0eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRl
eHQgRXdrX0NvbnRleHQ7CisKK1dLQ29udGV4dFJlZiBld2tfY29udGV4dF9XS0NvbnRleHRfZ2V0
KGNvbnN0IEV3a19Db250ZXh0Kik7CisKKyNlbmRpZiAvLyBld2tfY29udGV4dF9wcml2YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCAy
NjljMDcyZDY0YTkwNTM0OTRhMGQ2Mjk3YTIwMDY4NDEyMDM4OTY5Li5lMWZlMmQ3Mzk2Y2RlYTJj
YWM1ZDAyMGFjZmU3MjBkMzkwZTU4YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0yNSw2ICsyNSwxMiBAQAogI2luY2x1ZGUgIk5hdGl2
ZVdlYldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV0tVUkwu
aCIKKyNpbmNsdWRlICJld2tfY29udGV4dC5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZh
dGUuaCIKKyNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CkBAIC0zMyw2ICszOSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIEVXS19WSUVXX1RZUEVf
U1RSW10gPSAiRVdLMl9WaWV3IjsKIAogc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewog
ICAgIE93blB0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsKKyAgICBjb25zdCBjaGFyKiB1
cmk7CiB9OwogCiAjZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0soZXdrVmlldywgcmVzdWx0KSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMjU5LDYgKzI2Niw3IEBAIHN0
YXRpYyB2b2lkIF9ld2tfdmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYp
CiAgICAgICAgIHJldHVybjsKIAogICAgIHByaXYtPnBhZ2VDbGllbnQgPSBudWxscHRyOworICAg
IGVpbmFfc3RyaW5nc2hhcmVfZGVsKHByaXYtPnVyaSk7CiAgICAgZnJlZShwcml2KTsKIH0KIApA
QCAtNDYxLDcgKzQ2OSw3IEBAIHN0YXRpYyBpbmxpbmUgRXZhc19TbWFydCogX2V3a192aWV3X3Nt
YXJ0X2NsYXNzX25ldyh2b2lkKQogICAgIHJldHVybiBzbWFydDsKIH0KIAotRXZhc19PYmplY3Qq
IGV3a192aWV3X2FkZChFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1Bh
Z2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCitFdmFzX09iamVjdCogZXdrX3ZpZXdfYmFzZV9hZGQo
RXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFn
ZUdyb3VwUmVmKQogewogICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gZXZhc19vYmplY3Rfc21h
cnRfYWRkKGNhbnZhcywgX2V3a192aWV3X3NtYXJ0X2NsYXNzX25ldygpKTsKICAgICBpZiAoIWV3
a1ZpZXcpCkBAIC00ODQsMTIgKzQ5MiwzNSBAQCBFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2
YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmCiAgICAg
cmV0dXJuIGV3a1ZpZXc7CiB9CiAKLVdLUGFnZVJlZiBld2tfdmlld19wYWdlX2dldChFdmFzX09i
amVjdCogZXdrVmlldykKK0V2YXNfT2JqZWN0KiBld2tfdmlld193aXRoX2NvbnRleHRfYWRkKEV2
YXMqIGNhbnZhcywgRXdrX0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGV3a192aWV3
X2Jhc2VfYWRkKGNhbnZhcywgZXdrX2NvbnRleHRfV0tDb250ZXh0X2dldChjb250ZXh0KSwgMCk7
Cit9CisKK0V2YXNfT2JqZWN0KiBld2tfdmlld19hZGQoRXZhcyogY2FudmFzKQoreworICAgIHJl
dHVybiBld2tfdmlld193aXRoX2NvbnRleHRfYWRkKGNhbnZhcywgZXdrX2NvbnRleHRfZGVmYXVs
dF9nZXQoKSk7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld191cmlfc2V0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjb25zdCBjaGFyKiB1cmkpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYsIDApOworCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybChB
ZG9wdFdLLCBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1cmkpKTsKKyAgICBXS1BhZ2VMb2Fk
VVJMKHRvQVBJKHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKSksIHVybC5nZXQoKSk7CisKKyAgICBl
aW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnVyaSwgdXJpKTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitjb25zdCBjaGFyKiBld2tfdmlld191cmlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCAwKTsKIAotICAgIHJldHVybiB0b0FQSShwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCkpOwor
ICAgIHJldHVybiBwcml2LT51cmk7CiB9CiAKIHZvaWQgZXdrX3ZpZXdfZGlzcGxheShFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGM4OTU2YmNhNzI3YjlhMzg5ZGEwMDViODli
NDVlMWYyYzEzYzc4MjUuLmU4YTI2ZDM2NWYzZmI4N2M0NDZiNDFkOTVjNzUwZTM2MGEyOTM0NTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtMTcs
MTEgKzE3LDE4IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAqLwogCisvKioK
KyAqIEBmaWxlICAgIGV3a192aWV3LmgKKyAqIEBicmllZiAgIFdlYktpdCBtYWluIHNtYXJ0IG9i
amVjdC4KKyAqCisgKiBUaGlzIG9iamVjdCBhbGxvd3MgdGhlIGhpZ2ggbGV2ZWwgYWNjZXNzIHRv
IFdlYktpdDItRUZMIGNvbXBvbmVudC4KKyAqLworCiAjaWZuZGVmIGV3a192aWV3X2gKICNkZWZp
bmUgZXdrX3ZpZXdfaAogCisjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlIDxFdmFz
Lmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBl
eHRlcm4gIkMiIHsKQEAgLTExNywyNCArMTI0LDQ1IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRf
RGF0YSB7CiB9OwogCiAvKioKLSAqIENyZWF0ZXMgYSBuZXcgRUZMIFdlYktpdCBWaWV3IG9iamVj
dC4KKyAqIENyZWF0ZXMgYSBuZXcgRUZMIFdlYktpdCB2aWV3IG9iamVjdC4KICAqCiAgKiBAcGFy
YW0gZSBjYW52YXMgb2JqZWN0IHdoZXJlIHRvIGNyZWF0ZSB0aGUgdmlldyBvYmplY3QKLSAqIEBw
YXJhbSBjb250ZXh0IFdLQ29udGV4dCdzIFJlZmVyZW5jZSBwb2ludGVyCi0gKiBAcGFyYW0gcGFn
ZV9ncm91cCBXS1BhZ2VHcm91cCdzIFJlZmVyZW5jZSBwb2ludGVyCiAgKgogICogQHJldHVybiB2
aWV3IG9iamVjdCBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFpbHVyZQogICovCi1FQVBJIEV2YXNf
T2JqZWN0KiBld2tfdmlld19hZGQoRXZhcyogZSwgV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VfZ3JvdXApOworRUFQSSBFdmFzX09iamVjdCAqZXdrX3ZpZXdfYWRkKEV2
YXMgKmUpOwogCiAvKioKLSAqIEdldHMgdGhlIFdLUGFnZVJlZiBvZiB0aGlzIHZpZXcuCisgKiBD
cmVhdGVzIGEgbmV3IEVGTCBXZWJLaXQgdmlldyBvYmplY3QgYmFzZWQgb24gc3BlY2lmaWMgRXdr
X0NvbnRleHQuCisgKgorICogQHBhcmFtIGUgY2FudmFzIG9iamVjdCB3aGVyZSB0byBjcmVhdGUg
dGhlIHZpZXcgb2JqZWN0CisgKiBAcGFyYW0gY29udGV4dCBFd2tfQ29udGV4dCBvYmplY3QgdG8g
ZGVjbGFyZSBwcm9jZXNzIG1vZGVsCisgKgorICogQHJldHVybiB2aWV3IG9iamVjdCBvbiBzdWNj
ZXNzIG9yIEBjIDAgb24gZmFpbHVyZQorICovCitFQVBJIEV2YXNfT2JqZWN0ICpld2tfdmlld193
aXRoX2NvbnRleHRfYWRkKEV2YXMgKmUsIEV3a19Db250ZXh0ICpjb250ZXh0KTsKKworLyoqCisg
KiBBc2tzIHRoZSBvYmplY3QgdG8gbG9hZCB0aGUgZ2l2ZW4gdXJpLgorICoKKyAqIEBwYXJhbSBv
IHZpZXcgb2JqZWN0IHRvIGxvYWQgQGEgdXJpCisgKiBAcGFyYW0gdXJpIHVuaWZvcm0gcmVzb3Vy
Y2UgaWRlbnRpZmllciB0byBsb2FkCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3Vj
Y2Vzc2Z1bCByZXF1ZXN0IG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCitFQVBJIEVp
bmFfQm9vbCBld2tfdmlld191cmlfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp1cmkp
OworCisvKioKKyAqIFJldHVybnMgdGhlIGN1cnJlbnQgdXJpIHN0cmluZyBvZiB2aWV3IG9iamVj
dC4KKyAqCisgKiBJdCByZXR1cm5zIGEgaW50ZXJuYWwgc3RyaW5nIGFuZCBzaG91bGQgbm90Cisg
KiBiZSBtb2RpZmllZC4gVGhlIHN0cmluZyBpcyBndWFyYW50ZWVkIHRvIGJlIHN0cmluZ3NoYXJl
ZC4KICAqCi0gKiBAcGFyYW0gbyB0aGUgdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBXS1BhZ2VSZWYK
KyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBjdXJyZW50IHVyaQogICoKLSAqIEByZXR1
cm4gdGhlIFdLUGFnZVJlZiBvZiB0aGlzIHZpZXcKKyAqIEByZXR1cm4gY3VycmVudCB1cmkgb24g
c3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKICAqLwotRUFQSSBXS1BhZ2VSZWYgZXdrX3ZpZXdf
cGFnZV9nZXQoRXZhc19PYmplY3QqIG8pOworRUFQSSBjb25zdCBjaGFyICpld2tfdmlld191cmlf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgK
aW5kZXggZTc3NjcyNWNjNDVmMjc1MzYxYzEwZGZiNjdmMjA4ZTM4NjNlNGIwNy4uMTlkMGM4Njg5
MjY5NDY3MDhjNjhlMWM1N2YxYWQ1ZmFjZWFjNzAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApAQCAtMjEsNyArMjEsOSBA
QAogI2lmbmRlZiBld2tfdmlld19wcml2YXRlX2gKICNkZWZpbmUgZXdrX3ZpZXdfcHJpdmF0ZV9o
CiAKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVk
ZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW50UmVj
dDsKQEAgLTMxLDQgKzMzLDYgQEAgY2xhc3MgSW50U2l6ZTsKIHZvaWQgZXdrX3ZpZXdfZGlzcGxh
eShFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7CiB2
b2lkIGV3a192aWV3X2ltYWdlX2RhdGFfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lkKiBp
bWFnZURhdGEsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOwogCitFdmFzX09iamVjdCog
ZXdrX3ZpZXdfYmFzZV9hZGQoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3Vw
UmVmKTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145510</attachid>
            <date>2012-06-03 20:18:50 -0700</date>
            <delta_ts>2012-06-04 19:36:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84124-20120604121848.patch</filename>
            <type>text/plain</type>
            <size>14404</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjhjMDg2ZjhmNzBjNmFl
NzZjNzBjZTEyYWFiYTQzMWQzZjZkOWY4OS4uNTFiYjM5OWJmMjllYWUyZDAzNDg0NWIzZTQ0ZWVl
MWI4NDkxNzkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA2LTAzICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBhbmQgcmVmYWN0b3IgZXdrIEFQSSBpbiBvcmRlciB0byBzdXBwb3J0IE1pbmlCcm93c2VyIHdp
dGhvdXQgV0sgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQxMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb2RpZnkgZXdrX3ZpZXcgYW5kIGFkZCBld2tfY29udGV4dCB0byBwcm92aWRlIGEgaGln
aCBsZXZlbCBXZWJLaXQyIEFQSQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBXSyBBUEkuCisgICAg
ICAgIFRoaXMgcGF0Y2ggcHJvdmlkZSB0aGUgbWluaW11bSB0byBzdXBwb3J0IE1pbmlCcm93c2Vy
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IGFkZCBld2tfY29udGV4dC5jcHAuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tf
Q29udGV4dCk6CisgICAgICAgIChjcmVhdGVEZWZhdWx0V2ViQ29udGV4dCk6CisgICAgICAgIChl
d2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X2RlZmF1bHRf
Z2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9F
d2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKKyAg
ICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToKKyAgICAgICAgKGV3a192aWV3X2FkZF93aXRoX2Nv
bnRleHQpOgorICAgICAgICAoZXdrX3ZpZXdfYWRkKToKKyAgICAgICAgKGV3a192aWV3X3VyaV9z
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdXJpX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19w
cml2YXRlLmg6CisKIDIwMTItMDYtMDIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBUcnkgdG8gZml4IHRoZSBXaW5kb3dzIGJ1aWxkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQppbmRleCBiYzZlOTY2MzhkMjk0YWY0NDNkZGQ2NDYzOGY0MTBiMGFjNmFjNTQ2
Li5mZjFkZDE4NjZhNDdkMWQ5M2EyYTg0MmZlYmJhM2M5Zjg1ZWRlZWI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMjgsNiArMjgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJD
RVMKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHAKIAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAorICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cAogCiAgICAgVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDMzMDAyNDk3
OGU2MThiN2FlODY2NWNkY2E4ODI1NThjNDI4OGY1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTAsMCArMSwzNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh
bTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisvKioKKyAq
IEBmaWxlICAgIEVXZWJLaXQyLmgKKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBoZWFkZXIgZmls
ZXMgdGhhdCBhcmUgcmVxdWlyZWQgYnkgV2ViS2l0Mi1FRkwuCisgKgorICogSXQgaW5jbHVkZXMg
dGhlIGFsbCBoZWFkZXIgZmlsZXMgdGhhdCBhcmUgZXhwb3J0ZWQgdG8gcHVibGljIEFQSS4KKyAq
LworCisjaWZuZGVmIEVXZWJLaXQyX2gKKyNkZWZpbmUgRVdlYktpdDJfaAorCisjaW5jbHVkZSAi
ZXdrX2NvbnRleHQuaCIKKyNpbmNsdWRlICJld2tfdmlldy5oIgorCisjZW5kaWYgLy8gRVdlYktp
dDJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU5MDkxZDlhZmMyY2Y3OWM3YWVjMjA5NDU3NDZjMGRjYTBkOTdkY2IK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dC5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdr
X2NvbnRleHQuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLUmV0YWlu
UHRyLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OworCitzdHJ1Y3QgX0V3a19Db250ZXh0IHsKKyAgICBXS1JldGFpblB0cjxXS0Nv
bnRleHRSZWY+IGNvbnRleHQ7Cit9OworCitzdGF0aWMgRXdrX0NvbnRleHQqIF9ld2tfY29udGV4
dF9kZWZhdWx0X2dldCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChFd2tfQ29udGV4dCwg
ZGVmYXVsdENvbnRleHQsICgpKTsKKyAgICBkZWZhdWx0Q29udGV4dC5jb250ZXh0ID0gV0tDb250
ZXh0R2V0U2hhcmVkUHJvY2Vzc0NvbnRleHQoKTsKKyAgICByZXR1cm4gJmRlZmF1bHRDb250ZXh0
OworfQorCitXS0NvbnRleHRSZWYgZXdrX2NvbnRleHRfV0tDb250ZXh0X2dldChjb25zdCBFd2tf
Q29udGV4dCogZXdrQ29udGV4dCkKK3sKKyAgICByZXR1cm4gZXdrQ29udGV4dC0+Y29udGV4dC5n
ZXQoKTsKK30KKworRXdrX0NvbnRleHQqIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkKK3sKKyAg
ICBzdGF0aWMgRXdrX0NvbnRleHQqIGNvbnRleHQgPSBfZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQo
KTsKKyAgICByZXR1cm4gY29udGV4dDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmMzVmNTNjYjczMzExZWY1ZjgxN2Ri
NGNlMjc4ZmJiZWU4NTQyMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBl
d2tfY29udGV4dC5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIGNvbnRleHQgQVBJLgorICoK
KyAqIEBub3RlIGV3a19jb250ZXh0IGVuY2Fwc3VsYXRlcyBhbGwgcGFnZXMgcmVsYXRlZCB0byBz
cGVjaWZpYyB1c2Ugb2YgV2ViS2l0LgorICogQWxsIHBhZ2VzIGluIHRoaXMgY29udGV4dCBzaGFy
ZSB0aGUgc2FtZSB2aXNpdGVkIGxpbmsgc2V0LAorICogbG9jYWwgc3RvcmFnZSBzZXQsIGFuZCBw
cmVmZXJlbmNlcy4KKyAqLworCisjaWZuZGVmIGV3a19jb250ZXh0X2gKKyNkZWZpbmUgZXdrX2Nv
bnRleHRfaAorCisjaW5jbHVkZSA8RXZhcy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVy
biAiQyIgeworI2VuZGlmCisKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBfRXdrX0Nv
bnRleHQuICovCit0eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRleHQgRXdrX0NvbnRleHQ7CisKKy8q
KgorICogR2V0cyBkZWZhdWx0IEV3a19Db250ZXh0IGluc3RhbmNlLgorICoKKyAqIEByZXR1cm4g
RXdrX0NvbnRleHQgb2JqZWN0LgorICovCitFQVBJIEV3a19Db250ZXh0ICpld2tfY29udGV4dF9k
ZWZhdWx0X2dldCgpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYg
Ly8gZXdrX2NvbnRleHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmNDhjNjMwZDRjOGE1OGM5
MTk4MmFmMDNjZDBhYzFjODU4ZDM1YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKQEAgLTAsMCArMSwzMCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZu
ZGVmIGV3a19jb250ZXh0X3ByaXZhdGVfaAorI2RlZmluZSBld2tfY29udGV4dF9wcml2YXRlX2gK
KworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfQ29u
dGV4dCBFd2tfQ29udGV4dDsKKworV0tDb250ZXh0UmVmIGV3a19jb250ZXh0X1dLQ29udGV4dF9n
ZXQoY29uc3QgRXdrX0NvbnRleHQqKTsKKworI2VuZGlmIC8vIGV3a19jb250ZXh0X3ByaXZhdGVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4
IDI2OWMwNzJkNjRhOTA1MzQ5NGEwZDYyOTdhMjAwNjg0MTIwMzg5NjkuLmUxZmUyZDczOTZjZGVh
MmNhYzVkMDIwYWNmZTcyMGQzOTBlNThhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTI1LDYgKzI1LDEyIEBACiAjaW5jbHVkZSAiTmF0
aXZlV2ViV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCiAjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJXS1VS
TC5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJp
dmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKQEAgLTMzLDYgKzM5LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgRVdLX1ZJRVdfVFlQ
RV9TVFJbXSA9ICJFV0syX1ZpZXciOwogCiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7
CiAgICAgT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50OworICAgIGNvbnN0IGNoYXIq
IHVyaTsKIH07CiAKICNkZWZpbmUgRVdLX1ZJRVdfVFlQRV9DSEVDSyhld2tWaWV3LCByZXN1bHQp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0yNTksNiArMjY2LDcgQEAg
c3RhdGljIHZvaWQgX2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJp
dikKICAgICAgICAgcmV0dXJuOwogCiAgICAgcHJpdi0+cGFnZUNsaWVudCA9IG51bGxwdHI7Cisg
ICAgZWluYV9zdHJpbmdzaGFyZV9kZWwocHJpdi0+dXJpKTsKICAgICBmcmVlKHByaXYpOwogfQog
CkBAIC00NjEsNyArNDY5LDcgQEAgc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdf
c21hcnRfY2xhc3NfbmV3KHZvaWQpCiAgICAgcmV0dXJuIHNtYXJ0OwogfQogCi1FdmFzX09iamVj
dCogZXdrX3ZpZXdfYWRkKEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdL
UGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK0V2YXNfT2JqZWN0KiBld2tfdmlld19iYXNlX2Fk
ZChFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBw
YWdlR3JvdXBSZWYpCiB7CiAgICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSBldmFzX29iamVjdF9z
bWFydF9hZGQoY2FudmFzLCBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KCkpOwogICAgIGlmICgh
ZXdrVmlldykKQEAgLTQ4NCwxMiArNDkyLDM1IEBAIEV2YXNfT2JqZWN0KiBld2tfdmlld19hZGQo
RXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYKICAg
ICByZXR1cm4gZXdrVmlldzsKIH0KIAotV0tQYWdlUmVmIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNf
T2JqZWN0KiBld2tWaWV3KQorRXZhc19PYmplY3QqIGV3a192aWV3X3dpdGhfY29udGV4dF9hZGQo
RXZhcyogY2FudmFzLCBFd2tfQ29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gZXdrX3Zp
ZXdfYmFzZV9hZGQoY2FudmFzLCBld2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KGNvbnRleHQpLCAw
KTsKK30KKworRXZhc19PYmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBjYW52YXMpCit7CisgICAg
cmV0dXJuIGV3a192aWV3X3dpdGhfY29udGV4dF9hZGQoY2FudmFzLCBld2tfY29udGV4dF9kZWZh
dWx0X2dldCgpKTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3VyaV9zZXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHVyaSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdiwgMCk7CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJs
KEFkb3B0V0ssIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVyaSkpOworICAgIFdLUGFnZUxv
YWRVUkwodG9BUEkocHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpKSwgdXJsLmdldCgpKTsKKworICAg
IGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+dXJpLCB1cmkpOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2NvbnN0IGNoYXIqIGV3a192aWV3X3VyaV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIDApOwogCi0gICAgcmV0dXJuIHRvQVBJKHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKSk7
CisgICAgcmV0dXJuIHByaXYtPnVyaTsKIH0KIAogdm9pZCBld2tfdmlld19kaXNwbGF5KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXggYzg5NTZiY2E3MjdiOWEzODlkYTAwNWI4
OWI0NWUxZjJjMTNjNzgyNS4uOGUyMDk5NmRiYTFkZTJjMzhmNjJlN2YxNGZkYjFhOGM1ZDNhMjgw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC0x
NywxMSArMTcsMTggQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCiAKKy8q
KgorICogQGZpbGUgICAgZXdrX3ZpZXcuaAorICogQGJyaWVmICAgV2ViS2l0IG1haW4gc21hcnQg
b2JqZWN0LgorICoKKyAqIFRoaXMgb2JqZWN0IGFsbG93cyB0aGUgaGlnaCBsZXZlbCBhY2Nlc3Mg
dG8gV2ViS2l0Mi1FRkwgY29tcG9uZW50LgorICovCisKICNpZm5kZWYgZXdrX3ZpZXdfaAogI2Rl
ZmluZSBld2tfdmlld19oCiAKKyNpbmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgPEV2
YXMuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMK
IGV4dGVybiAiQyIgewpAQCAtMTE3LDI0ICsxMjQsNDUgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFy
dF9EYXRhIHsKIH07CiAKIC8qKgotICogQ3JlYXRlcyBhIG5ldyBFRkwgV2ViS2l0IFZpZXcgb2Jq
ZWN0LgorICogQ3JlYXRlcyBhIG5ldyBFRkwgV2ViS2l0IHZpZXcgb2JqZWN0LgogICoKICAqIEBw
YXJhbSBlIGNhbnZhcyBvYmplY3Qgd2hlcmUgdG8gY3JlYXRlIHRoZSB2aWV3IG9iamVjdAotICog
QHBhcmFtIGNvbnRleHQgV0tDb250ZXh0J3MgUmVmZXJlbmNlIHBvaW50ZXIKLSAqIEBwYXJhbSBw
YWdlX2dyb3VwIFdLUGFnZUdyb3VwJ3MgUmVmZXJlbmNlIHBvaW50ZXIKICAqCiAgKiBAcmV0dXJu
IHZpZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCiAgKi8KLUVBUEkgRXZh
c19PYmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBlLCBXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQ
YWdlR3JvdXBSZWYgcGFnZV9ncm91cCk7CitFQVBJIEV2YXNfT2JqZWN0ICpld2tfdmlld19hZGQo
RXZhcyAqZSk7CiAKIC8qKgotICogR2V0cyB0aGUgV0tQYWdlUmVmIG9mIHRoaXMgdmlldy4KKyAq
IENyZWF0ZXMgYSBuZXcgRUZMIFdlYktpdCB2aWV3IG9iamVjdCBiYXNlZCBvbiBzcGVjaWZpYyBF
d2tfQ29udGV4dC4KKyAqCisgKiBAcGFyYW0gZSBjYW52YXMgb2JqZWN0IHdoZXJlIHRvIGNyZWF0
ZSB0aGUgdmlldyBvYmplY3QKKyAqIEBwYXJhbSBjb250ZXh0IEV3a19Db250ZXh0IG9iamVjdCB0
byBkZWNsYXJlIHByb2Nlc3MgbW9kZWwKKyAqCisgKiBAcmV0dXJuIHZpZXcgb2JqZWN0IG9uIHN1
Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRXZhc19PYmplY3QgKmV3a192aWV3
X3dpdGhfY29udGV4dF9hZGQoRXZhcyAqZSwgRXdrX0NvbnRleHQgKmNvbnRleHQpOworCisvKioK
KyAqIEFza3MgdGhlIG9iamVjdCB0byBsb2FkIHRoZSBnaXZlbiBVUkkuCisgKgorICogQHBhcmFt
IG8gdmlldyBvYmplY3QgdG8gbG9hZCBAYSBVUkkKKyAqIEBwYXJhbSB1cmkgdW5pZm9ybSByZXNv
dXJjZSBpZGVudGlmaWVyIHRvIGxvYWQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzZnVsIHJlcXVlc3Qgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCisgKi8KK0VBUEkg
RWluYV9Cb29sIGV3a192aWV3X3VyaV9zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnVy
aSk7CisKKy8qKgorICogUmV0dXJucyB0aGUgY3VycmVudCBVUkkgc3RyaW5nIG9mIHZpZXcgb2Jq
ZWN0LgorICoKKyAqIEl0IHJldHVybnMgYSBpbnRlcm5hbCBzdHJpbmcgYW5kIHNob3VsZCBub3QK
KyAqIGJlIG1vZGlmaWVkLiBUaGUgc3RyaW5nIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RyaW5nc2hh
cmVkLgogICoKLSAqIEBwYXJhbSBvIHRoZSB2aWV3IG9iamVjdCB0byBnZXQgdGhlIFdLUGFnZVJl
ZgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IGN1cnJlbnQgVVJJCiAgKgotICogQHJl
dHVybiB0aGUgV0tQYWdlUmVmIG9mIHRoaXMgdmlldworICogQHJldHVybiBjdXJyZW50IFVSSSBv
biBzdWNjZXNzIG9yIEBjIDAgb24gZmFpbHVyZQogICovCi1FQVBJIFdLUGFnZVJlZiBld2tfdmll
d19wYWdlX2dldChFdmFzX09iamVjdCogbyk7CitFQVBJIGNvbnN0IGNoYXIgKmV3a192aWV3X3Vy
aV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUu
aAppbmRleCBlNzc2NzI1Y2M0NWYyNzUzNjFjMTBkZmI2N2YyMDhlMzg2M2U0YjA3Li4xOWQwYzg2
ODkyNjk0NjcwOGM2OGUxYzU3ZjFhZDVmYWNlYWM3MDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0yMSw3ICsyMSw5
IEBACiAjaWZuZGVmIGV3a192aWV3X3ByaXZhdGVfaAogI2RlZmluZSBld2tfdmlld19wcml2YXRl
X2gKIAorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRS
ZWN0OwpAQCAtMzEsNCArMzMsNiBAQCBjbGFzcyBJbnRTaXplOwogdm9pZCBld2tfdmlld19kaXNw
bGF5KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KTsK
IHZvaWQgZXdrX3ZpZXdfaW1hZ2VfZGF0YV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQq
IGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSk7CiAKK0V2YXNfT2JqZWN0
KiBld2tfdmlld19iYXNlX2FkZChFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiwgV0tQYWdlR3Jv
dXBSZWYpOworCiAjZW5kaWYgLy8gZXdrX3ZpZXdfcHJpdmF0ZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145682</attachid>
            <date>2012-06-04 19:36:51 -0700</date>
            <delta_ts>2012-06-05 06:47:36 -0700</delta_ts>
            <desc>eunmi&apos;s suggestion</desc>
            <filename>bug-84124-20120605113650.patch</filename>
            <type>text/plain</type>
            <size>14371</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzEzOGYxMDNkMDgxYTJm
ZGM3Nzg0NmM1ZWYyMTExYmMwOTlhMTMzYi4uYjgyZWY2NWZlYzg0Yjk4NzdiNzkyY2JjY2IyY2Qx
ZTYyMGMyOTVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA2LTA0ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBhbmQgcmVmYWN0b3IgZXdrIEFQSSBpbiBvcmRlciB0byBzdXBwb3J0IE1pbmlCcm93c2VyIHdp
dGhvdXQgV0sgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQxMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb2RpZnkgZXdrX3ZpZXcgYW5kIGFkZCBld2tfY29udGV4dCB0byBwcm92aWRlIGEgaGln
aCBsZXZlbCBXZWJLaXQyIEFQSQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBXSyBBUEkuCisgICAg
ICAgIFRoaXMgcGF0Y2ggcHJvdmlkZSB0aGUgbWluaW11bSB0byBzdXBwb3J0IE1pbmlCcm93c2Vy
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IGFkZCBld2tfY29udGV4dC5jcHAuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tf
Q29udGV4dCk6CisgICAgICAgIChjcmVhdGVEZWZhdWx0V2ViQ29udGV4dCk6CisgICAgICAgIChl
d2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X2RlZmF1bHRf
Z2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9F
d2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKKyAg
ICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToKKyAgICAgICAgKGV3a192aWV3X2FkZF93aXRoX2Nv
bnRleHQpOgorICAgICAgICAoZXdrX3ZpZXdfYWRkKToKKyAgICAgICAgKGV3a192aWV3X3VyaV9z
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdXJpX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19w
cml2YXRlLmg6CisKIDIwMTItMDYtMDQgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRydWxA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRml4IHNvZnR3YXJlIHJlbmRlcmlu
ZyBmb3IgZGV2aWNlLXNjYWxlLWZhY3RvciA+IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5k
ZXggYmM2ZTk2NjM4ZDI5NGFmNDQzZGRkNjQ2MzhmNDEwYjBhYzZhYzU0Ni4uZmYxZGQxODY2YTQ3
ZDFkOTNhMmE4NDJmZWJiYTNjOWY4NWVkZWViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
QEAgLTI4LDYgKzI4LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKIAogICAgIFVJUHJv
Y2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9FV2ViS2l0Mi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzMzAwMjQ5NzhlNjE4YjdhZTg2NjVj
ZGNhODgyNTU4YzQyODhmNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBFV2Vi
S2l0Mi5oCisgKiBAYnJpZWYgICBDb250YWlucyB0aGUgaGVhZGVyIGZpbGVzIHRoYXQgYXJlIHJl
cXVpcmVkIGJ5IFdlYktpdDItRUZMLgorICoKKyAqIEl0IGluY2x1ZGVzIHRoZSBhbGwgaGVhZGVy
IGZpbGVzIHRoYXQgYXJlIGV4cG9ydGVkIHRvIHB1YmxpYyBBUEkuCisgKi8KKworI2lmbmRlZiBF
V2ViS2l0Ml9oCisjZGVmaW5lIEVXZWJLaXQyX2gKKworI2luY2x1ZGUgImV3a19jb250ZXh0Lmgi
CisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKworI2VuZGlmIC8vIEVXZWJLaXQyX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45MDY4NWNmOTJjMWIzYzdhOGYzNjI2MTEwMTM1NDQyOTMwM2JmOWE0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBA
IC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJv
bmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisK
KyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1
ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwor
c3RydWN0IF9Fd2tfQ29udGV4dCB7CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250
ZXh0OworCisgICAgX0V3a19Db250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQorICAgIHsK
KyAgICAgICAgdGhpcy0+Y29udGV4dCA9IGNvbnRleHRSZWY7CisgICAgfQorfTsKKworV0tDb250
ZXh0UmVmIGV3a19jb250ZXh0X1dLQ29udGV4dF9nZXQoY29uc3QgRXdrX0NvbnRleHQqIGV3a0Nv
bnRleHQpCit7CisgICAgcmV0dXJuIGV3a0NvbnRleHQtPmNvbnRleHQuZ2V0KCk7Cit9CisKK0V3
a19Db250ZXh0KiBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpCit7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChFd2tfQ29udGV4dCwgZGVmYXVsdENvbnRleHQsIChXS0NvbnRleHRHZXRTaGFyZWRQ
cm9jZXNzQ29udGV4dCgpKSk7CisgICAgcmV0dXJuICZkZWZhdWx0Q29udGV4dDsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJmMzVmNTNjYjczMzExZWY1ZjgxN2RiNGNlMjc4ZmJiZWU4NTQyMGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCkBAIC0w
LDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmlj
cworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHBy
b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisg
Ki8KKworLyoqCisgKiBAZmlsZSAgICBld2tfY29udGV4dC5oCisgKiBAYnJpZWYgICBEZXNjcmli
ZXMgdGhlIGNvbnRleHQgQVBJLgorICoKKyAqIEBub3RlIGV3a19jb250ZXh0IGVuY2Fwc3VsYXRl
cyBhbGwgcGFnZXMgcmVsYXRlZCB0byBzcGVjaWZpYyB1c2Ugb2YgV2ViS2l0LgorICogQWxsIHBh
Z2VzIGluIHRoaXMgY29udGV4dCBzaGFyZSB0aGUgc2FtZSB2aXNpdGVkIGxpbmsgc2V0LAorICog
bG9jYWwgc3RvcmFnZSBzZXQsIGFuZCBwcmVmZXJlbmNlcy4KKyAqLworCisjaWZuZGVmIGV3a19j
b250ZXh0X2gKKyNkZWZpbmUgZXdrX2NvbnRleHRfaAorCisjaW5jbHVkZSA8RXZhcy5oPgorCisj
aWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKiBDcmVhdGVzIGEg
dHlwZSBuYW1lIGZvciBAYSBfRXdrX0NvbnRleHQuICovCit0eXBlZGVmIHN0cnVjdCBfRXdrX0Nv
bnRleHQgRXdrX0NvbnRleHQ7CisKKy8qKgorICogR2V0cyBkZWZhdWx0IEV3a19Db250ZXh0IGlu
c3RhbmNlLgorICoKKyAqIEByZXR1cm4gRXdrX0NvbnRleHQgb2JqZWN0LgorICovCitFQVBJIEV3
a19Db250ZXh0ICpld2tfY29udGV4dF9kZWZhdWx0X2dldCgpOworCisjaWZkZWYgX19jcGx1c3Bs
dXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX2NvbnRleHRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBmNDhjNjMwZDRjOGE1OGM5MTk4MmFmMDNjZDBhYzFjODU4ZDM1YzYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9w
cml2YXRlLmgKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1z
dW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIGV3a19jb250ZXh0X3ByaXZhdGVfaAorI2RlZmlu
ZSBld2tfY29udGV4dF9wcml2YXRlX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisK
K3R5cGVkZWYgc3RydWN0IF9Fd2tfQ29udGV4dCBFd2tfQ29udGV4dDsKKworV0tDb250ZXh0UmVm
IGV3a19jb250ZXh0X1dLQ29udGV4dF9nZXQoY29uc3QgRXdrX0NvbnRleHQqKTsKKworI2VuZGlm
IC8vIGV3a19jb250ZXh0X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDI2OWMwNzJkNjRhOTA1MzQ5NGEwZDYyOTdhMjAwNjg0
MTIwMzg5NjkuLmRlMmFhODljOWM4NTRkNzMxMTM3N2U2NDYxNGUzMzVkMWFiODMxMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTI1LDYg
KzI1LDEyIEBACiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlBh
Z2VDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tSZXRh
aW5QdHIuaCIKKyNpbmNsdWRlICJXS1VSTC5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisj
aW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZh
dGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTMzLDYgKzM5LDcgQEAgc3RhdGlj
IGNvbnN0IGNoYXIgRVdLX1ZJRVdfVFlQRV9TVFJbXSA9ICJFV0syX1ZpZXciOwogCiBzdHJ1Y3Qg
X0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBwYWdl
Q2xpZW50OworICAgIGNvbnN0IGNoYXIqIHVyaTsKIH07CiAKICNkZWZpbmUgRVdLX1ZJRVdfVFlQ
RV9DSEVDSyhld2tWaWV3LCByZXN1bHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCkBAIC0yNTksNiArMjY2LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3ByaXZfZGVsKEV3
a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKICAgICAgICAgcmV0dXJuOwogCiAgICAgcHJpdi0+
cGFnZUNsaWVudCA9IG51bGxwdHI7CisgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwocHJpdi0+dXJp
KTsKICAgICBmcmVlKHByaXYpOwogfQogCkBAIC00NjEsNyArNDY5LDcgQEAgc3RhdGljIGlubGlu
ZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KHZvaWQpCiAgICAgcmV0dXJu
IHNtYXJ0OwogfQogCi1FdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2YXMqIGNhbnZhcywgV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK0V2YXNf
T2JqZWN0KiBld2tfdmlld19iYXNlX2FkZChFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiB7CiAgICAgRXZhc19PYmplY3Qq
IGV3a1ZpZXcgPSBldmFzX29iamVjdF9zbWFydF9hZGQoY2FudmFzLCBfZXdrX3ZpZXdfc21hcnRf
Y2xhc3NfbmV3KCkpOwogICAgIGlmICghZXdrVmlldykKQEAgLTQ4NCwxMiArNDkyLDM1IEBAIEV2
YXNfT2JqZWN0KiBld2tfdmlld19hZGQoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4
dFJlZiwgV0tQYWdlR3JvdXBSZWYKICAgICByZXR1cm4gZXdrVmlldzsKIH0KIAotV0tQYWdlUmVm
IGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQorRXZhc19PYmplY3QqIGV3
a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyogY2FudmFzLCBFd2tfQ29udGV4dCogY29udGV4
dCkKK3sKKyAgICByZXR1cm4gZXdrX3ZpZXdfYmFzZV9hZGQoY2FudmFzLCBld2tfY29udGV4dF9X
S0NvbnRleHRfZ2V0KGNvbnRleHQpLCAwKTsKK30KKworRXZhc19PYmplY3QqIGV3a192aWV3X2Fk
ZChFdmFzKiBjYW52YXMpCit7CisgICAgcmV0dXJuIGV3a192aWV3X2FkZF93aXRoX2NvbnRleHQo
Y2FudmFzLCBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpKTsKK30KKworRWluYV9Cb29sIGV3a192
aWV3X3VyaV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHVyaSkKK3sKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgMCk7CisKKyAgICBX
S1JldGFpblB0cjxXS1VSTFJlZj4gdXJsKEFkb3B0V0ssIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKHVyaSkpOworICAgIFdLUGFnZUxvYWRVUkwodG9BUEkocHJpdi0+cGFnZUNsaWVudC0+cGFn
ZSgpKSwgdXJsLmdldCgpKTsKKworICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+
dXJpLCB1cmkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2NvbnN0IGNoYXIqIGV3a192aWV3
X3VyaV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwogCi0gICAgcmV0dXJuIHRvQVBJKHBy
aXYtPnBhZ2VDbGllbnQtPnBhZ2UoKSk7CisgICAgcmV0dXJuIHByaXYtPnVyaTsKIH0KIAogdm9p
ZCBld2tfdmlld19kaXNwbGF5KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXgg
Yzg5NTZiY2E3MjdiOWEzODlkYTAwNWI4OWI0NWUxZjJjMTNjNzgyNS4uMzNmMWFhNTE5YWI0YmI1
Yjg1NzI2NzQ0OTRkN2VmMzJiNTc3MThiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oCkBAIC0xNywxMSArMTcsMTggQEAKICAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KICovCiAKKy8qKgorICogQGZpbGUgICAgZXdrX3ZpZXcuaAorICogQGJy
aWVmICAgV2ViS2l0IG1haW4gc21hcnQgb2JqZWN0LgorICoKKyAqIFRoaXMgb2JqZWN0IGFsbG93
cyB0aGUgaGlnaCBsZXZlbCBhY2Nlc3MgdG8gV2ViS2l0Mi1FRkwgY29tcG9uZW50LgorICovCisK
ICNpZm5kZWYgZXdrX3ZpZXdfaAogI2RlZmluZSBld2tfdmlld19oCiAKKyNpbmNsdWRlICJld2tf
Y29udGV4dC5oIgogI2luY2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5o
PgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtMTE3LDI0ICsxMjQsNDUg
QEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIHsKIH07CiAKIC8qKgotICogQ3JlYXRlcyBh
IG5ldyBFRkwgV2ViS2l0IFZpZXcgb2JqZWN0LgorICogQ3JlYXRlcyBhIG5ldyBFRkwgV2ViS2l0
IHZpZXcgb2JqZWN0LgogICoKICAqIEBwYXJhbSBlIGNhbnZhcyBvYmplY3Qgd2hlcmUgdG8gY3Jl
YXRlIHRoZSB2aWV3IG9iamVjdAotICogQHBhcmFtIGNvbnRleHQgV0tDb250ZXh0J3MgUmVmZXJl
bmNlIHBvaW50ZXIKLSAqIEBwYXJhbSBwYWdlX2dyb3VwIFdLUGFnZUdyb3VwJ3MgUmVmZXJlbmNl
IHBvaW50ZXIKICAqCiAgKiBAcmV0dXJuIHZpZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBv
biBmYWlsdXJlCiAgKi8KLUVBUEkgRXZhc19PYmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBlLCBX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZV9ncm91cCk7CitFQVBJIEV2
YXNfT2JqZWN0ICpld2tfdmlld19hZGQoRXZhcyAqZSk7CiAKIC8qKgotICogR2V0cyB0aGUgV0tQ
YWdlUmVmIG9mIHRoaXMgdmlldy4KKyAqIENyZWF0ZXMgYSBuZXcgRUZMIFdlYktpdCB2aWV3IG9i
amVjdCBiYXNlZCBvbiBzcGVjaWZpYyBFd2tfQ29udGV4dC4KKyAqCisgKiBAcGFyYW0gZSBjYW52
YXMgb2JqZWN0IHdoZXJlIHRvIGNyZWF0ZSB0aGUgdmlldyBvYmplY3QKKyAqIEBwYXJhbSBjb250
ZXh0IEV3a19Db250ZXh0IG9iamVjdCB0byBkZWNsYXJlIHByb2Nlc3MgbW9kZWwKKyAqCisgKiBA
cmV0dXJuIHZpZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCisgKi8KK0VB
UEkgRXZhc19PYmplY3QgKmV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyAqZSwgRXdrX0Nv
bnRleHQgKmNvbnRleHQpOworCisvKioKKyAqIEFza3MgdGhlIG9iamVjdCB0byBsb2FkIHRoZSBn
aXZlbiBVUkkuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gbG9hZCBAYSBVUkkKKyAq
IEBwYXJhbSB1cmkgdW5pZm9ybSByZXNvdXJjZSBpZGVudGlmaWVyIHRvIGxvYWQKKyAqCisgKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzZnVsIHJlcXVlc3Qgb3IgQGMgRUlOQV9GQUxT
RSBvbiBmYWlsdXJlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3VyaV9zZXQoRXZhc19P
YmplY3QgKm8sIGNvbnN0IGNoYXIgKnVyaSk7CisKKy8qKgorICogUmV0dXJucyB0aGUgY3VycmVu
dCBVUkkgc3RyaW5nIG9mIHZpZXcgb2JqZWN0LgorICoKKyAqIEl0IHJldHVybnMgYSBpbnRlcm5h
bCBzdHJpbmcgYW5kIHNob3VsZCBub3QKKyAqIGJlIG1vZGlmaWVkLiBUaGUgc3RyaW5nIGlzIGd1
YXJhbnRlZWQgdG8gYmUgc3RyaW5nc2hhcmVkLgogICoKLSAqIEBwYXJhbSBvIHRoZSB2aWV3IG9i
amVjdCB0byBnZXQgdGhlIFdLUGFnZVJlZgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0
IGN1cnJlbnQgVVJJCiAgKgotICogQHJldHVybiB0aGUgV0tQYWdlUmVmIG9mIHRoaXMgdmlldwor
ICogQHJldHVybiBjdXJyZW50IFVSSSBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFpbHVyZQogICov
Ci1FQVBJIFdLUGFnZVJlZiBld2tfdmlld19wYWdlX2dldChFdmFzX09iamVjdCogbyk7CitFQVBJ
IGNvbnN0IGNoYXIgKmV3a192aWV3X3VyaV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCiAj
aWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCBlNzc2NzI1Y2M0NWYyNzUzNjFjMTBkZmI2
N2YyMDhlMzg2M2U0YjA3Li4xOWQwYzg2ODkyNjk0NjcwOGM2OGUxYzU3ZjFhZDVmYWNlYWM3MDI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19w
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdf
cHJpdmF0ZS5oCkBAIC0yMSw3ICsyMSw5IEBACiAjaWZuZGVmIGV3a192aWV3X3ByaXZhdGVfaAog
I2RlZmluZSBld2tfdmlld19wcml2YXRlX2gKIAorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgog
I2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0OwpAQCAtMzEsNCArMzMsNiBAQCBjbGFzcyBJbnRT
aXplOwogdm9pZCBld2tfdmlld19kaXNwbGF5KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiByZWN0KTsKIHZvaWQgZXdrX3ZpZXdfaW1hZ2VfZGF0YV9zZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2l6ZSk7CiAKK0V2YXNfT2JqZWN0KiBld2tfdmlld19iYXNlX2FkZChFdmFzKiBjYW52YXMs
IFdLQ29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYpOworCiAjZW5kaWYgLy8gZXdrX3ZpZXdfcHJp
dmF0ZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145780</attachid>
            <date>2012-06-05 06:47:46 -0700</date>
            <delta_ts>2012-06-09 05:43:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84124-20120605224744.patch</filename>
            <type>text/plain</type>
            <size>14393</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmMzMGEwODYwMzIzOGRl
MDdmMGQ4YjlkZTA0NDA0ZTQxYmJmZTY0YS4uY2EyYzBjMGM1ZTlmOGNhNWVkNDFiMDE5ZDc2NWI0
OTVmZGNmMWMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA2LTA1ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBhbmQgcmVmYWN0b3IgZXdrIEFQSSBpbiBvcmRlciB0byBzdXBwb3J0IE1pbmlCcm93c2VyIHdp
dGhvdXQgV0sgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQxMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb2RpZnkgZXdrX3ZpZXcgYW5kIGFkZCBld2tfY29udGV4dCB0byBwcm92aWRlIGEgaGln
aCBsZXZlbCBXZWJLaXQyIEFQSQorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBXSyBBUEkuCisgICAg
ICAgIFRoaXMgcGF0Y2ggcHJvdmlkZSB0aGUgbWluaW11bSB0byBzdXBwb3J0IE1pbmlCcm93c2Vy
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IGFkZCBld2tfY29udGV4dC5jcHAuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tf
Q29udGV4dCk6CisgICAgICAgIChjcmVhdGVEZWZhdWx0V2ViQ29udGV4dCk6CisgICAgICAgIChl
d2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KToKKyAgICAgICAgKGV3a19jb250ZXh0X2RlZmF1bHRf
Z2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9F
d2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKKyAg
ICAgICAgKGV3a192aWV3X2Jhc2VfYWRkKToKKyAgICAgICAgKGV3a192aWV3X2FkZF93aXRoX2Nv
bnRleHQpOgorICAgICAgICAoZXdrX3ZpZXdfYWRkKToKKyAgICAgICAgKGV3a192aWV3X3VyaV9z
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdXJpX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19w
cml2YXRlLmg6CisKIDIwMTItMDUtMzEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIERpc2VudGFuZ2xlIGNvZGUgdGhhdCByZWxpZXMgb24gVVNFKEFVVE9NQVRJQ19U
RVhUX1JFUExBQ0VNRU5UKSBmcm9tIHRoYXQgd2hpY2ggbWVyZWx5IHJlbGllcyBvbiBQTEFURk9S
TShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGJjNmU5NjYzOGQyOTRhZjQ0M2Rk
ZDY0NjM4ZjQxMGIwYWM2YWM1NDYuLmZmMWRkMTg2NmE0N2QxZDkzYTJhODQyZmViYmEzYzlmODVl
ZGVlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0yOCw2ICsyOCw3IEBAIExJU1Qo
QVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJl
cXVlc3RNYW5hZ2VyLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwu
Y3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuY3BwCiAKICAgICBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3Jl
Q2Fpcm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
V2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMTQzYjc4MWIwZjAxZTAxZTgyYmVkZWRkYmMyZjgzM2ZjZjc0MTNkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIu
aApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworLyoqCisgKiBAZmlsZSAgICBFV2ViS2l0Mi5oCisgKiBAYnJpZWYgICBDb250YWlu
cyB0aGUgaGVhZGVyIGZpbGVzIHRoYXQgYXJlIHJlcXVpcmVkIGJ5IFdlYktpdDItRUZMLgorICoK
KyAqIEl0IGluY2x1ZGVzIHRoZSBhbGwgaGVhZGVyIGZpbGVzIHRoYXQgYXJlIGV4cG9ydGVkIHRv
IHB1YmxpYyBBUEkuCisgKi8KKworI2lmbmRlZiBFV2ViS2l0Ml9oCisjZGVmaW5lIEVXZWJLaXQy
X2gKKworI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKwor
I2VuZGlmIC8vIEVXZWJLaXQyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDY4NWNmOTJjMWIzYzdhOGYzNjI2MTEw
MTM1NDQyOTMwM2JmOWE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNp
bmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIK
KwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworc3RydWN0IF9Fd2tfQ29udGV4dCB7CisgICAg
V0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0OworCisgICAgX0V3a19Db250ZXh0KFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmKQorICAgIHsKKyAgICAgICAgdGhpcy0+Y29udGV4dCA9IGNv
bnRleHRSZWY7CisgICAgfQorfTsKKworV0tDb250ZXh0UmVmIGV3a19jb250ZXh0X1dLQ29udGV4
dF9nZXQoY29uc3QgRXdrX0NvbnRleHQqIGV3a0NvbnRleHQpCit7CisgICAgcmV0dXJuIGV3a0Nv
bnRleHQtPmNvbnRleHQuZ2V0KCk7Cit9CisKK0V3a19Db250ZXh0KiBld2tfY29udGV4dF9kZWZh
dWx0X2dldCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChFd2tfQ29udGV4dCwgZGVmYXVs
dENvbnRleHQsIChXS0NvbnRleHRHZXRTaGFyZWRQcm9jZXNzQ29udGV4dCgpKSk7CisgICAgcmV0
dXJuICZkZWZhdWx0Q29udGV4dDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5NGQwNTIwNGI0ZGNmM2EyOTA3ODcyZGNm
ODJlZDczODQyMTFjNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19jb250
ZXh0LmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgY29udGV4dCBBUEkuCisgKgorICogQG5v
dGUgZXdrX2NvbnRleHQgZW5jYXBzdWxhdGVzIGFsbCBwYWdlcyByZWxhdGVkIHRvIHNwZWNpZmlj
IHVzZSBvZiBXZWJLaXQuCisgKiBBbGwgcGFnZXMgaW4gdGhpcyBjb250ZXh0IHNoYXJlIHRoZSBz
YW1lIHZpc2l0ZWQgbGluayBzZXQsCisgKiBsb2NhbCBzdG9yYWdlIHNldCwgYW5kIHByZWZlcmVu
Y2VzLgorICovCisKKyNpZm5kZWYgZXdrX2NvbnRleHRfaAorI2RlZmluZSBld2tfY29udGV4dF9o
CisKKyNpbmNsdWRlIDxFdmFzLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7
CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfQ29udGV4dC4g
Ki8KK3R5cGVkZWYgc3RydWN0IF9Fd2tfQ29udGV4dCBFd2tfQ29udGV4dDsKKworLyoqCisgKiBH
ZXRzIGRlZmF1bHQgRXdrX0NvbnRleHQgaW5zdGFuY2UuCisgKgorICogQHJldHVybiBFd2tfQ29u
dGV4dCBvYmplY3QuCisgKi8KK0VBUEkgRXdrX0NvbnRleHQgKmV3a19jb250ZXh0X2RlZmF1bHRf
Z2V0KCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tf
Y29udGV4dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODEzYTk0MjU3MWRmYTgxMjFjYTRmZWFj
OWZkMWY3ODFhYmJjN2ZhNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaApAQCAtMCwwICsxLDI5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBld2tfY29u
dGV4dF9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX2NvbnRleHRfcHJpdmF0ZV9oCisKKyNpbmNsdWRl
IDxXZWJLaXQyL1dLQmFzZS5oPgorCit0eXBlZGVmIHN0cnVjdCBfRXdrX0NvbnRleHQgRXdrX0Nv
bnRleHQ7CisKK1dLQ29udGV4dFJlZiBld2tfY29udGV4dF9XS0NvbnRleHRfZ2V0KGNvbnN0IEV3
a19Db250ZXh0Kik7CisKKyNlbmRpZiAvLyBld2tfY29udGV4dF9wcml2YXRlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCAyNjljMDcyZDY0
YTkwNTM0OTRhMGQ2Mjk3YTIwMDY4NDEyMDM4OTY5Li5kZTJhYTg5YzljODU0ZDczMTEzNzdlNjQ2
MTRlMzM1ZDFhYjgzMTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwCkBAIC0yNSw2ICsyNSwxMiBAQAogI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVs
RXZlbnQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV0tVUkwuaCIKKyNpbmNs
dWRlICJld2tfY29udGV4dC5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKKyNp
bmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBA
IC0zMyw2ICszOSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIEVXS19WSUVXX1RZUEVfU1RSW10gPSAi
RVdLMl9WaWV3IjsKIAogc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgIE93blB0
cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsKKyAgICBjb25zdCBjaGFyKiB1cmk7CiB9Owog
CiAjZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0soZXdrVmlldywgcmVzdWx0KSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMjU5LDYgKzI2Niw3IEBAIHN0YXRpYyB2b2lk
IF9ld2tfdmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiAgICAgICAg
IHJldHVybjsKIAogICAgIHByaXYtPnBhZ2VDbGllbnQgPSBudWxscHRyOworICAgIGVpbmFfc3Ry
aW5nc2hhcmVfZGVsKHByaXYtPnVyaSk7CiAgICAgZnJlZShwcml2KTsKIH0KIApAQCAtNDYxLDcg
KzQ2OSw3IEBAIHN0YXRpYyBpbmxpbmUgRXZhc19TbWFydCogX2V3a192aWV3X3NtYXJ0X2NsYXNz
X25ldyh2b2lkKQogICAgIHJldHVybiBzbWFydDsKIH0KIAotRXZhc19PYmplY3QqIGV3a192aWV3
X2FkZChFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJl
ZiBwYWdlR3JvdXBSZWYpCitFdmFzX09iamVjdCogZXdrX3ZpZXdfYmFzZV9hZGQoRXZhcyogY2Fu
dmFzLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVm
KQogewogICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gZXZhc19vYmplY3Rfc21hcnRfYWRkKGNh
bnZhcywgX2V3a192aWV3X3NtYXJ0X2NsYXNzX25ldygpKTsKICAgICBpZiAoIWV3a1ZpZXcpCkBA
IC00ODQsMTIgKzQ5MiwzNSBAQCBFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2YXMqIGNhbnZh
cywgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmCiAgICAgcmV0dXJuIGV3
a1ZpZXc7CiB9CiAKLVdLUGFnZVJlZiBld2tfdmlld19wYWdlX2dldChFdmFzX09iamVjdCogZXdr
VmlldykKK0V2YXNfT2JqZWN0KiBld2tfdmlld19hZGRfd2l0aF9jb250ZXh0KEV2YXMqIGNhbnZh
cywgRXdrX0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGV3a192aWV3X2Jhc2VfYWRk
KGNhbnZhcywgZXdrX2NvbnRleHRfV0tDb250ZXh0X2dldChjb250ZXh0KSwgMCk7Cit9CisKK0V2
YXNfT2JqZWN0KiBld2tfdmlld19hZGQoRXZhcyogY2FudmFzKQoreworICAgIHJldHVybiBld2tf
dmlld19hZGRfd2l0aF9jb250ZXh0KGNhbnZhcywgZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKSk7
Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld191cmlfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBj
b25zdCBjaGFyKiB1cmkpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIDApOworCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybChBZG9wdFdLLCBX
S1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1cmkpKTsKKyAgICBXS1BhZ2VMb2FkVVJMKHRvQVBJ
KHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKSksIHVybC5nZXQoKSk7CisKKyAgICBlaW5hX3N0cmlu
Z3NoYXJlX3JlcGxhY2UoJnByaXYtPnVyaSwgdXJpKTsKKworICAgIHJldHVybiB0cnVlOworfQor
Citjb25zdCBjaGFyKiBld2tfdmlld191cmlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAw
KTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsK
IAotICAgIHJldHVybiB0b0FQSShwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCkpOworICAgIHJldHVy
biBwcml2LT51cmk7CiB9CiAKIHZvaWQgZXdrX3ZpZXdfZGlzcGxheShFdmFzX09iamVjdCogZXdr
VmlldywgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5oCmluZGV4IGM4OTU2YmNhNzI3YjlhMzg5ZGEwMDViODliNDVlMWYyYzEz
Yzc4MjUuLjMzZjFhYTUxOWFiNGJiNWI4NTcyNjc0NDk0ZDdlZjMyYjU3NzE4YmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtMTcsMTEgKzE3LDE4
IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAqLwogCisvKioKKyAqIEBmaWxl
ICAgIGV3a192aWV3LmgKKyAqIEBicmllZiAgIFdlYktpdCBtYWluIHNtYXJ0IG9iamVjdC4KKyAq
CisgKiBUaGlzIG9iamVjdCBhbGxvd3MgdGhlIGhpZ2ggbGV2ZWwgYWNjZXNzIHRvIFdlYktpdDIt
RUZMIGNvbXBvbmVudC4KKyAqLworCiAjaWZuZGVmIGV3a192aWV3X2gKICNkZWZpbmUgZXdrX3Zp
ZXdfaAogCisjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5j
bHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMi
IHsKQEAgLTExNywyNCArMTI0LDQ1IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSB7CiB9
OwogCiAvKioKLSAqIENyZWF0ZXMgYSBuZXcgRUZMIFdlYktpdCBWaWV3IG9iamVjdC4KKyAqIENy
ZWF0ZXMgYSBuZXcgRUZMIFdlYktpdCB2aWV3IG9iamVjdC4KICAqCiAgKiBAcGFyYW0gZSBjYW52
YXMgb2JqZWN0IHdoZXJlIHRvIGNyZWF0ZSB0aGUgdmlldyBvYmplY3QKLSAqIEBwYXJhbSBjb250
ZXh0IFdLQ29udGV4dCdzIFJlZmVyZW5jZSBwb2ludGVyCi0gKiBAcGFyYW0gcGFnZV9ncm91cCBX
S1BhZ2VHcm91cCdzIFJlZmVyZW5jZSBwb2ludGVyCiAgKgogICogQHJldHVybiB2aWV3IG9iamVj
dCBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFpbHVyZQogICovCi1FQVBJIEV2YXNfT2JqZWN0KiBl
d2tfdmlld19hZGQoRXZhcyogZSwgV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVm
IHBhZ2VfZ3JvdXApOworRUFQSSBFdmFzX09iamVjdCAqZXdrX3ZpZXdfYWRkKEV2YXMgKmUpOwog
CiAvKioKLSAqIEdldHMgdGhlIFdLUGFnZVJlZiBvZiB0aGlzIHZpZXcuCisgKiBDcmVhdGVzIGEg
bmV3IEVGTCBXZWJLaXQgdmlldyBvYmplY3QgYmFzZWQgb24gc3BlY2lmaWMgRXdrX0NvbnRleHQu
CisgKgorICogQHBhcmFtIGUgY2FudmFzIG9iamVjdCB3aGVyZSB0byBjcmVhdGUgdGhlIHZpZXcg
b2JqZWN0CisgKiBAcGFyYW0gY29udGV4dCBFd2tfQ29udGV4dCBvYmplY3QgdG8gZGVjbGFyZSBw
cm9jZXNzIG1vZGVsCisgKgorICogQHJldHVybiB2aWV3IG9iamVjdCBvbiBzdWNjZXNzIG9yIEBj
IDAgb24gZmFpbHVyZQorICovCitFQVBJIEV2YXNfT2JqZWN0ICpld2tfdmlld19hZGRfd2l0aF9j
b250ZXh0KEV2YXMgKmUsIEV3a19Db250ZXh0ICpjb250ZXh0KTsKKworLyoqCisgKiBBc2tzIHRo
ZSBvYmplY3QgdG8gbG9hZCB0aGUgZ2l2ZW4gVVJJLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIGxvYWQgQGEgVVJJCisgKiBAcGFyYW0gdXJpIHVuaWZvcm0gcmVzb3VyY2UgaWRlbnRp
ZmllciB0byBsb2FkCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzc2Z1bCBy
ZXF1ZXN0IG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQorICovCitFQVBJIEVpbmFfQm9vbCBl
d2tfdmlld191cmlfc2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICp1cmkpOworCisvKioK
KyAqIFJldHVybnMgdGhlIGN1cnJlbnQgVVJJIHN0cmluZyBvZiB2aWV3IG9iamVjdC4KKyAqCisg
KiBJdCByZXR1cm5zIGEgaW50ZXJuYWwgc3RyaW5nIGFuZCBzaG91bGQgbm90CisgKiBiZSBtb2Rp
ZmllZC4gVGhlIHN0cmluZyBpcyBndWFyYW50ZWVkIHRvIGJlIHN0cmluZ3NoYXJlZC4KICAqCi0g
KiBAcGFyYW0gbyB0aGUgdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBXS1BhZ2VSZWYKKyAqIEBwYXJh
bSBvIHZpZXcgb2JqZWN0IHRvIGdldCBjdXJyZW50IFVSSQogICoKLSAqIEByZXR1cm4gdGhlIFdL
UGFnZVJlZiBvZiB0aGlzIHZpZXcKKyAqIEByZXR1cm4gY3VycmVudCBVUkkgb24gc3VjY2VzcyBv
ciBAYyAwIG9uIGZhaWx1cmUKICAqLwotRUFQSSBXS1BhZ2VSZWYgZXdrX3ZpZXdfcGFnZV9nZXQo
RXZhc19PYmplY3QqIG8pOworRUFQSSBjb25zdCBjaGFyICpld2tfdmlld191cmlfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggZTc3
NjcyNWNjNDVmMjc1MzYxYzEwZGZiNjdmMjA4ZTM4NjNlNGIwNy4uMTlkMGM4Njg5MjY5NDY3MDhj
NjhlMWM1N2YxYWQ1ZmFjZWFjNzAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApAQCAtMjEsNyArMjEsOSBAQAogI2lmbmRl
ZiBld2tfdmlld19wcml2YXRlX2gKICNkZWZpbmUgZXdrX3ZpZXdfcHJpdmF0ZV9oCiAKKyNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0Jhc2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW50UmVjdDsKQEAgLTMx
LDQgKzMzLDYgQEAgY2xhc3MgSW50U2l6ZTsKIHZvaWQgZXdrX3ZpZXdfZGlzcGxheShFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7CiB2b2lkIGV3a192
aWV3X2ltYWdlX2RhdGFfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lkKiBpbWFnZURhdGEs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOwogCitFdmFzX09iamVjdCogZXdrX3ZpZXdf
YmFzZV9hZGQoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmKTsKKwog
I2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146696</attachid>
            <date>2012-06-09 05:43:58 -0700</date>
            <delta_ts>2012-06-10 07:21:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84124-20120609214356.patch</filename>
            <type>text/plain</type>
            <size>14303</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5ODk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjgwYzYzMmE0NWM3OGMy
ZGMyZTJlNWY1NjlhOGUwNzQ3ZmE2MmUzOS4uYTAxMGNmYTVkYzQ3NDlhZTRjZmY2OWQ2MDI2NTcx
ZjZiYTcyNWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA2LTA5ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBhbmQgcmVmYWN0b3IgZXdrIEFQSSBpbiBvcmRlciB0byBzdXBwb3J0IE1pbmlCcm93c2VyIHdp
dGhvdXQgV0sgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQxMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb2RpZnkgZXdrX3ZpZXcgYW5kIGFkZCBld2tfY29udGV4dCB0byBwcm92aWRlIGEgcGxh
dGZvcm0tZGVwZWRlbnQgV2ViS2l0MgorICAgICAgICBBUEkuCisgICAgICAgIFRoaXMgcGF0Y2gg
cHJvdmlkZXMgdGhlIG1pbmltdW0gdG8gc3VwcG9ydCBNaW5pQnJvd3Nlci4KKworICAgICAgICAq
IFBsYXRmb3JtRWZsLmNtYWtlOiBhZGQgZXdrX2NvbnRleHQuY3BwLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChfRXdrX0NvbnRleHQpOgorICAg
ICAgICAoY3JlYXRlRGVmYXVsdFdlYkNvbnRleHQpOgorICAgICAgICAoZXdrX2NvbnRleHRfV0tD
b250ZXh0X2dldCk6CisgICAgICAgIChld2tfY29udGV4dF9kZWZhdWx0X2dldCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X2RlbCk6CisgICAgICAgIChld2tfdmll
d19iYXNlX2FkZCk6CisgICAgICAgIChld2tfdmlld19hZGRfd2l0aF9jb250ZXh0KToKKyAgICAg
ICAgKGV3a192aWV3X2FkZCk6CisgICAgICAgIChld2tfdmlld191cmlfc2V0KToKKyAgICAgICAg
KGV3a192aWV3X3VyaV9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorCiAy
MDEyLTA2LTA5ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBBZGQgVU5ET19NQU5BR0VSIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5k
ZXggNDYzM2MzMTgzMTQ1OTAzMTk1YzEyNTQ3ZjExZTk1MWI5ZTJlYWMxMy4uNWUwODg1ZWExODI5
NjY3ZmM4YWUyOGQ0Mjk4Y2UzN2M2Y2U5MWEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
QEAgLTI5LDYgKzI5LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKIAogICAgIFVJUHJv
Y2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9FV2ViS2l0Mi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxNDNiNzgxYjBmMDFlMDFlODJiZWRl
ZGRiYzJmODMzZmNmNzQxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIEVXZWJLaXQy
LmgKKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBoZWFkZXIgZmlsZXMgdGhhdCBhcmUgcmVxdWly
ZWQgYnkgV2ViS2l0Mi1FRkwuCisgKgorICogSXQgaW5jbHVkZXMgdGhlIGFsbCBoZWFkZXIgZmls
ZXMgdGhhdCBhcmUgZXhwb3J0ZWQgdG8gcHVibGljIEFQSS4KKyAqLworCisjaWZuZGVmIEVXZWJL
aXQyX2gKKyNkZWZpbmUgRVdlYktpdDJfaAorCisjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKKyNp
bmNsdWRlICJld2tfdmlldy5oIgorCisjZW5kaWYgLy8gRVdlYktpdDJfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkw
Njg1Y2Y5MmMxYjNjN2E4ZjM2MjYxMTAxMzU0NDI5MzAzYmY5YTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAgLTAs
MCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJv
Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKKworI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAi
ZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdHJ1
Y3QgX0V3a19Db250ZXh0IHsKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQ7
CisKKyAgICBfRXdrX0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCisgICAgeworICAg
ICAgICB0aGlzLT5jb250ZXh0ID0gY29udGV4dFJlZjsKKyAgICB9Cit9OworCitXS0NvbnRleHRS
ZWYgZXdrX2NvbnRleHRfV0tDb250ZXh0X2dldChjb25zdCBFd2tfQ29udGV4dCogZXdrQ29udGV4
dCkKK3sKKyAgICByZXR1cm4gZXdrQ29udGV4dC0+Y29udGV4dC5nZXQoKTsKK30KKworRXdrX0Nv
bnRleHQqIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEV3a19Db250ZXh0LCBkZWZhdWx0Q29udGV4dCwgKFdLQ29udGV4dEdldFNoYXJlZFByb2Nl
c3NDb250ZXh0KCkpKTsKKyAgICByZXR1cm4gJmRlZmF1bHRDb250ZXh0OworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk0
ZDA1MjA0YjRkY2YzYTI5MDc4NzJkY2Y4MmVkNzM4NDIxMWM0ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKQEAgLTAsMCAr
MSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3Jh
bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKy8q
KgorICogQGZpbGUgICAgZXdrX2NvbnRleHQuaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBj
b250ZXh0IEFQSS4KKyAqCisgKiBAbm90ZSBld2tfY29udGV4dCBlbmNhcHN1bGF0ZXMgYWxsIHBh
Z2VzIHJlbGF0ZWQgdG8gc3BlY2lmaWMgdXNlIG9mIFdlYktpdC4KKyAqIEFsbCBwYWdlcyBpbiB0
aGlzIGNvbnRleHQgc2hhcmUgdGhlIHNhbWUgdmlzaXRlZCBsaW5rIHNldCwKKyAqIGxvY2FsIHN0
b3JhZ2Ugc2V0LCBhbmQgcHJlZmVyZW5jZXMuCisgKi8KKworI2lmbmRlZiBld2tfY29udGV4dF9o
CisjZGVmaW5lIGV3a19jb250ZXh0X2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiogQ3JlYXRlcyBhIHR5cGUgbmFt
ZSBmb3IgQGEgX0V3a19Db250ZXh0LiAqLwordHlwZWRlZiBzdHJ1Y3QgX0V3a19Db250ZXh0IEV3
a19Db250ZXh0OworCisvKioKKyAqIEdldHMgZGVmYXVsdCBFd2tfQ29udGV4dCBpbnN0YW5jZS4K
KyAqCisgKiBAcmV0dXJuIEV3a19Db250ZXh0IG9iamVjdC4KKyAqLworRUFQSSBFd2tfQ29udGV4
dCAqZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9Cisj
ZW5kaWYKKworI2VuZGlmIC8vIGV3a19jb250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
MTNhOTQyNTcxZGZhODEyMWNhNGZlYWM5ZmQxZjc4MWFiYmM3ZmE1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5o
CkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVj
dHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaWZuZGVmIGV3a19jb250ZXh0X3ByaXZhdGVfaAorI2RlZmluZSBld2tfY29udGV4
dF9wcml2YXRlX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKK3R5cGVkZWYgc3Ry
dWN0IF9Fd2tfQ29udGV4dCBFd2tfQ29udGV4dDsKKworV0tDb250ZXh0UmVmIGV3a19jb250ZXh0
X1dLQ29udGV4dF9nZXQoY29uc3QgRXdrX0NvbnRleHQqKTsKKworI2VuZGlmIC8vIGV3a19jb250
ZXh0X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuY3BwCmluZGV4IDI2OWMwNzJkNjRhOTA1MzQ5NGEwZDYyOTdhMjAwNjg0MTIwMzg5NjkuLmRl
MmFhODljOWM4NTRkNzMxMTM3N2U2NDYxNGUzMzVkMWFiODMxMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTI1LDYgKzI1LDEyIEBACiAj
aW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBs
LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNp
bmNsdWRlICJXS1VSTC5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCisjaW5jbHVkZSAiZXdr
X2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTMzLDYgKzM5LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIg
RVdLX1ZJRVdfVFlQRV9TVFJbXSA9ICJFV0syX1ZpZXciOwogCiBzdHJ1Y3QgX0V3a19WaWV3X1By
aXZhdGVfRGF0YSB7CiAgICAgT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50OworICAg
IGNvbnN0IGNoYXIqIHVyaTsKIH07CiAKICNkZWZpbmUgRVdLX1ZJRVdfVFlQRV9DSEVDSyhld2tW
aWV3LCByZXN1bHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0yNTks
NiArMjY2LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZh
dGVfRGF0YSogcHJpdikKICAgICAgICAgcmV0dXJuOwogCiAgICAgcHJpdi0+cGFnZUNsaWVudCA9
IG51bGxwdHI7CisgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwocHJpdi0+dXJpKTsKICAgICBmcmVl
KHByaXYpOwogfQogCkBAIC00NjEsNyArNDY5LDcgQEAgc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0
KiBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KHZvaWQpCiAgICAgcmV0dXJuIHNtYXJ0OwogfQog
Ci1FdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmIGNv
bnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK0V2YXNfT2JqZWN0KiBld2tf
dmlld19iYXNlX2FkZChFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1Bh
Z2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiB7CiAgICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSBl
dmFzX29iamVjdF9zbWFydF9hZGQoY2FudmFzLCBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KCkp
OwogICAgIGlmICghZXdrVmlldykKQEAgLTQ4NCwxMiArNDkyLDM1IEBAIEV2YXNfT2JqZWN0KiBl
d2tfdmlld19hZGQoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdl
R3JvdXBSZWYKICAgICByZXR1cm4gZXdrVmlldzsKIH0KIAotV0tQYWdlUmVmIGV3a192aWV3X3Bh
Z2VfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQorRXZhc19PYmplY3QqIGV3a192aWV3X2FkZF93
aXRoX2NvbnRleHQoRXZhcyogY2FudmFzLCBFd2tfQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBy
ZXR1cm4gZXdrX3ZpZXdfYmFzZV9hZGQoY2FudmFzLCBld2tfY29udGV4dF9XS0NvbnRleHRfZ2V0
KGNvbnRleHQpLCAwKTsKK30KKworRXZhc19PYmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBjYW52
YXMpCit7CisgICAgcmV0dXJuIGV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoY2FudmFzLCBld2tf
Y29udGV4dF9kZWZhdWx0X2dldCgpKTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3VyaV9zZXQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHVyaSkKK3sKKyAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CisgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgMCk7CisKKyAgICBXS1JldGFpblB0cjxX
S1VSTFJlZj4gdXJsKEFkb3B0V0ssIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVyaSkpOwor
ICAgIFdLUGFnZUxvYWRVUkwodG9BUEkocHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpKSwgdXJsLmdl
dCgpKTsKKworICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+dXJpLCB1cmkpOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2NvbnN0IGNoYXIqIGV3a192aWV3X3VyaV9nZXQoY29u
c3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYsIDApOwogCi0gICAgcmV0dXJuIHRvQVBJKHByaXYtPnBhZ2VDbGll
bnQtPnBhZ2UoKSk7CisgICAgcmV0dXJuIHByaXYtPnVyaTsKIH0KIAogdm9pZCBld2tfdmlld19k
aXNwbGF5KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXggYzg5NTZiY2E3Mjdi
OWEzODlkYTAwNWI4OWI0NWUxZjJjMTNjNzgyNS4uMWRiNGY1ZThkZWQwNTYwZTVhMjAyOGJmM2Vk
MmZmYzk0Zjg1NGRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5oCkBAIC0xNywxMSArMTcsMTggQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KICovCiAKKy8qKgorICogQGZpbGUgICAgZXdrX3ZpZXcuaAorICogQGJyaWVmICAgV2ViS2l0
IG1haW4gc21hcnQgb2JqZWN0LgorICoKKyAqIFRoaXMgb2JqZWN0IHByb3ZpZGVzIHZpZXcgcmVs
YXRlZCBBUElzIG9mIFdlYktpdDIgdG8gRUZMIG9iamVjdC4KKyAqLworCiAjaWZuZGVmIGV3a192
aWV3X2gKICNkZWZpbmUgZXdrX3ZpZXdfaAogCisjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNp
bmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAogI2lmZGVmIF9f
Y3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKQEAgLTExNywyNCArMTI0LDQ1IEBAIHN0cnVjdCBfRXdr
X1ZpZXdfU21hcnRfRGF0YSB7CiB9OwogCiAvKioKLSAqIENyZWF0ZXMgYSBuZXcgRUZMIFdlYktp
dCBWaWV3IG9iamVjdC4KKyAqIENyZWF0ZXMgYSBuZXcgRUZMIFdlYktpdCB2aWV3IG9iamVjdC4K
ICAqCiAgKiBAcGFyYW0gZSBjYW52YXMgb2JqZWN0IHdoZXJlIHRvIGNyZWF0ZSB0aGUgdmlldyBv
YmplY3QKLSAqIEBwYXJhbSBjb250ZXh0IFdLQ29udGV4dCdzIFJlZmVyZW5jZSBwb2ludGVyCi0g
KiBAcGFyYW0gcGFnZV9ncm91cCBXS1BhZ2VHcm91cCdzIFJlZmVyZW5jZSBwb2ludGVyCiAgKgog
ICogQHJldHVybiB2aWV3IG9iamVjdCBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFpbHVyZQogICov
Ci1FQVBJIEV2YXNfT2JqZWN0KiBld2tfdmlld19hZGQoRXZhcyogZSwgV0tDb250ZXh0UmVmIGNv
bnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VfZ3JvdXApOworRUFQSSBFdmFzX09iamVjdCAqZXdr
X3ZpZXdfYWRkKEV2YXMgKmUpOwogCiAvKioKLSAqIEdldHMgdGhlIFdLUGFnZVJlZiBvZiB0aGlz
IHZpZXcuCisgKiBDcmVhdGVzIGEgbmV3IEVGTCBXZWJLaXQgdmlldyBvYmplY3QgYmFzZWQgb24g
c3BlY2lmaWMgRXdrX0NvbnRleHQuCisgKgorICogQHBhcmFtIGUgY2FudmFzIG9iamVjdCB3aGVy
ZSB0byBjcmVhdGUgdGhlIHZpZXcgb2JqZWN0CisgKiBAcGFyYW0gY29udGV4dCBFd2tfQ29udGV4
dCBvYmplY3QgdG8gZGVjbGFyZSBwcm9jZXNzIG1vZGVsCisgKgorICogQHJldHVybiB2aWV3IG9i
amVjdCBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFpbHVyZQorICovCitFQVBJIEV2YXNfT2JqZWN0
ICpld2tfdmlld19hZGRfd2l0aF9jb250ZXh0KEV2YXMgKmUsIEV3a19Db250ZXh0ICpjb250ZXh0
KTsKKworLyoqCisgKiBBc2tzIHRoZSBvYmplY3QgdG8gbG9hZCB0aGUgZ2l2ZW4gVVJJLgorICoK
KyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGxvYWQgQGEgVVJJCisgKiBAcGFyYW0gdXJpIHVu
aWZvcm0gcmVzb3VyY2UgaWRlbnRpZmllciB0byBsb2FkCisgKgorICogQHJldHVybiBAYyBFSU5B
X1RSVUUgaXMgcmV0dXJuZWQgaWYgQGEgbyBpcyB2YWxpZCwgaXJyZXNwZWN0aXZlIG9mIGxvYWQu
CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3VyaV9zZXQoRXZhc19PYmplY3QgKm8sIGNv
bnN0IGNoYXIgKnVyaSk7CisKKy8qKgorICogUmV0dXJucyB0aGUgY3VycmVudCBVUkkgc3RyaW5n
IG9mIHZpZXcgb2JqZWN0LgorICoKKyAqIEl0IHJldHVybnMgYW4gaW50ZXJuYWwgc3RyaW5nIGFu
ZCBzaG91bGQgbm90CisgKiBiZSBtb2RpZmllZC4gVGhlIHN0cmluZyBpcyBndWFyYW50ZWVkIHRv
IGJlIHN0cmluZ3NoYXJlZC4KICAqCi0gKiBAcGFyYW0gbyB0aGUgdmlldyBvYmplY3QgdG8gZ2V0
IHRoZSBXS1BhZ2VSZWYKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCBjdXJyZW50IFVS
SQogICoKLSAqIEByZXR1cm4gdGhlIFdLUGFnZVJlZiBvZiB0aGlzIHZpZXcKKyAqIEByZXR1cm4g
Y3VycmVudCBVUkkgb24gc3VjY2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKICAqLwotRUFQSSBXS1Bh
Z2VSZWYgZXdrX3ZpZXdfcGFnZV9nZXQoRXZhc19PYmplY3QqIG8pOworRUFQSSBjb25zdCBjaGFy
ICpld2tfdmlld191cmlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAogI2lmZGVmIF9fY3Bs
dXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlld19wcml2YXRlLmgKaW5kZXggZTc3NjcyNWNjNDVmMjc1MzYxYzEwZGZiNjdmMjA4ZTM4NjNl
NGIwNy4uMTlkMGM4Njg5MjY5NDY3MDhjNjhlMWM1N2YxYWQ1ZmFjZWFjNzAyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApA
QCAtMjEsNyArMjEsOSBAQAogI2lmbmRlZiBld2tfdmlld19wcml2YXRlX2gKICNkZWZpbmUgZXdr
X3ZpZXdfcHJpdmF0ZV9oCiAKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxF
dmFzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgSW50UmVjdDsKQEAgLTMxLDQgKzMzLDYgQEAgY2xhc3MgSW50U2l6ZTsKIHZvaWQg
ZXdrX3ZpZXdfZGlzcGxheShFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmVjdCk7CiB2b2lkIGV3a192aWV3X2ltYWdlX2RhdGFfc2V0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCB2b2lkKiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOwog
CitFdmFzX09iamVjdCogZXdrX3ZpZXdfYmFzZV9hZGQoRXZhcyogY2FudmFzLCBXS0NvbnRleHRS
ZWYsIFdLUGFnZUdyb3VwUmVmKTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>