<?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>78662</bug_id>
          
          <creation_ts>2012-02-14 19:37:22 -0800</creation_ts>
          <short_desc>CSSStyleSelector should not rely on parent rule pointer in StylePropertySet</short_desc>
          <delta_ts>2012-07-27 08:16:24 -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>CSS</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>
          
          <blocked>77745</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kling</cc>
    
    <cc>vollick</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>556882</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-14 19:37:22 -0800</bug_when>
    <thetext>The parent pointer is going away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556937</commentid>
    <comment_count>1</comment_count>
      <attachid>127118</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-14 22:33:17 -0800</bug_when>
    <thetext>Created attachment 127118
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556943</commentid>
    <comment_count>2</comment_count>
      <attachid>127118</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-14 22:54:23 -0800</bug_when>
    <thetext>Comment on attachment 127118
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556949</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-14 22:59:29 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/107783</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127118</attachid>
            <date>2012-02-14 22:33:17 -0800</date>
            <delta_ts>2012-02-14 22:54:23 -0800</delta_ts>
            <desc>patch</desc>
            <filename>styleselector-rule-parent-2.patch</filename>
            <type>text/plain</type>
            <size>45441</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEyLTAyLTE0ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg2NjIKKyAgICAgICAgQ1NTU3R5bGVTZWxlY3RvciBzaG91
