<?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>220711</bug_id>
          
          <creation_ts>2021-01-18 08:57:39 -0800</creation_ts>
          <short_desc>Optimize :hover/:active style invalidation for deep trees and descendant selectors</short_desc>
          <delta_ts>2022-01-22 00:20:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>04-punch-pinyons</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1720354</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-01-18 08:57:39 -0800</bug_when>
    <thetext>Hover and active states are flipped for the entire ancestor chain. We compute invalidation for each element separately. If the selectors are of form &apos;:active .descendant&apos; then each of these invalidations need to traverse the whole subtree leading to O(n^2) behavior.

We really only need to traverse the descendants once, starting from the element closest to the root that changes state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720358</commentid>
    <comment_count>1</comment_count>
      <attachid>417836</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-01-18 09:05:56 -0800</bug_when>
    <thetext>Created attachment 417836
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720367</commentid>
    <comment_count>2</comment_count>
      <attachid>417839</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-01-18 09:51:27 -0800</bug_when>
    <thetext>Created attachment 417839
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720368</commentid>
    <comment_count>3</comment_count>
      <attachid>417840</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-01-18 10:02:14 -0800</bug_when>
    <thetext>Created attachment 417840
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720379</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-01-18 12:12:25 -0800</bug_when>
    <thetext>rdar://72138961</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720388</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-18 12:26:29 -0800</bug_when>
    <thetext>Committed r271584: &lt;https://trac.webkit.org/changeset/271584&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417840.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720389</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-18 12:27:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/73328176&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721593</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-01-22 08:52:51 -0800</bug_when>
    <thetext>I suspect this caused bug 220862.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417836</attachid>
            <date>2021-01-18 09:05:56 -0800</date>
            <delta_ts>2021-01-18 09:51:27 -0800</delta_ts>
            <desc>patch</desc>
            <filename>optimize-active-hover-descendant-invalidation.patch</filename>
            <type>text/plain</type>
            <size>14811</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQxZTdjMTE3MzFmZS4uYzgxNmEzOWFlMzQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcxMzEsOSArNzEzMSwxMSBAQCB2b2lkIERvY3Vt
ZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBFbGVtZW50KiBpbgogICAgIEVsZW1lbnQqIG9sZEFjdGl2ZUVsZW1lbnQgPSBtX2FjdGl2ZUVs
ZW1lbnQuZ2V0KCk7CiAgICAgaWYgKG9sZEFjdGl2ZUVsZW1lbnQgJiYgIXJlcXVlc3QuYWN0aXZl
KCkpIHsKICAgICAgICAgLy8gV2UgYXJlIGNsZWFyaW5nIHRoZSA6YWN0aXZlIGNoYWluIGJlY2F1
c2UgdGhlIG1vdXNlIGhhcyBiZWVuIHJlbGVhc2VkLgotICAgICAgICBmb3IgKEVsZW1lbnQqIGN1
cnJlbnRFbGVtZW50ID0gb2xkQWN0aXZlRWxlbWVudDsgY3VycmVudEVsZW1lbnQ7IGN1cnJlbnRF
bGVtZW50ID0gY3VycmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnRJbkNvbXBvc2VkVHJlZSgpKSB7
Ci0gICAgICAgICAgICBjdXJyZW50RWxlbWVudC0+c2V0QWN0aXZlKGZhbHNlKTsKKyAgICAgICAg
Zm9yIChFbGVtZW50KiBjdXJyZW50RWxlbWVudCA9IG9sZEFjdGl2ZUVsZW1lbnQ7IGN1cnJlbnRF
bGVtZW50OykgeworICAgICAgICAgICAgYXV0byogcGFyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVt
ZW50LT5wYXJlbnRFbGVtZW50SW5Db21wb3NlZFRyZWUoKTsKKyAgICAgICAgICAgIGN1cnJlbnRF
bGVtZW50LT5zZXRBY3RpdmUoZmFsc2UsIGZhbHNlLCBwYXJlbnRFbGVtZW50ID8gRWxlbWVudDo6
SXNBY3RpdmVTdGF0ZUNoYW5nZVJvb3Q6Ok5vIDogRWxlbWVudDo6SXNBY3RpdmVTdGF0ZUNoYW5n
ZVJvb3Q6Olllcyk7CiAgICAgICAgICAgICBtX3VzZXJBY3Rpb25FbGVtZW50cy5zZXRJbkFjdGl2
ZUNoYWluKCpjdXJyZW50RWxlbWVudCwgZmFsc2UpOworICAgICAgICAgICAgY3VycmVudEVsZW1l
bnQgPSBwYXJlbnRFbGVtZW50OwogICAgICAgICB9CiAgICAgICAgIG1fYWN0aXZlRWxlbWVudCA9
IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKQEAgLTcxNzcsMTUgKzcxNzksMTcgQEAgdm9pZCBEb2N1
bWVudDo6dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVz
dCwgRWxlbWVudCogaW4KIAogICAgIGF1dG8qIGNvbW1vbkFuY2VzdG9yID0gZmluZE5lYXJlc3RD
b21tb25Db21wb3NlZEFuY2VzdG9yKG9sZEhvdmVyZWRFbGVtZW50LmdldCgpLCBuZXdIb3ZlcmVk
RWxlbWVudCk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+LCAzMj4gZWxlbWVudHNUb1Jl
bW92ZUZyb21DaGFpbjsKLSAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+LCAzMj4gZWxlbWVudHNU
b0FkZFRvQ2hhaW47CisgICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50PiwgMzI+IGVsZW1lbnRzVG9D
bGVhckhvdmVyU3RhdGU7CisgICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50PiwgMzI+IGVsZW1lbnRz
VG9TZXRBY3RpdmVTdGF0ZTsKKyAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+LCAzMj4gZWxlbWVu
dHNUb1NldEhvdmVyU3RhdGU7CiAKICAgICBpZiAob2xkSG92ZXJlZEVsZW1lbnQgIT0gbmV3SG92
ZXJlZEVsZW1lbnQpIHsKICAgICAgICAgZm9yIChhdXRvKiBlbGVtZW50ID0gb2xkSG92ZXJlZEVs
ZW1lbnQuZ2V0KCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50SW5D
b21wb3NlZFRyZWUoKSkgewogICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gY29tbW9uQW5jZXN0
b3IpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoIW11c3RCZUluQWN0
aXZlQ2hhaW4gfHwgZWxlbWVudC0+aXNJbkFjdGl2ZUNoYWluKCkpCi0gICAgICAgICAgICAgICAg
ZWxlbWVudHNUb1JlbW92ZUZyb21DaGFpbi5hcHBlbmQoZWxlbWVudCk7CisgICAgICAgICAgICBp
ZiAobXVzdEJlSW5BY3RpdmVDaGFpbiAmJiAhZWxlbWVudC0+aXNJbkFjdGl2ZUNoYWluKCkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBlbGVtZW50c1RvQ2xlYXJIb3Zl
clN0YXRlLmFwcGVuZChlbGVtZW50KTsKICAgICAgICAgfQogICAgICAgICAvLyBVbnNldCBob3Zl
cmVkIG5vZGVzIGluIHN1YiBmcmFtZSBkb2N1bWVudHMgaWYgdGhlIG9sZCBob3ZlcmVkIG5vZGUg
d2FzIGEgZnJhbWUgb3duZXIuCiAgICAgICAgIGlmIChpczxIVE1MRnJhbWVPd25lckVsZW1lbnQ+
KG9sZEhvdmVyZWRFbGVtZW50KSkgewpAQCAtNzE5NCwyNSArNzE5OCwyNCBAQCB2b2lkIERvY3Vt
ZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBFbGVtZW50KiBpbgogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChhdXRvKiBlbGVtZW50
ID0gbmV3SG92ZXJlZEVsZW1lbnQ7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRF
bGVtZW50SW5Db21wb3NlZFRyZWUoKSkgewotICAgICAgICBpZiAoIW11c3RCZUluQWN0aXZlQ2hh
aW4gfHwgZWxlbWVudC0+aXNJbkFjdGl2ZUNoYWluKCkpCi0gICAgICAgICAgICBlbGVtZW50c1Rv
QWRkVG9DaGFpbi5hcHBlbmQoZWxlbWVudCk7Ci0gICAgfQotCi0gICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogZWxlbWVudHNUb1JlbW92ZUZyb21DaGFpbikKLSAgICAgICAgZWxlbWVudC0+c2V0SG92
ZXJlZChmYWxzZSk7Ci0KICAgICBib29sIHNhd0NvbW1vbkFuY2VzdG9yID0gZmFsc2U7Ci0gICAg
Zm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudHNUb0FkZFRvQ2hhaW4pIHsKKyAgICBmb3IgKGF1
dG8qIGVsZW1lbnQgPSBuZXdIb3ZlcmVkRWxlbWVudDsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1l
bnQtPnBhcmVudEVsZW1lbnRJbkNvbXBvc2VkVHJlZSgpKSB7CisgICAgICAgIGlmIChtdXN0QmVJ
bkFjdGl2ZUNoYWluICYmICFlbGVtZW50LT5pc0luQWN0aXZlQ2hhaW4oKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBpZiAoYWxsb3dBY3RpdmVDaGFuZ2VzKQotICAgICAgICAgICAg
ZWxlbWVudC0+c2V0QWN0aXZlKHRydWUpOworICAgICAgICAgICAgZWxlbWVudHNUb1NldEFjdGl2
ZVN0YXRlLmFwcGVuZChlbGVtZW50KTsKICAgICAgICAgaWYgKGVsZW1lbnQgPT0gY29tbW9uQW5j
ZXN0b3IpCiAgICAgICAgICAgICBzYXdDb21tb25BbmNlc3RvciA9IHRydWU7Ci0gICAgICAgIGlm
ICghc2F3Q29tbW9uQW5jZXN0b3IpIHsKLSAgICAgICAgICAgIC8vIEVsZW1lbnRzIGFmdGVyIHRo
ZSBjb21tb24gaG92ZXIgYW5jZXN0b3IgZG9lcyBub3QgY2hhbmdlIGhvdmVyIHN0YXRlLCBidXQg
YXJlIGl0ZXJhdGVkIG92ZXIgYmVjYXVzZSB0aGV5IG1heSBjaGFuZ2UgYWN0aXZlIHN0YXRlLgot
ICAgICAgICAgICAgZWxlbWVudC0+c2V0SG92ZXJlZCh0cnVlKTsKLSAgICAgICAgfQorICAgICAg
ICBpZiAoIXNhd0NvbW1vbkFuY2VzdG9yKQorICAgICAgICAgICAgZWxlbWVudHNUb1NldEhvdmVy
U3RhdGUuYXBwZW5kKGVsZW1lbnQpOwogICAgIH0KKworICAgIGZvciAoYXV0byYgZWxlbWVudCA6
IGVsZW1lbnRzVG9DbGVhckhvdmVyU3RhdGUpCisgICAgICAgIGVsZW1lbnQtPnNldEhvdmVyZWQo
ZmFsc2UsIGVsZW1lbnQgPT0gZWxlbWVudHNUb0NsZWFySG92ZXJTdGF0ZS5sYXN0KCkgPyBFbGVt
ZW50OjpJc0FjdGl2ZVN0YXRlQ2hhbmdlUm9vdDo6WWVzIDogRWxlbWVudDo6SXNBY3RpdmVTdGF0
ZUNoYW5nZVJvb3Q6Ok5vKTsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50c1RvU2V0
QWN0aXZlU3RhdGUpCisgICAgICAgIGVsZW1lbnQtPnNldEFjdGl2ZSh0cnVlLCBmYWxzZSwgZWxl
bWVudCA9PSBlbGVtZW50c1RvU2V0QWN0aXZlU3RhdGUubGFzdCgpID8gRWxlbWVudDo6SXNBY3Rp
dmVTdGF0ZUNoYW5nZVJvb3Q6OlllcyA6IEVsZW1lbnQ6OklzQWN0aXZlU3RhdGVDaGFuZ2VSb290
OjpObyk7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudHNUb1NldEhvdmVyU3RhdGUp
CisgICAgICAgIGVsZW1lbnQtPnNldEhvdmVyZWQodHJ1ZSwgZWxlbWVudCA9PSBlbGVtZW50c1Rv
U2V0SG92ZXJTdGF0ZS5sYXN0KCkgPyBFbGVtZW50OjpJc0FjdGl2ZVN0YXRlQ2hhbmdlUm9vdDo6
WWVzIDogRWxlbWVudDo6SXNBY3RpdmVTdGF0ZUNoYW5nZVJvb3Q6Ok5vKTsKIH0KIAogYm9vbCBE
b2N1bWVudDo6aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAppbmRleCBjYzVlMGRlNGIxNzQuLjU0Mzc1MjQyNWY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cApAQCAtNjc4LDEyICs2NzgsMTIgQEAgYm9vbCBFbGVtZW50Ojppc1VzZXJBY3Rpb25FbGVtZW50
RHJhZ2dlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50KCkudXNlckFjdGlvbkVsZW1lbnRz
KCkuaXNCZWluZ0RyYWdnZWQoKnRoaXMpOwogfQogCi12b2lkIEVsZW1lbnQ6OnNldEFjdGl2ZShi
b29sIGZsYWcsIGJvb2wgcGF1c2UpCit2b2lkIEVsZW1lbnQ6OnNldEFjdGl2ZShib29sIGZsYWcs
IGJvb2wgcGF1c2UsIElzQWN0aXZlU3RhdGVDaGFuZ2VSb290IGlzQWN0aXZlU3RhdGVDaGFuZ2VS
b290KQogewogICAgIGlmIChmbGFnID09IGFjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAgICAg
ewotICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZh
bGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FjdGl2ZSk7CisgICAgICAg
IFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigq
dGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZlLCBpc0FjdGl2ZVN0YXRlQ2hhbmdl
Um9vdCk7CiAgICAgICAgIGRvY3VtZW50KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0QWN0aXZl
KCp0aGlzLCBmbGFnKTsKICAgICB9CiAKQEAgLTc1NSwxMiArNzU1LDEyIEBAIHZvaWQgRWxlbWVu
dDo6c2V0SGFzRm9jdXNXaXRoaW4oYm9vbCBmbGFnKQogICAgIH0KIH0KIAotdm9pZCBFbGVtZW50
OjpzZXRIb3ZlcmVkKGJvb2wgZmxhZykKK3ZvaWQgRWxlbWVudDo6c2V0SG92ZXJlZChib29sIGZs
YWcsIElzQWN0aXZlU3RhdGVDaGFuZ2VSb290IGlzQWN0aXZlU3RhdGVDaGFuZ2VSb290KQogewog
ICAgIGlmIChmbGFnID09IGhvdmVyZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHsKLSAgICAg
ICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9u
KCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3Zlcik7CisgICAgICAgIFN0eWxlOjpQ
c2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXIsIGlzQWN0aXZlU3RhdGVDaGFuZ2VSb290KTsKICAg
ICAgICAgZG9jdW1lbnQoKS51c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRIb3ZlcmVkKCp0aGlzLCBm
bGFnKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDA5MTNkMDE5NWJhMC4uZDk1NTI3
N2Y2MjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTMyMSw4ICszMjEsOSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc0JlaW5nRHJhZ2dlZCgpIGNvbnN0IHsgcmV0dXJuIGlzVXNlckFjdGlvbkVsZW1l
bnQoKSAmJiBpc1VzZXJBY3Rpb25FbGVtZW50RHJhZ2dlZCgpOyB9CiAgICAgYm9vbCBoYXNGb2N1
c1dpdGhpbigpIGNvbnN0IHsgcmV0dXJuIGhhc05vZGVGbGFnKE5vZGVGbGFnOjpIYXNGb2N1c1dp
dGhpbik7IH07CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wgPSB0cnVlLCBib29s
IHBhdXNlID0gZmFsc2UpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRIb3ZlcmVkKGJvb2wgPSB0cnVl
KTsKKyAgICBlbnVtIGNsYXNzIElzQWN0aXZlU3RhdGVDaGFuZ2VSb290IHsgWWVzLCBObyB9Owor
ICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCA9IHRydWUsIGJvb2wgcGF1c2UgPSBmYWxz
ZSwgSXNBY3RpdmVTdGF0ZUNoYW5nZVJvb3QgPSBJc0FjdGl2ZVN0YXRlQ2hhbmdlUm9vdDo6WWVz
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SG92ZXJlZChib29sID0gdHJ1ZSwgSXNBY3RpdmVTdGF0
ZUNoYW5nZVJvb3QgPSBJc0FjdGl2ZVN0YXRlQ2hhbmdlUm9vdDo6WWVzKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Rm9jdXMoYm9vbCk7CiAgICAgdm9pZCBzZXRCZWluZ0RyYWdnZWQoYm9vbCk7CiAg
ICAgdm9pZCBzZXRIYXNGb2N1c1dpdGhpbihib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5jcHAKaW5kZXggMDg3ODdlODQwM2I4Li4xNTcwZWE1ZjA4MmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0yMTEsNyArMjExLDcg
QEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZl
bnQpCiAgICAgSFRNTEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCi12
b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRBY3RpdmUoYm9vbCBkb3duLCBib29sIHBhdXNlKQor
dm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wgZG93biwgYm9vbCBwYXVzZSwg
SXNBY3RpdmVTdGF0ZUNoYW5nZVJvb3QgaXNBY3RpdmVTdGF0ZUNoYW5nZVJvb3QpCiB7CiAgICAg
aWYgKGhhc0VkaXRhYmxlU3R5bGUoKSkgewogICAgICAgICBzd2l0Y2ggKGRvY3VtZW50KCkuc2V0
dGluZ3MoKS5lZGl0YWJsZUxpbmtCZWhhdmlvcigpKSB7CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9p
ZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wgZG93biwgYm9vbCBwYXVzZSkKICAg
ICAgICAgfQogICAgIH0KICAgICAKLSAgICBIVE1MRWxlbWVudDo6c2V0QWN0aXZlKGRvd24sIHBh
dXNlKTsKKyAgICBIVE1MRWxlbWVudDo6c2V0QWN0aXZlKGRvd24sIHBhdXNlLCBpc0FjdGl2ZVN0
YXRlQ2hhbmdlUm9vdCk7CiB9CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCmluZGV4IDY3ZGYwMWUwYTg1Zi4u
YTM4N2MxN2I4MmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCkBA
IC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQq
KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmKSBm
aW5hbDsKLSAgICB2b2lkIHNldEFjdGl2ZShib29sIGFjdGl2ZSA9IHRydWUsIGJvb2wgcGF1c2Ug
PSBmYWxzZSkgZmluYWw7CisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCBhY3RpdmUsIGJvb2wgcGF1
c2UsIElzQWN0aXZlU3RhdGVDaGFuZ2VSb290KSBmaW5hbDsKICAgICBib29sIGFjY2Vzc0tleUFj
dGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgZmluYWw7CiAgICAgYm9vbCBpc1VSTEF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBmaW5hbDsKICAgICBib29sIGNhblN0YXJ0U2VsZWN0
aW9uKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
YWJlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNw
cAppbmRleCA0MjZmMTZiYzYxZDYuLjBmYjIyNjZkZWU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMYWJlbEVsZW1lbnQuY3BwCkBAIC04NSwyNiArODUsMjYgQEAgSFRNTEZvcm1FbGVtZW50
KiBIVE1MTGFiZWxFbGVtZW50Ojpmb3JtKCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8SFRN
TEZvcm1Db250cm9sRWxlbWVudD4oY29udHJvbC5nZXQoKSktPmZvcm0oKTsKIH0KIAotdm9pZCBI
VE1MTGFiZWxFbGVtZW50OjpzZXRBY3RpdmUoYm9vbCBkb3duLCBib29sIHBhdXNlKQordm9pZCBI
VE1MTGFiZWxFbGVtZW50OjpzZXRBY3RpdmUoYm9vbCBkb3duLCBib29sIHBhdXNlLCBJc0FjdGl2
ZVN0YXRlQ2hhbmdlUm9vdCBpc0FjdGl2ZVN0YXRlQ2hhbmdlUm9vdCkKIHsKICAgICBpZiAoZG93
biA9PSBhY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVXBkYXRlIG91ciBzdGF0
dXMgZmlyc3QuCi0gICAgSFRNTEVsZW1lbnQ6OnNldEFjdGl2ZShkb3duLCBwYXVzZSk7CisgICAg
SFRNTEVsZW1lbnQ6OnNldEFjdGl2ZShkb3duLCBwYXVzZSwgaXNBY3RpdmVTdGF0ZUNoYW5nZVJv
b3QpOwogCiAgICAgLy8gQWxzbyB1cGRhdGUgb3VyIGNvcnJlc3BvbmRpbmcgY29udHJvbC4KICAg
ICBpZiAoYXV0byBlbGVtZW50ID0gY29udHJvbCgpKQogICAgICAgICBlbGVtZW50LT5zZXRBY3Rp
dmUoZG93biwgcGF1c2UpOwogfQogCi12b2lkIEhUTUxMYWJlbEVsZW1lbnQ6OnNldEhvdmVyZWQo
Ym9vbCBvdmVyKQordm9pZCBIVE1MTGFiZWxFbGVtZW50OjpzZXRIb3ZlcmVkKGJvb2wgb3Zlciwg
SXNBY3RpdmVTdGF0ZUNoYW5nZVJvb3QgaXNBY3RpdmVTdGF0ZUNoYW5nZVJvb3QpCiB7CiAgICAg
aWYgKG92ZXIgPT0gaG92ZXJlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIC8v
IFVwZGF0ZSBvdXIgc3RhdHVzIGZpcnN0LgotICAgIEhUTUxFbGVtZW50OjpzZXRIb3ZlcmVkKG92
ZXIpOworICAgIEhUTUxFbGVtZW50OjpzZXRIb3ZlcmVkKG92ZXIsIGlzQWN0aXZlU3RhdGVDaGFu
Z2VSb290KTsKIAogICAgIC8vIEFsc28gdXBkYXRlIG91ciBjb3JyZXNwb25kaW5nIGNvbnRyb2wu
CiAgICAgaWYgKGF1dG8gZWxlbWVudCA9IGNvbnRyb2woKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGFiZWxFbGVtZW50LmgKaW5kZXggODBlMTVjMjI1NzlkLi5lYjYxNzk0NGZhYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5oCkBAIC00NSw4ICs0NSw4IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIGZpbmFsOwog
CiAgICAgLy8gT3ZlcnJpZGRlbiB0byB1cGRhdGUgdGhlIGhvdmVyL2FjdGl2ZSBzdGF0ZSBvZiB0
aGUgY29ycmVzcG9uZGluZyBjb250cm9sLgotICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wgPSB0cnVl
LCBib29sIHBhdXNlID0gZmFsc2UpIGZpbmFsOwotICAgIHZvaWQgc2V0SG92ZXJlZChib29sID0g
dHJ1ZSkgZmluYWw7CisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCwgYm9vbCBwYXVzZSwgSXNBY3Rp
dmVTdGF0ZUNoYW5nZVJvb3QpIGZpbmFsOworICAgIHZvaWQgc2V0SG92ZXJlZChib29sLCBJc0Fj
dGl2ZVN0YXRlQ2hhbmdlUm9vdCkgZmluYWw7CiAKICAgICAvLyBPdmVycmlkZGVuIHRvIGVpdGhl
ciBjbGljaygpIG9yIGZvY3VzKCkgdGhlIGNvcnJlc3BvbmRpbmcgY29udHJvbC4KICAgICB2b2lk
IGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAppbmRleCAxOWJiZjI0YTYxNmIuLjQ2
MTk4ZmM3MzljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1
dHRvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0
b25FbGVtZW50LmNwcApAQCAtMjQ5LDExICsyNDksMTEgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVu
dDo6cmVwZWF0aW5nVGltZXJGaXJlZCgpCiAgICAgICAgIHN0ZXAobV91cERvd25TdGF0ZSA9PSBV
cCA/IDEgOiAtMSk7CiB9CiAKLXZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OnNldEhvdmVyZWQoYm9v
bCBmbGFnKQordm9pZCBTcGluQnV0dG9uRWxlbWVudDo6c2V0SG92ZXJlZChib29sIGZsYWcsIElz
QWN0aXZlU3RhdGVDaGFuZ2VSb290IGlzQWN0aXZlU3RhdGVDaGFuZ2VSb290KQogewogICAgIGlm
ICghZmxhZykKICAgICAgICAgbV91cERvd25TdGF0ZSA9IEluZGV0ZXJtaW5hdGU7Ci0gICAgSFRN
TERpdkVsZW1lbnQ6OnNldEhvdmVyZWQoZmxhZyk7CisgICAgSFRNTERpdkVsZW1lbnQ6OnNldEhv
dmVyZWQoZmxhZywgaXNBY3RpdmVTdGF0ZUNoYW5nZVJvb3QpOwogfQogCiBib29sIFNwaW5CdXR0
b25FbGVtZW50OjpzaG91bGRSZXNwb25kVG9Nb3VzZUV2ZW50cygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaAppbmRleCAxOGNiYjZiODNhM2YuLjg0
Nzg4NDNkMDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1
dHRvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9u
RWxlbWVudC5oCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFJlcGVh
dGluZ1RpbWVyKCk7CiAgICAgdm9pZCBzdG9wUmVwZWF0aW5nVGltZXIoKTsKICAgICB2b2lkIHJl
cGVhdGluZ1RpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHNldEhvdmVyZWQoYm9vbCA9IHRydWUpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0SG92ZXJlZChib29sLCBJc0FjdGl2ZVN0YXRlQ2hhbmdlUm9v
dCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRSZXNwb25kVG9Nb3VzZUV2ZW50cygpOwogICAg
IGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uLmNwcAppbmRleCBiNzE1YmM5YTM1YmUuLjIzMzAyNjAyYWE2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9u
LmNwcApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFN0
eWxlIHsKIAotdm9pZCBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Y29tcHV0ZUludmFs
aWRhdGlvbihDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkb0NsYXNzKQordm9pZCBQ
c2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Y29tcHV0ZUludmFsaWRhdGlvbihDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkb0NsYXNzLCBFbGVtZW50OjpJc0FjdGl2ZVN0YXRl
Q2hhbmdlUm9vdCBpc0FjdGl2ZVN0YXRlQ2hhbmdlUm9vdCkKIHsKICAgICBib29sIHNob3VsZElu
dmFsaWRhdGVDdXJyZW50ID0gZmFsc2U7CiAgICAgYm9vbCBtYXlBZmZlY3RTdHlsZUluU2hhZG93
VHJlZSA9IGZhbHNlOwpAQCAtNTQsOCArNTQsMTcgQEAgdm9pZCBQc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbjo6Y29tcHV0ZUludmFsaWRhdGlvbihDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MK
IAogICAgIGF1dG8mIHJ1bGVTZXRzID0gbV9lbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5ydWxlU2V0
cygpOwogICAgIGlmIChhdXRvKiBpbnZhbGlkYXRpb25SdWxlU2V0cyA9IHJ1bGVTZXRzLnBzZXVk
b0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMocHNldWRvQ2xhc3MpKSB7Ci0gICAgICAgIGZvciAo
YXV0byYgaW52YWxpZGF0aW9uUnVsZVNldCA6ICppbnZhbGlkYXRpb25SdWxlU2V0cykKKyAgICAg
ICAgZm9yIChhdXRvJiBpbnZhbGlkYXRpb25SdWxlU2V0IDogKmludmFsaWRhdGlvblJ1bGVTZXRz
KSB7CisgICAgICAgICAgICAvLyBGb3IgZm9jdXMvaG92ZXIgd2UgZmxpcCB0aGUgd2hvbGUgYW5j
ZXN0b3IgY2hhaW4uIFdlIG9ubHkgbmVlZCB0byBkbyBkZWVwIGludmFsaWRhdGlvbiB0cmF2ZXJz
YWwgaW4gdGhlIGNoYW5nZSByb290LgorICAgICAgICAgICAgYXV0byBzaG91bGRJbnZhbGlkYXRl
ID0gWyZdIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNBY3RpdmVTdGF0ZUNoYW5nZVJvb3QgPT0g
RWxlbWVudDo6SXNBY3RpdmVTdGF0ZUNoYW5nZVJvb3Q6OlllcykKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIGludmFsaWRhdGlvblJ1bGVT
ZXQubWF0Y2hFbGVtZW50ICE9IE1hdGNoRWxlbWVudDo6QW5jZXN0b3I7CisgICAgICAgICAgICB9
KCk7CisgICAgICAgICAgICBpZiAoIXNob3VsZEludmFsaWRhdGUpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICBJbnZhbGlkYXRvcjo6YWRkVG9NYXRjaEVsZW1lbnRSdWxl
U2V0cyhtX21hdGNoRWxlbWVudFJ1bGVTZXRzLCBpbnZhbGlkYXRpb25SdWxlU2V0KTsKKyAgICAg
ICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgKaW5kZXggYTRjNTgwY2MyZGZiLi5hYTY2MmFhOWZkOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24uaApAQCAtMzUsMTEgKzM1LDExIEBAIG5hbWVzcGFjZSBTdHlsZSB7CiAKIGNsYXNz
IFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIHsKIHB1YmxpYzoKLSAgICBQc2V1ZG9DbGFz
c0NoYW5nZUludmFsaWRhdGlvbihFbGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlw
ZSk7CisgICAgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYsIENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc1R5cGUsIEVsZW1lbnQ6OklzQWN0aXZlU3RhdGVDaGFuZ2VSb290ID0g
RWxlbWVudDo6SXNBY3RpdmVTdGF0ZUNoYW5nZVJvb3Q6Olllcyk7CiAgICAgflBzZXVkb0NsYXNz
Q2hhbmdlSW52YWxpZGF0aW9uKCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjb21wdXRlSW52YWxp
ZGF0aW9uKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUpOworICAgIHZvaWQgY29tcHV0ZUlu
dmFsaWRhdGlvbihDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBFbGVtZW50OjpJc0FjdGl2
ZVN0YXRlQ2hhbmdlUm9vdCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVXaXRoUnVsZVNldHMo
KTsKIAogICAgIGNvbnN0IGJvb2wgbV9pc0VuYWJsZWQ7CkBAIC00OCwxNCArNDgsMTQgQEAgcHJp
dmF0ZToKICAgICBJbnZhbGlkYXRvcjo6TWF0Y2hFbGVtZW50UnVsZVNldHMgbV9tYXRjaEVsZW1l
bnRSdWxlU2V0czsKIH07CiAKLWlubGluZSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6
UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYgZWxlbWVudCwgQ1NTU2VsZWN0
b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzc1R5cGUpCitpbmxpbmUgUHNldWRvQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb246OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQm
IGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvQ2xhc3NUeXBlLCBF
bGVtZW50OjpJc0FjdGl2ZVN0YXRlQ2hhbmdlUm9vdCBpc0FjdGl2ZVN0YXRlQ2hhbmdlUm9vdCkK
ICAgICA6IG1faXNFbmFibGVkKGVsZW1lbnQubmVlZHNTdHlsZUludmFsaWRhdGlvbigpKQogICAg
ICwgbV9lbGVtZW50KGVsZW1lbnQpCiAKIHsKICAgICBpZiAoIW1faXNFbmFibGVkKQogICAgICAg
ICByZXR1cm47Ci0gICAgY29tcHV0ZUludmFsaWRhdGlvbihwc2V1ZG9DbGFzc1R5cGUpOworICAg
IGNvbXB1dGVJbnZhbGlkYXRpb24ocHNldWRvQ2xhc3NUeXBlLCBpc0FjdGl2ZVN0YXRlQ2hhbmdl
Um9vdCk7CiAgICAgaW52YWxpZGF0ZVN0eWxlV2l0aFJ1bGVTZXRzKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417839</attachid>
            <date>2021-01-18 09:51:27 -0800</date>
            <delta_ts>2021-01-18 10:02:14 -0800</delta_ts>
            <desc>patch</desc>
            <filename>optimize-active-hover-descendant-invalidation-2.patch</filename>
            <type>text/plain</type>
            <size>17645</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MzEwODM1ZDExYjIuLmE0ZjAzMGNiODY5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ0IEBACisyMDIxLTAxLTE4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBPcHRpbWl6ZSA6aG92ZXIvOmFjdGl2ZSBzdHlsZSBpbnZhbGlkYXRpb24g
