<?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>95672</bug_id>
          
          <creation_ts>2012-09-03 00:56:09 -0700</creation_ts>
          <short_desc>[EFL][WK2] Add javascript popup api.</short_desc>
          <delta_ts>2012-09-18 22:57:25 -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>96201</dependson>
    
    <dependson>96793</dependson>
    
    <dependson>97007</dependson>
          <blocked>61838</blocked>
    
    <blocked>96616</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Byungwoo Lee">bw80.lee</reporter>
          <assigned_to name="Byungwoo Lee">bw80.lee</assigned_to>
          <cc>cdumez</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>710459</commentid>
    <comment_count>0</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-03 00:56:09 -0700</bug_when>
    <thetext>There is no javascript popup api to create popup for alert(), confirm(), prompt().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710691</commentid>
    <comment_count>1</comment_count>
      <attachid>161938</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-03 09:16:52 -0700</bug_when>
    <thetext>Created attachment 161938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710779</commentid>
    <comment_count>2</comment_count>
      <attachid>161938</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-03 18:52:23 -0700</bug_when>
    <thetext>Comment on attachment 161938
Patch

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

&gt; Source/WebKit2/ChangeLog:8
&gt; +        Added ewk api for javascript alert(), confirm() and prompt().

s/api/API/g

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1594
&gt; +void ewk_view_javascript_prompt_finished(Evas_Object*ewkView, const char* result)

Missing a space in Evas_Object*ewkView.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1599
&gt; +    priv-&gt;javascriptPromptResult = adoptPtr(new CString(result ? result : &quot;&quot;));

Isn&apos;t this better ?

result ? adoptPtr(new CString(result)) : 0;

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:243
&gt; +            char *message; /**&lt; message for alert()*/

Missing a space in &quot;alert()*/&quot;

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:246
&gt; +            char *message; /**&lt; message for confirm()*/

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:249
&gt; +            char *message; /**&lt; message for prompt()*/

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:250
&gt; +            char *default_value; /**&lt; default value for prompt() input box*/

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view_private.h:104
&gt; +PassOwnPtr&lt;CString&gt; ewk_view_run_javascript_prompt(Evas_Object* ewkView, char* message, char* default_value);

s/defalut_value/defaultValue/g

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp:77
&gt; +    return WKStringCreateWithUTF8CString(result ? result-&gt;data() : &quot;&quot;);

I think this one is better. 

result ? adoptWK(WKStringCreateWithUTF8CString(result-&gt;data())) : 0;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710826</commentid>
    <comment_count>3</comment_count>
      <attachid>161938</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-03 23:09:00 -0700</bug_when>
    <thetext>Comment on attachment 161938
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:106
&gt; +    OwnPtr&lt;CString&gt; javascriptPromptResult;

Why does does this need to be a pointer? What prevents you from using simply a CString?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:122
&gt; +        , javascriptPromptResult(nullptr)

Not needed (either with CString or OwnPtr&lt;CString&gt; types).

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:239
&gt; + */

You should document that the strings are stringshared.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view_private.h:104
&gt;&gt; +PassOwnPtr&lt;CString&gt; ewk_view_run_javascript_prompt(Evas_Object* ewkView, char* message, char* default_value);
&gt; 
&gt; s/defalut_value/defaultValue/g

Why does this function return a PassOwnPtr&lt;CString&gt; instead of a simple CString?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp:51
&gt; +    OwnArrayPtr&lt;char&gt; alertTextBuffer = adoptArrayPtr(new char[length]);

In EFL port, we usually expose stringshared strings to the client. I believe you should use WKEinaSharedString instead of OwnArrayPtr:
WKEinaSharedString text(alertText);

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:276
&gt; +    destination-&gt;alert.message = strdup(source-&gt;alert.message);

Should use eina_stringshare_ref() instead of strdup().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711052</commentid>
    <comment_count>4</comment_count>
      <attachid>161938</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-04 06:26:23 -0700</bug_when>
    <thetext>Comment on attachment 161938
Patch

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

Thank you for your comments.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:106
&gt;&gt; +    OwnPtr&lt;CString&gt; javascriptPromptResult;
&gt; 
&gt; Why does does this need to be a pointer? What prevents you from using simply a CString?

I used pointer to release string data after returning ewk_view_run_javascript_prompt() function.
Otherwise, Ewk_View_Private_Data should keep the prompt result data.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:239
&gt;&gt; + */
&gt; 
&gt; You should document that the strings are stringshared.

I think this structure have no need to use the stringshared.
There is no use case to return some string with this structure from application side to webkit side.
This structure type just passes the message or default value string through the callback function.
So user can just read strings and use it, and have no need to delete or change this.

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view_private.h:104
&gt;&gt;&gt; +PassOwnPtr&lt;CString&gt; ewk_view_run_javascript_prompt(Evas_Object* ewkView, char* message, char* default_value);
&gt;&gt; 
&gt;&gt; s/defalut_value/defaultValue/g
&gt; 
&gt; Why does this function return a PassOwnPtr&lt;CString&gt; instead of a simple CString?

As replied above, to release prompt result string after the popup is finished.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp:77
&gt;&gt; +    return WKStringCreateWithUTF8CString(result ? result-&gt;data() : &quot;&quot;);
&gt; 
&gt; I think this one is better. 
&gt; 
&gt; result ? adoptWK(WKStringCreateWithUTF8CString(result-&gt;data())) : 0;

Ok I&apos;ll apply it. I found a bug about returning null with applying this comment and added it to the test case also.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:276
&gt;&gt; +    destination-&gt;alert.message = strdup(source-&gt;alert.message);
&gt; 
&gt; Should use eina_stringshare_ref() instead of strdup().

Should this structure be changed to using eina stringshare because of this test case code?
Actually test case just use this structure to keep the strings for checking,
and can use some other way or define other structure for keeping the data.

If strdup in test case is a problem, how about changing the test case code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711069</commentid>
    <comment_count>5</comment_count>
      <attachid>161938</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-04 06:41:52 -0700</bug_when>
    <thetext>Comment on attachment 161938
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:239
&gt;&gt;&gt; + */
&gt;&gt; 
&gt;&gt; You should document that the strings are stringshared.
&gt; 
&gt; I think this structure have no need to use the stringshared.
&gt; There is no use case to return some string with this structure from application side to webkit side.
&gt; This structure type just passes the message or default value string through the callback function.
&gt; So user can just read strings and use it, and have no need to delete or change this.

The point is that the client application may want to keep the strings and they could use eina_stringshare_ref() for this instead of strdup(). Exposing non-stringshared strings is unexpected for EFL port and is error prone.

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:276
&gt;&gt;&gt; +    destination-&gt;alert.message = strdup(source-&gt;alert.message);
&gt;&gt; 
&gt;&gt; Should use eina_stringshare_ref() instead of strdup().
&gt; 
&gt; Should this structure be changed to using eina stringshare because of this test case code?
&gt; Actually test case just use this structure to keep the strings for checking,
&gt; and can use some other way or define other structure for keeping the data.
&gt; 
&gt; If strdup in test case is a problem, how about changing the test case code?

The point is that the application may need to &quot;copy&quot; the strings in the structure as well. And using eina_stringshare_ref() should be more efficient than strdup(). As far as I know, we never expose &quot;raw&quot; strings to the client so it knows it can safely can eina_stringshare_ref() on them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711086</commentid>
    <comment_count>6</comment_count>
      <attachid>161938</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-04 06:59:58 -0700</bug_when>
    <thetext>Comment on attachment 161938
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:276
&gt;&gt;&gt;&gt; +    destination-&gt;alert.message = strdup(source-&gt;alert.message);
&gt;&gt;&gt; 
&gt;&gt;&gt; Should use eina_stringshare_ref() instead of strdup().
&gt;&gt; 
&gt;&gt; Should this structure be changed to using eina stringshare because of this test case code?
&gt;&gt; Actually test case just use this structure to keep the strings for checking,
&gt;&gt; and can use some other way or define other structure for keeping the data.
&gt;&gt; 
&gt;&gt; If strdup in test case is a problem, how about changing the test case code?
&gt; 
&gt; The point is that the application may need to &quot;copy&quot; the strings in the structure as well. And using eina_stringshare_ref() should be more efficient than strdup(). As far as I know, we never expose &quot;raw&quot; strings to the client so it knows it can safely can eina_stringshare_ref() on them.

Ok~ I understood your point, and found that all the other exposed string is the stringshared.
I&apos;ll apply those. Thanks for your guide :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711103</commentid>
    <comment_count>7</comment_count>
      <attachid>161938</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-04 07:23:00 -0700</bug_when>
    <thetext>Comment on attachment 161938
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:49
&gt; + * - &quot;javascript,alert&quot;, Ewk_JavaScript_Popup_Information*: reports that an alert() function is dispatched in javascript.
&gt; + * - &quot;javascript,confirm&quot;, Ewk_JavaScript_Popup_Information*: reports that a confirm() function is dispatched in javascript.
&gt; + * - &quot;javascript,prompt&quot;, Ewk_JavaScript_Popup_Informtion*: reports that a prompt() function is dispatched in javascript.

IMO, we&apos;d better to provide methods of smart class in this case. (like webkit1/efl)
Application may want to disable previous callbacks which another module(such as elm_web) added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711150</commentid>
    <comment_count>8</comment_count>
      <attachid>161938</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-04 08:42:07 -0700</bug_when>
    <thetext>Comment on attachment 161938
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:49
&gt;&gt; + * - &quot;javascript,prompt&quot;, Ewk_JavaScript_Popup_Informtion*: reports that a prompt() function is dispatched in javascript.
&gt; 
&gt; IMO, we&apos;d better to provide methods of smart class in this case. (like webkit1/efl)
&gt; Application may want to disable previous callbacks which another module(such as elm_web) added.

I can understand about the requirement to disable the previous callback.
I think the issue will be in the module which overrides or inherits the ewk_view
and provides it&apos;s own default javascript popup. (like elm_web as you explained)

The way to support those requirement might be a smart class member function,
as current webkit efl implementation.

But overriding smart class or make an evas object which inherits ewk_view for using javascript popup callback
might be too difficult or complicate way for users who just use ewk_view.

Is there any easy way for supporting this?
How about adding api for setting javascript callback?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711199</commentid>
    <comment_count>9</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-04 09:56:19 -0700</bug_when>
    <thetext>Or, how about providing smart class member function that intercepts the signals?

@@ -111,6 +111,14 @@ struct _Ewk_View_Smart_Class {
     Eina_Bool (*mouse_move)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Move *ev);
     Eina_Bool (*key_down)(Ewk_View_Smart_Data *sd, const Evas_Event_Key_Down *ev);
     Eina_Bool (*key_up)(Ewk_View_Smart_Data *sd, const Evas_Event_Key_Up *ev);
+
+    // intercept signals
+    //   - If overridden, related signal will not be emitted.
+    struct {
+        void (*javascript_alert)(Ewk_View_Smart_Data *sd, const char *message);
+        Eina_Bool (*javascript_confirm)(Ewk_View_Smart_Data *sd, const char *message);
+        Eina_Bool (*javascript_prompt)(Ewk_View_Smart_Data *sd, const char *message, const char *default_value, const char **value);
+    } intercept_signal;
 };

Then elm_web or some other modules can override this method to customize the javascript popup callbacks, and other ewk_view users can use smart signal simply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713995</commentid>
    <comment_count>10</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-06 19:01:42 -0700</bug_when>
    <thetext>@Ryuan: 
As you explained on offline, using smart member will be better because it is the official way for overriding by EFL platform. And there can be some issue about consistency between wk1 and wk2 API.

I also agree with that, and discussion about the API policy seems out of the boundary of this patch.

I&apos;ll change the signal to smart member function.

Thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715450</commentid>
    <comment_count>11</comment_count>
      <attachid>162984</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-09 00:50:00 -0700</bug_when>
    <thetext>Created attachment 162984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715451</commentid>
    <comment_count>12</comment_count>
      <attachid>162984</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-09 00:56:03 -0700</bug_when>
    <thetext>Comment on attachment 162984
Patch

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

LGTM with small nit:

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:119
&gt; +    const char* (*run_javascript_prompt)(Ewk_View_Smart_Data *sd, const char *message, const char *default_value); /**&lt; return string should be stringshared. */

star on wrong side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715452</commentid>
    <comment_count>13</comment_count>
      <attachid>162984</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-09 01:02:47 -0700</bug_when>
    <thetext>Comment on attachment 162984
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:119
&gt;&gt; +    const char* (*run_javascript_prompt)(Ewk_View_Smart_Data *sd, const char *message, const char *default_value); /**&lt; return string should be stringshared. */
&gt; 
&gt; star on wrong side.

Oops. I&apos;ll fix it. Thank you :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715453</commentid>
    <comment_count>14</comment_count>
      <attachid>162985</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-09 01:07:57 -0700</bug_when>
    <thetext>Created attachment 162985
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715462</commentid>
    <comment_count>15</comment_count>
      <attachid>162985</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-09 02:25:11 -0700</bug_when>
    <thetext>Comment on attachment 162985
Patch

I think you need to update EWK_VIEW_SMART_CLASS_VERSION macro from 2UL to 3UL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715464</commentid>
    <comment_count>16</comment_count>
      <attachid>162985</attachid>
    <who name="Jinwoo Song">jinwoo7.song</who>
    <bug_when>2012-09-09 02:56:09 -0700</bug_when>
    <thetext>Comment on attachment 162985
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1579
&gt; +    eina_stringshare_del(value);

Is this right to call eina_stringshare_del(value) here? It seems to return NULL always.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp:51
&gt; +    ewk_view_run_javascript_alert(toEwkView(clientInfo), alertTextString);

nit: Why don&apos;t you simplify the code like this?
ewk_view_run_javascript_alert(toEwkView(clientInfo), WKEinaSharedString(alertText));

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp:58
&gt; +    return ewk_view_run_javascript_confirm(toEwkView(clientInfo), messageString);

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp:66
&gt; +    WKEinaSharedString value = ewk_view_run_javascript_prompt(toEwkView(clientInfo), messageString, defaultValueString);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715467</commentid>
    <comment_count>17</comment_count>
      <attachid>162985</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-09 03:35:31 -0700</bug_when>
    <thetext>Comment on attachment 162985
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1579
&gt;&gt; +    eina_stringshare_del(value);
&gt; 
&gt; Is this right to call eina_stringshare_del(value) here? It seems to return NULL always.

Yes, indeed. Nice catch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715470</commentid>
    <comment_count>18</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-09 03:57:55 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 162985 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162985&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1579
&gt; &gt;&gt; +    eina_stringshare_del(value);
&gt; &gt; 
&gt; &gt; Is this right to call eina_stringshare_del(value) here? It seems to return NULL always.
&gt; 
&gt; Yes, indeed. Nice catch :)

I think this should be called.
In the callback function, application created eina stringshare and returns it.
So the ref count of the returned stringshare will be 1.
After assigning the returned stringshare to WKEinaSharedString value,
the ref count will be increased so the ref count will be 2.
Without eina_stringshare_del(value), the returned stringshare cannot be deleted, because, destructor of value only decrease one time.
So I called this.

And I&apos;m planning to create some mechanism like adoptPtr and passRefPtr for WKEinaStringShare because of this.

Is there something that I misunderstand about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715471</commentid>
    <comment_count>19</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-09 03:59:25 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 162985 [details])
&gt; I think you need to update EWK_VIEW_SMART_CLASS_VERSION macro from 2UL to 3UL.

Ok~ I&apos;ll increase. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715472</commentid>
    <comment_count>20</comment_count>
      <attachid>162985</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-09 04:02:17 -0700</bug_when>
    <thetext>Comment on attachment 162985
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp:51
&gt;&gt; +    ewk_view_run_javascript_alert(toEwkView(clientInfo), alertTextString);
&gt; 
&gt; nit: Why don&apos;t you simplify the code like this?
&gt; ewk_view_run_javascript_alert(toEwkView(clientInfo), WKEinaSharedString(alertText));

Ok~ I&apos;ll apply it. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715475</commentid>
    <comment_count>21</comment_count>
      <attachid>162985</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-09 04:14:42 -0700</bug_when>
    <thetext>Comment on attachment 162985
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1579
&gt;&gt;&gt;&gt; +    eina_stringshare_del(value);
&gt;&gt;&gt; 
&gt;&gt;&gt; Is this right to call eina_stringshare_del(value) here? It seems to return NULL always.
&gt;&gt; 
&gt;&gt; Yes, indeed. Nice catch :)
&gt; 
&gt; I think this should be called.
&gt; In the callback function, application created eina stringshare and returns it.
&gt; So the ref count of the returned stringshare will be 1.
&gt; After assigning the returned stringshare to WKEinaSharedString value,
&gt; the ref count will be increased so the ref count will be 2.
&gt; Without eina_stringshare_del(value), the returned stringshare cannot be deleted, because, destructor of value only decrease one time.
&gt; So I called this.
&gt; 
&gt; And I&apos;m planning to create some mechanism like adoptPtr and passRefPtr for WKEinaStringShare because of this.
&gt; 
&gt; Is there something that I misunderstand about this?

I understand your point, thanks for the explanation. But then, I would add a mechanism to WKEinaSharedString to adopt the string and use it instead. Using WKEinaSharedString and explicitly altering its ref count using eina_stringshare_del feels wrong.
I suggest you add the WKEinaSharedString string adoption in this patch instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715476</commentid>
    <comment_count>22</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-09 04:19:52 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 162985 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162985&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1579
&gt; &gt;&gt;&gt;&gt; +    eina_stringshare_del(value);
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Is this right to call eina_stringshare_del(value) here? It seems to return NULL always.
&gt; &gt;&gt; 
&gt; &gt;&gt; Yes, indeed. Nice catch :)
&gt; &gt; 
&gt; &gt; I think this should be called.
&gt; &gt; In the callback function, application created eina stringshare and returns it.
&gt; &gt; So the ref count of the returned stringshare will be 1.
&gt; &gt; After assigning the returned stringshare to WKEinaSharedString value,
&gt; &gt; the ref count will be increased so the ref count will be 2.
&gt; &gt; Without eina_stringshare_del(value), the returned stringshare cannot be deleted, because, destructor of value only decrease one time.
&gt; &gt; So I called this.
&gt; &gt; 
&gt; &gt; And I&apos;m planning to create some mechanism like adoptPtr and passRefPtr for WKEinaStringShare because of this.
&gt; &gt; 
&gt; &gt; Is there something that I misunderstand about this?
&gt; 
&gt; I understand your point, thanks for the explanation. But then, I would add a mechanism to WKEinaSharedString to adopt the string and use it instead. Using WKEinaSharedString and explicitly altering its ref count using eina_stringshare_del feels wrong.
&gt; I suggest you add the WKEinaSharedString string adoption in this patch instead.

Sure~ I&apos;ll make the patch first. Thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715477</commentid>
    <comment_count>23</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-09 04:24:06 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (From update of attachment 162985 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162985&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1579
&gt; &gt; &gt;&gt;&gt;&gt; +    eina_stringshare_del(value);
&gt; &gt; &gt;&gt;&gt; 
&gt; &gt; &gt;&gt;&gt; Is this right to call eina_stringshare_del(value) here? It seems to return NULL always.
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; Yes, indeed. Nice catch :)
&gt; &gt; &gt; 
&gt; &gt; &gt; I think this should be called.
&gt; &gt; &gt; In the callback function, application created eina stringshare and returns it.
&gt; &gt; &gt; So the ref count of the returned stringshare will be 1.
&gt; &gt; &gt; After assigning the returned stringshare to WKEinaSharedString value,
&gt; &gt; &gt; the ref count will be increased so the ref count will be 2.
&gt; &gt; &gt; Without eina_stringshare_del(value), the returned stringshare cannot be deleted, because, destructor of value only decrease one time.
&gt; &gt; &gt; So I called this.
&gt; &gt; &gt; 
&gt; &gt; &gt; And I&apos;m planning to create some mechanism like adoptPtr and passRefPtr for WKEinaStringShare because of this.
&gt; &gt; &gt; 
&gt; &gt; &gt; Is there something that I misunderstand about this?
&gt; &gt; 
&gt; &gt; I understand your point, thanks for the explanation. But then, I would add a mechanism to WKEinaSharedString to adopt the string and use it instead. Using WKEinaSharedString and explicitly altering its ref count using eina_stringshare_del feels wrong.
&gt; &gt; I suggest you add the WKEinaSharedString string adoption in this patch instead.
&gt; 
&gt; Sure~ I&apos;ll make the patch first. Thanks :)

IMO, you could have added it in the same patch since it is very little code (just an addition adopt() static method to WKEinaSharedString class, right?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715479</commentid>
    <comment_count>24</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-09 04:47:25 -0700</bug_when>
    <thetext>(In reply to comment #23)
 
&gt; IMO, you could have added it in the same patch since it is very little code (just an addition adopt() static method to WKEinaSharedString class, right?).

Although patch is very small, AFAIK, WebKit prefers to file a new bug if there is new functionality or goal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715493</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-09 06:43:30 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; 
&gt; &gt; IMO, you could have added it in the same patch since it is very little code (just an addition adopt() static method to WKEinaSharedString class, right?).
&gt; 
&gt; Although patch is very small, AFAIK, WebKit prefers to file a new bug if there is new functionality or goal.

We also don&apos;t like to add code that is not being used :)

Anyway, either way is fine by me, you&apos;re probably the one who&apos;s going to land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715819</commentid>
    <comment_count>26</comment_count>
      <attachid>162985</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-09-10 01:26:16 -0700</bug_when>
    <thetext>Comment on attachment 162985
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1547
&gt; +void ewk_view_run_javascript_alert(Evas_Object* ewkView, WKEinaSharedString message)

should not pass string classes like this, use &apos;const WKEinaSharedString&amp;&apos; please</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717754</commentid>
    <comment_count>27</comment_count>
      <attachid>163486</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-11 17:26:42 -0700</bug_when>
    <thetext>Created attachment 163486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717798</commentid>
    <comment_count>28</comment_count>
      <attachid>163486</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-11 18:36:47 -0700</bug_when>
    <thetext>Comment on attachment 163486
Patch

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

&gt; Source/WebKit2/ChangeLog:22
&gt; +        * UIProcess/API/efl/tests/test_ewk2_view.cpp:

Could you mention that you added tests?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:672
&gt; +    api-&gt;run_javascript_alert = 0;
&gt; +    api-&gt;run_javascript_confirm = 0;
&gt; +    api-&gt;run_javascript_prompt = 0;

IMO, there are not necessary.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1645
&gt; +    EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false);

priv looks not used.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1656
&gt; +    EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, WKEinaSharedString());

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:119
&gt; +    //   - All string should be guaranteed to be stringshared.

strings?

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:410
&gt; +    ewkViewClass()-&gt;run_javascript_alert = checkConfirmResultTrue;
&gt; +    ewkViewClass()-&gt;run_javascript_confirm = checkConfirmMessageAndReturnTrue;

This is not important. but why don&apos;t you use title instead of alert?

It looks better to understand test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717812</commentid>
    <comment_count>29</comment_count>
      <attachid>163486</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-11 18:52:38 -0700</bug_when>
    <thetext>Comment on attachment 163486
Patch

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

&gt;&gt; Source/WebKit2/ChangeLog:22
&gt;&gt; +        * UIProcess/API/efl/tests/test_ewk2_view.cpp:
&gt; 
&gt; Could you mention that you added tests?

Ok~

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:672
&gt;&gt; +    api-&gt;run_javascript_prompt = 0;
&gt; 
&gt; IMO, there are not necessary.

Yes, right. Thanks you.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1645
&gt;&gt; +    EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false);
&gt; 
&gt; priv looks not used.

Yes, smartData-&gt;api should be checked. Thanks :)

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:119
&gt;&gt; +    //   - All string should be guaranteed to be stringshared.
&gt; 
&gt; strings?

Ok~ I&apos;ll apply it.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:410
&gt;&gt; +    ewkViewClass()-&gt;run_javascript_confirm = checkConfirmMessageAndReturnTrue;
&gt; 
&gt; This is not important. but why don&apos;t you use title instead of alert?
&gt; 
&gt; It looks better to understand test.

I just used alert for checking return value, and there was some purpose to verify alert callback together.
But as you said, checking title will be more clear and have no dependency with alert callback.
I&apos;ll change this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718088</commentid>
    <comment_count>30</comment_count>
      <attachid>163555</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-12 02:26:35 -0700</bug_when>
    <thetext>Created attachment 163555
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719356</commentid>
    <comment_count>31</comment_count>
      <attachid>163555</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-13 05:11:15 -0700</bug_when>
    <thetext>Comment on attachment 163555
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1650
&gt; +WKEinaSharedString ewk_view_run_javascript_prompt(Evas_Object* ewkView, const WKEinaSharedString&amp; message, const WKEinaSharedString&amp; defaultValue)

Don&apos;t we need to know which button user choices in prompt dialog? In qt port case, he is using *ok* argument for it.

http://trac.webkit.org/browser/trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp#L587

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1656
&gt; +        return WKEinaSharedString();

If user sets default value, should we return an empty string instead of defaultValue ?

It looks Qt port returns default value.

http://trac.webkit.org/browser/trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp#L593</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719368</commentid>
    <comment_count>32</comment_count>
      <attachid>163555</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-13 05:31:37 -0700</bug_when>
    <thetext>Comment on attachment 163555
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp:47
&gt; +static void runJavaScriptAlert(WKPageRef page, WKStringRef alertText, WKFrameRef frame, const void* clientInfo)

I think that you can remove page, frame like (WKPageRef, WKStringRef alertText, WKFrameRef, const void* clientInfo);

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp:52
&gt; +static bool runJavaScriptConfirm(WKPageRef page, WKStringRef message, WKFrameRef frame, const void* clientInfo)

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp:57
&gt; +static WKStringRef runJavaScriptPrompt(WKPageRef page, WKStringRef message, WKStringRef defaultValue, WKFrameRef frame, const void* clientInfo)

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:379
&gt; +} javaScriptPopupCallbackData;

good. but Isn&apos;t it better to keep alertCallbackData, ...

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:381
&gt; +static void checkAlert(Ewk_View_Smart_Data* smartData, const char* message)

smartData can be ommited.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:390
&gt; +        &quot;&lt;html&gt;&lt;body onload=\&quot;alert(&apos;This is javascript alert message.&apos;);\&quot;&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
&gt; +    javaScriptPopupCallbackData.alert.expectedMessage = &quot;This is javascript alert message.&quot;;

How about using eina_stringshare_printf or something similar to share result string?

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:428
&gt; +    javaScriptPopupCallbackData.confirm.result = EINA_TRUE;

s/EINA_TRUE/true/

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:431
&gt; +    waitUntilLoadFinished();
&gt; +    EXPECT_STREQ(ewk_view_title_get(webView()), &quot;true&quot;);

We normally use waitUntilTitleChanged(&quot;true&quot;) for these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720109</commentid>
    <comment_count>33</comment_count>
      <attachid>163555</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-13 16:48:47 -0700</bug_when>
    <thetext>Comment on attachment 163555
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1650
&gt;&gt; +WKEinaSharedString ewk_view_run_javascript_prompt(Evas_Object* ewkView, const WKEinaSharedString&amp; message, const WKEinaSharedString&amp; defaultValue)
&gt; 
&gt; Don&apos;t we need to know which button user choices in prompt dialog? In qt port case, he is using *ok* argument for it.
&gt; 
&gt; http://trac.webkit.org/browser/trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp#L587

I think Qt browser has some additional requirement about this.
If prompt entry is empty, empty string(&quot;&quot;) is returned when user press &apos;ok&apos; button.
null is the result of &apos;cancel&apos;, so additional ok status might not be needed.
(I tested IE, Firefox, Chromium..)

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1656
&gt;&gt; +        return WKEinaSharedString();
&gt; 
&gt; If user sets default value, should we return an empty string instead of defaultValue ?
&gt; 
&gt; It looks Qt port returns default value.
&gt; 
&gt; http://trac.webkit.org/browser/trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp#L593

I think that &apos;default value&apos; means the default string for the prompt entry.
And if user press ok, then string in the prompt entry will be returned,
and if user press cancel, then null will be returned.
I think that this is the behavior of most browsers.

Returning null might be better because it is the return value by pressing cancel.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view_ui_client.cpp:47
&gt;&gt; +static void runJavaScriptAlert(WKPageRef page, WKStringRef alertText, WKFrameRef frame, const void* clientInfo)
&gt; 
&gt; I think that you can remove page, frame like (WKPageRef, WKStringRef alertText, WKFrameRef, const void* clientInfo);

Ok~ I&apos;ll apply it.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:379
&gt;&gt; +} javaScriptPopupCallbackData;
&gt; 
&gt; good. but Isn&apos;t it better to keep alertCallbackData, ...

Ok~ I&apos;ll separate the structures. :)

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:381
&gt;&gt; +static void checkAlert(Ewk_View_Smart_Data* smartData, const char* message)
&gt; 
&gt; smartData can be ommited.

Ok~ I&apos;ll remove it.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:390
&gt;&gt; +    javaScriptPopupCallbackData.alert.expectedMessage = &quot;This is javascript alert message.&quot;;
&gt; 
&gt; How about using eina_stringshare_printf or something similar to share result string?

Using macro might be easier. I&apos;ll change it like below.
#define ALERT_MESSAGE  &quot;This is javascript alert message.&quot;
const char* alertHTML =
    &quot;&lt;html&gt;&lt;body onload=\&quot;alert(&apos;&quot;ALERT_MESSAGE&quot;&apos;);\&quot;&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
javaScriptPopupCallbackData.alert.expectedMessage = ALERT_MESSAGE;

Thanks~

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:428
&gt;&gt; +    javaScriptPopupCallbackData.confirm.result = EINA_TRUE;
&gt; 
&gt; s/EINA_TRUE/true/

Ok, I&apos;ll use it.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:431
&gt;&gt; +    EXPECT_STREQ(ewk_view_title_get(webView()), &quot;true&quot;);
&gt; 
&gt; We normally use waitUntilTitleChanged(&quot;true&quot;) for these.

waitUntilTitleChanged() just make timeout if title is not the string.
I think that checking with this macro will be more clear and easy to check,
because EXPECT_STREQ prints expected and actual result if there is a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720184</commentid>
    <comment_count>34</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-13 18:12:07 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 163555 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163555&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:431
&gt; &gt;&gt; +    EXPECT_STREQ(ewk_view_title_get(webView()), &quot;true&quot;);
&gt; &gt; 
&gt; &gt; We normally use waitUntilTitleChanged(&quot;true&quot;) for these.
&gt; 
&gt; waitUntilTitleChanged() just make timeout if title is not the string.
&gt; I think that checking with this macro will be more clear and easy to check,
&gt; because EXPECT_STREQ prints expected and actual result if there is a bug.

I know your concern.
But after discussed about it in bug 94670, I changed mind because it make logically more reasonable.

I think that we should find a way not to make timeout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720191</commentid>
    <comment_count>35</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-13 18:21:05 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #33)