bGQgbm90IHJlbHkgb24gcGFyZW50IHJ1bGUgcG9pbnRlciBpbiBTdHlsZVByb3BlcnR5U2V0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFzcyB0aGUg
cnVsZSBwb2ludGVyIGRvd24gdG8gdGhlIHN0eWxlIGFwcGx5aW5nIHNvIHdlIGRvbid0IG5lZWQg
dG8gcmVseSBvbgorICAgICAgICBTdHlsZVByb3BlcnR5U2V0IGhhdmluZyBvbmUuCisKKyAgICAg
ICAgVG8gbWFrZSB0aGlzIGVhc2llciB0aGUgcGF0Y2ggYWxzbyByZWZhY3RvcnMgdGhlIG1hdGNo
ZWQgcHJvcGVydGllcyB2ZWN0b3IgdG8KKyAgICAgICAgYmUgcGFydCBvZiBNYXRjaFJlc3VsdCBv
YmplY3QgaW5zdGVhZCBvZiBhIG1lbWJlciBvZiBDU1NTdHlsZVNlbGVjdG9yLgorICAgICAgICAK
KyAgICAgICAgUmVuYW1lIERlY2xhcmF0aW9uIC0+IFByb3BlcnRpZXMuCisgICAgICAgIAorICAg
ICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9u
dFNlbGVjdG9yOjpkaXNwYXRjaEludmFsaWRhdGlvbkNhbGxiYWNrcyk6CisgICAgICAgICogY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rv
cjo6Q1NTU3R5bGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
Ojpzd2VlcE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTZWxlY3Rvcjo6YWRkTWF0Y2hlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTZWxlY3Rvcjo6c29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hBdXRob3JSdWxlcyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFVzZXJSdWxlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFVBUnVsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoQWxsUnVsZXMpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjppbml0Rm9yU3R5
bGVSZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoZXNS
dWxlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvcktleWZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnBzZXVkb1N0eWxlRm9y
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvclBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxl
c0ZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6aXNJbnNpZGVSZWdpb25SdWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseU1hdGNoZWRQcm9wZXJ0aWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmNvbXB1dGVNYXRjaGVkUHJvcGVy
dGllc0hhc2gpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJD
b3JlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmZp
bmRGcm9tTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNlbGVjdG9yOjphZGRUb01hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6aW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNDYWNoZWFibGVJbk1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hQYWdlUnVsZXMpOgorICAg
ICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgIChDU1NTdHlsZVNlbGVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFkZE1hdGNoZWRSdWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Ok1hdGNoZWRQcm9wZXJ0aWVzOjpN
YXRjaGVkUHJvcGVydGllcyk6CisgICAgICAgIChNYXRjaGVkUHJvcGVydGllcyk6CisgICAgICAg
IChNYXRjaFJlc3VsdCk6CisgICAgICAgIChNYXRjaGVkUHJvcGVydGllc0NhY2hlSXRlbSk6CisK
IDIwMTItMDItMTQgIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jkb25AZ21haWwuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDc3NzQuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmNwcAkocmV2aXNpb24gMTA3NzM1KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMyw3ICszMzMs
NyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6ZGlzcGF0Y2hJbnZhbGlkYXRpCiAgICAgaWYgKCFt
X2RvY3VtZW50KQogICAgICAgICByZXR1cm47CiAgICAgaWYgKENTU1N0eWxlU2VsZWN0b3IqIHN0
eWxlU2VsZWN0b3IgPSBtX2RvY3VtZW50LT5zdHlsZVNlbGVjdG9ySWZFeGlzdHMoKSkKLSAgICAg
ICAgc3R5bGVTZWxlY3Rvci0+aW52YWxpZGF0ZU1hdGNoZWREZWNsYXJhdGlvbkNhY2hlKCk7Cisg
ICAgICAgIHN0eWxlU2VsZWN0b3ItPmludmFsaWRhdGVNYXRjaGVkUHJvcGVydGllc0NhY2hlKCk7
CiAgICAgaWYgKG1fZG9jdW1lbnQtPmluUGFnZUNhY2hlKCkgfHwgIW1fZG9jdW1lbnQtPnJlbmRl
cmVyKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2RvY3VtZW50LT5zY2hlZHVsZUZvcmNlZFN0
eWxlUmVjYWxjKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CShyZXZpc2lvbiAxMDc3MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxOCw3ICszMTgsNyBAQCBDU1NTdHlsZVNlbGVjdG9y
OjpDU1NTdHlsZVNlbGVjdG9yKERvY3VtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgc3RyaWN0UGFyc2luZywgYm9vbCBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpCiAg
ICAgOiBtX2hhc1VBQXBwZWFyYW5jZShmYWxzZSkKICAgICAsIG1fYmFja2dyb3VuZERhdGEoQmFj
a2dyb3VuZEZpbGxMYXllcikKLSAgICAsIG1fbWF0Y2hlZERlY2xhcmF0aW9uQ2FjaGVBZGRpdGlv
bnNTaW5jZUxhc3RTd2VlcCgwKQorICAgICwgbV9tYXRjaGVkUHJvcGVydGllc0NhY2hlQWRkaXRp
b25zU2luY2VMYXN0U3dlZXAoMCkKICAgICAsIG1fY2hlY2tlcihkb2N1bWVudCwgc3RyaWN0UGFy
c2luZykKICAgICAsIG1fcGFyZW50U3R5bGUoMCkKICAgICAsIG1fcm9vdEVsZW1lbnRTdHlsZSgw
KQpAQCAtNTcyLDI1ICs1NzIsMjUgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6fkNTU1N0eWxlU2VsZWN0
b3IoKQogICAgIG1fZm9udFNlbGVjdG9yLT5jbGVhckRvY3VtZW50KCk7CiB9CiAKLXZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6c3dlZXBNYXRjaGVkRGVjbGFyYXRpb25DYWNoZSgpCit2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OnN3ZWVwTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSgpCiB7CiAgICAgLy8gTG9v
ayBmb3IgY2FjaGUgZW50cmllcyBjb250YWluaW5nIGEgc3R5bGUgZGVjbGFyYXRpb24gd2l0aCBh
IHNpbmdsZSByZWYgYW5kIHJlbW92ZSB0aGVtLgogICAgIC8vIFRoaXMgbWF5IGhhcHBlbiB3aGVu
IGFuIGVsZW1lbnQgYXR0cmlidXRlIG11dGF0aW9uIGNhdXNlcyBpdCB0byBzd2FwIG91dCBpdHMg
QXR0cmlidXRlOjpkZWNsKCkKICAgICAvLyBmb3IgYW5vdGhlciBDU1NNYXBwZWRBdHRyaWJ1dGVE
ZWNsYXJhdGlvbiwgcG90ZW50aWFsbHkgbGVhdmluZyB0aGlzIGNhY2hlIHdpdGggdGhlIGxhc3Qg
cmVmLgogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTY+IHRvUmVtb3ZlOwotICAgIE1hdGNoZWRTdHls
ZURlY2xhcmF0aW9uQ2FjaGU6Oml0ZXJhdG9yIGl0ID0gbV9tYXRjaGVkU3R5bGVEZWNsYXJhdGlv
bkNhY2hlLmJlZ2luKCk7Ci0gICAgTWF0Y2hlZFN0eWxlRGVjbGFyYXRpb25DYWNoZTo6aXRlcmF0
b3IgZW5kID0gbV9tYXRjaGVkU3R5bGVEZWNsYXJhdGlvbkNhY2hlLmVuZCgpOworICAgIE1hdGNo
ZWRQcm9wZXJ0aWVzQ2FjaGU6Oml0ZXJhdG9yIGl0ID0gbV9tYXRjaGVkUHJvcGVydGllc0NhY2hl
LmJlZ2luKCk7CisgICAgTWF0Y2hlZFByb3BlcnRpZXNDYWNoZTo6aXRlcmF0b3IgZW5kID0gbV9t
YXRjaGVkUHJvcGVydGllc0NhY2hlLmVuZCgpOwogICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgVmVjdG9yPE1hdGNoZWRTdHlsZURlY2xhcmF0aW9uPiYgbWF0Y2hlZFN0eWxl
RGVjbGFyYXRpb25zID0gaXQtPnNlY29uZC5tYXRjaGVkU3R5bGVEZWNsYXJhdGlvbnM7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF0Y2hlZFN0eWxlRGVjbGFyYXRpb25zLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAobWF0Y2hlZFN0eWxlRGVjbGFyYXRpb25zW2ldLnN0
eWxlRGVjbGFyYXRpb24tPmhhc09uZVJlZigpKSB7CisgICAgICAgIFZlY3RvcjxNYXRjaGVkUHJv
cGVydGllcz4mIG1hdGNoZWRQcm9wZXJ0aWVzID0gaXQtPnNlY29uZC5tYXRjaGVkUHJvcGVydGll
czsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXRjaGVkUHJvcGVydGllcy5zaXpl
KCk7ICsraSkgeworICAgICAgICAgICAgaWYgKG1hdGNoZWRQcm9wZXJ0aWVzW2ldLnByb3BlcnRp
ZXMtPmhhc09uZVJlZigpKSB7CiAgICAgICAgICAgICAgICAgdG9SZW1vdmUuYXBwZW5kKGl0LT5m
aXJzdCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0b1JlbW92ZS5zaXplKCk7ICsraSkK
LSAgICAgICAgbV9tYXRjaGVkU3R5bGVEZWNsYXJhdGlvbkNhY2hlLnJlbW92ZSh0b1JlbW92ZVtp
XSk7CisgICAgICAgIG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNoZS5yZW1vdmUodG9SZW1vdmVbaV0p
OwogfQogCiBDU1NTdHlsZVNlbGVjdG9yOjpGZWF0dXJlczo6RmVhdHVyZXMoKQpAQCAtNzQ3LDEy
ICs3NDcsMTMgQEAgc3RhdGljIHZvaWQgZW5zdXJlRGVmYXVsdFN0eWxlU2hlZXRzRm9yRQogICAg
IEFTU0VSVF9VTlVTRUQobG9hZGVkTWF0aE1MVXNlckFnZW50U2hlZXQsIGxvYWRlZE1hdGhNTFVz
ZXJBZ2VudFNoZWV0IHx8IGRlZmF1bHRTdHlsZS0+ZmVhdHVyZXMoKS5zaWJsaW5nUnVsZXMuaXNF
bXB0eSgpKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphZGRNYXRjaGVkRGVjbGFyYXRp
b24oU3R5bGVQcm9wZXJ0eVNldCogc3R5bGVEZWNsYXJhdGlvbiwgdW5zaWduZWQgbGlua01hdGNo
VHlwZSkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YWRkTWF0Y2hlZFByb3BlcnRpZXMoTWF0Y2hS
ZXN1bHQmIG1hdGNoUmVzdWx0LCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzLCBDU1NTdHls
ZVJ1bGUqIHJ1bGUsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUpCiB7Ci0gICAgbV9tYXRjaGVkRGVj
bHMuZ3JvdyhtX21hdGNoZWREZWNscy5zaXplKCkgKyAxKTsKLSAgICBNYXRjaGVkU3R5bGVEZWNs
YXJhdGlvbiYgbmV3RGVjbGFyYXRpb24gPSBtX21hdGNoZWREZWNscy5sYXN0KCk7Ci0gICAgbmV3
RGVjbGFyYXRpb24uc3R5bGVEZWNsYXJhdGlvbiA9IHN0eWxlRGVjbGFyYXRpb247Ci0gICAgbmV3
RGVjbGFyYXRpb24ubGlua01hdGNoVHlwZSA9IGxpbmtNYXRjaFR5cGU7CisgICAgbWF0Y2hSZXN1
bHQubWF0Y2hlZFByb3BlcnRpZXMuZ3JvdyhtYXRjaFJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5z
aXplKCkgKyAxKTsKKyAgICBNYXRjaGVkUHJvcGVydGllcyYgbmV3UHJvcGVydGllcyA9IG1hdGNo
UmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLmxhc3QoKTsKKyAgICBuZXdQcm9wZXJ0aWVzLnByb3Bl
cnRpZXMgPSBwcm9wZXJ0aWVzOworICAgIG5ld1Byb3BlcnRpZXMubGlua01hdGNoVHlwZSA9IGxp
bmtNYXRjaFR5cGU7CisgICAgbWF0Y2hSZXN1bHQubWF0Y2hlZFJ1bGVzLmFwcGVuZChydWxlKTsK
IH0KIAogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhSdWxlU2V0
KiBydWxlcywgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBib29sIGlu
Y2x1ZGVFbXB0eVJ1bGVzKQpAQCAtODAwLDcgKzgwMSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6Y29sbGVjdE1hdGNoaW5nUnUKICAgICB9CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
c29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKCkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6c29y
dEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQpCiB7CiAgICAgaWYg
KG1fbWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODI0LDExICs4
MjUsMTEgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpzb3J0QW5kVHJhbnNmZXJNYQogICAgICAg
ICB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlID0gbV9tYXRjaGVkUnVsZXNbaV0tPmxpbmtNYXRjaFR5
cGUoKTsKICAgICAgICAgaWYgKHN3YXBWaXNpdGVkVW52aXNpdGVkICYmIGxpbmtNYXRjaFR5cGUg
JiYgbGlua01hdGNoVHlwZSAhPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoQWxsKQogICAgICAgICAg
ICAgbGlua01hdGNoVHlwZSA9IChsaW5rTWF0Y2hUeXBlID09IFNlbGVjdG9yQ2hlY2tlcjo6TWF0
Y2hWaXNpdGVkKSA/IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5rIDogU2VsZWN0b3JDaGVja2Vy
OjpNYXRjaFZpc2l0ZWQ7Ci0gICAgICAgIGFkZE1hdGNoZWREZWNsYXJhdGlvbihtX21hdGNoZWRS
dWxlc1tpXS0+cnVsZSgpLT5kZWNsYXJhdGlvbigpLCBsaW5rTWF0Y2hUeXBlKTsKKyAgICAgICAg
YWRkTWF0Y2hlZFByb3BlcnRpZXMocmVzdWx0LCBtX21hdGNoZWRSdWxlc1tpXS0+cnVsZSgpLT5k
ZWNsYXJhdGlvbigpLCBtX21hdGNoZWRSdWxlc1tpXS0+cnVsZSgpLCBsaW5rTWF0Y2hUeXBlKTsK
ICAgICB9CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hTY29wZWRBdXRob3JSdWxl
cyhpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGJvb2wgaW5jbHVkZUVt
cHR5UnVsZXMpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMo
TWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKIHsKICNpZiBFTkFC
TEUoU1RZTEVfU0NPUEVEKQogICAgIGlmIChtX3Njb3BlZEF1dGhvclN0eWxlcy5pc0VtcHR5KCkp
CkBAIC04MzksNDkgKzg0MCw1NiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoU2NvcGVk
QXV0aG9yCiAgICAgaWYgKCFzY29waW5nRWxlbWVudFN0YWNrSXNDb25zaXN0ZW50KHBhcmVudCkp
CiAgICAgICAgIHNldHVwU2NvcGluZ0VsZW1lbnRTdGFjayhwYXJlbnQpOwogICAgIGZvciAoc2l6
ZV90IGkgPSBtX3Njb3BpbmdFbGVtZW50U3RhY2suc2l6ZSgpOyBpOyAtLWkpIHsKLSAgICAgICAg
Y29sbGVjdE1hdGNoaW5nUnVsZXMobV9zY29waW5nRWxlbWVudFN0YWNrW2kgLSAxXS5tX3J1bGVT
ZXQsIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBpbmNsdWRlRW1wdHlSdWxlcyk7Ci0g
ICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKG1fc2NvcGluZ0VsZW1lbnRTdGFj
a1tpIC0gMV0ubV9ydWxlU2V0LCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgaW5jbHVk
ZUVtcHR5UnVsZXMpOworICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhtX3Njb3BpbmdFbGVt
ZW50U3RhY2tbaSAtIDFdLm1fcnVsZVNldCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9y
UnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBpbmNsdWRlRW1wdHlSdWxl
cyk7CisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKG1fc2NvcGluZ0VsZW1l
bnRTdGFja1tpIC0gMV0ubV9ydWxlU2V0LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JS
dWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIGluY2x1ZGVFbXB0eVJ1bGVz
KTsKICAgICB9CiAgICAgLy8gQWxzbyBpbmNsdWRlIHRoZSBjdXJyZW50IGVsZW1lbnQuCiAgICAg
UnVsZVNldCogcnVsZVNldCA9IHNjb3BlZFJ1bGVTZXRGb3JFbGVtZW50KG1fZWxlbWVudCk7CiAg
ICAgaWYgKHJ1bGVTZXQpIHsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMocnVsZVNldCwg
Zmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKLSAgICAg
ICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24ocnVsZVNldCwgZmlyc3RSdWxlSW5kZXgs
IGxhc3RSdWxlSW5kZXgsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICAgICAgY29sbGVjdE1hdGNo
aW5nUnVsZXMocnVsZVNldCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgbWF0
Y2hSZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBpbmNsdWRlRW1wdHlSdWxlcyk7CisgICAg
ICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKHJ1bGVTZXQsIG1hdGNoUmVzdWx0LnJh
bmdlcy5maXJzdEF1dGhvclJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwg
aW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIH0KICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGZpcnN0
UnVsZUluZGV4KTsKLSAgICBVTlVTRURfUEFSQU0obGFzdFJ1bGVJbmRleCk7CisgICAgVU5VU0VE
X1BBUkFNKHJlc3VsdCk7CiAgICAgVU5VU0VEX1BBUkFNKGluY2x1ZGVFbXB0eVJ1bGVzKTsKICNl
bmRpZgogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoQXV0aG9yUnVsZXMoaW50JiBm
aXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVz
KQordm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiBy
ZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCiB7CiAgICAgbV9tYXRjaGVkUnVsZXMuY2xl
YXIoKTsKIAotICAgIGlmICghbV9lbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBN
YXRjaCBnbG9iYWwgYXV0aG9yIHJ1bGVzLgotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1fYXV0
aG9yU3R5bGUuZ2V0KCksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBpbmNsdWRlRW1w
dHlSdWxlcyk7Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obV9hdXRob3JTdHls
ZS5nZXQoKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIGluY2x1ZGVFbXB0eVJ1bGVz
KTsKKyAgICByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlID0gcmVzdWx0Lm1hdGNoZWRQcm9w
ZXJ0aWVzLnNpemUoKSAtIDE7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobV9hdXRob3JTdHls
ZS5nZXQoKSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFz
dEF1dGhvclJ1bGUsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxl
c0ZvclJlZ2lvbihtX2F1dGhvclN0eWxlLmdldCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9y
UnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwgaW5jbHVkZUVtcHR5UnVsZXMpOwog
Ci0gICAgbWF0Y2hTY29wZWRBdXRob3JSdWxlcyhmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRl
eCwgaW5jbHVkZUVtcHR5UnVsZXMpOworICAgIG1hdGNoU2NvcGVkQXV0aG9yUnVsZXMocmVzdWx0
LCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAKLSAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMo
KTsKKyAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVzdWx0KTsKIH0KIAotdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjptYXRjaFJ1bGVzKFJ1bGVTZXQqIHJ1bGVzLCBpbnQmIGZpcnN0UnVs
ZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCit2b2lk
IENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoVXNlclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJv
b2wgaW5jbHVkZUVtcHR5UnVsZXMpCiB7CisgICAgaWYgKCFtX3VzZXJTdHlsZSkKKyAgICAgICAg
cmV0dXJuOworICAgIAogICAgIG1fbWF0Y2hlZFJ1bGVzLmNsZWFyKCk7CiAKLSAgICBpZiAoIXJ1
bGVzIHx8ICFtX2VsZW1lbnQpCi0gICAgICAgIHJldHVybjsKKyAgICByZXN1bHQucmFuZ2VzLmxh
c3RVc2VyUnVsZSA9IHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5zaXplKCkgLSAxOworICAgIGNv
bGxlY3RNYXRjaGluZ1J1bGVzKG1fdXNlclN0eWxlLmdldCgpLCByZXN1bHQucmFuZ2VzLmZpcnN0
VXNlclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdFVzZXJSdWxlLCBpbmNsdWRlRW1wdHlSdWxlcyk7
CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obV91c2VyU3R5bGUuZ2V0KCksIHJl
c3VsdC5yYW5nZXMuZmlyc3RVc2VyUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0VXNlclJ1bGUsIGlu
Y2x1ZGVFbXB0eVJ1bGVzKTsKKworICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1
bHQpOworfQogCi0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXMocnVsZXMsIGZpcnN0UnVsZUluZGV4
LCBsYXN0UnVsZUluZGV4LCBpbmNsdWRlRW1wdHlSdWxlcyk7Ci0gICAgY29sbGVjdE1hdGNoaW5n
UnVsZXNGb3JSZWdpb24ocnVsZXMsIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBpbmNs
dWRlRW1wdHlSdWxlcyk7Cit2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoVUFSdWxlcyhNYXRj
aFJlc3VsdCYgcmVzdWx0LCBSdWxlU2V0KiBydWxlcykKK3sKKyAgICBtX21hdGNoZWRSdWxlcy5j
bGVhcigpOworICAgIAorICAgIHJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSA9IHJlc3VsdC5tYXRj
aGVkUHJvcGVydGllcy5zaXplKCkgLSAxOworICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKHJ1bGVz
LCByZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZh
bHNlKTsKIAotICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcygpOworICAgIHNvcnRBbmRU
cmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOwogfQogCiBjbGFzcyBNYXRjaGluZ1VBUnVsZXNT
Y29wZSB7CkBAIC05NjAsNyArOTY4LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpjb2xsZWN0
TWF0Y2hpbmdSdQogICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRIYXNQc2V1ZG9TdHls
ZShtX2R5bmFtaWNQc2V1ZG8pOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAvLyBVcGRhdGUgb3VyIGZpcnN0L2xhc3QgcnVsZSBpbmRpY2VzIGluIHRoZSBtYXRjaGVkIHJ1
bGVzIGFycmF5LgotICAgICAgICAgICAgICAgIGxhc3RSdWxlSW5kZXggPSBtX21hdGNoZWREZWNs
cy5zaXplKCkgKyBtX21hdGNoZWRSdWxlcy5zaXplKCk7CisgICAgICAgICAgICAgICAgKytsYXN0
UnVsZUluZGV4OwogICAgICAgICAgICAgICAgIGlmIChmaXJzdFJ1bGVJbmRleCA9PSAtMSkKICAg
ICAgICAgICAgICAgICAgICAgZmlyc3RSdWxlSW5kZXggPSBsYXN0UnVsZUluZGV4OwogCkBAIC05
OTIsNyArMTAwMCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hBbGxSdWxlcyhNYXQK
IAogICAgIC8vIE5vdyB3ZSBjaGVjayB1c2VyIHNoZWV0IHJ1bGVzLgogICAgIGlmIChtX21hdGNo
QXV0aG9yQW5kVXNlclN0eWxlcykKLSAgICAgICAgbWF0Y2hSdWxlcyhtX3VzZXJTdHlsZS5nZXQo
KSwgcmVzdWx0LnJhbmdlcy5maXJzdFVzZXJSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RVc2VyUnVs
ZSwgZmFsc2UpOworICAgICAgICBtYXRjaFVzZXJSdWxlcyhyZXN1bHQsIGZhbHNlKTsKICAgICAg
ICAgCiAgICAgLy8gTm93IGNoZWNrIGF1dGhvciBydWxlcywgYmVnaW5uaW5nIGZpcnN0IHdpdGgg
cHJlc2VudGF0aW9uYWwgYXR0cmlidXRlcyBtYXBwZWQgZnJvbSBIVE1MLgogICAgIGlmIChtX3N0
eWxlZEVsZW1lbnQpIHsKQEAgLTEwMDEsNyArMTAwOSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6bWF0Y2hBbGxSdWxlcyhNYXQKICAgICAgICAgICAgICAgICByZXN1bHQucmFuZ2VzLmxhc3RB
dXRob3JSdWxlID0gbV9tYXRjaGVkUnVsZXMuc2l6ZSgpOwogICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUgPSByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JS
dWxlOwotICAgICAgICAgICAgICAgIGFkZE1hdGNoZWREZWNsYXJhdGlvbihhdHRyaWJ1dGVTdHls
ZSk7CisgICAgICAgICAgICAgICAgYWRkTWF0Y2hlZFByb3BlcnRpZXMocmVzdWx0LCBhdHRyaWJ1
dGVTdHlsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMTAxMCw5ICsxMDE4LDkg
QEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaEFsbFJ1bGVzKE1hdAogICAgICAgICAvLyBh
ZnRlciBhbGwgYXR0cmlidXRlcywgc2luY2UgdGhlaXIgbWFwcGVkIHN0eWxlIGRlcGVuZHMgb24g
dGhlIHZhbHVlcyBvZiBtdWx0aXBsZSBhdHRyaWJ1dGVzLgogICAgICAgICBpZiAoU3R5bGVQcm9w
ZXJ0eVNldCogYWRkaXRpb25hbFN0eWxlID0gbV9zdHlsZWRFbGVtZW50LT5hZGRpdGlvbmFsQXR0
cmlidXRlU3R5bGUoKSkgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRo
b3JSdWxlID09IC0xKQotICAgICAgICAgICAgICAgIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JS
dWxlID0gbV9tYXRjaGVkRGVjbHMuc2l6ZSgpOwotICAgICAgICAgICAgcmVzdWx0LnJhbmdlcy5s
YXN0QXV0aG9yUnVsZSA9IG1fbWF0Y2hlZERlY2xzLnNpemUoKTsKLSAgICAgICAgICAgIGFkZE1h
dGNoZWREZWNsYXJhdGlvbihhZGRpdGlvbmFsU3R5bGUpOworICAgICAgICAgICAgICAgIHJlc3Vs
dC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlID0gcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLnNpemUo
KTsKKyAgICAgICAgICAgIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUgPSByZXN1bHQucmFu
Z2VzLmZpcnN0QXV0aG9yUnVsZTsKKyAgICAgICAgICAgIGFkZE1hdGNoZWRQcm9wZXJ0aWVzKHJl
c3VsdCwgYWRkaXRpb25hbFN0eWxlKTsKICAgICAgICAgICAgIHJlc3VsdC5pc0NhY2hlYWJsZSA9
IGZhbHNlOwogICAgICAgICB9CiAKQEAgLTEwMjAsMjcgKzEwMjgsMjcgQEAgdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjptYXRjaEFsbFJ1bGVzKE1hdAogICAgICAgICAgICAgYm9vbCBpc0F1dG87CiAg
ICAgICAgICAgICBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSB0b0hUTUxFbGVtZW50KG1f
c3R5bGVkRWxlbWVudCktPmRpcmVjdGlvbmFsaXR5SWZoYXNEaXJBdXRvQXR0cmlidXRlKGlzQXV0
byk7CiAgICAgICAgICAgICBpZiAoaXNBdXRvKQotICAgICAgICAgICAgICAgIGFkZE1hdGNoZWRE
ZWNsYXJhdGlvbih0ZXh0RGlyZWN0aW9uID09IExUUiA/IGxlZnRUb1JpZ2h0RGVjbGFyYXRpb24o
KSA6IHJpZ2h0VG9MZWZ0RGVjbGFyYXRpb24oKSk7CisgICAgICAgICAgICAgICAgYWRkTWF0Y2hl
ZFByb3BlcnRpZXMocmVzdWx0LCB0ZXh0RGlyZWN0aW9uID09IExUUiA/IGxlZnRUb1JpZ2h0RGVj
bGFyYXRpb24oKSA6IHJpZ2h0VG9MZWZ0RGVjbGFyYXRpb24oKSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgCiAgICAgLy8gQ2hlY2sgdGhlIHJ1bGVzIGluIGF1dGhvciBzaGVldHMgbmV4dC4KICAg
ICBpZiAobV9tYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpCi0gICAgICAgIG1hdGNoQXV0aG9yUnVs
ZXMocmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhv
clJ1bGUsIGZhbHNlKTsKKyAgICAgICAgbWF0Y2hBdXRob3JSdWxlcyhyZXN1bHQsIGZhbHNlKTsK
IAogICAgIC8vIE5vdyBjaGVjayBvdXIgaW5saW5lIHN0eWxlIGF0dHJpYnV0ZS4KICAgICBpZiAo
bV9tYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMgJiYgbV9zdHlsZWRFbGVtZW50KSB7CiAgICAgICAg
IFN0eWxlUHJvcGVydHlTZXQqIGlubGluZURlY2wgPSBtX3N0eWxlZEVsZW1lbnQtPmlubGluZVN0
eWxlRGVjbCgpOwogICAgICAgICBpZiAoaW5saW5lRGVjbCkgewotICAgICAgICAgICAgcmVzdWx0
LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSA9IG1fbWF0Y2hlZERlY2xzLnNpemUoKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUgPSByZXN1bHQubWF0Y2hlZFByb3BlcnRp
ZXMuc2l6ZSgpOwogICAgICAgICAgICAgaWYgKHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxl
ID09IC0xKQogICAgICAgICAgICAgICAgIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlID0g
cmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZTsKLSAgICAgICAgICAgIGFkZE1hdGNoZWREZWNs
YXJhdGlvbihpbmxpbmVEZWNsKTsKKyAgICAgICAgICAgIGFkZE1hdGNoZWRQcm9wZXJ0aWVzKHJl
c3VsdCwgaW5saW5lRGVjbCk7CiAgICAgICAgICAgICByZXN1bHQuaXNDYWNoZWFibGUgPSBmYWxz
ZTsKICAgICAgICAgfQogICAgIH0KIH0KLSAgICAKKwogaW5saW5lIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6aW5pdEVsZW1lbnQoRWxlbWVudCogZSkKIHsKICAgICBpZiAobV9lbGVtZW50ICE9IGUp
IHsKQEAgLTEwNzEsOCArMTA3OSw2IEBAIGlubGluZSB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Omlu
aXRGb3JTdHkKIAogICAgIG1fc3R5bGUgPSAwOwogCi0gICAgbV9tYXRjaGVkRGVjbHMuY2xlYXIo
KTsKLQogICAgIG1fcGVuZGluZ0ltYWdlUHJvcGVydGllcy5jbGVhcigpOwogCiAgICAgbV9ydWxl
TGlzdCA9IDA7CkBAIC0xMTI4LDExICsxMTM0LDE2IEBAIE5vZGUqIENTU1N0eWxlU2VsZWN0b3I6
OmxvY2F0ZUNvdXNpbkxpc3QKIAogYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaGVzUnVsZVNl
dChSdWxlU2V0KiBydWxlU2V0KQogewotICAgIGludCBmaXJzdFNpYmxpbmdSdWxlID0gLTEsIGxh
c3RTaWJsaW5nUnVsZSA9IC0xOwotICAgIG1hdGNoUnVsZXMocnVsZVNldCwgZmlyc3RTaWJsaW5n
UnVsZSwgbGFzdFNpYmxpbmdSdWxlLCBmYWxzZSk7Ci0gICAgaWYgKG1fbWF0Y2hlZERlY2xzLmlz
RW1wdHkoKSkKKyAgICBpZiAoIXJ1bGVTZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBt
X21hdGNoZWRSdWxlcy5jbGVhcigpOworCisgICAgaW50IGZpcnN0UnVsZUluZGV4ID0gLTEsIGxh
c3RSdWxlSW5kZXggPSAtMTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhydWxlU2V0LCBmaXJz
dFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgZmFsc2UpOworCisgICAgaWYgKG1fbWF0Y2hlZFJ1
bGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fbWF0Y2hlZERlY2xz
LmNsZWFyKCk7CisgICAgbV9tYXRjaGVkUnVsZXMuY2xlYXIoKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtMTM4MywxNyArMTM5NCwxNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNo
VUFSdWxlcyhNYXRjCiAgICAgICAgIHJlc3VsdC5pc0NhY2hlYWJsZSA9IGZhbHNlOwogICAgIFJ1
bGVTZXQqIHVzZXJBZ2VudFN0eWxlU2hlZXQgPSBtX21lZGl1bS0+bWVkaWFUeXBlTWF0Y2hTcGVj
aWZpYygicHJpbnQiKQogICAgICAgICA/IGRlZmF1bHRQcmludFN0eWxlIDogZGVmYXVsdFN0eWxl
OwotICAgIG1hdGNoUnVsZXModXNlckFnZW50U3R5bGVTaGVldCwgcmVzdWx0LnJhbmdlcy5maXJz
dFVBUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlLCBmYWxzZSk7CisgICAgbWF0Y2hVQVJ1
bGVzKHJlc3VsdCwgdXNlckFnZW50U3R5bGVTaGVldCk7CiAKICAgICAvLyBJbiBxdWlya3MgbW9k
ZSwgd2UgbWF0Y2ggcnVsZXMgZnJvbSB0aGUgcXVpcmtzIHVzZXIgYWdlbnQgc2hlZXQuCiAgICAg
aWYgKCFtX2NoZWNrZXIuc3RyaWN0UGFyc2luZygpKQotICAgICAgICBtYXRjaFJ1bGVzKGRlZmF1
bHRRdWlya3NTdHlsZSwgcmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgcmVzdWx0LnJhbmdlcy5s
YXN0VUFSdWxlLCBmYWxzZSk7CisgICAgICAgIG1hdGNoVUFSdWxlcyhyZXN1bHQsIGRlZmF1bHRR
dWlya3NTdHlsZSk7CiAKICAgICAvLyBJZiBkb2N1bWVudCB1c2VzIHZpZXcgc291cmNlIHN0eWxl
cyAoaW4gdmlldyBzb3VyY2UgbW9kZSBvciBpbiB4bWwgdmlld2VyIG1vZGUpLCB0aGVuIHdlIG1h
dGNoIHJ1bGVzIGZyb20gdGhlIHZpZXcgc291cmNlIHN0eWxlIHNoZWV0LgogICAgIGlmIChtX2No
ZWNrZXIuZG9jdW1lbnQoKS0+aXNWaWV3U291cmNlKCkpIHsKICAgICAgICAgaWYgKCFkZWZhdWx0
Vmlld1NvdXJjZVN0eWxlKQogICAgICAgICAgICAgbG9hZFZpZXdTb3VyY2VTdHlsZSgpOwotICAg
ICAgICBtYXRjaFJ1bGVzKGRlZmF1bHRWaWV3U291cmNlU3R5bGUsIHJlc3VsdC5yYW5nZXMuZmly
c3RVQVJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgZmFsc2UpOworICAgICAgICBtYXRj
aFVBUnVsZXMocmVzdWx0LCBkZWZhdWx0Vmlld1NvdXJjZVN0eWxlKTsKICAgICB9CiB9CiAKQEAg
LTE1MjEsNyArMTUzMiw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0
b3IKICAgICBlbHNlCiAgICAgICAgIG1hdGNoQWxsUnVsZXMobWF0Y2hSZXN1bHQpOwogCi0gICAg
YXBwbHlNYXRjaGVkRGVjbGFyYXRpb25zKG1hdGNoUmVzdWx0KTsKKyAgICBhcHBseU1hdGNoZWRQ
cm9wZXJ0aWVzKG1hdGNoUmVzdWx0KTsKIAogICAgIC8vIENsZWFuIHVwIG91ciBzdHlsZSBvYmpl
Y3QncyBkaXNwbGF5IGFuZCB0ZXh0IGRlY29yYXRpb25zIChhbW9uZyBvdGhlciBmaXh1cHMpLgog
ICAgIGFkanVzdFJlbmRlclN0eWxlKHN0eWxlKCksIG1fcGFyZW50U3R5bGUsIGVsZW1lbnQpOwpA
QCAtMTUzNCw4ICsxNTQ1LDkgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxl
Y3RvcgogCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZv
cktleWZyYW1lKGNvbnN0IFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIGNvbnN0IFdlYktpdENT
U0tleWZyYW1lUnVsZSoga2V5ZnJhbWVSdWxlLCBLZXlmcmFtZVZhbHVlJiBrZXlmcmFtZSkKIHsK
KyAgICBNYXRjaFJlc3VsdCByZXN1bHQ7CiAgICAgaWYgKGtleWZyYW1lUnVsZS0+ZGVjbGFyYXRp
b24oKSkKLSAgICAgICAgYWRkTWF0Y2hlZERlY2xhcmF0aW9uKGtleWZyYW1lUnVsZS0+ZGVjbGFy
YXRpb24oKSk7CisgICAgICAgIGFkZE1hdGNoZWRQcm9wZXJ0aWVzKHJlc3VsdCwga2V5ZnJhbWVS
dWxlLT5kZWNsYXJhdGlvbigpKTsKIAogICAgIEFTU0VSVCghbV9zdHlsZSk7CiAKQEAgLTE1NDgs
NyArMTU2MCw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3IKICAg
ICAvLyBkZWNsLCB0aGVyZSdzIG5vdGhpbmcgdG8gb3ZlcnJpZGUuIFNvIGp1c3QgYWRkIHRoZSBm
aXJzdCBwcm9wZXJ0aWVzLgogICAgIGJvb2wgaW5oZXJpdGVkT25seSA9IGZhbHNlOwogICAgIGlm
IChrZXlmcmFtZVJ1bGUtPnN0eWxlKCkpCi0gICAgICAgIGFwcGx5RGVjbGFyYXRpb25zPHRydWU+
KGZhbHNlLCAwLCBtX21hdGNoZWREZWNscy5zaXplKCkgLSAxLCBpbmhlcml0ZWRPbmx5KTsKKyAg
ICAgICAgYXBwbHlNYXRjaGVkUHJvcGVydGllczx0cnVlPihyZXN1bHQsIGZhbHNlLCAwLCByZXN1
bHQubWF0Y2hlZFByb3BlcnRpZXMuc2l6ZSgpIC0gMSwgaW5oZXJpdGVkT25seSk7CiAKICAgICAv
LyBJZiBvdXIgZm9udCBnb3QgZGlydGllZCwgZ28gYWhlYWQgYW5kIHVwZGF0ZSBpdCBub3cuCiAg
ICAgdXBkYXRlRm9udCgpOwpAQCAtMTU1OSw3ICsxNTcxLDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gQ1NTU3R5bGVTZWxlY3RvcgogCiAgICAgLy8gTm93IGRvIHJlc3Qgb2YgdGhlIHByb3Bl
cnRpZXMuCiAgICAgaWYgKGtleWZyYW1lUnVsZS0+c3R5bGUoKSkKLSAgICAgICAgYXBwbHlEZWNs
YXJhdGlvbnM8ZmFsc2U+KGZhbHNlLCAwLCBtX21hdGNoZWREZWNscy5zaXplKCkgLSAxLCBpbmhl
cml0ZWRPbmx5KTsKKyAgICAgICAgYXBwbHlNYXRjaGVkUHJvcGVydGllczxmYWxzZT4ocmVzdWx0
LCBmYWxzZSwgMCwgcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLnNpemUoKSAtIDEsIGluaGVyaXRl
ZE9ubHkpOwogCiAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQgYnkgb25lIG9mIHRoZSBu
b24tZXNzZW50aWFsIGZvbnQgcHJvcHMsCiAgICAgLy8gZ28gYWhlYWQgYW5kIHVwZGF0ZSBpdCBh
IHNlY29uZCB0aW1lLgpAQCAtMTY2NSwxNiArMTY3NywxNiBAQCBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAgICAgbWF0Y2hVQVJ1bGVzKG1hdGNoUmVzdWx0KTsKIAog
ICAgIGlmIChtX21hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykgewotICAgICAgICBtYXRjaFJ1bGVz
KG1fdXNlclN0eWxlLmdldCgpLCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVc2VyUnVsZSwgbWF0
Y2hSZXN1bHQucmFuZ2VzLmxhc3RVc2VyUnVsZSwgZmFsc2UpOwotICAgICAgICBtYXRjaEF1dGhv
clJ1bGVzKG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIG1hdGNoUmVzdWx0LnJh
bmdlcy5sYXN0QXV0aG9yUnVsZSwgZmFsc2UpOworICAgICAgICBtYXRjaFVzZXJSdWxlcyhtYXRj
aFJlc3VsdCwgZmFsc2UpOworICAgICAgICBtYXRjaEF1dGhvclJ1bGVzKG1hdGNoUmVzdWx0LCBm
YWxzZSk7CiAgICAgfQogCi0gICAgaWYgKG1fbWF0Y2hlZERlY2xzLmlzRW1wdHkoKSkKKyAgICBp
ZiAobWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gMDsKIAogICAgIG1fc3R5bGUtPnNldFN0eWxlVHlwZShwc2V1ZG8pOwogCi0gICAgYXBwbHlN
YXRjaGVkRGVjbGFyYXRpb25zKG1hdGNoUmVzdWx0KTsKKyAgICBhcHBseU1hdGNoZWRQcm9wZXJ0
aWVzKG1hdGNoUmVzdWx0KTsKIAogICAgIC8vIENsZWFuIHVwIG91ciBzdHlsZSBvYmplY3QncyBk
aXNwbGF5IGFuZCB0ZXh0IGRlY29yYXRpb25zIChhbW9uZyBvdGhlciBmaXh1cHMpLgogICAgIGFk
anVzdFJlbmRlclN0eWxlKHN0eWxlKCksIHBhcmVudFN0eWxlLCAwKTsKQEAgLTE3MDEsMTMgKzE3
MTMsMTUgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3RvcgogICAgIGNv
bnN0IGJvb2wgaXNMZWZ0ID0gaXNMZWZ0UGFnZShwYWdlSW5kZXgpOwogICAgIGNvbnN0IGJvb2wg
aXNGaXJzdCA9IGlzRmlyc3RQYWdlKHBhZ2VJbmRleCk7CiAgICAgY29uc3QgU3RyaW5nIHBhZ2Ug
PSBwYWdlTmFtZShwYWdlSW5kZXgpOwotICAgIG1hdGNoUGFnZVJ1bGVzKGRlZmF1bHRQcmludFN0
eWxlLCBpc0xlZnQsIGlzRmlyc3QsIHBhZ2UpOwotICAgIG1hdGNoUGFnZVJ1bGVzKG1fdXNlclN0
eWxlLmdldCgpLCBpc0xlZnQsIGlzRmlyc3QsIHBhZ2UpOworICAgIAorICAgIE1hdGNoUmVzdWx0
IHJlc3VsdDsKKyAgICBtYXRjaFBhZ2VSdWxlcyhyZXN1bHQsIGRlZmF1bHRQcmludFN0eWxlLCBp
c0xlZnQsIGlzRmlyc3QsIHBhZ2UpOworICAgIG1hdGNoUGFnZVJ1bGVzKHJlc3VsdCwgbV91c2Vy
U3R5bGUuZ2V0KCksIGlzTGVmdCwgaXNGaXJzdCwgcGFnZSk7CiAgICAgLy8gT25seSBjb25zaWRl
ciB0aGUgZ2xvYmFsIGF1dGhvciBSdWxlU2V0IGZvciBAcGFnZSBydWxlcywgYXMgcGVyIHRoZSBI
VE1MNSBzcGVjLgotICAgIG1hdGNoUGFnZVJ1bGVzKG1fYXV0aG9yU3R5bGUuZ2V0KCksIGlzTGVm
dCwgaXNGaXJzdCwgcGFnZSk7CisgICAgbWF0Y2hQYWdlUnVsZXMocmVzdWx0LCBtX2F1dGhvclN0
eWxlLmdldCgpLCBpc0xlZnQsIGlzRmlyc3QsIHBhZ2UpOwogICAgIG1fbGluZUhlaWdodFZhbHVl
ID0gMDsKICAgICBib29sIGluaGVyaXRlZE9ubHkgPSBmYWxzZTsKLSAgICBhcHBseURlY2xhcmF0
aW9uczx0cnVlPihmYWxzZSwgMCwgbV9tYXRjaGVkRGVjbHMuc2l6ZSgpIC0gMSwgaW5oZXJpdGVk
T25seSk7CisgICAgYXBwbHlNYXRjaGVkUHJvcGVydGllczx0cnVlPihyZXN1bHQsIGZhbHNlLCAw
LCByZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMuc2l6ZSgpIC0gMSwgaW5oZXJpdGVkT25seSk7CiAK
ICAgICAvLyBJZiBvdXIgZm9udCBnb3QgZGlydGllZCwgZ28gYWhlYWQgYW5kIHVwZGF0ZSBpdCBu
b3cuCiAgICAgdXBkYXRlRm9udCgpOwpAQCAtMTcxNiw3ICsxNzMwLDcgQEAgUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3RvcgogICAgIGlmIChtX2xpbmVIZWlnaHRWYWx1ZSkK
ICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpbmVIZWlnaHQsIG1fbGluZUhlaWdo
dFZhbHVlKTsKIAotICAgIGFwcGx5RGVjbGFyYXRpb25zPGZhbHNlPihmYWxzZSwgMCwgbV9tYXRj
aGVkRGVjbHMuc2l6ZSgpIC0gMSwgaW5oZXJpdGVkT25seSk7CisgICAgYXBwbHlNYXRjaGVkUHJv
cGVydGllczxmYWxzZT4ocmVzdWx0LCBmYWxzZSwgMCwgcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVz
LnNpemUoKSAtIDEsIGluaGVyaXRlZE9ubHkpOwogCiAgICAgLy8gU3RhcnQgbG9hZGluZyBpbWFn
ZXMgcmVmZXJlbmNlZCBieSB0aGlzIHN0eWxlLgogICAgIGxvYWRQZW5kaW5nSW1hZ2VzKCk7CkBA
IC0yMDQ1LDE0ICsyMDU5LDE0IEBAIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2Vs
ZWN0b3IKIAogICAgICAgICAvLyBOb3cgd2UgY2hlY2sgdXNlciBzaGVldCBydWxlcy4KICAgICAg
ICAgaWYgKG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzKQotICAgICAgICAgICAgbWF0Y2hSdWxl
cyhtX3VzZXJTdHlsZS5nZXQoKSwgZHVtbXkucmFuZ2VzLmZpcnN0VXNlclJ1bGUsIGR1bW15LnJh
bmdlcy5sYXN0VXNlclJ1bGUsIHJ1bGVzVG9JbmNsdWRlICYgRW1wdHlDU1NSdWxlcyk7CisgICAg
ICAgICAgICBtYXRjaFVzZXJSdWxlcyhkdW1teSwgcnVsZXNUb0luY2x1ZGUgJiBFbXB0eUNTU1J1
bGVzKTsKICAgICB9CiAKICAgICBpZiAobV9tYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMgJiYgKHJ1
bGVzVG9JbmNsdWRlICYgQXV0aG9yQ1NTUnVsZXMpKSB7CiAgICAgICAgIG1fc2FtZU9yaWdpbk9u
bHkgPSAhKHJ1bGVzVG9JbmNsdWRlICYgQ3Jvc3NPcmlnaW5DU1NSdWxlcyk7CiAKICAgICAgICAg
Ly8gQ2hlY2sgdGhlIHJ1bGVzIGluIGF1dGhvciBzaGVldHMuCi0gICAgICAgIG1hdGNoQXV0aG9y
UnVsZXMoZHVtbXkucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgZHVtbXkucmFuZ2VzLmxhc3RBdXRo
b3JSdWxlLCBydWxlc1RvSW5jbHVkZSAmIEVtcHR5Q1NTUnVsZXMpOworICAgICAgICBtYXRjaEF1
dGhvclJ1bGVzKGR1bW15LCBydWxlc1RvSW5jbHVkZSAmIEVtcHR5Q1NTUnVsZXMpOwogCiAgICAg
ICAgIG1fc2FtZU9yaWdpbk9ubHkgPSBmYWxzZTsKICAgICB9CkBAIC0yMzcyLDcgKzIzODYsNyBA
QCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxlCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
U1NGb250RmFjZVJ1bGUqIGZvbnRGYWNlUnVsZSA9IHN0YXRpY19jYXN0PENTU0ZvbnRGYWNlUnVs
ZSo+KGNoaWxkSXRlbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZVNlbGVjdG9yLT5m
b250U2VsZWN0b3IoKS0+YWRkRm9udEZhY2VSdWxlKGZvbnRGYWNlUnVsZSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzdHlsZVNlbGVjdG9yLT5pbnZhbGlkYXRlTWF0Y2hlZERlY2xhcmF0aW9u
Q2FjaGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlU2VsZWN0b3ItPmludmFsaWRh
dGVNYXRjaGVkUHJvcGVydGllc0NhY2hlKCk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY2hpbGRJdGVtLT5pc0tleWZyYW1lc1J1bGUoKSAmJiBzdHlsZVNlbGVjdG9yKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBBZGQgdGhpcyBrZXlmcmFtZSBydWxlIHRvIG91ciBzZXQu
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRShCVUcgNzI0NjIpOiBXZSBkb24ndCBh
ZGQgQGtleWZyYW1lIHJ1bGVzIG9mIHNjb3BlZCBzdHlsZSBzaGVldHMgZm9yIHRoZSBtb21lbnQu
CkBAIC0yMzg5LDcgKzI0MDMsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KENT
U1N0eWxlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBjb25zdCBDU1NG
b250RmFjZVJ1bGUqIGZvbnRGYWNlUnVsZSA9IHN0YXRpY19jYXN0PENTU0ZvbnRGYWNlUnVsZSo+
KHJ1bGUpOwogICAgICAgICAgICAgc3R5bGVTZWxlY3Rvci0+Zm9udFNlbGVjdG9yKCktPmFkZEZv
bnRGYWNlUnVsZShmb250RmFjZVJ1bGUpOwotICAgICAgICAgICAgc3R5bGVTZWxlY3Rvci0+aW52
YWxpZGF0ZU1hdGNoZWREZWNsYXJhdGlvbkNhY2hlKCk7CisgICAgICAgICAgICBzdHlsZVNlbGVj
dG9yLT5pbnZhbGlkYXRlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSgpOwogICAgICAgICB9IGVsc2Ug
aWYgKHJ1bGUtPmlzS2V5ZnJhbWVzUnVsZSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRSAoQlVH
IDcyNDYyKTogV2UgZG9uJ3QgYWRkIEBrZXlmcmFtZSBydWxlcyBvZiBzY29wZWQgc3R5bGUgc2hl
ZXRzIGZvciB0aGUgbW9tZW50LgogICAgICAgICAgICAgaWYgKHNjb3BlKQpAQCAtMjQ3MiwyOCAr
MjQ4NiwyNiBAQCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKENTU1ByCiAgICAg
cmV0dXJuIGNvbnZlcnRUb0xlbmd0aChwcmltaXRpdmVWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwg
dHJ1ZSwgbXVsdGlwbGllciwgb2spOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNJbnNpZGVS
ZWdpb25SdWxlKFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlRGVjbGFyYXRpb24pCitzdGF0aWMgaW5s
aW5lIGJvb2wgaXNJbnNpZGVSZWdpb25SdWxlKENTU1J1bGUqIHJ1bGUpCiB7Ci0gICAgQVNTRVJU
KHN0eWxlRGVjbGFyYXRpb24pOwotCi0gICAgQ1NTUnVsZSogcGFyZW50UnVsZSA9IHN0eWxlRGVj
bGFyYXRpb24tPnBhcmVudFJ1bGVJbnRlcm5hbCgpOwotICAgIHdoaWxlIChwYXJlbnRSdWxlKSB7
Ci0gICAgICAgIGlmIChwYXJlbnRSdWxlLT5pc1JlZ2lvblJ1bGUoKSkKKyAgICAvLyBGSVhNRTog
Q2FjaGUgdGhpcyBiaXQgc29tZXdoZXJlLgorICAgIHdoaWxlIChydWxlKSB7CisgICAgICAgIGlm
IChydWxlLT5pc1JlZ2lvblJ1bGUoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICBwYXJlbnRSdWxlID0gcGFyZW50UnVsZS0+cGFyZW50UnVsZSgpOworICAgICAgICBydWxlID0g
cnVsZS0+cGFyZW50UnVsZSgpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHRlbXBs
YXRlIDxib29sIGFwcGx5Rmlyc3Q+Ci12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5RGVjbGFy
YXRpb24oU3R5bGVQcm9wZXJ0eVNldCogc3R5bGVEZWNsYXJhdGlvbiwgYm9vbCBpc0ltcG9ydGFu
dCwgYm9vbCBpbmhlcml0ZWRPbmx5KQordm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3Bl
cnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcywgQ1NTU3R5bGVSdWxlKiBy
dWxlLCBib29sIGlzSW1wb3J0YW50LCBib29sIGluaGVyaXRlZE9ubHkpCiB7Ci0gICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbFByb2Nlc3NSdWxlKGRvY3VtZW50KCksIHN0eWxlRGVjbGFyYXRpb24tPnBhcmVudFJ1
bGVJbnRlcm5hbCgpKTsKLSAgICBib29sIHN0eWxlRGVjbGFyYXRpb25JbnNpZGVSZWdpb25SdWxl
ID0gbV9yZWdpb25Gb3JTdHlsaW5nID8gaXNJbnNpZGVSZWdpb25SdWxlKHN0eWxlRGVjbGFyYXRp
b24pIDogZmFsc2U7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFByb2Nlc3NSdWxlKGRvY3VtZW50KCksIHJ1
bGUpOworICAgIGJvb2wgc3R5bGVEZWNsYXJhdGlvbkluc2lkZVJlZ2lvblJ1bGUgPSBtX3JlZ2lv
bkZvclN0eWxpbmcgJiYgaXNJbnNpZGVSZWdpb25SdWxlKHJ1bGUpOwogCi0gICAgdW5zaWduZWQg
cHJvcGVydHlDb3VudCA9IHN0eWxlRGVjbGFyYXRpb24tPnByb3BlcnR5Q291bnQoKTsKKyAgICB1
bnNpZ25lZCBwcm9wZXJ0eUNvdW50ID0gcHJvcGVydGllcy0+cHJvcGVydHlDb3VudCgpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9wZXJ0eUNvdW50OyArK2kpIHsKLSAgICAgICAg
Y29uc3QgQ1NTUHJvcGVydHkmIGN1cnJlbnQgPSBzdHlsZURlY2xhcmF0aW9uLT5wcm9wZXJ0eUF0
KGkpOworICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eSYgY3VycmVudCA9IHByb3BlcnRpZXMtPnBy
b3BlcnR5QXQoaSk7CiAgICAgICAgIGlmIChpc0ltcG9ydGFudCAhPSBjdXJyZW50LmlzSW1wb3J0
YW50KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGluaGVyaXRlZE9ubHkg
JiYgIWN1cnJlbnQuaXNJbmhlcml0ZWQoKSkgewpAQCAtMjUzMSwzMiArMjU0MywzMiBAQCB2b2lk
IENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5RGVjbGFyYXRpb24oCiB9CiAKIHRlbXBsYXRlIDxib29s
IGFwcGx5Rmlyc3Q+Ci12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5RGVjbGFyYXRpb25zKGJv
b2wgaXNJbXBvcnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgsIGJvb2wgaW5oZXJp
dGVkT25seSkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyhj
b25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGJvb2wgaXNJbXBvcnRhbnQsIGludCBzdGFy
dEluZGV4LCBpbnQgZW5kSW5kZXgsIGJvb2wgaW5oZXJpdGVkT25seSkKIHsKICAgICBpZiAoc3Rh
cnRJbmRleCA9PSAtMSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fc3R5bGUtPmluc2lk
ZUxpbmsoKSAhPSBOb3RJbnNpZGVMaW5rKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBzdGFydElu
ZGV4OyBpIDw9IGVuZEluZGV4OyArK2kpIHsKLSAgICAgICAgICAgIFN0eWxlUHJvcGVydHlTZXQq
IHN0eWxlRGVjbGFyYXRpb24gPSBtX21hdGNoZWREZWNsc1tpXS5zdHlsZURlY2xhcmF0aW9uLmdl
dCgpOwotICAgICAgICAgICAgdW5zaWduZWQgbGlua01hdGNoVHlwZSA9IG1fbWF0Y2hlZERlY2xz
W2ldLmxpbmtNYXRjaFR5cGU7CisgICAgICAgICAgICB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlID0g
bWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXNbaV0ubGlua01hdGNoVHlwZTsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlciB0byBwYXNzIHRoZXNlIGFzIGFyZ3VtZW50
cyBidXQgdGhhdCByZXF1aXJlcyBjaGFuZ2VzIGluIG1hbnkgcGxhY2VzLgogICAgICAgICAgICAg
bV9hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUgPSBsaW5rTWF0Y2hUeXBlICYgU2VsZWN0b3JD
aGVja2VyOjpNYXRjaExpbms7CiAgICAgICAgICAgICBtX2FwcGx5UHJvcGVydHlUb1Zpc2l0ZWRM
aW5rU3R5bGUgPSBsaW5rTWF0Y2hUeXBlICYgU2VsZWN0b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWQ7
CiAKLSAgICAgICAgICAgIGFwcGx5RGVjbGFyYXRpb248YXBwbHlGaXJzdD4oc3R5bGVEZWNsYXJh
dGlvbiwgaXNJbXBvcnRhbnQsIGluaGVyaXRlZE9ubHkpOworICAgICAgICAgICAgYXBwbHlQcm9w
ZXJ0aWVzPGFwcGx5Rmlyc3Q+KG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzW2ldLnByb3Bl
cnRpZXMuZ2V0KCksIG1hdGNoUmVzdWx0Lm1hdGNoZWRSdWxlc1tpXSwgaXNJbXBvcnRhbnQsIGlu
aGVyaXRlZE9ubHkpOwogICAgICAgICB9CiAgICAgICAgIG1fYXBwbHlQcm9wZXJ0eVRvUmVndWxh
clN0eWxlID0gdHJ1ZTsKICAgICAgICAgbV9hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxl
ID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgZm9yIChpbnQgaSA9IHN0YXJ0
SW5kZXg7IGkgPD0gZW5kSW5kZXg7ICsraSkKLSAgICAgICAgYXBwbHlEZWNsYXJhdGlvbjxhcHBs
eUZpcnN0PihtX21hdGNoZWREZWNsc1tpXS5zdHlsZURlY2xhcmF0aW9uLmdldCgpLCBpc0ltcG9y
dGFudCwgaW5oZXJpdGVkT25seSk7CisgICAgICAgIGFwcGx5UHJvcGVydGllczxhcHBseUZpcnN0
PihtYXRjaFJlc3VsdC5tYXRjaGVkUHJvcGVydGllc1tpXS5wcm9wZXJ0aWVzLmdldCgpLCBtYXRj
aFJlc3VsdC5tYXRjaGVkUnVsZXNbaV0sIGlzSW1wb3J0YW50LCBpbmhlcml0ZWRPbmx5KTsKIH0K
IAotdW5zaWduZWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y29tcHV0ZURlY2xhcmF0aW9uSGFzaChNYXRj
aGVkU3R5bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRpb25zLCB1bnNpZ25lZCBzaXplKQordW5zaWdu
ZWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y29tcHV0ZU1hdGNoZWRQcm9wZXJ0aWVzSGFzaChjb25zdCBN
YXRjaGVkUHJvcGVydGllcyogcHJvcGVydGllcywgdW5zaWduZWQgc2l6ZSkKIHsKLSAgICByZXR1
cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KGRlY2xhcmF0aW9ucywgc2l6ZW9mKE1hdGNoZWRT
dHlsZURlY2xhcmF0aW9uKSAqIHNpemUpOworICAgIAorICAgIHJldHVybiBTdHJpbmdIYXNoZXI6
Omhhc2hNZW1vcnkocHJvcGVydGllcywgc2l6ZW9mKE1hdGNoZWRQcm9wZXJ0aWVzKSAqIHNpemUp
OwogfQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTU3R5bGVTZWxlY3Rvcjo6TWF0Y2hSYW5n
ZXMmIGEsIGNvbnN0IENTU1N0eWxlU2VsZWN0b3I6Ok1hdGNoUmFuZ2VzJiBiKQpAQCAtMjU3NCwz
MCArMjU4NiwzMCBAQCBib29sIG9wZXJhdG9yIT0oY29uc3QgQ1NTU3R5bGVTZWxlY3Rvcjo6CiAg
ICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAotYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1N0eWxl
U2VsZWN0b3I6Ok1hdGNoZWRTdHlsZURlY2xhcmF0aW9uJiBhLCBjb25zdCBDU1NTdHlsZVNlbGVj
dG9yOjpNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbiYgYikKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBD
U1NTdHlsZVNlbGVjdG9yOjpNYXRjaGVkUHJvcGVydGllcyYgYSwgY29uc3QgQ1NTU3R5bGVTZWxl
Y3Rvcjo6TWF0Y2hlZFByb3BlcnRpZXMmIGIpCiB7Ci0gICAgcmV0dXJuIGEuc3R5bGVEZWNsYXJh
dGlvbiA9PSBiLnN0eWxlRGVjbGFyYXRpb24gJiYgYS5saW5rTWF0Y2hUeXBlID09IGIubGlua01h
dGNoVHlwZTsKKyAgICByZXR1cm4gYS5wcm9wZXJ0aWVzID09IGIucHJvcGVydGllcyAmJiBhLmxp
bmtNYXRjaFR5cGUgPT0gYi5saW5rTWF0Y2hUeXBlOwogfQogCi1ib29sIG9wZXJhdG9yIT0oY29u
c3QgQ1NTU3R5bGVTZWxlY3Rvcjo6TWF0Y2hlZFN0eWxlRGVjbGFyYXRpb24mIGEsIGNvbnN0IENT
U1N0eWxlU2VsZWN0b3I6Ok1hdGNoZWRTdHlsZURlY2xhcmF0aW9uJiBiKQorYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IENTU1N0eWxlU2VsZWN0b3I6Ok1hdGNoZWRQcm9wZXJ0aWVzJiBhLCBjb25zdCBD
U1NTdHlsZVNlbGVjdG9yOjpNYXRjaGVkUHJvcGVydGllcyYgYikKIHsKICAgICByZXR1cm4gIShh
ID09IGIpOwogfQogCi1jb25zdCBDU1NTdHlsZVNlbGVjdG9yOjpNYXRjaGVkU3R5bGVEZWNsYXJh
dGlvbkNhY2hlSXRlbSogQ1NTU3R5bGVTZWxlY3Rvcjo6ZmluZEZyb21NYXRjaGVkRGVjbGFyYXRp
b25DYWNoZSh1bnNpZ25lZCBoYXNoLCBjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQpCitj
b25zdCBDU1NTdHlsZVNlbGVjdG9yOjpNYXRjaGVkUHJvcGVydGllc0NhY2hlSXRlbSogQ1NTU3R5
bGVTZWxlY3Rvcjo6ZmluZEZyb21NYXRjaGVkUHJvcGVydGllc0NhY2hlKHVuc2lnbmVkIGhhc2gs
IGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCkKIHsKICAgICBBU1NFUlQoaGFzaCk7CiAK
LSAgICBNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbkNhY2hlOjppdGVyYXRvciBpdCA9IG1fbWF0Y2hl
ZFN0eWxlRGVjbGFyYXRpb25DYWNoZS5maW5kKGhhc2gpOwotICAgIGlmIChpdCA9PSBtX21hdGNo
ZWRTdHlsZURlY2xhcmF0aW9uQ2FjaGUuZW5kKCkpCisgICAgTWF0Y2hlZFByb3BlcnRpZXNDYWNo
ZTo6aXRlcmF0b3IgaXQgPSBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUuZmluZChoYXNoKTsKKyAg
ICBpZiAoaXQgPT0gbV9tYXRjaGVkUHJvcGVydGllc0NhY2hlLmVuZCgpKQogICAgICAgICByZXR1
cm4gMDsKLSAgICBNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbkNhY2hlSXRlbSYgY2FjaGVJdGVtID0g
aXQtPnNlY29uZDsKKyAgICBNYXRjaGVkUHJvcGVydGllc0NhY2hlSXRlbSYgY2FjaGVJdGVtID0g
aXQtPnNlY29uZDsKIAotICAgIHNpemVfdCBzaXplID0gbV9tYXRjaGVkRGVjbHMuc2l6ZSgpOwot
ICAgIGlmIChzaXplICE9IGNhY2hlSXRlbS5tYXRjaGVkU3R5bGVEZWNsYXJhdGlvbnMuc2l6ZSgp
KQorICAgIHNpemVfdCBzaXplID0gbWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMuc2l6ZSgp
OworICAgIGlmIChzaXplICE9IGNhY2hlSXRlbS5tYXRjaGVkUHJvcGVydGllcy5zaXplKCkpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
Ci0gICAgICAgIGlmIChtX21hdGNoZWREZWNsc1tpXSAhPSBjYWNoZUl0ZW0ubWF0Y2hlZFN0eWxl
RGVjbGFyYXRpb25zW2ldKQorICAgICAgICBpZiAobWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRp
ZXNbaV0gIT0gY2FjaGVJdGVtLm1hdGNoZWRQcm9wZXJ0aWVzW2ldKQogICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogICAgIGlmIChjYWNoZUl0ZW0ucmFuZ2VzICE9IG1hdGNoUmVzdWx0LnJh
bmdlcykKQEAgLTI2MDUsMzEgKzI2MTcsMzEgQEAgY29uc3QgQ1NTU3R5bGVTZWxlY3Rvcjo6TWF0
Y2hlZFN0eWxlRGVjbAogICAgIHJldHVybiAmY2FjaGVJdGVtOwogfQogCi12b2lkIENTU1N0eWxl
U2VsZWN0b3I6OmFkZFRvTWF0Y2hlZERlY2xhcmF0aW9uQ2FjaGUoY29uc3QgUmVuZGVyU3R5bGUq
IHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIHVuc2lnbmVkIGhhc2gsIGNv
bnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YWRk
VG9NYXRjaGVkUHJvcGVydGllc0NhY2hlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCB1bnNpZ25lZCBoYXNoLCBjb25zdCBNYXRjaFJlc3Vs
dCYgbWF0Y2hSZXN1bHQpCiB7CiAgICAgc3RhdGljIHVuc2lnbmVkIG1hdGNoZWREZWNsYXJhdGlv
bkNhY2hlQWRkaXRpb25zQmV0d2VlblN3ZWVwcyA9IDEwMDsKLSAgICBpZiAoKyttX21hdGNoZWRE
ZWNsYXJhdGlvbkNhY2hlQWRkaXRpb25zU2luY2VMYXN0U3dlZXAgPj0gbWF0Y2hlZERlY2xhcmF0
aW9uQ2FjaGVBZGRpdGlvbnNCZXR3ZWVuU3dlZXBzKSB7Ci0gICAgICAgIHN3ZWVwTWF0Y2hlZERl
Y2xhcmF0aW9uQ2FjaGUoKTsKLSAgICAgICAgbV9tYXRjaGVkRGVjbGFyYXRpb25DYWNoZUFkZGl0
aW9uc1NpbmNlTGFzdFN3ZWVwID0gMDsKKyAgICBpZiAoKyttX21hdGNoZWRQcm9wZXJ0aWVzQ2Fj
aGVBZGRpdGlvbnNTaW5jZUxhc3RTd2VlcCA+PSBtYXRjaGVkRGVjbGFyYXRpb25DYWNoZUFkZGl0
aW9uc0JldHdlZW5Td2VlcHMpIHsKKyAgICAgICAgc3dlZXBNYXRjaGVkUHJvcGVydGllc0NhY2hl
KCk7CisgICAgICAgIG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNoZUFkZGl0aW9uc1NpbmNlTGFzdFN3
ZWVwID0gMDsKICAgICB9CiAKICAgICBBU1NFUlQoaGFzaCk7Ci0gICAgTWF0Y2hlZFN0eWxlRGVj
bGFyYXRpb25DYWNoZUl0ZW0gY2FjaGVJdGVtOwotICAgIGNhY2hlSXRlbS5tYXRjaGVkU3R5bGVE
ZWNsYXJhdGlvbnMuYXBwZW5kKG1fbWF0Y2hlZERlY2xzKTsKKyAgICBNYXRjaGVkUHJvcGVydGll
c0NhY2hlSXRlbSBjYWNoZUl0ZW07CisgICAgY2FjaGVJdGVtLm1hdGNoZWRQcm9wZXJ0aWVzLmFw
cGVuZChtYXRjaFJlc3VsdC5tYXRjaGVkUHJvcGVydGllcyk7CiAgICAgY2FjaGVJdGVtLnJhbmdl
cyA9IG1hdGNoUmVzdWx0LnJhbmdlczsKICAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgY2FjaGUg
dGhlIG9yaWdpbmFsIFJlbmRlclN0eWxlIGluc3RhbmNlLiBJdCBtYXkgYmUgZnVydGhlciBtb2Rp
ZmllZC4KICAgICAvLyBUaGUgUmVuZGVyU3R5bGUgaW4gdGhlIGNhY2hlIGlzIHJlYWxseSBqdXN0
IGEgaG9sZGVyIGZvciB0aGUgc3Vic3RydWN0dXJlcyBhbmQgbmV2ZXIgdXNlZCBhcy1pcy4KICAg
ICBjYWNoZUl0ZW0ucmVuZGVyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoc3R5bGUpOwogICAg
IGNhY2hlSXRlbS5wYXJlbnRSZW5kZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShwYXJlbnRT
dHlsZSk7Ci0gICAgbV9tYXRjaGVkU3R5bGVEZWNsYXJhdGlvbkNhY2hlLmFkZChoYXNoLCBjYWNo
ZUl0ZW0pOworICAgIG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNoZS5hZGQoaGFzaCwgY2FjaGVJdGVt
KTsKIH0KLSAgICAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aW52YWxpZGF0ZU1hdGNoZWREZWNs
YXJhdGlvbkNhY2hlKCkKKwordm9pZCBDU1NTdHlsZVNlbGVjdG9yOjppbnZhbGlkYXRlTWF0Y2hl
ZFByb3BlcnRpZXNDYWNoZSgpCiB7Ci0gICAgbV9tYXRjaGVkU3R5bGVEZWNsYXJhdGlvbkNhY2hl
LmNsZWFyKCk7CisgICAgbV9tYXRjaGVkUHJvcGVydGllc0NhY2hlLmNsZWFyKCk7CiB9CiAKLXN0
YXRpYyBib29sIGlzQ2FjaGVhYmxlSW5NYXRjaGVkRGVjbGFyYXRpb25DYWNoZShjb25zdCBSZW5k
ZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSkKK3N0YXRpYyBi
b29sIGlzQ2FjaGVhYmxlSW5NYXRjaGVkUHJvcGVydGllc0NhY2hlKGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQogewogICAgIGlmIChzdHls
ZS0+dW5pcXVlKCkgfHwgKHN0eWxlLT5zdHlsZVR5cGUoKSAhPSBOT1BTRVVETyAmJiBwYXJlbnRT
dHlsZS0+dW5pcXVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjQzLDEyICsyNjU1
LDEyIEBAIHN0YXRpYyBib29sIGlzQ2FjaGVhYmxlSW5NYXRjaGVkRGVjbGFyYXQKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseU1hdGNoZWREZWNsYXJh
dGlvbnMoY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0KQordm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjphcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3Vs
dCkKIHsKLSAgICB1bnNpZ25lZCBjYWNoZUhhc2ggPSBtYXRjaFJlc3VsdC5pc0NhY2hlYWJsZSA/
IGNvbXB1dGVEZWNsYXJhdGlvbkhhc2gobV9tYXRjaGVkRGVjbHMuZGF0YSgpLCBtX21hdGNoZWRE
ZWNscy5zaXplKCkpIDogMDsKKyAgICB1bnNpZ25lZCBjYWNoZUhhc2ggPSBtYXRjaFJlc3VsdC5p
c0NhY2hlYWJsZSA/IGNvbXB1dGVNYXRjaGVkUHJvcGVydGllc0hhc2gobWF0Y2hSZXN1bHQubWF0
Y2hlZFByb3BlcnRpZXMuZGF0YSgpLCBtYXRjaFJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5zaXpl
KCkpIDogMDsKICAgICBib29sIGFwcGx5SW5oZXJpdGVkT25seSA9IGZhbHNlOwotICAgIGNvbnN0
IE1hdGNoZWRTdHlsZURlY2xhcmF0aW9uQ2FjaGVJdGVtKiBjYWNoZUl0ZW0gPSAwOwotICAgIGlm
IChjYWNoZUhhc2ggJiYgKGNhY2hlSXRlbSA9IGZpbmRGcm9tTWF0Y2hlZERlY2xhcmF0aW9uQ2Fj
aGUoY2FjaGVIYXNoLCBtYXRjaFJlc3VsdCkpKSB7CisgICAgY29uc3QgTWF0Y2hlZFByb3BlcnRp
ZXNDYWNoZUl0ZW0qIGNhY2hlSXRlbSA9IDA7CisgICAgaWYgKGNhY2hlSGFzaCAmJiAoY2FjaGVJ
dGVtID0gZmluZEZyb21NYXRjaGVkUHJvcGVydGllc0NhY2hlKGNhY2hlSGFzaCwgbWF0Y2hSZXN1
bHQpKSkgewogICAgICAgICAvLyBXZSBjYW4gYnVpbGQgdXAgdGhlIHN0eWxlIGJ5IGNvcHlpbmcg
bm9uLWluaGVyaXRlZCBwcm9wZXJ0aWVzIGZyb20gYW4gZWFybGllciBzdHlsZSBvYmplY3QgYnVp
bHQgdXNpbmcgdGhlIHNhbWUgZXhhY3QKICAgICAgICAgLy8gc3R5bGUgZGVjbGFyYXRpb25zLiBX
ZSB0aGVuIG9ubHkgbmVlZCB0byBhcHBseSB0aGUgaW5oZXJpdGVkIHByb3BlcnRpZXMsIGlmIGFu
eSwgYXMgdGhlaXIgdmFsdWVzIGNhbiBkZXBlbmQgb24gdGhlIAogICAgICAgICAvLyBlbGVtZW50
IGNvbnRleHQuIFRoaXMgaXMgZmFzdCBhbmQgc2F2ZXMgbWVtb3J5IGJ5IHJldXNpbmcgdGhlIHN0
eWxlIGRhdGEgc3RydWN0dXJlcy4KQEAgLTI2NjksMTAgKzI2ODEsMTAgQEAgdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjphcHBseU1hdGNoZWREZWNsYQogICAgIC8vIFRoZSBvcmRlciBpcyAoMSkgaGln
aC1wcmlvcml0eSBub3QgaW1wb3J0YW50LCAoMikgaGlnaC1wcmlvcml0eSBpbXBvcnRhbnQsICgz
KSBub3JtYWwgbm90IGltcG9ydGFudAogICAgIC8vIGFuZCAoNCkgbm9ybWFsIGltcG9ydGFudC4K
ICAgICBtX2xpbmVIZWlnaHRWYWx1ZSA9IDA7Ci0gICAgYXBwbHlEZWNsYXJhdGlvbnM8dHJ1ZT4o
ZmFsc2UsIDAsIG1fbWF0Y2hlZERlY2xzLnNpemUoKSAtIDEsIGFwcGx5SW5oZXJpdGVkT25seSk7
Ci0gICAgYXBwbHlEZWNsYXJhdGlvbnM8dHJ1ZT4odHJ1ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZp
cnN0QXV0aG9yUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBhcHBseUlu
aGVyaXRlZE9ubHkpOwotICAgIGFwcGx5RGVjbGFyYXRpb25zPHRydWU+KHRydWUsIG1hdGNoUmVz
dWx0LnJhbmdlcy5maXJzdFVzZXJSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVzZXJSdWxl
LCBhcHBseUluaGVyaXRlZE9ubHkpOwotICAgIGFwcGx5RGVjbGFyYXRpb25zPHRydWU+KHRydWUs
IG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RV
QVJ1bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7CisgICAgYXBwbHlNYXRjaGVkUHJvcGVydGllczx0
cnVlPihtYXRjaFJlc3VsdCwgZmFsc2UsIDAsIG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVz
LnNpemUoKSAtIDEsIGFwcGx5SW5oZXJpdGVkT25seSk7CisgICAgYXBwbHlNYXRjaGVkUHJvcGVy
dGllczx0cnVlPihtYXRjaFJlc3VsdCwgdHJ1ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0QXV0
aG9yUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBhcHBseUluaGVyaXRl
ZE9ubHkpOworICAgIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXM8dHJ1ZT4obWF0Y2hSZXN1bHQsIHRy
dWUsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVzZXJSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMu
bGFzdFVzZXJSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOworICAgIGFwcGx5TWF0Y2hlZFByb3Bl
cnRpZXM8dHJ1ZT4obWF0Y2hSZXN1bHQsIHRydWUsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVB
UnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7
CiAKICAgICBpZiAoY2FjaGVJdGVtICYmIGNhY2hlSXRlbS0+cmVuZGVyU3R5bGUtPmVmZmVjdGl2
ZVpvb20oKSAhPSBtX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpIHsKICAgICAgICAgbV9mb250RGly
dHkgPSB0cnVlOwpAQCAtMjY5MSwxNiArMjcwMywxNiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmFwcGx5TWF0Y2hlZERlY2xhCiAgICAgICAgIGFwcGx5SW5oZXJpdGVkT25seSA9IGZhbHNlOwog
CiAgICAgLy8gTm93IGRvIHRoZSBub3JtYWwgcHJpb3JpdHkgVUEgcHJvcGVydGllcy4KLSAgICBh
cHBseURlY2xhcmF0aW9uczxmYWxzZT4oZmFsc2UsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVB
UnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7
CisgICAgYXBwbHlNYXRjaGVkUHJvcGVydGllczxmYWxzZT4obWF0Y2hSZXN1bHQsIGZhbHNlLCBt
YXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFS
dWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwogICAgIAogICAgIC8vIENhY2hlIG91ciBib3JkZXIg
YW5kIGJhY2tncm91bmQgc28gdGhhdCB3ZSBjYW4gZXhhbWluZSB0aGVtIGxhdGVyLgogICAgIGNh
Y2hlQm9yZGVyQW5kQmFja2dyb3VuZCgpOwogICAgIAogICAgIC8vIE5vdyBkbyB0aGUgYXV0aG9y
IGFuZCB1c2VyIG5vcm1hbCBwcmlvcml0eSBwcm9wZXJ0aWVzIGFuZCBhbGwgdGhlICFpbXBvcnRh
bnQgcHJvcGVydGllcy4KLSAgICBhcHBseURlY2xhcmF0aW9uczxmYWxzZT4oZmFsc2UsIG1hdGNo
UmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlICsgMSwgbV9tYXRjaGVkRGVjbHMuc2l6ZSgpIC0gMSwg
YXBwbHlJbmhlcml0ZWRPbmx5KTsKLSAgICBhcHBseURlY2xhcmF0aW9uczxmYWxzZT4odHJ1ZSwg
bWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxh
c3RBdXRob3JSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwotICAgIGFwcGx5RGVjbGFyYXRpb25z
PGZhbHNlPih0cnVlLCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVc2VyUnVsZSwgbWF0Y2hSZXN1
bHQucmFuZ2VzLmxhc3RVc2VyUnVsZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKLSAgICBhcHBseURl
Y2xhcmF0aW9uczxmYWxzZT4odHJ1ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCBt
YXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKKyAgICBh
cHBseU1hdGNoZWRQcm9wZXJ0aWVzPGZhbHNlPihtYXRjaFJlc3VsdCwgZmFsc2UsIG1hdGNoUmVz
dWx0LnJhbmdlcy5sYXN0VUFSdWxlICsgMSwgbWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMu
c2l6ZSgpIC0gMSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKKyAgICBhcHBseU1hdGNoZWRQcm9wZXJ0
aWVzPGZhbHNlPihtYXRjaFJlc3VsdCwgdHJ1ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0QXV0
aG9yUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBhcHBseUluaGVyaXRl
ZE9ubHkpOworICAgIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXM8ZmFsc2U+KG1hdGNoUmVzdWx0LCB0
cnVlLCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVc2VyUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2Vz
Lmxhc3RVc2VyUnVsZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKKyAgICBhcHBseU1hdGNoZWRQcm9w
ZXJ0aWVzPGZhbHNlPihtYXRjaFJlc3VsdCwgdHJ1ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0
VUFSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgYXBwbHlJbmhlcml0ZWRPbmx5
KTsKICAgICAKICAgICBsb2FkUGVuZGluZ0ltYWdlcygpOwogICAgIApAQCAtMjcxMiw5ICsyNzI0
LDkgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseU1hdGNoZWREZWNsYQogICAgIAogICAg
IGlmIChjYWNoZUl0ZW0gfHwgIWNhY2hlSGFzaCkKICAgICAgICAgcmV0dXJuOwotICAgIGlmICgh
aXNDYWNoZWFibGVJbk1hdGNoZWREZWNsYXJhdGlvbkNhY2hlKG1fc3R5bGUuZ2V0KCksIG1fcGFy
ZW50U3R5bGUpKQorICAgIGlmICghaXNDYWNoZWFibGVJbk1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUo
bV9zdHlsZS5nZXQoKSwgbV9wYXJlbnRTdHlsZSkpCiAgICAgICAgIHJldHVybjsKLSAgICBhZGRU
b01hdGNoZWREZWNsYXJhdGlvbkNhY2hlKG1fc3R5bGUuZ2V0KCksIG1fcGFyZW50U3R5bGUsIGNh
Y2hlSGFzaCwgbWF0Y2hSZXN1bHQpOworICAgIGFkZFRvTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSht
X3N0eWxlLmdldCgpLCBtX3BhcmVudFN0eWxlLCBjYWNoZUhhc2gsIG1hdGNoUmVzdWx0KTsKIH0K
IAogc3RhdGljIGlubGluZSBib29sIGNvbXBhcmVQYWdlUnVsZXMoY29uc3QgQ1NTUGFnZVJ1bGUq
IHIxLCBjb25zdCBDU1NQYWdlUnVsZSogcjIpCkBAIC0yNzIyLDcgKzI3MzQsNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgY29tcGFyZVBhZ2VSdWxlcyhjb25zCiAgICAgcmV0dXJuIHIxLT5zZWxlY3Rv
cigpLT5zcGVjaWZpY2l0eSgpIDwgcjItPnNlbGVjdG9yKCktPnNwZWNpZmljaXR5KCk7CiB9CiAK
LXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hQYWdlUnVsZXMoUnVsZVNldCogcnVsZXMsIGJv
b2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdlTmFtZSkK
K3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hQYWdlUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3Vs
dCwgUnVsZVNldCogcnVsZXMsIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29u
c3QgU3RyaW5nJiBwYWdlTmFtZSkKIHsKICAgICBpZiAoIXJ1bGVzKQogICAgICAgICByZXR1cm47
CkBAIC0yNzM1LDcgKzI3NDcsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUGFnZVJ1
bGVzKFJ1CiAgICAgc3RkOjpzdGFibGVfc29ydChtYXRjaGVkUGFnZVJ1bGVzLmJlZ2luKCksIG1h
dGNoZWRQYWdlUnVsZXMuZW5kKCksIGNvbXBhcmVQYWdlUnVsZXMpOwogCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1hdGNoZWRQYWdlUnVsZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgIGFk
ZE1hdGNoZWREZWNsYXJhdGlvbihtYXRjaGVkUGFnZVJ1bGVzW2ldLT5wcm9wZXJ0aWVzKCkpOwor
ICAgICAgICBhZGRNYXRjaGVkUHJvcGVydGllcyhyZXN1bHQsIG1hdGNoZWRQYWdlUnVsZXNbaV0t
PnByb3BlcnRpZXMoKSk7CiB9CiAKIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hQYWdlUnVs
ZXNGb3JMaXN0KFZlY3RvcjxDU1NQYWdlUnVsZSo+JiBtYXRjaGVkUnVsZXMsIGNvbnN0IFZlY3Rv
cjxDU1NQYWdlUnVsZSo+JiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdl
LCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5oCShyZXZpc2lvbiAxMDc3MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIGJvb2wgY3JlYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5W
YWx1ZSwgUmVuZGVyU3R5bGUqIGluU3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIFRyYW5z
Zm9ybU9wZXJhdGlvbnMmIG91dE9wZXJhdGlvbnMpOwogICAgIAotICAgIHZvaWQgaW52YWxpZGF0
ZU1hdGNoZWREZWNsYXJhdGlvbkNhY2hlKCk7CisgICAgdm9pZCBpbnZhbGlkYXRlTWF0Y2hlZFBy
b3BlcnRpZXNDYWNoZSgpOwogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGJvb2wgY3Jl
YXRlRmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgUmVuZGVyU3R5bGUqIGluU3R5
bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIEZpbHRlck9wZXJhdGlvbnMmIG91dE9wZXJhdGlv
bnMpOwpAQCAtMjU5LDcgKzI1OSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGp1c3RSZW5kZXJT
dHlsZShSZW5kZXJTdHlsZSogc3R5bGVUb0FkanVzdCwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxl
LCBFbGVtZW50Kik7CiAKICAgICB2b2lkIGFkZE1hdGNoZWRSdWxlKGNvbnN0IFJ1bGVEYXRhKiBy
dWxlKSB7IG1fbWF0Y2hlZFJ1bGVzLmFwcGVuZChydWxlKTsgfQotICAgIHZvaWQgYWRkTWF0Y2hl
ZERlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQqLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlID0g
U2VsZWN0b3JDaGVja2VyOjpNYXRjaEFsbCk7CiAKICAgICBzdHJ1Y3QgTWF0Y2hSYW5nZXMgewog
ICAgICAgICBNYXRjaFJhbmdlcygpIDogZmlyc3RVQVJ1bGUoLTEpLCBsYXN0VUFSdWxlKC0xKSwg
Zmlyc3RBdXRob3JSdWxlKC0xKSwgbGFzdEF1dGhvclJ1bGUoLTEpLCBmaXJzdFVzZXJSdWxlKC0x
KSwgbGFzdFVzZXJSdWxlKC0xKSB7IH0KQEAgLTI3MSwzNCArMjcwLDUwIEBAIHByaXZhdGU6CiAg
ICAgICAgIGludCBsYXN0VXNlclJ1bGU7CiAgICAgfTsKIAorICAgIHN0cnVjdCBNYXRjaGVkUHJv
cGVydGllcyB7CisgICAgICAgIE1hdGNoZWRQcm9wZXJ0aWVzKCkgOiBwb3NzaWJseVBhZGRlZE1l
bWJlcigwKSB7IH0KKyAgICAgICAgCisgICAgICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBw
cm9wZXJ0aWVzOworICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICB1bnNpZ25lZCBsaW5rTWF0
Y2hUeXBlOworICAgICAgICAgICAgLy8gVXNlZCB0byBtYWtlIHN1cmUgYWxsIG1lbW9yeSBpcyB6
ZXJvLWluaXRpYWxpemVkIHNpbmNlIHdlIGNvbXB1dGUgdGhlIGhhc2ggb3ZlciB0aGUgYnl0ZXMg
b2YgdGhpcyBvYmplY3QuCisgICAgICAgICAgICB2b2lkKiBwb3NzaWJseVBhZGRlZE1lbWJlcjsK
KyAgICAgICAgfTsKKyAgICB9OworCiAgICAgc3RydWN0IE1hdGNoUmVzdWx0IHsKICAgICAgICAg
TWF0Y2hSZXN1bHQoKSA6IGlzQ2FjaGVhYmxlKHRydWUpIHsgfQorICAgICAgICBWZWN0b3I8TWF0
Y2hlZFByb3BlcnRpZXMsIDY0PiBtYXRjaGVkUHJvcGVydGllczsKKyAgICAgICAgVmVjdG9yPENT
U1N0eWxlUnVsZSosIDY0PiBtYXRjaGVkUnVsZXM7CiAgICAgICAgIE1hdGNoUmFuZ2VzIHJhbmdl
czsKICAgICAgICAgYm9vbCBpc0NhY2hlYWJsZTsKICAgICB9OworICAgIHN0YXRpYyB2b2lkIGFk
ZE1hdGNoZWRQcm9wZXJ0aWVzKE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCwgU3R5bGVQcm9wZXJ0
eVNldCogcHJvcGVydGllcywgQ1NTU3R5bGVSdWxlKiBydWxlID0gMCwgdW5zaWduZWQgbGlua01h
dGNoVHlwZSA9ICBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoQWxsKTsKKwogICAgIHZvaWQgbWF0Y2hB
bGxSdWxlcyhNYXRjaFJlc3VsdCYpOwogICAgIHZvaWQgbWF0Y2hVQVJ1bGVzKE1hdGNoUmVzdWx0
Jik7Ci0gICAgdm9pZCBtYXRjaFJ1bGVzKFJ1bGVTZXQqLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBp
bnQmIGxhc3RSdWxlSW5kZXgsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOwotICAgIHZvaWQgbWF0
Y2hBdXRob3JSdWxlcyhpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGJv
b2wgaW5jbHVkZUVtcHR5UnVsZXMpOwotICAgIHZvaWQgbWF0Y2hTY29wZWRBdXRob3JSdWxlcyhp
bnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGJvb2wgaW5jbHVkZUVtcHR5
UnVsZXMpOworICAgIHZvaWQgbWF0Y2hVQVJ1bGVzKE1hdGNoUmVzdWx0JiwgUnVsZVNldCopOwor
ICAgIHZvaWQgbWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5
UnVsZXMpOworICAgIHZvaWQgbWF0Y2hVc2VyUnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1
ZGVFbXB0eVJ1bGVzKTsKKyAgICB2b2lkIG1hdGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1
bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1
bGVzKFJ1bGVTZXQqLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGJv
b2wgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JS
ZWdpb24oUnVsZVNldCosIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwg
Ym9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zv
ckxpc3QoY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiosIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYg
bGFzdFJ1bGVJbmRleCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgYm9vbCBmYXN0UmVq
ZWN0U2VsZWN0b3IoY29uc3QgUnVsZURhdGEmKSBjb25zdDsKICAgICB2b2lkIHNvcnRNYXRjaGVk
UnVsZXMoKTsKLSAgICB2b2lkIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcygpOworICAgIHZv
aWQgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0Jik7CiAKICAgICBib29s
IGNoZWNrU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmKTsKICAgICBib29sIGNoZWNrUmVnaW9uU2Vs
ZWN0b3IoQ1NTU2VsZWN0b3IqIHJlZ2lvblNlbGVjdG9yLCBFbGVtZW50KiByZWdpb25FbGVtZW50
KTsKLSAgICB2b2lkIGFwcGx5TWF0Y2hlZERlY2xhcmF0aW9ucyhjb25zdCBNYXRjaFJlc3VsdCYp
OworICAgIHZvaWQgYXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJlc3VsdCYpOwog
ICAgIHRlbXBsYXRlIDxib29sIGZpcnN0UGFzcz4KLSAgICB2b2lkIGFwcGx5RGVjbGFyYXRpb25z
KGJvb2wgaW1wb3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZEluZGV4LCBib29sIGluaGVy
aXRlZE9ubHkpOworICAgIHZvaWQgYXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJl
c3VsdCYsIGJvb2wgaW1wb3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZEluZGV4LCBib29s
IGluaGVyaXRlZE9ubHkpOwogICAgIHRlbXBsYXRlIDxib29sIGZpcnN0UGFzcz4KLSAgICB2b2lk
IGFwcGx5RGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0eVNldCosIGJvb2wgaXNJbXBvcnRhbnQsIGJv
b2wgaW5oZXJpdGVkT25seSk7CisgICAgdm9pZCBhcHBseVByb3BlcnRpZXMoY29uc3QgU3R5bGVQ
cm9wZXJ0eVNldCogcHJvcGVydGllcywgQ1NTU3R5bGVSdWxlKiwgYm9vbCBpc0ltcG9ydGFudCwg
Ym9vbCBpbmhlcml0ZWRPbmx5KTsKIAogICAgIHN0YXRpYyBib29sIGlzVmFsaWRSZWdpb25TdHls
ZVByb3BlcnR5KGludCBpZCk7CiAKLSAgICB2b2lkIG1hdGNoUGFnZVJ1bGVzKFJ1bGVTZXQqLCBi
b29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5hbWUp
OworICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXMoTWF0Y2hSZXN1bHQmLCBSdWxlU2V0KiwgYm9vbCBp
c0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKTsKICAg
ICB2b2lkIG1hdGNoUGFnZVJ1bGVzRm9yTGlzdChWZWN0b3I8Q1NTUGFnZVJ1bGUqPiYgbWF0Y2hl
ZFJ1bGVzLCBjb25zdCBWZWN0b3I8Q1NTUGFnZVJ1bGUqPiYsIGJvb2wgaXNMZWZ0UGFnZSwgYm9v
bCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdlTmFtZSk7CiAgICAgYm9vbCBpc0xlZnRQ
YWdlKGludCBwYWdlSW5kZXgpIGNvbnN0OwogICAgIGJvb2wgaXNSaWdodFBhZ2UoaW50IHBhZ2VJ
bmRleCkgY29uc3QgeyByZXR1cm4gIWlzTGVmdFBhZ2UocGFnZUluZGV4KTsgfQpAQCAtMzcyLDM5
ICszODcsMjQgQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGxvYWRQZW5k
aW5nSW1hZ2UoU3R5bGVQZW5kaW5nSW1hZ2UqKTsKICAgICB2b2lkIGxvYWRQZW5kaW5nSW1hZ2Vz
KCk7CiAKLSAgICBzdHJ1Y3QgTWF0Y2hlZFN0eWxlRGVjbGFyYXRpb24gewotICAgICAgICBNYXRj
aGVkU3R5bGVEZWNsYXJhdGlvbigpIDogcG9zc2libHlQYWRkZWRNZW1iZXIoMCkgeyB9Ci0KLSAg
ICAgICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHN0eWxlRGVjbGFyYXRpb247Ci0gICAgICAg
IHVuaW9uIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGU7Ci0gICAgICAgICAg
ICAvLyBVc2VkIHRvIG1ha2Ugc3VyZSBhbGwgbWVtb3J5IGlzIHplcm8taW5pdGlhbGl6ZWQgc2lu
Y2Ugd2UgY29tcHV0ZSB0aGUgaGFzaCBvdmVyIHRoZSBieXRlcyBvZiB0aGlzIG9iamVjdC4KLSAg
ICAgICAgICAgIHZvaWQqIHBvc3NpYmx5UGFkZGVkTWVtYmVyOwotICAgICAgICB9OwotICAgIH07
Ci0gICAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVEZWNsYXJhdGlvbkhhc2goTWF0Y2hlZFN0eWxl
RGVjbGFyYXRpb24qLCB1bnNpZ25lZCBzaXplKTsKLSAgICBzdHJ1Y3QgTWF0Y2hlZFN0eWxlRGVj
bGFyYXRpb25DYWNoZUl0ZW0gewotICAgICAgICBWZWN0b3I8TWF0Y2hlZFN0eWxlRGVjbGFyYXRp
b24+IG1hdGNoZWRTdHlsZURlY2xhcmF0aW9uczsKKyAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0
ZU1hdGNoZWRQcm9wZXJ0aWVzSGFzaChjb25zdCBNYXRjaGVkUHJvcGVydGllcyosIHVuc2lnbmVk
IHNpemUpOworICAgIHN0cnVjdCBNYXRjaGVkUHJvcGVydGllc0NhY2hlSXRlbSB7CisgICAgICAg
IFZlY3RvcjxNYXRjaGVkUHJvcGVydGllcz4gbWF0Y2hlZFByb3BlcnRpZXM7CiAgICAgICAgIE1h
dGNoUmFuZ2VzIHJhbmdlczsKICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiByZW5kZXJTdHls
ZTsKICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBwYXJlbnRSZW5kZXJTdHlsZTsKICAgICB9
OwotICAgIGNvbnN0IE1hdGNoZWRTdHlsZURlY2xhcmF0aW9uQ2FjaGVJdGVtKiBmaW5kRnJvbU1h
dGNoZWREZWNsYXJhdGlvbkNhY2hlKHVuc2lnbmVkIGhhc2gsIGNvbnN0IE1hdGNoUmVzdWx0Jik7
Ci0gICAgdm9pZCBhZGRUb01hdGNoZWREZWNsYXJhdGlvbkNhY2hlKGNvbnN0IFJlbmRlclN0eWxl
KiwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCB1bnNpZ25lZCBoYXNoLCBjb25zdCBN
YXRjaFJlc3VsdCYpOworICAgIGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVJdGVtKiBmaW5k
RnJvbU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUodW5zaWduZWQgaGFzaCwgY29uc3QgTWF0Y2hSZXN1
bHQmKTsKKyAgICB2b2lkIGFkZFRvTWF0Y2hlZFByb3BlcnRpZXNDYWNoZShjb25zdCBSZW5kZXJT
dHlsZSosIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgdW5zaWduZWQgaGFzaCwgY29u
c3QgTWF0Y2hSZXN1bHQmKTsKIAogICAgIC8vIEV2ZXJ5IE4gYWRkaXRpb25zIHRvIHRoZSBtYXRj
aGVkIGRlY2xhcmF0aW9uIGNhY2hlIHRyaWdnZXIgYSBzd2VlcCB3aGVyZSBlbnRyaWVzIGhvbGRp
bmcKICAgICAvLyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gYSBzdHlsZSBkZWNsYXJhdGlvbiBhcmUg
Z2FyYmFnZSBjb2xsZWN0ZWQuCi0gICAgdm9pZCBzd2VlcE1hdGNoZWREZWNsYXJhdGlvbkNhY2hl
KCk7CisgICAgdm9pZCBzd2VlcE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUoKTsKIAotICAgIC8vIFdl
IGNvbGxlY3QgdGhlIHNldCBvZiBkZWNscyB0aGF0IG1hdGNoIGluIHxtX21hdGNoZWREZWNsc3wu
IFdlIHRoZW4gd2FsayB0aGUKLSAgICAvLyBzZXQgb2YgbWF0Y2hlZCBkZWNscyBmb3VyIHRpbWVz
LCBvbmNlIGZvciB0aG9zZSBwcm9wZXJ0aWVzIHRoYXQgb3RoZXJzIGRlcGVuZCBvbiAobGlrZSBm
b250LXNpemUpLAotICAgIC8vIGFuZCB0aGVuIGEgc2Vjb25kIHRpbWUgZm9yIGFsbCB0aGUgcmVt
YWluaW5nIHByb3BlcnRpZXMuIFdlIHRoZW4gZG8gdGhlIHNhbWUgdHdvIHBhc3NlcwotICAgIC8v
IGZvciBhbnkgIWltcG9ydGFudCBydWxlcy4KLSAgICBWZWN0b3I8TWF0Y2hlZFN0eWxlRGVjbGFy
YXRpb24sIDY0PiBtX21hdGNoZWREZWNsczsKLSAgICB1bnNpZ25lZCBtX21hdGNoZWREZWNsYXJh
dGlvbkNhY2hlQWRkaXRpb25zU2luY2VMYXN0U3dlZXA7CisgICAgdW5zaWduZWQgbV9tYXRjaGVk
UHJvcGVydGllc0NhY2hlQWRkaXRpb25zU2luY2VMYXN0U3dlZXA7CiAKLSAgICB0eXBlZGVmIEhh
c2hNYXA8dW5zaWduZWQsIE1hdGNoZWRTdHlsZURlY2xhcmF0aW9uQ2FjaGVJdGVtPiBNYXRjaGVk
U3R5bGVEZWNsYXJhdGlvbkNhY2hlOwotICAgIE1hdGNoZWRTdHlsZURlY2xhcmF0aW9uQ2FjaGUg
bV9tYXRjaGVkU3R5bGVEZWNsYXJhdGlvbkNhY2hlOworICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNp
Z25lZCwgTWF0Y2hlZFByb3BlcnRpZXNDYWNoZUl0ZW0+IE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGU7
CisgICAgTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGU7CiAK
ICAgICAvLyBBIGJ1ZmZlciB1c2VkIHRvIGhvbGQgdGhlIHNldCBvZiBtYXRjaGVkIHJ1bGVzIGZv
ciBhbiBlbGVtZW50LCBhbmQgYSB0ZW1wb3JhcnkgYnVmZmVyIHVzZWQgZm9yCiAgICAgLy8gbWVy
Z2Ugc29ydGluZy4KQEAgLTQ3MCw4ICs0NzAsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBm
cmllbmQgY2xhc3MgQ1NTU3R5bGVBcHBseVByb3BlcnR5OwotICAgIGZyaWVuZCBib29sIG9wZXJh
dG9yPT0oY29uc3QgTWF0Y2hlZFN0eWxlRGVjbGFyYXRpb24mLCBjb25zdCBNYXRjaGVkU3R5bGVE
ZWNsYXJhdGlvbiYpOwotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgTWF0Y2hlZFN0
eWxlRGVjbGFyYXRpb24mLCBjb25zdCBNYXRjaGVkU3R5bGVEZWNsYXJhdGlvbiYpOworICAgIGZy
aWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmLCBjb25zdCBNYXRj
aGVkUHJvcGVydGllcyYpOworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgTWF0Y2hl
ZFByb3BlcnRpZXMmLCBjb25zdCBNYXRjaGVkUHJvcGVydGllcyYpOwogICAgIGZyaWVuZCBib29s
IG9wZXJhdG9yPT0oY29uc3QgTWF0Y2hSYW5nZXMmLCBjb25zdCBNYXRjaFJhbmdlcyYpOwogICAg
IGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgTWF0Y2hSYW5nZXMmLCBjb25zdCBNYXRjaFJh
bmdlcyYpOwogfTsK
</data>
<flag name="review"
          id="129156"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>