<?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>145924</bug_id>
          
          <creation_ts>2015-06-12 05:05:08 -0700</creation_ts>
          <short_desc>[EFL] Crash while opening child webview with EWK_PROCESS_MODEL_MULTIPLE_SECONDARY</short_desc>
          <delta_ts>2015-11-12 22:22:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>151247</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryuan Choi">ryuan.choi</reporter>
          <assigned_to name="Ryuan Choi">ryuan.choi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1101556</commentid>
    <comment_count>0</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-06-12 05:05:08 -0700</bug_when>
    <thetext>There are some crashes when we clicked some link that opens child window via window.open or a tag with _blank target if process model is multiple secondary.

It&apos;s because multiple secondary tries to assign new webprocess if related page is null.
In order to keep the child window in same process with opener, we should pass related page when we create WebPageProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101564</commentid>
    <comment_count>1</comment_count>
      <attachid>254796</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-06-12 05:30:30 -0700</bug_when>
    <thetext>Created attachment 254796
first_suggestion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101874</commentid>
    <comment_count>2</comment_count>
      <attachid>254796</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-14 21:42:04 -0700</bug_when>
    <thetext>Comment on attachment 254796
first_suggestion

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

&gt; Source/WebKit2/ChangeLog:13
&gt; +        page is null. In order to keep the child window in same process with opener,

&gt; &quot;In order to keep the child window in same process with opener,&quot;

When we run EWebKit with EWK_PROCESS_MODEL_MULTIPLE_SECONDARY though, should we keep new child window in same webprocess ? Does the &quot;same process&quot; mean UIProcess ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:366
&gt; +EAPI Evas_Object *ewk_view_smart_add_with_opener(Evas *e, Evas_Smart *smart, Evas_Object *opener);

I&apos;m not sure if &quot;opener&quot; is clear name for this API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101875</commentid>
    <comment_count>3</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-06-14 21:54:16 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 254796 [details]
&gt; first_suggestion
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=254796&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:13
&gt; &gt; +        page is null. In order to keep the child window in same process with opener,
&gt; 
&gt; &gt; &quot;In order to keep the child window in same process with opener,&quot;
&gt; 
&gt; When we run EWebKit with EWK_PROCESS_MODEL_MULTIPLE_SECONDARY though, should
&gt; we keep new child window in same webprocess ? Does the &quot;same process&quot; mean
&gt; UIProcess ?
&gt; 
Sure, If not, we can&apos;t share the information between opener and child.
same process mean that same webprocess.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:366
&gt; &gt; +EAPI Evas_Object *ewk_view_smart_add_with_opener(Evas *e, Evas_Smart *smart, Evas_Object *opener);
&gt; 
&gt; I&apos;m not sure if &quot;opener&quot; is clear name for this API.

I agree, however I don&apos;t have good name for this.
In fact, this API is little bit ugly because we should use it only for window.open and opener means the ewk_view indicating javscript object &quot;window.opener&quot;.

Anyway, there are too many APIs to create ewk_view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101879</commentid>
    <comment_count>4</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-14 22:36:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Comment on attachment 254796 [details]
&gt; &gt; first_suggestion
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=254796&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/ChangeLog:13
&gt; &gt; &gt; +        page is null. In order to keep the child window in same process with opener,
&gt; &gt; 
&gt; &gt; &gt; &quot;In order to keep the child window in same process with opener,&quot;
&gt; &gt; 
&gt; &gt; When we run EWebKit with EWK_PROCESS_MODEL_MULTIPLE_SECONDARY though, should
&gt; &gt; we keep new child window in same webprocess ? Does the &quot;same process&quot; mean
&gt; &gt; UIProcess ?
&gt; &gt; 
&gt; Sure, If not, we can&apos;t share the information between opener and child.
&gt; same process mean that same webprocess.

As far as I know, EWK_PROCESS_MODEL_MULTIPLE_SECONDARY creates a new webprocess for a child window, right ? Under this understanding, I don&apos;t know below sentence well. Because EWK_PROCESS_MODEL_MULTIPLE_SECONDARY makes new webprocess for new child window. But I see that child window needs to have a reference to opener window.

&gt; &quot;In order to keep the child window in same process with opener,&quot;



&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:366
&gt; &gt; &gt; +EAPI Evas_Object *ewk_view_smart_add_with_opener(Evas *e, Evas_Smart *smart, Evas_Object *opener);
&gt; &gt; 
&gt; &gt; I&apos;m not sure if &quot;opener&quot; is clear name for this API.
&gt; 
&gt; I agree, however I don&apos;t have good name for this.
&gt; In fact, this API is little bit ugly because we should use it only for
&gt; window.open and opener means the ewk_view indicating javscript object
&gt; &quot;window.opener&quot;.
&gt; 
&gt; Anyway, there are too many APIs to create ewk_view.

How about ewk_view_smart_add_with_parent ? Or, if we use _opener, I think we have to add more detailed description in API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101883</commentid>
    <comment_count>5</comment_count>
      <attachid>254796</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-06-14 23:22:14 -0700</bug_when>
    <thetext>Comment on attachment 254796
first_suggestion

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

&gt;&gt;&gt;&gt; Source/WebKit2/ChangeLog:13
&gt;&gt;&gt;&gt; +        page is null. In order to keep the child window in same process with opener,
&gt;&gt;&gt; 
&gt;&gt;&gt; 
&gt;&gt; 
&gt;&gt; Sure, If not, we can&apos;t share the information between opener and child.
&gt;&gt; same process mean that same webprocess.
&gt; 
&gt; As far as I know, EWK_PROCESS_MODEL_MULTIPLE_SECONDARY creates a new webprocess for a child window, right ? Under this understanding, I don&apos;t know below sentence well. Because EWK_PROCESS_MODEL_MULTIPLE_SECONDARY makes new webprocess for new child window. But I see that child window needs to have a reference to opener window.

EWK_PROCESS_MODEL_MULTIPLE_SECONDARY basically creates new webprocess for the new webview.
But child webview via window.open or A link(with _blank) should be created in webprocess of opener.

&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:366
&gt;&gt;&gt;&gt; +EAPI Evas_Object *ewk_view_smart_add_with_opener(Evas *e, Evas_Smart *smart, Evas_Object *opener);
&gt;&gt;&gt; 
&gt;&gt;&gt; I&apos;m not sure if &quot;opener&quot; is clear name for this API.
&gt;&gt; 
&gt;&gt; I agree, however I don&apos;t have good name for this.
&gt;&gt; In fact, this API is little bit ugly because we should use it only for window.open and opener means the ewk_view indicating javscript object &quot;window.opener&quot;.
&gt;&gt; 
&gt;&gt; Anyway, there are too many APIs to create ewk_view.
&gt; 
&gt; How about ewk_view_smart_add_with_parent ? Or, if we use _opener, I think we have to add more detailed description in API.

ewk_view_smart_add_with_parent looks general.
I will consider mode description.

BTW, I hope that we have a chance to refactor ewk APIs like MAC port ?
Then we may need only two APIs.
ewk_view_add(Evas*);
ewk_view_smart_add(Evas*, Evas_Smart*, Ewk_View_Configuration*);

Then, we don&apos;t need Ewk_Context and Ewk_PageGroup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102108</commentid>
    <comment_count>6</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-06-15 18:13:44 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; BTW, I hope that we have a chance to refactor ewk APIs like MAC port ?
&gt; Then we may need only two APIs.
&gt; ewk_view_add(Evas*);
&gt; ewk_view_smart_add(Evas*, Evas_Smart*, Ewk_View_Configuration*);
&gt; 
&gt; Then, we don&apos;t need Ewk_Context and Ewk_PageGroup.

I agree with this change. We also need to use APIConfiguration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102125</commentid>
    <comment_count>7</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-06-15 18:58:22 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; BTW, I hope that we have a chance to refactor ewk APIs like MAC port ?
&gt; &gt; Then we may need only two APIs.
&gt; &gt; ewk_view_add(Evas*);
&gt; &gt; ewk_view_smart_add(Evas*, Evas_Smart*, Ewk_View_Configuration*);
&gt; &gt; 
&gt; &gt; Then, we don&apos;t need Ewk_Context and Ewk_PageGroup.
&gt; 
&gt; I agree with this change. We also need to use APIConfiguration.

OK, then I will check and write an email about it.
I will hold this issue until we decide direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140579</commentid>
    <comment_count>8</comment_count>
      <attachid>265111</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-11-09 16:10:23 -0800</bug_when>
    <thetext>Created attachment 265111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140587</commentid>
    <comment_count>9</comment_count>
      <attachid>265115</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-11-09 16:26:18 -0800</bug_when>
    <thetext>Created attachment 265115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140605</commentid>
    <comment_count>10</comment_count>
      <attachid>265115</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-11-09 16:53:06 -0800</bug_when>
    <thetext>Comment on attachment 265115
Patch

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

LGTM now. Thanks.

&gt; Tools/MiniBrowser/efl/main.c:2272
&gt; +    Ewk_Context *context = ewk_view_context_get(window-&gt;ewk_view);

It&apos;s extremely rare case ewk_view_context_get() returns null though, it would be good to add ASSERT(context);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140635</commentid>
    <comment_count>11</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-11-09 17:24:44 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Tools/MiniBrowser/efl/main.c:2272
&gt; &gt; +    Ewk_Context *context = ewk_view_context_get(window-&gt;ewk_view);
&gt; 
&gt; It&apos;s extremely rare case ewk_view_context_get() returns null though, it
&gt; would be good to add ASSERT(context);

I missed to know this file is one of MiniBrowser. Let&apos;s land !</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140644</commentid>
    <comment_count>12</comment_count>
      <attachid>265115</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-09 17:46:39 -0800</bug_when>
    <thetext>Comment on attachment 265115
Patch

Clearing flags on attachment: 265115

Committed r192196: &lt;http://trac.webkit.org/changeset/192196&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140645</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-09 17:46:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140845</commentid>
    <comment_count>14</comment_count>
      <attachid>265115</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-10 10:56:53 -0800</bug_when>
    <thetext>Comment on attachment 265115
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:746
&gt; +    if (!ewk_view_title_get(s_newWindowObject), &quot;Page1&quot;)

Did you mean if (!strcmp(ewk_view_title_get(s_newWindowObject), &quot;Page1&quot;)) ?

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:758
&gt; +    if (!ewk_view_title_get(s_newWindowObject), &quot;Page2&quot;)

ditto

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:780
&gt; +    if (!ewk_view_title_get(s_newWindowObject), &quot;Page1&quot;)

