<?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>66380</bug_id>
          
          <creation_ts>2011-08-17 08:24:36 -0700</creation_ts>
          <short_desc>[EFL] DRT: Add DumpRenderTreeChrome.{cpp,h}</short_desc>
          <delta_ts>2011-10-07 09:21:13 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>66685</dependson>
    
    <dependson>66782</dependson>
    
    <dependson>68454</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Leandro Pereira">leandro</reporter>
          <assigned_to name="Leandro Pereira">leandro</assigned_to>
          <cc>kenneth</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>452270</commentid>
    <comment_count>0</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-08-17 08:24:36 -0700</bug_when>
    <thetext>[EFL] DRT: Add DumpRenderTreeChrome.{cpp,h}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452307</commentid>
    <comment_count>1</comment_count>
      <attachid>104182</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-08-17 09:54:35 -0700</bug_when>
    <thetext>Created attachment 104182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470173</commentid>
    <comment_count>2</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-09-20 10:49:07 -0700</bug_when>
    <thetext>*** Bug 66415 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470175</commentid>
    <comment_count>3</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-09-20 10:50:44 -0700</bug_when>
    <thetext>Updating dependency list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470208</commentid>
    <comment_count>4</comment_count>
      <attachid>108032</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-09-20 11:29:08 -0700</bug_when>
    <thetext>Created attachment 108032
Updated patch which also changes related files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476759</commentid>
    <comment_count>5</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-10-02 21:34:41 -0700</bug_when>
    <thetext>CC&apos;ing reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477016</commentid>
    <comment_count>6</comment_count>
      <attachid>108032</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-10-03 09:16:57 -0700</bug_when>
    <thetext>Comment on attachment 108032
Updated patch which also changes related files

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

&gt; Tools/ChangeLog:11
&gt; +        * DumpRenderTree/efl/DumpRenderTreeChrome.cpp: Added.

I think the name Chrome is very confusing due to EFL vs Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477025</commentid>
    <comment_count>7</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-10-03 09:30:06 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 108032 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108032&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:11
&gt; &gt; +        * DumpRenderTree/efl/DumpRenderTreeChrome.cpp: Added.
&gt; 
&gt; I think the name Chrome is very confusing due to EFL vs Chromium.

It was named after ChromeClient and friends. Is it worth renaming it? Any suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478556</commentid>
    <comment_count>8</comment_count>
      <attachid>109831</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-10-05 11:53:54 -0700</bug_when>
    <thetext>Created attachment 109831
Rebase on top of trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480053</commentid>
    <comment_count>9</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-10-07 09:04:55 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 108032 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108032&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Tools/ChangeLog:11
&gt; &gt; &gt; +        * DumpRenderTree/efl/DumpRenderTreeChrome.cpp: Added.
&gt; &gt; 
&gt; &gt; I think the name Chrome is very confusing due to EFL vs Chromium.
&gt; 
&gt; It was named after ChromeClient and friends. Is it worth renaming it? Any suggestions?

I tend to agree, but on the other hand I have not better suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480063</commentid>
    <comment_count>10</comment_count>
      <attachid>109831</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-07 09:21:07 -0700</bug_when>
    <thetext>Comment on attachment 109831
Rebase on top of trunk

Clearing flags on attachment: 109831

Committed r96943: &lt;http://trac.webkit.org/changeset/96943&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480064</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-07 09:21:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104182</attachid>
            <date>2011-08-17 09:54:35 -0700</date>
            <delta_ts>2011-09-20 11:29:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66380-20110817135431.patch</filename>
            <type>text/plain</type>
            <size>15099</size>
            <attacher name="Leandro Pereira">leandro</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDkzMjA5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzQgQEAKKzIwMTEtMDgtMTcgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9u
Lm1vYmk+CisKKyAgICAgICAgW0VGTF0gRFJUOiBBZGQgRHVtcFJlbmRlclRyZWVDaHJvbWUue2Nw
cCxofQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYz
ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIFRoaXMgZW5jYXBzdWxhdGVzIEVXZWJLaXQgaW50byBhbiBvYmplY3QgdGhhdCBtYW5hZ2Vz
IG11bHRpcGxlCisgICAgICAgIHdpbmRvd3MgYW5kIHByb3ZpZGVzIGEgY2xlYW5lciBpbnRlcmZh
Y2UgdG8gRUZMJ3MgRHVtcFJlbmRlclRyZWUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9l
ZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKER1bXBSZW5kZXJU
cmVlQ2hyb21lOjpjcmVhdGUpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6OkR1bXBS
ZW5kZXJUcmVlQ2hyb21lKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjp+RHVtcFJl
bmRlclRyZWVDaHJvbWUpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6OmNyZWF0ZU5l
d1dpbmRvdyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6Y3JlYXRlVmlldyk6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6cmVtb3ZlV2luZG93KToKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlQ2hyb21lOjppbml0aWFsaXplKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVl
Q2hyb21lOjpleHRyYVZpZXdzKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjptYWlu
RnJhbWUpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6Om1haW5WaWV3KToKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjpyZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVz
KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbldpbmRvd09iamVjdENsZWFyZWQp
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uTG9hZFN0YXJ0ZWQpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6OnByb2Nlc3NXb3JrKToKKyAgICAgICAgKER1bXBSZW5k
ZXJUcmVlQ2hyb21lOjpvbkxvYWRGaW5pc2hlZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNo
cm9tZTo6b25TdGF0dXNiYXJUZXh0U2V0KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21l
OjpvblRpdGxlQ2hhbmdlZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25Eb2N1
bWVudExvYWRGaW5pc2hlZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5k
ZXJUcmVlQ2hyb21lLmg6IEFkZGVkLgorCiAyMDExLTA4LTE2ICBBZGFtIEJhcnRoICA8YWJhcnRo
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGEgQ0cgcXVhbGlmaWVyIHNpbWlsYXIgdG8gdGhl
IEdQVSBxdWFsaWZpZXIKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVy
VHJlZUNocm9tZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1
bXBSZW5kZXJUcmVlQ2hyb21lLmNwcAkocmV2aXNpb24gMCkKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
Mjg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFByb0ZVU0lPTiBFbWJlZGRlZCBTeXN0
ZW1zCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIElUUyBDT05UUklCVVRPUlMKKyAqIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVJTIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkR1bXBSZW5kZXJUcmVlQ2hyb21lLmgiCisKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5o
IgorI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlVmlldy5oIgorI2luY2x1ZGUgIkV2ZW50U2VuZGVy
LmgiCisjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiTGF5b3V0VGVzdENvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldvcmtRdWV1
ZS5oIgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiIC8vIEZJWE1FOiBjcmVhdGUgc29tZSBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZS5jcHAgaW5zdGVhZAorCisjaW5jbHVkZSA8RVdlYktp
dC5oPgorI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPEV2
YXMuaD4KKyNpbmNsdWRlIDxjc3RkaW8+CisjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CisKK1Bh
c3NPd25QdHI8RHVtcFJlbmRlclRyZWVDaHJvbWU+IER1bXBSZW5kZXJUcmVlQ2hyb21lOjpjcmVh
dGUoRXZhcyogZXZhcykKK3sKKyAgICBPd25QdHI8RHVtcFJlbmRlclRyZWVDaHJvbWU+IGNocm9t
ZSA9IGFkb3B0UHRyKG5ldyBEdW1wUmVuZGVyVHJlZUNocm9tZShldmFzKSk7CisKKyAgICBpZiAo
IWNocm9tZS0+aW5pdGlhbGl6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJl
dHVybiBjaHJvbWUucmVsZWFzZSgpOworfQorCitEdW1wUmVuZGVyVHJlZUNocm9tZTo6RHVtcFJl
bmRlclRyZWVDaHJvbWUoRXZhcyogZXZhcykKKyAgICA6IG1fbWFpblZpZXcoMCkKKyAgICAsIG1f
bWFpbkZyYW1lKDApCisgICAgLCBtX2V2YXMoZXZhcykKKyAgICAsIG1fZ2NDb250cm9sbGVyKGFk
b3B0UHRyKG5ldyBHQ0NvbnRyb2xsZXIpKQoreworfQorCitEdW1wUmVuZGVyVHJlZUNocm9tZTo6
fkR1bXBSZW5kZXJUcmVlQ2hyb21lKCkKK3sKK30KKworRXZhc19PYmplY3QqIER1bXBSZW5kZXJU
cmVlQ2hyb21lOjpjcmVhdGVOZXdXaW5kb3coKQoreworICAgIEV2YXNfT2JqZWN0KiBuZXdWaWV3
ID0gY3JlYXRlVmlldygpOworCisgICAgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX3dpbmRvd19v
cGVuX3NldChuZXdWaWV3LCBFSU5BX1RSVUUpOworICAgIGV3a192aWV3X3NldHRpbmdfc2NyaXB0
c193aW5kb3dfY2xvc2Vfc2V0KG5ld1ZpZXcsIEVJTkFfVFJVRSk7CisKKyAgICBtX2V4dHJhVmll
d3MuYXBwZW5kKG5ld1ZpZXcpOworCisgICAgcmV0dXJuIG5ld1ZpZXc7Cit9CisKK0V2YXNfT2Jq
ZWN0KiBEdW1wUmVuZGVyVHJlZUNocm9tZTo6Y3JlYXRlVmlldygpIGNvbnN0Cit7CisgICAgRXZh
c19PYmplY3QqIHZpZXcgPSBkcnRWaWV3VGlsZWRBZGQobV9ldmFzKTsKKyAgICBpZiAoIXZpZXcp
CisgICAgICAgIHJldHVybiAwOworCisgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KHZpZXcsIERBVEFf
RElSIi9kZWZhdWx0LmVkaiIpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRk
KHZpZXcsICJsb2FkLHN0YXJ0ZWQiLCBvbkxvYWRTdGFydGVkLCAwKTsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19hZGQodmlldywgImxvYWQsZmluaXNoZWQiLCBvbkxvYWRGaW5pc2hl
ZCwgMCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHZpZXcsICJ0aXRsZSxj
aGFuZ2VkIiwgb25UaXRsZUNoYW5nZWQsIDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2FkZCh2aWV3LCAid2luZG93LG9iamVjdCxjbGVhcmVkIiwgb25XaW5kb3dPYmplY3RDbGVh
cmVkLCBtX2djQ29udHJvbGxlci5nZXQoKSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfYWRkKHZpZXcsICJzdGF0dXNiYXIsdGV4dCxzZXQiLCBvblN0YXR1c2JhclRleHRTZXQsIDAp
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAibG9hZCxkb2N1bWVu
dCxmaW5pc2hlZCIsIG9uRG9jdW1lbnRMb2FkRmluaXNoZWQsIDApOworCisgICAgcmV0dXJuIHZp
ZXc7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVDaHJvbWU6OnJlbW92ZVdpbmRvdyhFdmFzX09i
amVjdCogdmlldykKK3sKKyAgICBjb25zdCBzaXplX3QgcG9zID0gbV9leHRyYVZpZXdzLmZpbmQo
dmlldyk7CisKKyAgICBpZiAocG9zID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2V4dHJhVmlld3MucmVtb3ZlKHBvcyk7CisgICAgZXZhc19vYmplY3RfZGVsKHZpZXcpOwor
fQorCitib29sIER1bXBSZW5kZXJUcmVlQ2hyb21lOjppbml0aWFsaXplKCkKK3sKKyAgICBtX21h
aW5WaWV3ID0gY3JlYXRlVmlldygpOworICAgIGlmICghbV9tYWluVmlldykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KG1fbWFpblZpZXcsIERBVEFfRElS
Ii9kZWZhdWx0LmVkaiIpOworCisgICAgZXZhc19vYmplY3RfbmFtZV9zZXQobV9tYWluVmlldywg
Im1fbWFpblZpZXciKTsKKyAgICBldmFzX29iamVjdF9tb3ZlKG1fbWFpblZpZXcsIDAsIDApOwor
ICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShtX21haW5WaWV3LCA4MDAsIDYwMCk7CisgICAgZXZhc19v
YmplY3RfbGF5ZXJfc2V0KG1fbWFpblZpZXcsIEVWQVNfTEFZRVJfTUFYKTsKKyAgICBldmFzX29i
amVjdF9zaG93KG1fbWFpblZpZXcpOworICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldChtX21haW5W
aWV3LCBFSU5BX1RSVUUpOworCisgICAgbV9tYWluRnJhbWUgPSBld2tfdmlld19mcmFtZV9tYWlu
X2dldChtX21haW5WaWV3KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitWZWN0b3I8RXZhc19P
YmplY3QqPiBEdW1wUmVuZGVyVHJlZUNocm9tZTo6ZXh0cmFWaWV3cygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fZXh0cmFWaWV3czsKK30KKworRXZhc19PYmplY3QqIER1bXBSZW5kZXJUcmVlQ2hy
b21lOjptYWluRnJhbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX21haW5GcmFtZTsKK30KKwor
RXZhc19PYmplY3QqIER1bXBSZW5kZXJUcmVlQ2hyb21lOjptYWluVmlldygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fbWFpblZpZXc7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVDaHJvbWU6OnJl
c2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXMoKQoreworICAgIFZlY3RvcjxFdmFzX09iamVj
dCo+OjppdGVyYXRvciBpdCA9IG1fZXh0cmFWaWV3cy5iZWdpbigpOworICAgIGZvciAoOyBpdCAh
PSBtX2V4dHJhVmlld3MuZW5kKCk7ICsraXQpCisgICAgICAgIGV2YXNfb2JqZWN0X2RlbCgqaXQp
OworICAgIG1fZXh0cmFWaWV3cy5jbGVhcigpOworCisgICAgZXdrX3NldHRpbmdzX2ljb25fZGF0
YWJhc2VfY2xlYXIoKTsKKyAgICBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX3NldCgw
KTsKKworICAgIGV3a192aWV3X3NldHRpbmdfcHJpdmF0ZV9icm93c2luZ19zZXQobWFpblZpZXco
KSwgRUlOQV9GQUxTRSk7CisgICAgZXdrX3ZpZXdfc2V0dGluZ19zcGF0aWFsX25hdmlnYXRpb25f
c2V0KG1haW5WaWV3KCksIEVJTkFfRkFMU0UpOworICAgIGV3a192aWV3X3NldHRpbmdfZW5hYmxl
X2ZyYW1lX2ZsYXR0ZW5pbmdfc2V0KG1haW5WaWV3KCksIEVJTkFfRkFMU0UpOworICAgIGV3a192
aWV3X3NldHRpbmdfb2ZmbGluZV9hcHBfY2FjaGVfc2V0KG1haW5WaWV3KCksIEVJTkFfVFJVRSk7
CisgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfc2NyaXB0c19zZXQobWFpblZpZXcoKSwgRUlO
QV9UUlVFKTsKKyAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfc3RhbmRhcmRfc2V0KG1haW5WaWV3
KCksICJUaW1lcyIpOworICAgIGV3a192aWV3X3NldHRpbmdfZm9udF9tb25vc3BhY2Vfc2V0KG1h
aW5WaWV3KCksICJDb3VyaWVyIik7CisgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X3NlcmlmX3Nl
dChtYWluVmlldygpLCAiVGltZXMiKTsKKyAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfc2Fuc19z
ZXJpZl9zZXQobWFpblZpZXcoKSwgIkhlbHZldGljYSIpOworICAgIGV3a192aWV3X3NldHRpbmdf
Zm9udF9jdXJzaXZlX3NldChtYWluVmlldygpLCAiY3Vyc2l2ZSIpOworICAgIGV3a192aWV3X3Nl
dHRpbmdfZm9udF9mYW50YXN5X3NldChtYWluVmlldygpLCAiZmFudGFzeSIpOworICAgIGV3a192
aWV3X3NldHRpbmdfZm9udF9kZWZhdWx0X3NpemVfc2V0KG1haW5WaWV3KCksIDEyKTsKKyAgICBl
d2tfdmlld19zZXR0aW5nX2ZvbnRfbW9ub3NwYWNlX3NpemVfc2V0KG1haW5WaWV3KCksIDEwKTsK
KyAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfbWluaW11bV9zaXplX3NldChtYWluVmlldygpLCAw
KTsKKyAgICBld2tfdmlld19zZXR0aW5nX2NhcmV0X2Jyb3dzaW5nX3NldChtYWluVmlldygpLCBF
SU5BX0ZBTFNFKTsKKyAgICBld2tfdmlld19zZXR0aW5nX3BhZ2VfY2FjaGVfc2V0KG1haW5WaWV3
KCksIEVJTkFfRkFMU0UpOworICAgIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2F1dG9fcmVzaXpl
X3dpbmRvd19zZXQobWFpblZpZXcoKSwgRUlOQV9UUlVFKTsKKyAgICBld2tfdmlld19zZXR0aW5n
X2VuYWJsZV9wbHVnaW5zX3NldChtYWluVmlldygpLCBFSU5BX1RSVUUpOworICAgIGV3a192aWV3
X3NldHRpbmdfc2NyaXB0c193aW5kb3dfb3Blbl9zZXQobWFpblZpZXcoKSwgRUlOQV9UUlVFKTsK
KyAgICBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93X2Nsb3NlX3NldChtYWluVmlldygp
LCBFSU5BX1RSVUUpOworCisgICAgZXdrX3ZpZXdfem9vbV9zZXQobWFpblZpZXcoKSwgMS4wLCAw
LCAwKTsKKyAgICBld2tfdmlld19wYWdlX3NjYWxlKG1haW5WaWV3KCksIDEuMCwgMCwgMCk7CisK
KyAgICBFd2tfSGlzdG9yeSogaGlzdG9yeSA9IGV3a192aWV3X2hpc3RvcnlfZ2V0KG1haW5WaWV3
KCkpOworICAgIGludCBsaW1pdCA9IGV3a19oaXN0b3J5X2xpbWl0X2dldChoaXN0b3J5KTsKKyAg
ICBld2tfaGlzdG9yeV9saW1pdF9zZXQoaGlzdG9yeSwgMCk7CisgICAgZXdrX2hpc3RvcnlfbGlt
aXRfc2V0KGhpc3RvcnksIGxpbWl0KTsKKworICAgIGV3a19jb29raWVzX2NsZWFyKCk7CisgICAg
ZXdrX2Nvb2tpZXNfcG9saWN5X3NldChFV0tfQ09PS0lFX0pBUl9BQ0NFUFRfTk9fVEhJUkRfUEFS
VFkpOworCisgICAgZXdrX2ZyYW1lX25hbWVfY2xlYXIobWFpbkZyYW1lKCkpOworICAgIGV3a19m
cmFtZV9vcGVuZXJfY2xlYXIobWFpbkZyYW1lKCkpOworfQorCisvLyBTbWFydCBDYWxsYmFja3MK
Ky8vIC0tLS0tLS0tLS0tLS0tLQorCit2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbldpbmRv
d09iamVjdENsZWFyZWQodm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJ
bmZvKQoreworICAgIEV3a19XaW5kb3dfT2JqZWN0X0NsZWFyZWRfRXZlbnQqIG9iamVjdENsZWFy
ZWRJbmZvID0gc3RhdGljX2Nhc3Q8RXdrX1dpbmRvd19PYmplY3RfQ2xlYXJlZF9FdmVudCo+KGV2
ZW50SW5mbyk7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOworICAgIEFTU0VSVChnTGF5
b3V0VGVzdENvbnRyb2xsZXIpOworCisgICAgR0NDb250cm9sbGVyKiBnY0NvbnRyb2xsZXIgPSBz
dGF0aWNfY2FzdDxHQ0NvbnRyb2xsZXIqPih1c2VyRGF0YSk7CisgICAgQVNTRVJUKGdjQ29udHJv
bGxlcik7CisKKyAgICBnTGF5b3V0VGVzdENvbnRyb2xsZXItPm1ha2VXaW5kb3dPYmplY3Qob2Jq
ZWN0Q2xlYXJlZEluZm8tPmNvbnRleHQsIG9iamVjdENsZWFyZWRJbmZvLT53aW5kb3dPYmplY3Qs
ICZleGNlcHRpb24pOworICAgIEFTU0VSVCghZXhjZXB0aW9uKTsKKworICAgIGdjQ29udHJvbGxl
ci0+bWFrZVdpbmRvd09iamVjdChvYmplY3RDbGVhcmVkSW5mby0+Y29udGV4dCwgb2JqZWN0Q2xl
YXJlZEluZm8tPndpbmRvd09iamVjdCwgJmV4Y2VwdGlvbik7CisgICAgQVNTRVJUKCFleGNlcHRp
b24pOworCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNvbnRyb2xsZXJOYW1lKEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJldmVudFNlbmRlciIpKTsKKyAgICBKU09iamVjdFNl
dFByb3BlcnR5KG9iamVjdENsZWFyZWRJbmZvLT5jb250ZXh0LCBvYmplY3RDbGVhcmVkSW5mby0+
d2luZG93T2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlck5hbWUuZ2V0
KCksCisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlRXZlbnRTZW5kZXIob2JqZWN0Q2xlYXJl
ZEluZm8tPmNvbnRleHQsIGZhbHNlKSwgLy8gRklYTUU6IHMvZmFsc2UvIWdldF9wYXJlbnQvLgor
ICAgICAgICAgICAgICAgICAgICAgICAga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSwgMCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRy
ZWVDaHJvbWU6Om9uTG9hZFN0YXJ0ZWQodm9pZCosIEV2YXNfT2JqZWN0KiB2aWV3LCB2b2lkKikK
K3sKKyAgICAvLyBGSVhNRTogd2UgYWN0dWFsbHkgbmVlZCB0aGUgZnJhbWUgcmVsYXRlZCB0byB0
aGlzIGV2ZW50CisgICAgRXZhc19PYmplY3QqIGZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfbWFpbl9n
ZXQodmlldyk7CisKKyAgICAvLyBNYWtlIHN1cmUgd2Ugb25seSBzZXQgdGhpcyBvbmNlIHBlciB0
ZXN0LiBJZiBpdCBnZXRzIGNsZWFyZWQsIGFuZCB0aGVuIHNldCBhZ2Fpbiwgd2UgbWlnaHQKKyAg
ICAvLyBlbmQgdXAgZG9pbmcgdHdvIGR1bXBzIGZvciBvbmUgdGVzdC4KKyAgICBpZiAoIXRvcExv
YWRpbmdGcmFtZSAmJiAhZG9uZSkKKyAgICAgICAgdG9wTG9hZGluZ0ZyYW1lID0gZnJhbWU7Cit9
CisKK0VpbmFfQm9vbCBEdW1wUmVuZGVyVHJlZUNocm9tZTo6cHJvY2Vzc1dvcmsodm9pZCogZGF0
YSkKK3sKKyAgICBFdmFzX09iamVjdCogZnJhbWUgPSBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+
KGRhdGEpOworCisgICAgaWYgKFdvcmtRdWV1ZTo6c2hhcmVkKCktPnByb2Nlc3NXb3JrKCkgJiYg
IWdMYXlvdXRUZXN0Q29udHJvbGxlci0+d2FpdFRvRHVtcCgpKQorICAgICAgICBkdW1wKCk7CisK
KyAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOworfQorCit2b2lkIER1bXBSZW5kZXJU
cmVlQ2hyb21lOjpvbkxvYWRGaW5pc2hlZCh2b2lkKiwgRXZhc19PYmplY3QqIHZpZXcsIHZvaWQq
KQoreworICAgIC8vIEZJWE1FOiB3ZSBhY3R1YWxseSBuZWVkIHRoZSBmcmFtZSByZWxhdGVkIHRv
IHRoaXMgZXZlbnQKKyAgICBFdmFzX09iamVjdCogZnJhbWUgPSBld2tfdmlld19mcmFtZV9tYWlu
X2dldCh2aWV3KTsKKworICAgIGlmICh0b3BMb2FkaW5nRnJhbWUgIT0gZnJhbWUpCisgICAgICAg
IHJldHVybjsKKworICAgIHRvcExvYWRpbmdGcmFtZSA9IDA7CisKKyAgICBXb3JrUXVldWU6OnNo
YXJlZCgpLT5zZXRGcm96ZW4odHJ1ZSk7CisgICAgaWYgKGdMYXlvdXRUZXN0Q29udHJvbGxlci0+
d2FpdFRvRHVtcCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoV29ya1F1ZXVlOjpzaGFy
ZWQoKS0+Y291bnQoKSkKKyAgICAgICAgZWNvcmVfaWRsZXJfYWRkKHByb2Nlc3NXb3JrLCBmcmFt
ZSk7CisgICAgZWxzZQorICAgICAgICBkdW1wKCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVD
aHJvbWU6Om9uU3RhdHVzYmFyVGV4dFNldCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVu
dEluZm8pCit7CisgICAgaWYgKCFnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBTdGF0dXNDYWxs
YmFja3MoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgY2hhciogc3RhdHVzYmFyVGV4
dCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihldmVudEluZm8pOworICAgIHByaW50ZigiVUkg
REVMRUdBVEUgU1RBVFVTIENBTExCQUNLOiBzZXRTdGF0dXNUZXh0OiVzXG4iLCBzdGF0dXNiYXJU
ZXh0KTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25UaXRsZUNoYW5nZWQodm9p
ZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25Eb2N1bWVudExvYWRGaW5pc2hlZCh2b2lkKiwg
RXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCit7CisgICAgaWYgKGRvbmUpCisgICAgICAg
IHJldHVybjsKKworICAgIGNvbnN0IEV2YXNfT2JqZWN0KiBmcmFtZSA9IHN0YXRpY19jYXN0PEV2
YXNfT2JqZWN0Kj4oZXZlbnRJbmZvKTsKKyAgICBjb25zdCBTdHJpbmcgZnJhbWVOYW1lKGV3a19m
cmFtZV9zdWl0YWJsZV9kcnRfbmFtZV9nZXQoZnJhbWUpKTsKKworICAgIGlmIChnTGF5b3V0VGVz
dENvbnRyb2xsZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgeworICAgICAgICBwcmludGYo
IiVzIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWVcbiIsIGZyYW1lTmFtZS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IHVuc2lnbmVkIHBl
bmRpbmdGcmFtZVVubG9hZEV2ZW50cyA9IGV3a19mcmFtZV9wZW5kaW5nX3VubG9hZF9ldmVudF9j
b3VudF9nZXQoZnJhbWUpOworICAgIGlmIChwZW5kaW5nRnJhbWVVbmxvYWRFdmVudHMpCisgICAg
ICAgIHByaW50ZigiJXMgLSBoYXMgJXUgb251bmxvYWQgaGFuZGxlcihzKVxuIiwgZnJhbWVOYW1l
LnV0ZjgoKS5kYXRhKCksIHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50cyk7Cit9CkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuaAkocmV2aXNp
b24gMCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IFByb0ZVU0lPTiBFbWJlZGRlZCBTeXN0ZW1zCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3Vu
ZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIElUUyBDT05UUklCVVRPUlMKKyAqIGBg
QVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVJTIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAq
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBEdW1wUmVuZGVyVHJlZUNocm9tZV9oCisjZGVmaW5lIER1bXBSZW5kZXJUcmVlQ2hyb21l
X2gKKworI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgorCisjaW5jbHVkZSA8RWluYS5oPgorI2lu
Y2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK2NsYXNzIER1bXBSZW5kZXJU
cmVlQ2hyb21lIHsKK3B1YmxpYzoKKyAgICB+RHVtcFJlbmRlclRyZWVDaHJvbWUoKTsKKworICAg
IHN0YXRpYyBQYXNzT3duUHRyPER1bXBSZW5kZXJUcmVlQ2hyb21lPiBjcmVhdGUoRXZhcyopOwor
CisgICAgRXZhc19PYmplY3QqIGNyZWF0ZU5ld1dpbmRvdygpOworICAgIHZvaWQgcmVtb3ZlV2lu
ZG93KEV2YXNfT2JqZWN0Kik7CisKKyAgICBWZWN0b3I8RXZhc19PYmplY3QqPiBleHRyYVZpZXdz
KCkgY29uc3Q7CisgICAgRXZhc19PYmplY3QqIG1haW5GcmFtZSgpIGNvbnN0OworICAgIEV2YXNf
T2JqZWN0KiBtYWluVmlldygpIGNvbnN0OworCisgICAgdm9pZCByZXNldERlZmF1bHRzVG9Db25z
aXN0ZW50VmFsdWVzKCk7CisKK3ByaXZhdGU6CisgICAgRHVtcFJlbmRlclRyZWVDaHJvbWUoRXZh
cyopOworCisgICAgRXZhc19PYmplY3QqIGNyZWF0ZVZpZXcoKSBjb25zdDsKKyAgICBib29sIGlu
aXRpYWxpemUoKTsKKworICAgIEV2YXNfT2JqZWN0KiBtX21haW5GcmFtZTsKKyAgICBFdmFzX09i
amVjdCogbV9tYWluVmlldzsKKyAgICBFdmFzKiBtX2V2YXM7CisgICAgT3duUHRyPEdDQ29udHJv
bGxlcj4gbV9nY0NvbnRyb2xsZXI7CisgICAgVmVjdG9yPEV2YXNfT2JqZWN0Kj4gbV9leHRyYVZp
ZXdzOworCisgICAgLy8gU21hcnQgY2FsbGJhY2tzCisgICAgc3RhdGljIHZvaWQgb25XaW5kb3dP
YmplY3RDbGVhcmVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKTsKKyAgICBzdGF0aWMgdm9p
ZCBvbkxvYWRTdGFydGVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKTsKKworICAgIHN0YXRp
YyBFaW5hX0Jvb2wgcHJvY2Vzc1dvcmsodm9pZCopOworCisgICAgc3RhdGljIHZvaWQgb25Mb2Fk
RmluaXNoZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopOworCisgICAgc3RhdGljIHZvaWQg
b25TdGF0dXNiYXJUZXh0U2V0KHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKTsKKworICAgIHN0
YXRpYyB2b2lkIG9uVGl0bGVDaGFuZ2VkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKTsKKwor
ICAgIHN0YXRpYyB2b2lkIG9uRG9jdW1lbnRMb2FkRmluaXNoZWQodm9pZCosIEV2YXNfT2JqZWN0
Kiwgdm9pZCopOworfTsKKworI2VuZGlmIC8vIER1bXBSZW5kZXJUcmVlQ2hyb21lX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108032</attachid>
            <date>2011-09-20 11:29:08 -0700</date>
            <delta_ts>2011-10-05 11:53:47 -0700</delta_ts>
            <desc>Updated patch which also changes related files</desc>
            <filename>bug-66380-20110920152909.patch</filename>
            <type>text/plain</type>
            <size>32112</size>
            <attacher name="Raphael Kubo da Costa (:rakuco)">rakuco</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU1NTEKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyZDQ3MWY1OGRmYWJhMTU0MTIxODY2MTg1NDYwYTA0ZGI1
