<?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>96767</bug_id>
          
          <creation_ts>2012-09-14 06:32:01 -0700</creation_ts>
          <short_desc>[GTK] Don&apos;t use the C API internally in WebKitWebView</short_desc>
          <delta_ts>2012-09-25 01:34:21 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>96766</blocked>
    
    <blocked>96768</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>mario</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>720682</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-14 06:32:01 -0700</bug_when>
    <thetext>Use the C++ classes instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720683</commentid>
    <comment_count>1</comment_count>
      <attachid>164126</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-14 06:35:04 -0700</bug_when>
    <thetext>Created attachment 164126
Patch

This is the first of a series of commits to stop using the C API internally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720686</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-14 06:38:01 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725591</commentid>
    <comment_count>3</comment_count>
      <attachid>164126</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-09-21 09:55:58 -0700</bug_when>
    <thetext>Comment on attachment 164126
Patch

LGTM!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727349</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-25 00:18:01 -0700</bug_when>
    <thetext>Thank you very much Gustavo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727407</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-25 01:34:21 -0700</bug_when>
    <thetext>Committed r129475: &lt;http://trac.webkit.org/changeset/129475&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164126</attachid>
            <date>2012-09-14 06:35:04 -0700</date>
            <delta_ts>2012-09-24 11:06:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-no-c-api-web-view.diff</filename>
            <type>text/plain</type>
            <size>41924</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmZjY2M2ZiLi5lMDk3NDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMg
QEAKKzIwMTItMDktMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIERvbid0IHVzZSB0aGUgQyBBUEkgaW50ZXJuYWxseSBpbiBXZWJL
aXRXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05Njc2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzaW5nIHRoZSBDKysgY2xhc3NlcyBkaXJlY3RseSBpbnN0ZWFkIG9mIHRoZSBDIEFQSSB3cmFw
cGVycyB3ZQorICAgICAgICBhdm9pZCBhIGxvdCBvZiB0b0ltcGwvdG9BUEkgY2FzdHMsIHN0cmlu
ZyBjb252ZXJzaW9ucyBhbmQKKyAgICAgICAgYWxsb2NhdGlvbnMuIFRoZSBjb2RlIGlzIGFsc28g
YSBsb3Qgc2ltcGxlciBhbmQgZWFzaWVyIHRvIHJlYWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChnZXRDb250ZXh0
TWVudUZyb21Qcm9wb3NlZE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlc291cmNlTG9hZENsaWVudC5jcHA6CisgICAgICAgIChkaWRJbml0aWF0ZUxvYWRGb3JSZXNv
dXJjZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwOgor
ICAgICAgICAoY3JlYXRlTmV3UGFnZSk6CisgICAgICAgIChydW5KYXZhU2NyaXB0UHJvbXB0KToK
KyAgICAgICAgKG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKHByaW50RnJhbWUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuY3BwOgorICAg
ICAgICAod2Via2l0VVJJUmVxdWVzdENyZWF0ZUZvclJlc291cmNlUmVxdWVzdCk6CisgICAgICAg
ICh3ZWJraXRVUklSZXF1ZXN0R2V0UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoYWxsb3dNb2RhbERpYWxvZ3ND
aGFuZ2VkKToKKyAgICAgICAgKHpvb21UZXh0T25seUNoYW5nZWQpOgorICAgICAgICAod2Via2l0
V2ViVmlld1NldFNldHRpbmdzKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZCk6
CisgICAgICAgICh3ZWJraXRXZWJWaWV3VXBkYXRlVVJJKToKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdDcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0UHJv
bXB0KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdNb3VzZVRhcmdldENoYW5nZWQpOgorICAgICAg
ICAod2Via2l0V2ViVmlld1ByaW50RnJhbWUpOgorICAgICAgICAod2Via2l0V2ViVmlld1Jlc291
cmNlTG9hZFN0YXJ0ZWQpOgorICAgICAgICAod2Via2l0V2ViVmlld1BvcHVsYXRlQ29udGV4dE1l
bnUpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKToKKyAgICAgICAgKHdlYmtp
dF93ZWJfdmlld19sb2FkX2h0bWwpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2xvYWRfYWx0
ZXJuYXRlX2h0bWwpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2xvYWRfcGxhaW5fdGV4dCk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbG9hZF9yZXF1ZXN0KToKKyAgICAgICAgKHdlYmtp
dF93ZWJfdmlld19yZWxvYWQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3JlbG9hZF9ieXBh
c3NfY2FjaGUpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3N0b3BfbG9hZGluZyk6CisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfZ29fYmFjayk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
Y2FuX2dvX2JhY2spOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dvX2ZvcndhcmQpOgorICAg
ICAgICAod2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJkKToKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19nZXRfY3VzdG9tX2NoYXJzZXQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3Nl
dF9jdXN0b21fY2hhcnNldCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ29fdG9fYmFja19m
b3J3YXJkX2xpc3RfaXRlbSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdz
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXRfem9vbV9sZXZlbCk6CisgICAgICAgICh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3pvb21fbGV2ZWwpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3
X2Nhbl9leGVjdXRlX2VkaXRpbmdfY29tbWFuZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
ZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3J1bl9q
YXZhc2NyaXB0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfaW5zcGVjdG9yKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUpOgorICAgICAgICAoVmll
d1NhdmVBc3luY0RhdGEpOgorICAgICAgICAoZ2V0Q29udGVudHNBc01IVE1MRGF0YUNhbGxiYWNr
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zYXZlKToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19zYXZlX2ZpbmlzaCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2F2ZV90b19maWxl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6Cisg
ICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3
QmFzZUNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdQcml2YXRlLmg6CisKIDIwMTItMDktMTIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmll
dy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjc4
NzYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
b250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggZjlkNzEzMS4uNDJmOTBiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENv
bnRleHRNZW51Q2xpZW50LmNwcApAQCAtMjgsNyArMjgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogCiBzdGF0aWMgdm9pZCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV0tQYWdl
UmVmLCBXS0FycmF5UmVmIHByb3Bvc2VkTWVudSwgV0tBcnJheVJlZiosIFdLSGl0VGVzdFJlc3Vs
dFJlZiBoaXRUZXN0UmVzdWx0LCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCiB7Ci0gICAgd2Via2l0V2ViVmlld1BvcHVsYXRlQ29udGV4dE1lbnUoV0VCS0lUX1dF
Ql9WSUVXKGNsaWVudEluZm8pLCBwcm9wb3NlZE1lbnUsIGhpdFRlc3RSZXN1bHQpOworICAgIHdl
YmtpdFdlYlZpZXdQb3B1bGF0ZUNvbnRleHRNZW51KFdFQktJVF9XRUJfVklFVyhjbGllbnRJbmZv
KSwgdG9JbXBsKHByb3Bvc2VkTWVudSksIHRvSW1wbChoaXRUZXN0UmVzdWx0KSk7CiB9CiAKIHZv
aWQgYXR0YWNoQ29udGV4dE1lbnVDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlc291
cmNlTG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRSZXNvdXJjZUxvYWRDbGllbnQuY3BwCmluZGV4IGIzODE2MTEuLjQ0NDRhMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlc291cmNlTG9hZENs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVz
b3VyY2VMb2FkQ2xpZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0Owogc3RhdGljIHZvaWQgZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBX
S0ZyYW1lUmVmIHdrRnJhbWUsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV0tVUkxSZXF1
ZXN0UmVmIHdrUmVxdWVzdCwgYm9vbCBwYWdlSXNQcm92aXNpb25hbGx5TG9hZGluZywgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKIHsKICAgICBHUmVmUHRyPFdlYktpdFVSSVJlcXVlc3Q+IHJlcXVl
c3QgPSBhZG9wdEdSZWYod2Via2l0VVJJUmVxdWVzdENyZWF0ZUZvclJlc291cmNlUmVxdWVzdCh0
b0ltcGwod2tSZXF1ZXN0KS0+cmVzb3VyY2VSZXF1ZXN0KCkpKTsKLSAgICB3ZWJraXRXZWJWaWV3
UmVzb3VyY2VMb2FkU3RhcnRlZChXRUJLSVRfV0VCX1ZJRVcoY2xpZW50SW5mbyksIHdrRnJhbWUs
IHJlc291cmNlSWRlbnRpZmllciwgcmVxdWVzdC5nZXQoKSk7CisgICAgd2Via2l0V2ViVmlld1Jl
c291cmNlTG9hZFN0YXJ0ZWQoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pLCB0b0ltcGwod2tG
cmFtZSksIHJlc291cmNlSWRlbnRpZmllciwgcmVxdWVzdC5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGRpZFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50
NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiB3a1JlcXVlc3QsIFdLVVJM
UmVzcG9uc2VSZWYgd2tSZWRpcmVjdFJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQu
Y3BwCmluZGV4IDFkOTg1ZDMuLmQwZDk2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdlKFdL
UGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVlc3RSZWYsIFdLRGljdGlvbmFyeVJlZiB3a1dpbmRvd0Zl
YXR1cmVzLCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24sIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCiB7Ci0gICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQYWdlKFdF
QktJVF9XRUJfVklFVyhjbGllbnRJbmZvKSwgd2tXaW5kb3dGZWF0dXJlcyk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFdLUGFnZVJlZj4odG9BUEkod2Via2l0V2ViVmlld0NyZWF0ZU5ld1BhZ2Uo
V0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pLCB0b0ltcGwod2tXaW5kb3dGZWF0dXJlcykpKSk7
CiB9CiAKIHN0YXRpYyB2b2lkIHNob3dQYWdlKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQpAQCAtNTksOCArNTksOSBAQCBzdGF0aWMgYm9vbCBydW5KYXZhU2NyaXB0Q29u
ZmlybShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tGcmFtZVJlZgogCiBz
dGF0aWMgV0tTdHJpbmdSZWYgcnVuSmF2YVNjcmlwdFByb21wdChXS1BhZ2VSZWYgcGFnZSwgV0tT
dHJpbmdSZWYgbWVzc2FnZSwgV0tTdHJpbmdSZWYgZGVmYXVsdFZhbHVlLCBXS0ZyYW1lUmVmLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHJldHVybiB3ZWJraXRXZWJWaWV3UnVuSmF2
YVNjcmlwdFByb21wdChXRUJLSVRfV0VCX1ZJRVcoY2xpZW50SW5mbyksIHRvSW1wbChtZXNzYWdl
KS0+c3RyaW5nKCkudXRmOCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0b0ltcGwoZGVmYXVsdFZhbHVlKS0+c3RyaW5nKCkudXRmOCgpKTsKKyAgICBDU3Ry
aW5nIHJlc3VsdCA9IHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0UHJvbXB0KFdFQktJVF9XRUJf
VklFVyhjbGllbnRJbmZvKSwgdG9JbXBsKG1lc3NhZ2UpLT5zdHJpbmcoKS51dGY4KCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0ltcGwo
ZGVmYXVsdFZhbHVlKS0+c3RyaW5nKCkudXRmOCgpKTsKKyAgICByZXR1cm4gV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcocmVzdWx0LmRhdGEoKSk7CiB9CiAKIHN0YXRpYyBib29sIHRvb2xi
YXJzQXJlVmlzaWJsZShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAg
LTEzMSwxMiArMTMyLDEyIEBAIHN0YXRpYyB2b2lkIHNldFdpbmRvd0ZyYW1lKFdLUGFnZVJlZiBw
YWdlLCBXS1JlY3QgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiAKIHN0YXRpYyB2b2lk
IG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdLUGFnZVJlZiBwYWdlLCBXS0hpdFRlc3RSZXN1bHRS
ZWYgaGl0VGVzdFJlc3VsdCwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLVHlwZVJlZiB1
c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICB3ZWJraXRXZWJWaWV3TW91
c2VUYXJnZXRDaGFuZ2VkKFdFQktJVF9XRUJfVklFVyhjbGllbnRJbmZvKSwgaGl0VGVzdFJlc3Vs
dCwgd2tFdmVudE1vZGlmaWVyc1RvR2RrTW9kaWZpZXJzKG1vZGlmaWVycykpOworICAgIHdlYmtp
dFdlYlZpZXdNb3VzZVRhcmdldENoYW5nZWQoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pLCB0
b0ltcGwoaGl0VGVzdFJlc3VsdCksIHdrRXZlbnRNb2RpZmllcnNUb0dka01vZGlmaWVycyhtb2Rp
ZmllcnMpKTsKIH0KIAogc3RhdGljIHZvaWQgcHJpbnRGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tG
cmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCopCiB7Ci0gICAgd2Via2l0V2ViVmlld1ByaW50RnJh
bWUoV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgpKSwgZnJhbWUpOwor
ICAgIHdlYmtpdFdlYlZpZXdQcmludEZyYW1lKFdFQktJVF9XRUJfVklFVyh0b0ltcGwocGFnZSkt
PnZpZXdXaWRnZXQoKSksIHRvSW1wbChmcmFtZSkpOwogfQogCiBzdGF0aWMgdm9pZCBydW5PcGVu
UGFuZWwoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLT3BlblBhbmVsUGFyYW1l
dGVyc1JlZiBwYXJhbWV0ZXJzLCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVy
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmNwcAppbmRleCBiNWMyYjRlLi5jODgyY2I3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
UklSZXF1ZXN0LmNwcApAQCAtMTE3LDEzICsxMTcsNiBAQCBXZWJLaXRVUklSZXF1ZXN0KiB3ZWJr
aXRfdXJpX3JlcXVlc3RfbmV3KGNvbnN0IGdjaGFyKiB1cmkpCiAgICAgcmV0dXJuIFdFQktJVF9V
UklfUkVRVUVTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVVJJX1JFUVVFU1QsICJ1cmkiLCB1
cmksIE5VTEwpKTsKIH0KIAotV2ViS2l0VVJJUmVxdWVzdCogd2Via2l0VVJJUmVxdWVzdENyZWF0
ZUZvclJlc291cmNlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCkKLXsKLSAgICBXZWJLaXRVUklSZXF1ZXN0KiB1cmlSZXF1ZXN0ID0gV0VCS0lU
X1VSSV9SRVFVRVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9VUklfUkVRVUVTVCwgTlVMTCkp
OwotICAgIHVyaVJlcXVlc3QtPnByaXYtPnJlc291cmNlUmVxdWVzdCA9IHJlc291cmNlUmVxdWVz
dDsKLSAgICByZXR1cm4gdXJpUmVxdWVzdDsKLX0KLQogLyoqCiAgKiB3ZWJraXRfdXJpX3JlcXVl
c3RfZ2V0X3VyaToKICAqIEByZXF1ZXN0OiBhICNXZWJLaXRVUklSZXF1ZXN0CkBAIC0xMzgsMyAr
MTMxLDE0IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X3VyaShXZWJLaXRV
UklSZXF1ZXN0KiByZXF1ZXN0KQogICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT51cmkuZGF0YSgp
OwogfQogCitXZWJLaXRVUklSZXF1ZXN0KiB3ZWJraXRVUklSZXF1ZXN0Q3JlYXRlRm9yUmVzb3Vy
Y2VSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0
KQoreworICAgIFdlYktpdFVSSVJlcXVlc3QqIHVyaVJlcXVlc3QgPSBXRUJLSVRfVVJJX1JFUVVF
U1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VSSV9SRVFVRVNULCBOVUxMKSk7CisgICAgdXJp
UmVxdWVzdC0+cHJpdi0+cmVzb3VyY2VSZXF1ZXN0ID0gcmVzb3VyY2VSZXF1ZXN0OworICAgIHJl
dHVybiB1cmlSZXF1ZXN0OworfQorCitjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHdl
YmtpdFVSSVJlcXVlc3RHZXRSZXNvdXJjZVJlcXVlc3QoV2ViS2l0VVJJUmVxdWVzdCogdXJpUmVx
dWVzdCkKK3sKKyAgICByZXR1cm4gdXJpUmVxdWVzdC0+cHJpdi0+cmVzb3VyY2VSZXF1ZXN0Owor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJ
UmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFVSSVJlcXVlc3RQcml2YXRlLmgKaW5kZXggZGI4NTI0MmEuLjNhZjAyYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3RQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVz
dFByaXZhdGUuaApAQCAtMzAsNSArMzAsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXF1ZXN0Lmg+CiAKIFdlYktpdFVSSVJlcXVlc3QqIHdlYmtpdFVSSVJlcXVlc3RDcmVhdGVGb3JS
ZXNvdXJjZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Citjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHdlYmtpdFVSSVJlcXVlc3RHZXRSZXNvdXJjZVJlcXVl
c3QoV2ViS2l0VVJJUmVxdWVzdCopOwogCiAjZW5kaWYgLy8gV2ViS2l0VVJJUmVxdWVzdFByaXZh
dGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmNwcAppbmRleCA2ZmVmYjY1Li5lYzI0YTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjMsNiArMjMsNyBAQAog
CiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1l
bnVJdGVtRGF0YS5oIgorI2luY2x1ZGUgIldlYkRhdGEuaCIKICNpbmNsdWRlICJXZWJLaXRCYWNr
Rm9yd2FyZExpc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29udGV4dE1lbnVDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJLaXRDb250ZXh0TWVudUl0ZW1Qcml2YXRlLmgiCkBAIC00Myw2ICs0
NCw3IEBACiAjaW5jbHVkZSAiV2ViS2l0U2NyaXB0RGlhbG9nUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IldlYktpdFNldHRpbmdzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVJQ2xpZW50LmgiCisj
aW5jbHVkZSAiV2ViS2l0VVJJUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklS
ZXNwb25zZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYktpdFdlYkluc3BlY3RvclByaXZhdGUuaCIKQEAgLTUwLDcgKzUyLDYgQEAK
ICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRX
ZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdpbmRvd1Byb3BlcnRpZXNQcml2YXRl
LmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
QVBJQ2FzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0ljb24uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0dPd25QdHJHdGsuaD4KQEAgLTYwLDcgKzYxLDYgQEAKICNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi11c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGVudW0gewpAQCAtMTQz
LDYgKzE0MywxMSBAQCBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07
CiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlldywgd2Via2l0X3dlYl92aWV3LCBXRUJLSVRf
VFlQRV9XRUJfVklFV19CQVNFKQogCitzdGF0aWMgaW5saW5lIFdlYlBhZ2VQcm94eSogZ2V0UGFn
ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFz
ZUdldFBhZ2UocmVpbnRlcnByZXRfY2FzdDxXZWJLaXRXZWJWaWV3QmFzZSo+KHdlYlZpZXcpKTsK
K30KKwogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdMb2FkRmFpbChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJv
ciogZXJyb3IpCiB7CiAgICAgaWYgKGdfZXJyb3JfbWF0Y2hlcyhlcnJvciwgV0VCS0lUX05FVFdP
UktfRVJST1IsIFdFQktJVF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCkKQEAgLTIzMywyNSArMjM4
LDIyIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3UGVybWlzc2lvblJlcXVlc3QoV2Vi
S2l0V2ViVmlldyosIFdlYktpdFBlcm1pc3Npb25SCiAKIHN0YXRpYyB2b2lkIGFsbG93TW9kYWxE
aWFsb2dzQ2hhbmdlZChXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIEdQYXJhbVNwZWMqLCBXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdl
YlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7Ci0gICAgaWYg
KCFwYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgcGFnZS0+c2V0Q2FuUnVuTW9kYWwod2Via2l0
X3NldHRpbmdzX2dldF9hbGxvd19tb2RhbF9kaWFsb2dzKHNldHRpbmdzKSk7CisgICAgZ2V0UGFn
ZSh3ZWJWaWV3KS0+c2V0Q2FuUnVuTW9kYWwod2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19tb2Rh
bF9kaWFsb2dzKHNldHRpbmdzKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHpvb21UZXh0T25seUNoYW5n
ZWQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBHUGFyYW1TcGVjKiwgV2ViS2l0V2ViVmlldyog
d2ViVmlldykKIHsKLSAgICBXS1BhZ2VSZWYgd2tQYWdlID0gdG9BUEkod2Via2l0V2ViVmlld0Jh
c2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKSk7CisgICAgV2ViUGFnZVBy
b3h5KiBwYWdlID0gZ2V0UGFnZSh3ZWJWaWV3KTsKICAgICBnYm9vbGVhbiB6b29tVGV4dE9ubHkg
PSB3ZWJraXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5KHNldHRpbmdzKTsKLSAgICBnZG91
YmxlIHBhZ2Vab29tTGV2ZWwgPSB6b29tVGV4dE9ubHkgPyAxIDogV0tQYWdlR2V0VGV4dFpvb21G
YWN0b3Iod2tQYWdlKTsKLSAgICBnZG91YmxlIHRleHRab29tTGV2ZWwgPSB6b29tVGV4dE9ubHkg
PyBXS1BhZ2VHZXRQYWdlWm9vbUZhY3Rvcih3a1BhZ2UpIDogMTsKLSAgICBXS1BhZ2VTZXRQYWdl
QW5kVGV4dFpvb21GYWN0b3JzKHdrUGFnZSwgcGFnZVpvb21MZXZlbCwgdGV4dFpvb21MZXZlbCk7
CisgICAgZ2RvdWJsZSBwYWdlWm9vbUxldmVsID0gem9vbVRleHRPbmx5ID8gMSA6IHBhZ2UtPnRl
eHRab29tRmFjdG9yKCk7CisgICAgZ2RvdWJsZSB0ZXh0Wm9vbUxldmVsID0gem9vbVRleHRPbmx5
ID8gcGFnZS0+cGFnZVpvb21GYWN0b3IoKSA6IDE7CisgICAgcGFnZS0+c2V0UGFnZUFuZFRleHRa
b29tRmFjdG9ycyhwYWdlWm9vbUxldmVsLCB0ZXh0Wm9vbUxldmVsKTsKIH0KIAotc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld1NldFNldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktp
dFNldHRpbmdzKiBzZXR0aW5ncywgV0tQYWdlUmVmIHdrUGFnZSkKK3N0YXRpYyB2b2lkIHdlYmtp
dFdlYlZpZXdTZXRTZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRTZXR0aW5n
cyogc2V0dGluZ3MpCiB7CiAgICAgd2ViVmlldy0+cHJpdi0+c2V0dGluZ3MgPSBzZXR0aW5nczsK
LSAgICB3ZWJraXRTZXR0aW5nc0F0dGFjaFNldHRpbmdzVG9QYWdlKHdlYlZpZXctPnByaXYtPnNl
dHRpbmdzLmdldCgpLCB3a1BhZ2UpOworICAgIHdlYmtpdFNldHRpbmdzQXR0YWNoU2V0dGluZ3NU
b1BhZ2Uod2ViVmlldy0+cHJpdi0+c2V0dGluZ3MuZ2V0KCksIHRvQVBJKGdldFBhZ2Uod2ViVmll
dykpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHNldHRpbmdzLCAibm90aWZ5OjphbGxvdy1tb2Rh
bC1kaWFsb2dzIiwgR19DQUxMQkFDSyhhbGxvd01vZGFsRGlhbG9nc0NoYW5nZWQpLCB3ZWJWaWV3
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHNldHRpbmdzLCAibm90aWZ5Ojp6b29tLXRleHQtb25s
eSIsIEdfQ0FMTEJBQ0soem9vbVRleHRPbmx5Q2hhbmdlZCksIHdlYlZpZXcpOwogfQpAQCAtMzI0
LDcgKzMyNiw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2
OwogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19C
QVNFKHdlYlZpZXcpOwogCi0gICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKHdlYlZp
ZXdCYXNlLCB3ZWJraXRXZWJDb250ZXh0R2V0V0tDb250ZXh0KHByaXYtPmNvbnRleHQpLCAwKTsK
KyAgICB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2Uod2ViVmlld0Jhc2UsIHRvSW1wbCh3
ZWJraXRXZWJDb250ZXh0R2V0V0tDb250ZXh0KHByaXYtPmNvbnRleHQpKSwgMCk7CiAKICAgICBh
dHRhY2hMb2FkZXJDbGllbnRUb1ZpZXcod2ViVmlldyk7CiAgICAgYXR0YWNoVUlDbGllbnRUb1Zp
ZXcod2ViVmlldyk7CkBAIC0zMzQsMTEgKzMzNiwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJW
aWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIGF0dGFjaENvbnRleHRNZW51Q2xp
ZW50VG9WaWV3KHdlYlZpZXcpOwogICAgIGF0dGFjaEZvcm1DbGllbnRUb1ZpZXcod2ViVmlldyk7
CiAKLSAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2Uod2Vi
Vmlld0Jhc2UpOwotICAgIHByaXYtPmJhY2tGb3J3YXJkTGlzdCA9IGFkb3B0R1JlZih3ZWJraXRC
YWNrRm9yd2FyZExpc3RDcmVhdGUoV0tQYWdlR2V0QmFja0ZvcndhcmRMaXN0KHRvQVBJKHBhZ2Up
KSkpOworICAgIHByaXYtPmJhY2tGb3J3YXJkTGlzdCA9IGFkb3B0R1JlZih3ZWJraXRCYWNrRm9y
d2FyZExpc3RDcmVhdGUodG9BUEkoZ2V0UGFnZSh3ZWJWaWV3KS0+YmFja0ZvcndhcmRMaXN0KCkp
KSk7CiAKICAgICBHUmVmUHRyPFdlYktpdFNldHRpbmdzPiBzZXR0aW5ncyA9IGFkb3B0R1JlZih3
ZWJraXRfc2V0dGluZ3NfbmV3KCkpOwotICAgIHdlYmtpdFdlYlZpZXdTZXRTZXR0aW5ncyh3ZWJW
aWV3LCBzZXR0aW5ncy5nZXQoKSwgdG9BUEkocGFnZSkpOworICAgIHdlYmtpdFdlYlZpZXdTZXRT
ZXR0aW5ncyh3ZWJWaWV3LCBzZXR0aW5ncy5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtp
dFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3Qg
R1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQpAQCAtMTE4NiwxMiArMTE4Nyw3
IEBAIHZvaWQgd2Via2l0V2ViVmlld1NldEVzdGltYXRlZExvYWRQcm9ncmVzcyhXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBkb3VibGUgZXN0aW1hCiAKIHZvaWQgd2Via2l0V2ViVmlld1VwZGF0ZVVS
SShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdl
YmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7Ci0g
ICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrVVJMKEFkb3B0V0ssIFdLUGFnZUNvcHlBY3RpdmVV
UkwodG9BUEkocGFnZSkpKTsKLSAgICBDU3RyaW5nIGFjdGl2ZVVSSTsKLSAgICBpZiAod2tVUkwp
Ci0gICAgICAgIGFjdGl2ZVVSSSA9IHRvSW1wbCh3a1VSTC5nZXQoKSktPnN0cmluZygpLnV0Zjgo
KTsKLQorICAgIENTdHJpbmcgYWN0aXZlVVJJID0gZ2V0UGFnZSh3ZWJWaWV3KS0+YWN0aXZlVVJM
KCkudXRmOCgpOwogICAgIGlmICh3ZWJWaWV3LT5wcml2LT5hY3RpdmVVUkkgPT0gYWN0aXZlVVJJ
KQogICAgICAgICByZXR1cm47CiAKQEAgLTExOTksMTYgKzExOTUsMTcgQEAgdm9pZCB3ZWJraXRX
ZWJWaWV3VXBkYXRlVVJJKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19vYmplY3Rfbm90
aWZ5KEdfT0JKRUNUKHdlYlZpZXcpLCAidXJpIik7CiB9CiAKLVdLUGFnZVJlZiB3ZWJraXRXZWJW
aWV3Q3JlYXRlTmV3UGFnZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXS0RpY3Rpb25hcnlSZWYg
d2tXaW5kb3dGZWF0dXJlcykKK1dlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0NyZWF0ZU5ld1Bh
Z2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywgSW1tdXRhYmxlRGljdGlvbmFyeSogd2luZG93RmVh
dHVyZXMpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogbmV3V2ViVmlldzsKICAgICBnX3NpZ25hbF9l
bWl0KHdlYlZpZXcsIHNpZ25hbHNbQ1JFQVRFXSwgMCwgJm5ld1dlYlZpZXcpOwogICAgIGlmICgh
bmV3V2ViVmlldykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB3ZWJraXRXaW5kb3dQcm9wZXJ0
aWVzVXBkYXRlRnJvbVdLV2luZG93RmVhdHVyZXMobmV3V2ViVmlldy0+cHJpdi0+d2luZG93UHJv
cGVydGllcy5nZXQoKSwgd2tXaW5kb3dGZWF0dXJlcyk7CisgICAgd2Via2l0V2luZG93UHJvcGVy
dGllc1VwZGF0ZUZyb21XS1dpbmRvd0ZlYXR1cmVzKG5ld1dlYlZpZXctPnByaXYtPndpbmRvd1By
b3BlcnRpZXMuZ2V0KCksIHRvQVBJKHdpbmRvd0ZlYXR1cmVzKSk7CiAKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8V0tQYWdlUmVmPihXS1JldGFpbih0b0FQSSh3ZWJraXRXZWJWaWV3QmFzZUdldFBh
Z2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobmV3V2ViVmlldykpKSkpOworICAgIFJlZlB0cjxXZWJQ
YWdlUHJveHk+IG5ld1BhZ2UgPSBnZXRQYWdlKG5ld1dlYlZpZXcpOworICAgIHJldHVybiBuZXdQ
YWdlLnJlbGVhc2UoKS5sZWFrUmVmKCk7CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld1JlYWR5VG9T
aG93UGFnZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpAQCAtMTI0NiwxMiArMTI0MywxMiBAQCBi
b29sIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q29uZmlybShXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBjb25zdCBDU3RyaW5nJiBtZQogICAgIHJldHVybiBkaWFsb2cuY29uZmlybWVkOwogfQog
Ci1XS1N0cmluZ1JlZiB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdFByb21wdChXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBDU3RyaW5nJiBkZWZh
dWx0VGV4dCkKK0NTdHJpbmcgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRQcm9tcHQoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgY29uc3QgQ1N0cmluZyYgbWVzc2FnZSwgY29uc3QgQ1N0cmluZyYg
ZGVmYXVsdFRleHQpCiB7CiAgICAgV2ViS2l0U2NyaXB0RGlhbG9nIGRpYWxvZyhXRUJLSVRfU0NS
SVBUX0RJQUxPR19QUk9NUFQsIG1lc3NhZ2UsIGRlZmF1bHRUZXh0KTsKICAgICBnYm9vbGVhbiBy
ZXR1cm5WYWx1ZTsKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbU0NSSVBUX0RJ
QUxPR10sIDAsICZkaWFsb2csICZyZXR1cm5WYWx1ZSk7Ci0gICAgcmV0dXJuIGRpYWxvZy50ZXh0
LmlzTnVsbCgpID8gMCA6IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGRpYWxvZy50ZXh0
LmRhdGEoKSk7CisgICAgcmV0dXJuIGRpYWxvZy50ZXh0OwogfQogCiB2b2lkIHdlYmtpdFdlYlZp
ZXdNYWtlUG9saWN5RGVjaXNpb24oV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0UG9saWN5
RGVjaXNpb25UeXBlIHR5cGUsIFdlYktpdFBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKQEAgLTEy
NjYsMjAgKzEyNjMsMjAgQEAgdm9pZCB3ZWJraXRXZWJWaWV3TWFrZVBlcm1pc3Npb25SZXF1ZXN0
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFBlcm1pc3Npb24KICAgICBnX3NpZ25hbF9l
bWl0KHdlYlZpZXcsIHNpZ25hbHNbUEVSTUlTU0lPTl9SRVFVRVNUXSwgMCwgcmVxdWVzdCwgJnJl
dHVyblZhbHVlKTsKIH0KIAotdm9pZCB3ZWJraXRXZWJWaWV3TW91c2VUYXJnZXRDaGFuZ2VkKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIFdLSGl0VGVzdFJlc3VsdFJlZiB3a0hpdFRlc3RSZXN1bHQs
IHVuc2lnbmVkIG1vZGlmaWVycykKK3ZvaWQgd2Via2l0V2ViVmlld01vdXNlVGFyZ2V0Q2hhbmdl
ZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0
LCB1bnNpZ25lZCBtb2RpZmllcnMpCiB7CiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYg
PSB3ZWJWaWV3LT5wcml2OwogICAgIGlmIChwcml2LT5tb3VzZVRhcmdldEhpdFRlc3RSZXN1bHQK
ICAgICAgICAgJiYgcHJpdi0+bW91c2VUYXJnZXRNb2RpZmllcnMgPT0gbW9kaWZpZXJzCi0gICAg
ICAgICYmIHdlYmtpdEhpdFRlc3RSZXN1bHRDb21wYXJlKHByaXYtPm1vdXNlVGFyZ2V0SGl0VGVz
dFJlc3VsdC5nZXQoKSwgd2tIaXRUZXN0UmVzdWx0KSkKKyAgICAgICAgJiYgd2Via2l0SGl0VGVz
dFJlc3VsdENvbXBhcmUocHJpdi0+bW91c2VUYXJnZXRIaXRUZXN0UmVzdWx0LmdldCgpLCB0b0FQ
SShoaXRUZXN0UmVzdWx0KSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHByaXYtPm1vdXNlVGFy
Z2V0TW9kaWZpZXJzID0gbW9kaWZpZXJzOwotICAgIHByaXYtPm1vdXNlVGFyZ2V0SGl0VGVzdFJl
c3VsdCA9IGFkb3B0R1JlZih3ZWJraXRIaXRUZXN0UmVzdWx0Q3JlYXRlKHdrSGl0VGVzdFJlc3Vs
dCkpOworICAgIHByaXYtPm1vdXNlVGFyZ2V0SGl0VGVzdFJlc3VsdCA9IGFkb3B0R1JlZih3ZWJr
aXRIaXRUZXN0UmVzdWx0Q3JlYXRlKHRvQVBJKGhpdFRlc3RSZXN1bHQpKSk7CiAgICAgZ19zaWdu
YWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW01PVVNFX1RBUkdFVF9DSEFOR0VEXSwgMCwgcHJpdi0+
bW91c2VUYXJnZXRIaXRUZXN0UmVzdWx0LmdldCgpLCBtb2RpZmllcnMpOwogfQogCi12b2lkIHdl
YmtpdFdlYlZpZXdQcmludEZyYW1lKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdLRnJhbWVSZWYg
d2tGcmFtZSkKK3ZvaWQgd2Via2l0V2ViVmlld1ByaW50RnJhbWUoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgV2ViRnJhbWVQcm94eSogZnJhbWUpCiB7CiAgICAgR1JlZlB0cjxXZWJLaXRQcmludE9w
ZXJhdGlvbj4gcHJpbnRPcGVyYXRpb24gPSBhZG9wdEdSZWYod2Via2l0X3ByaW50X29wZXJhdGlv
bl9uZXcod2ViVmlldykpOwogICAgIGdib29sZWFuIHJldHVyblZhbHVlOwpAQCAtMTI4Nyw3ICsx
Mjg0LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3UHJpbnRGcmFtZShXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBXS0ZyYW1lUmVmIHdrRnJhbWUpCiAgICAgaWYgKHJldHVyblZhbHVlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBXZWJLaXRQcmludE9wZXJhdGlvblJlc3BvbnNlIHJlc3BvbnNlID0gd2Vi
a2l0UHJpbnRPcGVyYXRpb25SdW5EaWFsb2dGb3JGcmFtZShwcmludE9wZXJhdGlvbi5nZXQoKSwg
MCwgdG9JbXBsKHdrRnJhbWUpKTsKKyAgICBXZWJLaXRQcmludE9wZXJhdGlvblJlc3BvbnNlIHJl
c3BvbnNlID0gd2Via2l0UHJpbnRPcGVyYXRpb25SdW5EaWFsb2dGb3JGcmFtZShwcmludE9wZXJh
dGlvbi5nZXQoKSwgMCwgZnJhbWUpOwogICAgIGlmIChyZXNwb25zZSA9PSBXRUJLSVRfUFJJTlRf
T1BFUkFUSU9OX1JFU1BPTlNFX0NBTkNFTCkKICAgICAgICAgcmV0dXJuOwogICAgIGdfc2lnbmFs
X2Nvbm5lY3QocHJpbnRPcGVyYXRpb24ubGVha1JlZigpLCAiZmluaXNoZWQiLCBHX0NBTExCQUNL
KGdfb2JqZWN0X3VucmVmKSwgMCk7CkBAIC0xMzExLDExICsxMzA4LDExIEBAIHN0YXRpYyB2b2lk
IHdhaXRGb3JNYWluUmVzb3VyY2VSZXNwb25zZUlmV2FpdGluZ0ZvclJlc291cmNlKFdlYktpdFdl
YlZpZXcqIHdlYlZpCiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJpdi0+bWFpblJlc291cmNl
LmdldCgpLCAibm90aWZ5OjpyZXNwb25zZSIsIEdfQ0FMTEJBQ0sobWFpblJlc291cmNlUmVzcG9u
c2VDaGFuZ2VkQ2FsbGJhY2spLCB3ZWJWaWV3KTsKIH0KIAotdm9pZCB3ZWJraXRXZWJWaWV3UmVz
b3VyY2VMb2FkU3RhcnRlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXS0ZyYW1lUmVmIHdrRnJh
bWUsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVz
dCkKK3ZvaWQgd2Via2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgV2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmll
ciwgV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0
ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgYm9vbCBpc01haW5SZXNvdXJjZSA9IFdLRnJh
bWVJc01haW5GcmFtZSh3a0ZyYW1lKSAmJiAhcHJpdi0+bWFpblJlc291cmNlOwotICAgIFdlYktp
dFdlYlJlc291cmNlKiByZXNvdXJjZSA9IHdlYmtpdFdlYlJlc291cmNlQ3JlYXRlKHdrRnJhbWUs
IHJlcXVlc3QsIGlzTWFpblJlc291cmNlKTsKKyAgICBib29sIGlzTWFpblJlc291cmNlID0gZnJh
bWUtPmlzTWFpbkZyYW1lKCkgJiYgIXByaXYtPm1haW5SZXNvdXJjZTsKKyAgICBXZWJLaXRXZWJS
ZXNvdXJjZSogcmVzb3VyY2UgPSB3ZWJraXRXZWJSZXNvdXJjZUNyZWF0ZSh0b0FQSShmcmFtZSks
IHJlcXVlc3QsIGlzTWFpblJlc291cmNlKTsKICAgICBpZiAoaXNNYWluUmVzb3VyY2UpIHsKICAg
ICAgICAgcHJpdi0+bWFpblJlc291cmNlID0gcmVzb3VyY2U7CiAgICAgICAgIHdhaXRGb3JNYWlu
UmVzb3VyY2VSZXNwb25zZUlmV2FpdGluZ0ZvclJlc291cmNlKHdlYlZpZXcpOwpAQCAtMTQxOSwx
NyArMTQxNiwxNyBAQCBzdGF0aWMgdm9pZCBjb250ZXh0TWVudURpc21pc3NlZChHdGtNZW51U2hl
bGwqLCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywg
c2lnbmFsc1tDT05URVhUX01FTlVfRElTTUlTU0VEXSwgMCwgTlVMTCk7CiB9CiAKLXZvaWQgd2Vi
a2l0V2ViVmlld1BvcHVsYXRlQ29udGV4dE1lbnUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV0tB
cnJheVJlZiB3a1Byb3Bvc2VkTWVudSwgV0tIaXRUZXN0UmVzdWx0UmVmIHdrSGl0VGVzdFJlc3Vs
dCkKK3ZvaWQgd2Via2l0V2ViVmlld1BvcHVsYXRlQ29udGV4dE1lbnUoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgSW1tdXRhYmxlQXJyYXkqIHByb3Bvc2VkTWVudSwgV2ViSGl0VGVzdFJlc3VsdCog
d2ViSGl0VGVzdFJlc3VsdCkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2Ug
PSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KTsKICAgICBXZWJDb250ZXh0TWVudVByb3h5
R3RrKiBjb250ZXh0TWVudVByb3h5ID0gd2Via2l0V2ViVmlld0Jhc2VHZXRBY3RpdmVDb250ZXh0
TWVudVByb3h5KHdlYlZpZXdCYXNlKTsKICAgICBBU1NFUlQoY29udGV4dE1lbnVQcm94eSk7CiAK
LSAgICBHUmVmUHRyPFdlYktpdENvbnRleHRNZW51PiBjb250ZXh0TWVudSA9IGFkb3B0R1JlZih3
ZWJraXRDb250ZXh0TWVudUNyZWF0ZSh3a1Byb3Bvc2VkTWVudSkpOwotICAgIGlmIChXS0hpdFRl
c3RSZXN1bHRJc0NvbnRlbnRFZGl0YWJsZSh3a0hpdFRlc3RSZXN1bHQpKQorICAgIEdSZWZQdHI8
V2ViS2l0Q29udGV4dE1lbnU+IGNvbnRleHRNZW51ID0gYWRvcHRHUmVmKHdlYmtpdENvbnRleHRN
ZW51Q3JlYXRlKHRvQVBJKHByb3Bvc2VkTWVudSkpKTsKKyAgICBpZiAod2ViSGl0VGVzdFJlc3Vs
dC0+aXNDb250ZW50RWRpdGFibGUoKSkKICAgICAgICAgd2Via2l0V2ViVmlld0NyZWF0ZUFuZEFw
cGVuZElucHV0TWV0aG9kc01lbnVJdGVtKHdlYlZpZXcsIGNvbnRleHRNZW51LmdldCgpKTsKIAot
ICAgIEdSZWZQdHI8V2ViS2l0SGl0VGVzdFJlc3VsdD4gaGl0VGVzdFJlc3VsdCA9IGFkb3B0R1Jl
Zih3ZWJraXRIaXRUZXN0UmVzdWx0Q3JlYXRlKHdrSGl0VGVzdFJlc3VsdCkpOworICAgIEdSZWZQ
dHI8V2ViS2l0SGl0VGVzdFJlc3VsdD4gaGl0VGVzdFJlc3VsdCA9IGFkb3B0R1JlZih3ZWJraXRI
aXRUZXN0UmVzdWx0Q3JlYXRlKHRvQVBJKHdlYkhpdFRlc3RSZXN1bHQpKSk7CiAgICAgR093blB0
cjxHZGtFdmVudD4gY29udGV4dE1lbnVFdmVudCh3ZWJraXRXZWJWaWV3QmFzZVRha2VDb250ZXh0
TWVudUV2ZW50KHdlYlZpZXdCYXNlKSk7CiAKICAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKQEAg
LTE1MDksOSArMTUwNiw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiB1cmkpCiAgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwodXJpKTsK
IAotICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmwoQWRvcHRXSywgV0tVUkxDcmVhdGVXaXRo
VVRGOENTdHJpbmcodXJpKSk7Ci0gICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2ViVmll
d0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKTsKLSAgICBXS1BhZ2VM
b2FkVVJMKHRvQVBJKHBhZ2UpLCB1cmwuZ2V0KCkpOworICAgIGdldFBhZ2Uod2ViVmlldyktPmxv
YWRVUkwoU3RyaW5nOjpmcm9tVVRGOCh1cmkpKTsKICAgICB3ZWJraXRXZWJWaWV3VXBkYXRlVVJJ
KHdlYlZpZXcpOwogfQogCkBAIC0xNTM2LDEwICsxNTMxLDcgQEAgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfbG9hZF9odG1sKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBjb250ZW50
LCBjb24KICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7
CiAgICAgZ19yZXR1cm5faWZfZmFpbChjb250ZW50KTsKIAotICAgIFdlYlBhZ2VQcm94eSogcGFn
ZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3
KSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGNvbnRlbnRSZWYoQWRvcHRXSywgIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnRlbnQpKTsKLSAgICBXS1JldGFpblB0cjxX
S1VSTFJlZj4gYmFzZVVSSVJlZiA9IGJhc2VVUkkgPyBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKGJhc2VVUkkpKSA6IDA7Ci0gICAgV0tQYWdlTG9hZEhUTUxTdHJpbmcodG9BUEko
cGFnZSksIGNvbnRlbnRSZWYuZ2V0KCksIGJhc2VVUklSZWYuZ2V0KCkpOworICAgIGdldFBhZ2Uo
d2ViVmlldyktPmxvYWRIVE1MU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoY29udGVudCksIFN0cmlu
Zzo6ZnJvbVVURjgoYmFzZVVSSSkpOwogfQogCiAvKioKQEAgLTE1NjEsMTEgKzE1NTMsNyBAQCB2
b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX2FsdGVybmF0ZV9odG1sKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIGNvbnN0IGdjaGFyKiBjbwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udGVudCk7CiAg
ICAgZ19yZXR1cm5faWZfZmFpbChjb250ZW50VVJJKTsKIAotICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBodG1sU3RyaW5nKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KGNvbnRlbnQpKTsKLSAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gY29udGVudFVSTChBZG9wdFdL
LCBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb250ZW50VVJJKSk7Ci0gICAgV0tSZXRhaW5Q
dHI8V0tVUkxSZWY+IGJhc2VVUkwgPSBiYXNlVVJJID8gYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhiYXNlVVJJKSkgOiAwOwotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtp
dFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7Ci0gICAg
V0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcodG9BUEkocGFnZSksIGh0bWxTdHJpbmcuZ2V0
KCksIGJhc2VVUkwuZ2V0KCksIGNvbnRlbnRVUkwuZ2V0KCkpOworICAgIGdldFBhZ2Uod2ViVmll
dyktPmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoY29udGVudCksIFN0
cmluZzo6ZnJvbVVURjgoYmFzZVVSSSksIFN0cmluZzo6ZnJvbVVURjgoY29udGVudFVSSSkpOwog
ICAgIHdlYmtpdFdlYlZpZXdVcGRhdGVVUkkod2ViVmlldyk7CiB9CiAKQEAgLTE1ODMsOSArMTU3
MSw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRfcGxhaW5fdGV4dChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogcGxhaW5UCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwocGxhaW5UZXh0
KTsKIAotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShX
RUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHBsYWluVGV4dFJlZihBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhw
bGFpblRleHQpKTsKLSAgICBXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nKHRvQVBJKHBhZ2UpLCBw
bGFpblRleHRSZWYuZ2V0KCkpOworICAgIGdldFBhZ2Uod2ViVmlldyktPmxvYWRQbGFpblRleHRT
dHJpbmcoU3RyaW5nOjpmcm9tVVRGOChwbGFpblRleHQpKTsKIH0KIAogLyoqCkBAIC0xNjAyLDEw
ICsxNTg4LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9yZXF1ZXN0KFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIFdlYktpdFVSSVJlcXVlc3QqIHJlcXUKICAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfVVJJX1JFUVVFU1QocmVxdWVzdCkpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+
IHdrVVJMKEFkb3B0V0ssIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHdlYmtpdF91cmlfcmVx
dWVzdF9nZXRfdXJpKHJlcXVlc3QpKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tVUkxSZXF1ZXN0UmVm
PiB3a1JlcXVlc3QoQWRvcHRXSywgV0tVUkxSZXF1ZXN0Q3JlYXRlV2l0aFdLVVJMKHdrVVJMLmdl
dCgpKSk7Ci0gICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKTsKLSAgICBXS1BhZ2VMb2FkVVJMUmVxdWVz
dCh0b0FQSShwYWdlKSwgd2tSZXF1ZXN0LmdldCgpKTsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLT5s
b2FkVVJMUmVxdWVzdChXZWJVUkxSZXF1ZXN0OjpjcmVhdGUod2Via2l0VVJJUmVxdWVzdEdldFJl
c291cmNlUmVxdWVzdChyZXF1ZXN0KSkubGVha1JlZigpKTsKICAgICB3ZWJraXRXZWJWaWV3VXBk
YXRlVVJJKHdlYlZpZXcpOwogfQogCkBAIC0xNjM3LDcgKzE2MjAsNyBAQCB2b2lkIHdlYmtpdF93
ZWJfdmlld19yZWxvYWQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAKLSAgICBXS1BhZ2VSZWxvYWQo
dG9BUEkod2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZp
ZXcpKSkpOworICAgIGdldFBhZ2Uod2ViVmlldyktPnJlbG9hZChmYWxzZSk7CiAgICAgd2Via2l0
V2ViVmlld1VwZGF0ZVVSSSh3ZWJWaWV3KTsKIH0KIApAQCAtMTY1Miw3ICsxNjM1LDcgQEAgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkX2J5cGFzc19jYWNoZShXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcp
KTsKIAotICAgIFdLUGFnZVJlbG9hZEZyb21PcmlnaW4odG9BUEkod2Via2l0V2ViVmlld0Jhc2VH
ZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKSkpOworICAgIGdldFBhZ2Uod2Vi
VmlldyktPnJlbG9hZCh0cnVlKTsKICAgICB3ZWJraXRXZWJWaWV3VXBkYXRlVVJJKHdlYlZpZXcp
OwogfQogCkBAIC0xNjcwLDcgKzE2NTMsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19zdG9wX2xv
YWRpbmcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAKLSAgICBXS1BhZ2VTdG9wTG9hZGluZyh0b0FQ
SSh3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldykp
KSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS0+c3RvcExvYWRpbmcoKTsKIH0KIAogLyoqCkBAIC0x
Njg1LDcgKzE2NjgsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19nb19iYWNrKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVco
d2ViVmlldykpOwogCi0gICAgV0tQYWdlR29CYWNrKHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNlR2V0
UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSkpKTsKKyAgICBnZXRQYWdlKHdlYlZp
ZXcpLT5nb0JhY2soKTsKICAgICB3ZWJraXRXZWJWaWV3VXBkYXRlVVJJKHdlYlZpZXcpOwogfQog
CkBAIC0xNzAxLDcgKzE2ODQsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2Jh
Y2soV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKIAotICAgIHJldHVybiBXS1BhZ2VD
YW5Hb0JhY2sodG9BUEkod2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19C
QVNFKHdlYlZpZXcpKSkpOworICAgIHJldHVybiBnZXRQYWdlKHdlYlZpZXcpLT5jYW5Hb0JhY2so
KTsKIH0KIAogLyoqCkBAIC0xNzE2LDcgKzE2OTksNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19n
b19mb3J3YXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogCi0gICAgV0tQYWdlR29Gb3J3YXJkKHRv
QVBJKHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3
KSkpKTsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLT5nb0ZvcndhcmQoKTsKICAgICB3ZWJraXRXZWJW
aWV3VXBkYXRlVVJJKHdlYlZpZXcpOwogfQogCkBAIC0xNzMyLDcgKzE3MTUsNyBAQCBnYm9vbGVh
biB3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2ZvcndhcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
IHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyks
IEZBTFNFKTsKIAotICAgIHJldHVybiBXS1BhZ2VDYW5Hb0ZvcndhcmQodG9BUEkod2Via2l0V2Vi
Vmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKSkpOworICAgIHJl
dHVybiBnZXRQYWdlKHdlYlZpZXcpLT5jYW5Hb0ZvcndhcmQoKTsKIH0KIAogLyoqCkBAIC0xODEz
LDEyICsxNzk2LDExIEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2N1c3RvbV9j
aGFyc2V0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCAwKTsKIAotICAgIFdlYlBhZ2VQcm94eSog
cGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJW
aWV3KSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrQ3VzdG9tRW5jb2RpbmcoQWRv
cHRXSywgV0tQYWdlQ29weUN1c3RvbVRleHRFbmNvZGluZ05hbWUodG9BUEkocGFnZSkpKTsKLSAg
ICBpZiAoV0tTdHJpbmdJc0VtcHR5KHdrQ3VzdG9tRW5jb2RpbmcuZ2V0KCkpKQorICAgIFN0cmlu
ZyBjdXN0b21UZXh0RW5jb2RpbmcgPSBnZXRQYWdlKHdlYlZpZXcpLT5jdXN0b21UZXh0RW5jb2Rp
bmdOYW1lKCk7CisgICAgaWYgKGN1c3RvbVRleHRFbmNvZGluZy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgd2ViVmlldy0+cHJpdi0+Y3VzdG9tVGV4dEVuY29kaW5nID0gdG9J
bXBsKHdrQ3VzdG9tRW5jb2RpbmcuZ2V0KCkpLT5zdHJpbmcoKS51dGY4KCk7CisgICAgd2ViVmll
dy0+cHJpdi0+Y3VzdG9tVGV4dEVuY29kaW5nID0gY3VzdG9tVGV4dEVuY29kaW5nLnV0ZjgoKTsK
ICAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+Y3VzdG9tVGV4dEVuY29kaW5nLmRhdGEoKTsKIH0K
IApAQCAtMTgzNyw5ICsxODE5LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2N1c3RvbV9j
aGFyc2V0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBjaGEKIHsKICAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAKLSAgICBXZWJQ
YWdlUHJveHkqIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVX
X0JBU0Uod2ViVmlldykpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a0VuY29kaW5n
TmFtZSA9IGNoYXJzZXQgPyBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNo
YXJzZXQpKSA6IDA7Ci0gICAgV0tQYWdlU2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZSh0b0FQSShw
YWdlKSwgd2tFbmNvZGluZ05hbWUuZ2V0KCkpOworICAgIGdldFBhZ2Uod2ViVmlldyktPnNldEN1
c3RvbVRleHRFbmNvZGluZ05hbWUoU3RyaW5nOjpmcm9tVVRGOChjaGFyc2V0KSk7CiB9CiAKIC8q
KgpAQCAtMTg4OSw4ICsxODY5LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ29fdG9fYmFja19m
b3J3YXJkX2xpc3RfaXRlbShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXQKICAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfQkFDS19GT1JXQVJEX0xJU1RfSVRFTShsaXN0SXRlbSkpOwogCi0g
ICAgV0tQYWdlR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0odG9BUEkod2Via2l0V2ViVmlld0Jhc2VH
ZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2Via2l0QmFja0ZvcndhcmRMaXN0SXRlbUdldFdLSXRlbShsaXN0
SXRlbSkpOworICAgIGdldFBhZ2Uod2ViVmlldyktPmdvVG9CYWNrRm9yd2FyZEl0ZW0odG9JbXBs
KHdlYmtpdEJhY2tGb3J3YXJkTGlzdEl0ZW1HZXRXS0l0ZW0obGlzdEl0ZW0pKSk7CiAgICAgd2Vi
a2l0V2ViVmlld1VwZGF0ZVVSSSh3ZWJWaWV3KTsKIH0KIApAQCAtMTkxNCw3ICsxODkzLDcgQEAg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IFdlYktpdFNldHRpbmdzKiBzZXR0aW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgd2Via2l0V2Vi
Vmlld0Rpc2Nvbm5lY3RTZXR0aW5nc1NpZ25hbEhhbmRsZXJzKHdlYlZpZXcpOwotICAgIHdlYmtp
dFdlYlZpZXdTZXRTZXR0aW5ncyh3ZWJWaWV3LCBzZXR0aW5ncywgdG9BUEkod2Via2l0V2ViVmll
d0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKSkpOworICAgIHdlYmtp
dFdlYlZpZXdTZXRTZXR0aW5ncyh3ZWJWaWV3LCBzZXR0aW5ncyk7CiB9CiAKIC8qKgpAQCAtMTk3
NSwxMSArMTk1NCwxMSBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfem9vbV9sZXZlbChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBnZG91YmxlIHpvb21MZXZlbCkKICAgICBpZiAod2Via2l0X3dl
Yl92aWV3X2dldF96b29tX2xldmVsKHdlYlZpZXcpID09IHpvb21MZXZlbCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgV0tQYWdlUmVmIHdrUGFnZSA9IHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNlR2V0
UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSkpOworICAgIFdlYlBhZ2VQcm94eSog
cGFnZSA9IGdldFBhZ2Uod2ViVmlldyk7CiAgICAgaWYgKHdlYmtpdF9zZXR0aW5nc19nZXRfem9v
bV90ZXh0X29ubHkod2ViVmlldy0+cHJpdi0+c2V0dGluZ3MuZ2V0KCkpKQotICAgICAgICBXS1Bh
Z2VTZXRUZXh0Wm9vbUZhY3Rvcih3a1BhZ2UsIHpvb21MZXZlbCk7CisgICAgICAgIHBhZ2UtPnNl
dFRleHRab29tRmFjdG9yKHpvb21MZXZlbCk7CiAgICAgZWxzZQotICAgICAgICBXS1BhZ2VTZXRQ
YWdlWm9vbUZhY3Rvcih3a1BhZ2UsIHpvb21MZXZlbCk7CisgICAgICAgIHBhZ2UtPnNldFBhZ2Va
b29tRmFjdG9yKHpvb21MZXZlbCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHdlYlZp
ZXcpLCAiem9vbS1sZXZlbCIpOwogfQogCkBAIC0xOTk2LDkgKzE5NzUsOSBAQCBnZG91YmxlIHdl
YmtpdF93ZWJfdmlld19nZXRfem9vbV9sZXZlbChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgMSk7
CiAKLSAgICBXS1BhZ2VSZWYgd2tQYWdlID0gdG9BUEkod2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKSk7CisgICAgV2ViUGFnZVByb3h5KiBwYWdl
ID0gZ2V0UGFnZSh3ZWJWaWV3KTsKICAgICBnYm9vbGVhbiB6b29tVGV4dE9ubHkgPSB3ZWJraXRf
c2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5KHdlYlZpZXctPnByaXYtPnNldHRpbmdzLmdldCgp
KTsKLSAgICByZXR1cm4gem9vbVRleHRPbmx5ID8gV0tQYWdlR2V0VGV4dFpvb21GYWN0b3Iod2tQ
YWdlKSA6IFdLUGFnZUdldFBhZ2Vab29tRmFjdG9yKHdrUGFnZSk7CisgICAgcmV0dXJuIHpvb21U
ZXh0T25seSA/IHBhZ2UtPnRleHRab29tRmFjdG9yKCkgOiBwYWdlLT5wYWdlWm9vbUZhY3Rvcigp
OwogfQogCiBzdHJ1Y3QgVmFsaWRhdGVFZGl0aW5nQ29tbWFuZEFzeW5jRGF0YSB7CkBAIC0yMDQz
LDkgKzIwMjIsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19jYW5fZXhlY3V0ZV9lZGl0aW5nX2Nv
bW1hbmQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgYwogICAgIGRhdGEtPmNhbmNlbGxh
YmxlID0gY2FuY2VsbGFibGU7CiAgICAgZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3NldF9vcF9yZXNf
Z3BvaW50ZXIocmVzdWx0LCBkYXRhLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pihk
ZXN0cm95VmFsaWRhdGVFZGl0aW5nQ29tbWFuZEFzeW5jRGF0YSkpOwogCi0gICAgV2ViUGFnZVBy
b3h5KiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNF
KHdlYlZpZXcpKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tDb21tYW5kKEFkb3B0
V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbW1hbmQpKTsKLSAgICBXS1BhZ2VW
YWxpZGF0ZUNvbW1hbmQodG9BUEkocGFnZSksIHdrQ29tbWFuZC5nZXQoKSwgcmVzdWx0LCBkaWRW
YWxpZGF0ZUNvbW1hbmQpOworICAgIGdldFBhZ2Uod2ViVmlldyktPnZhbGlkYXRlQ29tbWFuZChT
dHJpbmc6OmZyb21VVEY4KGNvbW1hbmQpLCBWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjazo6Y3JlYXRl
KHJlc3VsdCwgZGlkVmFsaWRhdGVDb21tYW5kKSk7CiB9CiAKIC8qKgpAQCAtMjA4Nyw5ICsyMDY0
LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgY29uc3QgY2hhcioKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChjb21tYW5kKTsK
IAotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJL
SVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IHdrQ29tbWFuZChBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb21tYW5k
KSk7Ci0gICAgV0tQYWdlRXhlY3V0ZUNvbW1hbmQodG9BUEkocGFnZSksIHdrQ29tbWFuZC5nZXQo
KSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS0+ZXhlY3V0ZUVkaXRDb21tYW5kKFN0cmluZzo6ZnJv
bVVURjgoY29tbWFuZCkpOwogfQogCiAvKioKQEAgLTIxNzgsMTQgKzIxNTMsMTQgQEAgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29u
c3QgZ2NoYXIqIHNjcmlwdCwKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
Vyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzY3JpcHQpOwogCi0gICAgV0tQYWdl
UmVmIHdrUGFnZSA9IHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJ
RVdfQkFTRSh3ZWJWaWV3KSkpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1Njcmlw
dCA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0KSk7CiAgICAg
R1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1bHQgPSBnX3NpbXBsZV9hc3luY19yZXN1bHRfbmV3KEdf
T0JKRUNUKHdlYlZpZXcpLCBjYWxsYmFjaywgdXNlckRhdGEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
Z3BvaW50ZXI+KHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdCkpOwogICAgIFJ1bkphdmFT
Y3JpcHRBc3luY0RhdGEqIGRhdGEgPSBjcmVhdGVSdW5KYXZhU2NyaXB0QXN5bmNEYXRhKCk7CiAg
ICAgZGF0YS0+Y2FuY2VsbGFibGUgPSBjYW5jZWxsYWJsZTsKICAgICBnX3NpbXBsZV9hc3luY19y
ZXN1bHRfc2V0X29wX3Jlc19ncG9pbnRlcihyZXN1bHQsIGRhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8
R0Rlc3Ryb3lOb3RpZnk+KGRlc3Ryb3lSdW5KYXZhU2NyaXB0QXN5bmNEYXRhKSk7Ci0gICAgV0tQ
YWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHdrUGFnZSwgd2tTY3JpcHQuZ2V0KCksIHJlc3Vs
dCwgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayk7CisKKyAgICBnZXRQYWdlKHdl
YlZpZXcpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY3JpcHRW
YWx1ZUNhbGxiYWNrOjpjcmVhdGUocmVzdWx0LCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENh
bGxiYWNrKSk7CiB9CiAKIC8qKgpAQCAtMjMxOCwxMCArMjI5Myw4IEBAIFdlYktpdFdlYkluc3Bl
Y3Rvciogd2Via2l0X3dlYl92aWV3X2dldF9pbnNwZWN0b3IoV2ViS2l0V2ViVmlldyogd2ViVmll
dykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmll
dyksIDApOwogCi0gICAgaWYgKCF3ZWJWaWV3LT5wcml2LT5pbnNwZWN0b3IpIHsKLSAgICAgICAg
V2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJf
VklFV19CQVNFKHdlYlZpZXcpKTsKLSAgICAgICAgd2ViVmlldy0+cHJpdi0+aW5zcGVjdG9yID0g
YWRvcHRHUmVmKHdlYmtpdFdlYkluc3BlY3RvckNyZWF0ZSh0b0FQSShwYWdlLT5pbnNwZWN0b3Io
KSkpKTsKLSAgICB9CisgICAgaWYgKCF3ZWJWaWV3LT5wcml2LT5pbnNwZWN0b3IpCisgICAgICAg
IHdlYlZpZXctPnByaXYtPmluc3BlY3RvciA9IGFkb3B0R1JlZih3ZWJraXRXZWJJbnNwZWN0b3JD
cmVhdGUodG9BUEkoZ2V0UGFnZSh3ZWJWaWV3KS0+aW5zcGVjdG9yKCkpKSk7CiAKICAgICByZXR1
cm4gd2ViVmlldy0+cHJpdi0+aW5zcGVjdG9yLmdldCgpOwogfQpAQCAtMjM0MCwxMiArMjMxMywx
MSBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwobWltZVR5cGUsIEZBTFNFKTsKIAotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdl
YlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7Ci0gICAgcmV0
dXJuIHBhZ2UtPmNhblNob3dNSU1FVHlwZShTdHJpbmc6OmZyb21VVEY4KG1pbWVUeXBlKSk7Cisg
ICAgcmV0dXJuIGdldFBhZ2Uod2ViVmlldyktPmNhblNob3dNSU1FVHlwZShTdHJpbmc6OmZyb21V
VEY4KG1pbWVUeXBlKSk7CiB9CiAKIHN0cnVjdCBWaWV3U2F2ZUFzeW5jRGF0YSB7Ci0gICAgV0tS
ZXRhaW5QdHI8V0tEYXRhUmVmPiB3a0RhdGE7CisgICAgUmVmUHRyPFdlYkRhdGE+IHdlYkRhdGE7
CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZTsKICAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gY2Fu
Y2VsbGFibGU7CiB9OwpAQCAtMjM3NCwxMyArMjM0NiwxNCBAQCBzdGF0aWMgdm9pZCBnZXRDb250
ZW50c0FzTUhUTUxEYXRhQ2FsbGJhY2soV0tEYXRhUmVmIHdrRGF0YSwgV0tFcnJvclJlZiwgdm9p
ZCogYwogICAgIGVsc2UgewogICAgICAgICAvLyBXZSBuZWVkIHRvIHJldGFpbiB0aGUgZGF0YSB1
bnRpbCB0aGUgYXN5bmNyb25vdXMgcHJvY2VzcwogICAgICAgICAvLyBpbml0aWF0ZWQgYnkgdGhl
IHVzZXIgaGFzIGZpbmlzaGVkIGNvbXBsZXRlbHkuCi0gICAgICAgIGRhdGEtPndrRGF0YSA9IHdr
RGF0YTsKKyAgICAgICAgZGF0YS0+d2ViRGF0YSA9IHRvSW1wbCh3a0RhdGEpOwogCiAgICAgICAg
IC8vIElmIHdlIGFyZSBzYXZpbmcgdG8gYSBmaWxlIHdlIG5lZWQgdG8gd3JpdGUgdGhlIGRhdGEg
b24gZGlzayBiZWZvcmUgZmluaXNoaW5nLgogICAgICAgICBpZiAoZ19zaW1wbGVfYXN5bmNfcmVz
dWx0X2dldF9zb3VyY2VfdGFnKHJlc3VsdC5nZXQoKSkgPT0gd2Via2l0X3dlYl92aWV3X3NhdmVf
dG9fZmlsZSkgewogICAgICAgICAgICAgQVNTRVJUKEdfSVNfRklMRShkYXRhLT5maWxlLmdldCgp
KSk7Ci0gICAgICAgICAgICBnX2ZpbGVfcmVwbGFjZV9jb250ZW50c19hc3luYyhkYXRhLT5maWxl
LmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IGdjaGFyKj4oV0tEYXRhR2V0Qnl0ZXMoZGF0
YS0+d2tEYXRhLmdldCgpKSksIFdLRGF0YUdldFNpemUoZGF0YS0+d2tEYXRhLmdldCgpKSwgMCwg
RkFMU0UsIEdfRklMRV9DUkVBVEVfUkVQTEFDRV9ERVNUSU5BVElPTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmNhbmNlbGxhYmxlLmdldCgpLCBmaWxl
UmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2ssIGdfb2JqZWN0X3JlZihyZXN1bHQuZ2V0KCkpKTsKKyAg
ICAgICAgICAgIGdfZmlsZV9yZXBsYWNlX2NvbnRlbnRzX2FzeW5jKGRhdGEtPmZpbGUuZ2V0KCks
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2NoYXIqPihkYXRhLT53ZWJEYXRhLT5ieXRlcygpKSwg
ZGF0YS0+d2ViRGF0YS0+c2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgRkFMU0UsIEdfRklMRV9DUkVBVEVfUkVQTEFDRV9ERVNUSU5BVElPTiwgZGF0
YS0+Y2FuY2VsbGFibGUuZ2V0KCksIGZpbGVSZXBsYWNlQ29udGVudHNDYWxsYmFjaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfb2JqZWN0X3JlZihyZXN1bHQu
Z2V0KCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTI0MTcs
OCArMjM5MCw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NhdmUoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgV2ViS2l0U2F2ZU1vZGUgc2F2ZU1vZGUsIEdDYW5jCiAgICAgZGF0YS0+Y2FuY2VsbGFi
bGUgPSBjYW5jZWxsYWJsZTsKICAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfc2V0X29wX3Jlc19n
cG9pbnRlcihyZXN1bHQsIGRhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGRl
c3Ryb3lWaWV3U2F2ZUFzeW5jRGF0YSkpOwogCi0gICAgV0tQYWdlUmVmIHdrUGFnZSA9IHRvQVBJ
KHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSkp
OwotICAgIFdLUGFnZUdldENvbnRlbnRzQXNNSFRNTERhdGEod2tQYWdlLCBmYWxzZSwgcmVzdWx0
LCBnZXRDb250ZW50c0FzTUhUTUxEYXRhQ2FsbGJhY2spOworICAgIGdldFBhZ2Uod2ViVmlldykt
PmdldENvbnRlbnRzQXNNSFRNTERhdGEoRGF0YUNhbGxiYWNrOjpjcmVhdGUocmVzdWx0LCBnZXRD
b250ZW50c0FzTUhUTUxEYXRhQ2FsbGJhY2spLCBmYWxzZSk7CiB9CiAKIC8qKgpAQCAtMjQ0NSw5
ICsyNDE3LDkgQEAgR0lucHV0U3RyZWFtKiB3ZWJraXRfd2ViX3ZpZXdfc2F2ZV9maW5pc2goV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgR0FzeW5jUmVzdWx0KgogCiAgICAgR0lucHV0U3RyZWFtKiBk
YXRhU3RyZWFtID0gZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ldygpOwogICAgIFZpZXdTYXZlQXN5
bmNEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8Vmlld1NhdmVBc3luY0RhdGEqPihnX3NpbXBsZV9h
c3luY19yZXN1bHRfZ2V0X29wX3Jlc19ncG9pbnRlcihzaW1wbGUpKTsKLSAgICBnc2l6ZSBsZW5n
dGggPSBXS0RhdGFHZXRTaXplKGRhdGEtPndrRGF0YS5nZXQoKSk7CisgICAgZ3NpemUgbGVuZ3Ro
ID0gZGF0YS0+d2ViRGF0YS0+c2l6ZSgpOwogICAgIGlmIChsZW5ndGgpCi0gICAgICAgIGdfbWVt
b3J5X2lucHV0X3N0cmVhbV9hZGRfZGF0YShHX01FTU9SWV9JTlBVVF9TVFJFQU0oZGF0YVN0cmVh
bSksIGdfbWVtZHVwKFdLRGF0YUdldEJ5dGVzKGRhdGEtPndrRGF0YS5nZXQoKSksIGxlbmd0aCks
IGxlbmd0aCwgZ19mcmVlKTsKKyAgICAgICAgZ19tZW1vcnlfaW5wdXRfc3RyZWFtX2FkZF9kYXRh
KEdfTUVNT1JZX0lOUFVUX1NUUkVBTShkYXRhU3RyZWFtKSwgZ19tZW1kdXAoZGF0YS0+d2ViRGF0
YS0+Ynl0ZXMoKSwgbGVuZ3RoKSwgbGVuZ3RoLCBnX2ZyZWUpOwogCiAgICAgcmV0dXJuIGRhdGFT
dHJlYW07CiB9CkBAIC0yNDg0LDggKzI0NTYsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19zYXZl
X3RvX2ZpbGUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR0ZpbGUqIGZpbGUsIFdlYktpdFNhdgog
ICAgIGRhdGEtPmNhbmNlbGxhYmxlID0gY2FuY2VsbGFibGU7CiAgICAgZ19zaW1wbGVfYXN5bmNf
cmVzdWx0X3NldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0LCBkYXRhLCByZWludGVycHJldF9jYXN0
PEdEZXN0cm95Tm90aWZ5PihkZXN0cm95Vmlld1NhdmVBc3luY0RhdGEpKTsKIAotICAgIFdLUGFn
ZVJlZiB3a1BhZ2UgPSB0b0FQSSh3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9W
SUVXX0JBU0Uod2ViVmlldykpKTsKLSAgICBXS1BhZ2VHZXRDb250ZW50c0FzTUhUTUxEYXRhKHdr
UGFnZSwgZmFsc2UsIHJlc3VsdCwgZ2V0Q29udGVudHNBc01IVE1MRGF0YUNhbGxiYWNrKTsKKyAg
ICBnZXRQYWdlKHdlYlZpZXcpLT5nZXRDb250ZW50c0FzTUhUTUxEYXRhKERhdGFDYWxsYmFjazo6
Y3JlYXRlKHJlc3VsdCwgZ2V0Q29udGVudHNBc01IVE1MRGF0YUNhbGxiYWNrKSwgZmFsc2UpOwog
fQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCBmNWJkMmRkLi4xY2YyNDI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
CkBAIC02NTEsNyArNjUxLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfY2xh
c3NfaW5pdChXZWJLaXRXZWJWaWV3QmFzZUNsYXNzKiB3ZWJraXRXZWJWaWUKIFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQ
YWdlR3JvdXAqIHBhZ2VHcm91cCkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2Vi
Vmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX1ZJRVdfQkFTRSwgTlVMTCkpOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFn
ZSh3ZWJraXRXZWJWaWV3QmFzZSwgdG9BUEkoY29udGV4dCksIHRvQVBJKHBhZ2VHcm91cCkpOwor
ICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJraXRXZWJWaWV3QmFzZSwgY29u
dGV4dCwgcGFnZUdyb3VwKTsKICAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2U7CiB9CiAKQEAg
LTY2NSwxMSArNjY1LDExIEBAIFdlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKICAgICByZXR1cm4gd2Via2l0
V2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS5nZXQoKTsKIH0KIAotdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNl
LCBXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwKQordm9pZCB3
ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdl
YlZpZXdCYXNlLCBXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkK
IHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJWaWV3QmFz
ZS0+cHJpdjsKIAotICAgIHByaXYtPnBhZ2VQcm94eSA9IHRvSW1wbChjb250ZXh0KS0+Y3JlYXRl
V2ViUGFnZShwcml2LT5wYWdlQ2xpZW50LmdldCgpLCB0b0ltcGwocGFnZUdyb3VwKSk7CisgICAg
cHJpdi0+cGFnZVByb3h5ID0gY29udGV4dC0+Y3JlYXRlV2ViUGFnZShwcml2LT5wYWdlQ2xpZW50
LmdldCgpLCBwYWdlR3JvdXApOwogICAgIHByaXYtPnBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBh
Z2UoKTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgK
aW5kZXggNzBjYzcyNS4uMWU5NDBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAgLTM4LDcg
KzM4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJr
aXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJDb250ZXh0KiwgV2ViUGFnZUdyb3VwKik7CiBHdGtJTUNv
bnRleHQqIHdlYmtpdFdlYlZpZXdCYXNlR2V0SU1Db250ZXh0KFdlYktpdFdlYlZpZXdCYXNlKik7
CiBXZWJQYWdlUHJveHkqIHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXZWJLaXRXZWJWaWV3QmFz
ZSopOwotdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jh
c2UqLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmKTsKK3ZvaWQgd2Via2l0V2ViVmlld0Jh
c2VDcmVhdGVXZWJQYWdlKFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViQ29udGV4dCosIFdlYlBhZ2VH
cm91cCopOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldFRvb2x0aXBUZXh0KFdlYktpdFdlYlZp
ZXdCYXNlKiwgY29uc3QgY2hhciopOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUZvcndhcmROZXh0
S2V5RXZlbnQoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTdGFy
dERyYWcoV2ViS2l0V2ViVmlld0Jhc2UqLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYsIFBhc3NS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBkcmFnSW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5kZXggNWFk
Mjg1My4uNmFhOTY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0yOCwzMyArMjgsMzQgQEAKICNkZWZp
bmUgV2ViS2l0V2ViVmlld1ByaXZhdGVfaAogCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgot
I2luY2x1ZGUgPFdlYktpdDIvV2ViS2l0Ml9DLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCiB2b2lkIHdlYmtpdFdlYlZpZXdMb2Fk
Q2hhbmdlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0TG9hZEV2ZW50KTsKIHZvaWQgd2Via2l0V2Vi
Vmlld0xvYWRGYWlsZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCwgY29uc3QgY2hh
ciogZmFpbGluZ1VSSSwgR0Vycm9yKik7CiB2b2lkIHdlYmtpdFdlYlZpZXdTZXRFc3RpbWF0ZWRM
b2FkUHJvZ3Jlc3MoV2ViS2l0V2ViVmlldyosIGRvdWJsZSBlc3RpbWF0ZWRMb2FkUHJvZ3Jlc3Mp
Owogdm9pZCB3ZWJraXRXZWJWaWV3U2V0VGl0bGUoV2ViS2l0V2ViVmlldyosIGNvbnN0IENTdHJp
bmcmKTsKIHZvaWQgd2Via2l0V2ViVmlld1VwZGF0ZVVSSShXZWJLaXRXZWJWaWV3Kik7Ci1XS1Bh
Z2VSZWYgd2Via2l0V2ViVmlld0NyZWF0ZU5ld1BhZ2UoV2ViS2l0V2ViVmlldyosIFdLRGljdGlv
bmFyeVJlZiB3a1dpbmRvd0ZlYXR1cmVzKTsKK1dlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0Ny
ZWF0ZU5ld1BhZ2UoV2ViS2l0V2ViVmlldyosIEltbXV0YWJsZURpY3Rpb25hcnkqIHdpbmRvd0Zl
YXR1cmVzKTsKIHZvaWQgd2Via2l0V2ViVmlld1JlYWR5VG9TaG93UGFnZShXZWJLaXRXZWJWaWV3
Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQg
d2Via2l0V2ViVmlld0Nsb3NlUGFnZShXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtpdFdlYlZp
ZXdSdW5KYXZhU2NyaXB0QWxlcnQoV2ViS2l0V2ViVmlldyosIGNvbnN0IENTdHJpbmcmIG1lc3Nh
Z2UpOwogYm9vbCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0V2ViVmll
dyosIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2UpOwotV0tTdHJpbmdSZWYgd2Via2l0V2ViVmlld1J1
bkphdmFTY3JpcHRQcm9tcHQoV2ViS2l0V2ViVmlldyosIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IENTdHJpbmcmIGRlZmF1bHRUZXh0KTsKK0NTdHJpbmcgd2Via2l0V2ViVmlld1J1bkph
dmFTY3JpcHRQcm9tcHQoV2ViS2l0V2ViVmlldyosIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IENTdHJpbmcmIGRlZmF1bHRUZXh0KTsKIHZvaWQgd2Via2l0V2ViVmlld01ha2VQZXJtaXNz
aW9uUmVxdWVzdChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QqKTsKIHZv
aWQgd2Via2l0V2ViVmlld01ha2VQb2xpY3lEZWNpc2lvbihXZWJLaXRXZWJWaWV3KiwgV2ViS2l0
UG9saWN5RGVjaXNpb25UeXBlLCBXZWJLaXRQb2xpY3lEZWNpc2lvbiopOwotdm9pZCB3ZWJraXRX
ZWJWaWV3TW91c2VUYXJnZXRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqLCBXS0hpdFRlc3RSZXN1bHRS
ZWYsIHVuc2lnbmVkIG1vZGlmaWVycyk7Ci12b2lkIHdlYmtpdFdlYlZpZXdQcmludEZyYW1lKFdl
YktpdFdlYlZpZXcqLCBXS0ZyYW1lUmVmKTsKLXZvaWQgd2Via2l0V2ViVmlld1Jlc291cmNlTG9h
ZFN0YXJ0ZWQoV2ViS2l0V2ViVmlldyosIFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291cmNlSWRl
bnRpZmllciwgV2ViS2l0VVJJUmVxdWVzdCopOwordm9pZCB3ZWJraXRXZWJWaWV3TW91c2VUYXJn
ZXRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqLCBXZWJIaXRUZXN0UmVzdWx0KiwgdW5zaWduZWQgbW9k
aWZpZXJzKTsKK3ZvaWQgd2Via2l0V2ViVmlld1ByaW50RnJhbWUoV2ViS2l0V2ViVmlldyosIFdl
YkZyYW1lUHJveHkqKTsKK3ZvaWQgd2Via2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2Vi
S2l0V2ViVmlldyosIFdlYkZyYW1lUHJveHkqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIs
IFdlYktpdFVSSVJlcXVlc3QqKTsKIHZvaWQgd2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyUmVx
dWVzdChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0Kik7CiBXZWJLaXRX
ZWJSZXNvdXJjZSogd2Via2l0V2ViVmlld0dldExvYWRpbmdXZWJSZXNvdXJjZShXZWJLaXRXZWJW
aWV3KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKIHZvaWQgd2Via2l0V2ViVmlld1Jl
bW92ZUxvYWRpbmdXZWJSZXNvdXJjZShXZWJLaXRXZWJWaWV3KiwgdWludDY0X3QgcmVzb3VyY2VJ
ZGVudGlmaWVyKTsKIFdlYktpdFdlYlJlc291cmNlKiB3ZWJraXRXZWJWaWV3UmVzb3VyY2VMb2Fk
RmluaXNoZWQoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7CiBi
b29sIHdlYmtpdFdlYlZpZXdFbnRlckZ1bGxTY3JlZW4oV2ViS2l0V2ViVmlldyopOwogYm9vbCB3
ZWJraXRXZWJWaWV3TGVhdmVGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcqKTsKLXZvaWQgd2Via2l0
V2ViVmlld1BvcHVsYXRlQ29udGV4dE1lbnUoV2ViS2l0V2ViVmlldyosIFdLQXJyYXlSZWYgcHJv
cG9zZWRNZW51LCBXS0hpdFRlc3RSZXN1bHRSZWYpOwordm9pZCB3ZWJraXRXZWJWaWV3UG9wdWxh
dGVDb250ZXh0TWVudShXZWJLaXRXZWJWaWV3KiwgSW1tdXRhYmxlQXJyYXkqIHByb3Bvc2VkTWVu
dSwgV2ViSGl0VGVzdFJlc3VsdCopOwogdm9pZCB3ZWJraXRXZWJWaWV3U3VibWl0Rm9ybVJlcXVl
c3QoV2ViS2l0V2ViVmlldyosIFdlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdCopOwogCiAjZW5k
aWYgLy8gV2ViS2l0V2ViVmlld1ByaXZhdGVfaAo=
</data>
<flag name="review"
          id="175808"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>