<?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>100230</bug_id>
          
          <creation_ts>2012-10-24 04:38:37 -0700</creation_ts>
          <short_desc>[EFL][WK2] Get rid of Ewk_View private C API (Part 1)</short_desc>
          <delta_ts>2012-10-25 07:00:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>100228</dependson>
          <blocked>100226</blocked>
    
    <blocked>100273</blocked>
    
    <blocked>100331</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>749535</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-24 04:38:37 -0700</bug_when>
    <thetext>As part of the Ewk_View refactoring (Bug 100226), we are planning to get rid of the Ewk_View private C API.

This private C API will be replaced by C++ methods in the new EwkViewImpl class (Bug 99696).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749538</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-24 04:39:27 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; As part of the Ewk_View refactoring (Bug 100226), we are planning to get rid of the Ewk_View private C API.
&gt; 
&gt; This private C API will be replaced by C++ methods in the new EwkViewImpl class (Bug 99696).

The new EwkViewImpl class is Bug 100228, not 99696. Sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749821</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-24 10:51:00 -0700</bug_when>
    <thetext>I will do this in 2 parts (at least) because it gets too big otherwise and it would become a rebasing nightmare.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749856</commentid>
    <comment_count>3</comment_count>
      <attachid>170436</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-24 11:25:11 -0700</bug_when>
    <thetext>Created attachment 170436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749909</commentid>
    <comment_count>4</comment_count>
      <attachid>170436</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-24 12:25:11 -0700</bug_when>
    <thetext>Comment on attachment 170436
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:39
&gt; +#define EWK_VIEW_IMPL_GET(smartData, viewImpl)                                 \
&gt; +    EwkViewImpl* viewImpl = smartData-&gt;priv

why not just call it impl?

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:127
&gt; +    void reportDownloadJobCancelled(Ewk_Download_Job* download);
&gt; +    void reportDownloadJobFailed(Ewk_Download_Job* download, Ewk_Error* error);
&gt; +    void reportDownloadJobFinished(Ewk_Download_Job* download);
&gt; +    void reportDownloadJobRequested(Ewk_Download_Job* download);
&gt; +

I dont like report :-) why not inform ? :) report sounds like logging to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749938</commentid>
    <comment_count>5</comment_count>
      <attachid>170452</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-24 12:47:40 -0700</bug_when>
    <thetext>Created attachment 170452
Patch

Take Kenneth&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750070</commentid>
    <comment_count>6</comment_count>
      <attachid>170452</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 14:52:10 -0700</bug_when>
    <thetext>Comment on attachment 170452
Patch

Clearing flags on attachment: 170452

Committed r132405: &lt;http://trac.webkit.org/changeset/132405&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750071</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 14:52:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750773</commentid>
    <comment_count>8</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-10-25 07:00:26 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 170436 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170436&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:39
&gt; &gt; +#define EWK_VIEW_IMPL_GET(smartData, viewImpl)                                 \
&gt; &gt; +    EwkViewImpl* viewImpl = smartData-&gt;priv
&gt; 
&gt; why not just call it impl?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:127
&gt; &gt; +    void reportDownloadJobCancelled(Ewk_Download_Job* download);
&gt; &gt; +    void reportDownloadJobFailed(Ewk_Download_Job* download, Ewk_Error* error);
&gt; &gt; +    void reportDownloadJobFinished(Ewk_Download_Job* download);
&gt; &gt; +    void reportDownloadJobRequested(Ewk_Download_Job* download);
&gt; &gt; +
&gt; 
&gt; I dont like report :-) why not inform ? :) report sounds like logging to me

Notify?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170436</attachid>
            <date>2012-10-24 11:25:11 -0700</date>
            <delta_ts>2012-10-24 12:47:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100230_ewk_view_methods.patch</filename>
            <type>text/plain</type>
            <size>154971</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhYWZmZDA3Li5mODYxMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjU1
IEBACisyMDEyLTEwLTI0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRl
bC5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBHZXQgcmlkIG9mIEV3a19WaWV3IHByaXZhdGUg
QyBBUEkgKFBhcnQgMSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMDIzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbW92ZSBwYXJ0IG9mIHRoZSBFd2tfVmlldyBwcml2YXRlIEMgQVBJIGFuZCByZXBs
YWNlCisgICAgICAgIGl0IGJ5IEMrKyBtZXRob2RzIGluIEV3a1ZpZXdJbXBsIGNsYXNzLiBFdmVu
dHVhbGx5LAorICAgICAgICBhbGwgdGhlIHByaXZhdGUgQyBmdW5jdGlvbnMgd2lsbCBiZSByZW1v
dmVkIGJ1dCBpdAorICAgICAgICB3aWxsIGJlIGRvbmUgaW4gc2V2ZXJhbCBwYXRjaGVzLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3
R2V0UGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwOgor
ICAgICAgICAoX2V3a192aWV3X2NvbW1pdCk6CisgICAgICAgIChfZXdrX3ZpZXdfcHJlZWRpdF9j
aGFuZ2VkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbCk6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6c21hcnREYXRhKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpmcm9tRXZhc09i
amVjdCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6d2tQYWdlKToKKyAgICAgICAgKEV3a1ZpZXdJ
bXBsOjpzZXRDdXJzb3IpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnJlZHJhd1JlZ2lvbik6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6cmVwb3J0RG93bmxvYWRKb2JDYW5jZWxsZWQpOgorICAgICAg
ICAoRXdrVmlld0ltcGw6OnJlcG9ydERvd25sb2FkSm9iRmFpbGVkKToKKyAgICAgICAgKEV3a1Zp
ZXdJbXBsOjpyZXBvcnREb3dubG9hZEpvYkZpbmlzaGVkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBs
OjpyZXBvcnREb3dubG9hZEpvYlJlcXVlc3RlZCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6cmVw
b3J0TmV3Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjplbnRl
ckZ1bGxTY3JlZW4pOgorICAgICAgICAoRXdrVmlld0ltcGw6OmV4aXRGdWxsU2NyZWVuKToKKyAg
ICAgICAgKEV3a1ZpZXdJbXBsOjpzZXRJbWFnZURhdGEpOgorICAgICAgICAoRXdrVmlld0ltcGw6
OnJlcG9ydExvYWRFcnJvcik6CisgICAgICAgIChFd2tWaWV3SW1wbDo6cmVwb3J0TG9hZEZpbmlz
aGVkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpyZXBvcnRMb2FkUHJvZ3Jlc3MpOgorICAgICAg
ICAoRXdrVmlld0ltcGw6OnJlcG9ydFByb3Zpc2lvbmFsTG9hZEZhaWxlZCk6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6cmVwb3J0TG9hZENvbW1pdHRlZCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6
cmVwb3J0UHJvdmlzaW9uYWxMb2FkUmVkaXJlY3QpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnJl
cG9ydFByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnJlcG9y
dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChFd2tWaWV3SW1wbDo6cmVwb3J0
TmV3V2luZG93UG9saWN5RGVjaXNpb24pOgorICAgICAgICAoRXdrVmlld0ltcGw6OnJlcG9ydFJl
c291cmNlTG9hZFN0YXJ0ZWQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnJlcG9ydFJlc291cmNl
TG9hZFJlc3BvbnNlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpyZXBvcnRSZXNvdXJjZUxvYWRG
YWlsZWQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnJlcG9ydFJlc291cmNlTG9hZEZpbmlzaGVk
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpyZXBvcnRSZXNvdXJjZVJlcXVlc3RTZW50KToKKyAg
ICAgICAgKEV3a1ZpZXdJbXBsOjpyZXBvcnRUaXRsZUNoYW5nZSk6CisgICAgICAgIChFd2tWaWV3
SW1wbDo6cmVwb3J0VG9vbHRpcFRleHRDaGFuZ2UpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnJl
cG9ydFRleHRGb3VuZCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2l6ZSk6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6cmVwb3J0SWNvbkNoYW5nZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6cmVw
b3J0SW50ZW50UmVxdWVzdCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6cmVwb3J0SW50ZW50U2Vy
dmljZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChFd2tWaWV3SW1wbDo6Y3JlYXRlR0xTdXJmYWNl
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUp
OgorICAgICAgICAoRXdrVmlld0ltcGw6OnJlcXVlc3RDb2xvclBpY2tlcik6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6ZGlzbWlzc0NvbG9yUGlja2VyKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpy
ZXBvcnRCYWNrRm9yd2FyZExpc3RDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXdJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBs
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjp2aWV3KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpw
YWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp2aWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnZpZXdTaXplKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OmlzVmlld0ZvY3VzZWQpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsOjpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6ZGlkUmVsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OnRvb2xUaXBDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNldEN1
cnNvcik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjplbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmV4aXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjp1cGRhdGVUZXh0SW5wdXRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpoYW5kbGVEb3dubG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlKToKKyAgICAgICAgKFBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6UGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudEVmbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmw6OmRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudEVmbDo6dXBkYXRlVmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdl
VmlzaWJsZUNvbnRlbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9QYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRFZmw6OmNyZWF0ZSk6CisgICAgICAgIChQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRf
am9iLmNwcDoKKyAgICAgICAgKEV3a19Eb3dubG9hZF9Kb2I6OkV3a19Eb3dubG9hZF9Kb2IpOgor
ICAgICAgICAoRXdrX0Rvd25sb2FkX0pvYjo6dmlld0ltcGwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5oOgorICAgICAgICAoRXdrX0Rvd25s
b2FkX0pvYjo6Y3JlYXRlKToKKyAgICAgICAgKEV3a19Eb3dubG9hZF9Kb2IpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKHBhZ2VWaWV3TWFwKToK
KyAgICAgICAgKGFkZFRvUGFnZVZpZXdNYXApOgorICAgICAgICAocmVtb3ZlRnJvbVBhZ2VWaWV3
TWFwKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9mYXZpY29uX2NoYW5nZWQpOgorICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9mb2N1
c19vdXQpOgorICAgICAgICAobWFwVG9XZWJDb250ZW50KToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9tb3VzZV93aGVlbCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bik6
CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X21vdXNlX21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKToK
KyAgICAgICAgKF9ld2tfdmlld19zbWFydF9rZXlfdXApOgorICAgICAgICAoX2V3a192aWV3X29u
X3Nob3cpOgorICAgICAgICAoX2V3a192aWV3X29uX2hpZGUpOgorICAgICAgICAoX2V3a192aWV3
X2ltcGxfZGVsKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9kZWwpOgorICAgICAgICAoX2V3
a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY29sb3Jf
c2V0KToKKyAgICAgICAgKF9ld2tfdmlld19pbml0aWFsaXplKToKKyAgICAgICAgKF9ld2tfdmll
d19hZGRfd2l0aF9zbWFydCk6CisgICAgICAgIChld2tfdmlld19jb250ZXh0X2dldCk6CisgICAg
ICAgIChld2tfdmlld191cmxfdXBkYXRlKToKKyAgICAgICAgKGV3a192aWV3X3VybF9zZXQpOgor
ICAgICAgICAoZXdrX3ZpZXdfdXJsX2dldCk6CisgICAgICAgIChld2tfdmlld19pY29uX3VybF9n
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcmVsb2FkKToKKyAgICAgICAgKGV3a192aWV3X3JlbG9h
ZF9ieXBhc3NfY2FjaGUpOgorICAgICAgICAoZXdrX3ZpZXdfc3RvcCk6CisgICAgICAgIChld2tf
dmlld19zZXR0aW5nc19nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdGl0bGVfZ2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3RleHRfaW5wdXRfc3RhdGVfdXBkYXRlKToKKyAgICAgICAgKGV3a192aWV3
X2xvYWRfcHJvZ3Jlc3NfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NjYWxlX3NldCk6CisgICAg
ICAgIChld2tfdmlld19zY2FsZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZGV2aWNlX3BpeGVs
X3JhdGlvX3NldCk6CisgICAgICAgIChld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9fZ2V0KToK
KyAgICAgICAgKGV3a192aWV3X3RoZW1lX3NldCk6CisgICAgICAgIChld2tfdmlld190aGVtZV9n
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfYmFjayk6CisgICAgICAgIChld2tfdmlld19mb3J3YXJk
KToKKyAgICAgICAgKGV3a192aWV3X2ludGVudF9kZWxpdmVyKToKKyAgICAgICAgKGV3a192aWV3
X2JhY2tfcG9zc2libGUpOgorICAgICAgICAoZXdrX3ZpZXdfZm9yd2FyZF9wb3NzaWJsZSk6Cisg
ICAgICAgIChld2tfdmlld19iYWNrX2ZvcndhcmRfbGlzdF9nZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfaHRtbF9zdHJpbmdfbG9hZCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuY29kaW5n
X2N1c3RvbV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21f
c2V0KToKKyAgICAgICAgKGV3a192aWV3X3BhZ2VfY3JlYXRlKToKKyAgICAgICAgKGV3a192aWV3
X3RleHRfZmluZCk6CisgICAgICAgIChld2tfdmlld190ZXh0X2ZpbmRfaGlnaGxpZ2h0X2NsZWFy
KToKKyAgICAgICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc19jb3VudCk6CisgICAgICAgIChld2tf
dmlld19jb250ZW50c19zaXplX2NoYW5nZWQpOgorICAgICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVu
dV9yZXF1ZXN0KToKKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOgorICAgICAg
ICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOgorICAgICAgICAoZXdrX3ZpZXdfbW91c2Vf
ZXZlbnRzX2VuYWJsZWRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X21vdXNlX2V2ZW50c19lbmFi
bGVkX2dldCk6CisgICAgICAgIChld2tfdmlld193ZWJwcm9jZXNzX2NyYXNoZWQpOgorICAgICAg
ICAoZXdrX3ZpZXdfY29sb3JfcGlja2VyX2NvbG9yX3NldCk6CisgICAgICAgIChld2tfdmlld19m
ZWVkX3RvdWNoX2V2ZW50KToKKyAgICAgICAgKGV3a192aWV3X3RvdWNoX2V2ZW50c19lbmFibGVk
X3NldCk6CisgICAgICAgIChld2tfdmlld190b3VjaF9ldmVudHNfZW5hYmxlZF9nZXQpOgorICAg
ICAgICAoZXdrX3ZpZXdfaW5zcGVjdG9yX3Nob3cpOgorICAgICAgICAoZXdrX3ZpZXdfaW5zcGVj
dG9yX2Nsb3NlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZE1hbmFnZXJFZmw6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRGYWlsKToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRDYW5jZWwpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZE1hbmFnZXJFZmw6OmRpZEZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkTWFuYWdlckVmbDo6cmVnaXN0ZXJEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuaDoKKyAgICAgICAgKERvd25sb2FkTWFuYWdlckVm
bCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RmluZENsaWVudEVmbDo6ZGlkRmluZFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6
OkZpbmRDbGllbnRFZmw6OmRpZEZhaWxUb0ZpbmRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpG
aW5kQ2xpZW50RWZsOjpGaW5kQ2xpZW50RWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0Zp
bmRDbGllbnRFZmwuaDoKKyAgICAgICAgKFdlYktpdDo6RmluZENsaWVudEVmbDo6Y3JlYXRlKToK
KyAgICAgICAgKEZpbmRDbGllbnRFZmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRm9ybUNs
aWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZvcm1DbGllbnRFZmw6OndpbGxTdWJtaXRG
b3JtKToKKyAgICAgICAgKFdlYktpdDo6Rm9ybUNsaWVudEVmbDo6Rm9ybUNsaWVudEVmbCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJLaXQ6
OkZvcm1DbGllbnRFZmw6OmNyZWF0ZSk6CisgICAgICAgIChGb3JtQ2xpZW50RWZsKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpyZWdpc3RlckludGVudFNlcnZpY2VG
b3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRDaGFuZ2VQ
cm9ncmVzcyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRGaW5pc2hM
b2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6ZGlkRmFp
bExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50
RWZsOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUxvYWRDbGllbnRFZmw6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZEZh
aWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VMb2FkQ2xpZW50RWZsOjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlTG9hZENsaWVudEVmbDo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpQYWdlTG9hZENsaWVu
dEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5oOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKFBhZ2VM
b2FkQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OnZpZXdJ
bXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VQb2xpY3lDbGllbnRFZmwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlUG9saWN5Q2xpZW50RWZsOjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVBvbGljeUNsaWVudEVmbDo6ZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVBvbGlj
eUNsaWVudEVmbDo6UGFnZVBvbGljeUNsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL2Vm
bC9QYWdlUG9saWN5Q2xpZW50RWZsLmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VQb2xpY3lDbGll
bnRFZmw6OmNyZWF0ZSk6CisgICAgICAgIChQYWdlUG9saWN5Q2xpZW50RWZsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VVSUNsaWVudEVmbDo6Y2xvc2VQYWdlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50
RWZsOjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsOjpy
dW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVUlDbGllbnRFZmw6OnJ1
bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsOjpy
dW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsOjpz
aG93Q29sb3JQaWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVUlDbGllbnRFZmw6OmhpZGVD
b2xvclBpY2tlcik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VVSUNsaWVudEVmbDo6ZXhjZWVkZWRE
YXRhYmFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsOjpmb2N1cyk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VVSUNsaWVudEVmbDo6dW5mb2N1cyk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VVSUNsaWVudEVmbDo6dGFrZUZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZVVJQ2xpZW50RWZsOjpnZXRXaW5kb3dGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VVSUNs
aWVudEVmbDo6c2V0V2luZG93RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVUlDbGllbnRF
Zmw6OlBhZ2VVSUNsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGll
bnRFZmwuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsOjpjcmVhdGUpOgorICAg
ICAgICAoUGFnZVVJQ2xpZW50RWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1Jlc291cmNl
TG9hZENsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVm
bDo6ZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRDbGllbnRFZmw6OmRpZFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291cmNl
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRGaW5pc2hMb2Fk
Rm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRp
ZEZhaWxMb2FkRm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRDbGll
bnRFZmw6OlJlc291cmNlTG9hZENsaWVudEVmbCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZENsaWVudEVmbDo6flJlc291cmNlTG9hZENsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9SZXNvdXJjZUxvYWRDbGllbnRFZmwuaDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkQ2xpZW50RWZsOjpjcmVhdGUpOgorICAgICAgICAoUmVzb3VyY2VMb2FkQ2xpZW50RWZs
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlFZmwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjplbnRlckZ1
bGxTY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojpl
eGl0RnVsbFNjcmVlbik6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94
eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNy
ZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5
RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2aWV3V2lkZ2V0KToKKwog
MjAxMi0xMC0yMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgYSBzdHJhdGVneSBmb3Igc2hhcmVkIHdvcmtlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAppbmRleCAwM2Y2OTMwLi5hMDNkMTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCkBAIC0yMCw2
ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tWaWV3LmgiCiAKKyNp
bmNsdWRlICJFd2tWaWV3SW1wbC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUg
ImV3a192aWV3X3ByaXZhdGUuaCIKIApAQCAtMzIsNSArMzMsNyBAQCBXS1ZpZXdSZWYgV0tWaWV3
Q3JlYXRlKEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3Vw
UmVmIHBhZwogCiBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlld1JlZikKIHsK
LSAgICByZXR1cm4gdG9BUEkoZXdrX3ZpZXdfcGFnZV9nZXQodG9JbXBsKHZpZXdSZWYpKSk7Cisg
ICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gRXdrVmlld0ltcGw6OmZyb21FdmFzT2JqZWN0KHRv
SW1wbCh2aWV3UmVmKSk7CisKKyAgICByZXR1cm4gdmlld0ltcGwtPndrUGFnZSgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCmluZGV4
IDBiZTQ5NGMuLjQ3NjZmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3SW1wbC5jcHAKQEAgLTQxLDI2ICs0MSwzMiBAQAogI2luY2x1ZGUgImV3a192
aWV3LmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVjb3JlX0V2
YXMuaD4KKyNpbmNsdWRlIDxFY29yZV9JTUYuaD4KKyNpbmNsdWRlIDxFY29yZV9JTUZfRXZhcy5o
PgorI2luY2x1ZGUgPEVkamUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKK3N0YXRpYyBj
b25zdCBpbnQgZGVmYXVsdEN1cnNvclNpemUgPSAxNjsKKwogc3RhdGljIHZvaWQgX2V3a192aWV3
X2NvbW1pdCh2b2lkKiBkYXRhLCBFY29yZV9JTUZfQ29udGV4dCosIHZvaWQqIGV2ZW50SW5mbykK
IHsKICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tf
Vmlld19TbWFydF9EYXRhKj4oZGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdik7Ci0gICAgaWYgKCFldmVudEluZm8gfHwgIXByaXYtPmlzSW1mRm9j
dXNlZCkKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCB2aWV3SW1w
bCk7CisgICAgaWYgKCFldmVudEluZm8gfHwgIXZpZXdJbXBsLT5pc0ltZkZvY3VzZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHByaXYtPnBhZ2VQcm94eS0+Y29uZmlybUNvbXBvc2l0aW9uKFN0
cmluZzo6ZnJvbVVURjgoc3RhdGljX2Nhc3Q8Y2hhcio+KGV2ZW50SW5mbykpKTsKKyAgICB2aWV3
SW1wbC0+cGFnZVByb3h5LT5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5nOjpmcm9tVVRGOChzdGF0
aWNfY2FzdDxjaGFyKj4oZXZlbnRJbmZvKSkpOwogfQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
cHJlZWRpdF9jaGFuZ2VkKHZvaWQqIGRhdGEsIEVjb3JlX0lNRl9Db250ZXh0KiBjb250ZXh0LCB2
b2lkKikKIHsKICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2Fz
dDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgdmlld0ltcGwpOwogCi0gICAgaWYgKCFwcml2LT5wYWdlUHJveHktPmZvY3Vz
ZWRGcmFtZSgpIHx8ICFwcml2LT5pc0ltZkZvY3VzZWQpCisgICAgaWYgKCF2aWV3SW1wbC0+cGFn
ZVByb3h5LT5mb2N1c2VkRnJhbWUoKSB8fCAhdmlld0ltcGwtPmlzSW1mRm9jdXNlZCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgY2hhciogYnVmZmVyID0gMDsKQEAgLTcxLDcgKzc3LDcgQEAgc3Rh
dGljIHZvaWQgX2V3a192aWV3X3ByZWVkaXRfY2hhbmdlZCh2b2lkKiBkYXRhLCBFY29yZV9JTUZf
Q29udGV4dCogY29udGV4dCwgdm8KICAgICBTdHJpbmcgcHJlZWRpdFN0cmluZyA9IFN0cmluZzo6
ZnJvbVVURjgoYnVmZmVyKTsKICAgICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVy
bGluZXM7CiAgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwgcHJl
ZWRpdFN0cmluZy5sZW5ndGgoKSwgQ29sb3IoMCwgMCwgMCksIGZhbHNlKSk7Ci0gICAgcHJpdi0+
cGFnZVByb3h5LT5zZXRDb21wb3NpdGlvbihwcmVlZGl0U3RyaW5nLCB1bmRlcmxpbmVzLCAwKTsK
KyAgICB2aWV3SW1wbC0+cGFnZVByb3h5LT5zZXRDb21wb3NpdGlvbihwcmVlZGl0U3RyaW5nLCB1
bmRlcmxpbmVzLCAwKTsKIH0KIAogc3RhdGljIHZvaWQgX2V3a192aWV3X2ltZl9jb250ZXh0X2Rl
c3Ryb3koRWNvcmVfSU1GX0NvbnRleHQqIGltZkNvbnRleHQpCkBAIC0xMjUsMTMgKzEzMSwxMyBA
QCBFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcpCiAgICAgLCBtX3Zp
ZXcodmlldykKIHsKICAgICBBU1NFUlQodmlldyk7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGV2YXNfb2JqZWN0
X3NtYXJ0X2RhdGFfZ2V0KHZpZXcpKTsKLSAgICBBU1NFUlQoc21hcnREYXRhKTsKKyAgICBFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworICAgIEFTU0VSVChzZCk7CiAKLSAg
ICBpbWZDb250ZXh0ID0gX2V3a192aWV3X2ltZl9jb250ZXh0X2NyZWF0ZShzbWFydERhdGEpOwor
ICAgIGltZkNvbnRleHQgPSBfZXdrX3ZpZXdfaW1mX2NvbnRleHRfY3JlYXRlKHNkKTsKIAogI2lm
ZGVmIEhBVkVfRUNPUkVfWAotICAgIGlzVXNpbmdFY29yZVggPSBXZWJDb3JlOjppc1VzaW5nRWNv
cmVYKHNtYXJ0RGF0YS0+YmFzZS5ldmFzKTsKKyAgICBpc1VzaW5nRWNvcmVYID0gV2ViQ29yZTo6
aXNVc2luZ0Vjb3JlWChzZC0+YmFzZS5ldmFzKTsKICNlbmRpZgogfQogCkBAIC0xNDMsMyArMTQ5
LDU0OCBAQCBFd2tWaWV3SW1wbDo6fkV3a1ZpZXdJbXBsKCkKICAgICBFSU5BX0xJU1RfRlJFRShw
b3B1cE1lbnVJdGVtcywgaXRlbSkKICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PEV3a19Qb3B1
cF9NZW51X0l0ZW0qPihpdGVtKTsKIH0KKworRXdrX1ZpZXdfU21hcnRfRGF0YSogRXdrVmlld0lt
cGw6OnNtYXJ0RGF0YSgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0
X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChtX3ZpZXcpKTsKK30KKworRXdrVmll
d0ltcGwqIEV3a1ZpZXdJbXBsOjpmcm9tRXZhc09iamVjdChFdmFzX09iamVjdCogdmlldykKK3sK
KyAgICBBU1NFUlQodmlldyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNf
Y2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQodmll
dykpOworICAgIEFTU0VSVChzZCk7CisgICAgQVNTRVJUKHNkLT5wcml2KTsKKyAgICByZXR1cm4g
c2QtPnByaXY7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXRyaWV2ZXMgdGhlIGludGVy
bmFsIFdLUGFnZSBmb3IgdGhpcyB2aWV3LgorICovCitXS1BhZ2VSZWYgRXdrVmlld0ltcGw6Ondr
UGFnZSgpCit7CisgICAgcmV0dXJuIHRvQVBJKHBhZ2VQcm94eS5nZXQoKSk7Cit9CisKK3ZvaWQg
RXdrVmlld0ltcGw6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikKK3sKKyAgICBFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworCisgICAgY29uc3QgY2hhciogZ3Jv
dXAgPSBjdXJzb3IucGxhdGZvcm1DdXJzb3IoKTsKKyAgICBpZiAoIWdyb3VwIHx8IGdyb3VwID09
IGN1cnNvckdyb3VwKQorICAgICAgICByZXR1cm47CisKKyAgICBjdXJzb3JHcm91cCA9IGdyb3Vw
OworICAgIGN1cnNvck9iamVjdCA9IGFkb3B0UmVmKGVkamVfb2JqZWN0X2FkZChzZC0+YmFzZS5l
dmFzKSk7CisKKyAgICBFY29yZV9FdmFzKiBlY29yZUV2YXMgPSBlY29yZV9ldmFzX2Vjb3JlX2V2
YXNfZ2V0KHNkLT5iYXNlLmV2YXMpOworICAgIGlmICghdGhlbWUgfHwgIWVkamVfb2JqZWN0X2Zp
bGVfc2V0KGN1cnNvck9iamVjdC5nZXQoKSwgdGhlbWUsIGdyb3VwKSkgeworICAgICAgICBjdXJz
b3JPYmplY3QuY2xlYXIoKTsKKworICAgICAgICBlY29yZV9ldmFzX29iamVjdF9jdXJzb3Jfc2V0
KGVjb3JlRXZhcywgMCwgMCwgMCwgMCk7CisjaWZkZWYgSEFWRV9FQ09SRV9YCisgICAgICAgIGlm
IChpc1VzaW5nRWNvcmVYKQorICAgICAgICAgICAgV2ViQ29yZTo6YXBwbHlGYWxsYmFja0N1cnNv
cihlY29yZUV2YXMsIGdyb3VwKTsKKyNlbmRpZgorICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgRXZhc19Db29yZCB3aWR0aCwgaGVpZ2h0OworICAgIGVkamVfb2JqZWN0X3NpemVfbWluX2dl
dChjdXJzb3JPYmplY3QuZ2V0KCksICZ3aWR0aCwgJmhlaWdodCk7CisgICAgaWYgKHdpZHRoIDw9
IDAgfHwgaGVpZ2h0IDw9IDApCisgICAgICAgIGVkamVfb2JqZWN0X3NpemVfbWluX2NhbGMoY3Vy
c29yT2JqZWN0LmdldCgpLCAmd2lkdGgsICZoZWlnaHQpOworICAgIGlmICh3aWR0aCA8PSAwIHx8
IGhlaWdodCA8PSAwKSB7CisgICAgICAgIHdpZHRoID0gZGVmYXVsdEN1cnNvclNpemU7CisgICAg
ICAgIGhlaWdodCA9IGRlZmF1bHRDdXJzb3JTaXplOworICAgIH0KKyAgICBldmFzX29iamVjdF9y
ZXNpemUoY3Vyc29yT2JqZWN0LmdldCgpLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIGNvbnN0IGNo
YXIqIGRhdGE7CisgICAgaW50IGhvdHNwb3RYID0gMDsKKyAgICBkYXRhID0gZWRqZV9vYmplY3Rf
ZGF0YV9nZXQoY3Vyc29yT2JqZWN0LmdldCgpLCAiaG90LngiKTsKKyAgICBpZiAoZGF0YSkKKyAg
ICAgICAgaG90c3BvdFggPSBhdG9pKGRhdGEpOworCisgICAgaW50IGhvdHNwb3RZID0gMDsKKyAg
ICBkYXRhID0gZWRqZV9vYmplY3RfZGF0YV9nZXQoY3Vyc29yT2JqZWN0LmdldCgpLCAiaG90Lnki
KTsKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgaG90c3BvdFkgPSBhdG9pKGRhdGEpOworCisgICAg
ZWNvcmVfZXZhc19vYmplY3RfY3Vyc29yX3NldChlY29yZUV2YXMsIGN1cnNvck9iamVjdC5nZXQo
KSwgRVZBU19MQVlFUl9NQVgsIGhvdHNwb3RYLCBob3RzcG90WSk7Cit9CisKK3ZvaWQgRXdrVmll
d0ltcGw6OnJlZHJhd1JlZ2lvbihjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CisKKyAgICBpZiAoIXNkLT5pbWFnZSkKKyAg
ICAgICAgcmV0dXJuOworCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIEVXS19W
SUVXX0lNUExfR0VUX09SX1JFVFVSTihzZCwgdmlld0ltcGwpOworCisgICAgZXZhc19nbF9tYWtl
X2N1cnJlbnQodmlld0ltcGwtPmV2YXNHbCwgdmlld0ltcGwtPmV2YXNHbFN1cmZhY2UsIHZpZXdJ
bXBsLT5ldmFzR2xDb250ZXh0KTsKKyAgICB2aWV3SW1wbC0+cGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudC0+ZGlzcGxheShyZWN0LCBJbnRQb2ludChzZC0+dmlldy54LCBzZC0+dmlldy55KSk7
CisjZW5kaWYKKworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzZC0+aW1h
Z2UsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKK30K
KworLyoqCisgKiBAaW50ZXJuYWwKKyAqIEEgZG93bmxvYWQgZm9yIHRoYXQgdmlldyB3YXMgY2Fu
Y2VsbGVkLgorICoKKyAqIEVtaXRzIHNpZ25hbDogImRvd25sb2FkLGNhbmNlbGxlZCIgd2l0aCBw
b2ludGVyIHRvIGEgRXdrX0Rvd25sb2FkX0pvYi4KKyAqLwordm9pZCBFd2tWaWV3SW1wbDo6cmVw
b3J0RG93bmxvYWRKb2JDYW5jZWxsZWQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQpCit7Cisg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJkb3dubG9hZCxjYW5j
ZWxsZWQiLCBkb3dubG9hZCk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBBIGRvd25sb2Fk
IGZvciB0aGF0IHZpZXcgaGFzIGZhaWxlZC4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJkb3dubG9h
ZCxmYWlsZWQiIHdpdGggcG9pbnRlciB0byBhIEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IuCisgKi8K
K3ZvaWQgRXdrVmlld0ltcGw6OnJlcG9ydERvd25sb2FkSm9iRmFpbGVkKEV3a19Eb3dubG9hZF9K
b2IqIGRvd25sb2FkLCBFd2tfRXJyb3IqIGVycm9yKQoreworICAgIEV3a19Eb3dubG9hZF9Kb2Jf
RXJyb3IgZG93bmxvYWRFcnJvciA9IHsgZG93bmxvYWQsIGVycm9yIH07CisgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJkb3dubG9hZCxmYWlsZWQiLCAmZG93bmxv
YWRFcnJvcik7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBBIGRvd25sb2FkIGZvciB0aGF0
IHZpZXcgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5LgorICoKKyAqIEVtaXRzIHNpZ25hbDogImRvd25s
b2FkLGZpbmlzaGVkIiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfRG93bmxvYWRfSm9iLgorICovCit2
b2lkIEV3a1ZpZXdJbXBsOjpyZXBvcnREb3dubG9hZEpvYkZpbmlzaGVkKEV3a19Eb3dubG9hZF9K
b2IqIGRvd25sb2FkKQoreworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92
aWV3LCAiZG93bmxvYWQsZmluaXNoZWQiLCBkb3dubG9hZCk7Cit9CisKKy8qKgorICogQGludGVy
bmFsCisgKiBBIG5ldyBkb3dubG9hZCBoYXMgYmVlbiByZXF1ZXN0ZWQgZm9yIHRoYXQgdmlldy4K
KyAqCisgKiBFbWl0cyBzaWduYWw6ICJkb3dubG9hZCxyZXF1ZXN0IiB3aXRoIHBvaW50ZXIgdG8g
YSBFd2tfRG93bmxvYWRfSm9iLgorICovCit2b2lkIEV3a1ZpZXdJbXBsOjpyZXBvcnREb3dubG9h
ZEpvYlJlcXVlc3RlZChFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCkKK3sKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImRvd25sb2FkLHJlcXVlc3QiLCBkb3du
bG9hZCk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXBvcnRzIHRoYXQgYSBmb3JtIHJl
cXVlc3QgaXMgYWJvdXQgdG8gYmUgc3VibWl0dGVkLgorICoKKyAqIEVtaXRzIHNpZ25hbDogImZv
cm0sc3VibWlzc2lvbixyZXF1ZXN0IiB3aXRoIHBvaW50ZXIgdG8gRXdrX0Zvcm1fU3VibWlzc2lv
bl9SZXF1ZXN0LgorICovCit2b2lkIEV3a1ZpZXdJbXBsOjpyZXBvcnROZXdGb3JtU3VibWlzc2lv
blJlcXVlc3QoRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiZm9ybSxzdWJtaXNzaW9uLHJl
cXVlc3QiLCByZXF1ZXN0KTsKK30KKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKy8qKgor
ICogQGludGVybmFsCisgKiBDYWxscyBmdWxsc2NyZWVuX2VudGVyIGNhbGxiYWNrIG9yIGZhbGxz
IGJhY2sgdG8gZGVmYXVsdCBiZWhhdmlvciBhbmQgZW5hYmxlcyBmdWxsc2NyZWVuIG1vZGUuCisg
Ki8KK3ZvaWQgRXdrVmlld0ltcGw6OmVudGVyRnVsbFNjcmVlbigpCit7CisgICAgRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QgPSBzbWFydERhdGEoKTsKKworICAgIGlmICghc2QtPmFwaS0+ZnVsbHNj
cmVlbl9lbnRlciB8fCAhc2QtPmFwaS0+ZnVsbHNjcmVlbl9lbnRlcihzZCkpIHsKKyAgICAgICAg
RWNvcmVfRXZhcyogZWNvcmVFdmFzID0gZWNvcmVfZXZhc19lY29yZV9ldmFzX2dldChzZC0+YmFz
ZS5ldmFzKTsKKyAgICAgICAgZWNvcmVfZXZhc19mdWxsc2NyZWVuX3NldChlY29yZUV2YXMsIHRy
dWUpOworICAgIH0KK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIENhbGxzIGZ1bGxzY3JlZW5f
ZXhpdCBjYWxsYmFjayBvciBmYWxscyBiYWNrIHRvIGRlZmF1bHQgYmVoYXZpb3IgYW5kIGRpc2Fi
bGVzIGZ1bGxzY3JlZW4gbW9kZS4KKyAqLwordm9pZCBFd2tWaWV3SW1wbDo6ZXhpdEZ1bGxTY3Jl
ZW4oKQoreworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CisKKyAg
ICBpZiAoIXNkLT5hcGktPmZ1bGxzY3JlZW5fZXhpdCB8fCAhc2QtPmFwaS0+ZnVsbHNjcmVlbl9l
eGl0KHNkKSkgeworICAgICAgICBFY29yZV9FdmFzKiBlY29yZUV2YXMgPSBlY29yZV9ldmFzX2Vj
b3JlX2V2YXNfZ2V0KHNkLT5iYXNlLmV2YXMpOworICAgICAgICBlY29yZV9ldmFzX2Z1bGxzY3Jl
ZW5fc2V0KGVjb3JlRXZhcywgZmFsc2UpOworICAgIH0KK30KKyNlbmRpZgorCit2b2lkIEV3a1Zp
ZXdJbXBsOjpzZXRJbWFnZURhdGEodm9pZCogaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBzaXpl
KQoreworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CisgICAgaWYg
KCFpbWFnZURhdGEgfHwgIXNkLT5pbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZXZhc19v
YmplY3RfcmVzaXplKHNkLT5pbWFnZSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKyAg
ICBldmFzX29iamVjdF9pbWFnZV9zaXplX3NldChzZC0+aW1hZ2UsIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSk7CisgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9jb3B5X3NldChzZC0+aW1h
Z2UsIGltYWdlRGF0YSk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXBvcnRzIGxvYWQg
ZmFpbGVkIHdpdGggZXJyb3IgaW5mb3JtYXRpb24uCisgKgorICogRW1pdHMgc2lnbmFsOiAibG9h
ZCxlcnJvciIgd2l0aCBwb2ludGVyIHRvIEV3a19FcnJvci4KKyAqLwordm9pZCBFd2tWaWV3SW1w
bDo6cmVwb3J0TG9hZEVycm9yKEV3a19FcnJvciogZXJyb3IpCit7CisgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJsb2FkLGVycm9yIiwgZXJyb3IpOworfQorCisv
KioKKyAqIEBpbnRlcm5hbAorICogUmVwb3J0cyBsb2FkIGZpbmlzaGVkLgorICoKKyAqIEVtaXRz
IHNpZ25hbDogImxvYWQsZmluaXNoZWQiLgorICovCit2b2lkIEV3a1ZpZXdJbXBsOjpyZXBvcnRM
b2FkRmluaXNoZWQoKQoreworICAgIGV3a192aWV3X3VybF91cGRhdGUobV92aWV3KTsKKyAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImxvYWQsZmluaXNoZWQiLCAw
KTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMgbG9hZCBwcm9ncmVzcyBjaGFu
Z2VkLgorICoKKyAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvZ3Jlc3MiIHdpdGggcG9pbnRlciB0
byBhIGRvdWJsZSBmcm9tIDAuMCB0byAxLjAuCisgKi8KK3ZvaWQgRXdrVmlld0ltcGw6OnJlcG9y
dExvYWRQcm9ncmVzcyhkb3VibGUgcHJvZ3Jlc3MpCit7CisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChtX3ZpZXcsICJsb2FkLHByb2dyZXNzIiwgJnByb2dyZXNzKTsKK30KKwor
LyoqCisgKiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMgdmlldyBwcm92aXNpb25hbCBsb2FkIGZhaWxl
ZCB3aXRoIGVycm9yIGluZm9ybWF0aW9uLgorICoKKyAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJv
dmlzaW9uYWwsZmFpbGVkIiB3aXRoIHBvaW50ZXIgdG8gRXdrX0Vycm9yLgorICovCit2b2lkIEV3
a1ZpZXdJbXBsOjpyZXBvcnRQcm92aXNpb25hbExvYWRGYWlsZWQoRXdrX0Vycm9yKiBlcnJvcikK
K3sKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImxvYWQscHJv
dmlzaW9uYWwsZmFpbGVkIiwgZXJyb3IpOworfQorCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCit2b2lkIEV3a1ZpZXdJbXBsOjpyZXBvcnRMb2FkQ29tbWl0dGVkKCkKK3sKKyAgICBwYWdl
Vmlld3BvcnRDb250cm9sbGVyLT5kaWRDb21taXRMb2FkKCk7Cit9CisjZW5kaWYKKworLyoqCisg
KiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMgdmlldyByZWNlaXZlZCByZWRpcmVjdCBmb3IgcHJvdmlz
aW9uYWwgbG9hZC4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb3Zpc2lvbmFsLHJlZGly
ZWN0Ii4KKyAqLwordm9pZCBFd2tWaWV3SW1wbDo6cmVwb3J0UHJvdmlzaW9uYWxMb2FkUmVkaXJl
Y3QoKQoreworICAgIGV3a192aWV3X3VybF91cGRhdGUobV92aWV3KTsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImxvYWQscHJvdmlzaW9uYWwscmVkaXJlY3Qi
LCAwKTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMgdmlldyBwcm92aXNpb25h
bCBsb2FkIHN0YXJ0ZWQuCisgKgorICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCxz
dGFydGVkIi4KKyAqLwordm9pZCBFd2tWaWV3SW1wbDo6cmVwb3J0UHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZCgpCit7CisgICAgZXdrX3ZpZXdfdXJsX3VwZGF0ZShtX3ZpZXcpOworICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibG9hZCxwcm92aXNpb25hbCxzdGFydGVk
IiwgMCk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXBvcnRzIHRoYXQgYSBuYXZpZ2F0
aW9uIHBvbGljeSBkZWNpc2lvbiBzaG91bGQgYmUgdGFrZW4uCisgKgorICogRW1pdHMgc2lnbmFs
OiAicG9saWN5LGRlY2lzaW9uLG5hdmlnYXRpb24iLgorICovCit2b2lkIEV3a1ZpZXdJbXBsOjpy
ZXBvcnROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lz
aW9uKiBkZWNpc2lvbikKK3sKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1f
dmlldywgInBvbGljeSxkZWNpc2lvbixuYXZpZ2F0aW9uIiwgZGVjaXNpb24pOworfQorCisvKioK
KyAqIEBpbnRlcm5hbAorICogUmVwb3J0cyB0aGF0IGEgbmV3IHdpbmRvdyBwb2xpY3kgZGVjaXNp
b24gc2hvdWxkIGJlIHRha2VuLgorICoKKyAqIEVtaXRzIHNpZ25hbDogInBvbGljeSxkZWNpc2lv
bixuZXcsd2luZG93Ii4KKyAqLwordm9pZCBFd2tWaWV3SW1wbDo6cmVwb3J0TmV3V2luZG93UG9s
aWN5RGVjaXNpb24oRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbikKK3sK
KyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInBvbGljeSxkZWNp
c2lvbixuZXcsd2luZG93IiwgZGVjaXNpb24pOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICog
TG9hZCB3YXMgaW5pdGlhdGVkIGZvciBhIHJlc291cmNlIGluIHRoZSB2aWV3LgorICoKKyAqIEVt
aXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3QsbmV3IiB3aXRoIHBvaW50ZXIgdG8gcmVzb3Vy
Y2UgcmVxdWVzdC4KKyAqLwordm9pZCBFd2tWaWV3SW1wbDo6cmVwb3J0UmVzb3VyY2VMb2FkU3Rh
cnRlZChFd2tfUmVzb3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QpCit7
CisgICAgRXdrX1Jlc291cmNlX1JlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291cmNlLCBy
ZXF1ZXN0LCAwfTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3
LCAicmVzb3VyY2UscmVxdWVzdCxuZXciLCAmcmVzb3VyY2VSZXF1ZXN0KTsKK30KKworLyoqCisg
KiBAaW50ZXJuYWwKKyAqIFJlY2VpdmVkIGEgcmVzcG9uc2UgdG8gYSByZXNvdXJjZSBsb2FkIHJl
cXVlc3QgaW4gdGhlIHZpZXcuCisgKgorICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVxdWVz
dCxyZXNwb25zZSIgd2l0aCBwb2ludGVyIHRvIHJlc291cmNlIHJlc3BvbnNlLgorICovCit2b2lk
IEV3a1ZpZXdJbXBsOjpyZXBvcnRSZXNvdXJjZUxvYWRSZXNwb25zZShFd2tfUmVzb3VyY2UqIHJl
c291cmNlLCBFd2tfVXJsX1Jlc3BvbnNlKiByZXNwb25zZSkKK3sKKyAgICBFd2tfUmVzb3VyY2Vf
TG9hZF9SZXNwb25zZSByZXNvdXJjZUxvYWRSZXNwb25zZSA9IHtyZXNvdXJjZSwgcmVzcG9uc2V9
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2Us
cmVxdWVzdCxyZXNwb25zZSIsICZyZXNvdXJjZUxvYWRSZXNwb25zZSk7Cit9CisKKy8qKgorICog
QGludGVybmFsCisgKiBGYWlsZWQgbG9hZGluZyBhIHJlc291cmNlIGluIHRoZSB2aWV3LgorICoK
KyAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3QsZmluaXNoZWQiIHdpdGggcG9pbnRl
ciB0byB0aGUgcmVzb3VyY2UgbG9hZCBlcnJvci4KKyAqLwordm9pZCBFd2tWaWV3SW1wbDo6cmVw
b3J0UmVzb3VyY2VMb2FkRmFpbGVkKEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19FcnJvciog
ZXJyb3IpCit7CisgICAgRXdrX1Jlc291cmNlX0xvYWRfRXJyb3IgcmVzb3VyY2VMb2FkRXJyb3Ig
PSB7cmVzb3VyY2UsIGVycm9yfTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KG1fdmlldywgInJlc291cmNlLHJlcXVlc3QsZmFpbGVkIiwgJnJlc291cmNlTG9hZEVycm9yKTsK
K30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIEZpbmlzaGVkIGxvYWRpbmcgYSByZXNvdXJjZSBp
biB0aGUgdmlldy4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlz
aGVkIiB3aXRoIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlLgorICovCit2b2lkIEV3a1ZpZXdJbXBs
OjpyZXBvcnRSZXNvdXJjZUxvYWRGaW5pc2hlZChFd2tfUmVzb3VyY2UqIHJlc291cmNlKQorewor
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVx
dWVzdCxmaW5pc2hlZCIsIHJlc291cmNlKTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJl
cXVlc3Qgd2FzIHNlbnQgZm9yIGEgcmVzb3VyY2UgaW4gdGhlIHZpZXcuCisgKgorICogRW1pdHMg
c2lnbmFsOiAicmVzb3VyY2UscmVxdWVzdCxzZW50IiB3aXRoIHBvaW50ZXIgdG8gcmVzb3VyY2Ug
cmVxdWVzdCBhbmQgcG9zc2libGUgcmVkaXJlY3QgcmVzcG9uc2UuCisgKi8KK3ZvaWQgRXdrVmll
d0ltcGw6OnJlcG9ydFJlc291cmNlUmVxdWVzdFNlbnQoRXdrX1Jlc291cmNlKiByZXNvdXJjZSwg
RXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3Bv
bnNlKQoreworICAgIEV3a19SZXNvdXJjZV9SZXF1ZXN0IHJlc291cmNlUmVxdWVzdCA9IHtyZXNv
dXJjZSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZX07CisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChtX3ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LHNlbnQiLCAmcmVzb3VyY2VS
ZXF1ZXN0KTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFRoZSB2aWV3IHRpdGxlIHdhcyBj
aGFuZ2VkIGJ5IHRoZSBmcmFtZSBsb2FkZXIuCisgKgorICogRW1pdHMgc2lnbmFsOiAidGl0bGUs
Y2hhbmdlZCIgd2l0aCBwb2ludGVyIHRvIG5ldyB0aXRsZSBzdHJpbmcuCisgKi8KK3ZvaWQgRXdr
Vmlld0ltcGw6OnJlcG9ydFRpdGxlQ2hhbmdlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit7CisgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJ0aXRsZSxjaGFuZ2VkIiwg
Y29uc3RfY2FzdDxjaGFyKj4odGl0bGUudXRmOCgpLmRhdGEoKSkpOworfQorCisvKioKKyAqIEBp
bnRlcm5hbAorICovCit2b2lkIEV3a1ZpZXdJbXBsOjpyZXBvcnRUb29sdGlwVGV4dENoYW5nZShj
b25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgaWYgKHRleHQuaXNFbXB0eSgpKQorICAgICAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInRvb2x0aXAsdGV4dCx1bnNl
dCIsIDApOworICAgIGVsc2UKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChtX3ZpZXcsICJ0b29sdGlwLHRleHQsc2V0IiwgY29uc3RfY2FzdDxjaGFyKj4odGV4dC51dGY4
KCkuZGF0YSgpKSk7CisKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMgdGhhdCB0
aGUgcmVxdWVzdGVkIHRleHQgd2FzIGZvdW5kLgorICoKKyAqIEVtaXRzIHNpZ25hbDogInRleHQs
Zm91bmQiIHdpdGggdGhlIG51bWJlciBvZiBtYXRjaGVzLgorICovCit2b2lkIEV3a1ZpZXdJbXBs
OjpyZXBvcnRUZXh0Rm91bmQodW5zaWduZWQgbWF0Y2hDb3VudCkKK3sKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInRleHQsZm91bmQiLCAmbWF0Y2hDb3VudCk7
Cit9CisKK0ludFNpemUgRXdrVmlld0ltcGw6OnNpemUoKSBjb25zdAoreworICAgIGludCB3aWR0
aCwgaGVpZ2h0OworICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChtX3ZpZXcsIDAsIDAsICZ3
aWR0aCwgJmhlaWdodCk7CisgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7Cit9CisK
Ky8qKgorICogQGludGVybmFsCisgKiBVcGRhdGUgdGhlIHZpZXcncyBmYXZpY29uIGFuZCBlbWl0
cyBhICJpY29uLGNoYW5nZWQiIHNpZ25hbCBpZiBpdCBoYXMKKyAqIGNoYW5nZWQuCisgKgorICog
VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIFVSTCBoYXMgY2hhbmdlZCBvciB3
aGVuIHRoZSBpY29uIGZvcgorICogdGhlIGN1cnJlbnQgcGFnZSBVUkwgaGFzIGNoYW5nZWQuCisg
Ki8KK3ZvaWQgRXdrVmlld0ltcGw6OnJlcG9ydEljb25DaGFuZ2UoKQoreworICAgIEV3a19GYXZp
Y29uX0RhdGFiYXNlKiBpY29uRGF0YWJhc2UgPSBjb250ZXh0LT5mYXZpY29uRGF0YWJhc2UoKTsK
KyAgICBBU1NFUlQoaWNvbkRhdGFiYXNlKTsKKworICAgIGZhdmljb25VUkwgPSBld2tfZmF2aWNv
bl9kYXRhYmFzZV9pY29uX3VybF9nZXQoaWNvbkRhdGFiYXNlLCB1cmwpOworICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiaWNvbixjaGFuZ2VkIiwgMCk7Cit9CisK
KyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisvKioKKyAqIEBpbnRlcm5hbAorICogVGhlIHZpZXcg
cmVjZWl2ZWQgYSBuZXcgaW50ZW50IHJlcXVlc3QuCisgKgorICogRW1pdHMgc2lnbmFsOiAiaW50
ZW50LHJlcXVlc3QsbmV3IiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfSW50ZW50LgorICovCit2b2lk
IEV3a1ZpZXdJbXBsOjpyZXBvcnRJbnRlbnRSZXF1ZXN0KEV3a19JbnRlbnQqIGV3a0ludGVudCkK
K3sKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImludGVudCxy
ZXF1ZXN0LG5ldyIsIGV3a0ludGVudCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShXRUJfSU5U
RU5UU19UQUcpCisvKioKKyAqIEBpbnRlcm5hbAorICogVGhlIHZpZXcgcmVjZWl2ZWQgYSBuZXcg
aW50ZW50IHNlcnZpY2UgcmVnaXN0cmF0aW9uLgorICoKKyAqIEVtaXRzIHNpZ25hbDogImludGVu
dCxzZXJ2aWNlLHJlZ2lzdGVyIiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfSW50ZW50X1NlcnZpY2Uu
CisgKi8KK3ZvaWQgRXdrVmlld0ltcGw6OnJlcG9ydEludGVudFNlcnZpY2VSZWdpc3RyYXRpb24o
RXdrX0ludGVudF9TZXJ2aWNlKiBld2tJbnRlbnRTZXJ2aWNlKQoreworICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiaW50ZW50LHNlcnZpY2UscmVnaXN0ZXIiLCBl
d2tJbnRlbnRTZXJ2aWNlKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQor
CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorYm9vbCBFd2tWaWV3SW1wbDo6Y3Jl
YXRlR0xTdXJmYWNlKGNvbnN0IEludFNpemUmIHZpZXdTaXplKQoreworICAgIEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CisKKyAgICBFdmFzX0dMX0NvbmZpZyBldmFzR2xD
b25maWcgPSB7CisgICAgICAgIEVWQVNfR0xfUkdCQV84ODg4LAorICAgICAgICBFVkFTX0dMX0RF
UFRIX0JJVF84LAorICAgICAgICBFVkFTX0dMX1NURU5DSUxfTk9ORSwKKyAgICAgICAgRVZBU19H
TF9PUFRJT05TX05PTkUsCisgICAgICAgIEVWQVNfR0xfTVVMVElTQU1QTEVfTk9ORQorICAgIH07
CisKKyAgICBBU1NFUlQoIWV2YXNHbFN1cmZhY2UpOworICAgIGV2YXNHbFN1cmZhY2UgPSBldmFz
X2dsX3N1cmZhY2VfY3JlYXRlKGV2YXNHbCwgJmV2YXNHbENvbmZpZywgdmlld1NpemUud2lkdGgo
KSwgdmlld1NpemUuaGVpZ2h0KCkpOworICAgIGlmICghZXZhc0dsU3VyZmFjZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgRXZhc19OYXRpdmVfU3VyZmFjZSBuYXRpdmVTdXJmYWNlOwor
ICAgIGV2YXNfZ2xfbmF0aXZlX3N1cmZhY2VfZ2V0KGV2YXNHbCwgZXZhc0dsU3VyZmFjZSwgJm5h
dGl2ZVN1cmZhY2UpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX25hdGl2ZV9zdXJmYWNlX3NldChz
ZC0+aW1hZ2UsICZuYXRpdmVTdXJmYWNlKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IEV3a1ZpZXdJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKK3sKKyAgICBp
ZiAoZXZhc0dsKSB7CisgICAgICAgIEVJTkFfTE9HX0RPTV9XQVJOKF9ld2tfbG9nX2RvbSwgIkFj
Y2VsZXJhdGVkIGNvbXBvc2l0aW5nIG1vZGUgYWxyZWFkeSBlbnRlcmVkLiIpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgRXZhcyogZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNf
Z2V0KGV3a1ZpZXcpOworICAgIGV2YXNHbCA9IGV2YXNfZ2xfbmV3KGV2YXMpOworICAgIGlmICgh
ZXZhc0dsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBldmFzR2xDb250ZXh0ID0gZXZh
c19nbF9jb250ZXh0X2NyZWF0ZShldmFzR2wsIDApOworICAgIGlmICghZXZhc0dsQ29udGV4dCkg
eworICAgICAgICBldmFzX2dsX2ZyZWUoZXZhc0dsKTsKKyAgICAgICAgZXZhc0dsID0gMDsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghY3JlYXRlR0xTdXJmYWNlKHNp
emUoKSkpIHsKKyAgICAgICAgZXZhc19nbF9jb250ZXh0X2Rlc3Ryb3koZXZhc0dsLCBldmFzR2xD
b250ZXh0KTsKKyAgICAgICAgZXZhc0dsQ29udGV4dCA9IDA7CisKKyAgICAgICAgZXZhc19nbF9m
cmVlKGV2YXNHbCk7CisgICAgICAgIGV2YXNHbCA9IDA7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBwYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LT5zZXRSZW5kZXJlckFj
dGl2ZSh0cnVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBFd2tWaWV3SW1wbDo6ZXhp
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoZXZhc0dsLCBmYWxzZSk7CisKKyAgICBpZiAoZXZhc0dsU3VyZmFjZSkgewor
ICAgICAgICBldmFzX2dsX3N1cmZhY2VfZGVzdHJveShldmFzR2wsIGV2YXNHbFN1cmZhY2UpOwor
ICAgICAgICBldmFzR2xTdXJmYWNlID0gMDsKKyAgICB9CisKKyAgICBpZiAoZXZhc0dsQ29udGV4
dCkgeworICAgICAgICBldmFzX2dsX2NvbnRleHRfZGVzdHJveShldmFzR2wsIGV2YXNHbENvbnRl
eHQpOworICAgICAgICBldmFzR2xDb250ZXh0ID0gMDsKKyAgICB9CisKKyAgICBldmFzX2dsX2Zy
ZWUoZXZhc0dsKTsKKyAgICBldmFzR2wgPSAwOworCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5k
aWYKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorLyoqCisgKiBAaW50ZXJuYWwKKyAq
IFJlcXVlc3RzIHRvIHNob3cgZXh0ZXJuYWwgY29sb3IgcGlja2VyLgorICovCit2b2lkIEV3a1Zp
ZXdJbXBsOjpyZXF1ZXN0Q29sb3JQaWNrZXIoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEsIFdL
Q29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lcikKK3sKKyAgICBFd2tfVmlld19T
bWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHNkLT5hcGktPmlucHV0X3BpY2tlcl9jb2xvcl9yZXF1ZXN0KTsKKworICAgIGNvbG9yUGlj
a2VyUmVzdWx0TGlzdGVuZXIgPSBsaXN0ZW5lcjsKKworICAgIHNkLT5hcGktPmlucHV0X3BpY2tl
cl9jb2xvcl9yZXF1ZXN0KHNkLCByLCBnLCBiLCBhKTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwK
KyAqIFJlcXVlc3RzIHRvIGhpZGUgZXh0ZXJuYWwgY29sb3IgcGlja2VyLgorICovCit2b2lkIEV3
a1ZpZXdJbXBsOjpkaXNtaXNzQ29sb3JQaWNrZXIoKQoreworICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkID0gc21hcnREYXRhKCk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2Qt
PmFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX2Rpc21pc3MpOworCisgICAgY29sb3JQaWNrZXJSZXN1
bHRMaXN0ZW5lci5jbGVhcigpOworCisgICAgc2QtPmFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX2Rp
c21pc3Moc2QpOworfQorI2VuZGlmCisKKy8qKgorICogQGludGVybmFsCisgKiBSZXBvcnRzIHRo
YXQgdGhlIHZpZXcncyBiYWNrIC8gZm9yd2FyZCBsaXN0IGhhcyBjaGFuZ2VkLgorICoKKyAqIEVt
aXRzIHNpZ25hbDogImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLgorICovCit2b2lkIEV3a1Zp
ZXdJbXBsOjpyZXBvcnRCYWNrRm9yd2FyZExpc3RDaGFuZ2UoKQoreworICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiYmFjayxmb3J3YXJkLGxpc3QsY2hhbmdlZCIs
IDApOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBs
LmgKaW5kZXggZTlhMjk2NC4uYTA5YWMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCkBAIC0yOSwyMiArMjksMjMgQEAKICNpbmNsdWRlIDxF
dmFzLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKICNpbmNsdWRlIDxFdmFzX0dMLmg+CiAjZW5kaWYKIAotI2RlZmluZSBFV0tf
VklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICBFd2tWaWV3SW1wbCogcHJpdiA9IHNtYXJ0RGF0YS0+cHJpdgorI2Rl
ZmluZSBFV0tfVklFV19JTVBMX0dFVChzbWFydERhdGEsIHZpZXdJbXBsKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSBzbWFydERh
dGEtPnByaXYKIAotI2RlZmluZSBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCAuLi4pICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgRVdLX1ZJRVdfSU1Q
TF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgdmlld0ltcGwsIC4uLikgICAgICAgICAgICAgICAg
ICBcCiAgICAgaWYgKCFzbWFydERhdGEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBFSU5BX0xPR19DUklUKCJzbWFy
dCBkYXRhIGlzIG51bGwiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEVXS19W
SUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwgcHJpdik7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBFV0tfVklFV19JTVBMX0dFVChzbWFydERhdGEsIHZpZXdJbXBs
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICBpZiAoIXByaXYpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCF2aWV3SW1wbCkg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgICAgICBFSU5BX0xPR19DUklUKCJubyBwcml2YXRlIGRhdGEgZm9yIG9iamVjdCAl
cCAoJXMpIiwgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgIHNtYXJ0RGF0YS0+c2Vs
ZiwgZXZhc19vYmplY3RfdHlwZV9nZXQoc21hcnREYXRhLT5zZWxmKSk7ICAgICAgIFwKICAgICAg
ICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCkBAIC02NSwxNSArNjYsOTkgQEAgY2xhc3MgV2ViUGFnZVByb3h5
OwogY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmw7CiB9CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIEN1cnNvcjsKK2NsYXNzIEludFJlY3Q7CitjbGFzcyBJbnRTaXplOworfQorCiBjbGFz
cyBFd2tfQmFja19Gb3J3YXJkX0xpc3Q7CiBjbGFzcyBFd2tfQ29udGV4dDsKK2NsYXNzIEV3a19E
b3dubG9hZF9Kb2I7CitjbGFzcyBFd2tfRXJyb3I7CitjbGFzcyBFd2tfRm9ybV9TdWJtaXNzaW9u
X1JlcXVlc3Q7CitjbGFzcyBFd2tfSW50ZW50OworY2xhc3MgRXdrX0ludGVudF9TZXJ2aWNlOwor
Y2xhc3MgRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uOworY2xhc3MgRXdrX1Jlc291cmNl
OwogY2xhc3MgRXdrX1NldHRpbmdzOworY2xhc3MgRXdrX1VybF9SZXF1ZXN0OworY2xhc3MgRXdr
X1VybF9SZXNwb25zZTsKKwordHlwZWRlZiBzdHJ1Y3QgRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tf
Vmlld19TbWFydF9EYXRhOwogCiBjbGFzcyBFd2tWaWV3SW1wbCB7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgRXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcpOwogICAgIH5Fd2tWaWV3SW1wbCgp
OwogCisgICAgc3RhdGljIEV3a1ZpZXdJbXBsKiBmcm9tRXZhc09iamVjdChFdmFzX09iamVjdCog
dmlldyk7CisKKyAgICBpbmxpbmUgRXZhc19PYmplY3QqIHZpZXcoKSB7IHJldHVybiBtX3ZpZXc7
IH0KKyAgICBXS1BhZ2VSZWYgd2tQYWdlKCk7CisgICAgaW5saW5lIFdlYktpdDo6V2ViUGFnZVBy
b3h5KiBwYWdlKCkgeyByZXR1cm4gcGFnZVByb3h5LmdldCgpOyB9CisKKyAgICBXZWJDb3JlOjpJ
bnRTaXplIHNpemUoKSBjb25zdDsKKworICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6
OkN1cnNvciYgY3Vyc29yKTsKKyAgICB2b2lkIHJlZHJhd1JlZ2lvbihjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiByZWN0KTsKKyAgICB2b2lkIHNldEltYWdlRGF0YSh2b2lkKiBpbWFnZURhdGEsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOworCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQorICAgIHZvaWQgZW50ZXJGdWxsU2NyZWVuKCk7CisgICAgdm9pZCBleGl0RnVsbFNjcmVlbigp
OworI2VuZGlmCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgYm9vbCBj
cmVhdGVHTFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUpOworICAgIGJv
b2wgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOworICAgIGJvb2wgZXhpdEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7CisjZW5kaWYKKworI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQorICAgIHZvaWQgcmVxdWVzdENvbG9yUGlja2VyKGludCByLCBpbnQgZywgaW50IGIs
IGludCBhLCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIpOworICAgIHZv
aWQgZGlzbWlzc0NvbG9yUGlja2VyKCk7CisjZW5kaWYKKworICAgIHZvaWQgcmVwb3J0RG93bmxv
YWRKb2JDYW5jZWxsZWQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQpOworICAgIHZvaWQgcmVw
b3J0RG93bmxvYWRKb2JGYWlsZWQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQsIEV3a19FcnJv
ciogZXJyb3IpOworICAgIHZvaWQgcmVwb3J0RG93bmxvYWRKb2JGaW5pc2hlZChFd2tfRG93bmxv
YWRfSm9iKiBkb3dubG9hZCk7CisgICAgdm9pZCByZXBvcnREb3dubG9hZEpvYlJlcXVlc3RlZChF
d2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCk7CisKKyAgICB2b2lkIHJlcG9ydE5ld0Zvcm1TdWJt
aXNzaW9uUmVxdWVzdChFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3QqIHJlcXVlc3QpOworICAg
IHZvaWQgcmVwb3J0TG9hZEVycm9yKEV3a19FcnJvciogZXJyb3IpOworICAgIHZvaWQgcmVwb3J0
TG9hZEZpbmlzaGVkKCk7CisgICAgdm9pZCByZXBvcnRMb2FkUHJvZ3Jlc3MoZG91YmxlIHByb2dy
ZXNzKTsKKyAgICB2b2lkIHJlcG9ydFByb3Zpc2lvbmFsTG9hZEZhaWxlZChFd2tfRXJyb3IqIGVy
cm9yKTsKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICB2b2lkIHJlcG9ydExvYWRD
b21taXR0ZWQoKTsKKyNlbmRpZgorICAgIHZvaWQgcmVwb3J0UHJvdmlzaW9uYWxMb2FkUmVkaXJl
Y3QoKTsKKyAgICB2b2lkIHJlcG9ydFByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKTsKKworICAgIHZv
aWQgcmVwb3J0UmVzb3VyY2VMb2FkU3RhcnRlZChFd2tfUmVzb3VyY2UqIHJlc291cmNlLCBFd2tf
VXJsX1JlcXVlc3QqIHJlcXVlc3QpOworICAgIHZvaWQgcmVwb3J0UmVzb3VyY2VMb2FkUmVzcG9u
c2UoRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpOwor
ICAgIHZvaWQgcmVwb3J0UmVzb3VyY2VMb2FkRmFpbGVkKEV3a19SZXNvdXJjZSogcmVzb3VyY2Us
IEV3a19FcnJvciogZXJyb3IpOworICAgIHZvaWQgcmVwb3J0UmVzb3VyY2VMb2FkRmluaXNoZWQo
RXdrX1Jlc291cmNlKiByZXNvdXJjZSk7CisgICAgdm9pZCByZXBvcnRSZXNvdXJjZVJlcXVlc3RT
ZW50KEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCwgRXdr
X1VybF9SZXNwb25zZSogcmVkaXJlY3RSZXNwb25zZSk7CisKKyAgICB2b2lkIHJlcG9ydE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbihFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGRlY2lz
aW9uKTsKKyAgICB2b2lkIHJlcG9ydE5ld1dpbmRvd1BvbGljeURlY2lzaW9uKEV3a19OYXZpZ2F0
aW9uX1BvbGljeV9EZWNpc2lvbiogZGVjaXNpb24pOworICAgIHZvaWQgcmVwb3J0QmFja0Zvcndh
cmRMaXN0Q2hhbmdlKCk7CisKKyAgICB2b2lkIHJlcG9ydFRpdGxlQ2hhbmdlKGNvbnN0IFN0cmlu
ZyYgdGl0bGUpOworICAgIHZvaWQgcmVwb3J0VG9vbHRpcFRleHRDaGFuZ2UoY29uc3QgU3RyaW5n
JiB0ZXh0KTsKKyAgICB2b2lkIHJlcG9ydFRleHRGb3VuZCh1bnNpZ25lZCBtYXRjaENvdW50KTsK
KyAgICB2b2lkIHJlcG9ydEljb25DaGFuZ2UoKTsKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
KyAgICB2b2lkIHJlcG9ydEludGVudFJlcXVlc3QoRXdrX0ludGVudCogZXdrSW50ZW50KTsKKyNl
bmRpZgorI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCisgICAgdm9pZCByZXBvcnRJbnRlbnRT
ZXJ2aWNlUmVnaXN0cmF0aW9uKEV3a19JbnRlbnRfU2VydmljZSogZXdrSW50ZW50U2VydmljZSk7
CisjZW5kaWYKKworICAgIC8vIEZJWE1FOiBNYWtlIG1lbWJlcnMgcHJpdmF0ZSBmb3IgZW5jYXBz
dWxhdGlvbi4KICAgICBPd25QdHI8V2ViS2l0OjpQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsK
ICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBPd25QdHI8V2ViS2l0OjpQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50RWZsPiBwYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50OwpA
QCAtMTIwLDYgKzIwNSw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSgpOworCiAgICAgRXZhc19PYmplY3QqIG1fdmlldzsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VD
bGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGll
bnRJbXBsLmNwcAppbmRleCA2MGJkODkzLi43OWVkZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKIAogI2luY2x1ZGUgIkRyYXdpbmdBcmVh
UHJveHlJbXBsLmgiCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKICNpbmNsdWRlICJOYXRpdmVX
ZWJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRl
ICJXZWJDb250ZXh0LmgiCkBAIC01MCw4ICs1MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBs
KEV2YXNfT2JqZWN0KiB2aWV3V2lkZ2V0KQotICAgIDogbV92aWV3V2lkZ2V0KHZpZXdXaWRnZXQp
CitQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQor
ICAgIDogbV92aWV3SW1wbCh2aWV3SW1wbCkKIHsKIH0KIApAQCAtNTksMTUgKzYwLDIwIEBAIFBh
Z2VDbGllbnRJbXBsOjp+UGFnZUNsaWVudEltcGwoKQogewogfQogCitFd2tWaWV3SW1wbCogUGFn
ZUNsaWVudEltcGw6OnZpZXdJbXBsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV92aWV3SW1wbDsK
K30KKwogLy8gUGFnZUNsaWVudAogUGFzc093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpCiB7Ci0gICAgcmV0dXJuIERyYXdpbmdB
cmVhUHJveHlJbXBsOjpjcmVhdGUoZXdrX3ZpZXdfcGFnZV9nZXQobV92aWV3V2lkZ2V0KSk7Cisg
ICAgcmV0dXJuIERyYXdpbmdBcmVhUHJveHlJbXBsOjpjcmVhdGUobV92aWV3SW1wbC0+cGFnZSgp
KTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogewotICAgIGV3a192aWV3X2Rpc3BsYXkobV92aWV3V2lk
Z2V0LCByZWN0KTsKKyAgICBtX3ZpZXdJbXBsLT5yZWRyYXdSZWdpb24ocmVjdCk7CiB9CiAKIHZv
aWQgUGFnZUNsaWVudEltcGw6OmRpc3BsYXlWaWV3KCkKQEAgLTgyLDcgKzg4LDcgQEAgdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2Nyb2xsVmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxS
ZWN0LCBjb25zdCBXZWJDb3IKIAogV2ViQ29yZTo6SW50U2l6ZSBQYWdlQ2xpZW50SW1wbDo6dmll
d1NpemUoKQogewotICAgIHJldHVybiBld2tfdmlld19zaXplX2dldChtX3ZpZXdXaWRnZXQpOwor
ICAgIHJldHVybiBtX3ZpZXdJbXBsLT5zaXplKCk7CiB9CiAKIGJvb2wgUGFnZUNsaWVudEltcGw6
OmlzVmlld1dpbmRvd0FjdGl2ZSgpCkBAIC05MywxMiArOTksMTIgQEAgYm9vbCBQYWdlQ2xpZW50
SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKCkKIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3
Rm9jdXNlZCgpCiB7Ci0gICAgcmV0dXJuIGV2YXNfb2JqZWN0X2ZvY3VzX2dldChtX3ZpZXdXaWRn
ZXQpOworICAgIHJldHVybiBldmFzX29iamVjdF9mb2N1c19nZXQobV92aWV3SW1wbC0+dmlldygp
KTsKIH0KIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSgpCiB7Ci0gICAgcmV0
dXJuIGV2YXNfb2JqZWN0X3Zpc2libGVfZ2V0KG1fdmlld1dpZGdldCk7CisgICAgcmV0dXJuIGV2
YXNfb2JqZWN0X3Zpc2libGVfZ2V0KG1fdmlld0ltcGwtPnZpZXcoKSk7CiB9CiAKIGJvb2wgUGFn
ZUNsaWVudEltcGw6OmlzVmlld0luV2luZG93KCkKQEAgLTExMCwxOCArMTE2LDE4IEBAIGJvb2wg
UGFnZUNsaWVudEltcGw6OmlzVmlld0luV2luZG93KCkKIHZvaWQgUGFnZUNsaWVudEltcGw6OnBy
b2Nlc3NEaWRDcmFzaCgpCiB7CiAgICAgLy8gQ2hlY2sgaWYgbG9hZGluZyB3YXMgb25nb2luZywg
d2hlbiB3ZWIgcHJvY2VzcyBjcmFzaGVkLgotICAgIGRvdWJsZSBsb2FkUHJvZ3Jlc3MgPSBld2tf
dmlld19sb2FkX3Byb2dyZXNzX2dldChtX3ZpZXdXaWRnZXQpOworICAgIGRvdWJsZSBsb2FkUHJv
Z3Jlc3MgPSBld2tfdmlld19sb2FkX3Byb2dyZXNzX2dldChtX3ZpZXdJbXBsLT52aWV3KCkpOwog
ICAgIGlmIChsb2FkUHJvZ3Jlc3MgPj0gMCAmJiBsb2FkUHJvZ3Jlc3MgPCAxKQotICAgICAgICBl
d2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5nZWQobV92aWV3V2lkZ2V0LCAxKTsKKyAgICAgICAg
bV92aWV3SW1wbC0+cmVwb3J0TG9hZFByb2dyZXNzKDEpOwogCi0gICAgZXdrX3ZpZXdfd2VicHJv
Y2Vzc19jcmFzaGVkKG1fdmlld1dpZGdldCk7CisgICAgZXdrX3ZpZXdfd2VicHJvY2Vzc19jcmFz
aGVkKG1fdmlld0ltcGwtPnZpZXcoKSk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFJl
bGF1bmNoUHJvY2VzcygpCiB7Ci0gICAgY29uc3QgY2hhciogdGhlbWVQYXRoID0gZXdrX3ZpZXdf
dGhlbWVfZ2V0KG1fdmlld1dpZGdldCk7CisgICAgY29uc3QgY2hhciogdGhlbWVQYXRoID0gZXdr
X3ZpZXdfdGhlbWVfZ2V0KG1fdmlld0ltcGwtPnZpZXcoKSk7CiAgICAgaWYgKHRoZW1lUGF0aCkK
LSAgICAgICAgZXdrX3ZpZXdfcGFnZV9nZXQobV92aWV3V2lkZ2V0KS0+c2V0VGhlbWVQYXRoKHRo
ZW1lUGF0aCk7CisgICAgICAgIG1fdmlld0ltcGwtPnBhZ2UoKS0+c2V0VGhlbWVQYXRoKHRoZW1l
UGF0aCk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQoKQpAQCAtMTMxLDEy
ICsxMzcsMTIgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3NlZCgpCiAKIHZvaWQgUGFn
ZUNsaWVudEltcGw6OnRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYg
bmV3VG9vbFRpcCkKIHsKLSAgICBld2tfdmlld190b29sdGlwX3RleHRfc2V0KG1fdmlld1dpZGdl
dCwgbmV3VG9vbFRpcC51dGY4KCkuZGF0YSgpKTsKKyAgICBtX3ZpZXdJbXBsLT5yZXBvcnRUb29s
dGlwVGV4dENoYW5nZShuZXdUb29sVGlwKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0
Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQogewotICAgIGV3a192aWV3X2N1cnNvcl9zZXQo
bV92aWV3V2lkZ2V0LCBjdXJzb3IpOworICAgIG1fdmlld0ltcGwtPnNldEN1cnNvcihjdXJzb3Ip
OwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92
ZXMoYm9vbCkKQEAgLTIxMSw3ICsyMTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkb25lV2l0
aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgLyp3YXNFdgogCiBQ
YXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBN
ZW51UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIHJldHVybiBXZWJQb3B1cE1lbnVQ
cm94eUVmbDo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSk7CisgICAgcmV0dXJuIFdlYlBvcHVw
TWVudVByb3h5RWZsOjpjcmVhdGUobV92aWV3SW1wbC0+dmlldygpLCBwYWdlKTsKIH0KIAogUGFz
c1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4
dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQpAQCAtMjM2LDEyICsyNDIsMTIgQEAgdm9pZCBQYWdl
Q2xpZW50SW1wbDo6c2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBi
b29sLCBib29sKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIHZvaWQgUGFnZUNs
aWVudEltcGw6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVl
Q29udGV4dCYpCiB7Ci0gICAgZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfbW9kZV9l
bnRlcihtX3ZpZXdXaWRnZXQpOworICAgIG1fdmlld0ltcGwtPmVudGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUoKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZXhpdEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKCkKIHsKLSAgICBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGlu
Z19tb2RlX2V4aXQobV92aWV3V2lkZ2V0KTsKKyAgICBtX3ZpZXdJbXBsLT5leGl0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6dXBkYXRlQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpCkBAIC0yOTMs
MTMgKzI5OSwxMyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpjb3VudFN0cmluZ01hdGNoZXNJbkN1
c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIEZpbgogCiB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjp1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpCiB7Ci0gICAgZXdrX3ZpZXdfdGV4dF9pbnB1dF9z
dGF0ZV91cGRhdGUobV92aWV3V2lkZ2V0KTsKKyAgICBld2tfdmlld190ZXh0X2lucHV0X3N0YXRl
X3VwZGF0ZShtX3ZpZXdJbXBsLT52aWV3KCkpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpo
YW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSogZG93bmxvYWQpCiB7Ci0gICAgRXdr
X0NvbnRleHQqIGNvbnRleHQgPSBld2tfdmlld19jb250ZXh0X2dldChtX3ZpZXdXaWRnZXQpOwot
ICAgIGNvbnRleHQtPmRvd25sb2FkTWFuYWdlcigpLT5yZWdpc3RlckRvd25sb2FkKGRvd25sb2Fk
LCBtX3ZpZXdXaWRnZXQpOworICAgIEV3a19Db250ZXh0KiBjb250ZXh0ID0gZXdrX3ZpZXdfY29u
dGV4dF9nZXQobV92aWV3SW1wbC0+dmlldygpKTsKKyAgICBjb250ZXh0LT5kb3dubG9hZE1hbmFn
ZXIoKS0+cmVnaXN0ZXJEb3dubG9hZChkb3dubG9hZCwgbV92aWV3SW1wbCk7CiB9CiAKICNpZiBV
U0UoVElMRURfQkFDS0lOR19TVE9SRSkKQEAgLTMxNCw3ICszMjAsNyBAQCB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6
ZSkKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBtX3BhZ2VWaWV3cG9ydENvbnRy
b2xsZXItPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKICNlbHNlCi0gICAgZXdrX3ZpZXdf
Y29udGVudHNfc2l6ZV9jaGFuZ2VkKG1fdmlld1dpZGdldCwgc2l6ZSk7CisgICAgZXdrX3ZpZXdf
Y29udGVudHNfc2l6ZV9jaGFuZ2VkKG1fdmlld0ltcGwtPnZpZXcoKSwgc2l6ZSk7CiAjZW5kaWYK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNs
aWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJ
bXBsLmgKaW5kZXggYzY0ZTEwNi4uNTIwY2E4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5oCkBAIC0zMCwyNSArMzAsMjcgQEAKICNp
bmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSA8RXZhcy5oPgogCitjbGFzcyBFd2tWaWV3
SW1wbDsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXI7CiAKIGNsYXNzIFBhZ2VDbGllbnRJbXBsIDogcHVibGljIFBhZ2VDbGllbnQgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBjcmVhdGUoRXZhc19PYmpl
Y3QqIHZpZXdXaWRnZXQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZUNsaWVudEltcGw+IGNy
ZWF0ZShFd2tWaWV3SW1wbCogdmlld0ltcGwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFBhZ2VDbGllbnRJbXBsKHZpZXdXaWRnZXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBQYWdlQ2xpZW50SW1wbCh2aWV3SW1wbCkpOwogICAgIH0KICAgICB+UGFnZUNsaWVu
dEltcGwoKTsKIAotICAgIEV2YXNfT2JqZWN0KiB2aWV3V2lkZ2V0KCkgY29uc3QgeyByZXR1cm4g
bV92aWV3V2lkZ2V0OyB9CisgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsKCkgY29uc3Q7CiAjaWYg
VVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgdm9pZCBzZXRQYWdlVmlld3BvcnRDb250cm9s
bGVyKFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIGNvbnRyb2xsZXIpIHsgbV9wYWdlVmlld3BvcnRD
b250cm9sbGVyID0gY29udHJvbGxlcjsgfQogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgUGFnZUNsaWVudEltcGwoRXZhc19PYmplY3QqKTsKKyAgICBleHBsaWNpdCBQYWdlQ2xpZW50
SW1wbChFd2tWaWV3SW1wbCopOwogCiAgICAgLy8gUGFnZUNsaWVudAogICAgIHZpcnR1YWwgUGFz
c093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCk7CkBAIC0x
MjUsNyArMTI3LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiBwcml2YXRlOgotICAgIEV2YXNfT2Jq
ZWN0KiBtX3ZpZXdXaWRnZXQ7CisgICAgRXdrVmlld0ltcGwqIG1fdmlld0ltcGw7CiAgICAgRGVm
YXVsdFVuZG9Db250cm9sbGVyIG1fdW5kb0NvbnRyb2xsZXI7CiAjaWYgVVNFKFRJTEVEX0JBQ0tJ
TkdfU1RPUkUpCiAgICAgUGFnZVZpZXdwb3J0Q29udHJvbGxlciogbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAppbmRleCA1ZWI2
NzZlLi45Y2E5YWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAKKyNpbmNs
dWRlICJFd2tWaWV3SW1wbC5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHku
aCIKICNpbmNsdWRlICJMYXllclRyZWVSZW5kZXJlci5oIgogI2luY2x1ZGUgIlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXIuaCIKQEAgLTM4LDggKzM5LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZs
OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3V2lkZ2V0
KQotICAgIDogbV92aWV3V2lkZ2V0KHZpZXdXaWRnZXQpCitQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsOjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKiB2
aWV3SW1wbCkKKyAgICA6IG1fdmlld0ltcGwodmlld0ltcGwpCiAgICAgLCBtX3NjYWxlRmFjdG9y
KDEpCiAgICAgLCBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIoMCkKIHsKQEAgLTUyLDcgKzUzLDcg
QEAgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6flBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmwoKQogCiBEcmF3aW5nQXJlYVByb3h5KiBQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsOjpkcmF3aW5nQXJlYSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGV3a192aWV3X3Bh
Z2VfZ2V0KG1fdmlld1dpZGdldCktPmRyYXdpbmdBcmVhKCk7CisgICAgcmV0dXJuIG1fdmlld0lt
cGwtPnBhZ2UoKS0+ZHJhd2luZ0FyZWEoKTsKIH0KIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsOjpzZXRSZW5kZXJlckFjdGl2ZShib29sIGFjdGl2ZSkKQEAgLTc2LDcgKzc3
LDcgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaXNwbGF5KGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFBvaW4KIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudEVmbDo6dXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6
ZSkKIHsKICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKLSAgICBld2tfdmlld19w
YWdlX2dldChtX3ZpZXdXaWRnZXQpLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKTsKKyAg
ICBtX3ZpZXdJbXBsLT5wYWdlKCktPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUpOwogICAg
IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlVmlld3BvcnRTaXplKHZpZXdwb3J0
U2l6ZSk7CiB9CiAKQEAgLTkxLDcgKzkyLDcgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2kKIHsK
ICAgICBtX2NvbnRlbnRzU2l6ZSA9IHNpemU7CiAgICAgSW50UmVjdCByZWN0ID0gSW50UmVjdChJ
bnRQb2ludCgpLCBtX3ZpZXdwb3J0U2l6ZSk7Ci0gICAgZXdrX3ZpZXdfZGlzcGxheShtX3ZpZXdX
aWRnZXQsIHJlY3QpOworICAgIG1fdmlld0ltcGwtPnJlZHJhd0FyZWEocmVjdCk7CiB9CiAKIHZv
aWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Vmlld3BvcnRQb3NpdGlvbihj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBjb250ZW50c1BvaW50KQpAQCAtMTE0LDcgKzExNSw3
IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkUmVzdW1lQ29udGVu
dCgpCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZENoYW5nZVZpc2li
bGVDb250ZW50cygpCiB7CiAgICAgSW50UmVjdCByZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBt
X3ZpZXdwb3J0U2l6ZSk7Ci0gICAgZXdrX3ZpZXdfZGlzcGxheShtX3ZpZXdXaWRnZXQsIHJlY3Qp
OworICAgIG1fdmlld0ltcGwtPnJlZHJhd0FyZWEocmVjdCk7CiB9CiAKIHZvaWQgUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaAppbmRleCBmNjEzOGY0Li45YTdiMzM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oCkBAIC0zMiwxMyArMzIsMTUgQEAK
ICNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KIAorY2xhc3MgRXdrVmlld0ltcGw7CisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsIDogcHVibGljIFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw+IGNyZWF0ZShFdmFzX09iamVjdCogdmll
d1dpZGdldCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50RWZsPiBjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsKHZpZXdXaWRn
ZXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsKHZpZXdJbXBsKSk7CiAgICAgfQogICAgIH5QYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsKCk7CiAKQEAgLTYzLDkgKzY1LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb250cm9sbGVyKFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqKTsKIAogcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0Kik7
CisgICAgZXhwbGljaXQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbChFd2tWaWV3SW1w
bCopOwogCi0gICAgRXZhc19PYmplY3QqIG1fdmlld1dpZGdldDsKKyAgICBFd2tWaWV3SW1wbCog
bV92aWV3SW1wbDsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fY29udGVudHNTaXplOwogICAgIFdl
YkNvcmU6OkludFNpemUgbV92aWV3cG9ydFNpemU7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9z
Y3JvbGxQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19kb3dubG9hZF9qb2IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2Rvd25sb2FkX2pvYi5jcHAKaW5kZXggN2RjM2ExNy4uY2ZlNmJiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5j
cHAKQEAgLTM2LDkgKzM2LDkgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotRXdrX0Rv
d25sb2FkX0pvYjo6RXdrX0Rvd25sb2FkX0pvYihXZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRvd25s
b2FkLCBFdmFzX09iamVjdCogZXdrVmlldykKK0V3a19Eb3dubG9hZF9Kb2I6OkV3a19Eb3dubG9h
ZF9Kb2IoV2ViS2l0OjpEb3dubG9hZFByb3h5KiBkb3dubG9hZCwgRXdrVmlld0ltcGwqIHZpZXdJ
bXBsKQogICAgIDogbV9kb3dubG9hZFByb3h5KGRvd25sb2FkKQotICAgICwgbV92aWV3KGV3a1Zp
ZXcpCisgICAgLCBtX3ZpZXdJbXBsKHZpZXdJbXBsKQogICAgICwgbV9zdGF0ZShFV0tfRE9XTkxP
QURfSk9CX1NUQVRFX05PVF9TVEFSVEVEKQogICAgICwgbV9zdGFydFRpbWUoLTEpCiAgICAgLCBt
X2VuZFRpbWUoLTEpCkBAIC03NSw5ICs3NSw5IEBAIHVpbnQ2NF90IEV3a19Eb3dubG9hZF9Kb2I6
OmlkKCkgY29uc3QKICAqIFJldHVybnMgdGhlIHZpZXcgdGhpcyBkb3dubG9hZCBpcyBhdHRhY2hl
ZCB0by4KICAqIFRoZSB2aWV3IGlzIG5lZWRlZCB0byBzZW5kIG5vdGlmaWNhdGlvbiBzaWduYWxz
LgogICovCi1FdmFzX09iamVjdCogRXdrX0Rvd25sb2FkX0pvYjo6dmlldygpIGNvbnN0CitFd2tW
aWV3SW1wbCogRXdrX0Rvd25sb2FkX0pvYjo6dmlld0ltcGwoKSBjb25zdAogewotICAgIHJldHVy
biBtX3ZpZXc7CisgICAgcmV0dXJuIG1fdmlld0ltcGw7CiB9CiAKIEV3a19Eb3dubG9hZF9Kb2Jf
U3RhdGUgZXdrX2Rvd25sb2FkX2pvYl9zdGF0ZV9nZXQoY29uc3QgRXdrX0Rvd25sb2FkX0pvYiog
ZG93bmxvYWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfZG93bmxvYWRfam9iX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5oCmluZGV4IDhiYTViYzMuLjAwZmM3NmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9q
b2JfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19k
b3dubG9hZF9qb2JfcHJpdmF0ZS5oCkBAIC0zOCwxNSArMzgsMTcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogfQogCitjbGFzcyBFd2tWaWV3SW1wbDsKKwogY2xh
c3MgRXdrX0Rvd25sb2FkX0pvYiA6IHB1YmxpYyBSZWZDb3VudGVkPEV3a19Eb3dubG9hZF9Kb2I+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tfRG93bmxvYWRfSm9iPiBjcmVh
dGUoV2ViS2l0OjpEb3dubG9hZFByb3h5KiBkb3dubG9hZCwgRXZhc19PYmplY3QqIGV3a1ZpZXcp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RXdrX0Rvd25sb2FkX0pvYj4gY3JlYXRlKFdlYktpdDo6
RG93bmxvYWRQcm94eSogZG93bmxvYWQsIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrX0Rvd25sb2FkX0pvYihkb3dubG9hZCwgZXdr
VmlldykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a19Eb3dubG9hZF9Kb2IoZG93
bmxvYWQsIHZpZXdJbXBsKSk7CiAgICAgfQogCiAgICAgdWludDY0X3QgaWQoKSBjb25zdDsKLSAg
ICBFdmFzX09iamVjdCogdmlldygpIGNvbnN0OworICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCgp
IGNvbnN0OwogCiAgICAgRXdrX0Rvd25sb2FkX0pvYl9TdGF0ZSBzdGF0ZSgpIGNvbnN0OwogICAg
IHZvaWQgc2V0U3RhdGUoRXdrX0Rvd25sb2FkX0pvYl9TdGF0ZSk7CkBAIC02OCwxMCArNzAsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgaW5jcmVtZW50UmVjZWl2ZWREYXRhKHVpbnQ2NF90IGxlbmd0
aCk7CiAKIHByaXZhdGU6Ci0gICAgRXdrX0Rvd25sb2FkX0pvYihXZWJLaXQ6OkRvd25sb2FkUHJv
eHkqIGRvd25sb2FkLCBFdmFzX09iamVjdCogZXdrVmlldyk7CisgICAgRXdrX0Rvd25sb2FkX0pv
YihXZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRvd25sb2FkLCBFd2tWaWV3SW1wbCogdmlld0ltcGwp
OwogCiAgICAgV2ViS2l0OjpEb3dubG9hZFByb3h5KiBtX2Rvd25sb2FkUHJveHk7Ci0gICAgRXZh
c19PYmplY3QqIG1fdmlldzsKKyAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKICAgICBFd2tf
RG93bmxvYWRfSm9iX1N0YXRlIG1fc3RhdGU7CiAgICAgbXV0YWJsZSBSZWZQdHI8RXdrX1VybF9S
ZXF1ZXN0PiBtX3JlcXVlc3Q7CiAgICAgUmVmUHRyPEV3a19VcmxfUmVzcG9uc2U+IG1fcmVzcG9u
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5k
ZXggMGQ3ODRjNy4uZWUwNDU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmNwcApAQCAtODUsMzIgKzg1LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIHN0YXRpYyBjb25zdCBjaGFyIEVXS19WSUVXX1RZUEVfU1RSW10gPSAiRVdLMl9WaWV3
IjsKIAotc3RhdGljIGNvbnN0IGludCBkZWZhdWx0Q3Vyc29yU2l6ZSA9IDE2OwotCi10eXBlZGVm
IEhhc2hNYXA8Y29uc3QgV2ViUGFnZVByb3h5KiwgY29uc3QgRXZhc19PYmplY3QqPiBQYWdlVmll
d01hcDsKLQotc3RhdGljIGlubGluZSBQYWdlVmlld01hcCYgcGFnZVZpZXdNYXAoKQotewotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoUGFnZVZpZXdNYXAsIG1hcCwgKCkpOwotICAgIHJldHVybiBt
YXA7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUb1BhZ2VWaWV3TWFwKGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQotewotICAgIEFTU0VSVChld2tWaWV3KTsKLSAgICBBU1NFUlQoZXdr
X3ZpZXdfcGFnZV9nZXQoZXdrVmlldykpOwotICAgIFBhZ2VWaWV3TWFwOjpBZGRSZXN1bHQgcmVz
dWx0ID0gcGFnZVZpZXdNYXAoKS5hZGQoZXdrX3ZpZXdfcGFnZV9nZXQoZXdrVmlldyksIGV3a1Zp
ZXcpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgdm9pZCByZW1vdmVGcm9tUGFnZVZpZXdNYXAoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCi17Ci0gICAgQVNTRVJUKGV3a1ZpZXcpOwotICAgIEFTU0VSVChld2tfdmll
d19wYWdlX2dldChld2tWaWV3KSk7Ci0gICAgQVNTRVJUKHBhZ2VWaWV3TWFwKCkuY29udGFpbnMo
ZXdrX3ZpZXdfcGFnZV9nZXQoZXdrVmlldykpKTsKLSAgICBwYWdlVmlld01hcCgpLnJlbW92ZShl
d2tfdmlld19wYWdlX2dldChld2tWaWV3KSk7Ci19Ci0KICNkZWZpbmUgRVdLX1ZJRVdfVFlQRV9D
SEVDSyhld2tWaWV3LCByZXN1bHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgYm9vbCByZXN1bHQgPSB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE2
MSw2ICsxMzUsMzIgQEAgc3RhdGljIGlubGluZSB2b2lkIHJlbW92ZUZyb21QYWdlVmlld01hcChj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldykKICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
fSB3aGlsZSAoMCkKIAordHlwZWRlZiBIYXNoTWFwPGNvbnN0IFdlYlBhZ2VQcm94eSosIGNvbnN0
IEV2YXNfT2JqZWN0Kj4gUGFnZVZpZXdNYXA7CisKK3N0YXRpYyBpbmxpbmUgUGFnZVZpZXdNYXAm
IHBhZ2VWaWV3TWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFBhZ2VWaWV3TWFwLCBt
YXAsICgpKTsKKyAgICByZXR1cm4gbWFwOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYWRkVG9Q
YWdlVmlld01hcChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfSU1QTF9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgdmlld0ltcGwpOworCisgICAgUGFnZVZpZXdNYXA6OkFk
ZFJlc3VsdCByZXN1bHQgPSBwYWdlVmlld01hcCgpLmFkZCh2aWV3SW1wbC0+cGFnZSgpLCBld2tW
aWV3KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQor
CitzdGF0aWMgaW5saW5lIHZvaWQgcmVtb3ZlRnJvbVBhZ2VWaWV3TWFwKGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCB2
aWV3SW1wbCk7CisKKyAgICBBU1NFUlQocGFnZVZpZXdNYXAoKS5jb250YWlucyh2aWV3SW1wbC0+
cGFnZSgpKSk7CisgICAgcGFnZVZpZXdNYXAoKS5yZW1vdmUodmlld0ltcGwtPnBhZ2UoKSk7Cit9
CisKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNtYXJ0RGF0YSkKIHsKICAgICBpZiAoc21hcnREYXRhLT5jaGFuZ2VkLmFueSkKQEAgLTE3
MiwyOCArMTcyLDMwIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mYXZp
Y29uX2NoYW5nZWQoY29uc3QgY2hhciogcGFnZVVSTCwgdm9pZCogZXZlbnRJbmZvKQogewogICAg
IEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gc3RhdGljX2Nhc3Q8RXZhc19PYmplY3QqPihldmVudElu
Zm8pOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsK
KyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCB2aWV3SW1wbCk7CiAK
LSAgICBjb25zdCBjaGFyKiB2aWV3X3VybCA9IGV3a192aWV3X3VybF9nZXQoZXdrVmlldyk7Ci0g
ICAgaWYgKCF2aWV3X3VybCB8fCBzdHJjYXNlY21wKHZpZXdfdXJsLCBwYWdlVVJMKSkKKyAgICBj
b25zdCBjaGFyKiB2aWV3VVJMID0gZXdrX3ZpZXdfdXJsX2dldChld2tWaWV3KTsKKyAgICBpZiAo
IXZpZXdVUkwgfHwgc3RyY2FzZWNtcCh2aWV3VVJMLCBwYWdlVVJMKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZXdrX3ZpZXdfdXBkYXRlX2ljb24oZXdrVmlldyk7CisgICAgdmlld0ltcGwtPnJl
cG9ydEljb25DaGFuZ2UoKTsKIH0KIAogLy8gRGVmYXVsdCBFdmVudCBIYW5kbGluZy4KIHN0YXRp
YyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0YSkKIHsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgdmlld0ltcGwsIGZhbHNlKTsKIAotICAgIHByaXYtPnBhZ2VQcm94eS0+dmlld1N0YXRlRGlk
Q2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNlZCB8IFdlYlBhZ2VQcm94eTo6Vmlld1dp
bmRvd0lzQWN0aXZlKTsKKyAgICB2aWV3SW1wbC0+cGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFu
Z2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkIHwgV2ViUGFnZVByb3h5OjpWaWV3V2luZG93
SXNBY3RpdmUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgRWluYV9Cb29sIF9ld2tf
dmlld19zbWFydF9mb2N1c19vdXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogewot
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsK
KyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCB2aWV3SW1wbCwgZmFs
c2UpOwogCi0gICAgcHJpdi0+cGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVBy
b3h5OjpWaWV3SXNGb2N1c2VkIHwgV2ViUGFnZVByb3h5OjpWaWV3V2luZG93SXNBY3RpdmUpOwor
ICAgIHZpZXdJbXBsLT5wYWdlUHJveHktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6
OlZpZXdJc0ZvY3VzZWQgfCBXZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTIwMSw5OSArMjAzLDk5IEBAIHN0YXRpYyBFaW5hX0Jvb2wg
X2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEp
CiBzdGF0aWMgRXZhc19Db29yZF9Qb2ludCBtYXBUb1dlYkNvbnRlbnQoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcnREYXRhLCBFdmFzX0Nvb3JkX1BvaW50IHBvaW50KQogewogICAgIEV2YXNfQ29v
cmRfUG9pbnQgcmVzdWx0OwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIHJlc3VsdCk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgdmlld0ltcGwsIHJlc3VsdCk7CiAKLSAgICByZXN1bHQueCA9IChwb2ludC54ICAtIHNt
YXJ0RGF0YS0+dmlldy54KSAvIHByaXYtPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNj
YWxlRmFjdG9yKCkgKyBzbWFydERhdGEtPnZpZXcueCArIHByaXYtPnBhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnQtPnNjcm9sbFBvc2l0aW9uKCkueCgpOwotICAgIHJlc3VsdC55ID0gKHBvaW50
LnkgLSBzbWFydERhdGEtPnZpZXcueSkgLyBwcml2LT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50LT5zY2FsZUZhY3RvcigpICsgc21hcnREYXRhLT52aWV3LnkgKyBwcml2LT5wYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50LT5zY3JvbGxQb3NpdGlvbigpLnkoKTsKKyAgICByZXN1bHQueCA9
IChwb2ludC54ICAtIHNtYXJ0RGF0YS0+dmlldy54KSAvIHZpZXdJbXBsLT5wYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50LT5zY2FsZUZhY3RvcigpICsgc21hcnREYXRhLT52aWV3LnggKyB2aWV3
SW1wbC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+c2Nyb2xsUG9zaXRpb24oKS54KCk7
CisgICAgcmVzdWx0LnkgPSAocG9pbnQueSAtIHNtYXJ0RGF0YS0+dmlldy55KSAvIHZpZXdJbXBs
LT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LT5zY2FsZUZhY3RvcigpICsgc21hcnREYXRh
LT52aWV3LnkgKyB2aWV3SW1wbC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+c2Nyb2xs
UG9zaXRpb24oKS55KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZgogCiBzdGF0aWMg
RWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbChFd2tfVmlld19TbWFydF9EYXRh
KiBzbWFydERhdGEsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIHdoZWVsRXZlbnQpCiB7
Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2Up
OworICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHZpZXdJbXBsLCBm
YWxzZSk7CiAKICAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NtYXJ0RGF0YS0+dmlldy54LCBz
bWFydERhdGEtPnZpZXcueX07CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgRXZh
c19FdmVudF9Nb3VzZV9XaGVlbCBldmVudCgqd2hlZWxFdmVudCk7CiAgICAgZXZlbnQuY2FudmFz
ID0gbWFwVG9XZWJDb250ZW50KHNtYXJ0RGF0YSwgZXZlbnQuY2FudmFzKTsKLSAgICBwcml2LT5w
YWdlUHJveHktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudCgmZXZlbnQsICZw
b3NpdGlvbikpOworICAgIHZpZXdJbXBsLT5wYWdlUHJveHktPmhhbmRsZVdoZWVsRXZlbnQoTmF0
aXZlV2ViV2hlZWxFdmVudCgmZXZlbnQsICZwb3NpdGlvbikpOwogI2Vsc2UKLSAgICBwcml2LT5w
YWdlUHJveHktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudCh3aGVlbEV2ZW50
LCAmcG9zaXRpb24pKTsKKyAgICB2aWV3SW1wbC0+cGFnZVByb3h5LT5oYW5kbGVXaGVlbEV2ZW50
KE5hdGl2ZVdlYldoZWVsRXZlbnQod2hlZWxFdmVudCwgJnBvc2l0aW9uKSk7CiAjZW5kaWYKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91
c2VfZG93bihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IEV2YXNfRXZlbnRf
TW91c2VfRG93biogZG93bkV2ZW50KQogewotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCB2aWV3SW1wbCwgZmFsc2UpOwogCiAgICAgRXZhc19Qb2ludCBwb3NpdGlv
biA9IHtzbWFydERhdGEtPnZpZXcueCwgc21hcnREYXRhLT52aWV3Lnl9OwogI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQogICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biBldmVudCgqZG93bkV2
ZW50KTsKICAgICBldmVudC5jYW52YXMgPSBtYXBUb1dlYkNvbnRlbnQoc21hcnREYXRhLCBldmVu
dC5jYW52YXMpOwotICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVX
ZWJNb3VzZUV2ZW50KCZldmVudCwgJnBvc2l0aW9uKSk7CisgICAgdmlld0ltcGwtPnBhZ2VQcm94
eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KCZldmVudCwgJnBvc2l0aW9u
KSk7CiAjZWxzZQotICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVX
ZWJNb3VzZUV2ZW50KGRvd25FdmVudCwgJnBvc2l0aW9uKSk7CisgICAgdmlld0ltcGwtPnBhZ2VQ
cm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGRvd25FdmVudCwgJnBv
c2l0aW9uKSk7CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIEVpbmFfQm9v
bCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRh
LCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiB1cEV2ZW50KQogewotICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFV0tfVklFV19J
TVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCB2aWV3SW1wbCwgZmFsc2UpOwogCiAgICAgRXZh
c19Qb2ludCBwb3NpdGlvbiA9IHtzbWFydERhdGEtPnZpZXcueCwgc21hcnREYXRhLT52aWV3Lnl9
OwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIEV2YXNfRXZlbnRfTW91c2VfVXAg
ZXZlbnQoKnVwRXZlbnQpOwogICAgIGV2ZW50LmNhbnZhcyA9IG1hcFRvV2ViQ29udGVudChzbWFy
dERhdGEsIGV2ZW50LmNhbnZhcyk7Ci0gICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2
ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24pKTsKKyAgICB2aWV3SW1w
bC0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoJmV2ZW50
LCAmcG9zaXRpb24pKTsKICNlbHNlCi0gICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2
ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQodXBFdmVudCwgJnBvc2l0aW9uKSk7CisgICAgdmlld0lt
cGwtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KHVwRXZl
bnQsICZwb3NpdGlvbikpOwogI2VuZGlmCiAKLSAgICBpZiAocHJpdi0+aW1mQ29udGV4dCkKLSAg
ICAgICAgZWNvcmVfaW1mX2NvbnRleHRfcmVzZXQocHJpdi0+aW1mQ29udGV4dCk7CisgICAgaWYg
KHZpZXdJbXBsLT5pbWZDb250ZXh0KQorICAgICAgICBlY29yZV9pbWZfY29udGV4dF9yZXNldCh2
aWV3SW1wbC0+aW1mQ29udGV4dCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZShFd2tfVmlld19TbWFydF9EYXRhKiBz
bWFydERhdGEsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogbW92ZUV2ZW50KQogewotICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAg
ICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCB2aWV3SW1wbCwgZmFsc2Up
OwogCiAgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzbWFydERhdGEtPnZpZXcueCwgc21hcnRE
YXRhLT52aWV3Lnl9OwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIEV2YXNfRXZl
bnRfTW91c2VfTW92ZSBldmVudCgqbW92ZUV2ZW50KTsKICAgICBldmVudC5jdXIuY2FudmFzID0g
bWFwVG9XZWJDb250ZW50KHNtYXJ0RGF0YSwgZXZlbnQuY3VyLmNhbnZhcyk7Ci0gICAgcHJpdi0+
cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoJmV2ZW50LCAm
cG9zaXRpb24pKTsKKyAgICB2aWV3SW1wbC0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5h
dGl2ZVdlYk1vdXNlRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24pKTsKICNlbHNlCi0gICAgcHJpdi0+
cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQobW92ZUV2ZW50
LCAmcG9zaXRpb24pKTsKKyAgICB2aWV3SW1wbC0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50
KE5hdGl2ZVdlYk1vdXNlRXZlbnQobW92ZUV2ZW50LCAmcG9zaXRpb24pKTsKICNlbmRpZgogICAg
IHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9rZXlf
ZG93bihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IEV2YXNfRXZlbnRfS2V5
X0Rvd24qIGRvd25FdmVudCkKIHsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgdmlld0ltcGwsIGZhbHNlKTsKIAogICAgIGJvb2wgaXNGaWx0ZXJlZCA9IGZhbHNl
OwotICAgIGlmIChwcml2LT5pbWZDb250ZXh0KSB7CisgICAgaWYgKHZpZXdJbXBsLT5pbWZDb250
ZXh0KSB7CiAgICAgICAgIEVjb3JlX0lNRl9FdmVudCBpbWZFdmVudDsKICAgICAgICAgZWNvcmVf
aW1mX2V2YXNfZXZlbnRfa2V5X2Rvd25fd3JhcChjb25zdF9jYXN0PEV2YXNfRXZlbnRfS2V5X0Rv
d24qPihkb3duRXZlbnQpLCAmaW1mRXZlbnQua2V5X2Rvd24pOwogCi0gICAgICAgIGlzRmlsdGVy
ZWQgPSBlY29yZV9pbWZfY29udGV4dF9maWx0ZXJfZXZlbnQocHJpdi0+aW1mQ29udGV4dCwgRUNP
UkVfSU1GX0VWRU5UX0tFWV9ET1dOLCAmaW1mRXZlbnQpOworICAgICAgICBpc0ZpbHRlcmVkID0g
ZWNvcmVfaW1mX2NvbnRleHRfZmlsdGVyX2V2ZW50KHZpZXdJbXBsLT5pbWZDb250ZXh0LCBFQ09S
RV9JTUZfRVZFTlRfS0VZX0RPV04sICZpbWZFdmVudCk7CiAgICAgfQogCi0gICAgcHJpdi0+cGFn
ZVByb3h5LT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoZG93bkV2
ZW50LCBpc0ZpbHRlcmVkKSk7CisgICAgdmlld0ltcGwtPnBhZ2VQcm94eS0+aGFuZGxlS2V5Ym9h
cmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGRvd25FdmVudCwgaXNGaWx0ZXJlZCkpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9r
ZXlfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X0tl
eV9VcCogdXBFdmVudCkKIHsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgdmlld0ltcGwsIGZhbHNlKTsKIAotICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlS2V5
Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KHVwRXZlbnQpKTsKKyAgICB2aWV3SW1w
bC0+cGFnZVByb3h5LT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQo
dXBFdmVudCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNzEsMTkgKzM3MywxOSBAQCBz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X3VwKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09i
amVjdCosIHZvaWQqIGV2ZW50SW5mbwogc3RhdGljIHZvaWQgX2V3a192aWV3X29uX3Nob3codm9p
ZCogZGF0YSwgRXZhcyosIEV2YXNfT2JqZWN0Kiwgdm9pZCogLypldmVudEluZm8qLykKIHsKICAg
ICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19T
bWFydF9EYXRhKj4oZGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdik7Ci0gICAgcHJpdi0+cGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2Vi
UGFnZVByb3h5OjpWaWV3SXNWaXNpYmxlKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCB2aWV3SW1wbCk7CisgICAgdmlld0ltcGwtPnBhZ2VQcm94eS0+dmlld1N0
YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzVmlzaWJsZSk7CiB9CiAKIHN0YXRpYyB2
b2lkIF9ld2tfdmlld19vbl9oaWRlKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZv
aWQqIC8qZXZlbnRJbmZvKi8pCiB7CiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRh
ID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwotICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworICAgIEVXS19WSUVXX0lNUExf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHZpZXdJbXBsKTsKIAogICAgIC8vIFRoaXMgY2FsbCBt
YXkgbG9vayB3cm9uZywgYnV0IHdlIHJlYWxseSBuZWVkIHRvIHBhc3MgVmlld0lzVmlzaWJsZSBo
ZXJlLgogICAgIC8vIHZpZXdTdGF0ZURpZENoYW5nZSgpIGl0c2VsZiBpcyByZXNwb25zaWJsZSBm
b3IgYWN0dWFsbHkgc2V0dGluZyB0aGUgdmlzaWJpbGl0eSB0byBWaXNpYmxlIG9yIEhpZGRlbgog
ICAgIC8vIGRlcGVuZGluZyBvbiB3aGF0IFdlYlBhZ2VQcm94eTo6aXNWaWV3VmlzaWJsZSgpIHJl
dHVybnMsIHRoaXMgc2ltcGx5IHRyaWdnZXJzIHRoZSBwcm9jZXNzLgotICAgIHByaXYtPnBhZ2VQ
cm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzVmlzaWJsZSk7Cisg
ICAgdmlld0ltcGwtPnBhZ2VQcm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6
Vmlld0lzVmlzaWJsZSk7CiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpAQCAtNDI5LDEz
ICs0MzEsMTMgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX3RvdWNoX21vdmUodm9pZCogLyog
ZGF0YSAqLywgRXZhcyogLyogY2FudmFzICovLCBFdmFzX08KIAogc3RhdGljIEV2YXNfU21hcnRf
Q2xhc3MgZ19wYXJlbnRTbWFydENsYXNzID0gRVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7CiAK
LXN0YXRpYyB2b2lkIF9ld2tfdmlld19wcml2X2RlbChFd2tWaWV3SW1wbCogcHJpdikKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19pbXBsX2RlbChFd2tWaWV3SW1wbCogdmlld0ltcGwpCiB7CiAgICAg
LyogVW5yZWdpc3RlciBpY29uIGNoYW5nZSBjYWxsYmFjayAqLwotICAgIEV3a19GYXZpY29uX0Rh
dGFiYXNlKiBpY29uRGF0YWJhc2UgPSBwcml2LT5jb250ZXh0LT5mYXZpY29uRGF0YWJhc2UoKTsK
KyAgICBFd2tfRmF2aWNvbl9EYXRhYmFzZSogaWNvbkRhdGFiYXNlID0gdmlld0ltcGwtPmNvbnRl
eHQtPmZhdmljb25EYXRhYmFzZSgpOwogICAgIGljb25EYXRhYmFzZS0+dW53YXRjaENoYW5nZXMo
X2V3a192aWV3X29uX2Zhdmljb25fY2hhbmdlZCk7CiAKLSAgICBkZWxldGUgcHJpdjsKKyAgICBk
ZWxldGUgdmlld0ltcGw7CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGQoRXZh
c19PYmplY3QqIGV3a1ZpZXcpCkBAIC00OTIsNyArNDk0LDcgQEAgc3RhdGljIHZvaWQgX2V3a192
aWV3X3NtYXJ0X2RlbChFdmFzX09iamVjdCogZXdrVmlldykKICAgICByZW1vdmVGcm9tUGFnZVZp
ZXdNYXAoZXdrVmlldyk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7
CiAgICAgaWYgKHNtYXJ0RGF0YSAmJiBzbWFydERhdGEtPnByaXYpCi0gICAgICAgIF9ld2tfdmll
d19wcml2X2RlbChzbWFydERhdGEtPnByaXYpOworICAgICAgICBfZXdrX3ZpZXdfaW1wbF9kZWwo
c21hcnREYXRhLT5wcml2KTsKIAogICAgIGdfcGFyZW50U21hcnRDbGFzcy5kZWwoZXdrVmlldyk7
CiB9CkBAIC01MTcsMTAyICs1MTksMTAgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X21v
dmUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQgLyp4Ki8sIEV2YXNfQ28KICAgICBf
ZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChzbWFydERhdGEpOwogfQogCi1JbnRTaXplIGV3a192aWV3
X3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIGludCB3aWR0aCwg
aGVpZ2h0OwotICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChld2tWaWV3LCAwLCAwLCAmd2lk
dGgsICZoZWlnaHQpOwotICAgIHJldHVybiBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwotfQotCi0j
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotc3RhdGljIGJvb2wgZXdrX3ZpZXdfY3Jl
YXRlX2dsX3N1cmZhY2UoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEludFNpemUm
IHZpZXdTaXplKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdiwgZmFsc2UpOwotCi0gICAgRXZhc19HTF9Db25maWcgZXZhc0dsQ29uZmlnID0gewot
ICAgICAgICBFVkFTX0dMX1JHQkFfODg4OCwKLSAgICAgICAgRVZBU19HTF9ERVBUSF9CSVRfOCwK
LSAgICAgICAgRVZBU19HTF9TVEVOQ0lMX05PTkUsCi0gICAgICAgIEVWQVNfR0xfT1BUSU9OU19O
T05FLAotICAgICAgICBFVkFTX0dMX01VTFRJU0FNUExFX05PTkUKLSAgICB9OwotCi0gICAgQVNT
RVJUKCFwcml2LT5ldmFzR2xTdXJmYWNlKTsKLSAgICBwcml2LT5ldmFzR2xTdXJmYWNlID0gZXZh
c19nbF9zdXJmYWNlX2NyZWF0ZShwcml2LT5ldmFzR2wsICZldmFzR2xDb25maWcsIHZpZXdTaXpl
LndpZHRoKCksIHZpZXdTaXplLmhlaWdodCgpKTsKLSAgICBpZiAoIXByaXYtPmV2YXNHbFN1cmZh
Y2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEV2YXNfTmF0aXZlX1N1cmZhY2UgbmF0
aXZlU3VyZmFjZTsKLSAgICBldmFzX2dsX25hdGl2ZV9zdXJmYWNlX2dldChwcml2LT5ldmFzR2ws
IHByaXYtPmV2YXNHbFN1cmZhY2UsICZuYXRpdmVTdXJmYWNlKTsKLSAgICBldmFzX29iamVjdF9p
bWFnZV9uYXRpdmVfc3VyZmFjZV9zZXQoc21hcnREYXRhLT5pbWFnZSwgJm5hdGl2ZVN1cmZhY2Up
OwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29t
cG9zaXRpbmdfbW9kZV9lbnRlcihjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLQot
ICAgIGlmIChwcml2LT5ldmFzR2wpIHsKLSAgICAgICAgRUlOQV9MT0dfRE9NX1dBUk4oX2V3a19s
b2dfZG9tLCAiQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgbW9kZSBhbHJlYWR5IGVudGVyZWQuIik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBFdmFzKiBldmFzID0gZXZhc19v
YmplY3RfZXZhc19nZXQoZXdrVmlldyk7Ci0gICAgcHJpdi0+ZXZhc0dsID0gZXZhc19nbF9uZXco
ZXZhcyk7Ci0gICAgaWYgKCFwcml2LT5ldmFzR2wpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHByaXYtPmV2YXNHbENvbnRleHQgPSBldmFzX2dsX2NvbnRleHRfY3JlYXRlKHByaXYtPmV2
YXNHbCwgMCk7Ci0gICAgaWYgKCFwcml2LT5ldmFzR2xDb250ZXh0KSB7Ci0gICAgICAgIGV2YXNf
Z2xfZnJlZShwcml2LT5ldmFzR2wpOwotICAgICAgICBwcml2LT5ldmFzR2wgPSAwOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCFld2tfdmlld19jcmVhdGVfZ2xfc3Vy
ZmFjZShld2tWaWV3LCBld2tfdmlld19zaXplX2dldChld2tWaWV3KSkpIHsKLSAgICAgICAgZXZh
c19nbF9jb250ZXh0X2Rlc3Ryb3kocHJpdi0+ZXZhc0dsLCBwcml2LT5ldmFzR2xDb250ZXh0KTsK
LSAgICAgICAgcHJpdi0+ZXZhc0dsQ29udGV4dCA9IDA7Ci0KLSAgICAgICAgZXZhc19nbF9mcmVl
KHByaXYtPmV2YXNHbCk7Ci0gICAgICAgIHByaXYtPmV2YXNHbCA9IDA7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBwcml2LT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
LT5zZXRSZW5kZXJlckFjdGl2ZSh0cnVlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBl
d2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2LCBmYWxzZSk7Ci0KLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
cHJpdi0+ZXZhc0dsLCBmYWxzZSk7Ci0KLSAgICBpZiAocHJpdi0+ZXZhc0dsU3VyZmFjZSkgewot
ICAgICAgICBldmFzX2dsX3N1cmZhY2VfZGVzdHJveShwcml2LT5ldmFzR2wsIHByaXYtPmV2YXNH
bFN1cmZhY2UpOwotICAgICAgICBwcml2LT5ldmFzR2xTdXJmYWNlID0gMDsKLSAgICB9Ci0KLSAg
ICBpZiAocHJpdi0+ZXZhc0dsQ29udGV4dCkgewotICAgICAgICBldmFzX2dsX2NvbnRleHRfZGVz
dHJveShwcml2LT5ldmFzR2wsIHByaXYtPmV2YXNHbENvbnRleHQpOwotICAgICAgICBwcml2LT5l
dmFzR2xDb250ZXh0ID0gMDsKLSAgICB9Ci0KLSAgICBldmFzX2dsX2ZyZWUocHJpdi0+ZXZhc0ds
KTsKLSAgICBwcml2LT5ldmFzR2wgPSAwOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYK
LQogc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCogZXdr
VmlldykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7Cisg
ICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgdmlld0ltcGwpOwogCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGJvb2wgbmVlZHNOZXdTdXJmYWNl
ID0gZmFsc2U7CkBAIC02MjUsMTQgKzUzNSwxNCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21h
cnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiAgICAgaWYgKHNtYXJ0RGF0YS0+
Y2hhbmdlZC5zaXplKSB7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgICAgICBw
cml2LT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LT51cGRhdGVWaWV3cG9ydFNpemUoSW50
U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CisgICAgICAgIHZpZXdJbXBsLT5wYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50LT51cGRhdGVWaWV3cG9ydFNpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7
CiAjZW5kaWYKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgICAgIG5lZWRz
TmV3U3VyZmFjZSA9IHByaXYtPmV2YXNHbFN1cmZhY2U7CisgICAgICAgIG5lZWRzTmV3U3VyZmFj
ZSA9IHZpZXdJbXBsLT5ldmFzR2xTdXJmYWNlOwogI2VuZGlmCiAKLSAgICAgICAgaWYgKHByaXYt
PnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKSkKLSAgICAgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+
ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpLCBJbnRTaXplKCkp
OworICAgICAgICBpZiAodmlld0ltcGwtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKSkKKyAgICAg
ICAgICAgIHZpZXdJbXBsLT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNldFNpemUoSW50U2l6
ZSh3aWR0aCwgaGVpZ2h0KSwgSW50U2l6ZSgpKTsKIAogICAgICAgICBzbWFydERhdGEtPnZpZXcu
dyA9IHdpZHRoOwogICAgICAgICBzbWFydERhdGEtPnZpZXcuaCA9IGhlaWdodDsKQEAgLTY0OCw5
ICs1NTgsOSBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlm
IChuZWVkc05ld1N1cmZhY2UpIHsKLSAgICAgICAgZXZhc19nbF9zdXJmYWNlX2Rlc3Ryb3kocHJp
di0+ZXZhc0dsLCBwcml2LT5ldmFzR2xTdXJmYWNlKTsKLSAgICAgICAgcHJpdi0+ZXZhc0dsU3Vy
ZmFjZSA9IDA7Ci0gICAgICAgIGV3a192aWV3X2NyZWF0ZV9nbF9zdXJmYWNlKGV3a1ZpZXcsIElu
dFNpemUod2lkdGgsIGhlaWdodCkpOworICAgICAgICBldmFzX2dsX3N1cmZhY2VfZGVzdHJveSh2
aWV3SW1wbC0+ZXZhc0dsLCB2aWV3SW1wbC0+ZXZhc0dsU3VyZmFjZSk7CisgICAgICAgIHZpZXdJ
bXBsLT5ldmFzR2xTdXJmYWNlID0gMDsKKyAgICAgICAgdmlld0ltcGwtPmNyZWF0ZUdMU3VyZmFj
ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgZXdrX3ZpZXdfZGlzcGxheShld2tW
aWV3LCBJbnRSZWN0KEludFBvaW50KCksIEludFNpemUod2lkdGgsIGhlaWdodCkpKTsKICAgICB9
CiAjZW5kaWYKQEAgLTY3Niw3ICs1ODYsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
aGlkZShFdmFzX09iamVjdCogZXdrVmlldykKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9j
b2xvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCByZWQsIGludCBncmVlbiwgaW50IGJs
dWUsIGludCBhbHBoYSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdik7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgdmlld0lt
cGwpOwogCiAgICAgaWYgKGFscGhhIDwgMCkKICAgICAgICAgYWxwaGEgPSAwOwpAQCAtNjk0LDgg
KzYwNCw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jb2xvcl9zZXQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGludCByZWQsIGludCBncmVlbiwKICN1bmRlZiBDSEVDS19DT0xPUgogCiAg
ICAgZXZhc19vYmplY3RfaW1hZ2VfYWxwaGFfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIGFscGhhIDwg
MjU1KTsKLSAgICBwcml2LT5wYWdlUHJveHktPnNldERyYXdzQmFja2dyb3VuZChyZWQgfHwgZ3Jl
ZW4gfHwgYmx1ZSk7Ci0gICAgcHJpdi0+cGFnZVByb3h5LT5zZXREcmF3c1RyYW5zcGFyZW50QmFj
a2dyb3VuZChhbHBoYSA8IDI1NSk7CisgICAgdmlld0ltcGwtPnBhZ2VQcm94eS0+c2V0RHJhd3NC
YWNrZ3JvdW5kKHJlZCB8fCBncmVlbiB8fCBibHVlKTsKKyAgICB2aWV3SW1wbC0+cGFnZVByb3h5
LT5zZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZChhbHBoYSA8IDI1NSk7CiAKICAgICBnX3Bh
cmVudFNtYXJ0Q2xhc3MuY29sb3Jfc2V0KGV3a1ZpZXcsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhh
KTsKIH0KQEAgLTc1NSw1MyArNjY1LDUzIEBAIHN0YXRpYyBpbmxpbmUgRXZhc19TbWFydCogX2V3
a192aWV3X3NtYXJ0X2NsYXNzX25ldyh2b2lkKQogc3RhdGljIHZvaWQgX2V3a192aWV3X2luaXRp
YWxpemUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRl
eHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKIHsKICAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgdmlld0ltcGwpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNv
bnRleHQpOwogCi0gICAgaWYgKHByaXYtPnBhZ2VDbGllbnQpCisgICAgaWYgKHZpZXdJbXBsLT5w
YWdlQ2xpZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBwcml2LT5wYWdlQ2xpZW50ID0gUGFn
ZUNsaWVudEltcGw6OmNyZWF0ZShld2tWaWV3KTsKKyAgICB2aWV3SW1wbC0+cGFnZUNsaWVudCA9
IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUodmlld0ltcGwpOwogCiAgICAgaWYgKHBhZ2VHcm91cFJl
ZikKLSAgICAgICAgcHJpdi0+cGFnZVByb3h5ID0gdG9JbXBsKGNvbnRleHQtPndrQ29udGV4dCgp
KS0+Y3JlYXRlV2ViUGFnZShwcml2LT5wYWdlQ2xpZW50LmdldCgpLCB0b0ltcGwocGFnZUdyb3Vw
UmVmKSk7CisgICAgICAgIHZpZXdJbXBsLT5wYWdlUHJveHkgPSB0b0ltcGwoY29udGV4dC0+d2tD
b250ZXh0KCkpLT5jcmVhdGVXZWJQYWdlKHZpZXdJbXBsLT5wYWdlQ2xpZW50LmdldCgpLCB0b0lt
cGwocGFnZUdyb3VwUmVmKSk7CiAgICAgZWxzZQotICAgICAgICBwcml2LT5wYWdlUHJveHkgPSB0
b0ltcGwoY29udGV4dC0+d2tDb250ZXh0KCkpLT5jcmVhdGVXZWJQYWdlKHByaXYtPnBhZ2VDbGll
bnQuZ2V0KCksIFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCkuZ2V0KCkpOworICAgICAgICB2aWV3SW1w
bC0+cGFnZVByb3h5ID0gdG9JbXBsKGNvbnRleHQtPndrQ29udGV4dCgpKS0+Y3JlYXRlV2ViUGFn
ZSh2aWV3SW1wbC0+cGFnZUNsaWVudC5nZXQoKSwgV2ViUGFnZUdyb3VwOjpjcmVhdGUoKS5nZXQo
KSk7CiAKICAgICBhZGRUb1BhZ2VWaWV3TWFwKGV3a1ZpZXcpOwogCiAjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQotICAgIHByaXYtPnBhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVu
Y2VzKCktPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKHRydWUpOwotICAgIHByaXYt
PnBhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEZvcmNlQ29tcG9zaXRp
bmdNb2RlKHRydWUpOwotICAgIHByaXYtPnBhZ2VQcm94eS0+c2V0VXNlRml4ZWRMYXlvdXQodHJ1
ZSk7CisgICAgdmlld0ltcGwtPnBhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkt
PnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKHRydWUpOworICAgIHZpZXdJbXBsLT5w
YWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRGb3JjZUNvbXBvc2l0aW5n
TW9kZSh0cnVlKTsKKyAgICB2aWV3SW1wbC0+cGFnZVByb3h5LT5zZXRVc2VGaXhlZExheW91dCh0
cnVlKTsKICNlbmRpZgotICAgIHByaXYtPnBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsK
KyAgICB2aWV3SW1wbC0+cGFnZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgpOwogCi0gICAgcHJp
di0+YmFja0ZvcndhcmRMaXN0ID0gRXdrX0JhY2tfRm9yd2FyZF9MaXN0OjpjcmVhdGUodG9BUEko
cHJpdi0+cGFnZVByb3h5LT5iYWNrRm9yd2FyZExpc3QoKSkpOworICAgIHZpZXdJbXBsLT5iYWNr
Rm9yd2FyZExpc3QgPSBFd2tfQmFja19Gb3J3YXJkX0xpc3Q6OmNyZWF0ZSh0b0FQSSh2aWV3SW1w
bC0+cGFnZVByb3h5LT5iYWNrRm9yd2FyZExpc3QoKSkpOwogCi0gICAgcHJpdi0+Y29udGV4dCA9
IGNvbnRleHQ7CisgICAgdmlld0ltcGwtPmNvbnRleHQgPSBjb250ZXh0OwogCiAjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgcHJpdi0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dCA9IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmNyZWF0ZShld2tWaWV3KTsKLSAg
ICBwcml2LT5wYWdlVmlld3BvcnRDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXIocHJpdi0+cGFnZVByb3h5LmdldCgpLCBwcml2LT5wYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50LmdldCgpKSk7Ci0gICAgcHJpdi0+cGFnZUNsaWVudC0+c2V0UGFnZVZpZXdw
b3J0Q29udHJvbGxlcihwcml2LT5wYWdlVmlld3BvcnRDb250cm9sbGVyLmdldCgpKTsKKyAgICB2
aWV3SW1wbC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCA9IFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmw6OmNyZWF0ZSh2aWV3SW1wbCk7CisgICAgdmlld0ltcGwtPnBhZ2VWaWV3
cG9ydENvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlcih2aWV3
SW1wbC0+cGFnZVByb3h5LmdldCgpLCB2aWV3SW1wbC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudC5nZXQoKSkpOworICAgIHZpZXdJbXBsLT5wYWdlQ2xpZW50LT5zZXRQYWdlVmlld3BvcnRD
b250cm9sbGVyKHZpZXdJbXBsLT5wYWdlVmlld3BvcnRDb250cm9sbGVyLmdldCgpKTsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIHByaXYtPnBhZ2VQcm94eS0+ZnVs
bFNjcmVlbk1hbmFnZXIoKS0+c2V0V2ViVmlldyhld2tWaWV3KTsKLSAgICBwcml2LT5wYWdlUHJv
eHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRGdWxsU2NyZWVuRW5hYmxlZCh0cnVl
KTsKKyAgICB2aWV3SW1wbC0+cGFnZVByb3h5LT5mdWxsU2NyZWVuTWFuYWdlcigpLT5zZXRXZWJW
aWV3KGV3a1ZpZXcpOworICAgIHZpZXdJbXBsLT5wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVm
ZXJlbmNlcygpLT5zZXRGdWxsU2NyZWVuRW5hYmxlZCh0cnVlKTsKICNlbmRpZgogCiAgICAgLy8g
SW5pdGlhbGl6ZSBwYWdlIGNsaWVudHMuCi0gICAgcHJpdi0+cGFnZUxvYWRDbGllbnQgPSBQYWdl
TG9hZENsaWVudEVmbDo6Y3JlYXRlKGV3a1ZpZXcpOwotICAgIHByaXYtPnBhZ2VQb2xpY3lDbGll
bnQgPSBQYWdlUG9saWN5Q2xpZW50RWZsOjpjcmVhdGUoZXdrVmlldyk7Ci0gICAgcHJpdi0+cGFn
ZVVJQ2xpZW50ID0gUGFnZVVJQ2xpZW50RWZsOjpjcmVhdGUoZXdrVmlldyk7Ci0gICAgcHJpdi0+
cmVzb3VyY2VMb2FkQ2xpZW50ID0gUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpjcmVhdGUoZXdrVmll
dyk7Ci0gICAgcHJpdi0+ZmluZENsaWVudCA9IEZpbmRDbGllbnRFZmw6OmNyZWF0ZShld2tWaWV3
KTsKLSAgICBwcml2LT5mb3JtQ2xpZW50ID0gRm9ybUNsaWVudEVmbDo6Y3JlYXRlKGV3a1ZpZXcp
OworICAgIHZpZXdJbXBsLT5wYWdlTG9hZENsaWVudCA9IFBhZ2VMb2FkQ2xpZW50RWZsOjpjcmVh
dGUodmlld0ltcGwpOworICAgIHZpZXdJbXBsLT5wYWdlUG9saWN5Q2xpZW50ID0gUGFnZVBvbGlj
eUNsaWVudEVmbDo6Y3JlYXRlKHZpZXdJbXBsKTsKKyAgICB2aWV3SW1wbC0+cGFnZVVJQ2xpZW50
ID0gUGFnZVVJQ2xpZW50RWZsOjpjcmVhdGUodmlld0ltcGwpOworICAgIHZpZXdJbXBsLT5yZXNv
dXJjZUxvYWRDbGllbnQgPSBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmNyZWF0ZSh2aWV3SW1wbCk7
CisgICAgdmlld0ltcGwtPmZpbmRDbGllbnQgPSBGaW5kQ2xpZW50RWZsOjpjcmVhdGUodmlld0lt
cGwpOworICAgIHZpZXdJbXBsLT5mb3JtQ2xpZW50ID0gRm9ybUNsaWVudEVmbDo6Y3JlYXRlKHZp
ZXdJbXBsKTsKIAogICAgIC8qIExpc3RlbiBmb3IgZmF2aWNvbiBjaGFuZ2VzICovCi0gICAgRXdr
X0Zhdmljb25fRGF0YWJhc2UqIGljb25EYXRhYmFzZSA9IHByaXYtPmNvbnRleHQtPmZhdmljb25E
YXRhYmFzZSgpOworICAgIEV3a19GYXZpY29uX0RhdGFiYXNlKiBpY29uRGF0YWJhc2UgPSB2aWV3
SW1wbC0+Y29udGV4dC0+ZmF2aWNvbkRhdGFiYXNlKCk7CiAgICAgaWNvbkRhdGFiYXNlLT53YXRj
aENoYW5nZXMoSWNvbkNoYW5nZUNhbGxiYWNrRGF0YShfZXdrX3ZpZXdfb25fZmF2aWNvbl9jaGFu
Z2VkLCBld2tWaWV3KSk7CiB9CiAKQEAgLTgyMCw4ICs3MzAsOCBAQCBzdGF0aWMgRXZhc19PYmpl
Y3QqIF9ld2tfdmlld19hZGRfd2l0aF9zbWFydChFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNt
YXJ0KQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBFV0tfVklFV19QUklWX0dFVChz
bWFydERhdGEsIHByaXYpOwotICAgIGlmICghcHJpdikgeworICAgIEVXS19WSUVXX0lNUExfR0VU
KHNtYXJ0RGF0YSwgdmlld0ltcGwpOworICAgIGlmICghdmlld0ltcGwpIHsKICAgICAgICAgZXZh
c19vYmplY3RfZGVsKGV3a1ZpZXcpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC04NzUs
OSArNzg1LDkgQEAgRXZhc19PYmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBjYW52YXMpCiBFd2tf
Q29udGV4dCogZXdrX3ZpZXdfY29udGV4dF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDAp
OwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwor
ICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHZpZXdJbXBsLCAwKTsK
IAotICAgIHJldHVybiBwcml2LT5jb250ZXh0LmdldCgpOworICAgIHJldHVybiB2aWV3SW1wbC0+
Y29udGV4dC5nZXQoKTsKIH0KIAogLyoqCkBAIC04ODksMzAgKzc5OSwzMCBAQCBFd2tfQ29udGV4
dCogZXdrX3ZpZXdfY29udGV4dF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB2b2lk
IGV3a192aWV3X3VybF91cGRhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworICAgIEVXS19WSUVXX0lNUExfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHZpZXdJbXBsKTsKIAotICAgIFN0cmluZyBhY3RpdmVVUkwg
PSBwcml2LT5wYWdlUHJveHktPmFjdGl2ZVVSTCgpOworICAgIFN0cmluZyBhY3RpdmVVUkwgPSB2
aWV3SW1wbC0+cGFnZVByb3h5LT5hY3RpdmVVUkwoKTsKICAgICBpZiAoYWN0aXZlVVJMLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHByaXYtPnVybCA9PSBhY3RpdmVVUkwu
dXRmOCgpLmRhdGEoKSkKKyAgICBpZiAodmlld0ltcGwtPnVybCA9PSBhY3RpdmVVUkwudXRmOCgp
LmRhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJpdi0+dXJsID0gYWN0aXZlVVJMLnV0
ZjgoKS5kYXRhKCk7Ci0gICAgY29uc3QgY2hhciogY2FsbGJhY2tBcmd1bWVudCA9IHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihwcml2LT51cmwpOworICAgIHZpZXdJbXBsLT51cmwgPSBhY3RpdmVV
UkwudXRmOCgpLmRhdGEoKTsKKyAgICBjb25zdCBjaGFyKiBjYWxsYmFja0FyZ3VtZW50ID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KHZpZXdJbXBsLT51cmwpOwogICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInVybCxjaGFuZ2VkIiwgY29uc3RfY2FzdDxjaGFy
Kj4oY2FsbGJhY2tBcmd1bWVudCkpOwogCiAgICAgLy8gVXBkYXRlIHRoZSB2aWV3J3MgZmF2aWNv
bi4KLSAgICBld2tfdmlld191cGRhdGVfaWNvbihld2tWaWV3KTsKKyAgICB2aWV3SW1wbC0+cmVw
b3J0SWNvbkNoYW5nZSgpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXJsX3NldChFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgY2hhciogdXJsKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVXS19WSUVXX0lNUExf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHZpZXdJbXBsLCBmYWxzZSk7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHVybCwgZmFsc2UpOwogCi0gICAgcHJpdi0+cGFnZVByb3h5
LT5sb2FkVVJMKHVybCk7CisgICAgdmlld0ltcGwtPnBhZ2VQcm94eS0+bG9hZFVSTCh1cmwpOwog
ICAgIGV3a192aWV3X3VybF91cGRhdGUoZXdrVmlldyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTkyMSwyNSArODMxLDI1IEBAIEVpbmFfQm9vbCBld2tfdmlld191cmxfc2V0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBjb25zdCBjaGFyKiB1cmwpCiBjb25zdCBjaGFyKiBld2tfdmlld191cmxfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCB2aWV3SW1wbCwgMCk7CiAKLSAgICByZXR1cm4gcHJpdi0+dXJsOworICAg
IHJldHVybiB2aWV3SW1wbC0+dXJsOwogfQogCiBjb25zdCBjaGFyICpld2tfdmlld19pY29uX3Vy
bF9nZXQoY29uc3QgRXZhc19PYmplY3QgKmV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOworICAgIEVXS19WSUVXX0lNUExfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHZpZXdJbXBsLCAwKTsKIAotICAgIHJldHVybiBwcml2LT5mYXZp
Y29uVVJMOworICAgIHJldHVybiB2aWV3SW1wbC0+ZmF2aWNvblVSTDsKIH0KIAogRWluYV9Cb29s
IGV3a192aWV3X3JlbG9hZChFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFV0tfVklF
V19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCB2aWV3SW1wbCwgZmFsc2UpOwogCi0gICAg
cHJpdi0+cGFnZVByb3h5LT5yZWxvYWQoLypyZWxvYWRGcm9tT3JpZ2luKi8gZmFsc2UpOworICAg
IHZpZXdJbXBsLT5wYWdlUHJveHktPnJlbG9hZCgvKnJlbG9hZEZyb21PcmlnaW4qLyBmYWxzZSk7
CiAgICAgZXdrX3ZpZXdfdXJsX3VwZGF0ZShld2tWaWV3KTsKIAogICAgIHJldHVybiB0cnVlOwpA
QCAtOTQ4LDkgKzg1OCw5IEBAIEVpbmFfQm9vbCBld2tfdmlld19yZWxvYWQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkX2J5cGFzc19jYWNoZShFdmFzX09i
amVjdCogZXdrVmlldykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCB2aWV3SW1wbCwgZmFsc2UpOwogCi0gICAgcHJpdi0+cGFnZVByb3h5LT5yZWxvYWQo
LypyZWxvYWRGcm9tT3JpZ2luKi8gdHJ1ZSk7CisgICAgdmlld0ltcGwtPnBhZ2VQcm94eS0+cmVs
b2FkKC8qcmVsb2FkRnJvbU9yaWdpbiovIHRydWUpOwogICAgIGV3a192aWV3X3VybF91cGRhdGUo
ZXdrVmlldyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk1OSw5ICs4NjksOSBAQCBFaW5hX0Jv
b2wgZXdrX3ZpZXdfcmVsb2FkX2J5cGFzc19jYWNoZShFdmFzX09iamVjdCogZXdrVmlldykKIEVp
bmFfQm9vbCBld2tfdmlld19zdG9wKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVX
S19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHZpZXdJbXBsLCBmYWxzZSk7CiAK
LSAgICBwcml2LT5wYWdlUHJveHktPnN0b3BMb2FkaW5nKCk7CisgICAgdmlld0ltcGwtPnBhZ2VQ
cm94eS0+c3RvcExvYWRpbmcoKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTY5LDkyICs4
NzksMjAgQEAgRWluYV9Cb29sIGV3a192aWV3X3N0b3AoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiBF
d2tfU2V0dGluZ3MqIGV3a192aWV3X3NldHRpbmdzX2dldChjb25zdCBFdmFzX09iamVjdCogZXdr
VmlldykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
MCk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgdmlld0ltcGws
IDApOwogCi0gICAgcmV0dXJuIHByaXYtPnNldHRpbmdzLmdldCgpOwotfQotCi0vKioKLSAqIEBp
bnRlcm5hbAotICogUmV0cmlldmVzIHRoZSBpbnRlcm5hbCBXS1BhZ2UgZm9yIHRoaXMgdmlldy4K
LSAqLwotV0tQYWdlUmVmIGV3a192aWV3X3drcGFnZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3
a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IDApOwotCi0gICAgcmV0dXJuIHRvQVBJKHByaXYtPnBhZ2VQcm94eS5nZXQoKSk7Ci19Ci0KLS8q
KgotICogQGludGVybmFsCi0gKiBMb2FkIHdhcyBpbml0aWF0ZWQgZm9yIGEgcmVzb3VyY2UgaW4g
dGhlIHZpZXcuCi0gKgotICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVxdWVzdCxuZXciIHdp
dGggcG9pbnRlciB0byByZXNvdXJjZSByZXF1ZXN0LgotICovCi12b2lkIGV3a192aWV3X3Jlc291
cmNlX2xvYWRfaW5pdGlhdGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfUmVzb3VyY2UqIHJl
c291cmNlLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QpCi17Ci0gICAgRXdrX1Jlc291cmNlX1Jl
cXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291cmNlLCByZXF1ZXN0LCAwfTsKLQotICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInJlc291cmNlLHJlcXVlc3Qs
bmV3IiwgJnJlc291cmNlUmVxdWVzdCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZWNl
aXZlZCBhIHJlc3BvbnNlIHRvIGEgcmVzb3VyY2UgbG9hZCByZXF1ZXN0IGluIHRoZSB2aWV3Lgot
ICoKLSAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3QscmVzcG9uc2UiIHdpdGggcG9p
bnRlciB0byByZXNvdXJjZSByZXNwb25zZS4KLSAqLwotdm9pZCBld2tfdmlld19yZXNvdXJjZV9s
b2FkX3Jlc3BvbnNlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfUmVzb3VyY2UqIHJlc291cmNl
LCBFd2tfVXJsX1Jlc3BvbnNlKiByZXNwb25zZSkKLXsKLSAgICBFd2tfUmVzb3VyY2VfTG9hZF9S
ZXNwb25zZSByZXNvdXJjZUxvYWRSZXNwb25zZSA9IHtyZXNvdXJjZSwgcmVzcG9uc2V9OwotICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInJlc291cmNlLHJlcXVl
c3QscmVzcG9uc2UiLCAmcmVzb3VyY2VMb2FkUmVzcG9uc2UpOwotfQotCi0vKioKLSAqIEBpbnRl
cm5hbAotICogRmFpbGVkIGxvYWRpbmcgYSByZXNvdXJjZSBpbiB0aGUgdmlldy4KLSAqCi0gKiBF
bWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiB3aXRoIHBvaW50ZXIgdG8g
dGhlIHJlc291cmNlIGxvYWQgZXJyb3IuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9h
ZF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3
a19FcnJvciogZXJyb3IpCi17Ci0gICAgRXdrX1Jlc291cmNlX0xvYWRfRXJyb3IgcmVzb3VyY2VM
b2FkRXJyb3IgPSB7cmVzb3VyY2UsIGVycm9yfTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKGV3a1ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LGZhaWxlZCIsICZyZXNvdXJjZUxv
YWRFcnJvcik7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBGaW5pc2hlZCBsb2FkaW5nIGEg
cmVzb3VyY2UgaW4gdGhlIHZpZXcuCi0gKgotICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVx
dWVzdCxmaW5pc2hlZCIgd2l0aCBwb2ludGVyIHRvIHRoZSByZXNvdXJjZS4KLSAqLwotdm9pZCBl
d2tfdmlld19yZXNvdXJjZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tf
UmVzb3VyY2UqIHJlc291cmNlKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwoZXdrVmlldywgInJlc291cmNlLHJlcXVlc3QsZmluaXNoZWQiLCByZXNvdXJjZSk7Ci19Ci0K
LS8qKgotICogQGludGVybmFsCi0gKiBSZXF1ZXN0IHdhcyBzZW50IGZvciBhIHJlc291cmNlIGlu
IHRoZSB2aWV3LgotICoKLSAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3Qsc2VudCIg
d2l0aCBwb2ludGVyIHRvIHJlc291cmNlIHJlcXVlc3QgYW5kIHBvc3NpYmxlIHJlZGlyZWN0IHJl
c3BvbnNlLgotICovCi12b2lkIGV3a192aWV3X3Jlc291cmNlX3JlcXVlc3Rfc2VudChFdmFzX09i
amVjdCogZXdrVmlldywgRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX1VybF9SZXF1ZXN0KiBy
ZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNlKQotewotICAgIEV3a19S
ZXNvdXJjZV9SZXF1ZXN0IHJlc291cmNlUmVxdWVzdCA9IHtyZXNvdXJjZSwgcmVxdWVzdCwgcmVk
aXJlY3RSZXNwb25zZX07Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tW
aWV3LCAicmVzb3VyY2UscmVxdWVzdCxzZW50IiwgJnJlc291cmNlUmVxdWVzdCk7CisgICAgcmV0
dXJuIHZpZXdJbXBsLT5zZXR0aW5ncy5nZXQoKTsKIH0KIAogY29uc3QgY2hhciogZXdrX3ZpZXdf
dGl0bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKKyAgICBFV0tfVklFV19JTVBMX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCB2aWV3SW1wbCwgMCk7CiAKLSAgICBDU3RyaW5nIHRpdGxl
ID0gcHJpdi0+cGFnZVByb3h5LT5wYWdlVGl0bGUoKS51dGY4KCk7Ci0gICAgcHJpdi0+dGl0bGUg
PSB0aXRsZS5kYXRhKCk7CisgICAgQ1N0cmluZyB0aXRsZSA9IHZpZXdJbXBsLT5wYWdlUHJveHkt
PnBhZ2VUaXRsZSgpLnV0ZjgoKTsKKyAgICB2aWV3SW1wbC0+dGl0bGUgPSB0aXRsZS5kYXRhKCk7
CiAKLSAgICByZXR1cm4gcHJpdi0+dGl0bGU7CisgICAgcmV0dXJuIHZpZXdJbXBsLT50aXRsZTsK
IH0KIAogLyoqCkBAIC0xMDc1LDg2ICs5MTMsNjQgQEAgdm9pZCBld2tfdmlld190ZXh0X2ZvdW5k
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1bnNpZ25lZCBpbnQgbWF0Y2hDb3VudCkKIHZvaWQgZXdr
X3ZpZXdfdGV4dF9pbnB1dF9zdGF0ZV91cGRhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworICAgIEVXS19WSUVX
X0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHZpZXdJbXBsKTsKIAotICAgIGlmICghcHJp
di0+aW1mQ29udGV4dCkKKyAgICBpZiAoIXZpZXdJbXBsLT5pbWZDb250ZXh0KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yID0gcHJpdi0+cGFnZVByb3h5
LT5lZGl0b3JTdGF0ZSgpOworICAgIGNvbnN0IEVkaXRvclN0YXRlJiBlZGl0b3IgPSB2aWV3SW1w
bC0+cGFnZVByb3h5LT5lZGl0b3JTdGF0ZSgpOwogCiAgICAgaWYgKGVkaXRvci5pc0NvbnRlbnRF
ZGl0YWJsZSkgewotICAgICAgICBpZiAocHJpdi0+aXNJbWZGb2N1c2VkKQorICAgICAgICBpZiAo
dmlld0ltcGwtPmlzSW1mRm9jdXNlZCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBl
Y29yZV9pbWZfY29udGV4dF9yZXNldChwcml2LT5pbWZDb250ZXh0KTsKLSAgICAgICAgZWNvcmVf
aW1mX2NvbnRleHRfZm9jdXNfaW4ocHJpdi0+aW1mQ29udGV4dCk7Ci0gICAgICAgIHByaXYtPmlz
SW1mRm9jdXNlZCA9IHRydWU7CisgICAgICAgIGVjb3JlX2ltZl9jb250ZXh0X3Jlc2V0KHZpZXdJ
bXBsLT5pbWZDb250ZXh0KTsKKyAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfZm9jdXNfaW4odmll
d0ltcGwtPmltZkNvbnRleHQpOworICAgICAgICB2aWV3SW1wbC0+aXNJbWZGb2N1c2VkID0gdHJ1
ZTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIXByaXYtPmlzSW1mRm9jdXNlZCkKKyAgICAg
ICAgaWYgKCF2aWV3SW1wbC0+aXNJbWZGb2N1c2VkKQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGlmIChlZGl0b3IuaGFzQ29tcG9zaXRpb24pCi0gICAgICAgICAgICBwcml2LT5wYWdl
UHJveHktPmNhbmNlbENvbXBvc2l0aW9uKCk7CisgICAgICAgICAgICB2aWV3SW1wbC0+cGFnZVBy
b3h5LT5jYW5jZWxDb21wb3NpdGlvbigpOwogCi0gICAgICAgIHByaXYtPmlzSW1mRm9jdXNlZCA9
IGZhbHNlOwotICAgICAgICBlY29yZV9pbWZfY29udGV4dF9yZXNldChwcml2LT5pbWZDb250ZXh0
KTsKLSAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfZm9jdXNfb3V0KHByaXYtPmltZkNvbnRleHQp
OworICAgICAgICB2aWV3SW1wbC0+aXNJbWZGb2N1c2VkID0gZmFsc2U7CisgICAgICAgIGVjb3Jl
X2ltZl9jb250ZXh0X3Jlc2V0KHZpZXdJbXBsLT5pbWZDb250ZXh0KTsKKyAgICAgICAgZWNvcmVf
aW1mX2NvbnRleHRfZm9jdXNfb3V0KHZpZXdJbXBsLT5pbWZDb250ZXh0KTsKICAgICB9CiB9CiAK
LS8qKgotICogQGludGVybmFsCi0gKiBUaGUgdmlldyB0aXRsZSB3YXMgY2hhbmdlZCBieSB0aGUg
ZnJhbWUgbG9hZGVyLgotICoKLSAqIEVtaXRzIHNpZ25hbDogInRpdGxlLGNoYW5nZWQiIHdpdGgg
cG9pbnRlciB0byBuZXcgdGl0bGUgc3RyaW5nLgotICovCi12b2lkIGV3a192aWV3X3RpdGxlX2No
YW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRpdGxlKQotewotICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInRpdGxlLGNoYW5nZWQiLCBj
b25zdF9jYXN0PGNoYXIqPih0aXRsZSkpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICovCi12
b2lkIGV3a192aWV3X3Rvb2x0aXBfdGV4dF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0
IGNoYXIqIHRleHQpCi17Ci0gICAgaWYgKHRleHQgJiYgKnRleHQpCi0gICAgICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInRvb2x0aXAsdGV4dCxzZXQiLCBjb25z
dF9jYXN0PGNoYXIqPih0ZXh0KSk7Ci0gICAgZWxzZQotICAgICAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJ0b29sdGlwLHRleHQsdW5zZXQiLCAwKTsKLX0KLQog
ZG91YmxlIGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tW
aWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCAtMS4wKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
LCAtMS4wKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCB2aWV3
SW1wbCwgLTEuMCk7CiAKLSAgICByZXR1cm4gcHJpdi0+cGFnZVByb3h5LT5lc3RpbWF0ZWRQcm9n
cmVzcygpOworICAgIHJldHVybiB2aWV3SW1wbC0+cGFnZVByb3h5LT5lc3RpbWF0ZWRQcm9ncmVz
cygpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2NhbGVfc2V0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBkb3VibGUgc2NhbGVGYWN0b3IsIGludCB4LCBpbnQgeSkKIHsKICAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFV0tfVklF
V19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCB2aWV3SW1wbCwgZmFsc2UpOwogCi0gICAg
cHJpdi0+cGFnZVByb3h5LT5zY2FsZVBhZ2Uoc2NhbGVGYWN0b3IsIEludFBvaW50KHgsIHkpKTsK
KyAgICB2aWV3SW1wbC0+cGFnZVByb3h5LT5zY2FsZVBhZ2Uoc2NhbGVGYWN0b3IsIEludFBvaW50
KHgsIHkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZG91YmxlIGV3a192aWV3X3NjYWxlX2dl
dChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgLTEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYsIC0xKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9S
RVRVUk4oc21hcnREYXRhLCB2aWV3SW1wbCwgLTEpOwogCi0gICAgcmV0dXJuIHByaXYtPnBhZ2VQ
cm94eS0+cGFnZVNjYWxlRmFjdG9yKCk7CisgICAgcmV0dXJuIHZpZXdJbXBsLT5wYWdlUHJveHkt
PnBhZ2VTY2FsZUZhY3RvcigpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfZGV2aWNlX3BpeGVs
X3JhdGlvX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgcmF0aW8pCiB7CiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAg
RVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgdmlld0ltcGwsIGZhbHNlKTsK
IAotICAgIHByaXYtPnBhZ2VQcm94eS0+c2V0Q3VzdG9tRGV2aWNlU2NhbGVGYWN0b3IocmF0aW8p
OworICAgIHZpZXdJbXBsLT5wYWdlUHJveHktPnNldEN1c3RvbURldmljZVNjYWxlRmFjdG9yKHJh
dGlvKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTE2MiwxNDggKzk3OCwzMCBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX3NldChFdmFzX09iamVjdCogZXdrVmll
dywgZmxvYXQgcmF0aW8pCiBmbG9hdCBld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9fZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhLCAtMS4wKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc21hcnREYXRhLCBwcml2LCAtMS4wKTsKLQotICAgIHJldHVybiBwcml2LT5wYWdlUHJv
eHktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZXBv
cnRzIGxvYWQgcHJvZ3Jlc3MgY2hhbmdlZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2FkLHBy
b2dyZXNzIiB3aXRoIHBvaW50ZXIgdG8gYSBkb3VibGUgZnJvbSAwLjAgdG8gMS4wLgotICovCi12
b2lkIGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldywg
ZG91YmxlIHByb2dyZXNzKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
ZXdrVmlldywgImxvYWQscHJvZ3Jlc3MiLCAmcHJvZ3Jlc3MpOwotfQorICAgIEVXS19WSUVXX0lN
UExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHZpZXdJbXBsLCAtMS4wKTsKIAotLyoqCi0gKiBA
aW50ZXJuYWwKLSAqIFRoZSB2aWV3IHJlY2VpdmVkIGEgbmV3IGludGVudCByZXF1ZXN0LgotICoK
LSAqIEVtaXRzIHNpZ25hbDogImludGVudCxyZXF1ZXN0LG5ldyIgd2l0aCBwb2ludGVyIHRvIGEg
RXdrX0ludGVudC4KLSAqLwotdm9pZCBld2tfdmlld19pbnRlbnRfcmVxdWVzdF9uZXcoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19JbnRlbnQqIGV3a0ludGVudCkKLXsKLSNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tW
aWV3LCAiaW50ZW50LHJlcXVlc3QsbmV3IiwgY29uc3RfY2FzdDxFd2tfSW50ZW50Kj4oZXdrSW50
ZW50KSk7Ci0jZW5kaWYKKyAgICByZXR1cm4gdmlld0ltcGwtPnBhZ2VQcm94eS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKTsKIH0KIAogdm9pZCBld2tfdmlld190aGVtZV9zZXQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIGNvbnN0IGNoYXIqIHBhdGgpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYpOworICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHZpZXdJbXBsKTsKIAotICAgIGlmIChwcml2LT50aGVtZSAhPSBwYXRoKSB7Ci0gICAgICAg
IHByaXYtPnRoZW1lID0gcGF0aDsKLSAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5zZXRUaGVtZVBh
dGgocGF0aCk7CisgICAgaWYgKHZpZXdJbXBsLT50aGVtZSAhPSBwYXRoKSB7CisgICAgICAgIHZp
ZXdJbXBsLT50aGVtZSA9IHBhdGg7CisgICAgICAgIHZpZXdJbXBsLT5wYWdlUHJveHktPnNldFRo
ZW1lUGF0aChwYXRoKTsKICAgICB9CiB9CiAKIGNvbnN0IGNoYXIqIGV3a192aWV3X3RoZW1lX2dl
dChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgMCk7Ci0KLSAgICByZXR1cm4gcHJpdi0+dGhlbWU7Ci19
Ci0KLXZvaWQgZXdrX3ZpZXdfY3Vyc29yX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
Q3Vyc29yJiBjdXJzb3IpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYpOwotCi0gICAgY29uc3QgY2hhciogZ3JvdXAgPSBjdXJzb3IucGxhdGZvcm1DdXJzb3Io
KTsKLSAgICBpZiAoIWdyb3VwIHx8IGdyb3VwID09IHByaXYtPmN1cnNvckdyb3VwKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBwcml2LT5jdXJzb3JHcm91cCA9IGdyb3VwOwotICAgIHByaXYtPmN1
cnNvck9iamVjdCA9IGFkb3B0UmVmKGVkamVfb2JqZWN0X2FkZChzbWFydERhdGEtPmJhc2UuZXZh
cykpOwotCi0gICAgRWNvcmVfRXZhcyogZWNvcmVFdmFzID0gZWNvcmVfZXZhc19lY29yZV9ldmFz
X2dldChzbWFydERhdGEtPmJhc2UuZXZhcyk7Ci0gICAgaWYgKCFwcml2LT50aGVtZSB8fCAhZWRq
ZV9vYmplY3RfZmlsZV9zZXQocHJpdi0+Y3Vyc29yT2JqZWN0LmdldCgpLCBwcml2LT50aGVtZSwg
Z3JvdXApKSB7Ci0gICAgICAgIHByaXYtPmN1cnNvck9iamVjdC5jbGVhcigpOwotCi0gICAgICAg
IGVjb3JlX2V2YXNfb2JqZWN0X2N1cnNvcl9zZXQoZWNvcmVFdmFzLCAwLCAwLCAwLCAwKTsKLSNp
ZmRlZiBIQVZFX0VDT1JFX1gKLSAgICAgICAgaWYgKHByaXYtPmlzVXNpbmdFY29yZVgpCi0gICAg
ICAgICAgICBXZWJDb3JlOjphcHBseUZhbGxiYWNrQ3Vyc29yKGVjb3JlRXZhcywgZ3JvdXApOwot
I2VuZGlmCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBFdmFzX0Nvb3JkIHdpZHRoLCBo
ZWlnaHQ7Ci0gICAgZWRqZV9vYmplY3Rfc2l6ZV9taW5fZ2V0KHByaXYtPmN1cnNvck9iamVjdC5n
ZXQoKSwgJndpZHRoLCAmaGVpZ2h0KTsKLSAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0g
MCkKLSAgICAgICAgZWRqZV9vYmplY3Rfc2l6ZV9taW5fY2FsYyhwcml2LT5jdXJzb3JPYmplY3Qu
Z2V0KCksICZ3aWR0aCwgJmhlaWdodCk7Ci0gICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9
IDApIHsKLSAgICAgICAgd2lkdGggPSBkZWZhdWx0Q3Vyc29yU2l6ZTsKLSAgICAgICAgaGVpZ2h0
ID0gZGVmYXVsdEN1cnNvclNpemU7Ci0gICAgfQotICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShwcml2
LT5jdXJzb3JPYmplY3QuZ2V0KCksIHdpZHRoLCBoZWlnaHQpOwotCi0gICAgY29uc3QgY2hhciog
ZGF0YTsKLSAgICBpbnQgaG90c3BvdFggPSAwOwotICAgIGRhdGEgPSBlZGplX29iamVjdF9kYXRh
X2dldChwcml2LT5jdXJzb3JPYmplY3QuZ2V0KCksICJob3QueCIpOwotICAgIGlmIChkYXRhKQot
ICAgICAgICBob3RzcG90WCA9IGF0b2koZGF0YSk7Ci0KLSAgICBpbnQgaG90c3BvdFkgPSAwOwot
ICAgIGRhdGEgPSBlZGplX29iamVjdF9kYXRhX2dldChwcml2LT5jdXJzb3JPYmplY3QuZ2V0KCks
ICJob3QueSIpOwotICAgIGlmIChkYXRhKQotICAgICAgICBob3RzcG90WSA9IGF0b2koZGF0YSk7
Ci0KLSAgICBlY29yZV9ldmFzX29iamVjdF9jdXJzb3Jfc2V0KGVjb3JlRXZhcywgcHJpdi0+Y3Vy
c29yT2JqZWN0LmdldCgpLCBFVkFTX0xBWUVSX01BWCwgaG90c3BvdFgsIGhvdHNwb3RZKTsKLX0K
LQotdm9pZCBld2tfdmlld19kaXNwbGF5KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBJbnRS
ZWN0JiByZWN0KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhKTsKLSAgICBpZiAoIXNtYXJ0RGF0YS0+aW1hZ2UpCi0gICAgICAgIHJldHVybjsKLQot
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc21hcnREYXRhLCBwcml2KTsKLQotICAgIGV2YXNfZ2xfbWFrZV9jdXJyZW50KHByaXYt
PmV2YXNHbCwgcHJpdi0+ZXZhc0dsU3VyZmFjZSwgcHJpdi0+ZXZhc0dsQ29udGV4dCk7Ci0gICAg
cHJpdi0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+ZGlzcGxheShyZWN0LCBJbnRQb2lu
dChzbWFydERhdGEtPnZpZXcueCwgc21hcnREYXRhLT52aWV3LnkpKTsKLSNlbmRpZgorICAgIEVX
S19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHZpZXdJbXBsLCAwKTsKIAotICAg
IGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzbWFydERhdGEtPmltYWdlLCByZWN0
LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgcmV0dXJu
IHZpZXdJbXBsLT50aGVtZTsKIH0KIAotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLS8qKgot
ICogQGludGVybmFsCi0gKiBDYWxscyBmdWxsc2NyZWVuX2VudGVyIGNhbGxiYWNrIG9yIGZhbGxz
IGJhY2sgdG8gZGVmYXVsdCBiZWhhdmlvciBhbmQgZW5hYmxlcyBmdWxsc2NyZWVuIG1vZGUuCi0g
Ki8KLXZvaWQgZXdrX3ZpZXdfZnVsbF9zY3JlZW5fZW50ZXIoRXZhc19PYmplY3QqIGV3a1ZpZXcp
Ci17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwot
Ci0gICAgaWYgKCFzbWFydERhdGEtPmFwaS0+ZnVsbHNjcmVlbl9lbnRlciB8fCAhc21hcnREYXRh
LT5hcGktPmZ1bGxzY3JlZW5fZW50ZXIoc21hcnREYXRhKSkgewotICAgICAgICBFY29yZV9FdmFz
KiBlY29yZUV2YXMgPSBlY29yZV9ldmFzX2Vjb3JlX2V2YXNfZ2V0KHNtYXJ0RGF0YS0+YmFzZS5l
dmFzKTsKLSAgICAgICAgZWNvcmVfZXZhc19mdWxsc2NyZWVuX3NldChlY29yZUV2YXMsIHRydWUp
OwotICAgIH0KLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIENhbGxzIGZ1bGxzY3JlZW5fZXhp
dCBjYWxsYmFjayBvciBmYWxscyBiYWNrIHRvIGRlZmF1bHQgYmVoYXZpb3IgYW5kIGRpc2FibGVz
IGZ1bGxzY3JlZW4gbW9kZS4KLSAqLwotdm9pZCBld2tfdmlld19mdWxsX3NjcmVlbl9leGl0KEV2
YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhKTsKLQotICAgIGlmICghc21hcnREYXRhLT5hcGktPmZ1bGxzY3JlZW5f
ZXhpdCB8fCAhc21hcnREYXRhLT5hcGktPmZ1bGxzY3JlZW5fZXhpdChzbWFydERhdGEpKSB7Ci0g
ICAgICAgIEVjb3JlX0V2YXMqIGVjb3JlRXZhcyA9IGVjb3JlX2V2YXNfZWNvcmVfZXZhc19nZXQo
c21hcnREYXRhLT5iYXNlLmV2YXMpOwotICAgICAgICBlY29yZV9ldmFzX2Z1bGxzY3JlZW5fc2V0
KGVjb3JlRXZhcywgZmFsc2UpOwotICAgIH0KLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKIC8qKgogICogQGludGVybmFsCkBAIC0xMzIxLDU3ICsxMDE5LDEyIEBAIHVuc2ln
bmVkIGxvbmcgbG9uZyBld2tfdmlld19kYXRhYmFzZV9xdW90YV9leGNlZWRlZChFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QKIH0KICNlbmRpZgogCi0vKioKLSAqIEBpbnRlcm5hbAotICogQSBk
b3dubG9hZCBmb3IgdGhhdCB2aWV3IHdhcyBjYW5jZWxsZWQuCi0gKgotICogRW1pdHMgc2lnbmFs
OiAiZG93bmxvYWQsY2FuY2VsbGVkIiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfRG93bmxvYWRfSm9i
LgotICovCi12b2lkIGV3a192aWV3X2Rvd25sb2FkX2pvYl9jYW5jZWxsZWQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEV3a19Eb3dubG9hZF9Kb2IqIGRvd25sb2FkKQotewotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImRvd25sb2FkLGNhbmNlbGxlZCIsIGRvd25s
b2FkKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIEEgbmV3IGRvd25sb2FkIGhhcyBiZWVu
IHJlcXVlc3RlZCBmb3IgdGhhdCB2aWV3LgotICoKLSAqIEVtaXRzIHNpZ25hbDogImRvd25sb2Fk
LHJlcXVlc3QiIHdpdGggcG9pbnRlciB0byBhIEV3a19Eb3dubG9hZF9Kb2IuCi0gKi8KLXZvaWQg
ZXdrX3ZpZXdfZG93bmxvYWRfam9iX3JlcXVlc3RlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdr
X0Rvd25sb2FkX0pvYiogZG93bmxvYWQpCi17Ci0gICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwoZXdrVmlldywgImRvd25sb2FkLHJlcXVlc3QiLCBkb3dubG9hZCk7Ci19Ci0KLS8q
KgotICogQGludGVybmFsCi0gKiBBIGRvd25sb2FkIGZvciB0aGF0IHZpZXcgaGFzIGZhaWxlZC4K
LSAqCi0gKiBFbWl0cyBzaWduYWw6ICJkb3dubG9hZCxmYWlsZWQiIHdpdGggcG9pbnRlciB0byBh
IEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfam9i
X2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQs
IEV3a19FcnJvciogZXJyb3IpCi17Ci0gICAgRXdrX0Rvd25sb2FkX0pvYl9FcnJvciBkb3dubG9h
ZEVycm9yID0geyBkb3dubG9hZCwgZXJyb3IgfTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKGV3a1ZpZXcsICJkb3dubG9hZCxmYWlsZWQiLCAmZG93bmxvYWRFcnJvcik7Ci19
Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBBIGRvd25sb2FkIGZvciB0aGF0IHZpZXcgZmluaXNo
ZWQgc3VjY2Vzc2Z1bGx5LgotICoKLSAqIEVtaXRzIHNpZ25hbDogImRvd25sb2FkLGZpbmlzaGVk
IiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfRG93bmxvYWRfSm9iLgotICovCi12b2lkIGV3a192aWV3
X2Rvd25sb2FkX2pvYl9maW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25sb2Fk
X0pvYiogZG93bmxvYWQpCi17Ci0gICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
ZXdrVmlldywgImRvd25sb2FkLGZpbmlzaGVkIiwgZG93bmxvYWQpOwotfQotCiBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfYmFjayhFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFV0tfVklFV19J
TVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCB2aWV3SW1wbCwgZmFsc2UpOwogCi0gICAgV2Vi
UGFnZVByb3h5KiBwYWdlID0gcHJpdi0+cGFnZVByb3h5LmdldCgpOworICAgIFdlYlBhZ2VQcm94
eSogcGFnZSA9IHZpZXdJbXBsLT5wYWdlUHJveHkuZ2V0KCk7CiAgICAgaWYgKHBhZ2UtPmNhbkdv
QmFjaygpKSB7CiAgICAgICAgIHBhZ2UtPmdvQmFjaygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTEzODMsOSArMTAzNiw5IEBAIEVpbmFfQm9vbCBld2tfdmlld19iYWNrKEV2YXNfT2JqZWN0
KiBld2tWaWV3KQogRWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgdmll
d0ltcGwsIGZhbHNlKTsKIAotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHByaXYtPnBhZ2VQcm94
eS5nZXQoKTsKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB2aWV3SW1wbC0+cGFnZVByb3h5Lmdl
dCgpOwogICAgIGlmIChwYWdlLT5jYW5Hb0ZvcndhcmQoKSkgewogICAgICAgICBwYWdlLT5nb0Zv
cndhcmQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzk4LDEwICsxMDUxLDEwIEBAIEVp
bmFfQm9vbCBld2tfdmlld19pbnRlbnRfZGVsaXZlcihFdmFzX09iamVjdCogZXdrVmlldywgRXdr
X0ludGVudCogaW50ZW50KQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKICAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFV0tf
VklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCB2aWV3SW1wbCwgZmFsc2UpOwogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpbnRlbnQsIGZhbHNlKTsKIAotICAgIFdl
YlBhZ2VQcm94eSogcGFnZSA9IHByaXYtPnBhZ2VQcm94eS5nZXQoKTsKKyAgICBXZWJQYWdlUHJv
eHkqIHBhZ2UgPSB2aWV3SW1wbC0+cGFnZVByb3h5LmdldCgpOwogICAgIHBhZ2UtPmRlbGl2ZXJJ
bnRlbnRUb0ZyYW1lKHBhZ2UtPm1haW5GcmFtZSgpLCBpbnRlbnQtPndlYkludGVudERhdGEoKSk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0MTMsMTk4ICsxMDY2LDQyIEBAIEVpbmFfQm9vbCBl
d2tfdmlld19pbnRlbnRfZGVsaXZlcihFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0ludGVudCog
aW50ZW50KQogRWluYV9Cb29sIGV3a192aWV3X2JhY2tfcG9zc2libGUoRXZhc19PYmplY3QqIGV3
a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
dmlld0ltcGwsIGZhbHNlKTsKIAotICAgIHJldHVybiBwcml2LT5wYWdlUHJveHktPmNhbkdvQmFj
aygpOworICAgIHJldHVybiB2aWV3SW1wbC0+cGFnZVByb3h5LT5jYW5Hb0JhY2soKTsKIH0KIAog
RWluYV9Cb29sIGV3a192aWV3X2ZvcndhcmRfcG9zc2libGUoRXZhc19PYmplY3QqIGV3a1ZpZXcp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZh
bHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBm
YWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgdmlld0lt
cGwsIGZhbHNlKTsKIAotICAgIHJldHVybiBwcml2LT5wYWdlUHJveHktPmNhbkdvRm9yd2FyZCgp
OworICAgIHJldHVybiB2aWV3SW1wbC0+cGFnZVByb3h5LT5jYW5Hb0ZvcndhcmQoKTsKIH0KIAog
RXdrX0JhY2tfRm9yd2FyZF9MaXN0KiBld2tfdmlld19iYWNrX2ZvcndhcmRfbGlzdF9nZXQoY29u
c3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYsIDApOwotCi0gICAgcmV0dXJuIHByaXYtPmJhY2tGb3J3YXJkTGlz
dC5nZXQoKTsKLX0KLQotdm9pZCBld2tfdmlld19pbWFnZV9kYXRhX3NldChFdmFzX09iamVjdCog
ZXdrVmlldywgdm9pZCogaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQotewotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBpZiAoIWlt
YWdlRGF0YSB8fCAhc21hcnREYXRhLT5pbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZXZh
c19vYmplY3RfcmVzaXplKHNtYXJ0RGF0YS0+aW1hZ2UsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSk7Ci0gICAgZXZhc19vYmplY3RfaW1hZ2Vfc2l6ZV9zZXQoc21hcnREYXRhLT5pbWFnZSwg
c2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLSAgICBldmFzX29iamVjdF9pbWFnZV9kYXRh
X2NvcHlfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIGltYWdlRGF0YSk7Ci19Ci0KLS8qKgotICogQGlu
dGVybmFsCi0gKiBSZXBvcnRzIHRoYXQgYSBmb3JtIHJlcXVlc3QgaXMgYWJvdXQgdG8gYmUgc3Vi
bWl0dGVkLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImZvcm0sc3VibWlzc2lvbixyZXF1ZXN0IiB3
aXRoIHBvaW50ZXIgdG8gRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0LgotICovCi12b2lkIGV3
a192aWV3X2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X25ldyhFdmFzX09iamVjdCogZXdrVmlldywg
RXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0KiByZXF1ZXN0KQotewotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImZvcm0sc3VibWlzc2lvbixyZXF1ZXN0Iiwg
cmVxdWVzdCk7Ci19CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
dmlld0ltcGwsIDApOwogCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyBsb2FkIGZhaWxl
ZCB3aXRoIGVycm9yIGluZm9ybWF0aW9uLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQsZXJy
b3IiIHdpdGggcG9pbnRlciB0byBFd2tfRXJyb3IuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9l
cnJvcihFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0Vycm9yKiBlcnJvcikKLXsKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLGVycm9yIiwg
Y29uc3RfY2FzdDxFd2tfRXJyb3IqPihlcnJvcikpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAot
ICogUmVwb3J0cyBsb2FkIGZpbmlzaGVkLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQsZmlu
aXNoZWQiLgotICovCi12b2lkIGV3a192aWV3X2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3
a1ZpZXcpCi17Ci0gICAgZXdrX3ZpZXdfdXJsX3VwZGF0ZShld2tWaWV3KTsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLGZpbmlzaGVkIiwgMCk7Ci19
Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIHZpZXcgcHJvdmlzaW9uYWwgbG9hZCBm
YWlsZWQgd2l0aCBlcnJvciBpbmZvcm1hdGlvbi4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2Fk
LHByb3Zpc2lvbmFsLGZhaWxlZCIgd2l0aCBwb2ludGVyIHRvIEV3a19FcnJvci4KLSAqLwotdm9p
ZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywg
Y29uc3QgRXdrX0Vycm9yKiBlcnJvcikKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19jYWxsKGV3a1ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIsIGNvbnN0X2Nhc3Q8RXdr
X0Vycm9yKj4oZXJyb3IpKTsKLX0KLQotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotdm9p
ZCBld2tfdmlld19sb2FkX2NvbW1pdHRlZChFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7Ci0KLSAgICBwcml2LT5wYWdl
Vmlld3BvcnRDb250cm9sbGVyLT5kaWRDb21taXRMb2FkKCk7Ci19Ci0jZW5kaWYKLQotLyoqCi0g
KiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgdmlldyByZWNlaXZlZCByZWRpcmVjdCBmb3IgcHJvdmlz
aW9uYWwgbG9hZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb3Zpc2lvbmFsLHJlZGly
ZWN0Ii4KLSAqLwotdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX3JlZGlyZWN0KEV2YXNf
T2JqZWN0KiBld2tWaWV3KQotewotICAgIGV3a192aWV3X3VybF91cGRhdGUoZXdrVmlldyk7Ci0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAibG9hZCxwcm92aXNp
b25hbCxyZWRpcmVjdCIsIDApOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVwb3J0cyB2
aWV3IHByb3Zpc2lvbmFsIGxvYWQgc3RhcnRlZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJsb2Fk
LHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLgotICovCi12b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9u
YWxfc3RhcnRlZChFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBld2tfdmlld191cmxfdXBk
YXRlKGV3a1ZpZXcpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmll
dywgImxvYWQscHJvdmlzaW9uYWwsc3RhcnRlZCIsIDApOwotfQotCi0vKioKLSAqIEBpbnRlcm5h
bAotICogUmVwb3J0cyB0aGF0IHRoZSB2aWV3J3MgYmFjayAvIGZvcndhcmQgbGlzdCBoYXMgY2hh
bmdlZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJiYWNrLGZvcndhcmQsbGlzdCxjaGFuZ2VkIi4K
LSAqLwotdm9pZCBld2tfdmlld19iYWNrX2ZvcndhcmRfbGlzdF9jaGFuZ2VkKEV2YXNfT2JqZWN0
KiBld2tWaWV3KQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmll
dywgImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLCAwKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJu
YWwKLSAqIFVwZGF0ZSB0aGUgdmlldydzIGZhdmljb24gYW5kIGVtaXRzIGEgImljb24sY2hhbmdl
ZCIgc2lnbmFsIGlmIGl0IGhhcwotICogY2hhbmdlZC4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCB3aGVuZXZlciB0aGUgVVJMIGhhcyBjaGFuZ2VkIG9yIHdoZW4gdGhlIGljb24gZm9y
Ci0gKiB0aGUgY3VycmVudCBwYWdlIFVSTCBoYXMgY2hhbmdlZC4KLSAqLwotdm9pZCBld2tfdmll
d191cGRhdGVfaWNvbihFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7Ci0KLSAgICBFd2tfRmF2aWNvbl9EYXRhYmFzZSog
aWNvbkRhdGFiYXNlID0gcHJpdi0+Y29udGV4dC0+ZmF2aWNvbkRhdGFiYXNlKCk7Ci0gICAgQVNT
RVJUKGljb25EYXRhYmFzZSk7Ci0KLSAgICBwcml2LT5mYXZpY29uVVJMID0gZXdrX2Zhdmljb25f
ZGF0YWJhc2VfaWNvbl91cmxfZ2V0KGljb25EYXRhYmFzZSwgcHJpdi0+dXJsKTsKLSAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJpY29uLGNoYW5nZWQiLCAwKTsK
LX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgdGhhdCBhIG5hdmlnYXRpb24gcG9s
aWN5IGRlY2lzaW9uIHNob3VsZCBiZSB0YWtlbi4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJwb2xp
Y3ksZGVjaXNpb24sbmF2aWdhdGlvbiIuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfbmF2aWdhdGlvbl9w
b2xpY3lfZGVjaXNpb24oRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19OYXZpZ2F0aW9uX1BvbGlj
eV9EZWNpc2lvbiogZGVjaXNpb24pCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
Y2FsbChld2tWaWV3LCAicG9saWN5LGRlY2lzaW9uLG5hdmlnYXRpb24iLCBkZWNpc2lvbik7Ci19
Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIHRoYXQgYSBuZXcgd2luZG93IHBvbGlj
eSBkZWNpc2lvbiBzaG91bGQgYmUgdGFrZW4uCi0gKgotICogRW1pdHMgc2lnbmFsOiAicG9saWN5
LGRlY2lzaW9uLG5ldyx3aW5kb3ciLgotICovCi12b2lkIGV3a192aWV3X25ld193aW5kb3dfcG9s
aWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lf
RGVjaXNpb24qIGRlY2lzaW9uKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwoZXdrVmlldywgInBvbGljeSxkZWNpc2lvbixuZXcsd2luZG93IiwgZGVjaXNpb24pOworICAg
IHJldHVybiB2aWV3SW1wbC0+YmFja0ZvcndhcmRMaXN0LmdldCgpOwogfQogCiBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hh
ciogaHRtbCwgY29uc3QgY2hhciogYmFzZVVybCwgY29uc3QgY2hhciogdW5yZWFjaGFibGVVcmwp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZh
bHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBm
YWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgdmlld0lt
cGwsIGZhbHNlKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaHRtbCwgZmFs
c2UpOwogCiAgICAgaWYgKHVucmVhY2hhYmxlVXJsICYmICp1bnJlYWNoYWJsZVVybCkKLSAgICAg
ICAgcHJpdi0+cGFnZVByb3h5LT5sb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhTdHJpbmc6OmZyb21V
VEY4KGh0bWwpLCBiYXNlVXJsID8gU3RyaW5nOjpmcm9tVVRGOChiYXNlVXJsKSA6ICIiLCBTdHJp
bmc6OmZyb21VVEY4KHVucmVhY2hhYmxlVXJsKSk7CisgICAgICAgIHZpZXdJbXBsLT5wYWdlUHJv
eHktPmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoaHRtbCksIGJhc2VV
cmwgPyBTdHJpbmc6OmZyb21VVEY4KGJhc2VVcmwpIDogIiIsIFN0cmluZzo6ZnJvbVVURjgodW5y
ZWFjaGFibGVVcmwpKTsKICAgICBlbHNlCi0gICAgICAgIHByaXYtPnBhZ2VQcm94eS0+bG9hZEhU
TUxTdHJpbmcoU3RyaW5nOjpmcm9tVVRGOChodG1sKSwgYmFzZVVybCA/IFN0cmluZzo6ZnJvbVVU
RjgoYmFzZVVybCkgOiAiIik7CisgICAgICAgIHZpZXdJbXBsLT5wYWdlUHJveHktPmxvYWRIVE1M
U3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoaHRtbCksIGJhc2VVcmwgPyBTdHJpbmc6OmZyb21VVEY4
KGJhc2VVcmwpIDogIiIpOwogICAgIGV3a192aWV3X3VybF91cGRhdGUoZXdrVmlldyk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi0vKioKLSAq
IEBpbnRlcm5hbAotICogVGhlIHZpZXcgcmVjZWl2ZWQgYSBuZXcgaW50ZW50IHNlcnZpY2UgcmVn
aXN0cmF0aW9uLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImludGVudCxzZXJ2aWNlLHJlZ2lzdGVy
IiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfSW50ZW50X1NlcnZpY2UuCi0gKi8KLXZvaWQgZXdrX3Zp
ZXdfaW50ZW50X3NlcnZpY2VfcmVnaXN0ZXIoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3
a19JbnRlbnRfU2VydmljZSogZXdrSW50ZW50U2VydmljZSkKLXsKLSAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJpbnRlbnQsc2VydmljZSxyZWdpc3RlciIsIGNv
bnN0X2Nhc3Q8RXdrX0ludGVudF9TZXJ2aWNlKj4oZXdrSW50ZW50U2VydmljZSkpOwotfQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi0KIGNvbnN0IEV2YXNfT2JqZWN0KiBld2tf
dmlld19mcm9tX3BhZ2VfZ2V0KGNvbnN0IFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlKQogewog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwYWdlLCAwKTsKQEAgLTE2MTIsMzUg
KzExMDksMjcgQEAgY29uc3QgRXZhc19PYmplY3QqIGV3a192aWV3X2Zyb21fcGFnZV9nZXQoY29u
c3QgV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UpCiAgICAgcmV0dXJuIHBhZ2VWaWV3TWFwKCku
Z2V0KHBhZ2UpOwogfQogCi1XZWJQYWdlUHJveHkqIGV3a192aWV3X3BhZ2VfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCAwKTsKLQotICAgIHJldHVybiBwcml2LT5wYWdlUHJveHkuZ2V0KCk7Ci19
Ci0KIGNvbnN0IGNoYXIqIGV3a192aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdiwgMCk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgdmlld0ltcGwsIDApOwogCi0gICAgU3RyaW5nIGN1c3RvbUVuY29kaW5nID0gcHJp
di0+cGFnZVByb3h5LT5jdXN0b21UZXh0RW5jb2RpbmdOYW1lKCk7CisgICAgU3RyaW5nIGN1c3Rv
bUVuY29kaW5nID0gdmlld0ltcGwtPnBhZ2VQcm94eS0+Y3VzdG9tVGV4dEVuY29kaW5nTmFtZSgp
OwogICAgIGlmIChjdXN0b21FbmNvZGluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgcHJpdi0+Y3VzdG9tRW5jb2RpbmcgPSBjdXN0b21FbmNvZGluZy51dGY4KCkuZGF0YSgp
OworICAgIHZpZXdJbXBsLT5jdXN0b21FbmNvZGluZyA9IGN1c3RvbUVuY29kaW5nLnV0ZjgoKS5k
YXRhKCk7CiAKLSAgICByZXR1cm4gcHJpdi0+Y3VzdG9tRW5jb2Rpbmc7CisgICAgcmV0dXJuIHZp
ZXdJbXBsLT5jdXN0b21FbmNvZGluZzsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdf
ZW5jb2RpbmdfY3VzdG9tX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogZW5j
b2RpbmcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
dmlld0ltcGwsIGZhbHNlKTsKIAotICAgIHByaXYtPmN1c3RvbUVuY29kaW5nID0gZW5jb2Rpbmc7
Ci0gICAgcHJpdi0+cGFnZVByb3h5LT5zZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29kaW5n
ID8gZW5jb2RpbmcgOiBTdHJpbmcoKSk7CisgICAgdmlld0ltcGwtPmN1c3RvbUVuY29kaW5nID0g
ZW5jb2Rpbmc7CisgICAgdmlld0ltcGwtPnBhZ2VQcm94eS0+c2V0Q3VzdG9tVGV4dEVuY29kaW5n
TmFtZShlbmNvZGluZyA/IGVuY29kaW5nIDogU3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0xNjU4LDcgKzExNDcsMTAgQEAgV0tQYWdlUmVmIGV3a192aWV3X3BhZ2VfY3JlYXRl
KEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIGlmICghbmV3RXdrVmlldykKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V0tQYWdlUmVmPihXS1JldGFpbihld2tf
dmlld19wYWdlX2dldChuZXdFd2tWaWV3KSkpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obmV3RXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgbmV3Vmlld0ltcGwsIGZhbHNlKTsKKworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxXS1BhZ2VSZWY+KFdLUmV0YWluKG5ld1ZpZXdJbXBsLT5wYWdlKCkpKTsKIH0K
IAogLy8gRXdrRmluZE9wdGlvbnMgc2hvdWxkIGJlIG1hdGNoZWQgdXAgb3JkZXJzIHdpdGggV2tG
aW5kT3B0aW9ucy4KQEAgLTE2NzQsMTAgKzExNjYsMTAgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFV0tfRklORF9PUFRJT05TX1NIT1dfSElHSExJR0hULCBrV0tGaW5kT3B0aW9uc1No
b3cKIEVpbmFfQm9vbCBld2tfdmlld190ZXh0X2ZpbmQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNv
bnN0IGNoYXIqIHRleHQsIEV3a19GaW5kX09wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0
Y2hDb3VudCkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIGZhbHNlKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCB2aWV3SW1wbCwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0
ZXh0LCBmYWxzZSk7CiAKLSAgICBwcml2LT5wYWdlUHJveHktPmZpbmRTdHJpbmcoU3RyaW5nOjpm
cm9tVVRGOCh0ZXh0KSwgc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4ob3B0aW9ucyks
IG1heE1hdGNoQ291bnQpOworICAgIHZpZXdJbXBsLT5wYWdlUHJveHktPmZpbmRTdHJpbmcoU3Ry
aW5nOjpmcm9tVVRGOCh0ZXh0KSwgc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4ob3B0
aW9ucyksIG1heE1hdGNoQ291bnQpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNjg1LDkg
KzExNzcsOSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9maW5kKEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBjb25zdCBjaGFyKiB0ZXh0LCBFd2tfRmluZF9PcAogRWluYV9Cb29sIGV3a192aWV3X3Rl
eHRfZmluZF9oaWdobGlnaHRfY2xlYXIoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAg
RVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgdmlld0ltcGwsIGZhbHNlKTsK
IAotICAgIHByaXYtPnBhZ2VQcm94eS0+aGlkZUZpbmRVSSgpOworICAgIHZpZXdJbXBsLT5wYWdl
UHJveHktPmhpZGVGaW5kVUkoKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTY5NSwxMCAr
MTE4NywxMCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9maW5kX2hpZ2hsaWdodF9jbGVhcihF
dmFzX09iamVjdCogZXdrVmlldykKIEVpbmFfQm9vbCBld2tfdmlld190ZXh0X21hdGNoZXNfY291
bnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRleHQsIEV3a19GaW5kX09wdGlv
bnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFV0tfVklFV19J
TVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCB2aWV3SW1wbCwgZmFsc2UpOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0ZXh0LCBmYWxzZSk7CiAKLSAgICBwcml2LT5wYWdl
UHJveHktPmNvdW50U3RyaW5nTWF0Y2hlcyhTdHJpbmc6OmZyb21VVEY4KHRleHQpLCBzdGF0aWNf
Y2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPihvcHRpb25zKSwgbWF4TWF0Y2hDb3VudCk7CisgICAg
dmlld0ltcGwtPnBhZ2VQcm94eS0+Y291bnRTdHJpbmdNYXRjaGVzKFN0cmluZzo6ZnJvbVVURjgo
dGV4dCksIHN0YXRpY19jYXN0PFdlYktpdDo6RmluZE9wdGlvbnM+KG9wdGlvbnMpLCBtYXhNYXRj
aENvdW50KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTcwNyw5ICsxMTk5LDkgQEAgdm9p
ZCBld2tfdmlld19jb250ZW50c19zaXplX2NoYW5nZWQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGNvbnN0IEludFNpemUmIHMKIHsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworICAgIEVXS19WSUVX
X0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHZpZXdJbXBsKTsKIAotICAgIHByaXYtPnBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsK
KyAgICB2aWV3SW1wbC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+ZGlkQ2hhbmdlQ29u
dGVudHNTaXplKHNpemUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZXdrVmlldyk7CiAgICAg
VU5VU0VEX1BBUkFNKHNpemUpOwpAQCAtMTcyMiw3ICsxMjE0LDcgQEAgQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFV0tfVEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVCwgTFRSKTsKIHZv
aWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJQ
b3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGly
ZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3Rv
cjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KQogewogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKyAgICBFV0tfVklFV19JTVBM
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCB2aWV3SW1wbCk7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOwogCiAgICAgQVNTRVJUKHBvcHVwTWVudSk7CkBA
IC0xNzMwLDE1ICsxMjIyLDE1IEBAIHZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wCiAgICAgaWYgKCFz
bWFydERhdGEtPmFwaS0+cG9wdXBfbWVudV9zaG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAocHJpdi0+cG9wdXBNZW51UHJveHkpCisgICAgaWYgKHZpZXdJbXBsLT5wb3B1cE1lbnVQcm94
eSkKICAgICAgICAgZXdrX3ZpZXdfcG9wdXBfbWVudV9jbG9zZShld2tWaWV3KTsKLSAgICBwcml2
LT5wb3B1cE1lbnVQcm94eSA9IHBvcHVwTWVudTsKKyAgICB2aWV3SW1wbC0+cG9wdXBNZW51UHJv
eHkgPSBwb3B1cE1lbnU7CiAKICAgICBFaW5hX0xpc3QqIHBvcHVwSXRlbXMgPSAwOwogICAgIHNp
emVfdCBzaXplID0gaXRlbXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQogICAgICAgICBwb3B1cEl0ZW1zID0gZWluYV9saXN0X2FwcGVuZChwb3B1cEl0ZW1z
LCBFd2tfUG9wdXBfTWVudV9JdGVtOjpjcmVhdGUoaXRlbXNbaV0pLmxlYWtQdHIoKSk7Ci0gICAg
cHJpdi0+cG9wdXBNZW51SXRlbXMgPSBwb3B1cEl0ZW1zOworICAgIHZpZXdJbXBsLT5wb3B1cE1l
bnVJdGVtcyA9IHBvcHVwSXRlbXM7CiAKICAgICBzbWFydERhdGEtPmFwaS0+cG9wdXBfbWVudV9z
aG93KHNtYXJ0RGF0YSwgcmVjdCwgc3RhdGljX2Nhc3Q8RXdrX1RleHRfRGlyZWN0aW9uPih0ZXh0
RGlyZWN0aW9uKSwgcGFnZVNjYWxlRmFjdG9yLCBwb3B1cEl0ZW1zLCBzZWxlY3RlZEluZGV4KTsK
IH0KQEAgLTE3NDYsMTkgKzEyMzgsMTkgQEAgdm9pZCBld2tfdmlld19wb3B1cF9tZW51X3JlcXVl
c3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYlBvcHVwTWVudVByb3h5RWZsKiBwb3AKIEVpbmFf
Qm9vbCBld2tfdmlld19wb3B1cF9tZW51X2Nsb3NlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7
Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2Up
OworICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHZpZXdJbXBsLCBm
YWxzZSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBp
LCBmYWxzZSk7CiAKLSAgICBpZiAoIXByaXYtPnBvcHVwTWVudVByb3h5KQorICAgIGlmICghdmll
d0ltcGwtPnBvcHVwTWVudVByb3h5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBwcml2
LT5wb3B1cE1lbnVQcm94eSA9IDA7CisgICAgdmlld0ltcGwtPnBvcHVwTWVudVByb3h5ID0gMDsK
IAogICAgIGlmIChzbWFydERhdGEtPmFwaS0+cG9wdXBfbWVudV9oaWRlKQogICAgICAgICBzbWFy
dERhdGEtPmFwaS0+cG9wdXBfbWVudV9oaWRlKHNtYXJ0RGF0YSk7CiAKICAgICB2b2lkKiBpdGVt
OwotICAgIEVJTkFfTElTVF9GUkVFKHByaXYtPnBvcHVwTWVudUl0ZW1zLCBpdGVtKQorICAgIEVJ
TkFfTElTVF9GUkVFKHZpZXdJbXBsLT5wb3B1cE1lbnVJdGVtcywgaXRlbSkKICAgICAgICAgZGVs
ZXRlIHN0YXRpY19jYXN0PEV3a19Qb3B1cF9NZW51X0l0ZW0qPihpdGVtKTsKIAogICAgIHJldHVy
biB0cnVlOwpAQCAtMTc2NywxMyArMTI1OSwxMyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBf
bWVudV9jbG9zZShFdmFzX09iamVjdCogZXdrVmlldykKIEVpbmFfQm9vbCBld2tfdmlld19wb3B1
cF9tZW51X3NlbGVjdChFdmFzX09iamVjdCogZXdrVmlldywgdW5zaWduZWQgaW50IHNlbGVjdGVk
SW5kZXgpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCBmYWxzZSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYtPnBv
cHVwTWVudVByb3h5LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgdmlld0ltcGwsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwodmlld0ltcGwtPnBvcHVwTWVudVByb3h5LCBmYWxzZSk7CiAKLSAgICBpZiAoc2VsZWN0
ZWRJbmRleCA+PSBlaW5hX2xpc3RfY291bnQocHJpdi0+cG9wdXBNZW51SXRlbXMpKQorICAgIGlm
IChzZWxlY3RlZEluZGV4ID49IGVpbmFfbGlzdF9jb3VudCh2aWV3SW1wbC0+cG9wdXBNZW51SXRl
bXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBwcml2LT5wb3B1cE1lbnVQcm94eS0+
dmFsdWVDaGFuZ2VkKHNlbGVjdGVkSW5kZXgpOworICAgIHZpZXdJbXBsLT5wb3B1cE1lbnVQcm94
eS0+dmFsdWVDaGFuZ2VkKHNlbGVjdGVkSW5kZXgpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBA
IC0xNzgxLDEzICsxMjczLDEzIEBAIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9tZW51X3NlbGVj
dChFdmFzX09iamVjdCogZXdrVmlldywgdW5zaWduZWQgaW50IHNlbGVjdGVkCiBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2VuYWJsZWRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBF
aW5hX0Jvb2wgZW5hYmxlZCkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCB2aWV3SW1wbCwgZmFsc2UpOwogCiAgICAgZW5hYmxlZCA9ICEhZW5hYmxlZDsK
LSAgICBpZiAocHJpdi0+YXJlTW91c2VFdmVudHNFbmFibGVkID09IGVuYWJsZWQpCisgICAgaWYg
KHZpZXdJbXBsLT5hcmVNb3VzZUV2ZW50c0VuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBwcml2LT5hcmVNb3VzZUV2ZW50c0VuYWJsZWQgPSBlbmFibGVkOwor
ICAgIHZpZXdJbXBsLT5hcmVNb3VzZUV2ZW50c0VuYWJsZWQgPSBlbmFibGVkOwogICAgIGlmIChl
bmFibGVkKSB7CiAgICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChld2tWaWV3
LCBFVkFTX0NBTExCQUNLX01PVVNFX0RPV04sIF9ld2tfdmlld19vbl9tb3VzZV9kb3duLCBzbWFy
dERhdGEpOwogICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQoZXdrVmlldywg
RVZBU19DQUxMQkFDS19NT1VTRV9VUCwgX2V3a192aWV3X29uX21vdXNlX3VwLCBzbWFydERhdGEp
OwpAQCAtMTgwNCw5ICsxMjk2LDkgQEAgRWluYV9Cb29sIGV3a192aWV3X21vdXNlX2V2ZW50c19l
bmFibGVkX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGVuYWIKIEVpbmFfQm9v
bCBld2tfdmlld19tb3VzZV9ldmVudHNfZW5hYmxlZF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3
a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
dmlld0ltcGwsIGZhbHNlKTsKIAotICAgIHJldHVybiBwcml2LT5hcmVNb3VzZUV2ZW50c0VuYWJs
ZWQ7CisgICAgcmV0dXJuIHZpZXdJbXBsLT5hcmVNb3VzZUV2ZW50c0VuYWJsZWQ7CiB9CiAKIC8q
KgpAQCAtMTgxOCwxMyArMTMxMCwxMyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfbW91c2VfZXZlbnRz
X2VuYWJsZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogdm9pZCBld2tfdmlld193
ZWJwcm9jZXNzX2NyYXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworICAgIEVXS19WSUVXX0lNUExfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHZpZXdJbXBsKTsKIAogICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNl
OwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgIndlYnByb2Nl
c3MsY3Jhc2hlZCIsICZoYW5kbGVkKTsKIAogICAgIGlmICghaGFuZGxlZCkgewotICAgICAgICBD
U3RyaW5nIHVybCA9IHByaXYtPnBhZ2VQcm94eS0+dXJsQXRQcm9jZXNzRXhpdCgpLnV0ZjgoKTsK
KyAgICAgICAgQ1N0cmluZyB1cmwgPSB2aWV3SW1wbC0+cGFnZVByb3h5LT51cmxBdFByb2Nlc3NF
eGl0KCkudXRmOCgpOwogICAgICAgICBXQVJOKCJXQVJOSU5HOiBUaGUgd2ViIHByb2Nlc3MgZXhw
ZXJpZW5jZWQgYSBjcmFzaCBvbiAnJXMnLlxuIiwgdXJsLmRhdGEoKSk7CiAKICAgICAgICAgLy8g
RGlzcGxheSBhbiBlcnJvciBwYWdlCkBAIC0xODc3LDQ5ICsxMzY5LDE3IEBAIFdLRWluYVNoYXJl
ZFN0cmluZyBld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGNvbnN0IFdLCiAgICAgcmV0dXJuIFdLRWluYVNoYXJlZFN0cmluZzo6YWRvcHQoc21hcnRE
YXRhLT5hcGktPnJ1bl9qYXZhc2NyaXB0X3Byb21wdChzbWFydERhdGEsIG1lc3NhZ2UsIGRlZmF1
bHRWYWx1ZSkpOwogfQogCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0vKioKLSAqIEBp
bnRlcm5hbAotICogUmVxdWVzdHMgdG8gc2hvdyBleHRlcm5hbCBjb2xvciBwaWNrZXIuCi0gKi8K
LXZvaWQgZXdrX3ZpZXdfY29sb3JfcGlja2VyX3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGludCByLCBpbnQgZywgaW50IGIsIGludCBhLCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJS
ZWYgbGlzdGVuZXIpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5pbnB1
dF9waWNrZXJfY29sb3JfcmVxdWVzdCk7Ci0KLSAgICBwcml2LT5jb2xvclBpY2tlclJlc3VsdExp
c3RlbmVyID0gbGlzdGVuZXI7Ci0KLSAgICBzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2VyX2Nv
bG9yX3JlcXVlc3Qoc21hcnREYXRhLCByLCBnLCBiLCBhKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJu
YWwKLSAqIFJlcXVlc3RzIHRvIGhpZGUgZXh0ZXJuYWwgY29sb3IgcGlja2VyLgotICovCi12b2lk
IGV3a192aWV3X2NvbG9yX3BpY2tlcl9kaXNtaXNzKEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewot
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX2Rp
c21pc3MpOwotCi0gICAgcHJpdi0+Y29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5jbGVhcigpOwot
Ci0gICAgc21hcnREYXRhLT5hcGktPmlucHV0X3BpY2tlcl9jb2xvcl9kaXNtaXNzKHNtYXJ0RGF0
YSk7Ci19Ci0jZW5kaWYKLQogRWluYV9Cb29sIGV3a192aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9z
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCByLCBpbnQgZywgaW50IGIsIGludCBhKQogewog
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChwcml2LT5jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLCBmYWxzZSk7CisgICAg
RVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgdmlld0ltcGwsIGZhbHNlKTsK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodmlld0ltcGwtPmNvbG9yUGlja2Vy
UmVzdWx0TGlzdGVuZXIsIGZhbHNlKTsKIAogICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yID0gV2Vi
Q29yZTo6Q29sb3IociwgZywgYiwgYSk7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGNv
bG9yU3RyaW5nKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbG9yLnNl
cmlhbGl6ZWQoKS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgV0tDb2xvclBpY2tlclJlc3VsdExpc3Rl
bmVyU2V0Q29sb3IocHJpdi0+Y29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5nZXQoKSwgY29sb3JT
dHJpbmcuZ2V0KCkpOwotICAgIHByaXYtPmNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuY2xlYXIo
KTsKKyAgICBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJTZXRDb2xvcih2aWV3SW1wbC0+Y29s
b3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5nZXQoKSwgY29sb3JTdHJpbmcuZ2V0KCkpOworICAgIHZp
ZXdJbXBsLT5jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmNsZWFyKCk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKICNlbHNlCkBAIC0xOTMyLDEyICsxMzkyLDEyIEBAIEVpbmFfQm9vbCBld2tfdmlld19m
ZWVkX3RvdWNoX2V2ZW50KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfVG91Y2hfRXZlbnRfVHlw
ZSB0CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwocG9pbnRzLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgdmlld0ltcGwsIGZhbHNlKTsKIAogICAgIEV2YXNfUG9pbnQgcG9zaXRp
b24gPSB7IHNtYXJ0RGF0YS0+dmlldy54LCBzbWFydERhdGEtPnZpZXcueSB9OwogICAgIC8vIEZJ
WE1FOiBUb3VjaCBwb2ludHMgZG8gbm90IHRha2Ugc2Nyb2xsIHBvc2l0aW9uIGFuZCBzY2FsZSBp
bnRvIGFjY291bnQgd2hlbiAKICAgICAvLyBUSUxFRF9CQUNLSU5HX1NUT1JFIGlzIGVuYWJsZWQu
Ci0gICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVUb3VjaEV2ZW50KE5hdGl2ZVdlYlRvdWNoRXZl
bnQodHlwZSwgcG9pbnRzLCBtb2RpZmllcnMsICZwb3NpdGlvbiwgZWNvcmVfdGltZV9nZXQoKSkp
OworICAgIHZpZXdJbXBsLT5wYWdlUHJveHktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91
Y2hFdmVudCh0eXBlLCBwb2ludHMsIG1vZGlmaWVycywgJnBvc2l0aW9uLCBlY29yZV90aW1lX2dl
dCgpKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCkBAIC0xOTQ5LDEzICsxNDA5LDEzIEBA
IEVpbmFfQm9vbCBld2tfdmlld190b3VjaF9ldmVudHNfZW5hYmxlZF9zZXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFiCiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwot
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsK
KyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCB2aWV3SW1wbCwgZmFs
c2UpOwogCiAgICAgZW5hYmxlZCA9ICEhZW5hYmxlZDsKLSAgICBpZiAocHJpdi0+YXJlVG91Y2hF
dmVudHNFbmFibGVkID09IGVuYWJsZWQpCisgICAgaWYgKHZpZXdJbXBsLT5hcmVUb3VjaEV2ZW50
c0VuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBwcml2LT5h
cmVUb3VjaEV2ZW50c0VuYWJsZWQgPSBlbmFibGVkOworICAgIHZpZXdJbXBsLT5hcmVUb3VjaEV2
ZW50c0VuYWJsZWQgPSBlbmFibGVkOwogICAgIGlmIChlbmFibGVkKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBXZSBoYXZlIHRvIGNvbm5lY3QgdG91Y2ggY2FsbGJhY2tzIHdpdGggbW91c2UgYW5kIG11
bHRpIGV2ZW50cwogICAgICAgICAvLyBiZWNhdXNlIHRoZSBFdmFzIGNyZWF0ZXMgbW91c2UgZXZl
bnRzIGZvciBmaXJzdCB0b3VjaCBhbmQgbXVsdGkgZXZlbnRzCkBAIC0xOTg3LDkgKzE0NDcsOSBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdG91Y2hfZXZlbnRzX2VuYWJsZWRfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQogewogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRVdL
X1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgdmlld0ltcGwsIGZhbHNlKTsKIAot
ICAgIHJldHVybiBwcml2LT5hcmVUb3VjaEV2ZW50c0VuYWJsZWQ7CisgICAgcmV0dXJuIHZpZXdJ
bXBsLT5hcmVUb3VjaEV2ZW50c0VuYWJsZWQ7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNl
bmRpZgpAQCAtMTk5OSw5ICsxNDU5LDkgQEAgRWluYV9Cb29sIGV3a192aWV3X2luc3BlY3Rvcl9z
aG93KEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Cisg
ICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgdmlld0ltcGwsIGZhbHNl
KTsKIAotICAgIFdlYkluc3BlY3RvclByb3h5KiBpbnNwZWN0b3IgPSBwcml2LT5wYWdlUHJveHkt
Pmluc3BlY3RvcigpOworICAgIFdlYkluc3BlY3RvclByb3h5KiBpbnNwZWN0b3IgPSB2aWV3SW1w
bC0+cGFnZVByb3h5LT5pbnNwZWN0b3IoKTsKICAgICBpZiAoaW5zcGVjdG9yKQogICAgICAgICBp
bnNwZWN0b3ItPnNob3coKTsKIApAQCAtMjAxNSw5ICsxNDc1LDkgQEAgRWluYV9Cb29sIGV3a192
aWV3X2luc3BlY3Rvcl9jbG9zZShFdmFzX09iamVjdCogZXdrVmlldykKIHsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnRE
YXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdiwgZmFsc2UpOworICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHZpZXdJbXBsLCBmYWxzZSk7CiAKLSAgICBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVjdG9yID0g
cHJpdi0+cGFnZVByb3h5LT5pbnNwZWN0b3IoKTsKKyAgICBXZWJJbnNwZWN0b3JQcm94eSogaW5z
cGVjdG9yID0gdmlld0ltcGwtPnBhZ2VQcm94eS0+aW5zcGVjdG9yKCk7CiAgICAgaWYgKGluc3Bl
Y3RvcikKICAgICAgICAgaW5zcGVjdG9yLT5jbG9zZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggYmFlZDVmOS4u
Y2ZiZWJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3X3ByaXZhdGUuaApAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBld2tfdmlld19wcml2
YXRlX2gKIAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgImV3a192aWV3Lmgi
CiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPFdLRWluYVNoYXJlZFN0cmluZy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVGV4dERpcmVjdGlvbi5oPgpAQCAtMjksNyArMzAsNiBAQAogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ3Vyc29yOwog
Y2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiB9CkBAIC01Myw2NCArNTMsMTUgQEAgdHlw
ZWRlZiBzdHJ1Y3QgRXdrX0ludGVudCBFd2tfSW50ZW50OwogdHlwZWRlZiBzdHJ1Y3QgRXdrX0lu
dGVudF9TZXJ2aWNlIEV3a19JbnRlbnRfU2VydmljZTsKICNlbmRpZgogCi12b2lkIGV3a192aWV3
X2N1cnNvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdlYkNvcmU6OkN1cnNvciYg
Y3Vyc29yKTsKLXZvaWQgZXdrX3ZpZXdfZGlzcGxheShFdmFzX09iamVjdCogZXdrVmlldywgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7Ci12b2lkIGV3a192aWV3X2Rvd25sb2FkX2pvYl9j
YW5jZWxsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9hZF9Kb2IqKTsKLXZvaWQg
ZXdrX3ZpZXdfZG93bmxvYWRfam9iX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rv
d25sb2FkX0pvYiosIEV3a19FcnJvciopOwotdm9pZCBld2tfdmlld19kb3dubG9hZF9qb2JfZmlu
aXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9hZF9Kb2IqKTsKLXZvaWQgZXdr
X3ZpZXdfZG93bmxvYWRfam9iX3JlcXVlc3RlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rv
d25sb2FkX0pvYiopOwotdm9pZCBld2tfdmlld19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9uZXco
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdCopOwotI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLXZvaWQgZXdrX3ZpZXdfZnVsbF9zY3JlZW5fZW50ZXIo
RXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19mdWxsX3NjcmVlbl9leGl0KEV2
YXNfT2JqZWN0KiBld2tWaWV3KTsKLSNlbmRpZgotdm9pZCBld2tfdmlld19pbWFnZV9kYXRhX3Nl
dChFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogaW1hZ2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBzaXplKTsKLXZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdr
VmlldywgY29uc3QgRXdrX0Vycm9yKiBlcnJvcik7Ci12b2lkIGV3a192aWV3X2xvYWRfZmluaXNo
ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld19sb2FkX3Byb2dyZXNzX2No
YW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGRvdWJsZSBwcm9ncmVzcyk7Ci12b2lkIGV3a192
aWV3X2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBF
d2tfRXJyb3IqIGVycm9yKTsKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLXZvaWQgZXdr
X3ZpZXdfbG9hZF9jb21taXR0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotI2VuZGlmCi12b2lk
IGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfcmVkaXJlY3QoRXZhc19PYmplY3QqIGV3a1ZpZXcp
Owotdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX3N0YXJ0ZWQoRXZhc19PYmplY3QqIGV3
a1ZpZXcpOwotdm9pZCBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihFdmFzX09i
amVjdCogZXdrVmlldywgRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbik7
Ci12b2lkIGV3a192aWV3X25ld193aW5kb3dfcG9saWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGRlY2lzaW9uKTsKIHZvaWQg
ZXdrX3ZpZXdfcGFnZV9jbG9zZShFdmFzX09iamVjdCogZXdrVmlldyk7CiBXS1BhZ2VSZWYgZXdr
X3ZpZXdfcGFnZV9jcmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotdm9pZCBld2tfdmlld190
aXRsZV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB0aXRsZSk7Ci12
b2lkIGV3a192aWV3X3Rvb2x0aXBfdGV4dF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0
IGNoYXIqIHRleHQpOwotdm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZChFdmFzX09i
amVjdCogZXdrVmlldywgRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX0Vycm9yKiBlcnJvcik7
Ci12b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEV3a19SZXNvdXJjZSogcmVzb3VyY2UpOwotdm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2Fk
X2luaXRpYXRlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX1Jlc291cmNlKiByZXNvdXJjZSwg
RXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0KTsKLXZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9y
ZXNwb25zZShFdmFzX09iamVjdCogZXdrVmlldywgRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdr
X1VybF9SZXNwb25zZSogcmVzcG9uc2UpOwotdm9pZCBld2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0
X3NlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19V
cmxfUmVxdWVzdCogcmVxdWVzdCwgRXdrX1VybF9SZXNwb25zZSogcmVkaXJlY3RSZXNwb25zZSk7
Ci12b2lkIGV3a192aWV3X3RleHRfZm91bmQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVuc2lnbmVk
IGludCBtYXRjaENvdW50KTsKIHZvaWQgZXdrX3ZpZXdfdGV4dF9pbnB1dF9zdGF0ZV91cGRhdGUo
RXZhc19PYmplY3QqIGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld191cmxfdXBkYXRlKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KTsKIHZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2VkKGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7Ci12b2lkIGV3
a192aWV3X2JhY2tfZm9yd2FyZF9saXN0X2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwot
dm9pZCBld2tfdmlld191cGRhdGVfaWNvbihFdmFzX09iamVjdCogZXdrVmlldyk7Ci0KLVdLUGFn
ZVJlZiBld2tfdmlld193a3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIAog
RXZhc19PYmplY3QqIGV3a192aWV3X2Jhc2VfYWRkKEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVm
LCBXS1BhZ2VHcm91cFJlZik7CiAKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi12b2lkIGV3a192
aWV3X2ludGVudF9yZXF1ZXN0X25ldyhFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0lu
dGVudCogZXdrSW50ZW50KTsKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi12
b2lkIGV3a192aWV3X2ludGVudF9zZXJ2aWNlX3JlZ2lzdGVyKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBjb25zdCBFd2tfSW50ZW50X1NlcnZpY2UqIGV3a0ludGVudFNlcnZpY2UpOwotI2VuZGlmCi0K
IGNvbnN0IEV2YXNfT2JqZWN0KiBld2tfdmlld19mcm9tX3BhZ2VfZ2V0KGNvbnN0IFdlYktpdDo6
V2ViUGFnZVByb3h5Kik7Ci1XZWJLaXQ6OldlYlBhZ2VQcm94eSogZXdrX3ZpZXdfcGFnZV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotV2ViQ29yZTo6SW50U2l6ZSBld2tfdmlld19z
aXplX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7Ci0KLSNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCi1ib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX21v
ZGVfZW50ZXIoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotYm9vbCBld2tfdmlld19hY2Nl
bGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2V4aXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
OwotI2VuZGlmCiAKIHZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnUsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNj
YWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50
MzJfdCBzZWxlY3RlZEluZGV4KTsKIHZvaWQgZXdrX3ZpZXdfd2VicHJvY2Vzc19jcmFzaGVkKEV2
YXNfT2JqZWN0KiBld2tWaWV3KTsKQEAgLTExOSwxMSArNzAsNiBAQCB2b2lkIGV3a192aWV3X3J1
bl9qYXZhc2NyaXB0X2FsZXJ0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXS0VpbmFTaGFy
ZWRTdHJpbgogYm9vbCBld2tfdmlld19ydW5famF2YXNjcmlwdF9jb25maXJtKEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2UpOwogV0tFaW5hU2hh
cmVkU3RyaW5nIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFdmFzX09iamVjdCogZXdr
VmlldywgY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBXS0VpbmFTaGFy
ZWRTdHJpbmcmIGRlZmF1bHRWYWx1ZSk7CiAKLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
LXZvaWQgZXdrX3ZpZXdfY29sb3JfcGlja2VyX3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGludCByLCBpbnQgZywgaW50IGIsIGludCBhLCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJS
ZWYgbGlzdGVuZXIpOwotdm9pZCBld2tfdmlld19jb2xvcl9waWNrZXJfZGlzbWlzcyhFdmFzX09i
amVjdCogZXdrVmlldyk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiB1bnNp
Z25lZCBsb25nIGxvbmcgZXdrX3ZpZXdfZGF0YWJhc2VfcXVvdGFfZXhjZWVkZWQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIGRhdGFiYXNlTmFtZSwgY29uc3QgY2hhciogZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9u
ZyBjdXJyZW50T3JpZ2luVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50RGF0YWJhc2VV
c2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2UpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcApp
bmRleCA0ZDk4ZjlmLi43MWY0OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNs
dWRlIDxjYWlyby5oPgogCiAjaWYgUExBVEZPUk0oRUZMKQotI2luY2x1ZGUgImV3a192aWV3X3By
aXZhdGUuaCIKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgogI2VuZGlmCiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpAQCAtNzEsNyArNzEsOCBAQCB2b2lkIEJhY2tpbmdTdG9yZTo6aW5jb3Jw
b3JhdGVVcGRhdGUoU2hhcmVhYmxlQml0bWFwKiBiaXRtYXAsIGNvbnN0IFVwZGF0ZUluZm8mCiAK
ICNpZiBQTEFURk9STShFRkwpCiAgICAgLy8gVXBkYXRlIGV3a192aWV3IHdpdGggbmV3IGJhY2tp
bmdTdG9yZSBpbWFnZS4KLSAgICBld2tfdmlld19pbWFnZV9kYXRhX3NldChtX3dlYlBhZ2VQcm94
eS0+dmlld1dpZGdldCgpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fYmFja2luZ1N0
b3JlLT5jYWlyb1N1cmZhY2UoKSksIG1fc2l6ZSk7CisgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBs
ID0gRXdrVmlld0ltcGw6OmZyb21FdmFzT2JqZWN0KG1fd2ViUGFnZVByb3h5LT52aWV3V2lkZ2V0
KCkpOworICAgIHZpZXdJbXBsLT5zZXRJbWFnZURhdGEoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
ZGF0YShtX2JhY2tpbmdTdG9yZS0+Y2Fpcm9TdXJmYWNlKCkpLCBtX3NpemUpOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5h
Z2VyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2Vy
RWZsLmNwcAppbmRleCA3MmE3YTBjLi5hNzg2YWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwCkBAIC0yNywxMSArMjcsMTEg
QEAKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXJFZmwuaCIKIAogI2luY2x1ZGUgIkRvd25sb2Fk
UHJveHkuaCIKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgogI2luY2x1ZGUgIldLQ29udGV4dC5o
IgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5o
IgogI2luY2x1ZGUgImV3a19lcnJvcl9wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3ZpZXdfcHJp
dmF0ZS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDksNyArNDksNyBAQCBXS1N0cmlu
Z1JlZiBEb3dubG9hZE1hbmFnZXJFZmw6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKFdLQ29udGV4dAogCiAgICAgLy8gV2Ugc2VuZCB0aGUgbmV3IGRvd25sb2FkIHNpZ25h
bCBvbiB0aGUgRXdrX1ZpZXcgb25seSBvbmNlIHdlIGhhdmUgcmVjZWl2ZWQgdGhlIHJlc3BvbnNl
CiAgICAgLy8gYW5kIHRoZSBzdWdnZXN0ZWQgZmlsZSBuYW1lLgotICAgIGV3a192aWV3X2Rvd25s
b2FkX2pvYl9yZXF1ZXN0ZWQoZG93bmxvYWQtPnZpZXcoKSwgZG93bmxvYWQpOworICAgIGRvd25s
b2FkLT52aWV3SW1wbCgpLT5yZXBvcnREb3dubG9hZEpvYlJlcXVlc3RlZChkb3dubG9hZCk7CiAK
ICAgICAvLyBEb3dubG9hZFNvdXAgZXhwZWN0cyB0aGUgZGVzdGluYXRpb24gdG8gYmUgYSBVUkwu
CiAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gQVNDSUlMaXRlcmFsKCJmaWxlOi8vIikgKyBTdHJp
bmc6OmZyb21VVEY4KGRvd25sb2FkLT5kZXN0aW5hdGlvbigpKTsKQEAgLTg4LDcgKzg4LDcgQEAg
dm9pZCBEb3dubG9hZE1hbmFnZXJFZmw6OmRpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2Fk
UmVmIHdrRG93bmxvYWQsIFdLRXJyb3IKIAogICAgIE93blB0cjxFd2tfRXJyb3I+IGV3a0Vycm9y
ID0gRXdrX0Vycm9yOjpjcmVhdGUoZXJyb3IpOwogICAgIGRvd25sb2FkLT5zZXRTdGF0ZShFV0tf
RE9XTkxPQURfSk9CX1NUQVRFX0ZBSUxFRCk7Ci0gICAgZXdrX3ZpZXdfZG93bmxvYWRfam9iX2Zh
aWxlZChkb3dubG9hZC0+dmlldygpLCBkb3dubG9hZCwgZXdrRXJyb3IuZ2V0KCkpOworICAgIGRv
d25sb2FkLT52aWV3SW1wbCgpLT5yZXBvcnREb3dubG9hZEpvYkZhaWxlZChkb3dubG9hZCwgZXdr
RXJyb3IuZ2V0KCkpOwogICAgIGRvd25sb2FkTWFuYWdlci0+dW5yZWdpc3RlckRvd25sb2FkSm9i
KGRvd25sb2FkSWQpOwogfQogCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBEb3dubG9hZE1hbmFn
ZXJFZmw6OmRpZENhbmNlbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYgd2tEb3dubG9hZCwg
Y29uc3QKICAgICBBU1NFUlQoZG93bmxvYWQpOwogCiAgICAgZG93bmxvYWQtPnNldFN0YXRlKEVX
S19ET1dOTE9BRF9KT0JfU1RBVEVfQ0FOQ0VMTEVEKTsKLSAgICBld2tfdmlld19kb3dubG9hZF9q
b2JfY2FuY2VsbGVkKGRvd25sb2FkLT52aWV3KCksIGRvd25sb2FkKTsKKyAgICBkb3dubG9hZC0+
dmlld0ltcGwoKS0+cmVwb3J0RG93bmxvYWRKb2JDYW5jZWxsZWQoZG93bmxvYWQpOwogICAgIGRv
d25sb2FkTWFuYWdlci0+dW5yZWdpc3RlckRvd25sb2FkSm9iKGRvd25sb2FkSWQpOwogfQogCkBA
IC0xMTIsNyArMTEyLDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXJFZmw6OmRpZEZpbmlzaChXS0Nv
bnRleHRSZWYsIFdLRG93bmxvYWRSZWYgd2tEb3dubG9hZCwgY29uc3QKICAgICBBU1NFUlQoZG93
bmxvYWQpOwogCiAgICAgZG93bmxvYWQtPnNldFN0YXRlKEVXS19ET1dOTE9BRF9KT0JfU1RBVEVf
RklOSVNIRUQpOwotICAgIGV3a192aWV3X2Rvd25sb2FkX2pvYl9maW5pc2hlZChkb3dubG9hZC0+
dmlldygpLCBkb3dubG9hZCk7CisgICAgZG93bmxvYWQtPnZpZXdJbXBsKCktPnJlcG9ydERvd25s
b2FkSm9iRmluaXNoZWQoZG93bmxvYWQpOwogICAgIGRvd25sb2FkTWFuYWdlci0+dW5yZWdpc3Rl
ckRvd25sb2FkSm9iKGRvd25sb2FkSWQpOwogfQogCkBAIC0xMzUsMTMgKzEzNSwxMyBAQCBEb3du
bG9hZE1hbmFnZXJFZmw6OkRvd25sb2FkTWFuYWdlckVmbChFd2tfQ29udGV4dCogY29udGV4dCkK
ICAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChjb250ZXh0LT53a0NvbnRleHQoKSwgJndr
RG93bmxvYWRDbGllbnQpOwogfQogCi12b2lkIERvd25sb2FkTWFuYWdlckVmbDo6cmVnaXN0ZXJE
b3dubG9hZChEb3dubG9hZFByb3h5KiBkb3dubG9hZCwgRXZhc19PYmplY3QqIHZpZXcpCit2b2lk
IERvd25sb2FkTWFuYWdlckVmbDo6cmVnaXN0ZXJEb3dubG9hZChEb3dubG9hZFByb3h5KiBkb3du
bG9hZCwgRXdrVmlld0ltcGwqIHZpZXdJbXBsKQogewogICAgIHVpbnQ2NF90IGRvd25sb2FkSWQg
PSBkb3dubG9hZC0+ZG93bmxvYWRJRCgpOwogICAgIGlmIChtX2Rvd25sb2FkSm9icy5jb250YWlu
cyhkb3dubG9hZElkKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEV3a19Eb3dubG9h
ZF9Kb2I+IGV3a0Rvd25sb2FkID0gRXdrX0Rvd25sb2FkX0pvYjo6Y3JlYXRlKGRvd25sb2FkLCB2
aWV3KTsKKyAgICBSZWZQdHI8RXdrX0Rvd25sb2FkX0pvYj4gZXdrRG93bmxvYWQgPSBFd2tfRG93
bmxvYWRfSm9iOjpjcmVhdGUoZG93bmxvYWQsIHZpZXdJbXBsKTsKICAgICBtX2Rvd25sb2FkSm9i
cy5hZGQoZG93bmxvYWRJZCwgZXdrRG93bmxvYWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuaAppbmRleCBjMWZmNDBkLi41NTY4
ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFu
YWdlckVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5h
Z2VyRWZsLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IERvd25sb2FkTWFuYWdlckVmbChjb250ZXh0KSk7CiAgICAgfQogCi0gICAgdm9pZCBy
ZWdpc3RlckRvd25sb2FkKERvd25sb2FkUHJveHkqLCBFdmFzX09iamVjdCogdmlldyk7CisgICAg
dm9pZCByZWdpc3RlckRvd25sb2FkKERvd25sb2FkUHJveHkqLCBFd2tWaWV3SW1wbCopOwogCiBw
cml2YXRlOgogICAgIERvd25sb2FkTWFuYWdlckVmbChFd2tfQ29udGV4dCopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHAKaW5kZXggNzM1NTA2Yi4u
OTUyYmVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9GaW5kQ2xp
ZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0ZpbmRDbGllbnRF
ZmwuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
RmluZENsaWVudEVmbC5oIgogCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKICNpbmNsdWRlICJX
S1BhZ2UuaCIKICNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCiAKQEAgLTQwLDE5ICs0MSwx
OSBAQCBzdGF0aWMgaW5saW5lIEZpbmRDbGllbnRFZmwqIHRvRmluZENsaWVudEVmbChjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQogdm9pZCBGaW5kQ2xpZW50RWZsOjpkaWRGaW5kU3RyaW5nKFdLUGFn
ZVJlZiwgV0tTdHJpbmdSZWYsIHVuc2lnbmVkIG1hdGNoQ291bnQsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCiB7CiAgICAgRmluZENsaWVudEVmbCogZmluZENsaWVudCA9IHRvRmluZENsaWVudEVm
bChjbGllbnRJbmZvKTsKLSAgICBld2tfdmlld190ZXh0X2ZvdW5kKGZpbmRDbGllbnQtPm1fdmll
dywgbWF0Y2hDb3VudCk7CisgICAgZmluZENsaWVudC0+bV92aWV3SW1wbC0+cmVwb3J0VGV4dEZv
dW5kKG1hdGNoQ291bnQpOwogfQogCiB2b2lkIEZpbmRDbGllbnRFZmw6OmRpZEZhaWxUb0ZpbmRT
dHJpbmcoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
ICAgICBGaW5kQ2xpZW50RWZsKiBmaW5kQ2xpZW50ID0gdG9GaW5kQ2xpZW50RWZsKGNsaWVudElu
Zm8pOwotICAgIGV3a192aWV3X3RleHRfZm91bmQoZmluZENsaWVudC0+bV92aWV3LCAwKTsKKyAg
ICBmaW5kQ2xpZW50LT5tX3ZpZXdJbXBsLT5yZXBvcnRUZXh0Rm91bmQoMCk7CiB9CiAKLUZpbmRD
bGllbnRFZmw6OkZpbmRDbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXcpCi0gICAgOiBtX3ZpZXco
dmlldykKK0ZpbmRDbGllbnRFZmw6OkZpbmRDbGllbnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBs
KQorICAgIDogbV92aWV3SW1wbCh2aWV3SW1wbCkKIHsKLSAgICBXS1BhZ2VSZWYgcGFnZVJlZiA9
IGV3a192aWV3X3drcGFnZV9nZXQobV92aWV3KTsKKyAgICBXS1BhZ2VSZWYgcGFnZVJlZiA9IG1f
dmlld0ltcGwtPndrUGFnZSgpOwogICAgIEFTU0VSVChwYWdlUmVmKTsKIAogICAgIFdLUGFnZUZp
bmRDbGllbnQgZmluZENsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvRmluZENsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9GaW5k
Q2xpZW50RWZsLmgKaW5kZXggYjM3ZGFlZS4uMjc0NDYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmgKQEAgLTMwLDIyICszMCwyNCBAQAogI2luY2x1
ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAorY2xh
c3MgRXdrVmlld0ltcGw7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBGaW5kQ2xpZW50
RWZsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxGaW5kQ2xpZW50RWZsPiBjcmVh
dGUoRXZhc19PYmplY3QqIHZpZXcpCisgICAgc3RhdGljIFBhc3NPd25QdHI8RmluZENsaWVudEVm
bD4gY3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgRmluZENsaWVudEVmbCh2aWV3KSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgRmluZENsaWVudEVmbCh2aWV3SW1wbCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBGaW5kQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KTsKKyAgICBleHBsaWNpdCBG
aW5kQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKik7CiAKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5kU3Ry
aW5nKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYsIHVuc2lnbmVkIG1hdGNoQ291bnQsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxUb0ZpbmRTdHJpbmcoV0tQ
YWdlUmVmLCBXS1N0cmluZ1JlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKLSAgICBFdmFz
X09iamVjdCogbV92aWV3OworICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL0Zvcm1DbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Gb3Jt
Q2xpZW50RWZsLmNwcAppbmRleCA2NTA2MjBhLi5hMjA5MjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Zvcm1DbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb3JtQ2xpZW50RWZsLmgiCiAKKyNpbmNsdWRl
ICJFd2tWaWV3SW1wbC5oIgogI2luY2x1ZGUgIldLUGFnZS5oIgogI2luY2x1ZGUgImV3a19mb3Jt
X3N1Ym1pc3Npb25fcmVxdWVzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0
ZS5oIgpAQCAtNDIsMTMgKzQzLDEzIEBAIHZvaWQgRm9ybUNsaWVudEVmbDo6d2lsbFN1Ym1pdEZv
cm0oV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIC8qZnJhbWUqLywgV0tGcmFtZVJlZiAvCiAgICAgRm9y
bUNsaWVudEVmbCogZm9ybUNsaWVudCA9IHRvRm9ybUNsaWVudEVmbChjbGllbnRJbmZvKTsKIAog
ICAgIFJlZlB0cjxFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3Q+IHJlcXVlc3QgPSBFd2tfRm9y
bV9TdWJtaXNzaW9uX1JlcXVlc3Q6OmNyZWF0ZSh2YWx1ZXMsIGxpc3RlbmVyKTsKLSAgICBld2tf
dmlld19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9uZXcoZm9ybUNsaWVudC0+bV92aWV3LCByZXF1
ZXN0LmdldCgpKTsKKyAgICBmb3JtQ2xpZW50LT5tX3ZpZXdJbXBsLT5yZXBvcnROZXdGb3JtU3Vi
bWlzc2lvblJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiB9CiAKLUZvcm1DbGllbnRFZmw6OkZvcm1D
bGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXcpCi0gICAgOiBtX3ZpZXcodmlldykKK0Zvcm1DbGll
bnRFZmw6OkZvcm1DbGllbnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQorICAgIDogbV92aWV3
SW1wbCh2aWV3SW1wbCkKIHsKLSAgICBXS1BhZ2VSZWYgcGFnZVJlZiA9IGV3a192aWV3X3drcGFn
ZV9nZXQobV92aWV3KTsKKyAgICBXS1BhZ2VSZWYgcGFnZVJlZiA9IG1fdmlld0ltcGwtPndrUGFn
ZSgpOwogICAgIEFTU0VSVChwYWdlUmVmKTsKIAogICAgIFdLUGFnZUZvcm1DbGllbnQgZm9ybUNs
aWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRm9ybUNsaWVu
dEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmgKaW5k
ZXggN2UyOGExMi4uNjZlMDYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9Gb3JtQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9G
b3JtQ2xpZW50RWZsLmgKQEAgLTI5LDIxICsyOSwyMyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tC
YXNlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAorY2xhc3MgRXdrVmlld0ltcGw7
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBGb3JtQ2xpZW50RWZsIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc093blB0cjxGb3JtQ2xpZW50RWZsPiBjcmVhdGUoRXZhc19PYmplY3Qq
IHZpZXcpCisgICAgc3RhdGljIFBhc3NPd25QdHI8Rm9ybUNsaWVudEVmbD4gY3JlYXRlKEV3a1Zp
ZXdJbXBsKiB2aWV3SW1wbCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRm9y
bUNsaWVudEVmbCh2aWV3KSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRm9ybUNsaWVu
dEVmbCh2aWV3SW1wbCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBGb3JtQ2xp
ZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KTsKKyAgICBleHBsaWNpdCBGb3JtQ2xpZW50RWZsKEV3
a1ZpZXdJbXBsKik7CiAKICAgICBzdGF0aWMgdm9pZCB3aWxsU3VibWl0Rm9ybShXS1BhZ2VSZWYs
IFdLRnJhbWVSZWYsIFdLRnJhbWVSZWYsIFdLRGljdGlvbmFyeVJlZiB2YWx1ZXMsIFdLVHlwZVJl
ZiB1c2VyRGF0YSwgV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKIAotICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7CisgICAgRXdrVmlld0ltcGwqIG1f
dmlld0ltcGw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5jcHAKaW5kZXggN2MwNDJjMS4u
MmRlNTZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9h
ZENsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9h
ZENsaWVudEVmbC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJQYWdlTG9hZENsaWVudEVmbC5oIgogCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIK
ICNpbmNsdWRlICJXS0ZyYW1lLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAjaW5jbHVkZSAiZXdr
X2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaCIKQEAgLTQ2LDMyICs0NywzMiBAQCB2b2lkIFBh
Z2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXS1BhZ2VSZWYsIFdLU3Ry
aW5nUmVmIHRpdGxlLCBXSwogICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSB0b1BhZ2VMb2FkQ2xp
ZW50RWZsKGNsaWVudEluZm8pLT52aWV3KCk7Ci0gICAgZXdrX3ZpZXdfdGl0bGVfY2hhbmdlZChl
d2tWaWV3LCB0b0ltcGwodGl0bGUpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBFd2tW
aWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3
SW1wbCgpOworICAgIHZpZXdJbXBsLT5yZXBvcnRUaXRsZUNoYW5nZSh0b0ltcGwodGl0bGUpLT5z
dHJpbmcoKSk7CiB9CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiB2b2lkIFBhZ2VMb2FkQ2xp
ZW50RWZsOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBX
S0ludGVudERhdGFSZWYgaW50ZW50LCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
CiB7Ci0gICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVu
dEluZm8pLT52aWV3KCk7CisgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENs
aWVudEVmbChjbGllbnRJbmZvKS0+dmlld0ltcGwoKTsKICAgICBSZWZQdHI8RXdrX0ludGVudD4g
ZXdrSW50ZW50ID0gRXdrX0ludGVudDo6Y3JlYXRlKGludGVudCk7Ci0gICAgZXdrX3ZpZXdfaW50
ZW50X3JlcXVlc3RfbmV3KGV3a1ZpZXcsIGV3a0ludGVudC5nZXQoKSk7CisgICAgdmlld0ltcGwt
PnJlcG9ydEludGVudFJlcXVlc3QoZXdrSW50ZW50LmdldCgpKTsKIH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OnJlZ2lzdGVy
SW50ZW50U2VydmljZUZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tJbnRlbnRTZXJ2
aWNlSW5mb1JlZiBzZXJ2aWNlSW5mbywgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQogewotICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGll
bnRJbmZvKS0+dmlldygpOworICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRD
bGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXdJbXBsKCk7CiAgICAgUmVmUHRyPEV3a19JbnRlbnRf
U2VydmljZT4gZXdrSW50ZW50U2VydmljZSA9IEV3a19JbnRlbnRfU2VydmljZTo6Y3JlYXRlKHNl
cnZpY2VJbmZvKTsKLSAgICBld2tfdmlld19pbnRlbnRfc2VydmljZV9yZWdpc3Rlcihld2tWaWV3
LCBld2tJbnRlbnRTZXJ2aWNlLmdldCgpKTsKKyAgICB2aWV3SW1wbC0+cmVwb3J0SW50ZW50U2Vy
dmljZVJlZ2lzdHJhdGlvbihld2tJbnRlbnRTZXJ2aWNlLmdldCgpKTsKIH0KICNlbmRpZgogCiB2
b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRDaGFuZ2VQcm9ncmVzcyhXS1BhZ2VSZWYgcGFnZSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IHRv
UGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXcoKTsKLSAgICBld2tfdmlld19sb2Fk
X3Byb2dyZXNzX2NoYW5nZWQoZXdrVmlldywgV0tQYWdlR2V0RXN0aW1hdGVkUHJvZ3Jlc3MocGFn
ZSkpOworICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xp
ZW50SW5mbyktPnZpZXdJbXBsKCk7CisgICAgdmlld0ltcGwtPnJlcG9ydExvYWRQcm9ncmVzcyhX
S1BhZ2VHZXRFc3RpbWF0ZWRQcm9ncmVzcyhwYWdlKSk7CiB9CiAKIHZvaWQgUGFnZUxvYWRDbGll
bnRFZmw6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUs
IFdLVHlwZVJlZiAvKnVzZXJEYXRhKi8sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC03OSw4
ICs4MCw4IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShX
S1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwCiAgICAgaWYgKCFXS0ZyYW1lSXNNYWlu
RnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBFdmFzX09iamVjdCogZXdrVmll
dyA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXcoKTsKLSAgICBld2tfdmll
d19sb2FkX2ZpbmlzaGVkKGV3a1ZpZXcpOworICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRv
UGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXdJbXBsKCk7CisgICAgdmlld0ltcGwt
PnJlcG9ydExvYWRGaW5pc2hlZCgpOwogfQogCiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRG
YWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tF
cnJvclJlZiBlcnJvciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtODgs
MTAgKzg5LDEwIEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZEZhaWxMb2FkV2l0aEVycm9y
Rm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lCiAgICAgaWYgKCFXS0ZyYW1lSXNN
YWluRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBFdmFzX09iamVjdCogZXdr
VmlldyA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXcoKTsKKyAgICBFd2tW
aWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3
SW1wbCgpOwogICAgIE93blB0cjxFd2tfRXJyb3I+IGV3a0Vycm9yID0gRXdrX0Vycm9yOjpjcmVh
dGUoZXJyb3IpOwotICAgIGV3a192aWV3X2xvYWRfZXJyb3IoZXdrVmlldywgZXdrRXJyb3IuZ2V0
KCkpOwotICAgIGV3a192aWV3X2xvYWRfZmluaXNoZWQoZXdrVmlldyk7CisgICAgdmlld0ltcGwt
PnJlcG9ydExvYWRFcnJvcihld2tFcnJvci5nZXQoKSk7CisgICAgdmlld0ltcGwtPnJlcG9ydExv
YWRGaW5pc2hlZCgpOwogfQogCiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVm
IC8qdXNlckRhdGEqLywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTk5LDggKzEwMCw4IEBA
IHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyCiAgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJh
bWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IHRvUGFn
ZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXcoKTsKLSAgICBld2tfdmlld19sb2FkX3By
b3Zpc2lvbmFsX3N0YXJ0ZWQoZXdrVmlldyk7CisgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0g
dG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+dmlld0ltcGwoKTsKKyAgICB2aWV3SW1w
bC0+cmVwb3J0UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpOwogfQogCiB2b2lkIFBhZ2VMb2FkQ2xp
ZW50RWZsOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiAvKnVzZXJEYXRhKi8sIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC0xMDgsOCArMTA5LDggQEAgdm9pZCBQYWdlTG9hZENs
aWVudEVmbDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoV0tQYWcKICAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gdG9QYWdlTG9hZENsaWVudEVmbChj
bGllbnRJbmZvKS0+dmlldygpOwotICAgIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfcmVkaXJl
Y3QoZXdrVmlldyk7CisgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVu
dEVmbChjbGllbnRJbmZvKS0+dmlld0ltcGwoKTsKKyAgICB2aWV3SW1wbC0+cmVwb3J0UHJvdmlz
aW9uYWxMb2FkUmVkaXJlY3QoKTsKIH0KIAogdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBm
cmFtZSwgV0tFcnJvclJlZiBlcnJvciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQpAQCAtMTE3LDkgKzExOCw5IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZEZhaWxQcm92
aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhCiAgICAgaWYgKCFX
S0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBFdmFzX09i
amVjdCogZXdrVmlldyA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXcoKTsK
KyAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudElu
Zm8pLT52aWV3SW1wbCgpOwogICAgIE93blB0cjxFd2tfRXJyb3I+IGV3a0Vycm9yID0gRXdrX0Vy
cm9yOjpjcmVhdGUoZXJyb3IpOwotICAgIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVk
KGV3a1ZpZXcsIGV3a0Vycm9yLmdldCgpKTsKKyAgICB2aWV3SW1wbC0+cmVwb3J0UHJvdmlzaW9u
YWxMb2FkRmFpbGVkKGV3a0Vycm9yLmdldCgpKTsKIH0KIAogI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQpAQCAtMTI4LDIxICsxMjksMjEgQEAgdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlk
Q29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXAKICAg
ICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+
dmlldygpOwotICAgIGV3a192aWV3X2xvYWRfY29tbWl0dGVkKGV3a1ZpZXcpOworICAgIEV3a1Zp
ZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXdJ
bXBsKCk7CisgICAgdmlld0ltcGwtPnJlcG9ydExvYWRDb21taXR0ZWQoKTsKIH0KICNlbmRpZgog
CiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoV0tQYWdl
UmVmLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgYWRkZWRJdGVtLCBXS0FycmF5UmVmIHJlbW92
ZWRJdGVtcywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBFdmFzX09iamVjdCogZXdr
VmlldyA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXcoKTsKLSAgICBBU1NF
UlQoZXdrVmlldyk7CisgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVu
dEVmbChjbGllbnRJbmZvKS0+dmlld0ltcGwoKTsKKyAgICBBU1NFUlQodmlld0ltcGwpOwogCi0g
ICAgRXdrX0JhY2tfRm9yd2FyZF9MaXN0KiBsaXN0ID0gZXdrX3ZpZXdfYmFja19mb3J3YXJkX2xp
c3RfZ2V0KGV3a1ZpZXcpOworICAgIEV3a19CYWNrX0ZvcndhcmRfTGlzdCogbGlzdCA9IGV3a192
aWV3X2JhY2tfZm9yd2FyZF9saXN0X2dldCh2aWV3SW1wbC0+dmlldygpKTsKICAgICBBU1NFUlQo
bGlzdCk7CiAgICAgbGlzdC0+dXBkYXRlKGFkZGVkSXRlbSwgcmVtb3ZlZEl0ZW1zKTsKIAotICAg
IGV3a192aWV3X2JhY2tfZm9yd2FyZF9saXN0X2NoYW5nZWQoZXdrVmlldyk7CisgICAgdmlld0lt
cGwtPnJlcG9ydEJhY2tGb3J3YXJkTGlzdENoYW5nZSgpOwogfQogCiB2b2lkIFBhZ2VMb2FkQ2xp
ZW50RWZsOjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBXS1R5cGVSZWYsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC0xNTAsMTQgKzE1MSwxNCBAQCB2b2lkIFBhZ2VMb2Fk
Q2xpZW50RWZsOjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tQYWdlUmVmLCBX
S0ZyYW1lUmVmCiAgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IHRvUGFnZUxvYWRDbGllbnRFZmwo
Y2xpZW50SW5mbyktPnZpZXcoKTsKLSAgICBld2tfdmlld191cmxfdXBkYXRlKGV3a1ZpZXcpOwor
ICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5m
byktPnZpZXdJbXBsKCk7CisgICAgZXdrX3ZpZXdfdXJsX3VwZGF0ZSh2aWV3SW1wbC0+dmlldygp
KTsKIH0KIAotUGFnZUxvYWRDbGllbnRFZmw6OlBhZ2VMb2FkQ2xpZW50RWZsKEV2YXNfT2JqZWN0
KiB2aWV3KQotICAgIDogbV92aWV3KHZpZXcpCitQYWdlTG9hZENsaWVudEVmbDo6UGFnZUxvYWRD
bGllbnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQorICAgIDogbV92aWV3SW1wbCh2aWV3SW1w
bCkKIHsKLSAgICBXS1BhZ2VSZWYgcGFnZVJlZiA9IGV3a192aWV3X3drcGFnZV9nZXQobV92aWV3
KTsKKyAgICBXS1BhZ2VSZWYgcGFnZVJlZiA9IG1fdmlld0ltcGwtPndrUGFnZSgpOwogICAgIEFT
U0VSVChwYWdlUmVmKTsKIAogICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkQ2xpZW50OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5oCmluZGV4
IDZiNzhmNTYuLjZiMzFjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvUGFnZUxvYWRDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VMb2FkQ2xpZW50RWZsLmgKQEAgLTI5LDE5ICsyOSwyMSBAQAogI2luY2x1ZGUgImV3a192
aWV3X3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCitjbGFzcyBFd2tW
aWV3SW1wbDsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBhZ2VMb2FkQ2xpZW50RWZs
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxQYWdlTG9hZENsaWVudEVmbD4gY3Jl
YXRlKEV2YXNfT2JqZWN0KiB2aWV3KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VMb2FkQ2xp
ZW50RWZsPiBjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBQYWdlTG9hZENsaWVudEVmbCh2aWV3KSk7CisgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgUGFnZUxvYWRDbGllbnRFZmwodmlld0ltcGwpKTsKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgUGFnZUxvYWRDbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXcp
OworICAgIGV4cGxpY2l0IFBhZ2VMb2FkQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKik7CiAKLSAgICBp
bmxpbmUgRXZhc19PYmplY3QqIHZpZXcoKSBjb25zdCB7IHJldHVybiBtX3ZpZXc7IH0KKyAgICBp
bmxpbmUgRXdrVmlld0ltcGwqIHZpZXdJbXBsKCkgY29uc3QgeyByZXR1cm4gbV92aWV3SW1wbDsg
fQogCiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tQYWdlUmVmLCBX
S1N0cmluZ1JlZiB0aXRsZSwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCkBAIC02Miw3ICs2NCw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdLUGFnZVJlZiwg
V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGFkZGVkSXRlbSwgV0tBcnJheVJlZiByZW1vdmVkSXRl
bXMsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIGRpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLU2FtZURvY3Vt
ZW50TmF2aWdhdGlvblR5cGUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAK
LSAgICBFdmFzX09iamVjdCogbV92aWV3OworICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1BhZ2VQb2xpY3lDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9QYWdlUG9saWN5Q2xpZW50RWZsLmNwcAppbmRleCA5MDNmMWRhLi5iYmJjMWFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VQb2xpY3lDbGll
bnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVBvbGljeUNs
aWVudEVmbC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJQYWdlUG9saWN5Q2xpZW50RWZsLmgiCiAKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgog
I2luY2x1ZGUgIldLRnJhbWUuaCIKICNpbmNsdWRlICJXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCIK
ICNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKQEAgLTQxLDE0ICs0
MiwxOCBAQCBzdGF0aWMgaW5saW5lIFBhZ2VQb2xpY3lDbGllbnRFZmwqIHRvUGFnZVBvbGljeUNs
aWVudEVmbChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogCiB2b2lkIFBhZ2VQb2xpY3lDbGllbnRF
Zmw6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV0tQYWdlUmVmLCBXS0ZyYW1lUmVm
LCBXS0ZyYW1lTmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUsIFdLRXZlbnRNb2RpZmllcnMg
bW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24sIFdLVVJMUmVxdWVzdFJl
ZiByZXF1ZXN0LCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiAv
KnVzZXJEYXRhKi8sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CisgICAgUGFnZVBvbGljeUNs
aWVudEVmbCogcG9saWN5Q2xpZW50ID0gdG9QYWdlUG9saWN5Q2xpZW50RWZsKGNsaWVudEluZm8p
OworCiAgICAgUmVmUHRyPEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbj4gZGVjaXNpb24g
PSBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb246OmNyZWF0ZShuYXZpZ2F0aW9uVHlwZSwg
bW91c2VCdXR0b24sIG1vZGlmaWVycywgcmVxdWVzdCwgMCwgbGlzdGVuZXIpOwotICAgIGV3a192
aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKHRvUGFnZVBvbGljeUNsaWVudEVmbChjbGll
bnRJbmZvKS0+bV92aWV3LCBkZWNpc2lvbi5nZXQoKSk7CisgICAgcG9saWN5Q2xpZW50LT5tX3Zp
ZXdJbXBsLT5yZXBvcnROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oZGVjaXNpb24uZ2V0KCkpOwog
fQogCiB2b2lkIFBhZ2VQb2xpY3lDbGllbnRFZmw6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbihXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0
aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBt
b3VzZUJ1dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLU3RyaW5nUmVmIGZyYW1lTmFt
ZSwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYgLyp1c2VyRGF0
YSovLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogeworICAgIFBhZ2VQb2xpY3lDbGllbnRFZmwq
IHBvbGljeUNsaWVudCA9IHRvUGFnZVBvbGljeUNsaWVudEVmbChjbGllbnRJbmZvKTsKKwogICAg
IFJlZlB0cjxFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24+IGRlY2lzaW9uID0gRXdrX05h
dmlnYXRpb25fUG9saWN5X0RlY2lzaW9uOjpjcmVhdGUobmF2aWdhdGlvblR5cGUsIG1vdXNlQnV0
dG9uLCBtb2RpZmllcnMsIHJlcXVlc3QsIHRvSW1wbChmcmFtZU5hbWUpLT5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCBsaXN0ZW5lcik7Ci0gICAgZXdrX3ZpZXdfbmV3X3dpbmRvd19wb2xpY3lfZGVj
aXNpb24odG9QYWdlUG9saWN5Q2xpZW50RWZsKGNsaWVudEluZm8pLT5tX3ZpZXcsIGRlY2lzaW9u
LmdldCgpKTsKKyAgICBwb2xpY3lDbGllbnQtPm1fdmlld0ltcGwtPnJlcG9ydE5ld1dpbmRvd1Bv
bGljeURlY2lzaW9uKGRlY2lzaW9uLmdldCgpKTsKIH0KIAogdm9pZCBQYWdlUG9saWN5Q2xpZW50
RWZsOjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZUNhbGxiYWNrKFdLUGFnZVJlZiwgV0tGcmFtZVJl
ZiBmcmFtZSwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgV0tVUkxSZXF1ZXN0UmVmLCBXS0Zy
YW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiAvKnVzZXJEYXRhKi8sIGNv
bnN0IHZvaWQqIC8qY2xpZW50SW5mbyovKQpAQCAtOTMsMTAgKzk4LDEwIEBAIHZvaWQgUGFnZVBv
bGljeUNsaWVudEVmbDo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VDYWxsYmFjayhXS1BhZ2VSZWYs
IFdLRnJhbWVSZWYKICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2UobGlzdGVuZXIpOwogfQog
Ci1QYWdlUG9saWN5Q2xpZW50RWZsOjpQYWdlUG9saWN5Q2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2
aWV3KQotICAgIDogbV92aWV3KHZpZXcpCitQYWdlUG9saWN5Q2xpZW50RWZsOjpQYWdlUG9saWN5
Q2xpZW50RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAgICA6IG1fdmlld0ltcGwodmlld0lt
cGwpCiB7Ci0gICAgV0tQYWdlUmVmIHBhZ2VSZWYgPSBld2tfdmlld193a3BhZ2VfZ2V0KG1fdmll
dyk7CisgICAgV0tQYWdlUmVmIHBhZ2VSZWYgPSBtX3ZpZXdJbXBsLT53a1BhZ2UoKTsKICAgICBB
U1NFUlQocGFnZVJlZik7CiAKICAgICBXS1BhZ2VQb2xpY3lDbGllbnQgcG9saWN5Q2xpZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlUG9saWN5Q2xpZW50
RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VQb2xpY3lDbGllbnRFZmwu
aAppbmRleCA5OTIyODRlLi41Y2FkNGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1BhZ2VQb2xpY3lDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1BhZ2VQb2xpY3lDbGllbnRFZmwuaApAQCAtMjksMjMgKzI5LDI1IEBACiAjaW5j
bHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAK
K2NsYXNzIEV3a1ZpZXdJbXBsOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUGFnZVBv
bGljeUNsaWVudEVmbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZVBvbGlj
eUNsaWVudEVmbD4gY3JlYXRlKEV2YXNfT2JqZWN0KiB2aWV3KQorICAgIHN0YXRpYyBQYXNzT3du
UHRyPFBhZ2VQb2xpY3lDbGllbnRFZmw+IGNyZWF0ZShFd2tWaWV3SW1wbCogdmlld0ltcGwpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VQb2xpY3lDbGllbnRFZmwodmll
dykpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VQb2xpY3lDbGllbnRFZmwodmll
d0ltcGwpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUGFnZVBvbGljeUNsaWVu
dEVmbChFdmFzX09iamVjdCogdmlldyk7CisgICAgZXhwbGljaXQgUGFnZVBvbGljeUNsaWVudEVm
bChFd2tWaWV3SW1wbCopOwogCiAgICAgc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSwg
V0tFdmVudE1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uLCBXS1VSTFJlcXVlc3RSZWYsIFdL
RnJhbWVQb2xpY3lMaXN0ZW5lclJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKik7CiAgICAgc3Rh
dGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiwgV0tGcmFtZU5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50TW91
c2VCdXR0b24sIFdLVVJMUmVxdWVzdFJlZiwgV0tTdHJpbmdSZWYsIFdLRnJhbWVQb2xpY3lMaXN0
ZW5lclJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VDYWxsYmFjayhXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVVJMUmVz
cG9uc2VSZWYsIFdLVVJMUmVxdWVzdFJlZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmLCBXS1R5
cGVSZWYsIGNvbnN0IHZvaWQqKTsKIAotICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7CisgICAgRXdr
Vmlld0ltcGwqIG1fdmlld0ltcGw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcAppbmRleCAx
YzM1NzA3Li43YTM4ZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VVSUNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Q
YWdlVUlDbGllbnRFZmwuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUGFnZVVJQ2xpZW50RWZsLmgiCiAKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5o
IgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KQEAgLTQwLDcxICs0MSw3MyBAQCBzdGF0aWMgaW5saW5l
IFBhZ2VVSUNsaWVudEVmbCogdG9QYWdlVUlDbGllbnRFZmwoY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKIAogdm9pZCBQYWdlVUlDbGllbnRFZmw6OmNsb3NlUGFnZShXS1BhZ2VSZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCiB7Ci0gICAgZXdrX3ZpZXdfcGFnZV9jbG9zZSh0b1BhZ2VVSUNsaWVu
dEVmbChjbGllbnRJbmZvKS0+bV92aWV3KTsKKyAgICBld2tfdmlld19wYWdlX2Nsb3NlKHRvUGFn
ZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5tX3ZpZXdJbXBsLT52aWV3KCkpOwogfQogCiBXS1Bh
Z2VSZWYgUGFnZVVJQ2xpZW50RWZsOjpjcmVhdGVOZXdQYWdlKFdLUGFnZVJlZiwgV0tVUkxSZXF1
ZXN0UmVmLCBXS0RpY3Rpb25hcnlSZWYsIFdLRXZlbnRNb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1
dHRvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICByZXR1cm4gZXdrX3ZpZXdfcGFn
ZV9jcmVhdGUodG9QYWdlVUlDbGllbnRFZmwoY2xpZW50SW5mbyktPm1fdmlldyk7CisgICAgcmV0
dXJuIGV3a192aWV3X3BhZ2VfY3JlYXRlKHRvUGFnZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5t
X3ZpZXdJbXBsLT52aWV3KCkpOwogfQogCiB2b2lkIFBhZ2VVSUNsaWVudEVmbDo6cnVuSmF2YVNj
cmlwdEFsZXJ0KFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgYWxlcnRUZXh0LCBXS0ZyYW1lUmVmLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2Fs
ZXJ0KHRvUGFnZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5tX3ZpZXcsIFdLRWluYVNoYXJlZFN0
cmluZyhhbGVydFRleHQpKTsKKyAgICBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVydCh0b1Bh
Z2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3SW1wbC0+dmlldygpLCBXS0VpbmFTaGFy
ZWRTdHJpbmcoYWxlcnRUZXh0KSk7CiB9CiAKIGJvb2wgUGFnZVVJQ2xpZW50RWZsOjpydW5KYXZh
U2NyaXB0Q29uZmlybShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLRnJhbWVSZWYs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgcmV0dXJuIGV3a192aWV3X3J1bl9qYXZh
c2NyaXB0X2NvbmZpcm0odG9QYWdlVUlDbGllbnRFZmwoY2xpZW50SW5mbyktPm1fdmlldywgV0tF
aW5hU2hhcmVkU3RyaW5nKG1lc3NhZ2UpKTsKKyAgICByZXR1cm4gZXdrX3ZpZXdfcnVuX2phdmFz
Y3JpcHRfY29uZmlybSh0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3SW1wbC0+
dmlldygpLCBXS0VpbmFTaGFyZWRTdHJpbmcobWVzc2FnZSkpOwogfQogCiBXS1N0cmluZ1JlZiBQ
YWdlVUlDbGllbnRFZmw6OnJ1bkphdmFTY3JpcHRQcm9tcHQoV0tQYWdlUmVmLCBXS1N0cmluZ1Jl
ZiBtZXNzYWdlLCBXS1N0cmluZ1JlZiBkZWZhdWx0VmFsdWUsIFdLRnJhbWVSZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCiB7Ci0gICAgV0tFaW5hU2hhcmVkU3RyaW5nIHZhbHVlID0gZXdrX3Zp
ZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KHRvUGFnZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5t
X3ZpZXcsIFdLRWluYVNoYXJlZFN0cmluZyhtZXNzYWdlKSwgV0tFaW5hU2hhcmVkU3RyaW5nKGRl
ZmF1bHRWYWx1ZSkpOworICAgIFdLRWluYVNoYXJlZFN0cmluZyB2YWx1ZSA9IGV3a192aWV3X3J1
bl9qYXZhc2NyaXB0X3Byb21wdCh0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3
SW1wbC0+dmlldygpLCBXS0VpbmFTaGFyZWRTdHJpbmcobWVzc2FnZSksIFdLRWluYVNoYXJlZFN0
cmluZyhkZWZhdWx0VmFsdWUpKTsKICAgICByZXR1cm4gdmFsdWUgPyBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyh2YWx1ZSkgOiAwOwogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCiB2b2lkIFBhZ2VVSUNsaWVudEVmbDo6c2hvd0NvbG9yUGlja2VyKFdLUGFnZVJlZiwgV0tT
dHJpbmdSZWYgaW5pdGlhbENvbG9yLCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlz
dGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CisgICAgUGFnZVVJQ2xpZW50RWZsKiBw
YWdlVUlDbGllbnQgPSB0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKTsKICAgICBXZWJDb3Jl
OjpDb2xvciBjb2xvciA9IFdlYkNvcmU6OkNvbG9yKFdlYktpdDo6dG9XVEZTdHJpbmcoaW5pdGlh
bENvbG9yKSk7Ci0gICAgZXdrX3ZpZXdfY29sb3JfcGlja2VyX3JlcXVlc3QodG9QYWdlVUlDbGll
bnRFZmwoY2xpZW50SW5mbyktPm1fdmlldywgY29sb3IucmVkKCksIGNvbG9yLmdyZWVuKCksIGNv
bG9yLmJsdWUoKSwgY29sb3IuYWxwaGEoKSwgbGlzdGVuZXIpOworICAgIHBhZ2VVSUNsaWVudC0+
bV92aWV3SW1wbC0+cmVxdWVzdENvbG9yUGlja2VyKGNvbG9yLnJlZCgpLCBjb2xvci5ncmVlbigp
LCBjb2xvci5ibHVlKCksIGNvbG9yLmFscGhhKCksIGxpc3RlbmVyKTsKIH0KIAogdm9pZCBQYWdl
VUlDbGllbnRFZmw6OmhpZGVDb2xvclBpY2tlcihXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCiB7Ci0gICAgZXdrX3ZpZXdfY29sb3JfcGlja2VyX2Rpc21pc3ModG9QYWdlVUlDbGll
bnRFZmwoY2xpZW50SW5mbyktPm1fdmlldyk7CisgICAgUGFnZVVJQ2xpZW50RWZsKiBwYWdlVUlD
bGllbnQgPSB0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKTsKKyAgICBwYWdlVUlDbGllbnQt
Pm1fdmlld0ltcGwtPmRpc21pc3NDb2xvclBpY2tlcigpOwogfQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQogdW5zaWduZWQgbG9uZyBsb25nIFBhZ2VVSUNsaWVudEVmbDo6ZXhj
ZWVkZWREYXRhYmFzZVF1b3RhKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tTZWN1cml0eU9yaWdp
blJlZiwgV0tTdHJpbmdSZWYgZGF0YWJhc2VOYW1lLCBXS1N0cmluZ1JlZiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJl
bnRPcmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1
bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
IHsKLSAgICByZXR1cm4gZXdrX3ZpZXdfZGF0YWJhc2VfcXVvdGFfZXhjZWVkZWQodG9QYWdlVUlD
bGllbnRFZmwoY2xpZW50SW5mbyktPm1fdmlldywgV0tFaW5hU2hhcmVkU3RyaW5nKGRhdGFiYXNl
TmFtZSksIFdLRWluYVNoYXJlZFN0cmluZyhkaXNwbGF5TmFtZSksIGN1cnJlbnRRdW90YSwgY3Vy
cmVudE9yaWdpblVzYWdlLCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSk7Cisg
ICAgcmV0dXJuIGV3a192aWV3X2RhdGFiYXNlX3F1b3RhX2V4Y2VlZGVkKHRvUGFnZVVJQ2xpZW50
RWZsKGNsaWVudEluZm8pLT5tX3ZpZXdJbXBsLT52aWV3KCksIFdLRWluYVNoYXJlZFN0cmluZyhk
YXRhYmFzZU5hbWUpLCBXS0VpbmFTaGFyZWRTdHJpbmcoZGlzcGxheU5hbWUpLCBjdXJyZW50UXVv
dGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgY3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNh
Z2UpOwogfQogI2VuZGlmCiAKIHZvaWQgUGFnZVVJQ2xpZW50RWZsOjpmb2N1cyhXS1BhZ2VSZWYs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KHRv
UGFnZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5tX3ZpZXcsIHRydWUpOworICAgIGV2YXNfb2Jq
ZWN0X2ZvY3VzX3NldCh0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3SW1wbC0+
dmlldygpLCB0cnVlKTsKIH0KIAogdm9pZCBQYWdlVUlDbGllbnRFZmw6OnVuZm9jdXMoV0tQYWdl
UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3Nl
dCh0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3LCBmYWxzZSk7CisgICAgZXZh
c19vYmplY3RfZm9jdXNfc2V0KHRvUGFnZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5tX3ZpZXdJ
bXBsLT52aWV3KCksIGZhbHNlKTsKIH0KIAogdm9pZCBQYWdlVUlDbGllbnRFZmw6OnRha2VGb2N1
cyhXS1BhZ2VSZWYsIFdLRm9jdXNEaXJlY3Rpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7
CiAgICAgLy8gRklYTUU6IHRoaXMgaXMgb25seSBhIHBhcnRpYWwgaW1wbGVtZW50YXRpb24uCi0g
ICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KHRvUGFnZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5t
X3ZpZXcsIGZhbHNlKTsKKyAgICBldmFzX29iamVjdF9mb2N1c19zZXQodG9QYWdlVUlDbGllbnRF
ZmwoY2xpZW50SW5mbyktPm1fdmlld0ltcGwtPnZpZXcoKSwgZmFsc2UpOwogfQogCiBXS1JlY3Qg
UGFnZVVJQ2xpZW50RWZsOjpnZXRXaW5kb3dGcmFtZShXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCiB7CiAgICAgaW50IHgsIHksIHdpZHRoLCBoZWlnaHQ7CiAKLSAgICBFY29yZV9F
dmFzKiBlZSA9IGVjb3JlX2V2YXNfZWNvcmVfZXZhc19nZXQoZXZhc19vYmplY3RfZXZhc19nZXQo
dG9QYWdlVUlDbGllbnRFZmwoY2xpZW50SW5mbyktPm1fdmlldykpOworICAgIEVjb3JlX0V2YXMq
IGVlID0gZWNvcmVfZXZhc19lY29yZV9ldmFzX2dldChldmFzX29iamVjdF9ldmFzX2dldCh0b1Bh
Z2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3SW1wbC0+dmlldygpKSk7CiAgICAgZWNv
cmVfZXZhc19yZXF1ZXN0X2dlb21ldHJ5X2dldChlZSwgJngsICZ5LCAmd2lkdGgsICZoZWlnaHQp
OwogCiAgICAgcmV0dXJuIFdLUmVjdE1ha2UoeCwgeSwgd2lkdGgsIGhlaWdodCk7CkBAIC0xMTIs
MTQgKzExNSwxNCBAQCBXS1JlY3QgUGFnZVVJQ2xpZW50RWZsOjpnZXRXaW5kb3dGcmFtZShXS1Bh
Z2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiAKIHZvaWQgUGFnZVVJQ2xpZW50RWZsOjpz
ZXRXaW5kb3dGcmFtZShXS1BhZ2VSZWYsIFdLUmVjdCBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKIHsKLSAgICBFY29yZV9FdmFzKiBlZSA9IGVjb3JlX2V2YXNfZWNvcmVfZXZhc19nZXQo
ZXZhc19vYmplY3RfZXZhc19nZXQodG9QYWdlVUlDbGllbnRFZmwoY2xpZW50SW5mbyktPm1fdmll
dykpOworICAgIEVjb3JlX0V2YXMqIGVlID0gZWNvcmVfZXZhc19lY29yZV9ldmFzX2dldChldmFz
X29iamVjdF9ldmFzX2dldCh0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3SW1w
bC0+dmlldygpKSk7CiAgICAgZWNvcmVfZXZhc19tb3ZlX3Jlc2l6ZShlZSwgZnJhbWUub3JpZ2lu
LngsIGZyYW1lLm9yaWdpbi55LCBmcmFtZS5zaXplLndpZHRoLCBmcmFtZS5zaXplLmhlaWdodCk7
CiB9CiAKLVBhZ2VVSUNsaWVudEVmbDo6UGFnZVVJQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3
KQotICAgIDogbV92aWV3KHZpZXcpCitQYWdlVUlDbGllbnRFZmw6OlBhZ2VVSUNsaWVudEVmbChF
d2tWaWV3SW1wbCogdmlld0ltcGwpCisgICAgOiBtX3ZpZXdJbXBsKHZpZXdJbXBsKQogewotICAg
IFdLUGFnZVJlZiBwYWdlUmVmID0gZXdrX3ZpZXdfd2twYWdlX2dldChtX3ZpZXcpOworICAgIFdL
UGFnZVJlZiBwYWdlUmVmID0gbV92aWV3SW1wbC0+d2tQYWdlKCk7CiAgICAgQVNTRVJUKHBhZ2VS
ZWYpOwogCiAgICAgV0tQYWdlVUlDbGllbnQgdWlDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuaAppbmRleCAwNDJhZGE2Li5lNWYxMDZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmgKQEAg
LTMwLDE3ICszMCwxOSBAQAogI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogCitjbGFzcyBFd2tWaWV3SW1wbDsKKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFBhZ2VVSUNsaWVudEVmbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8UGFnZVVJQ2xpZW50RWZsPiBjcmVhdGUoRXZhc19PYmplY3QqIHZpZXcpCisgICAg
c3RhdGljIFBhc3NPd25QdHI8UGFnZVVJQ2xpZW50RWZsPiBjcmVhdGUoRXdrVmlld0ltcGwqIHZp
ZXdJbXBsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQYWdlVUlDbGllbnRF
ZmwodmlldykpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VVSUNsaWVudEVmbCh2
aWV3SW1wbCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBQYWdlVUlDbGllbnRF
ZmwoRXZhc19PYmplY3QqIHZpZXcpOworICAgIGV4cGxpY2l0IFBhZ2VVSUNsaWVudEVmbChFd2tW
aWV3SW1wbCopOwogCiAgICAgc3RhdGljIHZvaWQgY2xvc2VQYWdlKFdLUGFnZVJlZiwgY29uc3Qg
dm9pZCopOwogICAgIHN0YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYsIFdL
VVJMUmVxdWVzdFJlZiwgV0tEaWN0aW9uYXJ5UmVmLCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50
TW91c2VCdXR0b24sIGNvbnN0IHZvaWQqKTsKQEAgLTYwLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgV0tSZWN0IGdldFdpbmRvd0ZyYW1lKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCopOwog
ICAgIHN0YXRpYyB2b2lkIHNldFdpbmRvd0ZyYW1lKFdLUGFnZVJlZiwgV0tSZWN0LCBjb25zdCB2
b2lkKik7CiAKLSAgICBFdmFzX09iamVjdCogbV92aWV3OworICAgIEV3a1ZpZXdJbXBsKiBtX3Zp
ZXdJbXBsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Jlc291cmNlTG9hZENsaWVudEVmbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Jlc291cmNlTG9hZENsaWVudEVmbC5jcHAKaW5kZXggNjUz
OWNjZS4uZDMwYTZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9S
ZXNvdXJjZUxvYWRDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZENsaWVudEVmbC5oIgogCisjaW5jbHVk
ZSAiRXdrVmlld0ltcGwuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0Zy
YW1lLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCkBAIC01NSw3ICs1Niw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkQ2xpZW50RWZsOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdL
RnJhbWVSZWYgd2tGCiAgICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX2xvYWRpbmdSZXNvdXJjZXNN
YXAuYWRkKHJlc291cmNlSWRlbnRpZmllciwgcmVzb3VyY2UpOwogCiAgICAgUmVmUHRyPEV3a19V
cmxfUmVxdWVzdD4gcmVxdWVzdCA9IEV3a19VcmxfUmVxdWVzdDo6Y3JlYXRlKHdrUmVxdWVzdCk7
Ci0gICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQocmVzb3VyY2VMb2FkQ2xpZW50
LT5tX3ZpZXcsIHJlc291cmNlLmdldCgpLCByZXF1ZXN0LmdldCgpKTsKKyAgICByZXNvdXJjZUxv
YWRDbGllbnQtPm1fdmlld0ltcGwtPnJlcG9ydFJlc291cmNlTG9hZFN0YXJ0ZWQocmVzb3VyY2Uu
Z2V0KCksIHJlcXVlc3QuZ2V0KCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6
ZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90
IHJlc291cmNlSWRlbnRpZmllciwgV0tVUkxSZXF1ZXN0UmVmIHdrUmVxdWVzdCwgV0tVUkxSZXNw
b25zZVJlZiB3a1JlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC02
OSw3ICs3MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRTZW5kUmVxdWVzdEZv
clJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWluCiAKICAgICBSZWZQdHI8RXdrX1Vy
bF9SZXF1ZXN0PiByZXF1ZXN0ID0gRXdrX1VybF9SZXF1ZXN0OjpjcmVhdGUod2tSZXF1ZXN0KTsK
ICAgICBSZWZQdHI8RXdrX1VybF9SZXNwb25zZT4gcmVkaXJlY3RSZXNwb25zZSA9IEV3a19Vcmxf
UmVzcG9uc2U6OmNyZWF0ZSh3a1JlZGlyZWN0UmVzcG9uc2UpOwotICAgIGV3a192aWV3X3Jlc291
cmNlX3JlcXVlc3Rfc2VudChyZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlldywgcmVzb3VyY2UuZ2V0
KCksIHJlcXVlc3QuZ2V0KCksIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOworICAgIHJlc291cmNl
TG9hZENsaWVudC0+bV92aWV3SW1wbC0+cmVwb3J0UmVzb3VyY2VSZXF1ZXN0U2VudChyZXNvdXJj
ZS5nZXQoKSwgcmVxdWVzdC5nZXQoKSwgcmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7CiB9CiAKIHZv
aWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlUmVzcG9uc2VGb3JSZXNvdXJjZShX
S1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV0tVUkxS
ZXNwb25zZVJlZiB3a1Jlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtODIsNyAr
ODMsNyBAQCB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVJlc3BvbnNlRm9y
UmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLAogICAgICAgICByZXR1cm47CiAKICAgICBS
ZWZQdHI8RXdrX1VybF9SZXNwb25zZT4gcmVzcG9uc2UgPSBFd2tfVXJsX1Jlc3BvbnNlOjpjcmVh
dGUod2tSZXNwb25zZSk7Ci0gICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9yZXNwb25zZShyZXNv
dXJjZUxvYWRDbGllbnQtPm1fdmlldywgcmVzb3VyY2UuZ2V0KCksIHJlc3BvbnNlLmdldCgpKTsK
KyAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPnJlcG9ydFJlc291cmNlTG9hZFJl
c3BvbnNlKHJlc291cmNlLmdldCgpLCByZXNwb25zZS5nZXQoKSk7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VMb2FkQ2xpZW50RWZsOjpkaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCkBAIC05NCw3ICs5NSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRGaW5p
c2hMb2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50CiAgICAgaWYgKCFy
ZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9m
aW5pc2hlZChyZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlldywgcmVzb3VyY2UuZ2V0KCkpOworICAg
IHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3SW1wbC0+cmVwb3J0UmVzb3VyY2VMb2FkRmluaXNo
ZWQocmVzb3VyY2UuZ2V0KCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlk
RmFpbExvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291
cmNlSWRlbnRpZmllciwgV0tFcnJvclJlZiB3a0Vycm9yLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQpAQCAtMTA3LDggKzEwOCw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRGYWls
TG9hZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0CiAgICAgICAgIHJl
dHVybjsKIAogICAgIE93blB0cjxFd2tfRXJyb3I+IGV3a0Vycm9yID0gRXdrX0Vycm9yOjpjcmVh
dGUod2tFcnJvcik7Ci0gICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQocmVzb3VyY2VM
b2FkQ2xpZW50LT5tX3ZpZXcsIHJlc291cmNlLmdldCgpLCBld2tFcnJvci5nZXQoKSk7Ci0gICAg
ZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9maW5pc2hlZChyZXNvdXJjZUxvYWRDbGllbnQtPm1fdmll
dywgcmVzb3VyY2UuZ2V0KCkpOworICAgIHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3SW1wbC0+
cmVwb3J0UmVzb3VyY2VMb2FkRmFpbGVkKHJlc291cmNlLmdldCgpLCBld2tFcnJvci5nZXQoKSk7
CisgICAgcmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBsLT5yZXBvcnRSZXNvdXJjZUxvYWRG
aW5pc2hlZChyZXNvdXJjZS5nZXQoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZs
OjpvblZpZXdQcm92aXNpb25hbExvYWRTdGFydGVkKHZvaWQqIHVzZXJEYXRhLCBFdmFzX09iamVj
dCosIHZvaWQqKQpAQCAtMTE5LDEzICsxMjAsMTMgQEAgdm9pZCBSZXNvdXJjZUxvYWRDbGllbnRF
Zmw6Om9uVmlld1Byb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQodm9pZCogdXNlckRhdGEsIEV2YXNfT2IK
ICAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fbG9hZGluZ1Jlc291cmNlc01hcC5jbGVhcigpOwog
fQogCi1SZXNvdXJjZUxvYWRDbGllbnRFZmw6OlJlc291cmNlTG9hZENsaWVudEVmbChFdmFzX09i
amVjdCogdmlldykKLSAgICA6IG1fdmlldyh2aWV3KQorUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpS
ZXNvdXJjZUxvYWRDbGllbnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQorICAgIDogbV92aWV3
SW1wbCh2aWV3SW1wbCkKIHsKICAgICAvLyBMaXN0ZW4gZm9yICJsb2FkLHByb3Zpc2lvbmFsLHN0
YXJ0ZWQiIG9uIHRoZSB2aWV3IHRvIGNsZWFyIGludGVybmFsIHJlc291cmNlcyBtYXAuCi0gICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKG1fdmlldywgImxvYWQscHJvdmlzaW9uYWws
c3RhcnRlZCIsIG9uVmlld1Byb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQsIHRoaXMpOworICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChtX3ZpZXdJbXBsLT52aWV3KCksICJsb2FkLHByb3Zp
c2lvbmFsLHN0YXJ0ZWQiLCBvblZpZXdQcm92aXNpb25hbExvYWRTdGFydGVkLCB0aGlzKTsKIAot
ICAgIFdLUGFnZVJlZiBwYWdlUmVmID0gZXdrX3ZpZXdfd2twYWdlX2dldChtX3ZpZXcpOworICAg
IFdLUGFnZVJlZiBwYWdlUmVmID0gbV92aWV3SW1wbC0+d2tQYWdlKCk7CiAgICAgQVNTRVJUKHBh
Z2VSZWYpOwogCiAgICAgV0tQYWdlUmVzb3VyY2VMb2FkQ2xpZW50IHdrUmVzb3VyY2VMb2FkQ2xp
ZW50OwpAQCAtMTQzLDcgKzE0NCw3IEBAIFJlc291cmNlTG9hZENsaWVudEVmbDo6UmVzb3VyY2VM
b2FkQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KQogCiBSZXNvdXJjZUxvYWRDbGllbnRFZmw6
On5SZXNvdXJjZUxvYWRDbGllbnRFZmwoKQogewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2RlbChtX3ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLCBvblZpZXdQcm92aXNp
b25hbExvYWRTdGFydGVkKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwobV92
aWV3SW1wbC0+dmlldygpLCAibG9hZCxwcm92aXNpb25hbCxzdGFydGVkIiwgb25WaWV3UHJvdmlz
aW9uYWxMb2FkU3RhcnRlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXNvdXJjZUxvYWRDbGllbnRFZmwuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmgKaW5k
ZXggNThmNTJiNC4uMDFlZjEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9SZXNvdXJjZUxvYWRDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1Jlc291cmNlTG9hZENsaWVudEVmbC5oCkBAIC0zMSwxOSArMzEsMjEgQEAKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKK2NsYXNz
IEV3a1ZpZXdJbXBsOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVzb3VyY2VMb2Fk
Q2xpZW50RWZsIHsKIHB1YmxpYzoKICAgICB+UmVzb3VyY2VMb2FkQ2xpZW50RWZsKCk7CiAKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxSZXNvdXJjZUxvYWRDbGllbnRFZmw+IGNyZWF0ZShFdmFzX09i
amVjdCogdmlldykKKyAgICBzdGF0aWMgUGFzc093blB0cjxSZXNvdXJjZUxvYWRDbGllbnRFZmw+
IGNyZWF0ZShFd2tWaWV3SW1wbCogdmlld0ltcGwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFJlc291cmNlTG9hZENsaWVudEVmbCh2aWV3KSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgUmVzb3VyY2VMb2FkQ2xpZW50RWZsKHZpZXdJbXBsKSk7CiAgICAgfQogCiBw
cml2YXRlOgotICAgIGV4cGxpY2l0IFJlc291cmNlTG9hZENsaWVudEVmbChFdmFzX09iamVjdCog
dmlldyk7CisgICAgZXhwbGljaXQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKik7
CiAKICAgICBzdGF0aWMgdm9pZCBkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYs
IFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV0tVUkxSZXF1ZXN0UmVm
LCBib29sIHBhZ2VJc1Byb3Zpc2lvbmFsbHlMb2FkaW5nLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRTZW5kUmVxdWVzdEZvclJlc291cmNlKFdLUGFnZVJlZiwg
V0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXS1VSTFJlcXVlc3RSZWYs
IFdLVVJMUmVzcG9uc2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpAQCAtNTMsNyArNTUs
NyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZvaWQgb25WaWV3UHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZCh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqIHZpZXcsIHZvaWQqIGNsaWVudEluZm8p
OwogCi0gICAgRXZhc19PYmplY3QqIG1fdmlldzsKKyAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1w
bDsKICAgICBIYXNoTWFwPCB1aW50NjRfdCwgUmVmUHRyPEV3a19SZXNvdXJjZT4gPiBtX2xvYWRp
bmdSZXNvdXJjZXNNYXA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcAppbmRleCAyNTQz
NDBkLi40NjhjYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKQEAgLTI1LDEwICsyNSwx
MCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eS5oIgotI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKIAogI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKIAorI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU3
LDcgKzU3LDcgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjplbnRlckZ1bGxTY3Jl
ZW4oKQogICAgICAgICByZXR1cm47CiAKICAgICB3aWxsRW50ZXJGdWxsU2NyZWVuKCk7Ci0gICAg
ZXdrX3ZpZXdfZnVsbF9zY3JlZW5fZW50ZXIobV93ZWJWaWV3KTsKKyAgICBFd2tWaWV3SW1wbDo6
ZnJvbUV2YXNPYmplY3QobV93ZWJWaWV3KS0+ZW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgZGlkRW50
ZXJGdWxsU2NyZWVuKCk7CiB9CiAKQEAgLTY2LDggKzY2LDkgQEAgdm9pZCBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5OjpleGl0RnVsbFNjcmVlbigpCiAgICAgaWYgKCFtX3dlYlZpZXcpCiAgICAg
ICAgIHJldHVybjsKIAorCiAgICAgd2lsbEV4aXRGdWxsU2NyZWVuKCk7Ci0gICAgZXdrX3ZpZXdf
ZnVsbF9zY3JlZW5fZXhpdChtX3dlYlZpZXcpOworICAgIEV3a1ZpZXdJbXBsOjpmcm9tRXZhc09i
amVjdChtX3dlYlZpZXcpLT5leGl0RnVsbFNjcmVlbigpOwogICAgIGRpZEV4aXRGdWxsU2NyZWVu
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5z
cGVjdG9yUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNw
ZWN0b3JQcm94eUVmbC5jcHAKaW5kZXggM2JlN2M1Mi4uODRiYTJiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKKyNpbmNsdWRlICJFd2tW
aWV3SW1wbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgImV3a19z
ZXR0aW5ncy5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCkBAIC0xMDEsNyArMTAyLDcgQEAgV2Vi
UGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdl
KCkKICAgICBFd2tfU2V0dGluZ3MqIHNldHRpbmdzID0gZXdrX3ZpZXdfc2V0dGluZ3NfZ2V0KG1f
aW5zcGVjdG9yVmlldyk7CiAgICAgZXdrX3NldHRpbmdzX2ZpbGVfYWNjZXNzX2Zyb21fZmlsZV91
cmxzX2FsbG93ZWRfc2V0KHNldHRpbmdzLCB0cnVlKTsKIAotICAgIHJldHVybiBld2tfdmlld19w
YWdlX2dldChtX2luc3BlY3RvclZpZXcpOworICAgIHJldHVybiBFd2tWaWV3SW1wbDo6ZnJvbUV2
YXNPYmplY3QobV9pbnNwZWN0b3JWaWV3KS0+cGFnZSgpOwogfQogCiB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybU9wZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQYWdlUHJveHlFZmwuY3BwCmluZGV4IDk4YWUwOGEuLjczNGRmNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
IAorI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVu
dEltcGwuaCIKQEAgLTM5LDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIEV2YXNfT2Jq
ZWN0KiBXZWJQYWdlUHJveHk6OnZpZXdXaWRnZXQoKQogewotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxQYWdlQ2xpZW50SW1wbCo+KG1fcGFnZUNsaWVudCktPnZpZXdXaWRnZXQoKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8UGFnZUNsaWVudEltcGwqPihtX3BhZ2VDbGllbnQpLT52aWV3SW1wbCgp
LT52aWV3KCk7CiB9CiAKIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0YW5kYXJkVXNlckFnZW50KGNv
bnN0IFN0cmluZyYgLyphcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQqLykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170452</attachid>
            <date>2012-10-24 12:47:40 -0700</date>
            <delta_ts>2012-10-24 14:52:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100230_ewk_view_methods.patch</filename>
            <type>text/plain</type>
            <size>154168</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwZTYyMDRjLi5jZDVmYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjU1
IEBACisyMDEyLTEwLTI0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRl
bC5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBHZXQgcmlkIG9mIEV3a19WaWV3IHByaXZhdGUg
QyBBUEkgKFBhcnQgMSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMDIzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbW92ZSBwYXJ0IG9mIHRoZSBFd2tfVmlldyBwcml2YXRlIEMgQVBJIGFuZCByZXBs
YWNlCisgICAgICAgIGl0IGJ5IEMrKyBtZXRob2RzIGluIEV3a1ZpZXdJbXBsIGNsYXNzLiBFdmVu
dHVhbGx5LAorICAgICAgICBhbGwgdGhlIHByaXZhdGUgQyBmdW5jdGlvbnMgd2lsbCBiZSByZW1v
dmVkIGJ1dCBpdAorICAgICAgICB3aWxsIGJlIGRvbmUgaW4gc2V2ZXJhbCBwYXRjaGVzLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3
R2V0UGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwOgor
ICAgICAgICAoX2V3a192aWV3X2NvbW1pdCk6CisgICAgICAgIChfZXdrX3ZpZXdfcHJlZWRpdF9j
aGFuZ2VkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbCk6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6c21hcnREYXRhKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpmcm9tRXZhc09i
amVjdCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6d2tQYWdlKToKKyAgICAgICAgKEV3a1ZpZXdJ
bXBsOjpzZXRDdXJzb3IpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnJlZHJhd1JlZ2lvbik6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6aW5mb3JtRG93bmxvYWRKb2JDYW5jZWxsZWQpOgorICAgICAg
ICAoRXdrVmlld0ltcGw6OmluZm9ybURvd25sb2FkSm9iRmFpbGVkKToKKyAgICAgICAgKEV3a1Zp
ZXdJbXBsOjppbmZvcm1Eb3dubG9hZEpvYkZpbmlzaGVkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBs
OjppbmZvcm1Eb3dubG9hZEpvYlJlcXVlc3RlZCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6aW5m
b3JtTmV3Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjplbnRl
ckZ1bGxTY3JlZW4pOgorICAgICAgICAoRXdrVmlld0ltcGw6OmV4aXRGdWxsU2NyZWVuKToKKyAg
ICAgICAgKEV3a1ZpZXdJbXBsOjpzZXRJbWFnZURhdGEpOgorICAgICAgICAoRXdrVmlld0ltcGw6
OmluZm9ybUxvYWRFcnJvcik6CisgICAgICAgIChFd2tWaWV3SW1wbDo6aW5mb3JtTG9hZEZpbmlz
aGVkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1Mb2FkUHJvZ3Jlc3MpOgorICAgICAg
ICAoRXdrVmlld0ltcGw6OmluZm9ybVByb3Zpc2lvbmFsTG9hZEZhaWxlZCk6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6aW5mb3JtTG9hZENvbW1pdHRlZCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6
aW5mb3JtUHJvdmlzaW9uYWxMb2FkUmVkaXJlY3QpOgorICAgICAgICAoRXdrVmlld0ltcGw6Omlu
Zm9ybVByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmluZm9y
bU5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChFd2tWaWV3SW1wbDo6aW5mb3Jt
TmV3V2luZG93UG9saWN5RGVjaXNpb24pOgorICAgICAgICAoRXdrVmlld0ltcGw6OmluZm9ybVJl
c291cmNlTG9hZFN0YXJ0ZWQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmluZm9ybVJlc291cmNl
TG9hZFJlc3BvbnNlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1SZXNvdXJjZUxvYWRG
YWlsZWQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmluZm9ybVJlc291cmNlTG9hZEZpbmlzaGVk
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1SZXNvdXJjZVJlcXVlc3RTZW50KToKKyAg
ICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1UaXRsZUNoYW5nZSk6CisgICAgICAgIChFd2tWaWV3
SW1wbDo6aW5mb3JtVG9vbHRpcFRleHRDaGFuZ2UpOgorICAgICAgICAoRXdrVmlld0ltcGw6Omlu
Zm9ybVRleHRGb3VuZCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2l6ZSk6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6aW5mb3JtSWNvbkNoYW5nZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6aW5m
b3JtSW50ZW50UmVxdWVzdCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6aW5mb3JtSW50ZW50U2Vy
dmljZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChFd2tWaWV3SW1wbDo6Y3JlYXRlR0xTdXJmYWNl
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUp
OgorICAgICAgICAoRXdrVmlld0ltcGw6OnJlcXVlc3RDb2xvclBpY2tlcik6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6ZGlzbWlzc0NvbG9yUGlja2VyKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpp
bmZvcm1CYWNrRm9yd2FyZExpc3RDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXdJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBs
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjp2aWV3KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpw
YWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp2aWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnZpZXdTaXplKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OmlzVmlld0ZvY3VzZWQpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsOjpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6ZGlkUmVsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OnRvb2xUaXBDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNldEN1
cnNvcik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjplbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmV4aXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjp1cGRhdGVUZXh0SW5wdXRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpoYW5kbGVEb3dubG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlKToKKyAgICAgICAgKFBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6UGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudEVmbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmw6OmRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudEVmbDo6dXBkYXRlVmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdl
VmlzaWJsZUNvbnRlbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9QYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRFZmw6OmNyZWF0ZSk6CisgICAgICAgIChQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRf
am9iLmNwcDoKKyAgICAgICAgKEV3a19Eb3dubG9hZF9Kb2I6OkV3a19Eb3dubG9hZF9Kb2IpOgor
ICAgICAgICAoRXdrX0Rvd25sb2FkX0pvYjo6dmlld0ltcGwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5oOgorICAgICAgICAoRXdrX0Rvd25s
b2FkX0pvYjo6Y3JlYXRlKToKKyAgICAgICAgKEV3a19Eb3dubG9hZF9Kb2IpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKHBhZ2VWaWV3TWFwKToK
KyAgICAgICAgKGFkZFRvUGFnZVZpZXdNYXApOgorICAgICAgICAocmVtb3ZlRnJvbVBhZ2VWaWV3
TWFwKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9mYXZpY29uX2NoYW5nZWQpOgorICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9mb2N1
c19vdXQpOgorICAgICAgICAobWFwVG9XZWJDb250ZW50KToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9tb3VzZV93aGVlbCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bik6
CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X21vdXNlX21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKToK
KyAgICAgICAgKF9ld2tfdmlld19zbWFydF9rZXlfdXApOgorICAgICAgICAoX2V3a192aWV3X29u
X3Nob3cpOgorICAgICAgICAoX2V3a192aWV3X29uX2hpZGUpOgorICAgICAgICAoX2V3a192aWV3
X2ltcGxfZGVsKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9kZWwpOgorICAgICAgICAoX2V3
a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY29sb3Jf
c2V0KToKKyAgICAgICAgKF9ld2tfdmlld19pbml0aWFsaXplKToKKyAgICAgICAgKF9ld2tfdmll
d19hZGRfd2l0aF9zbWFydCk6CisgICAgICAgIChld2tfdmlld19jb250ZXh0X2dldCk6CisgICAg
ICAgIChld2tfdmlld191cmxfdXBkYXRlKToKKyAgICAgICAgKGV3a192aWV3X3VybF9zZXQpOgor
ICAgICAgICAoZXdrX3ZpZXdfdXJsX2dldCk6CisgICAgICAgIChld2tfdmlld19pY29uX3VybF9n
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcmVsb2FkKToKKyAgICAgICAgKGV3a192aWV3X3JlbG9h
ZF9ieXBhc3NfY2FjaGUpOgorICAgICAgICAoZXdrX3ZpZXdfc3RvcCk6CisgICAgICAgIChld2tf
dmlld19zZXR0aW5nc19nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdGl0bGVfZ2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3RleHRfaW5wdXRfc3RhdGVfdXBkYXRlKToKKyAgICAgICAgKGV3a192aWV3
X2xvYWRfcHJvZ3Jlc3NfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NjYWxlX3NldCk6CisgICAg
ICAgIChld2tfdmlld19zY2FsZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZGV2aWNlX3BpeGVs
X3JhdGlvX3NldCk6CisgICAgICAgIChld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9fZ2V0KToK
KyAgICAgICAgKGV3a192aWV3X3RoZW1lX3NldCk6CisgICAgICAgIChld2tfdmlld190aGVtZV9n
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfYmFjayk6CisgICAgICAgIChld2tfdmlld19mb3J3YXJk
KToKKyAgICAgICAgKGV3a192aWV3X2ludGVudF9kZWxpdmVyKToKKyAgICAgICAgKGV3a192aWV3
X2JhY2tfcG9zc2libGUpOgorICAgICAgICAoZXdrX3ZpZXdfZm9yd2FyZF9wb3NzaWJsZSk6Cisg
ICAgICAgIChld2tfdmlld19iYWNrX2ZvcndhcmRfbGlzdF9nZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfaHRtbF9zdHJpbmdfbG9hZCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuY29kaW5n
X2N1c3RvbV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21f
c2V0KToKKyAgICAgICAgKGV3a192aWV3X3BhZ2VfY3JlYXRlKToKKyAgICAgICAgKGV3a192aWV3
X3RleHRfZmluZCk6CisgICAgICAgIChld2tfdmlld190ZXh0X2ZpbmRfaGlnaGxpZ2h0X2NsZWFy
KToKKyAgICAgICAgKGV3a192aWV3X3RleHRfbWF0Y2hlc19jb3VudCk6CisgICAgICAgIChld2tf
dmlld19jb250ZW50c19zaXplX2NoYW5nZWQpOgorICAgICAgICAoZXdrX3ZpZXdfcG9wdXBfbWVu
dV9yZXF1ZXN0KToKKyAgICAgICAgKGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UpOgorICAgICAg
ICAoZXdrX3ZpZXdfcG9wdXBfbWVudV9zZWxlY3QpOgorICAgICAgICAoZXdrX3ZpZXdfbW91c2Vf
ZXZlbnRzX2VuYWJsZWRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X21vdXNlX2V2ZW50c19lbmFi
bGVkX2dldCk6CisgICAgICAgIChld2tfdmlld193ZWJwcm9jZXNzX2NyYXNoZWQpOgorICAgICAg
ICAoZXdrX3ZpZXdfY29sb3JfcGlja2VyX2NvbG9yX3NldCk6CisgICAgICAgIChld2tfdmlld19m
ZWVkX3RvdWNoX2V2ZW50KToKKyAgICAgICAgKGV3a192aWV3X3RvdWNoX2V2ZW50c19lbmFibGVk
X3NldCk6CisgICAgICAgIChld2tfdmlld190b3VjaF9ldmVudHNfZW5hYmxlZF9nZXQpOgorICAg
ICAgICAoZXdrX3ZpZXdfaW5zcGVjdG9yX3Nob3cpOgorICAgICAgICAoZXdrX3ZpZXdfaW5zcGVj
dG9yX2Nsb3NlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZE1hbmFnZXJFZmw6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRGYWlsKToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRDYW5jZWwpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZE1hbmFnZXJFZmw6OmRpZEZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkTWFuYWdlckVmbDo6cmVnaXN0ZXJEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuaDoKKyAgICAgICAgKERvd25sb2FkTWFuYWdlckVm
bCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RmluZENsaWVudEVmbDo6ZGlkRmluZFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6
OkZpbmRDbGllbnRFZmw6OmRpZEZhaWxUb0ZpbmRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpG
aW5kQ2xpZW50RWZsOjpGaW5kQ2xpZW50RWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0Zp
bmRDbGllbnRFZmwuaDoKKyAgICAgICAgKFdlYktpdDo6RmluZENsaWVudEVmbDo6Y3JlYXRlKToK
KyAgICAgICAgKEZpbmRDbGllbnRFZmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRm9ybUNs
aWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZvcm1DbGllbnRFZmw6OndpbGxTdWJtaXRG
b3JtKToKKyAgICAgICAgKFdlYktpdDo6Rm9ybUNsaWVudEVmbDo6Rm9ybUNsaWVudEVmbCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJLaXQ6
OkZvcm1DbGllbnRFZmw6OmNyZWF0ZSk6CisgICAgICAgIChGb3JtQ2xpZW50RWZsKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpyZWdpc3RlckludGVudFNlcnZpY2VG
b3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRDaGFuZ2VQ
cm9ncmVzcyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRGaW5pc2hM
b2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6ZGlkRmFp
bExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50
RWZsOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUxvYWRDbGllbnRFZmw6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZEZh
aWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VMb2FkQ2xpZW50RWZsOjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlTG9hZENsaWVudEVmbDo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpQYWdlTG9hZENsaWVu
dEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5oOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlTG9hZENsaWVudEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKFBhZ2VM
b2FkQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OnZpZXdJ
bXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VQb2xpY3lDbGllbnRFZmwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlUG9saWN5Q2xpZW50RWZsOjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVBvbGljeUNsaWVudEVmbDo6ZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVBvbGlj
eUNsaWVudEVmbDo6UGFnZVBvbGljeUNsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL2Vm
bC9QYWdlUG9saWN5Q2xpZW50RWZsLmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VQb2xpY3lDbGll
bnRFZmw6OmNyZWF0ZSk6CisgICAgICAgIChQYWdlUG9saWN5Q2xpZW50RWZsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VVSUNsaWVudEVmbDo6Y2xvc2VQYWdlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50
RWZsOjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsOjpy
dW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVUlDbGllbnRFZmw6OnJ1
bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsOjpy
dW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsOjpz
aG93Q29sb3JQaWNrZXIpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVUlDbGllbnRFZmw6OmhpZGVD
b2xvclBpY2tlcik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VVSUNsaWVudEVmbDo6ZXhjZWVkZWRE
YXRhYmFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsOjpmb2N1cyk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VVSUNsaWVudEVmbDo6dW5mb2N1cyk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VVSUNsaWVudEVmbDo6dGFrZUZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZVVJQ2xpZW50RWZsOjpnZXRXaW5kb3dGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VVSUNs
aWVudEVmbDo6c2V0V2luZG93RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVUlDbGllbnRF
Zmw6OlBhZ2VVSUNsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGll
bnRFZmwuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsOjpjcmVhdGUpOgorICAg
ICAgICAoUGFnZVVJQ2xpZW50RWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1Jlc291cmNl
TG9hZENsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVm
bDo6ZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRDbGllbnRFZmw6OmRpZFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291cmNl
KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpkaWRGaW5pc2hMb2Fk
Rm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRp
ZEZhaWxMb2FkRm9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRDbGll
bnRFZmw6OlJlc291cmNlTG9hZENsaWVudEVmbCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZENsaWVudEVmbDo6flJlc291cmNlTG9hZENsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9SZXNvdXJjZUxvYWRDbGllbnRFZmwuaDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkQ2xpZW50RWZsOjpjcmVhdGUpOgorICAgICAgICAoUmVzb3VyY2VMb2FkQ2xpZW50RWZs
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlFZmwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjplbnRlckZ1
bGxTY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojpl
eGl0RnVsbFNjcmVlbik6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94
eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNy
ZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5
RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2aWV3V2lkZ2V0KToKKwog
MjAxMi0xMC0yNCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAg
ICAgTWFrZSB0aGUgSW5zcGVjdG9yIFdLVmlldy9XZWJWaWV3IGJlY29tZSB0aGUgZmlyc3QgcmVz
cG9uZGVyIHdoZW4gYnJpbmdUb0Zyb250IGlzIGNhbGxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAppbmRleCAwM2Y2OTMwLi5hMDNkMTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCkBAIC0yMCw2
ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tWaWV3LmgiCiAKKyNp
bmNsdWRlICJFd2tWaWV3SW1wbC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUg
ImV3a192aWV3X3ByaXZhdGUuaCIKIApAQCAtMzIsNSArMzMsNyBAQCBXS1ZpZXdSZWYgV0tWaWV3
Q3JlYXRlKEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3Vw
UmVmIHBhZwogCiBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlld1JlZikKIHsK
LSAgICByZXR1cm4gdG9BUEkoZXdrX3ZpZXdfcGFnZV9nZXQodG9JbXBsKHZpZXdSZWYpKSk7Cisg
ICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gRXdrVmlld0ltcGw6OmZyb21FdmFzT2JqZWN0KHRv
SW1wbCh2aWV3UmVmKSk7CisKKyAgICByZXR1cm4gdmlld0ltcGwtPndrUGFnZSgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCmluZGV4
IDBiZTQ5NGMuLjQ0OGZjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3SW1wbC5jcHAKQEAgLTQxLDI2ICs0MSwzMiBAQAogI2luY2x1ZGUgImV3a192
aWV3LmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVjb3JlX0V2
YXMuaD4KKyNpbmNsdWRlIDxFY29yZV9JTUYuaD4KKyNpbmNsdWRlIDxFY29yZV9JTUZfRXZhcy5o
PgorI2luY2x1ZGUgPEVkamUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKK3N0YXRpYyBj
b25zdCBpbnQgZGVmYXVsdEN1cnNvclNpemUgPSAxNjsKKwogc3RhdGljIHZvaWQgX2V3a192aWV3
X2NvbW1pdCh2b2lkKiBkYXRhLCBFY29yZV9JTUZfQ29udGV4dCosIHZvaWQqIGV2ZW50SW5mbykK
IHsKICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tf
Vmlld19TbWFydF9EYXRhKj4oZGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdik7Ci0gICAgaWYgKCFldmVudEluZm8gfHwgIXByaXYtPmlzSW1mRm9j
dXNlZCkKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCB2aWV3SW1w
bCk7CisgICAgaWYgKCFldmVudEluZm8gfHwgIXZpZXdJbXBsLT5pc0ltZkZvY3VzZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHByaXYtPnBhZ2VQcm94eS0+Y29uZmlybUNvbXBvc2l0aW9uKFN0
cmluZzo6ZnJvbVVURjgoc3RhdGljX2Nhc3Q8Y2hhcio+KGV2ZW50SW5mbykpKTsKKyAgICB2aWV3
SW1wbC0+cGFnZVByb3h5LT5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5nOjpmcm9tVVRGOChzdGF0
aWNfY2FzdDxjaGFyKj4oZXZlbnRJbmZvKSkpOwogfQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
cHJlZWRpdF9jaGFuZ2VkKHZvaWQqIGRhdGEsIEVjb3JlX0lNRl9Db250ZXh0KiBjb250ZXh0LCB2
b2lkKikKIHsKICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2Fz
dDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgdmlld0ltcGwpOwogCi0gICAgaWYgKCFwcml2LT5wYWdlUHJveHktPmZvY3Vz
ZWRGcmFtZSgpIHx8ICFwcml2LT5pc0ltZkZvY3VzZWQpCisgICAgaWYgKCF2aWV3SW1wbC0+cGFn
ZVByb3h5LT5mb2N1c2VkRnJhbWUoKSB8fCAhdmlld0ltcGwtPmlzSW1mRm9jdXNlZCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgY2hhciogYnVmZmVyID0gMDsKQEAgLTcxLDcgKzc3LDcgQEAgc3Rh
dGljIHZvaWQgX2V3a192aWV3X3ByZWVkaXRfY2hhbmdlZCh2b2lkKiBkYXRhLCBFY29yZV9JTUZf
Q29udGV4dCogY29udGV4dCwgdm8KICAgICBTdHJpbmcgcHJlZWRpdFN0cmluZyA9IFN0cmluZzo6
ZnJvbVVURjgoYnVmZmVyKTsKICAgICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVy
bGluZXM7CiAgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwgcHJl
ZWRpdFN0cmluZy5sZW5ndGgoKSwgQ29sb3IoMCwgMCwgMCksIGZhbHNlKSk7Ci0gICAgcHJpdi0+
cGFnZVByb3h5LT5zZXRDb21wb3NpdGlvbihwcmVlZGl0U3RyaW5nLCB1bmRlcmxpbmVzLCAwKTsK
KyAgICB2aWV3SW1wbC0+cGFnZVByb3h5LT5zZXRDb21wb3NpdGlvbihwcmVlZGl0U3RyaW5nLCB1
bmRlcmxpbmVzLCAwKTsKIH0KIAogc3RhdGljIHZvaWQgX2V3a192aWV3X2ltZl9jb250ZXh0X2Rl
c3Ryb3koRWNvcmVfSU1GX0NvbnRleHQqIGltZkNvbnRleHQpCkBAIC0xMjUsMTMgKzEzMSwxMyBA
QCBFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcpCiAgICAgLCBtX3Zp
ZXcodmlldykKIHsKICAgICBBU1NFUlQodmlldyk7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGV2YXNfb2JqZWN0
X3NtYXJ0X2RhdGFfZ2V0KHZpZXcpKTsKLSAgICBBU1NFUlQoc21hcnREYXRhKTsKKyAgICBFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworICAgIEFTU0VSVChzZCk7CiAKLSAg
ICBpbWZDb250ZXh0ID0gX2V3a192aWV3X2ltZl9jb250ZXh0X2NyZWF0ZShzbWFydERhdGEpOwor
ICAgIGltZkNvbnRleHQgPSBfZXdrX3ZpZXdfaW1mX2NvbnRleHRfY3JlYXRlKHNkKTsKIAogI2lm
ZGVmIEhBVkVfRUNPUkVfWAotICAgIGlzVXNpbmdFY29yZVggPSBXZWJDb3JlOjppc1VzaW5nRWNv
cmVYKHNtYXJ0RGF0YS0+YmFzZS5ldmFzKTsKKyAgICBpc1VzaW5nRWNvcmVYID0gV2ViQ29yZTo6
aXNVc2luZ0Vjb3JlWChzZC0+YmFzZS5ldmFzKTsKICNlbmRpZgogfQogCkBAIC0xNDMsMyArMTQ5
LDU0OCBAQCBFd2tWaWV3SW1wbDo6fkV3a1ZpZXdJbXBsKCkKICAgICBFSU5BX0xJU1RfRlJFRShw
b3B1cE1lbnVJdGVtcywgaXRlbSkKICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PEV3a19Qb3B1
cF9NZW51X0l0ZW0qPihpdGVtKTsKIH0KKworRXdrX1ZpZXdfU21hcnRfRGF0YSogRXdrVmlld0lt
cGw6OnNtYXJ0RGF0YSgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0
X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChtX3ZpZXcpKTsKK30KKworRXdrVmll
d0ltcGwqIEV3a1ZpZXdJbXBsOjpmcm9tRXZhc09iamVjdChFdmFzX09iamVjdCogdmlldykKK3sK
KyAgICBBU1NFUlQodmlldyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNf
Y2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQodmll
dykpOworICAgIEFTU0VSVChzZCk7CisgICAgQVNTRVJUKHNkLT5wcml2KTsKKyAgICByZXR1cm4g
c2QtPnByaXY7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXRyaWV2ZXMgdGhlIGludGVy
bmFsIFdLUGFnZSBmb3IgdGhpcyB2aWV3LgorICovCitXS1BhZ2VSZWYgRXdrVmlld0ltcGw6Ondr
UGFnZSgpCit7CisgICAgcmV0dXJuIHRvQVBJKHBhZ2VQcm94eS5nZXQoKSk7Cit9CisKK3ZvaWQg
RXdrVmlld0ltcGw6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikKK3sKKyAgICBFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworCisgICAgY29uc3QgY2hhciogZ3Jv
dXAgPSBjdXJzb3IucGxhdGZvcm1DdXJzb3IoKTsKKyAgICBpZiAoIWdyb3VwIHx8IGdyb3VwID09
IGN1cnNvckdyb3VwKQorICAgICAgICByZXR1cm47CisKKyAgICBjdXJzb3JHcm91cCA9IGdyb3Vw
OworICAgIGN1cnNvck9iamVjdCA9IGFkb3B0UmVmKGVkamVfb2JqZWN0X2FkZChzZC0+YmFzZS5l
dmFzKSk7CisKKyAgICBFY29yZV9FdmFzKiBlY29yZUV2YXMgPSBlY29yZV9ldmFzX2Vjb3JlX2V2
YXNfZ2V0KHNkLT5iYXNlLmV2YXMpOworICAgIGlmICghdGhlbWUgfHwgIWVkamVfb2JqZWN0X2Zp
bGVfc2V0KGN1cnNvck9iamVjdC5nZXQoKSwgdGhlbWUsIGdyb3VwKSkgeworICAgICAgICBjdXJz
b3JPYmplY3QuY2xlYXIoKTsKKworICAgICAgICBlY29yZV9ldmFzX29iamVjdF9jdXJzb3Jfc2V0
KGVjb3JlRXZhcywgMCwgMCwgMCwgMCk7CisjaWZkZWYgSEFWRV9FQ09SRV9YCisgICAgICAgIGlm
IChpc1VzaW5nRWNvcmVYKQorICAgICAgICAgICAgV2ViQ29yZTo6YXBwbHlGYWxsYmFja0N1cnNv
cihlY29yZUV2YXMsIGdyb3VwKTsKKyNlbmRpZgorICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgRXZhc19Db29yZCB3aWR0aCwgaGVpZ2h0OworICAgIGVkamVfb2JqZWN0X3NpemVfbWluX2dl
dChjdXJzb3JPYmplY3QuZ2V0KCksICZ3aWR0aCwgJmhlaWdodCk7CisgICAgaWYgKHdpZHRoIDw9
IDAgfHwgaGVpZ2h0IDw9IDApCisgICAgICAgIGVkamVfb2JqZWN0X3NpemVfbWluX2NhbGMoY3Vy
c29yT2JqZWN0LmdldCgpLCAmd2lkdGgsICZoZWlnaHQpOworICAgIGlmICh3aWR0aCA8PSAwIHx8
IGhlaWdodCA8PSAwKSB7CisgICAgICAgIHdpZHRoID0gZGVmYXVsdEN1cnNvclNpemU7CisgICAg
ICAgIGhlaWdodCA9IGRlZmF1bHRDdXJzb3JTaXplOworICAgIH0KKyAgICBldmFzX29iamVjdF9y
ZXNpemUoY3Vyc29yT2JqZWN0LmdldCgpLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIGNvbnN0IGNo
YXIqIGRhdGE7CisgICAgaW50IGhvdHNwb3RYID0gMDsKKyAgICBkYXRhID0gZWRqZV9vYmplY3Rf
ZGF0YV9nZXQoY3Vyc29yT2JqZWN0LmdldCgpLCAiaG90LngiKTsKKyAgICBpZiAoZGF0YSkKKyAg
ICAgICAgaG90c3BvdFggPSBhdG9pKGRhdGEpOworCisgICAgaW50IGhvdHNwb3RZID0gMDsKKyAg
ICBkYXRhID0gZWRqZV9vYmplY3RfZGF0YV9nZXQoY3Vyc29yT2JqZWN0LmdldCgpLCAiaG90Lnki
KTsKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgaG90c3BvdFkgPSBhdG9pKGRhdGEpOworCisgICAg
ZWNvcmVfZXZhc19vYmplY3RfY3Vyc29yX3NldChlY29yZUV2YXMsIGN1cnNvck9iamVjdC5nZXQo
KSwgRVZBU19MQVlFUl9NQVgsIGhvdHNwb3RYLCBob3RzcG90WSk7Cit9CisKK3ZvaWQgRXdrVmll
d0ltcGw6OnJlZHJhd1JlZ2lvbihjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CisKKyAgICBpZiAoIXNkLT5pbWFnZSkKKyAg
ICAgICAgcmV0dXJuOworCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIEVXS19W
SUVXX0lNUExfR0VUX09SX1JFVFVSTihzZCwgdmlld0ltcGwpOworCisgICAgZXZhc19nbF9tYWtl
X2N1cnJlbnQodmlld0ltcGwtPmV2YXNHbCwgdmlld0ltcGwtPmV2YXNHbFN1cmZhY2UsIHZpZXdJ
bXBsLT5ldmFzR2xDb250ZXh0KTsKKyAgICB2aWV3SW1wbC0+cGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudC0+ZGlzcGxheShyZWN0LCBJbnRQb2ludChzZC0+dmlldy54LCBzZC0+dmlldy55KSk7
CisjZW5kaWYKKworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzZC0+aW1h
Z2UsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKK30K
KworLyoqCisgKiBAaW50ZXJuYWwKKyAqIEEgZG93bmxvYWQgZm9yIHRoYXQgdmlldyB3YXMgY2Fu
Y2VsbGVkLgorICoKKyAqIEVtaXRzIHNpZ25hbDogImRvd25sb2FkLGNhbmNlbGxlZCIgd2l0aCBw
b2ludGVyIHRvIGEgRXdrX0Rvd25sb2FkX0pvYi4KKyAqLwordm9pZCBFd2tWaWV3SW1wbDo6aW5m
b3JtRG93bmxvYWRKb2JDYW5jZWxsZWQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQpCit7Cisg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJkb3dubG9hZCxjYW5j
ZWxsZWQiLCBkb3dubG9hZCk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBBIGRvd25sb2Fk
IGZvciB0aGF0IHZpZXcgaGFzIGZhaWxlZC4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJkb3dubG9h
ZCxmYWlsZWQiIHdpdGggcG9pbnRlciB0byBhIEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IuCisgKi8K
K3ZvaWQgRXdrVmlld0ltcGw6OmluZm9ybURvd25sb2FkSm9iRmFpbGVkKEV3a19Eb3dubG9hZF9K
b2IqIGRvd25sb2FkLCBFd2tfRXJyb3IqIGVycm9yKQoreworICAgIEV3a19Eb3dubG9hZF9Kb2Jf
RXJyb3IgZG93bmxvYWRFcnJvciA9IHsgZG93bmxvYWQsIGVycm9yIH07CisgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJkb3dubG9hZCxmYWlsZWQiLCAmZG93bmxv
YWRFcnJvcik7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBBIGRvd25sb2FkIGZvciB0aGF0
IHZpZXcgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5LgorICoKKyAqIEVtaXRzIHNpZ25hbDogImRvd25s
b2FkLGZpbmlzaGVkIiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfRG93bmxvYWRfSm9iLgorICovCit2
b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Eb3dubG9hZEpvYkZpbmlzaGVkKEV3a19Eb3dubG9hZF9K
b2IqIGRvd25sb2FkKQoreworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92
aWV3LCAiZG93bmxvYWQsZmluaXNoZWQiLCBkb3dubG9hZCk7Cit9CisKKy8qKgorICogQGludGVy
bmFsCisgKiBBIG5ldyBkb3dubG9hZCBoYXMgYmVlbiByZXF1ZXN0ZWQgZm9yIHRoYXQgdmlldy4K
KyAqCisgKiBFbWl0cyBzaWduYWw6ICJkb3dubG9hZCxyZXF1ZXN0IiB3aXRoIHBvaW50ZXIgdG8g
YSBFd2tfRG93bmxvYWRfSm9iLgorICovCit2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Eb3dubG9h
ZEpvYlJlcXVlc3RlZChFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCkKK3sKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImRvd25sb2FkLHJlcXVlc3QiLCBkb3du
bG9hZCk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBpbmZvcm1zIHRoYXQgYSBmb3JtIHJl
cXVlc3QgaXMgYWJvdXQgdG8gYmUgc3VibWl0dGVkLgorICoKKyAqIEVtaXRzIHNpZ25hbDogImZv
cm0sc3VibWlzc2lvbixyZXF1ZXN0IiB3aXRoIHBvaW50ZXIgdG8gRXdrX0Zvcm1fU3VibWlzc2lv
bl9SZXF1ZXN0LgorICovCit2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1OZXdGb3JtU3VibWlzc2lv
blJlcXVlc3QoRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiZm9ybSxzdWJtaXNzaW9uLHJl
cXVlc3QiLCByZXF1ZXN0KTsKK30KKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKy8qKgor
ICogQGludGVybmFsCisgKiBDYWxscyBmdWxsc2NyZWVuX2VudGVyIGNhbGxiYWNrIG9yIGZhbGxz
IGJhY2sgdG8gZGVmYXVsdCBiZWhhdmlvciBhbmQgZW5hYmxlcyBmdWxsc2NyZWVuIG1vZGUuCisg
Ki8KK3ZvaWQgRXdrVmlld0ltcGw6OmVudGVyRnVsbFNjcmVlbigpCit7CisgICAgRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QgPSBzbWFydERhdGEoKTsKKworICAgIGlmICghc2QtPmFwaS0+ZnVsbHNj
cmVlbl9lbnRlciB8fCAhc2QtPmFwaS0+ZnVsbHNjcmVlbl9lbnRlcihzZCkpIHsKKyAgICAgICAg
RWNvcmVfRXZhcyogZWNvcmVFdmFzID0gZWNvcmVfZXZhc19lY29yZV9ldmFzX2dldChzZC0+YmFz
ZS5ldmFzKTsKKyAgICAgICAgZWNvcmVfZXZhc19mdWxsc2NyZWVuX3NldChlY29yZUV2YXMsIHRy
dWUpOworICAgIH0KK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIENhbGxzIGZ1bGxzY3JlZW5f
ZXhpdCBjYWxsYmFjayBvciBmYWxscyBiYWNrIHRvIGRlZmF1bHQgYmVoYXZpb3IgYW5kIGRpc2Fi
bGVzIGZ1bGxzY3JlZW4gbW9kZS4KKyAqLwordm9pZCBFd2tWaWV3SW1wbDo6ZXhpdEZ1bGxTY3Jl
ZW4oKQoreworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CisKKyAg
ICBpZiAoIXNkLT5hcGktPmZ1bGxzY3JlZW5fZXhpdCB8fCAhc2QtPmFwaS0+ZnVsbHNjcmVlbl9l
eGl0KHNkKSkgeworICAgICAgICBFY29yZV9FdmFzKiBlY29yZUV2YXMgPSBlY29yZV9ldmFzX2Vj
b3JlX2V2YXNfZ2V0KHNkLT5iYXNlLmV2YXMpOworICAgICAgICBlY29yZV9ldmFzX2Z1bGxzY3Jl
ZW5fc2V0KGVjb3JlRXZhcywgZmFsc2UpOworICAgIH0KK30KKyNlbmRpZgorCit2b2lkIEV3a1Zp
ZXdJbXBsOjpzZXRJbWFnZURhdGEodm9pZCogaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBzaXpl
KQoreworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CisgICAgaWYg
KCFpbWFnZURhdGEgfHwgIXNkLT5pbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZXZhc19v
YmplY3RfcmVzaXplKHNkLT5pbWFnZSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKyAg
ICBldmFzX29iamVjdF9pbWFnZV9zaXplX3NldChzZC0+aW1hZ2UsIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSk7CisgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9jb3B5X3NldChzZC0+aW1h
Z2UsIGltYWdlRGF0YSk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBpbmZvcm1zIGxvYWQg
ZmFpbGVkIHdpdGggZXJyb3IgaW5mb3JtYXRpb24uCisgKgorICogRW1pdHMgc2lnbmFsOiAibG9h
ZCxlcnJvciIgd2l0aCBwb2ludGVyIHRvIEV3a19FcnJvci4KKyAqLwordm9pZCBFd2tWaWV3SW1w
bDo6aW5mb3JtTG9hZEVycm9yKEV3a19FcnJvciogZXJyb3IpCit7CisgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJsb2FkLGVycm9yIiwgZXJyb3IpOworfQorCisv
KioKKyAqIEBpbnRlcm5hbAorICogaW5mb3JtcyBsb2FkIGZpbmlzaGVkLgorICoKKyAqIEVtaXRz
IHNpZ25hbDogImxvYWQsZmluaXNoZWQiLgorICovCit2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1M
b2FkRmluaXNoZWQoKQoreworICAgIGV3a192aWV3X3VybF91cGRhdGUobV92aWV3KTsKKyAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImxvYWQsZmluaXNoZWQiLCAw
KTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIGluZm9ybXMgbG9hZCBwcm9ncmVzcyBjaGFu
Z2VkLgorICoKKyAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvZ3Jlc3MiIHdpdGggcG9pbnRlciB0
byBhIGRvdWJsZSBmcm9tIDAuMCB0byAxLjAuCisgKi8KK3ZvaWQgRXdrVmlld0ltcGw6OmluZm9y
bUxvYWRQcm9ncmVzcyhkb3VibGUgcHJvZ3Jlc3MpCit7CisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChtX3ZpZXcsICJsb2FkLHByb2dyZXNzIiwgJnByb2dyZXNzKTsKK30KKwor
LyoqCisgKiBAaW50ZXJuYWwKKyAqIGluZm9ybXMgdmlldyBwcm92aXNpb25hbCBsb2FkIGZhaWxl
ZCB3aXRoIGVycm9yIGluZm9ybWF0aW9uLgorICoKKyAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJv
dmlzaW9uYWwsZmFpbGVkIiB3aXRoIHBvaW50ZXIgdG8gRXdrX0Vycm9yLgorICovCit2b2lkIEV3
a1ZpZXdJbXBsOjppbmZvcm1Qcm92aXNpb25hbExvYWRGYWlsZWQoRXdrX0Vycm9yKiBlcnJvcikK
K3sKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImxvYWQscHJv
dmlzaW9uYWwsZmFpbGVkIiwgZXJyb3IpOworfQorCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCit2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Mb2FkQ29tbWl0dGVkKCkKK3sKKyAgICBwYWdl
Vmlld3BvcnRDb250cm9sbGVyLT5kaWRDb21taXRMb2FkKCk7Cit9CisjZW5kaWYKKworLyoqCisg
KiBAaW50ZXJuYWwKKyAqIGluZm9ybXMgdmlldyByZWNlaXZlZCByZWRpcmVjdCBmb3IgcHJvdmlz
aW9uYWwgbG9hZC4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJsb2FkLHByb3Zpc2lvbmFsLHJlZGly
ZWN0Ii4KKyAqLwordm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtUHJvdmlzaW9uYWxMb2FkUmVkaXJl
Y3QoKQoreworICAgIGV3a192aWV3X3VybF91cGRhdGUobV92aWV3KTsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImxvYWQscHJvdmlzaW9uYWwscmVkaXJlY3Qi
LCAwKTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIGluZm9ybXMgdmlldyBwcm92aXNpb25h
bCBsb2FkIHN0YXJ0ZWQuCisgKgorICogRW1pdHMgc2lnbmFsOiAibG9hZCxwcm92aXNpb25hbCxz
dGFydGVkIi4KKyAqLwordm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtUHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZCgpCit7CisgICAgZXdrX3ZpZXdfdXJsX3VwZGF0ZShtX3ZpZXcpOworICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibG9hZCxwcm92aXNpb25hbCxzdGFydGVk
IiwgMCk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBpbmZvcm1zIHRoYXQgYSBuYXZpZ2F0
aW9uIHBvbGljeSBkZWNpc2lvbiBzaG91bGQgYmUgdGFrZW4uCisgKgorICogRW1pdHMgc2lnbmFs
OiAicG9saWN5LGRlY2lzaW9uLG5hdmlnYXRpb24iLgorICovCit2b2lkIEV3a1ZpZXdJbXBsOjpp
bmZvcm1OYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lz
aW9uKiBkZWNpc2lvbikKK3sKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1f
dmlldywgInBvbGljeSxkZWNpc2lvbixuYXZpZ2F0aW9uIiwgZGVjaXNpb24pOworfQorCisvKioK
KyAqIEBpbnRlcm5hbAorICogaW5mb3JtcyB0aGF0IGEgbmV3IHdpbmRvdyBwb2xpY3kgZGVjaXNp
b24gc2hvdWxkIGJlIHRha2VuLgorICoKKyAqIEVtaXRzIHNpZ25hbDogInBvbGljeSxkZWNpc2lv
bixuZXcsd2luZG93Ii4KKyAqLwordm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtTmV3V2luZG93UG9s
aWN5RGVjaXNpb24oRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbikKK3sK
KyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInBvbGljeSxkZWNp
c2lvbixuZXcsd2luZG93IiwgZGVjaXNpb24pOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICog
TG9hZCB3YXMgaW5pdGlhdGVkIGZvciBhIHJlc291cmNlIGluIHRoZSB2aWV3LgorICoKKyAqIEVt
aXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3QsbmV3IiB3aXRoIHBvaW50ZXIgdG8gcmVzb3Vy
Y2UgcmVxdWVzdC4KKyAqLwordm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtUmVzb3VyY2VMb2FkU3Rh
cnRlZChFd2tfUmVzb3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QpCit7
CisgICAgRXdrX1Jlc291cmNlX1JlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291cmNlLCBy
ZXF1ZXN0LCAwfTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3
LCAicmVzb3VyY2UscmVxdWVzdCxuZXciLCAmcmVzb3VyY2VSZXF1ZXN0KTsKK30KKworLyoqCisg
KiBAaW50ZXJuYWwKKyAqIFJlY2VpdmVkIGEgcmVzcG9uc2UgdG8gYSByZXNvdXJjZSBsb2FkIHJl
cXVlc3QgaW4gdGhlIHZpZXcuCisgKgorICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVxdWVz
dCxyZXNwb25zZSIgd2l0aCBwb2ludGVyIHRvIHJlc291cmNlIHJlc3BvbnNlLgorICovCit2b2lk
IEV3a1ZpZXdJbXBsOjppbmZvcm1SZXNvdXJjZUxvYWRSZXNwb25zZShFd2tfUmVzb3VyY2UqIHJl
c291cmNlLCBFd2tfVXJsX1Jlc3BvbnNlKiByZXNwb25zZSkKK3sKKyAgICBFd2tfUmVzb3VyY2Vf
TG9hZF9SZXNwb25zZSByZXNvdXJjZUxvYWRSZXNwb25zZSA9IHtyZXNvdXJjZSwgcmVzcG9uc2V9
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2Us
cmVxdWVzdCxyZXNwb25zZSIsICZyZXNvdXJjZUxvYWRSZXNwb25zZSk7Cit9CisKKy8qKgorICog
QGludGVybmFsCisgKiBGYWlsZWQgbG9hZGluZyBhIHJlc291cmNlIGluIHRoZSB2aWV3LgorICoK
KyAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3QsZmluaXNoZWQiIHdpdGggcG9pbnRl
ciB0byB0aGUgcmVzb3VyY2UgbG9hZCBlcnJvci4KKyAqLwordm9pZCBFd2tWaWV3SW1wbDo6aW5m
b3JtUmVzb3VyY2VMb2FkRmFpbGVkKEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19FcnJvciog
ZXJyb3IpCit7CisgICAgRXdrX1Jlc291cmNlX0xvYWRfRXJyb3IgcmVzb3VyY2VMb2FkRXJyb3Ig
PSB7cmVzb3VyY2UsIGVycm9yfTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KG1fdmlldywgInJlc291cmNlLHJlcXVlc3QsZmFpbGVkIiwgJnJlc291cmNlTG9hZEVycm9yKTsK
K30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIEZpbmlzaGVkIGxvYWRpbmcgYSByZXNvdXJjZSBp
biB0aGUgdmlldy4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlz
aGVkIiB3aXRoIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlLgorICovCit2b2lkIEV3a1ZpZXdJbXBs
OjppbmZvcm1SZXNvdXJjZUxvYWRGaW5pc2hlZChFd2tfUmVzb3VyY2UqIHJlc291cmNlKQorewor
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVx
dWVzdCxmaW5pc2hlZCIsIHJlc291cmNlKTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJl
cXVlc3Qgd2FzIHNlbnQgZm9yIGEgcmVzb3VyY2UgaW4gdGhlIHZpZXcuCisgKgorICogRW1pdHMg
c2lnbmFsOiAicmVzb3VyY2UscmVxdWVzdCxzZW50IiB3aXRoIHBvaW50ZXIgdG8gcmVzb3VyY2Ug
cmVxdWVzdCBhbmQgcG9zc2libGUgcmVkaXJlY3QgcmVzcG9uc2UuCisgKi8KK3ZvaWQgRXdrVmll
d0ltcGw6OmluZm9ybVJlc291cmNlUmVxdWVzdFNlbnQoRXdrX1Jlc291cmNlKiByZXNvdXJjZSwg
RXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3Bv
bnNlKQoreworICAgIEV3a19SZXNvdXJjZV9SZXF1ZXN0IHJlc291cmNlUmVxdWVzdCA9IHtyZXNv
dXJjZSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZX07CisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChtX3ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LHNlbnQiLCAmcmVzb3VyY2VS
ZXF1ZXN0KTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFRoZSB2aWV3IHRpdGxlIHdhcyBj
aGFuZ2VkIGJ5IHRoZSBmcmFtZSBsb2FkZXIuCisgKgorICogRW1pdHMgc2lnbmFsOiAidGl0bGUs
Y2hhbmdlZCIgd2l0aCBwb2ludGVyIHRvIG5ldyB0aXRsZSBzdHJpbmcuCisgKi8KK3ZvaWQgRXdr
Vmlld0ltcGw6OmluZm9ybVRpdGxlQ2hhbmdlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit7CisgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJ0aXRsZSxjaGFuZ2VkIiwg
Y29uc3RfY2FzdDxjaGFyKj4odGl0bGUudXRmOCgpLmRhdGEoKSkpOworfQorCisvKioKKyAqIEBp
bnRlcm5hbAorICovCit2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Ub29sdGlwVGV4dENoYW5nZShj
b25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgaWYgKHRleHQuaXNFbXB0eSgpKQorICAgICAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInRvb2x0aXAsdGV4dCx1bnNl
dCIsIDApOworICAgIGVsc2UKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChtX3ZpZXcsICJ0b29sdGlwLHRleHQsc2V0IiwgY29uc3RfY2FzdDxjaGFyKj4odGV4dC51dGY4
KCkuZGF0YSgpKSk7CisKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIGluZm9ybXMgdGhhdCB0
aGUgcmVxdWVzdGVkIHRleHQgd2FzIGZvdW5kLgorICoKKyAqIEVtaXRzIHNpZ25hbDogInRleHQs
Zm91bmQiIHdpdGggdGhlIG51bWJlciBvZiBtYXRjaGVzLgorICovCit2b2lkIEV3a1ZpZXdJbXBs
OjppbmZvcm1UZXh0Rm91bmQodW5zaWduZWQgbWF0Y2hDb3VudCkKK3sKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInRleHQsZm91bmQiLCAmbWF0Y2hDb3VudCk7
Cit9CisKK0ludFNpemUgRXdrVmlld0ltcGw6OnNpemUoKSBjb25zdAoreworICAgIGludCB3aWR0
aCwgaGVpZ2h0OworICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChtX3ZpZXcsIDAsIDAsICZ3
aWR0aCwgJmhlaWdodCk7CisgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7Cit9CisK
Ky8qKgorICogQGludGVybmFsCisgKiBVcGRhdGUgdGhlIHZpZXcncyBmYXZpY29uIGFuZCBlbWl0
cyBhICJpY29uLGNoYW5nZWQiIHNpZ25hbCBpZiBpdCBoYXMKKyAqIGNoYW5nZWQuCisgKgorICog
VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIFVSTCBoYXMgY2hhbmdlZCBvciB3
aGVuIHRoZSBpY29uIGZvcgorICogdGhlIGN1cnJlbnQgcGFnZSBVUkwgaGFzIGNoYW5nZWQuCisg
Ki8KK3ZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUljb25DaGFuZ2UoKQoreworICAgIEV3a19GYXZp
Y29uX0RhdGFiYXNlKiBpY29uRGF0YWJhc2UgPSBjb250ZXh0LT5mYXZpY29uRGF0YWJhc2UoKTsK
KyAgICBBU1NFUlQoaWNvbkRhdGFiYXNlKTsKKworICAgIGZhdmljb25VUkwgPSBld2tfZmF2aWNv
bl9kYXRhYmFzZV9pY29uX3VybF9nZXQoaWNvbkRhdGFiYXNlLCB1cmwpOworICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiaWNvbixjaGFuZ2VkIiwgMCk7Cit9CisK
KyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisvKioKKyAqIEBpbnRlcm5hbAorICogVGhlIHZpZXcg
cmVjZWl2ZWQgYSBuZXcgaW50ZW50IHJlcXVlc3QuCisgKgorICogRW1pdHMgc2lnbmFsOiAiaW50
ZW50LHJlcXVlc3QsbmV3IiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfSW50ZW50LgorICovCit2b2lk
IEV3a1ZpZXdJbXBsOjppbmZvcm1JbnRlbnRSZXF1ZXN0KEV3a19JbnRlbnQqIGV3a0ludGVudCkK
K3sKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImludGVudCxy
ZXF1ZXN0LG5ldyIsIGV3a0ludGVudCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShXRUJfSU5U
RU5UU19UQUcpCisvKioKKyAqIEBpbnRlcm5hbAorICogVGhlIHZpZXcgcmVjZWl2ZWQgYSBuZXcg
aW50ZW50IHNlcnZpY2UgcmVnaXN0cmF0aW9uLgorICoKKyAqIEVtaXRzIHNpZ25hbDogImludGVu
dCxzZXJ2aWNlLHJlZ2lzdGVyIiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfSW50ZW50X1NlcnZpY2Uu
CisgKi8KK3ZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUludGVudFNlcnZpY2VSZWdpc3RyYXRpb24o
RXdrX0ludGVudF9TZXJ2aWNlKiBld2tJbnRlbnRTZXJ2aWNlKQoreworICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiaW50ZW50LHNlcnZpY2UscmVnaXN0ZXIiLCBl
d2tJbnRlbnRTZXJ2aWNlKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQor
CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorYm9vbCBFd2tWaWV3SW1wbDo6Y3Jl
YXRlR0xTdXJmYWNlKGNvbnN0IEludFNpemUmIHZpZXdTaXplKQoreworICAgIEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CisKKyAgICBFdmFzX0dMX0NvbmZpZyBldmFzR2xD
b25maWcgPSB7CisgICAgICAgIEVWQVNfR0xfUkdCQV84ODg4LAorICAgICAgICBFVkFTX0dMX0RF
UFRIX0JJVF84LAorICAgICAgICBFVkFTX0dMX1NURU5DSUxfTk9ORSwKKyAgICAgICAgRVZBU19H
TF9PUFRJT05TX05PTkUsCisgICAgICAgIEVWQVNfR0xfTVVMVElTQU1QTEVfTk9ORQorICAgIH07
CisKKyAgICBBU1NFUlQoIWV2YXNHbFN1cmZhY2UpOworICAgIGV2YXNHbFN1cmZhY2UgPSBldmFz
X2dsX3N1cmZhY2VfY3JlYXRlKGV2YXNHbCwgJmV2YXNHbENvbmZpZywgdmlld1NpemUud2lkdGgo
KSwgdmlld1NpemUuaGVpZ2h0KCkpOworICAgIGlmICghZXZhc0dsU3VyZmFjZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgRXZhc19OYXRpdmVfU3VyZmFjZSBuYXRpdmVTdXJmYWNlOwor
ICAgIGV2YXNfZ2xfbmF0aXZlX3N1cmZhY2VfZ2V0KGV2YXNHbCwgZXZhc0dsU3VyZmFjZSwgJm5h
dGl2ZVN1cmZhY2UpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX25hdGl2ZV9zdXJmYWNlX3NldChz
ZC0+aW1hZ2UsICZuYXRpdmVTdXJmYWNlKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IEV3a1ZpZXdJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKK3sKKyAgICBp
ZiAoZXZhc0dsKSB7CisgICAgICAgIEVJTkFfTE9HX0RPTV9XQVJOKF9ld2tfbG9nX2RvbSwgIkFj
Y2VsZXJhdGVkIGNvbXBvc2l0aW5nIG1vZGUgYWxyZWFkeSBlbnRlcmVkLiIpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgRXZhcyogZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNf
Z2V0KGV3a1ZpZXcpOworICAgIGV2YXNHbCA9IGV2YXNfZ2xfbmV3KGV2YXMpOworICAgIGlmICgh
ZXZhc0dsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBldmFzR2xDb250ZXh0ID0gZXZh
c19nbF9jb250ZXh0X2NyZWF0ZShldmFzR2wsIDApOworICAgIGlmICghZXZhc0dsQ29udGV4dCkg
eworICAgICAgICBldmFzX2dsX2ZyZWUoZXZhc0dsKTsKKyAgICAgICAgZXZhc0dsID0gMDsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghY3JlYXRlR0xTdXJmYWNlKHNp
emUoKSkpIHsKKyAgICAgICAgZXZhc19nbF9jb250ZXh0X2Rlc3Ryb3koZXZhc0dsLCBldmFzR2xD
b250ZXh0KTsKKyAgICAgICAgZXZhc0dsQ29udGV4dCA9IDA7CisKKyAgICAgICAgZXZhc19nbF9m
cmVlKGV2YXNHbCk7CisgICAgICAgIGV2YXNHbCA9IDA7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBwYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LT5zZXRSZW5kZXJlckFj
dGl2ZSh0cnVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBFd2tWaWV3SW1wbDo6ZXhp
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoZXZhc0dsLCBmYWxzZSk7CisKKyAgICBpZiAoZXZhc0dsU3VyZmFjZSkgewor
ICAgICAgICBldmFzX2dsX3N1cmZhY2VfZGVzdHJveShldmFzR2wsIGV2YXNHbFN1cmZhY2UpOwor
ICAgICAgICBldmFzR2xTdXJmYWNlID0gMDsKKyAgICB9CisKKyAgICBpZiAoZXZhc0dsQ29udGV4
dCkgeworICAgICAgICBldmFzX2dsX2NvbnRleHRfZGVzdHJveShldmFzR2wsIGV2YXNHbENvbnRl
eHQpOworICAgICAgICBldmFzR2xDb250ZXh0ID0gMDsKKyAgICB9CisKKyAgICBldmFzX2dsX2Zy
ZWUoZXZhc0dsKTsKKyAgICBldmFzR2wgPSAwOworCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5k
aWYKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorLyoqCisgKiBAaW50ZXJuYWwKKyAq
IFJlcXVlc3RzIHRvIHNob3cgZXh0ZXJuYWwgY29sb3IgcGlja2VyLgorICovCit2b2lkIEV3a1Zp
ZXdJbXBsOjpyZXF1ZXN0Q29sb3JQaWNrZXIoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEsIFdL
Q29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lcikKK3sKKyAgICBFd2tfVmlld19T
bWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHNkLT5hcGktPmlucHV0X3BpY2tlcl9jb2xvcl9yZXF1ZXN0KTsKKworICAgIGNvbG9yUGlj
a2VyUmVzdWx0TGlzdGVuZXIgPSBsaXN0ZW5lcjsKKworICAgIHNkLT5hcGktPmlucHV0X3BpY2tl
cl9jb2xvcl9yZXF1ZXN0KHNkLCByLCBnLCBiLCBhKTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwK
KyAqIFJlcXVlc3RzIHRvIGhpZGUgZXh0ZXJuYWwgY29sb3IgcGlja2VyLgorICovCit2b2lkIEV3
a1ZpZXdJbXBsOjpkaXNtaXNzQ29sb3JQaWNrZXIoKQoreworICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkID0gc21hcnREYXRhKCk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2Qt
PmFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX2Rpc21pc3MpOworCisgICAgY29sb3JQaWNrZXJSZXN1
bHRMaXN0ZW5lci5jbGVhcigpOworCisgICAgc2QtPmFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX2Rp
c21pc3Moc2QpOworfQorI2VuZGlmCisKKy8qKgorICogQGludGVybmFsCisgKiBpbmZvcm1zIHRo
YXQgdGhlIHZpZXcncyBiYWNrIC8gZm9yd2FyZCBsaXN0IGhhcyBjaGFuZ2VkLgorICoKKyAqIEVt
aXRzIHNpZ25hbDogImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLgorICovCit2b2lkIEV3a1Zp
ZXdJbXBsOjppbmZvcm1CYWNrRm9yd2FyZExpc3RDaGFuZ2UoKQoreworICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiYmFjayxmb3J3YXJkLGxpc3QsY2hhbmdlZCIs
IDApOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBs
LmgKaW5kZXggZTlhMjk2NC4uNzY1YmVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCkBAIC0yOSwyMiArMjksMjMgQEAKICNpbmNsdWRlIDxF
dmFzLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKICNpbmNsdWRlIDxFdmFzX0dMLmg+CiAjZW5kaWYKIAotI2RlZmluZSBFV0tf
VklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICBFd2tWaWV3SW1wbCogcHJpdiA9IHNtYXJ0RGF0YS0+cHJpdgorI2Rl
ZmluZSBFV0tfVklFV19JTVBMX0dFVChzbWFydERhdGEsIGltcGwpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBFd2tWaWV3SW1wbCogaW1wbCA9IHNtYXJ0RGF0YS0+
cHJpdgogCi0jZGVmaW5lIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIC4uLikgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBFV0tfVklFV19JTVBMX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCAuLi4pICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICBpZiAoIXNtYXJ0RGF0YSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIEVJTkFfTE9HX0NSSVQoInNtYXJ0IGRh
dGEgaXMgbnVsbCIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAg
ICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRVdLX1ZJRVdf
UFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIEVXS19WSUVXX0lNUExfR0VUKHNtYXJ0RGF0YSwgaW1wbCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIGlmICghcHJpdikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoIWltcGwpIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICAgICAgICAgIEVJTkFfTE9HX0NSSVQoIm5vIHByaXZhdGUgZGF0YSBmb3Igb2JqZWN0ICVwICgl
cykiLCAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgc21hcnREYXRhLT5zZWxmLCBl
dmFzX29iamVjdF90eXBlX2dldChzbWFydERhdGEtPnNlbGYpKTsgICAgICAgXAogICAgICAgICAg
ICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKQEAgLTY1LDE1ICs2Niw5OSBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBj
bGFzcyBXZWJQb3B1cE1lbnVQcm94eUVmbDsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgQ3Vyc29yOworY2xhc3MgSW50UmVjdDsKK2NsYXNzIEludFNpemU7Cit9CisKIGNsYXNzIEV3
a19CYWNrX0ZvcndhcmRfTGlzdDsKIGNsYXNzIEV3a19Db250ZXh0OworY2xhc3MgRXdrX0Rvd25s
b2FkX0pvYjsKK2NsYXNzIEV3a19FcnJvcjsKK2NsYXNzIEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVx
dWVzdDsKK2NsYXNzIEV3a19JbnRlbnQ7CitjbGFzcyBFd2tfSW50ZW50X1NlcnZpY2U7CitjbGFz
cyBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb247CitjbGFzcyBFd2tfUmVzb3VyY2U7CiBj
bGFzcyBFd2tfU2V0dGluZ3M7CitjbGFzcyBFd2tfVXJsX1JlcXVlc3Q7CitjbGFzcyBFd2tfVXJs
X1Jlc3BvbnNlOworCit0eXBlZGVmIHN0cnVjdCBFd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3
X1NtYXJ0X0RhdGE7CiAKIGNsYXNzIEV3a1ZpZXdJbXBsIHsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldyk7CiAgICAgfkV3a1ZpZXdJbXBsKCk7CiAK
KyAgICBzdGF0aWMgRXdrVmlld0ltcGwqIGZyb21FdmFzT2JqZWN0KEV2YXNfT2JqZWN0KiB2aWV3
KTsKKworICAgIGlubGluZSBFdmFzX09iamVjdCogdmlldygpIHsgcmV0dXJuIG1fdmlldzsgfQor
ICAgIFdLUGFnZVJlZiB3a1BhZ2UoKTsKKyAgICBpbmxpbmUgV2ViS2l0OjpXZWJQYWdlUHJveHkq
IHBhZ2UoKSB7IHJldHVybiBwYWdlUHJveHkuZ2V0KCk7IH0KKworICAgIFdlYkNvcmU6OkludFNp
emUgc2l6ZSgpIGNvbnN0OworCisgICAgdm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vy
c29yJiBjdXJzb3IpOworICAgIHZvaWQgcmVkcmF3UmVnaW9uKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHJlY3QpOworICAgIHZvaWQgc2V0SW1hZ2VEYXRhKHZvaWQqIGltYWdlRGF0YSwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSk7CisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisg
ICAgdm9pZCBlbnRlckZ1bGxTY3JlZW4oKTsKKyAgICB2b2lkIGV4aXRGdWxsU2NyZWVuKCk7Cisj
ZW5kaWYKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBib29sIGNyZWF0
ZUdMU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB2aWV3U2l6ZSk7CisgICAgYm9vbCBl
bnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7CisgICAgYm9vbCBleGl0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCisgICAgdm9pZCByZXF1ZXN0Q29sb3JQaWNrZXIoaW50IHIsIGludCBnLCBpbnQgYiwgaW50
IGEsIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lcik7CisgICAgdm9pZCBk
aXNtaXNzQ29sb3JQaWNrZXIoKTsKKyNlbmRpZgorCisgICAgdm9pZCBpbmZvcm1Eb3dubG9hZEpv
YkNhbmNlbGxlZChFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCk7CisgICAgdm9pZCBpbmZvcm1E
b3dubG9hZEpvYkZhaWxlZChFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCwgRXdrX0Vycm9yKiBl
cnJvcik7CisgICAgdm9pZCBpbmZvcm1Eb3dubG9hZEpvYkZpbmlzaGVkKEV3a19Eb3dubG9hZF9K
b2IqIGRvd25sb2FkKTsKKyAgICB2b2lkIGluZm9ybURvd25sb2FkSm9iUmVxdWVzdGVkKEV3a19E
b3dubG9hZF9Kb2IqIGRvd25sb2FkKTsKKworICAgIHZvaWQgaW5mb3JtTmV3Rm9ybVN1Ym1pc3Np
b25SZXF1ZXN0KEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdCogcmVxdWVzdCk7CisgICAgdm9p
ZCBpbmZvcm1Mb2FkRXJyb3IoRXdrX0Vycm9yKiBlcnJvcik7CisgICAgdm9pZCBpbmZvcm1Mb2Fk
RmluaXNoZWQoKTsKKyAgICB2b2lkIGluZm9ybUxvYWRQcm9ncmVzcyhkb3VibGUgcHJvZ3Jlc3Mp
OworICAgIHZvaWQgaW5mb3JtUHJvdmlzaW9uYWxMb2FkRmFpbGVkKEV3a19FcnJvciogZXJyb3Ip
OworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIHZvaWQgaW5mb3JtTG9hZENvbW1p
dHRlZCgpOworI2VuZGlmCisgICAgdm9pZCBpbmZvcm1Qcm92aXNpb25hbExvYWRSZWRpcmVjdCgp
OworICAgIHZvaWQgaW5mb3JtUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpOworCisgICAgdm9pZCBp
bmZvcm1SZXNvdXJjZUxvYWRTdGFydGVkKEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19Vcmxf
UmVxdWVzdCogcmVxdWVzdCk7CisgICAgdm9pZCBpbmZvcm1SZXNvdXJjZUxvYWRSZXNwb25zZShF
d2tfUmVzb3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1Jlc3BvbnNlKiByZXNwb25zZSk7CisgICAg
dm9pZCBpbmZvcm1SZXNvdXJjZUxvYWRGYWlsZWQoRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdr
X0Vycm9yKiBlcnJvcik7CisgICAgdm9pZCBpbmZvcm1SZXNvdXJjZUxvYWRGaW5pc2hlZChFd2tf
UmVzb3VyY2UqIHJlc291cmNlKTsKKyAgICB2b2lkIGluZm9ybVJlc291cmNlUmVxdWVzdFNlbnQo
RXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJs
X1Jlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNlKTsKKworICAgIHZvaWQgaW5mb3JtTmF2aWdhdGlv
blBvbGljeURlY2lzaW9uKEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZGVjaXNpb24p
OworICAgIHZvaWQgaW5mb3JtTmV3V2luZG93UG9saWN5RGVjaXNpb24oRXdrX05hdmlnYXRpb25f
UG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbik7CisgICAgdm9pZCBpbmZvcm1CYWNrRm9yd2FyZExp
c3RDaGFuZ2UoKTsKKworICAgIHZvaWQgaW5mb3JtVGl0bGVDaGFuZ2UoY29uc3QgU3RyaW5nJiB0
aXRsZSk7CisgICAgdm9pZCBpbmZvcm1Ub29sdGlwVGV4dENoYW5nZShjb25zdCBTdHJpbmcmIHRl
eHQpOworICAgIHZvaWQgaW5mb3JtVGV4dEZvdW5kKHVuc2lnbmVkIG1hdGNoQ291bnQpOworICAg
IHZvaWQgaW5mb3JtSWNvbkNoYW5nZSgpOworCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAg
IHZvaWQgaW5mb3JtSW50ZW50UmVxdWVzdChFd2tfSW50ZW50KiBld2tJbnRlbnQpOworI2VuZGlm
CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKKyAgICB2b2lkIGluZm9ybUludGVudFNlcnZp
Y2VSZWdpc3RyYXRpb24oRXdrX0ludGVudF9TZXJ2aWNlKiBld2tJbnRlbnRTZXJ2aWNlKTsKKyNl
bmRpZgorCisgICAgLy8gRklYTUU6IE1ha2UgbWVtYmVycyBwcml2YXRlIGZvciBlbmNhcHN1bGF0
aW9uLgogICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50OwogI2lm
IFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRFZmw+IHBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQ7CkBAIC0x
MjAsNiArMjA1LDggQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisgICAgRXdrX1ZpZXdf
U21hcnRfRGF0YSogc21hcnREYXRhKCk7CisKICAgICBFdmFzX09iamVjdCogbV92aWV3OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVu
dEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudElt
cGwuY3BwCmluZGV4IDYwYmQ4OTMuLjBiZDYyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgogCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94
eUltcGwuaCIKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldl
YkNvbnRleHQuaCIKQEAgLTUwLDggKzUxLDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoRXZh
c19PYmplY3QqIHZpZXdXaWRnZXQpCi0gICAgOiBtX3ZpZXdXaWRnZXQodmlld1dpZGdldCkKK1Bh
Z2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChFd2tWaWV3SW1wbCogdmlld0ltcGwpCisgICAg
OiBtX3ZpZXdJbXBsKHZpZXdJbXBsKQogewogfQogCkBAIC01OSwxNSArNjAsMjAgQEAgUGFnZUNs
aWVudEltcGw6On5QYWdlQ2xpZW50SW1wbCgpCiB7CiB9CiAKK0V3a1ZpZXdJbXBsKiBQYWdlQ2xp
ZW50SW1wbDo6dmlld0ltcGwoKSBjb25zdAoreworICAgIHJldHVybiBtX3ZpZXdJbXBsOworfQor
CiAvLyBQYWdlQ2xpZW50CiBQYXNzT3duUHRyPERyYXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJ
bXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCkKIHsKLSAgICByZXR1cm4gRHJhd2luZ0FyZWFQ
cm94eUltcGw6OmNyZWF0ZShld2tfdmlld19wYWdlX2dldChtX3ZpZXdXaWRnZXQpKTsKKyAgICBy
ZXR1cm4gRHJhd2luZ0FyZWFQcm94eUltcGw6OmNyZWF0ZShtX3ZpZXdJbXBsLT5wYWdlKCkpOwog
fQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHJlY3QpCiB7Ci0gICAgZXdrX3ZpZXdfZGlzcGxheShtX3ZpZXdXaWRnZXQs
IHJlY3QpOworICAgIG1fdmlld0ltcGwtPnJlZHJhd1JlZ2lvbihyZWN0KTsKIH0KIAogdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6ZGlzcGxheVZpZXcoKQpAQCAtODIsNyArODgsNyBAQCB2b2lkIFBhZ2VD
bGllbnRJbXBsOjpzY3JvbGxWaWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3Qs
IGNvbnN0IFdlYkNvcgogCiBXZWJDb3JlOjpJbnRTaXplIFBhZ2VDbGllbnRJbXBsOjp2aWV3U2l6
ZSgpCiB7Ci0gICAgcmV0dXJuIGV3a192aWV3X3NpemVfZ2V0KG1fdmlld1dpZGdldCk7CisgICAg
cmV0dXJuIG1fdmlld0ltcGwtPnNpemUoKTsKIH0KIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNW
aWV3V2luZG93QWN0aXZlKCkKQEAgLTkzLDEyICs5OSwxMiBAQCBib29sIFBhZ2VDbGllbnRJbXBs
Ojppc1ZpZXdXaW5kb3dBY3RpdmUoKQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdGb2N1
c2VkKCkKIHsKLSAgICByZXR1cm4gZXZhc19vYmplY3RfZm9jdXNfZ2V0KG1fdmlld1dpZGdldCk7
CisgICAgcmV0dXJuIGV2YXNfb2JqZWN0X2ZvY3VzX2dldChtX3ZpZXdJbXBsLT52aWV3KCkpOwog
fQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlKCkKIHsKLSAgICByZXR1cm4g
ZXZhc19vYmplY3RfdmlzaWJsZV9nZXQobV92aWV3V2lkZ2V0KTsKKyAgICByZXR1cm4gZXZhc19v
YmplY3RfdmlzaWJsZV9nZXQobV92aWV3SW1wbC0+dmlldygpKTsKIH0KIAogYm9vbCBQYWdlQ2xp
ZW50SW1wbDo6aXNWaWV3SW5XaW5kb3coKQpAQCAtMTEwLDE4ICsxMTYsMTggQEAgYm9vbCBQYWdl
Q2xpZW50SW1wbDo6aXNWaWV3SW5XaW5kb3coKQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6cHJvY2Vz
c0RpZENyYXNoKCkKIHsKICAgICAvLyBDaGVjayBpZiBsb2FkaW5nIHdhcyBvbmdvaW5nLCB3aGVu
IHdlYiBwcm9jZXNzIGNyYXNoZWQuCi0gICAgZG91YmxlIGxvYWRQcm9ncmVzcyA9IGV3a192aWV3
X2xvYWRfcHJvZ3Jlc3NfZ2V0KG1fdmlld1dpZGdldCk7CisgICAgZG91YmxlIGxvYWRQcm9ncmVz
cyA9IGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfZ2V0KG1fdmlld0ltcGwtPnZpZXcoKSk7CiAgICAg
aWYgKGxvYWRQcm9ncmVzcyA+PSAwICYmIGxvYWRQcm9ncmVzcyA8IDEpCi0gICAgICAgIGV3a192
aWV3X2xvYWRfcHJvZ3Jlc3NfY2hhbmdlZChtX3ZpZXdXaWRnZXQsIDEpOworICAgICAgICBtX3Zp
ZXdJbXBsLT5pbmZvcm1Mb2FkUHJvZ3Jlc3MoMSk7CiAKLSAgICBld2tfdmlld193ZWJwcm9jZXNz
X2NyYXNoZWQobV92aWV3V2lkZ2V0KTsKKyAgICBld2tfdmlld193ZWJwcm9jZXNzX2NyYXNoZWQo
bV92aWV3SW1wbC0+dmlldygpKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVsYXVu
Y2hQcm9jZXNzKCkKIHsKLSAgICBjb25zdCBjaGFyKiB0aGVtZVBhdGggPSBld2tfdmlld190aGVt
ZV9nZXQobV92aWV3V2lkZ2V0KTsKKyAgICBjb25zdCBjaGFyKiB0aGVtZVBhdGggPSBld2tfdmll
d190aGVtZV9nZXQobV92aWV3SW1wbC0+dmlldygpKTsKICAgICBpZiAodGhlbWVQYXRoKQotICAg
ICAgICBld2tfdmlld19wYWdlX2dldChtX3ZpZXdXaWRnZXQpLT5zZXRUaGVtZVBhdGgodGhlbWVQ
YXRoKTsKKyAgICAgICAgbV92aWV3SW1wbC0+cGFnZSgpLT5zZXRUaGVtZVBhdGgodGhlbWVQYXRo
KTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3NlZCgpCkBAIC0xMzEsMTIgKzEz
NywxMiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xvc2VkKCkKIAogdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6dG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBuZXdU
b29sVGlwKQogewotICAgIGV3a192aWV3X3Rvb2x0aXBfdGV4dF9zZXQobV92aWV3V2lkZ2V0LCBu
ZXdUb29sVGlwLnV0ZjgoKS5kYXRhKCkpOworICAgIG1fdmlld0ltcGwtPmluZm9ybVRvb2x0aXBU
ZXh0Q2hhbmdlKG5ld1Rvb2xUaXApOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRDdXJz
b3IoY29uc3QgQ3Vyc29yJiBjdXJzb3IpCiB7Ci0gICAgZXdrX3ZpZXdfY3Vyc29yX3NldChtX3Zp
ZXdXaWRnZXQsIGN1cnNvcik7CisgICAgbV92aWV3SW1wbC0+c2V0Q3Vyc29yKGN1cnNvcik7CiB9
CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhi
b29sKQpAQCAtMjExLDcgKzIxNyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRoVG91
Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCAvKndhc0V2CiAKIFBhc3NS
ZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnVQ
cm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5
RWZsOjpjcmVhdGUobV92aWV3V2lkZ2V0LCBwYWdlKTsKKyAgICByZXR1cm4gV2ViUG9wdXBNZW51
UHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdJbXBsLT52aWV3KCksIHBhZ2UpOwogfQogCiBQYXNzUmVm
UHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVu
dVByb3h5KFdlYlBhZ2VQcm94eSopCkBAIC0yMzYsMTIgKzI0MiwxMiBAQCB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2ws
IGJvb2wpCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogdm9pZCBQYWdlQ2xpZW50
SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250
ZXh0JikKIHsKLSAgICBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2VudGVy
KG1fdmlld1dpZGdldCk7CisgICAgbV92aWV3SW1wbC0+ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSgpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpleGl0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUoKQogewotICAgIGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nX21v
ZGVfZXhpdChtX3ZpZXdXaWRnZXQpOworICAgIG1fdmlld0ltcGwtPmV4aXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSgpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjp1cGRhdGVBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JikKQEAgLTI5MywxMyAr
Mjk5LDEzIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9t
UmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmluCiAKIHZvaWQgUGFnZUNsaWVudEltcGw6
OnVwZGF0ZVRleHRJbnB1dFN0YXRlKCkKIHsKLSAgICBld2tfdmlld190ZXh0X2lucHV0X3N0YXRl
X3VwZGF0ZShtX3ZpZXdXaWRnZXQpOworICAgIGV3a192aWV3X3RleHRfaW5wdXRfc3RhdGVfdXBk
YXRlKG1fdmlld0ltcGwtPnZpZXcoKSk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmhhbmRs
ZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5KiBkb3dubG9hZCkKIHsKLSAgICBFd2tfQ29u
dGV4dCogY29udGV4dCA9IGV3a192aWV3X2NvbnRleHRfZ2V0KG1fdmlld1dpZGdldCk7Ci0gICAg
Y29udGV4dC0+ZG93bmxvYWRNYW5hZ2VyKCktPnJlZ2lzdGVyRG93bmxvYWQoZG93bmxvYWQsIG1f
dmlld1dpZGdldCk7CisgICAgRXdrX0NvbnRleHQqIGNvbnRleHQgPSBld2tfdmlld19jb250ZXh0
X2dldChtX3ZpZXdJbXBsLT52aWV3KCkpOworICAgIGNvbnRleHQtPmRvd25sb2FkTWFuYWdlcigp
LT5yZWdpc3RlckRvd25sb2FkKGRvd25sb2FkLCBtX3ZpZXdJbXBsKTsKIH0KIAogI2lmIFVTRShU
SUxFRF9CQUNLSU5HX1NUT1JFKQpAQCAtMzE0LDcgKzMyMCw3IEBAIHZvaWQgUGFnZUNsaWVudElt
cGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQog
I2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxl
ci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNpemUpOwogI2Vsc2UKLSAgICBld2tfdmlld19jb250
ZW50c19zaXplX2NoYW5nZWQobV92aWV3V2lkZ2V0LCBzaXplKTsKKyAgICBld2tfdmlld19jb250
ZW50c19zaXplX2NoYW5nZWQobV92aWV3SW1wbC0+dmlldygpLCBzaXplKTsKICNlbmRpZgogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50
SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwu
aAppbmRleCBjNjRlMTA2Li41MjBjYTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTMwLDI1ICszMCwyNyBAQAogI2luY2x1
ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlIDxFdmFzLmg+CiAKK2NsYXNzIEV3a1ZpZXdJbXBs
OworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjsK
IAogY2xhc3MgUGFnZUNsaWVudEltcGwgOiBwdWJsaWMgUGFnZUNsaWVudCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZUNsaWVudEltcGw+IGNyZWF0ZShFdmFzX09iamVjdCog
dmlld1dpZGdldCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxQYWdlQ2xpZW50SW1wbD4gY3JlYXRl
KEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgUGFnZUNsaWVudEltcGwodmlld1dpZGdldCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFBhZ2VDbGllbnRJbXBsKHZpZXdJbXBsKSk7CiAgICAgfQogICAgIH5QYWdlQ2xpZW50SW1w
bCgpOwogCi0gICAgRXZhc19PYmplY3QqIHZpZXdXaWRnZXQoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZXdXaWRnZXQ7IH0KKyAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwoKSBjb25zdDsKICNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKICAgICB2b2lkIHNldFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIo
UGFnZVZpZXdwb3J0Q29udHJvbGxlciogY29udHJvbGxlcikgeyBtX3BhZ2VWaWV3cG9ydENvbnRy
b2xsZXIgPSBjb250cm9sbGVyOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBQ
YWdlQ2xpZW50SW1wbChFdmFzX09iamVjdCopOworICAgIGV4cGxpY2l0IFBhZ2VDbGllbnRJbXBs
KEV3a1ZpZXdJbXBsKik7CiAKICAgICAvLyBQYWdlQ2xpZW50CiAgICAgdmlydHVhbCBQYXNzT3du
UHRyPERyYXdpbmdBcmVhUHJveHk+IGNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKTsKQEAgLTEyNSw3
ICsxMjcsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgRXZhc19PYmplY3Qq
IG1fdmlld1dpZGdldDsKKyAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKICAgICBEZWZhdWx0
VW5kb0NvbnRyb2xsZXIgbV91bmRvQ29udHJvbGxlcjsKICNpZiBVU0UoVElMRURfQkFDS0lOR19T
VE9SRSkKICAgICBQYWdlVmlld3BvcnRDb250cm9sbGVyKiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCmluZGV4IDVlYjY3NmUu
LjljYTlhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKIAorI2luY2x1ZGUg
IkV3a1ZpZXdJbXBsLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oIgog
I2luY2x1ZGUgIkxheWVyVHJlZVJlbmRlcmVyLmgiCiAjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29u
dHJvbGxlci5oIgpAQCAtMzgsOCArMzksOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OlBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXdXaWRnZXQpCi0g
ICAgOiBtX3ZpZXdXaWRnZXQodmlld1dpZGdldCkKK1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmw6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJ
bXBsKQorICAgIDogbV92aWV3SW1wbCh2aWV3SW1wbCkKICAgICAsIG1fc2NhbGVGYWN0b3IoMSkK
ICAgICAsIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcigwKQogewpAQCAtNTIsNyArNTMsNyBAQCBQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjp+UGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbCgpCiAKIERyYXdpbmdBcmVhUHJveHkqIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmw6OmRyYXdpbmdBcmVhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZXdrX3ZpZXdfcGFnZV9n
ZXQobV92aWV3V2lkZ2V0KS0+ZHJhd2luZ0FyZWEoKTsKKyAgICByZXR1cm4gbV92aWV3SW1wbC0+
cGFnZSgpLT5kcmF3aW5nQXJlYSgpOwogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmw6OnNldFJlbmRlcmVyQWN0aXZlKGJvb2wgYWN0aXZlKQpAQCAtNzYsNyArNzcsNyBA
QCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpc3BsYXkoY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgSW50UG9pbgogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50RWZsOjp1cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQog
ewogICAgIG1fdmlld3BvcnRTaXplID0gdmlld3BvcnRTaXplOwotICAgIGV3a192aWV3X3BhZ2Vf
Z2V0KG1fdmlld1dpZGdldCktPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUpOworICAgIG1f
dmlld0ltcGwtPnBhZ2UoKS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CiAgICAgbV9w
YWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VWaWV3cG9ydFNpemUodmlld3BvcnRTaXpl
KTsKIH0KIApAQCAtOTEsNyArOTIsNyBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaQogewogICAg
IG1fY29udGVudHNTaXplID0gc2l6ZTsKICAgICBJbnRSZWN0IHJlY3QgPSBJbnRSZWN0KEludFBv
aW50KCksIG1fdmlld3BvcnRTaXplKTsKLSAgICBld2tfdmlld19kaXNwbGF5KG1fdmlld1dpZGdl
dCwgcmVjdCk7CisgICAgbV92aWV3SW1wbC0+cmVkcmF3QXJlYShyZWN0KTsKIH0KIAogdm9pZCBQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGNvbnRlbnRzUG9pbnQpCkBAIC0xMTQsNyArMTE1LDcgQEAg
dm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRSZXN1bWVDb250ZW50KCkK
IHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmlzaWJsZUNv
bnRlbnRzKCkKIHsKICAgICBJbnRSZWN0IHJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fdmll
d3BvcnRTaXplKTsKLSAgICBld2tfdmlld19kaXNwbGF5KG1fdmlld1dpZGdldCwgcmVjdCk7Cisg
ICAgbV92aWV3SW1wbC0+cmVkcmF3QXJlYShyZWN0KTsKIH0KIAogdm9pZCBQYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oCmluZGV4IGY2MTM4ZjQuLjlhN2IzMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Q
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgKQEAgLTMyLDEzICszMiwxNSBAQAogI2lu
Y2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogCitjbGFzcyBFd2tWaWV3SW1wbDsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwgOiBwdWJsaWMgUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbD4gY3JlYXRlKEV2YXNfT2JqZWN0KiB2aWV3V2lk
Z2V0KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRF
Zmw+IGNyZWF0ZShFd2tWaWV3SW1wbCogdmlld0ltcGwpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwodmlld1dpZGdldCkp
OworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmwodmlld0ltcGwpKTsKICAgICB9CiAgICAgflBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmwoKTsKIApAQCAtNjMsOSArNjUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dENvbnRyb2xsZXIoUGFnZVZpZXdwb3J0Q29udHJvbGxlciopOwogCiBwcml2YXRlOgotICAgIGV4
cGxpY2l0IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwoRXZhc19PYmplY3QqKTsKKyAg
ICBleHBsaWNpdCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKik7
CiAKLSAgICBFdmFzX09iamVjdCogbV92aWV3V2lkZ2V0OworICAgIEV3a1ZpZXdJbXBsKiBtX3Zp
ZXdJbXBsOwogICAgIFdlYkNvcmU6OkludFNpemUgbV9jb250ZW50c1NpemU7CiAgICAgV2ViQ29y
ZTo6SW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3Njcm9s
bFBvc2l0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2Rvd25sb2FkX2pvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfZG93bmxvYWRfam9iLmNwcAppbmRleCA3ZGMzYTE3Li5jZmU2YmI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcApA
QCAtMzYsOSArMzYsOSBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1Fd2tfRG93bmxv
YWRfSm9iOjpFd2tfRG93bmxvYWRfSm9iKFdlYktpdDo6RG93bmxvYWRQcm94eSogZG93bmxvYWQs
IEV2YXNfT2JqZWN0KiBld2tWaWV3KQorRXdrX0Rvd25sb2FkX0pvYjo6RXdrX0Rvd25sb2FkX0pv
YihXZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRvd25sb2FkLCBFd2tWaWV3SW1wbCogdmlld0ltcGwp
CiAgICAgOiBtX2Rvd25sb2FkUHJveHkoZG93bmxvYWQpCi0gICAgLCBtX3ZpZXcoZXdrVmlldykK
KyAgICAsIG1fdmlld0ltcGwodmlld0ltcGwpCiAgICAgLCBtX3N0YXRlKEVXS19ET1dOTE9BRF9K
T0JfU1RBVEVfTk9UX1NUQVJURUQpCiAgICAgLCBtX3N0YXJ0VGltZSgtMSkKICAgICAsIG1fZW5k
VGltZSgtMSkKQEAgLTc1LDkgKzc1LDkgQEAgdWludDY0X3QgRXdrX0Rvd25sb2FkX0pvYjo6aWQo
KSBjb25zdAogICogUmV0dXJucyB0aGUgdmlldyB0aGlzIGRvd25sb2FkIGlzIGF0dGFjaGVkIHRv
LgogICogVGhlIHZpZXcgaXMgbmVlZGVkIHRvIHNlbmQgbm90aWZpY2F0aW9uIHNpZ25hbHMuCiAg
Ki8KLUV2YXNfT2JqZWN0KiBFd2tfRG93bmxvYWRfSm9iOjp2aWV3KCkgY29uc3QKK0V3a1ZpZXdJ
bXBsKiBFd2tfRG93bmxvYWRfSm9iOjp2aWV3SW1wbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
dmlldzsKKyAgICByZXR1cm4gbV92aWV3SW1wbDsKIH0KIAogRXdrX0Rvd25sb2FkX0pvYl9TdGF0
ZSBld2tfZG93bmxvYWRfam9iX3N0YXRlX2dldChjb25zdCBFd2tfRG93bmxvYWRfSm9iKiBkb3du
bG9hZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19k
b3dubG9hZF9qb2JfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmgKaW5kZXggOGJhNWJjMy4uMDBmYzc2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9w
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25s
b2FkX2pvYl9wcml2YXRlLmgKQEAgLTM4LDE1ICszOCwxNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIERvd25sb2FkUHJveHk7CiB9CiAKK2NsYXNzIEV3a1ZpZXdJbXBsOworCiBjbGFzcyBF
d2tfRG93bmxvYWRfSm9iIDogcHVibGljIFJlZkNvdW50ZWQ8RXdrX0Rvd25sb2FkX0pvYj4gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a19Eb3dubG9hZF9Kb2I+IGNyZWF0ZShX
ZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRvd25sb2FkLCBFdmFzX09iamVjdCogZXdrVmlldykKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tfRG93bmxvYWRfSm9iPiBjcmVhdGUoV2ViS2l0OjpEb3du
bG9hZFByb3h5KiBkb3dubG9hZCwgRXdrVmlld0ltcGwqIHZpZXdJbXBsKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tfRG93bmxvYWRfSm9iKGRvd25sb2FkLCBld2tWaWV3
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrX0Rvd25sb2FkX0pvYihkb3dubG9h
ZCwgdmlld0ltcGwpKTsKICAgICB9CiAKICAgICB1aW50NjRfdCBpZCgpIGNvbnN0OwotICAgIEV2
YXNfT2JqZWN0KiB2aWV3KCkgY29uc3Q7CisgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsKCkgY29u
c3Q7CiAKICAgICBFd2tfRG93bmxvYWRfSm9iX1N0YXRlIHN0YXRlKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRTdGF0ZShFd2tfRG93bmxvYWRfSm9iX1N0YXRlKTsKQEAgLTY4LDEwICs3MCwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBpbmNyZW1lbnRSZWNlaXZlZERhdGEodWludDY0X3QgbGVuZ3RoKTsK
IAogcHJpdmF0ZToKLSAgICBFd2tfRG93bmxvYWRfSm9iKFdlYktpdDo6RG93bmxvYWRQcm94eSog
ZG93bmxvYWQsIEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKyAgICBFd2tfRG93bmxvYWRfSm9iKFdl
YktpdDo6RG93bmxvYWRQcm94eSogZG93bmxvYWQsIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCk7CiAK
ICAgICBXZWJLaXQ6OkRvd25sb2FkUHJveHkqIG1fZG93bmxvYWRQcm94eTsKLSAgICBFdmFzX09i
amVjdCogbV92aWV3OworICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOwogICAgIEV3a19Eb3du
bG9hZF9Kb2JfU3RhdGUgbV9zdGF0ZTsKICAgICBtdXRhYmxlIFJlZlB0cjxFd2tfVXJsX1JlcXVl
c3Q+IG1fcmVxdWVzdDsKICAgICBSZWZQdHI8RXdrX1VybF9SZXNwb25zZT4gbV9yZXNwb25zZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCAw
ZDc4NGM3Li5kZGYyMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwCkBAIC04NSwzMiArODUsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogc3RhdGljIGNvbnN0IGNoYXIgRVdLX1ZJRVdfVFlQRV9TVFJbXSA9ICJFV0syX1ZpZXciOwog
Ci1zdGF0aWMgY29uc3QgaW50IGRlZmF1bHRDdXJzb3JTaXplID0gMTY7Ci0KLXR5cGVkZWYgSGFz
aE1hcDxjb25zdCBXZWJQYWdlUHJveHkqLCBjb25zdCBFdmFzX09iamVjdCo+IFBhZ2VWaWV3TWFw
OwotCi1zdGF0aWMgaW5saW5lIFBhZ2VWaWV3TWFwJiBwYWdlVmlld01hcCgpCi17Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChQYWdlVmlld01hcCwgbWFwLCAoKSk7Ci0gICAgcmV0dXJuIG1hcDsK
LX0KLQotc3RhdGljIGlubGluZSB2b2lkIGFkZFRvUGFnZVZpZXdNYXAoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCi17Ci0gICAgQVNTRVJUKGV3a1ZpZXcpOwotICAgIEFTU0VSVChld2tfdmll
d19wYWdlX2dldChld2tWaWV3KSk7Ci0gICAgUGFnZVZpZXdNYXA6OkFkZFJlc3VsdCByZXN1bHQg
PSBwYWdlVmlld01hcCgpLmFkZChld2tfdmlld19wYWdlX2dldChld2tWaWV3KSwgZXdrVmlldyk7
Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotc3Rh
dGljIGlubGluZSB2b2lkIHJlbW92ZUZyb21QYWdlVmlld01hcChjb25zdCBFdmFzX09iamVjdCog
ZXdrVmlldykKLXsKLSAgICBBU1NFUlQoZXdrVmlldyk7Ci0gICAgQVNTRVJUKGV3a192aWV3X3Bh
Z2VfZ2V0KGV3a1ZpZXcpKTsKLSAgICBBU1NFUlQocGFnZVZpZXdNYXAoKS5jb250YWlucyhld2tf
dmlld19wYWdlX2dldChld2tWaWV3KSkpOwotICAgIHBhZ2VWaWV3TWFwKCkucmVtb3ZlKGV3a192
aWV3X3BhZ2VfZ2V0KGV3a1ZpZXcpKTsKLX0KLQogI2RlZmluZSBFV0tfVklFV19UWVBFX0NIRUNL
KGV3a1ZpZXcsIHJlc3VsdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICBib29sIHJlc3VsdCA9IHRydWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTYxLDYg
KzEzNSwzMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVtb3ZlRnJvbVBhZ2VWaWV3TWFwKGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdo
aWxlICgwKQogCit0eXBlZGVmIEhhc2hNYXA8Y29uc3QgV2ViUGFnZVByb3h5KiwgY29uc3QgRXZh
c19PYmplY3QqPiBQYWdlVmlld01hcDsKKworc3RhdGljIGlubGluZSBQYWdlVmlld01hcCYgcGFn
ZVZpZXdNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUGFnZVZpZXdNYXAsIG1hcCwg
KCkpOworICAgIHJldHVybiBtYXA7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhZGRUb1BhZ2VW
aWV3TWFwKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBpbXBsKTsKKworICAgIFBhZ2VWaWV3TWFwOjpBZGRSZXN1bHQg
cmVzdWx0ID0gcGFnZVZpZXdNYXAoKS5hZGQoaW1wbC0+cGFnZSgpLCBld2tWaWV3KTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCitzdGF0aWMgaW5s
aW5lIHZvaWQgcmVtb3ZlRnJvbVBhZ2VWaWV3TWFwKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3
KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsK
KyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsKTsKKworICAg
IEFTU0VSVChwYWdlVmlld01hcCgpLmNvbnRhaW5zKGltcGwtPnBhZ2UoKSkpOworICAgIHBhZ2VW
aWV3TWFwKCkucmVtb3ZlKGltcGwtPnBhZ2UoKSk7Cit9CisKIHN0YXRpYyB2b2lkIF9ld2tfdmll
d19zbWFydF9jaGFuZ2VkKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIHsKICAgICBp
ZiAoc21hcnREYXRhLT5jaGFuZ2VkLmFueSkKQEAgLTE3MiwyOCArMTcyLDMwIEBAIHN0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0
YSkKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mYXZpY29uX2NoYW5nZWQoY29uc3QgY2hhciog
cGFnZVVSTCwgdm9pZCogZXZlbnRJbmZvKQogewogICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0g
c3RhdGljX2Nhc3Q8RXZhc19PYmplY3QqPihldmVudEluZm8pOworICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBpbXBsKTsKIAotICAgIGNvbnN0IGNoYXIqIHZpZXdfdXJsID0g
ZXdrX3ZpZXdfdXJsX2dldChld2tWaWV3KTsKLSAgICBpZiAoIXZpZXdfdXJsIHx8IHN0cmNhc2Vj
bXAodmlld191cmwsIHBhZ2VVUkwpKQorICAgIGNvbnN0IGNoYXIqIHZpZXdVUkwgPSBld2tfdmll
d191cmxfZ2V0KGV3a1ZpZXcpOworICAgIGlmICghdmlld1VSTCB8fCBzdHJjYXNlY21wKHZpZXdV
UkwsIHBhZ2VVUkwpKQogICAgICAgICByZXR1cm47CiAKLSAgICBld2tfdmlld191cGRhdGVfaWNv
bihld2tWaWV3KTsKKyAgICBpbXBsLT5pbmZvcm1JY29uQ2hhbmdlKCk7CiB9CiAKIC8vIERlZmF1
bHQgRXZlbnQgSGFuZGxpbmcuCiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9mb2N1
c19pbihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiB7Ci0gICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVXS19WSUVXX0lN
UExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKIAotICAgIHByaXYtPnBh
Z2VQcm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNlZCB8
IFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKKyAgICBpbXBsLT5wYWdlUHJveHkt
PnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQgfCBXZWJQYWdl
UHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRp
YyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9EYXRh
KiBzbWFydERhdGEpCiB7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdiwgZmFsc2UpOworICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIGltcGwsIGZhbHNlKTsKIAotICAgIHByaXYtPnBhZ2VQcm94eS0+dmlld1N0YXRlRGlkQ2hh
bmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNlZCB8IFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRv
d0lzQWN0aXZlKTsKKyAgICBpbXBsLT5wYWdlUHJveHktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQ
YWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQgfCBXZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTIwMSw5OSArMjAzLDk5IEBAIHN0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9EYXRhKiBz
bWFydERhdGEpCiBzdGF0aWMgRXZhc19Db29yZF9Qb2ludCBtYXBUb1dlYkNvbnRlbnQoRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBFdmFzX0Nvb3JkX1BvaW50IHBvaW50KQogewogICAg
IEV2YXNfQ29vcmRfUG9pbnQgcmVzdWx0OwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYsIHJlc3VsdCk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgaW1wbCwgcmVzdWx0KTsKIAotICAgIHJlc3VsdC54ID0gKHBvaW50Lngg
IC0gc21hcnREYXRhLT52aWV3LngpIC8gcHJpdi0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dC0+c2NhbGVGYWN0b3IoKSArIHNtYXJ0RGF0YS0+dmlldy54ICsgcHJpdi0+cGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudC0+c2Nyb2xsUG9zaXRpb24oKS54KCk7Ci0gICAgcmVzdWx0LnkgPSAo
cG9pbnQueSAtIHNtYXJ0RGF0YS0+dmlldy55KSAvIHByaXYtPnBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnQtPnNjYWxlRmFjdG9yKCkgKyBzbWFydERhdGEtPnZpZXcueSArIHByaXYtPnBhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNjcm9sbFBvc2l0aW9uKCkueSgpOworICAgIHJlc3Vs
dC54ID0gKHBvaW50LnggIC0gc21hcnREYXRhLT52aWV3LngpIC8gaW1wbC0+cGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudC0+c2NhbGVGYWN0b3IoKSArIHNtYXJ0RGF0YS0+dmlldy54ICsgaW1w
bC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+c2Nyb2xsUG9zaXRpb24oKS54KCk7Cisg
ICAgcmVzdWx0LnkgPSAocG9pbnQueSAtIHNtYXJ0RGF0YS0+dmlldy55KSAvIGltcGwtPnBhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNjYWxlRmFjdG9yKCkgKyBzbWFydERhdGEtPnZpZXcu
eSArIGltcGwtPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNjcm9sbFBvc2l0aW9uKCku
eSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKIAogc3RhdGljIEVpbmFfQm9vbCBf
ZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRh
LCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiB3aGVlbEV2ZW50KQogewotICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFV0tf
VklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKICAgICBF
dmFzX1BvaW50IHBvc2l0aW9uID0ge3NtYXJ0RGF0YS0+dmlldy54LCBzbWFydERhdGEtPnZpZXcu
eX07CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgRXZhc19FdmVudF9Nb3VzZV9X
aGVlbCBldmVudCgqd2hlZWxFdmVudCk7CiAgICAgZXZlbnQuY2FudmFzID0gbWFwVG9XZWJDb250
ZW50KHNtYXJ0RGF0YSwgZXZlbnQuY2FudmFzKTsKLSAgICBwcml2LT5wYWdlUHJveHktPmhhbmRs
ZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudCgmZXZlbnQsICZwb3NpdGlvbikpOworICAg
IGltcGwtPnBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KCZl
dmVudCwgJnBvc2l0aW9uKSk7CiAjZWxzZQotICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlV2hl
ZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KHdoZWVsRXZlbnQsICZwb3NpdGlvbikpOworICAg
IGltcGwtPnBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KHdo
ZWVsRXZlbnQsICZwb3NpdGlvbikpOwogI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24oRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGRvd25FdmVudCkK
IHsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxz
ZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFs
c2UpOwogCiAgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzbWFydERhdGEtPnZpZXcueCwgc21h
cnREYXRhLT52aWV3Lnl9OwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIEV2YXNf
RXZlbnRfTW91c2VfRG93biBldmVudCgqZG93bkV2ZW50KTsKICAgICBldmVudC5jYW52YXMgPSBt
YXBUb1dlYkNvbnRlbnQoc21hcnREYXRhLCBldmVudC5jYW52YXMpOwotICAgIHByaXYtPnBhZ2VQ
cm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KCZldmVudCwgJnBvc2l0
aW9uKSk7CisgICAgaW1wbC0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1v
dXNlRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24pKTsKICNlbHNlCi0gICAgcHJpdi0+cGFnZVByb3h5
LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZG93bkV2ZW50LCAmcG9zaXRp
b24pKTsKKyAgICBpbXBsLT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91
c2VFdmVudChkb3duRXZlbnQsICZwb3NpdGlvbikpOwogI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCogdXBFdmVu
dCkKIHsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBm
YWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwg
ZmFsc2UpOwogCiAgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzbWFydERhdGEtPnZpZXcueCwg
c21hcnREYXRhLT52aWV3Lnl9OwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIEV2
YXNfRXZlbnRfTW91c2VfVXAgZXZlbnQoKnVwRXZlbnQpOwogICAgIGV2ZW50LmNhbnZhcyA9IG1h
cFRvV2ViQ29udGVudChzbWFydERhdGEsIGV2ZW50LmNhbnZhcyk7Ci0gICAgcHJpdi0+cGFnZVBy
b3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoJmV2ZW50LCAmcG9zaXRp
b24pKTsKKyAgICBpbXBsLT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91
c2VFdmVudCgmZXZlbnQsICZwb3NpdGlvbikpOwogI2Vsc2UKLSAgICBwcml2LT5wYWdlUHJveHkt
PmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudCh1cEV2ZW50LCAmcG9zaXRpb24p
KTsKKyAgICBpbXBsLT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VF
dmVudCh1cEV2ZW50LCAmcG9zaXRpb24pKTsKICNlbmRpZgogCi0gICAgaWYgKHByaXYtPmltZkNv
bnRleHQpCi0gICAgICAgIGVjb3JlX2ltZl9jb250ZXh0X3Jlc2V0KHByaXYtPmltZkNvbnRleHQp
OworICAgIGlmIChpbXBsLT5pbWZDb250ZXh0KQorICAgICAgICBlY29yZV9pbWZfY29udGV4dF9y
ZXNldChpbXBsLT5pbWZDb250ZXh0KTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
RWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBtb3ZlRXZlbnQpCiB7Ci0g
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwor
ICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsK
IAogICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7c21hcnREYXRhLT52aWV3LngsIHNtYXJ0RGF0
YS0+dmlldy55fTsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBFdmFzX0V2ZW50
X01vdXNlX01vdmUgZXZlbnQoKm1vdmVFdmVudCk7CiAgICAgZXZlbnQuY3VyLmNhbnZhcyA9IG1h
cFRvV2ViQ29udGVudChzbWFydERhdGEsIGV2ZW50LmN1ci5jYW52YXMpOwotICAgIHByaXYtPnBh
Z2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KCZldmVudCwgJnBv
c2l0aW9uKSk7CisgICAgaW1wbC0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdl
Yk1vdXNlRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24pKTsKICNlbHNlCi0gICAgcHJpdi0+cGFnZVBy
b3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQobW92ZUV2ZW50LCAmcG9z
aXRpb24pKTsKKyAgICBpbXBsLT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2Vi
TW91c2VFdmVudChtb3ZlRXZlbnQsICZwb3NpdGlvbikpOwogI2VuZGlmCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biogZG93
bkV2ZW50KQogewotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIGZhbHNlKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBp
bXBsLCBmYWxzZSk7CiAKICAgICBib29sIGlzRmlsdGVyZWQgPSBmYWxzZTsKLSAgICBpZiAocHJp
di0+aW1mQ29udGV4dCkgeworICAgIGlmIChpbXBsLT5pbWZDb250ZXh0KSB7CiAgICAgICAgIEVj
b3JlX0lNRl9FdmVudCBpbWZFdmVudDsKICAgICAgICAgZWNvcmVfaW1mX2V2YXNfZXZlbnRfa2V5
X2Rvd25fd3JhcChjb25zdF9jYXN0PEV2YXNfRXZlbnRfS2V5X0Rvd24qPihkb3duRXZlbnQpLCAm
aW1mRXZlbnQua2V5X2Rvd24pOwogCi0gICAgICAgIGlzRmlsdGVyZWQgPSBlY29yZV9pbWZfY29u
dGV4dF9maWx0ZXJfZXZlbnQocHJpdi0+aW1mQ29udGV4dCwgRUNPUkVfSU1GX0VWRU5UX0tFWV9E
T1dOLCAmaW1mRXZlbnQpOworICAgICAgICBpc0ZpbHRlcmVkID0gZWNvcmVfaW1mX2NvbnRleHRf
ZmlsdGVyX2V2ZW50KGltcGwtPmltZkNvbnRleHQsIEVDT1JFX0lNRl9FVkVOVF9LRVlfRE9XTiwg
JmltZkV2ZW50KTsKICAgICB9CiAKLSAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZUtleWJvYXJk
RXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChkb3duRXZlbnQsIGlzRmlsdGVyZWQpKTsKKyAg
ICBpbXBsLT5wYWdlUHJveHktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudChkb3duRXZlbnQsIGlzRmlsdGVyZWQpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAqIHVwRXZlbnQpCiB7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVX
S19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKIAotICAg
IHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2
ZW50KHVwRXZlbnQpKTsKKyAgICBpbXBsLT5wYWdlUHJveHktPmhhbmRsZUtleWJvYXJkRXZlbnQo
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCh1cEV2ZW50KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTM3MSwxOSArMzczLDE5IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfdXAodm9p
ZCogZGF0YSwgRXZhcyosIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZvCiBzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfb25fc2hvdyh2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lk
KiAvKmV2ZW50SW5mbyovKQogewogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9
IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKLSAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLSAgICBwcml2LT5wYWdlUHJveHkt
PnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc1Zpc2libGUpOworICAgIEVX
S19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwpOworICAgIGltcGwtPnBh
Z2VQcm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzVmlzaWJsZSk7
CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9oaWRlKHZvaWQqIGRhdGEsIEV2YXMqLCBF
dmFzX09iamVjdCosIHZvaWQqIC8qZXZlbnRJbmZvKi8pCiB7CiAgICAgRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEp
OwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworICAg
IEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwpOwogCiAgICAgLy8g
VGhpcyBjYWxsIG1heSBsb29rIHdyb25nLCBidXQgd2UgcmVhbGx5IG5lZWQgdG8gcGFzcyBWaWV3
SXNWaXNpYmxlIGhlcmUuCiAgICAgLy8gdmlld1N0YXRlRGlkQ2hhbmdlKCkgaXRzZWxmIGlzIHJl
c3BvbnNpYmxlIGZvciBhY3R1YWxseSBzZXR0aW5nIHRoZSB2aXNpYmlsaXR5IHRvIFZpc2libGUg
b3IgSGlkZGVuCiAgICAgLy8gZGVwZW5kaW5nIG9uIHdoYXQgV2ViUGFnZVByb3h5Ojppc1ZpZXdW
aXNpYmxlKCkgcmV0dXJucywgdGhpcyBzaW1wbHkgdHJpZ2dlcnMgdGhlIHByb2Nlc3MuCi0gICAg
cHJpdi0+cGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNW
aXNpYmxlKTsKKyAgICBpbXBsLT5wYWdlUHJveHktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdl
UHJveHk6OlZpZXdJc1Zpc2libGUpOwogfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKQEAg
LTQyOSwxMyArNDMxLDEzIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl90b3VjaF9tb3ZlKHZv
aWQqIC8qIGRhdGEgKi8sIEV2YXMqIC8qIGNhbnZhcyAqLywgRXZhc19PCiAKIHN0YXRpYyBFdmFz
X1NtYXJ0X0NsYXNzIGdfcGFyZW50U21hcnRDbGFzcyA9IEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9O
VUxMOwogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcHJpdl9kZWwoRXdrVmlld0ltcGwqIHByaXYp
CitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfaW1wbF9kZWwoRXdrVmlld0ltcGwqIGltcGwpCiB7CiAg
ICAgLyogVW5yZWdpc3RlciBpY29uIGNoYW5nZSBjYWxsYmFjayAqLwotICAgIEV3a19GYXZpY29u
X0RhdGFiYXNlKiBpY29uRGF0YWJhc2UgPSBwcml2LT5jb250ZXh0LT5mYXZpY29uRGF0YWJhc2Uo
KTsKKyAgICBFd2tfRmF2aWNvbl9EYXRhYmFzZSogaWNvbkRhdGFiYXNlID0gaW1wbC0+Y29udGV4
dC0+ZmF2aWNvbkRhdGFiYXNlKCk7CiAgICAgaWNvbkRhdGFiYXNlLT51bndhdGNoQ2hhbmdlcyhf
ZXdrX3ZpZXdfb25fZmF2aWNvbl9jaGFuZ2VkKTsKIAotICAgIGRlbGV0ZSBwcml2OworICAgIGRl
bGV0ZSBpbXBsOwogfQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQpAQCAtNDkyLDcgKzQ5NCw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19z
bWFydF9kZWwoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgcmVtb3ZlRnJvbVBhZ2VWaWV3TWFw
KGV3a1ZpZXcpOwogICAgIEVXS19WSUVXX1NEX0dFVChld2tWaWV3LCBzbWFydERhdGEpOwogICAg
IGlmIChzbWFydERhdGEgJiYgc21hcnREYXRhLT5wcml2KQotICAgICAgICBfZXdrX3ZpZXdfcHJp
dl9kZWwoc21hcnREYXRhLT5wcml2KTsKKyAgICAgICAgX2V3a192aWV3X2ltcGxfZGVsKHNtYXJ0
RGF0YS0+cHJpdik7CiAKICAgICBnX3BhcmVudFNtYXJ0Q2xhc3MuZGVsKGV3a1ZpZXcpOwogfQpA
QCAtNTE3LDEwMiArNTE5LDEwIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9tb3ZlKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3JkIC8qeCovLCBFdmFzX0NvCiAgICAgX2V3a192
aWV3X3NtYXJ0X2NoYW5nZWQoc21hcnREYXRhKTsKIH0KIAotSW50U2l6ZSBld2tfdmlld19zaXpl
X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBpbnQgd2lkdGgsIGhlaWdo
dDsKLSAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoZXdrVmlldywgMCwgMCwgJndpZHRoLCAm
aGVpZ2h0KTsKLSAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKLX0KLQotI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLXN0YXRpYyBib29sIGV3a192aWV3X2NyZWF0ZV9n
bF9zdXJmYWNlKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBJbnRTaXplJiB2aWV3
U2l6ZSkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYsIGZhbHNlKTsKLQotICAgIEV2YXNfR0xfQ29uZmlnIGV2YXNHbENvbmZpZyA9IHsKLSAgICAg
ICAgRVZBU19HTF9SR0JBXzg4ODgsCi0gICAgICAgIEVWQVNfR0xfREVQVEhfQklUXzgsCi0gICAg
ICAgIEVWQVNfR0xfU1RFTkNJTF9OT05FLAotICAgICAgICBFVkFTX0dMX09QVElPTlNfTk9ORSwK
LSAgICAgICAgRVZBU19HTF9NVUxUSVNBTVBMRV9OT05FCi0gICAgfTsKLQotICAgIEFTU0VSVCgh
cHJpdi0+ZXZhc0dsU3VyZmFjZSk7Ci0gICAgcHJpdi0+ZXZhc0dsU3VyZmFjZSA9IGV2YXNfZ2xf
c3VyZmFjZV9jcmVhdGUocHJpdi0+ZXZhc0dsLCAmZXZhc0dsQ29uZmlnLCB2aWV3U2l6ZS53aWR0
aCgpLCB2aWV3U2l6ZS5oZWlnaHQoKSk7Ci0gICAgaWYgKCFwcml2LT5ldmFzR2xTdXJmYWNlKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBFdmFzX05hdGl2ZV9TdXJmYWNlIG5hdGl2ZVN1
cmZhY2U7Ci0gICAgZXZhc19nbF9uYXRpdmVfc3VyZmFjZV9nZXQocHJpdi0+ZXZhc0dsLCBwcml2
LT5ldmFzR2xTdXJmYWNlLCAmbmF0aXZlU3VyZmFjZSk7Ci0gICAgZXZhc19vYmplY3RfaW1hZ2Vf
bmF0aXZlX3N1cmZhY2Vfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsICZuYXRpdmVTdXJmYWNlKTsKLQot
ICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIGV3a192aWV3X2FjY2VsZXJhdGVkX2NvbXBvc2l0
aW5nX21vZGVfZW50ZXIoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0KLSAgICBp
ZiAocHJpdi0+ZXZhc0dsKSB7Ci0gICAgICAgIEVJTkFfTE9HX0RPTV9XQVJOKF9ld2tfbG9nX2Rv
bSwgIkFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIG1vZGUgYWxyZWFkeSBlbnRlcmVkLiIpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgRXZhcyogZXZhcyA9IGV2YXNfb2JqZWN0
X2V2YXNfZ2V0KGV3a1ZpZXcpOwotICAgIHByaXYtPmV2YXNHbCA9IGV2YXNfZ2xfbmV3KGV2YXMp
OwotICAgIGlmICghcHJpdi0+ZXZhc0dsKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBw
cml2LT5ldmFzR2xDb250ZXh0ID0gZXZhc19nbF9jb250ZXh0X2NyZWF0ZShwcml2LT5ldmFzR2ws
IDApOwotICAgIGlmICghcHJpdi0+ZXZhc0dsQ29udGV4dCkgewotICAgICAgICBldmFzX2dsX2Zy
ZWUocHJpdi0+ZXZhc0dsKTsKLSAgICAgICAgcHJpdi0+ZXZhc0dsID0gMDsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICghZXdrX3ZpZXdfY3JlYXRlX2dsX3N1cmZhY2Uo
ZXdrVmlldywgZXdrX3ZpZXdfc2l6ZV9nZXQoZXdrVmlldykpKSB7Ci0gICAgICAgIGV2YXNfZ2xf
Y29udGV4dF9kZXN0cm95KHByaXYtPmV2YXNHbCwgcHJpdi0+ZXZhc0dsQ29udGV4dCk7Ci0gICAg
ICAgIHByaXYtPmV2YXNHbENvbnRleHQgPSAwOwotCi0gICAgICAgIGV2YXNfZ2xfZnJlZShwcml2
LT5ldmFzR2wpOwotICAgICAgICBwcml2LT5ldmFzR2wgPSAwOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgcHJpdi0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+c2V0
UmVuZGVyZXJBY3RpdmUodHJ1ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgZXdrX3Zp
ZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfbW9kZV9leGl0KGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnRE
YXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdiwgZmFsc2UpOwotCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYt
PmV2YXNHbCwgZmFsc2UpOwotCi0gICAgaWYgKHByaXYtPmV2YXNHbFN1cmZhY2UpIHsKLSAgICAg
ICAgZXZhc19nbF9zdXJmYWNlX2Rlc3Ryb3kocHJpdi0+ZXZhc0dsLCBwcml2LT5ldmFzR2xTdXJm
YWNlKTsKLSAgICAgICAgcHJpdi0+ZXZhc0dsU3VyZmFjZSA9IDA7Ci0gICAgfQotCi0gICAgaWYg
KHByaXYtPmV2YXNHbENvbnRleHQpIHsKLSAgICAgICAgZXZhc19nbF9jb250ZXh0X2Rlc3Ryb3ko
cHJpdi0+ZXZhc0dsLCBwcml2LT5ldmFzR2xDb250ZXh0KTsKLSAgICAgICAgcHJpdi0+ZXZhc0ds
Q29udGV4dCA9IDA7Ci0gICAgfQotCi0gICAgZXZhc19nbF9mcmVlKHByaXYtPmV2YXNHbCk7Ci0g
ICAgcHJpdi0+ZXZhc0dsID0gMDsKLQotICAgIHJldHVybiB0cnVlOwotfQotI2VuZGlmCi0KIHN0
YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwot
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworICAgIEVX
S19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwpOwogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGJvb2wgbmVlZHNOZXdTdXJmYWNlID0gZmFsc2U7
CkBAIC02MjUsMTQgKzUzNSwxNCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3Vs
YXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogCiAgICAgaWYgKHNtYXJ0RGF0YS0+Y2hhbmdlZC5z
aXplKSB7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgICAgICBwcml2LT5wYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50LT51cGRhdGVWaWV3cG9ydFNpemUoSW50U2l6ZSh3aWR0
aCwgaGVpZ2h0KSk7CisgICAgICAgIGltcGwtPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQt
PnVwZGF0ZVZpZXdwb3J0U2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKICNlbmRpZgogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAgICAgbmVlZHNOZXdTdXJmYWNlID0g
cHJpdi0+ZXZhc0dsU3VyZmFjZTsKKyAgICAgICAgbmVlZHNOZXdTdXJmYWNlID0gaW1wbC0+ZXZh
c0dsU3VyZmFjZTsKICNlbmRpZgogCi0gICAgICAgIGlmIChwcml2LT5wYWdlUHJveHktPmRyYXdp
bmdBcmVhKCkpCi0gICAgICAgICAgICBwcml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNl
dFNpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgSW50U2l6ZSgpKTsKKyAgICAgICAgaWYgKGlt
cGwtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKSkKKyAgICAgICAgICAgIGltcGwtPnBhZ2VQcm94
eS0+ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpLCBJbnRTaXpl
KCkpOwogCiAgICAgICAgIHNtYXJ0RGF0YS0+dmlldy53ID0gd2lkdGg7CiAgICAgICAgIHNtYXJ0
RGF0YS0+dmlldy5oID0gaGVpZ2h0OwpAQCAtNjQ4LDkgKzU1OCw5IEBAIHN0YXRpYyB2b2lkIF9l
d2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKG5lZWRzTmV3U3VyZmFjZSkgewotICAg
ICAgICBldmFzX2dsX3N1cmZhY2VfZGVzdHJveShwcml2LT5ldmFzR2wsIHByaXYtPmV2YXNHbFN1
cmZhY2UpOwotICAgICAgICBwcml2LT5ldmFzR2xTdXJmYWNlID0gMDsKLSAgICAgICAgZXdrX3Zp
ZXdfY3JlYXRlX2dsX3N1cmZhY2UoZXdrVmlldywgSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7Cisg
ICAgICAgIGV2YXNfZ2xfc3VyZmFjZV9kZXN0cm95KGltcGwtPmV2YXNHbCwgaW1wbC0+ZXZhc0ds
U3VyZmFjZSk7CisgICAgICAgIGltcGwtPmV2YXNHbFN1cmZhY2UgPSAwOworICAgICAgICBpbXBs
LT5jcmVhdGVHTFN1cmZhY2UoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGV3a192
aWV3X2Rpc3BsYXkoZXdrVmlldywgSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKHdpZHRoLCBo
ZWlnaHQpKSk7CiAgICAgfQogI2VuZGlmCkBAIC02NzYsNyArNTg2LDcgQEAgc3RhdGljIHZvaWQg
X2V3a192aWV3X3NtYXJ0X2hpZGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiBzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfc21hcnRfY29sb3Jfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgcmVkLCBp
bnQgZ3JlZW4sIGludCBibHVlLCBpbnQgYWxwaGEpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIHByaXYpOworICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIGltcGwpOwogCiAgICAgaWYgKGFscGhhIDwgMCkKICAgICAgICAgYWxwaGEgPSAw
OwpAQCAtNjk0LDggKzYwNCw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jb2xvcl9z
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCByZWQsIGludCBncmVlbiwKICN1bmRlZiBDSEVD
S19DT0xPUgogCiAgICAgZXZhc19vYmplY3RfaW1hZ2VfYWxwaGFfc2V0KHNtYXJ0RGF0YS0+aW1h
Z2UsIGFscGhhIDwgMjU1KTsKLSAgICBwcml2LT5wYWdlUHJveHktPnNldERyYXdzQmFja2dyb3Vu
ZChyZWQgfHwgZ3JlZW4gfHwgYmx1ZSk7Ci0gICAgcHJpdi0+cGFnZVByb3h5LT5zZXREcmF3c1Ry
YW5zcGFyZW50QmFja2dyb3VuZChhbHBoYSA8IDI1NSk7CisgICAgaW1wbC0+cGFnZVByb3h5LT5z
ZXREcmF3c0JhY2tncm91bmQocmVkIHx8IGdyZWVuIHx8IGJsdWUpOworICAgIGltcGwtPnBhZ2VQ
cm94eS0+c2V0RHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoYWxwaGEgPCAyNTUpOwogCiAgICAg
Z19wYXJlbnRTbWFydENsYXNzLmNvbG9yX3NldChld2tWaWV3LCByZWQsIGdyZWVuLCBibHVlLCBh
bHBoYSk7CiB9CkBAIC03NTUsNTMgKzY2NSw1MyBAQCBzdGF0aWMgaW5saW5lIEV2YXNfU21hcnQq
IF9ld2tfdmlld19zbWFydF9jbGFzc19uZXcodm9pZCkKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19p
bml0aWFsaXplKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBj
b250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiB7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIGltcGwpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNv
bnRleHQpOwogCi0gICAgaWYgKHByaXYtPnBhZ2VDbGllbnQpCisgICAgaWYgKGltcGwtPnBhZ2VD
bGllbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByaXYtPnBhZ2VDbGllbnQgPSBQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlKGV3a1ZpZXcpOworICAgIGltcGwtPnBhZ2VDbGllbnQgPSBQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlKGltcGwpOwogCiAgICAgaWYgKHBhZ2VHcm91cFJlZikKLSAgICAgICAg
cHJpdi0+cGFnZVByb3h5ID0gdG9JbXBsKGNvbnRleHQtPndrQ29udGV4dCgpKS0+Y3JlYXRlV2Vi
UGFnZShwcml2LT5wYWdlQ2xpZW50LmdldCgpLCB0b0ltcGwocGFnZUdyb3VwUmVmKSk7CisgICAg
ICAgIGltcGwtPnBhZ2VQcm94eSA9IHRvSW1wbChjb250ZXh0LT53a0NvbnRleHQoKSktPmNyZWF0
ZVdlYlBhZ2UoaW1wbC0+cGFnZUNsaWVudC5nZXQoKSwgdG9JbXBsKHBhZ2VHcm91cFJlZikpOwog
ICAgIGVsc2UKLSAgICAgICAgcHJpdi0+cGFnZVByb3h5ID0gdG9JbXBsKGNvbnRleHQtPndrQ29u
dGV4dCgpKS0+Y3JlYXRlV2ViUGFnZShwcml2LT5wYWdlQ2xpZW50LmdldCgpLCBXZWJQYWdlR3Jv
dXA6OmNyZWF0ZSgpLmdldCgpKTsKKyAgICAgICAgaW1wbC0+cGFnZVByb3h5ID0gdG9JbXBsKGNv
bnRleHQtPndrQ29udGV4dCgpKS0+Y3JlYXRlV2ViUGFnZShpbXBsLT5wYWdlQ2xpZW50LmdldCgp
LCBXZWJQYWdlR3JvdXA6OmNyZWF0ZSgpLmdldCgpKTsKIAogICAgIGFkZFRvUGFnZVZpZXdNYXAo
ZXdrVmlldyk7CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgcHJpdi0+cGFn
ZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQodHJ1ZSk7Ci0gICAgcHJpdi0+cGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJl
ZmVyZW5jZXMoKS0+c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7Ci0gICAgcHJpdi0+cGFn
ZVByb3h5LT5zZXRVc2VGaXhlZExheW91dCh0cnVlKTsKKyAgICBpbXBsLT5wYWdlUHJveHktPnBh
Z2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxl
ZCh0cnVlKTsKKyAgICBpbXBsLT5wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygp
LT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKKyAgICBpbXBsLT5wYWdlUHJveHktPnNl
dFVzZUZpeGVkTGF5b3V0KHRydWUpOwogI2VuZGlmCi0gICAgcHJpdi0+cGFnZVByb3h5LT5pbml0
aWFsaXplV2ViUGFnZSgpOworICAgIGltcGwtPnBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2Uo
KTsKIAotICAgIHByaXYtPmJhY2tGb3J3YXJkTGlzdCA9IEV3a19CYWNrX0ZvcndhcmRfTGlzdDo6
Y3JlYXRlKHRvQVBJKHByaXYtPnBhZ2VQcm94eS0+YmFja0ZvcndhcmRMaXN0KCkpKTsKKyAgICBp
bXBsLT5iYWNrRm9yd2FyZExpc3QgPSBFd2tfQmFja19Gb3J3YXJkX0xpc3Q6OmNyZWF0ZSh0b0FQ
SShpbXBsLT5wYWdlUHJveHktPmJhY2tGb3J3YXJkTGlzdCgpKSk7CiAKLSAgICBwcml2LT5jb250
ZXh0ID0gY29udGV4dDsKKyAgICBpbXBsLT5jb250ZXh0ID0gY29udGV4dDsKIAogI2lmIFVTRShU
SUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIHByaXYtPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnQgPSBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpjcmVhdGUoZXdrVmlldyk7Ci0g
ICAgcHJpdi0+cGFnZVZpZXdwb3J0Q29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBQYWdlVmlld3Bv
cnRDb250cm9sbGVyKHByaXYtPnBhZ2VQcm94eS5nZXQoKSwgcHJpdi0+cGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudC5nZXQoKSkpOwotICAgIHByaXYtPnBhZ2VDbGllbnQtPnNldFBhZ2VWaWV3
cG9ydENvbnRyb2xsZXIocHJpdi0+cGFnZVZpZXdwb3J0Q29udHJvbGxlci5nZXQoKSk7CisgICAg
aW1wbC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCA9IFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmw6OmNyZWF0ZShpbXBsKTsKKyAgICBpbXBsLT5wYWdlVmlld3BvcnRDb250cm9s
bGVyID0gYWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoaW1wbC0+cGFnZVByb3h5
LmdldCgpLCBpbXBsLT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpKSk7CisgICAg
aW1wbC0+cGFnZUNsaWVudC0+c2V0UGFnZVZpZXdwb3J0Q29udHJvbGxlcihpbXBsLT5wYWdlVmll
d3BvcnRDb250cm9sbGVyLmdldCgpKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQotICAgIHByaXYtPnBhZ2VQcm94eS0+ZnVsbFNjcmVlbk1hbmFnZXIoKS0+c2V0V2ViVmll
dyhld2tWaWV3KTsKLSAgICBwcml2LT5wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNl
cygpLT5zZXRGdWxsU2NyZWVuRW5hYmxlZCh0cnVlKTsKKyAgICBpbXBsLT5wYWdlUHJveHktPmZ1
bGxTY3JlZW5NYW5hZ2VyKCktPnNldFdlYlZpZXcoZXdrVmlldyk7CisgICAgaW1wbC0+cGFnZVBy
b3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0RnVsbFNjcmVlbkVuYWJsZWQodHJ1
ZSk7CiAjZW5kaWYKIAogICAgIC8vIEluaXRpYWxpemUgcGFnZSBjbGllbnRzLgotICAgIHByaXYt
PnBhZ2VMb2FkQ2xpZW50ID0gUGFnZUxvYWRDbGllbnRFZmw6OmNyZWF0ZShld2tWaWV3KTsKLSAg
ICBwcml2LT5wYWdlUG9saWN5Q2xpZW50ID0gUGFnZVBvbGljeUNsaWVudEVmbDo6Y3JlYXRlKGV3
a1ZpZXcpOwotICAgIHByaXYtPnBhZ2VVSUNsaWVudCA9IFBhZ2VVSUNsaWVudEVmbDo6Y3JlYXRl
KGV3a1ZpZXcpOwotICAgIHByaXYtPnJlc291cmNlTG9hZENsaWVudCA9IFJlc291cmNlTG9hZENs
aWVudEVmbDo6Y3JlYXRlKGV3a1ZpZXcpOwotICAgIHByaXYtPmZpbmRDbGllbnQgPSBGaW5kQ2xp
ZW50RWZsOjpjcmVhdGUoZXdrVmlldyk7Ci0gICAgcHJpdi0+Zm9ybUNsaWVudCA9IEZvcm1DbGll
bnRFZmw6OmNyZWF0ZShld2tWaWV3KTsKKyAgICBpbXBsLT5wYWdlTG9hZENsaWVudCA9IFBhZ2VM
b2FkQ2xpZW50RWZsOjpjcmVhdGUoaW1wbCk7CisgICAgaW1wbC0+cGFnZVBvbGljeUNsaWVudCA9
IFBhZ2VQb2xpY3lDbGllbnRFZmw6OmNyZWF0ZShpbXBsKTsKKyAgICBpbXBsLT5wYWdlVUlDbGll
bnQgPSBQYWdlVUlDbGllbnRFZmw6OmNyZWF0ZShpbXBsKTsKKyAgICBpbXBsLT5yZXNvdXJjZUxv
YWRDbGllbnQgPSBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmNyZWF0ZShpbXBsKTsKKyAgICBpbXBs
LT5maW5kQ2xpZW50ID0gRmluZENsaWVudEVmbDo6Y3JlYXRlKGltcGwpOworICAgIGltcGwtPmZv
cm1DbGllbnQgPSBGb3JtQ2xpZW50RWZsOjpjcmVhdGUoaW1wbCk7CiAKICAgICAvKiBMaXN0ZW4g
Zm9yIGZhdmljb24gY2hhbmdlcyAqLwotICAgIEV3a19GYXZpY29uX0RhdGFiYXNlKiBpY29uRGF0
YWJhc2UgPSBwcml2LT5jb250ZXh0LT5mYXZpY29uRGF0YWJhc2UoKTsKKyAgICBFd2tfRmF2aWNv
bl9EYXRhYmFzZSogaWNvbkRhdGFiYXNlID0gaW1wbC0+Y29udGV4dC0+ZmF2aWNvbkRhdGFiYXNl
KCk7CiAgICAgaWNvbkRhdGFiYXNlLT53YXRjaENoYW5nZXMoSWNvbkNoYW5nZUNhbGxiYWNrRGF0
YShfZXdrX3ZpZXdfb25fZmF2aWNvbl9jaGFuZ2VkLCBld2tWaWV3KSk7CiB9CiAKQEAgLTgyMCw4
ICs3MzAsOCBAQCBzdGF0aWMgRXZhc19PYmplY3QqIF9ld2tfdmlld19hZGRfd2l0aF9zbWFydChF
dmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0KQogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYpOwotICAgIGlmICghcHJp
dikgeworICAgIEVXS19WSUVXX0lNUExfR0VUKHNtYXJ0RGF0YSwgaW1wbCk7CisgICAgaWYgKCFp
bXBsKSB7CiAgICAgICAgIGV2YXNfb2JqZWN0X2RlbChld2tWaWV3KTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQpAQCAtODc1LDkgKzc4NSw5IEBAIEV2YXNfT2JqZWN0KiBld2tfdmlld19hZGQo
RXZhcyogY2FudmFzKQogRXdrX0NvbnRleHQqIGV3a192aWV3X2NvbnRleHRfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCAwKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBpbXBsLCAwKTsKIAotICAgIHJldHVybiBwcml2LT5jb250ZXh0LmdldCgpOworICAgIHJl
dHVybiBpbXBsLT5jb250ZXh0LmdldCgpOwogfQogCiAvKioKQEAgLTg4OSwzMCArNzk5LDMwIEBA
IEV3a19Db250ZXh0KiBld2tfdmlld19jb250ZXh0X2dldChjb25zdCBFdmFzX09iamVjdCogZXdr
VmlldykKIHZvaWQgZXdrX3ZpZXdfdXJsX3VwZGF0ZShFdmFzX09iamVjdCogZXdrVmlldykKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisgICAgRVdLX1ZJ
RVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCk7CiAKLSAgICBTdHJpbmcgYWN0
aXZlVVJMID0gcHJpdi0+cGFnZVByb3h5LT5hY3RpdmVVUkwoKTsKKyAgICBTdHJpbmcgYWN0aXZl
VVJMID0gaW1wbC0+cGFnZVByb3h5LT5hY3RpdmVVUkwoKTsKICAgICBpZiAoYWN0aXZlVVJMLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHByaXYtPnVybCA9PSBhY3RpdmVV
UkwudXRmOCgpLmRhdGEoKSkKKyAgICBpZiAoaW1wbC0+dXJsID09IGFjdGl2ZVVSTC51dGY4KCku
ZGF0YSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcml2LT51cmwgPSBhY3RpdmVVUkwudXRm
OCgpLmRhdGEoKTsKLSAgICBjb25zdCBjaGFyKiBjYWxsYmFja0FyZ3VtZW50ID0gc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KHByaXYtPnVybCk7CisgICAgaW1wbC0+dXJsID0gYWN0aXZlVVJMLnV0
ZjgoKS5kYXRhKCk7CisgICAgY29uc3QgY2hhciogY2FsbGJhY2tBcmd1bWVudCA9IHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihpbXBsLT51cmwpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwoZXdrVmlldywgInVybCxjaGFuZ2VkIiwgY29uc3RfY2FzdDxjaGFyKj4oY2FsbGJh
Y2tBcmd1bWVudCkpOwogCiAgICAgLy8gVXBkYXRlIHRoZSB2aWV3J3MgZmF2aWNvbi4KLSAgICBl
d2tfdmlld191cGRhdGVfaWNvbihld2tWaWV3KTsKKyAgICBpbXBsLT5pbmZvcm1JY29uQ2hhbmdl
KCk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld191cmxfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBjb25zdCBjaGFyKiB1cmwpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTCh1cmwsIGZhbHNlKTsKIAotICAgIHByaXYtPnBhZ2VQcm94eS0+bG9hZFVSTCh1cmwpOwor
ICAgIGltcGwtPnBhZ2VQcm94eS0+bG9hZFVSTCh1cmwpOwogICAgIGV3a192aWV3X3VybF91cGRh
dGUoZXdrVmlldyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTkyMSwyNSArODMxLDI1IEBAIEVp
bmFfQm9vbCBld2tfdmlld191cmxfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFy
KiB1cmwpCiBjb25zdCBjaGFyKiBld2tfdmlld191cmxfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnRE
YXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
LCAwKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCAw
KTsKIAotICAgIHJldHVybiBwcml2LT51cmw7CisgICAgcmV0dXJuIGltcGwtPnVybDsKIH0KIAog
Y29uc3QgY2hhciAqZXdrX3ZpZXdfaWNvbl91cmxfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpld2tW
aWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCAwKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAw
KTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCAwKTsK
IAotICAgIHJldHVybiBwcml2LT5mYXZpY29uVVJMOworICAgIHJldHVybiBpbXBsLT5mYXZpY29u
VVJMOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkKEV2YXNfT2JqZWN0KiBld2tWaWV3
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBm
YWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
ZmFsc2UpOworICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGws
IGZhbHNlKTsKIAotICAgIHByaXYtPnBhZ2VQcm94eS0+cmVsb2FkKC8qcmVsb2FkRnJvbU9yaWdp
biovIGZhbHNlKTsKKyAgICBpbXBsLT5wYWdlUHJveHktPnJlbG9hZCgvKnJlbG9hZEZyb21Pcmln
aW4qLyBmYWxzZSk7CiAgICAgZXdrX3ZpZXdfdXJsX3VwZGF0ZShld2tWaWV3KTsKIAogICAgIHJl
dHVybiB0cnVlOwpAQCAtOTQ4LDkgKzg1OCw5IEBAIEVpbmFfQm9vbCBld2tfdmlld19yZWxvYWQo
RXZhc19PYmplY3QqIGV3a1ZpZXcpCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkX2J5cGFzc19j
YWNoZShFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBwcml2LT5wYWdlUHJveHkt
PnJlbG9hZCgvKnJlbG9hZEZyb21PcmlnaW4qLyB0cnVlKTsKKyAgICBpbXBsLT5wYWdlUHJveHkt
PnJlbG9hZCgvKnJlbG9hZEZyb21PcmlnaW4qLyB0cnVlKTsKICAgICBld2tfdmlld191cmxfdXBk
YXRlKGV3a1ZpZXcpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC05NTksOSArODY5LDkgQEAgRWlu
YV9Cb29sIGV3a192aWV3X3JlbG9hZF9ieXBhc3NfY2FjaGUoRXZhc19PYmplY3QqIGV3a1ZpZXcp
CiBFaW5hX0Jvb2wgZXdrX3ZpZXdfc3RvcChFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAg
ICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAK
LSAgICBwcml2LT5wYWdlUHJveHktPnN0b3BMb2FkaW5nKCk7CisgICAgaW1wbC0+cGFnZVByb3h5
LT5zdG9wTG9hZGluZygpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NjksOTIgKzg3OSwy
MCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc3RvcChFdmFzX09iamVjdCogZXdrVmlldykKIEV3a19T
ZXR0aW5ncyogZXdrX3ZpZXdfc2V0dGluZ3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3
KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAw
KTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsK
KyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCAwKTsKIAot
ICAgIHJldHVybiBwcml2LT5zZXR0aW5ncy5nZXQoKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwK
LSAqIFJldHJpZXZlcyB0aGUgaW50ZXJuYWwgV0tQYWdlIGZvciB0aGlzIHZpZXcuCi0gKi8KLVdL
UGFnZVJlZiBld2tfdmlld193a3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQot
ewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsK
LSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKLQot
ICAgIHJldHVybiB0b0FQSShwcml2LT5wYWdlUHJveHkuZ2V0KCkpOwotfQotCi0vKioKLSAqIEBp
bnRlcm5hbAotICogTG9hZCB3YXMgaW5pdGlhdGVkIGZvciBhIHJlc291cmNlIGluIHRoZSB2aWV3
LgotICoKLSAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3QsbmV3IiB3aXRoIHBvaW50
ZXIgdG8gcmVzb3VyY2UgcmVxdWVzdC4KLSAqLwotdm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2Fk
X2luaXRpYXRlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX1Jlc291cmNlKiByZXNvdXJjZSwg
RXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0KQotewotICAgIEV3a19SZXNvdXJjZV9SZXF1ZXN0IHJl
c291cmNlUmVxdWVzdCA9IHtyZXNvdXJjZSwgcmVxdWVzdCwgMH07Ci0KLSAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LG5ldyIsICZy
ZXNvdXJjZVJlcXVlc3QpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmVjZWl2ZWQgYSBy
ZXNwb25zZSB0byBhIHJlc291cmNlIGxvYWQgcmVxdWVzdCBpbiB0aGUgdmlldy4KLSAqCi0gKiBF
bWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LHJlc3BvbnNlIiB3aXRoIHBvaW50ZXIgdG8g
cmVzb3VyY2UgcmVzcG9uc2UuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9yZXNw
b25zZShFdmFzX09iamVjdCogZXdrVmlldywgRXdrX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX1Vy
bF9SZXNwb25zZSogcmVzcG9uc2UpCi17Ci0gICAgRXdrX1Jlc291cmNlX0xvYWRfUmVzcG9uc2Ug
cmVzb3VyY2VMb2FkUmVzcG9uc2UgPSB7cmVzb3VyY2UsIHJlc3BvbnNlfTsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LHJlc3Bv
bnNlIiwgJnJlc291cmNlTG9hZFJlc3BvbnNlKTsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAq
IEZhaWxlZCBsb2FkaW5nIGEgcmVzb3VyY2UgaW4gdGhlIHZpZXcuCi0gKgotICogRW1pdHMgc2ln
bmFsOiAicmVzb3VyY2UscmVxdWVzdCxmaW5pc2hlZCIgd2l0aCBwb2ludGVyIHRvIHRoZSByZXNv
dXJjZSBsb2FkIGVycm9yLgotICovCi12b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmFpbGVk
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfUmVzb3VyY2UqIHJlc291cmNlLCBFd2tfRXJyb3Iq
IGVycm9yKQotewotICAgIEV3a19SZXNvdXJjZV9Mb2FkX0Vycm9yIHJlc291cmNlTG9hZEVycm9y
ID0ge3Jlc291cmNlLCBlcnJvcn07Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChld2tWaWV3LCAicmVzb3VyY2UscmVxdWVzdCxmYWlsZWQiLCAmcmVzb3VyY2VMb2FkRXJyb3Ip
OwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogRmluaXNoZWQgbG9hZGluZyBhIHJlc291cmNl
IGluIHRoZSB2aWV3LgotICoKLSAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3QsZmlu
aXNoZWQiIHdpdGggcG9pbnRlciB0byB0aGUgcmVzb3VyY2UuCi0gKi8KLXZvaWQgZXdrX3ZpZXdf
cmVzb3VyY2VfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX1Jlc291cmNl
KiByZXNvdXJjZSkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1Zp
ZXcsICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiwgcmVzb3VyY2UpOwotfQotCi0vKioKLSAq
IEBpbnRlcm5hbAotICogUmVxdWVzdCB3YXMgc2VudCBmb3IgYSByZXNvdXJjZSBpbiB0aGUgdmll
dy4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LHNlbnQiIHdpdGggcG9p
bnRlciB0byByZXNvdXJjZSByZXF1ZXN0IGFuZCBwb3NzaWJsZSByZWRpcmVjdCByZXNwb25zZS4K
LSAqLwotdm9pZCBld2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0X3NlbnQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCwg
RXdrX1VybF9SZXNwb25zZSogcmVkaXJlY3RSZXNwb25zZSkKLXsKLSAgICBFd2tfUmVzb3VyY2Vf
UmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgPSB7cmVzb3VyY2UsIHJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2V9OwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInJl
c291cmNlLHJlcXVlc3Qsc2VudCIsICZyZXNvdXJjZVJlcXVlc3QpOworICAgIHJldHVybiBpbXBs
LT5zZXR0aW5ncy5nZXQoKTsKIH0KIAogY29uc3QgY2hhciogZXdrX3ZpZXdfdGl0bGVfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2LCAwKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBpbXBsLCAwKTsKIAotICAgIENTdHJpbmcgdGl0bGUgPSBwcml2LT5wYWdlUHJv
eHktPnBhZ2VUaXRsZSgpLnV0ZjgoKTsKLSAgICBwcml2LT50aXRsZSA9IHRpdGxlLmRhdGEoKTsK
KyAgICBDU3RyaW5nIHRpdGxlID0gaW1wbC0+cGFnZVByb3h5LT5wYWdlVGl0bGUoKS51dGY4KCk7
CisgICAgaW1wbC0+dGl0bGUgPSB0aXRsZS5kYXRhKCk7CiAKLSAgICByZXR1cm4gcHJpdi0+dGl0
bGU7CisgICAgcmV0dXJuIGltcGwtPnRpdGxlOwogfQogCiAvKioKQEAgLTEwNzUsODYgKzkxMyw2
NCBAQCB2b2lkIGV3a192aWV3X3RleHRfZm91bmQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVuc2ln
bmVkIGludCBtYXRjaENvdW50KQogdm9pZCBld2tfdmlld190ZXh0X2lucHV0X3N0YXRlX3VwZGF0
ZShFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdik7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgaW1wbCk7CiAKLSAgICBpZiAoIXByaXYtPmltZkNvbnRleHQpCisgICAgaWYgKCFpbXBsLT5p
bWZDb250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBFZGl0b3JTdGF0ZSYgZWRp
dG9yID0gcHJpdi0+cGFnZVByb3h5LT5lZGl0b3JTdGF0ZSgpOworICAgIGNvbnN0IEVkaXRvclN0
YXRlJiBlZGl0b3IgPSBpbXBsLT5wYWdlUHJveHktPmVkaXRvclN0YXRlKCk7CiAKICAgICBpZiAo
ZWRpdG9yLmlzQ29udGVudEVkaXRhYmxlKSB7Ci0gICAgICAgIGlmIChwcml2LT5pc0ltZkZvY3Vz
ZWQpCisgICAgICAgIGlmIChpbXBsLT5pc0ltZkZvY3VzZWQpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfcmVzZXQocHJpdi0+aW1mQ29udGV4dCk7Ci0g
ICAgICAgIGVjb3JlX2ltZl9jb250ZXh0X2ZvY3VzX2luKHByaXYtPmltZkNvbnRleHQpOwotICAg
ICAgICBwcml2LT5pc0ltZkZvY3VzZWQgPSB0cnVlOworICAgICAgICBlY29yZV9pbWZfY29udGV4
dF9yZXNldChpbXBsLT5pbWZDb250ZXh0KTsKKyAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfZm9j
dXNfaW4oaW1wbC0+aW1mQ29udGV4dCk7CisgICAgICAgIGltcGwtPmlzSW1mRm9jdXNlZCA9IHRy
dWU7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFwcml2LT5pc0ltZkZvY3VzZWQpCisgICAg
ICAgIGlmICghaW1wbC0+aXNJbWZGb2N1c2VkKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIGlmIChlZGl0b3IuaGFzQ29tcG9zaXRpb24pCi0gICAgICAgICAgICBwcml2LT5wYWdlUHJv
eHktPmNhbmNlbENvbXBvc2l0aW9uKCk7CisgICAgICAgICAgICBpbXBsLT5wYWdlUHJveHktPmNh
bmNlbENvbXBvc2l0aW9uKCk7CiAKLSAgICAgICAgcHJpdi0+aXNJbWZGb2N1c2VkID0gZmFsc2U7
Ci0gICAgICAgIGVjb3JlX2ltZl9jb250ZXh0X3Jlc2V0KHByaXYtPmltZkNvbnRleHQpOwotICAg
ICAgICBlY29yZV9pbWZfY29udGV4dF9mb2N1c19vdXQocHJpdi0+aW1mQ29udGV4dCk7CisgICAg
ICAgIGltcGwtPmlzSW1mRm9jdXNlZCA9IGZhbHNlOworICAgICAgICBlY29yZV9pbWZfY29udGV4
dF9yZXNldChpbXBsLT5pbWZDb250ZXh0KTsKKyAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfZm9j
dXNfb3V0KGltcGwtPmltZkNvbnRleHQpOwogICAgIH0KIH0KIAotLyoqCi0gKiBAaW50ZXJuYWwK
LSAqIFRoZSB2aWV3IHRpdGxlIHdhcyBjaGFuZ2VkIGJ5IHRoZSBmcmFtZSBsb2FkZXIuCi0gKgot
ICogRW1pdHMgc2lnbmFsOiAidGl0bGUsY2hhbmdlZCIgd2l0aCBwb2ludGVyIHRvIG5ldyB0aXRs
ZSBzdHJpbmcuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfdGl0bGVfY2hhbmdlZChFdmFzX09iamVjdCog
ZXdrVmlldywgY29uc3QgY2hhciogdGl0bGUpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfY2FsbChld2tWaWV3LCAidGl0bGUsY2hhbmdlZCIsIGNvbnN0X2Nhc3Q8Y2hhcio+KHRp
dGxlKSk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKi8KLXZvaWQgZXdrX3ZpZXdfdG9vbHRp
cF90ZXh0X3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdGV4dCkKLXsKLSAg
ICBpZiAodGV4dCAmJiAqdGV4dCkKLSAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
Y2FsbChld2tWaWV3LCAidG9vbHRpcCx0ZXh0LHNldCIsIGNvbnN0X2Nhc3Q8Y2hhcio+KHRleHQp
KTsKLSAgICBlbHNlCi0gICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdr
VmlldywgInRvb2x0aXAsdGV4dCx1bnNldCIsIDApOwotfQotCiBkb3VibGUgZXdrX3ZpZXdfbG9h
ZF9wcm9ncmVzc19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIC0xLjApOwotICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIC0xLjApOworICAgIEVXS19W
SUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIC0xLjApOwogCi0gICAgcmV0
dXJuIHByaXYtPnBhZ2VQcm94eS0+ZXN0aW1hdGVkUHJvZ3Jlc3MoKTsKKyAgICByZXR1cm4gaW1w
bC0+cGFnZVByb3h5LT5lc3RpbWF0ZWRQcm9ncmVzcygpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfc2NhbGVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBkb3VibGUgc2NhbGVGYWN0b3IsIGlu
dCB4LCBpbnQgeSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIGZhbHNlKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBwcml2LT5wYWdlUHJveHktPnNjYWxlUGFnZShzY2Fs
ZUZhY3RvciwgSW50UG9pbnQoeCwgeSkpOworICAgIGltcGwtPnBhZ2VQcm94eS0+c2NhbGVQYWdl
KHNjYWxlRmFjdG9yLCBJbnRQb2ludCh4LCB5KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGRv
dWJsZSBld2tfdmlld19zY2FsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIC0xKTsKLSAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAtMSk7CisgICAg
RVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgLTEpOwogCi0gICAg
cmV0dXJuIHByaXYtPnBhZ2VQcm94eS0+cGFnZVNjYWxlRmFjdG9yKCk7CisgICAgcmV0dXJuIGlt
cGwtPnBhZ2VQcm94eS0+cGFnZVNjYWxlRmFjdG9yKCk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmll
d19kZXZpY2VfcGl4ZWxfcmF0aW9fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBmbG9hdCByYXRp
bykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
ZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IGZhbHNlKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBs
LCBmYWxzZSk7CiAKLSAgICBwcml2LT5wYWdlUHJveHktPnNldEN1c3RvbURldmljZVNjYWxlRmFj
dG9yKHJhdGlvKTsKKyAgICBpbXBsLT5wYWdlUHJveHktPnNldEN1c3RvbURldmljZVNjYWxlRmFj
dG9yKHJhdGlvKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTE2MiwxNDggKzk3OCwzMCBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX3NldChFdmFzX09iamVjdCog
ZXdrVmlldywgZmxvYXQgcmF0aW8pCiBmbG9hdCBld2tfdmlld19kZXZpY2VfcGl4ZWxfcmF0aW9f
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAtMS4wKTsKLSAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAtMS4wKTsKLQotICAgIHJldHVybiBwcml2LT5w
YWdlUHJveHktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0g
KiBSZXBvcnRzIGxvYWQgcHJvZ3Jlc3MgY2hhbmdlZC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJs
b2FkLHByb2dyZXNzIiB3aXRoIHBvaW50ZXIgdG8gYSBkb3VibGUgZnJvbSAwLjAgdG8gMS4wLgot
ICovCi12b2lkIGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfY2hhbmdlZChFdmFzX09iamVjdCogZXdr
VmlldywgZG91YmxlIHByb2dyZXNzKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwoZXdrVmlldywgImxvYWQscHJvZ3Jlc3MiLCAmcHJvZ3Jlc3MpOwotfQorICAgIEVXS19W
SUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIC0xLjApOwogCi0vKioKLSAq
IEBpbnRlcm5hbAotICogVGhlIHZpZXcgcmVjZWl2ZWQgYSBuZXcgaW50ZW50IHJlcXVlc3QuCi0g
KgotICogRW1pdHMgc2lnbmFsOiAiaW50ZW50LHJlcXVlc3QsbmV3IiB3aXRoIHBvaW50ZXIgdG8g
YSBFd2tfSW50ZW50LgotICovCi12b2lkIGV3a192aWV3X2ludGVudF9yZXF1ZXN0X25ldyhFdmFz
X09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0ludGVudCogZXdrSW50ZW50KQotewotI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3
a1ZpZXcsICJpbnRlbnQscmVxdWVzdCxuZXciLCBjb25zdF9jYXN0PEV3a19JbnRlbnQqPihld2tJ
bnRlbnQpKTsKLSNlbmRpZgorICAgIHJldHVybiBpbXBsLT5wYWdlUHJveHktPmRldmljZVNjYWxl
RmFjdG9yKCk7CiB9CiAKIHZvaWQgZXdrX3ZpZXdfdGhlbWVfc2V0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBjb25zdCBjaGFyKiBwYXRoKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2KTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBpbXBsKTsKIAotICAgIGlmIChwcml2LT50aGVtZSAhPSBwYXRoKSB7Ci0gICAgICAgIHByaXYt
PnRoZW1lID0gcGF0aDsKLSAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5zZXRUaGVtZVBhdGgocGF0
aCk7CisgICAgaWYgKGltcGwtPnRoZW1lICE9IHBhdGgpIHsKKyAgICAgICAgaW1wbC0+dGhlbWUg
PSBwYXRoOworICAgICAgICBpbXBsLT5wYWdlUHJveHktPnNldFRoZW1lUGF0aChwYXRoKTsKICAg
ICB9CiB9CiAKIGNvbnN0IGNoYXIqIGV3a192aWV3X3RoZW1lX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgMCk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdiwgMCk7Ci0KLSAgICByZXR1cm4gcHJpdi0+dGhlbWU7Ci19Ci0KLXZvaWQgZXdrX3ZpZXdf
Y3Vyc29yX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgQ3Vyc29yJiBjdXJzb3IpCi17
Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwotCi0gICAgY29u
c3QgY2hhciogZ3JvdXAgPSBjdXJzb3IucGxhdGZvcm1DdXJzb3IoKTsKLSAgICBpZiAoIWdyb3Vw
IHx8IGdyb3VwID09IHByaXYtPmN1cnNvckdyb3VwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBw
cml2LT5jdXJzb3JHcm91cCA9IGdyb3VwOwotICAgIHByaXYtPmN1cnNvck9iamVjdCA9IGFkb3B0
UmVmKGVkamVfb2JqZWN0X2FkZChzbWFydERhdGEtPmJhc2UuZXZhcykpOwotCi0gICAgRWNvcmVf
RXZhcyogZWNvcmVFdmFzID0gZWNvcmVfZXZhc19lY29yZV9ldmFzX2dldChzbWFydERhdGEtPmJh
c2UuZXZhcyk7Ci0gICAgaWYgKCFwcml2LT50aGVtZSB8fCAhZWRqZV9vYmplY3RfZmlsZV9zZXQo
cHJpdi0+Y3Vyc29yT2JqZWN0LmdldCgpLCBwcml2LT50aGVtZSwgZ3JvdXApKSB7Ci0gICAgICAg
IHByaXYtPmN1cnNvck9iamVjdC5jbGVhcigpOwotCi0gICAgICAgIGVjb3JlX2V2YXNfb2JqZWN0
X2N1cnNvcl9zZXQoZWNvcmVFdmFzLCAwLCAwLCAwLCAwKTsKLSNpZmRlZiBIQVZFX0VDT1JFX1gK
LSAgICAgICAgaWYgKHByaXYtPmlzVXNpbmdFY29yZVgpCi0gICAgICAgICAgICBXZWJDb3JlOjph
cHBseUZhbGxiYWNrQ3Vyc29yKGVjb3JlRXZhcywgZ3JvdXApOwotI2VuZGlmCi0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBFdmFzX0Nvb3JkIHdpZHRoLCBoZWlnaHQ7Ci0gICAgZWRqZV9v
YmplY3Rfc2l6ZV9taW5fZ2V0KHByaXYtPmN1cnNvck9iamVjdC5nZXQoKSwgJndpZHRoLCAmaGVp
Z2h0KTsKLSAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkKLSAgICAgICAgZWRqZV9v
YmplY3Rfc2l6ZV9taW5fY2FsYyhwcml2LT5jdXJzb3JPYmplY3QuZ2V0KCksICZ3aWR0aCwgJmhl
aWdodCk7Ci0gICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDApIHsKLSAgICAgICAgd2lk
dGggPSBkZWZhdWx0Q3Vyc29yU2l6ZTsKLSAgICAgICAgaGVpZ2h0ID0gZGVmYXVsdEN1cnNvclNp
emU7Ci0gICAgfQotICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShwcml2LT5jdXJzb3JPYmplY3QuZ2V0
KCksIHdpZHRoLCBoZWlnaHQpOwotCi0gICAgY29uc3QgY2hhciogZGF0YTsKLSAgICBpbnQgaG90
c3BvdFggPSAwOwotICAgIGRhdGEgPSBlZGplX29iamVjdF9kYXRhX2dldChwcml2LT5jdXJzb3JP
YmplY3QuZ2V0KCksICJob3QueCIpOwotICAgIGlmIChkYXRhKQotICAgICAgICBob3RzcG90WCA9
IGF0b2koZGF0YSk7Ci0KLSAgICBpbnQgaG90c3BvdFkgPSAwOwotICAgIGRhdGEgPSBlZGplX29i
amVjdF9kYXRhX2dldChwcml2LT5jdXJzb3JPYmplY3QuZ2V0KCksICJob3QueSIpOwotICAgIGlm
IChkYXRhKQotICAgICAgICBob3RzcG90WSA9IGF0b2koZGF0YSk7Ci0KLSAgICBlY29yZV9ldmFz
X29iamVjdF9jdXJzb3Jfc2V0KGVjb3JlRXZhcywgcHJpdi0+Y3Vyc29yT2JqZWN0LmdldCgpLCBF
VkFTX0xBWUVSX01BWCwgaG90c3BvdFgsIGhvdHNwb3RZKTsKLX0KLQotdm9pZCBld2tfdmlld19k
aXNwbGF5KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBpZiAo
IXNtYXJ0RGF0YS0+aW1hZ2UpCi0gICAgICAgIHJldHVybjsKLQotI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBw
cml2KTsKLQotICAgIGV2YXNfZ2xfbWFrZV9jdXJyZW50KHByaXYtPmV2YXNHbCwgcHJpdi0+ZXZh
c0dsU3VyZmFjZSwgcHJpdi0+ZXZhc0dsQ29udGV4dCk7Ci0gICAgcHJpdi0+cGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudC0+ZGlzcGxheShyZWN0LCBJbnRQb2ludChzbWFydERhdGEtPnZpZXcu
eCwgc21hcnREYXRhLT52aWV3LnkpKTsKLSNlbmRpZgorICAgIEVXS19WSUVXX0lNUExfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIGltcGwsIDApOwogCi0gICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0
YV91cGRhdGVfYWRkKHNtYXJ0RGF0YS0+aW1hZ2UsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICByZXR1cm4gaW1wbC0+dGhlbWU7CiB9CiAKLSNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0vKioKLSAqIEBpbnRlcm5hbAotICogQ2FsbHMgZnVs
bHNjcmVlbl9lbnRlciBjYWxsYmFjayBvciBmYWxscyBiYWNrIHRvIGRlZmF1bHQgYmVoYXZpb3Ig
YW5kIGVuYWJsZXMgZnVsbHNjcmVlbiBtb2RlLgotICovCi12b2lkIGV3a192aWV3X2Z1bGxfc2Ny
ZWVuX2VudGVyKEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLQotICAgIGlmICghc21hcnREYXRhLT5hcGkt
PmZ1bGxzY3JlZW5fZW50ZXIgfHwgIXNtYXJ0RGF0YS0+YXBpLT5mdWxsc2NyZWVuX2VudGVyKHNt
YXJ0RGF0YSkpIHsKLSAgICAgICAgRWNvcmVfRXZhcyogZWNvcmVFdmFzID0gZWNvcmVfZXZhc19l
Y29yZV9ldmFzX2dldChzbWFydERhdGEtPmJhc2UuZXZhcyk7Ci0gICAgICAgIGVjb3JlX2V2YXNf
ZnVsbHNjcmVlbl9zZXQoZWNvcmVFdmFzLCB0cnVlKTsKLSAgICB9Ci19Ci0KLS8qKgotICogQGlu
dGVybmFsCi0gKiBDYWxscyBmdWxsc2NyZWVuX2V4aXQgY2FsbGJhY2sgb3IgZmFsbHMgYmFjayB0
byBkZWZhdWx0IGJlaGF2aW9yIGFuZCBkaXNhYmxlcyBmdWxsc2NyZWVuIG1vZGUuCi0gKi8KLXZv
aWQgZXdrX3ZpZXdfZnVsbF9zY3JlZW5fZXhpdChFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0KLSAgICBp
ZiAoIXNtYXJ0RGF0YS0+YXBpLT5mdWxsc2NyZWVuX2V4aXQgfHwgIXNtYXJ0RGF0YS0+YXBpLT5m
dWxsc2NyZWVuX2V4aXQoc21hcnREYXRhKSkgewotICAgICAgICBFY29yZV9FdmFzKiBlY29yZUV2
YXMgPSBlY29yZV9ldmFzX2Vjb3JlX2V2YXNfZ2V0KHNtYXJ0RGF0YS0+YmFzZS5ldmFzKTsKLSAg
ICAgICAgZWNvcmVfZXZhc19mdWxsc2NyZWVuX3NldChlY29yZUV2YXMsIGZhbHNlKTsKLSAgICB9
Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAvKioKICAqIEBpbnRlcm5h
bApAQCAtMTMyMSw1NyArMTAxOSwxMiBAQCB1bnNpZ25lZCBsb25nIGxvbmcgZXdrX3ZpZXdfZGF0
YWJhc2VfcXVvdGFfZXhjZWVkZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0CiB9CiAjZW5k
aWYKIAotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIEEgZG93bmxvYWQgZm9yIHRoYXQgdmlldyB3YXMg
Y2FuY2VsbGVkLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImRvd25sb2FkLGNhbmNlbGxlZCIgd2l0
aCBwb2ludGVyIHRvIGEgRXdrX0Rvd25sb2FkX0pvYi4KLSAqLwotdm9pZCBld2tfdmlld19kb3du
bG9hZF9qb2JfY2FuY2VsbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWRfSm9i
KiBkb3dubG9hZCkKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1Zp
ZXcsICJkb3dubG9hZCxjYW5jZWxsZWQiLCBkb3dubG9hZCk7Ci19Ci0KLS8qKgotICogQGludGVy
bmFsCi0gKiBBIG5ldyBkb3dubG9hZCBoYXMgYmVlbiByZXF1ZXN0ZWQgZm9yIHRoYXQgdmlldy4K
LSAqCi0gKiBFbWl0cyBzaWduYWw6ICJkb3dubG9hZCxyZXF1ZXN0IiB3aXRoIHBvaW50ZXIgdG8g
YSBFd2tfRG93bmxvYWRfSm9iLgotICovCi12b2lkIGV3a192aWV3X2Rvd25sb2FkX2pvYl9yZXF1
ZXN0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9hZF9Kb2IqIGRvd25sb2FkKQot
ewotICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJkb3dubG9h
ZCxyZXF1ZXN0IiwgZG93bmxvYWQpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogQSBkb3du
bG9hZCBmb3IgdGhhdCB2aWV3IGhhcyBmYWlsZWQuCi0gKgotICogRW1pdHMgc2lnbmFsOiAiZG93
bmxvYWQsZmFpbGVkIiB3aXRoIHBvaW50ZXIgdG8gYSBFd2tfRG93bmxvYWRfSm9iX0Vycm9yLgot
ICovCi12b2lkIGV3a192aWV3X2Rvd25sb2FkX2pvYl9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEV3a19Eb3dubG9hZF9Kb2IqIGRvd25sb2FkLCBFd2tfRXJyb3IqIGVycm9yKQotewotICAg
IEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IgZG93bmxvYWRFcnJvciA9IHsgZG93bmxvYWQsIGVycm9y
IH07Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAiZG93bmxv
YWQsZmFpbGVkIiwgJmRvd25sb2FkRXJyb3IpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICog
QSBkb3dubG9hZCBmb3IgdGhhdCB2aWV3IGZpbmlzaGVkIHN1Y2Nlc3NmdWxseS4KLSAqCi0gKiBF
bWl0cyBzaWduYWw6ICJkb3dubG9hZCxmaW5pc2hlZCIgd2l0aCBwb2ludGVyIHRvIGEgRXdrX0Rv
d25sb2FkX0pvYi4KLSAqLwotdm9pZCBld2tfdmlld19kb3dubG9hZF9qb2JfZmluaXNoZWQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9hZF9Kb2IqIGRvd25sb2FkKQotewotICAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJkb3dubG9hZCxmaW5pc2hl
ZCIsIGRvd25sb2FkKTsKLX0KLQogRWluYV9Cb29sIGV3a192aWV3X2JhY2soRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgV2ViUGFnZVByb3h5KiBwYWdlID0gcHJpdi0+cGFnZVBy
b3h5LmdldCgpOworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IGltcGwtPnBhZ2VQcm94eS5nZXQo
KTsKICAgICBpZiAocGFnZS0+Y2FuR29CYWNrKCkpIHsKICAgICAgICAgcGFnZS0+Z29CYWNrKCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTM4Myw5ICsxMDM2LDkgQEAgRWluYV9Cb29sIGV3
a192aWV3X2JhY2soRXZhc19PYmplY3QqIGV3a1ZpZXcpCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfZm9y
d2FyZChFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBXZWJQYWdlUHJveHkqIHBh
Z2UgPSBwcml2LT5wYWdlUHJveHkuZ2V0KCk7CisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gaW1w
bC0+cGFnZVByb3h5LmdldCgpOwogICAgIGlmIChwYWdlLT5jYW5Hb0ZvcndhcmQoKSkgewogICAg
ICAgICBwYWdlLT5nb0ZvcndhcmQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzk4LDEw
ICsxMDUxLDEwIEBAIEVpbmFfQm9vbCBld2tfdmlld19pbnRlbnRfZGVsaXZlcihFdmFzX09iamVj
dCogZXdrVmlldywgRXdrX0ludGVudCogaW50ZW50KQogewogI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFs
c2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZh
bHNlKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBm
YWxzZSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGludGVudCwgZmFsc2Up
OwogCi0gICAgV2ViUGFnZVByb3h5KiBwYWdlID0gcHJpdi0+cGFnZVByb3h5LmdldCgpOworICAg
IFdlYlBhZ2VQcm94eSogcGFnZSA9IGltcGwtPnBhZ2VQcm94eS5nZXQoKTsKICAgICBwYWdlLT5k
ZWxpdmVySW50ZW50VG9GcmFtZShwYWdlLT5tYWluRnJhbWUoKSwgaW50ZW50LT53ZWJJbnRlbnRE
YXRhKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDEzLDE5OCArMTA2Niw0MiBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfaW50ZW50X2RlbGl2ZXIoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19J
bnRlbnQqIGludGVudCkKIEVpbmFfQm9vbCBld2tfdmlld19iYWNrX3Bvc3NpYmxlKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIGltcGwsIGZhbHNlKTsKIAotICAgIHJldHVybiBwcml2LT5wYWdlUHJveHktPmNhbkdv
QmFjaygpOworICAgIHJldHVybiBpbXBsLT5wYWdlUHJveHktPmNhbkdvQmFjaygpOwogfQogCiBF
aW5hX0Jvb2wgZXdrX3ZpZXdfZm9yd2FyZF9wb3NzaWJsZShFdmFzX09iamVjdCogZXdrVmlldykK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFs
c2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZh
bHNlKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBm
YWxzZSk7CiAKLSAgICByZXR1cm4gcHJpdi0+cGFnZVByb3h5LT5jYW5Hb0ZvcndhcmQoKTsKKyAg
ICByZXR1cm4gaW1wbC0+cGFnZVByb3h5LT5jYW5Hb0ZvcndhcmQoKTsKIH0KIAogRXdrX0JhY2tf
Rm9yd2FyZF9MaXN0KiBld2tfdmlld19iYWNrX2ZvcndhcmRfbGlzdF9nZXQoY29uc3QgRXZhc19P
YmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIDApOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIDApOwotCi0gICAgcmV0dXJuIHByaXYtPmJhY2tGb3J3YXJkTGlzdC5nZXQoKTsK
LX0KLQotdm9pZCBld2tfdmlld19pbWFnZV9kYXRhX3NldChFdmFzX09iamVjdCogZXdrVmlldywg
dm9pZCogaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQotewotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBpZiAoIWltYWdlRGF0YSB8
fCAhc21hcnREYXRhLT5pbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZXZhc19vYmplY3Rf
cmVzaXplKHNtYXJ0RGF0YS0+aW1hZ2UsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0g
ICAgZXZhc19vYmplY3RfaW1hZ2Vfc2l6ZV9zZXQoc21hcnREYXRhLT5pbWFnZSwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpKTsKLSAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX2NvcHlfc2V0
KHNtYXJ0RGF0YS0+aW1hZ2UsIGltYWdlRGF0YSk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0g
KiBSZXBvcnRzIHRoYXQgYSBmb3JtIHJlcXVlc3QgaXMgYWJvdXQgdG8gYmUgc3VibWl0dGVkLgot
ICoKLSAqIEVtaXRzIHNpZ25hbDogImZvcm0sc3VibWlzc2lvbixyZXF1ZXN0IiB3aXRoIHBvaW50
ZXIgdG8gRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0LgotICovCi12b2lkIGV3a192aWV3X2Zv
cm1fc3VibWlzc2lvbl9yZXF1ZXN0X25ldyhFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Zvcm1f
U3VibWlzc2lvbl9SZXF1ZXN0KiByZXF1ZXN0KQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwoZXdrVmlldywgImZvcm0sc3VibWlzc2lvbixyZXF1ZXN0IiwgcmVxdWVzdCk7
Ci19CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgMCk7
CiAKLS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIGxvYWQgZmFpbGVkIHdpdGggZXJyb3Ig
aW5mb3JtYXRpb24uCi0gKgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxlcnJvciIgd2l0aCBwb2lu
dGVyIHRvIEV3a19FcnJvci4KLSAqLwotdm9pZCBld2tfdmlld19sb2FkX2Vycm9yKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRXJyb3IqIGVycm9yKQotewotICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImxvYWQsZXJyb3IiLCBjb25zdF9jYXN0PEV3
a19FcnJvcio+KGVycm9yKSk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIGxv
YWQgZmluaXNoZWQuCi0gKgotICogRW1pdHMgc2lnbmFsOiAibG9hZCxmaW5pc2hlZCIuCi0gKi8K
LXZvaWQgZXdrX3ZpZXdfbG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAg
ICBld2tfdmlld191cmxfdXBkYXRlKGV3a1ZpZXcpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwoZXdrVmlldywgImxvYWQsZmluaXNoZWQiLCAwKTsKLX0KLQotLyoqCi0gKiBA
aW50ZXJuYWwKLSAqIFJlcG9ydHMgdmlldyBwcm92aXNpb25hbCBsb2FkIGZhaWxlZCB3aXRoIGVy
cm9yIGluZm9ybWF0aW9uLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvdmlzaW9uYWws
ZmFpbGVkIiB3aXRoIHBvaW50ZXIgdG8gRXdrX0Vycm9yLgotICovCi12b2lkIGV3a192aWV3X2xv
YWRfcHJvdmlzaW9uYWxfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRXJy
b3IqIGVycm9yKQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmll
dywgImxvYWQscHJvdmlzaW9uYWwsZmFpbGVkIiwgY29uc3RfY2FzdDxFd2tfRXJyb3IqPihlcnJv
cikpOwotfQotCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi12b2lkIGV3a192aWV3X2xv
YWRfY29tbWl0dGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKLQotICAgIHByaXYtPnBhZ2VWaWV3cG9ydENvbnRy
b2xsZXItPmRpZENvbW1pdExvYWQoKTsKLX0KLSNlbmRpZgotCi0vKioKLSAqIEBpbnRlcm5hbAot
ICogUmVwb3J0cyB2aWV3IHJlY2VpdmVkIHJlZGlyZWN0IGZvciBwcm92aXNpb25hbCBsb2FkLgot
ICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvdmlzaW9uYWwscmVkaXJlY3QiLgotICovCi12
b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfcmVkaXJlY3QoRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCi17Ci0gICAgZXdrX3ZpZXdfdXJsX3VwZGF0ZShld2tWaWV3KTsKLSAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsLHJlZGlyZWN0
IiwgMCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRzIHZpZXcgcHJvdmlzaW9u
YWwgbG9hZCBzdGFydGVkLgotICoKLSAqIEVtaXRzIHNpZ25hbDogImxvYWQscHJvdmlzaW9uYWws
c3RhcnRlZCIuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9zdGFydGVkKEV2
YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIGV3a192aWV3X3VybF91cGRhdGUoZXdrVmlldyk7
Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAibG9hZCxwcm92
aXNpb25hbCxzdGFydGVkIiwgMCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBSZXBvcnRz
IHRoYXQgdGhlIHZpZXcncyBiYWNrIC8gZm9yd2FyZCBsaXN0IGhhcyBjaGFuZ2VkLgotICoKLSAq
IEVtaXRzIHNpZ25hbDogImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLgotICovCi12b2lkIGV3
a192aWV3X2JhY2tfZm9yd2FyZF9saXN0X2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17
Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAiYmFjayxmb3J3
YXJkLGxpc3QsY2hhbmdlZCIsIDApOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogVXBkYXRl
IHRoZSB2aWV3J3MgZmF2aWNvbiBhbmQgZW1pdHMgYSAiaWNvbixjaGFuZ2VkIiBzaWduYWwgaWYg
aXQgaGFzCi0gKiBjaGFuZ2VkLgotICoKLSAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW5l
dmVyIHRoZSBVUkwgaGFzIGNoYW5nZWQgb3Igd2hlbiB0aGUgaWNvbiBmb3IKLSAqIHRoZSBjdXJy
ZW50IHBhZ2UgVVJMIGhhcyBjaGFuZ2VkLgotICovCi12b2lkIGV3a192aWV3X3VwZGF0ZV9pY29u
KEV2YXNfT2JqZWN0KiBld2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2KTsKLQotICAgIEV3a19GYXZpY29uX0RhdGFiYXNlKiBpY29uRGF0YWJhc2Ug
PSBwcml2LT5jb250ZXh0LT5mYXZpY29uRGF0YWJhc2UoKTsKLSAgICBBU1NFUlQoaWNvbkRhdGFi
YXNlKTsKLQotICAgIHByaXYtPmZhdmljb25VUkwgPSBld2tfZmF2aWNvbl9kYXRhYmFzZV9pY29u
X3VybF9nZXQoaWNvbkRhdGFiYXNlLCBwcml2LT51cmwpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImljb24sY2hhbmdlZCIsIDApOwotfQotCi0vKioKLSAq
IEBpbnRlcm5hbAotICogUmVwb3J0cyB0aGF0IGEgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24g
c2hvdWxkIGJlIHRha2VuLgotICoKLSAqIEVtaXRzIHNpZ25hbDogInBvbGljeSxkZWNpc2lvbixu
YXZpZ2F0aW9uIi4KLSAqLwotdm9pZCBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lv
bihFdmFzX09iamVjdCogZXdrVmlldywgRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBk
ZWNpc2lvbikKLXsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcs
ICJwb2xpY3ksZGVjaXNpb24sbmF2aWdhdGlvbiIsIGRlY2lzaW9uKTsKLX0KLQotLyoqCi0gKiBA
aW50ZXJuYWwKLSAqIFJlcG9ydHMgdGhhdCBhIG5ldyB3aW5kb3cgcG9saWN5IGRlY2lzaW9uIHNo
b3VsZCBiZSB0YWtlbi4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJwb2xpY3ksZGVjaXNpb24sbmV3
LHdpbmRvdyIuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfbmV3X3dpbmRvd19wb2xpY3lfZGVjaXNpb24o
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZGVj
aXNpb24pCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAi
cG9saWN5LGRlY2lzaW9uLG5ldyx3aW5kb3ciLCBkZWNpc2lvbik7CisgICAgcmV0dXJuIGltcGwt
PmJhY2tGb3J3YXJkTGlzdC5nZXQoKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X2h0bWxfc3Ry
aW5nX2xvYWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIGh0bWwsIGNvbnN0IGNo
YXIqIGJhc2VVcmwsIGNvbnN0IGNoYXIqIHVucmVhY2hhYmxlVXJsKQogewogICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVXS19W
SUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaHRtbCwgZmFsc2UpOwogCiAgICAgaWYgKHVucmVh
Y2hhYmxlVXJsICYmICp1bnJlYWNoYWJsZVVybCkKLSAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5s
b2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KGh0bWwpLCBiYXNlVXJsID8g
U3RyaW5nOjpmcm9tVVRGOChiYXNlVXJsKSA6ICIiLCBTdHJpbmc6OmZyb21VVEY4KHVucmVhY2hh
YmxlVXJsKSk7CisgICAgICAgIGltcGwtPnBhZ2VQcm94eS0+bG9hZEFsdGVybmF0ZUhUTUxTdHJp
bmcoU3RyaW5nOjpmcm9tVVRGOChodG1sKSwgYmFzZVVybCA/IFN0cmluZzo6ZnJvbVVURjgoYmFz
ZVVybCkgOiAiIiwgU3RyaW5nOjpmcm9tVVRGOCh1bnJlYWNoYWJsZVVybCkpOwogICAgIGVsc2UK
LSAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5sb2FkSFRNTFN0cmluZyhTdHJpbmc6OmZyb21VVEY4
KGh0bWwpLCBiYXNlVXJsID8gU3RyaW5nOjpmcm9tVVRGOChiYXNlVXJsKSA6ICIiKTsKKyAgICAg
ICAgaW1wbC0+cGFnZVByb3h5LT5sb2FkSFRNTFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KGh0bWwp
LCBiYXNlVXJsID8gU3RyaW5nOjpmcm9tVVRGOChiYXNlVXJsKSA6ICIiKTsKICAgICBld2tfdmll
d191cmxfdXBkYXRlKGV3a1ZpZXcpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBFTkFC
TEUoV0VCX0lOVEVOVFNfVEFHKQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFRoZSB2aWV3IHJlY2Vp
dmVkIGEgbmV3IGludGVudCBzZXJ2aWNlIHJlZ2lzdHJhdGlvbi4KLSAqCi0gKiBFbWl0cyBzaWdu
YWw6ICJpbnRlbnQsc2VydmljZSxyZWdpc3RlciIgd2l0aCBwb2ludGVyIHRvIGEgRXdrX0ludGVu
dF9TZXJ2aWNlLgotICovCi12b2lkIGV3a192aWV3X2ludGVudF9zZXJ2aWNlX3JlZ2lzdGVyKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfSW50ZW50X1NlcnZpY2UqIGV3a0ludGVudFNl
cnZpY2UpCi17Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAi
aW50ZW50LHNlcnZpY2UscmVnaXN0ZXIiLCBjb25zdF9jYXN0PEV3a19JbnRlbnRfU2VydmljZSo+
KGV3a0ludGVudFNlcnZpY2UpKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFNfVEFH
KQotCiBjb25zdCBFdmFzX09iamVjdCogZXdrX3ZpZXdfZnJvbV9wYWdlX2dldChjb25zdCBXZWJL
aXQ6OldlYlBhZ2VQcm94eSogcGFnZSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwocGFnZSwgMCk7CkBAIC0xNjEyLDM1ICsxMTA5LDI3IEBAIGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tfdmlld19mcm9tX3BhZ2VfZ2V0KGNvbnN0IFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdl
KQogICAgIHJldHVybiBwYWdlVmlld01hcCgpLmdldChwYWdlKTsKIH0KIAotV2ViUGFnZVByb3h5
KiBld2tfdmlld19wYWdlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgMCk7Ci0KLSAgICByZXR1
cm4gcHJpdi0+cGFnZVByb3h5LmdldCgpOwotfQotCiBjb25zdCBjaGFyKiBld2tfdmlld19zZXR0
aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwotICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOworICAgIEVX
S19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIDApOwogCi0gICAgU3Ry
aW5nIGN1c3RvbUVuY29kaW5nID0gcHJpdi0+cGFnZVByb3h5LT5jdXN0b21UZXh0RW5jb2RpbmdO
YW1lKCk7CisgICAgU3RyaW5nIGN1c3RvbUVuY29kaW5nID0gaW1wbC0+cGFnZVByb3h5LT5jdXN0
b21UZXh0RW5jb2RpbmdOYW1lKCk7CiAgICAgaWYgKGN1c3RvbUVuY29kaW5nLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBwcml2LT5jdXN0b21FbmNvZGluZyA9IGN1c3RvbUVu
Y29kaW5nLnV0ZjgoKS5kYXRhKCk7CisgICAgaW1wbC0+Y3VzdG9tRW5jb2RpbmcgPSBjdXN0b21F
bmNvZGluZy51dGY4KCkuZGF0YSgpOwogCi0gICAgcmV0dXJuIHByaXYtPmN1c3RvbUVuY29kaW5n
OworICAgIHJldHVybiBpbXBsLT5jdXN0b21FbmNvZGluZzsKIH0KIAogRWluYV9Cb29sIGV3a192
aWV3X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29u
c3QgY2hhciogZW5jb2RpbmcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgcHJpdi0+Y3VzdG9tRW5jb2RpbmcgPSBl
bmNvZGluZzsKLSAgICBwcml2LT5wYWdlUHJveHktPnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUo
ZW5jb2RpbmcgPyBlbmNvZGluZyA6IFN0cmluZygpKTsKKyAgICBpbXBsLT5jdXN0b21FbmNvZGlu
ZyA9IGVuY29kaW5nOworICAgIGltcGwtPnBhZ2VQcm94eS0+c2V0Q3VzdG9tVGV4dEVuY29kaW5n
TmFtZShlbmNvZGluZyA/IGVuY29kaW5nIDogU3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0xNjU4LDcgKzExNDcsMTAgQEAgV0tQYWdlUmVmIGV3a192aWV3X3BhZ2VfY3JlYXRl
KEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIGlmICghbmV3RXdrVmlldykKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V0tQYWdlUmVmPihXS1JldGFpbihld2tf
dmlld19wYWdlX2dldChuZXdFd2tWaWV3KSkpOworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obmV3RXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgbmV3aW1wbCwgZmFsc2UpOworCisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFdLUGFnZVJlZj4oV0tSZXRhaW4obmV3aW1wbC0+cGFnZSgpKSk7CiB9CiAKIC8vIEV3
a0ZpbmRPcHRpb25zIHNob3VsZCBiZSBtYXRjaGVkIHVwIG9yZGVycyB3aXRoIFdrRmluZE9wdGlv
bnMuCkBAIC0xNjc0LDEwICsxMTY2LDEwIEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX0ZJTkRfT1BUSU9OU19TSE9XX0hJR0hMSUdIVCwga1dLRmluZE9wdGlvbnNTaG93CiBFaW5h
X0Jvb2wgZXdrX3ZpZXdfdGV4dF9maW5kKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFy
KiB0ZXh0LCBFd2tfRmluZF9PcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZh
bHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBm
YWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwg
ZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0ZXh0LCBmYWxzZSk7
CiAKLSAgICBwcml2LT5wYWdlUHJveHktPmZpbmRTdHJpbmcoU3RyaW5nOjpmcm9tVVRGOCh0ZXh0
KSwgc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4ob3B0aW9ucyksIG1heE1hdGNoQ291
bnQpOworICAgIGltcGwtPnBhZ2VQcm94eS0+ZmluZFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KHRl
eHQpLCBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPihvcHRpb25zKSwgbWF4TWF0Y2hD
b3VudCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE2ODUsOSArMTE3Nyw5IEBAIEVpbmFf
Qm9vbCBld2tfdmlld190ZXh0X2ZpbmQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIq
IHRleHQsIEV3a19GaW5kX09wCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9maW5kX2hpZ2hsaWdo
dF9jbGVhcihFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFV0tfVklFV19JTVBMX0dF
VF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICBwcml2LT5wYWdlUHJv
eHktPmhpZGVGaW5kVUkoKTsKKyAgICBpbXBsLT5wYWdlUHJveHktPmhpZGVGaW5kVUkoKTsKIAog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTY5NSwxMCArMTE4NywxMCBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfdGV4dF9maW5kX2hpZ2hsaWdodF9jbGVhcihFdmFzX09iamVjdCogZXdrVmlldykKIEVp
bmFfQm9vbCBld2tfdmlld190ZXh0X21hdGNoZXNfY291bnQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGNvbnN0IGNoYXIqIHRleHQsIEV3a19GaW5kX09wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4
TWF0Y2hDb3VudCkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIGZhbHNlKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBpbXBsLCBmYWxzZSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHRl
eHQsIGZhbHNlKTsKIAotICAgIHByaXYtPnBhZ2VQcm94eS0+Y291bnRTdHJpbmdNYXRjaGVzKFN0
cmluZzo6ZnJvbVVURjgodGV4dCksIHN0YXRpY19jYXN0PFdlYktpdDo6RmluZE9wdGlvbnM+KG9w
dGlvbnMpLCBtYXhNYXRjaENvdW50KTsKKyAgICBpbXBsLT5wYWdlUHJveHktPmNvdW50U3RyaW5n
TWF0Y2hlcyhTdHJpbmc6OmZyb21VVEY4KHRleHQpLCBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRP
cHRpb25zPihvcHRpb25zKSwgbWF4TWF0Y2hDb3VudCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTE3MDcsOSArMTE5OSw5IEBAIHZvaWQgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9jaGFuZ2Vk
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBJbnRTaXplJiBzCiB7CiAjaWYgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2KTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBp
bXBsKTsKIAotICAgIHByaXYtPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPmRpZENoYW5n
ZUNvbnRlbnRzU2l6ZShzaXplKTsKKyAgICBpbXBsLT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50LT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShld2tWaWV3KTsKICAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CkBAIC0xNzIyLDcgKzEyMTQsNyBA
QCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19URVhUX0RJUkVDVElPTl9MRUZUX1RP
X1JJR0hULCBMVFIpOwogdm9pZCBld2tfdmlld19wb3B1cF9tZW51X3JlcXVlc3QoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIFdlYlBvcHVwTWVudVByb3h5RWZsKiBwb3B1cE1lbnUsIGNvbnN0IEludFJl
Y3QmIHJlY3QsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZh
Y3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVk
SW5kZXgpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwor
ICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwpOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKIAogICAgIEFTU0VSVChw
b3B1cE1lbnUpOwpAQCAtMTczMCwxNSArMTIyMiwxNSBAQCB2b2lkIGV3a192aWV3X3BvcHVwX21l
bnVfcmVxdWVzdChFdmFzX09iamVjdCogZXdrVmlldywgV2ViUG9wdXBNZW51UHJveHlFZmwqIHBv
cAogICAgIGlmICghc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfc2hvdykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKHByaXYtPnBvcHVwTWVudVByb3h5KQorICAgIGlmIChpbXBsLT5wb3B1
cE1lbnVQcm94eSkKICAgICAgICAgZXdrX3ZpZXdfcG9wdXBfbWVudV9jbG9zZShld2tWaWV3KTsK
LSAgICBwcml2LT5wb3B1cE1lbnVQcm94eSA9IHBvcHVwTWVudTsKKyAgICBpbXBsLT5wb3B1cE1l
bnVQcm94eSA9IHBvcHVwTWVudTsKIAogICAgIEVpbmFfTGlzdCogcG9wdXBJdGVtcyA9IDA7CiAg
ICAgc2l6ZV90IHNpemUgPSBpdGVtcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpCiAgICAgICAgIHBvcHVwSXRlbXMgPSBlaW5hX2xpc3RfYXBwZW5kKHBvcHVw
SXRlbXMsIEV3a19Qb3B1cF9NZW51X0l0ZW06OmNyZWF0ZShpdGVtc1tpXSkubGVha1B0cigpKTsK
LSAgICBwcml2LT5wb3B1cE1lbnVJdGVtcyA9IHBvcHVwSXRlbXM7CisgICAgaW1wbC0+cG9wdXBN
ZW51SXRlbXMgPSBwb3B1cEl0ZW1zOwogCiAgICAgc21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVf
c2hvdyhzbWFydERhdGEsIHJlY3QsIHN0YXRpY19jYXN0PEV3a19UZXh0X0RpcmVjdGlvbj4odGV4
dERpcmVjdGlvbiksIHBhZ2VTY2FsZUZhY3RvciwgcG9wdXBJdGVtcywgc2VsZWN0ZWRJbmRleCk7
CiB9CkBAIC0xNzQ2LDE5ICsxMjM4LDE5IEBAIHZvaWQgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1
ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wCiBFaW5h
X0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9jbG9zZShFdmFzX09iamVjdCogZXdrVmlldykKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2Up
OwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNl
KTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxz
ZSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBm
YWxzZSk7CiAKLSAgICBpZiAoIXByaXYtPnBvcHVwTWVudVByb3h5KQorICAgIGlmICghaW1wbC0+
cG9wdXBNZW51UHJveHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHByaXYtPnBvcHVw
TWVudVByb3h5ID0gMDsKKyAgICBpbXBsLT5wb3B1cE1lbnVQcm94eSA9IDA7CiAKICAgICBpZiAo
c21hcnREYXRhLT5hcGktPnBvcHVwX21lbnVfaGlkZSkKICAgICAgICAgc21hcnREYXRhLT5hcGkt
PnBvcHVwX21lbnVfaGlkZShzbWFydERhdGEpOwogCiAgICAgdm9pZCogaXRlbTsKLSAgICBFSU5B
X0xJU1RfRlJFRShwcml2LT5wb3B1cE1lbnVJdGVtcywgaXRlbSkKKyAgICBFSU5BX0xJU1RfRlJF
RShpbXBsLT5wb3B1cE1lbnVJdGVtcywgaXRlbSkKICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0
PEV3a19Qb3B1cF9NZW51X0l0ZW0qPihpdGVtKTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtMTc2
NywxMyArMTI1OSwxMyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfbWVudV9jbG9zZShFdmFz
X09iamVjdCogZXdrVmlldykKIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9tZW51X3NlbGVjdChF
dmFzX09iamVjdCogZXdrVmlldywgdW5zaWduZWQgaW50IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7Ci0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYtPnBvcHVwTWVudVByb3h5LCBm
YWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwg
ZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpbXBsLT5wb3B1cE1l
bnVQcm94eSwgZmFsc2UpOwogCi0gICAgaWYgKHNlbGVjdGVkSW5kZXggPj0gZWluYV9saXN0X2Nv
dW50KHByaXYtPnBvcHVwTWVudUl0ZW1zKSkKKyAgICBpZiAoc2VsZWN0ZWRJbmRleCA+PSBlaW5h
X2xpc3RfY291bnQoaW1wbC0+cG9wdXBNZW51SXRlbXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBwcml2LT5wb3B1cE1lbnVQcm94eS0+dmFsdWVDaGFuZ2VkKHNlbGVjdGVkSW5kZXgp
OworICAgIGltcGwtPnBvcHVwTWVudVByb3h5LT52YWx1ZUNoYW5nZWQoc2VsZWN0ZWRJbmRleCk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE3ODEsMTMgKzEyNzMsMTMgQEAgRWluYV9Cb29s
IGV3a192aWV3X3BvcHVwX21lbnVfc2VsZWN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1bnNpZ25l
ZCBpbnQgc2VsZWN0ZWQKIEVpbmFfQm9vbCBld2tfdmlld19tb3VzZV9ldmVudHNfZW5hYmxlZF9z
ZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGVkKQogewogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOworICAgIEVX
S19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKIAogICAg
IGVuYWJsZWQgPSAhIWVuYWJsZWQ7Ci0gICAgaWYgKHByaXYtPmFyZU1vdXNlRXZlbnRzRW5hYmxl
ZCA9PSBlbmFibGVkKQorICAgIGlmIChpbXBsLT5hcmVNb3VzZUV2ZW50c0VuYWJsZWQgPT0gZW5h
YmxlZCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBwcml2LT5hcmVNb3VzZUV2ZW50c0Vu
YWJsZWQgPSBlbmFibGVkOworICAgIGltcGwtPmFyZU1vdXNlRXZlbnRzRW5hYmxlZCA9IGVuYWJs
ZWQ7CiAgICAgaWYgKGVuYWJsZWQpIHsKICAgICAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJh
Y2tfYWRkKGV3a1ZpZXcsIEVWQVNfQ0FMTEJBQ0tfTU9VU0VfRE9XTiwgX2V3a192aWV3X29uX21v
dXNlX2Rvd24sIHNtYXJ0RGF0YSk7CiAgICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNr
X2FkZChld2tWaWV3LCBFVkFTX0NBTExCQUNLX01PVVNFX1VQLCBfZXdrX3ZpZXdfb25fbW91c2Vf
dXAsIHNtYXJ0RGF0YSk7CkBAIC0xODA0LDkgKzEyOTYsOSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdf
bW91c2VfZXZlbnRzX2VuYWJsZWRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wg
ZW5hYgogRWluYV9Cb29sIGV3a192aWV3X21vdXNlX2V2ZW50c19lbmFibGVkX2dldChjb25zdCBF
dmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICByZXR1cm4gcHJpdi0+YXJlTW91c2VF
dmVudHNFbmFibGVkOworICAgIHJldHVybiBpbXBsLT5hcmVNb3VzZUV2ZW50c0VuYWJsZWQ7CiB9
CiAKIC8qKgpAQCAtMTgxOCwxMyArMTMxMCwxMyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfbW91c2Vf
ZXZlbnRzX2VuYWJsZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogdm9pZCBld2tf
dmlld193ZWJwcm9jZXNzX2NyYXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworICAgIEVXS19WSUVXX0lNUExf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwpOwogCiAgICAgYm9vbCBoYW5kbGVkID0gZmFs
c2U7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAid2VicHJv
Y2VzcyxjcmFzaGVkIiwgJmhhbmRsZWQpOwogCiAgICAgaWYgKCFoYW5kbGVkKSB7Ci0gICAgICAg
IENTdHJpbmcgdXJsID0gcHJpdi0+cGFnZVByb3h5LT51cmxBdFByb2Nlc3NFeGl0KCkudXRmOCgp
OworICAgICAgICBDU3RyaW5nIHVybCA9IGltcGwtPnBhZ2VQcm94eS0+dXJsQXRQcm9jZXNzRXhp
dCgpLnV0ZjgoKTsKICAgICAgICAgV0FSTigiV0FSTklORzogVGhlIHdlYiBwcm9jZXNzIGV4cGVy
aWVuY2VkIGEgY3Jhc2ggb24gJyVzJy5cbiIsIHVybC5kYXRhKCkpOwogCiAgICAgICAgIC8vIERp
c3BsYXkgYW4gZXJyb3IgcGFnZQpAQCAtMTg3Nyw0OSArMTM2OSwxNyBAQCBXS0VpbmFTaGFyZWRT
dHJpbmcgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBjb25zdCBXSwogICAgIHJldHVybiBXS0VpbmFTaGFyZWRTdHJpbmc6OmFkb3B0KHNtYXJ0RGF0
YS0+YXBpLT5ydW5famF2YXNjcmlwdF9wcm9tcHQoc21hcnREYXRhLCBtZXNzYWdlLCBkZWZhdWx0
VmFsdWUpKTsKIH0KIAotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotLyoqCi0gKiBAaW50
ZXJuYWwKLSAqIFJlcXVlc3RzIHRvIHNob3cgZXh0ZXJuYWwgY29sb3IgcGlja2VyLgotICovCi12
b2lkIGV3a192aWV3X2NvbG9yX3BpY2tlcl9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBp
bnQgciwgaW50IGcsIGludCBiLCBpbnQgYSwgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVm
IGxpc3RlbmVyKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
KTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+aW5wdXRf
cGlja2VyX2NvbG9yX3JlcXVlc3QpOwotCi0gICAgcHJpdi0+Y29sb3JQaWNrZXJSZXN1bHRMaXN0
ZW5lciA9IGxpc3RlbmVyOwotCi0gICAgc21hcnREYXRhLT5hcGktPmlucHV0X3BpY2tlcl9jb2xv
cl9yZXF1ZXN0KHNtYXJ0RGF0YSwgciwgZywgYiwgYSk7Ci19Ci0KLS8qKgotICogQGludGVybmFs
Ci0gKiBSZXF1ZXN0cyB0byBoaWRlIGV4dGVybmFsIGNvbG9yIHBpY2tlci4KLSAqLwotdm9pZCBl
d2tfdmlld19jb2xvcl9waWNrZXJfZGlzbWlzcyhFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPmlucHV0X3BpY2tlcl9jb2xvcl9kaXNt
aXNzKTsKLQotICAgIHByaXYtPmNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuY2xlYXIoKTsKLQot
ICAgIHNtYXJ0RGF0YS0+YXBpLT5pbnB1dF9waWNrZXJfY29sb3JfZGlzbWlzcyhzbWFydERhdGEp
OwotfQotI2VuZGlmCi0KIEVpbmFfQm9vbCBld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKIHsKICNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwocHJpdi0+Y29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lciwgZmFsc2UpOworICAgIEVX
S19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaW1wbC0+Y29sb3JQaWNrZXJSZXN1bHRMaXN0
ZW5lciwgZmFsc2UpOwogCiAgICAgV2ViQ29yZTo6Q29sb3IgY29sb3IgPSBXZWJDb3JlOjpDb2xv
cihyLCBnLCBiLCBhKTsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gY29sb3JTdHJpbmco
QWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoY29sb3Iuc2VyaWFsaXplZCgp
LnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJTZXRDb2xv
cihwcml2LT5jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmdldCgpLCBjb2xvclN0cmluZy5nZXQo
KSk7Ci0gICAgcHJpdi0+Y29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5jbGVhcigpOworICAgIFdL
Q29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclNldENvbG9yKGltcGwtPmNvbG9yUGlja2VyUmVzdWx0
TGlzdGVuZXIuZ2V0KCksIGNvbG9yU3RyaW5nLmdldCgpKTsKKyAgICBpbXBsLT5jb2xvclBpY2tl
clJlc3VsdExpc3RlbmVyLmNsZWFyKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCkBAIC0x
OTMyLDEyICsxMzkyLDEyIEBAIEVpbmFfQm9vbCBld2tfdmlld19mZWVkX3RvdWNoX2V2ZW50KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfVG91Y2hfRXZlbnRfVHlwZSB0CiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocG9pbnRzLCBm
YWxzZSk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2
LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1w
bCwgZmFsc2UpOwogCiAgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHsgc21hcnREYXRhLT52aWV3
LngsIHNtYXJ0RGF0YS0+dmlldy55IH07CiAgICAgLy8gRklYTUU6IFRvdWNoIHBvaW50cyBkbyBu
b3QgdGFrZSBzY3JvbGwgcG9zaXRpb24gYW5kIHNjYWxlIGludG8gYWNjb3VudCB3aGVuIAogICAg
IC8vIFRJTEVEX0JBQ0tJTkdfU1RPUkUgaXMgZW5hYmxlZC4KLSAgICBwcml2LT5wYWdlUHJveHkt
PmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudCh0eXBlLCBwb2ludHMsIG1vZGlm
aWVycywgJnBvc2l0aW9uLCBlY29yZV90aW1lX2dldCgpKSk7CisgICAgaW1wbC0+cGFnZVByb3h5
LT5oYW5kbGVUb3VjaEV2ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBtb2Rp
ZmllcnMsICZwb3NpdGlvbiwgZWNvcmVfdGltZV9nZXQoKSkpOwogCiAgICAgcmV0dXJuIHRydWU7
CiAjZWxzZQpAQCAtMTk0OSwxMyArMTQwOSwxMyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdG91Y2hf
ZXZlbnRzX2VuYWJsZWRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYgog
ewogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogCiAgICAgZW5hYmxlZCA9ICEhZW5hYmxl
ZDsKLSAgICBpZiAocHJpdi0+YXJlVG91Y2hFdmVudHNFbmFibGVkID09IGVuYWJsZWQpCisgICAg
aWYgKGltcGwtPmFyZVRvdWNoRXZlbnRzRW5hYmxlZCA9PSBlbmFibGVkKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIHByaXYtPmFyZVRvdWNoRXZlbnRzRW5hYmxlZCA9IGVuYWJsZWQ7Cisg
ICAgaW1wbC0+YXJlVG91Y2hFdmVudHNFbmFibGVkID0gZW5hYmxlZDsKICAgICBpZiAoZW5hYmxl
ZCkgewogICAgICAgICAvLyBGSVhNRTogV2UgaGF2ZSB0byBjb25uZWN0IHRvdWNoIGNhbGxiYWNr
cyB3aXRoIG1vdXNlIGFuZCBtdWx0aSBldmVudHMKICAgICAgICAgLy8gYmVjYXVzZSB0aGUgRXZh
cyBjcmVhdGVzIG1vdXNlIGV2ZW50cyBmb3IgZmlyc3QgdG91Y2ggYW5kIG11bHRpIGV2ZW50cwpA
QCAtMTk4Nyw5ICsxNDQ3LDkgQEAgRWluYV9Cb29sIGV3a192aWV3X3RvdWNoX2V2ZW50c19lbmFi
bGVkX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgZmFsc2UpOworICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGlt
cGwsIGZhbHNlKTsKIAotICAgIHJldHVybiBwcml2LT5hcmVUb3VjaEV2ZW50c0VuYWJsZWQ7Cisg
ICAgcmV0dXJuIGltcGwtPmFyZVRvdWNoRXZlbnRzRW5hYmxlZDsKICNlbHNlCiAgICAgcmV0dXJu
IGZhbHNlOwogI2VuZGlmCkBAIC0xOTk5LDkgKzE0NTksOSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdf
aW5zcGVjdG9yX3Nob3coRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
ZmFsc2UpOwotICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IGZhbHNlKTsKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBs
LCBmYWxzZSk7CiAKLSAgICBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVjdG9yID0gcHJpdi0+cGFn
ZVByb3h5LT5pbnNwZWN0b3IoKTsKKyAgICBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVjdG9yID0g
aW1wbC0+cGFnZVByb3h5LT5pbnNwZWN0b3IoKTsKICAgICBpZiAoaW5zcGVjdG9yKQogICAgICAg
ICBpbnNwZWN0b3ItPnNob3coKTsKIApAQCAtMjAxNSw5ICsxNDc1LDkgQEAgRWluYV9Cb29sIGV3
a192aWV3X2luc3BlY3Rvcl9jbG9zZShFdmFzX09iamVjdCogZXdrVmlldykKIHsKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdiwgZmFsc2UpOworICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIGltcGwsIGZhbHNlKTsKIAotICAgIFdlYkluc3BlY3RvclByb3h5KiBpbnNwZWN0b3IgPSBw
cml2LT5wYWdlUHJveHktPmluc3BlY3RvcigpOworICAgIFdlYkluc3BlY3RvclByb3h5KiBpbnNw
ZWN0b3IgPSBpbXBsLT5wYWdlUHJveHktPmluc3BlY3RvcigpOwogICAgIGlmIChpbnNwZWN0b3Ip
CiAgICAgICAgIGluc3BlY3Rvci0+Y2xvc2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IGJhZWQ1ZjkuLmNmYmVi
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
d19wcml2YXRlLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgZXdrX3ZpZXdfcHJpdmF0ZV9o
CiAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJld2tfdmlldy5oIgogI2lu
Y2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxXS0VpbmFTaGFyZWRTdHJpbmcuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RleHREaXJlY3Rpb24uaD4KQEAgLTI5LDcgKzMwLDYgQEAKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEN1cnNvcjsKIGNsYXNz
IEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogfQpAQCAtNTMsNjQgKzUzLDE1IEBAIHR5cGVkZWYg
c3RydWN0IEV3a19JbnRlbnQgRXdrX0ludGVudDsKIHR5cGVkZWYgc3RydWN0IEV3a19JbnRlbnRf
U2VydmljZSBFd2tfSW50ZW50X1NlcnZpY2U7CiAjZW5kaWYKIAotdm9pZCBld2tfdmlld19jdXJz
b3Jfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpDdXJzb3ImIGN1cnNv
cik7Ci12b2lkIGV3a192aWV3X2Rpc3BsYXkoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHJlY3QpOwotdm9pZCBld2tfdmlld19kb3dubG9hZF9qb2JfY2FuY2Vs
bGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWRfSm9iKik7Ci12b2lkIGV3a192
aWV3X2Rvd25sb2FkX2pvYl9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9h
ZF9Kb2IqLCBFd2tfRXJyb3IqKTsKLXZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfam9iX2ZpbmlzaGVk
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93bmxvYWRfSm9iKik7Ci12b2lkIGV3a192aWV3
X2Rvd25sb2FkX2pvYl9yZXF1ZXN0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Eb3dubG9h
ZF9Kb2IqKTsKLXZvaWQgZXdrX3ZpZXdfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfbmV3KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3QqKTsKLSNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCi12b2lkIGV3a192aWV3X2Z1bGxfc2NyZWVuX2VudGVyKEV2YXNf
T2JqZWN0KiBld2tWaWV3KTsKLXZvaWQgZXdrX3ZpZXdfZnVsbF9zY3JlZW5fZXhpdChFdmFzX09i
amVjdCogZXdrVmlldyk7Ci0jZW5kaWYKLXZvaWQgZXdrX3ZpZXdfaW1hZ2VfZGF0YV9zZXQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2l6ZSk7Ci12b2lkIGV3a192aWV3X2xvYWRfZXJyb3IoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGNvbnN0IEV3a19FcnJvciogZXJyb3IpOwotdm9pZCBld2tfdmlld19sb2FkX2ZpbmlzaGVkKEV2
YXNfT2JqZWN0KiBld2tWaWV3KTsKLXZvaWQgZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19jaGFuZ2Vk
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBkb3VibGUgcHJvZ3Jlc3MpOwotdm9pZCBld2tfdmlld19s
b2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0Vy
cm9yKiBlcnJvcik7Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi12b2lkIGV3a192aWV3
X2xvYWRfY29tbWl0dGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLSNlbmRpZgotdm9pZCBld2tf
dmlld19sb2FkX3Byb3Zpc2lvbmFsX3JlZGlyZWN0KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLXZv
aWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9zdGFydGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3
KTsKLXZvaWQgZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZGVjaXNpb24pOwotdm9p
ZCBld2tfdmlld19uZXdfd2luZG93X3BvbGljeV9kZWNpc2lvbihFdmFzX09iamVjdCogZXdrVmll
dywgRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbik7CiB2b2lkIGV3a192
aWV3X3BhZ2VfY2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogV0tQYWdlUmVmIGV3a192aWV3
X3BhZ2VfY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLXZvaWQgZXdrX3ZpZXdfdGl0bGVf
Y2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdGl0bGUpOwotdm9pZCBl
d2tfdmlld190b29sdGlwX3RleHRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFy
KiB0ZXh0KTsKLXZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19FcnJvciogZXJyb3IpOwotdm9p
ZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBF
d2tfUmVzb3VyY2UqIHJlc291cmNlKTsKLXZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0
aWF0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19V
cmxfUmVxdWVzdCogcmVxdWVzdCk7Ci12b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfcmVzcG9u
c2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19Vcmxf
UmVzcG9uc2UqIHJlc3BvbnNlKTsKLXZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfcmVxdWVzdF9zZW50
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfUmVzb3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1Jl
cXVlc3QqIHJlcXVlc3QsIEV3a19VcmxfUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2UpOwotdm9p
ZCBld2tfdmlld190ZXh0X2ZvdW5kKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1bnNpZ25lZCBpbnQg
bWF0Y2hDb3VudCk7CiB2b2lkIGV3a192aWV3X3RleHRfaW5wdXRfc3RhdGVfdXBkYXRlKEV2YXNf
T2JqZWN0KiBld2tWaWV3KTsKIHZvaWQgZXdrX3ZpZXdfdXJsX3VwZGF0ZShFdmFzX09iamVjdCog
ZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X2NvbnRlbnRzX3NpemVfY2hhbmdlZChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwotdm9pZCBld2tfdmll
d19iYWNrX2ZvcndhcmRfbGlzdF9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLXZvaWQg
ZXdrX3ZpZXdfdXBkYXRlX2ljb24oRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotCi1XS1BhZ2VSZWYg
ZXdrX3ZpZXdfd2twYWdlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7CiAKIEV2YXNf
T2JqZWN0KiBld2tfdmlld19iYXNlX2FkZChFdmFzKiBjYW52YXMsIFdLQ29udGV4dFJlZiwgV0tQ
YWdlR3JvdXBSZWYpOwogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotdm9pZCBld2tfdmlld19p
bnRlbnRfcmVxdWVzdF9uZXcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19JbnRlbnQq
IGV3a0ludGVudCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotdm9pZCBl
d2tfdmlld19pbnRlbnRfc2VydmljZV9yZWdpc3RlcihFdmFzX09iamVjdCogZXdrVmlldywgY29u
c3QgRXdrX0ludGVudF9TZXJ2aWNlKiBld2tJbnRlbnRTZXJ2aWNlKTsKLSNlbmRpZgotCiBjb25z
dCBFdmFzX09iamVjdCogZXdrX3ZpZXdfZnJvbV9wYWdlX2dldChjb25zdCBXZWJLaXQ6OldlYlBh
Z2VQcm94eSopOwotV2ViS2l0OjpXZWJQYWdlUHJveHkqIGV3a192aWV3X3BhZ2VfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLVdlYkNvcmU6OkludFNpemUgZXdrX3ZpZXdfc2l6ZV9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQotYm9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19tb2RlX2Vu
dGVyKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLWJvb2wgZXdrX3ZpZXdfYWNjZWxlcmF0
ZWRfY29tcG9zaXRpbmdfbW9kZV9leGl0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLSNl
bmRpZgogCiB2b2lkIGV3a192aWV3X3BvcHVwX21lbnVfcmVxdWVzdChFdmFzX09iamVjdCogZXdr
VmlldywgV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51LCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZh
Y3RvciwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qg
c2VsZWN0ZWRJbmRleCk7CiB2b2lkIGV3a192aWV3X3dlYnByb2Nlc3NfY3Jhc2hlZChFdmFzX09i
amVjdCogZXdrVmlldyk7CkBAIC0xMTksMTEgKzcwLDYgQEAgdm9pZCBld2tfdmlld19ydW5famF2
YXNjcmlwdF9hbGVydChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV0tFaW5hU2hhcmVkU3Ry
aW4KIGJvb2wgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfY29uZmlybShFdmFzX09iamVjdCogZXdr
VmlldywgY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBtZXNzYWdlKTsKIFdLRWluYVNoYXJlZFN0
cmluZyBld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgbWVzc2FnZSwgY29uc3QgV0tFaW5hU2hhcmVkU3Ry
aW5nJiBkZWZhdWx0VmFsdWUpOwogCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi12b2lk
IGV3a192aWV3X2NvbG9yX3BpY2tlcl9yZXF1ZXN0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQg
ciwgaW50IGcsIGludCBiLCBpbnQgYSwgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGxp
c3RlbmVyKTsKLXZvaWQgZXdrX3ZpZXdfY29sb3JfcGlja2VyX2Rpc21pc3MoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogdW5zaWduZWQg
bG9uZyBsb25nIGV3a192aWV3X2RhdGFiYXNlX3F1b3RhX2V4Y2VlZGVkKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjb25zdCBjaGFyKiBkYXRhYmFzZU5hbWUsIGNvbnN0IGNoYXIqIGRpc3BsYXlOYW1l
LCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3Vy
cmVudE9yaWdpblVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudERhdGFiYXNlVXNhZ2Us
IHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKaW5kZXgg
NGQ5OGY5Zi4uNzFmNDhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Nh
aXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8
Y2Fpcm8uaD4KIAogI2lmIFBMQVRGT1JNKEVGTCkKLSNpbmNsdWRlICJld2tfdmlld19wcml2YXRl
LmgiCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKQEAgLTcxLDcgKzcxLDggQEAgdm9pZCBCYWNraW5nU3RvcmU6OmluY29ycG9yYXRl
VXBkYXRlKFNoYXJlYWJsZUJpdG1hcCogYml0bWFwLCBjb25zdCBVcGRhdGVJbmZvJgogCiAjaWYg
UExBVEZPUk0oRUZMKQogICAgIC8vIFVwZGF0ZSBld2tfdmlldyB3aXRoIG5ldyBiYWNraW5nU3Rv
cmUgaW1hZ2UuCi0gICAgZXdrX3ZpZXdfaW1hZ2VfZGF0YV9zZXQobV93ZWJQYWdlUHJveHktPnZp
ZXdXaWRnZXQoKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShtX2JhY2tpbmdTdG9yZS0+
Y2Fpcm9TdXJmYWNlKCkpLCBtX3NpemUpOworICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IEV3
a1ZpZXdJbXBsOjpmcm9tRXZhc09iamVjdChtX3dlYlBhZ2VQcm94eS0+dmlld1dpZGdldCgpKTsK
KyAgICB2aWV3SW1wbC0+c2V0SW1hZ2VEYXRhKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEo
bV9iYWNraW5nU3RvcmUtPmNhaXJvU3VyZmFjZSgpKSwgbV9zaXplKTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVm
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5j
cHAKaW5kZXggNzJhN2EwYy4uNWYzNTliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcApAQCAtMjcsMTEgKzI3LDExIEBACiAj
aW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyRWZsLmgiCiAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
LmgiCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKICNpbmNsdWRlICJXS0NvbnRleHQuaCIKICNp
bmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNp
bmNsdWRlICJld2tfZXJyb3JfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUu
aCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgV0tTdHJpbmdSZWYg
RG93bmxvYWRNYW5hZ2VyRWZsOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShXS0NvbnRleHQKIAogICAgIC8vIFdlIHNlbmQgdGhlIG5ldyBkb3dubG9hZCBzaWduYWwgb24g
dGhlIEV3a19WaWV3IG9ubHkgb25jZSB3ZSBoYXZlIHJlY2VpdmVkIHRoZSByZXNwb25zZQogICAg
IC8vIGFuZCB0aGUgc3VnZ2VzdGVkIGZpbGUgbmFtZS4KLSAgICBld2tfdmlld19kb3dubG9hZF9q
b2JfcmVxdWVzdGVkKGRvd25sb2FkLT52aWV3KCksIGRvd25sb2FkKTsKKyAgICBkb3dubG9hZC0+
dmlld0ltcGwoKS0+aW5mb3JtRG93bmxvYWRKb2JSZXF1ZXN0ZWQoZG93bmxvYWQpOwogCiAgICAg
Ly8gRG93bmxvYWRTb3VwIGV4cGVjdHMgdGhlIGRlc3RpbmF0aW9uIHRvIGJlIGEgVVJMLgogICAg
IFN0cmluZyBkZXN0aW5hdGlvbiA9IEFTQ0lJTGl0ZXJhbCgiZmlsZTovLyIpICsgU3RyaW5nOjpm
cm9tVVRGOChkb3dubG9hZC0+ZGVzdGluYXRpb24oKSk7CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQg
RG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiB3
a0Rvd25sb2FkLCBXS0Vycm9yCiAKICAgICBPd25QdHI8RXdrX0Vycm9yPiBld2tFcnJvciA9IEV3
a19FcnJvcjo6Y3JlYXRlKGVycm9yKTsKICAgICBkb3dubG9hZC0+c2V0U3RhdGUoRVdLX0RPV05M
T0FEX0pPQl9TVEFURV9GQUlMRUQpOwotICAgIGV3a192aWV3X2Rvd25sb2FkX2pvYl9mYWlsZWQo
ZG93bmxvYWQtPnZpZXcoKSwgZG93bmxvYWQsIGV3a0Vycm9yLmdldCgpKTsKKyAgICBkb3dubG9h
ZC0+dmlld0ltcGwoKS0+aW5mb3JtRG93bmxvYWRKb2JGYWlsZWQoZG93bmxvYWQsIGV3a0Vycm9y
LmdldCgpKTsKICAgICBkb3dubG9hZE1hbmFnZXItPnVucmVnaXN0ZXJEb3dubG9hZEpvYihkb3du
bG9hZElkKTsKIH0KIApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyRWZs
OjpkaWRDYW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIHdrRG93bmxvYWQsIGNvbnN0
CiAgICAgQVNTRVJUKGRvd25sb2FkKTsKIAogICAgIGRvd25sb2FkLT5zZXRTdGF0ZShFV0tfRE9X
TkxPQURfSk9CX1NUQVRFX0NBTkNFTExFRCk7Ci0gICAgZXdrX3ZpZXdfZG93bmxvYWRfam9iX2Nh
bmNlbGxlZChkb3dubG9hZC0+dmlldygpLCBkb3dubG9hZCk7CisgICAgZG93bmxvYWQtPnZpZXdJ
bXBsKCktPmluZm9ybURvd25sb2FkSm9iQ2FuY2VsbGVkKGRvd25sb2FkKTsKICAgICBkb3dubG9h
ZE1hbmFnZXItPnVucmVnaXN0ZXJEb3dubG9hZEpvYihkb3dubG9hZElkKTsKIH0KIApAQCAtMTEy
LDcgKzExMiw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRGaW5pc2goV0tDb250ZXh0
UmVmLCBXS0Rvd25sb2FkUmVmIHdrRG93bmxvYWQsIGNvbnN0CiAgICAgQVNTRVJUKGRvd25sb2Fk
KTsKIAogICAgIGRvd25sb2FkLT5zZXRTdGF0ZShFV0tfRE9XTkxPQURfSk9CX1NUQVRFX0ZJTklT
SEVEKTsKLSAgICBld2tfdmlld19kb3dubG9hZF9qb2JfZmluaXNoZWQoZG93bmxvYWQtPnZpZXco
KSwgZG93bmxvYWQpOworICAgIGRvd25sb2FkLT52aWV3SW1wbCgpLT5pbmZvcm1Eb3dubG9hZEpv
YkZpbmlzaGVkKGRvd25sb2FkKTsKICAgICBkb3dubG9hZE1hbmFnZXItPnVucmVnaXN0ZXJEb3du
bG9hZEpvYihkb3dubG9hZElkKTsKIH0KIApAQCAtMTM1LDEzICsxMzUsMTMgQEAgRG93bmxvYWRN
YW5hZ2VyRWZsOjpEb3dubG9hZE1hbmFnZXJFZmwoRXdrX0NvbnRleHQqIGNvbnRleHQpCiAgICAg
V0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4dC0+d2tDb250ZXh0KCksICZ3a0Rvd25s
b2FkQ2xpZW50KTsKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXJFZmw6OnJlZ2lzdGVyRG93bmxv
YWQoRG93bmxvYWRQcm94eSogZG93bmxvYWQsIEV2YXNfT2JqZWN0KiB2aWV3KQordm9pZCBEb3du
bG9hZE1hbmFnZXJFZmw6OnJlZ2lzdGVyRG93bmxvYWQoRG93bmxvYWRQcm94eSogZG93bmxvYWQs
IEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKIHsKICAgICB1aW50NjRfdCBkb3dubG9hZElkID0gZG93
bmxvYWQtPmRvd25sb2FkSUQoKTsKICAgICBpZiAobV9kb3dubG9hZEpvYnMuY29udGFpbnMoZG93
bmxvYWRJZCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxFd2tfRG93bmxvYWRfSm9i
PiBld2tEb3dubG9hZCA9IEV3a19Eb3dubG9hZF9Kb2I6OmNyZWF0ZShkb3dubG9hZCwgdmlldyk7
CisgICAgUmVmUHRyPEV3a19Eb3dubG9hZF9Kb2I+IGV3a0Rvd25sb2FkID0gRXdrX0Rvd25sb2Fk
X0pvYjo6Y3JlYXRlKGRvd25sb2FkLCB2aWV3SW1wbCk7CiAgICAgbV9kb3dubG9hZEpvYnMuYWRk
KGRvd25sb2FkSWQsIGV3a0Rvd25sb2FkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmgKaW5kZXggYzFmZjQwZC4uNTU2OGRlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJF
ZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVm
bC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBEb3dubG9hZE1hbmFnZXJFZmwoY29udGV4dCkpOwogICAgIH0KIAotICAgIHZvaWQgcmVnaXN0
ZXJEb3dubG9hZChEb3dubG9hZFByb3h5KiwgRXZhc19PYmplY3QqIHZpZXcpOworICAgIHZvaWQg
cmVnaXN0ZXJEb3dubG9hZChEb3dubG9hZFByb3h5KiwgRXdrVmlld0ltcGwqKTsKIAogcHJpdmF0
ZToKICAgICBEb3dubG9hZE1hbmFnZXJFZmwoRXdrX0NvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL0ZpbmRDbGllbnRFZmwuY3BwCmluZGV4IDczNTUwNmIuLmQ1Mjli
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVm
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbmRD
bGllbnRFZmwuaCIKIAorI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCiAjaW5jbHVkZSAiV0tQYWdl
LmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogCkBAIC00MCwxOSArNDEsMTkgQEAg
c3RhdGljIGlubGluZSBGaW5kQ2xpZW50RWZsKiB0b0ZpbmRDbGllbnRFZmwoY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKIHZvaWQgRmluZENsaWVudEVmbDo6ZGlkRmluZFN0cmluZyhXS1BhZ2VSZWYs
IFdLU3RyaW5nUmVmLCB1bnNpZ25lZCBtYXRjaENvdW50LCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQogewogICAgIEZpbmRDbGllbnRFZmwqIGZpbmRDbGllbnQgPSB0b0ZpbmRDbGllbnRFZmwoY2xp
ZW50SW5mbyk7Ci0gICAgZXdrX3ZpZXdfdGV4dF9mb3VuZChmaW5kQ2xpZW50LT5tX3ZpZXcsIG1h
dGNoQ291bnQpOworICAgIGZpbmRDbGllbnQtPm1fdmlld0ltcGwtPmluZm9ybVRleHRGb3VuZCht
YXRjaENvdW50KTsKIH0KIAogdm9pZCBGaW5kQ2xpZW50RWZsOjpkaWRGYWlsVG9GaW5kU3RyaW5n
KFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAg
RmluZENsaWVudEVmbCogZmluZENsaWVudCA9IHRvRmluZENsaWVudEVmbChjbGllbnRJbmZvKTsK
LSAgICBld2tfdmlld190ZXh0X2ZvdW5kKGZpbmRDbGllbnQtPm1fdmlldywgMCk7CisgICAgZmlu
ZENsaWVudC0+bV92aWV3SW1wbC0+aW5mb3JtVGV4dEZvdW5kKDApOwogfQogCi1GaW5kQ2xpZW50
RWZsOjpGaW5kQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KQotICAgIDogbV92aWV3KHZpZXcp
CitGaW5kQ2xpZW50RWZsOjpGaW5kQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAg
ICA6IG1fdmlld0ltcGwodmlld0ltcGwpCiB7Ci0gICAgV0tQYWdlUmVmIHBhZ2VSZWYgPSBld2tf
dmlld193a3BhZ2VfZ2V0KG1fdmlldyk7CisgICAgV0tQYWdlUmVmIHBhZ2VSZWYgPSBtX3ZpZXdJ
bXBsLT53a1BhZ2UoKTsKICAgICBBU1NFUlQocGFnZVJlZik7CiAKICAgICBXS1BhZ2VGaW5kQ2xp
ZW50IGZpbmRDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L0ZpbmRDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRmluZENsaWVu
dEVmbC5oCmluZGV4IGIzN2RhZWUuLjI3NDQ2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvRmluZENsaWVudEVmbC5oCkBAIC0zMCwyMiArMzAsMjQgQEAKICNpbmNsdWRlIDxX
ZWJLaXQyL1dLQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKK2NsYXNzIEV3
a1ZpZXdJbXBsOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRmluZENsaWVudEVmbCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RmluZENsaWVudEVmbD4gY3JlYXRlKEV2
YXNfT2JqZWN0KiB2aWV3KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEZpbmRDbGllbnRFZmw+IGNy
ZWF0ZShFd2tWaWV3SW1wbCogdmlld0ltcGwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEZpbmRDbGllbnRFZmwodmlldykpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IEZpbmRDbGllbnRFZmwodmlld0ltcGwpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgRmluZENsaWVudEVmbChFdmFzX09iamVjdCogdmlldyk7CisgICAgZXhwbGljaXQgRmluZENs
aWVudEVmbChFd2tWaWV3SW1wbCopOwogCiAgICAgc3RhdGljIHZvaWQgZGlkRmluZFN0cmluZyhX
S1BhZ2VSZWYsIFdLU3RyaW5nUmVmLCB1bnNpZ25lZCBtYXRjaENvdW50LCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsVG9GaW5kU3RyaW5nKFdLUGFnZVJl
ZiwgV0tTdHJpbmdSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCi0gICAgRXZhc19PYmpl
Y3QqIG1fdmlldzsKKyAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9G
b3JtQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRm9ybUNsaWVu
dEVmbC5jcHAKaW5kZXggNjUwNjIwYS4uZDRmMWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL0Zvcm1DbGllbnRFZmwuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9ybUNsaWVudEVmbC5oIgogCisjaW5jbHVkZSAiRXdr
Vmlld0ltcGwuaCIKICNpbmNsdWRlICJXS1BhZ2UuaCIKICNpbmNsdWRlICJld2tfZm9ybV9zdWJt
aXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIK
QEAgLTQyLDEzICs0MywxMyBAQCB2b2lkIEZvcm1DbGllbnRFZmw6OndpbGxTdWJtaXRGb3JtKFdL
UGFnZVJlZiwgV0tGcmFtZVJlZiAvKmZyYW1lKi8sIFdLRnJhbWVSZWYgLwogICAgIEZvcm1DbGll
bnRFZmwqIGZvcm1DbGllbnQgPSB0b0Zvcm1DbGllbnRFZmwoY2xpZW50SW5mbyk7CiAKICAgICBS
ZWZQdHI8RXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0PiByZXF1ZXN0ID0gRXdrX0Zvcm1fU3Vi
bWlzc2lvbl9SZXF1ZXN0OjpjcmVhdGUodmFsdWVzLCBsaXN0ZW5lcik7Ci0gICAgZXdrX3ZpZXdf
Zm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfbmV3KGZvcm1DbGllbnQtPm1fdmlldywgcmVxdWVzdC5n
ZXQoKSk7CisgICAgZm9ybUNsaWVudC0+bV92aWV3SW1wbC0+aW5mb3JtTmV3Rm9ybVN1Ym1pc3Np
b25SZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogfQogCi1Gb3JtQ2xpZW50RWZsOjpGb3JtQ2xpZW50
RWZsKEV2YXNfT2JqZWN0KiB2aWV3KQotICAgIDogbV92aWV3KHZpZXcpCitGb3JtQ2xpZW50RWZs
OjpGb3JtQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAgICA6IG1fdmlld0ltcGwo
dmlld0ltcGwpCiB7Ci0gICAgV0tQYWdlUmVmIHBhZ2VSZWYgPSBld2tfdmlld193a3BhZ2VfZ2V0
KG1fdmlldyk7CisgICAgV0tQYWdlUmVmIHBhZ2VSZWYgPSBtX3ZpZXdJbXBsLT53a1BhZ2UoKTsK
ICAgICBBU1NFUlQocGFnZVJlZik7CiAKICAgICBXS1BhZ2VGb3JtQ2xpZW50IGZvcm1DbGllbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Zvcm1DbGllbnRFZmwu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5oCmluZGV4IDdl
MjhhMTIuLjY2ZTA2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
Rm9ybUNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRm9ybUNs
aWVudEVmbC5oCkBAIC0yOSwyMSArMjksMjMgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKK2NsYXNzIEV3a1ZpZXdJbXBsOworCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRm9ybUNsaWVudEVmbCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8Rm9ybUNsaWVudEVmbD4gY3JlYXRlKEV2YXNfT2JqZWN0KiB2aWV3
KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEZvcm1DbGllbnRFZmw+IGNyZWF0ZShFd2tWaWV3SW1w
bCogdmlld0ltcGwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZvcm1DbGll
bnRFZmwodmlldykpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZvcm1DbGllbnRFZmwo
dmlld0ltcGwpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgRm9ybUNsaWVudEVm
bChFdmFzX09iamVjdCogdmlldyk7CisgICAgZXhwbGljaXQgRm9ybUNsaWVudEVmbChFd2tWaWV3
SW1wbCopOwogCiAgICAgc3RhdGljIHZvaWQgd2lsbFN1Ym1pdEZvcm0oV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmLCBXS0ZyYW1lUmVmLCBXS0RpY3Rpb25hcnlSZWYgdmFsdWVzLCBXS1R5cGVSZWYgdXNl
ckRhdGEsIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7CiAKLSAgICBFdmFzX09iamVjdCogbV92aWV3OworICAgIEV3a1ZpZXdJbXBsKiBtX3ZpZXdJ
bXBsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuY3BwCmluZGV4IDdjMDQyYzEuLmIwYTQ3
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGll
bnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGll
bnRFZmwuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUGFnZUxvYWRDbGllbnRFZmwuaCIKIAorI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCiAjaW5j
bHVkZSAiV0tGcmFtZS5oIgogI2luY2x1ZGUgIldLUGFnZS5oIgogI2luY2x1ZGUgImV3a19iYWNr
X2ZvcndhcmRfbGlzdF9wcml2YXRlLmgiCkBAIC00NiwzMiArNDcsMzIgQEAgdm9pZCBQYWdlTG9h
ZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tQYWdlUmVmLCBXS1N0cmluZ1Jl
ZiB0aXRsZSwgV0sKICAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gdG9QYWdlTG9hZENsaWVudEVm
bChjbGllbnRJbmZvKS0+dmlldygpOwotICAgIGV3a192aWV3X3RpdGxlX2NoYW5nZWQoZXdrVmll
dywgdG9JbXBsKHRpdGxlKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgRXdrVmlld0lt
cGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+dmlld0ltcGwo
KTsKKyAgICB2aWV3SW1wbC0+aW5mb3JtVGl0bGVDaGFuZ2UodG9JbXBsKHRpdGxlKS0+c3RyaW5n
KCkpOwogfQogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogdm9pZCBQYWdlTG9hZENsaWVudEVm
bDo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tJbnRl
bnREYXRhUmVmIGludGVudCwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewot
ICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZv
KS0+dmlldygpOworICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRF
ZmwoY2xpZW50SW5mbyktPnZpZXdJbXBsKCk7CiAgICAgUmVmUHRyPEV3a19JbnRlbnQ+IGV3a0lu
dGVudCA9IEV3a19JbnRlbnQ6OmNyZWF0ZShpbnRlbnQpOwotICAgIGV3a192aWV3X2ludGVudF9y
ZXF1ZXN0X25ldyhld2tWaWV3LCBld2tJbnRlbnQuZ2V0KCkpOworICAgIHZpZXdJbXBsLT5pbmZv
cm1JbnRlbnRSZXF1ZXN0KGV3a0ludGVudC5nZXQoKSk7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShXRUJfSU5URU5UU19UQUcpCiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpyZWdpc3RlckludGVu
dFNlcnZpY2VGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLSW50ZW50U2VydmljZUlu
Zm9SZWYgc2VydmljZUluZm8sIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
LSAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5m
byktPnZpZXcoKTsKKyAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50
RWZsKGNsaWVudEluZm8pLT52aWV3SW1wbCgpOwogICAgIFJlZlB0cjxFd2tfSW50ZW50X1NlcnZp
Y2U+IGV3a0ludGVudFNlcnZpY2UgPSBFd2tfSW50ZW50X1NlcnZpY2U6OmNyZWF0ZShzZXJ2aWNl
SW5mbyk7Ci0gICAgZXdrX3ZpZXdfaW50ZW50X3NlcnZpY2VfcmVnaXN0ZXIoZXdrVmlldywgZXdr
SW50ZW50U2VydmljZS5nZXQoKSk7CisgICAgdmlld0ltcGwtPmluZm9ybUludGVudFNlcnZpY2VS
ZWdpc3RyYXRpb24oZXdrSW50ZW50U2VydmljZS5nZXQoKSk7CiB9CiAjZW5kaWYKIAogdm9pZCBQ
YWdlTG9hZENsaWVudEVmbDo6ZGlkQ2hhbmdlUHJvZ3Jlc3MoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSB0b1BhZ2VM
b2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3KCk7Ci0gICAgZXdrX3ZpZXdfbG9hZF9wcm9n
cmVzc19jaGFuZ2VkKGV3a1ZpZXcsIFdLUGFnZUdldEVzdGltYXRlZFByb2dyZXNzKHBhZ2UpKTsK
KyAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudElu
Zm8pLT52aWV3SW1wbCgpOworICAgIHZpZXdJbXBsLT5pbmZvcm1Mb2FkUHJvZ3Jlc3MoV0tQYWdl
R2V0RXN0aW1hdGVkUHJvZ3Jlc3MocGFnZSkpOwogfQogCiB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZs
OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5
cGVSZWYgLyp1c2VyRGF0YSovLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtNzksOCArODAs
OCBAQCB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdl
UmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cAogICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1l
KGZyYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSB0
b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3KCk7Ci0gICAgZXdrX3ZpZXdfbG9h
ZF9maW5pc2hlZChld2tWaWV3KTsKKyAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VM
b2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3SW1wbCgpOworICAgIHZpZXdJbXBsLT5pbmZv
cm1Mb2FkRmluaXNoZWQoKTsKIH0KIAogdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkRmFpbExv
YWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRXJyb3JS
ZWYgZXJyb3IsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTg4LDEwICs4
OSwxMCBAQCB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZy
YW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZQogICAgIGlmICghV0tGcmFtZUlzTWFpbkZy
YW1lKGZyYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRXZhc19PYmplY3QqIGV3a1ZpZXcg
PSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3KCk7CisgICAgRXdrVmlld0lt
cGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+dmlld0ltcGwo
KTsKICAgICBPd25QdHI8RXdrX0Vycm9yPiBld2tFcnJvciA9IEV3a19FcnJvcjo6Y3JlYXRlKGVy
cm9yKTsKLSAgICBld2tfdmlld19sb2FkX2Vycm9yKGV3a1ZpZXcsIGV3a0Vycm9yLmdldCgpKTsK
LSAgICBld2tfdmlld19sb2FkX2ZpbmlzaGVkKGV3a1ZpZXcpOworICAgIHZpZXdJbXBsLT5pbmZv
cm1Mb2FkRXJyb3IoZXdrRXJyb3IuZ2V0KCkpOworICAgIHZpZXdJbXBsLT5pbmZvcm1Mb2FkRmlu
aXNoZWQoKTsKIH0KIAogdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiAvKnVz
ZXJEYXRhKi8sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC05OSw4ICsxMDAsOCBAQCB2b2lk
IFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFn
ZVJlZiwgV0tGcmFtZVJlZiBmcgogICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSB0b1BhZ2VMb2Fk
Q2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3KCk7Ci0gICAgZXdrX3ZpZXdfbG9hZF9wcm92aXNp
b25hbF9zdGFydGVkKGV3a1ZpZXcpOworICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFn
ZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXdJbXBsKCk7CisgICAgdmlld0ltcGwtPmlu
Zm9ybVByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKTsKIH0KIAogdm9pZCBQYWdlTG9hZENsaWVudEVm
bDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQ
YWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgLyp1c2VyRGF0YSovLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQpAQCAtMTA4LDggKzEwOSw4IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRF
Zmw6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdL
UGFnCiAgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50
SW5mbyktPnZpZXcoKTsKLSAgICBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX3JlZGlyZWN0KGV3
a1ZpZXcpOworICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwo
Y2xpZW50SW5mbyktPnZpZXdJbXBsKCk7CisgICAgdmlld0ltcGwtPmluZm9ybVByb3Zpc2lvbmFs
TG9hZFJlZGlyZWN0KCk7CiB9CiAKIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZEZhaWxQcm92
aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUs
IFdLRXJyb3JSZWYgZXJyb3IsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAg
LTExNyw5ICsxMTgsOSBAQCB2b2lkIFBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYQogICAgIGlmICghV0tGcmFt
ZUlzTWFpbkZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRXZhc19PYmplY3Qq
IGV3a1ZpZXcgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3KCk7CisgICAg
RXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+
dmlld0ltcGwoKTsKICAgICBPd25QdHI8RXdrX0Vycm9yPiBld2tFcnJvciA9IEV3a19FcnJvcjo6
Y3JlYXRlKGVycm9yKTsKLSAgICBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChld2tW
aWV3LCBld2tFcnJvci5nZXQoKSk7CisgICAgdmlld0ltcGwtPmluZm9ybVByb3Zpc2lvbmFsTG9h
ZEZhaWxlZChld2tFcnJvci5nZXQoKSk7CiB9CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9S
RSkKQEAgLTEyOCwyMSArMTI5LDIxIEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZENvbW1p
dExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwCiAgICAgaWYg
KCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBFdmFz
X09iamVjdCogZXdrVmlldyA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXco
KTsKLSAgICBld2tfdmlld19sb2FkX2NvbW1pdHRlZChld2tWaWV3KTsKKyAgICBFd2tWaWV3SW1w
bCogdmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3SW1wbCgp
OworICAgIHZpZXdJbXBsLT5pbmZvcm1Mb2FkQ29tbWl0dGVkKCk7CiB9CiAjZW5kaWYKIAogdm9p
ZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdLUGFnZVJlZiwg
V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGFkZGVkSXRlbSwgV0tBcnJheVJlZiByZW1vdmVkSXRl
bXMsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgRXZhc19PYmplY3QqIGV3a1ZpZXcg
PSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3KCk7Ci0gICAgQVNTRVJUKGV3
a1ZpZXcpOworICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGllbnRFZmwo
Y2xpZW50SW5mbyktPnZpZXdJbXBsKCk7CisgICAgQVNTRVJUKHZpZXdJbXBsKTsKIAotICAgIEV3
a19CYWNrX0ZvcndhcmRfTGlzdCogbGlzdCA9IGV3a192aWV3X2JhY2tfZm9yd2FyZF9saXN0X2dl
dChld2tWaWV3KTsKKyAgICBFd2tfQmFja19Gb3J3YXJkX0xpc3QqIGxpc3QgPSBld2tfdmlld19i
YWNrX2ZvcndhcmRfbGlzdF9nZXQodmlld0ltcGwtPnZpZXcoKSk7CiAgICAgQVNTRVJUKGxpc3Qp
OwogICAgIGxpc3QtPnVwZGF0ZShhZGRlZEl0ZW0sIHJlbW92ZWRJdGVtcyk7CiAKLSAgICBld2tf
dmlld19iYWNrX2ZvcndhcmRfbGlzdF9jaGFuZ2VkKGV3a1ZpZXcpOworICAgIHZpZXdJbXBsLT5p
bmZvcm1CYWNrRm9yd2FyZExpc3RDaGFuZ2UoKTsKIH0KIAogdm9pZCBQYWdlTG9hZENsaWVudEVm
bDo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJl
ZiBmcmFtZSwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgV0tUeXBlUmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQpAQCAtMTUwLDE0ICsxNTEsMTQgQEAgdm9pZCBQYWdlTG9hZENsaWVu
dEVmbDo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZgogICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVu
dEluZm8pLT52aWV3KCk7Ci0gICAgZXdrX3ZpZXdfdXJsX3VwZGF0ZShld2tWaWV3KTsKKyAgICBF
d2tWaWV3SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52
aWV3SW1wbCgpOworICAgIGV3a192aWV3X3VybF91cGRhdGUodmlld0ltcGwtPnZpZXcoKSk7CiB9
CiAKLVBhZ2VMb2FkQ2xpZW50RWZsOjpQYWdlTG9hZENsaWVudEVmbChFdmFzX09iamVjdCogdmll
dykKLSAgICA6IG1fdmlldyh2aWV3KQorUGFnZUxvYWRDbGllbnRFZmw6OlBhZ2VMb2FkQ2xpZW50
RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAgICA6IG1fdmlld0ltcGwodmlld0ltcGwpCiB7
Ci0gICAgV0tQYWdlUmVmIHBhZ2VSZWYgPSBld2tfdmlld193a3BhZ2VfZ2V0KG1fdmlldyk7Cisg
ICAgV0tQYWdlUmVmIHBhZ2VSZWYgPSBtX3ZpZXdJbXBsLT53a1BhZ2UoKTsKICAgICBBU1NFUlQo
cGFnZVJlZik7CiAKICAgICBXS1BhZ2VMb2FkZXJDbGllbnQgbG9hZENsaWVudDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuaAppbmRleCA2Yjc4
ZjU2Li42YjMxY2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Bh
Z2VMb2FkQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdl
TG9hZENsaWVudEVmbC5oCkBAIC0yOSwxOSArMjksMjEgQEAKICNpbmNsdWRlICJld2tfdmlld19w
cml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAorY2xhc3MgRXdrVmlld0lt
cGw7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBQYWdlTG9hZENsaWVudEVmbCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZUxvYWRDbGllbnRFZmw+IGNyZWF0ZShF
dmFzX09iamVjdCogdmlldykKKyAgICBzdGF0aWMgUGFzc093blB0cjxQYWdlTG9hZENsaWVudEVm
bD4gY3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgUGFnZUxvYWRDbGllbnRFZmwodmlldykpOworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFBhZ2VMb2FkQ2xpZW50RWZsKHZpZXdJbXBsKSk7CiAgICAgfQogCiBwcml2YXRl
OgotICAgIGV4cGxpY2l0IFBhZ2VMb2FkQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KTsKKyAg
ICBleHBsaWNpdCBQYWdlTG9hZENsaWVudEVmbChFd2tWaWV3SW1wbCopOwogCi0gICAgaW5saW5l
IEV2YXNfT2JqZWN0KiB2aWV3KCkgY29uc3QgeyByZXR1cm4gbV92aWV3OyB9CisgICAgaW5saW5l
IEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0ltcGw7IH0KIAog
ICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdLUGFnZVJlZiwgV0tTdHJp
bmdSZWYgdGl0bGUsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQpAQCAtNjIsNyArNjQsNyBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXS1BhZ2VSZWYsIFdLQmFj
a0ZvcndhcmRMaXN0SXRlbVJlZiBhZGRlZEl0ZW0sIFdLQXJyYXlSZWYgcmVtb3ZlZEl0ZW1zLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1NhbWVEb2N1bWVudE5h
dmlnYXRpb25UeXBlLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCi0gICAg
RXZhc19PYmplY3QqIG1fdmlldzsKKyAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9QYWdlUG9saWN5Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvUGFnZVBvbGljeUNsaWVudEVmbC5jcHAKaW5kZXggOTAzZjFkYS4uZDYyMGE0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlUG9saWN5Q2xpZW50RWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VQb2xpY3lDbGllbnRF
ZmwuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
UGFnZVBvbGljeUNsaWVudEVmbC5oIgogCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKICNpbmNs
dWRlICJXS0ZyYW1lLmgiCiAjaW5jbHVkZSAiV0tGcmFtZVBvbGljeUxpc3RlbmVyLmgiCiAjaW5j
bHVkZSAiZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCkBAIC00MSwxNCArNDIsMTgg
QEAgc3RhdGljIGlubGluZSBQYWdlUG9saWN5Q2xpZW50RWZsKiB0b1BhZ2VQb2xpY3lDbGllbnRF
ZmwoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIAogdm9pZCBQYWdlUG9saWN5Q2xpZW50RWZsOjpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tG
cmFtZU5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlm
aWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBXS1VSTFJlcXVlc3RSZWYgcmVx
dWVzdCwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYgLyp1c2Vy
RGF0YSovLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogeworICAgIFBhZ2VQb2xpY3lDbGllbnRF
ZmwqIHBvbGljeUNsaWVudCA9IHRvUGFnZVBvbGljeUNsaWVudEVmbChjbGllbnRJbmZvKTsKKwog
ICAgIFJlZlB0cjxFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24+IGRlY2lzaW9uID0gRXdr
X05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uOjpjcmVhdGUobmF2aWdhdGlvblR5cGUsIG1vdXNl
QnV0dG9uLCBtb2RpZmllcnMsIHJlcXVlc3QsIDAsIGxpc3RlbmVyKTsKLSAgICBld2tfdmlld19u
YXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbih0b1BhZ2VQb2xpY3lDbGllbnRFZmwoY2xpZW50SW5m
byktPm1fdmlldywgZGVjaXNpb24uZ2V0KCkpOworICAgIHBvbGljeUNsaWVudC0+bV92aWV3SW1w
bC0+aW5mb3JtTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKGRlY2lzaW9uLmdldCgpKTsKIH0KIAog
dm9pZCBQYWdlUG9saWN5Q2xpZW50RWZsOjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0ZyYW1lTmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5
cGUsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VC
dXR0b24sIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBXS1N0cmluZ1JlZiBmcmFtZU5hbWUsIFdL
RnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBlUmVmIC8qdXNlckRhdGEqLywg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKKyAgICBQYWdlUG9saWN5Q2xpZW50RWZsKiBwb2xp
Y3lDbGllbnQgPSB0b1BhZ2VQb2xpY3lDbGllbnRFZmwoY2xpZW50SW5mbyk7CisKICAgICBSZWZQ
dHI8RXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uPiBkZWNpc2lvbiA9IEV3a19OYXZpZ2F0
aW9uX1BvbGljeV9EZWNpc2lvbjo6Y3JlYXRlKG5hdmlnYXRpb25UeXBlLCBtb3VzZUJ1dHRvbiwg
bW9kaWZpZXJzLCByZXF1ZXN0LCB0b0ltcGwoZnJhbWVOYW1lKS0+c3RyaW5nKCkudXRmOCgpLmRh
dGEoKSwgbGlzdGVuZXIpOwotICAgIGV3a192aWV3X25ld193aW5kb3dfcG9saWN5X2RlY2lzaW9u
KHRvUGFnZVBvbGljeUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3LCBkZWNpc2lvbi5nZXQo
KSk7CisgICAgcG9saWN5Q2xpZW50LT5tX3ZpZXdJbXBsLT5pbmZvcm1OZXdXaW5kb3dQb2xpY3lE
ZWNpc2lvbihkZWNpc2lvbi5nZXQoKSk7CiB9CiAKIHZvaWQgUGFnZVBvbGljeUNsaWVudEVmbDo6
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VDYWxsYmFjayhXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIFdLVVJMUmVxdWVzdFJlZiwgV0tGcmFtZVBv
bGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYgLyp1c2VyRGF0YSovLCBjb25zdCB2
b2lkKiAvKmNsaWVudEluZm8qLykKQEAgLTkzLDEwICs5OCwxMCBAQCB2b2lkIFBhZ2VQb2xpY3lD
bGllbnRFZmw6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlQ2FsbGJhY2soV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmCiAgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlKGxpc3RlbmVyKTsKIH0KIAotUGFn
ZVBvbGljeUNsaWVudEVmbDo6UGFnZVBvbGljeUNsaWVudEVmbChFdmFzX09iamVjdCogdmlldykK
LSAgICA6IG1fdmlldyh2aWV3KQorUGFnZVBvbGljeUNsaWVudEVmbDo6UGFnZVBvbGljeUNsaWVu
dEVmbChFd2tWaWV3SW1wbCogdmlld0ltcGwpCisgICAgOiBtX3ZpZXdJbXBsKHZpZXdJbXBsKQog
ewotICAgIFdLUGFnZVJlZiBwYWdlUmVmID0gZXdrX3ZpZXdfd2twYWdlX2dldChtX3ZpZXcpOwor
ICAgIFdLUGFnZVJlZiBwYWdlUmVmID0gbV92aWV3SW1wbC0+d2tQYWdlKCk7CiAgICAgQVNTRVJU
KHBhZ2VSZWYpOwogCiAgICAgV0tQYWdlUG9saWN5Q2xpZW50IHBvbGljeUNsaWVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVBvbGljeUNsaWVudEVmbC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlUG9saWN5Q2xpZW50RWZsLmgKaW5k
ZXggOTkyMjg0ZS4uNWNhZDRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9QYWdlUG9saWN5Q2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9QYWdlUG9saWN5Q2xpZW50RWZsLmgKQEAgLTI5LDIzICsyOSwyNSBAQAogI2luY2x1ZGUg
ImV3a192aWV3X3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCitjbGFz
cyBFd2tWaWV3SW1wbDsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBhZ2VQb2xpY3lD
bGllbnRFZmwgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VQb2xpY3lDbGll
bnRFZmw+IGNyZWF0ZShFdmFzX09iamVjdCogdmlldykKKyAgICBzdGF0aWMgUGFzc093blB0cjxQ
YWdlUG9saWN5Q2xpZW50RWZsPiBjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQYWdlUG9saWN5Q2xpZW50RWZsKHZpZXcpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQYWdlUG9saWN5Q2xpZW50RWZsKHZpZXdJbXBs
KSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFBhZ2VQb2xpY3lDbGllbnRFZmwo
RXZhc19PYmplY3QqIHZpZXcpOworICAgIGV4cGxpY2l0IFBhZ2VQb2xpY3lDbGllbnRFZmwoRXdr
Vmlld0ltcGwqKTsKIAogICAgIHN0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0ZyYW1lTmF2aWdhdGlvblR5cGUsIFdLRXZl
bnRNb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiwgV0tVUkxSZXF1ZXN0UmVmLCBXS0ZyYW1l
UG9saWN5TGlzdGVuZXJSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyB2
b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXS1BhZ2VSZWYsIFdLRnJhbWVSZWYs
IFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0
dG9uLCBXS1VSTFJlcXVlc3RSZWYsIFdLU3RyaW5nUmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJS
ZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyB2b2lkIGRlY2lkZVBvbGlj
eUZvclJlc3BvbnNlQ2FsbGJhY2soV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1VSTFJlc3BvbnNl
UmVmLCBXS1VSTFJlcXVlc3RSZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiwgV0tUeXBlUmVm
LCBjb25zdCB2b2lkKik7CiAKLSAgICBFdmFzX09iamVjdCogbV92aWV3OworICAgIEV3a1ZpZXdJ
bXBsKiBtX3ZpZXdJbXBsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHAKaW5kZXggMWMzNTcw
Ny4uN2EzOGQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdl
VUlDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJ
Q2xpZW50RWZsLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlBhZ2VVSUNsaWVudEVmbC5oIgogCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKICNp
bmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKICNpbmNs
dWRlIDxFY29yZV9FdmFzLmg+CkBAIC00MCw3MSArNDEsNzMgQEAgc3RhdGljIGlubGluZSBQYWdl
VUlDbGllbnRFZmwqIHRvUGFnZVVJQ2xpZW50RWZsKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiAK
IHZvaWQgUGFnZVVJQ2xpZW50RWZsOjpjbG9zZVBhZ2UoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQogewotICAgIGV3a192aWV3X3BhZ2VfY2xvc2UodG9QYWdlVUlDbGllbnRFZmwo
Y2xpZW50SW5mbyktPm1fdmlldyk7CisgICAgZXdrX3ZpZXdfcGFnZV9jbG9zZSh0b1BhZ2VVSUNs
aWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3SW1wbC0+dmlldygpKTsKIH0KIAogV0tQYWdlUmVm
IFBhZ2VVSUNsaWVudEVmbDo6Y3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYsIFdLVVJMUmVxdWVzdFJl
ZiwgV0tEaWN0aW9uYXJ5UmVmLCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24s
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgcmV0dXJuIGV3a192aWV3X3BhZ2VfY3Jl
YXRlKHRvUGFnZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5tX3ZpZXcpOworICAgIHJldHVybiBl
d2tfdmlld19wYWdlX2NyZWF0ZSh0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3
SW1wbC0+dmlldygpKTsKIH0KIAogdm9pZCBQYWdlVUlDbGllbnRFZmw6OnJ1bkphdmFTY3JpcHRB
bGVydChXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIGFsZXJ0VGV4dCwgV0tGcmFtZVJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBld2tfdmlld19ydW5famF2YXNjcmlwdF9hbGVydCh0
b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3LCBXS0VpbmFTaGFyZWRTdHJpbmco
YWxlcnRUZXh0KSk7CisgICAgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfYWxlcnQodG9QYWdlVUlD
bGllbnRFZmwoY2xpZW50SW5mbyktPm1fdmlld0ltcGwtPnZpZXcoKSwgV0tFaW5hU2hhcmVkU3Ry
aW5nKGFsZXJ0VGV4dCkpOwogfQogCiBib29sIFBhZ2VVSUNsaWVudEVmbDo6cnVuSmF2YVNjcmlw
dENvbmZpcm0oV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0ZyYW1lUmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHJldHVybiBld2tfdmlld19ydW5famF2YXNjcmlw
dF9jb25maXJtKHRvUGFnZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5tX3ZpZXcsIFdLRWluYVNo
YXJlZFN0cmluZyhtZXNzYWdlKSk7CisgICAgcmV0dXJuIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0
X2NvbmZpcm0odG9QYWdlVUlDbGllbnRFZmwoY2xpZW50SW5mbyktPm1fdmlld0ltcGwtPnZpZXco
KSwgV0tFaW5hU2hhcmVkU3RyaW5nKG1lc3NhZ2UpKTsKIH0KIAogV0tTdHJpbmdSZWYgUGFnZVVJ
Q2xpZW50RWZsOjpydW5KYXZhU2NyaXB0UHJvbXB0KFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVz
c2FnZSwgV0tTdHJpbmdSZWYgZGVmYXVsdFZhbHVlLCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQogewotICAgIFdLRWluYVNoYXJlZFN0cmluZyB2YWx1ZSA9IGV3a192aWV3X3J1
bl9qYXZhc2NyaXB0X3Byb21wdCh0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3
LCBXS0VpbmFTaGFyZWRTdHJpbmcobWVzc2FnZSksIFdLRWluYVNoYXJlZFN0cmluZyhkZWZhdWx0
VmFsdWUpKTsKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgdmFsdWUgPSBld2tfdmlld19ydW5famF2
YXNjcmlwdF9wcm9tcHQodG9QYWdlVUlDbGllbnRFZmwoY2xpZW50SW5mbyktPm1fdmlld0ltcGwt
PnZpZXcoKSwgV0tFaW5hU2hhcmVkU3RyaW5nKG1lc3NhZ2UpLCBXS0VpbmFTaGFyZWRTdHJpbmco
ZGVmYXVsdFZhbHVlKSk7CiAgICAgcmV0dXJuIHZhbHVlID8gV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcodmFsdWUpIDogMDsKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQog
dm9pZCBQYWdlVUlDbGllbnRFZmw6OnNob3dDb2xvclBpY2tlcihXS1BhZ2VSZWYsIFdLU3RyaW5n
UmVmIGluaXRpYWxDb2xvciwgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVy
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogeworICAgIFBhZ2VVSUNsaWVudEVmbCogcGFnZVVJ
Q2xpZW50ID0gdG9QYWdlVUlDbGllbnRFZmwoY2xpZW50SW5mbyk7CiAgICAgV2ViQ29yZTo6Q29s
b3IgY29sb3IgPSBXZWJDb3JlOjpDb2xvcihXZWJLaXQ6OnRvV1RGU3RyaW5nKGluaXRpYWxDb2xv
cikpOwotICAgIGV3a192aWV3X2NvbG9yX3BpY2tlcl9yZXF1ZXN0KHRvUGFnZVVJQ2xpZW50RWZs
KGNsaWVudEluZm8pLT5tX3ZpZXcsIGNvbG9yLnJlZCgpLCBjb2xvci5ncmVlbigpLCBjb2xvci5i
bHVlKCksIGNvbG9yLmFscGhhKCksIGxpc3RlbmVyKTsKKyAgICBwYWdlVUlDbGllbnQtPm1fdmll
d0ltcGwtPnJlcXVlc3RDb2xvclBpY2tlcihjb2xvci5yZWQoKSwgY29sb3IuZ3JlZW4oKSwgY29s
b3IuYmx1ZSgpLCBjb2xvci5hbHBoYSgpLCBsaXN0ZW5lcik7CiB9CiAKIHZvaWQgUGFnZVVJQ2xp
ZW50RWZsOjpoaWRlQ29sb3JQaWNrZXIoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQogewotICAgIGV3a192aWV3X2NvbG9yX3BpY2tlcl9kaXNtaXNzKHRvUGFnZVVJQ2xpZW50RWZs
KGNsaWVudEluZm8pLT5tX3ZpZXcpOworICAgIFBhZ2VVSUNsaWVudEVmbCogcGFnZVVJQ2xpZW50
ID0gdG9QYWdlVUlDbGllbnRFZmwoY2xpZW50SW5mbyk7CisgICAgcGFnZVVJQ2xpZW50LT5tX3Zp
ZXdJbXBsLT5kaXNtaXNzQ29sb3JQaWNrZXIoKTsKIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKIHVuc2lnbmVkIGxvbmcgbG9uZyBQYWdlVUlDbGllbnRFZmw6OmV4Y2VlZGVk
RGF0YWJhc2VRdW90YShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYs
IFdLU3RyaW5nUmVmIGRhdGFiYXNlTmFtZSwgV0tTdHJpbmdSZWYgZGlzcGxheU5hbWUsIHVuc2ln
bmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50T3Jp
Z2luVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdW5zaWdu
ZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0g
ICAgcmV0dXJuIGV3a192aWV3X2RhdGFiYXNlX3F1b3RhX2V4Y2VlZGVkKHRvUGFnZVVJQ2xpZW50
RWZsKGNsaWVudEluZm8pLT5tX3ZpZXcsIFdLRWluYVNoYXJlZFN0cmluZyhkYXRhYmFzZU5hbWUp
LCBXS0VpbmFTaGFyZWRTdHJpbmcoZGlzcGxheU5hbWUpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRP
cmlnaW5Vc2FnZSwgY3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2UpOworICAgIHJl
dHVybiBld2tfdmlld19kYXRhYmFzZV9xdW90YV9leGNlZWRlZCh0b1BhZ2VVSUNsaWVudEVmbChj
bGllbnRJbmZvKS0+bV92aWV3SW1wbC0+dmlldygpLCBXS0VpbmFTaGFyZWRTdHJpbmcoZGF0YWJh
c2VOYW1lKSwgV0tFaW5hU2hhcmVkU3RyaW5nKGRpc3BsYXlOYW1lKSwgY3VycmVudFF1b3RhLCBj
dXJyZW50T3JpZ2luVXNhZ2UsIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVzYWdlKTsK
IH0KICNlbmRpZgogCiB2b2lkIFBhZ2VVSUNsaWVudEVmbDo6Zm9jdXMoV0tQYWdlUmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldCh0b1BhZ2VV
SUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3LCB0cnVlKTsKKyAgICBldmFzX29iamVjdF9m
b2N1c19zZXQodG9QYWdlVUlDbGllbnRFZmwoY2xpZW50SW5mbyktPm1fdmlld0ltcGwtPnZpZXco
KSwgdHJ1ZSk7CiB9CiAKIHZvaWQgUGFnZVVJQ2xpZW50RWZsOjp1bmZvY3VzKFdLUGFnZVJlZiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBldmFzX29iamVjdF9mb2N1c19zZXQodG9Q
YWdlVUlDbGllbnRFZmwoY2xpZW50SW5mbyktPm1fdmlldywgZmFsc2UpOworICAgIGV2YXNfb2Jq
ZWN0X2ZvY3VzX3NldCh0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3SW1wbC0+
dmlldygpLCBmYWxzZSk7CiB9CiAKIHZvaWQgUGFnZVVJQ2xpZW50RWZsOjp0YWtlRm9jdXMoV0tQ
YWdlUmVmLCBXS0ZvY3VzRGlyZWN0aW9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAg
IC8vIEZJWE1FOiB0aGlzIGlzIG9ubHkgYSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uLgotICAgIGV2
YXNfb2JqZWN0X2ZvY3VzX3NldCh0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3
LCBmYWxzZSk7CisgICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KHRvUGFnZVVJQ2xpZW50RWZsKGNs
aWVudEluZm8pLT5tX3ZpZXdJbXBsLT52aWV3KCksIGZhbHNlKTsKIH0KIAogV0tSZWN0IFBhZ2VV
SUNsaWVudEVmbDo6Z2V0V2luZG93RnJhbWUoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQogewogICAgIGludCB4LCB5LCB3aWR0aCwgaGVpZ2h0OwogCi0gICAgRWNvcmVfRXZhcyog
ZWUgPSBlY29yZV9ldmFzX2Vjb3JlX2V2YXNfZ2V0KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KHRvUGFn
ZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5tX3ZpZXcpKTsKKyAgICBFY29yZV9FdmFzKiBlZSA9
IGVjb3JlX2V2YXNfZWNvcmVfZXZhc19nZXQoZXZhc19vYmplY3RfZXZhc19nZXQodG9QYWdlVUlD
bGllbnRFZmwoY2xpZW50SW5mbyktPm1fdmlld0ltcGwtPnZpZXcoKSkpOwogICAgIGVjb3JlX2V2
YXNfcmVxdWVzdF9nZW9tZXRyeV9nZXQoZWUsICZ4LCAmeSwgJndpZHRoLCAmaGVpZ2h0KTsKIAog
ICAgIHJldHVybiBXS1JlY3RNYWtlKHgsIHksIHdpZHRoLCBoZWlnaHQpOwpAQCAtMTEyLDE0ICsx
MTUsMTQgQEAgV0tSZWN0IFBhZ2VVSUNsaWVudEVmbDo6Z2V0V2luZG93RnJhbWUoV0tQYWdlUmVm
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogCiB2b2lkIFBhZ2VVSUNsaWVudEVmbDo6c2V0V2lu
ZG93RnJhbWUoV0tQYWdlUmVmLCBXS1JlY3QgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
CiB7Ci0gICAgRWNvcmVfRXZhcyogZWUgPSBlY29yZV9ldmFzX2Vjb3JlX2V2YXNfZ2V0KGV2YXNf
b2JqZWN0X2V2YXNfZ2V0KHRvUGFnZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5tX3ZpZXcpKTsK
KyAgICBFY29yZV9FdmFzKiBlZSA9IGVjb3JlX2V2YXNfZWNvcmVfZXZhc19nZXQoZXZhc19vYmpl
Y3RfZXZhc19nZXQodG9QYWdlVUlDbGllbnRFZmwoY2xpZW50SW5mbyktPm1fdmlld0ltcGwtPnZp
ZXcoKSkpOwogICAgIGVjb3JlX2V2YXNfbW92ZV9yZXNpemUoZWUsIGZyYW1lLm9yaWdpbi54LCBm
cmFtZS5vcmlnaW4ueSwgZnJhbWUuc2l6ZS53aWR0aCwgZnJhbWUuc2l6ZS5oZWlnaHQpOwogfQog
Ci1QYWdlVUlDbGllbnRFZmw6OlBhZ2VVSUNsaWVudEVmbChFdmFzX09iamVjdCogdmlldykKLSAg
ICA6IG1fdmlldyh2aWV3KQorUGFnZVVJQ2xpZW50RWZsOjpQYWdlVUlDbGllbnRFZmwoRXdrVmll
d0ltcGwqIHZpZXdJbXBsKQorICAgIDogbV92aWV3SW1wbCh2aWV3SW1wbCkKIHsKLSAgICBXS1Bh
Z2VSZWYgcGFnZVJlZiA9IGV3a192aWV3X3drcGFnZV9nZXQobV92aWV3KTsKKyAgICBXS1BhZ2VS
ZWYgcGFnZVJlZiA9IG1fdmlld0ltcGwtPndrUGFnZSgpOwogICAgIEFTU0VSVChwYWdlUmVmKTsK
IAogICAgIFdLUGFnZVVJQ2xpZW50IHVpQ2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmgKaW5kZXggMDQyYWRhNi4uZTVmMTA2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5oCkBAIC0zMCwx
NyArMzAsMTkgQEAKICNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KIAorY2xhc3MgRXdrVmlld0ltcGw7CisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBQYWdlVUlDbGllbnRFZmwgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPFBhZ2VVSUNsaWVudEVmbD4gY3JlYXRlKEV2YXNfT2JqZWN0KiB2aWV3KQorICAgIHN0YXRp
YyBQYXNzT3duUHRyPFBhZ2VVSUNsaWVudEVmbD4gY3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1w
bCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFnZVVJQ2xpZW50RWZsKHZp
ZXcpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQYWdlVUlDbGllbnRFZmwodmlld0lt
cGwpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUGFnZVVJQ2xpZW50RWZsKEV2
YXNfT2JqZWN0KiB2aWV3KTsKKyAgICBleHBsaWNpdCBQYWdlVUlDbGllbnRFZmwoRXdrVmlld0lt
cGwqKTsKIAogICAgIHN0YXRpYyB2b2lkIGNsb3NlUGFnZShXS1BhZ2VSZWYsIGNvbnN0IHZvaWQq
KTsKICAgICBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmLCBXS1VSTFJl
cXVlc3RSZWYsIFdLRGljdGlvbmFyeVJlZiwgV0tFdmVudE1vZGlmaWVycywgV0tFdmVudE1vdXNl
QnV0dG9uLCBjb25zdCB2b2lkKik7CkBAIC02MCw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgc3Rh
dGljIFdLUmVjdCBnZXRXaW5kb3dGcmFtZShXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqKTsKICAgICBz
dGF0aWMgdm9pZCBzZXRXaW5kb3dGcmFtZShXS1BhZ2VSZWYsIFdLUmVjdCwgY29uc3Qgdm9pZCop
OwogCi0gICAgRXZhc19PYmplY3QqIG1fdmlldzsKKyAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1w
bDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9SZXNvdXJjZUxvYWRDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9SZXNvdXJjZUxvYWRDbGllbnRFZmwuY3BwCmluZGV4IDY1MzljY2Uu
LmNjNGJkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVzb3Vy
Y2VMb2FkQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Jl
c291cmNlTG9hZENsaWVudEVmbC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRDbGllbnRFZmwuaCIKIAorI2luY2x1ZGUgIkV3
a1ZpZXdJbXBsLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tGcmFtZS5o
IgogI2luY2x1ZGUgIldLUGFnZS5oIgpAQCAtNTUsNyArNTYsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZENsaWVudEVmbDo6ZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1l
UmVmIHdrRgogICAgIHJlc291cmNlTG9hZENsaWVudC0+bV9sb2FkaW5nUmVzb3VyY2VzTWFwLmFk
ZChyZXNvdXJjZUlkZW50aWZpZXIsIHJlc291cmNlKTsKIAogICAgIFJlZlB0cjxFd2tfVXJsX1Jl
cXVlc3Q+IHJlcXVlc3QgPSBFd2tfVXJsX1JlcXVlc3Q6OmNyZWF0ZSh3a1JlcXVlc3QpOwotICAg
IGV3a192aWV3X3Jlc291cmNlX2xvYWRfaW5pdGlhdGVkKHJlc291cmNlTG9hZENsaWVudC0+bV92
aWV3LCByZXNvdXJjZS5nZXQoKSwgcmVxdWVzdC5nZXQoKSk7CisgICAgcmVzb3VyY2VMb2FkQ2xp
ZW50LT5tX3ZpZXdJbXBsLT5pbmZvcm1SZXNvdXJjZUxvYWRTdGFydGVkKHJlc291cmNlLmdldCgp
LCByZXF1ZXN0LmdldCgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZFNl
bmRSZXF1ZXN0Rm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNv
dXJjZUlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiB3a1JlcXVlc3QsIFdLVVJMUmVzcG9uc2VS
ZWYgd2tSZWRpcmVjdFJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtNjksNyAr
NzAsNyBAQCB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkU2VuZFJlcXVlc3RGb3JSZXNv
dXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbgogCiAgICAgUmVmUHRyPEV3a19VcmxfUmVx
dWVzdD4gcmVxdWVzdCA9IEV3a19VcmxfUmVxdWVzdDo6Y3JlYXRlKHdrUmVxdWVzdCk7CiAgICAg
UmVmUHRyPEV3a19VcmxfUmVzcG9uc2U+IHJlZGlyZWN0UmVzcG9uc2UgPSBFd2tfVXJsX1Jlc3Bv
bnNlOjpjcmVhdGUod2tSZWRpcmVjdFJlc3BvbnNlKTsKLSAgICBld2tfdmlld19yZXNvdXJjZV9y
ZXF1ZXN0X3NlbnQocmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXcsIHJlc291cmNlLmdldCgpLCBy
ZXF1ZXN0LmdldCgpLCByZWRpcmVjdFJlc3BvbnNlLmdldCgpKTsKKyAgICByZXNvdXJjZUxvYWRD
bGllbnQtPm1fdmlld0ltcGwtPmluZm9ybVJlc291cmNlUmVxdWVzdFNlbnQocmVzb3VyY2UuZ2V0
KCksIHJlcXVlc3QuZ2V0KCksIHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOwogfQogCiB2b2lkIFJl
c291cmNlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZVJlc3BvbnNlRm9yUmVzb3VyY2UoV0tQYWdl
UmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdLVVJMUmVzcG9u
c2VSZWYgd2tSZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTgyLDcgKzgzLDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291
cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRy
PEV3a19VcmxfUmVzcG9uc2U+IHJlc3BvbnNlID0gRXdrX1VybF9SZXNwb25zZTo6Y3JlYXRlKHdr
UmVzcG9uc2UpOwotICAgIGV3a192aWV3X3Jlc291cmNlX2xvYWRfcmVzcG9uc2UocmVzb3VyY2VM
b2FkQ2xpZW50LT5tX3ZpZXcsIHJlc291cmNlLmdldCgpLCByZXNwb25zZS5nZXQoKSk7CisgICAg
cmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXdJbXBsLT5pbmZvcm1SZXNvdXJjZUxvYWRSZXNwb25z
ZShyZXNvdXJjZS5nZXQoKSwgcmVzcG9uc2UuZ2V0KCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9h
ZENsaWVudEVmbDo6ZGlkRmluaXNoTG9hZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJl
ZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpA
QCAtOTQsNyArOTUsNyBAQCB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkRmluaXNoTG9h
ZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludAogICAgIGlmICghcmVzb3Vy
Y2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmluaXNo
ZWQocmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXcsIHJlc291cmNlLmdldCgpKTsKKyAgICByZXNv
dXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPmluZm9ybVJlc291cmNlTG9hZEZpbmlzaGVkKHJl
c291cmNlLmdldCgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OmRpZEZhaWxM
b2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlk
ZW50aWZpZXIsIFdLRXJyb3JSZWYgd2tFcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAg
LTEwNyw4ICsxMDgsOCBAQCB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6ZGlkRmFpbExvYWRG
b3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NAogICAgICAgICByZXR1cm47
CiAKICAgICBPd25QdHI8RXdrX0Vycm9yPiBld2tFcnJvciA9IEV3a19FcnJvcjo6Y3JlYXRlKHdr
RXJyb3IpOwotICAgIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmFpbGVkKHJlc291cmNlTG9hZENs
aWVudC0+bV92aWV3LCByZXNvdXJjZS5nZXQoKSwgZXdrRXJyb3IuZ2V0KCkpOwotICAgIGV3a192
aWV3X3Jlc291cmNlX2xvYWRfZmluaXNoZWQocmVzb3VyY2VMb2FkQ2xpZW50LT5tX3ZpZXcsIHJl
c291cmNlLmdldCgpKTsKKyAgICByZXNvdXJjZUxvYWRDbGllbnQtPm1fdmlld0ltcGwtPmluZm9y
bVJlc291cmNlTG9hZEZhaWxlZChyZXNvdXJjZS5nZXQoKSwgZXdrRXJyb3IuZ2V0KCkpOworICAg
IHJlc291cmNlTG9hZENsaWVudC0+bV92aWV3SW1wbC0+aW5mb3JtUmVzb3VyY2VMb2FkRmluaXNo
ZWQocmVzb3VyY2UuZ2V0KCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZENsaWVudEVmbDo6b25W
aWV3UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqLCB2
b2lkKikKQEAgLTExOSwxMyArMTIwLDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpv
blZpZXdQcm92aXNpb25hbExvYWRTdGFydGVkKHZvaWQqIHVzZXJEYXRhLCBFdmFzX09iCiAgICAg
cmVzb3VyY2VMb2FkQ2xpZW50LT5tX2xvYWRpbmdSZXNvdXJjZXNNYXAuY2xlYXIoKTsKIH0KIAot
UmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpSZXNvdXJjZUxvYWRDbGllbnRFZmwoRXZhc19PYmplY3Qq
IHZpZXcpCi0gICAgOiBtX3ZpZXcodmlldykKK1Jlc291cmNlTG9hZENsaWVudEVmbDo6UmVzb3Vy
Y2VMb2FkQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAgICA6IG1fdmlld0ltcGwo
dmlld0ltcGwpCiB7CiAgICAgLy8gTGlzdGVuIGZvciAibG9hZCxwcm92aXNpb25hbCxzdGFydGVk
IiBvbiB0aGUgdmlldyB0byBjbGVhciBpbnRlcm5hbCByZXNvdXJjZXMgbWFwLgotICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChtX3ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0
ZWQiLCBvblZpZXdQcm92aXNpb25hbExvYWRTdGFydGVkLCB0aGlzKTsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19hZGQobV92aWV3SW1wbC0+dmlldygpLCAibG9hZCxwcm92aXNpb25h
bCxzdGFydGVkIiwgb25WaWV3UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCwgdGhpcyk7CiAKLSAgICBX
S1BhZ2VSZWYgcGFnZVJlZiA9IGV3a192aWV3X3drcGFnZV9nZXQobV92aWV3KTsKKyAgICBXS1Bh
Z2VSZWYgcGFnZVJlZiA9IG1fdmlld0ltcGwtPndrUGFnZSgpOwogICAgIEFTU0VSVChwYWdlUmVm
KTsKIAogICAgIFdLUGFnZVJlc291cmNlTG9hZENsaWVudCB3a1Jlc291cmNlTG9hZENsaWVudDsK
QEAgLTE0Myw3ICsxNDQsNyBAQCBSZXNvdXJjZUxvYWRDbGllbnRFZmw6OlJlc291cmNlTG9hZENs
aWVudEVmbChFdmFzX09iamVjdCogdmlldykKIAogUmVzb3VyY2VMb2FkQ2xpZW50RWZsOjp+UmVz
b3VyY2VMb2FkQ2xpZW50RWZsKCkKIHsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19k
ZWwobV92aWV3LCAibG9hZCxwcm92aXNpb25hbCxzdGFydGVkIiwgb25WaWV3UHJvdmlzaW9uYWxM
b2FkU3RhcnRlZCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKG1fdmlld0lt
cGwtPnZpZXcoKSwgImxvYWQscHJvdmlzaW9uYWwsc3RhcnRlZCIsIG9uVmlld1Byb3Zpc2lvbmFs
TG9hZFN0YXJ0ZWQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Jlc291cmNlTG9hZENsaWVudEVmbC5oCmluZGV4IDU4
ZjUyYjQuLjAxZWYxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UmVzb3VyY2VMb2FkQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9SZXNvdXJjZUxvYWRDbGllbnRFZmwuaApAQCAtMzEsMTkgKzMxLDIxIEBACiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCitjbGFzcyBFd2tW
aWV3SW1wbDsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlc291cmNlTG9hZENsaWVu
dEVmbCB7CiBwdWJsaWM6CiAgICAgflJlc291cmNlTG9hZENsaWVudEVmbCgpOwogCi0gICAgc3Rh
dGljIFBhc3NPd25QdHI8UmVzb3VyY2VMb2FkQ2xpZW50RWZsPiBjcmVhdGUoRXZhc19PYmplY3Qq
IHZpZXcpCisgICAgc3RhdGljIFBhc3NPd25QdHI8UmVzb3VyY2VMb2FkQ2xpZW50RWZsPiBjcmVh
dGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBSZXNvdXJjZUxvYWRDbGllbnRFZmwodmlldykpOworICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFJlc291cmNlTG9hZENsaWVudEVmbCh2aWV3SW1wbCkpOwogICAgIH0KIAogcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBSZXNvdXJjZUxvYWRDbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXcp
OworICAgIGV4cGxpY2l0IFJlc291cmNlTG9hZENsaWVudEVmbChFd2tWaWV3SW1wbCopOwogCiAg
ICAgc3RhdGljIHZvaWQgZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiwgYm9v
bCBwYWdlSXNQcm92aXNpb25hbGx5TG9hZGluZywgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAg
ICAgc3RhdGljIHZvaWQgZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJh
bWVSZWYsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV0tVUkxSZXF1ZXN0UmVmLCBXS1VS
TFJlc3BvbnNlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKQEAgLTUzLDcgKzU1LDcgQEAg
cHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIG9uVmlld1Byb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQo
dm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0KiB2aWV3LCB2b2lkKiBjbGllbnRJbmZvKTsKIAot
ICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7CisgICAgRXdrVmlld0ltcGwqIG1fdmlld0ltcGw7CiAg
ICAgSGFzaE1hcDwgdWludDY0X3QsIFJlZlB0cjxFd2tfUmVzb3VyY2U+ID4gbV9sb2FkaW5nUmVz
b3VyY2VzTWFwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKaW5kZXggMjU0MzQwZC4u
NDY4Y2JmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlFZmwuY3BwCkBAIC0yNSwxMCArMjUsMTAgQEAK
IAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHkuaCIKLSNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCiAKICNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCiAKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01Nyw3ICs1
Nyw3IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6ZW50ZXJGdWxsU2NyZWVuKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgd2lsbEVudGVyRnVsbFNjcmVlbigpOwotICAgIGV3a192
aWV3X2Z1bGxfc2NyZWVuX2VudGVyKG1fd2ViVmlldyk7CisgICAgRXdrVmlld0ltcGw6OmZyb21F
dmFzT2JqZWN0KG1fd2ViVmlldyktPmVudGVyRnVsbFNjcmVlbigpOwogICAgIGRpZEVudGVyRnVs
bFNjcmVlbigpOwogfQogCkBAIC02Niw4ICs2Niw5IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eTo6ZXhpdEZ1bGxTY3JlZW4oKQogICAgIGlmICghbV93ZWJWaWV3KQogICAgICAgICBy
ZXR1cm47CiAKKwogICAgIHdpbGxFeGl0RnVsbFNjcmVlbigpOwotICAgIGV3a192aWV3X2Z1bGxf
c2NyZWVuX2V4aXQobV93ZWJWaWV3KTsKKyAgICBFd2tWaWV3SW1wbDo6ZnJvbUV2YXNPYmplY3Qo
bV93ZWJWaWV3KS0+ZXhpdEZ1bGxTY3JlZW4oKTsKICAgICBkaWRFeGl0RnVsbFNjcmVlbigpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3Rv
clByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9y
UHJveHlFZmwuY3BwCmluZGV4IDNiZTdjNTIuLjg0YmEyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCisjaW5jbHVkZSAiRXdrVmlld0lt
cGwuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJld2tfc2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgpAQCAtMTAxLDcgKzEwMiw3IEBAIFdlYlBhZ2VQ
cm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAg
ICAgRXdrX1NldHRpbmdzKiBzZXR0aW5ncyA9IGV3a192aWV3X3NldHRpbmdzX2dldChtX2luc3Bl
Y3RvclZpZXcpOwogICAgIGV3a19zZXR0aW5nc19maWxlX2FjY2Vzc19mcm9tX2ZpbGVfdXJsc19h
bGxvd2VkX3NldChzZXR0aW5ncywgdHJ1ZSk7CiAKLSAgICByZXR1cm4gZXdrX3ZpZXdfcGFnZV9n
ZXQobV9pbnNwZWN0b3JWaWV3KTsKKyAgICByZXR1cm4gRXdrVmlld0ltcGw6OmZyb21FdmFzT2Jq
ZWN0KG1faW5zcGVjdG9yVmlldyktPnBhZ2UoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1PcGVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViUGFnZVByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
UGFnZVByb3h5RWZsLmNwcAppbmRleCA5OGFlMDhhLi43MzRkZjVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAKKyNp
bmNsdWRlICJFd2tWaWV3SW1wbC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBs
LmgiCkBAIC0zOSw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBFdmFzX09iamVjdCog
V2ViUGFnZVByb3h5Ojp2aWV3V2lkZ2V0KCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGFn
ZUNsaWVudEltcGwqPihtX3BhZ2VDbGllbnQpLT52aWV3V2lkZ2V0KCk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFBhZ2VDbGllbnRJbXBsKj4obV9wYWdlQ2xpZW50KS0+dmlld0ltcGwoKS0+dmll
dygpOwogfQogCiBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudChjb25zdCBT
dHJpbmcmIC8qYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50Ki8pCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>