<?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>100331</bug_id>
          
          <creation_ts>2012-10-24 22:56:46 -0700</creation_ts>
          <short_desc>[EFL][WK2] Get rid of Ewk_View private C API (Part 2)</short_desc>
          <delta_ts>2012-10-25 02:33:01 -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>
    
    <dependson>100230</dependson>
          <blocked>100226</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>joone</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>750388</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-24 22:56:46 -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 100228).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750549</commentid>
    <comment_count>1</comment_count>
      <attachid>170586</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-25 01:39:10 -0700</bug_when>
    <thetext>Created attachment 170586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750587</commentid>
    <comment_count>2</comment_count>
      <attachid>170586</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 02:32:56 -0700</bug_when>
    <thetext>Comment on attachment 170586
Patch

Clearing flags on attachment: 170586

Committed r132463: &lt;http://trac.webkit.org/changeset/132463&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750588</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 02:33:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170586</attachid>
            <date>2012-10-25 01:39:10 -0700</date>
            <delta_ts>2012-10-25 02:32:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100331_ewkview_method_pt2.patch</filename>
            <type>text/plain</type>
            <size>46267</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmYWJlZDc3Li5jZmMzYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkg
QEAKKzIwMTItMTAtMjUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEdldCByaWQgb2YgRXdrX1ZpZXcgcHJpdmF0ZSBD
IEFQSSAoUGFydCAyKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAwMzMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ29udmVydCBtb3N0IG9mIHRoZSByZW1haW5pbmcgRXdrX1ZpZXcgcHJpdmF0ZSBDIEFQ
SQorICAgICAgICBpbnRvIEMrKyBtZXRob2RzIGluIEV3a1ZpZXdJbXBsIGNsYXNzLiBPbmx5IG9u
ZSBwcml2YXRlCisgICAgICAgIEMgZnVuY3Rpb24gcmVtYWlucyBidXQgaXQgd2lsbCBiZSB0YWtl
biBjYXJlIG9mIGluIGEKKyAgICAgICAgbGF0ZXIgcGF0Y2ggdG8gY2xlYW4gdXAgdGhlIHZpZXcg
Y29uc3RydWN0aW9uIGNvZGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
SW1wbC5jcHA6CisgICAgICAgIChFd2tWaWV3SW1wbDo6YWRkVG9QYWdlVmlld01hcCk6CisgICAg
ICAgIChFd2tWaWV3SW1wbDo6cmVtb3ZlRnJvbVBhZ2VWaWV3TWFwKToKKyAgICAgICAgKEV3a1Zp
ZXdJbXBsOjp2aWV3RnJvbVBhZ2VWaWV3TWFwKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpmcm9t
RXZhc09iamVjdCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6aW5mb3JtTG9hZEZpbmlzaGVkKToK
KyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1Qcm92aXNpb25hbExvYWRSZWRpcmVjdCk6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6aW5mb3JtUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk6CisgICAg
ICAgIChFd2tWaWV3SW1wbDo6aW5mb3JtV2ViUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoRXdr
Vmlld0ltcGw6OmluZm9ybUNvbnRlbnRzU2l6ZUNoYW5nZSk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6cmVxdWVzdFBvcHVwTWVudSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6cmVxdWVzdEpTQWxl
cnRQb3B1cCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6cmVxdWVzdEpTQ29uZmlybVBvcHVwKToK
KyAgICAgICAgKEV3a1ZpZXdJbXBsOjpyZXF1ZXN0SlNQcm9tcHRQb3B1cCk6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6aW5mb3JtRGF0YWJhc2VRdW90YVJlYWNoZWQpOgorICAgICAgICAoRXdrVmll
d0ltcGw6OnVwZGF0ZVRleHRJbnB1dFN0YXRlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZv
cm1VUkxDaGFuZ2UpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmNyZWF0ZU5ld1BhZ2UpOgorICAg
ICAgICAoRXdrVmlld0ltcGw6OmNsb3NlUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChFd2tWaWV3SW1w
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnVwZGF0ZVRleHRJbnB1dFN0YXRlKToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X2RlbCk6CisgICAgICAgIChfZXdrX3ZpZXdfaW5pdGlhbGl6ZSk6CisgICAgICAgIChld2tf
dmlld191cmxfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3JlbG9hZCk6CisgICAgICAgIChld2tf
dmlld19yZWxvYWRfYnlwYXNzX2NhY2hlKToKKyAgICAgICAgKGV3a192aWV3X2h0bWxfc3RyaW5n
X2xvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0NvbnRleHRIaXN0b3J5Q2xpZW50RWZsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q29udGV4dEhpc3RvcnlDbGllbnRFZmw6OmRpZE5hdmlnYXRlV2l0aE5h
dmlnYXRpb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dEhpc3RvcnlDbGllbnRFZmw6
OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRIaXN0
b3J5Q2xpZW50RWZsOjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QpOgorICAgICAgICAoV2ViS2l0
OjpDb250ZXh0SGlzdG9yeUNsaWVudEVmbDo6ZGlkVXBkYXRlSGlzdG9yeVRpdGxlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZWZsL0ZpbmRDbGllbnRFZmwuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvRm9ybUNsaWVudEVmbC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlTG9h
ZENsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwv
UGFnZUxvYWRDbGllbnRFZmwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VQb2xpY3lD
bGllbnRFZmwuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVBvbGljeUNsaWVudEVm
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50RWZsOjpjbG9zZVBhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlVUlDbGllbnRFZmw6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
VUlDbGllbnRFZmw6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VV
SUNsaWVudEVmbDo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoV2ViS2l0OjpQYWdl
VUlDbGllbnRFZmw6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
VUlDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9QYWdlVUlDbGllbnRFZmwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1Jlc291cmNl
TG9hZENsaWVudEVmbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJv
eHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6V2ViUG9w
dXBNZW51UHJveHlFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6
c2hvd1BvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpo
aWRlUG9wdXBNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5
RWZsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZsOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViUG9wdXBNZW51UHJveHlFZmwpOgorCiAyMDEyLTEwLTI0ICBKb29uZSBIdXIg
IDxqb29uZS5odXJAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW0FDXSBVbnJldmlld2VkLCBm
aXggYnVpbGQgYnJlYWsgd2hlbiBBQyBpcyBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKaW5kZXggNzY0YzQ5NS4uOTI1ZjJmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNw
cApAQCAtNTIsNiArNTIsMzEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3RhdGljIGNv
bnN0IGludCBkZWZhdWx0Q3Vyc29yU2l6ZSA9IDE2OwogCitFd2tWaWV3SW1wbDo6UGFnZVZpZXdN
YXAgRXdrVmlld0ltcGw6OnBhZ2VWaWV3TWFwOworCit2b2lkIEV3a1ZpZXdJbXBsOjphZGRUb1Bh
Z2VWaWV3TWFwKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEV3a1ZpZXdJbXBs
KiB2aWV3SW1wbCA9IEV3a1ZpZXdJbXBsOjpmcm9tRXZhc09iamVjdChld2tWaWV3KTsKKworICAg
IFBhZ2VWaWV3TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gcGFnZVZpZXdNYXAuYWRkKHZpZXdJbXBs
LT53a1BhZ2UoKSwgZXdrVmlldyk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5p
c05ld0VudHJ5KTsKK30KKwordm9pZCBFd2tWaWV3SW1wbDo6cmVtb3ZlRnJvbVBhZ2VWaWV3TWFw
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1w
bCA9IEV3a1ZpZXdJbXBsOjpmcm9tRXZhc09iamVjdChld2tWaWV3KTsKKworICAgIEFTU0VSVChw
YWdlVmlld01hcC5jb250YWlucyh2aWV3SW1wbC0+d2tQYWdlKCkpKTsKKyAgICBwYWdlVmlld01h
cC5yZW1vdmUodmlld0ltcGwtPndrUGFnZSgpKTsKK30KKworY29uc3QgRXZhc19PYmplY3QqIEV3
a1ZpZXdJbXBsOjp2aWV3RnJvbVBhZ2VWaWV3TWFwKGNvbnN0IFdLUGFnZVJlZiBwYWdlKQorewor
ICAgIEFTU0VSVChwYWdlKTsKKworICAgIHJldHVybiBwYWdlVmlld01hcC5nZXQocGFnZSk7Cit9
CisKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19jb21taXQodm9pZCogZGF0YSwgRWNvcmVfSU1GX0Nv
bnRleHQqLCB2b2lkKiBldmVudEluZm8pCiB7CiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21h
cnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwpAQCAtMTU2
LDcgKzE4MSw3IEBAIEV3a19WaWV3X1NtYXJ0X0RhdGEqIEV3a1ZpZXdJbXBsOjpzbWFydERhdGEo
KQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZXZhc19vYmpl
Y3Rfc21hcnRfZGF0YV9nZXQobV92aWV3KSk7CiB9CiAKLUV3a1ZpZXdJbXBsKiBFd2tWaWV3SW1w
bDo6ZnJvbUV2YXNPYmplY3QoRXZhc19PYmplY3QqIHZpZXcpCitFd2tWaWV3SW1wbCogRXdrVmll
d0ltcGw6OmZyb21FdmFzT2JqZWN0KGNvbnN0IEV2YXNfT2JqZWN0KiB2aWV3KQogewogICAgIEFT
U0VSVCh2aWV3KTsKICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19jYXN0PEV3
a19WaWV3X1NtYXJ0X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldCh2aWV3KSk7CkBA
IC0zNTQsNyArMzc5LDcgQEAgdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtTG9hZEVycm9yKEV3a19F
cnJvciogZXJyb3IpCiAgKi8KIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUxvYWRGaW5pc2hlZCgp
CiB7Ci0gICAgZXdrX3ZpZXdfdXJsX3VwZGF0ZShtX3ZpZXcpOworICAgIGluZm9ybVVSTENoYW5n
ZSgpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibG9hZCxm
aW5pc2hlZCIsIDApOwogfQogCkBAIC0zOTUsNyArNDIwLDcgQEAgdm9pZCBFd2tWaWV3SW1wbDo6
aW5mb3JtTG9hZENvbW1pdHRlZCgpCiAgKi8KIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVByb3Zp
c2lvbmFsTG9hZFJlZGlyZWN0KCkKIHsKLSAgICBld2tfdmlld191cmxfdXBkYXRlKG1fdmlldyk7
CisgICAgaW5mb3JtVVJMQ2hhbmdlKCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
Y2FsbChtX3ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsLHJlZGlyZWN0IiwgMCk7CiB9CiAKQEAgLTQw
Nyw3ICs0MzIsNyBAQCB2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Qcm92aXNpb25hbExvYWRSZWRp
cmVjdCgpCiAgKi8KIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybVByb3Zpc2lvbmFsTG9hZFN0YXJ0
ZWQoKQogewotICAgIGV3a192aWV3X3VybF91cGRhdGUobV92aWV3KTsKKyAgICBpbmZvcm1VUkxD
aGFuZ2UoKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImxv
YWQscHJvdmlzaW9uYWwsc3RhcnRlZCIsIDApOwogfQogCkBAIC02OTUsMyArNzIwLDE5NSBAQCB2
b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1CYWNrRm9yd2FyZExpc3RDaGFuZ2UoKQogewogICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiYmFjayxmb3J3YXJkLGxpc3Qs
Y2hhbmdlZCIsIDApOwogfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogV2ViIHByb2Nlc3MgaGFz
IGNyYXNoZWQuCisgKgorICogRW1pdHMgc2lnbmFsOiAid2VicHJvY2VzcyxjcmFzaGVkIiB3aXRo
IHBvaW50ZXIgdG8gY3Jhc2ggaGFuZGxpbmcgYm9vbGVhbi4KKyAqLwordm9pZCBFd2tWaWV3SW1w
bDo6aW5mb3JtV2ViUHJvY2Vzc0NyYXNoZWQoKQoreworICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNl
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAid2VicHJvY2Vz
cyxjcmFzaGVkIiwgJmhhbmRsZWQpOworCisgICAgaWYgKCFoYW5kbGVkKSB7CisgICAgICAgIENT
dHJpbmcgdXJsID0gcGFnZVByb3h5LT51cmxBdFByb2Nlc3NFeGl0KCkudXRmOCgpOworICAgICAg
ICBXQVJOKCJXQVJOSU5HOiBUaGUgd2ViIHByb2Nlc3MgZXhwZXJpZW5jZWQgYSBjcmFzaCBvbiAn
JXMnLlxuIiwgdXJsLmRhdGEoKSk7CisKKyAgICAgICAgLy8gRGlzcGxheSBhbiBlcnJvciBwYWdl
CisgICAgICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQobV92aWV3LCAiVGhlIHdlYiBwcm9j
ZXNzIGhhcyBjcmFzaGVkLiIsIDAsIHVybC5kYXRhKCkpOworICAgIH0KK30KKwordm9pZCBFd2tW
aWV3SW1wbDo6aW5mb3JtQ29udGVudHNTaXplQ2hhbmdlKGNvbnN0IEludFNpemUmIHNpemUpCit7
CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIHBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnQtPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHNpemUpOworI2VuZGlmCit9CisKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX1RFWFRfRElSRUNUSU9OX1JJR0hUX1RPX0xFRlQsIFJUTCk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVXS19URVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJR0hULCBMVFIpOworCit2
b2lkIEV3a1ZpZXdJbXBsOjpyZXF1ZXN0UG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5RWZsKiBw
b3B1cE1lbnUsIGNvbnN0IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlv
biwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0
ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QgPSBzbWFydERhdGEoKTsKKyAgICBBU1NFUlQoc2QtPmFwaSk7CisKKyAgICBBU1NFUlQocG9w
dXBNZW51KTsKKworICAgIGlmICghc2QtPmFwaS0+cG9wdXBfbWVudV9zaG93KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAocG9wdXBNZW51UHJveHkpCisgICAgICAgIGV3a192aWV3X3BvcHVw
X21lbnVfY2xvc2UobV92aWV3KTsKKyAgICBwb3B1cE1lbnVQcm94eSA9IHBvcHVwTWVudTsKKwor
ICAgIEVpbmFfTGlzdCogcG9wdXBJdGVtcyA9IDA7CisgICAgY29uc3Qgc2l6ZV90IHNpemUgPSBp
dGVtcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAg
ICAgIHBvcHVwSXRlbXMgPSBlaW5hX2xpc3RfYXBwZW5kKHBvcHVwSXRlbXMsIEV3a19Qb3B1cF9N
ZW51X0l0ZW06OmNyZWF0ZShpdGVtc1tpXSkubGVha1B0cigpKTsKKyAgICBwb3B1cE1lbnVJdGVt
cyA9IHBvcHVwSXRlbXM7CisKKyAgICBzZC0+YXBpLT5wb3B1cF9tZW51X3Nob3coc2QsIHJlY3Qs
IHN0YXRpY19jYXN0PEV3a19UZXh0X0RpcmVjdGlvbj4odGV4dERpcmVjdGlvbiksIHBhZ2VTY2Fs
ZUZhY3RvciwgcG9wdXBJdGVtcywgc2VsZWN0ZWRJbmRleCk7Cit9CisKKy8qKgorICogQGludGVy
bmFsCisgKiBDYWxscyBhIHNtYXJ0IG1lbWJlciBmdW5jdGlvbiBmb3IgamF2YXNjcmlwdCBhbGVy
dCgpLgorICovCit2b2lkIEV3a1ZpZXdJbXBsOjpyZXF1ZXN0SlNBbGVydFBvcHVwKGNvbnN0IFdL
RWluYVNoYXJlZFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCA9IHNtYXJ0RGF0YSgpOworICAgIEFTU0VSVChzZC0+YXBpKTsKKworICAgIGlmICghc2QtPmFw
aS0+cnVuX2phdmFzY3JpcHRfYWxlcnQpCisgICAgICAgIHJldHVybjsKKworICAgIHNkLT5hcGkt
PnJ1bl9qYXZhc2NyaXB0X2FsZXJ0KHNkLCBtZXNzYWdlKTsKK30KKworLyoqCisgKiBAaW50ZXJu
YWwKKyAqIENhbGxzIGEgc21hcnQgbWVtYmVyIGZ1bmN0aW9uIGZvciBqYXZhc2NyaXB0IGNvbmZp
cm0oKSBhbmQgcmV0dXJucyBhIHZhbHVlIGZyb20gdGhlIGZ1bmN0aW9uLiBSZXR1cm5zIGZhbHNl
IGJ5IGRlZmF1bHQuCisgKi8KK2Jvb2wgRXdrVmlld0ltcGw6OnJlcXVlc3RKU0NvbmZpcm1Qb3B1
cChjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QgPSBzbWFydERhdGEoKTsKKyAgICBBU1NFUlQoc2QtPmFwaSk7CisKKyAgICBp
ZiAoIXNkLT5hcGktPnJ1bl9qYXZhc2NyaXB0X2NvbmZpcm0pCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiBzZC0+YXBpLT5ydW5famF2YXNjcmlwdF9jb25maXJtKHNkLCBtZXNz
YWdlKTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIENhbGxzIGEgc21hcnQgbWVtYmVyIGZ1
bmN0aW9uIGZvciBqYXZhc2NyaXB0IHByb21wdCgpIGFuZCByZXR1cm5zIGEgdmFsdWUgZnJvbSB0
aGUgZnVuY3Rpb24uIFJldHVybnMgbnVsbCBzdHJpbmcgYnkgZGVmYXVsdC4KKyAqLworV0tFaW5h
U2hhcmVkU3RyaW5nIEV3a1ZpZXdJbXBsOjpyZXF1ZXN0SlNQcm9tcHRQb3B1cChjb25zdCBXS0Vp
bmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgZGVmYXVs
dFZhbHVlKQoreworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7Cisg
ICAgQVNTRVJUKHNkLT5hcGkpOworCisgICAgaWYgKCFzZC0+YXBpLT5ydW5famF2YXNjcmlwdF9w
cm9tcHQpCisgICAgICAgIHJldHVybiBXS0VpbmFTaGFyZWRTdHJpbmcoKTsKKworICAgIHJldHVy
biBXS0VpbmFTaGFyZWRTdHJpbmc6OmFkb3B0KHNkLT5hcGktPnJ1bl9qYXZhc2NyaXB0X3Byb21w
dChzZCwgbWVzc2FnZSwgZGVmYXVsdFZhbHVlKSk7Cit9CisKKyNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQorLyoqCisgKiBAaW50ZXJuYWwKKyAqIENhbGxzIGV4Y2VlZGVkX2RhdGFiYXNlX3F1b3Rh
IGNhbGxiYWNrIG9yIGZhbGxzIGJhY2sgdG8gZGVmYXVsdCBiZWhhdmlvciByZXR1cm5zIGRlZmF1
bHQgZGF0YWJhc2UgcXVvdGEuCisgKi8KK3Vuc2lnbmVkIGxvbmcgbG9uZyBFd2tWaWV3SW1wbDo6
aW5mb3JtRGF0YWJhc2VRdW90YVJlYWNoZWQoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEs
IHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50T3JpZ2luVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9u
ZyBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2Up
Cit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzbWFydERhdGEoKTsKKyAgICBBU1NF
UlQoc2QtPmFwaSk7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nIGRlZmF1
bHRRdW90YSA9IDUgKiAxMDI0ICogMTIwNDsgLy8gNSBNQgorICAgIGlmIChzZC0+YXBpLT5leGNl
ZWRlZF9kYXRhYmFzZV9xdW90YSkKKyAgICAgICAgcmV0dXJuIHNkLT5hcGktPmV4Y2VlZGVkX2Rh
dGFiYXNlX3F1b3RhKHNkLCBkYXRhYmFzZU5hbWUudXRmOCgpLmRhdGEoKSwgZGlzcGxheU5hbWUu
dXRmOCgpLmRhdGEoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGN1cnJlbnRE
YXRhYmFzZVVzYWdlLCBleHBlY3RlZFVzYWdlKTsKKworICAgIHJldHVybiBkZWZhdWx0UXVvdGE7
Cit9CisjZW5kaWYKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFRoZSB2aWV3IHdhcyByZXF1ZXN0
ZWQgdG8gdXBkYXRlIHRleHQgaW5wdXQgc3RhdGUKKyAqLwordm9pZCBFd2tWaWV3SW1wbDo6dXBk
YXRlVGV4dElucHV0U3RhdGUoKQoreworICAgIGlmICghaW1mQ29udGV4dCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgY29uc3QgRWRpdG9yU3RhdGUmIGVkaXRvciA9IHBhZ2VQcm94eS0+ZWRpdG9y
U3RhdGUoKTsKKworICAgIGlmIChlZGl0b3IuaXNDb250ZW50RWRpdGFibGUpIHsKKyAgICAgICAg
aWYgKGlzSW1mRm9jdXNlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBlY29yZV9p
bWZfY29udGV4dF9yZXNldChpbWZDb250ZXh0KTsKKyAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRf
Zm9jdXNfaW4oaW1mQ29udGV4dCk7CisgICAgICAgIGlzSW1mRm9jdXNlZCA9IHRydWU7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKCFpc0ltZkZvY3VzZWQpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKGVkaXRvci5oYXNDb21wb3NpdGlvbikKKyAgICAgICAgICAgIHBhZ2VQ
cm94eS0+Y2FuY2VsQ29tcG9zaXRpb24oKTsKKworICAgICAgICBpc0ltZkZvY3VzZWQgPSBmYWxz
ZTsKKyAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfcmVzZXQoaW1mQ29udGV4dCk7CisgICAgICAg
IGVjb3JlX2ltZl9jb250ZXh0X2ZvY3VzX291dChpbWZDb250ZXh0KTsKKyAgICB9Cit9CisKKy8q
KgorICogQGludGVybmFsCisgKiBUaGUgdXJsIG9mIHZpZXcgd2FzIGNoYW5nZWQgYnkgdGhlIGZy
YW1lIGxvYWRlci4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJ1cmwsY2hhbmdlZCIgd2l0aCBwb2lu
dGVyIHRvIG5ldyB1cmwgc3RyaW5nLgorICovCit2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1VUkxD
aGFuZ2UoKQoreworICAgIFN0cmluZyBhY3RpdmVVUkwgPSBwYWdlUHJveHktPmFjdGl2ZVVSTCgp
OworICAgIGlmIChhY3RpdmVVUkwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBD
U3RyaW5nIHJhd0FjdGl2ZVVSTCA9IGFjdGl2ZVVSTC51dGY4KCk7CisgICAgaWYgKHVybCA9PSBy
YXdBY3RpdmVVUkwuZGF0YSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1cmwgPSByYXdBY3Rp
dmVVUkwuZGF0YSgpOworICAgIGNvbnN0IGNoYXIqIGNhbGxiYWNrQXJndW1lbnQgPSBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4odXJsKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG1fdmlldywgInVybCxjaGFuZ2VkIiwgY29uc3RfY2FzdDxjaGFyKj4oY2FsbGJhY2tBcmd1
bWVudCkpOworCisgICAgLy8gVXBkYXRlIHRoZSB2aWV3J3MgZmF2aWNvbi4KKyAgICBpbmZvcm1J
Y29uQ2hhbmdlKCk7Cit9CisKK1dLUGFnZVJlZiBFd2tWaWV3SW1wbDo6Y3JlYXRlTmV3UGFnZSgp
Cit7CisgICAgRXZhc19PYmplY3QqIG5ld0V3a1ZpZXcgPSAwOworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiY3JlYXRlLHdpbmRvdyIsICZuZXdFd2tWaWV3KTsK
KworICAgIGlmICghbmV3RXdrVmlldykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBFd2tWaWV3
SW1wbCogbmV3Vmlld0ltcGwgPSBFd2tWaWV3SW1wbDo6ZnJvbUV2YXNPYmplY3QobmV3RXdrVmll
dyk7CisgICAgQVNTRVJUKG5ld1ZpZXdJbXBsKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxX
S1BhZ2VSZWY+KFdLUmV0YWluKG5ld1ZpZXdJbXBsLT5wYWdlKCkpKTsKK30KKwordm9pZCBFd2tW
aWV3SW1wbDo6Y2xvc2VQYWdlKCkKK3sKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG1fdmlldywgImNsb3NlLHdpbmRvdyIsIDApOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKaW5kZXggNzY1YmVjMS4uZWY2MzIwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCkBAIC0y
Nyw2ICsyNyw5IEBACiAjaW5jbHVkZSA8RWNvcmVfSU1GLmg+CiAjaW5jbHVkZSA8RWNvcmVfSU1G
X0V2YXMuaD4KICNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RGlyZWN0
aW9uLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC02Myw2ICs2Niw3IEBAIGNsYXNzIFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw7CiBjbGFzcyBQYWdlVmlld3BvcnRDb250cm9s
bGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkQ2xpZW50RWZsOwogY2xhc3MgV2ViUGFnZVByb3h5Owor
Y2xhc3MgV2ViUG9wdXBJdGVtOwogY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmw7CiB9CiAKQEAg
LTkyLDcgKzk2LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEV3a1ZpZXdJbXBsKEV2YXNfT2Jq
ZWN0KiB2aWV3KTsKICAgICB+RXdrVmlld0ltcGwoKTsKIAotICAgIHN0YXRpYyBFd2tWaWV3SW1w
bCogZnJvbUV2YXNPYmplY3QoRXZhc19PYmplY3QqIHZpZXcpOworICAgIHN0YXRpYyBFd2tWaWV3
SW1wbCogZnJvbUV2YXNPYmplY3QoY29uc3QgRXZhc19PYmplY3QqIHZpZXcpOwogCiAgICAgaW5s
aW5lIEV2YXNfT2JqZWN0KiB2aWV3KCkgeyByZXR1cm4gbV92aWV3OyB9CiAgICAgV0tQYWdlUmVm
IHdrUGFnZSgpOwpAQCAtMTA0LDYgKzEwOCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRyYXdS
ZWdpb24oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7CiAgICAgdm9pZCBzZXRJbWFnZURh
dGEodm9pZCogaW1hZ2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKTsKIAorICAg
IHN0YXRpYyB2b2lkIGFkZFRvUGFnZVZpZXdNYXAoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
OworICAgIHN0YXRpYyB2b2lkIHJlbW92ZUZyb21QYWdlVmlld01hcChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldyk7CisgICAgc3RhdGljIGNvbnN0IEV2YXNfT2JqZWN0KiB2aWV3RnJvbVBhZ2VW
aWV3TWFwKGNvbnN0IFdLUGFnZVJlZik7CisKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAg
ICAgdm9pZCBlbnRlckZ1bGxTY3JlZW4oKTsKICAgICB2b2lkIGV4aXRGdWxsU2NyZWVuKCk7CkBA
IC0xMjAsNiArMTI4LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc21pc3NDb2xvclBpY2tlcigp
OwogI2VuZGlmCiAKKyAgICBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFnZSgpOworICAgIHZvaWQgY2xv
c2VQYWdlKCk7CisKKyAgICB2b2lkIHJlcXVlc3RQb3B1cE1lbnUoV2ViS2l0OjpXZWJQb3B1cE1l
bnVQcm94eUVmbCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0
aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQb3B1
cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIHVwZGF0ZVRl
eHRJbnB1dFN0YXRlKCk7CisKKyAgICB2b2lkIHJlcXVlc3RKU0FsZXJ0UG9wdXAoY29uc3QgV0tF
aW5hU2hhcmVkU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBib29sIHJlcXVlc3RKU0NvbmZpcm1Qb3B1
cChjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2UpOworICAgIFdLRWluYVNoYXJlZFN0
cmluZyByZXF1ZXN0SlNQcm9tcHRQb3B1cChjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgZGVmYXVsdFZhbHVlKTsKKwogICAgIHZvaWQg
aW5mb3JtRG93bmxvYWRKb2JDYW5jZWxsZWQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQpOwog
ICAgIHZvaWQgaW5mb3JtRG93bmxvYWRKb2JGYWlsZWQoRXdrX0Rvd25sb2FkX0pvYiogZG93bmxv
YWQsIEV3a19FcnJvciogZXJyb3IpOwogICAgIHZvaWQgaW5mb3JtRG93bmxvYWRKb2JGaW5pc2hl
ZChFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCk7CkBAIC0xNTAsNiArMTY4LDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGluZm9ybVRvb2x0aXBUZXh0Q2hhbmdlKGNvbnN0IFN0cmluZyYgdGV4dCk7
CiAgICAgdm9pZCBpbmZvcm1UZXh0Rm91bmQodW5zaWduZWQgbWF0Y2hDb3VudCk7CiAgICAgdm9p
ZCBpbmZvcm1JY29uQ2hhbmdlKCk7CisgICAgdm9pZCBpbmZvcm1XZWJQcm9jZXNzQ3Jhc2hlZCgp
OworICAgIHZvaWQgaW5mb3JtQ29udGVudHNTaXplQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUpOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbmZvcm1EYXRhYmFzZVF1b3RhUmVh
Y2hlZChjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBsb25nIGN1
cnJlbnRPcmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnREYXRhYmFzZVVzYWdl
LCB1bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSk7CisgICAgdm9pZCBpbmZvcm1VUkxD
aGFuZ2UoKTsKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKICAgICB2b2lkIGluZm9ybUludGVu
dFJlcXVlc3QoRXdrX0ludGVudCogZXdrSW50ZW50KTsKQEAgLTIwOCw2ICsyMzAsOCBAQCBwcml2
YXRlOgogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSgpOwogCiAgICAgRXZhc19P
YmplY3QqIG1fdmlldzsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V0tQYWdlUmVmLCBjb25zdCBFdmFz
X09iamVjdCo+IFBhZ2VWaWV3TWFwOworICAgIHN0YXRpYyBQYWdlVmlld01hcCBwYWdlVmlld01h
cDsKIH07CiAKICNlbmRpZiAvLyBFd2tWaWV3SW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggMGJkNjIzYS4uNTM3
ZjRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VD
bGllbnRJbXBsLmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgImV3a19kb3dubG9hZF9q
b2IuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iX3ByaXZhdGUuaCIKICNpbmNsdWRlICJl
d2tfdmlldy5oIgotI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKIAogI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQogI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKQEAg
LTEyMCw3ICsxMTksNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwcm9jZXNzRGlkQ3Jhc2goKQog
ICAgIGlmIChsb2FkUHJvZ3Jlc3MgPj0gMCAmJiBsb2FkUHJvZ3Jlc3MgPCAxKQogICAgICAgICBt
X3ZpZXdJbXBsLT5pbmZvcm1Mb2FkUHJvZ3Jlc3MoMSk7CiAKLSAgICBld2tfdmlld193ZWJwcm9j
ZXNzX2NyYXNoZWQobV92aWV3SW1wbC0+dmlldygpKTsKKyAgICBtX3ZpZXdJbXBsLT5pbmZvcm1X
ZWJQcm9jZXNzQ3Jhc2hlZCgpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRSZWxhdW5j
aFByb2Nlc3MoKQpAQCAtMjE3LDcgKzIxNiw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRvbmVX
aXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCAvKndhc0V2CiAK
IFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQb3B1
cE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIFdlYlBvcHVwTWVu
dVByb3h5RWZsOjpjcmVhdGUobV92aWV3SW1wbC0+dmlldygpLCBwYWdlKTsKKyAgICByZXR1cm4g
V2ViUG9wdXBNZW51UHJveHlFZmw6OmNyZWF0ZShtX3ZpZXdJbXBsLCBwYWdlKTsKIH0KIAogUGFz
c1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4
dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQpAQCAtMjk5LDcgKzI5OCw3IEBAIHZvaWQgUGFnZUNs
aWVudEltcGw6OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3Qg
U3RyaW5nJiwgRmluCiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnVwZGF0ZVRleHRJbnB1dFN0YXRl
KCkKIHsKLSAgICBld2tfdmlld190ZXh0X2lucHV0X3N0YXRlX3VwZGF0ZShtX3ZpZXdJbXBsLT52
aWV3KCkpOworICAgIG1fdmlld0ltcGwtPnVwZGF0ZVRleHRJbnB1dFN0YXRlKCk7CiB9CiAKIHZv
aWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5KiBk
b3dubG9hZCkKQEAgLTMyMCw3ICszMTksNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFu
Z2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKICNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKICAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5n
ZUNvbnRlbnRzU2l6ZShzaXplKTsKICNlbHNlCi0gICAgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9j
aGFuZ2VkKG1fdmlld0ltcGwtPnZpZXcoKSwgc2l6ZSk7CisgICAgbV92aWV3SW1wbC0+aW5mb3Jt
Q29udGVudHNTaXplQ2hhbmdlKHNpemUpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCA1MDZlZDgyLi5iOGJlNjc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0z
MSw3ICszMSw2IEBACiAjaW5jbHVkZSAiUGFnZUxvYWRDbGllbnRFZmwuaCIKICNpbmNsdWRlICJQ
YWdlUG9saWN5Q2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiUGFnZVVJQ2xpZW50RWZsLmgiCi0jaW5j
bHVkZSAiUmVmUHRyRWZsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tDb2xvclBpY2tlclJlc3VsdExpc3Rl
bmVyLmgiCkBAIC0zOSw3ICszOCw2IEBACiAjaW5jbHVkZSAiV0tGaW5kT3B0aW9ucy5oIgogI2lu
Y2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKLSNpbmNsdWRlICJX
S1VSTC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAu
aCIKICNpbmNsdWRlICJXZWJQb3B1cEl0ZW0uaCIKQEAgLTUwLDIwICs0OCwxMSBAQAogI2luY2x1
ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfZmF2aWNvbl9kYXRhYmFz
ZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudF9wcml2YXRlLmgiCi0jaW5jbHVkZSAi
ZXdrX3BvcHVwX21lbnVfaXRlbS5oIgogI2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW1fcHJp
dmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3Jlc291cmNl
LmgiCi0jaW5jbHVkZSAiZXdrX3Jlc291cmNlX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfc2V0
dGluZ3NfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKICNpbmNsdWRl
IDxFY29yZV9FdmFzLmg+Ci0jaW5jbHVkZSA8RWNvcmVfSU1GLmg+Ci0jaW5jbHVkZSA8RWNvcmVf
SU1GX0V2YXMuaD4KLSNpbmNsdWRlIDxFZGplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3Iu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRWZsU2Ny
ZWVuVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VHcm91cC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtMTM1LDMyICsxMjQsNiBAQCBzdGF0aWMgY29u
c3QgY2hhciBFV0tfVklFV19UWVBFX1NUUltdID0gIkVXSzJfVmlldyI7CiAgICAgICAgIH0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKLXR5cGVkZWYgSGFzaE1hcDxjb25zdCBXZWJQ
YWdlUHJveHkqLCBjb25zdCBFdmFzX09iamVjdCo+IFBhZ2VWaWV3TWFwOwotCi1zdGF0aWMgaW5s
aW5lIFBhZ2VWaWV3TWFwJiBwYWdlVmlld01hcCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChQYWdlVmlld01hcCwgbWFwLCAoKSk7Ci0gICAgcmV0dXJuIG1hcDsKLX0KLQotc3RhdGljIGlu
bGluZSB2b2lkIGFkZFRvUGFnZVZpZXdNYXAoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCi17
Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotICAg
IEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwpOwotCi0gICAgUGFn
ZVZpZXdNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBwYWdlVmlld01hcCgpLmFkZChpbXBsLT5wYWdl
KCksIGV3a1ZpZXcpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRy
eSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCByZW1vdmVGcm9tUGFnZVZpZXdNYXAoY29uc3Qg
RXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIGltcGwpOwotCi0gICAgQVNTRVJUKHBhZ2VWaWV3TWFwKCkuY29udGFpbnMoaW1wbC0+
cGFnZSgpKSk7Ci0gICAgcGFnZVZpZXdNYXAoKS5yZW1vdmUoaW1wbC0+cGFnZSgpKTsKLX0KLQog
c3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhKQogewogICAgIGlmIChzbWFydERhdGEtPmNoYW5nZWQuYW55KQpAQCAtNDkxLDcg
KzQ1NCw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGQoRXZhc19PYmplY3QqIGV3
a1ZpZXcpCiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9kZWwoRXZhc19PYmplY3QqIGV3
a1ZpZXcpCiB7Ci0gICAgcmVtb3ZlRnJvbVBhZ2VWaWV3TWFwKGV3a1ZpZXcpOworICAgIEV3a1Zp
ZXdJbXBsOjpyZW1vdmVGcm9tUGFnZVZpZXdNYXAoZXdrVmlldyk7CiAgICAgRVdLX1ZJRVdfU0Rf
R0VUKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CiAgICAgaWYgKHNtYXJ0RGF0YSAmJiBzbWFydERhdGEt
PnByaXYpCiAgICAgICAgIF9ld2tfdmlld19pbXBsX2RlbChzbWFydERhdGEtPnByaXYpOwpAQCAt
Njc4LDcgKzY0MSw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19pbml0aWFsaXplKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBjCiAgICAgZWxzZQogICAgICAg
ICBpbXBsLT5wYWdlUHJveHkgPSB0b0ltcGwoY29udGV4dC0+d2tDb250ZXh0KCkpLT5jcmVhdGVX
ZWJQYWdlKGltcGwtPnBhZ2VDbGllbnQuZ2V0KCksIFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCkuZ2V0
KCkpOwogCi0gICAgYWRkVG9QYWdlVmlld01hcChld2tWaWV3KTsKKyAgICBFd2tWaWV3SW1wbDo6
YWRkVG9QYWdlVmlld01hcChld2tWaWV3KTsKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKICAgICBpbXBsLT5wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCh0cnVlKTsKQEAgLTc5MCwzMiArNzUzLDYgQEAg
RXdrX0NvbnRleHQqIGV3a192aWV3X2NvbnRleHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tW
aWV3KQogICAgIHJldHVybiBpbXBsLT5jb250ZXh0LmdldCgpOwogfQogCi0vKioKLSAqIEBpbnRl
cm5hbAotICogVGhlIHVybCBvZiB2aWV3IHdhcyBjaGFuZ2VkIGJ5IHRoZSBmcmFtZSBsb2FkZXIu
Ci0gKgotICogRW1pdHMgc2lnbmFsOiAidXJsLGNoYW5nZWQiIHdpdGggcG9pbnRlciB0byBuZXcg
dXJsIHN0cmluZy4KLSAqLwotdm9pZCBld2tfdmlld191cmxfdXBkYXRlKEV2YXNfT2JqZWN0KiBl
d2tWaWV3KQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnRE
YXRhKTsKLSAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsKTsK
LQotICAgIFN0cmluZyBhY3RpdmVVUkwgPSBpbXBsLT5wYWdlUHJveHktPmFjdGl2ZVVSTCgpOwot
ICAgIGlmIChhY3RpdmVVUkwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
aW1wbC0+dXJsID09IGFjdGl2ZVVSTC51dGY4KCkuZGF0YSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpbXBsLT51cmwgPSBhY3RpdmVVUkwudXRmOCgpLmRhdGEoKTsKLSAgICBjb25zdCBjaGFy
KiBjYWxsYmFja0FyZ3VtZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGltcGwtPnVybCk7
Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAidXJsLGNoYW5n
ZWQiLCBjb25zdF9jYXN0PGNoYXIqPihjYWxsYmFja0FyZ3VtZW50KSk7Ci0KLSAgICAvLyBVcGRh
dGUgdGhlIHZpZXcncyBmYXZpY29uLgotICAgIGltcGwtPmluZm9ybUljb25DaGFuZ2UoKTsKLX0K
LQogRWluYV9Cb29sIGV3a192aWV3X3VybF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0
IGNoYXIqIHVybCkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgZmFsc2UpOwpAQCAtODIzLDcgKzc2MCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld191
cmxfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB1cmwpCiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVybCwgZmFsc2UpOwogCiAgICAgaW1wbC0+cGFnZVBy
b3h5LT5sb2FkVVJMKHVybCk7Ci0gICAgZXdrX3ZpZXdfdXJsX3VwZGF0ZShld2tWaWV3KTsKKyAg
ICBpbXBsLT5pbmZvcm1VUkxDaGFuZ2UoKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODUw
LDcgKzc4Nyw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19yZWxvYWQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFs
c2UpOwogCiAgICAgaW1wbC0+cGFnZVByb3h5LT5yZWxvYWQoLypyZWxvYWRGcm9tT3JpZ2luKi8g
ZmFsc2UpOwotICAgIGV3a192aWV3X3VybF91cGRhdGUoZXdrVmlldyk7CisgICAgaW1wbC0+aW5m
b3JtVVJMQ2hhbmdlKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTg2MSw3ICs3OTgsNyBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkX2J5cGFzc19jYWNoZShFdmFzX09iamVjdCogZXdr
VmlldykKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBm
YWxzZSk7CiAKICAgICBpbXBsLT5wYWdlUHJveHktPnJlbG9hZCgvKnJlbG9hZEZyb21PcmlnaW4q
LyB0cnVlKTsKLSAgICBld2tfdmlld191cmxfdXBkYXRlKGV3a1ZpZXcpOworICAgIGltcGwtPmlu
Zm9ybVVSTENoYW5nZSgpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05MDYsNDAgKzg0Myw2
IEBAIHZvaWQgZXdrX3ZpZXdfdGV4dF9mb3VuZChFdmFzX09iamVjdCogZXdrVmlldywgdW5zaWdu
ZWQgaW50IG1hdGNoQ291bnQpCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChl
d2tWaWV3LCAidGV4dCxmb3VuZCIsICZtYXRjaENvdW50KTsKIH0KIAotLyoqCi0gKiBAaW50ZXJu
YWwKLSAqIFRoZSB2aWV3IHdhcyByZXF1ZXN0ZWQgdG8gdXBkYXRlIHRleHQgaW5wdXQgc3RhdGUK
LSAqLwotdm9pZCBld2tfdmlld190ZXh0X2lucHV0X3N0YXRlX3VwZGF0ZShFdmFzX09iamVjdCog
ZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0
RGF0YSk7Ci0gICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCk7
Ci0KLSAgICBpZiAoIWltcGwtPmltZkNvbnRleHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNv
bnN0IEVkaXRvclN0YXRlJiBlZGl0b3IgPSBpbXBsLT5wYWdlUHJveHktPmVkaXRvclN0YXRlKCk7
Ci0KLSAgICBpZiAoZWRpdG9yLmlzQ29udGVudEVkaXRhYmxlKSB7Ci0gICAgICAgIGlmIChpbXBs
LT5pc0ltZkZvY3VzZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZWNvcmVfaW1m
X2NvbnRleHRfcmVzZXQoaW1wbC0+aW1mQ29udGV4dCk7Ci0gICAgICAgIGVjb3JlX2ltZl9jb250
ZXh0X2ZvY3VzX2luKGltcGwtPmltZkNvbnRleHQpOwotICAgICAgICBpbXBsLT5pc0ltZkZvY3Vz
ZWQgPSB0cnVlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghaW1wbC0+aXNJbWZGb2N1c2Vk
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChlZGl0b3IuaGFzQ29tcG9zaXRp
b24pCi0gICAgICAgICAgICBpbXBsLT5wYWdlUHJveHktPmNhbmNlbENvbXBvc2l0aW9uKCk7Ci0K
LSAgICAgICAgaW1wbC0+aXNJbWZGb2N1c2VkID0gZmFsc2U7Ci0gICAgICAgIGVjb3JlX2ltZl9j
b250ZXh0X3Jlc2V0KGltcGwtPmltZkNvbnRleHQpOwotICAgICAgICBlY29yZV9pbWZfY29udGV4
dF9mb2N1c19vdXQoaW1wbC0+aW1mQ29udGV4dCk7Ci0gICAgfQotfQotCiBkb3VibGUgZXdrX3Zp
ZXdfbG9hZF9wcm9ncmVzc19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIC0xLjApOwpAQCAt
MTAwMiwyMyArOTA1LDYgQEAgY29uc3QgY2hhciogZXdrX3ZpZXdfdGhlbWVfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIHJldHVybiBpbXBsLT50aGVtZTsKIH0KIAotI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCi0vKioKLSAqIEBpbnRlcm5hbAotICogQ2FsbHMgZXhjZWVkZWRf
ZGF0YWJhc2VfcXVvdGEgY2FsbGJhY2sgb3IgZmFsbHMgYmFjayB0byBkZWZhdWx0IGJlaGF2aW9y
IHJldHVybnMgZGVmYXVsdCBkYXRhYmFzZSBxdW90YS4KLSAqLwotdW5zaWduZWQgbG9uZyBsb25n
IGV3a192aWV3X2RhdGFiYXNlX3F1b3RhX2V4Y2VlZGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBj
b25zdCBjaGFyKiBkYXRhYmFzZU5hbWUsIGNvbnN0IGNoYXIqIGRpc3BsYXlOYW1lLCB1bnNpZ25l
ZCBsb25nIGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdp
blVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVuc2lnbmVk
IGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKLQotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBs
b25nIGxvbmcgZGVmYXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMjA0OyAvLyA1IE1CCi0gICAgaWYg
KHNtYXJ0RGF0YS0+YXBpLT5leGNlZWRlZF9kYXRhYmFzZV9xdW90YSkKLSAgICAgICAgcmV0dXJu
IHNtYXJ0RGF0YS0+YXBpLT5leGNlZWRlZF9kYXRhYmFzZV9xdW90YShzbWFydERhdGEsIGRhdGFi
YXNlTmFtZSwgZGlzcGxheU5hbWUsIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBj
dXJyZW50RGF0YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSk7Ci0KLSAgICByZXR1cm4gZGVmYXVs
dFF1b3RhOwotfQotI2VuZGlmCi0KIEVpbmFfQm9vbCBld2tfdmlld19iYWNrKEV2YXNfT2JqZWN0
KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBmYWxzZSk7CkBAIC0xMDk3LDE2ICs5ODMsMTAgQEAgRWluYV9Cb29sIGV3a192aWV3
X2h0bWxfc3RyaW5nX2xvYWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIGh0bWws
IGNvbnMKICAgICAgICAgaW1wbC0+cGFnZVByb3h5LT5sb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhT
dHJpbmc6OmZyb21VVEY4KGh0bWwpLCBiYXNlVXJsID8gU3RyaW5nOjpmcm9tVVRGOChiYXNlVXJs
KSA6ICIiLCBTdHJpbmc6OmZyb21VVEY4KHVucmVhY2hhYmxlVXJsKSk7CiAgICAgZWxzZQogICAg
ICAgICBpbXBsLT5wYWdlUHJveHktPmxvYWRIVE1MU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoaHRt
bCksIGJhc2VVcmwgPyBTdHJpbmc6OmZyb21VVEY4KGJhc2VVcmwpIDogIiIpOwotICAgIGV3a192
aWV3X3VybF91cGRhdGUoZXdrVmlldyk7CiAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICBpbXBs
LT5pbmZvcm1VUkxDaGFuZ2UoKTsKIAotY29uc3QgRXZhc19PYmplY3QqIGV3a192aWV3X2Zyb21f
cGFnZV9nZXQoY29uc3QgV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UpCi17Ci0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBhZ2UsIDApOwotCi0gICAgcmV0dXJuIHBhZ2VWaWV3
TWFwKCkuZ2V0KHBhZ2UpOworICAgIHJldHVybiB0cnVlOwogfQogCiBjb25zdCBjaGFyKiBld2tf
dmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCkBAIC0xMTM0LDI1ICsxMDE0LDYgQEAgRWluYV9Cb29sIGV3a192aWV3X3NldHRpbmdfZW5j
b2RpbmdfY3VzdG9tX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhcioKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBld2tfdmlld19wYWdlX2Nsb3NlKEV2YXNfT2JqZWN0KiBl
d2tWaWV3KQotewotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywg
ImNsb3NlLHdpbmRvdyIsIDApOwotfQotCi1XS1BhZ2VSZWYgZXdrX3ZpZXdfcGFnZV9jcmVhdGUo
RXZhc19PYmplY3QqIGV3a1ZpZXcpCi17Ci0gICAgRXZhc19PYmplY3QqIG5ld0V3a1ZpZXcgPSAw
OwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImNyZWF0ZSx3
aW5kb3ciLCAmbmV3RXdrVmlldyk7Ci0KLSAgICBpZiAoIW5ld0V3a1ZpZXcpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihuZXdFd2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBuZXdpbXBsLCBmYWxzZSk7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V0tQYWdlUmVmPihX
S1JldGFpbihuZXdpbXBsLT5wYWdlKCkpKTsKLX0KLQogLy8gRXdrRmluZE9wdGlvbnMgc2hvdWxk
IGJlIG1hdGNoZWQgdXAgb3JkZXJzIHdpdGggV2tGaW5kT3B0aW9ucy4KIENPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX0ZJTkRfT1BUSU9OU19DQVNFX0lOU0VOU0lUSVZFLCBrV0tGaW5k
T3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVX
S19GSU5EX09QVElPTlNfQVRfV09SRF9TVEFSVFMsIGtXS0ZpbmRPcHRpb25zQXRXb3JkU3RhcnRz
KTsKQEAgLTExOTUsNDYgKzEwNTYsNiBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF9tYXRjaGVz
X2NvdW50KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiB0ZXh0LCBFdwogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIGV3a192aWV3X2NvbnRlbnRzX3NpemVfY2hhbmdlZChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEpOwotICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIGltcGwpOwotCi0gICAgaW1wbC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+ZGlk
Q2hhbmdlQ29udGVudHNTaXplKHNpemUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXdrVmll
dyk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUpOwotI2VuZGlmCi19Ci0KLUNPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRVdLX1RFWFRfRElSRUNUSU9OX1JJR0hUX1RPX0xFRlQsIFJUTCk7Ci1D
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19URVhUX0RJUkVDVElPTl9MRUZUX1RPX1JJ
R0hULCBMVFIpOwotCi12b2lkIGV3a192aWV3X3BvcHVwX21lbnVfcmVxdWVzdChFdmFzX09iamVj
dCogZXdrVmlldywgV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudSwgY29uc3QgSW50UmVj
dCYgcmVjdCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFj
dG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJ
bmRleCkKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSk7Ci0gICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCk7Ci0g
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOwotCi0gICAgQVNT
RVJUKHBvcHVwTWVudSk7Ci0KLSAgICBpZiAoIXNtYXJ0RGF0YS0+YXBpLT5wb3B1cF9tZW51X3No
b3cpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChpbXBsLT5wb3B1cE1lbnVQcm94eSkKLSAg
ICAgICAgZXdrX3ZpZXdfcG9wdXBfbWVudV9jbG9zZShld2tWaWV3KTsKLSAgICBpbXBsLT5wb3B1
cE1lbnVQcm94eSA9IHBvcHVwTWVudTsKLQotICAgIEVpbmFfTGlzdCogcG9wdXBJdGVtcyA9IDA7
Ci0gICAgc2l6ZV90IHNpemUgPSBpdGVtcy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHBvcHVwSXRlbXMgPSBlaW5hX2xpc3RfYXBwZW5kKHBv
cHVwSXRlbXMsIEV3a19Qb3B1cF9NZW51X0l0ZW06OmNyZWF0ZShpdGVtc1tpXSkubGVha1B0cigp
KTsKLSAgICBpbXBsLT5wb3B1cE1lbnVJdGVtcyA9IHBvcHVwSXRlbXM7Ci0KLSAgICBzbWFydERh
dGEtPmFwaS0+cG9wdXBfbWVudV9zaG93KHNtYXJ0RGF0YSwgcmVjdCwgc3RhdGljX2Nhc3Q8RXdr
X1RleHRfRGlyZWN0aW9uPih0ZXh0RGlyZWN0aW9uKSwgcGFnZVNjYWxlRmFjdG9yLCBwb3B1cEl0
ZW1zLCBzZWxlY3RlZEluZGV4KTsKLX0KLQogRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX21lbnVf
Y2xvc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKQEAgLTEzMDEsNzQgKzExMjIsNiBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2VuYWJsZWRfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQogICAgIHJldHVybiBpbXBsLT5hcmVNb3VzZUV2ZW50c0VuYWJsZWQ7CiB9
CiAKLS8qKgotICogQGludGVybmFsCi0gKiBXZWIgcHJvY2VzcyBoYXMgY3Jhc2hlZC4KLSAqCi0g
KiBFbWl0cyBzaWduYWw6ICJ3ZWJwcm9jZXNzLGNyYXNoZWQiIHdpdGggcG9pbnRlciB0byBjcmFz
aCBoYW5kbGluZyBib29sZWFuLgotICovCi12b2lkIGV3a192aWV3X3dlYnByb2Nlc3NfY3Jhc2hl
ZChFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgaW1wbCk7Ci0KLSAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJ3ZWJwcm9jZXNzLGNyYXNoZWQiLCAm
aGFuZGxlZCk7Ci0KLSAgICBpZiAoIWhhbmRsZWQpIHsKLSAgICAgICAgQ1N0cmluZyB1cmwgPSBp
bXBsLT5wYWdlUHJveHktPnVybEF0UHJvY2Vzc0V4aXQoKS51dGY4KCk7Ci0gICAgICAgIFdBUk4o
IldBUk5JTkc6IFRoZSB3ZWIgcHJvY2VzcyBleHBlcmllbmNlZCBhIGNyYXNoIG9uICclcycuXG4i
LCB1cmwuZGF0YSgpKTsKLQotICAgICAgICAvLyBEaXNwbGF5IGFuIGVycm9yIHBhZ2UKLSAgICAg
ICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZChld2tWaWV3LCAiVGhlIHdlYiBwcm9jZXNzIGhh
cyBjcmFzaGVkLiIsIDAsIHVybC5kYXRhKCkpOwotICAgIH0KLX0KLQotLyoqCi0gKiBAaW50ZXJu
YWwKLSAqIENhbGxzIGEgc21hcnQgbWVtYmVyIGZ1bmN0aW9uIGZvciBqYXZhc2NyaXB0IGFsZXJ0
KCkuCi0gKi8KLXZvaWQgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfYWxlcnQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOwotCi0gICAgaWYgKCFzbWFydERhdGEt
PmFwaS0+cnVuX2phdmFzY3JpcHRfYWxlcnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNtYXJ0
RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9hbGVydChzbWFydERhdGEsIG1lc3NhZ2UpOwotfQot
Ci0vKioKLSAqIEBpbnRlcm5hbAotICogQ2FsbHMgYSBzbWFydCBtZW1iZXIgZnVuY3Rpb24gZm9y
IGphdmFzY3JpcHQgY29uZmlybSgpIGFuZCByZXR1cm5zIGEgdmFsdWUgZnJvbSB0aGUgZnVuY3Rp
b24uIFJldHVybnMgZmFsc2UgYnkgZGVmYXVsdC4KLSAqLwotYm9vbCBld2tfdmlld19ydW5famF2
YXNjcmlwdF9jb25maXJtKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXS0VpbmFTaGFyZWRT
dHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c21hcnREYXRhLT5hcGksIGZhbHNlKTsKLQotICAgIGlmICghc21hcnREYXRhLT5hcGktPnJ1bl9q
YXZhc2NyaXB0X2NvbmZpcm0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBz
bWFydERhdGEtPmFwaS0+cnVuX2phdmFzY3JpcHRfY29uZmlybShzbWFydERhdGEsIG1lc3NhZ2Up
OwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogQ2FsbHMgYSBzbWFydCBtZW1iZXIgZnVuY3Rp
b24gZm9yIGphdmFzY3JpcHQgcHJvbXB0KCkgYW5kIHJldHVybnMgYSB2YWx1ZSBmcm9tIHRoZSBm
dW5jdGlvbi4gUmV0dXJucyBudWxsIHN0cmluZyBieSBkZWZhdWx0LgotICovCi1XS0VpbmFTaGFy
ZWRTdHJpbmcgZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdLRWluYVNoYXJl
ZFN0cmluZyYgZGVmYXVsdFZhbHVlKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgc21hcnREYXRhLCBXS0VpbmFTaGFyZWRTdHJpbmcoKSk7Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLCBXS0VpbmFTaGFyZWRTdHJpbmco
KSk7Ci0KLSAgICBpZiAoIXNtYXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9wcm9tcHQpCi0g
ICAgICAgIHJldHVybiBXS0VpbmFTaGFyZWRTdHJpbmcoKTsKLQotICAgIHJldHVybiBXS0VpbmFT
aGFyZWRTdHJpbmc6OmFkb3B0KHNtYXJ0RGF0YS0+YXBpLT5ydW5famF2YXNjcmlwdF9wcm9tcHQo
c21hcnREYXRhLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUpKTsKLX0KLQogRWluYV9Cb29sIGV3a192
aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCByLCBp
bnQgZywgaW50IGIsIGludCBhKQogewogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5o
CmluZGV4IGNmYmViZjAuLjI4MDM4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTIxLDU3ICsyMSw5IEBACiAjaWZu
ZGVmIGV3a192aWV3X3ByaXZhdGVfaAogI2RlZmluZSBld2tfdmlld19wcml2YXRlX2gKIAotI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgotI2luY2x1ZGUgImV3a192aWV3LmgiCiAjaW5jbHVkZSA8
RXZhcy5oPgotI2luY2x1ZGUgPFdLRWluYVNoYXJlZFN0cmluZy5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvVGV4dERpcmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJbnRSZWN0Owot
Y2xhc3MgSW50U2l6ZTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJQb3B1cEl0
ZW07Ci1jbGFzcyBXZWJQb3B1cE1lbnVQcm94eUVmbDsKLX0KLQotdHlwZWRlZiBzdHJ1Y3QgRXdr
X0Rvd25sb2FkX0pvYiBFd2tfRG93bmxvYWRfSm9iOwotdHlwZWRlZiBzdHJ1Y3QgRXdrX0Zvcm1f
U3VibWlzc2lvbl9SZXF1ZXN0IEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdDsKLXR5cGVkZWYg
c3RydWN0IEV3a19VcmxfUmVxdWVzdCBFd2tfVXJsX1JlcXVlc3Q7Ci10eXBlZGVmIHN0cnVjdCBF
d2tfVXJsX1Jlc3BvbnNlIEV3a19VcmxfUmVzcG9uc2U7Ci10eXBlZGVmIHN0cnVjdCBFd2tfRXJy
b3IgRXdrX0Vycm9yOwotdHlwZWRlZiBzdHJ1Y3QgRXdrX1Jlc291cmNlIEV3a19SZXNvdXJjZTsK
LXR5cGVkZWYgc3RydWN0IEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiBFd2tfTmF2aWdh
dGlvbl9Qb2xpY3lfRGVjaXNpb247Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotdHlwZWRlZiBz
dHJ1Y3QgRXdrX0ludGVudCBFd2tfSW50ZW50OwotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQl9JTlRF
TlRTX1RBRykKLXR5cGVkZWYgc3RydWN0IEV3a19JbnRlbnRfU2VydmljZSBFd2tfSW50ZW50X1Nl
cnZpY2U7Ci0jZW5kaWYKLQotdm9pZCBld2tfdmlld19wYWdlX2Nsb3NlKEV2YXNfT2JqZWN0KiBl
d2tWaWV3KTsKLVdLUGFnZVJlZiBld2tfdmlld19wYWdlX2NyZWF0ZShFdmFzX09iamVjdCogZXdr
Vmlldyk7Ci12b2lkIGV3a192aWV3X3RleHRfaW5wdXRfc3RhdGVfdXBkYXRlKEV2YXNfT2JqZWN0
KiBld2tWaWV3KTsKLXZvaWQgZXdrX3ZpZXdfdXJsX3VwZGF0ZShFdmFzX09iamVjdCogZXdrVmll
dyk7Ci12b2lkIGV3a192aWV3X2NvbnRlbnRzX3NpemVfY2hhbmdlZChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogCiBFdmFzX09iamVjdCogZXdr
X3ZpZXdfYmFzZV9hZGQoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVm
KTsKIAotY29uc3QgRXZhc19PYmplY3QqIGV3a192aWV3X2Zyb21fcGFnZV9nZXQoY29uc3QgV2Vi
S2l0OjpXZWJQYWdlUHJveHkqKTsKLQotdm9pZCBld2tfdmlld19wb3B1cF9tZW51X3JlcXVlc3Qo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVw
TWVudSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRv
dWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlBvcHVwSXRlbT4m
IGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOwotdm9pZCBld2tfdmlld193ZWJwcm9jZXNz
X2NyYXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwotCi12b2lkIGV3a192aWV3X3J1bl9qYXZh
c2NyaXB0X2FsZXJ0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXS0VpbmFTaGFyZWRTdHJp
bmcmIG1lc3NhZ2UpOwotYm9vbCBld2tfdmlld19ydW5famF2YXNjcmlwdF9jb25maXJtKEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG1lc3NhZ2UpOwotV0tF
aW5hU2hhcmVkU3RyaW5nIGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBXS0Vp
bmFTaGFyZWRTdHJpbmcmIGRlZmF1bHRWYWx1ZSk7Ci0KLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQotdW5zaWduZWQgbG9uZyBsb25nIGV3a192aWV3X2RhdGFiYXNlX3F1b3RhX2V4Y2VlZGVkKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBkYXRhYmFzZU5hbWUsIGNvbnN0IGNoYXIq
IGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBs
b25nIGxvbmcgY3VycmVudE9yaWdpblVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudERh
dGFiYXNlVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlKTsKLSNlbmRpZgot
CiAjZW5kaWYgLy8gZXdrX3ZpZXdfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRIaXN0b3J5Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwuY3BwCmluZGV4IDAwNzNl
NjkuLjFhZGE3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvQ29u
dGV4dEhpc3RvcnlDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiQ29udGV4dEhpc3RvcnlDbGllbnRFZmwuaCIKIAogI2luY2x1ZGUgIkRvd25sb2FkUHJveHku
aCIKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2lu
Y2x1ZGUgIldLQ29udGV4dC5oIgogI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgpAQCAt
MzYsNyArMzcsNiBAQAogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX2RhdGFfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNl
X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgQ29udGV4dEhpc3RvcnlDbGllbnRFZmw6
OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdLQ29udGV4dFJlZiwgV0tQYWdlCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxFd2tfTmF2aWdhdGlvbl9EYXRhPiBuYXZpZ2F0aW9u
RGF0YUV3ayA9IEV3a19OYXZpZ2F0aW9uX0RhdGE6OmNyZWF0ZShuYXZpZ2F0aW9uRGF0YSk7Ci0g
ICAgaGlzdG9yeUNsaWVudC0+bV9uYXZpZ2F0ZShld2tfdmlld19mcm9tX3BhZ2VfZ2V0KHRvSW1w
bChwYWdlKSksIG5hdmlnYXRpb25EYXRhRXdrLmdldCgpLCBoaXN0b3J5Q2xpZW50LT5tX3VzZXJE
YXRhKTsKKyAgICBoaXN0b3J5Q2xpZW50LT5tX25hdmlnYXRlKEV3a1ZpZXdJbXBsOjp2aWV3RnJv
bVBhZ2VWaWV3TWFwKHBhZ2UpLCBuYXZpZ2F0aW9uRGF0YUV3ay5nZXQoKSwgaGlzdG9yeUNsaWVu
dC0+bV91c2VyRGF0YSk7CiB9CiAKIHZvaWQgQ29udGV4dEhpc3RvcnlDbGllbnRFZmw6OmRpZFBl
cmZvcm1DbGllbnRSZWRpcmVjdChXS0NvbnRleHRSZWYsIFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJl
ZiBzb3VyY2VVUkwsIFdLVVJMUmVmIGRlc3RpbmF0aW9uVVJMLCBXS0ZyYW1lUmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIENvbnRleHRIaXN0b3J5Q2xp
ZW50RWZsOjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV0tDb250ZXh0UmVmLCBXS1BhZ2VSZWYg
cAogICAgIFdLRWluYVNoYXJlZFN0cmluZyBzb3VyY2VVUkxTdHJpbmcoc291cmNlVVJMKTsKICAg
ICBXS0VpbmFTaGFyZWRTdHJpbmcgZGVzdGluYXRpb25VUkxTdHJpbmcoZGVzdGluYXRpb25VUkwp
OwogCi0gICAgaGlzdG9yeUNsaWVudC0+bV9jbGllbnRSZWRpcmVjdChld2tfdmlld19mcm9tX3Bh
Z2VfZ2V0KHRvSW1wbChwYWdlKSksIHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJp
bmcsIGhpc3RvcnlDbGllbnQtPm1fdXNlckRhdGEpOworICAgIGhpc3RvcnlDbGllbnQtPm1fY2xp
ZW50UmVkaXJlY3QoRXdrVmlld0ltcGw6OnZpZXdGcm9tUGFnZVZpZXdNYXAocGFnZSksIHNvdXJj
ZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcsIGhpc3RvcnlDbGllbnQtPm1fdXNlckRh
dGEpOwogfQogCiB2b2lkIENvbnRleHRIaXN0b3J5Q2xpZW50RWZsOjpkaWRQZXJmb3JtU2VydmVy
UmVkaXJlY3QoV0tDb250ZXh0UmVmLCBXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgc291cmNlVVJM
LCBXS1VSTFJlZiBkZXN0aW5hdGlvblVSTCwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBDb250ZXh0SGlzdG9yeUNsaWVudEVmbDo6ZGlk
UGVyZm9ybVNlcnZlclJlZGlyZWN0KFdLQ29udGV4dFJlZiwgV0tQYWdlUmVmIHAKICAgICBXS0Vp
bmFTaGFyZWRTdHJpbmcgc291cmNlVVJMU3RyaW5nKHNvdXJjZVVSTCk7CiAgICAgV0tFaW5hU2hh
cmVkU3RyaW5nIGRlc3RpbmF0aW9uVVJMU3RyaW5nKGRlc3RpbmF0aW9uVVJMKTsKIAotICAgIGhp
c3RvcnlDbGllbnQtPm1fc2VydmVyUmVkaXJlY3QoZXdrX3ZpZXdfZnJvbV9wYWdlX2dldCh0b0lt
cGwocGFnZSkpLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBoaXN0b3J5
Q2xpZW50LT5tX3VzZXJEYXRhKTsKKyAgICBoaXN0b3J5Q2xpZW50LT5tX3NlcnZlclJlZGlyZWN0
KEV3a1ZpZXdJbXBsOjp2aWV3RnJvbVBhZ2VWaWV3TWFwKHBhZ2UpLCBzb3VyY2VVUkxTdHJpbmcs
IGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBoaXN0b3J5Q2xpZW50LT5tX3VzZXJEYXRhKTsKIH0KIAog
dm9pZCBDb250ZXh0SGlzdG9yeUNsaWVudEVmbDo6ZGlkVXBkYXRlSGlzdG9yeVRpdGxlKFdLQ29u
dGV4dFJlZiwgV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHRpdGxlLCBXS1VSTFJlZiBVUkws
IFdLRnJhbWVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC05Myw3ICs5Myw3IEBAIHZv
aWQgQ29udGV4dEhpc3RvcnlDbGllbnRFZmw6OmRpZFVwZGF0ZUhpc3RvcnlUaXRsZShXS0NvbnRl
eHRSZWYsIFdLUGFnZVJlZiBwYWdlCiAgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHRpdGxlU3RyaW5n
KHRpdGxlKTsKICAgICBXS0VpbmFTaGFyZWRTdHJpbmcgc3RyaW5nVVJMKFVSTCk7CiAKLSAgICBo
aXN0b3J5Q2xpZW50LT5tX3RpdGxlVXBkYXRlZChld2tfdmlld19mcm9tX3BhZ2VfZ2V0KHRvSW1w
bChwYWdlKSksIHRpdGxlU3RyaW5nLCBzdHJpbmdVUkwsIGhpc3RvcnlDbGllbnQtPm1fdXNlckRh
dGEpOworICAgIGhpc3RvcnlDbGllbnQtPm1fdGl0bGVVcGRhdGVkKEV3a1ZpZXdJbXBsOjp2aWV3
RnJvbVBhZ2VWaWV3TWFwKHBhZ2UpLCB0aXRsZVN0cmluZywgc3RyaW5nVVJMLCBoaXN0b3J5Q2xp
ZW50LT5tX3VzZXJEYXRhKTsKIH0KIAogdm9pZCBDb250ZXh0SGlzdG9yeUNsaWVudEVmbDo6cG9w
dWxhdGVWaXNpdGVkTGlua3MoV0tDb250ZXh0UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHAKaW5kZXgg
ZDUyOWI5Yy4uYTQzMWFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9GaW5kQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Zp
bmRDbGllbnRFZmwuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJFd2tWaWV3SW1w
bC5oIgogI2luY2x1ZGUgIldLUGFnZS5oIgotI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L0Zvcm1DbGllbnRFZmwuY3BwCmluZGV4IGQ0ZjFiODguLjc1NDFlMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNwcApAQCAtMjksNyArMjksNiBA
QAogI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAjaW5jbHVk
ZSAiZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tf
dmlld19wcml2YXRlLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuY3BwCmluZGV4IGIwYTQ3NWYu
LjdiZjZiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxv
YWRDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxv
YWRDbGllbnRFZmwuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUGFnZUxvYWRDbGll
bnRFZmwuaCIKIAogI2luY2x1ZGUgIkV3a1ZpZXdJbXBsLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCiAjaW5jbHVkZSAiV0tGcmFtZS5oIgogI2luY2x1ZGUgIldLUGFnZS5oIgogI2luY2x1ZGUg
ImV3a19iYWNrX2ZvcndhcmRfbGlzdF9wcml2YXRlLmgiCkBAIC0xNTIsNyArMTUzLDcgQEAgdm9p
ZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdL
UGFnZVJlZiwgV0tGcmFtZVJlZgogICAgICAgICByZXR1cm47CiAKICAgICBFd2tWaWV3SW1wbCog
dmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3SW1wbCgpOwot
ICAgIGV3a192aWV3X3VybF91cGRhdGUodmlld0ltcGwtPnZpZXcoKSk7CisgICAgdmlld0ltcGwt
PmluZm9ybVVSTENoYW5nZSgpOwogfQogCiBQYWdlTG9hZENsaWVudEVmbDo6UGFnZUxvYWRDbGll
bnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5oCmluZGV4IDZiMzFjYWMuLmI5ODZmZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmgKQEAg
LTI2LDcgKzI2LDggQEAKICNpZm5kZWYgUGFnZUxvYWRDbGllbnRFZmxfaAogI2RlZmluZSBQYWdl
TG9hZENsaWVudEVmbF9oCiAKLSNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCisjaW5jbHVk
ZSAiV0tQYWdlTG9hZFR5cGVzLmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBjbGFzcyBFd2tWaWV3SW1wbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVBvbGljeUNsaWVudEVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VQb2xpY3lDbGllbnRFZmwuY3BwCmluZGV4
IGQ2MjBhNGQuLmE2M2JiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvUGFnZVBvbGljeUNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9QYWdlUG9saWN5Q2xpZW50RWZsLmNwcApAQCAtMjksOSArMjksMTEgQEAKICNpbmNsdWRl
ICJFd2tWaWV3SW1wbC5oIgogI2luY2x1ZGUgIldLRnJhbWUuaCIKICNpbmNsdWRlICJXS0ZyYW1l
UG9saWN5TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAi
ZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCiAjaW5jbHVkZSAiZXdrX25hdmlnYXRp
b25fcG9saWN5X2RlY2lzaW9uX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBTdGF0
dXNDb2Rlcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVBv
bGljeUNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlUG9saWN5
Q2xpZW50RWZsLmgKaW5kZXggNWNhZDRjMy4uNjhkOWE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlUG9saWN5Q2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlUG9saWN5Q2xpZW50RWZsLmgKQEAgLTI2LDcgKzI2LDkg
QEAKICNpZm5kZWYgUGFnZVBvbGljeUNsaWVudEVmbF9oCiAjZGVmaW5lIFBhZ2VQb2xpY3lDbGll
bnRFZmxfaAogCi0jaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorI2luY2x1ZGUgIldLRXZl
bnQuaCIKKyNpbmNsdWRlICJXS1BhZ2VMb2FkVHlwZXMuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dL
QmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIGNsYXNzIEV3a1ZpZXdJbXBs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRF
ZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuY3Bw
CmluZGV4IDdhMzhkNzkuLjRhNGNiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHAKQEAgLTI4LDkgKzI4LDExIEBACiAjaW5jbHVkZSAi
UGFnZVVJQ2xpZW50RWZsLmgiCiAKICNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLRXZlbnQuaCIKICNpbmNsdWRlICJXS1N0cmluZy5o
IgotI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAt
NDEsMjcgKzQzLDI3IEBAIHN0YXRpYyBpbmxpbmUgUGFnZVVJQ2xpZW50RWZsKiB0b1BhZ2VVSUNs
aWVudEVmbChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogCiB2b2lkIFBhZ2VVSUNsaWVudEVmbDo6
Y2xvc2VQYWdlKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBld2tf
dmlld19wYWdlX2Nsb3NlKHRvUGFnZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5tX3ZpZXdJbXBs
LT52aWV3KCkpOworICAgIHRvUGFnZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5tX3ZpZXdJbXBs
LT5jbG9zZVBhZ2UoKTsKIH0KIAogV0tQYWdlUmVmIFBhZ2VVSUNsaWVudEVmbDo6Y3JlYXRlTmV3
UGFnZShXS1BhZ2VSZWYsIFdLVVJMUmVxdWVzdFJlZiwgV0tEaWN0aW9uYXJ5UmVmLCBXS0V2ZW50
TW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7
Ci0gICAgcmV0dXJuIGV3a192aWV3X3BhZ2VfY3JlYXRlKHRvUGFnZVVJQ2xpZW50RWZsKGNsaWVu
dEluZm8pLT5tX3ZpZXdJbXBsLT52aWV3KCkpOworICAgIHJldHVybiB0b1BhZ2VVSUNsaWVudEVm
bChjbGllbnRJbmZvKS0+bV92aWV3SW1wbC0+Y3JlYXRlTmV3UGFnZSgpOwogfQogCiB2b2lkIFBh
Z2VVSUNsaWVudEVmbDo6cnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYg
YWxlcnRUZXh0LCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIGV3
a192aWV3X3J1bl9qYXZhc2NyaXB0X2FsZXJ0KHRvUGFnZVVJQ2xpZW50RWZsKGNsaWVudEluZm8p
LT5tX3ZpZXdJbXBsLT52aWV3KCksIFdLRWluYVNoYXJlZFN0cmluZyhhbGVydFRleHQpKTsKKyAg
ICB0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3SW1wbC0+cmVxdWVzdEpTQWxl
cnRQb3B1cChXS0VpbmFTaGFyZWRTdHJpbmcoYWxlcnRUZXh0KSk7CiB9CiAKIGJvb2wgUGFnZVVJ
Q2xpZW50RWZsOjpydW5KYXZhU2NyaXB0Q29uZmlybShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIG1l
c3NhZ2UsIFdLRnJhbWVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgcmV0dXJu
IGV3a192aWV3X3J1bl9qYXZhc2NyaXB0X2NvbmZpcm0odG9QYWdlVUlDbGllbnRFZmwoY2xpZW50
SW5mbyktPm1fdmlld0ltcGwtPnZpZXcoKSwgV0tFaW5hU2hhcmVkU3RyaW5nKG1lc3NhZ2UpKTsK
KyAgICByZXR1cm4gdG9QYWdlVUlDbGllbnRFZmwoY2xpZW50SW5mbyktPm1fdmlld0ltcGwtPnJl
cXVlc3RKU0NvbmZpcm1Qb3B1cChXS0VpbmFTaGFyZWRTdHJpbmcobWVzc2FnZSkpOwogfQogCiBX
S1N0cmluZ1JlZiBQYWdlVUlDbGllbnRFZmw6OnJ1bkphdmFTY3JpcHRQcm9tcHQoV0tQYWdlUmVm
LCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmluZ1JlZiBkZWZhdWx0VmFsdWUsIFdLRnJhbWVS
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgV0tFaW5hU2hhcmVkU3RyaW5nIHZh
bHVlID0gZXdrX3ZpZXdfcnVuX2phdmFzY3JpcHRfcHJvbXB0KHRvUGFnZVVJQ2xpZW50RWZsKGNs
aWVudEluZm8pLT5tX3ZpZXdJbXBsLT52aWV3KCksIFdLRWluYVNoYXJlZFN0cmluZyhtZXNzYWdl
KSwgV0tFaW5hU2hhcmVkU3RyaW5nKGRlZmF1bHRWYWx1ZSkpOworICAgIFdLRWluYVNoYXJlZFN0
cmluZyB2YWx1ZSA9IHRvUGFnZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5tX3ZpZXdJbXBsLT5y
ZXF1ZXN0SlNQcm9tcHRQb3B1cChXS0VpbmFTaGFyZWRTdHJpbmcobWVzc2FnZSksIFdLRWluYVNo
YXJlZFN0cmluZyhkZWZhdWx0VmFsdWUpKTsKICAgICByZXR1cm4gdmFsdWUgPyBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyh2YWx1ZSkgOiAwOwogfQogCkBAIC04Myw3ICs4NSw4IEBAIHZv
aWQgUGFnZVVJQ2xpZW50RWZsOjpoaWRlQ29sb3JQaWNrZXIoV0tQYWdlUmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiB1bnNpZ25lZCBsb25nIGxv
bmcgUGFnZVVJQ2xpZW50RWZsOjpleGNlZWRlZERhdGFiYXNlUXVvdGEoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS1N0cmluZ1JlZiBkYXRhYmFzZU5hbWUsIFdL
U3RyaW5nUmVmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhLCB1
bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcg
Y3VycmVudERhdGFiYXNlVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHJldHVybiBld2tfdmlld19kYXRhYmFzZV9x
dW90YV9leGNlZWRlZCh0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3SW1wbC0+
dmlldygpLCBXS0VpbmFTaGFyZWRTdHJpbmcoZGF0YWJhc2VOYW1lKSwgV0tFaW5hU2hhcmVkU3Ry
aW5nKGRpc3BsYXlOYW1lKSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGN1cnJl
bnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVzYWdlKTsKKyAgICBFd2tWaWV3SW1wbCogdmlld0lt
cGwgPSB0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3SW1wbDsKKyAgICByZXR1
cm4gdmlld0ltcGwtPmluZm9ybURhdGFiYXNlUXVvdGFSZWFjaGVkKHRvSW1wbChkYXRhYmFzZU5h
bWUpLT5zdHJpbmcoKSwgdG9JbXBsKGRpc3BsYXlOYW1lKS0+c3RyaW5nKCksIGN1cnJlbnRRdW90
YSwgY3VycmVudE9yaWdpblVzYWdlLCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2Fn
ZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9QYWdlVUlDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJ
Q2xpZW50RWZsLmgKaW5kZXggZTVmMTA2Yy4uMGRjODRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5oCkBAIC0yNyw3ICsyNyw4IEBACiAjaWZu
ZGVmIFBhZ2VVSUNsaWVudEVmbF9oCiAjZGVmaW5lIFBhZ2VVSUNsaWVudEVmbF9oCiAKLSNpbmNs
dWRlICJld2tfdmlld19wcml2YXRlLmgiCisjaW5jbHVkZSAiV0tQYWdlLmgiCisjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBjbGFzcyBF
d2tWaWV3SW1wbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVz
b3VyY2VMb2FkQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Jlc291
cmNlTG9hZENsaWVudEVmbC5oCmluZGV4IDAxZWYxMzUuLjdhNTUyNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXNvdXJjZUxvYWRDbGllbnRFZmwuaApAQCAt
MjcsNyArMjcsNiBAQAogI2RlZmluZSBSZXNvdXJjZUxvYWRDbGllbnRFZmxfaAogCiAjaW5jbHVk
ZSAiZXdrX3Jlc291cmNlX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVBy
b3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJv
eHlFZmwuY3BwCmluZGV4IDAzZDUwNGIuLjFiM2RlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCkBAIC0yNiwzMCAr
MjYsMzAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94
eUVmbC5oIgogCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJN
b3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCiAjaW5jbHVkZSAiZXdrX3Zp
ZXcuaCIKLSNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLVdlYlBvcHVwTWVudVByb3h5RWZsOjpXZWJQb3B1cE1lbnVQcm94eUVmbChFdmFzX09i
amVjdCogd2ViVmlldywgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCogY2xpZW50KQorV2ViUG9w
dXBNZW51UHJveHlFZmw6OldlYlBvcHVwTWVudVByb3h5RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1w
bCwgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCogY2xpZW50KQogICAgIDogV2ViUG9wdXBNZW51
UHJveHkoY2xpZW50KQotICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCisgICAgLCBtX3ZpZXdJbXBs
KHZpZXdJbXBsKQogewogfQogCiB2b2lkIFdlYlBvcHVwTWVudVByb3h5RWZsOjpzaG93UG9wdXBN
ZW51KGNvbnN0IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgZG91
YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBj
b25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCiB7Ci0g
ICAgZXdrX3ZpZXdfcG9wdXBfbWVudV9yZXF1ZXN0KG1fd2ViVmlldywgdGhpcywgcmVjdCwgdGV4
dERpcmVjdGlvbiwgcGFnZVNjYWxlRmFjdG9yLCBpdGVtcywgc2VsZWN0ZWRJbmRleCk7CisgICAg
bV92aWV3SW1wbC0+cmVxdWVzdFBvcHVwTWVudSh0aGlzLCByZWN0LCB0ZXh0RGlyZWN0aW9uLCBw
YWdlU2NhbGVGYWN0b3IsIGl0ZW1zLCBzZWxlY3RlZEluZGV4KTsKIH0KIAogdm9pZCBXZWJQb3B1
cE1lbnVQcm94eUVmbDo6aGlkZVBvcHVwTWVudSgpCiB7Ci0gICAgZXdrX3ZpZXdfcG9wdXBfbWVu
dV9jbG9zZShtX3dlYlZpZXcpOworICAgIGV3a192aWV3X3BvcHVwX21lbnVfY2xvc2UobV92aWV3
SW1wbC0+dmlldygpKTsKIH0KIAogdm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6dmFsdWVDaGFu
Z2VkKGludCBuZXdTZWxlY3RlZEluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oCmluZGV4IGFiNDA3NGEuLmU0ZWRiOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlF
ZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5
RWZsLmgKQEAgLTM0LDE1ICszNCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRS
ZWN0OwogfQogCitjbGFzcyBFd2tWaWV3SW1wbDsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmwgOiBwdWJsaWMg
V2ViUG9wdXBNZW51UHJveHkgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBv
cHVwTWVudVByb3h5RWZsPiBjcmVhdGUoRXZhc19PYmplY3QqIHdlYlZpZXcsIFdlYlBvcHVwTWVu
dVByb3h5OjpDbGllbnQqIGNsaWVudCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb3B1cE1l
bnVQcm94eUVmbD4gY3JlYXRlKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCwgV2ViUG9wdXBNZW51UHJv
eHk6OkNsaWVudCogY2xpZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJQb3B1cE1lbnVQcm94eUVmbCh3ZWJWaWV3LCBjbGllbnQpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJQb3B1cE1lbnVQcm94eUVmbCh2aWV3SW1wbCwgY2xpZW50KSk7CiAgICAg
fQogCiAgICAgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJD
b3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8
V2ViUG9wdXBJdGVtPiYsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2Vs
ZWN0ZWRJbmRleCk7CkBAIC01MSw5ICs1Myw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHZhbHVlQ2hh
bmdlZChpbnQgbmV3U2VsZWN0ZWRJbmRleCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViUG9wdXBNZW51
UHJveHlFZmwoRXZhc19PYmplY3QqLCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50Kik7CisgICAg
V2ViUG9wdXBNZW51UHJveHlFZmwoRXdrVmlld0ltcGwqLCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xp
ZW50Kik7CiAKLSAgICBFdmFzX09iamVjdCogbV93ZWJWaWV3OworICAgIEV3a1ZpZXdJbXBsKiBt
X3ZpZXdJbXBsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>