&gt; &gt; (From update of attachment 163555 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163555&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:431
&gt; &gt; &gt;&gt; +    EXPECT_STREQ(ewk_view_title_get(webView()), &quot;true&quot;);
&gt; &gt; &gt; 
&gt; &gt; &gt; We normally use waitUntilTitleChanged(&quot;true&quot;) for these.
&gt; &gt; 
&gt; &gt; waitUntilTitleChanged() just make timeout if title is not the string.
&gt; &gt; I think that checking with this macro will be more clear and easy to check,
&gt; &gt; because EXPECT_STREQ prints expected and actual result if there is a bug.
&gt; 
&gt; I know your concern.
&gt; But after discussed about it in bug 94670, I changed mind because it make logically more reasonable.
&gt; 
&gt; I think that we should find a way not to make timeout.

Oh~ Ok. I got the point. Thanks for the comment :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720802</commentid>
    <comment_count>36</comment_count>
      <attachid>164163</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-14 08:40:45 -0700</bug_when>
    <thetext>Created attachment 164163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721638</commentid>
    <comment_count>37</comment_count>
      <attachid>164163</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-16 16:35:37 -0700</bug_when>
    <thetext>Comment on attachment 164163
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:450
&gt; +    const char* confirmHTML = &quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;DefaultTitle&lt;/title&gt;&lt;/head&gt;&lt;body onload=\&quot;document.title = confirm(&apos;&quot; JAVASCRIPT_STRING_CONFIRM_MESSAGE &quot;&apos;);\&quot;&gt;&lt;/body&gt;&lt;/html&gt;&quot;;

I don&apos;t have objection if you want, but I think that we can simplify this
&quot;&lt;!doctype html&gt;&lt;body onload=\&quot;...&lt;/body&gt;&quot;;

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:537
&gt; +    const char* promptHTML = &quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;DefaultTitle&lt;/title&gt;&lt;/head&gt;&lt;body onload=\&quot;document.title = prompt(&apos;&quot; JAVASCRIPT_STRING_PROMPT_MESSAGE &quot;&apos;, &apos;&apos;);\&quot;&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
&gt; +    promptCallbackData.expectedMessage = JAVASCRIPT_STRING_PROMPT_MESSAGE;
&gt; +    promptCallbackData.expectedDefaultValue = JAVASCRIPT_STRING_EMPTY;
&gt; +    promptCallbackData.result = JAVASCRIPT_STRING_RESULT_STRING;
&gt; +    promptCallbackData.called = false;
&gt; +    ewk_view_html_string_load(webView(), promptHTML, 0, 0);
&gt; +    waitUntilTitleChangedTo(JAVASCRIPT_STRING_RESULT_STRING);
&gt; +    EXPECT_STREQ(ewk_view_title_get(webView()), JAVASCRIPT_STRING_RESULT_STRING);
&gt; +    EXPECT_EQ(promptCallbackData.called, true);
&gt; +
&gt; +    promptHTML = &quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;DefaultTitle&lt;/title&gt;&lt;/head&gt;&lt;body onload=\&quot;document.title = prompt(&apos;&quot; JAVASCRIPT_STRING_PROMPT_MESSAGE &quot;&apos;);\&quot;&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
&gt; +    promptCallbackData.expectedMessage = JAVASCRIPT_STRING_PROMPT_MESSAGE;
&gt; +    promptCallbackData.expectedDefaultValue = JAVASCRIPT_STRING_EMPTY;
&gt; +    promptCallbackData.result = JAVASCRIPT_STRING_RESULT_STRING;
&gt; +    promptCallbackData.called = false;
&gt; +    ewk_view_html_string_load(webView(), promptHTML, 0, 0);
&gt; +    waitUntilTitleChangedTo(JAVASCRIPT_STRING_RESULT_STRING);
&gt; +    EXPECT_STREQ(ewk_view_title_get(webView()), JAVASCRIPT_STRING_RESULT_STRING);
&gt; +    EXPECT_EQ(promptCallbackData.called, true);

same tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721757</commentid>
    <comment_count>38</comment_count>
      <attachid>164163</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-17 02:02:08 -0700</bug_when>
    <thetext>Comment on attachment 164163
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:450
&gt;&gt; +    const char* confirmHTML = &quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;DefaultTitle&lt;/title&gt;&lt;/head&gt;&lt;body onload=\&quot;document.title = confirm(&apos;&quot; JAVASCRIPT_STRING_CONFIRM_MESSAGE &quot;&apos;);\&quot;&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
&gt; 
&gt; I don&apos;t have objection if you want, but I think that we can simplify this
&gt; &quot;&lt;!doctype html&gt;&lt;body onload=\&quot;...&lt;/body&gt;&quot;;

Ok~ I&apos;ll apply it except #559 (that needs default title string)

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:537
&gt;&gt; +    EXPECT_EQ(promptCallbackData.called, true);
&gt; 
&gt; same tests?

Not the same test. First one has two parameter (second one is empty string) and Second one has only one parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721859</commentid>
    <comment_count>39</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-17 06:27:19 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:390
&gt; &gt;&gt; +    javaScriptPopupCallbackData.alert.expectedMessage = &quot;This is javascript alert message.&quot;;
&gt; &gt; 
&gt; &gt; How about using eina_stringshare_printf or something similar to share result string?
&gt; 
&gt; Using macro might be easier. I&apos;ll change it like below.
&gt; #define ALERT_MESSAGE  &quot;This is javascript alert message.&quot;
&gt; const char* alertHTML =
&gt;     &quot;&lt;html&gt;&lt;body onload=\&quot;alert(&apos;&quot;ALERT_MESSAGE&quot;&apos;);\&quot;&gt;&lt;/body&gt;&lt;/html&gt;&quot;;
&gt; javaScriptPopupCallbackData.alert.expectedMessage = ALERT_MESSAGE;
&gt; 
&gt; Thanks~
@ryuan
Using macro can make issue according to the bug 96793, so I&apos;ll remove macros and add static const char[] for some strings.
And I think that formatting html string using a title string is not an important issue in test case code.
Is it ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721961</commentid>
    <comment_count>40</comment_count>
      <attachid>164400</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-17 08:35:42 -0700</bug_when>
    <thetext>Created attachment 164400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722403</commentid>
    <comment_count>41</comment_count>
      <attachid>164400</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-17 18:25:58 -0700</bug_when>
    <thetext>Comment on attachment 164400
Patch

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

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

Add internal description like this,

/**
 * @internal
 * bla bla.
 */

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

ditto.

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

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722428</commentid>
    <comment_count>42</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-17 19:35:22 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 164400 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164400&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1627
&gt; &gt; +
&gt; 
&gt; Add internal description like this,
&gt; 
&gt; /**
&gt;  * @internal
&gt;  * bla bla.
&gt;  */
Ok~ I&apos;ll add it. Thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722433</commentid>
    <comment_count>43</comment_count>
      <attachid>164481</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-17 19:50:10 -0700</bug_when>
    <thetext>Created attachment 164481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722475</commentid>
    <comment_count>44</comment_count>
      <attachid>164481</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-17 21:49:46 -0700</bug_when>
    <thetext>Comment on attachment 164481
Patch

Clearing flags on attachment: 164481

Committed r128849: &lt;http://trac.webkit.org/changeset/128849&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722476</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-17 21:49:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722717</commentid>
    <comment_count>46</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-09-18 06:15:47 -0700</bug_when>
    <thetext>This has made test_ewk2_view start timing out because EWK2UnitTestBase.ewk_view_run_javascript_prompt seems to enter an infinite looop. I will roll this out for now to keep the bot green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722719</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-18 06:18:37 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 97007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722745</commentid>
    <comment_count>48</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-18 06:53:59 -0700</bug_when>
    <thetext>(In reply to comment #46)
&gt; This has made test_ewk2_view start timing out because EWK2UnitTestBase.ewk_view_run_javascript_prompt seems to enter an infinite looop. I will roll this out for now to keep the bot green.
The issue is related with Bug 96793. I&apos;ll add dependency with it.
Maybe unit test timeout issue will be fixed after the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723166</commentid>
    <comment_count>49</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-18 18:19:07 -0700</bug_when>
    <thetext>(In reply to comment #46)
&gt; This has made test_ewk2_view start timing out because EWK2UnitTestBase.ewk_view_run_javascript_prompt seems to enter an infinite looop. I will roll this out for now to keep the bot green.

Thank you for your roll out. r128943 fixed the infinite loop problem. So, this patch will be considered to land again. Anyway, we need to get Spank Spank Spank !!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723248</commentid>
    <comment_count>50</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-18 21:21:57 -0700</bug_when>
    <thetext>(In reply to comment #49)
&gt; (In reply to comment #46)
&gt; &gt; This has made test_ewk2_view start timing out because EWK2UnitTestBase.ewk_view_run_javascript_prompt seems to enter an infinite looop. I will roll this out for now to keep the bot green.
&gt; 
&gt; Thank you for your roll out. r128943 fixed the infinite loop problem. So, this patch will be considered to land again. Anyway, we need to get Spank Spank Spank !!.

Sorry for my carelessness.

I already tested about the problem so I made a patch for that.
But I made a mistake to activate the commit queue without seting the dependency.
Now I&apos;m testing this patch again with the merged source, and will request commit queue again.

Thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723286</commentid>
    <comment_count>51</comment_count>
      <attachid>164481</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-09-18 22:47:40 -0700</bug_when>
    <thetext>Comment on attachment 164481
Patch

I tested it again and works fine :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723293</commentid>
    <comment_count>52</comment_count>
      <attachid>164481</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-18 22:57:18 -0700</bug_when>
    <thetext>Comment on attachment 164481
Patch

Clearing flags on attachment: 164481

Committed r128967: &lt;http://trac.webkit.org/changeset/128967&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723295</commentid>
    <comment_count>53</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-18 22:57:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161938</attachid>
            <date>2012-09-03 09:16:52 -0700</date>
            <delta_ts>2012-09-09 00:49:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95672-20120904011635.patch</filename>
            <type>text/plain</type>
            <size>19632</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzZiYmQ1NmMxY2FiODcy
NDk1NjZiZGZmYzJlZWViN2EyMDcwNDk5Ni4uZWQxOTJlYmE2YTQ1MzM5ODNhYjkxMjg4OTIwYjk4
YzRkMjNjYWQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA5LTAzICBCeXVu
Z3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBqYXZhc2NyaXB0IHBvcHVwIGFwaS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1NjcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgZXdrIGFwaSBmb3IgamF2YXNjcmlwdCBhbGVydCgpLCBjb25m
aXJtKCkgYW5kIHByb21wdCgpLgorCisgICAgICAgICdqYXZhc2NyaXB0LGFsZXJ0JyAnamF2YXNj
cmlwdCxjb25maXJtJyAnamF2YXNjcmlwdCxwcm9tcHQnIHNpZ25hbHMKKyAgICAgICAgYW5kIGFw
aSBmdW5jdGlvbnMgZm9yIHJldHVybmluZyB2YWx1ZSBhcmUgYWRkZWQuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKToKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGE6Ol9Fd2tfVmlld19Qcml2
YXRlX0RhdGEpOgorICAgICAgICAoZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfYWxlcnQpOgorICAg
ICAgICAoZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybSk6CisgICAgICAgIChld2tfdmll
d19qYXZhc2NyaXB0X2NvbmZpcm1fZmluaXNoZWQpOgorICAgICAgICAoZXdrX3ZpZXdfcnVuX2ph
dmFzY3JpcHRfcHJvbXB0KToKKyAgICAgICAgKGV3a192aWV3X2phdmFzY3JpcHRfcHJvbXB0X2Zp
bmlzaGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9jbGllbnQuY3BwOgorICAgICAgICAocnVuSmF2YVNj
cmlwdEFsZXJ0KToKKyAgICAgICAgKHJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKHJ1
bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoZXdrX3ZpZXdfdWlfY2xpZW50X2F0dGFjaCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOgor
ICAgICAgICAoY2xlYXJKYXZhU2NyaXB0UG9wdXBJbmZvcm1hdGlvbik6CisgICAgICAgIChjb3B5
QWxlcnRJbmZvcm1hdGlvbik6CisgICAgICAgIChjb3B5Q29uZmlybUluZm9ybWF0aW9uKToKKyAg
ICAgICAgKGNvcHlQcm9tcHRJbmZvcm1hdGlvbik6CisgICAgICAgIChvbkphdmFTY3JpcHRBbGVy
dCk6CisgICAgICAgIChvbkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKG9uSmF2YVNjcmlw
dFByb21wdCk6CisgICAgICAgIChURVNUX0YpOgorCiAyMDEyLTA5LTAyICBLZW5pY2hpIElzaGli
YXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXSzI6IEJ1aWxkIGZhaWx1cmUg
b24gU25vd0xlb3BhcmQgYWZ0ZXIgcjEyNzM4NApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDU1ZTEzZGQ0NzI1Mjg2ZmY5MDdjZWQ5YjY1NzM0
NmFkNDI0MjBlZTUuLjEyYTg5MGQ1YTg3YjJlMWRlMGVlMDcxZGMxYjdjNDQxNTA4YTQ1MjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTEw
Miw2ICsxMDIsOSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgRXZhc19H
TF9TdXJmYWNlKiBldmFzR2xTdXJmYWNlOwogI2VuZGlmCiAKKyAgICBib29sIGphdmFzY3JpcHRD
b25maXJtUmVzdWx0OworICAgIE93blB0cjxDU3RyaW5nPiBqYXZhc2NyaXB0UHJvbXB0UmVzdWx0
OworCiAgICAgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSgpCiAgICAgICAgIDogY3Vyc29yT2JqZWN0
KDApCiAgICAgICAgICwgYmFja0ZvcndhcmRMaXN0KDApCkBAIC0xMTUsNiArMTE4LDggQEAgc3Ry
dWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgICAgICAsIGV2YXNHbENvbnRleHQoMCkK
ICAgICAgICAgLCBldmFzR2xTdXJmYWNlKDApCiAjZW5kaWYKKyAgICAgICAgLCBqYXZhc2NyaXB0
Q29uZmlybVJlc3VsdChmYWxzZSkKKyAgICAgICAgLCBqYXZhc2NyaXB0UHJvbXB0UmVzdWx0KG51
bGxwdHIpCiAgICAgeyB9CiAKICAgICB+X0V3a19WaWV3X1ByaXZhdGVfRGF0YSgpCkBAIC0xNTQw
LDMgKzE1NDUsNTcgQEAgRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCB1bnNpZ25lZCBpbnQgc2VsZWN0ZWQKIAogICAgIHJldHVybiB0cnVl
OwogfQorCit2b2lkIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjaGFyKiBhbGVydFRleHQpCit7CisgICAgRXdrX0phdmFTY3JpcHRfUG9wdXBfSW5m
b3JtYXRpb24gaW5mb3JtYXRpb247CisgICAgaW5mb3JtYXRpb24uYWxlcnQubWVzc2FnZSA9IGFs
ZXJ0VGV4dDsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywg
ImphdmFzY3JpcHQsYWxlcnQiLCAmaW5mb3JtYXRpb24pOworfQorCitib29sIGV3a192aWV3X3J1
bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNoYXIqIG1lc3NhZ2Up
Cit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZh
bHNlKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBm
YWxzZSk7CisKKyAgICBwcml2LT5qYXZhc2NyaXB0Q29uZmlybVJlc3VsdCA9IGZhbHNlOworCisg
ICAgRXdrX0phdmFTY3JpcHRfUG9wdXBfSW5mb3JtYXRpb24gaW5mb3JtYXRpb247CisgICAgaW5m
b3JtYXRpb24uY29uZmlybS5tZXNzYWdlID0gbWVzc2FnZTsKKworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImphdmFzY3JpcHQsY29uZmlybSIsICZpbmZvcm1h
dGlvbik7CisgICAgcmV0dXJuIHByaXYtPmphdmFzY3JpcHRDb25maXJtUmVzdWx0OworfQorCit2
b2lkIGV3a192aWV3X2phdmFzY3JpcHRfY29uZmlybV9maW5pc2hlZChFdmFzX09iamVjdCogZXdr
VmlldywgRWluYV9Cb29sIHJlc3VsdCkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdik7CisKKyAgICBwcml2LT5qYXZhc2NyaXB0Q29uZmlybVJlc3VsdCA9IHJl
c3VsdDsKK30KKworUGFzc093blB0cjxDU3RyaW5nPiBld2tfdmlld19ydW5famF2YXNjcmlwdF9w
cm9tcHQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNoYXIqIG1lc3NhZ2UsIGNoYXIqIGRlZmF1bHRW
YWx1ZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgbnVsbHB0cik7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdiwgbnVsbHB0cik7CisKKyAgICBwcml2LT5qYXZhc2NyaXB0UHJvbXB0UmVzdWx0LmNsZWFy
KCk7CisKKyAgICBFd2tfSmF2YVNjcmlwdF9Qb3B1cF9JbmZvcm1hdGlvbiBpbmZvcm1hdGlvbjsK
KyAgICBpbmZvcm1hdGlvbi5wcm9tcHQubWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgaW5mb3JtYXRp
b24ucHJvbXB0LmRlZmF1bHRfdmFsdWUgPSBkZWZhdWx0VmFsdWU7CisKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJqYXZhc2NyaXB0LHByb21wdCIsICZpbmZv
cm1hdGlvbik7CisgICAgcmV0dXJuIHByaXYtPmphdmFzY3JpcHRQcm9tcHRSZXN1bHQucmVsZWFz
ZSgpOworfQorCit2b2lkIGV3a192aWV3X2phdmFzY3JpcHRfcHJvbXB0X2ZpbmlzaGVkKEV2YXNf
T2JqZWN0KmV3a1ZpZXcsIGNvbnN0IGNoYXIqIHJlc3VsdCkKK3sKKyAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisKKyAgICBwcml2LT5qYXZhc2NyaXB0UHJvbXB0
UmVzdWx0ID0gYWRvcHRQdHIobmV3IENTdHJpbmcocmVzdWx0ID8gcmVzdWx0IDogIiIpKTsKK30K
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXggYjZh
MWU0OTMxNTI4ZDY5NjBkMTBjNDE4NmVhZWM3MzgxMmY1ZTYyOS4uY2Y3MjVjOGNlNmU1ZDE1YTQ4
NmY0N2E0M2FjNDFhNzk3NzFkZDljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5oCkBAIC00NCw2ICs0NCw5IEBACiAgKiAgIGV3a19mb3JtX3N1Ym1pc3Np
b25fcmVxdWVzdF9zdWJtaXQoKSB3aWxsIGJlIGNhbGxlZCBhdXRvbWF0aWNhbGx5LgogICogLSAi
aW50ZW50LHJlcXVlc3QsbmV3IiwgRXdrX0ludGVudCo6IHJlcG9ydHMgbmV3IFdlYiBpbnRlbnQg
cmVxdWVzdC4KICAqIC0gImludGVudCxzZXJ2aWNlLHJlZ2lzdGVyIiwgRXdrX0ludGVudF9TZXJ2
aWNlKjogcmVwb3J0cyBuZXcgV2ViIGludGVudCBzZXJ2aWNlIHJlZ2lzdHJhdGlvbi4KKyAqIC0g
ImphdmFzY3JpcHQsYWxlcnQiLCBFd2tfSmF2YVNjcmlwdF9Qb3B1cF9JbmZvcm1hdGlvbio6IHJl
cG9ydHMgdGhhdCBhbiBhbGVydCgpIGZ1bmN0aW9uIGlzIGRpc3BhdGNoZWQgaW4gamF2YXNjcmlw
dC4KKyAqIC0gImphdmFzY3JpcHQsY29uZmlybSIsIEV3a19KYXZhU2NyaXB0X1BvcHVwX0luZm9y
bWF0aW9uKjogcmVwb3J0cyB0aGF0IGEgY29uZmlybSgpIGZ1bmN0aW9uIGlzIGRpc3BhdGNoZWQg
aW4gamF2YXNjcmlwdC4KKyAqIC0gImphdmFzY3JpcHQscHJvbXB0IiwgRXdrX0phdmFTY3JpcHRf
UG9wdXBfSW5mb3JtdGlvbio6IHJlcG9ydHMgdGhhdCBhIHByb21wdCgpIGZ1bmN0aW9uIGlzIGRp
c3BhdGNoZWQgaW4gamF2YXNjcmlwdC4KICAqIC0gImxvYWQsZXJyb3IiLCBjb25zdCBFd2tfV2Vi
X0Vycm9yKjogcmVwb3J0cyBtYWluIGZyYW1lIGxvYWQgZmFpbGVkLgogICogLSAibG9hZCxmaW5p
c2hlZCIsIHZvaWQ6IHJlcG9ydHMgbG9hZCBmaW5pc2hlZC4KICAqIC0gImxvYWQscHJvZ3Jlc3Mi
LCBkb3VibGUqOiBsb2FkIHByb2dyZXNzIGhhcyBjaGFuZ2VkICh2YWx1ZSBmcm9tIDAuMCB0byAx
LjApLgpAQCAtMjI4LDYgKzIzMSwyNyBAQCBzdHJ1Y3QgX0V3a19Eb3dubG9hZF9Kb2JfRXJyb3Ig
ewogICAgIEV3a19XZWJfRXJyb3IgKmVycm9yOyAvKio8IGRvd25sb2FkIGVycm9yICovCiB9Owog
CisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19KYXZhU2NyaXB0X1BvcHVwX0luZm9y
bWF0aW9uLgordHlwZWRlZiBzdHJ1Y3QgX0V3a19KYXZhU2NyaXB0X1BvcHVwX0luZm9ybWF0aW9u
IEV3a19KYXZhU2NyaXB0X1BvcHVwX0luZm9ybWF0aW9uOworCisvKioKKyAqIEBicmllZiBTdHJ1
Y3R1cmUgY29udGFpbmluZyBpbmZvcm1hdGlvbiBvZiBqYXZhc2NyaXB0IHBvcHVwLgorICovCitz
dHJ1Y3QgX0V3a19KYXZhU2NyaXB0X1BvcHVwX0luZm9ybWF0aW9uIHsKKyAgICB1bmlvbiB7Cisg
ICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBjaGFyICptZXNzYWdlOyAvKio8IG1lc3NhZ2Ug
Zm9yIGFsZXJ0KCkqLworICAgICAgICB9IGFsZXJ0OworICAgICAgICBzdHJ1Y3QgeworICAgICAg
ICAgICAgY2hhciAqbWVzc2FnZTsgLyoqPCBtZXNzYWdlIGZvciBjb25maXJtKCkqLworICAgICAg
ICB9IGNvbmZpcm07CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBjaGFyICptZXNzYWdl
OyAvKio8IG1lc3NhZ2UgZm9yIHByb21wdCgpKi8KKyAgICAgICAgICAgIGNoYXIgKmRlZmF1bHRf
dmFsdWU7IC8qKjwgZGVmYXVsdCB2YWx1ZSBmb3IgcHJvbXB0KCkgaW5wdXQgYm94Ki8KKyAgICAg
ICAgfSBwcm9tcHQ7CisgICAgfTsKK307CisKIC8qKgogICogRW51bSB2YWx1ZXMgdXNlZCB0byBz
cGVjaWZ5IHNlYXJjaCBvcHRpb25zLgogICogQGJyaWVmICAgUHJvdmlkZXMgb3B0aW9uIHRvIGZp
bmQgdGV4dApAQCAtNjIwLDYgKzY0NCwyNiBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19wb3B1
cF9tZW51X3NlbGVjdChFdmFzX09iamVjdCAqbywgdW5zaWduZWQgaW50IGluZGV4KTsKICAqLwog
RUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9jbG9zZShFdmFzX09iamVjdCAqbyk7
CiAKKy8qKgorICogU2V0IHJldHVybiB2YWx1ZSBvZiBjb25maXJtKCkuCisgKgorICogVGhpcyBm
dW5jdGlvbiB3b3JrcyBpbiB0aGUgamF2YXNjcmlwdCxjb25maXJtIGNhbGxiYWNrIGZ1bmN0aW9u
IG9ubHkuCisgKgorICogQHBhcmFtIG8gI0V3a19WaWV3IG9iamVjdAorICogQHBhcmFtIHJlc3Vs
dCByZXR1cm4gdmFsdWUgb2YgY29uZmlybSgpCisgKi8KK0VBUEkgdm9pZCBld2tfdmlld19qYXZh
c2NyaXB0X2NvbmZpcm1fZmluaXNoZWQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCByZXN1bHQp
OworCisvKioKKyAqIFNldCByZXR1cm4gdmFsdWUgb2YgcHJvbXB0KCkuCisgKgorICogVGhpcyBm
dW5jdGlvbiB3b3JrcyBpbiB0aGUgamF2YXNjcmlwdCxwcm9tcHQgY2FsbGJhY2sgZnVuY3Rpb24g
b25seS4KKyAqCisgKiBAcGFyYW0gbyAjRXdrX1ZpZXcgb2JqZWN0CisgKiBAcGFyYW0gcmVzdWx0
IHJldHVybiB2YWx1ZSBvZiBwcm9tcHQoKQorICovCitFQVBJIHZvaWQgZXdrX3ZpZXdfamF2YXNj
cmlwdF9wcm9tcHRfZmluaXNoZWQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnJlc3VsdCk7
CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggZGI4YWI2NmE2MWIx
NGYxNjdkYWNkZDVlOTg3NDVlOGZiZmY0OTBiZS4uYzE2YmM2M2VkNDBhNWVjYzY2Y2M2N2M3MmEy
MzcwNTAxMjFmY2NjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3X3ByaXZhdGUuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvVGV4dERpcmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQ3Vyc29yOwpAQCAtOTgsNCArOTksOCBAQCBib29sIGV3a192
aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX21vZGVfZXhpdChjb25zdCBFdmFzX09iamVjdCog
ZXdrVmlldyk7CiAKIHZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnUsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNj
YWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50
MzJfdCBzZWxlY3RlZEluZGV4KTsKIAordm9pZCBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVy
dChFdmFzX09iamVjdCogZXdrVmlldywgY2hhciogYWxlcnRUZXh0KTsKK2Jvb2wgZXdrX3ZpZXdf
cnVuX2phdmFzY3JpcHRfY29uZmlybShFdmFzX09iamVjdCogZXdrVmlldywgY2hhciogbWVzc2Fn
ZSk7CitQYXNzT3duUHRyPENTdHJpbmc+IGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdChF
dmFzX09iamVjdCogZXdrVmlldywgY2hhciogbWVzc2FnZSwgY2hhciogZGVmYXVsdF92YWx1ZSk7
CisKICNlbmRpZiAvLyBld2tfdmlld19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9jbGllbnQuY3BwCmluZGV4IDE4ZWRl
MDhhMTQ3MjdkMzZkMDJjMWQ1ZThkYTE2MTZiNjAyNzg3MzYuLmE4MGYyZmU0YTMwZjAxNWUxYzdj
ZmFiMzFlNTYzYzExNzhiZjYwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50LmNwcApAQCAtMjUsOCArMjUsMTAgQEAK
IAogI2luY2x1ZGUgImNvbmZpZy5oIgogCisjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRl
ICJld2tfdmlld19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfdWlfY2xpZW50X3ByaXZh
dGUuaCIKKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KIAogc3RhdGljIGlubGluZSBFdmFz
X09iamVjdCogdG9Fd2tWaWV3KGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CkBAIC00Myw2ICs0
NSwzOCBAQCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmLCBXS1VSTFJl
cXVlc3RSZWYsIFdLRGljdGlvbmFyeVJlZiwgV0tFdgogICAgICByZXR1cm4gZXdrX3ZpZXdfcGFn
ZV9jcmVhdGUodG9Fd2tWaWV3KGNsaWVudEluZm8pKTsKIH0KIAorc3RhdGljIHZvaWQgcnVuSmF2
YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJh
bWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgaW50IGxlbmd0aCA9
IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShhbGVydFRleHQpOworICAgIE93bkFy
cmF5UHRyPGNoYXI+IGFsZXJ0VGV4dEJ1ZmZlciA9IGFkb3B0QXJyYXlQdHIobmV3IGNoYXJbbGVu
Z3RoXSk7CisgICAgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhhbGVydFRleHQsIGFsZXJ0VGV4dEJ1
ZmZlci5nZXQoKSwgbGVuZ3RoKTsKKworICAgIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0
KHRvRXdrVmlldyhjbGllbnRJbmZvKSwgYWxlcnRUZXh0QnVmZmVyLmdldCgpKTsKK30KKworc3Rh
dGljIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVm
IG1lc3NhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7Cisg
ICAgaW50IGxlbmd0aCA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShtZXNzYWdl
KTsKKyAgICBPd25BcnJheVB0cjxjaGFyPiBtZXNzYWdlQnVmZmVyID0gYWRvcHRBcnJheVB0cihu
ZXcgY2hhcltsZW5ndGhdKTsKKyAgICBXS1N0cmluZ0dldFVURjhDU3RyaW5nKG1lc3NhZ2UsIG1l
c3NhZ2VCdWZmZXIuZ2V0KCksIGxlbmd0aCk7CisKKyAgICByZXR1cm4gZXdrX3ZpZXdfcnVuX2ph
dmFzY3JpcHRfY29uZmlybSh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIG1lc3NhZ2VCdWZmZXIuZ2V0
KCkpOworfQorCitzdGF0aWMgV0tTdHJpbmdSZWYgcnVuSmF2YVNjcmlwdFByb21wdChXS1BhZ2VS
ZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tTdHJpbmdSZWYgZGVmYXVsdFZhbHVlLCBX
S0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGludCBsZW5n
dGggPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUobWVzc2FnZSk7CisgICAgT3du
QXJyYXlQdHI8Y2hhcj4gbWVzc2FnZUJ1ZmZlciA9IGFkb3B0QXJyYXlQdHIobmV3IGNoYXJbbGVu
Z3RoXSk7CisgICAgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhtZXNzYWdlLCBtZXNzYWdlQnVmZmVy
LmdldCgpLCBsZW5ndGgpOworCisgICAgbGVuZ3RoID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENT
dHJpbmdTaXplKGRlZmF1bHRWYWx1ZSk7CisgICAgT3duQXJyYXlQdHI8Y2hhcj4gZGVmYXVsdFZh
bHVlQnVmZmVyID0gYWRvcHRBcnJheVB0cihuZXcgY2hhcltsZW5ndGhdKTsKKyAgICBXS1N0cmlu
Z0dldFVURjhDU3RyaW5nKGRlZmF1bHRWYWx1ZSwgZGVmYXVsdFZhbHVlQnVmZmVyLmdldCgpLCBs
ZW5ndGgpOworCisgICAgT3duUHRyPENTdHJpbmc+IHJlc3VsdCA9IGV3a192aWV3X3J1bl9qYXZh
c2NyaXB0X3Byb21wdCh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIG1lc3NhZ2VCdWZmZXIuZ2V0KCks
IGRlZmF1bHRWYWx1ZUJ1ZmZlci5nZXQoKSk7CisgICAgcmV0dXJuIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKHJlc3VsdCA/IHJlc3VsdC0+ZGF0YSgpIDogIiIpOworfQorCiB2b2lkIGV3
a192aWV3X3VpX2NsaWVudF9hdHRhY2goV0tQYWdlUmVmIHBhZ2VSZWYsIEV2YXNfT2JqZWN0KiBl
d2tWaWV3KQogewogICAgIFdLUGFnZVVJQ2xpZW50IHVpQ2xpZW50OwpAQCAtNTEsNSArODUsOCBA
QCB2b2lkIGV3a192aWV3X3VpX2NsaWVudF9hdHRhY2goV0tQYWdlUmVmIHBhZ2VSZWYsIEV2YXNf
T2JqZWN0KiBld2tWaWV3KQogICAgIHVpQ2xpZW50LmNsaWVudEluZm8gPSBld2tWaWV3OwogICAg
IHVpQ2xpZW50LmNsb3NlID0gY2xvc2VQYWdlOwogICAgIHVpQ2xpZW50LmNyZWF0ZU5ld1BhZ2Ug
PSBjcmVhdGVOZXdQYWdlOworICAgIHVpQ2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydCA9IHJ1bkph
dmFTY3JpcHRBbGVydDsKKyAgICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0Q29uZmlybSA9IHJ1bkph
dmFTY3JpcHRDb25maXJtOworICAgIHVpQ2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHQgPSBydW5K
YXZhU2NyaXB0UHJvbXB0OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChwYWdlUmVmLCAmdWlD
bGllbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCmluZGV4IDQyMTdmNzEzZGRkNzQwNWQ5NWMwMTZj
MDBlZDQ3NTQzZmU0ODAxOWIuLjM4ZmY1MjM4YTExYzY1ZTJhMDBmZWIzMDM0YzIxZTk0NDMwZTc5
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl92aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKQEAgLTIzNiwzICsyMzYsMTkxIEBAIFRFU1RfRihFV0sy
VW5pdFRlc3RCYXNlLCBld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCkKICAgICBFWFBFQ1RfVFJV
RShld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKHdlYlZpZXcoKSkpOwogICAgIEVYUEVDVF9GQUxT
RShld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdCh3ZWJWaWV3KCksIDApKTsKIH0KKworc3RhdGlj
IHZvaWQgY2xlYXJKYXZhU2NyaXB0UG9wdXBJbmZvcm1hdGlvbihFd2tfSmF2YVNjcmlwdF9Qb3B1
cF9JbmZvcm1hdGlvbiogaW5mb3JtYXRpb24pCit7CisgICAgaWYgKCFpbmZvcm1hdGlvbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKGluZm9ybWF0aW9uLT5hbGVydC5tZXNzYWdlKSB7Cisg
ICAgICAgIGZyZWUoaW5mb3JtYXRpb24tPmFsZXJ0Lm1lc3NhZ2UpOworICAgICAgICBpbmZvcm1h
dGlvbi0+YWxlcnQubWVzc2FnZSA9IDA7CisgICAgfQorCisgICAgaWYgKGluZm9ybWF0aW9uLT5j
b25maXJtLm1lc3NhZ2UpIHsKKyAgICAgICAgZnJlZShpbmZvcm1hdGlvbi0+Y29uZmlybS5tZXNz
YWdlKTsKKyAgICAgICAgaW5mb3JtYXRpb24tPmNvbmZpcm0ubWVzc2FnZSA9IDA7CisgICAgfQor
CisgICAgaWYgKGluZm9ybWF0aW9uLT5wcm9tcHQubWVzc2FnZSkgeworICAgICAgICBmcmVlKGlu
Zm9ybWF0aW9uLT5wcm9tcHQubWVzc2FnZSk7CisgICAgICAgIGluZm9ybWF0aW9uLT5wcm9tcHQu
bWVzc2FnZSA9IDA7CisgICAgfQorCisgICAgaWYgKGluZm9ybWF0aW9uLT5wcm9tcHQuZGVmYXVs
dF92YWx1ZSkgeworICAgICAgICBmcmVlKGluZm9ybWF0aW9uLT5wcm9tcHQuZGVmYXVsdF92YWx1
ZSk7CisgICAgICAgIGluZm9ybWF0aW9uLT5wcm9tcHQuZGVmYXVsdF92YWx1ZSA9IDA7CisgICAg
fQorfQorCitzdGF0aWMgdm9pZCBjb3B5QWxlcnRJbmZvcm1hdGlvbihFd2tfSmF2YVNjcmlwdF9Q
b3B1cF9JbmZvcm1hdGlvbiogZGVzdGluYXRpb24sIGNvbnN0IEV3a19KYXZhU2NyaXB0X1BvcHVw
X0luZm9ybWF0aW9uKiBzb3VyY2UpCit7CisgICAgaWYgKCFkZXN0aW5hdGlvbikKKyAgICAgICAg
cmV0dXJuOworCisgICAgY2xlYXJKYXZhU2NyaXB0UG9wdXBJbmZvcm1hdGlvbihkZXN0aW5hdGlv
bik7CisKKyAgICBpZiAoIXNvdXJjZSB8fCAhc291cmNlLT5hbGVydC5tZXNzYWdlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBkZXN0aW5hdGlvbi0+YWxlcnQubWVzc2FnZSA9IHN0cmR1cChzb3Vy
Y2UtPmFsZXJ0Lm1lc3NhZ2UpOworfQorCitzdGF0aWMgdm9pZCBjb3B5Q29uZmlybUluZm9ybWF0
aW9uKEV3a19KYXZhU2NyaXB0X1BvcHVwX0luZm9ybWF0aW9uKiBkZXN0aW5hdGlvbiwgY29uc3Qg
RXdrX0phdmFTY3JpcHRfUG9wdXBfSW5mb3JtYXRpb24qIHNvdXJjZSkKK3sKKyAgICBpZiAoIWRl
c3RpbmF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBjbGVhckphdmFTY3JpcHRQb3B1cElu
Zm9ybWF0aW9uKGRlc3RpbmF0aW9uKTsKKworICAgIGlmICghc291cmNlIHx8ICFzb3VyY2UtPmNv
bmZpcm0ubWVzc2FnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZGVzdGluYXRpb24tPmNvbmZp
cm0ubWVzc2FnZSA9IHN0cmR1cChzb3VyY2UtPmNvbmZpcm0ubWVzc2FnZSk7Cit9CisKK3N0YXRp
YyB2b2lkIGNvcHlQcm9tcHRJbmZvcm1hdGlvbihFd2tfSmF2YVNjcmlwdF9Qb3B1cF9JbmZvcm1h
dGlvbiogZGVzdGluYXRpb24sIGNvbnN0IEV3a19KYXZhU2NyaXB0X1BvcHVwX0luZm9ybWF0aW9u
KiBzb3VyY2UpCit7CisgICAgaWYgKCFkZXN0aW5hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY2xlYXJKYXZhU2NyaXB0UG9wdXBJbmZvcm1hdGlvbihkZXN0aW5hdGlvbik7CisKKyAgICBp
ZiAoIXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHNvdXJjZS0+cHJvbXB0Lm1l
c3NhZ2UpCisgICAgICAgIGRlc3RpbmF0aW9uLT5wcm9tcHQubWVzc2FnZSA9IHN0cmR1cChzb3Vy
Y2UtPnByb21wdC5tZXNzYWdlKTsKKworICAgIGlmIChzb3VyY2UtPnByb21wdC5kZWZhdWx0X3Zh
bHVlKQorICAgICAgICBkZXN0aW5hdGlvbi0+cHJvbXB0LmRlZmF1bHRfdmFsdWUgPSBzdHJkdXAo
c291cmNlLT5wcm9tcHQuZGVmYXVsdF92YWx1ZSk7Cit9CisKK3N0YXRpYyB2b2lkIG9uSmF2YVNj
cmlwdEFsZXJ0KHZvaWQqIHVzZXJEYXRhLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50X2luZm8p
Cit7CisgICAgRXdrX0phdmFTY3JpcHRfUG9wdXBfSW5mb3JtYXRpb24qIHJlc3VsdCA9IHN0YXRp
Y19jYXN0PEV3a19KYXZhU2NyaXB0X1BvcHVwX0luZm9ybWF0aW9uKj4odXNlckRhdGEpOworICAg
IGNvbnN0IEV3a19KYXZhU2NyaXB0X1BvcHVwX0luZm9ybWF0aW9uKiByZWNlaXZlZCA9IHN0YXRp
Y19jYXN0PEV3a19KYXZhU2NyaXB0X1BvcHVwX0luZm9ybWF0aW9uKj4oZXZlbnRfaW5mbyk7CisK
KyAgICBjb3B5QWxlcnRJbmZvcm1hdGlvbihyZXN1bHQsIHJlY2VpdmVkKTsKK30KKworc3RhdGlj
IHZvaWQgb25KYXZhU2NyaXB0Q29uZmlybSh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqIHdl
YnZpZXcsIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXdrX0phdmFTY3JpcHRfUG9wdXBfSW5m
b3JtYXRpb24qIHJlc3VsdCA9IHN0YXRpY19jYXN0PEV3a19KYXZhU2NyaXB0X1BvcHVwX0luZm9y
bWF0aW9uKj4odXNlckRhdGEpOworICAgIGNvbnN0IEV3a19KYXZhU2NyaXB0X1BvcHVwX0luZm9y
bWF0aW9uKiByZWNlaXZlZCA9IHN0YXRpY19jYXN0PEV3a19KYXZhU2NyaXB0X1BvcHVwX0luZm9y
bWF0aW9uKj4oZXZlbnRfaW5mbyk7CisKKyAgICBjb3B5Q29uZmlybUluZm9ybWF0aW9uKHJlc3Vs
dCwgcmVjZWl2ZWQpOworICAgIGV3a192aWV3X2phdmFzY3JpcHRfY29uZmlybV9maW5pc2hlZCh3
ZWJ2aWV3LCBFSU5BX1RSVUUpOworfQorCitzdGF0aWMgdm9pZCBvbkphdmFTY3JpcHRQcm9tcHQo
dm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudF9pbmZvKQor
eworICAgIEV3a19KYXZhU2NyaXB0X1BvcHVwX0luZm9ybWF0aW9uKiByZXN1bHQgPSBzdGF0aWNf
Y2FzdDxFd2tfSmF2YVNjcmlwdF9Qb3B1cF9JbmZvcm1hdGlvbio+KHVzZXJEYXRhKTsKKyAgICBj
b25zdCBFd2tfSmF2YVNjcmlwdF9Qb3B1cF9JbmZvcm1hdGlvbiogcmVjZWl2ZWQgPSBzdGF0aWNf
Y2FzdDxFd2tfSmF2YVNjcmlwdF9Qb3B1cF9JbmZvcm1hdGlvbio+KGV2ZW50X2luZm8pOworCisg
ICAgY29weVByb21wdEluZm9ybWF0aW9uKHJlc3VsdCwgcmVjZWl2ZWQpOworICAgIGV3a192aWV3
X2phdmFzY3JpcHRfcHJvbXB0X2ZpbmlzaGVkKHdlYnZpZXcsICJSZXR1cm4gU3RyaW5nIik7Cit9
CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVy
dCkKK3sKKyAgICBjb25zdCBjaGFyKiBhbGVydEhUTUwgPQorICAgICAgICAiPGh0bWw+PGJvZHkg
b25sb2FkPVwiYWxlcnQoJ1RoaXMgaXMgamF2YXNjcmlwdCBhbGVydCBtZXNzYWdlLicpO1wiPjwv
Ym9keT48L2h0bWw+IjsKKyAgICBFd2tfSmF2YVNjcmlwdF9Qb3B1cF9JbmZvcm1hdGlvbiByZXN1
bHQgPSB7MCwgfTsKKworICAgIC8vIGNoZWNrIHRoZSBhbGVydCgpIG1lc3NhZ2UuCisgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdlYlZpZXcoKSwgImphdmFzY3JpcHQsYWxlcnQi
LCBvbkphdmFTY3JpcHRBbGVydCwgJnJlc3VsdCk7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdf
bG9hZCh3ZWJWaWV3KCksIGFsZXJ0SFRNTCwgMCwgMCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlz
aGVkKCk7CisgICAgRVhQRUNUX1NUUkVRKHJlc3VsdC5hbGVydC5tZXNzYWdlLCAiVGhpcyBpcyBq
YXZhc2NyaXB0IGFsZXJ0IG1lc3NhZ2UuIik7CisKKyAgICAvLyBjaGVjayB0aGUgZGVsZXRlIGFs
ZXJ0KCkgY2FsbGJhY2suCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKHdlYlZp
ZXcoKSwgImphdmFzY3JpcHQsYWxlcnQiLCBvbkphdmFTY3JpcHRBbGVydCk7CisgICAgY2xlYXJK
YXZhU2NyaXB0UG9wdXBJbmZvcm1hdGlvbigmcmVzdWx0KTsKKyAgICBld2tfdmlld19odG1sX3N0
cmluZ19sb2FkKHdlYlZpZXcoKSwgYWxlcnRIVE1MLCAwLCAwKTsKKyAgICB3YWl0VW50aWxMb2Fk
RmluaXNoZWQoKTsKKyAgICBFWFBFQ1RfU1RSRVEocmVzdWx0LmFsZXJ0Lm1lc3NhZ2UsIDApOwor
CisgICAgY2xlYXJKYXZhU2NyaXB0UG9wdXBJbmZvcm1hdGlvbigmcmVzdWx0KTsKK30KKworVEVT
VF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X2phdmFzY3JpcHRfY29uZmlybV9maW5pc2hl
ZCkKK3sKKyAgICBjb25zdCBjaGFyKiBjb25maXJtSFRNTCA9CisgICAgICAgICI8aHRtbD48Ym9k
eSBvbmxvYWQ9XCJhbGVydChjb25maXJtKCdUaGlzIGlzIGphdmFzY3JpcHQgY29uZmlybSBtZXNz
YWdlLicpKTtcIj48L2JvZHk+PC9odG1sPiI7CisgICAgRXdrX0phdmFTY3JpcHRfUG9wdXBfSW5m
b3JtYXRpb24gY29uZmlybVJlc3VsdCA9IHswLCB9OworICAgIEV3a19KYXZhU2NyaXB0X1BvcHVw
X0luZm9ybWF0aW9uIGFsZXJ0UmVzdWx0ID0gezAsIH07CisKKyAgICAvLyBjaGVjayB0aGUgY29u
ZmlybSgpIG1lc3NhZ2UgYW5kIHJldHVybiB2YWx1ZS4KKyAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19hZGQod2ViVmlldygpLCAiamF2YXNjcmlwdCxhbGVydCIsIG9uSmF2YVNjcmlwdEFs
ZXJ0LCAmYWxlcnRSZXN1bHQpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3
ZWJWaWV3KCksICJqYXZhc2NyaXB0LGNvbmZpcm0iLCBvbkphdmFTY3JpcHRDb25maXJtLCAmY29u
ZmlybVJlc3VsdCk7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGNv
bmZpcm1IVE1MLCAwLCAwKTsKKyAgICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBFWFBF
Q1RfU1RSRVEoY29uZmlybVJlc3VsdC5jb25maXJtLm1lc3NhZ2UsICJUaGlzIGlzIGphdmFzY3Jp
cHQgY29uZmlybSBtZXNzYWdlLiIpOworICAgIEVYUEVDVF9TVFJFUShhbGVydFJlc3VsdC5hbGVy
dC5tZXNzYWdlLCAidHJ1ZSIpOworCisgICAgLy8gY2hlY2sgdGhlIGRlZmF1bHQgcmV0dXJuIHZh
bHVlIG9mIGNvbmZpcm0oKS4KKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2Vi
VmlldygpLCAiamF2YXNjcmlwdCxjb25maXJtIiwgb25KYXZhU2NyaXB0Q29uZmlybSk7CisgICAg
Y2xlYXJKYXZhU2NyaXB0UG9wdXBJbmZvcm1hdGlvbigmY29uZmlybVJlc3VsdCk7CisgICAgY2xl
YXJKYXZhU2NyaXB0UG9wdXBJbmZvcm1hdGlvbigmYWxlcnRSZXN1bHQpOworICAgIGV3a192aWV3
X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBjb25maXJtSFRNTCwgMCwgMCk7CisgICAgd2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgRVhQRUNUX1NUUkVRKGNvbmZpcm1SZXN1bHQuY29u
ZmlybS5tZXNzYWdlLCAwKTsKKyAgICBFWFBFQ1RfU1RSRVEoYWxlcnRSZXN1bHQuYWxlcnQubWVz
c2FnZSwgImZhbHNlIik7CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2Vi
VmlldygpLCAiamF2YXNjcmlwdCxhbGVydCIsIG9uSmF2YVNjcmlwdEFsZXJ0KTsKKyAgICBjbGVh
ckphdmFTY3JpcHRQb3B1cEluZm9ybWF0aW9uKCZjb25maXJtUmVzdWx0KTsKKyAgICBjbGVhckph
dmFTY3JpcHRQb3B1cEluZm9ybWF0aW9uKCZhbGVydFJlc3VsdCk7Cit9CisKK1RFU1RfRihFV0sy
VW5pdFRlc3RCYXNlLCBld2tfdmlld19qYXZhc2NyaXB0X3Byb21wdF9maW5pc2hlZCkKK3sKKyAg
ICBjb25zdCBjaGFyKiBwcm9tcHRIVE1MMSA9CisgICAgICAgICI8aHRtbD48Ym9keSBvbmxvYWQ9
XCJhbGVydChwcm9tcHQoJ1RoaXMgaXMgamF2YXNjcmlwdCBwcm9tcHQgbWVzc2FnZS4nLCAncHJv
bXB0IGRlZmF1bHQgdmFsdWUnKSk7XCI+PC9ib2R5PjwvaHRtbD4iOworICAgIEV3a19KYXZhU2Ny
aXB0X1BvcHVwX0luZm9ybWF0aW9uIHByb21wdFJlc3VsdCA9IHswLCB9OworICAgIEV3a19KYXZh
U2NyaXB0X1BvcHVwX0luZm9ybWF0aW9uIGFsZXJ0UmVzdWx0ID0gezAsIH07CisKKyAgICAvLyBj
aGVjayB0aGUgcHJvbXB0KCkgbWVzc2FnZSwgZGVmYXVsdCB2YWx1ZSBhbmQgcmV0dXJuIHZhbHVl
LgorICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3ZWJWaWV3KCksICJqYXZhc2Ny
aXB0LGFsZXJ0Iiwgb25KYXZhU2NyaXB0QWxlcnQsICZhbGVydFJlc3VsdCk7CisgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdlYlZpZXcoKSwgImphdmFzY3JpcHQscHJvbXB0Iiwg
b25KYXZhU2NyaXB0UHJvbXB0LCAmcHJvbXB0UmVzdWx0KTsKKyAgICBld2tfdmlld19odG1sX3N0
cmluZ19sb2FkKHdlYlZpZXcoKSwgcHJvbXB0SFRNTDEsIDAsIDApOworICAgIHdhaXRVbnRpbExv
YWRGaW5pc2hlZCgpOworICAgIEVYUEVDVF9TVFJFUShwcm9tcHRSZXN1bHQucHJvbXB0Lm1lc3Nh
Z2UsICJUaGlzIGlzIGphdmFzY3JpcHQgcHJvbXB0IG1lc3NhZ2UuIik7CisgICAgRVhQRUNUX1NU
UkVRKHByb21wdFJlc3VsdC5wcm9tcHQuZGVmYXVsdF92YWx1ZSwgInByb21wdCBkZWZhdWx0IHZh
bHVlIik7CisgICAgRVhQRUNUX1NUUkVRKGFsZXJ0UmVzdWx0LmFsZXJ0Lm1lc3NhZ2UsICJSZXR1
cm4gU3RyaW5nIik7CisKKyAgICAvLyBjaGVjayB0aGUgcHJvbXB0KCkgbWVzc2FnZSBhbmQgcmV0
dXJuIHZhbHVlIHdoZW4gdGhlIGRlZmF1bHQgdmFsdWUgaXMgbm90IHNldC4KKyAgICBjb25zdCBj
aGFyKiBwcm9tcHRIVE1MMiA9CisgICAgICAgICI8aHRtbD48Ym9keSBvbmxvYWQ9XCJhbGVydChw
cm9tcHQoJ1RoaXMgaXMgamF2YXNjcmlwdCBwcm9tcHQgbWVzc2FnZS4nKSk7XCI+PC9ib2R5Pjwv
aHRtbD4iOworICAgIGNsZWFySmF2YVNjcmlwdFBvcHVwSW5mb3JtYXRpb24oJnByb21wdFJlc3Vs
dCk7CisgICAgY2xlYXJKYXZhU2NyaXB0UG9wdXBJbmZvcm1hdGlvbigmYWxlcnRSZXN1bHQpOwor
ICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBwcm9tcHRIVE1MMiwgMCwg
MCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgRVhQRUNUX1NUUkVRKHByb21w
dFJlc3VsdC5wcm9tcHQubWVzc2FnZSwgIlRoaXMgaXMgamF2YXNjcmlwdCBwcm9tcHQgbWVzc2Fn
ZS4iKTsKKyAgICBFWFBFQ1RfU1RSRVEocHJvbXB0UmVzdWx0LnByb21wdC5kZWZhdWx0X3ZhbHVl
LCAiIik7CisgICAgRVhQRUNUX1NUUkVRKGFsZXJ0UmVzdWx0LmFsZXJ0Lm1lc3NhZ2UsICJSZXR1
cm4gU3RyaW5nIik7CisKKyAgICAvLyBjaGVjayB0aGUgZGVmYXVsdCByZXR1cm4gdmFsdWUgb2Yg
cHJvbXB0KCkuCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKHdlYlZpZXcoKSwg
ImphdmFzY3JpcHQscHJvbXB0Iiwgb25KYXZhU2NyaXB0UHJvbXB0KTsKKyAgICBjbGVhckphdmFT
Y3JpcHRQb3B1cEluZm9ybWF0aW9uKCZwcm9tcHRSZXN1bHQpOworICAgIGNsZWFySmF2YVNjcmlw
dFBvcHVwSW5mb3JtYXRpb24oJmFsZXJ0UmVzdWx0KTsKKyAgICBld2tfdmlld19odG1sX3N0cmlu
Z19sb2FkKHdlYlZpZXcoKSwgcHJvbXB0SFRNTDIsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOworICAgIEVYUEVDVF9TVFJFUShwcm9tcHRSZXN1bHQucHJvbXB0Lm1lc3NhZ2Us
IDApOworICAgIEVYUEVDVF9TVFJFUShwcm9tcHRSZXN1bHQucHJvbXB0LmRlZmF1bHRfdmFsdWUs
IDApOworICAgIEVYUEVDVF9TVFJFUShhbGVydFJlc3VsdC5hbGVydC5tZXNzYWdlLCAiIik7CisK
KyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAiamF2YXNjcmlw
dCxhbGVydCIsIG9uSmF2YVNjcmlwdEFsZXJ0KTsKKyAgICBjbGVhckphdmFTY3JpcHRQb3B1cElu
Zm9ybWF0aW9uKCZwcm9tcHRSZXN1bHQpOworICAgIGNsZWFySmF2YVNjcmlwdFBvcHVwSW5mb3Jt
YXRpb24oJmFsZXJ0UmVzdWx0KTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162984</attachid>
            <date>2012-09-09 00:50:00 -0700</date>
            <delta_ts>2012-09-09 01:07:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95672-20120909164935.patch</filename>
            <type>text/plain</type>
            <size>14222</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzZiYmQ1NmMxY2FiODcy
NDk1NjZiZGZmYzJlZWViN2EyMDcwNDk5Ni4uMWU3ZmQyYzY1MjI5YWMxMDZlM2JlNzFhMWMwNjQ3
OTRkZWMwMGE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA5LTAzICBCeXVu
Z3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBqYXZhc2NyaXB0IHBvcHVwIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1NjcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHNtYXJ0IGNsYXNzIG1lbWJlciBmdW5jdGlvbiBmb3IgamF2YXNj
cmlwdCBhbGVydCgpLCBjb25maXJtKCkgYW5kIHByb21wdCgpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0
YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKToKKyAgICAgICAgKGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KToKKyAgICAgICAg
KGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0pOgorICAgICAgICAoZXdrX3ZpZXdfamF2
YXNjcmlwdF9jb25maXJtX2ZpbmlzaGVkKToKKyAgICAgICAgKGV3a192aWV3X3J1bl9qYXZhc2Ny
aXB0X3Byb21wdCk6CisgICAgICAgIChld2tfdmlld19qYXZhc2NyaXB0X3Byb21wdF9maW5pc2hl
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50LmNwcDoKKyAgICAgICAgKHJ1bkphdmFTY3JpcHRB
bGVydCk6CisgICAgICAgIChydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChydW5KYXZh
U2NyaXB0UHJvbXB0KToKKyAgICAgICAgKGV3a192aWV3X3VpX2NsaWVudF9hdHRhY2gpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcDoKKyAgICAg
ICAgKGNsZWFySmF2YVNjcmlwdFBvcHVwSW5mb3JtYXRpb24pOgorICAgICAgICAoY29weUFsZXJ0
SW5mb3JtYXRpb24pOgorICAgICAgICAoY29weUNvbmZpcm1JbmZvcm1hdGlvbik6CisgICAgICAg
IChjb3B5UHJvbXB0SW5mb3JtYXRpb24pOgorICAgICAgICAob25KYXZhU2NyaXB0QWxlcnQpOgor
ICAgICAgICAob25KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChvbkphdmFTY3JpcHRQcm9t
cHQpOgorICAgICAgICAoVEVTVF9GKToKKwogMjAxMi0wOS0wMiAgS2VuaWNoaSBJc2hpYmFzaGkg
IDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV0syOiBCdWlsZCBmYWlsdXJlIG9uIFNu
b3dMZW9wYXJkIGFmdGVyIHIxMjczODQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmNwcAppbmRleCA1NWUxM2RkNDcyNTI4NmZmOTA3Y2VkOWI2NTczNDZhZDQy
NDIwZWU1Li4zZDNhMTRkMGYzOWI0ODZjZTcyYjE3Yzk4YWZiNGZmYWFlYmRlY2RkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC02NTcsNiAr
NjU3LDkgQEAgRWluYV9Cb29sIGV3a192aWV3X3NtYXJ0X2NsYXNzX3NldChFd2tfVmlld19TbWFy
dF9DbGFzcyogYXBpKQogICAgIGFwaS0+bW91c2VfbW92ZSA9IF9ld2tfdmlld19zbWFydF9tb3Vz
ZV9tb3ZlOwogICAgIGFwaS0+a2V5X2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd247CiAg
ICAgYXBpLT5rZXlfdXAgPSBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwOworICAgIGFwaS0+cnVuX2ph
dmFzY3JpcHRfYWxlcnQgPSAwOworICAgIGFwaS0+cnVuX2phdmFzY3JpcHRfY29uZmlybSA9IDA7
CisgICAgYXBpLT5ydW5famF2YXNjcmlwdF9wcm9tcHQgPSAwOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0xNTQwLDMgKzE1NDMsMzkgQEAgRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVf
c2VsZWN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1bnNpZ25lZCBpbnQgc2VsZWN0ZWQKIAogICAg
IHJldHVybiB0cnVlOwogfQorCit2b2lkIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBXS0VpbmFTaGFyZWRTdHJpbmcgbWVzc2FnZSkKK3sKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworCisgICAgaWYgKCFzbWFydERh
dGEtPmFwaS0+cnVuX2phdmFzY3JpcHRfYWxlcnQpCisgICAgICAgIHJldHVybjsKKworICAgIHNt
YXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9hbGVydChzbWFydERhdGEsIG1lc3NhZ2UpOwor
fQorCitib29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXZhc19PYmplY3QqIGV3
a1ZpZXcsIFdLRWluYVNoYXJlZFN0cmluZyBtZXNzYWdlKQoreworICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworCisgICAgaWYgKCFzbWFy
dERhdGEtPmFwaS0+cnVuX2phdmFzY3JpcHRfY29uZmlybSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHNtYXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9jb25maXJtKHNt
YXJ0RGF0YSwgbWVzc2FnZSk7Cit9CisKK1dLRWluYVNoYXJlZFN0cmluZyBld2tfdmlld19ydW5f
amF2YXNjcmlwdF9wcm9tcHQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdLRWluYVNoYXJlZFN0cmlu
ZyBtZXNzYWdlLCBXS0VpbmFTaGFyZWRTdHJpbmcgZGVmYXVsdFZhbHVlKQoreworICAgIFdLRWlu
YVNoYXJlZFN0cmluZyB2YWx1ZTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgdmFsdWUpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYsIHZhbHVlKTsKKworICAgIGlmICghc21hcnREYXRhLT5hcGktPnJ1bl9q
YXZhc2NyaXB0X3Byb21wdCkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworCisgICAgdmFsdWUgPSBz
bWFydERhdGEtPmFwaS0+cnVuX2phdmFzY3JpcHRfcHJvbXB0KHNtYXJ0RGF0YSwgbWVzc2FnZSwg
ZGVmYXVsdFZhbHVlKTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbCh2YWx1ZSk7CisgICAgcmV0
dXJuIHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmgKaW5kZXggYjZhMWU0OTMxNTI4ZDY5NjBkMTBjNDE4NmVhZWM3MzgxMmY1ZTYyOS4uYjExZGM0
YzMyMTI5MmUwZWMyZWZiMTUzNGNhMjI3M2M0OWJkZDdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC0xMTEsNiArMTExLDEyIEBAIHN0cnVjdCBf
RXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIEVpbmFfQm9vbCAoKm1vdXNlX21vdmUpKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2KTsKICAg
ICBFaW5hX0Jvb2wgKCprZXlfZG93bikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2
YXNfRXZlbnRfS2V5X0Rvd24gKmV2KTsKICAgICBFaW5hX0Jvb2wgKCprZXlfdXApKEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCAqZXYpOworCisgICAgLy8g
amF2YXNjcmlwdCBwb3B1cDoKKyAgICAvLyAgIC0gQWxsIHN0cmluZyBzaG91bGQgYmUgZ3VhcmFu
dGVlZCB0byBiZSBzdHJpbmdzaGFyZWQuCisgICAgdm9pZCAoKnJ1bl9qYXZhc2NyaXB0X2FsZXJ0
KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgY2hhciAqbWVzc2FnZSk7CisgICAgRWlu
YV9Cb29sICgqcnVuX2phdmFzY3JpcHRfY29uZmlybSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qs
IGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworICAgIGNvbnN0IGNoYXIqICgqcnVuX2phdmFzY3JpcHRf
cHJvbXB0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgY2hhciAqbWVzc2FnZSwgY29u
c3QgY2hhciAqZGVmYXVsdF92YWx1ZSk7IC8qKjwgcmV0dXJuIHN0cmluZyBzaG91bGQgYmUgc3Ry
aW5nc2hhcmVkLiAqLwogfTsKIAogLyoqCkBAIC0xMjksNyArMTM1LDcgQEAgc3RydWN0IF9Fd2tf
Vmlld19TbWFydF9DbGFzcyB7CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVS
U0lPTgogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgogICov
Ci0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3Nt
YXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDB9CisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21h
cnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZF
UlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CiAKIC8qKgogICog
SW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVy
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3By
aXZhdGUuaAppbmRleCBkYjhhYjY2YTYxYjE0ZjE2N2RhY2RkNWU5ODc0NWU4ZmJmZjQ5MGJlLi44
NWZkODVlZTMzYTk3ZDU4ODI2Yzk1ZTkxZTBmNDdmN2Q5YzVmOGIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0yMyw2
ICsyMyw3IEBACiAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxFdmFzLmg+
CisjaW5jbHVkZSA8V0tFaW5hU2hhcmVkU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0
RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CkBAIC05OCw0ICs5OSw4IEBAIGJvb2wgZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29t
cG9zaXRpbmdfbW9kZV9leGl0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIAogdm9pZCBl
d2tfdmlld19wb3B1cF9tZW51X3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYktpdDo6
V2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZl
Y3RvcjxXZWJLaXQ6OldlYlBvcHVwSXRlbT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgp
OwogCit2b2lkIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBXS0VpbmFTaGFyZWRTdHJpbmcgbWVzc2FnZSk7Citib29sIGV3a192aWV3X3J1bl9qYXZh
c2NyaXB0X2NvbmZpcm0oRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdLRWluYVNoYXJlZFN0cmluZyBt
ZXNzYWdlKTsKK1dLRWluYVNoYXJlZFN0cmluZyBld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9t
cHQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdLRWluYVNoYXJlZFN0cmluZyBtZXNzYWdlLCBXS0Vp
bmFTaGFyZWRTdHJpbmcgZGVmYXVsdFZhbHVlKTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZh
dGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXdfdWlfY2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3X3VpX2NsaWVudC5jcHAKaW5kZXggMThlZGUwOGExNDcyN2QzNmQwMmMxZDVlOGRhMTYxNmI2
MDI3ODczNi4uNGYwNmNlOTE1NWRhNGMxOGM4ZDYxNDI2ZjQ3YjVmMjc3ZTE2YjkwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9j
bGllbnQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAorI2lu
Y2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a192aWV3X3VpX2NsaWVudF9wcml2YXRlLmgiCiAKQEAgLTQzLDYgKzQ0LDI5IEBAIHN0
YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYsIFdLVVJMUmVxdWVzdFJlZiwg
V0tEaWN0aW9uYXJ5UmVmLCBXS0V2CiAgICAgIHJldHVybiBld2tfdmlld19wYWdlX2NyZWF0ZSh0
b0V3a1ZpZXcoY2xpZW50SW5mbykpOwogfQogCitzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0QWxl
cnQoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIGFsZXJ0VGV4dCwgV0tGcmFtZVJlZiBmcmFt
ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgYWxl
cnRUZXh0U3RyaW5nKGFsZXJ0VGV4dCk7CisKKyAgICBld2tfdmlld19ydW5famF2YXNjcmlwdF9h
bGVydCh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIGFsZXJ0VGV4dFN0cmluZyk7Cit9CisKK3N0YXRp
YyBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBt
ZXNzYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAg
IFdLRWluYVNoYXJlZFN0cmluZyBtZXNzYWdlU3RyaW5nKG1lc3NhZ2UpOworCisgICAgcmV0dXJu
IGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0odG9Fd2tWaWV3KGNsaWVudEluZm8pLCBt
ZXNzYWdlU3RyaW5nKTsKK30KKworc3RhdGljIFdLU3RyaW5nUmVmIHJ1bkphdmFTY3JpcHRQcm9t
cHQoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRlZmF1
bHRWYWx1ZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICBXS0VpbmFTaGFyZWRTdHJpbmcgbWVzc2FnZVN0cmluZyhtZXNzYWdlKTsKKyAgICBXS0VpbmFT
aGFyZWRTdHJpbmcgZGVmYXVsdFZhbHVlU3RyaW5nKGRlZmF1bHRWYWx1ZSk7CisKKyAgICBXS0Vp
bmFTaGFyZWRTdHJpbmcgdmFsdWUgPSBld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQodG9F
d2tWaWV3KGNsaWVudEluZm8pLCBtZXNzYWdlU3RyaW5nLCBkZWZhdWx0VmFsdWVTdHJpbmcpOwor
ICAgIHJldHVybiB2YWx1ZSA/IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHZhbHVlKSA6
IDA7Cit9CisKIHZvaWQgZXdrX3ZpZXdfdWlfY2xpZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJl
ZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgV0tQYWdlVUlDbGllbnQgdWlDbGllbnQ7
CkBAIC01MSw1ICs3NSw4IEBAIHZvaWQgZXdrX3ZpZXdfdWlfY2xpZW50X2F0dGFjaChXS1BhZ2VS
ZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgdWlDbGllbnQuY2xpZW50SW5m
byA9IGV3a1ZpZXc7CiAgICAgdWlDbGllbnQuY2xvc2UgPSBjbG9zZVBhZ2U7CiAgICAgdWlDbGll
bnQuY3JlYXRlTmV3UGFnZSA9IGNyZWF0ZU5ld1BhZ2U7CisgICAgdWlDbGllbnQucnVuSmF2YVNj
cmlwdEFsZXJ0ID0gcnVuSmF2YVNjcmlwdEFsZXJ0OworICAgIHVpQ2xpZW50LnJ1bkphdmFTY3Jp
cHRDb25maXJtID0gcnVuSmF2YVNjcmlwdENvbmZpcm07CisgICAgdWlDbGllbnQucnVuSmF2YVNj
cmlwdFByb21wdCA9IHJ1bkphdmFTY3JpcHRQcm9tcHQ7CiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xp
ZW50KHBhZ2VSZWYsICZ1aUNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKaW5kZXggNDIxN2Y3
MTNkZGQ3NDA1ZDk1YzAxNmMwMGVkNDc1NDNmZTQ4MDE5Yi4uNGQ2OWUxZjk0YWNkNGZlMzQ1ZDhh
MDM0OGVmMWEwNDRmYjVlMTVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcApAQCAtMjM2LDMgKzIzNiwx
MzUgQEAgVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0
KQogICAgIEVYUEVDVF9UUlVFKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2Uod2ViVmlldygpKSk7
CiAgICAgRVhQRUNUX0ZBTFNFKGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KHdlYlZpZXcoKSwg
MCkpOwogfQorCitzdGF0aWMgdm9pZCBjaGVja0FsZXJ0TWVzc2FnZShFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgRVhQRUNUX1NUUkVR
KG1lc3NhZ2UsICJUaGlzIGlzIGphdmFzY3JpcHQgYWxlcnQgbWVzc2FnZS4iKTsKK30KKworVEVT
VF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KQorewor
ICAgIGNvbnN0IGNoYXIqIGFsZXJ0SFRNTCA9CisgICAgICAgICI8aHRtbD48Ym9keSBvbmxvYWQ9
XCJhbGVydCgnVGhpcyBpcyBqYXZhc2NyaXB0IGFsZXJ0IG1lc3NhZ2UuJyk7XCI+PC9ib2R5Pjwv
aHRtbD4iOworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9hbGVydCA9IGNoZWNr
QWxlcnRNZXNzYWdlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBh
bGVydEhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworfQorCitzdGF0
aWMgdm9pZCBjaGVja0NvbmZpcm1SZXN1bHRUcnVlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0
RGF0YSwgY29uc3QgY2hhciogbWVzc2FnZSkKK3sKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZSwg
InRydWUiKTsKK30KKworc3RhdGljIHZvaWQgY2hlY2tDb25maXJtUmVzdWx0RmFsc2UoRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBjaGFyKiBtZXNzYWdlKQoreworICAgIEVY
UEVDVF9TVFJFUShtZXNzYWdlLCAiZmFsc2UiKTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBjaGVj
a0NvbmZpcm1NZXNzYWdlQW5kUmV0dXJuVHJ1ZShFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERh
dGEsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgRVhQRUNUX1NUUkVRKG1lc3NhZ2UsICJU
aGlzIGlzIGphdmFzY3JpcHQgY29uZmlybSBtZXNzYWdlLiIpOworICAgIHJldHVybiBFSU5BX1RS
VUU7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgY2hlY2tDb25maXJtTWVzc2FnZUFuZFJldHVybkZh
bHNlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgY2hhciogbWVzc2FnZSkK
K3sKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZSwgIlRoaXMgaXMgamF2YXNjcmlwdCBjb25maXJt
IG1lc3NhZ2UuIik7CisgICAgcmV0dXJuIEVJTkFfRkFMU0U7Cit9CisKK1RFU1RfRihFV0syVW5p
dFRlc3RCYXNlLCBld2tfdmlld19ydW5famF2YXNjcmlwdF9jb25maXJtKQoreworICAgIGNvbnN0
IGNoYXIqIGNvbmZpcm1IVE1MID0KKyAgICAgICAgIjxodG1sPjxib2R5IG9ubG9hZD1cImFsZXJ0
KGNvbmZpcm0oJ1RoaXMgaXMgamF2YXNjcmlwdCBjb25maXJtIG1lc3NhZ2UuJykpO1wiPjwvYm9k
eT48L2h0bWw+IjsKKworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9hbGVydCA9
IGNoZWNrQ29uZmlybVJlc3VsdEZhbHNlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQo
d2ViVmlldygpLCBjb25maXJtSFRNTCwgMCwgMCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVk
KCk7CisKKyAgICBld2tWaWV3Q2xhc3MoKS0+cnVuX2phdmFzY3JpcHRfYWxlcnQgPSBjaGVja0Nv
bmZpcm1SZXN1bHRUcnVlOworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9jb25m
aXJtID0gY2hlY2tDb25maXJtTWVzc2FnZUFuZFJldHVyblRydWU7CisgICAgZXdrX3ZpZXdfaHRt
bF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGNvbmZpcm1IVE1MLCAwLCAwKTsKKyAgICB3YWl0VW50
aWxMb2FkRmluaXNoZWQoKTsKKworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9h
bGVydCA9IGNoZWNrQ29uZmlybVJlc3VsdEZhbHNlOworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5f
amF2YXNjcmlwdF9jb25maXJtID0gY2hlY2tDb25maXJtTWVzc2FnZUFuZFJldHVybkZhbHNlOwor
ICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBjb25maXJtSFRNTCwgMCwg
MCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNr
UHJvbXB0UmVzdWx0UmV0dXJuVmFsdWUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBj
b25zdCBjaGFyKiBtZXNzYWdlKQoreworICAgIEVYUEVDVF9TVFJFUShtZXNzYWdlLCAiUmV0dXJu
VmFsdWUiKTsKK30KKworc3RhdGljIHZvaWQgY2hlY2tQcm9tcHRSZXN1bHRFbXB0eVN0cmluZyhF
d2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7Cisg
ICAgRVhQRUNUX1NUUkVRKG1lc3NhZ2UsICIiKTsKK30KKworc3RhdGljIHZvaWQgY2hlY2tQcm9t
cHRSZXN1bHROdWxsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgY2hhciog
bWVzc2FnZSkKK3sKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZSwgIm51bGwiKTsKK30KKworc3Rh
dGljIGNvbnN0IGNoYXIqIGNoZWNrUHJvbXB0TWVzc2FnZURlZmF1bHRWYWx1ZUFuZFJldHVyblN0
cmluZyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IGNoYXIqIG1lc3NhZ2Us
IGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZSkKK3sKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZSwg
IlRoaXMgaXMgamF2YXNjcmlwdCBwcm9tcHQgbWVzc2FnZS4iKTsKKyAgICBFWFBFQ1RfU1RSRVEo
ZGVmYXVsdFZhbHVlLCAicHJvbXB0IGRlZmF1bHQgdmFsdWUiKTsKKyAgICByZXR1cm4gZWluYV9z
dHJpbmdzaGFyZV9hZGQoIlJldHVyblZhbHVlIik7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBj
aGVja1Byb21wdE1lc3NhZ2VEZWZhdWx0VmFsdWVBbmRSZXR1cm5FbXB0eVN0cmluZyhFd2tfVmll
d19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGNvbnN0IGNoYXIq
IGRlZmF1bHRWYWx1ZSkKK3sKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZSwgIlRoaXMgaXMgamF2
YXNjcmlwdCBwcm9tcHQgbWVzc2FnZS4iKTsKKyAgICBFWFBFQ1RfU1RSRVEoZGVmYXVsdFZhbHVl
LCAicHJvbXB0IGRlZmF1bHQgdmFsdWUiKTsKKyAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9h
ZGQoIiIpOworfQorCitzdGF0aWMgY29uc3QgY2hhciogY2hlY2tQcm9tcHRNZXNzYWdlRGVmYXVs
dFZhbHVlQW5kUmV0dXJuTnVsbChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0
IGNoYXIqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZSkKK3sKKyAgICBFWFBFQ1Rf
U1RSRVEobWVzc2FnZSwgIlRoaXMgaXMgamF2YXNjcmlwdCBwcm9tcHQgbWVzc2FnZS4iKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoZGVmYXVsdFZhbHVlLCAicHJvbXB0IGRlZmF1bHQgdmFsdWUiKTsKKyAg
ICByZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIGNoZWNrUHJvbXB0TWVzc2FnZUFu
ZFJldHVyblN0cmluZyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IGNoYXIq
IG1lc3NhZ2UsIGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZSkKK3sKKyAgICBFWFBFQ1RfU1RSRVEo
bWVzc2FnZSwgIlRoaXMgaXMgamF2YXNjcmlwdCBwcm9tcHQgbWVzc2FnZS4iKTsKKyAgICBFWFBF
Q1RfU1RSRVEoZGVmYXVsdFZhbHVlLCAiIik7CisgICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVf
YWRkKCJSZXR1cm5WYWx1ZSIpOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3Zp
ZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KQoreworICAgIGNvbnN0IGNoYXIqIHByb21wdEhUTUwx
ID0KKyAgICAgICAgIjxodG1sPjxib2R5IG9ubG9hZD1cImFsZXJ0KHByb21wdCgnVGhpcyBpcyBq
YXZhc2NyaXB0IHByb21wdCBtZXNzYWdlLicsICdwcm9tcHQgZGVmYXVsdCB2YWx1ZScpKTtcIj48
L2JvZHk+PC9odG1sPiI7CisKKyAgICBld2tWaWV3Q2xhc3MoKS0+cnVuX2phdmFzY3JpcHRfYWxl
cnQgPSBjaGVja1Byb21wdFJlc3VsdE51bGw7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9h
ZCh3ZWJWaWV3KCksIHByb21wdEhUTUwxLCAwLCAwKTsKKyAgICB3YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKKworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9hbGVydCA9IGNoZWNr
UHJvbXB0UmVzdWx0UmV0dXJuVmFsdWU7CisgICAgZXdrVmlld0NsYXNzKCktPnJ1bl9qYXZhc2Ny
aXB0X3Byb21wdCA9IGNoZWNrUHJvbXB0TWVzc2FnZURlZmF1bHRWYWx1ZUFuZFJldHVyblN0cmlu
ZzsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgcHJvbXB0SFRNTDEs
IDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgZXdrVmlld0NsYXNz
KCktPnJ1bl9qYXZhc2NyaXB0X2FsZXJ0ID0gY2hlY2tQcm9tcHRSZXN1bHRFbXB0eVN0cmluZzsK
KyAgICBld2tWaWV3Q2xhc3MoKS0+cnVuX2phdmFzY3JpcHRfcHJvbXB0ID0gY2hlY2tQcm9tcHRN
ZXNzYWdlRGVmYXVsdFZhbHVlQW5kUmV0dXJuRW1wdHlTdHJpbmc7CisgICAgZXdrX3ZpZXdfaHRt
bF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHByb21wdEhUTUwxLCAwLCAwKTsKKyAgICB3YWl0VW50
aWxMb2FkRmluaXNoZWQoKTsKKworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9h
bGVydCA9IGNoZWNrUHJvbXB0UmVzdWx0TnVsbDsKKyAgICBld2tWaWV3Q2xhc3MoKS0+cnVuX2ph
dmFzY3JpcHRfcHJvbXB0ID0gY2hlY2tQcm9tcHRNZXNzYWdlRGVmYXVsdFZhbHVlQW5kUmV0dXJu
TnVsbDsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgcHJvbXB0SFRN
TDEsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgY29uc3QgY2hh
ciogcHJvbXB0SFRNTDIgPQorICAgICAgICAiPGh0bWw+PGJvZHkgb25sb2FkPVwiYWxlcnQocHJv
bXB0KCdUaGlzIGlzIGphdmFzY3JpcHQgcHJvbXB0IG1lc3NhZ2UuJykpO1wiPjwvYm9keT48L2h0
bWw+IjsKKworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9hbGVydCA9IGNoZWNr
UHJvbXB0UmVzdWx0UmV0dXJuVmFsdWU7CisgICAgZXdrVmlld0NsYXNzKCktPnJ1bl9qYXZhc2Ny
aXB0X3Byb21wdCA9IGNoZWNrUHJvbXB0TWVzc2FnZUFuZFJldHVyblN0cmluZzsKKyAgICBld2tf
dmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgcHJvbXB0SFRNTDIsIDAsIDApOworICAg
IHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162985</attachid>
            <date>2012-09-09 01:07:57 -0700</date>
            <delta_ts>2012-09-11 17:26:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95672-20120909170732.patch</filename>
            <type>text/plain</type>
            <size>14222</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzZiYmQ1NmMxY2FiODcy
NDk1NjZiZGZmYzJlZWViN2EyMDcwNDk5Ni4uMWU3ZmQyYzY1MjI5YWMxMDZlM2JlNzFhMWMwNjQ3
OTRkZWMwMGE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA5LTAzICBCeXVu
Z3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBqYXZhc2NyaXB0IHBvcHVwIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1NjcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHNtYXJ0IGNsYXNzIG1lbWJlciBmdW5jdGlvbiBmb3IgamF2YXNj
cmlwdCBhbGVydCgpLCBjb25maXJtKCkgYW5kIHByb21wdCgpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0
YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOjpfRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKToKKyAgICAgICAgKGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KToKKyAgICAgICAg
KGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0pOgorICAgICAgICAoZXdrX3ZpZXdfamF2
YXNjcmlwdF9jb25maXJtX2ZpbmlzaGVkKToKKyAgICAgICAgKGV3a192aWV3X3J1bl9qYXZhc2Ny
aXB0X3Byb21wdCk6CisgICAgICAgIChld2tfdmlld19qYXZhc2NyaXB0X3Byb21wdF9maW5pc2hl
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50LmNwcDoKKyAgICAgICAgKHJ1bkphdmFTY3JpcHRB
bGVydCk6CisgICAgICAgIChydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChydW5KYXZh
U2NyaXB0UHJvbXB0KToKKyAgICAgICAgKGV3a192aWV3X3VpX2NsaWVudF9hdHRhY2gpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcDoKKyAgICAg
ICAgKGNsZWFySmF2YVNjcmlwdFBvcHVwSW5mb3JtYXRpb24pOgorICAgICAgICAoY29weUFsZXJ0
SW5mb3JtYXRpb24pOgorICAgICAgICAoY29weUNvbmZpcm1JbmZvcm1hdGlvbik6CisgICAgICAg
IChjb3B5UHJvbXB0SW5mb3JtYXRpb24pOgorICAgICAgICAob25KYXZhU2NyaXB0QWxlcnQpOgor
ICAgICAgICAob25KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChvbkphdmFTY3JpcHRQcm9t
cHQpOgorICAgICAgICAoVEVTVF9GKToKKwogMjAxMi0wOS0wMiAgS2VuaWNoaSBJc2hpYmFzaGkg
IDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV0syOiBCdWlsZCBmYWlsdXJlIG9uIFNu
b3dMZW9wYXJkIGFmdGVyIHIxMjczODQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmNwcAppbmRleCA1NWUxM2RkNDcyNTI4NmZmOTA3Y2VkOWI2NTczNDZhZDQy
NDIwZWU1Li4zZDNhMTRkMGYzOWI0ODZjZTcyYjE3Yzk4YWZiNGZmYWFlYmRlY2RkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC02NTcsNiAr
NjU3LDkgQEAgRWluYV9Cb29sIGV3a192aWV3X3NtYXJ0X2NsYXNzX3NldChFd2tfVmlld19TbWFy
dF9DbGFzcyogYXBpKQogICAgIGFwaS0+bW91c2VfbW92ZSA9IF9ld2tfdmlld19zbWFydF9tb3Vz
ZV9tb3ZlOwogICAgIGFwaS0+a2V5X2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd247CiAg
ICAgYXBpLT5rZXlfdXAgPSBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwOworICAgIGFwaS0+cnVuX2ph
dmFzY3JpcHRfYWxlcnQgPSAwOworICAgIGFwaS0+cnVuX2phdmFzY3JpcHRfY29uZmlybSA9IDA7
CisgICAgYXBpLT5ydW5famF2YXNjcmlwdF9wcm9tcHQgPSAwOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0xNTQwLDMgKzE1NDMsMzkgQEAgRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVf
c2VsZWN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1bnNpZ25lZCBpbnQgc2VsZWN0ZWQKIAogICAg
IHJldHVybiB0cnVlOwogfQorCit2b2lkIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBXS0VpbmFTaGFyZWRTdHJpbmcgbWVzc2FnZSkKK3sKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworCisgICAgaWYgKCFzbWFydERh
dGEtPmFwaS0+cnVuX2phdmFzY3JpcHRfYWxlcnQpCisgICAgICAgIHJldHVybjsKKworICAgIHNt
YXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9hbGVydChzbWFydERhdGEsIG1lc3NhZ2UpOwor
fQorCitib29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXZhc19PYmplY3QqIGV3
a1ZpZXcsIFdLRWluYVNoYXJlZFN0cmluZyBtZXNzYWdlKQoreworICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworCisgICAgaWYgKCFzbWFy
dERhdGEtPmFwaS0+cnVuX2phdmFzY3JpcHRfY29uZmlybSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHNtYXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9jb25maXJtKHNt
YXJ0RGF0YSwgbWVzc2FnZSk7Cit9CisKK1dLRWluYVNoYXJlZFN0cmluZyBld2tfdmlld19ydW5f
amF2YXNjcmlwdF9wcm9tcHQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdLRWluYVNoYXJlZFN0cmlu
ZyBtZXNzYWdlLCBXS0VpbmFTaGFyZWRTdHJpbmcgZGVmYXVsdFZhbHVlKQoreworICAgIFdLRWlu
YVNoYXJlZFN0cmluZyB2YWx1ZTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgdmFsdWUpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYsIHZhbHVlKTsKKworICAgIGlmICghc21hcnREYXRhLT5hcGktPnJ1bl9q
YXZhc2NyaXB0X3Byb21wdCkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworCisgICAgdmFsdWUgPSBz
bWFydERhdGEtPmFwaS0+cnVuX2phdmFzY3JpcHRfcHJvbXB0KHNtYXJ0RGF0YSwgbWVzc2FnZSwg
ZGVmYXVsdFZhbHVlKTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbCh2YWx1ZSk7CisgICAgcmV0
dXJuIHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmgKaW5kZXggYjZhMWU0OTMxNTI4ZDY5NjBkMTBjNDE4NmVhZWM3MzgxMmY1ZTYyOS4uYTM3ZTI5
NzBlODdjZDAxZGE5YmM0NDRhOTg3M2Y3ZmMwNDQ1ZGJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC0xMTEsNiArMTExLDEyIEBAIHN0cnVjdCBf
RXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIEVpbmFfQm9vbCAoKm1vdXNlX21vdmUpKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2KTsKICAg
ICBFaW5hX0Jvb2wgKCprZXlfZG93bikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2
YXNfRXZlbnRfS2V5X0Rvd24gKmV2KTsKICAgICBFaW5hX0Jvb2wgKCprZXlfdXApKEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCAqZXYpOworCisgICAgLy8g
amF2YXNjcmlwdCBwb3B1cDoKKyAgICAvLyAgIC0gQWxsIHN0cmluZyBzaG91bGQgYmUgZ3VhcmFu
dGVlZCB0byBiZSBzdHJpbmdzaGFyZWQuCisgICAgdm9pZCAoKnJ1bl9qYXZhc2NyaXB0X2FsZXJ0
KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgY2hhciAqbWVzc2FnZSk7CisgICAgRWlu
YV9Cb29sICgqcnVuX2phdmFzY3JpcHRfY29uZmlybSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qs
IGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworICAgIGNvbnN0IGNoYXIgKigqcnVuX2phdmFzY3JpcHRf
cHJvbXB0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgY2hhciAqbWVzc2FnZSwgY29u
c3QgY2hhciAqZGVmYXVsdF92YWx1ZSk7IC8qKjwgcmV0dXJuIHN0cmluZyBzaG91bGQgYmUgc3Ry
aW5nc2hhcmVkLiAqLwogfTsKIAogLyoqCkBAIC0xMjksNyArMTM1LDcgQEAgc3RydWN0IF9Fd2tf
Vmlld19TbWFydF9DbGFzcyB7CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVS
U0lPTgogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgogICov
Ci0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3Nt
YXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDB9CisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21h
cnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZF
UlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CiAKIC8qKgogICog
SW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVy
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3By
aXZhdGUuaAppbmRleCBkYjhhYjY2YTYxYjE0ZjE2N2RhY2RkNWU5ODc0NWU4ZmJmZjQ5MGJlLi44
NWZkODVlZTMzYTk3ZDU4ODI2Yzk1ZTkxZTBmNDdmN2Q5YzVmOGIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0yMyw2
ICsyMyw3IEBACiAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxFdmFzLmg+
CisjaW5jbHVkZSA8V0tFaW5hU2hhcmVkU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0
RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CkBAIC05OCw0ICs5OSw4IEBAIGJvb2wgZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29t
cG9zaXRpbmdfbW9kZV9leGl0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIAogdm9pZCBl
d2tfdmlld19wb3B1cF9tZW51X3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYktpdDo6
V2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZl
Y3RvcjxXZWJLaXQ6OldlYlBvcHVwSXRlbT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgp
OwogCit2b2lkIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBXS0VpbmFTaGFyZWRTdHJpbmcgbWVzc2FnZSk7Citib29sIGV3a192aWV3X3J1bl9qYXZh
c2NyaXB0X2NvbmZpcm0oRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdLRWluYVNoYXJlZFN0cmluZyBt
ZXNzYWdlKTsKK1dLRWluYVNoYXJlZFN0cmluZyBld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9t
cHQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdLRWluYVNoYXJlZFN0cmluZyBtZXNzYWdlLCBXS0Vp
bmFTaGFyZWRTdHJpbmcgZGVmYXVsdFZhbHVlKTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZh
dGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXdfdWlfY2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3X3VpX2NsaWVudC5jcHAKaW5kZXggMThlZGUwOGExNDcyN2QzNmQwMmMxZDVlOGRhMTYxNmI2
MDI3ODczNi4uNGYwNmNlOTE1NWRhNGMxOGM4ZDYxNDI2ZjQ3YjVmMjc3ZTE2YjkwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9j
bGllbnQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAorI2lu
Y2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a192aWV3X3VpX2NsaWVudF9wcml2YXRlLmgiCiAKQEAgLTQzLDYgKzQ0LDI5IEBAIHN0
YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYsIFdLVVJMUmVxdWVzdFJlZiwg
V0tEaWN0aW9uYXJ5UmVmLCBXS0V2CiAgICAgIHJldHVybiBld2tfdmlld19wYWdlX2NyZWF0ZSh0
b0V3a1ZpZXcoY2xpZW50SW5mbykpOwogfQogCitzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0QWxl
cnQoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIGFsZXJ0VGV4dCwgV0tGcmFtZVJlZiBmcmFt
ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgYWxl
cnRUZXh0U3RyaW5nKGFsZXJ0VGV4dCk7CisKKyAgICBld2tfdmlld19ydW5famF2YXNjcmlwdF9h
bGVydCh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIGFsZXJ0VGV4dFN0cmluZyk7Cit9CisKK3N0YXRp
YyBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBt
ZXNzYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAg
IFdLRWluYVNoYXJlZFN0cmluZyBtZXNzYWdlU3RyaW5nKG1lc3NhZ2UpOworCisgICAgcmV0dXJu
IGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0odG9Fd2tWaWV3KGNsaWVudEluZm8pLCBt
ZXNzYWdlU3RyaW5nKTsKK30KKworc3RhdGljIFdLU3RyaW5nUmVmIHJ1bkphdmFTY3JpcHRQcm9t
cHQoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRlZmF1
bHRWYWx1ZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICBXS0VpbmFTaGFyZWRTdHJpbmcgbWVzc2FnZVN0cmluZyhtZXNzYWdlKTsKKyAgICBXS0VpbmFT
aGFyZWRTdHJpbmcgZGVmYXVsdFZhbHVlU3RyaW5nKGRlZmF1bHRWYWx1ZSk7CisKKyAgICBXS0Vp
bmFTaGFyZWRTdHJpbmcgdmFsdWUgPSBld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQodG9F
d2tWaWV3KGNsaWVudEluZm8pLCBtZXNzYWdlU3RyaW5nLCBkZWZhdWx0VmFsdWVTdHJpbmcpOwor
ICAgIHJldHVybiB2YWx1ZSA/IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHZhbHVlKSA6
IDA7Cit9CisKIHZvaWQgZXdrX3ZpZXdfdWlfY2xpZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJl
ZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgV0tQYWdlVUlDbGllbnQgdWlDbGllbnQ7
CkBAIC01MSw1ICs3NSw4IEBAIHZvaWQgZXdrX3ZpZXdfdWlfY2xpZW50X2F0dGFjaChXS1BhZ2VS
ZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgdWlDbGllbnQuY2xpZW50SW5m
byA9IGV3a1ZpZXc7CiAgICAgdWlDbGllbnQuY2xvc2UgPSBjbG9zZVBhZ2U7CiAgICAgdWlDbGll
bnQuY3JlYXRlTmV3UGFnZSA9IGNyZWF0ZU5ld1BhZ2U7CisgICAgdWlDbGllbnQucnVuSmF2YVNj
cmlwdEFsZXJ0ID0gcnVuSmF2YVNjcmlwdEFsZXJ0OworICAgIHVpQ2xpZW50LnJ1bkphdmFTY3Jp
cHRDb25maXJtID0gcnVuSmF2YVNjcmlwdENvbmZpcm07CisgICAgdWlDbGllbnQucnVuSmF2YVNj
cmlwdFByb21wdCA9IHJ1bkphdmFTY3JpcHRQcm9tcHQ7CiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xp
ZW50KHBhZ2VSZWYsICZ1aUNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKaW5kZXggNDIxN2Y3
MTNkZGQ3NDA1ZDk1YzAxNmMwMGVkNDc1NDNmZTQ4MDE5Yi4uNGQ2OWUxZjk0YWNkNGZlMzQ1ZDhh
MDM0OGVmMWEwNDRmYjVlMTVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcApAQCAtMjM2LDMgKzIzNiwx
MzUgQEAgVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0
KQogICAgIEVYUEVDVF9UUlVFKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2Uod2ViVmlldygpKSk7
CiAgICAgRVhQRUNUX0ZBTFNFKGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KHdlYlZpZXcoKSwg
MCkpOwogfQorCitzdGF0aWMgdm9pZCBjaGVja0FsZXJ0TWVzc2FnZShFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgRVhQRUNUX1NUUkVR
KG1lc3NhZ2UsICJUaGlzIGlzIGphdmFzY3JpcHQgYWxlcnQgbWVzc2FnZS4iKTsKK30KKworVEVT
VF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KQorewor
ICAgIGNvbnN0IGNoYXIqIGFsZXJ0SFRNTCA9CisgICAgICAgICI8aHRtbD48Ym9keSBvbmxvYWQ9
XCJhbGVydCgnVGhpcyBpcyBqYXZhc2NyaXB0IGFsZXJ0IG1lc3NhZ2UuJyk7XCI+PC9ib2R5Pjwv
aHRtbD4iOworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9hbGVydCA9IGNoZWNr
QWxlcnRNZXNzYWdlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBh
bGVydEhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworfQorCitzdGF0
aWMgdm9pZCBjaGVja0NvbmZpcm1SZXN1bHRUcnVlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0
RGF0YSwgY29uc3QgY2hhciogbWVzc2FnZSkKK3sKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZSwg
InRydWUiKTsKK30KKworc3RhdGljIHZvaWQgY2hlY2tDb25maXJtUmVzdWx0RmFsc2UoRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBjaGFyKiBtZXNzYWdlKQoreworICAgIEVY
UEVDVF9TVFJFUShtZXNzYWdlLCAiZmFsc2UiKTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBjaGVj
a0NvbmZpcm1NZXNzYWdlQW5kUmV0dXJuVHJ1ZShFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERh
dGEsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgRVhQRUNUX1NUUkVRKG1lc3NhZ2UsICJU
aGlzIGlzIGphdmFzY3JpcHQgY29uZmlybSBtZXNzYWdlLiIpOworICAgIHJldHVybiBFSU5BX1RS
VUU7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgY2hlY2tDb25maXJtTWVzc2FnZUFuZFJldHVybkZh
bHNlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgY2hhciogbWVzc2FnZSkK
K3sKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZSwgIlRoaXMgaXMgamF2YXNjcmlwdCBjb25maXJt
IG1lc3NhZ2UuIik7CisgICAgcmV0dXJuIEVJTkFfRkFMU0U7Cit9CisKK1RFU1RfRihFV0syVW5p
dFRlc3RCYXNlLCBld2tfdmlld19ydW5famF2YXNjcmlwdF9jb25maXJtKQoreworICAgIGNvbnN0
IGNoYXIqIGNvbmZpcm1IVE1MID0KKyAgICAgICAgIjxodG1sPjxib2R5IG9ubG9hZD1cImFsZXJ0
KGNvbmZpcm0oJ1RoaXMgaXMgamF2YXNjcmlwdCBjb25maXJtIG1lc3NhZ2UuJykpO1wiPjwvYm9k
eT48L2h0bWw+IjsKKworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9hbGVydCA9
IGNoZWNrQ29uZmlybVJlc3VsdEZhbHNlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQo
d2ViVmlldygpLCBjb25maXJtSFRNTCwgMCwgMCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVk
KCk7CisKKyAgICBld2tWaWV3Q2xhc3MoKS0+cnVuX2phdmFzY3JpcHRfYWxlcnQgPSBjaGVja0Nv
bmZpcm1SZXN1bHRUcnVlOworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9jb25m
aXJtID0gY2hlY2tDb25maXJtTWVzc2FnZUFuZFJldHVyblRydWU7CisgICAgZXdrX3ZpZXdfaHRt
bF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGNvbmZpcm1IVE1MLCAwLCAwKTsKKyAgICB3YWl0VW50
aWxMb2FkRmluaXNoZWQoKTsKKworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9h
bGVydCA9IGNoZWNrQ29uZmlybVJlc3VsdEZhbHNlOworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5f
amF2YXNjcmlwdF9jb25maXJtID0gY2hlY2tDb25maXJtTWVzc2FnZUFuZFJldHVybkZhbHNlOwor
ICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBjb25maXJtSFRNTCwgMCwg
MCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNr
UHJvbXB0UmVzdWx0UmV0dXJuVmFsdWUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBj
b25zdCBjaGFyKiBtZXNzYWdlKQoreworICAgIEVYUEVDVF9TVFJFUShtZXNzYWdlLCAiUmV0dXJu
VmFsdWUiKTsKK30KKworc3RhdGljIHZvaWQgY2hlY2tQcm9tcHRSZXN1bHRFbXB0eVN0cmluZyhF
d2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7Cisg
ICAgRVhQRUNUX1NUUkVRKG1lc3NhZ2UsICIiKTsKK30KKworc3RhdGljIHZvaWQgY2hlY2tQcm9t
cHRSZXN1bHROdWxsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgY2hhciog
bWVzc2FnZSkKK3sKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZSwgIm51bGwiKTsKK30KKworc3Rh
dGljIGNvbnN0IGNoYXIqIGNoZWNrUHJvbXB0TWVzc2FnZURlZmF1bHRWYWx1ZUFuZFJldHVyblN0
cmluZyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IGNoYXIqIG1lc3NhZ2Us
IGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZSkKK3sKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZSwg
IlRoaXMgaXMgamF2YXNjcmlwdCBwcm9tcHQgbWVzc2FnZS4iKTsKKyAgICBFWFBFQ1RfU1RSRVEo
ZGVmYXVsdFZhbHVlLCAicHJvbXB0IGRlZmF1bHQgdmFsdWUiKTsKKyAgICByZXR1cm4gZWluYV9z
dHJpbmdzaGFyZV9hZGQoIlJldHVyblZhbHVlIik7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBj
aGVja1Byb21wdE1lc3NhZ2VEZWZhdWx0VmFsdWVBbmRSZXR1cm5FbXB0eVN0cmluZyhFd2tfVmll
d19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGNvbnN0IGNoYXIq
IGRlZmF1bHRWYWx1ZSkKK3sKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZSwgIlRoaXMgaXMgamF2
YXNjcmlwdCBwcm9tcHQgbWVzc2FnZS4iKTsKKyAgICBFWFBFQ1RfU1RSRVEoZGVmYXVsdFZhbHVl
LCAicHJvbXB0IGRlZmF1bHQgdmFsdWUiKTsKKyAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9h
ZGQoIiIpOworfQorCitzdGF0aWMgY29uc3QgY2hhciogY2hlY2tQcm9tcHRNZXNzYWdlRGVmYXVs
dFZhbHVlQW5kUmV0dXJuTnVsbChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0
IGNoYXIqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZSkKK3sKKyAgICBFWFBFQ1Rf
U1RSRVEobWVzc2FnZSwgIlRoaXMgaXMgamF2YXNjcmlwdCBwcm9tcHQgbWVzc2FnZS4iKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoZGVmYXVsdFZhbHVlLCAicHJvbXB0IGRlZmF1bHQgdmFsdWUiKTsKKyAg
ICByZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIGNoZWNrUHJvbXB0TWVzc2FnZUFu
ZFJldHVyblN0cmluZyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IGNoYXIq
IG1lc3NhZ2UsIGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZSkKK3sKKyAgICBFWFBFQ1RfU1RSRVEo
bWVzc2FnZSwgIlRoaXMgaXMgamF2YXNjcmlwdCBwcm9tcHQgbWVzc2FnZS4iKTsKKyAgICBFWFBF
Q1RfU1RSRVEoZGVmYXVsdFZhbHVlLCAiIik7CisgICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVf
YWRkKCJSZXR1cm5WYWx1ZSIpOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3Zp
ZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KQoreworICAgIGNvbnN0IGNoYXIqIHByb21wdEhUTUwx
ID0KKyAgICAgICAgIjxodG1sPjxib2R5IG9ubG9hZD1cImFsZXJ0KHByb21wdCgnVGhpcyBpcyBq
YXZhc2NyaXB0IHByb21wdCBtZXNzYWdlLicsICdwcm9tcHQgZGVmYXVsdCB2YWx1ZScpKTtcIj48
L2JvZHk+PC9odG1sPiI7CisKKyAgICBld2tWaWV3Q2xhc3MoKS0+cnVuX2phdmFzY3JpcHRfYWxl
cnQgPSBjaGVja1Byb21wdFJlc3VsdE51bGw7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9h
ZCh3ZWJWaWV3KCksIHByb21wdEhUTUwxLCAwLCAwKTsKKyAgICB3YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKKworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9hbGVydCA9IGNoZWNr
UHJvbXB0UmVzdWx0UmV0dXJuVmFsdWU7CisgICAgZXdrVmlld0NsYXNzKCktPnJ1bl9qYXZhc2Ny
aXB0X3Byb21wdCA9IGNoZWNrUHJvbXB0TWVzc2FnZURlZmF1bHRWYWx1ZUFuZFJldHVyblN0cmlu
ZzsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgcHJvbXB0SFRNTDEs
IDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgZXdrVmlld0NsYXNz
KCktPnJ1bl9qYXZhc2NyaXB0X2FsZXJ0ID0gY2hlY2tQcm9tcHRSZXN1bHRFbXB0eVN0cmluZzsK
KyAgICBld2tWaWV3Q2xhc3MoKS0+cnVuX2phdmFzY3JpcHRfcHJvbXB0ID0gY2hlY2tQcm9tcHRN
ZXNzYWdlRGVmYXVsdFZhbHVlQW5kUmV0dXJuRW1wdHlTdHJpbmc7CisgICAgZXdrX3ZpZXdfaHRt
bF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHByb21wdEhUTUwxLCAwLCAwKTsKKyAgICB3YWl0VW50
aWxMb2FkRmluaXNoZWQoKTsKKworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9h
bGVydCA9IGNoZWNrUHJvbXB0UmVzdWx0TnVsbDsKKyAgICBld2tWaWV3Q2xhc3MoKS0+cnVuX2ph
dmFzY3JpcHRfcHJvbXB0ID0gY2hlY2tQcm9tcHRNZXNzYWdlRGVmYXVsdFZhbHVlQW5kUmV0dXJu
TnVsbDsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgcHJvbXB0SFRN
TDEsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgY29uc3QgY2hh
ciogcHJvbXB0SFRNTDIgPQorICAgICAgICAiPGh0bWw+PGJvZHkgb25sb2FkPVwiYWxlcnQocHJv
bXB0KCdUaGlzIGlzIGphdmFzY3JpcHQgcHJvbXB0IG1lc3NhZ2UuJykpO1wiPjwvYm9keT48L2h0
bWw+IjsKKworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9hbGVydCA9IGNoZWNr
UHJvbXB0UmVzdWx0UmV0dXJuVmFsdWU7CisgICAgZXdrVmlld0NsYXNzKCktPnJ1bl9qYXZhc2Ny
aXB0X3Byb21wdCA9IGNoZWNrUHJvbXB0TWVzc2FnZUFuZFJldHVyblN0cmluZzsKKyAgICBld2tf
dmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgcHJvbXB0SFRNTDIsIDAsIDApOworICAg
IHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163486</attachid>
            <date>2012-09-11 17:26:42 -0700</date>
            <delta_ts>2012-09-12 02:26:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95672-20120912092614.patch</filename>
            <type>text/plain</type>
            <size>14585</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGJiNmI4OWViNGIxMzI3
MDA4MDFmNTc3M2E4NzA3NDAwNjlkMzg5My4uOWZkNjQ4MDg2YWI3MDdkYTRmMDY1NjZjM2IwZDVh
ZTNjZjBkMzU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDEyLTA5LTExICBCeXVu
Z3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KIAorICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBqYXZhc2NyaXB0IHBvcHVwIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1NjcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHNtYXJ0IGNsYXNzIG1lbWJlciBmdW5jdGlvbiBmb3IgamF2YXNj
cmlwdCBhbGVydCgpLCBjb25maXJtKCkgYW5kIHByb21wdCgpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdfc21hcnRfY2xhc3Nf
c2V0KToKKyAgICAgICAgKGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KToKKyAgICAgICAg
KGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0pOgorICAgICAgICAoZXdrX3ZpZXdfcnVu
X2phdmFzY3JpcHRfcHJvbXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9jbGllbnQuY3BwOgorICAgICAg
ICAocnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKHJ1bkphdmFTY3JpcHRDb25maXJtKToK
KyAgICAgICAgKHJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoZXdrX3ZpZXdfdWlfY2xp
ZW50X2F0dGFjaCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2sy
X3ZpZXcuY3BwOgorICAgICAgICAoY2hlY2tBbGVydE1lc3NhZ2UpOgorICAgICAgICAoVEVTVF9G
KToKKyAgICAgICAgKGNoZWNrQ29uZmlybVJlc3VsdFRydWUpOgorICAgICAgICAoY2hlY2tDb25m
aXJtUmVzdWx0RmFsc2UpOgorICAgICAgICAoY2hlY2tDb25maXJtTWVzc2FnZUFuZFJldHVyblRy
dWUpOgorICAgICAgICAoY2hlY2tDb25maXJtTWVzc2FnZUFuZFJldHVybkZhbHNlKToKKyAgICAg
ICAgKGNoZWNrUHJvbXB0UmVzdWx0UmV0dXJuVmFsdWUpOgorICAgICAgICAoY2hlY2tQcm9tcHRS
ZXN1bHRFbXB0eVN0cmluZyk6CisgICAgICAgIChjaGVja1Byb21wdFJlc3VsdE51bGwpOgorICAg
ICAgICAoY2hlY2tQcm9tcHRNZXNzYWdlRGVmYXVsdFZhbHVlQW5kUmV0dXJuU3RyaW5nKToKKyAg
ICAgICAgKGNoZWNrUHJvbXB0TWVzc2FnZURlZmF1bHRWYWx1ZUFuZFJldHVybkVtcHR5U3RyaW5n
KToKKyAgICAgICAgKGNoZWNrUHJvbXB0TWVzc2FnZURlZmF1bHRWYWx1ZUFuZFJldHVybk51bGwp
OgorICAgICAgICAoY2hlY2tQcm9tcHRNZXNzYWdlQW5kUmV0dXJuU3RyaW5nKToKKworMjAxMi0w
OS0xMSAgQnl1bmd3b28gTGVlICA8Ync4MC5sZWVAc2Ftc3VuZy5jb20+CisKICAgICAgICAgW0VG
TF1bV0syXSBXS0VpbmFTaGFyZWRTdHJpbmcgbmVlZHMgYSBmdW5jdGlvbiB0byBhZG9wdCBlaW5h
IHN0cmluZ3NoYXJlLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTYyMDEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuY3BwCmluZGV4IDk5NzFiMTYzNDA2ODNhZTg3OTJkODgwOTZhNzQ0ZGEzMzA1YTQxMjAuLjQz
YjVhZjljZTM0NmUzZTZmZDhlNWI3NjQ2NWNkMGMwZWE2NzA4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTY2Nyw2ICs2NjcsOSBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfc21hcnRfY2xhc3Nfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBh
cGkpCiAgICAgYXBpLT5tb3VzZV9tb3ZlID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX21vdmU7CiAg
ICAgYXBpLT5rZXlfZG93biA9IF9ld2tfdmlld19zbWFydF9rZXlfZG93bjsKICAgICBhcGktPmtl
eV91cCA9IF9ld2tfdmlld19zbWFydF9rZXlfdXA7CisgICAgYXBpLT5ydW5famF2YXNjcmlwdF9h
bGVydCA9IDA7CisgICAgYXBpLT5ydW5famF2YXNjcmlwdF9jb25maXJtID0gMDsKKyAgICBhcGkt
PnJ1bl9qYXZhc2NyaXB0X3Byb21wdCA9IDA7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE2
MjQsMyArMTYyNywzNiBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2VuYWJsZWRf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiAgICAgcmV0dXJuIHByaXYtPmFyZU1v
dXNlRXZlbnRzRW5hYmxlZDsKIH0KKwordm9pZCBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVy
dChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBtZXNzYWdl
KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisKKyAgICBp
ZiAoIXNtYXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9hbGVydCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgc21hcnREYXRhLT5hcGktPnJ1bl9qYXZhc2NyaXB0X2FsZXJ0KHNtYXJ0RGF0YSwg
bWVzc2FnZSk7Cit9CisKK2Jvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybShFdmFz
X09iamVjdCogZXdrVmlldywgY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBtZXNzYWdlKQorewor
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7
CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2Up
OworCisgICAgaWYgKCFzbWFydERhdGEtPmFwaS0+cnVuX2phdmFzY3JpcHRfY29uZmlybSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHNtYXJ0RGF0YS0+YXBpLT5ydW5famF2
YXNjcmlwdF9jb25maXJtKHNtYXJ0RGF0YSwgbWVzc2FnZSk7Cit9CisKK1dLRWluYVNoYXJlZFN0
cmluZyBld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgbWVzc2FnZSwgY29uc3QgV0tFaW5hU2hhcmVkU3Ry
aW5nJiBkZWZhdWx0VmFsdWUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIFdLRWluYVNoYXJlZFN0cmluZygpKTsKKyAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBXS0VpbmFTaGFyZWRTdHJpbmcoKSk7CisK
KyAgICBpZiAoIXNtYXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9wcm9tcHQpCisgICAgICAg
IHJldHVybiBXS0VpbmFTaGFyZWRTdHJpbmcoKTsKKworICAgIHJldHVybiBXS0VpbmFTaGFyZWRT
dHJpbmc6OmFkb3B0KHNtYXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9wcm9tcHQoc21hcnRE
YXRhLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGIwNDBmZGYzMDg1ZTI3ZWY4MDg3N2E5YzY4NDM4
NTY0ZTU4NTI4NTIuLmJhMTc0NmFlYTM5ZTM1ZWMzYTE1NzMyMGI4ZDlhZTk4NDE5ZDJmYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtMTE0LDEz
ICsxMTQsMTkgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgICAgRWluYV9Cb29s
ICgqbW91c2VfbW92ZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRf
TW91c2VfTW92ZSAqZXYpOwogICAgIEVpbmFfQm9vbCAoKmtleV9kb3duKShFd2tfVmlld19TbWFy
dF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biAqZXYpOwogICAgIEVpbmFfQm9v
bCAoKmtleV91cCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5
X1VwICpldik7CisKKyAgICAvLyBqYXZhc2NyaXB0IHBvcHVwOgorICAgIC8vICAgLSBBbGwgc3Ry
aW5nIHNob3VsZCBiZSBndWFyYW50ZWVkIHRvIGJlIHN0cmluZ3NoYXJlZC4KKyAgICB2b2lkICgq
cnVuX2phdmFzY3JpcHRfYWxlcnQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBjaGFy
ICptZXNzYWdlKTsKKyAgICBFaW5hX0Jvb2wgKCpydW5famF2YXNjcmlwdF9jb25maXJtKShFd2tf
Vmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgY2hhciAqbWVzc2FnZSk7CisgICAgY29uc3QgY2hh
ciAqKCpydW5famF2YXNjcmlwdF9wcm9tcHQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25z
dCBjaGFyICptZXNzYWdlLCBjb25zdCBjaGFyICpkZWZhdWx0X3ZhbHVlKTsgLyoqPCByZXR1cm4g
c3RyaW5nIHNob3VsZCBiZSBzdHJpbmdzaGFyZWQuICovCiB9OwogCiAvKioKICAqIFRoZSB2ZXJz
aW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkCiAgKiBpbiB0aGUgQGEg
RXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NN
QVJUX0NMQVNTX1ZFUlNJT04gM1VMCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJ
T04gNFVMCiAKIC8qKgogICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0Ns
YXNzIHN0cnVjdHVyZS4KQEAgLTEzMiw3ICsxMzgsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0
X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCiAgKiBA
c2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNkZWZpbmUg
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3Nf
aW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9j
bGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lP
TiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAg
KiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0
dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdf
cHJpdmF0ZS5oCmluZGV4IGZjZDY1ZWUwZjYxNzJmYjM5NDE2ODAwODJlZmI5MjZkODhkNzg0OGMu
LmY4YTcwN2U4YmU5YWViODZlNjJiMTQ4ZDgxYjI3NDI3OGY4NTRhMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTIz
LDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPEV2YXMu
aD4KKyNpbmNsdWRlIDxXS0VpbmFTaGFyZWRTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Rl
eHREaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KQEAgLTEwMiw0ICsxMDMsOCBAQCBib29sIGV3a192aWV3X2FjY2VsZXJhdGVk
X2NvbXBvc2l0aW5nX21vZGVfZXhpdChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7CiAKIHZv
aWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJL
aXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnUsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25z
dCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZElu
ZGV4KTsKIAordm9pZCBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVydChFdmFzX09iamVjdCog
ZXdrVmlldywgY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBtZXNzYWdlKTsKK2Jvb2wgZXdrX3Zp
ZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybShFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV0tF
aW5hU2hhcmVkU3RyaW5nJiBtZXNzYWdlKTsKK1dLRWluYVNoYXJlZFN0cmluZyBld2tfdmlld19y
dW5famF2YXNjcmlwdF9wcm9tcHQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdLRWluYVNo
YXJlZFN0cmluZyYgbWVzc2FnZSwgY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBkZWZhdWx0VmFs
dWUpOworCiAjZW5kaWYgLy8gZXdrX3ZpZXdfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9jbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50LmNwcAppbmRleCAx
OGVkZTA4YTE0NzI3ZDM2ZDAyYzFkNWU4ZGExNjE2YjYwMjc4NzM2Li40NmU1OGYyMWVlYjA3NmU3
MzI0Y2FmZjk1NTczYjIzYWY2NTY5Zjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9jbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVudC5jcHAKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCisjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNs
dWRlICJld2tfdmlld19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfdWlfY2xpZW50X3By
aXZhdGUuaCIKIApAQCAtNDMsNiArNDQsMjIgQEAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQ
YWdlKFdLUGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVmLCBXS0RpY3Rpb25hcnlSZWYsIFdLRXYKICAg
ICAgcmV0dXJuIGV3a192aWV3X3BhZ2VfY3JlYXRlKHRvRXdrVmlldyhjbGllbnRJbmZvKSk7CiB9
CiAKK3N0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJp
bmdSZWYgYWxlcnRUZXh0LCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KHRvRXdrVmlldyhjbGllbnRJ
bmZvKSwgV0tFaW5hU2hhcmVkU3RyaW5nKGFsZXJ0VGV4dCkpOworfQorCitzdGF0aWMgYm9vbCBy
dW5KYXZhU2NyaXB0Q29uZmlybShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwg
V0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4g
ZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybSh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIFdL
RWluYVNoYXJlZFN0cmluZyhtZXNzYWdlKSk7Cit9CisKK3N0YXRpYyBXS1N0cmluZ1JlZiBydW5K
YXZhU2NyaXB0UHJvbXB0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0
cmluZ1JlZiBkZWZhdWx0VmFsdWUsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCit7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHZhbHVlID0gZXdrX3ZpZXdfcnVuX2ph
dmFzY3JpcHRfcHJvbXB0KHRvRXdrVmlldyhjbGllbnRJbmZvKSwgV0tFaW5hU2hhcmVkU3RyaW5n
KG1lc3NhZ2UpLCBXS0VpbmFTaGFyZWRTdHJpbmcoZGVmYXVsdFZhbHVlKSk7CisgICAgcmV0dXJu
IHZhbHVlID8gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodmFsdWUpIDogMDsKK30KKwog
dm9pZCBld2tfdmlld191aV9jbGllbnRfYXR0YWNoKFdLUGFnZVJlZiBwYWdlUmVmLCBFdmFzX09i
amVjdCogZXdrVmlldykKIHsKICAgICBXS1BhZ2VVSUNsaWVudCB1aUNsaWVudDsKQEAgLTUxLDUg
KzY4LDggQEAgdm9pZCBld2tfdmlld191aV9jbGllbnRfYXR0YWNoKFdLUGFnZVJlZiBwYWdlUmVm
LCBFdmFzX09iamVjdCogZXdrVmlldykKICAgICB1aUNsaWVudC5jbGllbnRJbmZvID0gZXdrVmll
dzsKICAgICB1aUNsaWVudC5jbG9zZSA9IGNsb3NlUGFnZTsKICAgICB1aUNsaWVudC5jcmVhdGVO
ZXdQYWdlID0gY3JlYXRlTmV3UGFnZTsKKyAgICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQg
PSBydW5KYXZhU2NyaXB0QWxlcnQ7CisgICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm0g
PSBydW5KYXZhU2NyaXB0Q29uZmlybTsKKyAgICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0
ID0gcnVuSmF2YVNjcmlwdFByb21wdDsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQocGFnZVJl
ZiwgJnVpQ2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAppbmRleCA2ZTkyOGVkZDkwM2VhYzAw
YmVmZGNmNmIxMzIxMDY0NmYxMDgwYjFiLi45ZTBmYjhmMjQzYjY0MGU2N2NhYzkxNzNlMDAxZjhi
OGI0M2UwZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCkBAIC0zNjAsMyArMzYwLDEzNSBAQCBURVNU
X0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfZnVsbF9zY3JlZW5fZXhpdCkKICAgICBBU1NF
UlRfVFJVRShmdWxsU2NyZWVuQ2FsbGJhY2tDYWxsZWQpOwogICAgIGNoZWNrRnVsbFNjcmVlblBy
b3BlcnR5KHdlYlZpZXcoKSwgZmFsc2UpOwogfQorCitzdGF0aWMgdm9pZCBjaGVja0FsZXJ0TWVz
c2FnZShFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IGNoYXIqIG1lc3NhZ2Up
Cit7CisgICAgRVhQRUNUX1NUUkVRKG1lc3NhZ2UsICJUaGlzIGlzIGphdmFzY3JpcHQgYWxlcnQg
bWVzc2FnZS4iKTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X3J1bl9q
YXZhc2NyaXB0X2FsZXJ0KQoreworICAgIGNvbnN0IGNoYXIqIGFsZXJ0SFRNTCA9CisgICAgICAg
ICI8aHRtbD48Ym9keSBvbmxvYWQ9XCJhbGVydCgnVGhpcyBpcyBqYXZhc2NyaXB0IGFsZXJ0IG1l
c3NhZ2UuJyk7XCI+PC9ib2R5PjwvaHRtbD4iOworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2
YXNjcmlwdF9hbGVydCA9IGNoZWNrQWxlcnRNZXNzYWdlOworICAgIGV3a192aWV3X2h0bWxfc3Ry
aW5nX2xvYWQod2ViVmlldygpLCBhbGVydEhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOworfQorCitzdGF0aWMgdm9pZCBjaGVja0NvbmZpcm1SZXN1bHRUcnVlKEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgY2hhciogbWVzc2FnZSkKK3sKKyAgICBF
WFBFQ1RfU1RSRVEobWVzc2FnZSwgInRydWUiKTsKK30KKworc3RhdGljIHZvaWQgY2hlY2tDb25m
aXJtUmVzdWx0RmFsc2UoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBjaGFy
KiBtZXNzYWdlKQoreworICAgIEVYUEVDVF9TVFJFUShtZXNzYWdlLCAiZmFsc2UiKTsKK30KKwor
c3RhdGljIEVpbmFfQm9vbCBjaGVja0NvbmZpcm1NZXNzYWdlQW5kUmV0dXJuVHJ1ZShFd2tfVmll
d19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgRVhQ
RUNUX1NUUkVRKG1lc3NhZ2UsICJUaGlzIGlzIGphdmFzY3JpcHQgY29uZmlybSBtZXNzYWdlLiIp
OworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgY2hlY2tDb25m
aXJtTWVzc2FnZUFuZFJldHVybkZhbHNlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwg
Y29uc3QgY2hhciogbWVzc2FnZSkKK3sKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZSwgIlRoaXMg
aXMgamF2YXNjcmlwdCBjb25maXJtIG1lc3NhZ2UuIik7CisgICAgcmV0dXJuIEVJTkFfRkFMU0U7
Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19ydW5famF2YXNjcmlwdF9j
b25maXJtKQoreworICAgIGNvbnN0IGNoYXIqIGNvbmZpcm1IVE1MID0KKyAgICAgICAgIjxodG1s
Pjxib2R5IG9ubG9hZD1cImFsZXJ0KGNvbmZpcm0oJ1RoaXMgaXMgamF2YXNjcmlwdCBjb25maXJt
IG1lc3NhZ2UuJykpO1wiPjwvYm9keT48L2h0bWw+IjsKKworICAgIGV3a1ZpZXdDbGFzcygpLT5y
dW5famF2YXNjcmlwdF9hbGVydCA9IGNoZWNrQ29uZmlybVJlc3VsdEZhbHNlOworICAgIGV3a192
aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBjb25maXJtSFRNTCwgMCwgMCk7CisgICAg
d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBld2tWaWV3Q2xhc3MoKS0+cnVuX2phdmFz
Y3JpcHRfYWxlcnQgPSBjaGVja0NvbmZpcm1SZXN1bHRUcnVlOworICAgIGV3a1ZpZXdDbGFzcygp
LT5ydW5famF2YXNjcmlwdF9jb25maXJtID0gY2hlY2tDb25maXJtTWVzc2FnZUFuZFJldHVyblRy
dWU7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGNvbmZpcm1IVE1M
LCAwLCAwKTsKKyAgICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIGV3a1ZpZXdDbGFz
cygpLT5ydW5famF2YXNjcmlwdF9hbGVydCA9IGNoZWNrQ29uZmlybVJlc3VsdEZhbHNlOworICAg
IGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9jb25maXJtID0gY2hlY2tDb25maXJtTWVz
c2FnZUFuZFJldHVybkZhbHNlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmll
dygpLCBjb25maXJtSFRNTCwgMCwgMCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Cit9
CisKK3N0YXRpYyB2b2lkIGNoZWNrUHJvbXB0UmVzdWx0UmV0dXJuVmFsdWUoRXdrX1ZpZXdfU21h
cnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBjaGFyKiBtZXNzYWdlKQoreworICAgIEVYUEVDVF9T
VFJFUShtZXNzYWdlLCAiUmV0dXJuVmFsdWUiKTsKK30KKworc3RhdGljIHZvaWQgY2hlY2tQcm9t
cHRSZXN1bHRFbXB0eVN0cmluZyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0
IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgRVhQRUNUX1NUUkVRKG1lc3NhZ2UsICIiKTsKK30KKwor
c3RhdGljIHZvaWQgY2hlY2tQcm9tcHRSZXN1bHROdWxsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNt
YXJ0RGF0YSwgY29uc3QgY2hhciogbWVzc2FnZSkKK3sKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2Fn
ZSwgIm51bGwiKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIGNoZWNrUHJvbXB0TWVzc2FnZURl
ZmF1bHRWYWx1ZUFuZFJldHVyblN0cmluZyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEs
IGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZSkKK3sKKyAgICBF
WFBFQ1RfU1RSRVEobWVzc2FnZSwgIlRoaXMgaXMgamF2YXNjcmlwdCBwcm9tcHQgbWVzc2FnZS4i
KTsKKyAgICBFWFBFQ1RfU1RSRVEoZGVmYXVsdFZhbHVlLCAicHJvbXB0IGRlZmF1bHQgdmFsdWUi
KTsKKyAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQoIlJldHVyblZhbHVlIik7Cit9CisK
K3N0YXRpYyBjb25zdCBjaGFyKiBjaGVja1Byb21wdE1lc3NhZ2VEZWZhdWx0VmFsdWVBbmRSZXR1
cm5FbXB0eVN0cmluZyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IGNoYXIq
IG1lc3NhZ2UsIGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZSkKK3sKKyAgICBFWFBFQ1RfU1RSRVEo
bWVzc2FnZSwgIlRoaXMgaXMgamF2YXNjcmlwdCBwcm9tcHQgbWVzc2FnZS4iKTsKKyAgICBFWFBF
Q1RfU1RSRVEoZGVmYXVsdFZhbHVlLCAicHJvbXB0IGRlZmF1bHQgdmFsdWUiKTsKKyAgICByZXR1
cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQoIiIpOworfQorCitzdGF0aWMgY29uc3QgY2hhciogY2hl
Y2tQcm9tcHRNZXNzYWdlRGVmYXVsdFZhbHVlQW5kUmV0dXJuTnVsbChFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIGRlZmF1bHRW
YWx1ZSkKK3sKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZSwgIlRoaXMgaXMgamF2YXNjcmlwdCBw
cm9tcHQgbWVzc2FnZS4iKTsKKyAgICBFWFBFQ1RfU1RSRVEoZGVmYXVsdFZhbHVlLCAicHJvbXB0
IGRlZmF1bHQgdmFsdWUiKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IGNoYXIq
IGNoZWNrUHJvbXB0TWVzc2FnZUFuZFJldHVyblN0cmluZyhFd2tfVmlld19TbWFydF9EYXRhKiBz
bWFydERhdGEsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZSkK
K3sKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZSwgIlRoaXMgaXMgamF2YXNjcmlwdCBwcm9tcHQg
bWVzc2FnZS4iKTsKKyAgICBFWFBFQ1RfU1RSRVEoZGVmYXVsdFZhbHVlLCAiIik7CisgICAgcmV0
dXJuIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCJSZXR1cm5WYWx1ZSIpOworfQorCitURVNUX0YoRVdL
MlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KQoreworICAgIGNv
bnN0IGNoYXIqIHByb21wdEhUTUwxID0KKyAgICAgICAgIjxodG1sPjxib2R5IG9ubG9hZD1cImFs
ZXJ0KHByb21wdCgnVGhpcyBpcyBqYXZhc2NyaXB0IHByb21wdCBtZXNzYWdlLicsICdwcm9tcHQg
ZGVmYXVsdCB2YWx1ZScpKTtcIj48L2JvZHk+PC9odG1sPiI7CisKKyAgICBld2tWaWV3Q2xhc3Mo
KS0+cnVuX2phdmFzY3JpcHRfYWxlcnQgPSBjaGVja1Byb21wdFJlc3VsdE51bGw7CisgICAgZXdr
X3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHByb21wdEhUTUwxLCAwLCAwKTsKKyAg
ICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2
YXNjcmlwdF9hbGVydCA9IGNoZWNrUHJvbXB0UmVzdWx0UmV0dXJuVmFsdWU7CisgICAgZXdrVmll
d0NsYXNzKCktPnJ1bl9qYXZhc2NyaXB0X3Byb21wdCA9IGNoZWNrUHJvbXB0TWVzc2FnZURlZmF1
bHRWYWx1ZUFuZFJldHVyblN0cmluZzsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdl
YlZpZXcoKSwgcHJvbXB0SFRNTDEsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OworCisgICAgZXdrVmlld0NsYXNzKCktPnJ1bl9qYXZhc2NyaXB0X2FsZXJ0ID0gY2hlY2tQcm9t
cHRSZXN1bHRFbXB0eVN0cmluZzsKKyAgICBld2tWaWV3Q2xhc3MoKS0+cnVuX2phdmFzY3JpcHRf
cHJvbXB0ID0gY2hlY2tQcm9tcHRNZXNzYWdlRGVmYXVsdFZhbHVlQW5kUmV0dXJuRW1wdHlTdHJp
bmc7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHByb21wdEhUTUwx
LCAwLCAwKTsKKyAgICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIGV3a1ZpZXdDbGFz
cygpLT5ydW5famF2YXNjcmlwdF9hbGVydCA9IGNoZWNrUHJvbXB0UmVzdWx0TnVsbDsKKyAgICBl
d2tWaWV3Q2xhc3MoKS0+cnVuX2phdmFzY3JpcHRfcHJvbXB0ID0gY2hlY2tQcm9tcHRNZXNzYWdl
RGVmYXVsdFZhbHVlQW5kUmV0dXJuTnVsbDsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2Fk
KHdlYlZpZXcoKSwgcHJvbXB0SFRNTDEsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOworCisgICAgY29uc3QgY2hhciogcHJvbXB0SFRNTDIgPQorICAgICAgICAiPGh0bWw+PGJv
ZHkgb25sb2FkPVwiYWxlcnQocHJvbXB0KCdUaGlzIGlzIGphdmFzY3JpcHQgcHJvbXB0IG1lc3Nh
Z2UuJykpO1wiPjwvYm9keT48L2h0bWw+IjsKKworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2
YXNjcmlwdF9hbGVydCA9IGNoZWNrUHJvbXB0UmVzdWx0UmV0dXJuVmFsdWU7CisgICAgZXdrVmll
d0NsYXNzKCktPnJ1bl9qYXZhc2NyaXB0X3Byb21wdCA9IGNoZWNrUHJvbXB0TWVzc2FnZUFuZFJl
dHVyblN0cmluZzsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgcHJv
bXB0SFRNTDIsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163555</attachid>
            <date>2012-09-12 02:26:35 -0700</date>
            <delta_ts>2012-09-14 08:40:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95672-20120912182607.patch</filename>
            <type>text/plain</type>
            <size>16650</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGJiNmI4OWViNGIxMzI3
MDA4MDFmNTc3M2E4NzA3NDAwNjlkMzg5My4uZjlhYWY2N2JkYWIxZjJhMjQ0NzMwNzcxYmE4ODVl
NGZkNTNhMTQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTEyICBCeXVu
Z3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBqYXZhc2NyaXB0IHBvcHVwIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1NjcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHNtYXJ0IGNsYXNzIG1lbWJlciBmdW5jdGlvbiBmb3IgamF2YXNj
cmlwdCBhbGVydCgpLCBjb25maXJtKCkgYW5kIHByb21wdCgpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdfcnVuX2phdmFzY3Jp
cHRfYWxlcnQpOgorICAgICAgICAoZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybSk6Cisg
ICAgICAgIChld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Vp
X2NsaWVudC5jcHA6CisgICAgICAgIChydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAocnVu
SmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAocnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAg
ICAgIChld2tfdmlld191aV9jbGllbnRfYXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHA6CisgICAgICAgIEFkZGVkIHVuaXQgdGVzdCBm
b3IgamF2YXNjcmlwdCBwb3B1cCBzbWFydCBjbGFzcyBtZW1iZXIgZnVuY3Rpb24uCisgICAgICAg
IChjaGVja0FsZXJ0KToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgIChjaGVja0NvbmZpcm0p
OgorICAgICAgICAoY2hlY2tQcm9tcHQpOgorCiAyMDEyLTA5LTExICBCeXVuZ3dvbyBMZWUgIDxi
dzgwLmxlZUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIFdLRWluYVNoYXJlZFN0
cmluZyBuZWVkcyBhIGZ1bmN0aW9uIHRvIGFkb3B0IGVpbmEgc3RyaW5nc2hhcmUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggOTk3MWIxNjM0
MDY4M2FlODc5MmQ4ODA5NmE3NDRkYTMzMDVhNDEyMC4uMDE3ZTgxY2NiNDhkYTlkMzM4YmI0MmQ4
ZjYzMzdkYTRmMzAyMDBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcApAQCAtMTYyNCwzICsxNjI0LDM2IEBAIEVpbmFfQm9vbCBld2tfdmlld19t
b3VzZV9ldmVudHNfZW5hYmxlZF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKICAg
ICByZXR1cm4gcHJpdi0+YXJlTW91c2VFdmVudHNFbmFibGVkOwogfQorCit2b2lkIGV3a192aWV3
X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXS0VpbmFT
aGFyZWRTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0
RGF0YS0+YXBpKTsKKworICAgIGlmICghc21hcnREYXRhLT5hcGktPnJ1bl9qYXZhc2NyaXB0X2Fs
ZXJ0KQorICAgICAgICByZXR1cm47CisKKyAgICBzbWFydERhdGEtPmFwaS0+cnVuX2phdmFzY3Jp
cHRfYWxlcnQoc21hcnREYXRhLCBtZXNzYWdlKTsKK30KKworYm9vbCBld2tfdmlld19ydW5famF2
YXNjcmlwdF9jb25maXJtKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXS0VpbmFTaGFyZWRT
dHJpbmcmIG1lc3NhZ2UpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c21hcnREYXRhLT5hcGksIGZhbHNlKTsKKworICAgIGlmICghc21hcnREYXRhLT5hcGktPnJ1bl9q
YXZhc2NyaXB0X2NvbmZpcm0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBz
bWFydERhdGEtPmFwaS0+cnVuX2phdmFzY3JpcHRfY29uZmlybShzbWFydERhdGEsIG1lc3NhZ2Up
OworfQorCitXS0VpbmFTaGFyZWRTdHJpbmcgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgZGVmYXVsdFZhbHVlKQoreworICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBXS0VpbmFTaGFyZWRTdHJpbmco
KSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBX
S0VpbmFTaGFyZWRTdHJpbmcoKSk7CisKKyAgICBpZiAoIXNtYXJ0RGF0YS0+YXBpLT5ydW5famF2
YXNjcmlwdF9wcm9tcHQpCisgICAgICAgIHJldHVybiBXS0VpbmFTaGFyZWRTdHJpbmcoKTsKKwor
ICAgIHJldHVybiBXS0VpbmFTaGFyZWRTdHJpbmc6OmFkb3B0KHNtYXJ0RGF0YS0+YXBpLT5ydW5f
amF2YXNjcmlwdF9wcm9tcHQoc21hcnREYXRhLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUpKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGIwNDBm
ZGYzMDg1ZTI3ZWY4MDg3N2E5YzY4NDM4NTY0ZTU4NTI4NTIuLjcxMjJmODI4MDZkZTQxM2VjYTBi
MzIwYTBjYmUyZGVhNmM1NWU5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaApAQCAtMTE0LDEzICsxMTQsMTkgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFy
dF9DbGFzcyB7CiAgICAgRWluYV9Cb29sICgqbW91c2VfbW92ZSkoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSAqZXYpOwogICAgIEVpbmFfQm9vbCAo
KmtleV9kb3duKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlf
RG93biAqZXYpOwogICAgIEVpbmFfQm9vbCAoKmtleV91cCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwICpldik7CisKKyAgICAvLyBqYXZhc2NyaXB0IHBv
cHVwOgorICAgIC8vICAgLSBBbGwgc3RyaW5ncyBzaG91bGQgYmUgZ3VhcmFudGVlZCB0byBiZSBz
dHJpbmdzaGFyZWQuCisgICAgdm9pZCAoKnJ1bl9qYXZhc2NyaXB0X2FsZXJ0KShFd2tfVmlld19T
bWFydF9EYXRhICpzZCwgY29uc3QgY2hhciAqbWVzc2FnZSk7CisgICAgRWluYV9Cb29sICgqcnVu
X2phdmFzY3JpcHRfY29uZmlybSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IGNoYXIg
Km1lc3NhZ2UpOworICAgIGNvbnN0IGNoYXIgKigqcnVuX2phdmFzY3JpcHRfcHJvbXB0KShFd2tf
Vmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgY2hhciAqbWVzc2FnZSwgY29uc3QgY2hhciAqZGVm
YXVsdF92YWx1ZSk7IC8qKjwgcmV0dXJuIHN0cmluZyBzaG91bGQgYmUgc3RyaW5nc2hhcmVkLiAq
LwogfTsKIAogLyoqCiAgKiBUaGUgdmVyc2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVy
c2lvbiBmaWVsZAogICogaW4gdGhlIEBhIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4K
ICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDNVTAorI2RlZmluZSBF
V0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDRVTAogCiAvKioKICAqIEluaXRpYWxpemVyIGZv
ciB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCkBAIC0xMzIsNyArMTM4LDcg
QEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJU
X0NMQVNTX0lOSVRfVkVSU0lPTgogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05B
TUVfVkVSU0lPTgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRf
Y2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJ
T04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CisjZGVmaW5lIEVXS19WSUVX
X1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVX
S19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDB9CiAKIC8qKgogICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3
a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCBmY2Q2NWVlMGY2MTcyZmIz
OTQxNjgwMDgyZWZiOTI2ZDg4ZDc4NDhjLi5mOGE3MDdlOGJlOWFlYjg2ZTYyYjE0OGQ4MWIyNzQy
NzhmODU0YTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJXZWJQYWdl
UHJveHkuaCIKICNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8V0tFaW5hU2hhcmVkU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViS2l0
Mi9XS0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xMDIsNCArMTAzLDggQEAg
Ym9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a1ZpZXcpOwogCiB2b2lkIGV3a192aWV3X3BvcHVwX21lbnVfcmVxdWVzdChF
dmFzX09iamVjdCogZXdrVmlldywgV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBN
ZW51LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91
YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiYg
aXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CiAKK3ZvaWQgZXdrX3ZpZXdfcnVuX2phdmFz
Y3JpcHRfYWxlcnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdLRWluYVNoYXJlZFN0cmlu
ZyYgbWVzc2FnZSk7Citib29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgbWVzc2FnZSk7CitXS0Vp
bmFTaGFyZWRTdHJpbmcgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdLRWlu
YVNoYXJlZFN0cmluZyYgZGVmYXVsdFZhbHVlKTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZh
dGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXdfdWlfY2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3X3VpX2NsaWVudC5jcHAKaW5kZXggMThlZGUwOGExNDcyN2QzNmQwMmMxZDVlOGRhMTYxNmI2
MDI3ODczNi4uNDZlNThmMjFlZWIwNzZlNzMyNGNhZmY5NTU3M2IyM2FmNjU2OWY3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9j
bGllbnQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAorI2lu
Y2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a192aWV3X3VpX2NsaWVudF9wcml2YXRlLmgiCiAKQEAgLTQzLDYgKzQ0LDIyIEBAIHN0
YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYsIFdLVVJMUmVxdWVzdFJlZiwg
V0tEaWN0aW9uYXJ5UmVmLCBXS0V2CiAgICAgIHJldHVybiBld2tfdmlld19wYWdlX2NyZWF0ZSh0
b0V3a1ZpZXcoY2xpZW50SW5mbykpOwogfQogCitzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0QWxl
cnQoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIGFsZXJ0VGV4dCwgV0tGcmFtZVJlZiBmcmFt
ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBld2tfdmlld19ydW5famF2YXNjcmlw
dF9hbGVydCh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIFdLRWluYVNoYXJlZFN0cmluZyhhbGVydFRl
eHQpKTsKK30KKworc3RhdGljIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oV0tQYWdlUmVmIHBh
Z2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCit7CisgICAgcmV0dXJuIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0o
dG9Fd2tWaWV3KGNsaWVudEluZm8pLCBXS0VpbmFTaGFyZWRTdHJpbmcobWVzc2FnZSkpOworfQor
CitzdGF0aWMgV0tTdHJpbmdSZWYgcnVuSmF2YVNjcmlwdFByb21wdChXS1BhZ2VSZWYgcGFnZSwg
V0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tTdHJpbmdSZWYgZGVmYXVsdFZhbHVlLCBXS0ZyYW1lUmVm
IGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIFdLRWluYVNoYXJlZFN0cmlu
ZyB2YWx1ZSA9IGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdCh0b0V3a1ZpZXcoY2xpZW50
SW5mbyksIFdLRWluYVNoYXJlZFN0cmluZyhtZXNzYWdlKSwgV0tFaW5hU2hhcmVkU3RyaW5nKGRl
ZmF1bHRWYWx1ZSkpOworICAgIHJldHVybiB2YWx1ZSA/IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKHZhbHVlKSA6IDA7Cit9CisKIHZvaWQgZXdrX3ZpZXdfdWlfY2xpZW50X2F0dGFjaChX
S1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgV0tQYWdlVUlD
bGllbnQgdWlDbGllbnQ7CkBAIC01MSw1ICs2OCw4IEBAIHZvaWQgZXdrX3ZpZXdfdWlfY2xpZW50
X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgdWlD
bGllbnQuY2xpZW50SW5mbyA9IGV3a1ZpZXc7CiAgICAgdWlDbGllbnQuY2xvc2UgPSBjbG9zZVBh
Z2U7CiAgICAgdWlDbGllbnQuY3JlYXRlTmV3UGFnZSA9IGNyZWF0ZU5ld1BhZ2U7CisgICAgdWlD
bGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0ID0gcnVuSmF2YVNjcmlwdEFsZXJ0OworICAgIHVpQ2xp
ZW50LnJ1bkphdmFTY3JpcHRDb25maXJtID0gcnVuSmF2YVNjcmlwdENvbmZpcm07CisgICAgdWlD
bGllbnQucnVuSmF2YVNjcmlwdFByb21wdCA9IHJ1bkphdmFTY3JpcHRQcm9tcHQ7CiAgICAgV0tQ
YWdlU2V0UGFnZVVJQ2xpZW50KHBhZ2VSZWYsICZ1aUNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5j
cHAKaW5kZXggNmU5MjhlZGQ5MDNlYWMwMGJlZmRjZjZiMTMyMTA2NDZmMTA4MGIxYi4uYWU0OTVj
ZGRkYTQxNTFkZDBkNWE2MzY5N2MxNzhlMzM0MTYzODE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcApA
QCAtMzYwLDMgKzM2MCwxNzYgQEAgVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X2Z1
bGxfc2NyZWVuX2V4aXQpCiAgICAgQVNTRVJUX1RSVUUoZnVsbFNjcmVlbkNhbGxiYWNrQ2FsbGVk
KTsKICAgICBjaGVja0Z1bGxTY3JlZW5Qcm9wZXJ0eSh3ZWJWaWV3KCksIGZhbHNlKTsKIH0KKwor
c3RhdGljIHN0cnVjdCB7CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAg
ICAgY29uc3QgY2hhciogZXhwZWN0ZWRNZXNzYWdlOworICAgICAgICB9IGFsZXJ0OworICAgICAg
ICBzdHJ1Y3QgeworICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRNZXNzYWdlOworICAg
ICAgICAgICAgRWluYV9Cb29sIHJlc3VsdDsKKyAgICAgICAgfSBjb25maXJtOworICAgICAgICBz
dHJ1Y3QgeworICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRNZXNzYWdlOworICAgICAg
ICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWREZWZhdWx0VmFsdWU7CisgICAgICAgICAgICBjb25z
dCBjaGFyKiByZXN1bHQ7CisgICAgICAgIH0gcHJvbXB0OworICAgIH07Cit9IGphdmFTY3JpcHRQ
b3B1cENhbGxiYWNrRGF0YTsKKworc3RhdGljIHZvaWQgY2hlY2tBbGVydChFd2tfVmlld19TbWFy
dF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgRVhQRUNUX1NU
UkVRKG1lc3NhZ2UsIGphdmFTY3JpcHRQb3B1cENhbGxiYWNrRGF0YS5hbGVydC5leHBlY3RlZE1l
c3NhZ2UpOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfcnVuX2phdmFz
Y3JpcHRfYWxlcnQpCit7CisgICAgY29uc3QgY2hhciogYWxlcnRIVE1MID0KKyAgICAgICAgIjxo
dG1sPjxib2R5IG9ubG9hZD1cImFsZXJ0KCdUaGlzIGlzIGphdmFzY3JpcHQgYWxlcnQgbWVzc2Fn
ZS4nKTtcIj48L2JvZHk+PC9odG1sPiI7CisgICAgamF2YVNjcmlwdFBvcHVwQ2FsbGJhY2tEYXRh
LmFsZXJ0LmV4cGVjdGVkTWVzc2FnZSA9ICJUaGlzIGlzIGphdmFzY3JpcHQgYWxlcnQgbWVzc2Fn
ZS4iOworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9hbGVydCA9IGNoZWNrQWxl
cnQ7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGFsZXJ0SFRNTCwg
MCwgMCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBhbGVydEhUTUwgPSAi
PGh0bWw+PGJvZHkgb25sb2FkPVwiYWxlcnQoJycpO1wiPjwvYm9keT48L2h0bWw+IjsKKyAgICBq
YXZhU2NyaXB0UG9wdXBDYWxsYmFja0RhdGEuYWxlcnQuZXhwZWN0ZWRNZXNzYWdlID0gIiI7Cisg
ICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGFsZXJ0SFRNTCwgMCwgMCk7
CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBhbGVydEhUTUwgPSAiPGh0bWw+
PGJvZHkgb25sb2FkPVwiYWxlcnQobnVsbCk7XCI+PC9ib2R5PjwvaHRtbD4iOworICAgIGphdmFT
Y3JpcHRQb3B1cENhbGxiYWNrRGF0YS5hbGVydC5leHBlY3RlZE1lc3NhZ2UgPSAibnVsbCI7Cisg
ICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGFsZXJ0SFRNTCwgMCwgMCk7
CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBhbGVydEhUTUwgPSAiPGh0bWw+
PGJvZHkgb25sb2FkPVwiYWxlcnQoKTtcIj48L2JvZHk+PC9odG1sPiI7CisgICAgamF2YVNjcmlw
dFBvcHVwQ2FsbGJhY2tEYXRhLmFsZXJ0LmV4cGVjdGVkTWVzc2FnZSA9ICJ1bmRlZmluZWQiOwor
ICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBhbGVydEhUTUwsIDAsIDAp
OworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworfQorCitzdGF0aWMgRWluYV9Cb29sIGNo
ZWNrQ29uZmlybShFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IGNoYXIqIG1l
c3NhZ2UpCit7CisgICAgRVhQRUNUX1NUUkVRKG1lc3NhZ2UsIGphdmFTY3JpcHRQb3B1cENhbGxi
YWNrRGF0YS5jb25maXJtLmV4cGVjdGVkTWVzc2FnZSk7CisgICAgcmV0dXJuIGphdmFTY3JpcHRQ
b3B1cENhbGxiYWNrRGF0YS5jb25maXJtLnJlc3VsdDsKK30KKworVEVTVF9GKEVXSzJVbml0VGVz
dEJhc2UsIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0pCit7CisgICAgY29uc3QgY2hh
ciogY29uZmlybUhUTUwgPQorICAgICAgICAiPGh0bWw+PGJvZHkgb25sb2FkPVwiZG9jdW1lbnQu
dGl0bGUgPSBjb25maXJtKCdUaGlzIGlzIGphdmFzY3JpcHQgY29uZmlybSBtZXNzYWdlLicpO1wi
PjwvYm9keT48L2h0bWw+IjsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXco
KSwgY29uZmlybUhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAg
IEVYUEVDVF9TVFJFUShld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSwgImZhbHNlIik7CisK
KyAgICBld2tWaWV3Q2xhc3MoKS0+cnVuX2phdmFzY3JpcHRfY29uZmlybSA9IGNoZWNrQ29uZmly
bTsKKworICAgIGphdmFTY3JpcHRQb3B1cENhbGxiYWNrRGF0YS5jb25maXJtLmV4cGVjdGVkTWVz
c2FnZSA9ICJUaGlzIGlzIGphdmFzY3JpcHQgY29uZmlybSBtZXNzYWdlLiI7CisgICAgamF2YVNj
cmlwdFBvcHVwQ2FsbGJhY2tEYXRhLmNvbmZpcm0ucmVzdWx0ID0gRUlOQV9UUlVFOworICAgIGV3
a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBjb25maXJtSFRNTCwgMCwgMCk7Cisg
ICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgRVhQRUNUX1NUUkVRKGV3a192aWV3X3Rp
dGxlX2dldCh3ZWJWaWV3KCkpLCAidHJ1ZSIpOworCisgICAgamF2YVNjcmlwdFBvcHVwQ2FsbGJh
Y2tEYXRhLmNvbmZpcm0uZXhwZWN0ZWRNZXNzYWdlID0gIlRoaXMgaXMgamF2YXNjcmlwdCBjb25m
aXJtIG1lc3NhZ2UuIjsKKyAgICBqYXZhU2NyaXB0UG9wdXBDYWxsYmFja0RhdGEuY29uZmlybS5y
ZXN1bHQgPSBFSU5BX0ZBTFNFOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmll
dygpLCBjb25maXJtSFRNTCwgMCwgMCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Cisg
ICAgRVhQRUNUX1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCAiZmFsc2UiKTsK
KworICAgIGNvbmZpcm1IVE1MID0gIjxodG1sPjxib2R5IG9ubG9hZD1cImRvY3VtZW50LnRpdGxl
ID0gY29uZmlybSgnJyk7XCI+PC9ib2R5PjwvaHRtbD4iOworICAgIGphdmFTY3JpcHRQb3B1cENh
bGxiYWNrRGF0YS5jb25maXJtLmV4cGVjdGVkTWVzc2FnZSA9ICIiOworICAgIGphdmFTY3JpcHRQ
b3B1cENhbGxiYWNrRGF0YS5jb25maXJtLnJlc3VsdCA9IEVJTkFfVFJVRTsKKyAgICBld2tfdmll
d19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgY29uZmlybUhUTUwsIDAsIDApOworICAgIHdh
aXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIEVYUEVDVF9TVFJFUShld2tfdmlld190aXRsZV9n
ZXQod2ViVmlldygpKSwgInRydWUiKTsKKworICAgIGNvbmZpcm1IVE1MID0gIjxodG1sPjxib2R5
IG9ubG9hZD1cImRvY3VtZW50LnRpdGxlID0gY29uZmlybShudWxsKTtcIj48L2JvZHk+PC9odG1s
PiI7CisgICAgamF2YVNjcmlwdFBvcHVwQ2FsbGJhY2tEYXRhLmNvbmZpcm0uZXhwZWN0ZWRNZXNz
YWdlID0gIm51bGwiOworICAgIGphdmFTY3JpcHRQb3B1cENhbGxiYWNrRGF0YS5jb25maXJtLnJl
c3VsdCA9IEVJTkFfVFJVRTsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXco
KSwgY29uZmlybUhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAg
IEVYUEVDVF9TVFJFUShld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSwgInRydWUiKTsKKwor
ICAgIGNvbmZpcm1IVE1MID0gIjxodG1sPjxib2R5IG9ubG9hZD1cImRvY3VtZW50LnRpdGxlID0g
Y29uZmlybSgpO1wiPjwvYm9keT48L2h0bWw+IjsKKyAgICBqYXZhU2NyaXB0UG9wdXBDYWxsYmFj
a0RhdGEuY29uZmlybS5leHBlY3RlZE1lc3NhZ2UgPSAidW5kZWZpbmVkIjsKKyAgICBqYXZhU2Ny
aXB0UG9wdXBDYWxsYmFja0RhdGEuY29uZmlybS5yZXN1bHQgPSBFSU5BX1RSVUU7CisgICAgZXdr
X3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGNvbmZpcm1IVE1MLCAwLCAwKTsKKyAg
ICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBFWFBFQ1RfU1RSRVEoZXdrX3ZpZXdfdGl0
bGVfZ2V0KHdlYlZpZXcoKSksICJ0cnVlIik7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBjaGVj
a1Byb21wdChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UsIGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZSkKK3sKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2Fn
ZSwgamF2YVNjcmlwdFBvcHVwQ2FsbGJhY2tEYXRhLnByb21wdC5leHBlY3RlZE1lc3NhZ2UpOwor
ICAgIEVYUEVDVF9TVFJFUShkZWZhdWx0VmFsdWUsIGphdmFTY3JpcHRQb3B1cENhbGxiYWNrRGF0
YS5wcm9tcHQuZXhwZWN0ZWREZWZhdWx0VmFsdWUpOworCisgICAgaWYgKCFqYXZhU2NyaXB0UG9w
dXBDYWxsYmFja0RhdGEucHJvbXB0LnJlc3VsdCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBy
ZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQoamF2YVNjcmlwdFBvcHVwQ2FsbGJhY2tEYXRhLnBy
b21wdC5yZXN1bHQpOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfcnVu
X2phdmFzY3JpcHRfcHJvbXB0KQoreworICAgIGNvbnN0IGNoYXIqIHByb21wdEhUTUwgPQorICAg
ICAgICAiPGh0bWw+PGJvZHkgb25sb2FkPVwidmFyIHJlc3VsdCA9IHByb21wdCgnVGhpcyBpcyBq
YXZhc2NyaXB0IHByb21wdCBtZXNzYWdlLicsICdEZWZhdWx0IHZhbHVlJyk7IGlmIChyZXN1bHQg
PT0gbnVsbCkgZG9jdW1lbnQudGl0bGU9J251bGwnOyBlbHNlIGRvY3VtZW50LnRpdGxlPXJlc3Vs
dDtcIj48L2JvZHk+PC9odG1sPiI7CisKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdl
YlZpZXcoKSwgcHJvbXB0SFRNTCwgMCwgMCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7
CisgICAgRVhQRUNUX1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCAibnVsbCIp
OworCisgICAgZXdrVmlld0NsYXNzKCktPnJ1bl9qYXZhc2NyaXB0X3Byb21wdCA9IGNoZWNrUHJv
bXB0OworCisgICAgamF2YVNjcmlwdFBvcHVwQ2FsbGJhY2tEYXRhLnByb21wdC5leHBlY3RlZE1l
c3NhZ2UgPSAiVGhpcyBpcyBqYXZhc2NyaXB0IHByb21wdCBtZXNzYWdlLiI7CisgICAgamF2YVNj
cmlwdFBvcHVwQ2FsbGJhY2tEYXRhLnByb21wdC5leHBlY3RlZERlZmF1bHRWYWx1ZSA9ICJEZWZh
dWx0IHZhbHVlIjsKKyAgICBqYXZhU2NyaXB0UG9wdXBDYWxsYmFja0RhdGEucHJvbXB0LnJlc3Vs
dCA9ICJSZXN1bHQgc3RyaW5nIjsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZp
ZXcoKSwgcHJvbXB0SFRNTCwgMCwgMCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Cisg
ICAgRVhQRUNUX1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCAiUmVzdWx0IHN0
cmluZyIpOworCisgICAgamF2YVNjcmlwdFBvcHVwQ2FsbGJhY2tEYXRhLnByb21wdC5leHBlY3Rl
ZE1lc3NhZ2UgPSAiVGhpcyBpcyBqYXZhc2NyaXB0IHByb21wdCBtZXNzYWdlLiI7CisgICAgamF2
YVNjcmlwdFBvcHVwQ2FsbGJhY2tEYXRhLnByb21wdC5leHBlY3RlZERlZmF1bHRWYWx1ZSA9ICJE
ZWZhdWx0IHZhbHVlIjsKKyAgICBqYXZhU2NyaXB0UG9wdXBDYWxsYmFja0RhdGEucHJvbXB0LnJl
c3VsdCA9ICIiOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBwcm9t
cHRIVE1MLCAwLCAwKTsKKyAgICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBFWFBFQ1Rf
U1RSRVEoZXdrX3ZpZXdfdGl0bGVfZ2V0KHdlYlZpZXcoKSksICIiKTsKKworICAgIGphdmFTY3Jp
cHRQb3B1cENhbGxiYWNrRGF0YS5wcm9tcHQuZXhwZWN0ZWRNZXNzYWdlID0gIlRoaXMgaXMgamF2
YXNjcmlwdCBwcm9tcHQgbWVzc2FnZS4iOworICAgIGphdmFTY3JpcHRQb3B1cENhbGxiYWNrRGF0
YS5wcm9tcHQuZXhwZWN0ZWREZWZhdWx0VmFsdWUgPSAiRGVmYXVsdCB2YWx1ZSI7CisgICAgamF2
YVNjcmlwdFBvcHVwQ2FsbGJhY2tEYXRhLnByb21wdC5yZXN1bHQgPSAwOworICAgIGV3a192aWV3
X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBwcm9tcHRIVE1MLCAwLCAwKTsKKyAgICB3YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBFWFBFQ1RfU1RSRVEoZXdrX3ZpZXdfdGl0bGVfZ2V0
KHdlYlZpZXcoKSksICJudWxsIik7CisKKyAgICBwcm9tcHRIVE1MID0gIjxodG1sPjxib2R5IG9u
bG9hZD1cImRvY3VtZW50LnRpdGxlID0gcHJvbXB0KCdUaGlzIGlzIGphdmFzY3JpcHQgcHJvbXB0
IG1lc3NhZ2UuJywgJycpO1wiPjwvYm9keT48L2h0bWw+IjsKKyAgICBqYXZhU2NyaXB0UG9wdXBD
YWxsYmFja0RhdGEucHJvbXB0LmV4cGVjdGVkTWVzc2FnZSA9ICJUaGlzIGlzIGphdmFzY3JpcHQg
cHJvbXB0IG1lc3NhZ2UuIjsKKyAgICBqYXZhU2NyaXB0UG9wdXBDYWxsYmFja0RhdGEucHJvbXB0
LmV4cGVjdGVkRGVmYXVsdFZhbHVlID0gIiI7CisgICAgamF2YVNjcmlwdFBvcHVwQ2FsbGJhY2tE
YXRhLnByb21wdC5yZXN1bHQgPSAiUmVzdWx0IHN0cmluZyI7CisgICAgZXdrX3ZpZXdfaHRtbF9z
dHJpbmdfbG9hZCh3ZWJWaWV3KCksIHByb21wdEhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbExv
YWRGaW5pc2hlZCgpOworICAgIEVYUEVDVF9TVFJFUShld2tfdmlld190aXRsZV9nZXQod2ViVmll
dygpKSwgIlJlc3VsdCBzdHJpbmciKTsKKworICAgIHByb21wdEhUTUwgPSAiPGh0bWw+PGJvZHkg
b25sb2FkPVwiZG9jdW1lbnQudGl0bGUgPSBwcm9tcHQoJ1RoaXMgaXMgamF2YXNjcmlwdCBwcm9t
cHQgbWVzc2FnZS4nKTtcIj48L2JvZHk+PC9odG1sPiI7CisgICAgamF2YVNjcmlwdFBvcHVwQ2Fs
bGJhY2tEYXRhLnByb21wdC5leHBlY3RlZE1lc3NhZ2UgPSAiVGhpcyBpcyBqYXZhc2NyaXB0IHBy
b21wdCBtZXNzYWdlLiI7CisgICAgamF2YVNjcmlwdFBvcHVwQ2FsbGJhY2tEYXRhLnByb21wdC5l
eHBlY3RlZERlZmF1bHRWYWx1ZSA9ICIiOworICAgIGphdmFTY3JpcHRQb3B1cENhbGxiYWNrRGF0
YS5wcm9tcHQucmVzdWx0ID0gIlJlc3VsdCBzdHJpbmciOworICAgIGV3a192aWV3X2h0bWxfc3Ry
aW5nX2xvYWQod2ViVmlldygpLCBwcm9tcHRIVE1MLCAwLCAwKTsKKyAgICB3YWl0VW50aWxMb2Fk
RmluaXNoZWQoKTsKKyAgICBFWFBFQ1RfU1RSRVEoZXdrX3ZpZXdfdGl0bGVfZ2V0KHdlYlZpZXco
KSksICJSZXN1bHQgc3RyaW5nIik7CisKKyAgICBwcm9tcHRIVE1MID0gIjxodG1sPjxib2R5IG9u
bG9hZD1cImRvY3VtZW50LnRpdGxlID0gcHJvbXB0KCcnKTtcIj48L2JvZHk+PC9odG1sPiI7Cisg
ICAgamF2YVNjcmlwdFBvcHVwQ2FsbGJhY2tEYXRhLnByb21wdC5leHBlY3RlZE1lc3NhZ2UgPSAi
IjsKKyAgICBqYXZhU2NyaXB0UG9wdXBDYWxsYmFja0RhdGEucHJvbXB0LmV4cGVjdGVkRGVmYXVs
dFZhbHVlID0gIiI7CisgICAgamF2YVNjcmlwdFBvcHVwQ2FsbGJhY2tEYXRhLnByb21wdC5yZXN1
bHQgPSAiUmVzdWx0IHN0cmluZyI7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJW
aWV3KCksIHByb21wdEhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwor
ICAgIEVYUEVDVF9TVFJFUShld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSwgIlJlc3VsdCBz
dHJpbmciKTsKKworICAgIHByb21wdEhUTUwgPSAiPGh0bWw+PGJvZHkgb25sb2FkPVwiZG9jdW1l
bnQudGl0bGUgPSBwcm9tcHQoKTtcIj48L2JvZHk+PC9odG1sPiI7CisgICAgamF2YVNjcmlwdFBv
cHVwQ2FsbGJhY2tEYXRhLnByb21wdC5leHBlY3RlZE1lc3NhZ2UgPSAidW5kZWZpbmVkIjsKKyAg
ICBqYXZhU2NyaXB0UG9wdXBDYWxsYmFja0RhdGEucHJvbXB0LmV4cGVjdGVkRGVmYXVsdFZhbHVl
ID0gIiI7CisgICAgamF2YVNjcmlwdFBvcHVwQ2FsbGJhY2tEYXRhLnByb21wdC5yZXN1bHQgPSAi
UmVzdWx0IHN0cmluZyI7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCks
IHByb21wdEhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIEVY
UEVDVF9TVFJFUShld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSwgIlJlc3VsdCBzdHJpbmci
KTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164163</attachid>
            <date>2012-09-14 08:40:45 -0700</date>
            <delta_ts>2012-09-17 08:35:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95672-20120915004012.patch</filename>
            <type>text/plain</type>
            <size>19844</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGJiNmI4OWViNGIxMzI3
MDA4MDFmNTc3M2E4NzA3NDAwNjlkMzg5My4uZjlhYWY2N2JkYWIxZjJhMjQ0NzMwNzcxYmE4ODVl
NGZkNTNhMTQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTEyICBCeXVu
Z3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBqYXZhc2NyaXB0IHBvcHVwIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1NjcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHNtYXJ0IGNsYXNzIG1lbWJlciBmdW5jdGlvbiBmb3IgamF2YXNj
cmlwdCBhbGVydCgpLCBjb25maXJtKCkgYW5kIHByb21wdCgpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdfcnVuX2phdmFzY3Jp
cHRfYWxlcnQpOgorICAgICAgICAoZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybSk6Cisg
ICAgICAgIChld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Vp
X2NsaWVudC5jcHA6CisgICAgICAgIChydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAocnVu
SmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAocnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAg
ICAgIChld2tfdmlld191aV9jbGllbnRfYXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHA6CisgICAgICAgIEFkZGVkIHVuaXQgdGVzdCBm
b3IgamF2YXNjcmlwdCBwb3B1cCBzbWFydCBjbGFzcyBtZW1iZXIgZnVuY3Rpb24uCisgICAgICAg
IChjaGVja0FsZXJ0KToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgIChjaGVja0NvbmZpcm0p
OgorICAgICAgICAoY2hlY2tQcm9tcHQpOgorCiAyMDEyLTA5LTExICBCeXVuZ3dvbyBMZWUgIDxi
dzgwLmxlZUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIFdLRWluYVNoYXJlZFN0
cmluZyBuZWVkcyBhIGZ1bmN0aW9uIHRvIGFkb3B0IGVpbmEgc3RyaW5nc2hhcmUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggOTk3MWIxNjM0
MDY4M2FlODc5MmQ4ODA5NmE3NDRkYTMzMDVhNDEyMC4uMDE3ZTgxY2NiNDhkYTlkMzM4YmI0MmQ4
ZjYzMzdkYTRmMzAyMDBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcApAQCAtMTYyNCwzICsxNjI0LDM2IEBAIEVpbmFfQm9vbCBld2tfdmlld19t
b3VzZV9ldmVudHNfZW5hYmxlZF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKICAg
ICByZXR1cm4gcHJpdi0+YXJlTW91c2VFdmVudHNFbmFibGVkOwogfQorCit2b2lkIGV3a192aWV3
X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXS0VpbmFT
aGFyZWRTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0
RGF0YS0+YXBpKTsKKworICAgIGlmICghc21hcnREYXRhLT5hcGktPnJ1bl9qYXZhc2NyaXB0X2Fs
ZXJ0KQorICAgICAgICByZXR1cm47CisKKyAgICBzbWFydERhdGEtPmFwaS0+cnVuX2phdmFzY3Jp
cHRfYWxlcnQoc21hcnREYXRhLCBtZXNzYWdlKTsKK30KKworYm9vbCBld2tfdmlld19ydW5famF2
YXNjcmlwdF9jb25maXJtKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXS0VpbmFTaGFyZWRT
dHJpbmcmIG1lc3NhZ2UpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c21hcnREYXRhLT5hcGksIGZhbHNlKTsKKworICAgIGlmICghc21hcnREYXRhLT5hcGktPnJ1bl9q
YXZhc2NyaXB0X2NvbmZpcm0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBz
bWFydERhdGEtPmFwaS0+cnVuX2phdmFzY3JpcHRfY29uZmlybShzbWFydERhdGEsIG1lc3NhZ2Up
OworfQorCitXS0VpbmFTaGFyZWRTdHJpbmcgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgZGVmYXVsdFZhbHVlKQoreworICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBXS0VpbmFTaGFyZWRTdHJpbmco
KSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBX
S0VpbmFTaGFyZWRTdHJpbmcoKSk7CisKKyAgICBpZiAoIXNtYXJ0RGF0YS0+YXBpLT5ydW5famF2
YXNjcmlwdF9wcm9tcHQpCisgICAgICAgIHJldHVybiBXS0VpbmFTaGFyZWRTdHJpbmcoKTsKKwor
ICAgIHJldHVybiBXS0VpbmFTaGFyZWRTdHJpbmc6OmFkb3B0KHNtYXJ0RGF0YS0+YXBpLT5ydW5f
amF2YXNjcmlwdF9wcm9tcHQoc21hcnREYXRhLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUpKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGIwNDBm
ZGYzMDg1ZTI3ZWY4MDg3N2E5YzY4NDM4NTY0ZTU4NTI4NTIuLjcxMjJmODI4MDZkZTQxM2VjYTBi
MzIwYTBjYmUyZGVhNmM1NWU5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaApAQCAtMTE0LDEzICsxMTQsMTkgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFy
dF9DbGFzcyB7CiAgICAgRWluYV9Cb29sICgqbW91c2VfbW92ZSkoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSAqZXYpOwogICAgIEVpbmFfQm9vbCAo
KmtleV9kb3duKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlf
RG93biAqZXYpOwogICAgIEVpbmFfQm9vbCAoKmtleV91cCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwICpldik7CisKKyAgICAvLyBqYXZhc2NyaXB0IHBv
cHVwOgorICAgIC8vICAgLSBBbGwgc3RyaW5ncyBzaG91bGQgYmUgZ3VhcmFudGVlZCB0byBiZSBz
dHJpbmdzaGFyZWQuCisgICAgdm9pZCAoKnJ1bl9qYXZhc2NyaXB0X2FsZXJ0KShFd2tfVmlld19T
bWFydF9EYXRhICpzZCwgY29uc3QgY2hhciAqbWVzc2FnZSk7CisgICAgRWluYV9Cb29sICgqcnVu
X2phdmFzY3JpcHRfY29uZmlybSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IGNoYXIg
Km1lc3NhZ2UpOworICAgIGNvbnN0IGNoYXIgKigqcnVuX2phdmFzY3JpcHRfcHJvbXB0KShFd2tf
Vmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgY2hhciAqbWVzc2FnZSwgY29uc3QgY2hhciAqZGVm
YXVsdF92YWx1ZSk7IC8qKjwgcmV0dXJuIHN0cmluZyBzaG91bGQgYmUgc3RyaW5nc2hhcmVkLiAq
LwogfTsKIAogLyoqCiAgKiBUaGUgdmVyc2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVy
c2lvbiBmaWVsZAogICogaW4gdGhlIEBhIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4K
ICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDNVTAorI2RlZmluZSBF
V0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDRVTAogCiAvKioKICAqIEluaXRpYWxpemVyIGZv
ciB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCkBAIC0xMzIsNyArMTM4LDcg
QEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJU
X0NMQVNTX0lOSVRfVkVSU0lPTgogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05B
TUVfVkVSU0lPTgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRf
Y2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJ
T04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CisjZGVmaW5lIEVXS19WSUVX
X1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVX
S19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDB9CiAKIC8qKgogICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3
a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCBmY2Q2NWVlMGY2MTcyZmIz
OTQxNjgwMDgyZWZiOTI2ZDg4ZDc4NDhjLi5mOGE3MDdlOGJlOWFlYjg2ZTYyYjE0OGQ4MWIyNzQy
NzhmODU0YTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJXZWJQYWdl
UHJveHkuaCIKICNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8V0tFaW5hU2hhcmVkU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViS2l0
Mi9XS0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xMDIsNCArMTAzLDggQEAg
Ym9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a1ZpZXcpOwogCiB2b2lkIGV3a192aWV3X3BvcHVwX21lbnVfcmVxdWVzdChF
dmFzX09iamVjdCogZXdrVmlldywgV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBN
ZW51LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91
YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiYg
aXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CiAKK3ZvaWQgZXdrX3ZpZXdfcnVuX2phdmFz
Y3JpcHRfYWxlcnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdLRWluYVNoYXJlZFN0cmlu
ZyYgbWVzc2FnZSk7Citib29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgbWVzc2FnZSk7CitXS0Vp
bmFTaGFyZWRTdHJpbmcgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdLRWlu
YVNoYXJlZFN0cmluZyYgZGVmYXVsdFZhbHVlKTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZh
dGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXdfdWlfY2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3X3VpX2NsaWVudC5jcHAKaW5kZXggMThlZGUwOGExNDcyN2QzNmQwMmMxZDVlOGRhMTYxNmI2
MDI3ODczNi4uOGVkZTUwZGQ5ZTg3NGZmNWI2MTBjNTY5Yzc4Zjk0Nzg5YjYzMTM3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9j
bGllbnQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAorI2lu
Y2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a192aWV3X3VpX2NsaWVudF9wcml2YXRlLmgiCiAKQEAgLTQzLDYgKzQ0LDIyIEBAIHN0
YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYsIFdLVVJMUmVxdWVzdFJlZiwg
V0tEaWN0aW9uYXJ5UmVmLCBXS0V2CiAgICAgIHJldHVybiBld2tfdmlld19wYWdlX2NyZWF0ZSh0
b0V3a1ZpZXcoY2xpZW50SW5mbykpOwogfQogCitzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0QWxl
cnQoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit7CisgICAgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfYWxlcnQodG9F
d2tWaWV3KGNsaWVudEluZm8pLCBXS0VpbmFTaGFyZWRTdHJpbmcoYWxlcnRUZXh0KSk7Cit9CisK
K3N0YXRpYyBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYg
bWVzc2FnZSwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1
cm4gZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybSh0b0V3a1ZpZXcoY2xpZW50SW5mbyks
IFdLRWluYVNoYXJlZFN0cmluZyhtZXNzYWdlKSk7Cit9CisKK3N0YXRpYyBXS1N0cmluZ1JlZiBy
dW5KYXZhU2NyaXB0UHJvbXB0KFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tTdHJp
bmdSZWYgZGVmYXVsdFZhbHVlLCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQor
eworICAgIFdLRWluYVNoYXJlZFN0cmluZyB2YWx1ZSA9IGV3a192aWV3X3J1bl9qYXZhc2NyaXB0
X3Byb21wdCh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIFdLRWluYVNoYXJlZFN0cmluZyhtZXNzYWdl
KSwgV0tFaW5hU2hhcmVkU3RyaW5nKGRlZmF1bHRWYWx1ZSkpOworICAgIHJldHVybiB2YWx1ZSA/
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHZhbHVlKSA6IDA7Cit9CisKIHZvaWQgZXdr
X3ZpZXdfdWlfY2xpZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3
a1ZpZXcpCiB7CiAgICAgV0tQYWdlVUlDbGllbnQgdWlDbGllbnQ7CkBAIC01MSw1ICs2OCw4IEBA
IHZvaWQgZXdrX3ZpZXdfdWlfY2xpZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19P
YmplY3QqIGV3a1ZpZXcpCiAgICAgdWlDbGllbnQuY2xpZW50SW5mbyA9IGV3a1ZpZXc7CiAgICAg
dWlDbGllbnQuY2xvc2UgPSBjbG9zZVBhZ2U7CiAgICAgdWlDbGllbnQuY3JlYXRlTmV3UGFnZSA9
IGNyZWF0ZU5ld1BhZ2U7CisgICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0ID0gcnVuSmF2
YVNjcmlwdEFsZXJ0OworICAgIHVpQ2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtID0gcnVuSmF2
YVNjcmlwdENvbmZpcm07CisgICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdFByb21wdCA9IHJ1bkph
dmFTY3JpcHRQcm9tcHQ7CiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KHBhZ2VSZWYsICZ1aUNs
aWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKaW5kZXggNmU5MjhlZGQ5MDNlYWMwMGJlZmRjZjZi
MTMyMTA2NDZmMTA4MGIxYi4uODA4YmUxZGE0N2FlZjVjZmM0YjFlMTFkYmIxMjMyZmMyYjk2ZTVh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVz
dF9ld2syX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL3Rlc3RfZXdrMl92aWV3LmNwcApAQCAtMzYwLDMgKzM2MCwyMzUgQEAgVEVTVF9GKEVXSzJV
bml0VGVzdEJhc2UsIGV3a192aWV3X2Z1bGxfc2NyZWVuX2V4aXQpCiAgICAgQVNTRVJUX1RSVUUo
ZnVsbFNjcmVlbkNhbGxiYWNrQ2FsbGVkKTsKICAgICBjaGVja0Z1bGxTY3JlZW5Qcm9wZXJ0eSh3
ZWJWaWV3KCksIGZhbHNlKTsKIH0KKworc3RhdGljIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciog
ZXhwZWN0ZWRNZXNzYWdlOworICAgIGJvb2wgY2FsbGVkOworfSBhbGVydENhbGxiYWNrRGF0YTsK
Kworc3RhdGljIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWRNZXNzYWdlOworICAg
IGJvb2wgcmVzdWx0OworICAgIGJvb2wgY2FsbGVkOworfSBjb25maXJtQ2FsbGJhY2tEYXRhOwor
CitzdGF0aWMgc3RydWN0IHsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZE1lc3NhZ2U7CisgICAg
Y29uc3QgY2hhciogZXhwZWN0ZWREZWZhdWx0VmFsdWU7CisgICAgY29uc3QgY2hhciogcmVzdWx0
OworICAgIGJvb2wgY2FsbGVkOworfSBwcm9tcHRDYWxsYmFja0RhdGE7CisKKyNkZWZpbmUgSkFW
QVNDUklQVF9TVFJJTkdfQUxFUlRfTUVTU0FHRSAiVGhpcyBpcyBqYXZhc2NyaXB0IGFsZXJ0IG1l
c3NhZ2UuIgorI2RlZmluZSBKQVZBU0NSSVBUX1NUUklOR19DT05GSVJNX01FU1NBR0UgIlRoaXMg
aXMgamF2YXNjcmlwdCBjb25maXJtIG1lc3NhZ2UuIgorI2RlZmluZSBKQVZBU0NSSVBUX1NUUklO
R19QUk9NUFRfTUVTU0FHRSAiVGhpcyBpcyBqYXZhc2NyaXB0IHByb21wdCBtZXNzYWdlLiIKKyNk
ZWZpbmUgSkFWQVNDUklQVF9TVFJJTkdfUFJPTVBUX0RFRkFVTFRfVkFMVUUgIkRlZmF1bHQgdmFs
dWUuIgorI2RlZmluZSBKQVZBU0NSSVBUX1NUUklOR19FTVBUWSAiIgorI2RlZmluZSBKQVZBU0NS
SVBUX1NUUklOR19OVUxMICJudWxsIgorI2RlZmluZSBKQVZBU0NSSVBUX1NUUklOR19VTkRFRklO
RUQgInVuZGVmaW5lZCIKKyNkZWZpbmUgSkFWQVNDUklQVF9TVFJJTkdfVFJVRSAidHJ1ZSIKKyNk
ZWZpbmUgSkFWQVNDUklQVF9TVFJJTkdfRkFMU0UgImZhbHNlIgorI2RlZmluZSBKQVZBU0NSSVBU
X1NUUklOR19SRVNVTFRfU1RSSU5HICJSZXN1bHQgc3RyaW5nIgorCitzdGF0aWMgdm9pZCBjaGVj
a0FsZXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEqLCBjb25zdCBjaGFyKiBtZXNzYWdlKQoreworICAg
IGFsZXJ0Q2FsbGJhY2tEYXRhLmNhbGxlZCA9IHRydWU7CisgICAgRVhQRUNUX1NUUkVRKG1lc3Nh
Z2UsIGFsZXJ0Q2FsbGJhY2tEYXRhLmV4cGVjdGVkTWVzc2FnZSk7Cit9CisKK1RFU1RfRihFV0sy
VW5pdFRlc3RCYXNlLCBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVydCkKK3sKKyAgICBld2tW
aWV3Q2xhc3MoKS0+cnVuX2phdmFzY3JpcHRfYWxlcnQgPSBjaGVja0FsZXJ0OworCisgICAgY29u
c3QgY2hhciogYWxlcnRIVE1MID0gIjxodG1sPjxib2R5IG9ubG9hZD1cImFsZXJ0KCciIEpBVkFT
Q1JJUFRfU1RSSU5HX0FMRVJUX01FU1NBR0UgIicpO1wiPjwvYm9keT48L2h0bWw+IjsKKyAgICBh
bGVydENhbGxiYWNrRGF0YS5leHBlY3RlZE1lc3NhZ2UgPSBKQVZBU0NSSVBUX1NUUklOR19BTEVS
VF9NRVNTQUdFOworICAgIGFsZXJ0Q2FsbGJhY2tEYXRhLmNhbGxlZCA9IGZhbHNlOworICAgIGV3
a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBhbGVydEhUTUwsIDAsIDApOworICAg
IHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIEVYUEVDVF9FUShhbGVydENhbGxiYWNrRGF0
YS5jYWxsZWQsIHRydWUpOworCisgICAgYWxlcnRIVE1MID0gIjxodG1sPjxib2R5IG9ubG9hZD1c
ImFsZXJ0KCcnKTtcIj48L2JvZHk+PC9odG1sPiI7CisgICAgYWxlcnRDYWxsYmFja0RhdGEuZXhw
ZWN0ZWRNZXNzYWdlID0gSkFWQVNDUklQVF9TVFJJTkdfRU1QVFk7CisgICAgYWxlcnRDYWxsYmFj
a0RhdGEuY2FsbGVkID0gZmFsc2U7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJW
aWV3KCksIGFsZXJ0SFRNTCwgMCwgMCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Cisg
ICAgRVhQRUNUX0VRKGFsZXJ0Q2FsbGJhY2tEYXRhLmNhbGxlZCwgdHJ1ZSk7CisKKyAgICBhbGVy
dEhUTUwgPSAiPGh0bWw+PGJvZHkgb25sb2FkPVwiYWxlcnQobnVsbCk7XCI+PC9ib2R5PjwvaHRt
bD4iOworICAgIGFsZXJ0Q2FsbGJhY2tEYXRhLmV4cGVjdGVkTWVzc2FnZSA9IEpBVkFTQ1JJUFRf
U1RSSU5HX05VTEw7CisgICAgYWxlcnRDYWxsYmFja0RhdGEuY2FsbGVkID0gZmFsc2U7CisgICAg
ZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGFsZXJ0SFRNTCwgMCwgMCk7Cisg
ICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgRVhQRUNUX0VRKGFsZXJ0Q2FsbGJhY2tE
YXRhLmNhbGxlZCwgdHJ1ZSk7CisKKyAgICBhbGVydEhUTUwgPSAiPGh0bWw+PGJvZHkgb25sb2Fk
PVwiYWxlcnQoKTtcIj48L2JvZHk+PC9odG1sPiI7CisgICAgYWxlcnRDYWxsYmFja0RhdGEuZXhw
ZWN0ZWRNZXNzYWdlID0gSkFWQVNDUklQVF9TVFJJTkdfVU5ERUZJTkVEOworICAgIGFsZXJ0Q2Fs
bGJhY2tEYXRhLmNhbGxlZCA9IGZhbHNlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQo
d2ViVmlldygpLCBhbGVydEhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OworICAgIEVYUEVDVF9FUShhbGVydENhbGxiYWNrRGF0YS5jYWxsZWQsIHRydWUpOworCisgICAg
ZXdrVmlld0NsYXNzKCktPnJ1bl9qYXZhc2NyaXB0X2FsZXJ0ID0gMDsKKworICAgIGFsZXJ0Q2Fs
bGJhY2tEYXRhLmNhbGxlZCA9IGZhbHNlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQo
d2ViVmlldygpLCBhbGVydEhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OworICAgIEVYUEVDVF9FUShhbGVydENhbGxiYWNrRGF0YS5jYWxsZWQsIGZhbHNlKTsKK30KKwor
c3RhdGljIEVpbmFfQm9vbCBjaGVja0NvbmZpcm0oRXdrX1ZpZXdfU21hcnRfRGF0YSosIGNvbnN0
IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgY29uZmlybUNhbGxiYWNrRGF0YS5jYWxsZWQgPSB0cnVl
OworICAgIEVYUEVDVF9TVFJFUShtZXNzYWdlLCBjb25maXJtQ2FsbGJhY2tEYXRhLmV4cGVjdGVk
TWVzc2FnZSk7CisgICAgcmV0dXJuIGNvbmZpcm1DYWxsYmFja0RhdGEucmVzdWx0OworfQorCitU
RVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybSkK
K3sKKyAgICBld2tWaWV3Q2xhc3MoKS0+cnVuX2phdmFzY3JpcHRfY29uZmlybSA9IGNoZWNrQ29u
ZmlybTsKKworICAgIGNvbnN0IGNoYXIqIGNvbmZpcm1IVE1MID0gIjxodG1sPjxoZWFkPjx0aXRs
ZT5EZWZhdWx0VGl0bGU8L3RpdGxlPjwvaGVhZD48Ym9keSBvbmxvYWQ9XCJkb2N1bWVudC50aXRs
ZSA9IGNvbmZpcm0oJyIgSkFWQVNDUklQVF9TVFJJTkdfQ09ORklSTV9NRVNTQUdFICInKTtcIj48
L2JvZHk+PC9odG1sPiI7CisgICAgY29uZmlybUNhbGxiYWNrRGF0YS5leHBlY3RlZE1lc3NhZ2Ug
PSBKQVZBU0NSSVBUX1NUUklOR19DT05GSVJNX01FU1NBR0U7CisgICAgY29uZmlybUNhbGxiYWNr
RGF0YS5yZXN1bHQgPSB0cnVlOworICAgIGNvbmZpcm1DYWxsYmFja0RhdGEuY2FsbGVkID0gZmFs
c2U7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGNvbmZpcm1IVE1M
LCAwLCAwKTsKKyAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhKQVZBU0NSSVBUX1NUUklOR19U
UlVFKTsKKyAgICBFWFBFQ1RfU1RSRVEoZXdrX3ZpZXdfdGl0bGVfZ2V0KHdlYlZpZXcoKSksIEpB
VkFTQ1JJUFRfU1RSSU5HX1RSVUUpOworICAgIEVYUEVDVF9FUShjb25maXJtQ2FsbGJhY2tEYXRh
LmNhbGxlZCwgdHJ1ZSk7CisKKyAgICBjb25maXJtQ2FsbGJhY2tEYXRhLmV4cGVjdGVkTWVzc2Fn
ZSA9IEpBVkFTQ1JJUFRfU1RSSU5HX0NPTkZJUk1fTUVTU0FHRTsKKyAgICBjb25maXJtQ2FsbGJh
Y2tEYXRhLnJlc3VsdCA9IGZhbHNlOworICAgIGNvbmZpcm1DYWxsYmFja0RhdGEuY2FsbGVkID0g
ZmFsc2U7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGNvbmZpcm1I
VE1MLCAwLCAwKTsKKyAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhKQVZBU0NSSVBUX1NUUklO
R19GQUxTRSk7CisgICAgRVhQRUNUX1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkp
LCBKQVZBU0NSSVBUX1NUUklOR19GQUxTRSk7CisgICAgRVhQRUNUX0VRKGNvbmZpcm1DYWxsYmFj
a0RhdGEuY2FsbGVkLCB0cnVlKTsKKworICAgIGNvbmZpcm1IVE1MID0gIjxodG1sPjxoZWFkPjx0
aXRsZT5EZWZhdWx0VGl0bGU8L3RpdGxlPjwvaGVhZD48Ym9keSBvbmxvYWQ9XCJkb2N1bWVudC50
aXRsZSA9IGNvbmZpcm0oJycpO1wiPjwvYm9keT48L2h0bWw+IjsKKyAgICBjb25maXJtQ2FsbGJh
Y2tEYXRhLmV4cGVjdGVkTWVzc2FnZSA9IEpBVkFTQ1JJUFRfU1RSSU5HX0VNUFRZOworICAgIGNv
bmZpcm1DYWxsYmFja0RhdGEucmVzdWx0ID0gdHJ1ZTsKKyAgICBjb25maXJtQ2FsbGJhY2tEYXRh
LmNhbGxlZCA9IGZhbHNlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygp
LCBjb25maXJtSFRNTCwgMCwgMCk7CisgICAgd2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oSkFWQVND
UklQVF9TVFJJTkdfVFJVRSk7CisgICAgRVhQRUNUX1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3
ZWJWaWV3KCkpLCBKQVZBU0NSSVBUX1NUUklOR19UUlVFKTsKKyAgICBFWFBFQ1RfRVEoY29uZmly
bUNhbGxiYWNrRGF0YS5jYWxsZWQsIHRydWUpOworCisgICAgY29uZmlybUhUTUwgPSAiPGh0bWw+
PGhlYWQ+PHRpdGxlPkRlZmF1bHRUaXRsZTwvdGl0bGU+PC9oZWFkPjxib2R5IG9ubG9hZD1cImRv
Y3VtZW50LnRpdGxlID0gY29uZmlybShudWxsKTtcIj48L2JvZHk+PC9odG1sPiI7CisgICAgY29u
ZmlybUNhbGxiYWNrRGF0YS5leHBlY3RlZE1lc3NhZ2UgPSBKQVZBU0NSSVBUX1NUUklOR19OVUxM
OworICAgIGNvbmZpcm1DYWxsYmFja0RhdGEucmVzdWx0ID0gdHJ1ZTsKKyAgICBjb25maXJtQ2Fs
bGJhY2tEYXRhLmNhbGxlZCA9IGZhbHNlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQo
d2ViVmlldygpLCBjb25maXJtSFRNTCwgMCwgMCk7CisgICAgd2FpdFVudGlsVGl0bGVDaGFuZ2Vk
VG8oSkFWQVNDUklQVF9TVFJJTkdfVFJVRSk7CisgICAgRVhQRUNUX1NUUkVRKGV3a192aWV3X3Rp
dGxlX2dldCh3ZWJWaWV3KCkpLCBKQVZBU0NSSVBUX1NUUklOR19UUlVFKTsKKyAgICBFWFBFQ1Rf
RVEoY29uZmlybUNhbGxiYWNrRGF0YS5jYWxsZWQsIHRydWUpOworCisgICAgY29uZmlybUhUTUwg
PSAiPGh0bWw+PGhlYWQ+PHRpdGxlPkRlZmF1bHRUaXRsZTwvdGl0bGU+PC9oZWFkPjxib2R5IG9u
bG9hZD1cImRvY3VtZW50LnRpdGxlID0gY29uZmlybSgpO1wiPjwvYm9keT48L2h0bWw+IjsKKyAg
ICBjb25maXJtQ2FsbGJhY2tEYXRhLmV4cGVjdGVkTWVzc2FnZSA9IEpBVkFTQ1JJUFRfU1RSSU5H
X1VOREVGSU5FRDsKKyAgICBjb25maXJtQ2FsbGJhY2tEYXRhLnJlc3VsdCA9IHRydWU7CisgICAg
Y29uZmlybUNhbGxiYWNrRGF0YS5jYWxsZWQgPSBmYWxzZTsKKyAgICBld2tfdmlld19odG1sX3N0
cmluZ19sb2FkKHdlYlZpZXcoKSwgY29uZmlybUhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbFRp
dGxlQ2hhbmdlZFRvKEpBVkFTQ1JJUFRfU1RSSU5HX1RSVUUpOworICAgIEVYUEVDVF9TVFJFUShl
d2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSwgSkFWQVNDUklQVF9TVFJJTkdfVFJVRSk7Cisg
ICAgRVhQRUNUX0VRKGNvbmZpcm1DYWxsYmFja0RhdGEuY2FsbGVkLCB0cnVlKTsKKworICAgIGV3
a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9jb25maXJtID0gMDsKKworICAgIGNvbmZpcm1D
YWxsYmFja0RhdGEuY2FsbGVkID0gZmFsc2U7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9h
ZCh3ZWJWaWV3KCksIGNvbmZpcm1IVE1MLCAwLCAwKTsKKyAgICB3YWl0VW50aWxUaXRsZUNoYW5n
ZWRUbyhKQVZBU0NSSVBUX1NUUklOR19GQUxTRSk7CisgICAgRVhQRUNUX1NUUkVRKGV3a192aWV3
X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCBKQVZBU0NSSVBUX1NUUklOR19GQUxTRSk7CisgICAgRVhQ
RUNUX0VRKGNvbmZpcm1DYWxsYmFja0RhdGEuY2FsbGVkLCBmYWxzZSk7Cit9CisKK3N0YXRpYyBj
b25zdCBjaGFyKiBjaGVja1Byb21wdChFd2tfVmlld19TbWFydF9EYXRhKiwgY29uc3QgY2hhciog
bWVzc2FnZSwgY29uc3QgY2hhciogZGVmYXVsdFZhbHVlKQoreworICAgIHByb21wdENhbGxiYWNr
RGF0YS5jYWxsZWQgPSB0cnVlOworICAgIEVYUEVDVF9TVFJFUShtZXNzYWdlLCBwcm9tcHRDYWxs
YmFja0RhdGEuZXhwZWN0ZWRNZXNzYWdlKTsKKyAgICBFWFBFQ1RfU1RSRVEoZGVmYXVsdFZhbHVl
LCBwcm9tcHRDYWxsYmFja0RhdGEuZXhwZWN0ZWREZWZhdWx0VmFsdWUpOworCisgICAgaWYgKCFw
cm9tcHRDYWxsYmFja0RhdGEucmVzdWx0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVy
biBlaW5hX3N0cmluZ3NoYXJlX2FkZChwcm9tcHRDYWxsYmFja0RhdGEucmVzdWx0KTsKK30KKwor
VEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdCkK
K3sKKyAgICBld2tWaWV3Q2xhc3MoKS0+cnVuX2phdmFzY3JpcHRfcHJvbXB0ID0gY2hlY2tQcm9t
cHQ7CisKKyAgICBjb25zdCBjaGFyKiBwcm9tcHRIVE1MID0gIjxodG1sPjxoZWFkPjx0aXRsZT5E
ZWZhdWx0VGl0bGU8L3RpdGxlPjwvaGVhZD48Ym9keSBvbmxvYWQ9XCJkb2N1bWVudC50aXRsZSA9
IHByb21wdCgnIiBKQVZBU0NSSVBUX1NUUklOR19QUk9NUFRfTUVTU0FHRSAiJywgJycpO1wiPjwv
Ym9keT48L2h0bWw+IjsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEuZXhwZWN0ZWRNZXNzYWdlID0g
SkFWQVNDUklQVF9TVFJJTkdfUFJPTVBUX01FU1NBR0U7CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRh
LmV4cGVjdGVkRGVmYXVsdFZhbHVlID0gSkFWQVNDUklQVF9TVFJJTkdfRU1QVFk7CisgICAgcHJv
bXB0Q2FsbGJhY2tEYXRhLnJlc3VsdCA9IEpBVkFTQ1JJUFRfU1RSSU5HX1JFU1VMVF9TVFJJTkc7
CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLmNhbGxlZCA9IGZhbHNlOworICAgIGV3a192aWV3X2h0
bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBwcm9tcHRIVE1MLCAwLCAwKTsKKyAgICB3YWl0VW50
aWxUaXRsZUNoYW5nZWRUbyhKQVZBU0NSSVBUX1NUUklOR19SRVNVTFRfU1RSSU5HKTsKKyAgICBF
WFBFQ1RfU1RSRVEoZXdrX3ZpZXdfdGl0bGVfZ2V0KHdlYlZpZXcoKSksIEpBVkFTQ1JJUFRfU1RS
SU5HX1JFU1VMVF9TVFJJTkcpOworICAgIEVYUEVDVF9FUShwcm9tcHRDYWxsYmFja0RhdGEuY2Fs
bGVkLCB0cnVlKTsKKworICAgIHByb21wdEhUTUwgPSAiPGh0bWw+PGhlYWQ+PHRpdGxlPkRlZmF1
bHRUaXRsZTwvdGl0bGU+PC9oZWFkPjxib2R5IG9ubG9hZD1cImRvY3VtZW50LnRpdGxlID0gcHJv
bXB0KCciIEpBVkFTQ1JJUFRfU1RSSU5HX1BST01QVF9NRVNTQUdFICInKTtcIj48L2JvZHk+PC9o
dG1sPiI7CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLmV4cGVjdGVkTWVzc2FnZSA9IEpBVkFTQ1JJ
UFRfU1RSSU5HX1BST01QVF9NRVNTQUdFOworICAgIHByb21wdENhbGxiYWNrRGF0YS5leHBlY3Rl
ZERlZmF1bHRWYWx1ZSA9IEpBVkFTQ1JJUFRfU1RSSU5HX0VNUFRZOworICAgIHByb21wdENhbGxi
YWNrRGF0YS5yZXN1bHQgPSBKQVZBU0NSSVBUX1NUUklOR19SRVNVTFRfU1RSSU5HOworICAgIHBy
b21wdENhbGxiYWNrRGF0YS5jYWxsZWQgPSBmYWxzZTsKKyAgICBld2tfdmlld19odG1sX3N0cmlu
Z19sb2FkKHdlYlZpZXcoKSwgcHJvbXB0SFRNTCwgMCwgMCk7CisgICAgd2FpdFVudGlsVGl0bGVD
aGFuZ2VkVG8oSkFWQVNDUklQVF9TVFJJTkdfUkVTVUxUX1NUUklORyk7CisgICAgRVhQRUNUX1NU
UkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCBKQVZBU0NSSVBUX1NUUklOR19SRVNV
TFRfU1RSSU5HKTsKKyAgICBFWFBFQ1RfRVEocHJvbXB0Q2FsbGJhY2tEYXRhLmNhbGxlZCwgdHJ1
ZSk7CisKKyAgICBwcm9tcHRIVE1MID0gIjxodG1sPjxoZWFkPjx0aXRsZT5EZWZhdWx0VGl0bGU8
L3RpdGxlPjwvaGVhZD48Ym9keSBvbmxvYWQ9XCJkb2N1bWVudC50aXRsZSA9IHByb21wdCgnJyk7
XCI+PC9ib2R5PjwvaHRtbD4iOworICAgIHByb21wdENhbGxiYWNrRGF0YS5leHBlY3RlZE1lc3Nh
Z2UgPSBKQVZBU0NSSVBUX1NUUklOR19FTVBUWTsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEuZXhw
ZWN0ZWREZWZhdWx0VmFsdWUgPSBKQVZBU0NSSVBUX1NUUklOR19FTVBUWTsKKyAgICBwcm9tcHRD
YWxsYmFja0RhdGEucmVzdWx0ID0gSkFWQVNDUklQVF9TVFJJTkdfUkVTVUxUX1NUUklORzsKKyAg
ICBwcm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkID0gZmFsc2U7CisgICAgZXdrX3ZpZXdfaHRtbF9z
dHJpbmdfbG9hZCh3ZWJWaWV3KCksIHByb21wdEhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbFRp
dGxlQ2hhbmdlZFRvKEpBVkFTQ1JJUFRfU1RSSU5HX1JFU1VMVF9TVFJJTkcpOworICAgIEVYUEVD
VF9TVFJFUShld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSwgSkFWQVNDUklQVF9TVFJJTkdf
UkVTVUxUX1NUUklORyk7CisgICAgRVhQRUNUX0VRKHByb21wdENhbGxiYWNrRGF0YS5jYWxsZWQs
IHRydWUpOworCisgICAgcHJvbXB0SFRNTCA9ICI8aHRtbD48aGVhZD48dGl0bGU+RGVmYXVsdFRp
dGxlPC90aXRsZT48L2hlYWQ+PGJvZHkgb25sb2FkPVwiZG9jdW1lbnQudGl0bGUgPSBwcm9tcHQo
KTtcIj48L2JvZHk+PC9odG1sPiI7CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLmV4cGVjdGVkTWVz
c2FnZSA9IEpBVkFTQ1JJUFRfU1RSSU5HX1VOREVGSU5FRDsKKyAgICBwcm9tcHRDYWxsYmFja0Rh
dGEuZXhwZWN0ZWREZWZhdWx0VmFsdWUgPSBKQVZBU0NSSVBUX1NUUklOR19FTVBUWTsKKyAgICBw
cm9tcHRDYWxsYmFja0RhdGEucmVzdWx0ID0gSkFWQVNDUklQVF9TVFJJTkdfUkVTVUxUX1NUUklO
RzsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkID0gZmFsc2U7CisgICAgZXdrX3ZpZXdf
aHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHByb21wdEhUTUwsIDAsIDApOworICAgIHdhaXRV
bnRpbFRpdGxlQ2hhbmdlZFRvKEpBVkFTQ1JJUFRfU1RSSU5HX1JFU1VMVF9TVFJJTkcpOworICAg
IEVYUEVDVF9TVFJFUShld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSwgSkFWQVNDUklQVF9T
VFJJTkdfUkVTVUxUX1NUUklORyk7CisgICAgRVhQRUNUX0VRKHByb21wdENhbGxiYWNrRGF0YS5j
YWxsZWQsIHRydWUpOworCisgICAgcHJvbXB0SFRNTCA9ICI8aHRtbD48aGVhZD48dGl0bGU+RGVm
YXVsdFRpdGxlPC90aXRsZT48L2hlYWQ+PGJvZHkgb25sb2FkPVwidmFyIHByb21wdFJlc3VsdCA9
IHByb21wdCgnIiBKQVZBU0NSSVBUX1NUUklOR19QUk9NUFRfTUVTU0FHRSAiJywgJyIgSkFWQVND
UklQVF9TVFJJTkdfUFJPTVBUX0RFRkFVTFRfVkFMVUUgIicpOyBpZiAocHJvbXB0UmVzdWx0ID09
IG51bGwpIGRvY3VtZW50LnRpdGxlPSciIEpBVkFTQ1JJUFRfU1RSSU5HX05VTEwgIic7IGVsc2Ug
ZG9jdW1lbnQudGl0bGU9cHJvbXB0UmVzdWx0O1wiPjwvYm9keT48L2h0bWw+IjsKKyAgICBwcm9t
cHRDYWxsYmFja0RhdGEuZXhwZWN0ZWRNZXNzYWdlID0gSkFWQVNDUklQVF9TVFJJTkdfUFJPTVBU
X01FU1NBR0U7CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLmV4cGVjdGVkRGVmYXVsdFZhbHVlID0g
SkFWQVNDUklQVF9TVFJJTkdfUFJPTVBUX0RFRkFVTFRfVkFMVUU7CisgICAgcHJvbXB0Q2FsbGJh
Y2tEYXRhLnJlc3VsdCA9IEpBVkFTQ1JJUFRfU1RSSU5HX1JFU1VMVF9TVFJJTkc7CisgICAgcHJv
bXB0Q2FsbGJhY2tEYXRhLmNhbGxlZCA9IGZhbHNlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5n
X2xvYWQod2ViVmlldygpLCBwcm9tcHRIVE1MLCAwLCAwKTsKKyAgICB3YWl0VW50aWxUaXRsZUNo
YW5nZWRUbyhKQVZBU0NSSVBUX1NUUklOR19SRVNVTFRfU1RSSU5HKTsKKyAgICBFWFBFQ1RfU1RS
RVEoZXdrX3ZpZXdfdGl0bGVfZ2V0KHdlYlZpZXcoKSksIEpBVkFTQ1JJUFRfU1RSSU5HX1JFU1VM
VF9TVFJJTkcpOworICAgIEVYUEVDVF9FUShwcm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkLCB0cnVl
KTsKKworICAgIHByb21wdENhbGxiYWNrRGF0YS5leHBlY3RlZE1lc3NhZ2UgPSBKQVZBU0NSSVBU
X1NUUklOR19QUk9NUFRfTUVTU0FHRTsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEuZXhwZWN0ZWRE
ZWZhdWx0VmFsdWUgPSBKQVZBU0NSSVBUX1NUUklOR19QUk9NUFRfREVGQVVMVF9WQUxVRTsKKyAg
ICBwcm9tcHRDYWxsYmFja0RhdGEucmVzdWx0ID0gSkFWQVNDUklQVF9TVFJJTkdfRU1QVFk7Cisg
ICAgcHJvbXB0Q2FsbGJhY2tEYXRhLmNhbGxlZCA9IGZhbHNlOworICAgIGV3a192aWV3X2h0bWxf
c3RyaW5nX2xvYWQod2ViVmlldygpLCBwcm9tcHRIVE1MLCAwLCAwKTsKKyAgICB3YWl0VW50aWxU
aXRsZUNoYW5nZWRUbyhKQVZBU0NSSVBUX1NUUklOR19FTVBUWSk7CisgICAgRVhQRUNUX1NUUkVR
KGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCBKQVZBU0NSSVBUX1NUUklOR19FTVBUWSk7
CisgICAgRVhQRUNUX0VRKHByb21wdENhbGxiYWNrRGF0YS5jYWxsZWQsIHRydWUpOworCisgICAg
cHJvbXB0Q2FsbGJhY2tEYXRhLmV4cGVjdGVkTWVzc2FnZSA9IEpBVkFTQ1JJUFRfU1RSSU5HX1BS
T01QVF9NRVNTQUdFOworICAgIHByb21wdENhbGxiYWNrRGF0YS5leHBlY3RlZERlZmF1bHRWYWx1
ZSA9IEpBVkFTQ1JJUFRfU1RSSU5HX1BST01QVF9ERUZBVUxUX1ZBTFVFOworICAgIHByb21wdENh
bGxiYWNrRGF0YS5yZXN1bHQgPSAwOworICAgIHByb21wdENhbGxiYWNrRGF0YS5jYWxsZWQgPSBm
YWxzZTsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgcHJvbXB0SFRN
TCwgMCwgMCk7CisgICAgd2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oSkFWQVNDUklQVF9TVFJJTkdf
TlVMTCk7CisgICAgRVhQRUNUX1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCBK
QVZBU0NSSVBUX1NUUklOR19OVUxMKTsKKyAgICBFWFBFQ1RfRVEocHJvbXB0Q2FsbGJhY2tEYXRh
LmNhbGxlZCwgdHJ1ZSk7CisKKyAgICBld2tWaWV3Q2xhc3MoKS0+cnVuX2phdmFzY3JpcHRfcHJv
bXB0ID0gMDsKKworICAgIHByb21wdENhbGxiYWNrRGF0YS5jYWxsZWQgPSBmYWxzZTsKKyAgICBl
d2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgcHJvbXB0SFRNTCwgMCwgMCk7Cisg
ICAgd2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oSkFWQVNDUklQVF9TVFJJTkdfTlVMTCk7CisgICAg
RVhQRUNUX1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCBKQVZBU0NSSVBUX1NU
UklOR19OVUxMKTsKKyAgICBFWFBFQ1RfRVEocHJvbXB0Q2FsbGJhY2tEYXRhLmNhbGxlZCwgZmFs
c2UpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164400</attachid>
            <date>2012-09-17 08:35:42 -0700</date>
            <delta_ts>2012-09-17 19:50:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95672-20120918003506.patch</filename>
            <type>text/plain</type>
            <size>18053</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGJiNmI4OWViNGIxMzI3
MDA4MDFmNTc3M2E4NzA3NDAwNjlkMzg5My4uZjlhYWY2N2JkYWIxZjJhMjQ0NzMwNzcxYmE4ODVl
NGZkNTNhMTQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTEyICBCeXVu
Z3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBqYXZhc2NyaXB0IHBvcHVwIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1NjcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHNtYXJ0IGNsYXNzIG1lbWJlciBmdW5jdGlvbiBmb3IgamF2YXNj
cmlwdCBhbGVydCgpLCBjb25maXJtKCkgYW5kIHByb21wdCgpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdfcnVuX2phdmFzY3Jp
cHRfYWxlcnQpOgorICAgICAgICAoZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybSk6Cisg
ICAgICAgIChld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Vp
X2NsaWVudC5jcHA6CisgICAgICAgIChydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAocnVu
SmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAocnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAg
ICAgIChld2tfdmlld191aV9jbGllbnRfYXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHA6CisgICAgICAgIEFkZGVkIHVuaXQgdGVzdCBm
b3IgamF2YXNjcmlwdCBwb3B1cCBzbWFydCBjbGFzcyBtZW1iZXIgZnVuY3Rpb24uCisgICAgICAg
IChjaGVja0FsZXJ0KToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgIChjaGVja0NvbmZpcm0p
OgorICAgICAgICAoY2hlY2tQcm9tcHQpOgorCiAyMDEyLTA5LTExICBCeXVuZ3dvbyBMZWUgIDxi
dzgwLmxlZUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIFdLRWluYVNoYXJlZFN0
cmluZyBuZWVkcyBhIGZ1bmN0aW9uIHRvIGFkb3B0IGVpbmEgc3RyaW5nc2hhcmUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggOTk3MWIxNjM0
MDY4M2FlODc5MmQ4ODA5NmE3NDRkYTMzMDVhNDEyMC4uMDE3ZTgxY2NiNDhkYTlkMzM4YmI0MmQ4
ZjYzMzdkYTRmMzAyMDBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcApAQCAtMTYyNCwzICsxNjI0LDM2IEBAIEVpbmFfQm9vbCBld2tfdmlld19t
b3VzZV9ldmVudHNfZW5hYmxlZF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKICAg
ICByZXR1cm4gcHJpdi0+YXJlTW91c2VFdmVudHNFbmFibGVkOwogfQorCit2b2lkIGV3a192aWV3
X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXS0VpbmFT
aGFyZWRTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0
RGF0YS0+YXBpKTsKKworICAgIGlmICghc21hcnREYXRhLT5hcGktPnJ1bl9qYXZhc2NyaXB0X2Fs
ZXJ0KQorICAgICAgICByZXR1cm47CisKKyAgICBzbWFydERhdGEtPmFwaS0+cnVuX2phdmFzY3Jp
cHRfYWxlcnQoc21hcnREYXRhLCBtZXNzYWdlKTsKK30KKworYm9vbCBld2tfdmlld19ydW5famF2
YXNjcmlwdF9jb25maXJtKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXS0VpbmFTaGFyZWRT
dHJpbmcmIG1lc3NhZ2UpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c21hcnREYXRhLT5hcGksIGZhbHNlKTsKKworICAgIGlmICghc21hcnREYXRhLT5hcGktPnJ1bl9q
YXZhc2NyaXB0X2NvbmZpcm0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBz
bWFydERhdGEtPmFwaS0+cnVuX2phdmFzY3JpcHRfY29uZmlybShzbWFydERhdGEsIG1lc3NhZ2Up
OworfQorCitXS0VpbmFTaGFyZWRTdHJpbmcgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgZGVmYXVsdFZhbHVlKQoreworICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBXS0VpbmFTaGFyZWRTdHJpbmco
KSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBX
S0VpbmFTaGFyZWRTdHJpbmcoKSk7CisKKyAgICBpZiAoIXNtYXJ0RGF0YS0+YXBpLT5ydW5famF2
YXNjcmlwdF9wcm9tcHQpCisgICAgICAgIHJldHVybiBXS0VpbmFTaGFyZWRTdHJpbmcoKTsKKwor
ICAgIHJldHVybiBXS0VpbmFTaGFyZWRTdHJpbmc6OmFkb3B0KHNtYXJ0RGF0YS0+YXBpLT5ydW5f
amF2YXNjcmlwdF9wcm9tcHQoc21hcnREYXRhLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUpKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGIwNDBm
ZGYzMDg1ZTI3ZWY4MDg3N2E5YzY4NDM4NTY0ZTU4NTI4NTIuLjcxMjJmODI4MDZkZTQxM2VjYTBi
MzIwYTBjYmUyZGVhNmM1NWU5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaApAQCAtMTE0LDEzICsxMTQsMTkgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFy
dF9DbGFzcyB7CiAgICAgRWluYV9Cb29sICgqbW91c2VfbW92ZSkoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSAqZXYpOwogICAgIEVpbmFfQm9vbCAo
KmtleV9kb3duKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlf
RG93biAqZXYpOwogICAgIEVpbmFfQm9vbCAoKmtleV91cCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwICpldik7CisKKyAgICAvLyBqYXZhc2NyaXB0IHBv
cHVwOgorICAgIC8vICAgLSBBbGwgc3RyaW5ncyBzaG91bGQgYmUgZ3VhcmFudGVlZCB0byBiZSBz
dHJpbmdzaGFyZWQuCisgICAgdm9pZCAoKnJ1bl9qYXZhc2NyaXB0X2FsZXJ0KShFd2tfVmlld19T
bWFydF9EYXRhICpzZCwgY29uc3QgY2hhciAqbWVzc2FnZSk7CisgICAgRWluYV9Cb29sICgqcnVu
X2phdmFzY3JpcHRfY29uZmlybSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IGNoYXIg
Km1lc3NhZ2UpOworICAgIGNvbnN0IGNoYXIgKigqcnVuX2phdmFzY3JpcHRfcHJvbXB0KShFd2tf
Vmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgY2hhciAqbWVzc2FnZSwgY29uc3QgY2hhciAqZGVm
YXVsdF92YWx1ZSk7IC8qKjwgcmV0dXJuIHN0cmluZyBzaG91bGQgYmUgc3RyaW5nc2hhcmVkLiAq
LwogfTsKIAogLyoqCiAgKiBUaGUgdmVyc2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVy
c2lvbiBmaWVsZAogICogaW4gdGhlIEBhIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4K
ICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDNVTAorI2RlZmluZSBF
V0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDRVTAogCiAvKioKICAqIEluaXRpYWxpemVyIGZv
ciB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCkBAIC0xMzIsNyArMTM4LDcg
QEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJU
X0NMQVNTX0lOSVRfVkVSU0lPTgogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05B
TUVfVkVSU0lPTgogICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRf
Y2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJ
T04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CisjZGVmaW5lIEVXS19WSUVX
X1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVX
S19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDB9CiAKIC8qKgogICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3
a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCBmY2Q2NWVlMGY2MTcyZmIz
OTQxNjgwMDgyZWZiOTI2ZDg4ZDc4NDhjLi5mOGE3MDdlOGJlOWFlYjg2ZTYyYjE0OGQ4MWIyNzQy
NzhmODU0YTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJXZWJQYWdl
UHJveHkuaCIKICNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8V0tFaW5hU2hhcmVkU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViS2l0
Mi9XS0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xMDIsNCArMTAzLDggQEAg
Ym9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a1ZpZXcpOwogCiB2b2lkIGV3a192aWV3X3BvcHVwX21lbnVfcmVxdWVzdChF
dmFzX09iamVjdCogZXdrVmlldywgV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBN
ZW51LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91
YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiYg
aXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CiAKK3ZvaWQgZXdrX3ZpZXdfcnVuX2phdmFz
Y3JpcHRfYWxlcnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdLRWluYVNoYXJlZFN0cmlu
ZyYgbWVzc2FnZSk7Citib29sIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgbWVzc2FnZSk7CitXS0Vp
bmFTaGFyZWRTdHJpbmcgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdLRWlu
YVNoYXJlZFN0cmluZyYgZGVmYXVsdFZhbHVlKTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZh
dGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXdfdWlfY2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3X3VpX2NsaWVudC5jcHAKaW5kZXggMThlZGUwOGExNDcyN2QzNmQwMmMxZDVlOGRhMTYxNmI2
MDI3ODczNi4uOGVkZTUwZGQ5ZTg3NGZmNWI2MTBjNTY5Yzc4Zjk0Nzg5YjYzMTM3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9j
bGllbnQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAorI2lu
Y2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a192aWV3X3VpX2NsaWVudF9wcml2YXRlLmgiCiAKQEAgLTQzLDYgKzQ0LDIyIEBAIHN0
YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYsIFdLVVJMUmVxdWVzdFJlZiwg
V0tEaWN0aW9uYXJ5UmVmLCBXS0V2CiAgICAgIHJldHVybiBld2tfdmlld19wYWdlX2NyZWF0ZSh0
b0V3a1ZpZXcoY2xpZW50SW5mbykpOwogfQogCitzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0QWxl
cnQoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit7CisgICAgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfYWxlcnQodG9F
d2tWaWV3KGNsaWVudEluZm8pLCBXS0VpbmFTaGFyZWRTdHJpbmcoYWxlcnRUZXh0KSk7Cit9CisK
K3N0YXRpYyBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYg
bWVzc2FnZSwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1
cm4gZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybSh0b0V3a1ZpZXcoY2xpZW50SW5mbyks
IFdLRWluYVNoYXJlZFN0cmluZyhtZXNzYWdlKSk7Cit9CisKK3N0YXRpYyBXS1N0cmluZ1JlZiBy
dW5KYXZhU2NyaXB0UHJvbXB0KFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tTdHJp
bmdSZWYgZGVmYXVsdFZhbHVlLCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQor
eworICAgIFdLRWluYVNoYXJlZFN0cmluZyB2YWx1ZSA9IGV3a192aWV3X3J1bl9qYXZhc2NyaXB0
X3Byb21wdCh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIFdLRWluYVNoYXJlZFN0cmluZyhtZXNzYWdl
KSwgV0tFaW5hU2hhcmVkU3RyaW5nKGRlZmF1bHRWYWx1ZSkpOworICAgIHJldHVybiB2YWx1ZSA/
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHZhbHVlKSA6IDA7Cit9CisKIHZvaWQgZXdr
X3ZpZXdfdWlfY2xpZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3
a1ZpZXcpCiB7CiAgICAgV0tQYWdlVUlDbGllbnQgdWlDbGllbnQ7CkBAIC01MSw1ICs2OCw4IEBA
IHZvaWQgZXdrX3ZpZXdfdWlfY2xpZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19P
YmplY3QqIGV3a1ZpZXcpCiAgICAgdWlDbGllbnQuY2xpZW50SW5mbyA9IGV3a1ZpZXc7CiAgICAg
dWlDbGllbnQuY2xvc2UgPSBjbG9zZVBhZ2U7CiAgICAgdWlDbGllbnQuY3JlYXRlTmV3UGFnZSA9
IGNyZWF0ZU5ld1BhZ2U7CisgICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0ID0gcnVuSmF2
YVNjcmlwdEFsZXJ0OworICAgIHVpQ2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtID0gcnVuSmF2
YVNjcmlwdENvbmZpcm07CisgICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdFByb21wdCA9IHJ1bkph
dmFTY3JpcHRQcm9tcHQ7CiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KHBhZ2VSZWYsICZ1aUNs
aWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKaW5kZXggNmU5MjhlZGQ5MDNlYWMwMGJlZmRjZjZi
MTMyMTA2NDZmMTA4MGIxYi4uYTFjMDc3NjVlMGE0ZjQyNzZhNzU4NzE0YWJlNGNkZmUzYzY0NTBl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVz
dF9ld2syX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL3Rlc3RfZXdrMl92aWV3LmNwcApAQCAtMzYwLDMgKzM2MCwyMzEgQEAgVEVTVF9GKEVXSzJV
bml0VGVzdEJhc2UsIGV3a192aWV3X2Z1bGxfc2NyZWVuX2V4aXQpCiAgICAgQVNTRVJUX1RSVUUo
ZnVsbFNjcmVlbkNhbGxiYWNrQ2FsbGVkKTsKICAgICBjaGVja0Z1bGxTY3JlZW5Qcm9wZXJ0eSh3
ZWJWaWV3KCksIGZhbHNlKTsKIH0KKworc3RhdGljIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciog
ZXhwZWN0ZWRNZXNzYWdlOworICAgIGJvb2wgY2FsbGVkOworfSBhbGVydENhbGxiYWNrRGF0YTsK
Kworc3RhdGljIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWRNZXNzYWdlOworICAg
IGJvb2wgcmVzdWx0OworICAgIGJvb2wgY2FsbGVkOworfSBjb25maXJtQ2FsbGJhY2tEYXRhOwor
CitzdGF0aWMgc3RydWN0IHsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZE1lc3NhZ2U7CisgICAg
Y29uc3QgY2hhciogZXhwZWN0ZWREZWZhdWx0VmFsdWU7CisgICAgY29uc3QgY2hhciogcmVzdWx0
OworICAgIGJvb2wgY2FsbGVkOworfSBwcm9tcHRDYWxsYmFja0RhdGE7CisKK3N0YXRpYyB2b2lk
IGNoZWNrQWxlcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSosIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7
CisgICAgYWxlcnRDYWxsYmFja0RhdGEuY2FsbGVkID0gdHJ1ZTsKKyAgICBFWFBFQ1RfU1RSRVEo
bWVzc2FnZSwgYWxlcnRDYWxsYmFja0RhdGEuZXhwZWN0ZWRNZXNzYWdlKTsKK30KKworVEVTVF9G
KEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KQoreworICAg
IGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9hbGVydCA9IGNoZWNrQWxlcnQ7CisKKyAg
ICBjb25zdCBjaGFyKiBhbGVydEhUTUwgPSAiPCFkb2N0eXBlIGh0bWw+PGJvZHkgb25sb2FkPVwi
YWxlcnQoJ0FsZXJ0IG1lc3NhZ2UnKTtcIj48L2JvZHk+IjsKKyAgICBhbGVydENhbGxiYWNrRGF0
YS5leHBlY3RlZE1lc3NhZ2UgPSAiQWxlcnQgbWVzc2FnZSI7CisgICAgYWxlcnRDYWxsYmFja0Rh
dGEuY2FsbGVkID0gZmFsc2U7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3
KCksIGFsZXJ0SFRNTCwgMCwgMCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAg
RVhQRUNUX0VRKGFsZXJ0Q2FsbGJhY2tEYXRhLmNhbGxlZCwgdHJ1ZSk7CisKKyAgICBhbGVydEhU
TUwgPSAiPCFkb2N0eXBlIGh0bWw+PGJvZHkgb25sb2FkPVwiYWxlcnQoJycpO1wiPjwvYm9keT4i
OworICAgIGFsZXJ0Q2FsbGJhY2tEYXRhLmV4cGVjdGVkTWVzc2FnZSA9ICIiOworICAgIGFsZXJ0
Q2FsbGJhY2tEYXRhLmNhbGxlZCA9IGZhbHNlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xv
YWQod2ViVmlldygpLCBhbGVydEhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOworICAgIEVYUEVDVF9FUShhbGVydENhbGxiYWNrRGF0YS5jYWxsZWQsIHRydWUpOworCisg
ICAgYWxlcnRIVE1MID0gIjwhZG9jdHlwZSBodG1sPjxib2R5IG9ubG9hZD1cImFsZXJ0KG51bGwp
O1wiPjwvYm9keT4iOworICAgIGFsZXJ0Q2FsbGJhY2tEYXRhLmV4cGVjdGVkTWVzc2FnZSA9ICJu
dWxsIjsKKyAgICBhbGVydENhbGxiYWNrRGF0YS5jYWxsZWQgPSBmYWxzZTsKKyAgICBld2tfdmll
d19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgYWxlcnRIVE1MLCAwLCAwKTsKKyAgICB3YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBFWFBFQ1RfRVEoYWxlcnRDYWxsYmFja0RhdGEuY2Fs
bGVkLCB0cnVlKTsKKworICAgIGFsZXJ0SFRNTCA9ICI8IWRvY3R5cGUgaHRtbD48Ym9keSBvbmxv
YWQ9XCJhbGVydCgpO1wiPjwvYm9keT4iOworICAgIGFsZXJ0Q2FsbGJhY2tEYXRhLmV4cGVjdGVk
TWVzc2FnZSA9ICJ1bmRlZmluZWQiOworICAgIGFsZXJ0Q2FsbGJhY2tEYXRhLmNhbGxlZCA9IGZh
bHNlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBhbGVydEhUTUws
IDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIEVYUEVDVF9FUShhbGVy
dENhbGxiYWNrRGF0YS5jYWxsZWQsIHRydWUpOworCisgICAgZXdrVmlld0NsYXNzKCktPnJ1bl9q
YXZhc2NyaXB0X2FsZXJ0ID0gMDsKKworICAgIGFsZXJ0Q2FsbGJhY2tEYXRhLmNhbGxlZCA9IGZh
bHNlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBhbGVydEhUTUws
IDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIEVYUEVDVF9FUShhbGVy
dENhbGxiYWNrRGF0YS5jYWxsZWQsIGZhbHNlKTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBjaGVj
a0NvbmZpcm0oRXdrX1ZpZXdfU21hcnRfRGF0YSosIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7Cisg
ICAgY29uZmlybUNhbGxiYWNrRGF0YS5jYWxsZWQgPSB0cnVlOworICAgIEVYUEVDVF9TVFJFUSht
ZXNzYWdlLCBjb25maXJtQ2FsbGJhY2tEYXRhLmV4cGVjdGVkTWVzc2FnZSk7CisgICAgcmV0dXJu
IGNvbmZpcm1DYWxsYmFja0RhdGEucmVzdWx0OworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFz
ZSwgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybSkKK3sKKyAgICBld2tWaWV3Q2xhc3Mo
KS0+cnVuX2phdmFzY3JpcHRfY29uZmlybSA9IGNoZWNrQ29uZmlybTsKKworICAgIGNvbnN0IGNo
YXIqIGNvbmZpcm1IVE1MID0gIjwhZG9jdHlwZSBodG1sPjxib2R5IG9ubG9hZD1cImRvY3VtZW50
LnRpdGxlID0gY29uZmlybSgnQ29uZmlybSBtZXNzYWdlJyk7XCI+PC9ib2R5PiI7CisgICAgY29u
ZmlybUNhbGxiYWNrRGF0YS5leHBlY3RlZE1lc3NhZ2UgPSAiQ29uZmlybSBtZXNzYWdlIjsKKyAg
ICBjb25maXJtQ2FsbGJhY2tEYXRhLnJlc3VsdCA9IHRydWU7CisgICAgY29uZmlybUNhbGxiYWNr
RGF0YS5jYWxsZWQgPSBmYWxzZTsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZp
ZXcoKSwgY29uZmlybUhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJ0
cnVlIik7CisgICAgRVhQRUNUX1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCAi
dHJ1ZSIpOworICAgIEVYUEVDVF9FUShjb25maXJtQ2FsbGJhY2tEYXRhLmNhbGxlZCwgdHJ1ZSk7
CisKKyAgICBjb25maXJtQ2FsbGJhY2tEYXRhLmV4cGVjdGVkTWVzc2FnZSA9ICJDb25maXJtIG1l
c3NhZ2UiOworICAgIGNvbmZpcm1DYWxsYmFja0RhdGEucmVzdWx0ID0gZmFsc2U7CisgICAgY29u
ZmlybUNhbGxiYWNrRGF0YS5jYWxsZWQgPSBmYWxzZTsKKyAgICBld2tfdmlld19odG1sX3N0cmlu
Z19sb2FkKHdlYlZpZXcoKSwgY29uZmlybUhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbFRpdGxl
Q2hhbmdlZFRvKCJmYWxzZSIpOworICAgIEVYUEVDVF9TVFJFUShld2tfdmlld190aXRsZV9nZXQo
d2ViVmlldygpKSwgImZhbHNlIik7CisgICAgRVhQRUNUX0VRKGNvbmZpcm1DYWxsYmFja0RhdGEu
Y2FsbGVkLCB0cnVlKTsKKworICAgIGNvbmZpcm1IVE1MID0gIjwhZG9jdHlwZSBodG1sPjxib2R5
IG9ubG9hZD1cImRvY3VtZW50LnRpdGxlID0gY29uZmlybSgnJyk7XCI+PC9ib2R5PiI7CisgICAg
Y29uZmlybUNhbGxiYWNrRGF0YS5leHBlY3RlZE1lc3NhZ2UgPSAiIjsKKyAgICBjb25maXJtQ2Fs
bGJhY2tEYXRhLnJlc3VsdCA9IHRydWU7CisgICAgY29uZmlybUNhbGxiYWNrRGF0YS5jYWxsZWQg
PSBmYWxzZTsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgY29uZmly
bUhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJ0cnVlIik7CisgICAg
RVhQRUNUX1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCAidHJ1ZSIpOworICAg
IEVYUEVDVF9FUShjb25maXJtQ2FsbGJhY2tEYXRhLmNhbGxlZCwgdHJ1ZSk7CisKKyAgICBjb25m
aXJtSFRNTCA9ICI8IWRvY3R5cGUgaHRtbD48Ym9keSBvbmxvYWQ9XCJkb2N1bWVudC50aXRsZSA9
IGNvbmZpcm0obnVsbCk7XCI+PC9ib2R5PiI7CisgICAgY29uZmlybUNhbGxiYWNrRGF0YS5leHBl
Y3RlZE1lc3NhZ2UgPSAibnVsbCI7CisgICAgY29uZmlybUNhbGxiYWNrRGF0YS5yZXN1bHQgPSB0
cnVlOworICAgIGNvbmZpcm1DYWxsYmFja0RhdGEuY2FsbGVkID0gZmFsc2U7CisgICAgZXdrX3Zp
ZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGNvbmZpcm1IVE1MLCAwLCAwKTsKKyAgICB3
YWl0VW50aWxUaXRsZUNoYW5nZWRUbygidHJ1ZSIpOworICAgIEVYUEVDVF9TVFJFUShld2tfdmll
d190aXRsZV9nZXQod2ViVmlldygpKSwgInRydWUiKTsKKyAgICBFWFBFQ1RfRVEoY29uZmlybUNh
bGxiYWNrRGF0YS5jYWxsZWQsIHRydWUpOworCisgICAgY29uZmlybUhUTUwgPSAiPCFkb2N0eXBl
IGh0bWw+PGJvZHkgb25sb2FkPVwiZG9jdW1lbnQudGl0bGUgPSBjb25maXJtKCk7XCI+PC9ib2R5
PiI7CisgICAgY29uZmlybUNhbGxiYWNrRGF0YS5leHBlY3RlZE1lc3NhZ2UgPSAidW5kZWZpbmVk
IjsKKyAgICBjb25maXJtQ2FsbGJhY2tEYXRhLnJlc3VsdCA9IHRydWU7CisgICAgY29uZmlybUNh
bGxiYWNrRGF0YS5jYWxsZWQgPSBmYWxzZTsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2Fk
KHdlYlZpZXcoKSwgY29uZmlybUhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbFRpdGxlQ2hhbmdl
ZFRvKCJ0cnVlIik7CisgICAgRVhQRUNUX1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3
KCkpLCAidHJ1ZSIpOworICAgIEVYUEVDVF9FUShjb25maXJtQ2FsbGJhY2tEYXRhLmNhbGxlZCwg
dHJ1ZSk7CisKKyAgICBld2tWaWV3Q2xhc3MoKS0+cnVuX2phdmFzY3JpcHRfY29uZmlybSA9IDA7
CisKKyAgICBjb25maXJtQ2FsbGJhY2tEYXRhLmNhbGxlZCA9IGZhbHNlOworICAgIGV3a192aWV3
X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBjb25maXJtSFRNTCwgMCwgMCk7CisgICAgd2Fp
dFVudGlsVGl0bGVDaGFuZ2VkVG8oImZhbHNlIik7CisgICAgRVhQRUNUX1NUUkVRKGV3a192aWV3
X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCAiZmFsc2UiKTsKKyAgICBFWFBFQ1RfRVEoY29uZmlybUNh
bGxiYWNrRGF0YS5jYWxsZWQsIGZhbHNlKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIGNoZWNr
UHJvbXB0KEV3a19WaWV3X1NtYXJ0X0RhdGEqLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBjb25zdCBj
aGFyKiBkZWZhdWx0VmFsdWUpCit7CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLmNhbGxlZCA9IHRy
dWU7CisgICAgRVhQRUNUX1NUUkVRKG1lc3NhZ2UsIHByb21wdENhbGxiYWNrRGF0YS5leHBlY3Rl
ZE1lc3NhZ2UpOworICAgIEVYUEVDVF9TVFJFUShkZWZhdWx0VmFsdWUsIHByb21wdENhbGxiYWNr
RGF0YS5leHBlY3RlZERlZmF1bHRWYWx1ZSk7CisKKyAgICBpZiAoIXByb21wdENhbGxiYWNrRGF0
YS5yZXN1bHQpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hh
cmVfYWRkKHByb21wdENhbGxiYWNrRGF0YS5yZXN1bHQpOworfQorCitURVNUX0YoRVdLMlVuaXRU
ZXN0QmFzZSwgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KQoreworICAgIHN0YXRpYyBj
b25zdCBjaGFyIHByb21wdE1lc3NhZ2VbXSA9ICJQcm9tcHQgbWVzc2FnZSI7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIgcHJvbXB0UmVzdWx0W10gPSAiUHJvbXB0IHJlc3VsdCI7CisKKyAgICBld2tW
aWV3Q2xhc3MoKS0+cnVuX2phdmFzY3JpcHRfcHJvbXB0ID0gY2hlY2tQcm9tcHQ7CisKKyAgICBj
b25zdCBjaGFyKiBwcm9tcHRIVE1MID0gIjwhZG9jdHlwZSBodG1sPjxib2R5IG9ubG9hZD1cImRv
Y3VtZW50LnRpdGxlID0gcHJvbXB0KCdQcm9tcHQgbWVzc2FnZScsICdQcm9tcHQgZGVmYXVsdCB2
YWx1ZScpO1wiPjwvYm9keT4iOworICAgIHByb21wdENhbGxiYWNrRGF0YS5leHBlY3RlZE1lc3Nh
Z2UgPSBwcm9tcHRNZXNzYWdlOworICAgIHByb21wdENhbGxiYWNrRGF0YS5leHBlY3RlZERlZmF1
bHRWYWx1ZSA9ICJQcm9tcHQgZGVmYXVsdCB2YWx1ZSI7CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRh
LnJlc3VsdCA9IHByb21wdFJlc3VsdDsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkID0g
ZmFsc2U7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHByb21wdEhU
TUwsIDAsIDApOworICAgIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKHByb21wdFJlc3VsdCk7Cisg
ICAgRVhQRUNUX1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCBwcm9tcHRSZXN1
bHQpOworICAgIEVYUEVDVF9FUShwcm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkLCB0cnVlKTsKKwor
ICAgIHByb21wdEhUTUwgPSAiPCFkb2N0eXBlIGh0bWw+PGJvZHkgb25sb2FkPVwiZG9jdW1lbnQu
dGl0bGUgPSBwcm9tcHQoJ1Byb21wdCBtZXNzYWdlJywgJycpO1wiPjwvYm9keT4iOworICAgIHBy
b21wdENhbGxiYWNrRGF0YS5leHBlY3RlZE1lc3NhZ2UgPSBwcm9tcHRNZXNzYWdlOworICAgIHBy
b21wdENhbGxiYWNrRGF0YS5leHBlY3RlZERlZmF1bHRWYWx1ZSA9ICIiOworICAgIHByb21wdENh
bGxiYWNrRGF0YS5yZXN1bHQgPSBwcm9tcHRSZXN1bHQ7CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRh
LmNhbGxlZCA9IGZhbHNlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygp
LCBwcm9tcHRIVE1MLCAwLCAwKTsKKyAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhwcm9tcHRS
ZXN1bHQpOworICAgIEVYUEVDVF9TVFJFUShld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSwg
cHJvbXB0UmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEocHJvbXB0Q2FsbGJhY2tEYXRhLmNhbGxlZCwg
dHJ1ZSk7CisKKyAgICBwcm9tcHRIVE1MID0gIjwhZG9jdHlwZSBodG1sPjxib2R5IG9ubG9hZD1c
ImRvY3VtZW50LnRpdGxlID0gcHJvbXB0KCdQcm9tcHQgbWVzc2FnZScpO1wiPjwvYm9keT4iOwor
ICAgIHByb21wdENhbGxiYWNrRGF0YS5leHBlY3RlZE1lc3NhZ2UgPSBwcm9tcHRNZXNzYWdlOwor
ICAgIHByb21wdENhbGxiYWNrRGF0YS5leHBlY3RlZERlZmF1bHRWYWx1ZSA9ICIiOworICAgIHBy
b21wdENhbGxiYWNrRGF0YS5yZXN1bHQgPSBwcm9tcHRSZXN1bHQ7CisgICAgcHJvbXB0Q2FsbGJh
Y2tEYXRhLmNhbGxlZCA9IGZhbHNlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2Vi
VmlldygpLCBwcm9tcHRIVE1MLCAwLCAwKTsKKyAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhw
cm9tcHRSZXN1bHQpOworICAgIEVYUEVDVF9TVFJFUShld2tfdmlld190aXRsZV9nZXQod2ViVmll
dygpKSwgcHJvbXB0UmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEocHJvbXB0Q2FsbGJhY2tEYXRhLmNh
bGxlZCwgdHJ1ZSk7CisKKyAgICBwcm9tcHRIVE1MID0gIjwhZG9jdHlwZSBodG1sPjxib2R5IG9u
bG9hZD1cImRvY3VtZW50LnRpdGxlID0gcHJvbXB0KCcnKTtcIj48L2JvZHk+IjsKKyAgICBwcm9t
cHRDYWxsYmFja0RhdGEuZXhwZWN0ZWRNZXNzYWdlID0gIiI7CisgICAgcHJvbXB0Q2FsbGJhY2tE
YXRhLmV4cGVjdGVkRGVmYXVsdFZhbHVlID0gIiI7CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLnJl
c3VsdCA9IHByb21wdFJlc3VsdDsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkID0gZmFs
c2U7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHByb21wdEhUTUws
IDAsIDApOworICAgIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKHByb21wdFJlc3VsdCk7CisgICAg
RVhQRUNUX1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCBwcm9tcHRSZXN1bHQp
OworICAgIEVYUEVDVF9FUShwcm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkLCB0cnVlKTsKKworICAg
IHByb21wdEhUTUwgPSAiPCFkb2N0eXBlIGh0bWw+PGJvZHkgb25sb2FkPVwiZG9jdW1lbnQudGl0
bGUgPSBwcm9tcHQoKTtcIj48L2JvZHk+IjsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEuZXhwZWN0
ZWRNZXNzYWdlID0gInVuZGVmaW5lZCI7CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLmV4cGVjdGVk
RGVmYXVsdFZhbHVlID0gIiI7CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLnJlc3VsdCA9IHByb21w
dFJlc3VsdDsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkID0gZmFsc2U7CisgICAgZXdr
X3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHByb21wdEhUTUwsIDAsIDApOworICAg
IHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKHByb21wdFJlc3VsdCk7CisgICAgRVhQRUNUX1NUUkVR
KGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCBwcm9tcHRSZXN1bHQpOworICAgIEVYUEVD
VF9FUShwcm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkLCB0cnVlKTsKKworICAgIHByb21wdEhUTUwg
PSAiPGh0bWw+PGhlYWQ+PHRpdGxlPkRlZmF1bHQgdGl0bGU8L3RpdGxlPjwvaGVhZD4iCisgICAg
ICAgICAgICAgICAgICI8Ym9keSBvbmxvYWQ9XCJ2YXIgcHJvbXB0UmVzdWx0ID0gcHJvbXB0KCdQ
cm9tcHQgbWVzc2FnZScpOyIKKyAgICAgICAgICAgICAgICAgImlmIChwcm9tcHRSZXN1bHQgPT0g
bnVsbCkgZG9jdW1lbnQudGl0bGU9J251bGwnOyIKKyAgICAgICAgICAgICAgICAgImVsc2UgZG9j
dW1lbnQudGl0bGUgPSBwcm9tcHRSZXN1bHQ7XCI+PC9ib2R5PjwvaHRtbD4iOworICAgIHByb21w
dENhbGxiYWNrRGF0YS5leHBlY3RlZE1lc3NhZ2UgPSBwcm9tcHRNZXNzYWdlOworICAgIHByb21w
dENhbGxiYWNrRGF0YS5leHBlY3RlZERlZmF1bHRWYWx1ZSA9ICIiOworICAgIHByb21wdENhbGxi
YWNrRGF0YS5yZXN1bHQgPSAiIjsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkID0gZmFs
c2U7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHByb21wdEhUTUws
IDAsIDApOworICAgIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCIiKTsKKyAgICBFWFBFQ1RfU1RS
RVEoZXdrX3ZpZXdfdGl0bGVfZ2V0KHdlYlZpZXcoKSksICIiKTsKKyAgICBFWFBFQ1RfRVEocHJv
bXB0Q2FsbGJhY2tEYXRhLmNhbGxlZCwgdHJ1ZSk7CisKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEu
ZXhwZWN0ZWRNZXNzYWdlID0gcHJvbXB0TWVzc2FnZTsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEu
ZXhwZWN0ZWREZWZhdWx0VmFsdWUgPSAiIjsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEucmVzdWx0
ID0gMDsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkID0gZmFsc2U7CisgICAgZXdrX3Zp
ZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHByb21wdEhUTUwsIDAsIDApOworICAgIHdh
aXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJudWxsIik7CisgICAgRVhQRUNUX1NUUkVRKGV3a192aWV3
X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCAibnVsbCIpOworICAgIEVYUEVDVF9FUShwcm9tcHRDYWxs
YmFja0RhdGEuY2FsbGVkLCB0cnVlKTsKKworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNj
cmlwdF9wcm9tcHQgPSAwOworCisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLmNhbGxlZCA9IGZhbHNl
OworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBwcm9tcHRIVE1MLCAw
LCAwKTsKKyAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbygibnVsbCIpOworICAgIEVYUEVDVF9T
VFJFUShld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSwgIm51bGwiKTsKKyAgICBFWFBFQ1Rf
RVEocHJvbXB0Q2FsbGJhY2tEYXRhLmNhbGxlZCwgZmFsc2UpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164481</attachid>
            <date>2012-09-17 19:50:10 -0700</date>
            <delta_ts>2012-09-18 22:57:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95672-20120918114932.patch</filename>
            <type>text/plain</type>
            <size>18434</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGJiNmI4OWViNGIxMzI3
MDA4MDFmNTc3M2E4NzA3NDAwNjlkMzg5My4uNjAwMWEzYTIwMzMwOTU5ZjdjODA2OGEwNGFiNTAy
MTVhMDFhODA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTEyICBCeXVu
Z3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBqYXZhc2NyaXB0IHBvcHVwIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1NjcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2lt
LgorCisgICAgICAgIEFkZCBzbWFydCBjbGFzcyBtZW1iZXIgZnVuY3Rpb24gZm9yIGphdmFzY3Jp
cHQgYWxlcnQoKSwgY29uZmlybSgpIGFuZCBwcm9tcHQoKS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X3J1bl9qYXZhc2NyaXB0
X2FsZXJ0KToKKyAgICAgICAgKGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0pOgorICAg
ICAgICAoZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3X3ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9j
bGllbnQuY3BwOgorICAgICAgICAocnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKHJ1bkph
dmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKHJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAg
ICAoZXdrX3ZpZXdfdWlfY2xpZW50X2F0dGFjaCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOgorICAgICAgICBBZGRlZCB1bml0IHRlc3QgZm9y
IGphdmFzY3JpcHQgcG9wdXAgc21hcnQgY2xhc3MgbWVtYmVyIGZ1bmN0aW9uLgorICAgICAgICAo
Y2hlY2tBbGVydCk6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAoY2hlY2tDb25maXJtKToK
KyAgICAgICAgKGNoZWNrUHJvbXB0KToKKwogMjAxMi0wOS0xMSAgQnl1bmd3b28gTGVlICA8Ync4
MC5sZWVAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBXS0VpbmFTaGFyZWRTdHJp
bmcgbmVlZHMgYSBmdW5jdGlvbiB0byBhZG9wdCBlaW5hIHN0cmluZ3NoYXJlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDk5NzFiMTYzNDA2
ODNhZTg3OTJkODgwOTZhNzQ0ZGEzMzA1YTQxMjAuLjAxYmJjOTllMTU1NDQxYTRmODU2MGYyZDMz
YTJiNjYzNjE0ZDcyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAKQEAgLTE2MjQsMyArMTYyNCw0OCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfbW91
c2VfZXZlbnRzX2VuYWJsZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiAgICAg
cmV0dXJuIHByaXYtPmFyZU1vdXNlRXZlbnRzRW5hYmxlZDsKIH0KKworLyoqCisgKiBAaW50ZXJu
YWwKKyAqIENhbGxzIGEgc21hcnQgbWVtYmVyIGZ1bmN0aW9uIGZvciBqYXZhc2NyaXB0IGFsZXJ0
KCkuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfYWxlcnQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworCisgICAgaWYgKCFzbWFydERhdGEt
PmFwaS0+cnVuX2phdmFzY3JpcHRfYWxlcnQpCisgICAgICAgIHJldHVybjsKKworICAgIHNtYXJ0
RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9hbGVydChzbWFydERhdGEsIG1lc3NhZ2UpOworfQor
CisvKioKKyAqIEBpbnRlcm5hbAorICogQ2FsbHMgYSBzbWFydCBtZW1iZXIgZnVuY3Rpb24gZm9y
IGphdmFzY3JpcHQgY29uZmlybSgpIGFuZCByZXR1cm5zIGEgdmFsdWUgZnJvbSB0aGUgZnVuY3Rp
b24uIFJldHVybnMgZmFsc2UgYnkgZGVmYXVsdC4KKyAqLworYm9vbCBld2tfdmlld19ydW5famF2
YXNjcmlwdF9jb25maXJtKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXS0VpbmFTaGFyZWRT
dHJpbmcmIG1lc3NhZ2UpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c21hcnREYXRhLT5hcGksIGZhbHNlKTsKKworICAgIGlmICghc21hcnREYXRhLT5hcGktPnJ1bl9q
YXZhc2NyaXB0X2NvbmZpcm0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBz
bWFydERhdGEtPmFwaS0+cnVuX2phdmFzY3JpcHRfY29uZmlybShzbWFydERhdGEsIG1lc3NhZ2Up
OworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogQ2FsbHMgYSBzbWFydCBtZW1iZXIgZnVuY3Rp
b24gZm9yIGphdmFzY3JpcHQgcHJvbXB0KCkgYW5kIHJldHVybnMgYSB2YWx1ZSBmcm9tIHRoZSBm
dW5jdGlvbi4gUmV0dXJucyBudWxsIHN0cmluZyBieSBkZWZhdWx0LgorICovCitXS0VpbmFTaGFy
ZWRTdHJpbmcgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdLRWluYVNoYXJl
ZFN0cmluZyYgZGVmYXVsdFZhbHVlKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCBXS0VpbmFTaGFyZWRTdHJpbmcoKSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBXS0VpbmFTaGFyZWRTdHJpbmco
KSk7CisKKyAgICBpZiAoIXNtYXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9wcm9tcHQpCisg
ICAgICAgIHJldHVybiBXS0VpbmFTaGFyZWRTdHJpbmcoKTsKKworICAgIHJldHVybiBXS0VpbmFT
aGFyZWRTdHJpbmc6OmFkb3B0KHNtYXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9wcm9tcHQo
c21hcnREYXRhLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGIwNDBmZGYzMDg1ZTI3ZWY4MDg3N2E5
YzY4NDM4NTY0ZTU4NTI4NTIuLjcxMjJmODI4MDZkZTQxM2VjYTBiMzIwYTBjYmUyZGVhNmM1NWU5
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAt
MTE0LDEzICsxMTQsMTkgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgICAgRWlu
YV9Cb29sICgqbW91c2VfbW92ZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNf
RXZlbnRfTW91c2VfTW92ZSAqZXYpOwogICAgIEVpbmFfQm9vbCAoKmtleV9kb3duKShFd2tfVmll
d19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biAqZXYpOwogICAgIEVp
bmFfQm9vbCAoKmtleV91cCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZl
bnRfS2V5X1VwICpldik7CisKKyAgICAvLyBqYXZhc2NyaXB0IHBvcHVwOgorICAgIC8vICAgLSBB
bGwgc3RyaW5ncyBzaG91bGQgYmUgZ3VhcmFudGVlZCB0byBiZSBzdHJpbmdzaGFyZWQuCisgICAg
dm9pZCAoKnJ1bl9qYXZhc2NyaXB0X2FsZXJ0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29u
c3QgY2hhciAqbWVzc2FnZSk7CisgICAgRWluYV9Cb29sICgqcnVuX2phdmFzY3JpcHRfY29uZmly
bSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworICAgIGNv
bnN0IGNoYXIgKigqcnVuX2phdmFzY3JpcHRfcHJvbXB0KShFd2tfVmlld19TbWFydF9EYXRhICpz
ZCwgY29uc3QgY2hhciAqbWVzc2FnZSwgY29uc3QgY2hhciAqZGVmYXVsdF92YWx1ZSk7IC8qKjwg
cmV0dXJuIHN0cmluZyBzaG91bGQgYmUgc3RyaW5nc2hhcmVkLiAqLwogfTsKIAogLyoqCiAgKiBU
aGUgdmVyc2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVyc2lvbiBmaWVsZAogICogaW4g
dGhlIEBhIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KICAqLwotI2RlZmluZSBFV0tf
VklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDNVTAorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFT
U19WRVJTSU9OIDRVTAogCiAvKioKICAqIEluaXRpYWxpemVyIGZvciB3aG9sZSBFd2tfVmlld19T
bWFydF9DbGFzcyBzdHJ1Y3R1cmUuCkBAIC0xMzIsNyArMTM4LDcgQEAgc3RydWN0IF9Fd2tfVmll
d19TbWFydF9DbGFzcyB7CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lP
TgogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgogICovCi0j
ZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0
X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDB9CisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQo
c21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNT
X1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CiAK
IC8qKgogICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNz
IHN0cnVjdHVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3X3ByaXZhdGUuaAppbmRleCBmY2Q2NWVlMGY2MTcyZmIzOTQxNjgwMDgyZWZiOTI2ZDg4
ZDc4NDhjLi5mOGE3MDdlOGJlOWFlYjg2ZTYyYjE0OGQ4MWIyNzQyNzhmODU0YTFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5o
CkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRl
IDxFdmFzLmg+CisjaW5jbHVkZSA8V0tFaW5hU2hhcmVkU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9UZXh0RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xMDIsNCArMTAzLDggQEAgYm9vbCBld2tfdmlld19hY2Nl
bGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
OwogCiB2b2lkIGV3a192aWV3X3BvcHVwX21lbnVfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmll
dywgV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3Rv
ciwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2Vs
ZWN0ZWRJbmRleCk7CiAKK3ZvaWQgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfYWxlcnQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgbWVzc2FnZSk7Citib29s
IGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0oRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNv
bnN0IFdLRWluYVNoYXJlZFN0cmluZyYgbWVzc2FnZSk7CitXS0VpbmFTaGFyZWRTdHJpbmcgZXdr
X3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBX
S0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgZGVm
YXVsdFZhbHVlKTsKKwogI2VuZGlmIC8vIGV3a192aWV3X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3VpX2NsaWVudC5jcHAK
aW5kZXggMThlZGUwOGExNDcyN2QzNmQwMmMxZDVlOGRhMTYxNmI2MDI3ODczNi4uOGVkZTUwZGQ5
ZTg3NGZmNWI2MTBjNTY5Yzc4Zjk0Nzg5YjYzMTM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfdWlfY2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld191aV9jbGllbnQuY3BwCkBAIC0yNSw2
ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAorI2luY2x1ZGUgIldLU3RyaW5nLmgi
CiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3VpX2Ns
aWVudF9wcml2YXRlLmgiCiAKQEAgLTQzLDYgKzQ0LDIyIEBAIHN0YXRpYyBXS1BhZ2VSZWYgY3Jl
YXRlTmV3UGFnZShXS1BhZ2VSZWYsIFdLVVJMUmVxdWVzdFJlZiwgV0tEaWN0aW9uYXJ5UmVmLCBX
S0V2CiAgICAgIHJldHVybiBld2tfdmlld19wYWdlX2NyZWF0ZSh0b0V3a1ZpZXcoY2xpZW50SW5m
bykpOwogfQogCitzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV0tQYWdlUmVmLCBXS1N0
cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7
CisgICAgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfYWxlcnQodG9Fd2tWaWV3KGNsaWVudEluZm8p
LCBXS0VpbmFTaGFyZWRTdHJpbmcoYWxlcnRUZXh0KSk7Cit9CisKK3N0YXRpYyBib29sIHJ1bkph
dmFTY3JpcHRDb25maXJtKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tGcmFtZVJl
ZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gZXdrX3ZpZXdfcnVuX2ph
dmFzY3JpcHRfY29uZmlybSh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIFdLRWluYVNoYXJlZFN0cmlu
ZyhtZXNzYWdlKSk7Cit9CisKK3N0YXRpYyBXS1N0cmluZ1JlZiBydW5KYXZhU2NyaXB0UHJvbXB0
KFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tTdHJpbmdSZWYgZGVmYXVsdFZhbHVl
LCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIFdLRWluYVNoYXJl
ZFN0cmluZyB2YWx1ZSA9IGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdCh0b0V3a1ZpZXco
Y2xpZW50SW5mbyksIFdLRWluYVNoYXJlZFN0cmluZyhtZXNzYWdlKSwgV0tFaW5hU2hhcmVkU3Ry
aW5nKGRlZmF1bHRWYWx1ZSkpOworICAgIHJldHVybiB2YWx1ZSA/IFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKHZhbHVlKSA6IDA7Cit9CisKIHZvaWQgZXdrX3ZpZXdfdWlfY2xpZW50X2F0
dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgV0tQ
YWdlVUlDbGllbnQgdWlDbGllbnQ7CkBAIC01MSw1ICs2OCw4IEBAIHZvaWQgZXdrX3ZpZXdfdWlf
Y2xpZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAg
ICAgdWlDbGllbnQuY2xpZW50SW5mbyA9IGV3a1ZpZXc7CiAgICAgdWlDbGllbnQuY2xvc2UgPSBj
bG9zZVBhZ2U7CiAgICAgdWlDbGllbnQuY3JlYXRlTmV3UGFnZSA9IGNyZWF0ZU5ld1BhZ2U7Cisg
ICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdEFsZXJ0ID0gcnVuSmF2YVNjcmlwdEFsZXJ0OworICAg
IHVpQ2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtID0gcnVuSmF2YVNjcmlwdENvbmZpcm07Cisg
ICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdFByb21wdCA9IHJ1bkphdmFTY3JpcHRQcm9tcHQ7CiAg
ICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KHBhZ2VSZWYsICZ1aUNsaWVudCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
dmlldy5jcHAKaW5kZXggNmU5MjhlZGQ5MDNlYWMwMGJlZmRjZjZiMTMyMTA2NDZmMTA4MGIxYi4u
YTFjMDc3NjVlMGE0ZjQyNzZhNzU4NzE0YWJlNGNkZmUzYzY0NTBlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3
LmNwcApAQCAtMzYwLDMgKzM2MCwyMzEgQEAgVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192
aWV3X2Z1bGxfc2NyZWVuX2V4aXQpCiAgICAgQVNTRVJUX1RSVUUoZnVsbFNjcmVlbkNhbGxiYWNr
Q2FsbGVkKTsKICAgICBjaGVja0Z1bGxTY3JlZW5Qcm9wZXJ0eSh3ZWJWaWV3KCksIGZhbHNlKTsK
IH0KKworc3RhdGljIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWRNZXNzYWdlOwor
ICAgIGJvb2wgY2FsbGVkOworfSBhbGVydENhbGxiYWNrRGF0YTsKKworc3RhdGljIHN0cnVjdCB7
CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWRNZXNzYWdlOworICAgIGJvb2wgcmVzdWx0OworICAg
IGJvb2wgY2FsbGVkOworfSBjb25maXJtQ2FsbGJhY2tEYXRhOworCitzdGF0aWMgc3RydWN0IHsK
KyAgICBjb25zdCBjaGFyKiBleHBlY3RlZE1lc3NhZ2U7CisgICAgY29uc3QgY2hhciogZXhwZWN0
ZWREZWZhdWx0VmFsdWU7CisgICAgY29uc3QgY2hhciogcmVzdWx0OworICAgIGJvb2wgY2FsbGVk
OworfSBwcm9tcHRDYWxsYmFja0RhdGE7CisKK3N0YXRpYyB2b2lkIGNoZWNrQWxlcnQoRXdrX1Zp
ZXdfU21hcnRfRGF0YSosIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgYWxlcnRDYWxsYmFj
a0RhdGEuY2FsbGVkID0gdHJ1ZTsKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZSwgYWxlcnRDYWxs
YmFja0RhdGEuZXhwZWN0ZWRNZXNzYWdlKTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2Us
IGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KQoreworICAgIGV3a1ZpZXdDbGFzcygpLT5y
dW5famF2YXNjcmlwdF9hbGVydCA9IGNoZWNrQWxlcnQ7CisKKyAgICBjb25zdCBjaGFyKiBhbGVy
dEhUTUwgPSAiPCFkb2N0eXBlIGh0bWw+PGJvZHkgb25sb2FkPVwiYWxlcnQoJ0FsZXJ0IG1lc3Nh
Z2UnKTtcIj48L2JvZHk+IjsKKyAgICBhbGVydENhbGxiYWNrRGF0YS5leHBlY3RlZE1lc3NhZ2Ug
PSAiQWxlcnQgbWVzc2FnZSI7CisgICAgYWxlcnRDYWxsYmFja0RhdGEuY2FsbGVkID0gZmFsc2U7
CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGFsZXJ0SFRNTCwgMCwg
MCk7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgRVhQRUNUX0VRKGFsZXJ0Q2Fs
bGJhY2tEYXRhLmNhbGxlZCwgdHJ1ZSk7CisKKyAgICBhbGVydEhUTUwgPSAiPCFkb2N0eXBlIGh0
bWw+PGJvZHkgb25sb2FkPVwiYWxlcnQoJycpO1wiPjwvYm9keT4iOworICAgIGFsZXJ0Q2FsbGJh
Y2tEYXRhLmV4cGVjdGVkTWVzc2FnZSA9ICIiOworICAgIGFsZXJ0Q2FsbGJhY2tEYXRhLmNhbGxl
ZCA9IGZhbHNlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBhbGVy
dEhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIEVYUEVDVF9F
UShhbGVydENhbGxiYWNrRGF0YS5jYWxsZWQsIHRydWUpOworCisgICAgYWxlcnRIVE1MID0gIjwh
ZG9jdHlwZSBodG1sPjxib2R5IG9ubG9hZD1cImFsZXJ0KG51bGwpO1wiPjwvYm9keT4iOworICAg
IGFsZXJ0Q2FsbGJhY2tEYXRhLmV4cGVjdGVkTWVzc2FnZSA9ICJudWxsIjsKKyAgICBhbGVydENh
bGxiYWNrRGF0YS5jYWxsZWQgPSBmYWxzZTsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2Fk
KHdlYlZpZXcoKSwgYWxlcnRIVE1MLCAwLCAwKTsKKyAgICB3YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKKyAgICBFWFBFQ1RfRVEoYWxlcnRDYWxsYmFja0RhdGEuY2FsbGVkLCB0cnVlKTsKKworICAg
IGFsZXJ0SFRNTCA9ICI8IWRvY3R5cGUgaHRtbD48Ym9keSBvbmxvYWQ9XCJhbGVydCgpO1wiPjwv
Ym9keT4iOworICAgIGFsZXJ0Q2FsbGJhY2tEYXRhLmV4cGVjdGVkTWVzc2FnZSA9ICJ1bmRlZmlu
ZWQiOworICAgIGFsZXJ0Q2FsbGJhY2tEYXRhLmNhbGxlZCA9IGZhbHNlOworICAgIGV3a192aWV3
X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBhbGVydEhUTUwsIDAsIDApOworICAgIHdhaXRV
bnRpbExvYWRGaW5pc2hlZCgpOworICAgIEVYUEVDVF9FUShhbGVydENhbGxiYWNrRGF0YS5jYWxs
ZWQsIHRydWUpOworCisgICAgZXdrVmlld0NsYXNzKCktPnJ1bl9qYXZhc2NyaXB0X2FsZXJ0ID0g
MDsKKworICAgIGFsZXJ0Q2FsbGJhY2tEYXRhLmNhbGxlZCA9IGZhbHNlOworICAgIGV3a192aWV3
X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBhbGVydEhUTUwsIDAsIDApOworICAgIHdhaXRV
bnRpbExvYWRGaW5pc2hlZCgpOworICAgIEVYUEVDVF9FUShhbGVydENhbGxiYWNrRGF0YS5jYWxs
ZWQsIGZhbHNlKTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBjaGVja0NvbmZpcm0oRXdrX1ZpZXdf
U21hcnRfRGF0YSosIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgY29uZmlybUNhbGxiYWNr
RGF0YS5jYWxsZWQgPSB0cnVlOworICAgIEVYUEVDVF9TVFJFUShtZXNzYWdlLCBjb25maXJtQ2Fs
bGJhY2tEYXRhLmV4cGVjdGVkTWVzc2FnZSk7CisgICAgcmV0dXJuIGNvbmZpcm1DYWxsYmFja0Rh
dGEucmVzdWx0OworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfcnVuX2ph
dmFzY3JpcHRfY29uZmlybSkKK3sKKyAgICBld2tWaWV3Q2xhc3MoKS0+cnVuX2phdmFzY3JpcHRf
Y29uZmlybSA9IGNoZWNrQ29uZmlybTsKKworICAgIGNvbnN0IGNoYXIqIGNvbmZpcm1IVE1MID0g
IjwhZG9jdHlwZSBodG1sPjxib2R5IG9ubG9hZD1cImRvY3VtZW50LnRpdGxlID0gY29uZmlybSgn
Q29uZmlybSBtZXNzYWdlJyk7XCI+PC9ib2R5PiI7CisgICAgY29uZmlybUNhbGxiYWNrRGF0YS5l
eHBlY3RlZE1lc3NhZ2UgPSAiQ29uZmlybSBtZXNzYWdlIjsKKyAgICBjb25maXJtQ2FsbGJhY2tE
YXRhLnJlc3VsdCA9IHRydWU7CisgICAgY29uZmlybUNhbGxiYWNrRGF0YS5jYWxsZWQgPSBmYWxz
ZTsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgY29uZmlybUhUTUws
IDAsIDApOworICAgIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJ0cnVlIik7CisgICAgRVhQRUNU
X1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCAidHJ1ZSIpOworICAgIEVYUEVD
VF9FUShjb25maXJtQ2FsbGJhY2tEYXRhLmNhbGxlZCwgdHJ1ZSk7CisKKyAgICBjb25maXJtQ2Fs
bGJhY2tEYXRhLmV4cGVjdGVkTWVzc2FnZSA9ICJDb25maXJtIG1lc3NhZ2UiOworICAgIGNvbmZp
cm1DYWxsYmFja0RhdGEucmVzdWx0ID0gZmFsc2U7CisgICAgY29uZmlybUNhbGxiYWNrRGF0YS5j
YWxsZWQgPSBmYWxzZTsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwg
Y29uZmlybUhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJmYWxzZSIp
OworICAgIEVYUEVDVF9TVFJFUShld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSwgImZhbHNl
Iik7CisgICAgRVhQRUNUX0VRKGNvbmZpcm1DYWxsYmFja0RhdGEuY2FsbGVkLCB0cnVlKTsKKwor
ICAgIGNvbmZpcm1IVE1MID0gIjwhZG9jdHlwZSBodG1sPjxib2R5IG9ubG9hZD1cImRvY3VtZW50
LnRpdGxlID0gY29uZmlybSgnJyk7XCI+PC9ib2R5PiI7CisgICAgY29uZmlybUNhbGxiYWNrRGF0
YS5leHBlY3RlZE1lc3NhZ2UgPSAiIjsKKyAgICBjb25maXJtQ2FsbGJhY2tEYXRhLnJlc3VsdCA9
IHRydWU7CisgICAgY29uZmlybUNhbGxiYWNrRGF0YS5jYWxsZWQgPSBmYWxzZTsKKyAgICBld2tf
dmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgY29uZmlybUhUTUwsIDAsIDApOworICAg
IHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJ0cnVlIik7CisgICAgRVhQRUNUX1NUUkVRKGV3a192
aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCAidHJ1ZSIpOworICAgIEVYUEVDVF9FUShjb25maXJt
Q2FsbGJhY2tEYXRhLmNhbGxlZCwgdHJ1ZSk7CisKKyAgICBjb25maXJtSFRNTCA9ICI8IWRvY3R5
cGUgaHRtbD48Ym9keSBvbmxvYWQ9XCJkb2N1bWVudC50aXRsZSA9IGNvbmZpcm0obnVsbCk7XCI+
PC9ib2R5PiI7CisgICAgY29uZmlybUNhbGxiYWNrRGF0YS5leHBlY3RlZE1lc3NhZ2UgPSAibnVs
bCI7CisgICAgY29uZmlybUNhbGxiYWNrRGF0YS5yZXN1bHQgPSB0cnVlOworICAgIGNvbmZpcm1D
YWxsYmFja0RhdGEuY2FsbGVkID0gZmFsc2U7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9h
ZCh3ZWJWaWV3KCksIGNvbmZpcm1IVE1MLCAwLCAwKTsKKyAgICB3YWl0VW50aWxUaXRsZUNoYW5n
ZWRUbygidHJ1ZSIpOworICAgIEVYUEVDVF9TVFJFUShld2tfdmlld190aXRsZV9nZXQod2ViVmll
dygpKSwgInRydWUiKTsKKyAgICBFWFBFQ1RfRVEoY29uZmlybUNhbGxiYWNrRGF0YS5jYWxsZWQs
IHRydWUpOworCisgICAgY29uZmlybUhUTUwgPSAiPCFkb2N0eXBlIGh0bWw+PGJvZHkgb25sb2Fk
PVwiZG9jdW1lbnQudGl0bGUgPSBjb25maXJtKCk7XCI+PC9ib2R5PiI7CisgICAgY29uZmlybUNh
bGxiYWNrRGF0YS5leHBlY3RlZE1lc3NhZ2UgPSAidW5kZWZpbmVkIjsKKyAgICBjb25maXJtQ2Fs
bGJhY2tEYXRhLnJlc3VsdCA9IHRydWU7CisgICAgY29uZmlybUNhbGxiYWNrRGF0YS5jYWxsZWQg
PSBmYWxzZTsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgY29uZmly
bUhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJ0cnVlIik7CisgICAg
RVhQRUNUX1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCAidHJ1ZSIpOworICAg
IEVYUEVDVF9FUShjb25maXJtQ2FsbGJhY2tEYXRhLmNhbGxlZCwgdHJ1ZSk7CisKKyAgICBld2tW
aWV3Q2xhc3MoKS0+cnVuX2phdmFzY3JpcHRfY29uZmlybSA9IDA7CisKKyAgICBjb25maXJtQ2Fs
bGJhY2tEYXRhLmNhbGxlZCA9IGZhbHNlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQo
d2ViVmlldygpLCBjb25maXJtSFRNTCwgMCwgMCk7CisgICAgd2FpdFVudGlsVGl0bGVDaGFuZ2Vk
VG8oImZhbHNlIik7CisgICAgRVhQRUNUX1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3
KCkpLCAiZmFsc2UiKTsKKyAgICBFWFBFQ1RfRVEoY29uZmlybUNhbGxiYWNrRGF0YS5jYWxsZWQs
IGZhbHNlKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIGNoZWNrUHJvbXB0KEV3a19WaWV3X1Nt
YXJ0X0RhdGEqLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBkZWZhdWx0VmFsdWUp
Cit7CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLmNhbGxlZCA9IHRydWU7CisgICAgRVhQRUNUX1NU
UkVRKG1lc3NhZ2UsIHByb21wdENhbGxiYWNrRGF0YS5leHBlY3RlZE1lc3NhZ2UpOworICAgIEVY
UEVDVF9TVFJFUShkZWZhdWx0VmFsdWUsIHByb21wdENhbGxiYWNrRGF0YS5leHBlY3RlZERlZmF1
bHRWYWx1ZSk7CisKKyAgICBpZiAoIXByb21wdENhbGxiYWNrRGF0YS5yZXN1bHQpCisgICAgICAg
IHJldHVybiAwOworCisgICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVfYWRkKHByb21wdENhbGxi
YWNrRGF0YS5yZXN1bHQpOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdf
cnVuX2phdmFzY3JpcHRfcHJvbXB0KQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyIHByb21wdE1l
c3NhZ2VbXSA9ICJQcm9tcHQgbWVzc2FnZSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgcHJvbXB0
UmVzdWx0W10gPSAiUHJvbXB0IHJlc3VsdCI7CisKKyAgICBld2tWaWV3Q2xhc3MoKS0+cnVuX2ph
dmFzY3JpcHRfcHJvbXB0ID0gY2hlY2tQcm9tcHQ7CisKKyAgICBjb25zdCBjaGFyKiBwcm9tcHRI
VE1MID0gIjwhZG9jdHlwZSBodG1sPjxib2R5IG9ubG9hZD1cImRvY3VtZW50LnRpdGxlID0gcHJv
bXB0KCdQcm9tcHQgbWVzc2FnZScsICdQcm9tcHQgZGVmYXVsdCB2YWx1ZScpO1wiPjwvYm9keT4i
OworICAgIHByb21wdENhbGxiYWNrRGF0YS5leHBlY3RlZE1lc3NhZ2UgPSBwcm9tcHRNZXNzYWdl
OworICAgIHByb21wdENhbGxiYWNrRGF0YS5leHBlY3RlZERlZmF1bHRWYWx1ZSA9ICJQcm9tcHQg
ZGVmYXVsdCB2YWx1ZSI7CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLnJlc3VsdCA9IHByb21wdFJl
c3VsdDsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkID0gZmFsc2U7CisgICAgZXdrX3Zp
ZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHByb21wdEhUTUwsIDAsIDApOworICAgIHdh
aXRVbnRpbFRpdGxlQ2hhbmdlZFRvKHByb21wdFJlc3VsdCk7CisgICAgRVhQRUNUX1NUUkVRKGV3
a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCBwcm9tcHRSZXN1bHQpOworICAgIEVYUEVDVF9F
UShwcm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkLCB0cnVlKTsKKworICAgIHByb21wdEhUTUwgPSAi
PCFkb2N0eXBlIGh0bWw+PGJvZHkgb25sb2FkPVwiZG9jdW1lbnQudGl0bGUgPSBwcm9tcHQoJ1By
b21wdCBtZXNzYWdlJywgJycpO1wiPjwvYm9keT4iOworICAgIHByb21wdENhbGxiYWNrRGF0YS5l
eHBlY3RlZE1lc3NhZ2UgPSBwcm9tcHRNZXNzYWdlOworICAgIHByb21wdENhbGxiYWNrRGF0YS5l
eHBlY3RlZERlZmF1bHRWYWx1ZSA9ICIiOworICAgIHByb21wdENhbGxiYWNrRGF0YS5yZXN1bHQg
PSBwcm9tcHRSZXN1bHQ7CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLmNhbGxlZCA9IGZhbHNlOwor
ICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBwcm9tcHRIVE1MLCAwLCAw
KTsKKyAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhwcm9tcHRSZXN1bHQpOworICAgIEVYUEVD
VF9TVFJFUShld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSwgcHJvbXB0UmVzdWx0KTsKKyAg
ICBFWFBFQ1RfRVEocHJvbXB0Q2FsbGJhY2tEYXRhLmNhbGxlZCwgdHJ1ZSk7CisKKyAgICBwcm9t
cHRIVE1MID0gIjwhZG9jdHlwZSBodG1sPjxib2R5IG9ubG9hZD1cImRvY3VtZW50LnRpdGxlID0g
cHJvbXB0KCdQcm9tcHQgbWVzc2FnZScpO1wiPjwvYm9keT4iOworICAgIHByb21wdENhbGxiYWNr
RGF0YS5leHBlY3RlZE1lc3NhZ2UgPSBwcm9tcHRNZXNzYWdlOworICAgIHByb21wdENhbGxiYWNr
RGF0YS5leHBlY3RlZERlZmF1bHRWYWx1ZSA9ICIiOworICAgIHByb21wdENhbGxiYWNrRGF0YS5y
ZXN1bHQgPSBwcm9tcHRSZXN1bHQ7CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLmNhbGxlZCA9IGZh
bHNlOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBwcm9tcHRIVE1M
LCAwLCAwKTsKKyAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhwcm9tcHRSZXN1bHQpOworICAg
IEVYUEVDVF9TVFJFUShld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSwgcHJvbXB0UmVzdWx0
KTsKKyAgICBFWFBFQ1RfRVEocHJvbXB0Q2FsbGJhY2tEYXRhLmNhbGxlZCwgdHJ1ZSk7CisKKyAg
ICBwcm9tcHRIVE1MID0gIjwhZG9jdHlwZSBodG1sPjxib2R5IG9ubG9hZD1cImRvY3VtZW50LnRp
dGxlID0gcHJvbXB0KCcnKTtcIj48L2JvZHk+IjsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEuZXhw
ZWN0ZWRNZXNzYWdlID0gIiI7CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLmV4cGVjdGVkRGVmYXVs
dFZhbHVlID0gIiI7CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLnJlc3VsdCA9IHByb21wdFJlc3Vs
dDsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkID0gZmFsc2U7CisgICAgZXdrX3ZpZXdf
aHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHByb21wdEhUTUwsIDAsIDApOworICAgIHdhaXRV
bnRpbFRpdGxlQ2hhbmdlZFRvKHByb21wdFJlc3VsdCk7CisgICAgRVhQRUNUX1NUUkVRKGV3a192
aWV3X3RpdGxlX2dldCh3ZWJWaWV3KCkpLCBwcm9tcHRSZXN1bHQpOworICAgIEVYUEVDVF9FUShw
cm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkLCB0cnVlKTsKKworICAgIHByb21wdEhUTUwgPSAiPCFk
b2N0eXBlIGh0bWw+PGJvZHkgb25sb2FkPVwiZG9jdW1lbnQudGl0bGUgPSBwcm9tcHQoKTtcIj48
L2JvZHk+IjsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEuZXhwZWN0ZWRNZXNzYWdlID0gInVuZGVm
aW5lZCI7CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLmV4cGVjdGVkRGVmYXVsdFZhbHVlID0gIiI7
CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLnJlc3VsdCA9IHByb21wdFJlc3VsdDsKKyAgICBwcm9t
cHRDYWxsYmFja0RhdGEuY2FsbGVkID0gZmFsc2U7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdf
bG9hZCh3ZWJWaWV3KCksIHByb21wdEhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbFRpdGxlQ2hh
bmdlZFRvKHByb21wdFJlc3VsdCk7CisgICAgRVhQRUNUX1NUUkVRKGV3a192aWV3X3RpdGxlX2dl
dCh3ZWJWaWV3KCkpLCBwcm9tcHRSZXN1bHQpOworICAgIEVYUEVDVF9FUShwcm9tcHRDYWxsYmFj
a0RhdGEuY2FsbGVkLCB0cnVlKTsKKworICAgIHByb21wdEhUTUwgPSAiPGh0bWw+PGhlYWQ+PHRp
dGxlPkRlZmF1bHQgdGl0bGU8L3RpdGxlPjwvaGVhZD4iCisgICAgICAgICAgICAgICAgICI8Ym9k
eSBvbmxvYWQ9XCJ2YXIgcHJvbXB0UmVzdWx0ID0gcHJvbXB0KCdQcm9tcHQgbWVzc2FnZScpOyIK
KyAgICAgICAgICAgICAgICAgImlmIChwcm9tcHRSZXN1bHQgPT0gbnVsbCkgZG9jdW1lbnQudGl0
bGU9J251bGwnOyIKKyAgICAgICAgICAgICAgICAgImVsc2UgZG9jdW1lbnQudGl0bGUgPSBwcm9t
cHRSZXN1bHQ7XCI+PC9ib2R5PjwvaHRtbD4iOworICAgIHByb21wdENhbGxiYWNrRGF0YS5leHBl
Y3RlZE1lc3NhZ2UgPSBwcm9tcHRNZXNzYWdlOworICAgIHByb21wdENhbGxiYWNrRGF0YS5leHBl
Y3RlZERlZmF1bHRWYWx1ZSA9ICIiOworICAgIHByb21wdENhbGxiYWNrRGF0YS5yZXN1bHQgPSAi
IjsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkID0gZmFsc2U7CisgICAgZXdrX3ZpZXdf
aHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHByb21wdEhUTUwsIDAsIDApOworICAgIHdhaXRV
bnRpbFRpdGxlQ2hhbmdlZFRvKCIiKTsKKyAgICBFWFBFQ1RfU1RSRVEoZXdrX3ZpZXdfdGl0bGVf
Z2V0KHdlYlZpZXcoKSksICIiKTsKKyAgICBFWFBFQ1RfRVEocHJvbXB0Q2FsbGJhY2tEYXRhLmNh
bGxlZCwgdHJ1ZSk7CisKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEuZXhwZWN0ZWRNZXNzYWdlID0g
cHJvbXB0TWVzc2FnZTsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEuZXhwZWN0ZWREZWZhdWx0VmFs
dWUgPSAiIjsKKyAgICBwcm9tcHRDYWxsYmFja0RhdGEucmVzdWx0ID0gMDsKKyAgICBwcm9tcHRD
YWxsYmFja0RhdGEuY2FsbGVkID0gZmFsc2U7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9h
ZCh3ZWJWaWV3KCksIHByb21wdEhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbFRpdGxlQ2hhbmdl
ZFRvKCJudWxsIik7CisgICAgRVhQRUNUX1NUUkVRKGV3a192aWV3X3RpdGxlX2dldCh3ZWJWaWV3
KCkpLCAibnVsbCIpOworICAgIEVYUEVDVF9FUShwcm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkLCB0
cnVlKTsKKworICAgIGV3a1ZpZXdDbGFzcygpLT5ydW5famF2YXNjcmlwdF9wcm9tcHQgPSAwOwor
CisgICAgcHJvbXB0Q2FsbGJhY2tEYXRhLmNhbGxlZCA9IGZhbHNlOworICAgIGV3a192aWV3X2h0
bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBwcm9tcHRIVE1MLCAwLCAwKTsKKyAgICB3YWl0VW50
aWxUaXRsZUNoYW5nZWRUbygibnVsbCIpOworICAgIEVYUEVDVF9TVFJFUShld2tfdmlld190aXRs
ZV9nZXQod2ViVmlldygpKSwgIm51bGwiKTsKKyAgICBFWFBFQ1RfRVEocHJvbXB0Q2FsbGJhY2tE
YXRhLmNhbGxlZCwgZmFsc2UpOworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>