MzdlYzBmLi5hNzgyZDVlNjlmOGM4NWE5YTc4MzA5NzYzMDU0MmJiN2U0YzcxMTgxIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQg
QEAKKzIwMTEtMDktMjAgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1v
Ymk+CisKKyAgICAgICAgW0VGTF0gRFJUOiBBZGQgRHVtcFJlbmRlclRyZWVDaHJvbWUue2NwcCxo
fQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzODAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGVu
Y2Fwc3VsYXRlcyBFV2ViS2l0IGludG8gYW4gb2JqZWN0IHRoYXQgbWFuYWdlcyBtdWx0aXBsZSB3
aW5kb3dzCisgICAgICAgIGFuZCBwcm92aWRlcyBhIGNsZWFuZXIgaW50ZXJmYWNlIHRvIEVGTCdz
IER1bXBSZW5kZXJUcmVlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5k
ZXJUcmVlQ2hyb21lLmNwcDogQWRkZWQuCisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6
Y3JlYXRlKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjpEdW1wUmVuZGVyVHJlZUNo
cm9tZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6fkR1bXBSZW5kZXJUcmVlQ2hy
b21lKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjpjcmVhdGVOZXdXaW5kb3cpOgor
ICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6OmNyZWF0ZVZpZXcpOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVDaHJvbWU6OnJlbW92ZVdpbmRvdyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZUNocm9tZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6ZXh0
cmFWaWV3cyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6bWFpbkZyYW1lKToKKyAg
ICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjptYWluVmlldyk6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZUNocm9tZTo6cmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25XaW5kb3dPYmplY3RDbGVhcmVkKToKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbkxvYWRTdGFydGVkKToKKyAgICAgICAgKER1bXBSZW5k
ZXJUcmVlQ2hyb21lOjpwcm9jZXNzV29yayk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9t
ZTo6b25Mb2FkRmluaXNoZWQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uU3Rh
dHVzYmFyVGV4dFNldCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25UaXRsZUNo
YW5nZWQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uRG9jdW1lbnRMb2FkRmlu
aXNoZWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9t
ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3Bw
OgorICAgICAgICAoc2VuZENsaWNrKTogVXNlIGJyb3dzZXItPm1haW5GcmFtZSgpIGluc3RlYWQg
b2YgbWFpbkZyYW1lLgorICAgICAgICAobW91c2VEb3duQ2FsbGJhY2spOiBEaXR0by4KKyAgICAg
ICAgKG1vdXNlVXBDYWxsYmFjayk6IERpdHRvLgorICAgICAgICAobW91c2VNb3ZlVG9DYWxsYmFj
ayk6IERpdHRvLgorICAgICAgICAobW91c2VTY3JvbGxCeUNhbGxiYWNrKTogRGl0dG8uCisgICAg
ICAgIChrZXlEb3duQ2FsbGJhY2spOiBEaXR0by4KKyAgICAgICAgKHNjYWxlUGFnZUJ5Q2FsbGJh
Y2spOiBEaXR0by4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRy
b2xsZXJFZmwuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNvdW50ZXJWYWx1
ZUZvckVsZW1lbnRCeUlkKTogVXNlCisgICAgICAgIGJyb3dzZXItPm1haW5GcmFtZSgpIGluc3Rl
YWQgb2YgbWFpbkZyYW1lLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1i
ZXJGb3JFbGVtZW50QnlJZCk6IERpdHRvLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
Om51bWJlck9mUGFnZXMpOiBEaXR0by4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpw
YXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCk6IERpdHRvLgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCk6
IERpdHRvLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNhbXBsZVNWR0FuaW1hdGlv
bkZvckVsZW1lbnRBdFRpbWUpOiBEaXR0by4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzdXNwZW5kQW5pbWF0aW9ucyk6IERpdHRvLgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRXZWJWaWV3RWRpdGFibGUpOiBEaXR0by4KKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjp3ZWJIaXN0b3J5SXRlbUNvdW50KTogVXNlIGJyb3dzZXItPm1haW5W
aWV3KCkKKyAgICAgICAgaW5zdGVhZCBvZiBicm93c2VyLgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnF1ZXVlTG9hZCk6IERpdHRvLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldEFjY2VwdHNFZGl0aW5nKTogRGl0dG8uCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKTogRGl0dG8uCisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6IERpdHRvLgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQpOiBEaXR0
by4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTcGF0aWFsTmF2aWdhdGlvbkVu
YWJsZWQpOiBEaXR0by4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRQbHVnaW5z
RW5hYmxlZCk6IERpdHRvLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmZpbmRTdHJp
bmcpOiBEaXR0by4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXREZXZlbG9wZXJF
eHRyYXNFbmFibGVkKTogRGl0dG8uCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL1BpeGVs
RHVtcFN1cHBvcnRFZmwuY3BwOgorICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJW
aWV3KTogVXNlIGJyb3dzZXItPm1haW5GcmFtZSgpIGluc3RlYWQgb2YKKyAgICAgICAgbWFpbkZy
YW1lLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9Xb3JrUXVldWVJdGVtRWZsLmNwcDoK
KyAgICAgICAgKExvYWRJdGVtOjppbnZva2UpOiBEaXR0by4KKyAgICAgICAgKExvYWRIVE1MU3Ry
aW5nSXRlbTo6aW52b2tlKTogRGl0dG8uCisgICAgICAgIChTY3JpcHRJdGVtOjppbnZva2UpOiBE
aXR0by4KKyAgICAgICAgKFJlbG9hZEl0ZW06Omludm9rZSk6IFVzZSBicm93c2VyLT5tYWluVmll
dygpIGluc3RlYWQgb2YgYnJvd3Nlci4KKyAgICAgICAgKEJhY2tGb3J3YXJkSXRlbTo6aW52b2tl
KTogRGl0dG8uCisKIDIwMTEtMDktMjAgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVz
aW9uLm1vYmk+CiAKICAgICAgICAgQ2hhbmdlbG9nIGNsYXNzIHNob3VsZCBoYXZlIGEgbWV0aG9k
IHRvIHJldHVybiBhbGwgZW50cmllcwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9E
dW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWNmMTM1ZTRiZWRhYjBmYTQ5Y2E3
MDc4N2E3YzI1Y2UwNzBjN2U1YgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKQEAgLTAsMCArMSwyODIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgUHJvRlVTSU9OIEVtYmVkZGVkIFN5c3RlbXMKKyAqIENvcHly
aWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgSVRT
IENPTlRSSUJVVE9SUworICogYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIEhPTERFUlMgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULAorICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisgKiBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRHVtcFJlbmRl
clRyZWVDaHJvbWUuaCIKKworI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlLmgiCisjaW5jbHVkZSAi
RHVtcFJlbmRlclRyZWVWaWV3LmgiCisjaW5jbHVkZSAiRXZlbnRTZW5kZXIuaCIKKyNpbmNsdWRl
ICJHQ0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisjaW5jbHVk
ZSAiZXdrX3ByaXZhdGUuaCIgLy8gRklYTUU6IGNyZWF0ZSBzb21lIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlLmNwcCBpbnN0ZWFkCisKKyNpbmNsdWRlIDxFV2ViS2l0Lmg+CisjaW5jbHVk
ZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1
ZGUgPGNzdGRpbz4KKyNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KKworUGFzc093blB0cjxEdW1w
UmVuZGVyVHJlZUNocm9tZT4gRHVtcFJlbmRlclRyZWVDaHJvbWU6OmNyZWF0ZShFdmFzKiBldmFz
KQoreworICAgIE93blB0cjxEdW1wUmVuZGVyVHJlZUNocm9tZT4gY2hyb21lID0gYWRvcHRQdHIo
bmV3IER1bXBSZW5kZXJUcmVlQ2hyb21lKGV2YXMpKTsKKworICAgIGlmICghY2hyb21lLT5pbml0
aWFsaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGNocm9tZS5y
ZWxlYXNlKCk7Cit9CisKK0R1bXBSZW5kZXJUcmVlQ2hyb21lOjpEdW1wUmVuZGVyVHJlZUNocm9t
ZShFdmFzKiBldmFzKQorICAgIDogbV9tYWluVmlldygwKQorICAgICwgbV9tYWluRnJhbWUoMCkK
KyAgICAsIG1fZXZhcyhldmFzKQorICAgICwgbV9nY0NvbnRyb2xsZXIoYWRvcHRQdHIobmV3IEdD
Q29udHJvbGxlcikpCit7Cit9CisKK0R1bXBSZW5kZXJUcmVlQ2hyb21lOjp+RHVtcFJlbmRlclRy
ZWVDaHJvbWUoKQoreworfQorCitFdmFzX09iamVjdCogRHVtcFJlbmRlclRyZWVDaHJvbWU6OmNy
ZWF0ZU5ld1dpbmRvdygpCit7CisgICAgRXZhc19PYmplY3QqIG5ld1ZpZXcgPSBjcmVhdGVWaWV3
KCk7CisKKyAgICBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93X29wZW5fc2V0KG5ld1Zp
ZXcsIEVJTkFfVFJVRSk7CisgICAgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9jbG9zZV93
aW5kb3dzX3NldChuZXdWaWV3LCBFSU5BX1RSVUUpOworCisgICAgbV9leHRyYVZpZXdzLmFwcGVu
ZChuZXdWaWV3KTsKKworICAgIHJldHVybiBuZXdWaWV3OworfQorCitFdmFzX09iamVjdCogRHVt
cFJlbmRlclRyZWVDaHJvbWU6OmNyZWF0ZVZpZXcoKSBjb25zdAoreworICAgIEV2YXNfT2JqZWN0
KiB2aWV3ID0gZHJ0Vmlld1RpbGVkQWRkKG1fZXZhcyk7CisgICAgaWYgKCF2aWV3KQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIGV3a192aWV3X3RoZW1lX3NldCh2aWV3LCBEQVRBX0RJUiIvZGVm
YXVsdC5lZGoiKTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAi
bG9hZCxzdGFydGVkIiwgb25Mb2FkU3RhcnRlZCwgMCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfYWRkKHZpZXcsICJsb2FkLGZpbmlzaGVkIiwgb25Mb2FkRmluaXNoZWQsIDApOwor
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAidGl0bGUsY2hhbmdlZCIs
IG9uVGl0bGVDaGFuZ2VkLCAwKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQo
dmlldywgIndpbmRvdyxvYmplY3QsY2xlYXJlZCIsIG9uV2luZG93T2JqZWN0Q2xlYXJlZCwgbV9n
Y0NvbnRyb2xsZXIuZ2V0KCkpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2
aWV3LCAic3RhdHVzYmFyLHRleHQsc2V0Iiwgb25TdGF0dXNiYXJUZXh0U2V0LCAwKTsKKyAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQodmlldywgImxvYWQsZG9jdW1lbnQsZmluaXNo
ZWQiLCBvbkRvY3VtZW50TG9hZEZpbmlzaGVkLCAwKTsKKworICAgIHJldHVybiB2aWV3OworfQor
Cit2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpyZW1vdmVXaW5kb3coRXZhc19PYmplY3QqIHZp
ZXcpCit7CisgICAgY29uc3Qgc2l6ZV90IHBvcyA9IG1fZXh0cmFWaWV3cy5maW5kKHZpZXcpOwor
CisgICAgaWYgKHBvcyA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9leHRy
YVZpZXdzLnJlbW92ZShwb3MpOworICAgIGV2YXNfb2JqZWN0X2RlbCh2aWV3KTsKK30KKworYm9v
bCBEdW1wUmVuZGVyVHJlZUNocm9tZTo6aW5pdGlhbGl6ZSgpCit7CisgICAgbV9tYWluVmlldyA9
IGNyZWF0ZVZpZXcoKTsKKyAgICBpZiAoIW1fbWFpblZpZXcpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGV3a192aWV3X3RoZW1lX3NldChtX21haW5WaWV3LCBEQVRBX0RJUiIvZGVmYXVs
dC5lZGoiKTsKKworICAgIGV2YXNfb2JqZWN0X25hbWVfc2V0KG1fbWFpblZpZXcsICJtX21haW5W
aWV3Iik7CisgICAgZXZhc19vYmplY3RfbW92ZShtX21haW5WaWV3LCAwLCAwKTsKKyAgICBldmFz
X29iamVjdF9yZXNpemUobV9tYWluVmlldywgODAwLCA2MDApOworICAgIGV2YXNfb2JqZWN0X2xh
eWVyX3NldChtX21haW5WaWV3LCBFVkFTX0xBWUVSX01BWCk7CisgICAgZXZhc19vYmplY3Rfc2hv
dyhtX21haW5WaWV3KTsKKyAgICBldmFzX29iamVjdF9mb2N1c19zZXQobV9tYWluVmlldywgRUlO
QV9UUlVFKTsKKworICAgIG1fbWFpbkZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQobV9t
YWluVmlldyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworVmVjdG9yPEV2YXNfT2JqZWN0Kj4g
RHVtcFJlbmRlclRyZWVDaHJvbWU6OmV4dHJhVmlld3MoKSBjb25zdAoreworICAgIHJldHVybiBt
X2V4dHJhVmlld3M7Cit9CisKK0V2YXNfT2JqZWN0KiBEdW1wUmVuZGVyVHJlZUNocm9tZTo6bWFp
bkZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tYWluRnJhbWU7Cit9CisKK0V2YXNfT2Jq
ZWN0KiBEdW1wUmVuZGVyVHJlZUNocm9tZTo6bWFpblZpZXcoKSBjb25zdAoreworICAgIHJldHVy
biBtX21haW5WaWV3OworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpyZXNldERlZmF1
bHRzVG9Db25zaXN0ZW50VmFsdWVzKCkKK3sKKyAgICBWZWN0b3I8RXZhc19PYmplY3QqPjo6aXRl
cmF0b3IgaXQgPSBtX2V4dHJhVmlld3MuYmVnaW4oKTsKKyAgICBmb3IgKDsgaXQgIT0gbV9leHRy
YVZpZXdzLmVuZCgpOyArK2l0KQorICAgICAgICBldmFzX29iamVjdF9kZWwoKml0KTsKKyAgICBt
X2V4dHJhVmlld3MuY2xlYXIoKTsKKworICAgIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2Ns
ZWFyKCk7CisgICAgZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfcGF0aF9zZXQoMCk7CisKKyAg
ICBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0KG1haW5WaWV3KCksIEVJTkFf
RkFMU0UpOworICAgIGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX3NldChtYWlu
VmlldygpLCBFSU5BX0ZBTFNFKTsKKyAgICBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9mcmFtZV9m
bGF0dGVuaW5nX3NldChtYWluVmlldygpLCBFSU5BX0ZBTFNFKTsKKyAgICBld2tfdmlld19zZXR0
aW5nX29mZmxpbmVfYXBwX2NhY2hlX3NldChtYWluVmlldygpLCBFSU5BX1RSVUUpOworICAgIGV3
a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0KG1haW5WaWV3KCksIEVJTkFfVFJVRSk7
CisgICAgZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9zZXQobWFpblZpZXcoKSwgRVdLX0ZPTlRf
RkFNSUxZX1NUQU5EQVJELCAiVGltZXMiKTsKKyAgICBld2tfdmlld19mb250X2ZhbWlseV9uYW1l
X3NldChtYWluVmlldygpLCBFV0tfRk9OVF9GQU1JTFlfTU9OT1NQQUNFLCAiQ291cmllciIpOwor
ICAgIGV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVfc2V0KG1haW5WaWV3KCksIEVXS19GT05UX0ZB
TUlMWV9TRVJJRiwgIlRpbWVzIik7CisgICAgZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9zZXQo
bWFpblZpZXcoKSwgRVdLX0ZPTlRfRkFNSUxZX1NBTlNfU0VSSUYsICJIZWx2ZXRpY2EiKTsKKyAg
ICBld2tfdmlld19mb250X2ZhbWlseV9uYW1lX3NldChtYWluVmlldygpLCBFV0tfRk9OVF9GQU1J
TFlfQ1VSU0lWRSwgImN1cnNpdmUiKTsKKyAgICBld2tfdmlld19mb250X2ZhbWlseV9uYW1lX3Nl
dChtYWluVmlldygpLCBFV0tfRk9OVF9GQU1JTFlfRkFOVEFTWSwgImZhbnRhc3kiKTsKKyAgICBl
d2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXplX3NldChtYWluVmlldygpLCAxNik7Cisg
ICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9zaXplX3NldChtYWluVmlldygpLCAx
Myk7CisgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmltdW1fc2l6ZV9zZXQobWFpblZpZXco
KSwgMCk7CisgICAgZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9icm93c2luZ19zZXQobWFpblZpZXco
KSwgRUlOQV9GQUxTRSk7CisgICAgZXdrX3ZpZXdfc2V0dGluZ19wYWdlX2NhY2hlX3NldChtYWlu
VmlldygpLCBFSU5BX0ZBTFNFKTsKKyAgICBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9hdXRvX3Jl
c2l6ZV93aW5kb3dfc2V0KG1haW5WaWV3KCksIEVJTkFfVFJVRSk7CisgICAgZXdrX3ZpZXdfc2V0
dGluZ19lbmFibGVfcGx1Z2luc19zZXQobWFpblZpZXcoKSwgRUlOQV9UUlVFKTsKKyAgICBld2tf
dmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93X29wZW5fc2V0KG1haW5WaWV3KCksIEVJTkFfVFJV
RSk7CisgICAgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzX3NldCht
YWluVmlldygpLCBFSU5BX1RSVUUpOworCisgICAgZXdrX3ZpZXdfem9vbV9zZXQobWFpblZpZXco
KSwgMS4wLCAwLCAwKTsKKyAgICBld2tfdmlld19wYWdlX3NjYWxlKG1haW5WaWV3KCksIDEuMCwg
MCwgMCk7CisKKyAgICBFd2tfSGlzdG9yeSogaGlzdG9yeSA9IGV3a192aWV3X2hpc3RvcnlfZ2V0
KG1haW5WaWV3KCkpOworICAgIGludCBsaW1pdCA9IGV3a19oaXN0b3J5X2xpbWl0X2dldChoaXN0
b3J5KTsKKyAgICBld2tfaGlzdG9yeV9saW1pdF9zZXQoaGlzdG9yeSwgMCk7CisgICAgZXdrX2hp
c3RvcnlfbGltaXRfc2V0KGhpc3RvcnksIGxpbWl0KTsKKworICAgIGV3a19jb29raWVzX2NsZWFy
KCk7CisgICAgZXdrX2Nvb2tpZXNfcG9saWN5X3NldChFV0tfQ09PS0lFX0pBUl9BQ0NFUFRfTk9f
VEhJUkRfUEFSVFkpOworCisgICAgZXdrX2ZyYW1lX25hbWVfY2xlYXIobWFpbkZyYW1lKCkpOwor
ICAgIGV3a19mcmFtZV9vcGVuZXJfY2xlYXIobWFpbkZyYW1lKCkpOworfQorCisvLyBTbWFydCBD
YWxsYmFja3MKKy8vIC0tLS0tLS0tLS0tLS0tLQorCit2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21l
OjpvbldpbmRvd09iamVjdENsZWFyZWQodm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0Kiwgdm9p
ZCogZXZlbnRJbmZvKQoreworICAgIEV3a19XaW5kb3dfT2JqZWN0X0NsZWFyZWRfRXZlbnQqIG9i
amVjdENsZWFyZWRJbmZvID0gc3RhdGljX2Nhc3Q8RXdrX1dpbmRvd19PYmplY3RfQ2xlYXJlZF9F
dmVudCo+KGV2ZW50SW5mbyk7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOworICAgIEFT
U0VSVChnTGF5b3V0VGVzdENvbnRyb2xsZXIpOworCisgICAgR0NDb250cm9sbGVyKiBnY0NvbnRy
b2xsZXIgPSBzdGF0aWNfY2FzdDxHQ0NvbnRyb2xsZXIqPih1c2VyRGF0YSk7CisgICAgQVNTRVJU
KGdjQ29udHJvbGxlcik7CisKKyAgICBnTGF5b3V0VGVzdENvbnRyb2xsZXItPm1ha2VXaW5kb3dP
YmplY3Qob2JqZWN0Q2xlYXJlZEluZm8tPmNvbnRleHQsIG9iamVjdENsZWFyZWRJbmZvLT53aW5k
b3dPYmplY3QsICZleGNlcHRpb24pOworICAgIEFTU0VSVCghZXhjZXB0aW9uKTsKKworICAgIGdj
Q29udHJvbGxlci0+bWFrZVdpbmRvd09iamVjdChvYmplY3RDbGVhcmVkSW5mby0+Y29udGV4dCwg
b2JqZWN0Q2xlYXJlZEluZm8tPndpbmRvd09iamVjdCwgJmV4Y2VwdGlvbik7CisgICAgQVNTRVJU
KCFleGNlcHRpb24pOworCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNvbnRyb2xsZXJO
YW1lKEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJldmVudFNlbmRlciIpKTsKKyAgICBK
U09iamVjdFNldFByb3BlcnR5KG9iamVjdENsZWFyZWRJbmZvLT5jb250ZXh0LCBvYmplY3RDbGVh
cmVkSW5mby0+d2luZG93T2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxl
ck5hbWUuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlRXZlbnRTZW5kZXIob2Jq
ZWN0Q2xlYXJlZEluZm8tPmNvbnRleHQsIGZhbHNlKSwgLy8gRklYTUU6IHMvZmFsc2UvIWdldF9w
YXJlbnQvLgorICAgICAgICAgICAgICAgICAgICAgICAga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSwgMCk7Cit9CisKK3ZvaWQgRHVt
cFJlbmRlclRyZWVDaHJvbWU6Om9uTG9hZFN0YXJ0ZWQodm9pZCosIEV2YXNfT2JqZWN0KiB2aWV3
LCB2b2lkKikKK3sKKyAgICAvLyBGSVhNRTogd2UgYWN0dWFsbHkgbmVlZCB0aGUgZnJhbWUgcmVs
YXRlZCB0byB0aGlzIGV2ZW50CisgICAgRXZhc19PYmplY3QqIGZyYW1lID0gZXdrX3ZpZXdfZnJh
bWVfbWFpbl9nZXQodmlldyk7CisKKyAgICAvLyBNYWtlIHN1cmUgd2Ugb25seSBzZXQgdGhpcyBv
bmNlIHBlciB0ZXN0LiBJZiBpdCBnZXRzIGNsZWFyZWQsIGFuZCB0aGVuIHNldCBhZ2Fpbiwgd2Ug
bWlnaHQKKyAgICAvLyBlbmQgdXAgZG9pbmcgdHdvIGR1bXBzIGZvciBvbmUgdGVzdC4KKyAgICBp
ZiAoIXRvcExvYWRpbmdGcmFtZSAmJiAhZG9uZSkKKyAgICAgICAgdG9wTG9hZGluZ0ZyYW1lID0g
ZnJhbWU7Cit9CisKK0VpbmFfQm9vbCBEdW1wUmVuZGVyVHJlZUNocm9tZTo6cHJvY2Vzc1dvcmso
dm9pZCogZGF0YSkKK3sKKyAgICBFdmFzX09iamVjdCogZnJhbWUgPSBzdGF0aWNfY2FzdDxFdmFz
X09iamVjdCo+KGRhdGEpOworCisgICAgaWYgKFdvcmtRdWV1ZTo6c2hhcmVkKCktPnByb2Nlc3NX
b3JrKCkgJiYgIWdMYXlvdXRUZXN0Q29udHJvbGxlci0+d2FpdFRvRHVtcCgpKQorICAgICAgICBk
dW1wKCk7CisKKyAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOworfQorCit2b2lkIER1
bXBSZW5kZXJUcmVlQ2hyb21lOjpvbkxvYWRGaW5pc2hlZCh2b2lkKiwgRXZhc19PYmplY3QqIHZp
ZXcsIHZvaWQqKQoreworICAgIC8vIEZJWE1FOiB3ZSBhY3R1YWxseSBuZWVkIHRoZSBmcmFtZSBy
ZWxhdGVkIHRvIHRoaXMgZXZlbnQKKyAgICBFdmFzX09iamVjdCogZnJhbWUgPSBld2tfdmlld19m
cmFtZV9tYWluX2dldCh2aWV3KTsKKworICAgIGlmICh0b3BMb2FkaW5nRnJhbWUgIT0gZnJhbWUp
CisgICAgICAgIHJldHVybjsKKworICAgIHRvcExvYWRpbmdGcmFtZSA9IDA7CisKKyAgICBXb3Jr
UXVldWU6OnNoYXJlZCgpLT5zZXRGcm96ZW4odHJ1ZSk7CisgICAgaWYgKGdMYXlvdXRUZXN0Q29u
dHJvbGxlci0+d2FpdFRvRHVtcCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoV29ya1F1
ZXVlOjpzaGFyZWQoKS0+Y291bnQoKSkKKyAgICAgICAgZWNvcmVfaWRsZXJfYWRkKHByb2Nlc3NX
b3JrLCBmcmFtZSk7CisgICAgZWxzZQorICAgICAgICBkdW1wKCk7Cit9CisKK3ZvaWQgRHVtcFJl
bmRlclRyZWVDaHJvbWU6Om9uU3RhdHVzYmFyVGV4dFNldCh2b2lkKiwgRXZhc19PYmplY3QqLCB2
b2lkKiBldmVudEluZm8pCit7CisgICAgaWYgKCFnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBT
dGF0dXNDYWxsYmFja3MoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgY2hhciogc3Rh
dHVzYmFyVGV4dCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihldmVudEluZm8pOworICAgIHBy
aW50ZigiVUkgREVMRUdBVEUgU1RBVFVTIENBTExCQUNLOiBzZXRTdGF0dXNUZXh0OiVzXG4iLCBz
dGF0dXNiYXJUZXh0KTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25UaXRsZUNo
YW5nZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25Eb2N1bWVudExvYWRGaW5pc2hl
ZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCit7CisgICAgY29uc3QgRXZh
c19PYmplY3QqIGZyYW1lID0gc3RhdGljX2Nhc3Q8RXZhc19PYmplY3QqPihldmVudEluZm8pOwor
ICAgIGNvbnN0IFN0cmluZyBmcmFtZU5hbWUoZXdrX2ZyYW1lX3N1aXRhYmxlX2RydF9uYW1lX2dl
dChmcmFtZSkpOworCisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVt
cEZyYW1lTG9hZENhbGxiYWNrcygpKQorICAgICAgICBwcmludGYoIiVzIC0gZGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWVcbiIsIGZyYW1lTmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBlbHNl
IGlmICghZG9uZSkgeworICAgICAgICBjb25zdCB1bnNpZ25lZCBwZW5kaW5nRnJhbWVVbmxvYWRF
dmVudHMgPSBld2tfZnJhbWVfcGVuZGluZ191bmxvYWRfZXZlbnRfY291bnRfZ2V0KGZyYW1lKTsK
KyAgICAgICAgaWYgKHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50cykKKyAgICAgICAgICAgIHByaW50
ZigiJXMgLSBoYXMgJXUgb251bmxvYWQgaGFuZGxlcihzKVxuIiwgZnJhbWVOYW1lLnV0ZjgoKS5k
YXRhKCksIHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50cyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZWE5
OTE4MDYyOTE3MmJiZTdjNTkyM2JjYTc1Nzg1N2ZmNDFkMzAyCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmgKQEAgLTAsMCAr
MSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04gRW1iZWRkZWQgU3lz
dGVtcworICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBJVFMgQ09OVFJJQlVUT1JTCisgKiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQQorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSUyBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCisgKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKyAqIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRHVtcFJlbmRlclRyZWVDaHJv
bWVfaAorI2RlZmluZSBEdW1wUmVuZGVyVHJlZUNocm9tZV9oCisKKyNpbmNsdWRlICJHQ0NvbnRy
b2xsZXIuaCIKKworI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCitjbGFzcyBEdW1wUmVuZGVyVHJlZUNocm9tZSB7CitwdWJsaWM6Cisg
ICAgfkR1bXBSZW5kZXJUcmVlQ2hyb21lKCk7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxEdW1w
UmVuZGVyVHJlZUNocm9tZT4gY3JlYXRlKEV2YXMqKTsKKworICAgIEV2YXNfT2JqZWN0KiBjcmVh
dGVOZXdXaW5kb3coKTsKKyAgICB2b2lkIHJlbW92ZVdpbmRvdyhFdmFzX09iamVjdCopOworCisg
ICAgVmVjdG9yPEV2YXNfT2JqZWN0Kj4gZXh0cmFWaWV3cygpIGNvbnN0OworICAgIEV2YXNfT2Jq
ZWN0KiBtYWluRnJhbWUoKSBjb25zdDsKKyAgICBFdmFzX09iamVjdCogbWFpblZpZXcoKSBjb25z
dDsKKworICAgIHZvaWQgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcygpOworCitwcml2
YXRlOgorICAgIER1bXBSZW5kZXJUcmVlQ2hyb21lKEV2YXMqKTsKKworICAgIEV2YXNfT2JqZWN0
KiBjcmVhdGVWaWV3KCkgY29uc3Q7CisgICAgYm9vbCBpbml0aWFsaXplKCk7CisKKyAgICBFdmFz
X09iamVjdCogbV9tYWluRnJhbWU7CisgICAgRXZhc19PYmplY3QqIG1fbWFpblZpZXc7CisgICAg
RXZhcyogbV9ldmFzOworICAgIE93blB0cjxHQ0NvbnRyb2xsZXI+IG1fZ2NDb250cm9sbGVyOwor
ICAgIFZlY3RvcjxFdmFzX09iamVjdCo+IG1fZXh0cmFWaWV3czsKKworICAgIC8vIFNtYXJ0IGNh
bGxiYWNrcworICAgIHN0YXRpYyB2b2lkIG9uV2luZG93T2JqZWN0Q2xlYXJlZCh2b2lkKiwgRXZh
c19PYmplY3QqLCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgb25Mb2FkU3RhcnRlZCh2b2lkKiwg
RXZhc19PYmplY3QqLCB2b2lkKik7CisKKyAgICBzdGF0aWMgRWluYV9Cb29sIHByb2Nlc3NXb3Jr
KHZvaWQqKTsKKworICAgIHN0YXRpYyB2b2lkIG9uTG9hZEZpbmlzaGVkKHZvaWQqLCBFdmFzX09i
amVjdCosIHZvaWQqKTsKKworICAgIHN0YXRpYyB2b2lkIG9uU3RhdHVzYmFyVGV4dFNldCh2b2lk
KiwgRXZhc19PYmplY3QqLCB2b2lkKik7CisKKyAgICBzdGF0aWMgdm9pZCBvblRpdGxlQ2hhbmdl
ZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CisKKyAgICBzdGF0aWMgdm9pZCBvbkRvY3Vt
ZW50TG9hZEZpbmlzaGVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKTsKK307CisKKyNlbmRp
ZiAvLyBEdW1wUmVuZGVyVHJlZUNocm9tZV9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50
U2VuZGVyLmNwcAppbmRleCA1ZmNiNTJiNzg1MjA1MTM5ZGRiY2I1YjBjMzIyNWM2ZTA5ZjYzNWFj
Li4wNTdjZmUwNDZhYmY1MDdhYjUxOGU5OWFmMjJmNWNjMmY4MGM3YTA0IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0aWMg
Ym9vbCBzZW5kTW91c2VFdmVudChFdmFzKiBldmFzLCBFdmFzTW91c2VFdmVudCBldmVudCwgaW50
IGJ1dHRvbk51bWJlciwgRQogCiBzdGF0aWMgRWluYV9Cb29sIHNlbmRDbGljayh2b2lkKikKIHsK
LSAgICByZXR1cm4gISFzZW5kTW91c2VFdmVudChldmFzX29iamVjdF9ldmFzX2dldChtYWluRnJh
bWUpLCBFdmFzTW91c2VFdmVudENsaWNrLCBFdmFzTW91c2VCdXR0b25MZWZ0LCBFdmFzS2V5TW9k
aWZpZXJOb25lKTsKKyAgICByZXR1cm4gISFzZW5kTW91c2VFdmVudChldmFzX29iamVjdF9ldmFz
X2dldChicm93c2VyLT5tYWluRnJhbWUoKSksIEV2YXNNb3VzZUV2ZW50Q2xpY2ssIEV2YXNNb3Vz
ZUJ1dHRvbkxlZnQsIEV2YXNLZXlNb2RpZmllck5vbmUpOwogfQogCiBzdGF0aWMgSlNWYWx1ZVJl
ZiBzY2hlZHVsZUFzeW5jaHJvbm91c0NsaWNrQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQpAQCAtMjIzLDcgKzIyMyw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlRG93bkNh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwKICAgICB1
cGRhdGVDbGlja0NvdW50KGJ1dHRvbik7CiAKICAgICBFdmFzS2V5TW9kaWZpZXIgbW9kaWZpZXJz
ID0gYXJndW1lbnRDb3VudCA+PSAyID8gbW9kaWZpZXJzRnJvbUpTVmFsdWUoY29udGV4dCwgYXJn
dW1lbnRzWzFdKSA6IEV2YXNLZXlNb2RpZmllck5vbmU7Ci0gICAgaWYgKCFzZW5kTW91c2VFdmVu
dChldmFzX29iamVjdF9ldmFzX2dldChtYWluRnJhbWUpLCBFdmFzTW91c2VFdmVudERvd24sIGJ1
dHRvbiwgbW9kaWZpZXJzKSkKKyAgICBpZiAoIXNlbmRNb3VzZUV2ZW50KGV2YXNfb2JqZWN0X2V2
YXNfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSwgRXZhc01vdXNlRXZlbnREb3duLCBidXR0b24s
IG1vZGlmaWVycykpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKIAogICAgIGdCdXR0b25DdXJyZW50bHlEb3duID0gYnV0dG9uOwpAQCAtMjQ2LDcgKzI0Niw3
IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlVXBDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTCiAgICAgZ0J1dHRvbkN1cnJlbnRseURvd24gPSAw
OwogCiAgICAgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVycyA9IGFyZ3VtZW50Q291bnQgPj0gMiA/
IG1vZGlmaWVyc0Zyb21KU1ZhbHVlKGNvbnRleHQsIGFyZ3VtZW50c1sxXSkgOiBFdmFzS2V5TW9k
aWZpZXJOb25lOwotICAgIHNlbmRNb3VzZUV2ZW50KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KG1haW5G
cmFtZSksIEV2YXNNb3VzZUV2ZW50VXAsIHRyYW5zbGF0ZU1vdXNlQnV0dG9uTnVtYmVyKGJ1dHRv
biksIG1vZGlmaWVycyk7CisgICAgc2VuZE1vdXNlRXZlbnQoZXZhc19vYmplY3RfZXZhc19nZXQo
YnJvd3Nlci0+bWFpbkZyYW1lKCkpLCBFdmFzTW91c2VFdmVudFVwLCB0cmFuc2xhdGVNb3VzZUJ1
dHRvbk51bWJlcihidXR0b24pLCBtb2RpZmllcnMpOwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKIH0KIApAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyBKU1ZhbHVl
UmVmIG1vdXNlTW92ZVRvQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uCiAgICAgaWYgKGV4Y2VwdGlvbiAmJiAqZXhjZXB0aW9uKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAKLSAgICBzZW5kTW91c2VFdmVudChl
dmFzX29iamVjdF9ldmFzX2dldChtYWluRnJhbWUpLCBFdmFzTW91c2VFdmVudE1vdmUsIEV2YXNN
b3VzZUJ1dHRvbk5vbmUsIEV2YXNLZXlNb2RpZmllck5vbmUpOworICAgIHNlbmRNb3VzZUV2ZW50
KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSwgRXZhc01vdXNlRXZl
bnRNb3ZlLCBFdmFzTW91c2VCdXR0b25Ob25lLCBFdmFzS2V5TW9kaWZpZXJOb25lKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKQEAgLTI5NSw3ICsyOTUs
NyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZVNjcm9sbEJ5Q2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aQogICAgIGlmIChleGNlcHRpb24gJiYgKmV4Y2Vw
dGlvbikKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCi0g
ICAgc2VuZE1vdXNlRXZlbnQoZXZhc19vYmplY3RfZXZhc19nZXQobWFpbkZyYW1lKSwgZXZhc01v
dXNlRXZlbnRGcm9tSG9yaXpvbnRhbEFuZFZlcnRpY2FsT2Zmc2V0cyhob3Jpem9udGFsLCB2ZXJ0
aWNhbCksIEV2YXNNb3VzZUJ1dHRvbk5vbmUsIEV2YXNLZXlNb2RpZmllck5vbmUpOworICAgIHNl
bmRNb3VzZUV2ZW50KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSwg
ZXZhc01vdXNlRXZlbnRGcm9tSG9yaXpvbnRhbEFuZFZlcnRpY2FsT2Zmc2V0cyhob3Jpem9udGFs
LCB2ZXJ0aWNhbCksIEV2YXNNb3VzZUJ1dHRvbk5vbmUsIEV2YXNLZXlNb2RpZmllck5vbmUpOwog
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIApAQCAtNDAwLDcg
KzQwMCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBrZXlOYW1lRnJvbUpTVmFsdWUoSlNTdHJpbmdS
ZWYgY2hhcmFjdGVyKQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBrZXlEb3duQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIEV2YXNfT2JqZWN0KiB2aWV3ID0gZXdrX2Zy
YW1lX3ZpZXdfZ2V0KG1haW5GcmFtZSk7CisgICAgRXZhc19PYmplY3QqIHZpZXcgPSBld2tfZnJh
bWVfdmlld19nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpOwogICAgIGlmICghdmlldykKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCkBAIC00MzUsNyArNDM1
LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2NhbGVQYWdlQnlDYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24KICAgICBpZiAoYXJndW1lbnRDb3VudCA8IDMp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIEV2
YXNfT2JqZWN0KiB2aWV3ID0gZXdrX2ZyYW1lX3ZpZXdfZ2V0KG1haW5GcmFtZSk7CisgICAgRXZh
c19PYmplY3QqIHZpZXcgPSBld2tfZnJhbWVfdmlld19nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkp
OwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVz
dENvbnRyb2xsZXJFZmwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RD
b250cm9sbGVyRWZsLmNwcAppbmRleCBkYTZmZmI3M2IwNDc3NmZlYmVjYmExYjU3M2UyM2E4YWVj
OWFkMDM3Li5iYjVmNDllOTEyNDIwNDExZjM0OGFhZTg5NjExMmFhOGExYzA0OWM1IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5j
cHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGlzcGxheSgp
CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y291bnRl
clZhbHVlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCiB7Ci0gICAgT3duRmFzdE1hbGxv
Y1B0cjxjaGFyPiBjb3VudGVyVmFsdWUoZXdrX2ZyYW1lX2NvdW50ZXJfdmFsdWVfYnlfZWxlbWVu
dF9pZF9nZXQobWFpbkZyYW1lLCBpZC0+dXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBP
d25GYXN0TWFsbG9jUHRyPGNoYXI+IGNvdW50ZXJWYWx1ZShld2tfZnJhbWVfY291bnRlcl92YWx1
ZV9ieV9lbGVtZW50X2lkX2dldChicm93c2VyLT5tYWluRnJhbWUoKSwgaWQtPnVzdHJpbmcoKS51
dGY4KCkuZGF0YSgpKSk7CiAgICAgcmV0dXJuIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPihBZG9w
dCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoY291bnRlclZhbHVlLmdldCgpKSk7CiB9
CiAKQEAgLTExOCwxMiArMTE4LDEyIEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6bGF5ZXJUcmVlQXNUZXh0KCkgY29uc3QKIAogaW50IExheW91dFRlc3RD
b250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQsIGZsb2F0
IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKIHsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX3Bh
Z2VfbnVtYmVyX2J5X2VsZW1lbnRfaWRfZ2V0KG1haW5GcmFtZSwgaWQtPnVzdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCBwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpOworICAgIHJldHVybiBld2tfZnJhbWVf
cGFnZV9udW1iZXJfYnlfZWxlbWVudF9pZF9nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCksIGlkLT51
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcGFnZVdpZHRoLCBwYWdlSGVpZ2h0KTsKIH0KIAogaW50
IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKGZsb2F0IHBhZ2VXaWR0aCwgZmxv
YXQgcGFnZUhlaWdodCkKIHsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX3BhZ2VfbnVtYmVyX2dldCht
YWluRnJhbWUsIHBhZ2VXaWR0aCwgcGFnZUhlaWdodCk7CisgICAgcmV0dXJuIGV3a19mcmFtZV9w
YWdlX251bWJlcl9nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCksIHBhZ2VXaWR0aCwgcGFnZUhlaWdo
dCk7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
cGFnZVByb3BlcnR5KGNvbnN0IGNoYXIqLCBpbnQpIGNvbnN0CkBAIC0xNDYsNyArMTQ2LDcgQEAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlU2l6ZUFu
ZE1hcmdpbnNJblBpeGVscyhpbnQsIGkKIAogc2l6ZV90IExheW91dFRlc3RDb250cm9sbGVyOjp3
ZWJIaXN0b3J5SXRlbUNvdW50KCkKIHsKLSAgICBjb25zdCBFd2tfSGlzdG9yeSogaGlzdG9yeSA9
IGV3a192aWV3X2hpc3RvcnlfZ2V0KGJyb3dzZXIpOworICAgIGNvbnN0IEV3a19IaXN0b3J5KiBo
aXN0b3J5ID0gZXdrX3ZpZXdfaGlzdG9yeV9nZXQoYnJvd3Nlci0+bWFpblZpZXcoKSk7CiAgICAg
aWYgKCFoaXN0b3J5KQogICAgICAgICByZXR1cm4gLTE7CiAKQEAgLTE3NCw3ICsxNzQsNyBAQCBK
U1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNTdAogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1
ZUxvYWQoSlNTdHJpbmdSZWYgdXJsLCBKU1N0cmluZ1JlZiB0YXJnZXQpCiB7Ci0gICAgU3RyaW5n
IGFic29sdXRlVXJsID0gU3RyaW5nOjpmcm9tVVRGOChld2tfZnJhbWVfdXJpX2dldChtYWluRnJh
bWUpKTsKKyAgICBTdHJpbmcgYWJzb2x1dGVVcmwgPSBTdHJpbmc6OmZyb21VVEY4KGV3a19mcmFt
ZV91cmlfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSk7CiAgICAgYWJzb2x1dGVVcmwuYXBwZW5k
KHVybC0+Y2hhcmFjdGVycygpLCB1cmwtPmxlbmd0aCgpKTsKIAogICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBqc0Fic29sdXRlVVJMKApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnF1ZXVlTG9hZChKU1N0cmluZ1JlZiB1cmwsIEpTU3RyaW5nUmVmIHRh
cmdldCkKIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWNjZXB0c0VkaXRpbmcoYm9v
bCBhY2NlcHRzRWRpdGluZykKIHsKLSAgICBld2tfdmlld19lZGl0YWJsZV9zZXQoYnJvd3Nlciwg
YWNjZXB0c0VkaXRpbmcpOworICAgIGV3a192aWV3X2VkaXRhYmxlX3NldChicm93c2VyLT5tYWlu
VmlldygpLCBhY2NlcHRzRWRpdGluZyk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldEFsd2F5c0FjY2VwdENvb2tpZXMoYm9vbCBhbHdheXNBY2NlcHRDb29raWVzKQpAQCAtMjQw
LDcgKzI0MCw3IEBAIHN0YXRpYyBib29sIGdVc2VyU3R5bGVTaGVldEVuYWJsZWQgPSB0cnVlOwog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wg
ZmxhZykKIHsKICAgICBnVXNlclN0eWxlU2hlZXRFbmFibGVkID0gZmxhZzsKLSAgICBld2tfdmll
d19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQoYnJvd3NlciwgZmxhZyA/IGdVc2VyU3R5bGVT
aGVldC5kYXRhKCkgOiAwKTsKKyAgICBld2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9z
ZXQoYnJvd3Nlci0+bWFpblZpZXcoKSwgZmxhZyA/IGdVc2VyU3R5bGVTaGVldC5kYXRhKCkgOiAw
KTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VXNlclN0eWxlU2hlZXRMb2Nh
dGlvbihKU1N0cmluZ1JlZiBwYXRoKQpAQCAtMjk0LDcgKzI5NCw3IEBAIGludCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6d2luZG93Q291bnQoKQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgZmxhZykKIHsKLSAgICBld2tfdmlld19zZXR0
aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0KGJyb3dzZXIsIGZsYWcpOworICAgIGV3a192aWV3X3Nl
dHRpbmdfcHJpdmF0ZV9icm93c2luZ19zZXQoYnJvd3Nlci0+bWFpblZpZXcoKSwgZmxhZyk7CiB9
CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlw
Ym9hcmQoYm9vbCkKQEAgLTMwOSwxMiArMzA5LDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wpCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoYm9vbCBmbGFnKQogewotICAgIGV3a192aWV3
X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfc2V0KGJyb3dzZXIsIGZsYWcpOworICAg
IGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfc2V0KGJyb3dzZXItPm1h
aW5WaWV3KCksIGZsYWcpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTcGF0
aWFsTmF2aWdhdGlvbkVuYWJsZWQoYm9vbCBmbGFnKQogewotICAgIGV3a192aWV3X3NldHRpbmdf
c3BhdGlhbF9uYXZpZ2F0aW9uX3NldChicm93c2VyLCBmbGFnKTsKKyAgICBld2tfdmlld19zZXR0
aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9zZXQoYnJvd3Nlci0+bWFpblZpZXcoKSwgZmxhZyk7CiB9
CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJv
bUZpbGVVUkxzKGJvb2wpCkBAIC00MjksNyArNDI5LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoYm9vbCkKIAogdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBmbGFnKQogewotICAgIGV3a192aWV3X3Nl
dHRpbmdfZW5hYmxlX3BsdWdpbnNfc2V0KGJyb3dzZXIsIGZsYWcpOworICAgIGV3a192aWV3X3Nl
dHRpbmdfZW5hYmxlX3BsdWdpbnNfc2V0KGJyb3dzZXItPm1haW5WaWV3KCksIGZsYWcpOwogfQog
CiBib29sIExheW91dFRlc3RDb250cm9sbGVyOjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVs
ZW1lbnRXaXRoSWQoSlNTdHJpbmdSZWYpCkBAIC00NjksNyArNDY5LDcgQEAgYm9vbCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6ZmluZFN0cmluZyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTdHJpbmdS
ZWYgdGFyZ2V0LAogICAgICAgICAgICAgd3JhcCA9IHRydWU7CiAgICAgfQogCi0gICAgcmV0dXJu
ICEhZXdrX3ZpZXdfdGV4dF9zZWFyY2goYnJvd3NlciwgdGFyZ2V0LT51c3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgY2FzZVNlbnNpdGl2ZSwgZm9yd2FyZCwgd3JhcCk7CisgICAgcmV0dXJuICEhZXdr
X3ZpZXdfdGV4dF9zZWFyY2goYnJvd3Nlci0+bWFpblZpZXcoKSwgdGFyZ2V0LT51c3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgY2FzZVNlbnNpdGl2ZSwgZm9yd2FyZCwgd3JhcCk7CiB9CiAKIGJvb2wg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmlzQ29tbWFuZEVuYWJsZWQoSlNTdHJpbmdSZWYgbmFtZSkK
QEAgLTU5MCwzMiArNTkwLDMyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcENh
Y2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHNpemUpCiAKIGJvb2wgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5n
UmVmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lLCBKU1N0cmluZ1JlZiBlbGVtZW50SWQpCiB7
Ci0gICAgcmV0dXJuIGV3a19mcmFtZV9hbmltYXRpb25fcGF1c2UobWFpbkZyYW1lLCBhbmltYXRp
b25OYW1lLT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZWxlbWVudElkLT51c3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgdGltZSk7CisgICAgcmV0dXJuIGV3a19mcmFtZV9hbmltYXRpb25fcGF1c2Uo
YnJvd3Nlci0+bWFpbkZyYW1lKCksIGFuaW1hdGlvbk5hbWUtPnVzdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCBlbGVtZW50SWQtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aW1lKTsKIH0KIAogYm9v
bCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0
aElkKEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgZG91YmxlIHRpbWUsIEpTU3RyaW5nUmVmIGVs
ZW1lbnRJZCkKIHsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX3RyYW5zaXRpb25fcGF1c2UobWFpbkZy
YW1lLCBwcm9wZXJ0eU5hbWUtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBlbGVtZW50SWQtPnVz
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aW1lKTsKKyAgICByZXR1cm4gZXdrX2ZyYW1lX3RyYW5z
aXRpb25fcGF1c2UoYnJvd3Nlci0+bWFpbkZyYW1lKCksIHByb3BlcnR5TmFtZS0+dXN0cmluZygp
LnV0ZjgoKS5kYXRhKCksIGVsZW1lbnRJZC0+dXN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRpbWUp
OwogfQogCiBib29sIExheW91dFRlc3RDb250cm9sbGVyOjpzYW1wbGVTVkdBbmltYXRpb25Gb3JF
bGVtZW50QXRUaW1lKEpTU3RyaW5nUmVmIGFuaW1hdGlvbklkLCBkb3VibGUgdGltZSwgSlNTdHJp
bmdSZWYgZWxlbWVudElkKQogewotICAgIHJldHVybiBld2tfZnJhbWVfc3ZnX2FuaW1hdGlvbl9w
YXVzZShtYWluRnJhbWUsIGFuaW1hdGlvbklkLT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZWxl
bWVudElkLT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGltZSk7CisgICAgcmV0dXJuIGV3a19m
cmFtZV9zdmdfYW5pbWF0aW9uX3BhdXNlKGJyb3dzZXItPm1haW5GcmFtZSgpLCBhbmltYXRpb25J
ZC0+dXN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGVsZW1lbnRJZC0+dXN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIHRpbWUpOwogfQogCiB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVy
T2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX2FuaW1h
dGlvbl9hY3RpdmVfbnVtYmVyX2dldChtYWluRnJhbWUpOworICAgIHJldHVybiBld2tfZnJhbWVf
YW5pbWF0aW9uX2FjdGl2ZV9udW1iZXJfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKTsKIH0KIAog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3VzcGVuZEFuaW1hdGlvbnMoKSBjb25zdAogewot
ICAgIGV3a19mcmFtZV9hbmltYXRpb25fc3VzcGVuZChtYWluRnJhbWUpOworICAgIGV3a19mcmFt
ZV9hbmltYXRpb25fc3VzcGVuZChicm93c2VyLT5tYWluRnJhbWUoKSk7CiB9CiAKIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMoKSBjb25zdAogewotICAgIGV3a19m
cmFtZV9hbmltYXRpb25fcmVzdW1lKG1haW5GcmFtZSk7CisgICAgZXdrX2ZyYW1lX2FuaW1hdGlv
bl9yZXN1bWUoYnJvd3Nlci0+bWFpbkZyYW1lKCkpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmKQpAQCAt
NjM2LDcgKzYzNiw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNo
ZWV0KEpTU3RyaW5nUmVmLCBib29sKQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRE
ZXZlbG9wZXJFeHRyYXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBld2tfdmlld19zZXR0
aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX3NldChicm93c2VyLCBlbmFibGVkKTsKKyAgICBl
d2tfdmlld19zZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX3NldChicm93c2VyLT5tYWlu
VmlldygpLCBlbmFibGVkKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkKQEAgLTY4Nyw3ICs2ODcsNyBAQCB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphcGlUZXN0R29Ub0N1cnJlbnRCYWNrRm9yd2FyZEl0
ZW0oKQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRXZWJWaWV3RWRpdGFibGUoYm9v
bCkKIHsKLSAgICBld2tfZnJhbWVfZWRpdGFibGVfc2V0KG1haW5GcmFtZSwgRUlOQV9UUlVFKTsK
KyAgICBld2tfZnJhbWVfZWRpdGFibGVfc2V0KGJyb3dzZXItPm1haW5GcmFtZSgpLCBFSU5BX1RS
VUUpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6
Om1hcmtlclRleHRGb3JMaXN0SXRlbShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvUGl4ZWxEdW1wU3VwcG9ydEVmbC5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvUGl4ZWxEdW1wU3VwcG9ydEVmbC5jcHAKaW5k
ZXggYWUyOWUyNjJjYTY2YjE4MDNhODc2MzkzNDcyZGE5NTRjM2JkMTY3My4uY2NiMTkzYzlhNjQ4
NjU3MTNiMWQ3NmJiMDVmNmQ4MDM0NzFjYWQzNyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL1BpeGVsRHVtcFN1cHBvcnRFZmwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2VmbC9QaXhlbER1bXBTdXBwb3J0RWZsLmNwcApAQCAtMzgsOSArMzgsMTEgQEAKIAogUGFz
c1JlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9v
bCwgYm9vbCwgYm9vbCwgYm9vbCBkcmF3U2VsZWN0aW9uUmVjdCkKIHsKLSAgICBFd2tfVmlld19T
bWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4o
ZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQoYnJvd3NlcikpOworICAgIEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihldmFz
X29iamVjdF9zbWFydF9kYXRhX2dldChicm93c2VyLT5tYWluVmlldygpKSk7CiAgICAgRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiBwcml2YXRlRGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1ByaXZh
dGVfRGF0YSo+KHNtYXJ0RGF0YS0+X3ByaXYpOwogCisgICAgY29uc3QgRXZhc19PYmplY3QqIG1h
aW5GcmFtZSA9IGJyb3dzZXItPm1haW5GcmFtZSgpOworCiAgICAgaW50IHdpZHRoLCBoZWlnaHQ7
CiAgICAgaWYgKCFld2tfZnJhbWVfY29udGVudHNfc2l6ZV9nZXQobWFpbkZyYW1lLCAmd2lkdGgs
ICZoZWlnaHQpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9Xb3JrUXVldWVJdGVtRWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Vm
bC9Xb3JrUXVldWVJdGVtRWZsLmNwcAppbmRleCA4ZWI2NTc3ZTQwNjc3YmU4MmNkOTgxZDcxNTFj
ODAxZGI0NGNjMGM1Li40MzBlOTgxYWFkNzA3M2UyYTgzMWFhNDdmYWZmNzU2NDgzZThlNmVmIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvV29ya1F1ZXVlSXRlbUVmbC5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1dvcmtRdWV1ZUl0ZW1FZmwuY3BwCkBAIC0z
NSw5ICszNSw5IEBAIGJvb2wgTG9hZEl0ZW06Omludm9rZSgpIGNvbnN0CiAgICAgRXZhc19PYmpl
Y3QqIHRhcmdldEZyYW1lOwogCiAgICAgaWYgKCFtX3RhcmdldC0+bGVuZ3RoKCkpCi0gICAgICAg
IHRhcmdldEZyYW1lID0gbWFpbkZyYW1lOworICAgICAgICB0YXJnZXRGcmFtZSA9IGJyb3dzZXIt
Pm1haW5GcmFtZSgpOwogICAgIGVsc2UKLSAgICAgICAgdGFyZ2V0RnJhbWUgPSBld2tfZnJhbWVf
Y2hpbGRfZmluZChtYWluRnJhbWUsIG1fdGFyZ2V0LT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIHRhcmdldEZyYW1lID0gZXdrX2ZyYW1lX2NoaWxkX2ZpbmQoYnJvd3Nlci0+bWFp
bkZyYW1lKCksIG1fdGFyZ2V0LT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBld2tf
ZnJhbWVfdXJpX3NldCh0YXJnZXRGcmFtZSwgbV91cmwtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKIApAQCAtNDcsMjcgKzQ3LDI3IEBAIGJvb2wgTG9hZEl0ZW06Omludm9rZSgpIGNvbnN0CiBi
b29sIExvYWRIVE1MU3RyaW5nSXRlbTo6aW52b2tlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fdW5y
ZWFjaGFibGVVUkwtPmxlbmd0aCgpKQotICAgICAgICBld2tfZnJhbWVfY29udGVudHNfc2V0KG1h
aW5GcmFtZSwgbV9jb250ZW50LT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgMCwgMCwgMCwgbV9i
YXNlVVJMLT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGV3a19mcmFtZV9jb250
ZW50c19zZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCksIG1fY29udGVudC0+dXN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIDAsIDAsIDAsIG1fYmFzZVVSTC0+dXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgIGVsc2UKLSAgICAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX2FsdGVybmF0ZV9zZXQobWFpbkZy
YW1lLCBtX2NvbnRlbnQtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAwLCAwLCAwLCBtX2Jhc2VV
UkwtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX3VucmVhY2hhYmxlVVJMLT51c3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGV3a19mcmFtZV9jb250ZW50c19hbHRlcm5hdGVfc2V0
KGJyb3dzZXItPm1haW5GcmFtZSgpLCBtX2NvbnRlbnQtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCAwLCAwLCAwLCBtX2Jhc2VVUkwtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX3VucmVhY2hh
YmxlVVJMLT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogYm9vbCBSZWxvYWRJdGVtOjppbnZva2UoKSBjb25zdAogewotICAgIGV3a192aWV3X3JlbG9h
ZChicm93c2VyKTsKKyAgICBld2tfdmlld19yZWxvYWQoYnJvd3Nlci0+bWFpblZpZXcoKSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgU2NyaXB0SXRlbTo6aW52b2tlKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gZXdrX2ZyYW1lX3NjcmlwdF9leGVjdXRlKG1haW5GcmFtZSwgbV9zY3JpcHQt
PnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZXdrX2ZyYW1lX3NjcmlwdF9l
eGVjdXRlKGJyb3dzZXItPm1haW5GcmFtZSgpLCBtX3NjcmlwdC0+dXN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogfQogCiBib29sIEJhY2tGb3J3YXJkSXRlbTo6aW52b2tlKCkgY29uc3QKIHsKLSAg
ICBFd2tfSGlzdG9yeSogaGlzdG9yeSA9IGV3a192aWV3X2hpc3RvcnlfZ2V0KGJyb3dzZXIpOwor
ICAgIEV3a19IaXN0b3J5KiBoaXN0b3J5ID0gZXdrX3ZpZXdfaGlzdG9yeV9nZXQoYnJvd3Nlci0+
bWFpblZpZXcoKSk7CiAKICAgICBpZiAobV9ob3dGYXIgPT0gMSkKICAgICAgICAgZXdrX2hpc3Rv
cnlfZm9yd2FyZChoaXN0b3J5KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109831</attachid>
            <date>2011-10-05 11:53:54 -0700</date>
            <delta_ts>2011-10-07 09:21:07 -0700</delta_ts>
            <desc>Rebase on top of trunk</desc>
            <filename>bug-66380-20111005155342.patch</filename>
            <type>text/plain</type>
            <size>32069</size>
            <attacher name="Raphael Kubo da Costa (:rakuco)">rakuco</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY3MzMKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMzZmMjc3M2YzMDMyOTAzMTkxNjZmYzBjNTliYzhiYmFh