Zm9yIGRlZXAgdHJlZXMgYW5kIGRlc2NlbmRhbnQgc2VsZWN0b3JzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA3MTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb3ZlciBhbmQgYWN0aXZlIHN0YXRlcyBh
cmUgZmxpcHBlZCBmb3IgdGhlIGVudGlyZSBhbmNlc3RvciBjaGFpbi4gV2UgY29tcHV0ZSBpbnZh
bGlkYXRpb24gZm9yIGVhY2ggZmxpcHBlZAorICAgICAgICBlbGVtZW50IHNlcGFyYXRlbHkuIElm
IHRoZSBzZWxlY3RvcnMgYXJlIG9mIGZvcm0gJzphY3RpdmUgLmRlc2NlbmRhbnQnIHRoZW4gZWFj
aCBvZiB0aGVzZSBpbnZhbGlkYXRpb25zIG5lZWRzCisgICAgICAgIHRvIHRyYXZlcnNlIHRoZSB3
aG9sZSBzdWJ0cmVlLCBsZWFkaW5nIHRvIE8obl4yKSBiZWhhdmlvci4KKworICAgICAgICBXZSBy
ZWFsbHkgb25seSBuZWVkIHRvIHRyYXZlcnNlIHRoZSBkZXNjZW5kYW50cyBvbmNlLCBzdGFydGlu
ZyBmcm9tIHRoZSBlbGVtZW50IGNsb3Nlc3QgdG8gdGhlIHJvb3QgdGhhdCBjaGFuZ2VzIHN0YXRl
LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKToKKworICAgICAgICBDb21wdXRlIHRoZSBjaGFu
Z2Ugcm9vdCBhbmQgcGFzcyB0aGUgaW5mb3JtYXRpb24gdG8gc2V0QWN0aXZlL0hvdmVyLgorICAg
ICAgICBSZW9yZ2FuaXplIHRoZSBmdW5jdGlvbiBhIGJpdCB0byBhbGxvdyB0aGlzLCBhbmQgZm9y
IGdlbmVyYWwgcmVhZGFiaWxpdHkuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6c2V0SG92ZXJlZCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JF
bGVtZW50OjpzZXRBY3RpdmUpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTExhYmVsRWxlbWVudDo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMYWJl
bEVsZW1lbnQ6OnNldEhvdmVyZWQpOgorICAgICAgICAqIGh0bWwvSFRNTExhYmVsRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpzZXRIb3ZlcmVkKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5oOgorICAgICAgICAqIHN0eWxlL1BzZXVkb0NsYXNz
Q2hhbmdlSW52YWxpZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQc2V1ZG9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Y29tcHV0ZUludmFsaWRhdGlvbik6CisKKyAgICAgICAg
T25seSBpbmNsdWRlIGRlc2NlbmRhbnQgdHJhdmVyc2luZyBydWxlc2V0cyBmb3IgdGhlIGNoYW5n
ZSByb290LgorCisgICAgICAgICogc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlv
bjo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24pOgorCiAyMDIxLTAxLTE0ICBNYXJ0aW4g
Um9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLXNjcm9sbC1z
bmFwXSBzY3JvbGwtc25hcC1hbGlnbiBwYXJzaW5nIGlzIGluY29ycmVjdC9iYWNrd2FyZHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQxZTdjMTE3MzFmZS4uYTU3ZDMzMTE3Y2EyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcxMjIsNiArNzEyMiwxMSBAQCB2b2lkIERvY3VtZW50
Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBF
bGVtZW50KiBpbgogewogICAgIEFTU0VSVCghcmVxdWVzdC5yZWFkT25seSgpKTsKIAorICAgIFZl
Y3RvcjxSZWZQdHI8RWxlbWVudD4sIDMyPiBlbGVtZW50c1RvQ2xlYXJBY3RpdmVTdGF0ZTsKKyAg
ICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+LCAzMj4gZWxlbWVudHNUb1NldEFjdGl2ZVN0YXRlOwor
ICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4sIDMyPiBlbGVtZW50c1RvQ2xlYXJIb3ZlclN0YXRl
OworICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4sIDMyPiBlbGVtZW50c1RvU2V0SG92ZXJTdGF0
ZTsKKwogICAgIEVsZW1lbnQqIGlubmVyRWxlbWVudEluRG9jdW1lbnQgPSBpbm5lckVsZW1lbnQ7
CiAgICAgd2hpbGUgKGlubmVyRWxlbWVudEluRG9jdW1lbnQgJiYgJmlubmVyRWxlbWVudEluRG9j
dW1lbnQtPmRvY3VtZW50KCkgIT0gdGhpcykgewogICAgICAgICBpbm5lckVsZW1lbnRJbkRvY3Vt
ZW50LT5kb2N1bWVudCgpLnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUocmVxdWVzdCwgaW5uZXJFbGVt
ZW50SW5Eb2N1bWVudCk7CkBAIC03MTMxLDggKzcxMzYsOCBAQCB2b2lkIERvY3VtZW50Ojp1cGRh
dGVIb3ZlckFjdGl2ZVN0YXRlKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBFbGVtZW50
KiBpbgogICAgIEVsZW1lbnQqIG9sZEFjdGl2ZUVsZW1lbnQgPSBtX2FjdGl2ZUVsZW1lbnQuZ2V0
KCk7CiAgICAgaWYgKG9sZEFjdGl2ZUVsZW1lbnQgJiYgIXJlcXVlc3QuYWN0aXZlKCkpIHsKICAg
ICAgICAgLy8gV2UgYXJlIGNsZWFyaW5nIHRoZSA6YWN0aXZlIGNoYWluIGJlY2F1c2UgdGhlIG1v
dXNlIGhhcyBiZWVuIHJlbGVhc2VkLgotICAgICAgICBmb3IgKEVsZW1lbnQqIGN1cnJlbnRFbGVt
ZW50ID0gb2xkQWN0aXZlRWxlbWVudDsgY3VycmVudEVsZW1lbnQ7IGN1cnJlbnRFbGVtZW50ID0g
Y3VycmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnRJbkNvbXBvc2VkVHJlZSgpKSB7Ci0gICAgICAg
ICAgICBjdXJyZW50RWxlbWVudC0+c2V0QWN0aXZlKGZhbHNlKTsKKyAgICAgICAgZm9yIChhdXRv
KiBjdXJyZW50RWxlbWVudCA9IG9sZEFjdGl2ZUVsZW1lbnQ7IGN1cnJlbnRFbGVtZW50OyBjdXJy
ZW50RWxlbWVudC0+cGFyZW50RWxlbWVudEluQ29tcG9zZWRUcmVlKCkpIHsKKyAgICAgICAgICAg
IGVsZW1lbnRzVG9DbGVhckFjdGl2ZVN0YXRlLmFwcGVuZChjdXJyZW50RWxlbWVudCk7CiAgICAg
ICAgICAgICBtX3VzZXJBY3Rpb25FbGVtZW50cy5zZXRJbkFjdGl2ZUNoYWluKCpjdXJyZW50RWxl
bWVudCwgZmFsc2UpOwogICAgICAgICB9CiAgICAgICAgIG1fYWN0aXZlRWxlbWVudCA9IG51bGxw
dHI7CkBAIC03MTc3LDE1ICs3MTgyLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUhvdmVyQWN0
aXZlU3RhdGUoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEVsZW1lbnQqIGluCiAKICAg
ICBhdXRvKiBjb21tb25BbmNlc3RvciA9IGZpbmROZWFyZXN0Q29tbW9uQ29tcG9zZWRBbmNlc3Rv
cihvbGRIb3ZlcmVkRWxlbWVudC5nZXQoKSwgbmV3SG92ZXJlZEVsZW1lbnQpOwogCi0gICAgVmVj
dG9yPFJlZlB0cjxFbGVtZW50PiwgMzI+IGVsZW1lbnRzVG9SZW1vdmVGcm9tQ2hhaW47Ci0gICAg
VmVjdG9yPFJlZlB0cjxFbGVtZW50PiwgMzI+IGVsZW1lbnRzVG9BZGRUb0NoYWluOwotCiAgICAg
aWYgKG9sZEhvdmVyZWRFbGVtZW50ICE9IG5ld0hvdmVyZWRFbGVtZW50KSB7CiAgICAgICAgIGZv
ciAoYXV0byogZWxlbWVudCA9IG9sZEhvdmVyZWRFbGVtZW50LmdldCgpOyBlbGVtZW50OyBlbGVt
ZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudEluQ29tcG9zZWRUcmVlKCkpIHsKICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGNvbW1vbkFuY2VzdG9yKQogICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgaWYgKCFtdXN0QmVJbkFjdGl2ZUNoYWluIHx8IGVsZW1lbnQtPmlzSW5B
Y3RpdmVDaGFpbigpKQotICAgICAgICAgICAgICAgIGVsZW1lbnRzVG9SZW1vdmVGcm9tQ2hhaW4u
YXBwZW5kKGVsZW1lbnQpOworICAgICAgICAgICAgaWYgKG11c3RCZUluQWN0aXZlQ2hhaW4gJiYg
IWVsZW1lbnQtPmlzSW5BY3RpdmVDaGFpbigpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgZWxlbWVudHNUb0NsZWFySG92ZXJTdGF0ZS5hcHBlbmQoZWxlbWVudCk7CiAg
ICAgICAgIH0KICAgICAgICAgLy8gVW5zZXQgaG92ZXJlZCBub2RlcyBpbiBzdWIgZnJhbWUgZG9j
dW1lbnRzIGlmIHRoZSBvbGQgaG92ZXJlZCBub2RlIHdhcyBhIGZyYW1lIG93bmVyLgogICAgICAg
ICBpZiAoaXM8SFRNTEZyYW1lT3duZXJFbGVtZW50PihvbGRIb3ZlcmVkRWxlbWVudCkpIHsKQEAg
LTcxOTQsMjUgKzcxOTcsMjYgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlSG92ZXJBY3RpdmVTdGF0
ZShjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgRWxlbWVudCogaW4KICAgICAgICAgfQog
ICAgIH0KIAotICAgIGZvciAoYXV0byogZWxlbWVudCA9IG5ld0hvdmVyZWRFbGVtZW50OyBlbGVt
ZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudEluQ29tcG9zZWRUcmVlKCkpIHsK
LSAgICAgICAgaWYgKCFtdXN0QmVJbkFjdGl2ZUNoYWluIHx8IGVsZW1lbnQtPmlzSW5BY3RpdmVD
aGFpbigpKQotICAgICAgICAgICAgZWxlbWVudHNUb0FkZFRvQ2hhaW4uYXBwZW5kKGVsZW1lbnQp
OwotICAgIH0KLQotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRzVG9SZW1vdmVGcm9t
Q2hhaW4pCi0gICAgICAgIGVsZW1lbnQtPnNldEhvdmVyZWQoZmFsc2UpOwotCiAgICAgYm9vbCBz
YXdDb21tb25BbmNlc3RvciA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1l
bnRzVG9BZGRUb0NoYWluKSB7CisgICAgZm9yIChhdXRvKiBlbGVtZW50ID0gbmV3SG92ZXJlZEVs
ZW1lbnQ7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50SW5Db21wb3Nl
ZFRyZWUoKSkgeworICAgICAgICBpZiAobXVzdEJlSW5BY3RpdmVDaGFpbiAmJiAhZWxlbWVudC0+
aXNJbkFjdGl2ZUNoYWluKCkpCisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGFs
bG93QWN0aXZlQ2hhbmdlcykKLSAgICAgICAgICAgIGVsZW1lbnQtPnNldEFjdGl2ZSh0cnVlKTsK
KyAgICAgICAgICAgIGVsZW1lbnRzVG9TZXRBY3RpdmVTdGF0ZS5hcHBlbmQoZWxlbWVudCk7CiAg
ICAgICAgIGlmIChlbGVtZW50ID09IGNvbW1vbkFuY2VzdG9yKQogICAgICAgICAgICAgc2F3Q29t
bW9uQW5jZXN0b3IgPSB0cnVlOwotICAgICAgICBpZiAoIXNhd0NvbW1vbkFuY2VzdG9yKSB7Ci0g
ICAgICAgICAgICAvLyBFbGVtZW50cyBhZnRlciB0aGUgY29tbW9uIGhvdmVyIGFuY2VzdG9yIGRv
ZXMgbm90IGNoYW5nZSBob3ZlciBzdGF0ZSwgYnV0IGFyZSBpdGVyYXRlZCBvdmVyIGJlY2F1c2Ug
dGhleSBtYXkgY2hhbmdlIGFjdGl2ZSBzdGF0ZS4KLSAgICAgICAgICAgIGVsZW1lbnQtPnNldEhv
dmVyZWQodHJ1ZSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgICAgIGlmICghc2F3Q29tbW9uQW5j
ZXN0b3IpCisgICAgICAgICAgICBlbGVtZW50c1RvU2V0SG92ZXJTdGF0ZS5hcHBlbmQoZWxlbWVu
dCk7CisgICAgfQorCisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudHNUb0NsZWFyQWN0
aXZlU3RhdGUpCisgICAgICAgIGVsZW1lbnQtPnNldEFjdGl2ZShmYWxzZSwgZmFsc2UsIGVsZW1l
bnQgPT0gZWxlbWVudHNUb0NsZWFyQWN0aXZlU3RhdGUubGFzdCgpID8gRWxlbWVudDo6SXNVc2Vy
QWN0aW9uU3RhdGVDaGFuZ2VSb290OjpZZXMgOiBFbGVtZW50OjpJc1VzZXJBY3Rpb25TdGF0ZUNo
YW5nZVJvb3Q6Ok5vKTsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50c1RvU2V0QWN0
aXZlU3RhdGUpCisgICAgICAgIGVsZW1lbnQtPnNldEFjdGl2ZSh0cnVlLCBmYWxzZSwgZWxlbWVu
dCA9PSBlbGVtZW50c1RvU2V0QWN0aXZlU3RhdGUubGFzdCgpID8gRWxlbWVudDo6SXNVc2VyQWN0
aW9uU3RhdGVDaGFuZ2VSb290OjpZZXMgOiBFbGVtZW50OjpJc1VzZXJBY3Rpb25TdGF0ZUNoYW5n
ZVJvb3Q6Ok5vKTsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50c1RvQ2xlYXJIb3Zl
clN0YXRlKQorICAgICAgICBlbGVtZW50LT5zZXRIb3ZlcmVkKGZhbHNlLCBlbGVtZW50ID09IGVs
ZW1lbnRzVG9DbGVhckhvdmVyU3RhdGUubGFzdCgpID8gRWxlbWVudDo6SXNVc2VyQWN0aW9uU3Rh
dGVDaGFuZ2VSb290OjpZZXMgOiBFbGVtZW50OjpJc1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJvb3Q6
Ok5vKTsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50c1RvU2V0SG92ZXJTdGF0ZSkK
KyAgICAgICAgZWxlbWVudC0+c2V0SG92ZXJlZCh0cnVlLCBlbGVtZW50ID09IGVsZW1lbnRzVG9T
ZXRIb3ZlclN0YXRlLmxhc3QoKSA/IEVsZW1lbnQ6OklzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9v
dDo6WWVzIDogRWxlbWVudDo6SXNVc2VyQWN0aW9uU3RhdGVDaGFuZ2VSb290OjpObyk7CiB9CiAK
IGJvb2wgRG9jdW1lbnQ6OmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKaW5kZXggY2M1ZTBkZTRiMTc0Li5iYjI0MjYzZTM3MjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKQEAgLTY3OCwxMiArNjc4LDEyIEBAIGJvb2wgRWxlbWVudDo6aXNVc2VyQWN0aW9u
RWxlbWVudERyYWdnZWQoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCgpLnVzZXJBY3Rpb25F
bGVtZW50cygpLmlzQmVpbmdEcmFnZ2VkKCp0aGlzKTsKIH0KIAotdm9pZCBFbGVtZW50OjpzZXRB
Y3RpdmUoYm9vbCBmbGFnLCBib29sIHBhdXNlKQordm9pZCBFbGVtZW50OjpzZXRBY3RpdmUoYm9v
bCBmbGFnLCBib29sIHBhdXNlLCBJc1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJvb3QgaXNVc2VyQWN0
aW9uU3RhdGVDaGFuZ2VSb290KQogewogICAgIGlmIChmbGFnID09IGFjdGl2ZSgpKQogICAgICAg
ICByZXR1cm47CiAgICAgewotICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Fj
dGl2ZSk7CisgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHls
ZUludmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZlLCBpc1Vz
ZXJBY3Rpb25TdGF0ZUNoYW5nZVJvb3QpOwogICAgICAgICBkb2N1bWVudCgpLnVzZXJBY3Rpb25F
bGVtZW50cygpLnNldEFjdGl2ZSgqdGhpcywgZmxhZyk7CiAgICAgfQogCkBAIC03NTUsMTIgKzc1
NSwxMiBAQCB2b2lkIEVsZW1lbnQ6OnNldEhhc0ZvY3VzV2l0aGluKGJvb2wgZmxhZykKICAgICB9
CiB9CiAKLXZvaWQgRWxlbWVudDo6c2V0SG92ZXJlZChib29sIGZsYWcpCit2b2lkIEVsZW1lbnQ6
OnNldEhvdmVyZWQoYm9vbCBmbGFnLCBJc1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJvb3QgaXNVc2Vy
QWN0aW9uU3RhdGVDaGFuZ2VSb290KQogewogICAgIGlmIChmbGFnID09IGhvdmVyZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIHsKLSAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NIb3Zlcik7CisgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBz
dHlsZUludmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXIsIGlz
VXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdCk7CiAgICAgICAgIGRvY3VtZW50KCkudXNlckFjdGlv
bkVsZW1lbnRzKCkuc2V0SG92ZXJlZCgqdGhpcywgZmxhZyk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAppbmRleCAwOTEzZDAxOTViYTAuLjU2NTdmNWUxYzY0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CkBAIC0zMjEsOCArMzIxLDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNCZWluZ0RyYWdnZWQoKSBj
b25zdCB7IHJldHVybiBpc1VzZXJBY3Rpb25FbGVtZW50KCkgJiYgaXNVc2VyQWN0aW9uRWxlbWVu
dERyYWdnZWQoKTsgfQogICAgIGJvb2wgaGFzRm9jdXNXaXRoaW4oKSBjb25zdCB7IHJldHVybiBo
YXNOb2RlRmxhZyhOb2RlRmxhZzo6SGFzRm9jdXNXaXRoaW4pOyB9OwogCi0gICAgdmlydHVhbCB2
b2lkIHNldEFjdGl2ZShib29sID0gdHJ1ZSwgYm9vbCBwYXVzZSA9IGZhbHNlKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0SG92ZXJlZChib29sID0gdHJ1ZSk7CisgICAgZW51bSBjbGFzcyBJc1VzZXJB
Y3Rpb25TdGF0ZUNoYW5nZVJvb3QgeyBZZXMsIE5vIH07CisgICAgdmlydHVhbCB2b2lkIHNldEFj
dGl2ZShib29sID0gdHJ1ZSwgYm9vbCBwYXVzZSA9IGZhbHNlLCBJc1VzZXJBY3Rpb25TdGF0ZUNo
YW5nZVJvb3QgPSBJc1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJvb3Q6Olllcyk7CisgICAgdmlydHVh
bCB2b2lkIHNldEhvdmVyZWQoYm9vbCA9IHRydWUsIElzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9v
dCA9IElzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdDo6WWVzKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Rm9jdXMoYm9vbCk7CiAgICAgdm9pZCBzZXRCZWluZ0RyYWdnZWQoYm9vbCk7CiAgICAgdm9p
ZCBzZXRIYXNGb2N1c1dpdGhpbihib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9y
RWxlbWVudC5jcHAKaW5kZXggMDg3ODdlODQwM2I4Li4wYTUzZWU2MGVjZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9p
ZCBIVE1MQW5jaG9yRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAg
ICAgSFRNTEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCi12b2lkIEhU
TUxBbmNob3JFbGVtZW50OjpzZXRBY3RpdmUoYm9vbCBkb3duLCBib29sIHBhdXNlKQordm9pZCBI
VE1MQW5jaG9yRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wgZG93biwgYm9vbCBwYXVzZSwgSXNVc2Vy
QWN0aW9uU3RhdGVDaGFuZ2VSb290IGlzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdCkKIHsKICAg
ICBpZiAoaGFzRWRpdGFibGVTdHlsZSgpKSB7CiAgICAgICAgIHN3aXRjaCAoZG9jdW1lbnQoKS5z
ZXR0aW5ncygpLmVkaXRhYmxlTGlua0JlaGF2aW9yKCkpIHsKQEAgLTIzMiw3ICsyMzIsNyBAQCB2
b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRBY3RpdmUoYm9vbCBkb3duLCBib29sIHBhdXNlKQog
ICAgICAgICB9CiAgICAgfQogICAgIAotICAgIEhUTUxFbGVtZW50OjpzZXRBY3RpdmUoZG93biwg
cGF1c2UpOworICAgIEhUTUxFbGVtZW50OjpzZXRBY3RpdmUoZG93biwgcGF1c2UsIGlzVXNlckFj
dGlvblN0YXRlQ2hhbmdlUm9vdCk7CiB9CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCmluZGV4IDY3ZGYwMWUw
YTg1Zi4uN2MyYWZmYzg4NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
bmNob3JFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJk
RXZlbnQqKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQmKSBmaW5hbDsKLSAgICB2b2lkIHNldEFjdGl2ZShib29sIGFjdGl2ZSA9IHRydWUsIGJvb2wg
cGF1c2UgPSBmYWxzZSkgZmluYWw7CisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCBhY3RpdmUsIGJv
b2wgcGF1c2UsIElzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdCkgZmluYWw7CiAgICAgYm9vbCBh
Y2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIGZpbmFsOwogICAgIGJvb2wgaXNV
UkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5T
dGFydFNlbGVjdGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVs
RWxlbWVudC5jcHAKaW5kZXggNDI2ZjE2YmM2MWQ2Li4wYTQwMWZhNDY5MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcApAQCAtODUsMjYgKzg1LDI2IEBAIEhUTUxG
b3JtRWxlbWVudCogSFRNTExhYmVsRWxlbWVudDo6Zm9ybSgpIGNvbnN0CiAgICAgcmV0dXJuIGRv
d25jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KGNvbnRyb2wuZ2V0KCkpLT5mb3JtKCk7CiB9
CiAKLXZvaWQgSFRNTExhYmVsRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wgZG93biwgYm9vbCBwYXVz
ZSkKK3ZvaWQgSFRNTExhYmVsRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wgZG93biwgYm9vbCBwYXVz
ZSwgSXNVc2VyQWN0aW9uU3RhdGVDaGFuZ2VSb290IGlzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9v
dCkKIHsKICAgICBpZiAoZG93biA9PSBhY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gVXBkYXRlIG91ciBzdGF0dXMgZmlyc3QuCi0gICAgSFRNTEVsZW1lbnQ6OnNldEFjdGl2ZShk
b3duLCBwYXVzZSk7CisgICAgSFRNTEVsZW1lbnQ6OnNldEFjdGl2ZShkb3duLCBwYXVzZSwgaXNV
c2VyQWN0aW9uU3RhdGVDaGFuZ2VSb290KTsKIAogICAgIC8vIEFsc28gdXBkYXRlIG91ciBjb3Jy
ZXNwb25kaW5nIGNvbnRyb2wuCiAgICAgaWYgKGF1dG8gZWxlbWVudCA9IGNvbnRyb2woKSkKICAg
ICAgICAgZWxlbWVudC0+c2V0QWN0aXZlKGRvd24sIHBhdXNlKTsKIH0KIAotdm9pZCBIVE1MTGFi
ZWxFbGVtZW50OjpzZXRIb3ZlcmVkKGJvb2wgb3ZlcikKK3ZvaWQgSFRNTExhYmVsRWxlbWVudDo6
c2V0SG92ZXJlZChib29sIG92ZXIsIElzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdCBpc1VzZXJB
Y3Rpb25TdGF0ZUNoYW5nZVJvb3QpCiB7CiAgICAgaWYgKG92ZXIgPT0gaG92ZXJlZCgpKQogICAg
ICAgICByZXR1cm47CiAgICAgICAgIAogICAgIC8vIFVwZGF0ZSBvdXIgc3RhdHVzIGZpcnN0Lgot
ICAgIEhUTUxFbGVtZW50OjpzZXRIb3ZlcmVkKG92ZXIpOworICAgIEhUTUxFbGVtZW50OjpzZXRI
b3ZlcmVkKG92ZXIsIGlzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdCk7CiAKICAgICAvLyBBbHNv
IHVwZGF0ZSBvdXIgY29ycmVzcG9uZGluZyBjb250cm9sLgogICAgIGlmIChhdXRvIGVsZW1lbnQg
PSBjb250cm9sKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5oCmluZGV4IDgw
ZTE1YzIyNTc5ZC4uMTVjNGM3MzY1NGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMYWJlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVs
ZW1lbnQuaApAQCAtNDUsOCArNDUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgYWNjZXNzS2V5QWN0
aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBmaW5hbDsKIAogICAgIC8vIE92ZXJyaWRkZW4gdG8g
dXBkYXRlIHRoZSBob3Zlci9hY3RpdmUgc3RhdGUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgY29udHJv
bC4KLSAgICB2b2lkIHNldEFjdGl2ZShib29sID0gdHJ1ZSwgYm9vbCBwYXVzZSA9IGZhbHNlKSBm
aW5hbDsKLSAgICB2b2lkIHNldEhvdmVyZWQoYm9vbCA9IHRydWUpIGZpbmFsOworICAgIHZvaWQg
c2V0QWN0aXZlKGJvb2wsIGJvb2wgcGF1c2UsIElzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdCkg
ZmluYWw7CisgICAgdm9pZCBzZXRIb3ZlcmVkKGJvb2wsIElzVXNlckFjdGlvblN0YXRlQ2hhbmdl
Um9vdCkgZmluYWw7CiAKICAgICAvLyBPdmVycmlkZGVuIHRvIGVpdGhlciBjbGljaygpIG9yIGZv
Y3VzKCkgdGhlIGNvcnJlc3BvbmRpbmcgY29udHJvbC4KICAgICB2b2lkIGRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Nw
aW5CdXR0b25FbGVtZW50LmNwcAppbmRleCAxOWJiZjI0YTYxNmIuLjgxYmJmM2E5OGFkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcApA
QCAtMjQ5LDExICsyNDksMTEgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6cmVwZWF0aW5nVGlt
ZXJGaXJlZCgpCiAgICAgICAgIHN0ZXAobV91cERvd25TdGF0ZSA9PSBVcCA/IDEgOiAtMSk7CiB9
CiAKLXZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OnNldEhvdmVyZWQoYm9vbCBmbGFnKQordm9pZCBT
cGluQnV0dG9uRWxlbWVudDo6c2V0SG92ZXJlZChib29sIGZsYWcsIElzVXNlckFjdGlvblN0YXRl
Q2hhbmdlUm9vdCBpc1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJvb3QpCiB7CiAgICAgaWYgKCFmbGFn
KQogICAgICAgICBtX3VwRG93blN0YXRlID0gSW5kZXRlcm1pbmF0ZTsKLSAgICBIVE1MRGl2RWxl
bWVudDo6c2V0SG92ZXJlZChmbGFnKTsKKyAgICBIVE1MRGl2RWxlbWVudDo6c2V0SG92ZXJlZChm
bGFnLCBpc1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJvb3QpOwogfQogCiBib29sIFNwaW5CdXR0b25F
bGVtZW50OjpzaG91bGRSZXNwb25kVG9Nb3VzZUV2ZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaAppbmRleCAxOGNiYjZiODNhM2YuLjUxNDhh
ODIwOGE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRv
bkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxl
bWVudC5oCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFJlcGVhdGlu
Z1RpbWVyKCk7CiAgICAgdm9pZCBzdG9wUmVwZWF0aW5nVGltZXIoKTsKICAgICB2b2lkIHJlcGVh
dGluZ1RpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHNldEhvdmVyZWQoYm9vbCA9IHRydWUpIG92ZXJy
aWRlOworICAgIHZvaWQgc2V0SG92ZXJlZChib29sLCBJc1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJv
b3QpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkUmVzcG9uZFRvTW91c2VFdmVudHMoKTsKICAg
ICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbi5jcHAKaW5kZXggYjcxNWJjOWEzNWJlLi43OGZmNWJjM2JkNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlv
bi5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBT
dHlsZSB7CiAKLXZvaWQgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmNvbXB1dGVJbnZh
bGlkYXRpb24oQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzcykKK3ZvaWQg
UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmNvbXB1dGVJbnZhbGlkYXRpb24oQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzcywgRWxlbWVudDo6SXNVc2VyQWN0aW9u
U3RhdGVDaGFuZ2VSb290IGlzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdCkKIHsKICAgICBib29s
IHNob3VsZEludmFsaWRhdGVDdXJyZW50ID0gZmFsc2U7CiAgICAgYm9vbCBtYXlBZmZlY3RTdHls
ZUluU2hhZG93VHJlZSA9IGZhbHNlOwpAQCAtNTQsOCArNTQsMTcgQEAgdm9pZCBQc2V1ZG9DbGFz
c0NoYW5nZUludmFsaWRhdGlvbjo6Y29tcHV0ZUludmFsaWRhdGlvbihDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3MKIAogICAgIGF1dG8mIHJ1bGVTZXRzID0gbV9lbGVtZW50LnN0eWxlUmVzb2x2ZXIo
KS5ydWxlU2V0cygpOwogICAgIGlmIChhdXRvKiBpbnZhbGlkYXRpb25SdWxlU2V0cyA9IHJ1bGVT
ZXRzLnBzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMocHNldWRvQ2xhc3MpKSB7Ci0gICAg
ICAgIGZvciAoYXV0byYgaW52YWxpZGF0aW9uUnVsZVNldCA6ICppbnZhbGlkYXRpb25SdWxlU2V0
cykKKyAgICAgICAgZm9yIChhdXRvJiBpbnZhbGlkYXRpb25SdWxlU2V0IDogKmludmFsaWRhdGlv
blJ1bGVTZXRzKSB7CisgICAgICAgICAgICAvLyBGb3IgZm9jdXMvaG92ZXIgd2UgZmxpcCB0aGUg
d2hvbGUgYW5jZXN0b3IgY2hhaW4uIFdlIG9ubHkgbmVlZCB0byBkbyBkZWVwIGludmFsaWRhdGlv
biB0cmF2ZXJzYWwgaW4gdGhlIGNoYW5nZSByb290LgorICAgICAgICAgICAgYXV0byBzaG91bGRJ
bnZhbGlkYXRlID0gWyZdIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNVc2VyQWN0aW9uU3RhdGVD
aGFuZ2VSb290ID09IEVsZW1lbnQ6OklzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdDo6WWVzKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
aW52YWxpZGF0aW9uUnVsZVNldC5tYXRjaEVsZW1lbnQgIT0gTWF0Y2hFbGVtZW50OjpBbmNlc3Rv
cjsKKyAgICAgICAgICAgIH0oKTsKKyAgICAgICAgICAgIGlmICghc2hvdWxkSW52YWxpZGF0ZSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIEludmFsaWRhdG9yOjphZGRU
b01hdGNoRWxlbWVudFJ1bGVTZXRzKG1fbWF0Y2hFbGVtZW50UnVsZVNldHMsIGludmFsaWRhdGlv
blJ1bGVTZXQpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaAppbmRleCBhNGM1ODBjYzJk
ZmIuLjI4M2IyYjAwMzFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1
ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oCkBAIC0zNSwxMSArMzUsMTEgQEAgbmFtZXNwYWNl
IFN0eWxlIHsKIAogY2xhc3MgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gewogcHVibGlj
OgotICAgIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQmLCBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NUeXBlKTsKKyAgICBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbihF
bGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgRWxlbWVudDo6SXNVc2VyQWN0
aW9uU3RhdGVDaGFuZ2VSb290ID0gRWxlbWVudDo6SXNVc2VyQWN0aW9uU3RhdGVDaGFuZ2VSb290
OjpZZXMpOwogICAgIH5Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbigpOwogCiBwcml2YXRl
OgotICAgIHZvaWQgY29tcHV0ZUludmFsaWRhdGlvbihDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NU
eXBlKTsKKyAgICB2b2lkIGNvbXB1dGVJbnZhbGlkYXRpb24oQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzVHlwZSwgRWxlbWVudDo6SXNVc2VyQWN0aW9uU3RhdGVDaGFuZ2VSb290KTsKICAgICB2b2lk
IGludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cygpOwogCiAgICAgY29uc3QgYm9vbCBtX2lzRW5h
YmxlZDsKQEAgLTQ4LDE0ICs0OCwxNCBAQCBwcml2YXRlOgogICAgIEludmFsaWRhdG9yOjpNYXRj
aEVsZW1lbnRSdWxlU2V0cyBtX21hdGNoRWxlbWVudFJ1bGVTZXRzOwogfTsKIAotaW5saW5lIFBz
ZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlv
bihFbGVtZW50JiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkb0Ns
YXNzVHlwZSkKK2lubGluZSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6UHNldWRvQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYgZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVHlwZSBwc2V1ZG9DbGFzc1R5cGUsIEVsZW1lbnQ6OklzVXNlckFjdGlvblN0YXRlQ2hh
bmdlUm9vdCBpc1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJvb3QpCiAgICAgOiBtX2lzRW5hYmxlZChl
bGVtZW50Lm5lZWRzU3R5bGVJbnZhbGlkYXRpb24oKSkKICAgICAsIG1fZWxlbWVudChlbGVtZW50
KQogCiB7CiAgICAgaWYgKCFtX2lzRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwotICAgIGNvbXB1
dGVJbnZhbGlkYXRpb24ocHNldWRvQ2xhc3NUeXBlKTsKKyAgICBjb21wdXRlSW52YWxpZGF0aW9u
KHBzZXVkb0NsYXNzVHlwZSwgaXNVc2VyQWN0aW9uU3RhdGVDaGFuZ2VSb290KTsKICAgICBpbnZh
bGlkYXRlU3R5bGVXaXRoUnVsZVNldHMoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417840</attachid>
            <date>2021-01-18 10:02:14 -0800</date>
            <delta_ts>2021-01-18 12:26:31 -0800</delta_ts>
            <desc>patch</desc>
            <filename>optimize-active-hover-descendant-invalidation-3.patch</filename>
            <type>text/plain</type>
            <size>17582</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MzEwODM1ZDExYjIuLmE0ZjAzMGNiODY5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ0IEBACisyMDIxLTAxLTE4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBPcHRpbWl6ZSA6aG92ZXIvOmFjdGl2ZSBzdHlsZSBpbnZhbGlkYXRpb24g