ditto

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:792
&gt; +    if (!ewk_view_title_get(s_newWindowObject), &quot;Page2&quot;)

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140846</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-10 10:57:38 -0800</bug_when>
    <thetext>(In reply to comment #14)
rs=me for the followup fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141033</commentid>
    <comment_count>16</comment_count>
      <attachid>265115</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-11-10 19:24:58 -0800</bug_when>
    <thetext>Comment on attachment 265115
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:746
&gt;&gt; +    if (!ewk_view_title_get(s_newWindowObject), &quot;Page1&quot;)
&gt; 
&gt; Did you mean if (!strcmp(ewk_view_title_get(s_newWindowObject), &quot;Page1&quot;)) ?

OMG. My stupid fault. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141780</commentid>
    <comment_count>17</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-11-12 22:22:47 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Comment on attachment 265115 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=265115&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp:746
&gt; &gt;&gt; +    if (!ewk_view_title_get(s_newWindowObject), &quot;Page1&quot;)
&gt; &gt; 
&gt; &gt; Did you mean if (!strcmp(ewk_view_title_get(s_newWindowObject), &quot;Page1&quot;)) ?
&gt; 
&gt; OMG. My stupid fault. :(

Sorry, I created th bug 151247 to cover this issue.

After fixed these typos, there are some bugs that first test(for window.open()) affect second test(for blank target).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254796</attachid>
            <date>2015-06-12 05:30:30 -0700</date>
            <delta_ts>2015-11-09 16:10:17 -0800</delta_ts>
            <desc>first_suggestion</desc>
            <filename>bug-145924-20150612212956.patch</filename>
            <type>text/plain</type>
            <size>28585</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1Mzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjYxZDg3OWI0NWUzZmZl
ZjNjZjY5YWY2MzE3MGYyOGM3MzAxMzBkOS4uNGQwMWVlODk4OWUwYTRjNzZjYmU3ZDBmMmIyNTgw
NWUyZGNlZGE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE1LTA2LTEyICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIENyYXNo
IHdoaWxlIG9wZW5pbmcgY2hpbGQgd2VidmlldyB3aXRoIEVXS19QUk9DRVNTX01PREVMX01VTFRJ
UExFX1NFQ09OREFSWQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ1OTI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlcmUgYXJlIHNvbWUgY3Jhc2hlcyB3aGVuIHdlIGNsaWNrZWQgc29tZSBsaW5rIHRo
YXQgb3BlbnMgY2hpbGQgd2luZG93CisgICAgICAgIHZpYSB3aW5kb3cub3BlbiBvciBhIHRhZyB3
aXRoIF9ibGFuayB0YXJnZXQgaWYgcHJvY2VzcyBtb2RlbCBpcyBtdWx0aXBsZQorICAgICAgICBz
ZWNvbmRhcnkuCisKKyAgICAgICAgSXQncyBiZWNhdXNlIG11bHRpcGxlIHNlY29uZGFyeSB0cmll
cyB0byBhc3NpZ24gbmV3IHdlYnByb2Nlc3MgaWYgcmVsYXRlZAorICAgICAgICBwYWdlIGlzIG51
bGwuIEluIG9yZGVyIHRvIGtlZXAgdGhlIGNoaWxkIHdpbmRvdyBpbiBzYW1lIHByb2Nlc3Mgd2l0
aCBvcGVuZXIsCisgICAgICAgIHdlIHNob3VsZCBwYXNzIHJlbGF0ZWQgcGFnZSB3aGVuIHdlIGNy
ZWF0ZSBXZWJQYWdlUHJveHkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIG5ldyBBUEksIGV3
a192aWV3X3NtYXJ0X2FkZF93aXRoX29wZW5lciB0byBwYXNzIHJlbGF0ZWQKKyAgICAgICAgcGFn
ZSB0byBXZWJQYWdlUHJveHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3Q3JlYXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgICh0b0V3a1ZpZXcpOgor
ICAgICAgICAodG9Fd2tWaWV3Q2hlY2tlZCk6CisgICAgICAgIChFV0tWaWV3Q3JlYXRlKToKKyAg
ICAgICAgKGV3a192aWV3X3NtYXJ0X2FkZCk6CisgICAgICAgIChld2tfdmlld19zbWFydF9hZGRf
d2l0aF9vcGVuZXIpOiBBZGRlZCB0byBwYXNzIHJlbGF0ZWQgcGFnZS4KKyAgICAgICAgKGV3a192
aWV3X2FkZF93aXRoX2NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0QmFzZS5jcHA6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6Ondh
aXRVbnRpbFRpdGxlQ2hhbmdlZFRvKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRU
ZXN0QmFzZTo6d2FpdFVudGlsTm90TnVsbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOiBBZGRlZCB0ZXN0IGNhc2VzIHRv
IHRlc3Qgd2luZG93X2NyZWF0ZSBzbWFydCBtZXRob2QuCisgICAgICAgICh3aW5kb3dDcmVhdGVD
YWxsYmFjayk6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAoRVdLMlZpZXdUZXN0TmV3V2lu
ZG93V2l0aE11bHRpcGxlUHJvY2Vzc2VzOjpFV0syVmlld1Rlc3ROZXdXaW5kb3dXaXRoTXVsdGlw
bGVQcm9jZXNzZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dl
YlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdFZmw6OldlYlZpZXdFZmwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5oOgorCiAyMDE1LTA2LTA5ICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGNvZGUgdG8ga2Vl
cCB0cmFjayBvZiBwbHVnLWluIGRhdGEgaG9zdCBuYW1lcyBpbiB3ZWJzaXRlIGRhdGEgcmVjb3Jk
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvV0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9Db29y
ZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAKaW5kZXggOWEyMTEwNGY4OWI4YWIyYzNlYjQyOThj
NTk1MjhmZWRjZjIzYzYyZC4uMzhhMDg1MDA0MDUxNTYxNjdlNjZjZmUwNjc4YTEyNTU3NmIyMzY0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvV0tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwCkBAIC0yOSw5ICsyOSw5IEBACiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLVdLVmlld1JlZiBX
S1ZpZXdDcmVhdGUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZikKK1dLVmlld1JlZiBXS1ZpZXdDcmVhdGUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYs
IFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgV0tQYWdlUmVmIHJlbGF0ZWRQYWdlKQogewot
ICAgIFJlZlB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gV2ViVmlldzo6Y3JlYXRlKHRvSW1wbChjb250
ZXh0UmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJlZikpOworICAgIFJlZlB0cjxXZWJWaWV3PiB3ZWJW
aWV3ID0gV2ViVmlldzo6Y3JlYXRlKHRvSW1wbChjb250ZXh0UmVmKSwgdG9JbXBsKHBhZ2VHcm91
cFJlZiksIHRvSW1wbChyZWxhdGVkUGFnZSkpOwogICAgIHJldHVybiB0b0FQSSh3ZWJWaWV3LnJl
bGVhc2UoKS5sZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5oCmluZGV4IGYxNDg4
ZTNhZTkyMWJkM2UzODE0Mjc2OTE0OWRjMTkwZWJlY2ZlZTguLmI5MDRlN2FlM2YwMGYzOWM0NzA2
ZmQzMmYxODkzMjcyYjFlNTlmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5oCkBAIC02NCw3ICs2
NCw3IEBAIHR5cGVkZWYgc3RydWN0IFdLVmlld0NsaWVudFYwIHsKICAgICBXS1ZpZXdEb25lV2l0
aFRvdWNoRXZlbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgZG9uZVdpdGhUb3VjaEV2ZW50Owog
fSBXS1ZpZXdDbGllbnRWMDsKIAotV0tfRVhQT1JUIFdLVmlld1JlZiBXS1ZpZXdDcmVhdGUoV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCk7CitXS19FWFBPUlQg
V0tWaWV3UmVmIFdLVmlld0NyZWF0ZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3JvdXBS
ZWYgcGFnZUdyb3VwLCBXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpOwogCiBXS19FWFBPUlQgdm9pZCBX
S1ZpZXdJbml0aWFsaXplKFdLVmlld1JlZik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCA2YzM1ZDZlZjUyOWQyMjkxNzMzYjQyN2JjY2Ey
ODhlMjVkZjg5NTIwLi4yZGMyMTU0OWRhODk5OGVlYzYxMDZjZDY0ZGNiODBjNTQyMmIyYTBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC00
OSwxNiArNDksMjEgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAorc3RhdGljIGlubGlu
ZSBFd2tWaWV3KiB0b0V3a1ZpZXcoY29uc3QgRXZhc19PYmplY3QqIGV2YXNPYmplY3QpCit7Cisg
ICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdf
U21hcnRfRGF0YSo+KGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KGV2YXNPYmplY3QpKTsKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLCBudWxscHRyKTsKKwor
ICAgIHJldHVybiBzbWFydERhdGEtPnByaXY7Cit9CisKIHN0YXRpYyBpbmxpbmUgRXdrVmlldyog
dG9Fd2tWaWV3Q2hlY2tlZChjb25zdCBFdmFzX09iamVjdCogZXZhc09iamVjdCkKIHsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXZhc09iamVjdCwgbnVsbHB0cik7CiAgICAg
aWYgKEVJTkFfVU5MSUtFTFkoIWlzRXdrVmlld0V2YXNPYmplY3QoZXZhc09iamVjdCkpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0
YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dl
dChldmFzT2JqZWN0KSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0
RGF0YSwgbnVsbHB0cik7Ci0KLSAgICByZXR1cm4gc21hcnREYXRhLT5wcml2OworICAgIHJldHVy
biB0b0V3a1ZpZXcoZXZhc09iamVjdCk7CiB9CiAKICNkZWZpbmUgRVdLX1ZJRVdfSU1QTF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIGltcGwsIC4uLikgICAgICAgICAgICAgICAgICAgICAgICBcCkBA
IC03OCwxNCArODMsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3NtYXJ0X2NsYXNzX3NldChFd2tf
Vmlld19TbWFydF9DbGFzcyogYXBpKQogICAgIHJldHVybiBFd2tWaWV3Ojppbml0U21hcnRDbGFz
c0ludGVyZmFjZSgqYXBpKTsKIH0KIAotRXZhc19PYmplY3QqIEVXS1ZpZXdDcmVhdGUoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgRXZhcyogY2FudmFzLCBF
dmFzX1NtYXJ0KiBzbWFydCkKK0V2YXNfT2JqZWN0KiBFV0tWaWV3Q3JlYXRlKFdLQ29udGV4dFJl
ZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIFdLUGFnZVJlZiByZWxhdGVkUGFn
ZSwgRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCkKIHsKICAgICBpZiAoIUV3a01haW46
OnNpbmdsZXRvbigpLmlzSW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBFSU5BX0xPR19DUklUKCJF
V2ViS2l0IGhhcyBub3QgYmVlbiBpbml0aWFsaXplZC4gWW91IG11c3QgY2FsbCBld2tfaW5pdCgp
IGJlZm9yZSBjcmVhdGluZyB2aWV3LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICBXS1JldGFpblB0cjxXS1ZpZXdSZWY+IHdrVmlldyA9IGFkb3B0V0soV0tWaWV3Q3Jl
YXRlKGNvbnRleHQsIHBhZ2VHcm91cCkpOworICAgIFdLUmV0YWluUHRyPFdLVmlld1JlZj4gd2tW
aWV3ID0gYWRvcHRXSyhXS1ZpZXdDcmVhdGUoY29udGV4dCwgcGFnZUdyb3VwLCByZWxhdGVkUGFn
ZSkpOwogICAgIGlmIChFd2tWaWV3KiBld2tWaWV3ID0gRXdrVmlldzo6Y3JlYXRlKHdrVmlldy5n
ZXQoKSwgY2FudmFzLCBzbWFydCkpCiAgICAgICAgIHJldHVybiBld2tWaWV3LT5ldmFzT2JqZWN0
KCk7CiAKQEAgLTEwOSw3ICsxMTQsMTggQEAgRXZhc19PYmplY3QqIGV3a192aWV3X3NtYXJ0X2Fk
ZChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBFd2tfQ29udGV4dCogY28KICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXdrUGFnZUdyb3VwLCBudWxscHRyKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXdrUGFnZUdyb3VwLT53a1BhZ2VHcm91
cCgpLCBudWxscHRyKTsKIAotICAgIHJldHVybiBFV0tWaWV3Q3JlYXRlKGV3a0NvbnRleHQtPndr
Q29udGV4dCgpLCBld2tQYWdlR3JvdXAtPndrUGFnZUdyb3VwKCksIGNhbnZhcywgc21hcnQpOwor
ICAgIHJldHVybiBFV0tWaWV3Q3JlYXRlKGV3a0NvbnRleHQtPndrQ29udGV4dCgpLCBld2tQYWdl
R3JvdXAtPndrUGFnZUdyb3VwKCksIG51bGxwdHIsIGNhbnZhcywgc21hcnQpOworfQorCitFdmFz
X09iamVjdCogZXdrX3ZpZXdfc21hcnRfYWRkX3dpdGhfb3BlbmVyKEV2YXMqIGNhbnZhcywgRXZh
c19TbWFydCogc21hcnQsIEV2YXNfT2JqZWN0KiBvcGVuZXIpCit7CisgICAgaWYgKCFvcGVuZXIp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRXdrQ29udGV4dCogZXdrQ29udGV4dCA9
IGV3a19vYmplY3RfY2FzdDxFd2tDb250ZXh0Kj4oZXdrX3ZpZXdfY29udGV4dF9nZXQob3BlbmVy
KSk7CisgICAgRXdrUGFnZUdyb3VwKiBld2tQYWdlR3JvdXAgPSBld2tfb2JqZWN0X2Nhc3Q8RXdr
UGFnZUdyb3VwKj4oZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQob3BlbmVyKSk7CisKKyAgICByZXR1
cm4gRVdLVmlld0NyZWF0ZShld2tDb250ZXh0LT53a0NvbnRleHQoKSwgZXdrUGFnZUdyb3VwLT53
a1BhZ2VHcm91cCgpLCB0b0V3a1ZpZXcob3BlbmVyKS0+d2tQYWdlKCksIGNhbnZhcywgc21hcnQp
OwogfQogCiBFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2YXMqIGNhbnZhcykKQEAgLTEyMyw3
ICsxMzksNyBAQCBFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkX3dpdGhfY29udGV4dChFdmFzKiBj
YW52YXMsIEV3a19Db250ZXh0KiBjb250ZXh0KQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChld2tDb250ZXh0LCBudWxscHRyKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoZXdrQ29udGV4dC0+d2tDb250ZXh0KCksIG51bGxwdHIpOwogCi0gICAgcmV0dXJu
IEVXS1ZpZXdDcmVhdGUoZXdrQ29udGV4dC0+d2tDb250ZXh0KCksIDAsIGNhbnZhcywgMCk7Cisg
ICAgcmV0dXJuIEVXS1ZpZXdDcmVhdGUoZXdrQ29udGV4dC0+d2tDb250ZXh0KCksIG51bGxwdHIs
IG51bGxwdHIsIGNhbnZhcywgMCk7CiB9CiAKIEV3a19Db250ZXh0KiBld2tfdmlld19jb250ZXh0
X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGMwMDEzZTZmMGUxNTFiZjQ3NWRlMTcyM2M2ZDEz
OTc1YTRkMTYxMjIuLmE0MjcxYzA3MGFiN2Y1ZGVmYTJiMzhmNDU4OWY4OGJmYzkyZGU0OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtMTYzLDgg
KzE2MywxNSBAQCBzdHJ1Y3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIC8vICAgLSBXZWIg
ZGF0YWJhc2UuCiAgICAgdW5zaWduZWQgbG9uZyBsb25nICgqZXhjZWVkZWRfZGF0YWJhc2VfcXVv
dGEpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBjaGFyICpkYXRhYmFzZU5hbWUsIGNv
bnN0IGNoYXIgKmRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhLCB1
bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcg
Y3VycmVudERhdGFiYXNlVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlKTsK
IAotICAgIC8vIHdpbmRvdyBjcmVhdGlvbiBhbmQgY2xvc2luZzoKLSAgICAvLyAgIC0gQ3JlYXRl
IGEgbmV3IHdpbmRvdyB3aXRoIHNwZWNpZmllZCBmZWF0dXJlcyBhbmQgY2xvc2Ugd2luZG93Lgor
ICAgIC8qKgorICAgICAqIEBicmllZiBzbWFydCBtZXRob2QgdG8gbm90aWZ5IHRoYXQgY2hpbGQg
d2VidmlldyBpcyByZXF1aXJlZC4KKyAgICAgKgorICAgICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxl
ZCB3aGVuIGphdmFzY3JpcHQgZXhjdXRlcyB3aW5kb3cub3BlbiBvciBBIHRhZyBoYXZpbmcgX2Js
YW5rIHRhcmdldAorICAgICAqIGlzIHByZXNzZWQsCisgICAgICogVGhpcyBtZXRob2QgbXVzdCBw
YXNzIG5ldyBFd2tfVmlldyBvYmplY3QgdGhhdCBpcyBjcmVhdGVkIGJ5IGV3a192aWV3X3NtYXJ0
X2FkZF93aXRoX29wZW5lci4KKyAgICAgKgorICAgICAqIEBzZWUgZXdrX3ZpZXdfc21hcnRfYWRk
X3dpdGhfb3BlbmVyCisgICAgICovCiAgICAgRXZhc19PYmplY3QgKigqd2luZG93X2NyZWF0ZSko
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV3a19XaW5kb3dfRmVhdHVyZXMgKndpbmRv
d19mZWF0dXJlcyk7CiAgICAgdm9pZCAoKndpbmRvd19jbG9zZSkoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QpOwogfTsKQEAgLTM0NSw2ICszNTIsMjAgQEAgRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdf
c21hcnRfY2xhc3Nfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzICphcGkpOwogRUFQSSBFdmFzX09i
amVjdCAqZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXMgKmUsIEV2YXNfU21hcnQgKnNtYXJ0LCBFd2tf
Q29udGV4dCAqY29udGV4dCwgRXdrX1BhZ2VfR3JvdXAgKnBhZ2VHcm91cCk7CiAKIC8qKgorICog
Q3JlYXRlcyBhIG5ldyBFRkwgV2ViS2l0IHZpZXcgb2JqZWN0IHdpdGggRXZhc19TbWFydCBhbmQg
b3BlbmVyLgorICoKKyAqIEBub3RlIFRoaXMgaXMgYSBzcGVjaWFsIEFQSSB0byBjcmVhdGUgRXdr
X1ZpZXcgb2JqZWN0IHdoaWNoIHNoYXJlcyBwcm9jZXNzIHdpdGggb3BlbmVyCisgKiAgICAgICBh
bmQgd2luZG93X2NyZWF0ZSBtdXN0IHBhc3MgbmV3IEVXa19WaWV3IG9iamVjdCB1c2luZyB0aGlz
IEFQSS4KKyAqCisgKiBAcGFyYW0gZSBjYW52YXMgb2JqZWN0IHdoZXJlIHRvIGNyZWF0ZSB0aGUg
dmlldyBvYmplY3QKKyAqIEBwYXJhbSBzbWFydCBFdmFzX1NtYXJ0IG9iamVjdC4gSXRzIHR5cGUg
c2hvdWxkIGJlIEVXS19WSUVXX1RZUEVfU1RSCisgKiBAcGFyYW0gb3BlbmVyIEV3a1ZpZXcgb2Jq
ZWN0IHdoaWNoIHNoYXJlcyBwcm9jZXNzcworICoKKyAqIEByZXR1cm4gdmlldyBvYmplY3Qgb24g
c3VjY2VzcyBvciBAYyBOVUxMIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFdmFzX09iamVjdCAqZXdr
X3ZpZXdfc21hcnRfYWRkX3dpdGhfb3BlbmVyKEV2YXMgKmUsIEV2YXNfU21hcnQgKnNtYXJ0LCBF
dmFzX09iamVjdCAqb3BlbmVyKTsKKworLyoqCiAgKiBDcmVhdGVzIGEgbmV3IEVGTCBXZWJLaXQg
dmlldyBvYmplY3QuCiAgKgogICogQHBhcmFtIGUgY2FudmFzIG9iamVjdCB3aGVyZSB0byBjcmVh
dGUgdGhlIHZpZXcgb2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggMGU4ZDQ1OGVlYTYxNzhhMTRmNmE3M2UyODMx
NWU5ZTliM2NkOGRmMS4uOGI2MjY4MGJiY2I0OTlkOGE5ZTc2N2VjODllNWUzOTUwMjkwZjI4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3By
aXZhdGUuaApAQCAtMzMsNyArMzMsNyBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotRUFQSSBF
dmFzX09iamVjdCogRVdLVmlld0NyZWF0ZShXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmLCBF
dmFzKiwgRXZhc19TbWFydCopOworRUFQSSBFdmFzX09iamVjdCogRVdLVmlld0NyZWF0ZShXS0Nv
bnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmLCBXS1BhZ2VSZWYsIEV2YXMqLCBFdmFzX1NtYXJ0Kik7
CiBFQVBJIFdLVmlld1JlZiBFV0tWaWV3R2V0V0tWaWV3KEV2YXNfT2JqZWN0Kik7CiAKICNpZmRl
ZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFz
ZS5jcHAKaW5kZXggNDMxNmM2YTc3ZmVhM2VhNWY4NmFiZDJhZDY3NTA4NTAzMzZmZGM1Zi4uN2Ez
NDc5NzU2MmUwZGRmMTdjYjgwMjY1ODgyMzIxNTRiYzRlZTA0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRl
c3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCkBAIC0xOTksMTQgKzE5OSwxOSBAQCBz
dGF0aWMgdm9pZCBvblRpdGxlQ2hhbmdlZCh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqIHdl
YlZpZXcsIHZvaWQqKQogCiBib29sIEVXSzJVbml0VGVzdEJhc2U6OndhaXRVbnRpbFRpdGxlQ2hh
bmdlZFRvKGNvbnN0IGNoYXIqIGV4cGVjdGVkVGl0bGUsIGRvdWJsZSB0aW1lb3V0U2Vjb25kcykK
IHsKKyAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhtX3dlYlZpZXcsIGV4cGVjdGVkVGl0bGUs
IHRpbWVvdXRTZWNvbmRzKTsKK30KKworYm9vbCBFV0syVW5pdFRlc3RCYXNlOjp3YWl0VW50aWxU
aXRsZUNoYW5nZWRUbyhFdmFzX09iamVjdCogd2ViVmlldywgY29uc3QgY2hhciogZXhwZWN0ZWRU
aXRsZSwgZG91YmxlIHRpbWVvdXRTZWNvbmRzKQorewogICAgIENhbGxiYWNrRGF0YUV4cGVjdGVk
VmFsdWU8Q1N0cmluZz4gZGF0YShleHBlY3RlZFRpdGxlLCB0aW1lb3V0U2Vjb25kcyk7CiAKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQobV93ZWJWaWV3LCAidGl0bGUsY2hhbmdl
ZCIsIG9uVGl0bGVDaGFuZ2VkLCAmZGF0YSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfYWRkKHdlYlZpZXcsICJ0aXRsZSxjaGFuZ2VkIiwgb25UaXRsZUNoYW5nZWQsICZkYXRhKTsK
IAogICAgIHdoaWxlICghZGF0YS5pc0RvbmUoKSkKICAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0
ZXJhdGUoKTsKIAotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbChtX3dlYlZpZXcs
ICJ0aXRsZSxjaGFuZ2VkIiwgb25UaXRsZUNoYW5nZWQpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2RlbCh3ZWJWaWV3LCAidGl0bGUsY2hhbmdlZCIsIG9uVGl0bGVDaGFuZ2VkKTsK
IAogICAgIHJldHVybiAhZGF0YS5kaWRUaW1lT3V0KCk7CiB9CkBAIC0yNDUsNiArMjUwLDE2IEBA
IGJvb2wgRVdLMlVuaXRUZXN0QmFzZTo6d2FpdFVudGlsVHJ1ZShib29sICZmbGFnLCBkb3VibGUg
dGltZW91dFNlY29uZHMpCiAgICAgcmV0dXJuICFkYXRhLmRpZFRpbWVPdXQoKTsKIH0KIAorYm9v
bCBFV0syVW5pdFRlc3RCYXNlOjp3YWl0VW50aWxOb3ROdWxsKEV2YXNfT2JqZWN0KiogcmF3UG9p
bnRlciwgZG91YmxlIHRpbWVvdXRTZWNvbmRzKQoreworICAgIENhbGxiYWNrRGF0YUV4cGVjdGVk
VmFsdWU8Ym9vbD4gZGF0YSh0cnVlLCB0aW1lb3V0U2Vjb25kcyk7CisKKyAgICB3aGlsZSAoIWRh
dGEuaXNEb25lKCkgJiYgISpyYXdQb2ludGVyKQorICAgICAgICBlY29yZV9tYWluX2xvb3BfaXRl
cmF0ZSgpOworCisgICAgcmV0dXJuICFkYXRhLmRpZFRpbWVPdXQoKTsKK30KKwogYm9vbCBFV0sy
VW5pdFRlc3RCYXNlOjp3YWl0VW50aWxEaXJlY3Rpb25DaGFuZ2VkKEV3a19Gb2N1c19EaXJlY3Rp
b24gJmRpcmVjdGlvbiwgZG91YmxlIHRpbWVvdXRTZWNvbmRzKQogewogICAgIENhbGxiYWNrRGF0
YVRpbWVyIGRhdGEodGltZW91dFNlY29uZHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdEJhc2UuaAppbmRleCAyMzM3ZGZhNzc2ZTA3NzEzYTYzYzRlMzRlMzEzOWNjMWFi
ODIzMjg0Li4zOGQzN2Y2MDA5OWU0ZTExYzZkOTg2Y2UxYmUwMzY4Yjk4YzkzMDJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXSzJVbml0VGVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaApAQCAtNTEsOCArNTEsMTAg
QEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbG9hZFVybFN5bmMoY29uc3QgY2hhciogdXJsLCBkb3Vi
bGUgdGltZW91dFNlY29uZHMgPSBkZWZhdWx0VGltZW91dFNlY29uZHMpOwogICAgIGJvb2wgd2Fp
dFVudGlsTG9hZEZpbmlzaGVkKGRvdWJsZSB0aW1lb3V0U2Vjb25kcyA9IGRlZmF1bHRUaW1lb3V0
U2Vjb25kcyk7CiAgICAgYm9vbCB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhjb25zdCBjaGFyKiBl
eHBlY3RlZFRpdGxlLCBkb3VibGUgdGltZW91dFNlY29uZHMgPSBkZWZhdWx0VGltZW91dFNlY29u
ZHMpOworICAgIGJvb2wgd2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oRXZhc19PYmplY3QqIHdlYlZp
ZXcsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVGl0bGUsIGRvdWJsZSB0aW1lb3V0U2Vjb25kcyA9IGRl
ZmF1bHRUaW1lb3V0U2Vjb25kcyk7CiAgICAgYm9vbCB3YWl0VW50aWxVUkxDaGFuZ2VkVG8oY29u
c3QgY2hhciogZXhwZWN0ZWRVUkwsIGRvdWJsZSB0aW1lb3V0U2Vjb25kcyA9IGRlZmF1bHRUaW1l
b3V0U2Vjb25kcyk7CiAgICAgYm9vbCB3YWl0VW50aWxUcnVlKGJvb2wgJmZsYWcsIGRvdWJsZSB0
aW1lb3V0U2Vjb25kcyA9IGRlZmF1bHRUaW1lb3V0U2Vjb25kcyk7CisgICAgYm9vbCB3YWl0VW50
aWxOb3ROdWxsKEV2YXNfT2JqZWN0KiogcmF3UG9pbnRlciwgZG91YmxlIHRpbWVvdXRTZWNvbmRz
ID0gZGVmYXVsdFRpbWVvdXRTZWNvbmRzKTsKICAgICBib29sIHdhaXRVbnRpbERpcmVjdGlvbkNo
YW5nZWQoRXdrX0ZvY3VzX0RpcmVjdGlvbiAmZGlyZWN0aW9uLCBkb3VibGUgdGltZW91dFNlY29u
ZHMgPSBkZWZhdWx0VGltZW91dFNlY29uZHMpOwogICAgIEVpbmFfTGlzdCogd2FpdFVudGlsU3Bl
bGxpbmdMYW5ndWFnZXNMb2FkZWQodW5zaWduZWQgZXhwZWN0ZWRMYW5ndWFnZUNvdW50LCBkb3Vi
bGUgdGltZW91dFZhbHVlID0gZGVmYXVsdFRpbWVvdXRTZWNvbmRzKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcu
Y3BwCmluZGV4IGEwOGQyODNiNTAwYjIwZmM1OGUwYjhhYTViYTAwMzg4MDMyOTliZDcuLjZjNGFl
NDdhZDJkNGZlMDMzMWM1Y2Q2YWQ1Y2ViZTlkZTAxMDI1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAK
QEAgLTY5NCw2ICs2OTQsODEgQEAgVEVTVF9GKEVXSzJWaWV3VGVzdCwgZXdrX3ZpZXdfcnVuX2ph
dmFzY3JpcHRfcHJvbXB0KQogICAgIEVYUEVDVF9GQUxTRShwcm9tcHRDYWxsYmFja0RhdGEuY2Fs
bGVkKTsKIH0KIAorc3RhdGljIEV2YXNfT2JqZWN0KiBzX25ld1dpbmRvd09iamVjdDsKKworc3Rh
dGljIEV2YXNfT2JqZWN0KiB3aW5kb3dDcmVhdGVDYWxsYmFjayhFd2tfVmlld19TbWFydF9EYXRh
KiBzbWFydERhdGEsIGNvbnN0IEV3a19XaW5kb3dfRmVhdHVyZXMqKQoreworICAgIHNfbmV3V2lu
ZG93T2JqZWN0ID0gZXdrX3ZpZXdfc21hcnRfYWRkX3dpdGhfb3BlbmVyKAorICAgICAgICBldmFz
X29iamVjdF9ldmFzX2dldChzbWFydERhdGEtPnNlbGYpLAorICAgICAgICBldmFzX3NtYXJ0X2Ns
YXNzX25ldygmc21hcnREYXRhLT5hcGktPnNjKSwKKyAgICAgICAgc21hcnREYXRhLT5zZWxmKTsK
KworICAgIGV2YXNfb2JqZWN0X21vdmUoc19uZXdXaW5kb3dPYmplY3QsIDAsIDApOworICAgIGV2
YXNfb2JqZWN0X3Jlc2l6ZShzX25ld1dpbmRvd09iamVjdCwgZW52aXJvbm1lbnQtPmRlZmF1bHRX
aWR0aCgpLCBlbnZpcm9ubWVudC0+ZGVmYXVsdEhlaWdodCgpKTsKKyAgICBldmFzX29iamVjdF9z
aG93KHNfbmV3V2luZG93T2JqZWN0KTsKKyAgICByZXR1cm4gc19uZXdXaW5kb3dPYmplY3Q7Cit9
CisKK1RFU1RfRihFV0syVmlld1Rlc3QsIGV3a192aWV3X2NyZWF0ZV93aW5kb3cpCit7CisgICAg
c19uZXdXaW5kb3dPYmplY3QgPSBudWxscHRyOworICAgIGV3a1ZpZXdDbGFzcygpLT53aW5kb3df
Y3JlYXRlID0gd2luZG93Q3JlYXRlQ2FsbGJhY2s7CisKKyAgICBFaW5hX1N0cmluZ3NoYXJlKiBj
cmVhdGVIVE1MID0gZWluYV9zdHJpbmdzaGFyZV9wcmludGYoIjwhRE9DVFlQRSBIVE1MPjxib2R5
IG9ubG9hZD1cIndpbmRvdy5vcGVuKCclcycpO1wiPjwvYm9keT4iLCBlbnZpcm9ubWVudC0+dXJs
Rm9yUmVzb3VyY2UoIlBhZ2UxLmh0bWwiKS5kYXRhKCkpOworICAgIGV3a192aWV3X2h0bWxfc3Ry
aW5nX2xvYWQod2ViVmlldygpLCBjcmVhdGVIVE1MLCAiZmlsZTovLy8iLCBudWxscHRyKTsKKyAg
ICBBU1NFUlRfVFJVRSh3YWl0VW50aWxOb3ROdWxsKCZzX25ld1dpbmRvd09iamVjdCkpOworICAg
IGlmICghZXdrX3ZpZXdfdGl0bGVfZ2V0KHNfbmV3V2luZG93T2JqZWN0KSwgIlBhZ2UxIikKKyAg
ICAgICAgd2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oc19uZXdXaW5kb3dPYmplY3QsICJQYWdlMSIp
OworICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGNyZWF0ZUhUTUwpOworICAgIGV2YXNfb2JqZWN0
X2RlbChzX25ld1dpbmRvd09iamVjdCk7CisgICAgc19uZXdXaW5kb3dPYmplY3QgPSBudWxscHRy
OworCisgICAgY3JlYXRlSFRNTCA9IGVpbmFfc3RyaW5nc2hhcmVfcHJpbnRmKCI8IURPQ1RZUEUg
SFRNTD48Ym9keT48YSBocmVmPVwiJXNcIiB0YXJnZXQ9XCJfYmxhbmtcIj48ZGl2IHN0eWxlPVwi
d2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O1wiPlhYWFhYWDwvZGl2PjwvYT48L2JvZHk+IiwgZW52
aXJvbm1lbnQtPnVybEZvclJlc291cmNlKCJQYWdlMi5odG1sIikuZGF0YSgpKTsKKworICAgIGV3
a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBjcmVhdGVIVE1MLCAiZmlsZTovLy8i
LCBudWxscHRyKTsKKyAgICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBtb3VzZUNsaWNr
KDUwLCA1MCk7CisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsTm90TnVsbCgmc19uZXdXaW5kb3dP
YmplY3QpKTsKKyAgICBpZiAoIWV3a192aWV3X3RpdGxlX2dldChzX25ld1dpbmRvd09iamVjdCks
ICJQYWdlMiIpCisgICAgICAgIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKHNfbmV3V2luZG93T2Jq
ZWN0LCAiUGFnZTIiKTsKKworICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGNyZWF0ZUhUTUwpOwor
fQorCitjbGFzcyBFV0syVmlld1Rlc3ROZXdXaW5kb3dXaXRoTXVsdGlwbGVQcm9jZXNzZXMgOiBw
dWJsaWMgRVdLMlVuaXRUZXN0QmFzZSB7Citwcm90ZWN0ZWQ6CisgICAgRVdLMlZpZXdUZXN0TmV3
V2luZG93V2l0aE11bHRpcGxlUHJvY2Vzc2VzKCkKKyAgICB7CisgICAgICAgIG1fbXVsdGlwbGVQ
cm9jZXNzZXMgPSB0cnVlOworICAgIH0KK307CisKK1RFU1RfRihFV0syVmlld1Rlc3ROZXdXaW5k
b3dXaXRoTXVsdGlwbGVQcm9jZXNzZXMsIGV3a192aWV3X2NyZWF0ZV93aW5kb3dfd2l0aF9tdWx0
aXByb2Nlc3NlcykKK3sKKyAgICBzX25ld1dpbmRvd09iamVjdCA9IG51bGxwdHI7CisgICAgZXdr
Vmlld0NsYXNzKCktPndpbmRvd19jcmVhdGUgPSB3aW5kb3dDcmVhdGVDYWxsYmFjazsKKworICAg
IEVpbmFfU3RyaW5nc2hhcmUqIGNyZWF0ZUhUTUwgPSBlaW5hX3N0cmluZ3NoYXJlX3ByaW50Zigi
PCFET0NUWVBFIEhUTUw+PGJvZHkgb25sb2FkPVwid2luZG93Lm9wZW4oJyVzJyk7XCI+PC9ib2R5
PiIsIGVudmlyb25tZW50LT51cmxGb3JSZXNvdXJjZSgiUGFnZTEuaHRtbCIpLmRhdGEoKSk7Cisg
ICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGNyZWF0ZUhUTUwsICJmaWxl
Oi8vLyIsIG51bGxwdHIpOworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbE5vdE51bGwoJnNfbmV3
V2luZG93T2JqZWN0KSk7CisgICAgaWYgKCFld2tfdmlld190aXRsZV9nZXQoc19uZXdXaW5kb3dP
YmplY3QpLCAiUGFnZTEiKQorICAgICAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhzX25ld1dp
bmRvd09iamVjdCwgIlBhZ2UxIik7CisgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoY3JlYXRlSFRN
TCk7CisgICAgZXZhc19vYmplY3RfZGVsKHNfbmV3V2luZG93T2JqZWN0KTsKKyAgICBzX25ld1dp
bmRvd09iamVjdCA9IG51bGxwdHI7CisKKyAgICBjcmVhdGVIVE1MID0gZWluYV9zdHJpbmdzaGFy
ZV9wcmludGYoIjwhRE9DVFlQRSBIVE1MPjxib2R5PjxhIGhyZWY9XCIlc1wiIHRhcmdldD1cIl9i
bGFua1wiPjxkaXYgc3R5bGU9XCJ3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7XCI+WFhYWFhYPC9k
aXY+PC9hPjwvYm9keT4iLCBlbnZpcm9ubWVudC0+dXJsRm9yUmVzb3VyY2UoIlBhZ2UyLmh0bWwi
KS5kYXRhKCkpOworCisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGNy
ZWF0ZUhUTUwsICJmaWxlOi8vLyIsIG51bGxwdHIpOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOworICAgIG1vdXNlQ2xpY2soNTAsIDUwKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxO
b3ROdWxsKCZzX25ld1dpbmRvd09iamVjdCkpOworICAgIGlmICghZXdrX3ZpZXdfdGl0bGVfZ2V0
KHNfbmV3V2luZG93T2JqZWN0KSwgIlBhZ2UyIikKKyAgICAgICAgd2FpdFVudGlsVGl0bGVDaGFu
Z2VkVG8oc19uZXdXaW5kb3dPYmplY3QsICJQYWdlMiIpOworCisgICAgZWluYV9zdHJpbmdzaGFy
ZV9kZWwoY3JlYXRlSFRNTCk7Cit9CisKIFRFU1RfRihFV0syVmlld1Rlc3QsIGV3a192aWV3X2Nv
bnRleHRfZ2V0KQogewogICAgIEV3a19Db250ZXh0KiBjb250ZXh0ID0gZXdrX3ZpZXdfY29udGV4
dF9nZXQod2ViVmlldygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAKaW5kZXggYWQzNTU2NGE2YjcyNzgxMzBm
OTYxOGE4Y2Q5MzlkMjE2YmM4Mjk4NC4uNmZmMDZkNDhiNjg1ODBjYWJmNTM2MDRhODQyMDkwZGQy
NzZmMjY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAKQEAgLTQ3LDEzICs0NywxNCBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYlZpZXc6OldlYlZpZXco
V2ViUHJvY2Vzc1Bvb2wqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwKQorV2ViVmll
dzo6V2ViVmlldyhXZWJQcm9jZXNzUG9vbCogY29udGV4dCwgV2ViUGFnZUdyb3VwKiBwYWdlR3Jv
dXAsIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UpCiAgICAgOiBtX2ZvY3VzZWQoZmFsc2UpCiAg
ICAgLCBtX3Zpc2libGUoZmFsc2UpCiAgICAgLCBtX29wYWNpdHkoMS4wKQogewogICAgIFdlYlBh
Z2VDb25maWd1cmF0aW9uIHdlYlBhZ2VDb25maWd1cmF0aW9uOwogICAgIHdlYlBhZ2VDb25maWd1
cmF0aW9uLnBhZ2VHcm91cCA9IHBhZ2VHcm91cDsKKyAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5y
ZWxhdGVkUGFnZSA9IHJlbGF0ZWRQYWdlOwogCiAgICAgLy8gTmVlZCB0byBjYWxsIGNyZWF0ZVdl
YlBhZ2UgYWZ0ZXIgb3RoZXIgZGF0YSBtZW1iZXJzLCBzcGVjaWZpY2FsbHkgbV92aXNpYmxlLCBh
cmUgaW5pdGlhbGl6ZWQuCiAgICAgbV9wYWdlID0gY29udGV4dC0+Y3JlYXRlV2ViUGFnZSgqdGhp
cywgV1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmgKaW5kZXggMTA4
OWQ2M2Q5NTA3NmRlNDkxZmJhNGVjNmMwNWQ3MjUzNDFhMDhiMS4uN2UwMjk5YzQ3MzBkZDAxMGIw
ZGE4NDZkYzU0NDg2YzAzODFlYmIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaApAQCAtNTEsNyArNTEsNyBAQCBj
bGFzcyBXZWJWaWV3IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
Vmlldz4sIHB1YmxpYyBQYWdlQ2xpZQogcHVibGljOgogICAgIHZpcnR1YWwgfldlYlZpZXcoKTsK
IAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZpZXc+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCos
IFdlYlBhZ2VHcm91cCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZpZXc+IGNyZWF0ZShX
ZWJQcm9jZXNzUG9vbCosIFdlYlBhZ2VHcm91cCosIFdlYlBhZ2VQcm94eSopOwogCiAgICAgdm9p
ZCBpbml0aWFsaXplKCk7CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgZG91Ymxl
IG9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX29wYWNpdHk7IH0KIAogcHJvdGVjdGVkOgotICAg
IFdlYlZpZXcoV2ViUHJvY2Vzc1Bvb2wqLCBXZWJQYWdlR3JvdXAqKTsKKyAgICBXZWJWaWV3KFdl
YlByb2Nlc3NQb29sKiwgV2ViUGFnZUdyb3VwKiwgV2ViUGFnZVByb3h5Kik7CiAgICAgQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lKiBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKIAogICAgIHZv
aWQgdXBkYXRlVmlld3BvcnRTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCmluZGV4IDgxMTBmN2U4MDg5ZWVlNmEz
MzcyMzMxZjgxNGE0N2IxOGYxY2FkMzguLmM3NTk5ODM3ZjA5MzA3MjU0MzUzYzI0YTk1NDcyY2Y4
Zjc0YmM4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5z
cGVjdG9yUHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
SW5zcGVjdG9yUHJveHlFZmwuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgV2ViUGFnZVByb3h5KiBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKICAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gd2tHcm91cElkZW50aWZpZXIgPSBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXIoKS51dGY4
KCkuZGF0YSgpKSk7CiAgICAgV0tQYWdlR3JvdXBSZWYgd2tQYWdlR3JvdXAgPSBXS1BhZ2VHcm91
cENyZWF0ZVdpdGhJZGVudGlmaWVyKHdrR3JvdXBJZGVudGlmaWVyLmdldCgpKTsKIAotICAgIG1f
aW5zcGVjdG9yVmlldyA9IEVXS1ZpZXdDcmVhdGUod2tDb250ZXh0LCB3a1BhZ2VHcm91cCwgZWNv
cmVfZXZhc19nZXQobV9pbnNwZWN0b3JXaW5kb3cpLCAvKiBzbWFydCAqLyAwKTsKKyAgICBtX2lu
c3BlY3RvclZpZXcgPSBFV0tWaWV3Q3JlYXRlKHdrQ29udGV4dCwgd2tQYWdlR3JvdXAsIG51bGxw
dHIsIGVjb3JlX2V2YXNfZ2V0KG1faW5zcGVjdG9yV2luZG93KSwgLyogc21hcnQgKi8gMCk7CiAg
ICAgV0tWaWV3UmVmIHdrVmlldyA9IEVXS1ZpZXdHZXRXS1ZpZXcobV9pbnNwZWN0b3JWaWV3KTsK
IAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1RoZW1lID0gYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhERUZBVUxUX1RIRU1FX0RJUiAiL2RlZmF1bHQuZWRqIikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5jcHAKaW5kZXggYWNj
OTZlODY2MmJlMTQzMWE0ZjBmN2JmNjI4ZGVkZmM0YzIyMzA0MS4uZmQ2ZjJjNjU5M2M3MTYyMWI1
ODJkZDU1MTAwNjIwMjMxYjhiZGQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJWaWV3RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlZpZXdFZmwuY3BwCkBAIC01NSwxMyArNTUsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYlZpZXc+IFdlYlZpZXc6
OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIFdlYlBhZ2VHcm91cCogcGFnZUdy
b3VwKQorUGFzc1JlZlB0cjxXZWJWaWV3PiBXZWJWaWV3OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wq
IHByb2Nlc3NQb29sLCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgV2ViUGFnZVByb3h5KiByZWxh
dGVkUGFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpZXdFZmwocHJvY2Vzc1Bv
b2wsIHBhZ2VHcm91cCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVmlld0VmbChwcm9j
ZXNzUG9vbCwgcGFnZUdyb3VwLCByZWxhdGVkUGFnZSkpOwogfQogCi1XZWJWaWV3RWZsOjpXZWJW
aWV3RWZsKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCwgV2ViUGFnZUdyb3VwKiBwYWdlR3Jv
dXApCi0gICAgOiBXZWJWaWV3KHByb2Nlc3NQb29sLCBwYWdlR3JvdXApCitXZWJWaWV3RWZsOjpX
ZWJWaWV3RWZsKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCwgV2ViUGFnZUdyb3VwKiBwYWdl
R3JvdXAsIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UpCisgICAgOiBXZWJWaWV3KHByb2Nlc3NQ
b29sLCBwYWdlR3JvdXAsIHJlbGF0ZWRQYWdlKQogICAgICwgbV9ld2tWaWV3KDApCiAgICAgLCBt
X2hhc1JlcXVlc3RlZEZ1bGxTY3JlZW4oZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViVmlld0VmbC5oCmluZGV4IDM5OWYwN2VmOTk2M2RjZGQxY2RkZGEyMDBhYWEwZGRl
OWVkYmQxMWUuLmUwYjAwM2ZmMjI3NTVkMTcxNzU4M2Y4NzI5Y2Q0YzAzZTYwZDk5ODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5oCkBAIC02Myw3ICs2Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFZpZXdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6
Q29sb3ImKTsKICAgICBXZWJDb3JlOjpDb2xvciB2aWV3QmFja2dyb3VuZENvbG9yKCk7CiBwcml2
YXRlOgotICAgIFdlYlZpZXdFZmwoV2ViUHJvY2Vzc1Bvb2wqLCBXZWJQYWdlR3JvdXAqKTsKKyAg
ICBXZWJWaWV3RWZsKFdlYlByb2Nlc3NQb29sKiwgV2ViUGFnZUdyb3VwKiwgV2ViUGFnZVByb3h5
Kik7CiAKICAgICB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKSBvdmVycmlk
ZTsKICAgICBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94
eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzZjkzNDA5ODUwMzhiMWRlZDUwMzZmZjU3NDcwMDRmNWM5
NDM1MThiLi5jNWFkMWNiYjliZGYzMjNlNTg0NTZmOTA5MzIxM2FlNWI4YWQ4MzIwIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTUtMDYtMTIgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQG5hdmVyY29ycC5jb20+CisK
KyAgICAgICAgW0VGTF0gQ3Jhc2ggd2hpbGUgb3BlbmluZyBjaGlsZCB3ZWJ2aWV3IHdpdGggRVdL
X1BST0NFU1NfTU9ERUxfTVVMVElQTEVfU0VDT05EQVJZCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU5MjQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2VmbC9tYWluLmM6CisgICAg
ICAgICh3aW5kb3dfY3JlYXRlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRzLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
ZWZsL1BsYXRmb3JtV2ViVmlldy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQbGF0Zm9y
bVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9l
ZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcDoKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3
OjpQbGF0Zm9ybVdlYlZpZXcpOgorCiAyMDE1LTA2LTA5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIHJ1bi1iZW5jaG1hcmsgc2hvdWxkIGVpdGhlciBjaGVja291
dCBKZXRTdHJlYW0gMS4wLjEgb3Igc3VwcG9ydCBydW5uaW5nIHRoZSBsYXRlc3QgdmVyc2lvbgpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYyBiL1Rvb2xzL01pbmlCcm93
c2VyL2VmbC9tYWluLmMKaW5kZXggMTI0NjEyOGQxMzdiMzk1NjU4ODFmYTU1NDRlMjkzN2I4ZDM4
NjUzOS4uZGU5ODdmNzJhNzY3MGYzOTc2MjRkZmUwOTQ0ODIzNjBlMWU4ZGVkZSAxMDA2NDQKLS0t
IGEvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9l
ZmwvbWFpbi5jCkBAIC0yMjQzLDE4ICsyMjQzLDE5IEBAIHN0YXRpYyBCcm93c2VyX1dpbmRvdyAq
d2luZG93X2NyZWF0ZShFdmFzX09iamVjdCAqb3BlbmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
CiAKICAgICBFdmFzICpldmFzID0gZXZhc19vYmplY3RfZXZhc19nZXQod2luZG93LT5lbG1fd2lu
ZG93KTsKICAgICBFdmFzX1NtYXJ0ICpzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCZld2tW
aWV3Q2xhc3MtPnNjKTsKLSAgICBFd2tfQ29udGV4dCAqY29udGV4dDsKLSAgICBpZiAob3BlbmVy
KQotICAgICAgICBjb250ZXh0ID0gZXdrX3ZpZXdfY29udGV4dF9nZXQob3BlbmVyKTsKLSAgICBl
bHNlIGlmIChleHRlbnNpb25zX3BhdGgpCi0gICAgICAgIGNvbnRleHQgPSBld2tfY29udGV4dF9u
ZXdfd2l0aF9leHRlbnNpb25zX3BhdGgoZXh0ZW5zaW9uc19wYXRoKTsKLSAgICBlbHNlCi0gICAg
ICAgIGNvbnRleHQgPSBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpOwogCi0gICAgRXdrX1BhZ2Vf
R3JvdXAgKnBhZ2VHcm91cCA9IG9wZW5lciA/IGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KG9wZW5l
cikgOiBld2tfcGFnZV9ncm91cF9jcmVhdGUoIiIpOwotICAgIHdpbmRvdy0+ZXdrX3ZpZXcgPSBl
d2tfdmlld19zbWFydF9hZGQoZXZhcywgc21hcnQsIGNvbnRleHQsIHBhZ2VHcm91cCk7CisgICAg
aWYgKG9wZW5lcikKKyAgICAgICAgd2luZG93LT5ld2tfdmlldyA9IGV3a192aWV3X3NtYXJ0X2Fk
ZF93aXRoX29wZW5lcihldmFzLCBzbWFydCwgb3BlbmVyKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
RXdrX0NvbnRleHQgKmNvbnRleHQ7CisgICAgICAgIGlmIChleHRlbnNpb25zX3BhdGgpCisgICAg
ICAgICAgICBjb250ZXh0ID0gZXdrX2NvbnRleHRfbmV3X3dpdGhfZXh0ZW5zaW9uc19wYXRoKGV4
dGVuc2lvbnNfcGF0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnRleHQgPSBld2tf
Y29udGV4dF9kZWZhdWx0X2dldCgpOworICAgICAgICB3aW5kb3ctPmV3a192aWV3ID0gZXdrX3Zp
ZXdfc21hcnRfYWRkKGV2YXMsIHNtYXJ0LCBjb250ZXh0LCBld2tfcGFnZV9ncm91cF9jcmVhdGUo
IiIpKTsKIAotICAgIGV3a19mYXZpY29uX2RhdGFiYXNlX2ljb25fY2hhbmdlX2NhbGxiYWNrX2Fk
ZChld2tfY29udGV4dF9mYXZpY29uX2RhdGFiYXNlX2dldChjb250ZXh0KSwgb25faWNvbl9jaGFu
Z2VkX2NiLCB3aW5kb3cpOworICAgICAgICBld2tfZmF2aWNvbl9kYXRhYmFzZV9pY29uX2NoYW5n
ZV9jYWxsYmFja19hZGQoZXdrX2NvbnRleHRfZmF2aWNvbl9kYXRhYmFzZV9nZXQoY29udGV4dCks
IG9uX2ljb25fY2hhbmdlZF9jYiwgd2luZG93KTsKKyAgICB9CiAKICAgICBld2tfdmlld190aGVt
ZV9zZXQod2luZG93LT5ld2tfdmlldywgREVGQVVMVF9USEVNRV9ESVIgIi9kZWZhdWx0LmVkaiIp
OwogICAgIGlmIChkZXZpY2VfcGl4ZWxfcmF0aW8pCkBAIC0yMjc3LDYgKzIyNzgsNyBAQCBzdGF0
aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRvd19jcmVhdGUoRXZhc19PYmplY3QgKm9wZW5lciwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIC8qIFNldCB0aGUgem9vbSBsZXZlbCB0byBkZWZhdWx0
ICovCiAgICAgd2luZG93LT5jdXJyZW50X3pvb21fbGV2ZWwgPSBERUZBVUxUX1pPT01fTEVWRUw7
CiAKKyAgICBFd2tfUGFnZV9Hcm91cCAqcGFnZUdyb3VwID0gZXdrX3ZpZXdfcGFnZV9ncm91cF9n
ZXQod2luZG93LT5ld2tfdmlldyk7CiAgICAgRXdrX1NldHRpbmdzICpzZXR0aW5ncyA9IGV3a19w
YWdlX2dyb3VwX3NldHRpbmdzX2dldChwYWdlR3JvdXApOwogICAgIGV3a19zZXR0aW5nc19maWxl
X2FjY2Vzc19mcm9tX2ZpbGVfdXJsc19hbGxvd2VkX3NldChzZXR0aW5ncywgRUlOQV9UUlVFKTsK
ICAgICBld2tfc2V0dGluZ3NfZW5jb2RpbmdfZGV0ZWN0b3JfZW5hYmxlZF9zZXQoc2V0dGluZ3Ms
IGVuY29kaW5nX2RldGVjdG9yX2VuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3VXNlclZpZXdwb3J0
VG9Db250ZW50cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ29vcmRp
bmF0ZWRHcmFwaGljcy9XS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRzLmNwcAppbmRleCA3MDg5
OWI4ZGE5Y2YyZWM2NTBkN2FjMjYwOTdkYTUxNDA0MTkyYjllLi42MTk0NDYxZjgwZWQxNTcxYmFj
Y2YzYzE0Y2NkZTc5NjFkNmFmODI3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRl
bnRzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRzLmNwcApAQCAtMzgsNyArMzgs
NyBAQCBURVNUKFdlYktpdDIsIERJU0FCTEVEX1dLVmlld1VzZXJWaWV3cG9ydFRvQ29udGVudHMp
CiAgICAgLy8gY29udmVyc2lvbiBtYXRoIGlzIHJpZ2h0LgogCiAgICAgV0tSZXRhaW5QdHI8V0tD
b250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAgICBXS1Jl
dGFpblB0cjxXS1ZpZXdSZWY+IHdlYlZpZXcoQWRvcHRXSywgV0tWaWV3Q3JlYXRlKGNvbnRleHQu
Z2V0KCksIDApKTsKKyAgICBXS1JldGFpblB0cjxXS1ZpZXdSZWY+IHdlYlZpZXcoQWRvcHRXSywg
V0tWaWV3Q3JlYXRlKGNvbnRleHQuZ2V0KCksIDAsIDApKTsKIAogICAgIFdLVmlld0luaXRpYWxp
emUod2ViVmlldy5nZXQoKSk7CiAgICAgV0tQYWdlU2V0VXNlRml4ZWRMYXlvdXQoV0tWaWV3R2V0
UGFnZSh3ZWJWaWV3LmdldCgpKSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9lZmwvUGxhdGZvcm1XZWJWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZWZsL1Bs
YXRmb3JtV2ViVmlldy5jcHAKaW5kZXggMmRlN2VmYTU1YmQyMTQ1YmMzMzY0ZTQ5NzFlZWU0Njhk
ZTBmZTgyNy4uMGU1ZjhhMzk1OTMzODFjMjIxZDQ2NDIxNDAzNzE4MWExNTE4ZDQ0YiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9lZmwvUGxhdGZvcm1XZWJWaWV3LmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2VmbC9QbGF0Zm9ybVdlYlZpZXcuY3BwCkBAIC02OCw3ICs2OCw3
IEBAIFBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0
UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvCiB7CiAgICAgbV93aW5kb3cgPSBjcmVhdGVFY29y
ZUV2YXMoKTsKIAotICAgIG1fdmlldyA9IEVXS1ZpZXdDcmVhdGUoY29udGV4dFJlZiwgcGFnZUdy
b3VwUmVmLCBlY29yZV9ldmFzX2dldChtX3dpbmRvdyksIC8qIHNtYXJ0ICovIDApOworICAgIG1f
dmlldyA9IEVXS1ZpZXdDcmVhdGUoY29udGV4dFJlZiwgcGFnZUdyb3VwUmVmLCBudWxscHRyLCBl
Y29yZV9ldmFzX2dldChtX3dpbmRvdyksIC8qIHNtYXJ0ICovIDApOwogCiAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHdrVGhlbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKERFRkFVTFRfVEhFTUVfRElSICIvZGVmYXVsdC5lZGoiKSk7CiAgICAgV0tWaWV3U2V0
VGhlbWVQYXRoKEVXS1ZpZXdHZXRXS1ZpZXcobV92aWV3KSwgd2tUaGVtZS5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcAppbmRl
eCBkODI2NzEwYWNkYjgzMTE5MTg1NGM0ZmNlMGM1NzdlYjU3YjkzZGY1Li5hZDNhNTRiYjU0Yzkx
MGMyYmM1OTRhYzU3MTVjNjJkM2VlNjQ2ZDcxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGlj
IEVjb3JlX0V2YXMqIGluaXRFY29yZUV2YXMoKQogICAgIHJldHVybiBlY29yZUV2YXM7CiB9CiAK
LVBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0LCBX
S1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIFdLUGFnZVJlZiAvKiByZWxhdGVkUGFnZSAqLywgV0tE
aWN0aW9uYXJ5UmVmIG9wdGlvbnMpCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBXS1BhZ2VSZWYg
cmVsYXRlZFBhZ2UsIFdLRGljdGlvbmFyeVJlZiBvcHRpb25zKQogICAgIDogbV9vcHRpb25zKG9w
dGlvbnMpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVzZUZpeGVkTGF5b3V0S2V5
KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVc2VGaXhlZExheW91dCIp
KTsKQEAgLTYxLDcgKzYxLDcgQEAgUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwKIAogICAgIG1fd2lu
ZG93ID0gaW5pdEVjb3JlRXZhcygpOwogCi0gICAgbV92aWV3ID0gRVdLVmlld0NyZWF0ZShjb250
ZXh0LCBwYWdlR3JvdXAsIGVjb3JlX2V2YXNfZ2V0KG1fd2luZG93KSwgLyogc21hcnQgKi8gMCk7
CisgICAgbV92aWV3ID0gRVdLVmlld0NyZWF0ZShjb250ZXh0LCBwYWdlR3JvdXAsIHJlbGF0ZWRQ
YWdlLCBlY29yZV9ldmFzX2dldChtX3dpbmRvdyksIC8qIHNtYXJ0ICovIDApOwogCiAgICAgV0tQ
YWdlU2V0VXNlRml4ZWRMYXlvdXQoV0tWaWV3R2V0UGFnZShFV0tWaWV3R2V0V0tWaWV3KG1fdmll
dykpLCBtX3VzaW5nRml4ZWRMYXlvdXQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265111</attachid>
            <date>2015-11-09 16:10:23 -0800</date>
            <delta_ts>2015-11-09 16:26:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145924-20151110091019.patch</filename>
            <type>text/plain</type>
            <size>36826</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjAyZDZiNmVmMjMwNGI2
ZjJjNzQxYTVkMTk4YWM1MmEyZjQ3NGI1ZS4uY2FhZDQ0NDhjM2E3OTY3N2MxZTdhOTg4YzIzMzU1
ZmQzMDlkMTUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE1LTExLTA5ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIENyYXNo
IHdoaWxlIG9wZW5pbmcgY2hpbGQgd2VidmlldyB3aXRoIEVXS19QUk9DRVNTX01PREVMX01VTFRJ
UExFX1NFQ09OREFSWQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ1OTI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlcmUgYXJlIHNvbWUgY3Jhc2hlcyB3aGVuIHdlIGNsaWNrZWQgdGhlIGxpbmsgdGhh
dCBvcGVucyBjaGlsZCB3aW5kb3cKKyAgICAgICAgdmlhIHdpbmRvdy5vcGVuIG9yIDxhPiB0YWcg
d2l0aCBfYmxhbmsgdGFyZ2V0IGlmIHByb2Nlc3MgbW9kZWwgaXMgbXVsdGlwbGUKKyAgICAgICAg
c2Vjb25kYXJ5LgorICAgICAgICAKKyAgICAgICAgSXQncyBiZWNhdXNlIG11bHRpcGxlIHNlY29u
ZGFyeSBwcm9jZXNzIG1vZGVsIHRyaWVzIHRvIGFzc2lnbiBuZXcgd2VicHJvY2VzcworICAgICAg
ICBpZiByZWxhdGVkIHBhZ2UgaXMgbnVsbC4gSW4gb3JkZXIgdG8ga2VlcCB0aGUgY2hpbGQgd2lu
ZG93IGluIHNhbWUgcHJvY2VzcworICAgICAgICB3aXRoIG9wZW5lciwgd2Ugc2hvdWxkIHBhc3Mg
cmVsYXRlZCBwYWdlIHdoZW4gd2UgY3JlYXRlIFdlYlBhZ2VQcm94eS4KKyAgICAgICAgCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBld2tfdmlld19jb25maWd1cmF0aW9uIG9iamVjdCBhbmQgZXdr
X3ZpZXdfYWRkX2NvbmZpZ3VyYXRpb24oKQorICAgICAgICB0byBwYXNzIHJlbGF0ZWQgcGFnZSB0
byBXZWJQYWdlUHJveHkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwOgorICAgICAg
ICAoV0tWaWV3Q3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5o
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAgICAgICAo
RXdrVmlldzo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuY3BwOgorICAgICAgICAoRVdLVmlld0NyZWF0ZSk6CisgICAgICAgIChld2tfdmlld19z
bWFydF9hZGQpOgorICAgICAgICAoZXdrX3ZpZXdfYWRkX3dpdGhfY29uZmlndXJhdGlvbik6IEFk
ZGVkIHRvIHBhc3MgY29uZmlndXJhdGlvbi4KKyAgICAgICAgKGV3a192aWV3X2FkZF93aXRoX2Nv
bnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHA6Cisg
ICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OndhaXRVbnRpbFRpdGxlQ2hh
bmdlZFRvKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0QmFzZTo6d2FpdFVu
dGlsTm90TnVsbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0syVW5pdFRlc3RCYXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvdGVzdF9ld2syX3ZpZXcuY3BwOiBBZGRlZCB0ZXN0IGNhc2VzIHRvIHRlc3Qgd2luZG93X2Ny
ZWF0ZSBzbWFydCBtZXRob2QuCisgICAgICAgICh3aW5kb3dDcmVhdGVDYWxsYmFjayk6CisgICAg
ICAgIChURVNUX0YpOgorICAgICAgICAoRVdLMlZpZXdUZXN0TmV3V2luZG93V2l0aE11bHRpcGxl
UHJvY2Vzc2VzOjpFV0syVmlld1Rlc3ROZXdXaW5kb3dXaXRoTXVsdGlwbGVQcm9jZXNzZXMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl93aW5kb3dfZmVhdHVy
ZXMuY3BwOgorICAgICAgICAoRVdLMldpbmRvd0ZlYXR1cmVzVGVzdDo6Y3JlYXRlRGVmYXVsdFdp
bmRvdyk6CisgICAgICAgIChFV0syV2luZG93RmVhdHVyZXNUZXN0OjpjcmVhdGVXaW5kb3cpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJJ
bnNwZWN0b3JQcm94eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwv
V2ViVmlld0VmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdFZmw6OldlYlZpZXdFZmwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvV2ViVmlld0VmbC5oOgorCiAyMDE1LTExLTA3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBDb2xvclNwYWNlIGFyZ3VtZW50IHRv
IGFsbCB0aGUgZHJhd2luZyBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA4M2Uy
ZWU5ODExY2Y2ZDJhNTgwZDJlOWU2ZGVkMDMzYWE3NzZkZDI4Li5kYmU4NzRiZDdkNjNhNDhkZGFj
ZjBlMmVhYjhiMTM3MjYxYmEzN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTE2
LDYgKzExNiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a191cmxfcmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJs
X3Jlc3BvbnNlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVl
c3QuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfY29uZmlndXJhdGlvbi5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3LmNwcAppbmRl
eCBhNTg4NDgwNjNlODAwYjFlM2U5MjY1NDBhMTE5MWE4OTc1ZDkwOTAyLi45NjU0ZDVlZmFkZjNh
ZWQ1NzEzYTlhMGYyZGU0MTg0NmI0MWZmOGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHAK
QEAgLTIzLDE1ICsyMywxNiBAQAogCiAjaW5jbHVkZSAiV0tWaWV3LmgiCiAKKyNpbmNsdWRlICJB
UElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUg
IldlYlZpZXcuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogCi1XS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCitXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFdL
Q29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIHBhZ2VDb25maWd1cmF0
aW9uKQogewotICAgIFJlZlB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gV2ViVmlldzo6Y3JlYXRlKHRv
SW1wbChjb250ZXh0UmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJlZikpOworICAgIFJlZlB0cjxXZWJW
aWV3PiB3ZWJWaWV3ID0gV2ViVmlldzo6Y3JlYXRlKHRvSW1wbChjb250ZXh0KSwgKnRvSW1wbChw
YWdlQ29uZmlndXJhdGlvbikpOwogICAgIHJldHVybiB0b0FQSSh3ZWJWaWV3LnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5oCmluZGV4IGYxNDg4ZTNhZTkyMWJk
M2UzODE0Mjc2OTE0OWRjMTkwZWJlY2ZlZTguLjMxODQyNTgwOTdiZDVkNmNhN2Q4NzVlMWNiMmIy
OTAxM2Q2ZjJkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9D
b29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5oCkBAIC02NCw3ICs2NCw3IEBAIHR5
cGVkZWYgc3RydWN0IFdLVmlld0NsaWVudFYwIHsKICAgICBXS1ZpZXdEb25lV2l0aFRvdWNoRXZl
bnRDYWxsYmFjayAgICAgICAgICAgICAgICAgZG9uZVdpdGhUb3VjaEV2ZW50OwogfSBXS1ZpZXdD
bGllbnRWMDsKIAotV0tfRVhQT1JUIFdLVmlld1JlZiBXS1ZpZXdDcmVhdGUoV0tDb250ZXh0UmVm
IGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCk7CitXS19FWFBPUlQgV0tWaWV3UmVm
IFdLVmlld0NyZWF0ZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlQ29uZmlndXJhdGlvblJl
ZiBwYWdlQ29uZmlndXJhdGlvbik7CiAKIFdLX0VYUE9SVCB2b2lkIFdLVmlld0luaXRpYWxpemUo
V0tWaWV3UmVmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRVdlYktpdDIuaC5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJL
aXQyLmguaW4KaW5kZXggZDQ0NDUxMTNhMGI1ZWIyYTViOWJhMGJhMTAxYmMzYjMzYTVkN2MzYy4u
MDQ0OGVlNjA3YWNiNjRiNDgxY2Q4ZWMxMTRiZDgxOTY3ZTcwZmQ5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaC5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oLmluCkBAIC02NCw2ICs2NCw3IEBA
CiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5oIgogI2luY2x1ZGUgImV3a191cmxfc2NoZW1l
X3JlcXVlc3QuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgorI2luY2x1ZGUgImV3a192aWV3X2Nv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJld2tfd2luZG93X2ZlYXR1cmVzLmgiCiAKICNlbmRp
ZiAvLyBFV2ViS2l0Ml9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuY3BwCmluZGV4IGYxZTVjMjMxMmFiNmJmOTBhY2M4MzVmZjZjZWNkMTlkMmI2NTRlZTYuLjAz
ZGFhZDJjNWJjZjQzNzQzNzYxN2YzNWQ0MzAxMmQ4MGQ0MDAwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5j
bHVkZSAiZXdrX3BvcHVwX21lbnVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9v
cmlnaW5fcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19zZXR0aW5nc19wcml2YXRlLmgiCisjaW5j
bHVkZSAiZXdrX3ZpZXdfY29uZmlndXJhdGlvbl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3dp
bmRvd19mZWF0dXJlc19wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgogI2luY2x1
ZGUgPEVkamUuaD4KQEAgLTExMzEsOSArMTEzMiwxMyBAQCBXS1BhZ2VSZWYgRXdrVmlldzo6Y3Jl
YXRlTmV3UGFnZShQYXNzUmVmUHRyPEV3a1VybFJlcXVlc3Q+LCBXS0RpY3Rpb25hcnlSZWYgd2lu
ZAogICAgIGlmICghc2QtPmFwaS0+d2luZG93X2NyZWF0ZSkKICAgICAgICAgcmV0dXJuIDA7CiAK
KyAgICBXS1BhZ2VSZWYgd2tQYWdlUmVmID0gd2tQYWdlKCk7CiAgICAgUmVmUHRyPEV3a1dpbmRv
d0ZlYXR1cmVzPiBld2tXaW5kb3dGZWF0dXJlcyA9IEV3a1dpbmRvd0ZlYXR1cmVzOjpjcmVhdGUo
d2luZG93RmVhdHVyZXMsIHRoaXMpOworICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRp
b25SZWY+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdFdLKFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlv
bih3a1BhZ2VSZWYpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UmVsYXRlZFBhZ2UoY29u
ZmlndXJhdGlvbi5nZXQoKSwgd2tQYWdlUmVmKTsKKyAgICBSZWY8RXdrVmlld0NvbmZpZ3VyYXRp
b24+IGV3a1ZpZXdDb25maWd1cmF0aW9uID0gRXdrVmlld0NvbmZpZ3VyYXRpb246OmNyZWF0ZShj
b25maWd1cmF0aW9uLmdldCgpKTsKIAotICAgIEV2YXNfT2JqZWN0KiBuZXdFd2tWaWV3ID0gc2Qt
PmFwaS0+d2luZG93X2NyZWF0ZShzZCwgZXdrV2luZG93RmVhdHVyZXMuZ2V0KCkpOworICAgIEV2
YXNfT2JqZWN0KiBuZXdFd2tWaWV3ID0gc2QtPmFwaS0+d2luZG93X2NyZWF0ZShzZCwgJmV3a1Zp
ZXdDb25maWd1cmF0aW9uLmdldCgpLCBld2tXaW5kb3dGZWF0dXJlcy5nZXQoKSk7CiAgICAgaWYg
KCFuZXdFd2tWaWV3KQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IGUyMGRhYjIzODc1ODM1MWE3OGRlOGYx
YzliZWUxMTUyZmMwNGNjZGUuLjJiOWU5ODA3NzBkNjRkM2M1NzFkOTJlMzRmNzVjNzI3NjkyNDMw
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAK
QEAgLTI4LDEzICsyOCwxNCBAQAogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNp
bmNsdWRlICJld2tfbWFpbl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3BhZ2VfZ3JvdXBfcHJp
dmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3X2NvbmZpZ3VyYXRpb25fcHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dL
QVBJQ2FzdC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0RhdGEuaD4KICNpbmNsdWRlIDxXZWJLaXQv
V0tFaW5hU2hhcmVkU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLRmluZE9wdGlvbnMuaD4K
ICNpbmNsdWRlIDxXZWJLaXQvV0tJbnNwZWN0b3IuaD4KLSNpbmNsdWRlIDxXZWJLaXQvV0tQYWdl
R3JvdXAuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1N0cmluZy5oPgpAQCAtNzgsMTQg
Kzc5LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zbWFydF9jbGFzc19zZXQoRXdrX1ZpZXdfU21h
cnRfQ2xhc3MqIGFwaSkKICAgICByZXR1cm4gRXdrVmlldzo6aW5pdFNtYXJ0Q2xhc3NJbnRlcmZh
Y2UoKmFwaSk7CiB9CiAKLUV2YXNfT2JqZWN0KiBFV0tWaWV3Q3JlYXRlKFdLQ29udGV4dFJlZiBj
b250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIEV2YXMqIGNhbnZhcywgRXZhc19TbWFy
dCogc21hcnQpCitFdmFzX09iamVjdCogRVdLVmlld0NyZWF0ZShXS0NvbnRleHRSZWYgY29udGV4
dCwgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBwYWdlQ29uZmlndXJhdGlvbiwgRXZhcyogY2FudmFz
LCBFdmFzX1NtYXJ0KiBzbWFydCkKIHsKICAgICBpZiAoIUV3a01haW46OnNpbmdsZXRvbigpLmlz
SW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBFSU5BX0xPR19DUklUKCJFV2ViS2l0IGhhcyBub3Qg
YmVlbiBpbml0aWFsaXplZC4gWW91IG11c3QgY2FsbCBld2tfaW5pdCgpIGJlZm9yZSBjcmVhdGlu
ZyB2aWV3LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBXS1JldGFp
blB0cjxXS1ZpZXdSZWY+IHdrVmlldyA9IGFkb3B0V0soV0tWaWV3Q3JlYXRlKGNvbnRleHQsIHBh
Z2VHcm91cCkpOworICAgIFdLUmV0YWluUHRyPFdLVmlld1JlZj4gd2tWaWV3ID0gYWRvcHRXSyhX
S1ZpZXdDcmVhdGUoY29udGV4dCwgcGFnZUNvbmZpZ3VyYXRpb24pKTsKICAgICBpZiAoRXdrVmll
dyogZXdrVmlldyA9IEV3a1ZpZXc6OmNyZWF0ZSh3a1ZpZXcuZ2V0KCksIGNhbnZhcywgc21hcnQp
KQogICAgICAgICByZXR1cm4gZXdrVmlldy0+ZXZhc09iamVjdCgpOwogCkBAIC0xMDksNyArMTEw
LDI4IEBAIEV2YXNfT2JqZWN0KiBld2tfdmlld19zbWFydF9hZGQoRXZhcyogY2FudmFzLCBFdmFz
X1NtYXJ0KiBzbWFydCwgRXdrX0NvbnRleHQqIGNvCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKGV3a1BhZ2VHcm91cCwgbnVsbHB0cik7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKGV3a1BhZ2VHcm91cC0+d2tQYWdlR3JvdXAoKSwgbnVsbHB0cik7CiAKLSAg
ICByZXR1cm4gRVdLVmlld0NyZWF0ZShld2tDb250ZXh0LT53a0NvbnRleHQoKSwgZXdrUGFnZUdy
b3VwLT53a1BhZ2VHcm91cCgpLCBjYW52YXMsIHNtYXJ0KTsKKyAgICBXS1JldGFpblB0cjxXS1Bh
Z2VDb25maWd1cmF0aW9uUmVmPiBwYWdlQ29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdlQ29u
ZmlndXJhdGlvbkNyZWF0ZSgpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChw
YWdlQ29uZmlndXJhdGlvbi5nZXQoKSwgZXdrQ29udGV4dC0+d2tDb250ZXh0KCkpOworICAgIFdL
UGFnZUNvbmZpZ3VyYXRpb25TZXRQYWdlR3JvdXAocGFnZUNvbmZpZ3VyYXRpb24uZ2V0KCksIGV3
a1BhZ2VHcm91cC0+d2tQYWdlR3JvdXAoKSk7CisKKyAgICByZXR1cm4gRVdLVmlld0NyZWF0ZShl
d2tDb250ZXh0LT53a0NvbnRleHQoKSwgcGFnZUNvbmZpZ3VyYXRpb24uZ2V0KCksIGNhbnZhcywg
c21hcnQpOworfQorCitFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkX3dpdGhfY29uZmlndXJhdGlv
bihFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBFd2tfVmlld19Db25maWd1cmF0aW9u
KiBjb25maWd1cmF0aW9uKQoreworICAgIGlmICghY29uZmlndXJhdGlvbikKKyAgICAgICAgY29u
ZmlndXJhdGlvbiA9IGV3a192aWV3X2NvbmZpZ3VyYXRpb25fbmV3KCk7CisKKyAgICBFd2tWaWV3
Q29uZmlndXJhdGlvbiogZXdrVmlld0NvbmZpZ3VyYXRpb24gPSBld2tfb2JqZWN0X2Nhc3Q8RXdr
Vmlld0NvbmZpZ3VyYXRpb24qPihjb25maWd1cmF0aW9uKTsKKworICAgIFdLQ29udGV4dFJlZiBj
b250ZXh0ID0gV0tQYWdlQ29uZmlndXJhdGlvbkdldENvbnRleHQoZXdrVmlld0NvbmZpZ3VyYXRp
b24tPndrUGFnZUNvbmZpZ3VyYXRpb24oKSk7CisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAg
IEV3a0NvbnRleHQqIGV3a0NvbnRleHQgPSBld2tfb2JqZWN0X2Nhc3Q8RXdrQ29udGV4dCo+KGV3
a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkpOworICAgICAgICBjb250ZXh0ID0gZXdrQ29udGV4dC0+
d2tDb250ZXh0KCk7CisgICAgICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRDb250ZXh0KGV3a1Zp
ZXdDb25maWd1cmF0aW9uLT53a1BhZ2VDb25maWd1cmF0aW9uKCksIGNvbnRleHQpOworICAgIH0K
KworICAgIHJldHVybiBFV0tWaWV3Q3JlYXRlKGNvbnRleHQsIGV3a1ZpZXdDb25maWd1cmF0aW9u
LT53a1BhZ2VDb25maWd1cmF0aW9uKCksIGNhbnZhcywgc21hcnQpOwogfQogCiBFdmFzX09iamVj
dCogZXdrX3ZpZXdfYWRkKEV2YXMqIGNhbnZhcykKQEAgLTEyMyw3ICsxNDUsMTAgQEAgRXZhc19P
YmplY3QqIGV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyogY2FudmFzLCBFd2tfQ29udGV4
dCogY29udGV4dCkKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXdrQ29udGV4
dCwgbnVsbHB0cik7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGV3a0NvbnRl
eHQtPndrQ29udGV4dCgpLCBudWxscHRyKTsKIAotICAgIHJldHVybiBFV0tWaWV3Q3JlYXRlKGV3
a0NvbnRleHQtPndrQ29udGV4dCgpLCAwLCBjYW52YXMsIDApOworICAgIFdLUmV0YWluUHRyPFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWY+IHBhZ2VDb25maWd1cmF0aW9uID0gYWRvcHRXSyhXS1BhZ2VD
b25maWd1cmF0aW9uQ3JlYXRlKCkpOworICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRDb250ZXh0
KHBhZ2VDb25maWd1cmF0aW9uLmdldCgpLCBld2tDb250ZXh0LT53a0NvbnRleHQoKSk7CisKKyAg
ICByZXR1cm4gRVdLVmlld0NyZWF0ZShld2tDb250ZXh0LT53a0NvbnRleHQoKSwgcGFnZUNvbmZp
Z3VyYXRpb24uZ2V0KCksIGNhbnZhcywgMCk7CiB9CiAKIHZvaWQgZXdrX3ZpZXdfdHJ5X2Nsb3Nl
KEV2YXNfT2JqZWN0KiBld2tWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmgKaW5kZXggNDM5ODk5MDYwNjdkN2JkMTJmYzFkNzc1OTgxYjMzM2MxOTY4Y2Yw
Yy4uMWJmMGIwNDc3M2YwOTRkZmNjODk3NDYxYTNiMTVmNmE3NWUxMTU1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC0xLDYgKzEsNyBAQAogLyoK
ICAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCiAgICBDb3B5cmlnaHQg
KEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICBDb3B5
cmlnaHQgKEMpIDIwMTUgTmF2ZXIgQ29ycC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtODAsNiArODEsNyBAQAogI2luY2x1ZGUgImV3a190b3VjaC5oIgogI2lu
Y2x1ZGUgImV3a191cmxfcmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIK
KyNpbmNsdWRlICJld2tfdmlld19jb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiZXdrX3dpbmRv
d19mZWF0dXJlcy5oIgogI2luY2x1ZGUgPEV2YXMuaD4KIApAQCAtMTY2LDcgKzE2OCw3IEBAIHN0
cnVjdCBFd2tfVmlld19TbWFydF9DbGFzcyB7CiAKICAgICAvLyB3aW5kb3cgY3JlYXRpb24gYW5k
IGNsb3Npbmc6CiAgICAgLy8gICAtIENyZWF0ZSBhIG5ldyB3aW5kb3cgd2l0aCBzcGVjaWZpZWQg
ZmVhdHVyZXMgYW5kIGNsb3NlIHdpbmRvdy4KLSAgICBFdmFzX09iamVjdCAqKCp3aW5kb3dfY3Jl
YXRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXdrX1dpbmRvd19GZWF0dXJlcyAq
d2luZG93X2ZlYXR1cmVzKTsKKyAgICBFdmFzX09iamVjdCAqKCp3aW5kb3dfY3JlYXRlKShFd2tf
Vmlld19TbWFydF9EYXRhICpzZCwgRXdrX1ZpZXdfQ29uZmlndXJhdGlvbiogY29uZmlndXJhdGlv
biwgY29uc3QgRXdrX1dpbmRvd19GZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzKTsKICAgICB2b2lk
ICgqd2luZG93X2Nsb3NlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CiB9OwogCkBAIC0zNDIs
MTUgKzM0NCwzNyBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19zbWFydF9jbGFzc19zZXQoRXdr
X1ZpZXdfU21hcnRfQ2xhc3MgKmFwaSk7CiAgKiBAcGFyYW0gcGFnZUdyb3VwIEV3a19QYWdlX0dy
b3VwIG9iamVjdCB3aGljaCBpcyB1c2VkIGZvciBpbml0aWFsaXppbmcKICAqCiAgKiBAcmV0dXJu
IHZpZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCisgKgorICogQHNl
ZSBld2tfdmlld19hZGRfd2l0aF9jb25maWd1cmF0aW9uCiAgKi8KIEVBUEkgRXZhc19PYmplY3Qg
KmV3a192aWV3X3NtYXJ0X2FkZChFdmFzICplLCBFdmFzX1NtYXJ0ICpzbWFydCwgRXdrX0NvbnRl
eHQgKmNvbnRleHQsIEV3a19QYWdlX0dyb3VwICpwYWdlR3JvdXApOwogCiAvKioKKyAqIENyZWF0
ZXMgYSBuZXcgRUZMIFdlYktpdCB2aWV3IG9iamVjdCB3aXRoIEV3a19WaWV3X0NvbmZpZ3VyYXRp
b24KKyAqCisgKiBAbm90ZSBUaGUgRXZhc19PYmplY3Qgd2hpY2ggaW5oZXJpdHMgdGhlIGV3a192
aWV3IHNob3VsZCBjcmVhdGUgaXRzCisgKiAgICAgICBFdmFzX09iamVjdCB1c2luZyB0aGlzIEFQ
SSBpbnN0ZWFkIG9mIGV2YXNfb2JqZWN0X3NtYXJ0X2FkZCgpCisgKiAgICAgICBiZWNhdXNlIHRo
ZSBkZWZhdWx0IGluaXRpYWxpemF0aW9uIGZvciBld2tfdmlldyBpcyBkb25lIGluIHRoaXMgQVBJ
LgorICoKKyAqIEBwYXJhbSBlIGNhbnZhcyBvYmplY3Qgd2hlcmUgdG8gY3JlYXRlIHRoZSB2aWV3
IG9iamVjdAorICogQHBhcmFtIHNtYXJ0IEV2YXNfU21hcnQgb2JqZWN0LiBJdHMgdHlwZSBzaG91
bGQgYmUgRVdLX1ZJRVdfVFlQRV9TVFIKKyAqIEBwYXJhbSBjb25maWd1cmF0aW9uIEV3a19WaWV3
X0NvbmZpZ3VyYXRpb24gb2JqZWN0IHdoaWNoIGlzIHVzZWQgZm9yIGluaXRpYWxpemluZyBvciBA
YyBOVUxMIHRvIHVzZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24KKyAqCisgKiBAcmV0dXJuIHZpZXcg
b2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCisgKgorICogQHNlZSB3aW5k
b3dfY3JlYXRlCisgKiBAc2VlIGV3a192aWV3X2NvbmZpZ3VyYXRpb25fbmV3CisgKi8KK0VBUEkg
RXZhc19PYmplY3QgKmV3a192aWV3X2FkZF93aXRoX2NvbmZpZ3VyYXRpb24oRXZhcyAqZSwgRXZh
c19TbWFydCAqc21hcnQsIEV3a19WaWV3X0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pOwor
CisvKioKICAqIENyZWF0ZXMgYSBuZXcgRUZMIFdlYktpdCB2aWV3IG9iamVjdC4KICAqCiAgKiBA
cGFyYW0gZSBjYW52YXMgb2JqZWN0IHdoZXJlIHRvIGNyZWF0ZSB0aGUgdmlldyBvYmplY3QKICAq
CiAgKiBAcmV0dXJuIHZpZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJl
CisgKgorICogQHNlZSBld2tfdmlld19hZGRfd2l0aF9jb25maWd1cmF0aW9uCiAgKi8KIEVBUEkg
RXZhc19PYmplY3QgKmV3a192aWV3X2FkZChFdmFzICplKTsKIApAQCAtMzYxLDYgKzM4NSw4IEBA
IEVBUEkgRXZhc19PYmplY3QgKmV3a192aWV3X2FkZChFdmFzICplKTsKICAqIEBwYXJhbSBjb250
ZXh0IEV3a19Db250ZXh0IG9iamVjdCB0byBkZWNsYXJlIHByb2Nlc3MgbW9kZWwKICAqCiAgKiBA
cmV0dXJuIHZpZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCisgKgor
ICogQHNlZSBld2tfdmlld19hZGRfd2l0aF9jb25maWd1cmF0aW9uCiAgKi8KIEVBUEkgRXZhc19P
YmplY3QgKmV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyAqZSwgRXdrX0NvbnRleHQgKmNv
bnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlld19wcml2YXRlLmgKaW5kZXggMGU4ZDQ1OGVlYTYxNzhhMTRmNmE3M2UyODMxNWU5ZTliM2Nk
OGRmMS4uNDQ4Y2U0NjkwNjRhNDczNTU4NTRlODU1MzM5YmQ5YWIzZmZlZjQxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApA
QCAtMzMsNyArMzMsNyBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotRUFQSSBFdmFzX09iamVj
dCogRVdLVmlld0NyZWF0ZShXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmLCBFdmFzKiwgRXZh
c19TbWFydCopOworRUFQSSBFdmFzX09iamVjdCogRVdLVmlld0NyZWF0ZShXS0NvbnRleHRSZWYs
IFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIEV2YXMqLCBFdmFzX1NtYXJ0Kik7CiBFQVBJIFdLVmll
d1JlZiBFV0tWaWV3R2V0V0tWaWV3KEV2YXNfT2JqZWN0Kik7CiAKICNpZmRlZiBfX2NwbHVzcGx1
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAKaW5kZXgg
NDMxNmM2YTc3ZmVhM2VhNWY4NmFiZDJhZDY3NTA4NTAzMzZmZGM1Zi4uN2EzNDc5NzU2MmUwZGRm
MTdjYjgwMjY1ODgyMzIxNTRiYzRlZTA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXSzJVbml0VGVzdEJhc2UuY3BwCkBAIC0xOTksMTQgKzE5OSwxOSBAQCBzdGF0aWMgdm9pZCBv
blRpdGxlQ2hhbmdlZCh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqIHdlYlZpZXcsIHZvaWQq
KQogCiBib29sIEVXSzJVbml0VGVzdEJhc2U6OndhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKGNvbnN0
IGNoYXIqIGV4cGVjdGVkVGl0bGUsIGRvdWJsZSB0aW1lb3V0U2Vjb25kcykKIHsKKyAgICB3YWl0
VW50aWxUaXRsZUNoYW5nZWRUbyhtX3dlYlZpZXcsIGV4cGVjdGVkVGl0bGUsIHRpbWVvdXRTZWNv
bmRzKTsKK30KKworYm9vbCBFV0syVW5pdFRlc3RCYXNlOjp3YWl0VW50aWxUaXRsZUNoYW5nZWRU
byhFdmFzX09iamVjdCogd2ViVmlldywgY29uc3QgY2hhciogZXhwZWN0ZWRUaXRsZSwgZG91Ymxl
IHRpbWVvdXRTZWNvbmRzKQorewogICAgIENhbGxiYWNrRGF0YUV4cGVjdGVkVmFsdWU8Q1N0cmlu
Zz4gZGF0YShleHBlY3RlZFRpdGxlLCB0aW1lb3V0U2Vjb25kcyk7CiAKLSAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19hZGQobV93ZWJWaWV3LCAidGl0bGUsY2hhbmdlZCIsIG9uVGl0bGVD
aGFuZ2VkLCAmZGF0YSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdlYlZp
ZXcsICJ0aXRsZSxjaGFuZ2VkIiwgb25UaXRsZUNoYW5nZWQsICZkYXRhKTsKIAogICAgIHdoaWxl
ICghZGF0YS5pc0RvbmUoKSkKICAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKIAot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbChtX3dlYlZpZXcsICJ0aXRsZSxjaGFu
Z2VkIiwgb25UaXRsZUNoYW5nZWQpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Rl
bCh3ZWJWaWV3LCAidGl0bGUsY2hhbmdlZCIsIG9uVGl0bGVDaGFuZ2VkKTsKIAogICAgIHJldHVy
biAhZGF0YS5kaWRUaW1lT3V0KCk7CiB9CkBAIC0yNDUsNiArMjUwLDE2IEBAIGJvb2wgRVdLMlVu
aXRUZXN0QmFzZTo6d2FpdFVudGlsVHJ1ZShib29sICZmbGFnLCBkb3VibGUgdGltZW91dFNlY29u
ZHMpCiAgICAgcmV0dXJuICFkYXRhLmRpZFRpbWVPdXQoKTsKIH0KIAorYm9vbCBFV0syVW5pdFRl
c3RCYXNlOjp3YWl0VW50aWxOb3ROdWxsKEV2YXNfT2JqZWN0KiogcmF3UG9pbnRlciwgZG91Ymxl
IHRpbWVvdXRTZWNvbmRzKQoreworICAgIENhbGxiYWNrRGF0YUV4cGVjdGVkVmFsdWU8Ym9vbD4g
ZGF0YSh0cnVlLCB0aW1lb3V0U2Vjb25kcyk7CisKKyAgICB3aGlsZSAoIWRhdGEuaXNEb25lKCkg
JiYgISpyYXdQb2ludGVyKQorICAgICAgICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOworCisg
ICAgcmV0dXJuICFkYXRhLmRpZFRpbWVPdXQoKTsKK30KKwogYm9vbCBFV0syVW5pdFRlc3RCYXNl
Ojp3YWl0VW50aWxEaXJlY3Rpb25DaGFuZ2VkKEV3a19Gb2N1c19EaXJlY3Rpb24gJmRpcmVjdGlv
biwgZG91YmxlIHRpbWVvdXRTZWNvbmRzKQogewogICAgIENhbGxiYWNrRGF0YVRpbWVyIGRhdGEo
dGltZW91dFNlY29uZHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJh
c2UuaAppbmRleCAyMzM3ZGZhNzc2ZTA3NzEzYTYzYzRlMzRlMzEzOWNjMWFiODIzMjg0Li4zOGQz
N2Y2MDA5OWU0ZTExYzZkOTg2Y2UxYmUwMzY4Yjk4YzkzMDJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVz
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaApAQCAtNTEsOCArNTEsMTAgQEAgcHJvdGVjdGVk
OgogICAgIGJvb2wgbG9hZFVybFN5bmMoY29uc3QgY2hhciogdXJsLCBkb3VibGUgdGltZW91dFNl
Y29uZHMgPSBkZWZhdWx0VGltZW91dFNlY29uZHMpOwogICAgIGJvb2wgd2FpdFVudGlsTG9hZEZp
bmlzaGVkKGRvdWJsZSB0aW1lb3V0U2Vjb25kcyA9IGRlZmF1bHRUaW1lb3V0U2Vjb25kcyk7CiAg
ICAgYm9vbCB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhjb25zdCBjaGFyKiBleHBlY3RlZFRpdGxl
LCBkb3VibGUgdGltZW91dFNlY29uZHMgPSBkZWZhdWx0VGltZW91dFNlY29uZHMpOworICAgIGJv
b2wgd2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oRXZhc19PYmplY3QqIHdlYlZpZXcsIGNvbnN0IGNo
YXIqIGV4cGVjdGVkVGl0bGUsIGRvdWJsZSB0aW1lb3V0U2Vjb25kcyA9IGRlZmF1bHRUaW1lb3V0
U2Vjb25kcyk7CiAgICAgYm9vbCB3YWl0VW50aWxVUkxDaGFuZ2VkVG8oY29uc3QgY2hhciogZXhw
ZWN0ZWRVUkwsIGRvdWJsZSB0aW1lb3V0U2Vjb25kcyA9IGRlZmF1bHRUaW1lb3V0U2Vjb25kcyk7
CiAgICAgYm9vbCB3YWl0VW50aWxUcnVlKGJvb2wgJmZsYWcsIGRvdWJsZSB0aW1lb3V0U2Vjb25k
cyA9IGRlZmF1bHRUaW1lb3V0U2Vjb25kcyk7CisgICAgYm9vbCB3YWl0VW50aWxOb3ROdWxsKEV2
YXNfT2JqZWN0KiogcmF3UG9pbnRlciwgZG91YmxlIHRpbWVvdXRTZWNvbmRzID0gZGVmYXVsdFRp
bWVvdXRTZWNvbmRzKTsKICAgICBib29sIHdhaXRVbnRpbERpcmVjdGlvbkNoYW5nZWQoRXdrX0Zv
Y3VzX0RpcmVjdGlvbiAmZGlyZWN0aW9uLCBkb3VibGUgdGltZW91dFNlY29uZHMgPSBkZWZhdWx0
VGltZW91dFNlY29uZHMpOwogICAgIEVpbmFfTGlzdCogd2FpdFVudGlsU3BlbGxpbmdMYW5ndWFn
ZXNMb2FkZWQodW5zaWduZWQgZXhwZWN0ZWRMYW5ndWFnZUNvdW50LCBkb3VibGUgdGltZW91dFZh
bHVlID0gZGVmYXVsdFRpbWVvdXRTZWNvbmRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCmluZGV4IDhj
Njg1ZTc4NWUzOTM2YzEyODJkNTVhMWFiYTJhNDYwNDM0ZWFlY2IuLjM0YzkxYmIyNjkxOGZhYjY5
OGZjNjEzOTE2YzJmOWYzYWZjNTBhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKQEAgLTcyMCw2ICs3
MjAsODEgQEAgVEVTVF9GKEVXSzJWaWV3VGVzdCwgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJv
bXB0KQogICAgIEVYUEVDVF9GQUxTRShwcm9tcHRDYWxsYmFja0RhdGEuY2FsbGVkKTsKIH0KIAor
c3RhdGljIEV2YXNfT2JqZWN0KiBzX25ld1dpbmRvd09iamVjdDsKKworc3RhdGljIEV2YXNfT2Jq
ZWN0KiB3aW5kb3dDcmVhdGVDYWxsYmFjayhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEs
IEV3a19WaWV3X0NvbmZpZ3VyYXRpb24qIGNvbmZpZ3VyYXRpb24sIGNvbnN0IEV3a19XaW5kb3df
RmVhdHVyZXMqKQoreworICAgIHNfbmV3V2luZG93T2JqZWN0ID0gZXdrX3ZpZXdfYWRkX3dpdGhf
Y29uZmlndXJhdGlvbigKKyAgICAgICAgZXZhc19vYmplY3RfZXZhc19nZXQoc21hcnREYXRhLT5z
ZWxmKSwKKyAgICAgICAgZXZhc19zbWFydF9jbGFzc19uZXcoJnNtYXJ0RGF0YS0+YXBpLT5zYyks
CisgICAgICAgIGNvbmZpZ3VyYXRpb24pOworCisgICAgZXZhc19vYmplY3RfbW92ZShzX25ld1dp
bmRvd09iamVjdCwgMCwgMCk7CisgICAgZXZhc19vYmplY3RfcmVzaXplKHNfbmV3V2luZG93T2Jq
ZWN0LCBlbnZpcm9ubWVudC0+ZGVmYXVsdFdpZHRoKCksIGVudmlyb25tZW50LT5kZWZhdWx0SGVp
Z2h0KCkpOworICAgIGV2YXNfb2JqZWN0X3Nob3coc19uZXdXaW5kb3dPYmplY3QpOworICAgIHJl
dHVybiBzX25ld1dpbmRvd09iamVjdDsKK30KKworVEVTVF9GKEVXSzJWaWV3VGVzdCwgZXdrX3Zp
ZXdfY3JlYXRlX3dpbmRvdykKK3sKKyAgICBzX25ld1dpbmRvd09iamVjdCA9IG51bGxwdHI7Cisg
ICAgZXdrVmlld0NsYXNzKCktPndpbmRvd19jcmVhdGUgPSB3aW5kb3dDcmVhdGVDYWxsYmFjazsK
KworICAgIEVpbmFfU3RyaW5nc2hhcmUqIGNyZWF0ZUhUTUwgPSBlaW5hX3N0cmluZ3NoYXJlX3By
aW50ZigiPCFET0NUWVBFIEhUTUw+PGJvZHkgb25sb2FkPVwid2luZG93Lm9wZW4oJyVzJyk7XCI+
PC9ib2R5PiIsIGVudmlyb25tZW50LT51cmxGb3JSZXNvdXJjZSgiUGFnZTEuaHRtbCIpLmRhdGEo
KSk7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIGNyZWF0ZUhUTUws
ICJmaWxlOi8vLyIsIG51bGxwdHIpOworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbE5vdE51bGwo
JnNfbmV3V2luZG93T2JqZWN0KSk7CisgICAgaWYgKCFld2tfdmlld190aXRsZV9nZXQoc19uZXdX
aW5kb3dPYmplY3QpLCAiUGFnZTEiKQorICAgICAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhz
X25ld1dpbmRvd09iamVjdCwgIlBhZ2UxIik7CisgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoY3Jl
YXRlSFRNTCk7CisgICAgZXZhc19vYmplY3RfZGVsKHNfbmV3V2luZG93T2JqZWN0KTsKKyAgICBz
X25ld1dpbmRvd09iamVjdCA9IG51bGxwdHI7CisKKyAgICBjcmVhdGVIVE1MID0gZWluYV9zdHJp
bmdzaGFyZV9wcmludGYoIjwhRE9DVFlQRSBIVE1MPjxib2R5PjxhIGhyZWY9XCIlc1wiIHRhcmdl
dD1cIl9ibGFua1wiPjxkaXYgc3R5bGU9XCJ3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7XCI+WFhY
WFhYPC9kaXY+PC9hPjwvYm9keT4iLCBlbnZpcm9ubWVudC0+dXJsRm9yUmVzb3VyY2UoIlBhZ2Uy
Lmh0bWwiKS5kYXRhKCkpOworCisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3
KCksIGNyZWF0ZUhUTUwsICJmaWxlOi8vLyIsIG51bGxwdHIpOworICAgIHdhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOworICAgIG1vdXNlQ2xpY2soNTAsIDUwKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0
VW50aWxOb3ROdWxsKCZzX25ld1dpbmRvd09iamVjdCkpOworICAgIGlmICghZXdrX3ZpZXdfdGl0
bGVfZ2V0KHNfbmV3V2luZG93T2JqZWN0KSwgIlBhZ2UyIikKKyAgICAgICAgd2FpdFVudGlsVGl0
bGVDaGFuZ2VkVG8oc19uZXdXaW5kb3dPYmplY3QsICJQYWdlMiIpOworCisgICAgZWluYV9zdHJp
bmdzaGFyZV9kZWwoY3JlYXRlSFRNTCk7Cit9CisKK2NsYXNzIEVXSzJWaWV3VGVzdE5ld1dpbmRv
d1dpdGhNdWx0aXBsZVByb2Nlc3NlcyA6IHB1YmxpYyBFV0syVW5pdFRlc3RCYXNlIHsKK3Byb3Rl
Y3RlZDoKKyAgICBFV0syVmlld1Rlc3ROZXdXaW5kb3dXaXRoTXVsdGlwbGVQcm9jZXNzZXMoKQor
ICAgIHsKKyAgICAgICAgbV9tdWx0aXBsZVByb2Nlc3NlcyA9IHRydWU7CisgICAgfQorfTsKKwor
VEVTVF9GKEVXSzJWaWV3VGVzdE5ld1dpbmRvd1dpdGhNdWx0aXBsZVByb2Nlc3NlcywgZXdrX3Zp
ZXdfY3JlYXRlX3dpbmRvd193aXRoX211bHRpcHJvY2Vzc2VzKQoreworICAgIHNfbmV3V2luZG93
T2JqZWN0ID0gbnVsbHB0cjsKKyAgICBld2tWaWV3Q2xhc3MoKS0+d2luZG93X2NyZWF0ZSA9IHdp
bmRvd0NyZWF0ZUNhbGxiYWNrOworCisgICAgRWluYV9TdHJpbmdzaGFyZSogY3JlYXRlSFRNTCA9
IGVpbmFfc3RyaW5nc2hhcmVfcHJpbnRmKCI8IURPQ1RZUEUgSFRNTD48Ym9keSBvbmxvYWQ9XCJ3
aW5kb3cub3BlbignJXMnKTtcIj48L2JvZHk+IiwgZW52aXJvbm1lbnQtPnVybEZvclJlc291cmNl
KCJQYWdlMS5odG1sIikuZGF0YSgpKTsKKyAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdl
YlZpZXcoKSwgY3JlYXRlSFRNTCwgImZpbGU6Ly8vIiwgbnVsbHB0cik7CisgICAgQVNTRVJUX1RS
VUUod2FpdFVudGlsTm90TnVsbCgmc19uZXdXaW5kb3dPYmplY3QpKTsKKyAgICBpZiAoIWV3a192
aWV3X3RpdGxlX2dldChzX25ld1dpbmRvd09iamVjdCksICJQYWdlMSIpCisgICAgICAgIHdhaXRV
bnRpbFRpdGxlQ2hhbmdlZFRvKHNfbmV3V2luZG93T2JqZWN0LCAiUGFnZTEiKTsKKyAgICBlaW5h
X3N0cmluZ3NoYXJlX2RlbChjcmVhdGVIVE1MKTsKKyAgICBldmFzX29iamVjdF9kZWwoc19uZXdX
aW5kb3dPYmplY3QpOworICAgIHNfbmV3V2luZG93T2JqZWN0ID0gbnVsbHB0cjsKKworICAgIGNy
ZWF0ZUhUTUwgPSBlaW5hX3N0cmluZ3NoYXJlX3ByaW50ZigiPCFET0NUWVBFIEhUTUw+PGJvZHk+
PGEgaHJlZj1cIiVzXCIgdGFyZ2V0PVwiX2JsYW5rXCI+PGRpdiBzdHlsZT1cIndpZHRoOjEwMHB4
O2hlaWdodDoxMDBweDtcIj5YWFhYWFg8L2Rpdj48L2E+PC9ib2R5PiIsIGVudmlyb25tZW50LT51
cmxGb3JSZXNvdXJjZSgiUGFnZTIuaHRtbCIpLmRhdGEoKSk7CisKKyAgICBld2tfdmlld19odG1s
X3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgY3JlYXRlSFRNTCwgImZpbGU6Ly8vIiwgbnVsbHB0cik7
CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgbW91c2VDbGljayg1MCwgNTApOwor
ICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbE5vdE51bGwoJnNfbmV3V2luZG93T2JqZWN0KSk7Cisg
ICAgaWYgKCFld2tfdmlld190aXRsZV9nZXQoc19uZXdXaW5kb3dPYmplY3QpLCAiUGFnZTIiKQor
ICAgICAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhzX25ld1dpbmRvd09iamVjdCwgIlBhZ2Uy
Iik7CisKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChjcmVhdGVIVE1MKTsKK30KKwogVEVTVF9G
KEVXSzJWaWV3VGVzdCwgZXdrX3ZpZXdfY29udGV4dF9nZXQpCiB7CiAgICAgRXdrX0NvbnRleHQq
IGNvbnRleHQgPSBld2tfdmlld19jb250ZXh0X2dldCh3ZWJWaWV3KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3dpbmRvd19m
ZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0
X2V3azJfd2luZG93X2ZlYXR1cmVzLmNwcAppbmRleCBhODgwMjk0MjI0NmIyZDVmYTI4MGJlMDVm
YTU0NGMzZThmOWQwM2IzLi44MmM0ZTM4MzczZWNjYTc4MDUwNGYwZDY1YjUzMGFhZDg5ZjY4Mjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0
X2V3azJfd2luZG93X2ZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfd2luZG93X2ZlYXR1cmVzLmNwcApAQCAtMzQsNyArMzQs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgRVdLMldpbmRvd0ZlYXR1cmVz
VGVzdCA6IHB1YmxpYyBFV0syVW5pdFRlc3RCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXZh
c19PYmplY3QqIGNyZWF0ZURlZmF1bHRXaW5kb3coRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnRE
YXRhLCBjb25zdCBFd2tfV2luZG93X0ZlYXR1cmVzKiB3aW5kb3dGZWF0dXJlcykKKyAgICBzdGF0
aWMgRXZhc19PYmplY3QqIGNyZWF0ZURlZmF1bHRXaW5kb3coRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhLCBFd2tfVmlld19Db25maWd1cmF0aW9uKiBjb25maWd1cmF0aW9uLCBjb25zdCBF
d2tfV2luZG93X0ZlYXR1cmVzKiB3aW5kb3dGZWF0dXJlcykKICAgICB7CiAgICAgICAgIC8vIGRl
ZmF1bHQgdmFsdWVzIG9mIFdlYkNvcmU6V2luZG93RmVhdHVyZXMoKQogICAgICAgICAvLyAtIG1l
bnVCYXJWaXNpYmxlKHRydWUpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogCi0gICAgc3RhdGljIEV2YXNfT2JqZWN0KiBjcmVhdGVXaW5kb3coRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc21hcnREYXRhLCBjb25zdCBFd2tfV2luZG93X0ZlYXR1cmVzICp3
aW5kb3dGZWF0dXJlcykKKyAgICBzdGF0aWMgRXZhc19PYmplY3QqIGNyZWF0ZVdpbmRvdyhFd2tf
Vmlld19TbWFydF9EYXRhICpzbWFydERhdGEsIEV3a19WaWV3X0NvbmZpZ3VyYXRpb24qIGNvbmZp
Z3VyYXRpb24sIGNvbnN0IEV3a19XaW5kb3dfRmVhdHVyZXMgKndpbmRvd0ZlYXR1cmVzKQogICAg
IHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGV3a193aW5kb3dfZmVhdHVyZXNfdG9vbGJhcl92aXNp
YmxlX2dldCh3aW5kb3dGZWF0dXJlcykpOwogICAgICAgICBFWFBFQ1RfVFJVRShld2tfd2luZG93
X2ZlYXR1cmVzX3N0YXR1c2Jhcl92aXNpYmxlX2dldCh3aW5kb3dGZWF0dXJlcykpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJW
aWV3LmNwcAppbmRleCA4ZmZmZWVjNDE5ZGQ1YzVmMWIyMDc5NjA2MzU5YmFhZWZiZGU5NDliLi45
NjlmZDg2MTA4ZWI4YTE1NWIyYzE2MTA3ZWE4NzFiMTAyNjZlMjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNw
cApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgogI2lu
Y2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVu
dVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC00OCwxNyArNDksMTMgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJWaWV3
OjpXZWJWaWV3KFdlYlByb2Nlc3NQb29sKiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91
cCkKK1dlYlZpZXc6OldlYlZpZXcoV2ViUHJvY2Vzc1Bvb2wqIGNvbnRleHQsIEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24mIHBhZ2VDb25maWd1cmF0aW9uKQogICAgIDogbV9mb2N1c2VkKGZhbHNlKQog
ICAgICwgbV92aXNpYmxlKGZhbHNlKQogICAgICwgbV9vcGFjaXR5KDEuMCkKIHsKLSAgICBhdXRv
IHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0g
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKGNvbnRleHQpOwotICAgIHBhZ2VD
b25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwKTsKLQogICAgIC8vIE5lZWQgdG8g
Y2FsbCBjcmVhdGVXZWJQYWdlIGFmdGVyIG90aGVyIGRhdGEgbWVtYmVycywgc3BlY2lmaWNhbGx5
IG1fdmlzaWJsZSwgYXJlIGluaXRpYWxpemVkLgotICAgIG1fcGFnZSA9IGNvbnRleHQtPmNyZWF0
ZVdlYlBhZ2UoKnRoaXMsIFdURjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIG1fcGFn
ZSA9IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9uLmNvcHko
KSk7CiAKICAgICBtX3BhZ2UtPnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCkuc2V0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgbV9wYWdlLT5wYWdlR3JvdXAoKS5wcmVm
ZXJlbmNlcygpLnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oCmluZGV4
IDQyNmY2NTgwMzYzNTY5NWFmODQzNjI1OWM0YWJjZDBlODFkOWU4NmMuLjQxMTJhNjI3MGI4MDMw
NDU3ZTMzNTBkNThkMDVmZmY3YmYwOTA0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmgKQEAgLTMzLDEzICszMywx
NiBAQAogI2luY2x1ZGUgIkRlZmF1bHRVbmRvQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBhZ2VD
bGllbnQuaCIKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCi0jaW5jbHVk
ZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUg
IldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZm9ybWF0aW9uTWF0cml4
Lmg+CiAKK25hbWVzcGFjZSBBUEkgeworY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247Cit9CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOwogCkBAIC01
MSw3ICs1NCw3IEBAIGNsYXNzIFdlYlZpZXcgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpWaWV3PiwgcHVibGljIFBhZ2VDbGllCiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+V2ViVmlldygpOwogCi0gICAgc3RhdGljIFJlZjxXZWJWaWV3PiBjcmVhdGUoV2ViUHJvY2Vz
c1Bvb2wqLCBXZWJQYWdlR3JvdXAqKTsKKyAgICBzdGF0aWMgUmVmPFdlYlZpZXc+IGNyZWF0ZShX
ZWJQcm9jZXNzUG9vbCosIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mKTsKIAogICAgIHZvaWQgaW5p
dGlhbGl6ZSgpOwogCkBAIC0xMTYsNyArMTE5LDcgQEAgcHVibGljOgogICAgIGRvdWJsZSBvcGFj
aXR5KCkgY29uc3QgeyByZXR1cm4gbV9vcGFjaXR5OyB9CiAKIHByb3RlY3RlZDoKLSAgICBXZWJW
aWV3KFdlYlByb2Nlc3NQb29sKiwgV2ViUGFnZUdyb3VwKik7CisgICAgV2ViVmlldyhXZWJQcm9j
ZXNzUG9vbCosIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mKTsKICAgICBDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmUqIGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOwogCiAgICAgdm9pZCB1cGRhdGVW
aWV3cG9ydFNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKaW5kZXggZWU2ODUzY2Y2ZWNlYThlODAzMTE0OTJmZjUx
MjMzZDg4NThlMjdiMy4uNzhhOTRmZTM2ODBhMDk3YTIxNmU1NTk4MDk2N2YyYWNmYmNlZDMwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94
eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQ
cm94eUVmbC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0VmbEluc3Bl
Y3RvclV0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNp
bmNsdWRlIDxXZWJLaXQvV0tQYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZUNvbmZpZ3Vy
YXRpb25SZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tWaWV3RWZsLmg+CkBAIC0xMDks
NyArMTEwLDExIEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3Jl
YXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrR3JvdXBJ
ZGVudGlmaWVyID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhpbnNwZWN0
b3JQYWdlR3JvdXBJZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIFdLUGFnZUdyb3Vw
UmVmIHdrUGFnZUdyb3VwID0gV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcih3a0dyb3Vw
SWRlbnRpZmllci5nZXQoKSk7CiAKLSAgICBtX2luc3BlY3RvclZpZXcgPSBFV0tWaWV3Q3JlYXRl
KHdrQ29udGV4dCwgd2tQYWdlR3JvdXAsIGVjb3JlX2V2YXNfZ2V0KG1faW5zcGVjdG9yV2luZG93
KSwgLyogc21hcnQgKi8gMCk7CisgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJl
Zj4gd2tQYWdlQ29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdlQ29uZmlndXJhdGlvbkNyZWF0
ZSgpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dCh3a1BhZ2VDb25maWd1cmF0
aW9uLmdldCgpLCB3a0NvbnRleHQpOworICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRQYWdlR3Jv
dXAod2tQYWdlQ29uZmlndXJhdGlvbi5nZXQoKSwgd2tQYWdlR3JvdXApOworCisgICAgbV9pbnNw
ZWN0b3JWaWV3ID0gRVdLVmlld0NyZWF0ZSh3a0NvbnRleHQsIHdrUGFnZUNvbmZpZ3VyYXRpb24u
Z2V0KCksIGVjb3JlX2V2YXNfZ2V0KG1faW5zcGVjdG9yV2luZG93KSwgLyogc21hcnQgKi8gMCk7
CiAgICAgV0tWaWV3UmVmIHdrVmlldyA9IEVXS1ZpZXdHZXRXS1ZpZXcobV9pbnNwZWN0b3JWaWV3
KTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1RoZW1lID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhERUZBVUxUX1RIRU1FX0RJUiAiL2RlZmF1bHQuZWRq
IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5jcHAKaW5kZXgg
ZTQwNzg3YTg1ZDVjMDdiM2E2NTczZGVhODE3M2I5MzFlZWJjZmViZS4uMjgzZDEyNjMxYTFiZDAz
MDAyMTkwYTYyOTNkY2MzNTMzMDA4MjhhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlZpZXdFZmwuY3BwCkBAIC01NSwxMyArNTUsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZWY8V2ViVmlldz4gV2ViVmlldzo6Y3Jl
YXRlKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAp
CitSZWY8V2ViVmlldz4gV2ViVmlldzo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9v
bCwgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYgcGFnZUNvbmZpdXJhdGlvbikKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWV3RWZsKHByb2Nlc3NQb29sLCBwYWdlR3JvdXApKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWV3RWZsKHByb2Nlc3NQb29sLCBwYWdlQ29uZml1
cmF0aW9uKSk7CiB9CiAKLVdlYlZpZXdFZmw6OldlYlZpZXdFZmwoV2ViUHJvY2Vzc1Bvb2wqIHBy
b2Nlc3NQb29sLCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkKLSAgICA6IFdlYlZpZXcocHJvY2Vz
c1Bvb2wsIHBhZ2VHcm91cCkKK1dlYlZpZXdFZmw6OldlYlZpZXdFZmwoV2ViUHJvY2Vzc1Bvb2wq
IHByb2Nlc3NQb29sLCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBwYWdlQ29uZml1cmF0aW9uKQor
ICAgIDogV2ViVmlldyhwcm9jZXNzUG9vbCwgcGFnZUNvbmZpdXJhdGlvbikKICAgICAsIG1fZXdr
VmlldygwKQogICAgICwgbV9oYXNSZXF1ZXN0ZWRGdWxsU2NyZWVuKGZhbHNlKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaAppbmRleCAzODZkMDA5MGUzYTMyZmJi
YWM1OWM1NjIwYjgwYTkxYmJjMzUyNTJmLi5mNDE3ZmFmYjYxNDc3MjM5NWYzN2VhNzU1NmJhZjFi
ZWE4YzI5ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZp
ZXdFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaApA
QCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWaWV3QmFja2dyb3VuZENvbG9y
KGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CiAgICAgV2ViQ29yZTo6Q29sb3Igdmlld0JhY2tncm91
bmRDb2xvcigpOwogcHJpdmF0ZToKLSAgICBXZWJWaWV3RWZsKFdlYlByb2Nlc3NQb29sKiwgV2Vi
UGFnZUdyb3VwKik7CisgICAgV2ViVmlld0VmbChXZWJQcm9jZXNzUG9vbCosIEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24mKTsKIAogICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNv
ciYpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBN
ZW51UHJveHkoV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTc1ZmY5ZDUzZTkwNmE2MDZkODJkOTQwNWFj
YjYzYTlmNDQxMjJjMS4uNTg3YWUzZGY4YWVmNTQ1NTMxZGU4YTJjNTAyM2EwNTQ3M2VkYzE4MiAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIwIEBACisyMDE1LTExLTA5ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAu
Y29tPgorCisgICAgICAgIFtFRkxdIENyYXNoIHdoaWxlIG9wZW5pbmcgY2hpbGQgd2VidmlldyB3
aXRoIEVXS19QUk9DRVNTX01PREVMX01VTFRJUExFX1NFQ09OREFSWQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1OTI0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9lZmwvbWFpbi5j
OgorICAgICAgICAob25fd2luZG93X2NyZWF0ZSk6CisgICAgICAgICh3aW5kb3dfY3JlYXRlKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZWZsL1BsYXRmb3JtV2ViVmlldy5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2Vi
Vmlldyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZs
LmNwcDoKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcpOgor
CiAyMDE1LTExLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBdHRlbXB0IHRvIGZpeCB0aGUgV2luZG93cyBFV1MgYm90IGFmdGVyIHIxOTIwODcKZGlmZiAt
LWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9l
ZmwvbWFpbi5jCmluZGV4IGQ0OWViYTNlNjZkNzdiZDkyNGUzYjZiNzUwZThhZjc3MDMwOTM1MWIu
LjY1ZDI4MTk5ODgwYmNlMDAwN2MzMWQzNWJhNGQ2OTNmYjZjYmE3M2QgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21h
aW4uYwpAQCAtMjAxLDcgKzIwMSw3IEBAIHN0YXRpYyBjb25zdCBFY29yZV9HZXRvcHQgb3B0aW9u
cyA9IHsKIH07CiAKIHN0YXRpYyBFaW5hX1N0cmluZ3NoYXJlICpzaG93X2ZpbGVfZW50cnlfZGlh
bG9nKEJyb3dzZXJfV2luZG93ICp3aW5kb3csIGNvbnN0IGNoYXIgKmxhYmVsX3RhZywgY29uc3Qg
Y2hhciAqZGVmYXVsdF90ZXh0KTsKLXN0YXRpYyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0
ZShFdmFzX09iamVjdCogb3BlbmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOworc3RhdGljIEJy
b3dzZXJfV2luZG93ICp3aW5kb3dfY3JlYXRlKEV3a19WaWV3X0NvbmZpZ3VyYXRpb24qIGNvbmZp
Z3VyYXRpb24sIGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAKIHN0YXRpYyBCcm93c2VyX1dpbmRv
dyAqd2luZG93X2ZpbmRfd2l0aF9lbG1fd2luZG93KEV2YXNfT2JqZWN0ICplbG1fd2luZG93KQog
ewpAQCAtMTcxMSw3ICsxNzExLDcgQEAgc3RhdGljIEVpbmFfQm9vbCBvbl9mdWxsc2NyZWVuX2V4
aXQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiB9CiAKIHN0YXRpYyBFdmFzX09iamVjdCAqCi1v
bl93aW5kb3dfY3JlYXRlKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNtYXJ0RGF0YSwgY29uc3QgRXdr
X1dpbmRvd19GZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzKQorb25fd2luZG93X2NyZWF0ZShFd2tf
Vmlld19TbWFydF9EYXRhICpzbWFydERhdGEsIEV3a19WaWV3X0NvbmZpZ3VyYXRpb24qIGNvbmZp
Z3VyYXRpb24sIGNvbnN0IEV3a19XaW5kb3dfRmVhdHVyZXMgKndpbmRvd19mZWF0dXJlcykKIHsK
ICAgICBpbnQgeCA9IDA7CiAgICAgaW50IHkgPSAwOwpAQCAtMTcyNiw3ICsxNzI2LDcgQEAgb25f
d2luZG93X2NyZWF0ZShFd2tfVmlld19TbWFydF9EYXRhICpzbWFydERhdGEsIGNvbnN0IEV3a19X
aW5kb3dfRmVhdHVyZXMgKndpbmQKICAgICBpZiAoIWhlaWdodCkKICAgICAgICAgaGVpZ2h0ID0g
d2luZG93X2hlaWdodDsKIAotICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSB3aW5kb3dfY3Jl
YXRlKHNtYXJ0RGF0YS0+c2VsZiwgd2lkdGgsIGhlaWdodCk7CisgICAgQnJvd3Nlcl9XaW5kb3cg
KndpbmRvdyA9IHdpbmRvd19jcmVhdGUoY29uZmlndXJhdGlvbiwgd2lkdGgsIGhlaWdodCk7CiAg
ICAgRXZhc19PYmplY3QgKm5ld192aWV3ID0gd2luZG93LT5ld2tfdmlldzsKIAogICAgIHdpbmRv
d3MgPSBlaW5hX2xpc3RfYXBwZW5kKHdpbmRvd3MsIHdpbmRvdyk7CkBAIC0yMDU3LDcgKzIwNTcs
NyBAQCBjcmVhdGVfdG9vbGJhcl9idXR0b24oRXZhc19PYmplY3QgKmVsbV93aW5kb3csIGNvbnN0
IGNoYXIgKmljb25fbmFtZSkKICAgICByZXR1cm4gYnV0dG9uOwogfQogCi1zdGF0aWMgQnJvd3Nl
cl9XaW5kb3cgKndpbmRvd19jcmVhdGUoRXZhc19PYmplY3QgKm9wZW5lciwgaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KQorc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3dfY3JlYXRlKEV3a19WaWV3
X0NvbmZpZ3VyYXRpb24qIGNvbmZpZ3VyYXRpb24sIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsK
ICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gY2FsbG9jKDEsIHNpemVvZihCcm93c2VyX1dp
bmRvdykpOwogICAgIGlmICghd2luZG93KSB7CkBAIC0yMjY3LDE3ICsyMjY3LDkgQEAgc3RhdGlj
IEJyb3dzZXJfV2luZG93ICp3aW5kb3dfY3JlYXRlKEV2YXNfT2JqZWN0ICpvcGVuZXIsIGludCB3
aWR0aCwgaW50IGhlaWdodCkKIAogICAgIEV2YXMgKmV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dl
dCh3aW5kb3ctPmVsbV93aW5kb3cpOwogICAgIEV2YXNfU21hcnQgKnNtYXJ0ID0gZXZhc19zbWFy
dF9jbGFzc19uZXcoJmV3a1ZpZXdDbGFzcy0+c2MpOwotICAgIEV3a19Db250ZXh0ICpjb250ZXh0
OwotICAgIGlmIChvcGVuZXIpCi0gICAgICAgIGNvbnRleHQgPSBld2tfdmlld19jb250ZXh0X2dl
dChvcGVuZXIpOwotICAgIGVsc2UgaWYgKGV4dGVuc2lvbnNfcGF0aCkKLSAgICAgICAgY29udGV4
dCA9IGV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aChleHRlbnNpb25zX3BhdGgp
OwotICAgIGVsc2UKLSAgICAgICAgY29udGV4dCA9IGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCk7
Ci0KLSAgICBFd2tfUGFnZV9Hcm91cCAqcGFnZUdyb3VwID0gb3BlbmVyID8gZXdrX3ZpZXdfcGFn
ZV9ncm91cF9nZXQob3BlbmVyKSA6IGV3a19wYWdlX2dyb3VwX2NyZWF0ZSgiIik7Ci0gICAgd2lu
ZG93LT5ld2tfdmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBzbWFydCwgY29udGV4dCwg
cGFnZUdyb3VwKTsKKyAgICB3aW5kb3ctPmV3a192aWV3ID0gZXdrX3ZpZXdfYWRkX3dpdGhfY29u
ZmlndXJhdGlvbihldmFzLCBzbWFydCwgY29uZmlndXJhdGlvbik7CiAKKyAgICBFd2tfQ29udGV4
dCAqY29udGV4dCA9IGV3a192aWV3X2NvbnRleHRfZ2V0KHdpbmRvdy0+ZXdrX3ZpZXcpOwogICAg
IGV3a19mYXZpY29uX2RhdGFiYXNlX2ljb25fY2hhbmdlX2NhbGxiYWNrX2FkZChld2tfY29udGV4
dF9mYXZpY29uX2RhdGFiYXNlX2dldChjb250ZXh0KSwgb25faWNvbl9jaGFuZ2VkX2NiLCB3aW5k
b3cpOwogCiAgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KHdpbmRvdy0+ZXdrX3ZpZXcsIERFRkFVTFRf
VEhFTUVfRElSICIvZGVmYXVsdC5lZGoiKTsKQEAgLTIzMDEsNyArMjI5Myw3IEBAIHN0YXRpYyBC
cm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCAqb3BlbmVyLCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpCiAgICAgLyogU2V0IHRoZSB6b29tIGxldmVsIHRvIGRlZmF1bHQgKi8K
ICAgICB3aW5kb3ctPmN1cnJlbnRfem9vbV9sZXZlbCA9IERFRkFVTFRfWk9PTV9MRVZFTDsKIAot
ICAgIEV3a19TZXR0aW5ncyAqc2V0dGluZ3MgPSBld2tfcGFnZV9ncm91cF9zZXR0aW5nc19nZXQo
cGFnZUdyb3VwKTsKKyAgICBFd2tfU2V0dGluZ3MgKnNldHRpbmdzID0gZXdrX3BhZ2VfZ3JvdXBf
c2V0dGluZ3NfZ2V0KGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KHdpbmRvdy0+ZXdrX3ZpZXcpKTsK
ICAgICBld2tfc2V0dGluZ3NfZmlsZV9hY2Nlc3NfZnJvbV9maWxlX3VybHNfYWxsb3dlZF9zZXQo
c2V0dGluZ3MsIEVJTkFfVFJVRSk7CiAgICAgZXdrX3NldHRpbmdzX2VuY29kaW5nX2RldGVjdG9y
X2VuYWJsZWRfc2V0KHNldHRpbmdzLCBlbmNvZGluZ19kZXRlY3Rvcl9lbmFibGVkKTsKICAgICBl
d2tfc2V0dGluZ3NfZnJhbWVfZmxhdHRlbmluZ19lbmFibGVkX3NldChzZXR0aW5ncywgZnJhbWVf
ZmxhdHRlbmluZ19lbmFibGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlld1VzZXJWaWV3cG9ydFRvQ29udGVu
dHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cy5jcHAKaW5kZXggNzA4OTliOGRhOWNm
MmVjNjUwZDdhYzI2MDk3ZGE1MTQwNDE5MmI5ZS4uMTU1NTJhNjk5ZmVjODE0Y2Y3ZjMzMDRkMWYx
YzgwZjQ3NDg5NmEwMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cy5jcHAKQEAgLTM4LDcgKzM4LDEwIEBAIFRF
U1QoV2ViS2l0MiwgRElTQUJMRURfV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cykKICAgICAv
LyBjb252ZXJzaW9uIG1hdGggaXMgcmlnaHQuCiAKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRS
ZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOwotICAgIFdLUmV0YWluUHRy
PFdLVmlld1JlZj4gd2ViVmlldyhBZG9wdFdLLCBXS1ZpZXdDcmVhdGUoY29udGV4dC5nZXQoKSwg
MCkpOworICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGNvbmZpZ3VyYXRp
b24oQWRvcHRXSywgV0tQYWdlQ29uZmlndXJhdGlvbkNyZWF0ZSgpKTsKKyAgICBXS1BhZ2VDb25m
aWd1cmF0aW9uU2V0Q29udGV4dChjb25maWd1cmF0aW9uLmdldCgpLCBjb250ZXh0LmdldCgpKTsK
KworICAgIFdLUmV0YWluUHRyPFdLVmlld1JlZj4gd2ViVmlldyhBZG9wdFdLLCBXS1ZpZXdDcmVh
dGUoY29udGV4dC5nZXQoKSwgY29uZmlndXJhdGlvbi5nZXQoKSkpOwogCiAgICAgV0tWaWV3SW5p
dGlhbGl6ZSh3ZWJWaWV3LmdldCgpKTsKICAgICBXS1BhZ2VTZXRVc2VGaXhlZExheW91dChXS1Zp
ZXdHZXRQYWdlKHdlYlZpZXcuZ2V0KCkpLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2VmbC9QbGF0Zm9ybVdlYlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9l
ZmwvUGxhdGZvcm1XZWJWaWV3LmNwcAppbmRleCAyZGU3ZWZhNTViZDIxNDViYzMzNjRlNDk3MWVl
ZTQ2OGRlMGZlODI3Li4wNjQzOGU3MDA3ODk3YmRkYmY4M2M0NjA3NmQ5YjkzOTIwNjViMGI2IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2VmbC9QbGF0Zm9ybVdlYlZpZXcuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZWZsL1BsYXRmb3JtV2ViVmlldy5jcHAKQEAgLTY4LDcg
KzY4LDExIEBAIFBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvCiB7CiAgICAgbV93aW5kb3cgPSBjcmVh
dGVFY29yZUV2YXMoKTsKIAotICAgIG1fdmlldyA9IEVXS1ZpZXdDcmVhdGUoY29udGV4dFJlZiwg
cGFnZUdyb3VwUmVmLCBlY29yZV9ldmFzX2dldChtX3dpbmRvdyksIC8qIHNtYXJ0ICovIDApOwor
ICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IHBhZ2VDb25maWd1cmF0aW9u
ID0gYWRvcHRXSyhXS1BhZ2VDb25maWd1cmF0aW9uQ3JlYXRlKCkpOworICAgIFdLUGFnZUNvbmZp
Z3VyYXRpb25TZXRDb250ZXh0KHBhZ2VDb25maWd1cmF0aW9uLmdldCgpLCBjb250ZXh0UmVmKTsK
KyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UGFnZUdyb3VwKHBhZ2VDb25maWd1cmF0aW9uLmdl
dCgpLCBwYWdlR3JvdXBSZWYpOworCisgICAgbV92aWV3ID0gRVdLVmlld0NyZWF0ZShjb250ZXh0
UmVmLCBwYWdlQ29uZmlndXJhdGlvbi5nZXQoKSwgZWNvcmVfZXZhc19nZXQobV93aW5kb3cpLCAv
KiBzbWFydCAqLyAwKTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1RoZW1lID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhERUZBVUxUX1RIRU1FX0RJUiAi
L2RlZmF1bHQuZWRqIikpOwogICAgIFdLVmlld1NldFRoZW1lUGF0aChFV0tWaWV3R2V0V0tWaWV3
KG1fdmlldyksIHdrVGhlbWUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
ZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKaW5kZXggNjFjNDkzOGEyNGJjOGFiNmUzZTJhNWY5
OWU2YmViMWJhZjQyZTQwNy4uMmE2M2M3MWE0NDZkMGI5NTlmMmUyMDkxZmE1NGE4MzUwMjRiMjgx
MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3
RWZsLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0Zm9ybVdlYlZpZXdF
ZmwuY3BwCkBAIC02Miw4ICs2Miw3IEBAIFBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3
KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzCiAgICAgbV93
aW5kb3cgPSBpbml0RWNvcmVFdmFzKCk7CiAKICAgICBXS0NvbnRleHRSZWYgY29udGV4dCA9IFdL
UGFnZUNvbmZpZ3VyYXRpb25HZXRDb250ZXh0KGNvbmZpZ3VyYXRpb24pOwotICAgIFdLUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cCA9IFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRQYWdlR3JvdXAoY29uZmln
dXJhdGlvbik7Ci0gICAgbV92aWV3ID0gRVdLVmlld0NyZWF0ZShjb250ZXh0LCBwYWdlR3JvdXAs
IGVjb3JlX2V2YXNfZ2V0KG1fd2luZG93KSwgLyogc21hcnQgKi8gMCk7CisgICAgbV92aWV3ID0g
RVdLVmlld0NyZWF0ZShjb250ZXh0LCBjb25maWd1cmF0aW9uLCBlY29yZV9ldmFzX2dldChtX3dp
bmRvdyksIC8qIHNtYXJ0ICovIDApOwogCiAgICAgV0tQYWdlU2V0VXNlRml4ZWRMYXlvdXQoV0tW
aWV3R2V0UGFnZShFV0tWaWV3R2V0V0tWaWV3KG1fdmlldykpLCBtX3VzaW5nRml4ZWRMYXlvdXQp
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265115</attachid>
            <date>2015-11-09 16:26:18 -0800</date>
            <delta_ts>2015-11-09 17:46:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145924-20151110092614.patch</filename>
            <type>text/plain</type>
            <size>44365</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjAyZDZiNmVmMjMwNGI2
ZjJjNzQxYTVkMTk4YWM1MmEyZjQ3NGI1ZS4uNGJhOTBlYmMwMzQxMjhlYjc2MmFiNzA4N2RhOTFk
MGYzYjY5NmQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE1LTExLTA5ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIENyYXNo
IHdoaWxlIG9wZW5pbmcgY2hpbGQgd2VidmlldyB3aXRoIEVXS19QUk9DRVNTX01PREVMX01VTFRJ
UExFX1NFQ09OREFSWQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ1OTI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlcmUgYXJlIHNvbWUgY3Jhc2hlcyB3aGVuIHdlIGNsaWNrZWQgdGhlIGxpbmsgdGhh
dCBvcGVucyBjaGlsZCB3aW5kb3cKKyAgICAgICAgdmlhIHdpbmRvdy5vcGVuIG9yIDxhPiB0YWcg
d2l0aCBfYmxhbmsgdGFyZ2V0IGlmIHByb2Nlc3MgbW9kZWwgaXMgbXVsdGlwbGUKKyAgICAgICAg
c2Vjb25kYXJ5LgorCisgICAgICAgIEl0J3MgYmVjYXVzZSBtdWx0aXBsZSBzZWNvbmRhcnkgcHJv
Y2VzcyBtb2RlbCB0cmllcyB0byBhc3NpZ24gbmV3IHdlYnByb2Nlc3MKKyAgICAgICAgaWYgcmVs
YXRlZCBwYWdlIGlzIG51bGwuIEluIG9yZGVyIHRvIGtlZXAgdGhlIGNoaWxkIHdpbmRvdyBpbiBz
YW1lIHByb2Nlc3MKKyAgICAgICAgd2l0aCBvcGVuZXIsIHdlIHNob3VsZCBwYXNzIHJlbGF0ZWQg
cGFnZSB3aGVuIHdlIGNyZWF0ZSBXZWJQYWdlUHJveHkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIGV3a192aWV3X2NvbmZpZ3VyYXRpb24gb2JqZWN0IGFuZCBld2tfdmlld19hZGRfY29uZmln
dXJhdGlvbigpCisgICAgICAgIHRvIHBhc3MgcmVsYXRlZCBwYWdlIHRvIFdlYlBhZ2VQcm94eS4K
KworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdDcmVhdGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmguaW46CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3OjpjcmVhdGVO
ZXdQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19jb25maWd1cmF0
aW9uLmNwcDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfY29u
ZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
d19jb25maWd1cmF0aW9uX3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoRVdLVmlld0NyZWF0ZSk6CisgICAgICAgIChl
d2tfdmlld19zbWFydF9hZGQpOgorICAgICAgICAoZXdrX3ZpZXdfYWRkX3dpdGhfY29uZmlndXJh
dGlvbik6IEFkZGVkIHRvIHBhc3MgY29uZmlndXJhdGlvbi4KKyAgICAgICAgKGV3a192aWV3X2Fk
ZF93aXRoX2NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFz
ZS5jcHA6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEJhc2U6OndhaXRVbnRp
bFRpdGxlQ2hhbmdlZFRvKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVuaXRUZXN0QmFz
ZTo6d2FpdFVudGlsTm90TnVsbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
VW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOiBBZGRlZCB0ZXN0IGNhc2VzIHRvIHRlc3Qg
d2luZG93X2NyZWF0ZSBzbWFydCBtZXRob2QuCisgICAgICAgICh3aW5kb3dDcmVhdGVDYWxsYmFj
ayk6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAoRVdLMlZpZXdUZXN0TmV3V2luZG93V2l0
aE11bHRpcGxlUHJvY2Vzc2VzOjpFV0syVmlld1Rlc3ROZXdXaW5kb3dXaXRoTXVsdGlwbGVQcm9j
ZXNzZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl93aW5k
b3dfZmVhdHVyZXMuY3BwOgorICAgICAgICAoRVdLMldpbmRvd0ZlYXR1cmVzVGVzdDo6Y3JlYXRl
RGVmYXVsdFdpbmRvdyk6CisgICAgICAgIChFV0syV2luZG93RmVhdHVyZXNUZXN0OjpjcmVhdGVX
aW5kb3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9lZmwvV2ViVmlld0VmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdFZmw6OldlYlZpZXdFZmwpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5oOgorCiAyMDE1LTExLTA3ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBDb2xvclNwYWNlIGFy
Z3VtZW50IHRvIGFsbCB0aGUgZHJhd2luZyBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpp
bmRleCA4M2UyZWU5ODExY2Y2ZDJhNTgwZDJlOWU2ZGVkMDMzYWE3NzZkZDI4Li5kYmU4NzRiZDdk
NjNhNDhkZGFjZjBlMmVhYjhiMTM3MjYxYmEzN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQpAQCAtMTE2LDYgKzExNiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdXJsX3Jlc3BvbnNlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2No
ZW1lX3JlcXVlc3QuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfY29uZmlndXJh
dGlvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKICAgICBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3
LmNwcAppbmRleCBhNTg4NDgwNjNlODAwYjFlM2U5MjY1NDBhMTE5MWE4OTc1ZDkwOTAyLi45NjU0
ZDVlZmFkZjNhZWQ1NzEzYTlhMGYyZGU0MTg0NmI0MWZmOGU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dL
Vmlldy5jcHAKQEAgLTIzLDE1ICsyMywxNiBAQAogCiAjaW5jbHVkZSAiV0tWaWV3LmgiCiAKKyNp
bmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldlYlZpZXcuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCi1XS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCitXS1ZpZXdSZWYgV0tWaWV3
Q3JlYXRlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIHBhZ2VD
b25maWd1cmF0aW9uKQogewotICAgIFJlZlB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gV2ViVmlldzo6
Y3JlYXRlKHRvSW1wbChjb250ZXh0UmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJlZikpOworICAgIFJl
ZlB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gV2ViVmlldzo6Y3JlYXRlKHRvSW1wbChjb250ZXh0KSwg
KnRvSW1wbChwYWdlQ29uZmlndXJhdGlvbikpOwogICAgIHJldHVybiB0b0FQSSh3ZWJWaWV3LnJl
bGVhc2UoKS5sZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5oCmluZGV4IGYxNDg4
ZTNhZTkyMWJkM2UzODE0Mjc2OTE0OWRjMTkwZWJlY2ZlZTguLjMxODQyNTgwOTdiZDVkNmNhN2Q4
NzVlMWNiMmIyOTAxM2Q2ZjJkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5oCkBAIC02NCw3ICs2
NCw3IEBAIHR5cGVkZWYgc3RydWN0IFdLVmlld0NsaWVudFYwIHsKICAgICBXS1ZpZXdEb25lV2l0
aFRvdWNoRXZlbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgZG9uZVdpdGhUb3VjaEV2ZW50Owog
fSBXS1ZpZXdDbGllbnRWMDsKIAotV0tfRVhQT1JUIFdLVmlld1JlZiBXS1ZpZXdDcmVhdGUoV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCk7CitXS19FWFBPUlQg
V0tWaWV3UmVmIFdLVmlld0NyZWF0ZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlQ29uZmln
dXJhdGlvblJlZiBwYWdlQ29uZmlndXJhdGlvbik7CiAKIFdLX0VYUE9SVCB2b2lkIFdLVmlld0lu
aXRpYWxpemUoV0tWaWV3UmVmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRVdlYktpdDIuaC5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL0VXZWJLaXQyLmguaW4KaW5kZXggZDQ0NDUxMTNhMGI1ZWIyYTViOWJhMGJhMTAxYmMzYjMz
YTVkN2MzYy4uMDQ0OGVlNjA3YWNiNjRiNDgxY2Q4ZWMxMTRiZDgxOTY3ZTcwZmQ5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaC5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oLmluCkBAIC02NCw2
ICs2NCw3IEBACiAjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5oIgogI2luY2x1ZGUgImV3a191
cmxfc2NoZW1lX3JlcXVlc3QuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgorI2luY2x1ZGUgImV3
a192aWV3X2NvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJld2tfd2luZG93X2ZlYXR1cmVzLmgi
CiAKICNlbmRpZiAvLyBFV2ViS2l0Ml9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL0V3a1ZpZXcuY3BwCmluZGV4IGYxZTVjMjMxMmFiNmJmOTBhY2M4MzVmZjZjZWNkMTlkMmI2
NTRlZTYuLjAzZGFhZDJjNWJjZjQzNzQzNzYxN2YzNWQ0MzAxMmQ4MGQ0MDAwMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC02Miw2ICs2Miw3
IEBACiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19z
ZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19zZXR0aW5nc19wcml2YXRl
LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfY29uZmlndXJhdGlvbl9wcml2YXRlLmgiCiAjaW5jbHVk
ZSAiZXdrX3dpbmRvd19mZWF0dXJlc19wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5o
PgogI2luY2x1ZGUgPEVkamUuaD4KQEAgLTExMzEsOSArMTEzMiwxMyBAQCBXS1BhZ2VSZWYgRXdr
Vmlldzo6Y3JlYXRlTmV3UGFnZShQYXNzUmVmUHRyPEV3a1VybFJlcXVlc3Q+LCBXS0RpY3Rpb25h
cnlSZWYgd2luZAogICAgIGlmICghc2QtPmFwaS0+d2luZG93X2NyZWF0ZSkKICAgICAgICAgcmV0
dXJuIDA7CiAKKyAgICBXS1BhZ2VSZWYgd2tQYWdlUmVmID0gd2tQYWdlKCk7CiAgICAgUmVmUHRy
PEV3a1dpbmRvd0ZlYXR1cmVzPiBld2tXaW5kb3dGZWF0dXJlcyA9IEV3a1dpbmRvd0ZlYXR1cmVz
OjpjcmVhdGUod2luZG93RmVhdHVyZXMsIHRoaXMpOworICAgIFdLUmV0YWluUHRyPFdLUGFnZUNv
bmZpZ3VyYXRpb25SZWY+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdFdLKFdLUGFnZUNvcHlQYWdlQ29u
ZmlndXJhdGlvbih3a1BhZ2VSZWYpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UmVsYXRl
ZFBhZ2UoY29uZmlndXJhdGlvbi5nZXQoKSwgd2tQYWdlUmVmKTsKKyAgICBSZWY8RXdrVmlld0Nv
bmZpZ3VyYXRpb24+IGV3a1ZpZXdDb25maWd1cmF0aW9uID0gRXdrVmlld0NvbmZpZ3VyYXRpb246
OmNyZWF0ZShjb25maWd1cmF0aW9uLmdldCgpKTsKIAotICAgIEV2YXNfT2JqZWN0KiBuZXdFd2tW
aWV3ID0gc2QtPmFwaS0+d2luZG93X2NyZWF0ZShzZCwgZXdrV2luZG93RmVhdHVyZXMuZ2V0KCkp
OworICAgIEV2YXNfT2JqZWN0KiBuZXdFd2tWaWV3ID0gc2QtPmFwaS0+d2luZG93X2NyZWF0ZShz
ZCwgJmV3a1ZpZXdDb25maWd1cmF0aW9uLmdldCgpLCBld2tXaW5kb3dGZWF0dXJlcy5nZXQoKSk7
CiAgICAgaWYgKCFuZXdFd2tWaWV3KQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IGUyMGRhYjIzODc1ODM1
MWE3OGRlOGYxYzliZWUxMTUyZmMwNGNjZGUuLjJiOWU5ODA3NzBkNjRkM2M1NzFkOTJlMzRmNzVj
NzI3NjkyNDMwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5jcHAKQEAgLTI4LDEzICsyOCwxNCBAQAogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfbWFpbl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3BhZ2Vf
Z3JvdXBfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3X2NvbmZpZ3VyYXRpb25fcHJpdmF0
ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8
V2ViS2l0L1dLQVBJQ2FzdC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0RhdGEuaD4KICNpbmNsdWRl
IDxXZWJLaXQvV0tFaW5hU2hhcmVkU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLRmluZE9w
dGlvbnMuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tJbnNwZWN0b3IuaD4KLSNpbmNsdWRlIDxXZWJL
aXQvV0tQYWdlR3JvdXAuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlQ29uZmlndXJhdGlvblJl
Zi5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYktpdC9X
S1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1N0cmluZy5oPgpA
QCAtNzgsMTQgKzc5LDE0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zbWFydF9jbGFzc19zZXQoRXdr
X1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSkKICAgICByZXR1cm4gRXdrVmlldzo6aW5pdFNtYXJ0Q2xh
c3NJbnRlcmZhY2UoKmFwaSk7CiB9CiAKLUV2YXNfT2JqZWN0KiBFV0tWaWV3Q3JlYXRlKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIEV2YXMqIGNhbnZhcywg
RXZhc19TbWFydCogc21hcnQpCitFdmFzX09iamVjdCogRVdLVmlld0NyZWF0ZShXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBwYWdlQ29uZmlndXJhdGlvbiwgRXZh
cyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCkKIHsKICAgICBpZiAoIUV3a01haW46OnNpbmds
ZXRvbigpLmlzSW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBFSU5BX0xPR19DUklUKCJFV2ViS2l0
IGhhcyBub3QgYmVlbiBpbml0aWFsaXplZC4gWW91IG11c3QgY2FsbCBld2tfaW5pdCgpIGJlZm9y
ZSBjcmVhdGluZyB2aWV3LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBXS1JldGFpblB0cjxXS1ZpZXdSZWY+IHdrVmlldyA9IGFkb3B0V0soV0tWaWV3Q3JlYXRlKGNv
bnRleHQsIHBhZ2VHcm91cCkpOworICAgIFdLUmV0YWluUHRyPFdLVmlld1JlZj4gd2tWaWV3ID0g
YWRvcHRXSyhXS1ZpZXdDcmVhdGUoY29udGV4dCwgcGFnZUNvbmZpZ3VyYXRpb24pKTsKICAgICBp
ZiAoRXdrVmlldyogZXdrVmlldyA9IEV3a1ZpZXc6OmNyZWF0ZSh3a1ZpZXcuZ2V0KCksIGNhbnZh
cywgc21hcnQpKQogICAgICAgICByZXR1cm4gZXdrVmlldy0+ZXZhc09iamVjdCgpOwogCkBAIC0x
MDksNyArMTEwLDI4IEBAIEV2YXNfT2JqZWN0KiBld2tfdmlld19zbWFydF9hZGQoRXZhcyogY2Fu
dmFzLCBFdmFzX1NtYXJ0KiBzbWFydCwgRXdrX0NvbnRleHQqIGNvCiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKGV3a1BhZ2VHcm91cCwgbnVsbHB0cik7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGV3a1BhZ2VHcm91cC0+d2tQYWdlR3JvdXAoKSwgbnVsbHB0
cik7CiAKLSAgICByZXR1cm4gRVdLVmlld0NyZWF0ZShld2tDb250ZXh0LT53a0NvbnRleHQoKSwg
ZXdrUGFnZUdyb3VwLT53a1BhZ2VHcm91cCgpLCBjYW52YXMsIHNtYXJ0KTsKKyAgICBXS1JldGFp
blB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBwYWdlQ29uZmlndXJhdGlvbiA9IGFkb3B0V0so
V0tQYWdlQ29uZmlndXJhdGlvbkNyZWF0ZSgpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0
Q29udGV4dChwYWdlQ29uZmlndXJhdGlvbi5nZXQoKSwgZXdrQ29udGV4dC0+d2tDb250ZXh0KCkp
OworICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRQYWdlR3JvdXAocGFnZUNvbmZpZ3VyYXRpb24u
Z2V0KCksIGV3a1BhZ2VHcm91cC0+d2tQYWdlR3JvdXAoKSk7CisKKyAgICByZXR1cm4gRVdLVmll
d0NyZWF0ZShld2tDb250ZXh0LT53a0NvbnRleHQoKSwgcGFnZUNvbmZpZ3VyYXRpb24uZ2V0KCks
IGNhbnZhcywgc21hcnQpOworfQorCitFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkX3dpdGhfY29u
ZmlndXJhdGlvbihFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0LCBFd2tfVmlld19Db25m
aWd1cmF0aW9uKiBjb25maWd1cmF0aW9uKQoreworICAgIGlmICghY29uZmlndXJhdGlvbikKKyAg
ICAgICAgY29uZmlndXJhdGlvbiA9IGV3a192aWV3X2NvbmZpZ3VyYXRpb25fbmV3KCk7CisKKyAg
ICBFd2tWaWV3Q29uZmlndXJhdGlvbiogZXdrVmlld0NvbmZpZ3VyYXRpb24gPSBld2tfb2JqZWN0
X2Nhc3Q8RXdrVmlld0NvbmZpZ3VyYXRpb24qPihjb25maWd1cmF0aW9uKTsKKworICAgIFdLQ29u
dGV4dFJlZiBjb250ZXh0ID0gV0tQYWdlQ29uZmlndXJhdGlvbkdldENvbnRleHQoZXdrVmlld0Nv
bmZpZ3VyYXRpb24tPndrUGFnZUNvbmZpZ3VyYXRpb24oKSk7CisgICAgaWYgKCFjb250ZXh0KSB7
CisgICAgICAgIEV3a0NvbnRleHQqIGV3a0NvbnRleHQgPSBld2tfb2JqZWN0X2Nhc3Q8RXdrQ29u
dGV4dCo+KGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkpOworICAgICAgICBjb250ZXh0ID0gZXdr
Q29udGV4dC0+d2tDb250ZXh0KCk7CisgICAgICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRDb250
ZXh0KGV3a1ZpZXdDb25maWd1cmF0aW9uLT53a1BhZ2VDb25maWd1cmF0aW9uKCksIGNvbnRleHQp
OworICAgIH0KKworICAgIHJldHVybiBFV0tWaWV3Q3JlYXRlKGNvbnRleHQsIGV3a1ZpZXdDb25m
aWd1cmF0aW9uLT53a1BhZ2VDb25maWd1cmF0aW9uKCksIGNhbnZhcywgc21hcnQpOwogfQogCiBF
dmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2YXMqIGNhbnZhcykKQEAgLTEyMyw3ICsxNDUsMTAg
QEAgRXZhc19PYmplY3QqIGV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyogY2FudmFzLCBF
d2tfQ29udGV4dCogY29udGV4dCkKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
ZXdrQ29udGV4dCwgbnVsbHB0cik7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KGV3a0NvbnRleHQtPndrQ29udGV4dCgpLCBudWxscHRyKTsKIAotICAgIHJldHVybiBFV0tWaWV3
Q3JlYXRlKGV3a0NvbnRleHQtPndrQ29udGV4dCgpLCAwLCBjYW52YXMsIDApOworICAgIFdLUmV0
YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IHBhZ2VDb25maWd1cmF0aW9uID0gYWRvcHRX
SyhXS1BhZ2VDb25maWd1cmF0aW9uQ3JlYXRlKCkpOworICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25T
ZXRDb250ZXh0KHBhZ2VDb25maWd1cmF0aW9uLmdldCgpLCBld2tDb250ZXh0LT53a0NvbnRleHQo
KSk7CisKKyAgICByZXR1cm4gRVdLVmlld0NyZWF0ZShld2tDb250ZXh0LT53a0NvbnRleHQoKSwg
cGFnZUNvbmZpZ3VyYXRpb24uZ2V0KCksIGNhbnZhcywgMCk7CiB9CiAKIHZvaWQgZXdrX3ZpZXdf
dHJ5X2Nsb3NlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXggNDM5ODk5MDYwNjdkN2JkMTJmYzFkNzc1OTgxYjMz
M2MxOTY4Y2YwYy4uMWJmMGIwNDc3M2YwOTRkZmNjODk3NDYxYTNiMTVmNmE3NWUxMTU1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC0xLDYgKzEs
NyBAQAogLyoKICAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCiAgICBD
b3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgICBDb3B5cmlnaHQgKEMpIDIwMTUgTmF2ZXIgQ29ycC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
IAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODAsNiArODEsNyBAQAogI2luY2x1ZGUgImV3a190b3Vj
aC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVz
cG9uc2UuaCIKKyNpbmNsdWRlICJld2tfdmlld19jb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAi
ZXdrX3dpbmRvd19mZWF0dXJlcy5oIgogI2luY2x1ZGUgPEV2YXMuaD4KIApAQCAtMTY2LDcgKzE2
OCw3IEBAIHN0cnVjdCBFd2tfVmlld19TbWFydF9DbGFzcyB7CiAKICAgICAvLyB3aW5kb3cgY3Jl
YXRpb24gYW5kIGNsb3Npbmc6CiAgICAgLy8gICAtIENyZWF0ZSBhIG5ldyB3aW5kb3cgd2l0aCBz
cGVjaWZpZWQgZmVhdHVyZXMgYW5kIGNsb3NlIHdpbmRvdy4KLSAgICBFdmFzX09iamVjdCAqKCp3
aW5kb3dfY3JlYXRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXdrX1dpbmRvd19G
ZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzKTsKKyAgICBFdmFzX09iamVjdCAqKCp3aW5kb3dfY3Jl
YXRlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdrX1ZpZXdfQ29uZmlndXJhdGlvbiogY29u
ZmlndXJhdGlvbiwgY29uc3QgRXdrX1dpbmRvd19GZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzKTsK
ICAgICB2b2lkICgqd2luZG93X2Nsb3NlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CiB9Owog
CkBAIC0zNDIsMTUgKzM0NCwzNyBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19zbWFydF9jbGFz
c19zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MgKmFwaSk7CiAgKiBAcGFyYW0gcGFnZUdyb3VwIEV3
a19QYWdlX0dyb3VwIG9iamVjdCB3aGljaCBpcyB1c2VkIGZvciBpbml0aWFsaXppbmcKICAqCiAg
KiBAcmV0dXJuIHZpZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCisg
KgorICogQHNlZSBld2tfdmlld19hZGRfd2l0aF9jb25maWd1cmF0aW9uCiAgKi8KIEVBUEkgRXZh
c19PYmplY3QgKmV3a192aWV3X3NtYXJ0X2FkZChFdmFzICplLCBFdmFzX1NtYXJ0ICpzbWFydCwg
RXdrX0NvbnRleHQgKmNvbnRleHQsIEV3a19QYWdlX0dyb3VwICpwYWdlR3JvdXApOwogCiAvKioK
KyAqIENyZWF0ZXMgYSBuZXcgRUZMIFdlYktpdCB2aWV3IG9iamVjdCB3aXRoIEV3a19WaWV3X0Nv
bmZpZ3VyYXRpb24KKyAqCisgKiBAbm90ZSBUaGUgRXZhc19PYmplY3Qgd2hpY2ggaW5oZXJpdHMg
dGhlIGV3a192aWV3IHNob3VsZCBjcmVhdGUgaXRzCisgKiAgICAgICBFdmFzX09iamVjdCB1c2lu
ZyB0aGlzIEFQSSBpbnN0ZWFkIG9mIGV2YXNfb2JqZWN0X3NtYXJ0X2FkZCgpCisgKiAgICAgICBi
ZWNhdXNlIHRoZSBkZWZhdWx0IGluaXRpYWxpemF0aW9uIGZvciBld2tfdmlldyBpcyBkb25lIGlu
IHRoaXMgQVBJLgorICoKKyAqIEBwYXJhbSBlIGNhbnZhcyBvYmplY3Qgd2hlcmUgdG8gY3JlYXRl
IHRoZSB2aWV3IG9iamVjdAorICogQHBhcmFtIHNtYXJ0IEV2YXNfU21hcnQgb2JqZWN0LiBJdHMg
dHlwZSBzaG91bGQgYmUgRVdLX1ZJRVdfVFlQRV9TVFIKKyAqIEBwYXJhbSBjb25maWd1cmF0aW9u
IEV3a19WaWV3X0NvbmZpZ3VyYXRpb24gb2JqZWN0IHdoaWNoIGlzIHVzZWQgZm9yIGluaXRpYWxp
emluZyBvciBAYyBOVUxMIHRvIHVzZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24KKyAqCisgKiBAcmV0
dXJuIHZpZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCisgKgorICog
QHNlZSB3aW5kb3dfY3JlYXRlCisgKiBAc2VlIGV3a192aWV3X2NvbmZpZ3VyYXRpb25fbmV3Cisg
Ki8KK0VBUEkgRXZhc19PYmplY3QgKmV3a192aWV3X2FkZF93aXRoX2NvbmZpZ3VyYXRpb24oRXZh
cyAqZSwgRXZhc19TbWFydCAqc21hcnQsIEV3a19WaWV3X0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3Vy
YXRpb24pOworCisvKioKICAqIENyZWF0ZXMgYSBuZXcgRUZMIFdlYktpdCB2aWV3IG9iamVjdC4K
ICAqCiAgKiBAcGFyYW0gZSBjYW52YXMgb2JqZWN0IHdoZXJlIHRvIGNyZWF0ZSB0aGUgdmlldyBv
YmplY3QKICAqCiAgKiBAcmV0dXJuIHZpZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBv
biBmYWlsdXJlCisgKgorICogQHNlZSBld2tfdmlld19hZGRfd2l0aF9jb25maWd1cmF0aW9uCiAg
Ki8KIEVBUEkgRXZhc19PYmplY3QgKmV3a192aWV3X2FkZChFdmFzICplKTsKIApAQCAtMzYxLDYg
KzM4NSw4IEBAIEVBUEkgRXZhc19PYmplY3QgKmV3a192aWV3X2FkZChFdmFzICplKTsKICAqIEBw
YXJhbSBjb250ZXh0IEV3a19Db250ZXh0IG9iamVjdCB0byBkZWNsYXJlIHByb2Nlc3MgbW9kZWwK
ICAqCiAgKiBAcmV0dXJuIHZpZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWls
dXJlCisgKgorICogQHNlZSBld2tfdmlld19hZGRfd2l0aF9jb25maWd1cmF0aW9uCiAgKi8KIEVB
UEkgRXZhc19PYmplY3QgKmV3a192aWV3X2FkZF93aXRoX2NvbnRleHQoRXZhcyAqZSwgRXdrX0Nv
bnRleHQgKmNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld19jb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3X2NvbmZpZ3VyYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1Njdl
Njk1OTMxMTBhNzI1MmNiM2MxMDU2NTM5MGI3ZTQzOWFiZGYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19jb25maWd1cmF0aW9uLmNw
cApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IE5hdmVyIENvcnAu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJld2tfdmlld19jb25maWd1cmF0aW9uLmgiCisKKyNpbmNsdWRlICJld2tfdmlld19j
b25maWd1cmF0aW9uX3ByaXZhdGUuaCIKKworUmVmPEV3a1ZpZXdDb25maWd1cmF0aW9uPiBFd2tW
aWV3Q29uZmlndXJhdGlvbjo6Y3JlYXRlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJh
dGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFd2tWaWV3Q29uZmlndXJhdGlvbihj
b25maWd1cmF0aW9uKSk7Cit9CisKK0V3a1ZpZXdDb25maWd1cmF0aW9uOjpFd2tWaWV3Q29uZmln
dXJhdGlvbihXS1BhZ2VDb25maWd1cmF0aW9uUmVmIHBhZ2VDb25maWd1cmF0aW9uKQorICAgIDog
bV9wYWdlQ29uZmlndXJhdGlvbihwYWdlQ29uZmlndXJhdGlvbikKK3sKK30KKworRXdrX1ZpZXdf
Q29uZmlndXJhdGlvbiogZXdrX3ZpZXdfY29uZmlndXJhdGlvbl9uZXcoKQoreworICAgIHJldHVy
biAmRXdrVmlld0NvbmZpZ3VyYXRpb246OmNyZWF0ZShXS1BhZ2VDb25maWd1cmF0aW9uQ3JlYXRl
KCkpLmxlYWtSZWYoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3X2NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3X2NvbmZpZ3VyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hY2E4YWExNzY4
MmNlMDM3MmVhNzU3MjIxMjU5OWYwNTExOGExZGJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfY29uZmlndXJhdGlvbi5oCkBAIC0w
LDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTmF2ZXIgQ29ycC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfdmlld19jb25m
aWd1cmF0aW9uLmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrX1ZpZXdfQ29uZmlndXJh
dGlvbiBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfdmlld19jb25maWd1cmF0aW9uX2gKKyNkZWZp
bmUgZXdrX3ZpZXdfY29uZmlndXJhdGlvbl9oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBEZWNsYXJlIEV3
a19WaWV3X0NvbmZpZ3VyYXRpb24gYXMgRXdrX09iamVjdC4KKyAqCisgKiBFd2tfVmlld19Db25m
aWd1cmF0aW9uIGlzIGEgY29sbGVjdGlvbiBvZiBwcm9wZXJ0aWVzIHVzZWQgdG8gaW5pdGlhbGl6
ZSBhIGV3a192aWV3LgorICogCisgKiBAc2VlIEV3a19PYmplY3QKKyAqIEBzZWUgZXdrX3ZpZXdf
YWRkX3dpdGhfY29uZmlndXJhdGlvbgorICovCisjaWZkZWYgX19jcGx1c3BsdXMKK3R5cGVkZWYg
Y2xhc3MgRXdrT2JqZWN0IEV3a19WaWV3X0NvbmZpZ3VyYXRpb247CisjZWxzZQordHlwZWRlZiBz
dHJ1Y3QgRXdrT2JqZWN0IEV3a19WaWV3X0NvbmZpZ3VyYXRpb247CisjZW5kaWYKKworLyoqCisg
KiBDcmVhdGVzIGEgbmV3IEV3a19WaWV3X0NvbmZpZ3VyYXRpb24uCisgKgorICogVGhlIHJldHVy
bmVkIEV3a19WaWV3X0NvbmZpZ3VyYXRpb24gb2JqZWN0IEBiIHNob3VsZCBiZSB1bnJlZidlZCBh
ZnRlciB1c2UuCisgKgorICogQHJldHVybiBFd2tfVmlld19Db25maWd1cmF0aW9uIG9iamVjdCBv
biBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZQorICoKKyAqIEBzZWUgZXdrX29iamVjdF91
bnJlZgorICovCitFQVBJIEV3a19WaWV3X0NvbmZpZ3VyYXRpb24gKmV3a192aWV3X2NvbmZpZ3Vy
YXRpb25fbmV3KHZvaWQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X2NvbmZpZ3VyYXRpb25fcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXdfY29uZmlndXJhdGlvbl9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc3YzM5ZWY4
NWZiOTU0YWQ1Mjg2YjVhYjJmZTlhNjI5NjgzYjJmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2NvbmZpZ3VyYXRpb25fcHJpdmF0
ZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTmF2ZXIgQ29y
cC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfdmlld19jb25m
aWd1cmF0aW9uX3ByaXZhdGVfaAorI2RlZmluZSBld2tfdmlld19jb25maWd1cmF0aW9uX3ByaXZh
dGVfaAorCisjaW5jbHVkZSAiZXdrX29iamVjdF9wcml2YXRlLmgiCisjaW5jbHVkZSA8V2ViS2l0
L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmg+Cisj
aW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
CitjbGFzcyBFd2tWaWV3Q29uZmlndXJhdGlvbiA6IHB1YmxpYyBFd2tPYmplY3QgeworcHVibGlj
OgorICAgIEVXS19PQkpFQ1RfREVDTEFSRShFd2tWaWV3Q29uZmlndXJhdGlvbik7CisKKyAgICBz
dGF0aWMgUmVmPEV3a1ZpZXdDb25maWd1cmF0aW9uPiBjcmVhdGUoV0tQYWdlQ29uZmlndXJhdGlv
blJlZik7CisKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIHdrUGFnZUNvbmZpZ3VyYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3BhZ2VDb25maWd1cmF0aW9uLmdldCgpOyB9CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgRXdrVmlld0NvbmZpZ3VyYXRpb24oV0tQYWdlQ29uZmlndXJhdGlvblJl
Zik7CisKKyAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBtX3BhZ2VDb25m
aWd1cmF0aW9uOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggMGU4ZDQ1OGVlYTYxNzhhMTRmNmE3
M2UyODMxNWU5ZTliM2NkOGRmMS4uNDQ4Y2U0NjkwNjRhNDczNTU4NTRlODU1MzM5YmQ5YWIzZmZl
ZjQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3X3ByaXZhdGUuaApAQCAtMzMsNyArMzMsNyBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAot
RUFQSSBFdmFzX09iamVjdCogRVdLVmlld0NyZWF0ZShXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3Vw
UmVmLCBFdmFzKiwgRXZhc19TbWFydCopOworRUFQSSBFdmFzX09iamVjdCogRVdLVmlld0NyZWF0
ZShXS0NvbnRleHRSZWYsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIEV2YXMqLCBFdmFzX1NtYXJ0
Kik7CiBFQVBJIFdLVmlld1JlZiBFV0tWaWV3R2V0V0tWaWV3KEV2YXNfT2JqZWN0Kik7CiAKICNp
ZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0
QmFzZS5jcHAKaW5kZXggNDMxNmM2YTc3ZmVhM2VhNWY4NmFiZDJhZDY3NTA4NTAzMzZmZGM1Zi4u
N2EzNDc5NzU2MmUwZGRmMTdjYjgwMjY1ODgyMzIxNTRiYzRlZTA0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5p
dFRlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCkBAIC0xOTksMTQgKzE5OSwxOSBA
QCBzdGF0aWMgdm9pZCBvblRpdGxlQ2hhbmdlZCh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3Qq
IHdlYlZpZXcsIHZvaWQqKQogCiBib29sIEVXSzJVbml0VGVzdEJhc2U6OndhaXRVbnRpbFRpdGxl
Q2hhbmdlZFRvKGNvbnN0IGNoYXIqIGV4cGVjdGVkVGl0bGUsIGRvdWJsZSB0aW1lb3V0U2Vjb25k
cykKIHsKKyAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhtX3dlYlZpZXcsIGV4cGVjdGVkVGl0
bGUsIHRpbWVvdXRTZWNvbmRzKTsKK30KKworYm9vbCBFV0syVW5pdFRlc3RCYXNlOjp3YWl0VW50
aWxUaXRsZUNoYW5nZWRUbyhFdmFzX09iamVjdCogd2ViVmlldywgY29uc3QgY2hhciogZXhwZWN0
ZWRUaXRsZSwgZG91YmxlIHRpbWVvdXRTZWNvbmRzKQorewogICAgIENhbGxiYWNrRGF0YUV4cGVj
dGVkVmFsdWU8Q1N0cmluZz4gZGF0YShleHBlY3RlZFRpdGxlLCB0aW1lb3V0U2Vjb25kcyk7CiAK
LSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQobV93ZWJWaWV3LCAidGl0bGUsY2hh
bmdlZCIsIG9uVGl0bGVDaGFuZ2VkLCAmZGF0YSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfYWRkKHdlYlZpZXcsICJ0aXRsZSxjaGFuZ2VkIiwgb25UaXRsZUNoYW5nZWQsICZkYXRh
KTsKIAogICAgIHdoaWxlICghZGF0YS5pc0RvbmUoKSkKICAgICAgICAgZWNvcmVfbWFpbl9sb29w
X2l0ZXJhdGUoKTsKIAotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbChtX3dlYlZp
ZXcsICJ0aXRsZSxjaGFuZ2VkIiwgb25UaXRsZUNoYW5nZWQpOworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2RlbCh3ZWJWaWV3LCAidGl0bGUsY2hhbmdlZCIsIG9uVGl0bGVDaGFuZ2Vk
KTsKIAogICAgIHJldHVybiAhZGF0YS5kaWRUaW1lT3V0KCk7CiB9CkBAIC0yNDUsNiArMjUwLDE2
IEBAIGJvb2wgRVdLMlVuaXRUZXN0QmFzZTo6d2FpdFVudGlsVHJ1ZShib29sICZmbGFnLCBkb3Vi
bGUgdGltZW91dFNlY29uZHMpCiAgICAgcmV0dXJuICFkYXRhLmRpZFRpbWVPdXQoKTsKIH0KIAor
Ym9vbCBFV0syVW5pdFRlc3RCYXNlOjp3YWl0VW50aWxOb3ROdWxsKEV2YXNfT2JqZWN0KiogcmF3
UG9pbnRlciwgZG91YmxlIHRpbWVvdXRTZWNvbmRzKQoreworICAgIENhbGxiYWNrRGF0YUV4cGVj
dGVkVmFsdWU8Ym9vbD4gZGF0YSh0cnVlLCB0aW1lb3V0U2Vjb25kcyk7CisKKyAgICB3aGlsZSAo
IWRhdGEuaXNEb25lKCkgJiYgISpyYXdQb2ludGVyKQorICAgICAgICBlY29yZV9tYWluX2xvb3Bf
aXRlcmF0ZSgpOworCisgICAgcmV0dXJuICFkYXRhLmRpZFRpbWVPdXQoKTsKK30KKwogYm9vbCBF
V0syVW5pdFRlc3RCYXNlOjp3YWl0VW50aWxEaXJlY3Rpb25DaGFuZ2VkKEV3a19Gb2N1c19EaXJl
Y3Rpb24gJmRpcmVjdGlvbiwgZG91YmxlIHRpbWVvdXRTZWNvbmRzKQogewogICAgIENhbGxiYWNr
RGF0YVRpbWVyIGRhdGEodGltZW91dFNlY29uZHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxz
L0VXSzJVbml0VGVzdEJhc2UuaAppbmRleCAyMzM3ZGZhNzc2ZTA3NzEzYTYzYzRlMzRlMzEzOWNj
MWFiODIzMjg0Li4zOGQzN2Y2MDA5OWU0ZTExYzZkOTg2Y2UxYmUwMzY4Yjk4YzkzMDJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXSzJVbml0VGVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaApAQCAtNTEsOCArNTEs
MTAgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbG9hZFVybFN5bmMoY29uc3QgY2hhciogdXJsLCBk
b3VibGUgdGltZW91dFNlY29uZHMgPSBkZWZhdWx0VGltZW91dFNlY29uZHMpOwogICAgIGJvb2wg
d2FpdFVudGlsTG9hZEZpbmlzaGVkKGRvdWJsZSB0aW1lb3V0U2Vjb25kcyA9IGRlZmF1bHRUaW1l
b3V0U2Vjb25kcyk7CiAgICAgYm9vbCB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhjb25zdCBjaGFy
KiBleHBlY3RlZFRpdGxlLCBkb3VibGUgdGltZW91dFNlY29uZHMgPSBkZWZhdWx0VGltZW91dFNl
Y29uZHMpOworICAgIGJvb2wgd2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oRXZhc19PYmplY3QqIHdl
YlZpZXcsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVGl0bGUsIGRvdWJsZSB0aW1lb3V0U2Vjb25kcyA9
IGRlZmF1bHRUaW1lb3V0U2Vjb25kcyk7CiAgICAgYm9vbCB3YWl0VW50aWxVUkxDaGFuZ2VkVG8o
Y29uc3QgY2hhciogZXhwZWN0ZWRVUkwsIGRvdWJsZSB0aW1lb3V0U2Vjb25kcyA9IGRlZmF1bHRU
aW1lb3V0U2Vjb25kcyk7CiAgICAgYm9vbCB3YWl0VW50aWxUcnVlKGJvb2wgJmZsYWcsIGRvdWJs
ZSB0aW1lb3V0U2Vjb25kcyA9IGRlZmF1bHRUaW1lb3V0U2Vjb25kcyk7CisgICAgYm9vbCB3YWl0
VW50aWxOb3ROdWxsKEV2YXNfT2JqZWN0KiogcmF3UG9pbnRlciwgZG91YmxlIHRpbWVvdXRTZWNv
bmRzID0gZGVmYXVsdFRpbWVvdXRTZWNvbmRzKTsKICAgICBib29sIHdhaXRVbnRpbERpcmVjdGlv
bkNoYW5nZWQoRXdrX0ZvY3VzX0RpcmVjdGlvbiAmZGlyZWN0aW9uLCBkb3VibGUgdGltZW91dFNl
Y29uZHMgPSBkZWZhdWx0VGltZW91dFNlY29uZHMpOwogICAgIEVpbmFfTGlzdCogd2FpdFVudGls
U3BlbGxpbmdMYW5ndWFnZXNMb2FkZWQodW5zaWduZWQgZXhwZWN0ZWRMYW5ndWFnZUNvdW50LCBk
b3VibGUgdGltZW91dFZhbHVlID0gZGVmYXVsdFRpbWVvdXRTZWNvbmRzKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3Zp
ZXcuY3BwCmluZGV4IDhjNjg1ZTc4NWUzOTM2YzEyODJkNTVhMWFiYTJhNDYwNDM0ZWFlY2IuLjM0
YzkxYmIyNjkxOGZhYjY5OGZjNjEzOTE2YzJmOWYzYWZjNTBhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5j
cHAKQEAgLTcyMCw2ICs3MjAsODEgQEAgVEVTVF9GKEVXSzJWaWV3VGVzdCwgZXdrX3ZpZXdfcnVu
X2phdmFzY3JpcHRfcHJvbXB0KQogICAgIEVYUEVDVF9GQUxTRShwcm9tcHRDYWxsYmFja0RhdGEu
Y2FsbGVkKTsKIH0KIAorc3RhdGljIEV2YXNfT2JqZWN0KiBzX25ld1dpbmRvd09iamVjdDsKKwor
c3RhdGljIEV2YXNfT2JqZWN0KiB3aW5kb3dDcmVhdGVDYWxsYmFjayhFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEsIEV3a19WaWV3X0NvbmZpZ3VyYXRpb24qIGNvbmZpZ3VyYXRpb24sIGNv
bnN0IEV3a19XaW5kb3dfRmVhdHVyZXMqKQoreworICAgIHNfbmV3V2luZG93T2JqZWN0ID0gZXdr
X3ZpZXdfYWRkX3dpdGhfY29uZmlndXJhdGlvbigKKyAgICAgICAgZXZhc19vYmplY3RfZXZhc19n
ZXQoc21hcnREYXRhLT5zZWxmKSwKKyAgICAgICAgZXZhc19zbWFydF9jbGFzc19uZXcoJnNtYXJ0
RGF0YS0+YXBpLT5zYyksCisgICAgICAgIGNvbmZpZ3VyYXRpb24pOworCisgICAgZXZhc19vYmpl
Y3RfbW92ZShzX25ld1dpbmRvd09iamVjdCwgMCwgMCk7CisgICAgZXZhc19vYmplY3RfcmVzaXpl
KHNfbmV3V2luZG93T2JqZWN0LCBlbnZpcm9ubWVudC0+ZGVmYXVsdFdpZHRoKCksIGVudmlyb25t
ZW50LT5kZWZhdWx0SGVpZ2h0KCkpOworICAgIGV2YXNfb2JqZWN0X3Nob3coc19uZXdXaW5kb3dP
YmplY3QpOworICAgIHJldHVybiBzX25ld1dpbmRvd09iamVjdDsKK30KKworVEVTVF9GKEVXSzJW
aWV3VGVzdCwgZXdrX3ZpZXdfY3JlYXRlX3dpbmRvdykKK3sKKyAgICBzX25ld1dpbmRvd09iamVj
dCA9IG51bGxwdHI7CisgICAgZXdrVmlld0NsYXNzKCktPndpbmRvd19jcmVhdGUgPSB3aW5kb3dD
cmVhdGVDYWxsYmFjazsKKworICAgIEVpbmFfU3RyaW5nc2hhcmUqIGNyZWF0ZUhUTUwgPSBlaW5h
X3N0cmluZ3NoYXJlX3ByaW50ZigiPCFET0NUWVBFIEhUTUw+PGJvZHkgb25sb2FkPVwid2luZG93
Lm9wZW4oJyVzJyk7XCI+PC9ib2R5PiIsIGVudmlyb25tZW50LT51cmxGb3JSZXNvdXJjZSgiUGFn
ZTEuaHRtbCIpLmRhdGEoKSk7CisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3
KCksIGNyZWF0ZUhUTUwsICJmaWxlOi8vLyIsIG51bGxwdHIpOworICAgIEFTU0VSVF9UUlVFKHdh
aXRVbnRpbE5vdE51bGwoJnNfbmV3V2luZG93T2JqZWN0KSk7CisgICAgaWYgKCFld2tfdmlld190
aXRsZV9nZXQoc19uZXdXaW5kb3dPYmplY3QpLCAiUGFnZTEiKQorICAgICAgICB3YWl0VW50aWxU
aXRsZUNoYW5nZWRUbyhzX25ld1dpbmRvd09iamVjdCwgIlBhZ2UxIik7CisgICAgZWluYV9zdHJp
bmdzaGFyZV9kZWwoY3JlYXRlSFRNTCk7CisgICAgZXZhc19vYmplY3RfZGVsKHNfbmV3V2luZG93
T2JqZWN0KTsKKyAgICBzX25ld1dpbmRvd09iamVjdCA9IG51bGxwdHI7CisKKyAgICBjcmVhdGVI
VE1MID0gZWluYV9zdHJpbmdzaGFyZV9wcmludGYoIjwhRE9DVFlQRSBIVE1MPjxib2R5PjxhIGhy
ZWY9XCIlc1wiIHRhcmdldD1cIl9ibGFua1wiPjxkaXYgc3R5bGU9XCJ3aWR0aDoxMDBweDtoZWln
aHQ6MTAwcHg7XCI+WFhYWFhYPC9kaXY+PC9hPjwvYm9keT4iLCBlbnZpcm9ubWVudC0+dXJsRm9y
UmVzb3VyY2UoIlBhZ2UyLmh0bWwiKS5kYXRhKCkpOworCisgICAgZXdrX3ZpZXdfaHRtbF9zdHJp
bmdfbG9hZCh3ZWJWaWV3KCksIGNyZWF0ZUhUTUwsICJmaWxlOi8vLyIsIG51bGxwdHIpOworICAg
IHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIG1vdXNlQ2xpY2soNTAsIDUwKTsKKyAgICBB
U1NFUlRfVFJVRSh3YWl0VW50aWxOb3ROdWxsKCZzX25ld1dpbmRvd09iamVjdCkpOworICAgIGlm
ICghZXdrX3ZpZXdfdGl0bGVfZ2V0KHNfbmV3V2luZG93T2JqZWN0KSwgIlBhZ2UyIikKKyAgICAg
ICAgd2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oc19uZXdXaW5kb3dPYmplY3QsICJQYWdlMiIpOwor
CisgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoY3JlYXRlSFRNTCk7Cit9CisKK2NsYXNzIEVXSzJW
aWV3VGVzdE5ld1dpbmRvd1dpdGhNdWx0aXBsZVByb2Nlc3NlcyA6IHB1YmxpYyBFV0syVW5pdFRl
c3RCYXNlIHsKK3Byb3RlY3RlZDoKKyAgICBFV0syVmlld1Rlc3ROZXdXaW5kb3dXaXRoTXVsdGlw
bGVQcm9jZXNzZXMoKQorICAgIHsKKyAgICAgICAgbV9tdWx0aXBsZVByb2Nlc3NlcyA9IHRydWU7
CisgICAgfQorfTsKKworVEVTVF9GKEVXSzJWaWV3VGVzdE5ld1dpbmRvd1dpdGhNdWx0aXBsZVBy
b2Nlc3NlcywgZXdrX3ZpZXdfY3JlYXRlX3dpbmRvd193aXRoX211bHRpcHJvY2Vzc2VzKQorewor
ICAgIHNfbmV3V2luZG93T2JqZWN0ID0gbnVsbHB0cjsKKyAgICBld2tWaWV3Q2xhc3MoKS0+d2lu
ZG93X2NyZWF0ZSA9IHdpbmRvd0NyZWF0ZUNhbGxiYWNrOworCisgICAgRWluYV9TdHJpbmdzaGFy
ZSogY3JlYXRlSFRNTCA9IGVpbmFfc3RyaW5nc2hhcmVfcHJpbnRmKCI8IURPQ1RZUEUgSFRNTD48
Ym9keSBvbmxvYWQ9XCJ3aW5kb3cub3BlbignJXMnKTtcIj48L2JvZHk+IiwgZW52aXJvbm1lbnQt
PnVybEZvclJlc291cmNlKCJQYWdlMS5odG1sIikuZGF0YSgpKTsKKyAgICBld2tfdmlld19odG1s
X3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgY3JlYXRlSFRNTCwgImZpbGU6Ly8vIiwgbnVsbHB0cik7
CisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsTm90TnVsbCgmc19uZXdXaW5kb3dPYmplY3QpKTsK
KyAgICBpZiAoIWV3a192aWV3X3RpdGxlX2dldChzX25ld1dpbmRvd09iamVjdCksICJQYWdlMSIp
CisgICAgICAgIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKHNfbmV3V2luZG93T2JqZWN0LCAiUGFn
ZTEiKTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChjcmVhdGVIVE1MKTsKKyAgICBldmFzX29i
amVjdF9kZWwoc19uZXdXaW5kb3dPYmplY3QpOworICAgIHNfbmV3V2luZG93T2JqZWN0ID0gbnVs
bHB0cjsKKworICAgIGNyZWF0ZUhUTUwgPSBlaW5hX3N0cmluZ3NoYXJlX3ByaW50ZigiPCFET0NU
WVBFIEhUTUw+PGJvZHk+PGEgaHJlZj1cIiVzXCIgdGFyZ2V0PVwiX2JsYW5rXCI+PGRpdiBzdHls
ZT1cIndpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtcIj5YWFhYWFg8L2Rpdj48L2E+PC9ib2R5PiIs
IGVudmlyb25tZW50LT51cmxGb3JSZXNvdXJjZSgiUGFnZTIuaHRtbCIpLmRhdGEoKSk7CisKKyAg
ICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgY3JlYXRlSFRNTCwgImZpbGU6
Ly8vIiwgbnVsbHB0cik7CisgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgbW91c2VD
bGljayg1MCwgNTApOworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbE5vdE51bGwoJnNfbmV3V2lu
ZG93T2JqZWN0KSk7CisgICAgaWYgKCFld2tfdmlld190aXRsZV9nZXQoc19uZXdXaW5kb3dPYmpl
Y3QpLCAiUGFnZTIiKQorICAgICAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbyhzX25ld1dpbmRv
d09iamVjdCwgIlBhZ2UyIik7CisKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChjcmVhdGVIVE1M
KTsKK30KKwogVEVTVF9GKEVXSzJWaWV3VGVzdCwgZXdrX3ZpZXdfY29udGV4dF9nZXQpCiB7CiAg
ICAgRXdrX0NvbnRleHQqIGNvbnRleHQgPSBld2tfdmlld19jb250ZXh0X2dldCh3ZWJWaWV3KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVz
dF9ld2syX3dpbmRvd19mZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfd2luZG93X2ZlYXR1cmVzLmNwcAppbmRleCBhODgwMjk0MjI0
NmIyZDVmYTI4MGJlMDVmYTU0NGMzZThmOWQwM2IzLi44MmM0ZTM4MzczZWNjYTc4MDUwNGYwZDY1
YjUzMGFhZDg5ZjY4Mjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfd2luZG93X2ZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfd2luZG93X2ZlYXR1cmVzLmNw
cApAQCAtMzQsNyArMzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgRVdL
MldpbmRvd0ZlYXR1cmVzVGVzdCA6IHB1YmxpYyBFV0syVW5pdFRlc3RCYXNlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgRXZhc19PYmplY3QqIGNyZWF0ZURlZmF1bHRXaW5kb3coRXdrX1ZpZXdfU21h
cnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFd2tfV2luZG93X0ZlYXR1cmVzKiB3aW5kb3dGZWF0
dXJlcykKKyAgICBzdGF0aWMgRXZhc19PYmplY3QqIGNyZWF0ZURlZmF1bHRXaW5kb3coRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBFd2tfVmlld19Db25maWd1cmF0aW9uKiBjb25maWd1
cmF0aW9uLCBjb25zdCBFd2tfV2luZG93X0ZlYXR1cmVzKiB3aW5kb3dGZWF0dXJlcykKICAgICB7
CiAgICAgICAgIC8vIGRlZmF1bHQgdmFsdWVzIG9mIFdlYkNvcmU6V2luZG93RmVhdHVyZXMoKQog
ICAgICAgICAvLyAtIG1lbnVCYXJWaXNpYmxlKHRydWUpCkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgc3RhdGljIEV2YXNfT2JqZWN0KiBj
cmVhdGVXaW5kb3coRXdrX1ZpZXdfU21hcnRfRGF0YSAqc21hcnREYXRhLCBjb25zdCBFd2tfV2lu
ZG93X0ZlYXR1cmVzICp3aW5kb3dGZWF0dXJlcykKKyAgICBzdGF0aWMgRXZhc19PYmplY3QqIGNy
ZWF0ZVdpbmRvdyhFd2tfVmlld19TbWFydF9EYXRhICpzbWFydERhdGEsIEV3a19WaWV3X0NvbmZp
Z3VyYXRpb24qIGNvbmZpZ3VyYXRpb24sIGNvbnN0IEV3a19XaW5kb3dfRmVhdHVyZXMgKndpbmRv
d0ZlYXR1cmVzKQogICAgIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGV3a193aW5kb3dfZmVhdHVy
ZXNfdG9vbGJhcl92aXNpYmxlX2dldCh3aW5kb3dGZWF0dXJlcykpOwogICAgICAgICBFWFBFQ1Rf
VFJVRShld2tfd2luZG93X2ZlYXR1cmVzX3N0YXR1c2Jhcl92aXNpYmxlX2dldCh3aW5kb3dGZWF0
dXJlcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAppbmRleCA4ZmZmZWVjNDE5ZGQ1YzVmMWIyMDc5NjA2MzU5
YmFhZWZiZGU5NDliLi45NjlmZDg2MTA4ZWI4YTE1NWIyYzE2MTA3ZWE4NzFiMTAyNjZlMjExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9X
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XZWJWaWV3LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIldlYkJhY2tGb3J3
YXJkTGlzdC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRl
ICJXZWJDb250ZXh0TWVudVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC00
OCwxNyArNDksMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1XZWJWaWV3OjpXZWJWaWV3KFdlYlByb2Nlc3NQb29sKiBjb250ZXh0LCBXZWJQYWdl
R3JvdXAqIHBhZ2VHcm91cCkKK1dlYlZpZXc6OldlYlZpZXcoV2ViUHJvY2Vzc1Bvb2wqIGNvbnRl
eHQsIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIHBhZ2VDb25maWd1cmF0aW9uKQogICAgIDogbV9m
b2N1c2VkKGZhbHNlKQogICAgICwgbV92aXNpYmxlKGZhbHNlKQogICAgICwgbV9vcGFjaXR5KDEu
MCkKIHsKLSAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlv
bjo6Y3JlYXRlKCk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKGNvbnRl
eHQpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwKTsKLQog
ICAgIC8vIE5lZWQgdG8gY2FsbCBjcmVhdGVXZWJQYWdlIGFmdGVyIG90aGVyIGRhdGEgbWVtYmVy
cywgc3BlY2lmaWNhbGx5IG1fdmlzaWJsZSwgYXJlIGluaXRpYWxpemVkLgotICAgIG1fcGFnZSA9
IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnRoaXMsIFdURjo6bW92ZShwYWdlQ29uZmlndXJhdGlv
bikpOworICAgIG1fcGFnZSA9IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnRoaXMsIHBhZ2VDb25m
aWd1cmF0aW9uLmNvcHkoKSk7CiAKICAgICBtX3BhZ2UtPnBhZ2VHcm91cCgpLnByZWZlcmVuY2Vz
KCkuc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgbV9wYWdlLT5w
YWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
V2ViVmlldy5oCmluZGV4IDQyNmY2NTgwMzYzNTY5NWFmODQzNjI1OWM0YWJjZDBlODFkOWU4NmMu
LjQxMTJhNjI3MGI4MDMwNDU3ZTMzNTBkNThkMDVmZmY3YmYwOTA0ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmgK
QEAgLTMzLDEzICszMywxNiBAQAogI2luY2x1ZGUgIkRlZmF1bHRVbmRvQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5LmgiCi0jaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9v
bC5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1RyYW5z
Zm9ybWF0aW9uTWF0cml4Lmg+CiAKK25hbWVzcGFjZSBBUEkgeworY2xhc3MgUGFnZUNvbmZpZ3Vy
YXRpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOwogCkBAIC01MSw3ICs1NCw3IEBAIGNsYXNzIFdlYlZpZXcgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpWaWV3PiwgcHVibGljIFBhZ2VDbGllCiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+V2ViVmlldygpOwogCi0gICAgc3RhdGljIFJlZjxXZWJWaWV3PiBj
cmVhdGUoV2ViUHJvY2Vzc1Bvb2wqLCBXZWJQYWdlR3JvdXAqKTsKKyAgICBzdGF0aWMgUmVmPFdl
YlZpZXc+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCosIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mKTsK
IAogICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwogCkBAIC0xMTYsNyArMTE5LDcgQEAgcHVibGljOgog
ICAgIGRvdWJsZSBvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9vcGFjaXR5OyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBXZWJWaWV3KFdlYlByb2Nlc3NQb29sKiwgV2ViUGFnZUdyb3VwKik7CisgICAg
V2ViVmlldyhXZWJQcm9jZXNzUG9vbCosIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mKTsKICAgICBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOwogCiAg
ICAgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKaW5kZXggZWU2ODUzY2Y2ZWNl
YThlODAzMTE0OTJmZjUxMjMzZDg4NThlMjdiMy4uNzhhOTRmZTM2ODBhMDk3YTIxNmU1NTk4MDk2
N2YyYWNmYmNlZDMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0VmbEluc3BlY3RvclV0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0
L1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlR3JvdXAu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tWaWV3
RWZsLmg+CkBAIC0xMDksNyArMTEwLDExIEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IHdrR3JvdXBJZGVudGlmaWVyID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhpbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSkpOwog
ICAgIFdLUGFnZUdyb3VwUmVmIHdrUGFnZUdyb3VwID0gV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRl
bnRpZmllcih3a0dyb3VwSWRlbnRpZmllci5nZXQoKSk7CiAKLSAgICBtX2luc3BlY3RvclZpZXcg
PSBFV0tWaWV3Q3JlYXRlKHdrQ29udGV4dCwgd2tQYWdlR3JvdXAsIGVjb3JlX2V2YXNfZ2V0KG1f
aW5zcGVjdG9yV2luZG93KSwgLyogc21hcnQgKi8gMCk7CisgICAgV0tSZXRhaW5QdHI8V0tQYWdl
Q29uZmlndXJhdGlvblJlZj4gd2tQYWdlQ29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdlQ29u
ZmlndXJhdGlvbkNyZWF0ZSgpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dCh3
a1BhZ2VDb25maWd1cmF0aW9uLmdldCgpLCB3a0NvbnRleHQpOworICAgIFdLUGFnZUNvbmZpZ3Vy
YXRpb25TZXRQYWdlR3JvdXAod2tQYWdlQ29uZmlndXJhdGlvbi5nZXQoKSwgd2tQYWdlR3JvdXAp
OworCisgICAgbV9pbnNwZWN0b3JWaWV3ID0gRVdLVmlld0NyZWF0ZSh3a0NvbnRleHQsIHdrUGFn
ZUNvbmZpZ3VyYXRpb24uZ2V0KCksIGVjb3JlX2V2YXNfZ2V0KG1faW5zcGVjdG9yV2luZG93KSwg
Lyogc21hcnQgKi8gMCk7CiAgICAgV0tWaWV3UmVmIHdrVmlldyA9IEVXS1ZpZXdHZXRXS1ZpZXco
bV9pbnNwZWN0b3JWaWV3KTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1RoZW1l
ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhERUZBVUxUX1RIRU1FX0RJ
UiAiL2RlZmF1bHQuZWRqIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJWaWV3RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmll
d0VmbC5jcHAKaW5kZXggZTQwNzg3YTg1ZDVjMDdiM2E2NTczZGVhODE3M2I5MzFlZWJjZmViZS4u
MjgzZDEyNjMxYTFiZDAzMDAyMTkwYTYyOTNkY2MzNTMzMDA4MjhhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwCkBAIC01NSwxMyArNTUsMTMgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZWY8V2ViVmll
dz4gV2ViVmlldzo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCwgV2ViUGFnZUdy
b3VwKiBwYWdlR3JvdXApCitSZWY8V2ViVmlldz4gV2ViVmlldzo6Y3JlYXRlKFdlYlByb2Nlc3NQ
b29sKiBwcm9jZXNzUG9vbCwgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYgcGFnZUNvbmZpdXJhdGlv
bikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWV3RWZsKHByb2Nlc3NQb29sLCBw
YWdlR3JvdXApKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJWaWV3RWZsKHByb2Nlc3NQ
b29sLCBwYWdlQ29uZml1cmF0aW9uKSk7CiB9CiAKLVdlYlZpZXdFZmw6OldlYlZpZXdFZmwoV2Vi
UHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sLCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkKLSAgICA6
IFdlYlZpZXcocHJvY2Vzc1Bvb2wsIHBhZ2VHcm91cCkKK1dlYlZpZXdFZmw6OldlYlZpZXdFZmwo
V2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sLCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBwYWdl
Q29uZml1cmF0aW9uKQorICAgIDogV2ViVmlldyhwcm9jZXNzUG9vbCwgcGFnZUNvbmZpdXJhdGlv
bikKICAgICAsIG1fZXdrVmlldygwKQogICAgICwgbV9oYXNSZXF1ZXN0ZWRGdWxsU2NyZWVuKGZh
bHNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3
RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaAppbmRleCAz
ODZkMDA5MGUzYTMyZmJiYWM1OWM1NjIwYjgwYTkxYmJjMzUyNTJmLi5mNDE3ZmFmYjYxNDc3MjM5
NWYzN2VhNzU1NmJhZjFiZWE4YzI5ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXdFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlZpZXdFZmwuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWaWV3
QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CiAgICAgV2ViQ29yZTo6Q29s
b3Igdmlld0JhY2tncm91bmRDb2xvcigpOwogcHJpdmF0ZToKLSAgICBXZWJWaWV3RWZsKFdlYlBy
b2Nlc3NQb29sKiwgV2ViUGFnZUdyb3VwKik7CisgICAgV2ViVmlld0VmbChXZWJQcm9jZXNzUG9v
bCosIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mKTsKIAogICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0
IFdlYkNvcmU6OkN1cnNvciYpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94
eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTc1ZmY5ZDUzZTkw
NmE2MDZkODJkOTQwNWFjYjYzYTlmNDQxMjJjMS4uNTg3YWUzZGY4YWVmNTQ1NTMxZGU4YTJjNTAy
M2EwNTQ3M2VkYzE4MiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE1LTExLTA5ICBSeXVhbiBDaG9pICA8cnl1YW4u
Y2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIENyYXNoIHdoaWxlIG9wZW5pbmcg
Y2hpbGQgd2VidmlldyB3aXRoIEVXS19QUk9DRVNTX01PREVMX01VTFRJUExFX1NFQ09OREFSWQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1OTI0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJv
d3Nlci9lZmwvbWFpbi5jOgorICAgICAgICAob25fd2luZG93X2NyZWF0ZSk6CisgICAgICAgICh3
aW5kb3dfY3JlYXRlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRzLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZWZsL1Bs
YXRmb3JtV2ViVmlldy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQbGF0Zm9ybVdlYlZp
ZXc6OlBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxh
dGZvcm1XZWJWaWV3RWZsLmNwcDoKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpQbGF0
Zm9ybVdlYlZpZXcpOgorCiAyMDE1LTExLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBBdHRlbXB0IHRvIGZpeCB0aGUgV2luZG93cyBFV1MgYm90IGFmdGVy
IHIxOTIwODcKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMgYi9Ub29s
cy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCmluZGV4IGQ0OWViYTNlNjZkNzdiZDkyNGUzYjZiNzUw
ZThhZjc3MDMwOTM1MWIuLjY1ZDI4MTk5ODgwYmNlMDAwN2MzMWQzNWJhNGQ2OTNmYjZjYmE3M2Qg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvZWZsL21haW4uYwpAQCAtMjAxLDcgKzIwMSw3IEBAIHN0YXRpYyBjb25zdCBFY29y
ZV9HZXRvcHQgb3B0aW9ucyA9IHsKIH07CiAKIHN0YXRpYyBFaW5hX1N0cmluZ3NoYXJlICpzaG93
X2ZpbGVfZW50cnlfZGlhbG9nKEJyb3dzZXJfV2luZG93ICp3aW5kb3csIGNvbnN0IGNoYXIgKmxh
YmVsX3RhZywgY29uc3QgY2hhciAqZGVmYXVsdF90ZXh0KTsKLXN0YXRpYyBCcm93c2VyX1dpbmRv
dyAqd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCogb3BlbmVyLCBpbnQgd2lkdGgsIGludCBoZWln
aHQpOworc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3dfY3JlYXRlKEV3a19WaWV3X0NvbmZp
Z3VyYXRpb24qIGNvbmZpZ3VyYXRpb24sIGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAKIHN0YXRp
YyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2ZpbmRfd2l0aF9lbG1fd2luZG93KEV2YXNfT2JqZWN0
ICplbG1fd2luZG93KQogewpAQCAtMTcxMSw3ICsxNzExLDcgQEAgc3RhdGljIEVpbmFfQm9vbCBv
bl9mdWxsc2NyZWVuX2V4aXQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiB9CiAKIHN0YXRpYyBF
dmFzX09iamVjdCAqCi1vbl93aW5kb3dfY3JlYXRlKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNtYXJ0
RGF0YSwgY29uc3QgRXdrX1dpbmRvd19GZWF0dXJlcyAqd2luZG93X2ZlYXR1cmVzKQorb25fd2lu
ZG93X2NyZWF0ZShFd2tfVmlld19TbWFydF9EYXRhICpzbWFydERhdGEsIEV3a19WaWV3X0NvbmZp
Z3VyYXRpb24qIGNvbmZpZ3VyYXRpb24sIGNvbnN0IEV3a19XaW5kb3dfRmVhdHVyZXMgKndpbmRv
d19mZWF0dXJlcykKIHsKICAgICBpbnQgeCA9IDA7CiAgICAgaW50IHkgPSAwOwpAQCAtMTcyNiw3
ICsxNzI2LDcgQEAgb25fd2luZG93X2NyZWF0ZShFd2tfVmlld19TbWFydF9EYXRhICpzbWFydERh
dGEsIGNvbnN0IEV3a19XaW5kb3dfRmVhdHVyZXMgKndpbmQKICAgICBpZiAoIWhlaWdodCkKICAg
ICAgICAgaGVpZ2h0ID0gd2luZG93X2hlaWdodDsKIAotICAgIEJyb3dzZXJfV2luZG93ICp3aW5k
b3cgPSB3aW5kb3dfY3JlYXRlKHNtYXJ0RGF0YS0+c2VsZiwgd2lkdGgsIGhlaWdodCk7CisgICAg
QnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IHdpbmRvd19jcmVhdGUoY29uZmlndXJhdGlvbiwgd2lk
dGgsIGhlaWdodCk7CiAgICAgRXZhc19PYmplY3QgKm5ld192aWV3ID0gd2luZG93LT5ld2tfdmll
dzsKIAogICAgIHdpbmRvd3MgPSBlaW5hX2xpc3RfYXBwZW5kKHdpbmRvd3MsIHdpbmRvdyk7CkBA
IC0yMDU3LDcgKzIwNTcsNyBAQCBjcmVhdGVfdG9vbGJhcl9idXR0b24oRXZhc19PYmplY3QgKmVs
bV93aW5kb3csIGNvbnN0IGNoYXIgKmljb25fbmFtZSkKICAgICByZXR1cm4gYnV0dG9uOwogfQog
Ci1zdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRvd19jcmVhdGUoRXZhc19PYmplY3QgKm9wZW5l
ciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3df
Y3JlYXRlKEV3a19WaWV3X0NvbmZpZ3VyYXRpb24qIGNvbmZpZ3VyYXRpb24sIGludCB3aWR0aCwg
aW50IGhlaWdodCkKIHsKICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gY2FsbG9jKDEsIHNp
emVvZihCcm93c2VyX1dpbmRvdykpOwogICAgIGlmICghd2luZG93KSB7CkBAIC0yMjY3LDE3ICsy
MjY3LDkgQEAgc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3dfY3JlYXRlKEV2YXNfT2JqZWN0
ICpvcGVuZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogICAgIEV2YXMgKmV2YXMgPSBldmFz
X29iamVjdF9ldmFzX2dldCh3aW5kb3ctPmVsbV93aW5kb3cpOwogICAgIEV2YXNfU21hcnQgKnNt
YXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJmV3a1ZpZXdDbGFzcy0+c2MpOwotICAgIEV3a19D
b250ZXh0ICpjb250ZXh0OwotICAgIGlmIChvcGVuZXIpCi0gICAgICAgIGNvbnRleHQgPSBld2tf
dmlld19jb250ZXh0X2dldChvcGVuZXIpOwotICAgIGVsc2UgaWYgKGV4dGVuc2lvbnNfcGF0aCkK
LSAgICAgICAgY29udGV4dCA9IGV3a19jb250ZXh0X25ld193aXRoX2V4dGVuc2lvbnNfcGF0aChl
eHRlbnNpb25zX3BhdGgpOwotICAgIGVsc2UKLSAgICAgICAgY29udGV4dCA9IGV3a19jb250ZXh0
X2RlZmF1bHRfZ2V0KCk7Ci0KLSAgICBFd2tfUGFnZV9Hcm91cCAqcGFnZUdyb3VwID0gb3BlbmVy
ID8gZXdrX3ZpZXdfcGFnZV9ncm91cF9nZXQob3BlbmVyKSA6IGV3a19wYWdlX2dyb3VwX2NyZWF0
ZSgiIik7Ci0gICAgd2luZG93LT5ld2tfdmlldyA9IGV3a192aWV3X3NtYXJ0X2FkZChldmFzLCBz
bWFydCwgY29udGV4dCwgcGFnZUdyb3VwKTsKKyAgICB3aW5kb3ctPmV3a192aWV3ID0gZXdrX3Zp
ZXdfYWRkX3dpdGhfY29uZmlndXJhdGlvbihldmFzLCBzbWFydCwgY29uZmlndXJhdGlvbik7CiAK
KyAgICBFd2tfQ29udGV4dCAqY29udGV4dCA9IGV3a192aWV3X2NvbnRleHRfZ2V0KHdpbmRvdy0+
ZXdrX3ZpZXcpOwogICAgIGV3a19mYXZpY29uX2RhdGFiYXNlX2ljb25fY2hhbmdlX2NhbGxiYWNr
X2FkZChld2tfY29udGV4dF9mYXZpY29uX2RhdGFiYXNlX2dldChjb250ZXh0KSwgb25faWNvbl9j
aGFuZ2VkX2NiLCB3aW5kb3cpOwogCiAgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KHdpbmRvdy0+ZXdr
X3ZpZXcsIERFRkFVTFRfVEhFTUVfRElSICIvZGVmYXVsdC5lZGoiKTsKQEAgLTIzMDEsNyArMjI5
Myw3IEBAIHN0YXRpYyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCAq
b3BlbmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgLyogU2V0IHRoZSB6b29tIGxldmVs
IHRvIGRlZmF1bHQgKi8KICAgICB3aW5kb3ctPmN1cnJlbnRfem9vbV9sZXZlbCA9IERFRkFVTFRf
Wk9PTV9MRVZFTDsKIAotICAgIEV3a19TZXR0aW5ncyAqc2V0dGluZ3MgPSBld2tfcGFnZV9ncm91
cF9zZXR0aW5nc19nZXQocGFnZUdyb3VwKTsKKyAgICBFd2tfU2V0dGluZ3MgKnNldHRpbmdzID0g
ZXdrX3BhZ2VfZ3JvdXBfc2V0dGluZ3NfZ2V0KGV3a192aWV3X3BhZ2VfZ3JvdXBfZ2V0KHdpbmRv
dy0+ZXdrX3ZpZXcpKTsKICAgICBld2tfc2V0dGluZ3NfZmlsZV9hY2Nlc3NfZnJvbV9maWxlX3Vy
bHNfYWxsb3dlZF9zZXQoc2V0dGluZ3MsIEVJTkFfVFJVRSk7CiAgICAgZXdrX3NldHRpbmdzX2Vu
Y29kaW5nX2RldGVjdG9yX2VuYWJsZWRfc2V0KHNldHRpbmdzLCBlbmNvZGluZ19kZXRlY3Rvcl9l
bmFibGVkKTsKICAgICBld2tfc2V0dGluZ3NfZnJhbWVfZmxhdHRlbmluZ19lbmFibGVkX3NldChz
ZXR0aW5ncywgZnJhbWVfZmxhdHRlbmluZ19lbmFibGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlld1VzZXJW
aWV3cG9ydFRvQ29udGVudHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cy5jcHAKaW5k
ZXggNzA4OTliOGRhOWNmMmVjNjUwZDdhYzI2MDk3ZGE1MTQwNDE5MmI5ZS4uMTU1NTJhNjk5ZmVj
ODE0Y2Y3ZjMzMDRkMWYxYzgwZjQ3NDg5NmEwMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3VXNlclZpZXdwb3J0
VG9Db250ZW50cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cy5jcHAKQEAgLTM4
LDcgKzM4LDEwIEBAIFRFU1QoV2ViS2l0MiwgRElTQUJMRURfV0tWaWV3VXNlclZpZXdwb3J0VG9D
b250ZW50cykKICAgICAvLyBjb252ZXJzaW9uIG1hdGggaXMgcmlnaHQuCiAKICAgICBXS1JldGFp
blB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOwot
ICAgIFdLUmV0YWluUHRyPFdLVmlld1JlZj4gd2ViVmlldyhBZG9wdFdLLCBXS1ZpZXdDcmVhdGUo
Y29udGV4dC5nZXQoKSwgMCkpOworICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25S
ZWY+IGNvbmZpZ3VyYXRpb24oQWRvcHRXSywgV0tQYWdlQ29uZmlndXJhdGlvbkNyZWF0ZSgpKTsK
KyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChjb25maWd1cmF0aW9uLmdldCgpLCBj
b250ZXh0LmdldCgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLVmlld1JlZj4gd2ViVmlldyhBZG9w
dFdLLCBXS1ZpZXdDcmVhdGUoY29udGV4dC5nZXQoKSwgY29uZmlndXJhdGlvbi5nZXQoKSkpOwog
CiAgICAgV0tWaWV3SW5pdGlhbGl6ZSh3ZWJWaWV3LmdldCgpKTsKICAgICBXS1BhZ2VTZXRVc2VG
aXhlZExheW91dChXS1ZpZXdHZXRQYWdlKHdlYlZpZXcuZ2V0KCkpLCBmYWxzZSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2VmbC9QbGF0Zm9ybVdlYlZpZXcuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9lZmwvUGxhdGZvcm1XZWJWaWV3LmNwcAppbmRleCAyZGU3ZWZhNTViZDIx
NDViYzMzNjRlNDk3MWVlZTQ2OGRlMGZlODI3Li4wNjQzOGU3MDA3ODk3YmRkYmY4M2M0NjA3NmQ5
YjkzOTIwNjViMGI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2VmbC9QbGF0Zm9y
bVdlYlZpZXcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZWZsL1BsYXRmb3JtV2ViVmll
dy5jcHAKQEAgLTY4LDcgKzY4LDExIEBAIFBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3
KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvCiB7CiAgICAg
bV93aW5kb3cgPSBjcmVhdGVFY29yZUV2YXMoKTsKIAotICAgIG1fdmlldyA9IEVXS1ZpZXdDcmVh
dGUoY29udGV4dFJlZiwgcGFnZUdyb3VwUmVmLCBlY29yZV9ldmFzX2dldChtX3dpbmRvdyksIC8q
IHNtYXJ0ICovIDApOworICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IHBh
Z2VDb25maWd1cmF0aW9uID0gYWRvcHRXSyhXS1BhZ2VDb25maWd1cmF0aW9uQ3JlYXRlKCkpOwor
ICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRDb250ZXh0KHBhZ2VDb25maWd1cmF0aW9uLmdldCgp
LCBjb250ZXh0UmVmKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UGFnZUdyb3VwKHBhZ2VD
b25maWd1cmF0aW9uLmdldCgpLCBwYWdlR3JvdXBSZWYpOworCisgICAgbV92aWV3ID0gRVdLVmll
d0NyZWF0ZShjb250ZXh0UmVmLCBwYWdlQ29uZmlndXJhdGlvbi5nZXQoKSwgZWNvcmVfZXZhc19n
ZXQobV93aW5kb3cpLCAvKiBzbWFydCAqLyAwKTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiB3a1RoZW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhERUZB
VUxUX1RIRU1FX0RJUiAiL2RlZmF1bHQuZWRqIikpOwogICAgIFdLVmlld1NldFRoZW1lUGF0aChF
V0tWaWV3R2V0V0tWaWV3KG1fdmlldyksIHdrVGhlbWUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKaW5kZXggNjFjNDkzOGEy
NGJjOGFiNmUzZTJhNWY5OWU2YmViMWJhZjQyZTQwNy4uMmE2M2M3MWE0NDZkMGI5NTlmMmUyMDkx
ZmE1NGE4MzUwMjRiMjgxMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwv
UGxhdGZvcm1XZWJWaWV3RWZsLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9Q
bGF0Zm9ybVdlYlZpZXdFZmwuY3BwCkBAIC02Miw4ICs2Miw3IEBAIFBsYXRmb3JtV2ViVmlldzo6
UGxhdGZvcm1XZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29u
c3QgVGVzCiAgICAgbV93aW5kb3cgPSBpbml0RWNvcmVFdmFzKCk7CiAKICAgICBXS0NvbnRleHRS
ZWYgY29udGV4dCA9IFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRDb250ZXh0KGNvbmZpZ3VyYXRpb24p
OwotICAgIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCA9IFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRQ
YWdlR3JvdXAoY29uZmlndXJhdGlvbik7Ci0gICAgbV92aWV3ID0gRVdLVmlld0NyZWF0ZShjb250
ZXh0LCBwYWdlR3JvdXAsIGVjb3JlX2V2YXNfZ2V0KG1fd2luZG93KSwgLyogc21hcnQgKi8gMCk7
CisgICAgbV92aWV3ID0gRVdLVmlld0NyZWF0ZShjb250ZXh0LCBjb25maWd1cmF0aW9uLCBlY29y
ZV9ldmFzX2dldChtX3dpbmRvdyksIC8qIHNtYXJ0ICovIDApOwogCiAgICAgV0tQYWdlU2V0VXNl
Rml4ZWRMYXlvdXQoV0tWaWV3R2V0UGFnZShFV0tWaWV3R2V0V0tWaWV3KG1fdmlldykpLCBtX3Vz
aW5nRml4ZWRMYXlvdXQpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>