ODQ0MmU4Li45ZGZmYmYxNGVlNTMxN2U5YWM1Mzk3MzY1NzhlODQxODY4NGFjYzljIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMg
QEAKKzIwMTEtMTAtMDUgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1v
Ymk+CisKKyAgICAgICAgW0VGTF0gRFJUOiBBZGQgRHVtcFJlbmRlclRyZWVDaHJvbWUue2NwcCxo
fQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzODAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGVu
Y2Fwc3VsYXRlcyBFV2ViS2l0IGludG8gYW4gb2JqZWN0IHRoYXQgbWFuYWdlcyBtdWx0aXBsZSB3
aW5kb3dzCisgICAgICAgIGFuZCBwcm92aWRlcyBhIGNsZWFuZXIgaW50ZXJmYWNlIHRvIEVGTCdz
IER1bXBSZW5kZXJUcmVlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5k
ZXJUcmVlQ2hyb21lLmNwcDogQWRkZWQuCisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6
Y3JlYXRlKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjpEdW1wUmVuZGVyVHJlZUNo
cm9tZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6fkR1bXBSZW5kZXJUcmVlQ2hy
b21lKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjpjcmVhdGVOZXdXaW5kb3cpOgor
ICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6OmNyZWF0ZVZpZXcpOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVDaHJvbWU6OnJlbW92ZVdpbmRvdyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZUNocm9tZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6ZXh0
cmFWaWV3cyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6bWFpbkZyYW1lKToKKyAg
ICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lOjptYWluVmlldyk6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZUNocm9tZTo6cmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25XaW5kb3dPYmplY3RDbGVhcmVkKToKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbkxvYWRTdGFydGVkKToKKyAgICAgICAgKER1bXBSZW5k
ZXJUcmVlQ2hyb21lOjpwcm9jZXNzV29yayk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9t
ZTo6b25Mb2FkRmluaXNoZWQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uU3Rh
dHVzYmFyVGV4dFNldCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25UaXRsZUNo
YW5nZWQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uRG9jdW1lbnRMb2FkRmlu
aXNoZWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9t
ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3Bw
OgorICAgICAgICAoc2VuZENsaWNrKTogVXNlIGJyb3dzZXItPm1haW5GcmFtZSgpIGluc3RlYWQg
b2YgbWFpbkZyYW1lLgorICAgICAgICAobW91c2VEb3duQ2FsbGJhY2spOiBEaXR0by4KKyAgICAg
ICAgKG1vdXNlVXBDYWxsYmFjayk6IERpdHRvLgorICAgICAgICAobW91c2VNb3ZlVG9DYWxsYmFj
ayk6IERpdHRvLgorICAgICAgICAobW91c2VTY3JvbGxCeUNhbGxiYWNrKTogRGl0dG8uCisgICAg
ICAgIChrZXlEb3duQ2FsbGJhY2spOiBEaXR0by4KKyAgICAgICAgKHNjYWxlUGFnZUJ5Q2FsbGJh
Y2spOiBEaXR0by4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRy
b2xsZXJFZmwuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNvdW50ZXJWYWx1
ZUZvckVsZW1lbnRCeUlkKTogVXNlCisgICAgICAgIGJyb3dzZXItPm1haW5GcmFtZSgpIGluc3Rl
YWQgb2YgbWFpbkZyYW1lLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1i
ZXJGb3JFbGVtZW50QnlJZCk6IERpdHRvLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
Om51bWJlck9mUGFnZXMpOiBEaXR0by4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpw
YXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCk6IERpdHRvLgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCk6
IERpdHRvLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNhbXBsZVNWR0FuaW1hdGlv
bkZvckVsZW1lbnRBdFRpbWUpOiBEaXR0by4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzdXNwZW5kQW5pbWF0aW9ucyk6IERpdHRvLgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRXZWJWaWV3RWRpdGFibGUpOiBEaXR0by4KKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjp3ZWJIaXN0b3J5SXRlbUNvdW50KTogVXNlIGJyb3dzZXItPm1haW5W
aWV3KCkKKyAgICAgICAgaW5zdGVhZCBvZiBicm93c2VyLgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnF1ZXVlTG9hZCk6IERpdHRvLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldEFjY2VwdHNFZGl0aW5nKTogRGl0dG8uCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKTogRGl0dG8uCisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6IERpdHRvLgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQpOiBEaXR0
by4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTcGF0aWFsTmF2aWdhdGlvbkVu
YWJsZWQpOiBEaXR0by4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRQbHVnaW5z
RW5hYmxlZCk6IERpdHRvLgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmZpbmRTdHJp
bmcpOiBEaXR0by4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXREZXZlbG9wZXJF
eHRyYXNFbmFibGVkKTogRGl0dG8uCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL1BpeGVs
RHVtcFN1cHBvcnRFZmwuY3BwOgorICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJW
aWV3KTogVXNlIGJyb3dzZXItPm1haW5GcmFtZSgpIGluc3RlYWQgb2YKKyAgICAgICAgbWFpbkZy
YW1lLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9Xb3JrUXVldWVJdGVtRWZsLmNwcDoK
KyAgICAgICAgKExvYWRJdGVtOjppbnZva2UpOiBEaXR0by4KKyAgICAgICAgKExvYWRIVE1MU3Ry
aW5nSXRlbTo6aW52b2tlKTogRGl0dG8uCisgICAgICAgIChTY3JpcHRJdGVtOjppbnZva2UpOiBE
aXR0by4KKyAgICAgICAgKFJlbG9hZEl0ZW06Omludm9rZSk6IFVzZSBicm93c2VyLT5tYWluVmll
dygpIGluc3RlYWQgb2YgYnJvd3Nlci4KKwogMjAxMS0xMC0wNSAgQ2hhbmcgU2h1ICA8Y3NodUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFtXSzJdIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgTGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWNmMTM1ZTRiZWRhYjBmYTQ5Y2E3MDc4N2E3YzI1Y2UwNzBjN2U1YgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKQEAg
LTAsMCArMSwyODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgUHJvRlVTSU9OIEVtYmVk
ZGVkIFN5c3RlbXMKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgSVRTIENPTlRSSUJVVE9SUworICogYGBBUyBJUycnIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUlMgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAorICogSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
CisgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVDaHJvbWUuaCIKKworI2luY2x1ZGUgIkR1bXBSZW5k
ZXJUcmVlLmgiCisjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVWaWV3LmgiCisjaW5jbHVkZSAiRXZl
bnRTZW5kZXIuaCIKKyNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJMYXlvdXRU
ZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAi
V29ya1F1ZXVlLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIgLy8gRklYTUU6IGNyZWF0ZSBz
b21lIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlLmNwcCBpbnN0ZWFkCisKKyNpbmNsdWRl
IDxFV2ViS2l0Lmg+CisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxFaW5hLmg+CisjaW5j
bHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPGNzdGRpbz4KKyNpbmNsdWRlIDx3dGYvTm90Rm91bmQu
aD4KKworUGFzc093blB0cjxEdW1wUmVuZGVyVHJlZUNocm9tZT4gRHVtcFJlbmRlclRyZWVDaHJv
bWU6OmNyZWF0ZShFdmFzKiBldmFzKQoreworICAgIE93blB0cjxEdW1wUmVuZGVyVHJlZUNocm9t
ZT4gY2hyb21lID0gYWRvcHRQdHIobmV3IER1bXBSZW5kZXJUcmVlQ2hyb21lKGV2YXMpKTsKKwor
ICAgIGlmICghY2hyb21lLT5pbml0aWFsaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIGNocm9tZS5yZWxlYXNlKCk7Cit9CisKK0R1bXBSZW5kZXJUcmVlQ2hyb21l
OjpEdW1wUmVuZGVyVHJlZUNocm9tZShFdmFzKiBldmFzKQorICAgIDogbV9tYWluVmlldygwKQor
ICAgICwgbV9tYWluRnJhbWUoMCkKKyAgICAsIG1fZXZhcyhldmFzKQorICAgICwgbV9nY0NvbnRy
b2xsZXIoYWRvcHRQdHIobmV3IEdDQ29udHJvbGxlcikpCit7Cit9CisKK0R1bXBSZW5kZXJUcmVl
Q2hyb21lOjp+RHVtcFJlbmRlclRyZWVDaHJvbWUoKQoreworfQorCitFdmFzX09iamVjdCogRHVt
cFJlbmRlclRyZWVDaHJvbWU6OmNyZWF0ZU5ld1dpbmRvdygpCit7CisgICAgRXZhc19PYmplY3Qq
IG5ld1ZpZXcgPSBjcmVhdGVWaWV3KCk7CisKKyAgICBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNf
d2luZG93X29wZW5fc2V0KG5ld1ZpZXcsIEVJTkFfVFJVRSk7CisgICAgZXdrX3ZpZXdfc2V0dGlu
Z19zY3JpcHRzX2Nhbl9jbG9zZV93aW5kb3dzX3NldChuZXdWaWV3LCBFSU5BX1RSVUUpOworCisg
ICAgbV9leHRyYVZpZXdzLmFwcGVuZChuZXdWaWV3KTsKKworICAgIHJldHVybiBuZXdWaWV3Owor
fQorCitFdmFzX09iamVjdCogRHVtcFJlbmRlclRyZWVDaHJvbWU6OmNyZWF0ZVZpZXcoKSBjb25z
dAoreworICAgIEV2YXNfT2JqZWN0KiB2aWV3ID0gZHJ0Vmlld1RpbGVkQWRkKG1fZXZhcyk7Cisg
ICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGV3a192aWV3X3RoZW1lX3Nl
dCh2aWV3LCBEQVRBX0RJUiIvZGVmYXVsdC5lZGoiKTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2FkZCh2aWV3LCAibG9hZCxzdGFydGVkIiwgb25Mb2FkU3RhcnRlZCwgMCk7Cisg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHZpZXcsICJsb2FkLGZpbmlzaGVkIiwg
b25Mb2FkRmluaXNoZWQsIDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2
aWV3LCAidGl0bGUsY2hhbmdlZCIsIG9uVGl0bGVDaGFuZ2VkLCAwKTsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19hZGQodmlldywgIndpbmRvdyxvYmplY3QsY2xlYXJlZCIsIG9uV2lu
ZG93T2JqZWN0Q2xlYXJlZCwgbV9nY0NvbnRyb2xsZXIuZ2V0KCkpOworICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAic3RhdHVzYmFyLHRleHQsc2V0Iiwgb25TdGF0dXNi
YXJUZXh0U2V0LCAwKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQodmlldywg
ImxvYWQsZG9jdW1lbnQsZmluaXNoZWQiLCBvbkRvY3VtZW50TG9hZEZpbmlzaGVkLCAwKTsKKwor
ICAgIHJldHVybiB2aWV3OworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpyZW1vdmVX
aW5kb3coRXZhc19PYmplY3QqIHZpZXcpCit7CisgICAgY29uc3Qgc2l6ZV90IHBvcyA9IG1fZXh0
cmFWaWV3cy5maW5kKHZpZXcpOworCisgICAgaWYgKHBvcyA9PSBub3RGb3VuZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9leHRyYVZpZXdzLnJlbW92ZShwb3MpOworICAgIGV2YXNfb2JqZWN0
X2RlbCh2aWV3KTsKK30KKworYm9vbCBEdW1wUmVuZGVyVHJlZUNocm9tZTo6aW5pdGlhbGl6ZSgp
Cit7CisgICAgbV9tYWluVmlldyA9IGNyZWF0ZVZpZXcoKTsKKyAgICBpZiAoIW1fbWFpblZpZXcp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGV3a192aWV3X3RoZW1lX3NldChtX21haW5W
aWV3LCBEQVRBX0RJUiIvZGVmYXVsdC5lZGoiKTsKKworICAgIGV2YXNfb2JqZWN0X25hbWVfc2V0
KG1fbWFpblZpZXcsICJtX21haW5WaWV3Iik7CisgICAgZXZhc19vYmplY3RfbW92ZShtX21haW5W
aWV3LCAwLCAwKTsKKyAgICBldmFzX29iamVjdF9yZXNpemUobV9tYWluVmlldywgODAwLCA2MDAp
OworICAgIGV2YXNfb2JqZWN0X2xheWVyX3NldChtX21haW5WaWV3LCBFVkFTX0xBWUVSX01BWCk7
CisgICAgZXZhc19vYmplY3Rfc2hvdyhtX21haW5WaWV3KTsKKyAgICBldmFzX29iamVjdF9mb2N1
c19zZXQobV9tYWluVmlldywgRUlOQV9UUlVFKTsKKworICAgIG1fbWFpbkZyYW1lID0gZXdrX3Zp
ZXdfZnJhbWVfbWFpbl9nZXQobV9tYWluVmlldyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
VmVjdG9yPEV2YXNfT2JqZWN0Kj4gRHVtcFJlbmRlclRyZWVDaHJvbWU6OmV4dHJhVmlld3MoKSBj
b25zdAoreworICAgIHJldHVybiBtX2V4dHJhVmlld3M7Cit9CisKK0V2YXNfT2JqZWN0KiBEdW1w
UmVuZGVyVHJlZUNocm9tZTo6bWFpbkZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tYWlu
RnJhbWU7Cit9CisKK0V2YXNfT2JqZWN0KiBEdW1wUmVuZGVyVHJlZUNocm9tZTo6bWFpblZpZXco
KSBjb25zdAoreworICAgIHJldHVybiBtX21haW5WaWV3OworfQorCit2b2lkIER1bXBSZW5kZXJU
cmVlQ2hyb21lOjpyZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKCkKK3sKKyAgICBWZWN0
b3I8RXZhc19PYmplY3QqPjo6aXRlcmF0b3IgaXQgPSBtX2V4dHJhVmlld3MuYmVnaW4oKTsKKyAg
ICBmb3IgKDsgaXQgIT0gbV9leHRyYVZpZXdzLmVuZCgpOyArK2l0KQorICAgICAgICBldmFzX29i
amVjdF9kZWwoKml0KTsKKyAgICBtX2V4dHJhVmlld3MuY2xlYXIoKTsKKworICAgIGV3a19zZXR0
aW5nc19pY29uX2RhdGFiYXNlX2NsZWFyKCk7CisgICAgZXdrX3NldHRpbmdzX2ljb25fZGF0YWJh
c2VfcGF0aF9zZXQoMCk7CisKKyAgICBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdf
c2V0KG1haW5WaWV3KCksIEVJTkFfRkFMU0UpOworICAgIGV3a192aWV3X3NldHRpbmdfc3BhdGlh
bF9uYXZpZ2F0aW9uX3NldChtYWluVmlldygpLCBFSU5BX0ZBTFNFKTsKKyAgICBld2tfdmlld19z
ZXR0aW5nX2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nX3NldChtYWluVmlldygpLCBFSU5BX0ZBTFNF
KTsKKyAgICBld2tfdmlld19zZXR0aW5nX29mZmxpbmVfYXBwX2NhY2hlX3NldChtYWluVmlldygp
LCBFSU5BX1RSVUUpOworICAgIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3NjcmlwdHNfc2V0KG1h
aW5WaWV3KCksIEVJTkFfVFJVRSk7CisgICAgZXdrX3ZpZXdfZm9udF9mYW1pbHlfbmFtZV9zZXQo
bWFpblZpZXcoKSwgRVdLX0ZPTlRfRkFNSUxZX1NUQU5EQVJELCAiVGltZXMiKTsKKyAgICBld2tf
dmlld19mb250X2ZhbWlseV9uYW1lX3NldChtYWluVmlldygpLCBFV0tfRk9OVF9GQU1JTFlfTU9O
T1NQQUNFLCAiQ291cmllciIpOworICAgIGV3a192aWV3X2ZvbnRfZmFtaWx5X25hbWVfc2V0KG1h
aW5WaWV3KCksIEVXS19GT05UX0ZBTUlMWV9TRVJJRiwgIlRpbWVzIik7CisgICAgZXdrX3ZpZXdf
Zm9udF9mYW1pbHlfbmFtZV9zZXQobWFpblZpZXcoKSwgRVdLX0ZPTlRfRkFNSUxZX1NBTlNfU0VS
SUYsICJIZWx2ZXRpY2EiKTsKKyAgICBld2tfdmlld19mb250X2ZhbWlseV9uYW1lX3NldChtYWlu
VmlldygpLCBFV0tfRk9OVF9GQU1JTFlfQ1VSU0lWRSwgImN1cnNpdmUiKTsKKyAgICBld2tfdmll
d19mb250X2ZhbWlseV9uYW1lX3NldChtYWluVmlldygpLCBFV0tfRk9OVF9GQU1JTFlfRkFOVEFT
WSwgImZhbnRhc3kiKTsKKyAgICBld2tfdmlld19zZXR0aW5nX2ZvbnRfZGVmYXVsdF9zaXplX3Nl
dChtYWluVmlldygpLCAxNik7CisgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X21vbm9zcGFjZV9z
aXplX3NldChtYWluVmlldygpLCAxMyk7CisgICAgZXdrX3ZpZXdfc2V0dGluZ19mb250X21pbmlt
dW1fc2l6ZV9zZXQobWFpblZpZXcoKSwgMCk7CisgICAgZXdrX3ZpZXdfc2V0dGluZ19jYXJldF9i
cm93c2luZ19zZXQobWFpblZpZXcoKSwgRUlOQV9GQUxTRSk7CisgICAgZXdrX3ZpZXdfc2V0dGlu
Z19wYWdlX2NhY2hlX3NldChtYWluVmlldygpLCBFSU5BX0ZBTFNFKTsKKyAgICBld2tfdmlld19z
ZXR0aW5nX2VuYWJsZV9hdXRvX3Jlc2l6ZV93aW5kb3dfc2V0KG1haW5WaWV3KCksIEVJTkFfVFJV
RSk7CisgICAgZXdrX3ZpZXdfc2V0dGluZ19lbmFibGVfcGx1Z2luc19zZXQobWFpblZpZXcoKSwg
RUlOQV9UUlVFKTsKKyAgICBld2tfdmlld19zZXR0aW5nX3NjcmlwdHNfd2luZG93X29wZW5fc2V0
KG1haW5WaWV3KCksIEVJTkFfVFJVRSk7CisgICAgZXdrX3ZpZXdfc2V0dGluZ19zY3JpcHRzX2Nh
bl9jbG9zZV93aW5kb3dzX3NldChtYWluVmlldygpLCBFSU5BX1RSVUUpOworCisgICAgZXdrX3Zp
ZXdfem9vbV9zZXQobWFpblZpZXcoKSwgMS4wLCAwLCAwKTsKKyAgICBld2tfdmlld19wYWdlX3Nj
YWxlKG1haW5WaWV3KCksIDEuMCwgMCwgMCk7CisKKyAgICBFd2tfSGlzdG9yeSogaGlzdG9yeSA9
IGV3a192aWV3X2hpc3RvcnlfZ2V0KG1haW5WaWV3KCkpOworICAgIGludCBsaW1pdCA9IGV3a19o
aXN0b3J5X2xpbWl0X2dldChoaXN0b3J5KTsKKyAgICBld2tfaGlzdG9yeV9saW1pdF9zZXQoaGlz
dG9yeSwgMCk7CisgICAgZXdrX2hpc3RvcnlfbGltaXRfc2V0KGhpc3RvcnksIGxpbWl0KTsKKwor
ICAgIGV3a19jb29raWVzX2NsZWFyKCk7CisgICAgZXdrX2Nvb2tpZXNfcG9saWN5X3NldChFV0tf
Q09PS0lFX0pBUl9BQ0NFUFRfTk9fVEhJUkRfUEFSVFkpOworCisgICAgZXdrX2ZyYW1lX25hbWVf
Y2xlYXIobWFpbkZyYW1lKCkpOworICAgIGV3a19mcmFtZV9vcGVuZXJfY2xlYXIobWFpbkZyYW1l
KCkpOworfQorCisvLyBTbWFydCBDYWxsYmFja3MKKy8vIC0tLS0tLS0tLS0tLS0tLQorCit2b2lk
IER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbldpbmRvd09iamVjdENsZWFyZWQodm9pZCogdXNlckRh
dGEsIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZvKQoreworICAgIEV3a19XaW5kb3dfT2Jq
ZWN0X0NsZWFyZWRfRXZlbnQqIG9iamVjdENsZWFyZWRJbmZvID0gc3RhdGljX2Nhc3Q8RXdrX1dp
bmRvd19PYmplY3RfQ2xlYXJlZF9FdmVudCo+KGV2ZW50SW5mbyk7CisgICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSAwOworICAgIEFTU0VSVChnTGF5b3V0VGVzdENvbnRyb2xsZXIpOworCisgICAg
R0NDb250cm9sbGVyKiBnY0NvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxHQ0NvbnRyb2xsZXIqPih1
c2VyRGF0YSk7CisgICAgQVNTRVJUKGdjQ29udHJvbGxlcik7CisKKyAgICBnTGF5b3V0VGVzdENv
bnRyb2xsZXItPm1ha2VXaW5kb3dPYmplY3Qob2JqZWN0Q2xlYXJlZEluZm8tPmNvbnRleHQsIG9i
amVjdENsZWFyZWRJbmZvLT53aW5kb3dPYmplY3QsICZleGNlcHRpb24pOworICAgIEFTU0VSVCgh
ZXhjZXB0aW9uKTsKKworICAgIGdjQ29udHJvbGxlci0+bWFrZVdpbmRvd09iamVjdChvYmplY3RD
bGVhcmVkSW5mby0+Y29udGV4dCwgb2JqZWN0Q2xlYXJlZEluZm8tPndpbmRvd09iamVjdCwgJmV4
Y2VwdGlvbik7CisgICAgQVNTRVJUKCFleGNlcHRpb24pOworCisgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IGNvbnRyb2xsZXJOYW1lKEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJl
dmVudFNlbmRlciIpKTsKKyAgICBKU09iamVjdFNldFByb3BlcnR5KG9iamVjdENsZWFyZWRJbmZv
LT5jb250ZXh0LCBvYmplY3RDbGVhcmVkSW5mby0+d2luZG93T2JqZWN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgY29udHJvbGxlck5hbWUuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAg
ICBtYWtlRXZlbnRTZW5kZXIob2JqZWN0Q2xlYXJlZEluZm8tPmNvbnRleHQsIGZhbHNlKSwgLy8g
RklYTUU6IHMvZmFsc2UvIWdldF9wYXJlbnQvLgorICAgICAgICAgICAgICAgICAgICAgICAga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSwgMCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uTG9hZFN0YXJ0ZWQodm9p
ZCosIEV2YXNfT2JqZWN0KiB2aWV3LCB2b2lkKikKK3sKKyAgICAvLyBGSVhNRTogd2UgYWN0dWFs
bHkgbmVlZCB0aGUgZnJhbWUgcmVsYXRlZCB0byB0aGlzIGV2ZW50CisgICAgRXZhc19PYmplY3Qq
IGZyYW1lID0gZXdrX3ZpZXdfZnJhbWVfbWFpbl9nZXQodmlldyk7CisKKyAgICAvLyBNYWtlIHN1
cmUgd2Ugb25seSBzZXQgdGhpcyBvbmNlIHBlciB0ZXN0LiBJZiBpdCBnZXRzIGNsZWFyZWQsIGFu
ZCB0aGVuIHNldCBhZ2Fpbiwgd2UgbWlnaHQKKyAgICAvLyBlbmQgdXAgZG9pbmcgdHdvIGR1bXBz
IGZvciBvbmUgdGVzdC4KKyAgICBpZiAoIXRvcExvYWRpbmdGcmFtZSAmJiAhZG9uZSkKKyAgICAg
ICAgdG9wTG9hZGluZ0ZyYW1lID0gZnJhbWU7Cit9CisKK0VpbmFfQm9vbCBEdW1wUmVuZGVyVHJl
ZUNocm9tZTo6cHJvY2Vzc1dvcmsodm9pZCogZGF0YSkKK3sKKyAgICBFdmFzX09iamVjdCogZnJh
bWUgPSBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGRhdGEpOworCisgICAgaWYgKFdvcmtRdWV1
ZTo6c2hhcmVkKCktPnByb2Nlc3NXb3JrKCkgJiYgIWdMYXlvdXRUZXN0Q29udHJvbGxlci0+d2Fp
dFRvRHVtcCgpKQorICAgICAgICBkdW1wKCk7CisKKyAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tf
Q0FOQ0VMOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbkxvYWRGaW5pc2hlZCh2
b2lkKiwgRXZhc19PYmplY3QqIHZpZXcsIHZvaWQqKQoreworICAgIC8vIEZJWE1FOiB3ZSBhY3R1
YWxseSBuZWVkIHRoZSBmcmFtZSByZWxhdGVkIHRvIHRoaXMgZXZlbnQKKyAgICBFdmFzX09iamVj
dCogZnJhbWUgPSBld2tfdmlld19mcmFtZV9tYWluX2dldCh2aWV3KTsKKworICAgIGlmICh0b3BM
b2FkaW5nRnJhbWUgIT0gZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIHRvcExvYWRpbmdG
cmFtZSA9IDA7CisKKyAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5zZXRGcm96ZW4odHJ1ZSk7Cisg
ICAgaWYgKGdMYXlvdXRUZXN0Q29udHJvbGxlci0+d2FpdFRvRHVtcCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoV29ya1F1ZXVlOjpzaGFyZWQoKS0+Y291bnQoKSkKKyAgICAgICAgZWNv
cmVfaWRsZXJfYWRkKHByb2Nlc3NXb3JrLCBmcmFtZSk7CisgICAgZWxzZQorICAgICAgICBkdW1w
KCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uU3RhdHVzYmFyVGV4dFNldCh2
b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCit7CisgICAgaWYgKCFnTGF5b3V0
VGVzdENvbnRyb2xsZXItPmR1bXBTdGF0dXNDYWxsYmFja3MoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgY29uc3QgY2hhciogc3RhdHVzYmFyVGV4dCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihldmVudEluZm8pOworICAgIHByaW50ZigiVUkgREVMRUdBVEUgU1RBVFVTIENBTExCQUNLOiBz
ZXRTdGF0dXNUZXh0OiVzXG4iLCBzdGF0dXNiYXJUZXh0KTsKK30KKwordm9pZCBEdW1wUmVuZGVy
VHJlZUNocm9tZTo6b25UaXRsZUNoYW5nZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZUNocm9tZTo6
b25Eb2N1bWVudExvYWRGaW5pc2hlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudElu
Zm8pCit7CisgICAgY29uc3QgRXZhc19PYmplY3QqIGZyYW1lID0gc3RhdGljX2Nhc3Q8RXZhc19P
YmplY3QqPihldmVudEluZm8pOworICAgIGNvbnN0IFN0cmluZyBmcmFtZU5hbWUoZXdrX2ZyYW1l
X3N1aXRhYmxlX2RydF9uYW1lX2dldChmcmFtZSkpOworCisgICAgaWYgKCFkb25lICYmIGdMYXlv
dXRUZXN0Q29udHJvbGxlci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQorICAgICAgICBwcmlu
dGYoIiVzIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWVcbiIsIGZyYW1lTmFtZS51dGY4
KCkuZGF0YSgpKTsKKyAgICBlbHNlIGlmICghZG9uZSkgeworICAgICAgICBjb25zdCB1bnNpZ25l
ZCBwZW5kaW5nRnJhbWVVbmxvYWRFdmVudHMgPSBld2tfZnJhbWVfcGVuZGluZ191bmxvYWRfZXZl
bnRfY291bnRfZ2V0KGZyYW1lKTsKKyAgICAgICAgaWYgKHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50
cykKKyAgICAgICAgICAgIHByaW50ZigiJXMgLSBoYXMgJXUgb251bmxvYWQgaGFuZGxlcihzKVxu
IiwgZnJhbWVOYW1lLnV0ZjgoKS5kYXRhKCksIHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50cyk7Cisg
ICAgfQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJU
cmVlQ2hyb21lLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJv
bWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZWE5OTE4MDYyOTE3MmJiZTdjNTkyM2JjYTc1Nzg1N2ZmNDFkMzAy
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJU
cmVlQ2hyb21lLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBQ
cm9GVVNJT04gRW1iZWRkZWQgU3lzdGVtcworICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBJVFMgQ09OVFJJQlVUT1JTCisgKiBgYEFT
IElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSUyBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCisgKiBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQKKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgRHVtcFJlbmRlclRyZWVDaHJvbWVfaAorI2RlZmluZSBEdW1wUmVuZGVyVHJlZUNocm9tZV9o
CisKKyNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNs
dWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitjbGFzcyBEdW1wUmVuZGVyVHJl
ZUNocm9tZSB7CitwdWJsaWM6CisgICAgfkR1bXBSZW5kZXJUcmVlQ2hyb21lKCk7CisKKyAgICBz
dGF0aWMgUGFzc093blB0cjxEdW1wUmVuZGVyVHJlZUNocm9tZT4gY3JlYXRlKEV2YXMqKTsKKwor
ICAgIEV2YXNfT2JqZWN0KiBjcmVhdGVOZXdXaW5kb3coKTsKKyAgICB2b2lkIHJlbW92ZVdpbmRv
dyhFdmFzX09iamVjdCopOworCisgICAgVmVjdG9yPEV2YXNfT2JqZWN0Kj4gZXh0cmFWaWV3cygp
IGNvbnN0OworICAgIEV2YXNfT2JqZWN0KiBtYWluRnJhbWUoKSBjb25zdDsKKyAgICBFdmFzX09i
amVjdCogbWFpblZpZXcoKSBjb25zdDsKKworICAgIHZvaWQgcmVzZXREZWZhdWx0c1RvQ29uc2lz
dGVudFZhbHVlcygpOworCitwcml2YXRlOgorICAgIER1bXBSZW5kZXJUcmVlQ2hyb21lKEV2YXMq
KTsKKworICAgIEV2YXNfT2JqZWN0KiBjcmVhdGVWaWV3KCkgY29uc3Q7CisgICAgYm9vbCBpbml0
aWFsaXplKCk7CisKKyAgICBFdmFzX09iamVjdCogbV9tYWluRnJhbWU7CisgICAgRXZhc19PYmpl
Y3QqIG1fbWFpblZpZXc7CisgICAgRXZhcyogbV9ldmFzOworICAgIE93blB0cjxHQ0NvbnRyb2xs
ZXI+IG1fZ2NDb250cm9sbGVyOworICAgIFZlY3RvcjxFdmFzX09iamVjdCo+IG1fZXh0cmFWaWV3
czsKKworICAgIC8vIFNtYXJ0IGNhbGxiYWNrcworICAgIHN0YXRpYyB2b2lkIG9uV2luZG93T2Jq
ZWN0Q2xlYXJlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQg
b25Mb2FkU3RhcnRlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CisKKyAgICBzdGF0aWMg
RWluYV9Cb29sIHByb2Nlc3NXb3JrKHZvaWQqKTsKKworICAgIHN0YXRpYyB2b2lkIG9uTG9hZEZp
bmlzaGVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKTsKKworICAgIHN0YXRpYyB2b2lkIG9u
U3RhdHVzYmFyVGV4dFNldCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CisKKyAgICBzdGF0
aWMgdm9pZCBvblRpdGxlQ2hhbmdlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CisKKyAg
ICBzdGF0aWMgdm9pZCBvbkRvY3VtZW50TG9hZEZpbmlzaGVkKHZvaWQqLCBFdmFzX09iamVjdCos
IHZvaWQqKTsKK307CisKKyNlbmRpZiAvLyBEdW1wUmVuZGVyVHJlZUNocm9tZV9oCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcAppbmRleCA1ZmNiNTJiNzg1MjA1MTM5ZGRi
Y2I1YjBjMzIyNWM2ZTA5ZjYzNWFjLi4wNTdjZmUwNDZhYmY1MDdhYjUxOGU5OWFmMjJmNWNjMmY4
MGM3YTA0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAKQEAgLTE1
Miw3ICsxNTIsNyBAQCBzdGF0aWMgYm9vbCBzZW5kTW91c2VFdmVudChFdmFzKiBldmFzLCBFdmFz
TW91c2VFdmVudCBldmVudCwgaW50IGJ1dHRvbk51bWJlciwgRQogCiBzdGF0aWMgRWluYV9Cb29s
IHNlbmRDbGljayh2b2lkKikKIHsKLSAgICByZXR1cm4gISFzZW5kTW91c2VFdmVudChldmFzX29i
amVjdF9ldmFzX2dldChtYWluRnJhbWUpLCBFdmFzTW91c2VFdmVudENsaWNrLCBFdmFzTW91c2VC
dXR0b25MZWZ0LCBFdmFzS2V5TW9kaWZpZXJOb25lKTsKKyAgICByZXR1cm4gISFzZW5kTW91c2VF
dmVudChldmFzX29iamVjdF9ldmFzX2dldChicm93c2VyLT5tYWluRnJhbWUoKSksIEV2YXNNb3Vz
ZUV2ZW50Q2xpY2ssIEV2YXNNb3VzZUJ1dHRvbkxlZnQsIEV2YXNLZXlNb2RpZmllck5vbmUpOwog
fQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBzY2hlZHVsZUFzeW5jaHJvbm91c0NsaWNrQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtMjIzLDcgKzIyMyw3IEBAIHN0YXRpYyBK
U1ZhbHVlUmVmIG1vdXNlRG93bkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvbiwKICAgICB1cGRhdGVDbGlja0NvdW50KGJ1dHRvbik7CiAKICAgICBFdmFz
S2V5TW9kaWZpZXIgbW9kaWZpZXJzID0gYXJndW1lbnRDb3VudCA+PSAyID8gbW9kaWZpZXJzRnJv
bUpTVmFsdWUoY29udGV4dCwgYXJndW1lbnRzWzFdKSA6IEV2YXNLZXlNb2RpZmllck5vbmU7Ci0g
ICAgaWYgKCFzZW5kTW91c2VFdmVudChldmFzX29iamVjdF9ldmFzX2dldChtYWluRnJhbWUpLCBF
dmFzTW91c2VFdmVudERvd24sIGJ1dHRvbiwgbW9kaWZpZXJzKSkKKyAgICBpZiAoIXNlbmRNb3Vz
ZUV2ZW50KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSwgRXZhc01v
dXNlRXZlbnREb3duLCBidXR0b24sIG1vZGlmaWVycykpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAogICAgIGdCdXR0b25DdXJyZW50bHlEb3duID0gYnV0
dG9uOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlVXBDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTCiAgICAgZ0J1
dHRvbkN1cnJlbnRseURvd24gPSAwOwogCiAgICAgRXZhc0tleU1vZGlmaWVyIG1vZGlmaWVycyA9
IGFyZ3VtZW50Q291bnQgPj0gMiA/IG1vZGlmaWVyc0Zyb21KU1ZhbHVlKGNvbnRleHQsIGFyZ3Vt
ZW50c1sxXSkgOiBFdmFzS2V5TW9kaWZpZXJOb25lOwotICAgIHNlbmRNb3VzZUV2ZW50KGV2YXNf
b2JqZWN0X2V2YXNfZ2V0KG1haW5GcmFtZSksIEV2YXNNb3VzZUV2ZW50VXAsIHRyYW5zbGF0ZU1v
dXNlQnV0dG9uTnVtYmVyKGJ1dHRvbiksIG1vZGlmaWVycyk7CisgICAgc2VuZE1vdXNlRXZlbnQo
ZXZhc19vYmplY3RfZXZhc19nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpLCBFdmFzTW91c2VFdmVu
dFVwLCB0cmFuc2xhdGVNb3VzZUJ1dHRvbk51bWJlcihidXR0b24pLCBtb2RpZmllcnMpOwogICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIApAQCAtMjYyLDcgKzI2
Miw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlTW92ZVRvQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uCiAgICAgaWYgKGV4Y2VwdGlvbiAmJiAqZXhj
ZXB0aW9uKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAK
LSAgICBzZW5kTW91c2VFdmVudChldmFzX29iamVjdF9ldmFzX2dldChtYWluRnJhbWUpLCBFdmFz
TW91c2VFdmVudE1vdmUsIEV2YXNNb3VzZUJ1dHRvbk5vbmUsIEV2YXNLZXlNb2RpZmllck5vbmUp
OworICAgIHNlbmRNb3VzZUV2ZW50KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGJyb3dzZXItPm1haW5G
cmFtZSgpKSwgRXZhc01vdXNlRXZlbnRNb3ZlLCBFdmFzTW91c2VCdXR0b25Ob25lLCBFdmFzS2V5
TW9kaWZpZXJOb25lKTsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CiB9CiAKQEAgLTI5NSw3ICsyOTUsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZVNjcm9sbEJ5
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aQogICAgIGlm
IChleGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwogCi0gICAgc2VuZE1vdXNlRXZlbnQoZXZhc19vYmplY3RfZXZhc19n
ZXQobWFpbkZyYW1lKSwgZXZhc01vdXNlRXZlbnRGcm9tSG9yaXpvbnRhbEFuZFZlcnRpY2FsT2Zm
c2V0cyhob3Jpem9udGFsLCB2ZXJ0aWNhbCksIEV2YXNNb3VzZUJ1dHRvbk5vbmUsIEV2YXNLZXlN
b2RpZmllck5vbmUpOworICAgIHNlbmRNb3VzZUV2ZW50KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGJy
b3dzZXItPm1haW5GcmFtZSgpKSwgZXZhc01vdXNlRXZlbnRGcm9tSG9yaXpvbnRhbEFuZFZlcnRp
Y2FsT2Zmc2V0cyhob3Jpem9udGFsLCB2ZXJ0aWNhbCksIEV2YXNNb3VzZUJ1dHRvbk5vbmUsIEV2
YXNLZXlNb2RpZmllck5vbmUpOwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKIH0KIApAQCAtNDAwLDcgKzQwMCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBrZXlOYW1l
RnJvbUpTVmFsdWUoSlNTdHJpbmdSZWYgY2hhcmFjdGVyKQogCiBzdGF0aWMgSlNWYWx1ZVJlZiBr
ZXlEb3duQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIEV2YXNf
T2JqZWN0KiB2aWV3ID0gZXdrX2ZyYW1lX3ZpZXdfZ2V0KG1haW5GcmFtZSk7CisgICAgRXZhc19P
YmplY3QqIHZpZXcgPSBld2tfZnJhbWVfdmlld19nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpOwog
ICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOwogCkBAIC00MzUsNyArNDM1LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2NhbGVQYWdlQnlD
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24KICAgICBp
ZiAoYXJndW1lbnRDb3VudCA8IDMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKIAotICAgIEV2YXNfT2JqZWN0KiB2aWV3ID0gZXdrX2ZyYW1lX3ZpZXdfZ2V0
KG1haW5GcmFtZSk7CisgICAgRXZhc19PYmplY3QqIHZpZXcgPSBld2tfZnJhbWVfdmlld19nZXQo
YnJvd3Nlci0+bWFpbkZyYW1lKCkpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAppbmRleCBkYTZmZmI3M2IwNDc3
NmZlYmVjYmExYjU3M2UyM2E4YWVjOWFkMDM3Li5iYjVmNDllOTEyNDIwNDExZjM0OGFhZTg5NjEx
MmFhOGExYzA0OWM1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0
VGVzdENvbnRyb2xsZXJFZmwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlv
dXRUZXN0Q29udHJvbGxlckVmbC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6ZGlzcGxheSgpCiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQp
CiB7Ci0gICAgT3duRmFzdE1hbGxvY1B0cjxjaGFyPiBjb3VudGVyVmFsdWUoZXdrX2ZyYW1lX2Nv
dW50ZXJfdmFsdWVfYnlfZWxlbWVudF9pZF9nZXQobWFpbkZyYW1lLCBpZC0+dXN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpKTsKKyAgICBPd25GYXN0TWFsbG9jUHRyPGNoYXI+IGNvdW50ZXJWYWx1ZShl
d2tfZnJhbWVfY291bnRlcl92YWx1ZV9ieV9lbGVtZW50X2lkX2dldChicm93c2VyLT5tYWluRnJh
bWUoKSwgaWQtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgcmV0dXJuIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPihBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoY291
bnRlclZhbHVlLmdldCgpKSk7CiB9CiAKQEAgLTExOCwxMiArMTE4LDEyIEBAIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bGF5ZXJUcmVlQXNUZXh0KCkgY29u
c3QKIAogaW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQo
SlNTdHJpbmdSZWYgaWQsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKIHsKLSAg
ICByZXR1cm4gZXdrX2ZyYW1lX3BhZ2VfbnVtYmVyX2J5X2VsZW1lbnRfaWRfZ2V0KG1haW5GcmFt
ZSwgaWQtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpOwor
ICAgIHJldHVybiBld2tfZnJhbWVfcGFnZV9udW1iZXJfYnlfZWxlbWVudF9pZF9nZXQoYnJvd3Nl
ci0+bWFpbkZyYW1lKCksIGlkLT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcGFnZVdpZHRoLCBw
YWdlSGVpZ2h0KTsKIH0KIAogaW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2Vz
KGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKIHsKLSAgICByZXR1cm4gZXdrX2Zy
YW1lX3BhZ2VfbnVtYmVyX2dldChtYWluRnJhbWUsIHBhZ2VXaWR0aCwgcGFnZUhlaWdodCk7Cisg
ICAgcmV0dXJuIGV3a19mcmFtZV9wYWdlX251bWJlcl9nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCks
IHBhZ2VXaWR0aCwgcGFnZUhlaWdodCk7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5KGNvbnN0IGNoYXIqLCBpbnQpIGNvbnN0
CkBAIC0xNDYsNyArMTQ2LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RD
b250cm9sbGVyOjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQsIGkKIAogc2l6ZV90IExh
eW91dFRlc3RDb250cm9sbGVyOjp3ZWJIaXN0b3J5SXRlbUNvdW50KCkKIHsKLSAgICBjb25zdCBF
d2tfSGlzdG9yeSogaGlzdG9yeSA9IGV3a192aWV3X2hpc3RvcnlfZ2V0KGJyb3dzZXIpOworICAg
IGNvbnN0IEV3a19IaXN0b3J5KiBoaXN0b3J5ID0gZXdrX3ZpZXdfaGlzdG9yeV9nZXQoYnJvd3Nl
ci0+bWFpblZpZXcoKSk7CiAgICAgaWYgKCFoaXN0b3J5KQogICAgICAgICByZXR1cm4gLTE7CiAK
QEAgLTE3NCw3ICsxNzQsNyBAQCBKU1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF0
aFRvTG9jYWxSZXNvdXJjZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTdAogCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpxdWV1ZUxvYWQoSlNTdHJpbmdSZWYgdXJsLCBKU1N0cmluZ1JlZiB0
YXJnZXQpCiB7Ci0gICAgU3RyaW5nIGFic29sdXRlVXJsID0gU3RyaW5nOjpmcm9tVVRGOChld2tf
ZnJhbWVfdXJpX2dldChtYWluRnJhbWUpKTsKKyAgICBTdHJpbmcgYWJzb2x1dGVVcmwgPSBTdHJp
bmc6OmZyb21VVEY4KGV3a19mcmFtZV91cmlfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSk7CiAg
ICAgYWJzb2x1dGVVcmwuYXBwZW5kKHVybC0+Y2hhcmFjdGVycygpLCB1cmwtPmxlbmd0aCgpKTsK
IAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBqc0Fic29sdXRlVVJMKApAQCAtMTg1LDcg
KzE4NSw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnF1ZXVlTG9hZChKU1N0cmluZ1Jl
ZiB1cmwsIEpTU3RyaW5nUmVmIHRhcmdldCkKIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0QWNjZXB0c0VkaXRpbmcoYm9vbCBhY2NlcHRzRWRpdGluZykKIHsKLSAgICBld2tfdmlld19l
ZGl0YWJsZV9zZXQoYnJvd3NlciwgYWNjZXB0c0VkaXRpbmcpOworICAgIGV3a192aWV3X2VkaXRh
YmxlX3NldChicm93c2VyLT5tYWluVmlldygpLCBhY2NlcHRzRWRpdGluZyk7CiB9CiAKIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsd2F5c0FjY2VwdENvb2tpZXMoYm9vbCBhbHdheXNB
Y2NlcHRDb29raWVzKQpAQCAtMjQwLDcgKzI0MCw3IEBAIHN0YXRpYyBib29sIGdVc2VyU3R5bGVT
aGVldEVuYWJsZWQgPSB0cnVlOwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VXNlclN0
eWxlU2hlZXRFbmFibGVkKGJvb2wgZmxhZykKIHsKICAgICBnVXNlclN0eWxlU2hlZXRFbmFibGVk
ID0gZmxhZzsKLSAgICBld2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQoYnJvd3Nl
ciwgZmxhZyA/IGdVc2VyU3R5bGVTaGVldC5kYXRhKCkgOiAwKTsKKyAgICBld2tfdmlld19zZXR0
aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQoYnJvd3Nlci0+bWFpblZpZXcoKSwgZmxhZyA/IGdVc2Vy
U3R5bGVTaGVldC5kYXRhKCkgOiAwKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKQpAQCAtMjk0LDcgKzI5
NCw3IEBAIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2luZG93Q291bnQoKQogCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgZmxhZykK
IHsKLSAgICBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0KGJyb3dzZXIsIGZs
YWcpOworICAgIGV3a192aWV3X3NldHRpbmdfcHJpdmF0ZV9icm93c2luZ19zZXQoYnJvd3Nlci0+
bWFpblZpZXcoKSwgZmxhZyk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEph
dmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoYm9vbCkKQEAgLTMwOSwxMiArMzA5LDEyIEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wpCiAKIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoYm9vbCBm
bGFnKQogewotICAgIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmdfc2V0
KGJyb3dzZXIsIGZsYWcpOworICAgIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX2ZyYW1lX2ZsYXR0
ZW5pbmdfc2V0KGJyb3dzZXItPm1haW5WaWV3KCksIGZsYWcpOwogfQogCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoYm9vbCBmbGFnKQogewot
ICAgIGV3a192aWV3X3NldHRpbmdfc3BhdGlhbF9uYXZpZ2F0aW9uX3NldChicm93c2VyLCBmbGFn
KTsKKyAgICBld2tfdmlld19zZXR0aW5nX3NwYXRpYWxfbmF2aWdhdGlvbl9zZXQoYnJvd3Nlci0+
bWFpblZpZXcoKSwgZmxhZyk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpCkBAIC00MjksNyArNDI5LDcgQEAg
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoYm9vbCkK
IAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBmbGFn
KQogewotICAgIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdpbnNfc2V0KGJyb3dzZXIsIGZs
YWcpOworICAgIGV3a192aWV3X3NldHRpbmdfZW5hYmxlX3BsdWdpbnNfc2V0KGJyb3dzZXItPm1h
aW5WaWV3KCksIGZsYWcpOwogfQogCiBib29sIExheW91dFRlc3RDb250cm9sbGVyOjplbGVtZW50
RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQoSlNTdHJpbmdSZWYpCkBAIC00NjksNyAr
NDY5LDcgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZmluZFN0cmluZyhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgdGFyZ2V0LAogICAgICAgICAgICAgd3JhcCA9IHRydWU7
CiAgICAgfQogCi0gICAgcmV0dXJuICEhZXdrX3ZpZXdfdGV4dF9zZWFyY2goYnJvd3NlciwgdGFy
Z2V0LT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgY2FzZVNlbnNpdGl2ZSwgZm9yd2FyZCwgd3Jh
cCk7CisgICAgcmV0dXJuICEhZXdrX3ZpZXdfdGV4dF9zZWFyY2goYnJvd3Nlci0+bWFpblZpZXco
KSwgdGFyZ2V0LT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgY2FzZVNlbnNpdGl2ZSwgZm9yd2Fy
ZCwgd3JhcCk7CiB9CiAKIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmlzQ29tbWFuZEVuYWJs
ZWQoSlNTdHJpbmdSZWYgbmFtZSkKQEAgLTU5MCwzMiArNTkwLDMyIEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEFwcENhY2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHNp
emUpCiAKIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1lT25F
bGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lLCBKU1N0
cmluZ1JlZiBlbGVtZW50SWQpCiB7Ci0gICAgcmV0dXJuIGV3a19mcmFtZV9hbmltYXRpb25fcGF1
c2UobWFpbkZyYW1lLCBhbmltYXRpb25OYW1lLT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZWxl
bWVudElkLT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGltZSk7CisgICAgcmV0dXJuIGV3a19m
cmFtZV9hbmltYXRpb25fcGF1c2UoYnJvd3Nlci0+bWFpbkZyYW1lKCksIGFuaW1hdGlvbk5hbWUt
PnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBlbGVtZW50SWQtPnVzdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCB0aW1lKTsKIH0KIAogYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0
aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgZG91Ymxl
IHRpbWUsIEpTU3RyaW5nUmVmIGVsZW1lbnRJZCkKIHsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX3Ry
YW5zaXRpb25fcGF1c2UobWFpbkZyYW1lLCBwcm9wZXJ0eU5hbWUtPnVzdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCBlbGVtZW50SWQtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aW1lKTsKKyAgICBy
ZXR1cm4gZXdrX2ZyYW1lX3RyYW5zaXRpb25fcGF1c2UoYnJvd3Nlci0+bWFpbkZyYW1lKCksIHBy
b3BlcnR5TmFtZS0+dXN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGVsZW1lbnRJZC0+dXN0cmluZygp
LnV0ZjgoKS5kYXRhKCksIHRpbWUpOwogfQogCiBib29sIExheW91dFRlc3RDb250cm9sbGVyOjpz
YW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKEpTU3RyaW5nUmVmIGFuaW1hdGlvbklk
LCBkb3VibGUgdGltZSwgSlNTdHJpbmdSZWYgZWxlbWVudElkKQogewotICAgIHJldHVybiBld2tf
ZnJhbWVfc3ZnX2FuaW1hdGlvbl9wYXVzZShtYWluRnJhbWUsIGFuaW1hdGlvbklkLT51c3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgZWxlbWVudElkLT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGlt
ZSk7CisgICAgcmV0dXJuIGV3a19mcmFtZV9zdmdfYW5pbWF0aW9uX3BhdXNlKGJyb3dzZXItPm1h
aW5GcmFtZSgpLCBhbmltYXRpb25JZC0+dXN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGVsZW1lbnRJ
ZC0+dXN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRpbWUpOwogfQogCiB1bnNpZ25lZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gZXdrX2ZyYW1lX2FuaW1hdGlvbl9hY3RpdmVfbnVtYmVyX2dldChtYWluRnJhbWUpOwor
ICAgIHJldHVybiBld2tfZnJhbWVfYW5pbWF0aW9uX2FjdGl2ZV9udW1iZXJfZ2V0KGJyb3dzZXIt
Pm1haW5GcmFtZSgpKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3VzcGVuZEFu
aW1hdGlvbnMoKSBjb25zdAogewotICAgIGV3a19mcmFtZV9hbmltYXRpb25fc3VzcGVuZChtYWlu
RnJhbWUpOworICAgIGV3a19mcmFtZV9hbmltYXRpb25fc3VzcGVuZChicm93c2VyLT5tYWluRnJh
bWUoKSk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMo
KSBjb25zdAogewotICAgIGV3a19mcmFtZV9hbmltYXRpb25fcmVzdW1lKG1haW5GcmFtZSk7Cisg
ICAgZXdrX2ZyYW1lX2FuaW1hdGlvbl9yZXN1bWUoYnJvd3Nlci0+bWFpbkZyYW1lKCkpOwogfQog
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdS
ZWYsIEpTU3RyaW5nUmVmKQpAQCAtNjM2LDcgKzYzNiw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0KEpTU3RyaW5nUmVmLCBib29sKQogCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGJvb2wgZW5hYmxlZCkK
IHsKLSAgICBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0cmFzX3NldChicm93
c2VyLCBlbmFibGVkKTsKKyAgICBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9kZXZlbG9wZXJfZXh0
cmFzX3NldChicm93c2VyLT5tYWluVmlldygpLCBlbmFibGVkKTsKIH0KIAogdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkK
QEAgLTY4Nyw3ICs2ODcsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphcGlUZXN0R29U
b0N1cnJlbnRCYWNrRm9yd2FyZEl0ZW0oKQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRXZWJWaWV3RWRpdGFibGUoYm9vbCkKIHsKLSAgICBld2tfZnJhbWVfZWRpdGFibGVfc2V0KG1h
aW5GcmFtZSwgRUlOQV9UUlVFKTsKKyAgICBld2tfZnJhbWVfZWRpdGFibGVfc2V0KGJyb3dzZXIt
Pm1haW5GcmFtZSgpLCBFSU5BX1RSVUUpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
TGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlclRleHRGb3JMaXN0SXRlbShKU0NvbnRleHRSZWYs
IEpTVmFsdWVSZWYpIGNvbnN0CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwv
UGl4ZWxEdW1wU3VwcG9ydEVmbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvUGl4ZWxE
dW1wU3VwcG9ydEVmbC5jcHAKaW5kZXggZjIwOTNjNmEyYjIwOWNmMDliYzllMGE4MzM2YTJlZjM4
MzI1YmM4My4uMzBlNjE3MDgwZGFlZDg5NDhkYTNhZWIyOWU5ZWEzNDFjYWU3MjA2NCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1BpeGVsRHVtcFN1cHBvcnRFZmwuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9QaXhlbER1bXBTdXBwb3J0RWZsLmNwcApAQCAt
MzIsMTQgKzMyLDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJEdW1wUmVu
ZGVyVHJlZS5oIgorI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlQ2hyb21lLmgiCiAjaW5jbHVkZSAi
UGl4ZWxEdW1wU3VwcG9ydENhaXJvLmgiCiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKICNpbmNs
dWRlICJld2tfcHJpdmF0ZS5oIgogCiBQYXNzUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJp
dG1hcENvbnRleHRGcm9tV2ViVmlldyhib29sLCBib29sLCBib29sLCBib29sIGRyYXdTZWxlY3Rp
b25SZWN0KQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRpY19j
YXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChicm93
c2VyKSk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGljX2Nhc3Q8
RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KGJyb3dzZXIt
Pm1haW5WaWV3KCkpKTsKICAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXZhdGVEYXRhID0g
c3RhdGljX2Nhc3Q8RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKj4oc21hcnREYXRhLT5fcHJpdik7Cisg
ICAgY29uc3QgRXZhc19PYmplY3QqIG1haW5GcmFtZSA9IGJyb3dzZXItPm1haW5GcmFtZSgpOwog
CiAgICAgaW50IHgsIHksIHdpZHRoLCBoZWlnaHQ7CiAgICAgaWYgKCFld2tfZnJhbWVfdmlzaWJs
ZV9jb250ZW50X2dlb21ldHJ5X2dldChtYWluRnJhbWUsIEVJTkFfVFJVRSwgJngsICZ5LCAmd2lk
dGgsICZoZWlnaHQpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1dvcmtR
dWV1ZUl0ZW1FZmwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1dvcmtRdWV1ZUl0ZW1F
ZmwuY3BwCmluZGV4IGU3YTA5NmQ2YjIzYTg4NDYyOGJiNzZlNGI3ZGRiODRiM2IwYjkzMWMuLjM1
NmE2NTUzYzlhN2I4ZTEwZDc5YmFhNjU2NzA5OWJkMWRjZGNkODMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2VmbC9Xb3JrUXVldWVJdGVtRWZsLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvV29ya1F1ZXVlSXRlbUVmbC5jcHAKQEAgLTM2LDkgKzM2LDkgQEAgYm9v
bCBMb2FkSXRlbTo6aW52b2tlKCkgY29uc3QKICAgICBFdmFzX09iamVjdCogdGFyZ2V0RnJhbWU7
CiAKICAgICBpZiAoIW1fdGFyZ2V0LT5sZW5ndGgoKSkKLSAgICAgICAgdGFyZ2V0RnJhbWUgPSBt
YWluRnJhbWU7CisgICAgICAgIHRhcmdldEZyYW1lID0gYnJvd3Nlci0+bWFpbkZyYW1lKCk7CiAg
ICAgZWxzZQotICAgICAgICB0YXJnZXRGcmFtZSA9IGV3a19mcmFtZV9jaGlsZF9maW5kKG1haW5G
cmFtZSwgbV90YXJnZXQtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgdGFyZ2V0
RnJhbWUgPSBld2tfZnJhbWVfY2hpbGRfZmluZChicm93c2VyLT5tYWluRnJhbWUoKSwgbV90YXJn
ZXQtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGV3a19mcmFtZV91cmlfc2V0KHRh
cmdldEZyYW1lLCBtX3VybC0+dXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC00OCwyMiAr
NDgsMjIgQEAgYm9vbCBMb2FkSXRlbTo6aW52b2tlKCkgY29uc3QKIGJvb2wgTG9hZEhUTUxTdHJp
bmdJdGVtOjppbnZva2UoKSBjb25zdAogewogICAgIGlmICghbV91bnJlYWNoYWJsZVVSTC0+bGVu
Z3RoKCkpCi0gICAgICAgIGV3a19mcmFtZV9jb250ZW50c19zZXQobWFpbkZyYW1lLCBtX2NvbnRl
bnQtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAwLCAwLCAwLCBtX2Jhc2VVUkwtPnVzdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3NldChicm93c2Vy
LT5tYWluRnJhbWUoKSwgbV9jb250ZW50LT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgMCwgMCwg
MCwgbV9iYXNlVVJMLT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgZWxzZQotICAgICAg
ICBld2tfZnJhbWVfY29udGVudHNfYWx0ZXJuYXRlX3NldChtYWluRnJhbWUsIG1fY29udGVudC0+
dXN0cmluZygpLnV0ZjgoKS5kYXRhKCksIDAsIDAsIDAsIG1fYmFzZVVSTC0+dXN0cmluZygpLnV0
ZjgoKS5kYXRhKCksIG1fdW5yZWFjaGFibGVVUkwtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX2FsdGVybmF0ZV9zZXQoYnJvd3Nlci0+bWFpbkZy
YW1lKCksIG1fY29udGVudC0+dXN0cmluZygpLnV0ZjgoKS5kYXRhKCksIDAsIDAsIDAsIG1fYmFz
ZVVSTC0+dXN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fdW5yZWFjaGFibGVVUkwtPnVzdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFJlbG9hZEl0
ZW06Omludm9rZSgpIGNvbnN0CiB7Ci0gICAgZXdrX3ZpZXdfcmVsb2FkKGJyb3dzZXIpOworICAg
IGV3a192aWV3X3JlbG9hZChicm93c2VyLT5tYWluVmlldygpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogYm9vbCBTY3JpcHRJdGVtOjppbnZva2UoKSBjb25zdAogewotICAgIHJldHVybiBld2tf
ZnJhbWVfc2NyaXB0X2V4ZWN1dGUobWFpbkZyYW1lLCBtX3NjcmlwdC0+dXN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIHJldHVybiBld2tfZnJhbWVfc2NyaXB0X2V4ZWN1dGUoYnJvd3Nlci0+
bWFpbkZyYW1lKCksIG1fc2NyaXB0LT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIGJv
b2wgQmFja0ZvcndhcmRJdGVtOjppbnZva2UoKSBjb25zdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>