<?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>140773</bug_id>
          
          <creation_ts>2015-01-22 10:23:30 -0800</creation_ts>
          <short_desc>[Win] Expose missing editing features through WebView interface</short_desc>
          <delta_ts>2015-01-22 15:46:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1063386</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-01-22 10:23:30 -0800</bug_when>
    <thetext>Several layout tests fail because the Windows port is not exposing necessary editing support features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063387</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-01-22 10:23:57 -0800</bug_when>
    <thetext>&lt;rdar://problem/19565421&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063494</commentid>
    <comment_count>2</comment_count>
      <attachid>245172</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-01-22 15:25:10 -0800</bug_when>
    <thetext>Created attachment 245172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063496</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-22 15:28:07 -0800</bug_when>
    <thetext>Attachment 245172 did not pass style-queue:


ERROR: Source/WebKit/win/WebCoreSupport/WebEditorClient.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Tools/DumpRenderTree/win/EditingDelegate.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063498</commentid>
    <comment_count>4</comment_count>
      <attachid>245172</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-01-22 15:32:56 -0800</bug_when>
    <thetext>Comment on attachment 245172
Patch

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

&gt; Source/WebKit/win/DOMCoreClasses.cpp:2
&gt; + * Copyright (C) 2006, 2007, 2009, 2014 Apple Inc.  All rights reserved.

Check your wall calendar.