Zm9yIGRlZXAgdHJlZXMgYW5kIGRlc2NlbmRhbnQgc2VsZWN0b3JzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA3MTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb3ZlciBhbmQgYWN0aXZlIHN0YXRlcyBh
cmUgZmxpcHBlZCBmb3IgdGhlIGVudGlyZSBhbmNlc3RvciBjaGFpbi4gV2UgY29tcHV0ZSBpbnZh
bGlkYXRpb24gZm9yIGVhY2ggZmxpcHBlZAorICAgICAgICBlbGVtZW50IHNlcGFyYXRlbHkuIElm
IHRoZSBzZWxlY3RvcnMgYXJlIG9mIGZvcm0gJzphY3RpdmUgLmRlc2NlbmRhbnQnIHRoZW4gZWFj
aCBvZiB0aGVzZSBpbnZhbGlkYXRpb25zIG5lZWRzCisgICAgICAgIHRvIHRyYXZlcnNlIHRoZSB3
aG9sZSBzdWJ0cmVlLCBsZWFkaW5nIHRvIE8obl4yKSBiZWhhdmlvci4KKworICAgICAgICBXZSBy
ZWFsbHkgb25seSBuZWVkIHRvIHRyYXZlcnNlIHRoZSBkZXNjZW5kYW50cyBvbmNlLCBzdGFydGlu
ZyBmcm9tIHRoZSBlbGVtZW50IGNsb3Nlc3QgdG8gdGhlIHJvb3QgdGhhdCBjaGFuZ2VzIHN0YXRl
LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKToKKworICAgICAgICBDb21wdXRlIHRoZSBjaGFu
Z2Ugcm9vdCBhbmQgcGFzcyB0aGUgaW5mb3JtYXRpb24gdG8gc2V0QWN0aXZlL0hvdmVyLgorICAg
ICAgICBSZW9yZ2FuaXplIHRoZSBmdW5jdGlvbiBhIGJpdCB0byBhbGxvdyB0aGlzLCBhbmQgZm9y
IGdlbmVyYWwgcmVhZGFiaWxpdHkuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6c2V0SG92ZXJlZCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JF
bGVtZW50OjpzZXRBY3RpdmUpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTExhYmVsRWxlbWVudDo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMYWJl
bEVsZW1lbnQ6OnNldEhvdmVyZWQpOgorICAgICAgICAqIGh0bWwvSFRNTExhYmVsRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpzZXRIb3ZlcmVkKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5oOgorICAgICAgICAqIHN0eWxlL1BzZXVkb0NsYXNz
Q2hhbmdlSW52YWxpZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQc2V1ZG9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Y29tcHV0ZUludmFsaWRhdGlvbik6CisKKyAgICAgICAg
T25seSBpbmNsdWRlIGRlc2NlbmRhbnQgdHJhdmVyc2luZyBydWxlc2V0cyBmb3IgdGhlIGNoYW5n
ZSByb290LgorCisgICAgICAgICogc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlv
bjo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24pOgorCiAyMDIxLTAxLTE0ICBNYXJ0aW4g
Um9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLXNjcm9sbC1z
bmFwXSBzY3JvbGwtc25hcC1hbGlnbiBwYXJzaW5nIGlzIGluY29ycmVjdC9iYWNrd2FyZHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQxZTdjMTE3MzFmZS4uNThhNmFhZGM2NGFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcxMjIsNiArNzEyMiwxMSBAQCB2b2lkIERvY3VtZW50
Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBF
bGVtZW50KiBpbgogewogICAgIEFTU0VSVCghcmVxdWVzdC5yZWFkT25seSgpKTsKIAorICAgIFZl
Y3RvcjxSZWZQdHI8RWxlbWVudD4sIDMyPiBlbGVtZW50c1RvQ2xlYXJBY3RpdmU7CisgICAgVmVj
dG9yPFJlZlB0cjxFbGVtZW50PiwgMzI+IGVsZW1lbnRzVG9TZXRBY3RpdmU7CisgICAgVmVjdG9y
PFJlZlB0cjxFbGVtZW50PiwgMzI+IGVsZW1lbnRzVG9DbGVhckhvdmVyOworICAgIFZlY3RvcjxS
ZWZQdHI8RWxlbWVudD4sIDMyPiBlbGVtZW50c1RvU2V0SG92ZXI7CisKICAgICBFbGVtZW50KiBp
bm5lckVsZW1lbnRJbkRvY3VtZW50ID0gaW5uZXJFbGVtZW50OwogICAgIHdoaWxlIChpbm5lckVs
ZW1lbnRJbkRvY3VtZW50ICYmICZpbm5lckVsZW1lbnRJbkRvY3VtZW50LT5kb2N1bWVudCgpICE9
IHRoaXMpIHsKICAgICAgICAgaW5uZXJFbGVtZW50SW5Eb2N1bWVudC0+ZG9jdW1lbnQoKS51cGRh
dGVIb3ZlckFjdGl2ZVN0YXRlKHJlcXVlc3QsIGlubmVyRWxlbWVudEluRG9jdW1lbnQpOwpAQCAt
NzEzMSw4ICs3MTM2LDggQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgRWxlbWVudCogaW4KICAgICBFbGVtZW50KiBv
bGRBY3RpdmVFbGVtZW50ID0gbV9hY3RpdmVFbGVtZW50LmdldCgpOwogICAgIGlmIChvbGRBY3Rp
dmVFbGVtZW50ICYmICFyZXF1ZXN0LmFjdGl2ZSgpKSB7CiAgICAgICAgIC8vIFdlIGFyZSBjbGVh
cmluZyB0aGUgOmFjdGl2ZSBjaGFpbiBiZWNhdXNlIHRoZSBtb3VzZSBoYXMgYmVlbiByZWxlYXNl
ZC4KLSAgICAgICAgZm9yIChFbGVtZW50KiBjdXJyZW50RWxlbWVudCA9IG9sZEFjdGl2ZUVsZW1l
bnQ7IGN1cnJlbnRFbGVtZW50OyBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LT5wYXJl
bnRFbGVtZW50SW5Db21wb3NlZFRyZWUoKSkgewotICAgICAgICAgICAgY3VycmVudEVsZW1lbnQt
PnNldEFjdGl2ZShmYWxzZSk7CisgICAgICAgIGZvciAoYXV0byogY3VycmVudEVsZW1lbnQgPSBv
bGRBY3RpdmVFbGVtZW50OyBjdXJyZW50RWxlbWVudDsgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50
RWxlbWVudC0+cGFyZW50RWxlbWVudEluQ29tcG9zZWRUcmVlKCkpIHsKKyAgICAgICAgICAgIGVs
ZW1lbnRzVG9DbGVhckFjdGl2ZS5hcHBlbmQoY3VycmVudEVsZW1lbnQpOwogICAgICAgICAgICAg
bV91c2VyQWN0aW9uRWxlbWVudHMuc2V0SW5BY3RpdmVDaGFpbigqY3VycmVudEVsZW1lbnQsIGZh
bHNlKTsKICAgICAgICAgfQogICAgICAgICBtX2FjdGl2ZUVsZW1lbnQgPSBudWxscHRyOwpAQCAt
NzE3NywxNSArNzE4MiwxMyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRl
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBFbGVtZW50KiBpbgogCiAgICAgYXV0byog
Y29tbW9uQW5jZXN0b3IgPSBmaW5kTmVhcmVzdENvbW1vbkNvbXBvc2VkQW5jZXN0b3Iob2xkSG92
ZXJlZEVsZW1lbnQuZ2V0KCksIG5ld0hvdmVyZWRFbGVtZW50KTsKIAotICAgIFZlY3RvcjxSZWZQ
dHI8RWxlbWVudD4sIDMyPiBlbGVtZW50c1RvUmVtb3ZlRnJvbUNoYWluOwotICAgIFZlY3RvcjxS
ZWZQdHI8RWxlbWVudD4sIDMyPiBlbGVtZW50c1RvQWRkVG9DaGFpbjsKLQogICAgIGlmIChvbGRI
b3ZlcmVkRWxlbWVudCAhPSBuZXdIb3ZlcmVkRWxlbWVudCkgewogICAgICAgICBmb3IgKGF1dG8q
IGVsZW1lbnQgPSBvbGRIb3ZlcmVkRWxlbWVudC5nZXQoKTsgZWxlbWVudDsgZWxlbWVudCA9IGVs
ZW1lbnQtPnBhcmVudEVsZW1lbnRJbkNvbXBvc2VkVHJlZSgpKSB7CiAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBjb21tb25BbmNlc3RvcikKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGlmICghbXVzdEJlSW5BY3RpdmVDaGFpbiB8fCBlbGVtZW50LT5pc0luQWN0aXZlQ2hh
aW4oKSkKLSAgICAgICAgICAgICAgICBlbGVtZW50c1RvUmVtb3ZlRnJvbUNoYWluLmFwcGVuZChl
bGVtZW50KTsKKyAgICAgICAgICAgIGlmIChtdXN0QmVJbkFjdGl2ZUNoYWluICYmICFlbGVtZW50
LT5pc0luQWN0aXZlQ2hhaW4oKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIGVsZW1lbnRzVG9DbGVhckhvdmVyLmFwcGVuZChlbGVtZW50KTsKICAgICAgICAgfQogICAg
ICAgICAvLyBVbnNldCBob3ZlcmVkIG5vZGVzIGluIHN1YiBmcmFtZSBkb2N1bWVudHMgaWYgdGhl
IG9sZCBob3ZlcmVkIG5vZGUgd2FzIGEgZnJhbWUgb3duZXIuCiAgICAgICAgIGlmIChpczxIVE1M
RnJhbWVPd25lckVsZW1lbnQ+KG9sZEhvdmVyZWRFbGVtZW50KSkgewpAQCAtNzE5NCwyNSArNzE5
NywyNiBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBFbGVtZW50KiBpbgogICAgICAgICB9CiAgICAgfQogCi0gICAg
Zm9yIChhdXRvKiBlbGVtZW50ID0gbmV3SG92ZXJlZEVsZW1lbnQ7IGVsZW1lbnQ7IGVsZW1lbnQg
PSBlbGVtZW50LT5wYXJlbnRFbGVtZW50SW5Db21wb3NlZFRyZWUoKSkgewotICAgICAgICBpZiAo
IW11c3RCZUluQWN0aXZlQ2hhaW4gfHwgZWxlbWVudC0+aXNJbkFjdGl2ZUNoYWluKCkpCi0gICAg
ICAgICAgICBlbGVtZW50c1RvQWRkVG9DaGFpbi5hcHBlbmQoZWxlbWVudCk7Ci0gICAgfQotCi0g
ICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudHNUb1JlbW92ZUZyb21DaGFpbikKLSAgICAg
ICAgZWxlbWVudC0+c2V0SG92ZXJlZChmYWxzZSk7Ci0KICAgICBib29sIHNhd0NvbW1vbkFuY2Vz
dG9yID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudHNUb0FkZFRvQ2hh
aW4pIHsKKyAgICBmb3IgKGF1dG8qIGVsZW1lbnQgPSBuZXdIb3ZlcmVkRWxlbWVudDsgZWxlbWVu
dDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnRJbkNvbXBvc2VkVHJlZSgpKSB7Cisg
ICAgICAgIGlmIChtdXN0QmVJbkFjdGl2ZUNoYWluICYmICFlbGVtZW50LT5pc0luQWN0aXZlQ2hh
aW4oKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYWxsb3dBY3RpdmVDaGFu
Z2VzKQotICAgICAgICAgICAgZWxlbWVudC0+c2V0QWN0aXZlKHRydWUpOworICAgICAgICAgICAg
ZWxlbWVudHNUb1NldEFjdGl2ZS5hcHBlbmQoZWxlbWVudCk7CiAgICAgICAgIGlmIChlbGVtZW50
ID09IGNvbW1vbkFuY2VzdG9yKQogICAgICAgICAgICAgc2F3Q29tbW9uQW5jZXN0b3IgPSB0cnVl
OwotICAgICAgICBpZiAoIXNhd0NvbW1vbkFuY2VzdG9yKSB7Ci0gICAgICAgICAgICAvLyBFbGVt
ZW50cyBhZnRlciB0aGUgY29tbW9uIGhvdmVyIGFuY2VzdG9yIGRvZXMgbm90IGNoYW5nZSBob3Zl
ciBzdGF0ZSwgYnV0IGFyZSBpdGVyYXRlZCBvdmVyIGJlY2F1c2UgdGhleSBtYXkgY2hhbmdlIGFj
dGl2ZSBzdGF0ZS4KLSAgICAgICAgICAgIGVsZW1lbnQtPnNldEhvdmVyZWQodHJ1ZSk7Ci0gICAg
ICAgIH0KLSAgICB9CisgICAgICAgIGlmICghc2F3Q29tbW9uQW5jZXN0b3IpCisgICAgICAgICAg
ICBlbGVtZW50c1RvU2V0SG92ZXIuYXBwZW5kKGVsZW1lbnQpOworICAgIH0KKworICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGVsZW1lbnRzVG9DbGVhckFjdGl2ZSkKKyAgICAgICAgZWxlbWVudC0+
c2V0QWN0aXZlKGZhbHNlLCBmYWxzZSwgZWxlbWVudCA9PSBlbGVtZW50c1RvQ2xlYXJBY3RpdmUu
bGFzdCgpID8gRWxlbWVudDo6SXNVc2VyQWN0aW9uU3RhdGVDaGFuZ2VSb290OjpZZXMgOiBFbGVt
ZW50OjpJc1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJvb3Q6Ok5vKTsKKyAgICBmb3IgKGF1dG8mIGVs
ZW1lbnQgOiBlbGVtZW50c1RvU2V0QWN0aXZlKQorICAgICAgICBlbGVtZW50LT5zZXRBY3RpdmUo
dHJ1ZSwgZmFsc2UsIGVsZW1lbnQgPT0gZWxlbWVudHNUb1NldEFjdGl2ZS5sYXN0KCkgPyBFbGVt
ZW50OjpJc1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJvb3Q6OlllcyA6IEVsZW1lbnQ6OklzVXNlckFj
dGlvblN0YXRlQ2hhbmdlUm9vdDo6Tm8pOworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1l
bnRzVG9DbGVhckhvdmVyKQorICAgICAgICBlbGVtZW50LT5zZXRIb3ZlcmVkKGZhbHNlLCBlbGVt
ZW50ID09IGVsZW1lbnRzVG9DbGVhckhvdmVyLmxhc3QoKSA/IEVsZW1lbnQ6OklzVXNlckFjdGlv
blN0YXRlQ2hhbmdlUm9vdDo6WWVzIDogRWxlbWVudDo6SXNVc2VyQWN0aW9uU3RhdGVDaGFuZ2VS
b290OjpObyk7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudHNUb1NldEhvdmVyKQor
ICAgICAgICBlbGVtZW50LT5zZXRIb3ZlcmVkKHRydWUsIGVsZW1lbnQgPT0gZWxlbWVudHNUb1Nl
dEhvdmVyLmxhc3QoKSA/IEVsZW1lbnQ6OklzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdDo6WWVz
IDogRWxlbWVudDo6SXNVc2VyQWN0aW9uU3RhdGVDaGFuZ2VSb290OjpObyk7CiB9CiAKIGJvb2wg
RG9jdW1lbnQ6OmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKaW5kZXggY2M1ZTBkZTRiMTc0Li5iYjI0MjYzZTM3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKQEAgLTY3OCwxMiArNjc4LDEyIEBAIGJvb2wgRWxlbWVudDo6aXNVc2VyQWN0aW9uRWxlbWVu
dERyYWdnZWQoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCgpLnVzZXJBY3Rpb25FbGVtZW50
cygpLmlzQmVpbmdEcmFnZ2VkKCp0aGlzKTsKIH0KIAotdm9pZCBFbGVtZW50OjpzZXRBY3RpdmUo
Ym9vbCBmbGFnLCBib29sIHBhdXNlKQordm9pZCBFbGVtZW50OjpzZXRBY3RpdmUoYm9vbCBmbGFn
LCBib29sIHBhdXNlLCBJc1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJvb3QgaXNVc2VyQWN0aW9uU3Rh
dGVDaGFuZ2VSb290KQogewogICAgIGlmIChmbGFnID09IGFjdGl2ZSgpKQogICAgICAgICByZXR1
cm47CiAgICAgewotICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24g
c3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FjdGl2ZSk7
CisgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFs
aWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZlLCBpc1VzZXJBY3Rp
b25TdGF0ZUNoYW5nZVJvb3QpOwogICAgICAgICBkb2N1bWVudCgpLnVzZXJBY3Rpb25FbGVtZW50
cygpLnNldEFjdGl2ZSgqdGhpcywgZmxhZyk7CiAgICAgfQogCkBAIC03NTUsMTIgKzc1NSwxMiBA
QCB2b2lkIEVsZW1lbnQ6OnNldEhhc0ZvY3VzV2l0aGluKGJvb2wgZmxhZykKICAgICB9CiB9CiAK
LXZvaWQgRWxlbWVudDo6c2V0SG92ZXJlZChib29sIGZsYWcpCit2b2lkIEVsZW1lbnQ6OnNldEhv
dmVyZWQoYm9vbCBmbGFnLCBJc1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJvb3QgaXNVc2VyQWN0aW9u
U3RhdGVDaGFuZ2VSb290KQogewogICAgIGlmIChmbGFnID09IGhvdmVyZWQoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIHsKLSAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0
aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3Zl
cik7CisgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHlsZUlu
dmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXIsIGlzVXNlckFj
dGlvblN0YXRlQ2hhbmdlUm9vdCk7CiAgICAgICAgIGRvY3VtZW50KCkudXNlckFjdGlvbkVsZW1l
bnRzKCkuc2V0SG92ZXJlZCgqdGhpcywgZmxhZyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApp
bmRleCAwOTEzZDAxOTViYTAuLjU2NTdmNWUxYzY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0z
MjEsOCArMzIxLDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNCZWluZ0RyYWdnZWQoKSBjb25zdCB7
IHJldHVybiBpc1VzZXJBY3Rpb25FbGVtZW50KCkgJiYgaXNVc2VyQWN0aW9uRWxlbWVudERyYWdn
ZWQoKTsgfQogICAgIGJvb2wgaGFzRm9jdXNXaXRoaW4oKSBjb25zdCB7IHJldHVybiBoYXNOb2Rl
RmxhZyhOb2RlRmxhZzo6SGFzRm9jdXNXaXRoaW4pOyB9OwogCi0gICAgdmlydHVhbCB2b2lkIHNl
dEFjdGl2ZShib29sID0gdHJ1ZSwgYm9vbCBwYXVzZSA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0SG92ZXJlZChib29sID0gdHJ1ZSk7CisgICAgZW51bSBjbGFzcyBJc1VzZXJBY3Rpb25T
dGF0ZUNoYW5nZVJvb3QgeyBZZXMsIE5vIH07CisgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShi
b29sID0gdHJ1ZSwgYm9vbCBwYXVzZSA9IGZhbHNlLCBJc1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJv
b3QgPSBJc1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJvb3Q6Olllcyk7CisgICAgdmlydHVhbCB2b2lk
IHNldEhvdmVyZWQoYm9vbCA9IHRydWUsIElzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdCA9IElz
VXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdDo6WWVzKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9j
dXMoYm9vbCk7CiAgICAgdm9pZCBzZXRCZWluZ0RyYWdnZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRI
YXNGb2N1c1dpdGhpbihib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAKaW5kZXggMDg3ODdlODQwM2I4Li4wYTUzZWU2MGVjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBIVE1M
QW5jaG9yRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCiAgICAgSFRN
TEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCi12b2lkIEhUTUxBbmNo
b3JFbGVtZW50OjpzZXRBY3RpdmUoYm9vbCBkb3duLCBib29sIHBhdXNlKQordm9pZCBIVE1MQW5j
aG9yRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wgZG93biwgYm9vbCBwYXVzZSwgSXNVc2VyQWN0aW9u
U3RhdGVDaGFuZ2VSb290IGlzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdCkKIHsKICAgICBpZiAo
aGFzRWRpdGFibGVTdHlsZSgpKSB7CiAgICAgICAgIHN3aXRjaCAoZG9jdW1lbnQoKS5zZXR0aW5n
cygpLmVkaXRhYmxlTGlua0JlaGF2aW9yKCkpIHsKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIEhU
TUxBbmNob3JFbGVtZW50OjpzZXRBY3RpdmUoYm9vbCBkb3duLCBib29sIHBhdXNlKQogICAgICAg
ICB9CiAgICAgfQogICAgIAotICAgIEhUTUxFbGVtZW50OjpzZXRBY3RpdmUoZG93biwgcGF1c2Up
OworICAgIEhUTUxFbGVtZW50OjpzZXRBY3RpdmUoZG93biwgcGF1c2UsIGlzVXNlckFjdGlvblN0
YXRlQ2hhbmdlUm9vdCk7CiB9CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCmluZGV4IDY3ZGYwMWUwYTg1Zi4u
N2MyYWZmYzg4NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCkBA
IC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQq
KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmKSBm
aW5hbDsKLSAgICB2b2lkIHNldEFjdGl2ZShib29sIGFjdGl2ZSA9IHRydWUsIGJvb2wgcGF1c2Ug
PSBmYWxzZSkgZmluYWw7CisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCBhY3RpdmUsIGJvb2wgcGF1
c2UsIElzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdCkgZmluYWw7CiAgICAgYm9vbCBhY2Nlc3NL
ZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIGZpbmFsOwogICAgIGJvb2wgaXNVUkxBdHRy
aWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5TdGFydFNl
bGVjdGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGFiZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVu
dC5jcHAKaW5kZXggNDI2ZjE2YmM2MWQ2Li4wYTQwMWZhNDY5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcApAQCAtODUsMjYgKzg1LDI2IEBAIEhUTUxGb3JtRWxl
bWVudCogSFRNTExhYmVsRWxlbWVudDo6Zm9ybSgpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0
PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KGNvbnRyb2wuZ2V0KCkpLT5mb3JtKCk7CiB9CiAKLXZv
aWQgSFRNTExhYmVsRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wgZG93biwgYm9vbCBwYXVzZSkKK3Zv
aWQgSFRNTExhYmVsRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wgZG93biwgYm9vbCBwYXVzZSwgSXNV
c2VyQWN0aW9uU3RhdGVDaGFuZ2VSb290IGlzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdCkKIHsK
ICAgICBpZiAoZG93biA9PSBhY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVXBk
YXRlIG91ciBzdGF0dXMgZmlyc3QuCi0gICAgSFRNTEVsZW1lbnQ6OnNldEFjdGl2ZShkb3duLCBw
YXVzZSk7CisgICAgSFRNTEVsZW1lbnQ6OnNldEFjdGl2ZShkb3duLCBwYXVzZSwgaXNVc2VyQWN0
aW9uU3RhdGVDaGFuZ2VSb290KTsKIAogICAgIC8vIEFsc28gdXBkYXRlIG91ciBjb3JyZXNwb25k
aW5nIGNvbnRyb2wuCiAgICAgaWYgKGF1dG8gZWxlbWVudCA9IGNvbnRyb2woKSkKICAgICAgICAg
ZWxlbWVudC0+c2V0QWN0aXZlKGRvd24sIHBhdXNlKTsKIH0KIAotdm9pZCBIVE1MTGFiZWxFbGVt
ZW50OjpzZXRIb3ZlcmVkKGJvb2wgb3ZlcikKK3ZvaWQgSFRNTExhYmVsRWxlbWVudDo6c2V0SG92
ZXJlZChib29sIG92ZXIsIElzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdCBpc1VzZXJBY3Rpb25T
dGF0ZUNoYW5nZVJvb3QpCiB7CiAgICAgaWYgKG92ZXIgPT0gaG92ZXJlZCgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgICAgIAogICAgIC8vIFVwZGF0ZSBvdXIgc3RhdHVzIGZpcnN0LgotICAgIEhU
TUxFbGVtZW50OjpzZXRIb3ZlcmVkKG92ZXIpOworICAgIEhUTUxFbGVtZW50OjpzZXRIb3ZlcmVk
KG92ZXIsIGlzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdCk7CiAKICAgICAvLyBBbHNvIHVwZGF0
ZSBvdXIgY29ycmVzcG9uZGluZyBjb250cm9sLgogICAgIGlmIChhdXRvIGVsZW1lbnQgPSBjb250
cm9sKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5oCmluZGV4IDgwZTE1YzIy
NTc5ZC4uMTVjNGM3MzY1NGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
YWJlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQu
aApAQCAtNDUsOCArNDUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgYWNjZXNzS2V5QWN0aW9uKGJv
b2wgc2VuZE1vdXNlRXZlbnRzKSBmaW5hbDsKIAogICAgIC8vIE92ZXJyaWRkZW4gdG8gdXBkYXRl
IHRoZSBob3Zlci9hY3RpdmUgc3RhdGUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgY29udHJvbC4KLSAg
ICB2b2lkIHNldEFjdGl2ZShib29sID0gdHJ1ZSwgYm9vbCBwYXVzZSA9IGZhbHNlKSBmaW5hbDsK
LSAgICB2b2lkIHNldEhvdmVyZWQoYm9vbCA9IHRydWUpIGZpbmFsOworICAgIHZvaWQgc2V0QWN0
aXZlKGJvb2wsIGJvb2wgcGF1c2UsIElzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdCkgZmluYWw7
CisgICAgdm9pZCBzZXRIb3ZlcmVkKGJvb2wsIElzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdCkg
ZmluYWw7CiAKICAgICAvLyBPdmVycmlkZGVuIHRvIGVpdGhlciBjbGljaygpIG9yIGZvY3VzKCkg
dGhlIGNvcnJlc3BvbmRpbmcgY29udHJvbC4KICAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Nw
aW5CdXR0b25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0
b25FbGVtZW50LmNwcAppbmRleCAxOWJiZjI0YTYxNmIuLjgxYmJmM2E5OGFkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcApAQCAtMjQ5
LDExICsyNDksMTEgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6cmVwZWF0aW5nVGltZXJGaXJl
ZCgpCiAgICAgICAgIHN0ZXAobV91cERvd25TdGF0ZSA9PSBVcCA/IDEgOiAtMSk7CiB9CiAKLXZv
aWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OnNldEhvdmVyZWQoYm9vbCBmbGFnKQordm9pZCBTcGluQnV0
dG9uRWxlbWVudDo6c2V0SG92ZXJlZChib29sIGZsYWcsIElzVXNlckFjdGlvblN0YXRlQ2hhbmdl
Um9vdCBpc1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJvb3QpCiB7CiAgICAgaWYgKCFmbGFnKQogICAg
ICAgICBtX3VwRG93blN0YXRlID0gSW5kZXRlcm1pbmF0ZTsKLSAgICBIVE1MRGl2RWxlbWVudDo6
c2V0SG92ZXJlZChmbGFnKTsKKyAgICBIVE1MRGl2RWxlbWVudDo6c2V0SG92ZXJlZChmbGFnLCBp
c1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJvb3QpOwogfQogCiBib29sIFNwaW5CdXR0b25FbGVtZW50
OjpzaG91bGRSZXNwb25kVG9Nb3VzZUV2ZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaAppbmRleCAxOGNiYjZiODNhM2YuLjUxNDhhODIwOGE2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5o
CkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFJlcGVhdGluZ1RpbWVy
KCk7CiAgICAgdm9pZCBzdG9wUmVwZWF0aW5nVGltZXIoKTsKICAgICB2b2lkIHJlcGVhdGluZ1Rp
bWVyRmlyZWQoKTsKLSAgICB2b2lkIHNldEhvdmVyZWQoYm9vbCA9IHRydWUpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0SG92ZXJlZChib29sLCBJc1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJvb3QpIG92
ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkUmVzcG9uZFRvTW91c2VFdmVudHMoKTsKICAgICBib29s
IGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbi5jcHAKaW5kZXggYjcxNWJjOWEzNWJlLi43OGZmNWJjM2JkNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBTdHlsZSB7
CiAKLXZvaWQgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmNvbXB1dGVJbnZhbGlkYXRp
b24oQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzcykKK3ZvaWQgUHNldWRv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmNvbXB1dGVJbnZhbGlkYXRpb24oQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzcywgRWxlbWVudDo6SXNVc2VyQWN0aW9uU3RhdGVD
aGFuZ2VSb290IGlzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdCkKIHsKICAgICBib29sIHNob3Vs
ZEludmFsaWRhdGVDdXJyZW50ID0gZmFsc2U7CiAgICAgYm9vbCBtYXlBZmZlY3RTdHlsZUluU2hh
ZG93VHJlZSA9IGZhbHNlOwpAQCAtNTQsOCArNTQsMTcgQEAgdm9pZCBQc2V1ZG9DbGFzc0NoYW5n
ZUludmFsaWRhdGlvbjo6Y29tcHV0ZUludmFsaWRhdGlvbihDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3MKIAogICAgIGF1dG8mIHJ1bGVTZXRzID0gbV9lbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5ydWxl
U2V0cygpOwogICAgIGlmIChhdXRvKiBpbnZhbGlkYXRpb25SdWxlU2V0cyA9IHJ1bGVTZXRzLnBz
ZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMocHNldWRvQ2xhc3MpKSB7Ci0gICAgICAgIGZv
ciAoYXV0byYgaW52YWxpZGF0aW9uUnVsZVNldCA6ICppbnZhbGlkYXRpb25SdWxlU2V0cykKKyAg
ICAgICAgZm9yIChhdXRvJiBpbnZhbGlkYXRpb25SdWxlU2V0IDogKmludmFsaWRhdGlvblJ1bGVT
ZXRzKSB7CisgICAgICAgICAgICAvLyBGb3IgZm9jdXMvaG92ZXIgd2UgZmxpcCB0aGUgd2hvbGUg
YW5jZXN0b3IgY2hhaW4uIFdlIG9ubHkgbmVlZCB0byBkbyBkZWVwIGludmFsaWRhdGlvbiB0cmF2
ZXJzYWwgaW4gdGhlIGNoYW5nZSByb290LgorICAgICAgICAgICAgYXV0byBzaG91bGRJbnZhbGlk
YXRlID0gWyZdIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNVc2VyQWN0aW9uU3RhdGVDaGFuZ2VS
b290ID09IEVsZW1lbnQ6OklzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9vdDo6WWVzKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW52YWxp
ZGF0aW9uUnVsZVNldC5tYXRjaEVsZW1lbnQgIT0gTWF0Y2hFbGVtZW50OjpBbmNlc3RvcjsKKyAg
ICAgICAgICAgIH0oKTsKKyAgICAgICAgICAgIGlmICghc2hvdWxkSW52YWxpZGF0ZSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIEludmFsaWRhdG9yOjphZGRUb01hdGNo
RWxlbWVudFJ1bGVTZXRzKG1fbWF0Y2hFbGVtZW50UnVsZVNldHMsIGludmFsaWRhdGlvblJ1bGVT
ZXQpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaAppbmRleCBhNGM1ODBjYzJkZmIuLjI4
M2IyYjAwMzFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFz
c0NoYW5nZUludmFsaWRhdGlvbi5oCkBAIC0zNSwxMSArMzUsMTEgQEAgbmFtZXNwYWNlIFN0eWxl
IHsKIAogY2xhc3MgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gewogcHVibGljOgotICAg
IFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQmLCBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NUeXBlKTsKKyAgICBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbihFbGVtZW50
JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgRWxlbWVudDo6SXNVc2VyQWN0aW9uU3Rh
dGVDaGFuZ2VSb290ID0gRWxlbWVudDo6SXNVc2VyQWN0aW9uU3RhdGVDaGFuZ2VSb290OjpZZXMp
OwogICAgIH5Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbigpOwogCiBwcml2YXRlOgotICAg
IHZvaWQgY29tcHV0ZUludmFsaWRhdGlvbihDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlKTsK
KyAgICB2b2lkIGNvbXB1dGVJbnZhbGlkYXRpb24oQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlw
ZSwgRWxlbWVudDo6SXNVc2VyQWN0aW9uU3RhdGVDaGFuZ2VSb290KTsKICAgICB2b2lkIGludmFs
aWRhdGVTdHlsZVdpdGhSdWxlU2V0cygpOwogCiAgICAgY29uc3QgYm9vbCBtX2lzRW5hYmxlZDsK
QEAgLTQ4LDE0ICs0OCwxNCBAQCBwcml2YXRlOgogICAgIEludmFsaWRhdG9yOjpNYXRjaEVsZW1l
bnRSdWxlU2V0cyBtX21hdGNoRWxlbWVudFJ1bGVTZXRzOwogfTsKIAotaW5saW5lIFBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbihFbGVt
ZW50JiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkb0NsYXNzVHlw
ZSkKK2lubGluZSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6UHNldWRvQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb24oRWxlbWVudCYgZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
VHlwZSBwc2V1ZG9DbGFzc1R5cGUsIEVsZW1lbnQ6OklzVXNlckFjdGlvblN0YXRlQ2hhbmdlUm9v
dCBpc1VzZXJBY3Rpb25TdGF0ZUNoYW5nZVJvb3QpCiAgICAgOiBtX2lzRW5hYmxlZChlbGVtZW50
Lm5lZWRzU3R5bGVJbnZhbGlkYXRpb24oKSkKICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogCiB7
CiAgICAgaWYgKCFtX2lzRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwotICAgIGNvbXB1dGVJbnZh
bGlkYXRpb24ocHNldWRvQ2xhc3NUeXBlKTsKKyAgICBjb21wdXRlSW52YWxpZGF0aW9uKHBzZXVk
b0NsYXNzVHlwZSwgaXNVc2VyQWN0aW9uU3RhdGVDaGFuZ2VSb290KTsKICAgICBpbnZhbGlkYXRl
U3R5bGVXaXRoUnVsZVNldHMoKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>