&gt; Tools/DumpRenderTree/win/EditingDelegate.cpp:175
&gt; +    static const char* insertactionstring[] = {

insertActionString maybe?

&gt; Tools/DumpRenderTree/win/EditingDelegate.cpp:212
&gt; +    static const char* affinitystring[] = {

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063501</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-01-22 15:37:40 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 245172 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=245172&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/win/DOMCoreClasses.cpp:2
&gt; &gt; + * Copyright (C) 2006, 2007, 2009, 2014 Apple Inc.  All rights reserved.
&gt; 
&gt; Check your wall calendar.
&gt; 

Doh!

&gt; &gt; Tools/DumpRenderTree/win/EditingDelegate.cpp:175
&gt; &gt; +    static const char* insertactionstring[] = {
&gt; 
&gt; insertActionString maybe?

Sure!

&gt; &gt; Tools/DumpRenderTree/win/EditingDelegate.cpp:212
&gt; &gt; +    static const char* affinitystring[] = {

OK!
&gt; Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063506</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-01-22 15:46:34 -0800</bug_when>
    <thetext>Committed r178965: &lt;http://trac.webkit.org/changeset/178965&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245172</attachid>
            <date>2015-01-22 15:25:10 -0800</date>
            <delta_ts>2015-01-22 15:32:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140773-20150122153228.patch</filename>
            <type>text/plain</type>
            <size>42467</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODk1NikKKysrIFNvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc2IEBACisyMDE1LTAxLTIy
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dIEV4
cG9zZSBtaXNzaW5nIGVkaXRpbmcgZmVhdHVyZXMgdGhyb3VnaCBXZWJWaWV3IGludGVyZmFjZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwNzczCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xOTU2NTQyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb25uZWN0IHRoZSB2YXJpb3VzIFdlYlZpZXcgZWRp
dGluZyBkZWxlZ2F0ZSBtZXRob2RzIHRvIG91cgorICAgICAgICB0ZXN0IGluZnJhc3RydWN0dXJl
LiBBbHNvIHByZWZlciBfYnN0cl90IHRvIHJhdyBCU1RSIHR5cGVzCisgICAgICAgIHRvIHNpbXBs
aWZ5IGxpZmUgY3ljbGUgbWFuYWdlbWVudC4KKworICAgICAgICAqIERPTUNvcmVDbGFzc2VzLmNw
cDogRmxlc2ggb3V0IHRoZSBET01SYW5nZSBvYmplY3QuCisgICAgICAgIChET01FbGVtZW50Ojpj
cmVhdGVJbnN0YW5jZSk6CisgICAgICAgIChET01SYW5nZTo6UXVlcnlJbnRlcmZhY2UpOgorICAg
ICAgICAoRE9NUmFuZ2U6OkRPTVJhbmdlKToKKyAgICAgICAgKERPTVJhbmdlOjp+RE9NUmFuZ2Up
OgorICAgICAgICAoRE9NUmFuZ2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKERPTVJhbmdl
OjpzdGFydENvbnRhaW5lcik6CisgICAgICAgIChET01SYW5nZTo6c3RhcnRPZmZzZXQpOgorICAg
ICAgICAoRE9NUmFuZ2U6OmVuZENvbnRhaW5lcik6CisgICAgICAgIChET01SYW5nZTo6ZW5kT2Zm
c2V0KToKKyAgICAgICAgKERPTVJhbmdlOjpjb2xsYXBzZWQpOgorICAgICAgICAoRE9NUmFuZ2U6
OmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKToKKyAgICAgICAgKERPTVJhbmdlOjpzZXRTdGFydCk6
CisgICAgICAgIChET01SYW5nZTo6c2V0RW5kKToKKyAgICAgICAgKERPTVJhbmdlOjpzZXRTdGFy
dEJlZm9yZSk6CisgICAgICAgIChET01SYW5nZTo6c2V0U3RhcnRBZnRlcik6CisgICAgICAgIChE
T01SYW5nZTo6c2V0RW5kQmVmb3JlKToKKyAgICAgICAgKERPTVJhbmdlOjpzZXRFbmRBZnRlcik6
CisgICAgICAgIChET01SYW5nZTo6Y29sbGFwc2UpOgorICAgICAgICAoRE9NUmFuZ2U6OnNlbGVj
dE5vZGUpOgorICAgICAgICAoRE9NUmFuZ2U6OnNlbGVjdE5vZGVDb250ZW50cyk6CisgICAgICAg
IChET01SYW5nZTo6Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKToKKyAgICAgICAgKERPTVJhbmdlOjpk
ZWxldGVDb250ZW50cyk6CisgICAgICAgIChET01SYW5nZTo6ZXh0cmFjdENvbnRlbnRzKToKKyAg
ICAgICAgKERPTVJhbmdlOjpjbG9uZUNvbnRlbnRzKToKKyAgICAgICAgKERPTVJhbmdlOjppbnNl
cnROb2RlKToKKyAgICAgICAgKERPTVJhbmdlOjpzdXJyb3VuZENvbnRlbnRzKToKKyAgICAgICAg
KERPTVJhbmdlOjpjbG9uZVJhbmdlKToKKyAgICAgICAgKERPTVJhbmdlOjp0b1N0cmluZyk6Cisg
ICAgICAgIChET01SYW5nZTo6ZGV0YWNoKToKKyAgICAgICAgKiBET01Db3JlQ2xhc3Nlcy5oOgor
ICAgICAgICAoRE9NUmFuZ2U6OkFkZFJlZik6CisgICAgICAgIChET01SYW5nZTo6UmVsZWFzZSk6
CisgICAgICAgIChET01SYW5nZTo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAoRE9NUmFuZ2U6
OmNhbGxXZWJTY3JpcHRNZXRob2QpOgorICAgICAgICAoRE9NUmFuZ2U6OmV2YWx1YXRlV2ViU2Ny
aXB0KToKKyAgICAgICAgKERPTVJhbmdlOjpyZW1vdmVXZWJTY3JpcHRLZXkpOgorICAgICAgICAo
RE9NUmFuZ2U6OnN0cmluZ1JlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKERPTVJhbmdlOjp3ZWJT
Y3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NUmFuZ2U6OnNldFdlYlNjcmlwdFZhbHVl
QXRJbmRleCk6CisgICAgICAgIChET01SYW5nZTo6c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKiBJ
bnRlcmZhY2VzL0lXZWJFZGl0aW5nRGVsZWdhdGUuaWRsOgorICAgICAgICAqIEludGVyZmFjZXMv
SVdlYlZpZXcuaWRsOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHA6IENvbm5lY3QgbW9yZSBtZXRob2RzCisgICAgICAgIHRvIGFjdHVhbCBlZGl0aW5nIGZlYXR1
cmVzIGluIFdlYkNvcmUuCisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEJlZ2luRWRp
dGluZyk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEVuZEVkaXRpbmcpOgorICAg
ICAgICAoV2ViRWRpdG9yQ2xpZW50OjpkaWRCZWdpbkVkaXRpbmcpOgorICAgICAgICAoV2ViRWRp
dG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkQ29udGVudHMpOgorICAgICAgICAoV2ViRWRpdG9y
Q2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6ZGlkRW5kRWRpdGluZyk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnNob3VsZERl
bGV0ZVJhbmdlKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0Tm9kZSk6
CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQpOgorICAgICAgICAo
V2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKFdl
YkVkaXRvckNsaWVudDo6d2ViVmlld0RpZENoYW5nZVR5cGluZ1N0eWxlKToKKyAgICAgICAgKFdl
YkVkaXRvckNsaWVudDo6d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJF
ZGl0b3JDbGllbnQ6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAg
ICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpzZXRFZGl0aW5nRGVsZWdhdGUpOiBB
ZGRlZC4KKwogMjAxNS0wMS0yMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV2luXSBldmVudFNlbmRlciBkb2VzIG5vdCBzdXBwb3J0IHNjYWxlUGFnZUJ5
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCShyZXZpc2lvbiAxNzg5NTMp
CisrKyBTb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA5IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcsIDIwMDksIDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvSFRNTFNlbGVjdEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vZGVMaXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9SYW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyRWxlbWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVuZGVyVHJlZUFzVGV4dC5oPgogCkBAIC0xNTMwLDMgKzE1MzEsMjEyIEBAIElE
T01FbGVtZW50KiBET01FbGVtZW50OjpjcmVhdGVJbnN0YW5jZSgKIAogICAgIHJldHVybiBkb21F
bGVtZW50OwogfQorCisvLyBET01SYW5nZSAtIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hSRVNVTFQgRE9NUmFuZ2U6OlF1
ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQoreworICAgICpwcHZP
YmplY3QgPSBudWxscHRyOworICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSURPTVJhbmdl
KSkKKyAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElET01SYW5nZSo+KHRoaXMpOwor
ICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIERPTU9iamVjdDo6UXVlcnlJbnRlcmZhY2UocmlpZCwg
cHB2T2JqZWN0KTsKKworICAgIEFkZFJlZigpOworICAgIHJldHVybiBTX09LOworfQorCisvLyBE
T01SYW5nZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAKKworRE9NUmFuZ2U6OkRPTVJhbmdlKFdlYkNvcmU6OlJhbmdlKiBl
KQorICAgIDogbV9yYW5nZShlKQoreworfQorCitET01SYW5nZTo6fkRPTVJhbmdlKCkKK3sKK30K
KworSURPTVJhbmdlKiBET01SYW5nZTo6Y3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6UmFuZ2UqIHJh
bmdlKQoreworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
RE9NUmFuZ2UqIG5ld1JhbmdlID0gbmV3IERPTVJhbmdlKHJhbmdlKTsKKworICAgIElET01SYW5n
ZSogZG9tUmFuZ2UgPSBudWxscHRyOworICAgIGlmIChGQUlMRUQobmV3UmFuZ2UtPlF1ZXJ5SW50
ZXJmYWNlKElJRF9JRE9NUmFuZ2UsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZG9tUmFuZ2Up
KSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG5ld1JhbmdlOworfQor
CitIUkVTVUxUIERPTVJhbmdlOjpzdGFydENvbnRhaW5lcihJRE9NTm9kZSoqIG5vZGUpCit7Cisg
ICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisgICAgaWYgKCFtX3Jh
bmdlKQorICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOworCisgICAgKm5vZGUgPSBET01Ob2Rl
OjpjcmVhdGVJbnN0YW5jZShtX3JhbmdlLT5zdGFydENvbnRhaW5lcigpKTsKKworICAgIHJldHVy
biBTX09LOworfQorCitIUkVTVUxUIERPTVJhbmdlOjpzdGFydE9mZnNldChpbnQqIG9mZnNldCkK
K3sKKyAgICBpZiAoIW9mZnNldCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKworICAgIGlm
ICghbV9yYW5nZSkKKyAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKKworICAgICpvZmZzZXQg
PSBtX3JhbmdlLT5zdGFydE9mZnNldCgpOworCisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNV
TFQgRE9NUmFuZ2U6OmVuZENvbnRhaW5lcihJRE9NTm9kZSoqIG5vZGUpCit7CisgICAgaWYgKCFu
b2RlKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisgICAgaWYgKCFtX3JhbmdlKQorICAg
ICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOworCisgICAgKm5vZGUgPSBET01Ob2RlOjpjcmVhdGVJ
bnN0YW5jZShtX3JhbmdlLT5lbmRDb250YWluZXIoKSk7CisKKyAgICByZXR1cm4gU19PSzsKK30K
KworSFJFU1VMVCBET01SYW5nZTo6ZW5kT2Zmc2V0KGludCogb2Zmc2V0KQoreworICAgIGlmICgh
b2Zmc2V0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisgICAgaWYgKCFtX3JhbmdlKQor
ICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOworCisgICAgKm9mZnNldCA9IG1fcmFuZ2UtPmVu
ZE9mZnNldCgpOworCisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgRE9NUmFuZ2U6OmNv
bGxhcHNlZChCT09MKiByZXN1bHQpCit7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CisKKyAgICBpZiAoIW1fcmFuZ2UpCisgICAgICAgIHJldHVybiBFX1VORVhQ
RUNURUQ7CisKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAqcmVzdWx0
ID0gbV9yYW5nZS0+Y29sbGFwc2VkKGVjKTsKKworICAgIHJldHVybiBTX09LOworfQorCitIUkVT
VUxUIERPTVJhbmdlOjpjb21tb25BbmNlc3RvckNvbnRhaW5lcihJRE9NTm9kZSoqIGNvbnRhaW5l
cikKK3sKKyAgICByZXR1cm4gRV9OT1RJTVBMOworfQorCitIUkVTVUxUIERPTVJhbmdlOjpzZXRT
dGFydChJRE9NTm9kZSogcmVmTm9kZSwgaW50IG9mZnNldCkKK3sKKyAgICByZXR1cm4gRV9OT1RJ
TVBMOworfQorCitIUkVTVUxUIERPTVJhbmdlOjpzZXRFbmQoSURPTU5vZGUqIHJlZk5vZGUsIGlu
dCBvZmZzZXQpCit7CisgICAgcmV0dXJuIEVfTk9USU1QTDsKK30KKworSFJFU1VMVCBET01SYW5n
ZTo6c2V0U3RhcnRCZWZvcmUoSURPTU5vZGUqIHJlZk5vZGUpCit7CisgICAgcmV0dXJuIEVfTk9U
SU1QTDsKK30KKworSFJFU1VMVCBET01SYW5nZTo6c2V0U3RhcnRBZnRlcihJRE9NTm9kZSogcmVm
Tm9kZSkKK3sKKyAgICByZXR1cm4gRV9OT1RJTVBMOworfQorCitIUkVTVUxUIERPTVJhbmdlOjpz
ZXRFbmRCZWZvcmUoSURPTU5vZGUqIHJlZk5vZGUpCit7CisgICAgcmV0dXJuIEVfTk9USU1QTDsK
K30KKworSFJFU1VMVCBET01SYW5nZTo6c2V0RW5kQWZ0ZXIoSURPTU5vZGUqIHJlZk5vZGUpCit7
CisgICAgcmV0dXJuIEVfTk9USU1QTDsKK30KKworSFJFU1VMVCBET01SYW5nZTo6Y29sbGFwc2Uo
Qk9PTCB0b1N0YXJ0KQoreworICAgIHJldHVybiBFX05PVElNUEw7Cit9CisKK0hSRVNVTFQgRE9N
UmFuZ2U6OnNlbGVjdE5vZGUoSURPTU5vZGUqIHJlZk5vZGUpCit7CisgICAgcmV0dXJuIEVfTk9U
SU1QTDsKK30KKworSFJFU1VMVCBET01SYW5nZTo6c2VsZWN0Tm9kZUNvbnRlbnRzKElET01Ob2Rl
KiByZWZOb2RlKQoreworICAgIHJldHVybiBFX05PVElNUEw7Cit9CisKK0hSRVNVTFQgRE9NUmFu
Z2U6OmNvbXBhcmVCb3VuZGFyeVBvaW50cyh1bnNpZ25lZCBzaG9ydCBob3csIElET01SYW5nZSog
c291cmNlUmFuZ2UpCit7CisgICAgcmV0dXJuIEVfTk9USU1QTDsKK30KKworSFJFU1VMVCBET01S
YW5nZTo6ZGVsZXRlQ29udGVudHMoKQoreworICAgIHJldHVybiBFX05PVElNUEw7Cit9CisKK0hS
RVNVTFQgRE9NUmFuZ2U6OmV4dHJhY3RDb250ZW50cyhJRE9NRG9jdW1lbnRGcmFnbWVudCoqIGZy
YWdtZW50KQoreworICAgIHJldHVybiBFX05PVElNUEw7Cit9CisKK0hSRVNVTFQgRE9NUmFuZ2U6
OmNsb25lQ29udGVudHMoSURPTURvY3VtZW50RnJhZ21lbnQqKiBmcmFnbWVudCkKK3sKKyAgICBy
ZXR1cm4gRV9OT1RJTVBMOworfQorCitIUkVTVUxUIERPTVJhbmdlOjppbnNlcnROb2RlKElET01O
b2RlKiBuZXdOb2RlKQoreworICAgIHJldHVybiBFX05PVElNUEw7Cit9CisKK0hSRVNVTFQgRE9N
UmFuZ2U6OnN1cnJvdW5kQ29udGVudHMoSURPTU5vZGUqIG5ld1BhcmVudCkKK3sKKyAgICByZXR1
cm4gRV9OT1RJTVBMOworfQorCitIUkVTVUxUIERPTVJhbmdlOjpjbG9uZVJhbmdlKElET01SYW5n
ZSoqIHJhbmdlKQoreworICAgIHJldHVybiBFX05PVElNUEw7Cit9CisKK0hSRVNVTFQgRE9NUmFu
Z2U6OnRvU3RyaW5nKEJTVFIqIHN0cikKK3sKKyAgICBpZiAoIXN0cikKKyAgICAgICAgcmV0dXJu
IEVfUE9JTlRFUjsKKworICAgIGlmICghbV9yYW5nZSkKKyAgICAgICAgcmV0dXJuIEVfVU5FWFBF
Q1RFRDsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICpzdHIgPSBC
U3RyaW5nKG1fcmFuZ2UtPnRvU3RyaW5nKGVjKSkucmVsZWFzZSgpOworCisgICAgcmV0dXJuIFNf
T0s7Cit9CisKK0hSRVNVTFQgRE9NUmFuZ2U6OmRldGFjaCgpCit7CisgICAgcmV0dXJuIEVfTk9U
SU1QTDsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuaAkocmV2aXNpb24gMTc4
OTUzKQorKysgU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywg
MjAxNCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRE9N
V2luZG93OwogY2xhc3MgTm9kZTsKIGNsYXNzIE5vZGVMaXN0OworY2xhc3MgUmFuZ2U7CiB9CiAK
IApAQCAtOTI1LDQgKzkyNiw4NyBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViQ29yZTo6RWxlbWVudCog
bV9lbGVtZW50OwogfTsKIAorY2xhc3MgRE9NUmFuZ2UgOiBwdWJsaWMgRE9NT2JqZWN0LCBwdWJs
aWMgSURPTVJhbmdlIHsKK3Byb3RlY3RlZDoKKyAgICBET01SYW5nZShXZWJDb3JlOjpSYW5nZSop
OworICAgIH5ET01SYW5nZSgpOworCitwdWJsaWM6CisgICAgc3RhdGljIElET01SYW5nZSogY3Jl
YXRlSW5zdGFuY2UoV2ViQ29yZTo6UmFuZ2UqKTsKKworcHVibGljOgorICAgIC8vIElVbmtub3du
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJF
RklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhP
RENBTExUWVBFIEFkZFJlZih2b2lkKSB7IHJldHVybiBET01PYmplY3Q6OkFkZFJlZigpOyB9Cisg
ICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpIHsgcmV0dXJu
IERPTU9iamVjdDo6UmVsZWFzZSgpOyB9CisKKyAgICAvLyBJV2ViU2NyaXB0T2JqZWN0CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRocm93RXhjZXB0aW9uKEJTVFIgZXhj
ZXB0aW9uTWVzc2FnZSwgQk9PTCogcmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIERPTU9i
amVjdDo6dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FsbFdlYlNjcmlwdE1ldGhv
ZChCU1RSIG5hbWUsIGNvbnN0IFZBUklBTlQgYXJnc1tdLCBpbnQgY0FyZ3MsIFZBUklBTlQqIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBET01PYmplY3Q6OmNhbGxXZWJTY3JpcHRNZXRo
b2QobmFtZSwgYXJncywgY0FyZ3MsIHJlc3VsdCk7CisgICAgfQorCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KEJTVFIgc2NyaXB0LCBWQVJJ
QU5UKiByZXN1bHQpCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0OjpldmFsdWF0ZVdl
YlNjcmlwdChzY3JpcHQsIHJlc3VsdCk7CisgICAgfQorCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleShCU1RSIG5hbWUpCisgICAgeworICAg
ICAgICByZXR1cm4gRE9NT2JqZWN0OjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7CisgICAgfQor
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1JlcHJlc2VudGF0
aW9uKEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERP
TU9iamVjdDo6c3RyaW5nUmVwcmVzZW50YXRpb24oc3RyaW5nUmVwcmVzZW50YXRpb24pOworICAg
IH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1
ZUF0SW5kZXgodW5zaWduZWQgaW5kZXgsIFZBUklBTlQqIHJlc3VsdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBET01PYmplY3Q6OndlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgcmVzdWx0KTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2Ny
aXB0VmFsdWVBdEluZGV4KHVuc2lnbmVkIGluZGV4LCBWQVJJQU5UIHZhbCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBET01PYmplY3Q6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgdmFs
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhj
ZXB0aW9uKEJTVFIgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICByZXR1cm4gRE9NT2JqZWN0
OjpzZXRFeGNlcHRpb24oZGVzY3JpcHRpb24pOworICAgIH0KKworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzdGFydENvbnRhaW5lcihJRE9NTm9kZSoqKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RhcnRPZmZzZXQoaW50Kik7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGVuZENvbnRhaW5lcihJRE9NTm9kZSoqKTsK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZW5kT2Zmc2V0KGludCopOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb2xsYXBzZWQoQk9PTCopOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb21tb25BbmNlc3RvckNvbnRh
aW5lcihJRE9NTm9kZSoqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
c2V0U3RhcnQoSURPTU5vZGUqLCBpbnQgb2Zmc2V0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0RW5kKElET01Ob2RlKiwgaW50IG9mZnNldCk7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFN0YXJ0QmVmb3JlKElET01Ob2RlKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFN0YXJ0QWZ0ZXIoSURPTU5v
ZGUqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RW5kQmVmb3Jl
KElET01Ob2RlKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEVu
ZEFmdGVyKElET01Ob2RlKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGNvbGxhcHNlKEJPT0wpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
ZWxlY3ROb2RlKElET01Ob2RlKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNlbGVjdE5vZGVDb250ZW50cyhJRE9NTm9kZSopOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBjb21wYXJlQm91bmRhcnlQb2ludHModW5zaWduZWQgc2hvcnQgaG93
LCBJRE9NUmFuZ2UqIHNvdXJjZVJhbmdlKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGVsZXRlQ29udGVudHMoKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZXh0cmFjdENvbnRlbnRzKElET01Eb2N1bWVudEZyYWdtZW50KiopOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbG9uZUNvbnRlbnRzKElET01Eb2N1bWVu
dEZyYWdtZW50KiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbnNl
cnROb2RlKElET01Ob2RlKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHN1cnJvdW5kQ29udGVudHMoSURPTU5vZGUqIG5ld1BhcmVudCk7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGNsb25lUmFuZ2UoSURPTVJhbmdlKiopOworICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0b1N0cmluZyhCU1RSKik7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRldGFjaCgpOworCitwcm90ZWN0ZWQ6CisgICAg
V2ViQ29yZTo6UmFuZ2UqIG1fcmFuZ2U7Cit9OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3
LmNwcAkocmV2aXNpb24gMTc4OTUzKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQzNDAsMTAgKzQzNDAsMzkgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3Ojp1bmRvTQogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1I
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNldEVkaXRpbmdEZWxlZ2F0ZSggCi0g
ICAgICAgIC8qIFtpbl0gKi8gSVdlYkVkaXRpbmdEZWxlZ2F0ZSogZCkKK0hSRVNVTFQgV2ViVmll
dzo6c2V0RWRpdGluZ0RlbGVnYXRlKElXZWJFZGl0aW5nRGVsZWdhdGUqIGQpCiB7CisgICAgaWYg
KG1fZWRpdGluZ0RlbGVnYXRlID09IGQpCisgICAgICAgIHJldHVybiBTX09LOworCisgICAgc3Rh
dGljIEJTVFIgd2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbk5hbWUgPSBTeXNBbGxv
Y1N0cmluZyhXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uKTsKKyAgICBzdGF0aWMg
QlNUUiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uTmFtZSA9IFN5c0FsbG9j
U3RyaW5nKFdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24pOworICAgIHN0YXRp
YyBCU1RSIHdlYlZpZXdEaWRFbmRFZGl0aW5nTm90aWZpY2F0aW9uTmFtZSA9IFN5c0FsbG9jU3Ry
aW5nKFdlYlZpZXdEaWRFbmRFZGl0aW5nTm90aWZpY2F0aW9uKTsKKyAgICBzdGF0aWMgQlNUUiB3
ZWJWaWV3RGlkQ2hhbmdlVHlwaW5nU3R5bGVOb3RpZmljYXRpb25OYW1lID0gU3lzQWxsb2NTdHJp
bmcoV2ViVmlld0RpZENoYW5nZVR5cGluZ1N0eWxlTm90aWZpY2F0aW9uKTsKKyAgICBzdGF0aWMg
QlNUUiB3ZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uTmFtZSA9IFN5c0FsbG9jU3RyaW5nKFdl
YlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24pOworCisgICAgSVdlYk5vdGlmaWNhdGlvbkNlbnRl
ciogbm90aWZ5Q2VudGVyID0gV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpkZWZhdWx0Q2VudGVySW50
ZXJuYWwoKTsKKworICAgIENPTVB0cjxJV2ViTm90aWZpY2F0aW9uT2JzZXJ2ZXI+IHdhc09ic2Vy
dmVyKFF1ZXJ5LCBtX2VkaXRpbmdEZWxlZ2F0ZSk7CisgICAgaWYgKHdhc09ic2VydmVyKSB7Cisg
ICAgICAgIG5vdGlmeUNlbnRlci0+cmVtb3ZlT2JzZXJ2ZXIod2FzT2JzZXJ2ZXIuZ2V0KCksIHdl
YlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb25OYW1lLCBudWxscHRyKTsKKyAgICAgICAg
bm90aWZ5Q2VudGVyLT5yZW1vdmVPYnNlcnZlcih3YXNPYnNlcnZlci5nZXQoKSwgd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbk5hbWUsIG51bGxwdHIpOworICAgICAgICBub3Rp
ZnlDZW50ZXItPnJlbW92ZU9ic2VydmVyKHdhc09ic2VydmVyLmdldCgpLCB3ZWJWaWV3RGlkRW5k
RWRpdGluZ05vdGlmaWNhdGlvbk5hbWUsIG51bGxwdHIpOworICAgICAgICBub3RpZnlDZW50ZXIt
PnJlbW92ZU9ic2VydmVyKHdhc09ic2VydmVyLmdldCgpLCB3ZWJWaWV3RGlkQ2hhbmdlVHlwaW5n
U3R5bGVOb3RpZmljYXRpb25OYW1lLCBudWxscHRyKTsKKyAgICAgICAgbm90aWZ5Q2VudGVyLT5y
ZW1vdmVPYnNlcnZlcih3YXNPYnNlcnZlci5nZXQoKSwgd2ViVmlld0RpZENoYW5nZU5vdGlmaWNh
dGlvbk5hbWUsIG51bGxwdHIpOworICAgIH0KKwogICAgIG1fZWRpdGluZ0RlbGVnYXRlID0gZDsK
KworICAgIENPTVB0cjxJV2ViTm90aWZpY2F0aW9uT2JzZXJ2ZXI+IGlzT2JzZXJ2ZXIoUXVlcnks
IG1fZWRpdGluZ0RlbGVnYXRlKTsKKyAgICBpZiAoaXNPYnNlcnZlcikgeworICAgICAgICBub3Rp
ZnlDZW50ZXItPmFkZE9ic2VydmVyKGlzT2JzZXJ2ZXIuZ2V0KCksIHdlYlZpZXdEaWRCZWdpbkVk
aXRpbmdOb3RpZmljYXRpb25OYW1lLCBudWxscHRyKTsKKyAgICAgICAgbm90aWZ5Q2VudGVyLT5h
ZGRPYnNlcnZlcihpc09ic2VydmVyLmdldCgpLCB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uTmFtZSwgbnVsbHB0cik7CisgICAgICAgIG5vdGlmeUNlbnRlci0+YWRkT2JzZXJ2
ZXIoaXNPYnNlcnZlci5nZXQoKSwgd2ViVmlld0RpZEVuZEVkaXRpbmdOb3RpZmljYXRpb25OYW1l
LCBudWxscHRyKTsKKyAgICAgICAgbm90aWZ5Q2VudGVyLT5hZGRPYnNlcnZlcihpc09ic2VydmVy
LmdldCgpLCB3ZWJWaWV3RGlkQ2hhbmdlVHlwaW5nU3R5bGVOb3RpZmljYXRpb25OYW1lLCBudWxs
cHRyKTsKKyAgICAgICAgbm90aWZ5Q2VudGVyLT5hZGRPYnNlcnZlcihpc09ic2VydmVyLmdldCgp
LCB3ZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uTmFtZSwgbnVsbHB0cik7CisgICAgfQorCiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0lXZWJFZGl0aW5nRGVsZWdhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL0ludGVyZmFjZXMvSVdlYkVkaXRpbmdEZWxlZ2F0ZS5pZGwJKHJldmlzaW9uIDE3ODk1MykK
KysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkVkaXRpbmdEZWxlZ2F0ZS5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMsNyBAQCBpbnRlcmZhY2UgSVdlYkVkaXRpbmdE
ZWxlZ2F0ZSA6IElVbmtub3duCiAgICAgLyoKICAgICAgICAgLSAoQk9PTCl3ZWJWaWV3OihXZWJW
aWV3ICopd2ViVmlldyBzaG91bGRJbnNlcnROb2RlOihET01Ob2RlICopbm9kZSByZXBsYWNpbmdE
T01SYW5nZTooRE9NUmFuZ2UgKilyYW5nZSBnaXZlbkFjdGlvbjooV2ViVmlld0luc2VydEFjdGlv
bilhY3Rpb247CiAgICAgKi8KLSAgICBIUkVTVUxUIHNob3VsZEluc2VydE5vZGUoW2luXSBJV2Vi
Vmlldyogd2ViVmlldywgW2luXSBJRE9NTm9kZSogbm9kZSwgW2luXSBJRE9NUmFuZ2UqIHJhbmdl
LCBbaW5dIFdlYlZpZXdJbnNlcnRBY3Rpb24gYWN0aW9uKTsKKyAgICBIUkVTVUxUIHNob3VsZElu
c2VydE5vZGUoW2luXSBJV2ViVmlldyogd2ViVmlldywgW2luXSBJRE9NTm9kZSogbm9kZSwgW2lu
XSBJRE9NUmFuZ2UqIHJhbmdlLCBbaW5dIFdlYlZpZXdJbnNlcnRBY3Rpb24gYWN0aW9uLCBbb3V0
LCByZXR2YWxdIEJPT0wqIHJlc3VsdCk7CiAKICAgICAvKgogICAgICAgICAtIChCT09MKXdlYlZp
ZXc6KFdlYlZpZXcgKil3ZWJWaWV3IHNob3VsZEluc2VydFRleHQ6KE5TU3RyaW5nICopdGV4dCBy
ZXBsYWNpbmdET01SYW5nZTooRE9NUmFuZ2UgKilyYW5nZSBnaXZlbkFjdGlvbjooV2ViVmlld0lu
c2VydEFjdGlvbilhY3Rpb247CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lX
ZWJWaWV3LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lX
ZWJWaWV3LmlkbAkocmV2aXNpb24gMTc4OTUzKQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJm
YWNlcy9JV2ViVmlldy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDEwIEBAIGNwcF9x
dW90ZSgiI2RlZmluZSBXZWJWaWV3UHJvZ3Jlc3NTdGFydGUKIGNwcF9xdW90ZSgiI2RlZmluZSBX
ZWJWaWV3UHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24gVEVYVChcIldlYlByb2dy
ZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uXCIpIikKIGNwcF9xdW90ZSgiI2RlZmluZSBX
ZWJWaWV3UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbiBURVhUKFwiV2ViUHJvZ3Jlc3NGaW5p
c2hlZE5vdGlmaWNhdGlvblwiKSIpCiBjcHBfcXVvdGUoIiNkZWZpbmUgV2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbk5vdGlmaWNhdGlvbiBURVhUKFwiV2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvblwiKSIpCitjcHBfcXVvdGUoIiNkZWZpbmUgV2ViVmlld0RpZEJlZ2luRWRpdGlu
Z05vdGlmaWNhdGlvbiBURVhUKFwiV2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvblwi
KSIpCitjcHBfcXVvdGUoIiNkZWZpbmUgV2ViVmlld0RpZEVuZEVkaXRpbmdOb3RpZmljYXRpb24g
VEVYVChcIldlYlZpZXdEaWRFbmRFZGl0aW5nTm90aWZpY2F0aW9uXCIpIikKK2NwcF9xdW90ZSgi
I2RlZmluZSBXZWJWaWV3RGlkQ2hhbmdlVHlwaW5nU3R5bGVOb3RpZmljYXRpb24gVEVYVChcIldl
YlZpZXdEaWRDaGFuZ2VUeXBpbmdTdHlsZU5vdGlmaWNhdGlvblwiKSIpCitjcHBfcXVvdGUoIiNk
ZWZpbmUgV2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbiBURVhUKFwiV2ViVmlld0RpZENoYW5n
ZU5vdGlmaWNhdGlvblwiKSIpCiAKICNpZm5kZWYgRE9fTk9fSU1QT1JUUwogaW1wb3J0ICJvYWlk
bC5pZGwiOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCShyZXZpc2lvbiAxNzg5NTMpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxMSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
LCAyMDExLCAyMDE0IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXZWJOb3Rp
ZmljYXRpb25DZW50ZXIuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSAiRE9NQ29y
ZUNsYXNzZXMuaCIKKyNpbmNsdWRlIDxjb211dGlsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SFRNTEVsZW1lbnQuaD4KQEAgLTE4OCwzNSArMTg5LDU3IEBAIGludCBXZWJFZGl0b3JDbGllbnQ6
OnNwZWxsQ2hlY2tlckRvY3VtZW4KICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBXZWJFZGl0b3JD
bGllbnQ6OnNob3VsZEJlZ2luRWRpdGluZyhSYW5nZSopCitib29sIFdlYkVkaXRvckNsaWVudDo6
c2hvdWxkQmVnaW5FZGl0aW5nKFdlYkNvcmU6OlJhbmdlKiByYW5nZSkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiB0cnVlOworICAgIENPTVB0cjxJV2ViRWRpdGluZ0RlbGVn
YXRlPiBlZDsKKyAgICBpZiAoRkFJTEVEKG1fd2ViVmlldy0+ZWRpdGluZ0RlbGVnYXRlKCZlZCkp
IHx8ICFlZC5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBDT01QdHI8SURPTVJh
bmdlPiBjdXJyZW50UmFuZ2UoQWRvcHRDT00sIERPTVJhbmdlOjpjcmVhdGVJbnN0YW5jZShyYW5n
ZSkpOworCisgICAgQk9PTCBzaG91bGRCZWdpbiA9IEZBTFNFOworICAgIGlmIChGQUlMRUQoZWQt
PnNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2UobV93ZWJWaWV3LCBjdXJyZW50UmFuZ2UuZ2V0
KCksICZzaG91bGRCZWdpbikpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBz
aG91bGRCZWdpbjsKIH0KIAotYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEVuZEVkaXRpbmco
UmFuZ2UqKQorYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEVuZEVkaXRpbmcoUmFuZ2UqIHJh
bmdlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgQ09N
UHRyPElXZWJFZGl0aW5nRGVsZWdhdGU+IGVkOworICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT5l
ZGl0aW5nRGVsZWdhdGUoJmVkKSkgfHwgIWVkLmdldCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIENPTVB0cjxJRE9NUmFuZ2U+IGN1cnJlbnRSYW5nZShBZG9wdENPTSwgRE9NUmFuZ2U6
OmNyZWF0ZUluc3RhbmNlKHJhbmdlKSk7CisKKyAgICBCT09MIHNob3VsZEVuZCA9IEZBTFNFOwor
ICAgIGlmIChGQUlMRUQoZWQtPnNob3VsZEVuZEVkaXRpbmdJbkRPTVJhbmdlKG1fd2ViVmlldywg
Y3VycmVudFJhbmdlLmdldCgpLCAmc2hvdWxkRW5kKSkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgcmV0dXJuIHNob3VsZEVuZDsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZEJl
Z2luRWRpdGluZygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBzdGF0aWMgX2JzdHJf
dCB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uTmFtZShXZWJWaWV3RGlkQmVnaW5F
ZGl0aW5nTm90aWZpY2F0aW9uKTsKKyAgICBJV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBub3RpZnlD
ZW50ZXIgPSBXZWJOb3RpZmljYXRpb25DZW50ZXI6OmRlZmF1bHRDZW50ZXJJbnRlcm5hbCgpOwor
ICAgIG5vdGlmeUNlbnRlci0+cG9zdE5vdGlmaWNhdGlvbk5hbWUod2ViVmlld0RpZEJlZ2luRWRp
dGluZ05vdGlmaWNhdGlvbk5hbWUuR2V0QlNUUigpLCBzdGF0aWNfY2FzdDxJV2ViVmlldyo+KG1f
d2ViVmlldyksIG51bGxwdHIpOwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVzcG9uZFRv
Q2hhbmdlZENvbnRlbnRzKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHN0YXRpYyBf
YnN0cl90IHdlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb25OYW1lKFdlYlZpZXdEaWRDaGFuZ2VO
b3RpZmljYXRpb24pOworICAgIElXZWJOb3RpZmljYXRpb25DZW50ZXIqIG5vdGlmeUNlbnRlciA9
IFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6ZGVmYXVsdENlbnRlckludGVybmFsKCk7CisgICAgbm90
aWZ5Q2VudGVyLT5wb3N0Tm90aWZpY2F0aW9uTmFtZSh3ZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0
aW9uTmFtZS5HZXRCU1RSKCksIHN0YXRpY19jYXN0PElXZWJWaWV3Kj4obV93ZWJWaWV3KSwgMCk7
CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKEZy
YW1lKikKIHsKICAgICBtX3dlYlZpZXctPnNlbGVjdGlvbkNoYW5nZWQoKTsKIAotICAgIHN0YXRp
YyBCU1RSIHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb25OYW1lID0gU3lzQWxs
b2NTdHJpbmcoV2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbik7CisgICAgc3Rh
dGljIF9ic3RyX3Qgd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbk5hbWUoV2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbik7CiAgICAgSVdlYk5vdGlmaWNhdGlv
bkNlbnRlciogbm90aWZ5Q2VudGVyID0gV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpkZWZhdWx0Q2Vu
dGVySW50ZXJuYWwoKTsKLSAgICBub3RpZnlDZW50ZXItPnBvc3ROb3RpZmljYXRpb25OYW1lKHdl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb25OYW1lLCBzdGF0aWNfY2FzdDxJV2Vi
Vmlldyo+KG1fd2ViVmlldyksIDApOworICAgIG5vdGlmeUNlbnRlci0+cG9zdE5vdGlmaWNhdGlv
bk5hbWUod2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbk5hbWUuR2V0QlNUUigp
LCBzdGF0aWNfY2FzdDxJV2ViVmlldyo+KG1fd2ViVmlldyksIDApOwogfQogCiB2b2lkIFdlYkVk
aXRvckNsaWVudDo6ZGlzY2FyZGVkQ29tcG9zaXRpb24oRnJhbWUqKQpAQCAtMjI2LDcgKzI0OSw5
IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaXNjYXJkZWRDb21wb3NpdGkKIAogdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OmRpZEVuZEVkaXRpbmcoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgc3RhdGljIF9ic3RyX3Qgd2ViVmlld0RpZEVuZEVkaXRpbmdOb3RpZmljYXRpb25OYW1lKFdl
YlZpZXdEaWRFbmRFZGl0aW5nTm90aWZpY2F0aW9uKTsKKyAgICBJV2ViTm90aWZpY2F0aW9uQ2Vu
dGVyKiBub3RpZnlDZW50ZXIgPSBXZWJOb3RpZmljYXRpb25DZW50ZXI6OmRlZmF1bHRDZW50ZXJJ
bnRlcm5hbCgpOworICAgIG5vdGlmeUNlbnRlci0+cG9zdE5vdGlmaWNhdGlvbk5hbWUod2ViVmll
d0RpZEVuZEVkaXRpbmdOb3RpZmljYXRpb25OYW1lLkdldEJTVFIoKSwgc3RhdGljX2Nhc3Q8SVdl
YlZpZXcqPihtX3dlYlZpZXcpLCBudWxscHRyKTsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OmRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkKQEAgLTI0NCw0OSArMjY5LDc1IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXIKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCi1ib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2Uq
IC8qcmFuZ2UqLykKK2Jvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGREZWxldGVSYW5nZShSYW5n
ZSogcmFuZ2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsgCi0gICAgcmV0dXJuIHRydWU7IAor
ICAgIENPTVB0cjxJV2ViRWRpdGluZ0RlbGVnYXRlPiBlZDsKKyAgICBpZiAoRkFJTEVEKG1fd2Vi
Vmlldy0+ZWRpdGluZ0RlbGVnYXRlKCZlZCkpIHx8ICFlZC5nZXQoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBDT01QdHI8SURPTVJhbmdlPiBjdXJyZW50UmFuZ2UoQWRvcHRDT00sIERP
TVJhbmdlOjpjcmVhdGVJbnN0YW5jZShyYW5nZSkpOwogCi0gICAgLy8gRklYTUU6IGNhbGxpbmcg
bV93ZWJWaWV3LT5lZGl0aW5nRGVsZWdhdGUoKSB3aWxsIGNhdXNlIGFuIGFzc2VydGlvbiBmYWls
dXJlIHNvIHdlIGRvbid0IHdhbnQgdG8gZW5hYmxlIHRoaXMgY29kZSB1bnRpbCB0aGF0J3MgaW1w
bGVtZW50ZWQuIAotICAgIC8vQk9PTCByZXN1bHQgPSBmYWxzZTsKLSAgICAvL0lXZWJWaWV3RWRp
dGluZ0RlbGVnYXRlKiBlZGl0aW5nRGVsZWdhdGU7Ci0gICAgLy8vLyBGSVhNRTogRE9NUmFuZ2Ug
bmVlZHMgdG8gYmUgaW1wbGVtZW50ZWQgYmVmb3JlIGFueXRoaW5nIG1lYW5pbmdmdWwgY2FuIGJl
IGRvbmUgaGVyZQotICAgIC8vSURPTVJhbmdlKiBkb21SYW5nZSgwKTsKLSAgICAvL2lmIChTVUND
RUVERUQobV93ZWJWaWV3LT5lZGl0aW5nRGVsZWdhdGUoJmVkaXRpbmdEZWxlZ2F0ZSkpKSB7Ci0g
ICAgLy8gICAgZWRpdGluZ0RlbGVnYXRlLT5zaG91bGREZWxldGVET01SYW5nZShtX3dlYlZpZXcs
IGRvbVJhbmdlLCAmcmVzdWx0KTsKLSAgICAvLyAgICBlZGl0aW5nRGVsZWdhdGUtPlJlbGVhc2Uo
KTsKLSAgICAvL30KLSAgICAvL3JldHVybiAhIXJlc3VsdDsKKyAgICBCT09MIHNob3VsZERlbGV0
ZSA9IEZBTFNFOworICAgIGlmIChGQUlMRUQoZWQtPnNob3VsZERlbGV0ZURPTVJhbmdlKG1fd2Vi
VmlldywgY3VycmVudFJhbmdlLmdldCgpLCAmc2hvdWxkRGVsZXRlKSkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgcmV0dXJuIHNob3VsZERlbGV0ZTsKIH0KIAotYm9vbCBXZWJFZGl0b3JD
bGllbnQ6OnNob3VsZEluc2VydE5vZGUoTm9kZSogLypub2RlKi8sIFJhbmdlKiAvKnJlcGxhY2lu
Z1JhbmdlKi8sIEVkaXRvckluc2VydEFjdGlvbiAvKmdpdmVuQWN0aW9uKi8pCitib29sIFdlYkVk
aXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0Tm9kZShOb2RlKiBub2RlLCBSYW5nZSogaW5zZXJ0aW5n
UmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbiBnaXZlbkFjdGlvbikKIHsgCi0gICAgbm90SW1wbGVt
ZW50ZWQoKTsgCi0gICAgcmV0dXJuIHRydWU7IAorICAgIENPTVB0cjxJV2ViRWRpdGluZ0RlbGVn
YXRlPiBlZGl0aW5nRGVsZWdhdGU7CisgICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPmVkaXRpbmdE
ZWxlZ2F0ZSgmZWRpdGluZ0RlbGVnYXRlKSkgfHwgIWVkaXRpbmdEZWxlZ2F0ZS5nZXQoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBDT01QdHI8SURPTVJhbmdlPiBpbnNlcnRpbmdET01S
YW5nZShBZG9wdENPTSwgRE9NUmFuZ2U6OmNyZWF0ZUluc3RhbmNlKGluc2VydGluZ1JhbmdlKSk7
CisgICAgaWYgKCFpbnNlcnRpbmdET01SYW5nZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICBDT01QdHI8SURPTU5vZGU+IGluc2VydERPTU5vZGUoQWRvcHRDT00sIERPTU5vZGU6OmNyZWF0
ZUluc3RhbmNlKG5vZGUpKTsKKyAgICBpZiAoIWluc2VydERPTU5vZGUpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgQk9PTCBzaG91bGRJbnNlcnQgPSBGQUxTRTsKKyAgICBpZiAoRkFJTEVE
KGVkaXRpbmdEZWxlZ2F0ZS0+c2hvdWxkSW5zZXJ0Tm9kZShtX3dlYlZpZXcsIGluc2VydERPTU5v
ZGUuZ2V0KCksIGluc2VydGluZ0RPTVJhbmdlLmdldCgpLCBzdGF0aWNfY2FzdDxXZWJWaWV3SW5z
ZXJ0QWN0aW9uPihnaXZlbkFjdGlvbiksICZzaG91bGRJbnNlcnQpKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICByZXR1cm4gc2hvdWxkSW5zZXJ0OwogfQogCi1ib29sIFdlYkVkaXRvckNs
aWVudDo6c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIC8qc3RyKi8sIFJhbmdlKiAvKiBy
ZXBsYWNpbmdSYW5nZSAqLywgRWRpdG9ySW5zZXJ0QWN0aW9uIC8qZ2l2ZW5BY3Rpb24qLykKLXsg
ICAgIAotICAgIG5vdEltcGxlbWVudGVkKCk7IAotICAgIHJldHVybiB0cnVlOyAKLQotICAgIC8v
IEZJWE1FOiBjYWxsaW5nIG1fd2ViVmlldy0+ZWRpdGluZ0RlbGVnYXRlKCkgd2lsbCBjYXVzZSBh
biBhc3NlcnRpb24gZmFpbHVyZSBzbyB3ZSBkb24ndCB3YW50IHRvIGVuYWJsZSB0aGlzIGNvZGUg
dW50aWwgdGhhdCdzIGltcGxlbWVudGVkLiAKLSAgICAvL0JPT0wgcmVzdWx0ID0gZmFsc2U7Ci0g
ICAgLy9JV2ViVmlld0VkaXRpbmdEZWxlZ2F0ZSogZWRpdGluZ0RlbGVnYXRlOwotICAgIC8vLy8g
RklYTUU6IERPTVJhbmdlIG5lZWRzIHRvIGJlIGltcGxlbWVudGVkIGJlZm9yZSBhbnl0aGluZyBt
ZWFuaW5nZnVsIGNhbiBiZSBkb25lIGhlcmUKLSAgICAvL0lET01SYW5nZSogZG9tUmFuZ2UoMCk7
IC8vIG1ha2UgYSBET01SYW5nZSBmcm9tIHJlcGxhY2luZ1JhbmdlCi0gICAgLy9CU3RyaW5nIHRl
eHQoc3RyKTsKLSAgICAvL2lmIChTVUNDRUVERUQobV93ZWJWaWV3LT5lZGl0aW5nRGVsZWdhdGUo
JmVkaXRpbmdEZWxlZ2F0ZSkpKSB7Ci0gICAgLy8gICAgZWRpdGluZ0RlbGVnYXRlLT5zaG91bGRJ
bnNlcnRUZXh0KG1fd2ViVmlldywgdGV4dCwgZG9tUmFuZ2UsIChXZWJWaWV3SW5zZXJ0QWN0aW9u
KSBnaXZlbkFjdGlvbiwgJnJlc3VsdCk7Ci0gICAgLy8gICAgZWRpdGluZ0RlbGVnYXRlLT5SZWxl
YXNlKCk7Ci0gICAgLy99Ci0gICAgLy9yZXR1cm4gISFyZXN1bHQ7Citib29sIFdlYkVkaXRvckNs
aWVudDo6c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHN0ciwgUmFuZ2UqIGluc2VydGlu
Z1JhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gZ2l2ZW5BY3Rpb24pCit7CisgICAgQ09NUHRyPElX
ZWJFZGl0aW5nRGVsZWdhdGU+IGVkaXRpbmdEZWxlZ2F0ZTsKKyAgICBpZiAoRkFJTEVEKG1fd2Vi
Vmlldy0+ZWRpdGluZ0RlbGVnYXRlKCZlZGl0aW5nRGVsZWdhdGUpKSB8fCAhZWRpdGluZ0RlbGVn
YXRlLmdldCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIENPTVB0cjxJRE9NUmFuZ2U+
IGluc2VydGluZ0RPTVJhbmdlKEFkb3B0Q09NLCBET01SYW5nZTo6Y3JlYXRlSW5zdGFuY2UoaW5z
ZXJ0aW5nUmFuZ2UpKTsKKyAgICBpZiAoIWluc2VydGluZ0RPTVJhbmdlKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIEJTdHJpbmcgdGV4dChzdHIpOworICAgIEJPT0wgc2hvdWxkSW5zZXJ0
ID0gRkFMU0U7CisgICAgaWYgKEZBSUxFRChlZGl0aW5nRGVsZWdhdGUtPnNob3VsZEluc2VydFRl
eHQobV93ZWJWaWV3LCB0ZXh0LCBpbnNlcnRpbmdET01SYW5nZS5nZXQoKSwgc3RhdGljX2Nhc3Q8
V2ViVmlld0luc2VydEFjdGlvbj4oZ2l2ZW5BY3Rpb24pLCAmc2hvdWxkSW5zZXJ0KSkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIHNob3VsZEluc2VydDsKIH0KIAotLy9ib29s
IFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShSYW5nZSAqY3VycmVu
dFJhbmdlLCBSYW5nZSAqdG9Qcm9wb3NlZFJhbmdlLCBTZWxlY3Rpb25BZmZpbml0eSBzZWxlY3Rp
b25BZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykKLS8veyBub3RJbXBsZW1lbnRlZCgpOyBy
ZXR1cm4gZmFsc2U7IH0KK2Jvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3Rl
ZFJhbmdlKFdlYkNvcmU6OlJhbmdlKiBjdXJyZW50UmFuZ2UsIFdlYkNvcmU6OlJhbmdlKiBwcm9w
b3NlZFJhbmdlLCBXZWJDb3JlOjpFQWZmaW5pdHkgc2VsZWN0aW9uQWZmaW5pdHksIGJvb2wgZmxh
ZykKK3sKKyAgICBDT01QdHI8SVdlYkVkaXRpbmdEZWxlZ2F0ZT4gZWQ7CisgICAgaWYgKEZBSUxF
RChtX3dlYlZpZXctPmVkaXRpbmdEZWxlZ2F0ZSgmZWQpKSB8fCAhZWQuZ2V0KCkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgQ09NUHRyPElET01SYW5nZT4gY3VycmVudElET01SYW5nZShB
ZG9wdENPTSwgRE9NUmFuZ2U6OmNyZWF0ZUluc3RhbmNlKGN1cnJlbnRSYW5nZSkpOworICAgIENP
TVB0cjxJRE9NUmFuZ2U+IHByb3Bvc2VkSURPTVJhbmdlKEFkb3B0Q09NLCBET01SYW5nZTo6Y3Jl
YXRlSW5zdGFuY2UocHJvcG9zZWRSYW5nZSkpOworCisgICAgQk9PTCBzaG91bGRDaGFuZ2UgPSBG
QUxTRTsKKyAgICBpZiAoRkFJTEVEKGVkLT5zaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlKG1f
d2ViVmlldywgY3VycmVudElET01SYW5nZS5nZXQoKSwgcHJvcG9zZWRJRE9NUmFuZ2UuZ2V0KCks
IHN0YXRpY19jYXN0PFdlYlNlbGVjdGlvbkFmZmluaXR5PihzZWxlY3Rpb25BZmZpbml0eSksIGZs
YWcsICZzaG91bGRDaGFuZ2UpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4g
c2hvdWxkQ2hhbmdlOworfQogCiBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHls
ZShTdHlsZVByb3BlcnRpZXMqIC8qc3R5bGUqLywgUmFuZ2UqIC8qdG9FbGVtZW50c0luRE9NUmFu
Z2UqLykKIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIHRydWU7IH0KQEAgLTI5OCwxMCArMzQ5
LDE0IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VUeXBpbmcKIHsgbm90SW1w
bGVtZW50ZWQoKTsgcmV0dXJuIGZhbHNlOyB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3ZWJW
aWV3RGlkQ2hhbmdlVHlwaW5nU3R5bGUoV2ViTm90aWZpY2F0aW9uKiAvKm5vdGlmaWNhdGlvbiov
KQoteyAgbm90SW1wbGVtZW50ZWQoKTsgfQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CiAK
IHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uKFdlYk5vdGlm
aWNhdGlvbiogLypub3RpZmljYXRpb24qLykKLXsgIG5vdEltcGxlbWVudGVkKCk7IH0KK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQogCiBib29sIFdlYkVkaXRvckNsaWVudDo6c21hcnRJbnNl
cnREZWxldGVFbmFibGVkKHZvaWQpCiB7CkBAIC0zMTksOSArMzc0LDYgQEAgYm9vbCBXZWJFZGl0
b3JDbGllbnQ6OmlzU2VsZWN0VHJhaWxpbmdXaAogICAgIHJldHVybiBwYWdlLT5zZXR0aW5ncygp
LnNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsKIH0KIAotYm9vbCBXZWJFZGl0b3JD
bGllbnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3Jl
OjpSYW5nZSosIFdlYkNvcmU6OkVBZmZpbml0eSwgYm9vbCkKLXsgbm90SW1wbGVtZW50ZWQoKTsg
cmV0dXJuIHRydWU7IH0KLQogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRleHRGaWVsZERpZEJlZ2lu
RWRpdGluZyhFbGVtZW50KiBlKQogewogICAgIElXZWJGb3JtRGVsZWdhdGUqIGZvcm1EZWxlZ2F0
ZTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE3ODk1NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDM5IEBACisyMDE1LTAxLTIyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIFtXaW5dIEV4cG9zZSBtaXNzaW5nIGVkaXRpbmcgZmVhdHVyZXMgdGhy
b3VnaCBXZWJWaWV3IGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQwNzczCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xOTU2NTQyMT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb25uZWN0
IHRoZSB2YXJpb3VzIFdlYlZpZXcgZWRpdGluZyBkZWxlZ2F0ZSBtZXRob2RzIHRvIG91cgorICAg
ICAgICB0ZXN0IGluZnJhc3RydWN0dXJlLiBBbHNvIHByZWZlciBfYnN0cl90IHRvIHJhdyBCU1RS
IHR5cGVzCisgICAgICAgIHRvIHNpbXBsaWZ5IGxpZmUgY3ljbGUgbWFuYWdlbWVudC4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChy
ZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3dpbi9FZGl0aW5nRGVsZWdhdGUuY3BwOgorICAgICAgICAoRWRpdGluZ0Rl
bGVnYXRlOjpRdWVyeUludGVyZmFjZSk6CisgICAgICAgIChkdW1wUGF0aCk6CisgICAgICAgIChk
dW1wKToKKyAgICAgICAgKEVkaXRpbmdEZWxlZ2F0ZTo6c2hvdWxkQmVnaW5FZGl0aW5nSW5ET01S
YW5nZSk6CisgICAgICAgIChFZGl0aW5nRGVsZWdhdGU6OnNob3VsZEVuZEVkaXRpbmdJbkRPTVJh
bmdlKToKKyAgICAgICAgKEVkaXRpbmdEZWxlZ2F0ZTo6c2hvdWxkSW5zZXJ0Tm9kZSk6CisgICAg
ICAgIChFZGl0aW5nRGVsZWdhdGU6OnNob3VsZEluc2VydFRleHQpOgorICAgICAgICAoRWRpdGlu
Z0RlbGVnYXRlOjpzaG91bGREZWxldGVET01SYW5nZSk6CisgICAgICAgIChFZGl0aW5nRGVsZWdh
dGU6OnNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2UpOgorICAgICAgICAoRWRpdGluZ0RlbGVn
YXRlOjpzaG91bGRBcHBseVN0eWxlKToKKyAgICAgICAgKEVkaXRpbmdEZWxlZ2F0ZTo6c2hvdWxk
Q2hhbmdlVHlwaW5nU3R5bGUpOgorICAgICAgICAoRWRpdGluZ0RlbGVnYXRlOjpkb1BsYXRmb3Jt
Q29tbWFuZCk6CisgICAgICAgIChFZGl0aW5nRGVsZWdhdGU6OndlYlZpZXdEaWRCZWdpbkVkaXRp
bmcpOgorICAgICAgICAoRWRpdGluZ0RlbGVnYXRlOjp3ZWJWaWV3RGlkQ2hhbmdlKToKKyAgICAg
ICAgKEVkaXRpbmdEZWxlZ2F0ZTo6d2ViVmlld0RpZEVuZEVkaXRpbmcpOgorICAgICAgICAoRWRp
dGluZ0RlbGVnYXRlOjp3ZWJWaWV3RGlkQ2hhbmdlVHlwaW5nU3R5bGUpOgorICAgICAgICAoRWRp
dGluZ0RlbGVnYXRlOjp3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKEVkaXRp
bmdEZWxlZ2F0ZTo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKToKKyAgICAgICAgKEVkaXRpbmdEZWxl
Z2F0ZTo6b25Ob3RpZnkpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9FZGl0aW5nRGVs
ZWdhdGUuaDoKKwogMjAxNS0wMS0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBBZGQgYSBidWlsZCBmbGFnIGZvciBFUzYgY2xhc3Mgc3ludGF4CkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDE3
ODk1MykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg2Niw2ICs4NjYsMTkgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3
VG9Db25zaXN0ZW50U3RhdAogICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXcoJndlYlZpZXcp
KSkgCiAgICAgICAgIHJldHVybjsKIAorICAgIENPTVB0cjxJV2ViVmlld0VkaXRpbmc+IHZpZXdF
ZGl0aW5nOworICAgIGlmIChTVUNDRUVERUQod2ViVmlldy0+UXVlcnlJbnRlcmZhY2UoJnZpZXdF
ZGl0aW5nKSkgJiYgdmlld0VkaXRpbmcpIHsKKworICAgICAgICB2aWV3RWRpdGluZy0+c2V0RWRp
dGFibGUoRkFMU0UpOworCisgICAgICAgIENPTVB0cjxJV2ViRWRpdGluZ0RlbGVnYXRlPiBkZWxl
Z2F0ZTsKKyAgICAgICAgaWYgKFNVQ0NFRURFRCh2aWV3RWRpdGluZy0+ZWRpdGluZ0RlbGVnYXRl
KCZkZWxlZ2F0ZSkpICYmIGRlbGVnYXRlKSB7CisgICAgICAgICAgICBDT01QdHI8RWRpdGluZ0Rl
bGVnYXRlPiBlZGl0aW5nRGVsZWdhdGUoUXVlcnksIHZpZXdFZGl0aW5nLmdldCgpKTsKKyAgICAg
ICAgICAgIGlmIChlZGl0aW5nRGVsZWdhdGUpCisgICAgICAgICAgICAgICAgZWRpdGluZ0RlbGVn
YXRlLT5zZXRBY2NlcHRzRWRpdGluZyhUUlVFKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIENP
TVB0cjxJV2ViSUJBY3Rpb25zPiB3ZWJJQkFjdGlvbnMoUXVlcnksIHdlYlZpZXcpOwogICAgIGlm
ICh3ZWJJQkFjdGlvbnMpIHsKICAgICAgICAgd2ViSUJBY3Rpb25zLT5tYWtlVGV4dFN0YW5kYXJk
U2l6ZSgwKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FZGl0aW5nRGVsZWdhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FZGl0aW5nRGVsZWdh
dGUuY3BwCShyZXZpc2lvbiAxNzg5NTMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRWRp
dGluZ0RlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNs
dWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAjaW5j
bHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHRjaGFyLmg+CiAKQEAgLTU0LDYgKzU1LDggQEAgSFJF
U1VMVCBFZGl0aW5nRGVsZWdhdGU6OlF1ZXJ5SW50ZXJmYWNlKAogICAgICAgICAqcHB2T2JqZWN0
ID0gc3RhdGljX2Nhc3Q8SVdlYkVkaXRpbmdEZWxlZ2F0ZSo+KHRoaXMpOwogICAgIGVsc2UgaWYg
KElzRXF1YWxHVUlEKHJpaWQsIElJRF9JV2ViRWRpdGluZ0RlbGVnYXRlKSkKICAgICAgICAgKnBw
dk9iamVjdCA9IHN0YXRpY19jYXN0PElXZWJFZGl0aW5nRGVsZWdhdGUqPih0aGlzKTsKKyAgICBl
bHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVdlYk5vdGlmaWNhdGlvbk9ic2VydmVyKSkK
KyAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElXZWJOb3RpZmljYXRpb25PYnNlcnZl
cio+KHRoaXMpOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CiAKQEAg
LTc1LDQ2ICs3OCw0NyBAQCBVTE9ORyBFZGl0aW5nRGVsZWdhdGU6OlJlbGVhc2Uodm9pZCkKICAg
ICByZXR1cm4gbmV3UmVmOwogfQogCi1zdGF0aWMgd3N0cmluZyBkdW1wUGF0aChJRE9NTm9kZSog
bm9kZSkKK3N0YXRpYyBzdGQ6OnN0cmluZyBkdW1wUGF0aChJRE9NTm9kZSogbm9kZSkKIHsKICAg
ICBBU1NFUlQobm9kZSk7CiAKLSAgICB3c3RyaW5nIHJlc3VsdDsKKyAgICBzdGQ6OnN0cmluZyBy
ZXN1bHQ7CiAKICAgICBfYnN0cl90IG5hbWU7CiAgICAgaWYgKEZBSUxFRChub2RlLT5ub2RlTmFt
ZSgmbmFtZS5HZXRCU1RSKCkpKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXN1bHQu
YXNzaWduKHN0YXRpY19jYXN0PHdjaGFyX3QqPihuYW1lKSwgbmFtZS5sZW5ndGgoKSk7CisgICAg
cmVzdWx0LmFzc2lnbihzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obmFtZSksIG5hbWUubGVuZ3Ro
KCkpOwogCiAgICAgQ09NUHRyPElET01Ob2RlPiBwYXJlbnQ7CiAgICAgaWYgKFNVQ0NFRURFRChu
b2RlLT5wYXJlbnROb2RlKCZwYXJlbnQpKSkKLSAgICAgICAgcmVzdWx0ICs9IFRFWFQoIiA+ICIp
ICsgZHVtcFBhdGgocGFyZW50LmdldCgpKTsKKyAgICAgICAgcmVzdWx0ICs9ICIgPiAiICsgZHVt
cFBhdGgocGFyZW50LmdldCgpKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyB3
c3RyaW5nIGR1bXAoSURPTVJhbmdlKiByYW5nZSkKK3N0YXRpYyBzdGQ6OnN0cmluZyBkdW1wKElE
T01SYW5nZSogcmFuZ2UpCiB7Ci0gICAgQVNTRVJUKHJhbmdlKTsKKyAgICBpZiAoIXJhbmdlKQor
ICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKIAogICAgIGludCBzdGFydE9mZnNldDsKICAg
ICBpZiAoRkFJTEVEKHJhbmdlLT5zdGFydE9mZnNldCgmc3RhcnRPZmZzZXQpKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygpOwogCiAgICAgaW50IGVuZE9m
ZnNldDsKICAgICBpZiAoRkFJTEVEKHJhbmdlLT5lbmRPZmZzZXQoJmVuZE9mZnNldCkpKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7CiAKICAgICBDT01Q
dHI8SURPTU5vZGU+IHN0YXJ0Q29udGFpbmVyOwogICAgIGlmIChGQUlMRUQocmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCZzdGFydENvbnRhaW5lcikpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6c3RyaW5nKCk7CiAKICAgICBDT01QdHI8SURPTU5vZGU+IGVuZENvbnRhaW5l
cjsKICAgICBpZiAoRkFJTEVEKHJhbmdlLT5lbmRDb250YWluZXIoJmVuZENvbnRhaW5lcikpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7CiAKLSAgICB3
Y2hhcl90IGJ1ZmZlclsxMDI0XTsKLSAgICBfc253cHJpbnRmKGJ1ZmZlciwgQVJSQVlTSVpFKGJ1
ZmZlciksIEwicmFuZ2UgZnJvbSAlbGQgb2YgJXMgdG8gJWxkIG9mICVzIiwgc3RhcnRPZmZzZXQs
IGR1bXBQYXRoKHN0YXJ0Q29udGFpbmVyLmdldCgpKS5jX3N0cigpLCBlbmRPZmZzZXQsIGR1bXBQ
YXRoKGVuZENvbnRhaW5lci5nZXQoKSkuY19zdHIoKSk7CisgICAgY2hhciBidWZmZXJbMTAyNF07
CisgICAgc25wcmludGYoYnVmZmVyLCBBUlJBWVNJWkUoYnVmZmVyKSwgInJhbmdlIGZyb20gJWxk
IG9mICVzIHRvICVsZCBvZiAlcyIsIHN0YXJ0T2Zmc2V0LCBkdW1wUGF0aChzdGFydENvbnRhaW5l
ci5nZXQoKSkuY19zdHIoKSwgZW5kT2Zmc2V0LCBkdW1wUGF0aChlbmRDb250YWluZXIuZ2V0KCkp
LmNfc3RyKCkpOwogICAgIHJldHVybiBidWZmZXI7CiB9CiAKQEAgLTEyNiw3ICsxMzAsNyBAQCBI
UkVTVUxUIEVkaXRpbmdEZWxlZ2F0ZTo6c2hvdWxkQmVnaW5FZGl0CiAgICAgfQogCiAgICAgaWYg
KDo6Z1Rlc3RSdW5uZXItPmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgJiYgIWRvbmUpCi0gICAgICAg
IF90cHJpbnRmKFRFWFQoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9N
UmFuZ2U6JXNcbiIpLCBkdW1wKHJhbmdlKS5jX3N0cigpKTsKKyAgICAgICAgcHJpbnRmKCJFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOiVzXG4iLCBkdW1wKHJh
bmdlKS5jX3N0cigpKTsKIAogICAgICpyZXN1bHQgPSBtX2FjY2VwdHNFZGl0aW5nOwogICAgIHJl
dHVybiBTX09LOwpAQCAtMTQwLDIzICsxNDQsMjQgQEAgSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6
OnNob3VsZEVuZEVkaXRpbgogICAgIH0KIAogICAgIGlmICg6OmdUZXN0UnVubmVyLT5kdW1wRWRp
dGluZ0NhbGxiYWNrcygpICYmICFkb25lKQotICAgICAgICBfdHByaW50ZihURVhUKCJFRElUSU5H
IERFTEVHQVRFOiBzaG91bGRFbmRFZGl0aW5nSW5ET01SYW5nZTolc1xuIiksIGR1bXAocmFuZ2Up
LmNfc3RyKCkpOworICAgICAgICBwcmludGYoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEVuZEVk
aXRpbmdJbkRPTVJhbmdlOiVzXG4iLCBkdW1wKHJhbmdlKS5jX3N0cigpKTsKIAogICAgICpyZXN1
bHQgPSBtX2FjY2VwdHNFZGl0aW5nOwogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIEVk
aXRpbmdEZWxlZ2F0ZTo6c2hvdWxkSW5zZXJ0Tm9kZShJV2ViVmlldyogLyp3ZWJWaWV3Ki8sIElE
T01Ob2RlKiBub2RlLCBJRE9NUmFuZ2UqIHJhbmdlLCBXZWJWaWV3SW5zZXJ0QWN0aW9uIGFjdGlv
bikKK0hSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpzaG91bGRJbnNlcnROb2RlKElXZWJWaWV3KiAv
KndlYlZpZXcqLywgSURPTU5vZGUqIG5vZGUsIElET01SYW5nZSogcmFuZ2UsIFdlYlZpZXdJbnNl
cnRBY3Rpb24gYWN0aW9uLCBCT09MKiByZXN1bHQpCiB7Ci0gICAgc3RhdGljIExQQ1RTVFIgaW5z
ZXJ0YWN0aW9uc3RyaW5nW10gPSB7Ci0gICAgICAgIFRFWFQoIldlYlZpZXdJbnNlcnRBY3Rpb25U
eXBlZCIpLAotICAgICAgICBURVhUKCJXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkIiksCi0gICAg
ICAgIFRFWFQoIldlYlZpZXdJbnNlcnRBY3Rpb25Ecm9wcGVkIiksCisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGluc2VydGFjdGlvbnN0cmluZ1tdID0geworICAgICAgICAiV2ViVmlld0luc2VydEFj
dGlvblR5cGVkIiwKKyAgICAgICAgIldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWQiLAorICAgICAg
ICAiV2ViVmlld0luc2VydEFjdGlvbkRyb3BwZWQiLAogICAgIH07CiAKICAgICBpZiAoOjpnVGVz
dFJ1bm5lci0+ZHVtcEVkaXRpbmdDYWxsYmFja3MoKSAmJiAhZG9uZSkKLSAgICAgICAgX3Rwcmlu
dGYoVEVYVCgiRURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZTolcyByZXBsYWNpbmdE
T01SYW5nZTolcyBnaXZlbkFjdGlvbjolc1xuIiksIGR1bXBQYXRoKG5vZGUpLmNfc3RyKCksIGR1
bXAocmFuZ2UpLmNfc3RyKCksIGluc2VydGFjdGlvbnN0cmluZ1thY3Rpb25dKTsKKyAgICAgICAg
cHJpbnRmKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiVzIHJlcGxhY2luZ0RP
TVJhbmdlOiVzIGdpdmVuQWN0aW9uOiVzXG4iLCBkdW1wUGF0aChub2RlKS5jX3N0cigpLCBkdW1w
KHJhbmdlKS5jX3N0cigpLCBpbnNlcnRhY3Rpb25zdHJpbmdbYWN0aW9uXSk7CiAKKyAgICAqcmVz
dWx0ID0gbV9hY2NlcHRzRWRpdGluZzsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTY3LDE0
ICsxNzIsMTYgQEAgSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OnNob3VsZEluc2VydFRleAogICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgIH0KIAotICAgIHN0YXRpYyBMUENUU1RSIGluc2Vy
dGFjdGlvbnN0cmluZ1tdID0gewotICAgICAgICBURVhUKCJXZWJWaWV3SW5zZXJ0QWN0aW9uVHlw
ZWQiKSwKLSAgICAgICAgVEVYVCgiV2ViVmlld0luc2VydEFjdGlvblBhc3RlZCIpLAotICAgICAg
ICBURVhUKCJXZWJWaWV3SW5zZXJ0QWN0aW9uRHJvcHBlZCIpLAorICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBpbnNlcnRhY3Rpb25zdHJpbmdbXSA9IHsKKyAgICAgICAgIldlYlZpZXdJbnNlcnRBY3Rp
b25UeXBlZCIsCisgICAgICAgICJXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkIiwKKyAgICAgICAg
IldlYlZpZXdJbnNlcnRBY3Rpb25Ecm9wcGVkIiwKICAgICB9OwogCi0gICAgaWYgKDo6Z1Rlc3RS
dW5uZXItPmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgJiYgIWRvbmUpCi0gICAgICAgIF90cHJpbnRm
KFRFWFQoIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydFRleHQ6JXMgcmVwbGFjaW5nRE9N
UmFuZ2U6JXMgZ2l2ZW5BY3Rpb246JXNcbiIpLCB0ZXh0ID8gdGV4dCA6IFRFWFQoIiIpLCBkdW1w
KHJhbmdlKS5jX3N0cigpLCBpbnNlcnRhY3Rpb25zdHJpbmdbYWN0aW9uXSk7CisgICAgaWYgKDo6
Z1Rlc3RSdW5uZXItPmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgJiYgIWRvbmUpIHsKKyAgICAgICAg
X2JzdHJfdCB0ZXh0QnN0cih0ZXh0KTsKKyAgICAgICAgcHJpbnRmKCJFRElUSU5HIERFTEVHQVRF
OiBzaG91bGRJbnNlcnRUZXh0OiVzIHJlcGxhY2luZ0RPTVJhbmdlOiVzIGdpdmVuQWN0aW9uOiVz
XG4iLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4odGV4dEJzdHIpLCBkdW1wKHJhbmdlKS5jX3N0
cigpLCBpbnNlcnRhY3Rpb25zdHJpbmdbYWN0aW9uXSk7CisgICAgfQogCiAgICAgKnJlc3VsdCA9
IG1fYWNjZXB0c0VkaXRpbmc7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC0xODgsNyArMTk1LDcgQEAg
SFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OnNob3VsZERlbGV0ZURPTQogICAgIH0KIAogICAgIGlm
ICg6OmdUZXN0UnVubmVyLT5kdW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFkb25lKQotICAgICAg
ICBfdHByaW50ZihURVhUKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01SYW5nZTol
c1xuIiksIGR1bXAocmFuZ2UpLmNfc3RyKCkpOworICAgICAgICBwcmludGYoIkVESVRJTkcgREVM
RUdBVEU6IHNob3VsZERlbGV0ZURPTVJhbmdlOiVzXG4iLCBkdW1wKHJhbmdlKS5jX3N0cigpKTsK
IAogICAgICpyZXN1bHQgPSBtX2FjY2VwdHNFZGl0aW5nOwogICAgIHJldHVybiBTX09LOwpAQCAt
MjAyLDE3ICsyMDksMTcgQEAgSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OnNob3VsZENoYW5nZVNl
bAogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgIH0KIAotICAgIHN0YXRpYyBMUENUU1RS
IGFmZmluaXR5c3RyaW5nW10gPSB7Ci0gICAgICAgIFRFWFQoIk5TU2VsZWN0aW9uQWZmaW5pdHlV
cHN0cmVhbSIpLAotICAgICAgICBURVhUKCJOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSIp
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGFmZmluaXR5c3RyaW5nW10gPSB7CisgICAgICAgICJO
U1NlbGVjdGlvbkFmZmluaXR5VXBzdHJlYW0iLAorICAgICAgICAiTlNTZWxlY3Rpb25BZmZpbml0
eURvd25zdHJlYW0iCiAgICAgfTsKLSAgICBzdGF0aWMgTFBDVFNUUiBib29sc3RyaW5nW10gPSB7
Ci0gICAgICAgIFRFWFQoIkZBTFNFIiksCi0gICAgICAgIFRFWFQoIlRSVUUiKQorICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBib29sc3RyaW5nW10gPSB7CisgICAgICAgICJGQUxTRSIsCisgICAgICAg
ICJUUlVFIgogICAgIH07CiAKICAgICBpZiAoOjpnVGVzdFJ1bm5lci0+ZHVtcEVkaXRpbmdDYWxs
YmFja3MoKSAmJiAhZG9uZSkKLSAgICAgICAgX3RwcmludGYoVEVYVCgiRURJVElORyBERUxFR0FU
RTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTolcyB0b0RPTVJhbmdlOiVzIGFmZmluaXR5
OiVzIHN0aWxsU2VsZWN0aW5nOiVzXG4iKSwgZHVtcChjdXJyZW50UmFuZ2UpLmNfc3RyKCksIGR1
bXAocHJvcG9zZWRSYW5nZSkuY19zdHIoKSwgYWZmaW5pdHlzdHJpbmdbc2VsZWN0aW9uQWZmaW5p
dHldLCBib29sc3RyaW5nW3N0aWxsU2VsZWN0aW5nXSk7CisgICAgICAgIHByaW50ZigiRURJVElO
RyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTolcyB0b0RPTVJhbmdlOiVz
IGFmZmluaXR5OiVzIHN0aWxsU2VsZWN0aW5nOiVzXG4iLCBkdW1wKGN1cnJlbnRSYW5nZSkuY19z
dHIoKSwgZHVtcChwcm9wb3NlZFJhbmdlKS5jX3N0cigpLCBhZmZpbml0eXN0cmluZ1tzZWxlY3Rp
b25BZmZpbml0eV0sIGJvb2xzdHJpbmdbc3RpbGxTZWxlY3RpbmddKTsKIAogICAgICpyZXN1bHQg
PSBtX2FjY2VwdHNFZGl0aW5nOwogICAgIHJldHVybiBTX09LOwpAQCAtMjI2LDcgKzIzMyw3IEBA
IEhSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpzaG91bGRBcHBseVN0eWwKICAgICB9CiAKICAgICBp
ZiAoOjpnVGVzdFJ1bm5lci0+ZHVtcEVkaXRpbmdDYWxsYmFja3MoKSAmJiAhZG9uZSkKLSAgICAg
ICAgX3RwcmludGYoVEVYVCgiRURJVElORyBERUxFR0FURTogc2hvdWxkQXBwbHlTdHlsZTolcyB0
b0VsZW1lbnRzSW5ET01SYW5nZTolc1xuIiksIFRFWFQoIidzdHlsZSBkZXNjcmlwdGlvbiciKS8q
W1tzdHlsZSBkZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10qLywgZHVtcChyYW5nZSkuY19zdHIoKSk7
CisgICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogc2hvdWxkQXBwbHlTdHlsZTolcyB0
b0VsZW1lbnRzSW5ET01SYW5nZTolc1xuIiwgIidzdHlsZSBkZXNjcmlwdGlvbiciLypbW3N0eWxl
IGRlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSovLCBkdW1wKHJhbmdlKS5jX3N0cigpKTsKIAogICAg
ICpyZXN1bHQgPSBtX2FjY2VwdHNFZGl0aW5nOwogICAgIHJldHVybiBTX09LOwpAQCAtMjQwLDcg
KzI0Nyw3IEBAIEhSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpzaG91bGRDaGFuZ2VUeXAKICAgICB9
CiAKICAgICBpZiAoOjpnVGVzdFJ1bm5lci0+ZHVtcEVkaXRpbmdDYWxsYmFja3MoKSAmJiAhZG9u
ZSkKLSAgICAgICAgX3RwcmludGYoVEVYVCgiRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdl
VHlwaW5nU3R5bGU6JXMgdG9TdHlsZTolc1xuIiksIFRFWFQoIidjdXJyZW50U3R5bGUgZGVzY3Jp
cHRpb24nIiksIFRFWFQoIidwcm9wb3NlZFN0eWxlIGRlc2NyaXB0aW9uJyIpKTsKKyAgICAgICAg
cHJpbnRmKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VUeXBpbmdTdHlsZTolcyB0b1N0
eWxlOiVzXG4iLCAiJ2N1cnJlbnRTdHlsZSBkZXNjcmlwdGlvbiciLCAiJ3Byb3Bvc2VkU3R5bGUg
ZGVzY3JpcHRpb24nIik7CiAKICAgICAqcmVzdWx0ID0gbV9hY2NlcHRzRWRpdGluZzsKICAgICBy
ZXR1cm4gU19PSzsKQEAgLTI1Myw4ICsyNjAsMTAgQEAgSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6
OmRvUGxhdGZvcm1Db21tYQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgIH0KIAotICAg
IGlmICg6OmdUZXN0UnVubmVyLT5kdW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFkb25lKQotICAg
ICAgICBfdHByaW50ZihURVhUKCJFRElUSU5HIERFTEVHQVRFOiBkb1BsYXRmb3JtQ29tbWFuZDol
c1xuIiksIGNvbW1hbmQgPyBjb21tYW5kIDogVEVYVCgiIikpOworICAgIGlmICg6OmdUZXN0UnVu
bmVyLT5kdW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFkb25lKSB7CisgICAgICAgIF9ic3RyX3Qg
Y29tbWFuZEJTVFIoY29tbWFuZCk7CisgICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTog
ZG9QbGF0Zm9ybUNvbW1hbmQ6JXNcbiIsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihjb21tYW5k
QlNUUikpOworICAgIH0KIAogICAgICpyZXN1bHQgPSBtX2FjY2VwdHNFZGl0aW5nOwogICAgIHJl
dHVybiBTX09LOwpAQCAtMjY1LDcgKzI3NCw3IEBAIEhSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjp3
ZWJWaWV3RGlkQmVnaW4KICAgICBpZiAoOjpnVGVzdFJ1bm5lci0+ZHVtcEVkaXRpbmdDYWxsYmFj
a3MoKSAmJiAhZG9uZSkgewogICAgICAgICBfYnN0cl90IG5hbWU7CiAgICAgICAgIG5vdGlmaWNh
dGlvbi0+bmFtZSgmbmFtZS5HZXRCU1RSKCkpOwotICAgICAgICBfdHByaW50ZihURVhUKCJFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOiVzXG4iKSwgc3RhdGljX2Nhc3Q8
VENIQVIqPihuYW1lKSk7CisgICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZEJlZ2luRWRpdGluZzolc1xuIiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG5hbWUpKTsK
ICAgICB9CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0yNzUsNyArMjg0LDcgQEAgSFJFU1VMVCBF
ZGl0aW5nRGVsZWdhdGU6OndlYlZpZXdEaWRDaGFuZwogICAgIGlmICg6OmdUZXN0UnVubmVyLT5k
dW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFkb25lKSB7CiAgICAgICAgIF9ic3RyX3QgbmFtZTsK
ICAgICAgICAgbm90aWZpY2F0aW9uLT5uYW1lKCZuYW1lLkdldEJTVFIoKSk7Ci0gICAgICAgIF90
cHJpbnRmKFRFWFQoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6JXNc
biIpLCBzdGF0aWNfY2FzdDxUQ0hBUio+KG5hbWUpKTsKKyAgICAgICAgcHJpbnRmKCJFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOiVzXG4iLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4obmFtZSkpOwogICAgIH0KICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTI4NSw3ICsyOTQsNyBA
QCBIUkVTVUxUIEVkaXRpbmdEZWxlZ2F0ZTo6d2ViVmlld0RpZEVuZEVkCiAgICAgaWYgKDo6Z1Rl
c3RSdW5uZXItPmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgJiYgIWRvbmUpIHsKICAgICAgICAgX2Jz
dHJfdCBuYW1lOwogICAgICAgICBub3RpZmljYXRpb24tPm5hbWUoJm5hbWUuR2V0QlNUUigpKTsK
LSAgICAgICAgX3RwcmludGYoVEVYVCgiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEVuZEVk
aXRpbmc6JXNcbiIpLCBzdGF0aWNfY2FzdDxUQ0hBUio+KG5hbWUpKTsKKyAgICAgICAgcHJpbnRm
KCJFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkRW5kRWRpdGluZzolc1xuIiwgc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KG5hbWUpKTsKICAgICB9CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0y
OTUsNyArMzA0LDcgQEAgSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OndlYlZpZXdEaWRDaGFuZwog
ICAgIGlmICg6OmdUZXN0UnVubmVyLT5kdW1wRWRpdGluZ0NhbGxiYWNrcygpICYmICFkb25lKSB7
CiAgICAgICAgIF9ic3RyX3QgbmFtZTsKICAgICAgICAgbm90aWZpY2F0aW9uLT5uYW1lKCZuYW1l
LkdldEJTVFIoKSk7Ci0gICAgICAgIF90cHJpbnRmKFRFWFQoIkVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2VUeXBpbmdTdHlsZTolc1xuIiksIHN0YXRpY19jYXN0PFRDSEFSKj4obmFt
ZSkpOworICAgICAgICBwcmludGYoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VU
eXBpbmdTdHlsZTolc1xuIiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG5hbWUpKTsKICAgICB9
CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0zMDUsNyArMzE0LDcgQEAgSFJFU1VMVCBFZGl0aW5n
RGVsZWdhdGU6OndlYlZpZXdEaWRDaGFuZwogICAgIGlmICg6OmdUZXN0UnVubmVyLT5kdW1wRWRp
dGluZ0NhbGxiYWNrcygpICYmICFkb25lKSB7CiAgICAgICAgIF9ic3RyX3QgbmFtZTsKICAgICAg
ICAgbm90aWZpY2F0aW9uLT5uYW1lKCZuYW1lLkdldEJTVFIoKSk7Ci0gICAgICAgIF90cHJpbnRm
KFRFWFQoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246JXNcbiIp
LCBzdGF0aWNfY2FzdDxUQ0hBUio+KG5hbWUpKTsKKyAgICAgICAgcHJpbnRmKCJFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOiVzXG4iLCBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4obmFtZSkpOwogICAgIH0KICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTM3OCwzICsz
ODcsMzQgQEAgSFJFU1VMVCBFZGl0aW5nRGVsZWdhdGU6OmNoZWNrU3BlbGxpbmdPZgogCiAgICAg
cmV0dXJuIFNfT0s7CiB9CisKK0hSRVNVTFQgRWRpdGluZ0RlbGVnYXRlOjpvbk5vdGlmeShJV2Vi
Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgX2JzdHJfdCBub3RpZmljYXRpb25O
YW1lOworICAgIEhSRVNVTFQgaHIgPSBub3RpZmljYXRpb24tPm5hbWUoJm5vdGlmaWNhdGlvbk5h
bWUuR2V0QlNUUigpKTsKKyAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgcmV0dXJuIGhyOwor
CisgICAgc3RhdGljIF9ic3RyX3Qgd2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbk5h
bWUoV2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbik7CisgICAgc3RhdGljIF9ic3Ry
X3Qgd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbk5hbWUoV2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbik7CisgICAgc3RhdGljIF9ic3RyX3Qgd2ViVmlld0Rp
ZEVuZEVkaXRpbmdOb3RpZmljYXRpb25OYW1lKFdlYlZpZXdEaWRFbmRFZGl0aW5nTm90aWZpY2F0
aW9uKTsKKyAgICBzdGF0aWMgX2JzdHJfdCB3ZWJWaWV3RGlkQ2hhbmdlVHlwaW5nU3R5bGVOb3Rp
ZmljYXRpb25OYW1lKFdlYlZpZXdEaWRDaGFuZ2VUeXBpbmdTdHlsZU5vdGlmaWNhdGlvbik7Cisg
ICAgc3RhdGljIF9ic3RyX3Qgd2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbk5hbWUoV2ViVmll
d0RpZENoYW5nZU5vdGlmaWNhdGlvbik7CisKKyAgICBpZiAoIXdjc2NtcChub3RpZmljYXRpb25O
YW1lLCB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uTmFtZSkpCisgICAgICAgIHJl
dHVybiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nKG5vdGlmaWNhdGlvbik7CisKKyAgICBpZiAoIXdj
c2NtcChub3RpZmljYXRpb25OYW1lLCB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uTmFtZSkpCisgICAgICAgIHJldHVybiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uKG5vdGlm
aWNhdGlvbik7CisKKyAgICBpZiAoIXdjc2NtcChub3RpZmljYXRpb25OYW1lLCB3ZWJWaWV3RGlk
RW5kRWRpdGluZ05vdGlmaWNhdGlvbk5hbWUpKQorICAgICAgICByZXR1cm4gd2ViVmlld0RpZEVu
ZEVkaXRpbmcobm90aWZpY2F0aW9uKTsKKworICAgIGlmICghd2NzY21wKG5vdGlmaWNhdGlvbk5h
bWUsIHdlYlZpZXdEaWRDaGFuZ2VUeXBpbmdTdHlsZU5vdGlmaWNhdGlvbk5hbWUpKQorICAgICAg
ICByZXR1cm4gd2ViVmlld0RpZENoYW5nZVR5cGluZ1N0eWxlKG5vdGlmaWNhdGlvbik7CisKKyAg
ICBpZiAoIXdjc2NtcChub3RpZmljYXRpb25OYW1lLCB3ZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0
aW9uTmFtZSkpCisgICAgICAgIHJldHVybiB3ZWJWaWV3RGlkQ2hhbmdlKG5vdGlmaWNhdGlvbik7
CisKKyAgICByZXR1cm4gU19PSzsKK30KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9F
ZGl0aW5nRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RWRpdGluZ0RlbGVnYXRlLmgJKHJldmlzaW9uIDE3ODk1MykKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9FZGl0aW5nRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBA
QAogCiAjaW5jbHVkZSA8V2ViS2l0L1dlYktpdC5oPgogCi1jbGFzcyBfX2RlY2xzcGVjKHV1aWQo
IjI2NURDRDRCLTc5QzMtNDRhMi04NEJDLTUxMUMzRURBQkQ2RiIpKSBFZGl0aW5nRGVsZWdhdGUg
OiBwdWJsaWMgSVdlYkVkaXRpbmdEZWxlZ2F0ZSB7CitjbGFzcyBfX2RlY2xzcGVjKHV1aWQoIjI2
NURDRDRCLTc5QzMtNDRhMi04NEJDLTUxMUMzRURBQkQ2RiIpKSBFZGl0aW5nRGVsZWdhdGUgOiBw
dWJsaWMgSVdlYkVkaXRpbmdEZWxlZ2F0ZSwgcHVibGljIElXZWJOb3RpZmljYXRpb25PYnNlcnZl
ciB7CiBwdWJsaWM6CiAgICAgRWRpdGluZ0RlbGVnYXRlKCk7CiAKQEAgLTUzLDExICs1Myw3IEBA
IHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBJRE9NUmFuZ2UgKnJhbmdlLAogICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNob3VsZEluc2VydE5vZGUoIAotICAgICAgICAvKiBbaW5d
ICovIElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpub2Rl
LAotICAgICAgICAvKiBbaW5dICovIElET01SYW5nZSAqcmFuZ2UsCi0gICAgICAgIC8qIFtpbl0g
Ki8gV2ViVmlld0luc2VydEFjdGlvbiBhY3Rpb24pOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzaG91bGRJbnNlcnROb2RlKElXZWJWaWV3KiwgSURPTU5vZGUqLCBJRE9N
UmFuZ2UqLCBXZWJWaWV3SW5zZXJ0QWN0aW9uLCBCT09MKiByZXN1bHQpOwogICAgIAogICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzaG91bGRJbnNlcnRUZXh0KCAKICAgICAg
ICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKQEAgLTE2OCw2ICsxNjQsOSBAQCBwdWJs
aWM6CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
dXBkYXRlR3JhbW1hciggdm9pZCkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CiAKKyAgICAgICAgLy8g
SVdlYk5vdGlmaWNhdGlvbk9ic2VydmVyCisgICAgICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBvbk5vdGlmeShJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pOworCiBw
cml2YXRlOgogICAgIGJvb2wgbV9hY2NlcHRzRWRpdGluZzsKICAgICBVTE9ORyBtX3JlZkNvdW50
Owo=
</data>
<flag name="review"
          id="270119"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>