<?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>205887</bug_id>
          
          <creation_ts>2020-01-07 14:29:33 -0800</creation_ts>
          <short_desc>Introduce _WKResourceLoadDelegate</short_desc>
          <delta_ts>2020-02-14 14:37:56 -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>New Bugs</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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>dino</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1603794</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-07 14:29:33 -0800</bug_when>
    <thetext>Introduce _WKResourceLoadDelegate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603803</commentid>
    <comment_count>1</comment_count>
      <attachid>387037</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-07 14:45:24 -0800</bug_when>
    <thetext>Created attachment 387037
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603809</commentid>
    <comment_count>2</comment_count>
      <attachid>387040</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-07 14:55:35 -0800</bug_when>
    <thetext>Created attachment 387040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603827</commentid>
    <comment_count>3</comment_count>
      <attachid>387040</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-01-07 15:19:04 -0800</bug_when>
    <thetext>Comment on attachment 387040
Patch

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

&gt; Source/WebKit/ChangeLog:11
&gt; +        This client will need to be expanded to implement &lt;rdar://problem/57132290&gt; but this is a minimal testable start.

Why mention a radar in a public commit? You should explain what it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603835</commentid>
    <comment_count>4</comment_count>
      <attachid>387040</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-07 15:40:42 -0800</bug_when>
    <thetext>Comment on attachment 387040
Patch

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

&gt;&gt; Source/WebKit/ChangeLog:11
&gt;&gt; +        This client will need to be expanded to implement &lt;rdar://problem/57132290&gt; but this is a minimal testable start.
&gt; 
&gt; Why mention a radar in a public commit? You should explain what it is.

Same reason why any radars are mentioned in WebKit.
This is in case anyone with access to that radar wonders why this is being done.  People without access to that radar can ignore this.  The contents of that radar should not be discussed in a public repository.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603836</commentid>
    <comment_count>5</comment_count>
      <attachid>387046</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-07 15:41:23 -0800</bug_when>
    <thetext>Created attachment 387046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604874</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-09 14:48:01 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/254183/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604875</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-09 14:48:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/58458544&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619199</commentid>
    <comment_count>8</comment_count>
      <attachid>390815</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-14 14:11:55 -0800</bug_when>
    <thetext>Created attachment 390815
patch fixing perf bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619229</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-14 14:37:56 -0800</bug_when>
    <thetext>http://trac.webkit.org/r256646</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387037</attachid>
            <date>2020-01-07 14:45:24 -0800</date>
            <delta_ts>2020-01-07 14:55:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205887-20200107144523.patch</filename>
            <type>text/plain</type>
            <size>47620</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDA5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IF9XS1Jlc291cmNlTG9hZERlbGVnYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDU4ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
c2V0SGFzUmVzb3VyY2VMb2FkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omhhc1Jl
c291cmNlTG9hZENsaWVudCBjb25zdCk6CisKIDIwMjAtMDEtMDYgIERhbmllbCBCYXRlcyAgPGRh
YmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFByZWNpc2lvbiBvZiBnZXRDbGllbnRSZWN0cygp
LCBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBkaWZmZXJzIGRlcGVuZGluZyB3aGV0aGVyIHNpbXBs
ZSBsaW5lIGxheW91dCBvciBsaW5lIGJveCBsYXlvdXQgaXMgdXNlZApJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgJKHJldmlzaW9uIDI1NDA5MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MTcsNiArNjE3LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVzdW1lQWxsTWVkaWFCdWZmZXJpbmcoKTsKICAgICBib29sIG1lZGlhQnVmZmVyaW5n
SXNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQnVmZmVyaW5nSXNTdXNwZW5kZWQ7
IH0KIAorICAgIHZvaWQgc2V0SGFzUmVzb3VyY2VMb2FkQ2xpZW50KGJvb2wgaGFzKSB7IG1faGFz
UmVzb3VyY2VMb2FkQ2xpZW50ID0gaGFzOyB9CisgICAgYm9vbCBoYXNSZXNvdXJjZUxvYWRDbGll
bnQoKSBjb25zdCB7IHJldHVybiBtX2hhc1Jlc291cmNlTG9hZENsaWVudDsgfQorCiAjaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVNZWRpYUV2
ZW50KE1lZGlhRXZlbnRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZvbHVtZU9m
TWVkaWFFbGVtZW50KGRvdWJsZSwgdWludDY0X3QpOwpAQCAtOTg5LDYgKzk5Miw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX21lZGlhUGxheWJhY2tJc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX21lZGlhQnVmZmVyaW5nSXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9p
blVwZGF0ZVJlbmRlcmluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1Jlc291cmNlTG9hZENs
aWVudCB7IGZhbHNlIH07CiAgICAgVmVjdG9yPFVzZXJDb250ZW50VVJMUGF0dGVybj4gbV9jb3Jz
RGlzYWJsaW5nUGF0dGVybnM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU0MTAyKQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1OSBA
QAorMjAyMC0wMS0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIEludHJvZHVjZSBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1ODg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IGRlbGVnYXRl
IHRoYXQgd2lsbCBiZSBpbmZvcm1lZCBhYm91dCBtYWluIGFuZCBzdWJyZXNvdXJjZSByZXF1ZXN0
cy4KKyAgICAgICAgVGhpcyBpcyBkaXN0aW5jdCBmcm9tIHRoZSBXS05hdmlnYXRpb25EZWxlZ2F0
ZSwgd2hpY2ggcHJpbWFyaWx5IHJlY2VpdmVzIGNhbGxiYWNrcyBhYm91dCBtYWluIHJlc291cmNl
IHJlcXVlc3RzLgorICAgICAgICBCZWNhdXNlIHRoZSBJUEMgY2h1cm4gY2FuIGJlIGEgc2lnbmlm
aWNhbnQgcGVyZm9ybWFuY2UgcmVkdWN0aW9uLCBvbmx5IHNlbmQgdGhlIElQQyBtZXNzYWdlcyBp
ZiB0aGUgcGFnZSBoYXMgc3VjaCBhIGNsaWVudC4KKyAgICAgICAgVGhpcyBjbGllbnQgd2lsbCBu
ZWVkIHRvIGJlIGV4cGFuZGVkIHRvIGltcGxlbWVudCA8cmRhcjovL3Byb2JsZW0vNTcxMzIyOTA+
IGJ1dCB0aGlzIGlzIGEgbWluaW1hbCB0ZXN0YWJsZSBzdGFydC4KKyAgICAgICAgVGhlIHNpbXBs
ZSBjYXNlIGlzIGNvdmVyZWQgYnkgYW4gQVBJIHRlc3QuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAg
ICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZENsaWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfcmVzb3VyY2VMb2FkRGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9zZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNv
dXJjZUxvYWREZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUmVz
b3VyY2VMb2FkRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Jl
c291cmNlTG9hZERlbGVnYXRlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZERlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkRGVsZWdhdGU6OmNyZWF0ZVJlc291cmNlTG9hZENsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZERlbGVnYXRlOjpkZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZERlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OlJlc291cmNlTG9hZENsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnBhZ2VXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFJlc291cmNl
TG9hZENsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9vdmVy
cmlkZGVuTWVkaWFUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SGFzUmVzb3Vy
Y2VMb2FkQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIw
LTAxLTA2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXSBHZXQgZGlzcGxheSBsZXZlbCBpbiB0aGUgVUkgcHJvY2VzcyBmb3IgYWxsIGlPUyBwbGF0
Zm9ybXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI1NDA5MikKKysrIFNv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzcxLDYgKzM3
MSw3IEBAIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVV0aWxpdGllcy5tbQogVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2Eu
bW0KIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KK1VJUHJv
Y2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1NhZmVC
cm93c2luZ1dhcm5pbmdDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25TdGF0ZUNvZGlu
Zy5tbQogVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNTQwOTIpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnM6OmVuY28KIAogICAgIGVuY29kZXIgPDwgZnJhbWVBbmNlc3Rvck9yaWdp
bnM7CiAgICAgZW5jb2RlciA8PCBpc0hUVFBTVXBncmFkZUVuYWJsZWQ7CisgICAgZW5jb2RlciA8
PCBwYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIGVuY29kZXIgPDwgc2VydmljZVdvcmtlcnNNb2RlOwpAQCAtMjQ5LDYgKzI1MCwxMiBA
QCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9ICppc0hU
VFBTVXBncmFkZUVuYWJsZWQ7CiAKKyAgICBPcHRpb25hbDxib29sPiBwYWdlSGFzUmVzb3VyY2VM
b2FkQ2xpZW50OworICAgIGRlY29kZXIgPj4gcGFnZUhhc1Jlc291cmNlTG9hZENsaWVudDsKKyAg
ICBpZiAoIXBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmVzdWx0LnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQgPSAqcGFnZUhhc1Jl
c291cmNlTG9hZENsaWVudDsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBPcHRp
b25hbDxTZXJ2aWNlV29ya2Vyc01vZGU+IHNlcnZpY2VXb3JrZXJzTW9kZTsKICAgICBkZWNvZGVy
ID4+IHNlcnZpY2VXb3JrZXJzTW9kZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgJKHJl
dmlzaW9uIDI1NDA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBzaG91bGRFbmFibGVDcm9zc09yaWdpblJlc291cmNlUG9saWN5IHsg
ZmFsc2UgfTsKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gZnJh
bWVBbmNlc3Rvck9yaWdpbnM7CiAgICAgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQgeyBmYWxz
ZSB9OworICAgIGJvb2wgcGFnZUhhc1Jlc291cmNlTG9hZENsaWVudCB7IGZhbHNlIH07CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2Rl
IHNlcnZpY2VXb3JrZXJzTW9kZSB7IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSB9
OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjU0MDkyKQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDaGVja2VyLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25N
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFz
ay5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKQEAgLTMyMSw2ICsz
MjIsOSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrCiAgICAgaWYg
KHJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Jsb2IoKSkKICAgICAgICAgcGFyYW1ldGVycy5ibG9i
RmlsZVJlZmVyZW5jZXMgPSBuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJs
b2Iob3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkpOwogCisgICAgaWYgKG1fcGFyYW1ldGVycy5wYWdl
SGFzUmVzb3VyY2VMb2FkQ2xpZW50KQorICAgICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9j
ZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3NQcm94eTo6UGFnZVdpbGxTZW5kUmVxdWVzdChtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5
SUQsIHJlcXVlc3QpLCAwKTsKKwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFdURk1vdmUocmVx
dWVzdCk7CiAgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlz
LCAmbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAq
bmV0d29ya1Nlc3Npb24pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjU0MDkyKQorKysgU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMSw2ICsxMzEsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVu
Y29kZShJCiAgICAgZW5jb2RlciA8PCBvbGRQYWdlSUQ7CiAgICAgZW5jb2RlciA8PCBvdmVycmlk
ZGVuTWVkaWFUeXBlOwogICAgIGVuY29kZXIgPDwgY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAg
IGVuY29kZXIgPDwgaGFzUmVzb3VyY2VMb2FkQ2xpZW50OwogfQogCiBPcHRpb25hbDxXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtNDA0LDYgKzQwNSwxMiBAQCBPcHRpb25hbDxXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAg
ICAgcGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBXVEZNb3ZlKCpjb3JzRGlzYWJs
aW5nUGF0dGVybnMpOwogCisgICAgT3B0aW9uYWw8Ym9vbD4gaGFzUmVzb3VyY2VMb2FkQ2xpZW50
OworICAgIGRlY29kZXIgPj4gaGFzUmVzb3VyY2VMb2FkQ2xpZW50OworICAgIGlmICghaGFzUmVz
b3VyY2VMb2FkQ2xpZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFt
ZXRlcnMuaGFzUmVzb3VyY2VMb2FkQ2xpZW50ID0gV1RGTW92ZSgqaGFzUmVzb3VyY2VMb2FkQ2xp
ZW50KTsKKwogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNTQw
OTIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsyMDMsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyB7CiAKICAgICBTdHJpbmcgb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAgICBWZWN0
b3I8U3RyaW5nPiBjb3JzRGlzYWJsaW5nUGF0dGVybnM7CisgICAgYm9vbCBoYXNSZXNvdXJjZUxv
YWRDbGllbnQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1NDA5MikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJBUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmgi
CiAjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBUElQb2xpY3lD
bGllbnQuaCIKKyNpbmNsdWRlICJBUElSZXNvdXJjZUxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJB
UElTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCiAjaW5jbHVkZSAi
QVBJVVJMUmVxdWVzdC5oIgpAQCAtNzE0LDYgKzcxNSwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0SW5qZWN0ZWRCdW5kbGVDbGllCiAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+aW5pdGlh
bGl6ZShjbGllbnQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UmVzb3VyY2VMb2FkQ2xp
ZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlJlc291cmNlTG9hZENsaWVudD4mJiBjbGllbnQpCit7
CisgICAgYm9vbCBoYWRSZXNvdXJjZUxvYWRDbGllbnQgPSAhIW1fcmVzb3VyY2VMb2FkQ2xpZW50
OworICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gV1RGTW92ZShjbGllbnQpOworICAgIGJvb2wg
aGFzUmVzb3VyY2VMb2FkQ2xpZW50ID0gISFtX3Jlc291cmNlTG9hZENsaWVudDsKKyAgICBpZiAo
aGFkUmVzb3VyY2VMb2FkQ2xpZW50ICE9IGhhc1Jlc291cmNlTG9hZENsaWVudCkKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SGFzUmVzb3VyY2VMb2FkQ2xpZW50KGhhc1Jlc291
cmNlTG9hZENsaWVudCkpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNv
bnN0IFdlYktpdDo6VXNlckRhdGEmIG1lc3NhZ2VCb2R5KQogewogICAgIEFTU0VSVChtX3Byb2Nl
c3MtPmNvbm5lY3Rpb24oKSA9PSAmY29ubmVjdGlvbik7CkBAIC01OTA2LDYgKzU5MTYsMTIgQEAg
V2ViSW5zcGVjdG9yUHJveHkqIFdlYlBhZ2VQcm94eTo6aW5zcGVjdAogICAgIHJldHVybiBtX2lu
c3BlY3Rvci5nZXQoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OndpbGxTZW5kUmVxdWVzdChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKG1fcmVz
b3VyY2VMb2FkQ2xpZW50KQorICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudC0+d2lsbFNlbmRS
ZXF1ZXN0KHJlcXVlc3QpOworfQorCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eSogV2ViUGFnZVByb3h5OjpmdWxsU2NyZWVuTWFuYWdlcigpCiB7
CkBAIC03NTQ3LDYgKzc1NjMsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQ
cm94eTo6CiAKICAgICBwYXJhbWV0ZXJzLm92ZXJyaWRkZW5NZWRpYVR5cGUgPSBtX292ZXJyaWRk
ZW5NZWRpYVR5cGU7CiAgICAgcGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBtX2Nv
bmZpZ3VyYXRpb24tPmNvcnNEaXNhYmxpbmdQYXR0ZXJucygpOworICAgIHBhcmFtZXRlcnMuaGFz
UmVzb3VyY2VMb2FkQ2xpZW50ID0gISFtX3Jlc291cmNlTG9hZENsaWVudDsKIAogICAgIHByb2Nl
c3MuYWRkV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkobV91c2VyQ29udGVudENvbnRyb2xs
ZXIsIHBhcmFtZXRlcnMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkocmV2aXNpb24gMjU0MDkyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsNyBAQCBjbGFzcyBMb2FkZXJD
bGllbnQ7CiBjbGFzcyBOYXZpZ2F0aW9uOwogY2xhc3MgTmF2aWdhdGlvbkNsaWVudDsKIGNsYXNz
IFBvbGljeUNsaWVudDsKK2NsYXNzIFJlc291cmNlTG9hZENsaWVudDsKIGNsYXNzIFVJQ2xpZW50
OwogY2xhc3MgVVJMUmVxdWVzdDsKIH0KQEAgLTQ2NSw2ICs0NjYsOCBAQCBwdWJsaWM6CiAKICAg
ICBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVjdG9yKCkgY29uc3Q7CiAKKyAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKwogICAgIHZvaWQg
ZGlkQ2hhbmdlSW5zcGVjdG9yRnJvbnRlbmRDb3VudCh1bnNpZ25lZCBjb3VudCkgeyBtX2luc3Bl
Y3RvckZyb250ZW5kQ291bnQgPSBjb3VudDsgfQogICAgIHVuc2lnbmVkIGluc3BlY3RvckZyb250
ZW5kQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckZyb250ZW5kQ291bnQ7IH0KICAg
ICBib29sIGhhc0luc3BlY3RvckZyb250ZW5kKCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JG
cm9udGVuZENvdW50ID4gMDsgfQpAQCAtNTI5LDYgKzUzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldExvYWRlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMb2FkZXJDbGllbnQ+JiYpOwog
ICAgIHZvaWQgc2V0UG9saWN5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlBvbGljeUNsaWVu
dD4mJik7CiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb25zdCBXS1BhZ2VJbmpl
Y3RlZEJ1bmRsZUNsaWVudEJhc2UqKTsKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZENsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpSZXNvdXJjZUxvYWRDbGllbnQ+JiYpOwogCiAgICAgQVBJOjpV
SUNsaWVudCYgdWlDbGllbnQoKSB7IHJldHVybiAqbV91aUNsaWVudDsgfQogICAgIHZvaWQgc2V0
VUlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+JiYpOwpAQCAtMjIwOCw2ICsy
MjEyLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50PiBt
X2ZpbmRDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+
IG1fZmluZE1hdGNoZXNDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6RGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQ+IG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEFQSTo6UmVzb3VyY2VMb2FkQ2xpZW50PiBtX3Jlc291cmNlTG9hZENsaWVudDsKICNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250ZXh0
TWVudUNsaWVudD4gbV9jb250ZXh0TWVudUNsaWVudDsKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZENsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRDbGllbnQuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2Fk
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgUmVzb3VyY2VMb2FkQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SZXNvdXJjZUxvYWRDbGllbnQoKSA9IGRlZmF1bHQ7
CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpIGNvbnN0ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZp
c2lvbiAyNTQwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAjaW1wb3J0ICJSZW1vdGVM
YXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCIKICNpbXBvcnQgIlJlbW90ZU9iamVj
dFJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgiCisj
aW1wb3J0ICJSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nV2Fy
bmluZy5oIgogI2ltcG9ydCAiVUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVmVyc2lvbkNoZWNrcy5o
IgpAQCAtNTA1LDYgKzUwNiw3IEBAICAgICAvLyBXZSBhcmUgaW4gdGhlIFZpZXcncyBpbml0aWFs
aXphdGkKICAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQobWFrZVVuaXF1ZTxX
ZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CiAKICAgICBfaWNvbkxvYWRp
bmdEZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlPihzZWxm
KTsKKyAgICBfcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVzb3Vy
Y2VMb2FkRGVsZWdhdGU+KHNlbGYpOwogCiAgICAgX3VzZVBsYXRmb3JtRmluZFVJID0gWUVTOwog
CkBAIC02ODMsNiArNjg1LDE3IEBAIC0gKHZvaWQpX3NldEljb25Mb2FkaW5nRGVsZWdhdGU6KGlk
PF9XS0kKICAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZS0+c2V0RGVsZWdhdGUoaWNvbkxvYWRpbmdE
ZWxlZ2F0ZSk7CiB9CiAKKy0gKGlkIDxfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZT4pX3Jlc291cmNl
TG9hZERlbGVnYXRlCit7CisgICAgcmV0dXJuIF9yZXNvdXJjZUxvYWREZWxlZ2F0ZS0+ZGVsZWdh
dGUoKS5hdXRvcmVsZWFzZSgpOworfQorCistICh2b2lkKV9zZXRSZXNvdXJjZUxvYWREZWxlZ2F0
ZTooaWQ8X1dLUmVzb3VyY2VMb2FkRGVsZWdhdGU+KWRlbGVnYXRlCit7CisgICAgX3BhZ2UtPnNl
dFJlc291cmNlTG9hZENsaWVudChfcmVzb3VyY2VMb2FkRGVsZWdhdGUtPmNyZWF0ZVJlc291cmNl
TG9hZENsaWVudCgpKTsKKyAgICBfcmVzb3VyY2VMb2FkRGVsZWdhdGUtPnNldERlbGVnYXRlKGRl
bGVnYXRlKTsKK30KKwogLSAoV0tOYXZpZ2F0aW9uICopbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3QKIHsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9hZFJlcXVlc3QocmVx
dWVzdCkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0ludGVybmFsLmgJKHJldmlzaW9uIDI1NDA5MikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogZW51bSBjbGFzcyBDb250aW51
ZVVuc2FmZUxvYWQgOiBib29sOwogY2xhc3MgSWNvbkxvYWRpbmdEZWxlZ2F0ZTsKIGNsYXNzIE5h
dmlnYXRpb25TdGF0ZTsKK2NsYXNzIFJlc291cmNlTG9hZERlbGVnYXRlOwogY2xhc3MgU2FmZUJy
b3dzaW5nV2FybmluZzsKIGNsYXNzIFZpZXdTbmFwc2hvdDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsK
QEAgLTEwOCw2ICsxMDksNyBAQCBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYktpdDo6TmF2aWdhdGlvblN0YXRlPiBfbmF2aWdhdGlvblN0YXRlOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlVJRGVsZWdhdGU+IF91aURlbGVnYXRlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU+IF9pY29uTG9hZGlu
Z0RlbGVnYXRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlJlc291cmNlTG9hZERlbGVn
YXRlPiBfcmVzb3VyY2VMb2FkRGVsZWdhdGU7CiAKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLVGV4
dE1hbmlwdWxhdGlvbkRlbGVnYXRlPj4gX3RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZTsKICAgICBX
ZWFrT2JqQ1B0cjxpZCA8X1dLSW5wdXREZWxlZ2F0ZT4+IF9pbnB1dERlbGVnYXRlOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCShyZXZpc2lvbiAyNTQwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDYg
QEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZAogQGNsYXNzIF9XS0Fw
cGxpY2F0aW9uTWFuaWZlc3Q7CiBAY2xhc3MgX1dLRnJhbWVIYW5kbGU7CiBAY2xhc3MgX1dLSGl0
VGVzdFJlc3VsdDsKLUBjbGFzcyBfV0tJY29uTG9hZGluZ0RlbGVnYXRlOwogQGNsYXNzIF9XS0lu
c3BlY3RvcjsKIEBjbGFzcyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIEBjbGFzcyBfV0tTYWZl
QnJvd3NpbmdXYXJuaW5nOwpAQCAtMTI2LDYgKzEyNSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhO
U1VJbnRlZ2VyLCBfV0tSZWN0RWQKIEBwcm90b2NvbCBfV0tGdWxsc2NyZWVuRGVsZWdhdGU7CiBA
cHJvdG9jb2wgX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZTsKIEBwcm90b2NvbCBfV0tJbnB1dERlbGVn
YXRlOworQHByb3RvY29sIF9XS1Jlc291cmNlTG9hZERlbGVnYXRlOwogQHByb3RvY29sIF9XS1Rl
eHRNYW5pcHVsYXRpb25EZWxlZ2F0ZTsKIAogQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLUHJpdmF0
ZSkKQEAgLTEzOCw2ICsxMzgsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dL
UmVjdEVkCiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEhpc3RvcnlE
ZWxlZ2F0ZTopIGlkIDxXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGU+IF9oaXN0b3J5RGVsZWdhdGU7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRJY29uTG9hZGluZ0RlbGVn
YXRlOikgaWQgPF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU+IF9pY29uTG9hZGluZ0RlbGVnYXRlOwor
QHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0UmVzb3VyY2VMb2FkRGVsZWdh
dGU6KSBpZCA8X1dLUmVzb3VyY2VMb2FkRGVsZWdhdGU+IF9yZXNvdXJjZUxvYWREZWxlZ2F0ZSBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMICpfdW5yZWFjaGFibGVVUkw7CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMICpfbWFpbkZyYW1lVVJMIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZERlbGVnYXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZERl
bGVnYXRlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1Jlc291cmNlTG9hZERlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpCitAcHJvdG9jb2wgX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUg
PE5TT2JqZWN0PgorQG9wdGlvbmFsCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyB3aWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Q7CisKK0BlbmQKKwor
TlNfQVNTVU1FX05PTk5VTExfRU5ECkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bXBvcnQgIkFQSVJlc291cmNlTG9hZENsaWVudC5oIgorI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgi
CisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKworQHByb3RvY29sIF9XS1Jlc291cmNlTG9h
ZERlbGVnYXRlOworCituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIFJlc291cmNlTG9hZENsaWVudDsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlc291cmNlTG9hZERlbGVnYXRlIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZXNv
dXJjZUxvYWREZWxlZ2F0ZShXS1dlYlZpZXcgKik7CisgICAgflJlc291cmNlTG9hZERlbGVnYXRl
KCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpSZXNvdXJjZUxvYWRDbGllbnQ+IGNyZWF0
ZVJlc291cmNlTG9hZENsaWVudCgpOworCisgICAgUmV0YWluUHRyPGlkPF9XS1Jlc291cmNlTG9h
ZERlbGVnYXRlPj4gZGVsZWdhdGUoKTsKKyAgICB2b2lkIHNldERlbGVnYXRlKGlkPF9XS1Jlc291
cmNlTG9hZERlbGVnYXRlPik7CisKK3ByaXZhdGU6CisgICAgY2xhc3MgUmVzb3VyY2VMb2FkQ2xp
ZW50IDogcHVibGljIEFQSTo6UmVzb3VyY2VMb2FkQ2xpZW50IHsKKyAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBSZXNvdXJjZUxv
YWRDbGllbnQoUmVzb3VyY2VMb2FkRGVsZWdhdGUmKTsKKyAgICAgICAgflJlc291cmNlTG9hZENs
aWVudCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgLy8gQVBJOjpSZXNvdXJjZUxvYWRDbGll
bnQKKyAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JikgY29uc3QgZmluYWw7CisKKyAgICAgICAgUmVzb3VyY2VMb2FkRGVsZWdhdGUmIG1f
cmVzb3VyY2VMb2FkRGVsZWdhdGU7CisgICAgfTsKKworICAgIFdlYWtPYmpDUHRyPFdLV2ViVmll
dz4gbV93ZWJWaWV3OworICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tSZXNvdXJjZUxvYWREZWxlZ2F0
ZT4gPiBtX2RlbGVnYXRlOworCisgICAgc3RydWN0IHsKKyAgICAgICAgYm9vbCB3aWxsU2VuZFJl
cXVlc3QgOiAxOworICAgIH0gbV9kZWxlZ2F0ZU1ldGhvZHM7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9h
ZERlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IlJlc291cmNlTG9hZERlbGVnYXRlLmgiCisKKyNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZERlbGVn
YXRlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVz
b3VyY2VMb2FkRGVsZWdhdGUoV0tXZWJWaWV3ICp3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3KHdl
YlZpZXcpCit7Cit9CisKK1Jlc291cmNlTG9hZERlbGVnYXRlOjp+UmVzb3VyY2VMb2FkRGVsZWdh
dGUoKSA9IGRlZmF1bHQ7CisKK3N0ZDo6dW5pcXVlX3B0cjxBUEk6OlJlc291cmNlTG9hZENsaWVu
dD4gUmVzb3VyY2VMb2FkRGVsZWdhdGU6OmNyZWF0ZVJlc291cmNlTG9hZENsaWVudCgpCit7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkQ2xpZW50PigqdGhpcyk7Cit9CisKK1Jl
dGFpblB0cjxpZDxfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZT4+IFJlc291cmNlTG9hZERlbGVnYXRl
OjpkZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIG1fZGVsZWdhdGUuZ2V0KCk7Cit9CisKK3ZvaWQg
UmVzb3VyY2VMb2FkRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxfV0tSZXNvdXJjZUxvYWREZWxl
Z2F0ZT4gZGVsZWdhdGUpCit7CisgICAgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMud2lsbFNlbmRSZXF1ZXN0ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViVmlldzp3aWxsU2VuZFJlcXVlc3Q6KV07Cit9CisKK1Jlc291cmNl
TG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OlJlc291cmNlTG9hZENsaWVudChSZXNv
dXJjZUxvYWREZWxlZ2F0ZSYgZGVsZWdhdGUpCisgICAgOiBtX3Jlc291cmNlTG9hZERlbGVnYXRl
KGRlbGVnYXRlKQoreworfQorCitSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xp
ZW50Ojp+UmVzb3VyY2VMb2FkQ2xpZW50KCkgPSBkZWZhdWx0OworCit2b2lkIFJlc291cmNlTG9h
ZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Jlc291
cmNlTG9hZERlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndpbGxTZW5kUmVxdWVzdCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fcmVzb3VyY2VMb2FkRGVsZWdhdGUu
bV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisK
KyAgICBbZGVsZWdhdGUgd2ViVmlldzptX3Jlc291cmNlTG9hZERlbGVnYXRlLm1fd2ViVmlldy5n
ZXQoKS5nZXQoKSB3aWxsU2VuZFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlV
cGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI1NDA5MikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk0NCw2ICs5NDQsMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzY2hl
ZHVsZUNsZWFySQogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OlNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc2Vzc2lvbklELCB7IH0sIHNo
b3VsZEdyYW5kZmF0aGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnBhZ2VXaWxsU2VuZFJlcXVlc3QoV2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
K3sKKyAgICBhdXRvKiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7Cisg
ICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWdlLT53aWxsU2VuZFJlcXVl
c3QocmVxdWVzdCk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nVGVzdGluZ0V2
ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBldmVudCkKIHsKICAg
ICBpZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lv
bklEKHNlc3Npb25JRCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjU0MDkyKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwMSw2ICsyMDEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0UXVv
dGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKKyAgICB2
b2lkIHBhZ2VXaWxsU2VuZFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisKIHByaXZhdGU6CiAgICAgLy8gQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5CiAgICAgdm9pZCBnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1
bmNoT3B0aW9ucyYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMjU0MDkyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw0ICs2
Nyw2IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmUKICNlbmRpZgog
CiAgICAgUmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVj
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3Qg
Y3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQpIC0+IChPcHRpb25hbDx1aW50NjRf
dD4gbmV3UXVvdGEpIEFzeW5jCisgICAgCisgICAgUGFnZVdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6
OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0KQogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTQwOTIpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgy
LDYgKzExODIsNyBAQAogCQk1Q0FGREU0NzIxMzA4NDZBMDBCMUY3RTEgLyogX1dLSW5zcGVjdG9y
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQUZERTQ0MjEzMDg0MzYwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oICovOyB9
OwogCQk1Q0IyMzc4QzFERjBERTZFMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc4OTFERjBE
RDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNCMjM3OEUxREYwRTBEMzAwMTE3QUEzIC8q
IF9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc4RDFERjBFMEMyMDAxMTdBQTMgLyogX1dLV2Vic2l0
ZVBvbGljaWVzSW50ZXJuYWwuaCAqLzsgfTsKKwkJNUNCN0FGRTAyM0M1MkNFNTAwRTQ5Q0YzIC8q
IF9XS1Jlc291cmNlTG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0I3QUZERjIzQzUyQ0JDMDBFNDlDRjMgLyogX1dLUmVzb3VyY2VM
b2FkRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1Q0JDOUI4RTFDNjUyQ0EwMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0JDOUI4OTFDNjUy
NEE1MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmggKi87IH07CiAJCTVDQkQ1OTVDMjI4MEVE
RjQwMDJCMjJBQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzVEMjM4ODIyN0ExODkyMDAwQjlCREEgLyog
X1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tICovOyB9OwogCQk1Q0QyODY1MTFFNzIzNTk5MDA5NEZE
QzggLyogV0tDb250ZW50UnVsZUxpc3RTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUNEMjg2NEQxRTcyMkY0NDAwOTRGREM4IC8qIFdLQ29udGVu
dFJ1bGVMaXN0U3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7
IH07IH07CkBAIC0zOTAzLDYgKzM5MDQsMTAgQEAKIAkJNUNCMjM3ODkxREYwREQ0MzAwMTE3QUEz
IC8qIF9XS1dlYnNpdGVQb2xpY2llcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tXZWJzaXRlUG9saWNpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNC
MjM3OEExREYwREQ0MzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1dlYnNpdGVQb2xpY2llcy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMjM3OEQxREYwRTBDMjAwMTE3QUEzIC8qIF9X
S1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDQjdBRkRBMjNDNDNFNjQwMEU0OUNGMyAvKiBBUElSZXNvdXJjZUxvYWRDbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJUmVzb3VyY2VMb2FkQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjdBRkREMjNDNTI3M0QwMEU0OUNG
MyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1Q0I3QUZERTIzQzUyNzNEMDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCN0FGREYyM0M1MkNCQzAwRTQ5
Q0YzIC8qIF9XS1Jlc291cmNlTG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IF9XS1Jlc291cmNlTG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0RhdGFUYXNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM5QjhCMUM2NTI1NzMwMEE4RkRDRiAvKiBOZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IE5ldHdvcmtEYXRhVGFza0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1Q0M1REI5MTIxNDg4RTE2MDA2Q0I4QTggLyogU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01ODk3LDYgKzU5MDIsOCBAQAog
CQkJCUNEQTI5QTFFMUNCRUI1RkIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkuaCAqLywKIAkJCQlDREEyOUEyMjFDQkVCNjFBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCUNEQTI5QTFGMUNCRUI1RkIwMDkwMUND
RiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gKi8sCisJCQkJNUNCN0FGREQyM0M1
MjczRDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZERlbGVnYXRlLmggKi8sCisJCQkJNUNCN0FGREUy
M0M1MjczRDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZERlbGVnYXRlLm1tICovLAogCQkJCTVDQTk4
NTRCMjEwQkVCNzMwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gKi8sCiAJ
CQkJMUEwMDJENDcxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oICovLAog
CQkJCTFBMDAyRDQ2MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcubW0gKi8s
CkBAIC02Nzc0LDYgKzY3ODEsNyBAQAogCQkJCUE1NUJBODBDMUJBMTJCRTEwMDdDRDMzRCAvKiBf
V0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oICovLAogCQkJCUE1NUJBODBEMUJB
MTJCRTEwMDdDRDMzRCAvKiBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSAq
LywKIAkJCQk5OTBFMUUwODIzODRBODhCMDA0NjAyREYgLyogX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXJQcml2YXRlLmggKi8sCisJCQkJNUNCN0FGREYyM0M1MkNCQzAwRTQ5Q0Yz
IC8qIF9XS1Jlc291cmNlTG9hZERlbGVnYXRlLmggKi8sCiAJCQkJNDlGQkVGRkIyMzlBREIxODAw
QkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggKi8sCiAJCQkJ
NDlGQkVGRkMyMzlCMDExRDAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJz
dFBhcnR5Lm1tICovLAogCQkJCTQ5QkNBMTkwMjNBMTc1NDkwMDI4QTgzNiAvKiBfV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmggKi8sCkBAIC04NDcyLDYgKzg0ODAs
NyBAQAogCQkJCTFBRkREMzE0MTg5MUI1NDAwMDE1Mzk3MCAvKiBBUElQb2xpY3lDbGllbnQuaCAq
LywKIAkJCQk3Q0U0RDIxRDFBNDkxNENBMDBDN0YxNTIgLyogQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcCAqLywKIAkJCQk3Q0U0RDIxRTFBNDkxNENBMDBDN0YxNTIgLyogQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmggKi8sCisJCQkJNUNCN0FGREEyM0M0M0U2NDAwRTQ5Q0YzIC8q
IEFQSVJlc291cmNlTG9hZENsaWVudC5oICovLAogCQkJCTQ5QkNBMTkxMjNBMTc3NjYwMDI4QTgz
NiAvKiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oICovLAogCQkJCTQ5QkNB
MTk2MjNBMThGNjIwMDI4QTgzNiAvKiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0
eS5oICovLAogCQkJCTFBRkRFNjVGMTk1NEU5QjEwMEM0OEZGQSAvKiBBUElTZXNzaW9uU3RhdGUu
Y3BwICovLApAQCAtOTgxOCw2ICs5ODI3LDcgQEAKIAkJCQk5OTBFMUUwOTIzODRBQTU3MDA0NjAy
REYgLyogX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzNzcyMTZCODFBNEU2QkUwMDBEQ0E3MTggLyogX1dLUmVuZGVyaW5nUHJv
Z3Jlc3NFdmVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGNjA0QkFBMTg4OUZCQjgwMEVFMDM5
NSAvKiBfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0ludGVybmFsLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1Q0I3QUZFMDIzQzUyQ0U1MDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RkJGMDAxMjM5QjFGOEQwMEJEMDMyRiAvKiBfV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlCQ0Ex
OTUyM0ExOENGRDAwMjhBODM2IC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RkJGMDAwMjM5QjFGNzUwMEJEMDMyRiAv
KiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCShyZXZpc2lvbiAyNTQwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
NCw2ICsyNjQsOCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tCiAg
ICAgQ29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgY29udGVudEVuY29kaW5nU25pZmZpbmdQ
b2xpY3kgPSByZXNvdXJjZUxvYWRlci5zaG91bGRTbmlmZkNvbnRlbnRFbmNvZGluZygpID8gQ29u
dGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmIDogQ29udGVudEVuY29kaW5nU25pZmZp
bmdQb2xpY3k6OkRvTm90U25pZmY7CiAgICAgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgPSByZXNvdXJjZUxvYWRlci5zaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSgpID8gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSA6IFN0b3JlZENyZWRlbnRpYWxz
UG9saWN5OjpEb05vdFVzZTsKIAorICAgIGF1dG8qIGZyYW1lID0gcmVzb3VyY2VMb2FkZXIuZnJh
bWUoKTsKKwogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJz
OwogICAgIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAgIGxvYWRQ
YXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEID0gdHJhY2tpbmdQYXJhbWV0ZXJzLndlYlBhZ2VQcm94
eUlEOwpAQCAtMjg0LDcgKzI4NiwxMSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWRGcm9tCiAgICAgbG9hZFBhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBtYXhp
bXVtQnVmZmVyaW5nVGltZTsKICAgICBsb2FkUGFyYW1ldGVycy5vcHRpb25zID0gcmVzb3VyY2VM
b2FkZXIub3B0aW9ucygpOwogICAgIGxvYWRQYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSA9IHJl
c291cmNlTG9hZGVyLm9wdGlvbnMoKS5wcmVmbGlnaHRQb2xpY3k7Ci0gICAgbG9hZFBhcmFtZXRl
cnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSA/IHJlc291
cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuSFRUUFNVcGdyYWRlRW5hYmxlZCgpIDogZmFs
c2U7CisgICAgaWYgKGZyYW1lKSB7CisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmlzSFRUUFNVcGdy
YWRlRW5hYmxlZCA9IGZyYW1lLT5zZXR0aW5ncygpLkhUVFBTVXBncmFkZUVuYWJsZWQoKTsKKyAg
ICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQorICAgICAgICAgICAgbG9hZFBh
cmFtZXRlcnMucGFnZUhhc1Jlc291cmNlTG9hZENsaWVudCA9IHBhZ2UtPmhhc1Jlc291cmNlTG9h
ZENsaWVudCgpOworICAgIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBsb2Fk
UGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vyc01vZGUgPSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCku
c2VydmljZVdvcmtlcnNNb2RlOwpAQCAtMjkyLDcgKzI5OCw3IEBAIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnNjaGVkdWxlTG9hZEZyb20KICAgICBsb2FkUGFyYW1ldGVycy5odHRwSGVhZGVyc1Rv
S2VlcCA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5odHRwSGVhZGVyc1RvS2VlcDsKICNlbmRp
ZgogCi0gICAgYXV0byogZG9jdW1lbnQgPSByZXNvdXJjZUxvYWRlci5mcmFtZSgpID8gcmVzb3Vy
Y2VMb2FkZXIuZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisgICAgYXV0byogZG9jdW1l
bnQgPSBmcmFtZSA/IGZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKICAgICBpZiAocmVzb3Vy
Y2VMb2FkZXIub3B0aW9ucygpLmNzcFJlc3BvbnNlSGVhZGVycykKICAgICAgICAgbG9hZFBhcmFt
ZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLmNzcFJl
c3BvbnNlSGVhZGVyczsKICAgICBlbHNlIGlmIChkb2N1bWVudCAmJiAhZG9jdW1lbnQtPnNob3Vs
ZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpICYmIHJlc291cmNlTG9hZGVy
Lm9wdGlvbnMoKS5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID09IENvbnRlbnRTZWN1
cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2spIHsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNTQwOTIpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTU4LDYgKzU1OCw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIg
cGFnZUlELCAKICNlbmRpZgogCiAgICAgbV9wYWdlLT5zZXRDb250cm9sbGVkQnlBdXRvbWF0aW9u
KHBhcmFtZXRlcnMuY29udHJvbGxlZEJ5QXV0b21hdGlvbik7CisgICAgbV9wYWdlLT5zZXRIYXNS
ZXNvdXJjZUxvYWRDbGllbnQocGFyYW1ldGVycy5oYXNSZXNvdXJjZUxvYWRDbGllbnQpOwogCiAg
ICAgbV9wYWdlLT5zZXRDYW5TdGFydE1lZGlhKGZhbHNlKTsKICAgICBtX21heVN0YXJ0TWVkaWFX
aGVuSW5XaW5kb3cgPSBwYXJhbWV0ZXJzLm1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3c7CkBAIC0x
MjE2LDYgKzEyMTcsMTIgQEAgdWludDY0X3QgV2ViUGFnZTo6cmVuZGVyVHJlZVNpemUoKSBjb25z
dAogICAgIHJldHVybiBtX3BhZ2UtPnJlbmRlclRyZWVTaXplKCk7CiB9CiAKK3ZvaWQgV2ViUGFn
ZTo6c2V0SGFzUmVzb3VyY2VMb2FkQ2xpZW50KGJvb2wgaGFzKQoreworICAgIGlmIChtX3BhZ2Up
CisgICAgICAgIG1fcGFnZS0+c2V0SGFzUmVzb3VyY2VMb2FkQ2xpZW50KGhhcyk7Cit9CisKIHZv
aWQgV2ViUGFnZTo6c2V0VHJhY2tzUmVwYWludHMoYm9vbCB0cmFja1JlcGFpbnRzKQogewogICAg
IGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtYWluRnJhbWVWaWV3KCkpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyNTQwOTIpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1NDksNiArMTU0OSw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZERpc3BhdGNo
U3ludGhldGljTW91c2VFdmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCkgY29uc3Q7CiAgICAg
dm9pZCBwbGF0Zm9ybURpZFNlbGVjdEFsbCgpOworICAgIAorICAgIHZvaWQgc2V0SGFzUmVzb3Vy
Y2VMb2FkQ2xpZW50KGJvb2wpOwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgdm9p
ZCBkaWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KGNvbnN0IFdlYkNvbnRleHRNZW51
SXRlbURhdGEmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjU0MDkyKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtNTg3LDQgKzU4Nyw2IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51
bTp1aW4KICAgICBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb24oV2ViQ29yZTo6VGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXI6Okl0ZW1JZGVudGlmaWVyIGl0ZW1JRCwgVmVjdG9yPFdlYkNvcmU6OlRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbj4gdG9rZW5zKSAtPiAo
ZW51bTp1aW50OF90IFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVs
YXRpb25SZXN1bHQgcmVzdWx0KSBBc3luYwogICAgIAogICAgIFNldE92ZXJyaWRkZW5NZWRpYVR5
cGUoU3RyaW5nIG1lZGlhVHlwZSkKKworICAgIFNldEhhc1Jlc291cmNlTG9hZENsaWVudChib29s
IGhhcykKIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI1NDE1OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAxLTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIF9XS1Jlc291cmNlTG9hZERl
bGVnYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDU4ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW06IEFkZGVkLgorICAgICAgICAoLVtUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUgd2Vi
Vmlldzp3aWxsU2VuZFJlcXVlc3Q6XSk6CisgICAgICAgIChURVNUKToKKwogMjAyMC0wMS0wNyAg
QWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0VXU10gTGlt
aXQgcHJlLWV4aXN0aW5nIEpTQyB0ZXN0cyBmYWlsdXJlcyB0byBkaXNwbGF5IGluIGJ1aWxkYm90
IHN1bW1hcnkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTQwOTIpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDE5LDYgKzQxOSw3IEBACiAJCTVDQjNDRTM5MUZBMTY5
N0YwMEMzQTJENiAvKiBXS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCM0NFMzgxRkExNjkxNzAwQzNBMkQ2IC8q
IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gKi87IH07CiAJCTVDQjQwQjRFMUY0Qjk4RDMwMDdE
QzdCOSAvKiBVSURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUNCNDBCNEQxRjRCOThCRTAwN0RDN0I5IC8qIFVJRGVsZWdhdGUubW0gKi87
IH07CiAJCTVDQjVCM0MyMUZGQzU1Q0YwMEMyN0JCMCAvKiBGcmFtZUhhbmRsZVNlcmlhbGl6YXRp
b24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I1
QjNCRDFGRkM1MTdFMDBDMjdCQjAgLyogRnJhbWVIYW5kbGVTZXJpYWxpemF0aW9uLm1tICovOyB9
OworCQk1Q0I3QUZEQzIzQzQ1Mjk3MDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I3QUZEQjIz
QzQ1MUU0MDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi87IH07CiAJCTVDQ0Ix
MEUxMjEzNDU3RDMwMEFDNUFGMCAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDQjEwRTAyMTM0NTc5RDAwQUM1
QUYwIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIubW0gKi87IH07CiAJCTVDQ0IxMEUyMjEzNDU3RDUw
MEFDNUFGMCAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDQjEwREQyMTM0NTc5QzAw
QUM1QUYwIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkubW0gKi87IH07CiAJ
CTVDQ0IxMEUzMjEzNDU3RDgwMEFDNUFGMCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5h
dmlnYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0NCMTBERTIxMzQ1NzlEMDBBQzVBRjAgLyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXRO
YXZpZ2F0aW9uLm1tICovOyB9OwpAQCAtMTk5Miw2ICsxOTkzLDcgQEAKIAkJNUNCM0NFMzgxRkEx
NjkxNzAwQzNBMkQ2IC8qIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0I0MEI0RDFGNEI5OEJFMDA3REM3QjkgLyogVUlE
ZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJRGVs
ZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjVCM0JEMUZGQzUxN0Uw
MEMyN0JCMCAvKiBGcmFtZUhhbmRsZVNlcmlhbGl6YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBGcmFtZUhhbmRsZVNlcmlhbGl6YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDQjdBRkRCMjNDNDUxRTQwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlTG9hZERl
bGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0NCMTBERDIxMzQ1NzlD
MDBBQzVBRjAgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc3BvbnNpdmVuZXNzVGltZXJEb2Vz
bnRGaXJlRWFybHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0IxMERFMjEz
NDU3OUQwMEFDNUFGMCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXN0b3JlU2Vzc2lvblN0
YXRlV2l0aG91dE5hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
Q0IxMERGMjEzNDU3OUQwMEFDNUFGMCAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNob3VsZEdvVG9CYWNr
Rm9yd2FyZExpc3RJdGVtLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjk4Myw2
ICsyOTg1LDcgQEAKIAkJCQkyRDA4RTkzNjIyNjdEMEYzMDAyNTE4REEgLyogUmVwYXJlbnRXZWJW
aWV3VGltZW91dC5tbSAqLywKIAkJCQkyRDJCRUIyQzIyMzI0RTVGMDA1NTQ0Q0EgLyogUmVxdWVz
dFRleHRJbnB1dENvbnRleHQubW0gKi8sCiAJCQkJQ0Q5RTI5MkIxQzkwQTcxRjAwMEJCODAwIC8q
IFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tICovLAorCQkJCTVDQjdBRkRCMjNDNDUx
RTQwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLywKIAkJCQk1MUM4RTFBNDFG
MjZBQzU0MDBCRjczMUIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSAqLywKIAkJCQk1Q0NC
MTBFMDIxMzQ1NzlEMDBBQzVBRjAgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5tbSAqLywKIAkJCQk1
Q0NCMTBERDIxMzQ1NzlDMDBBQzVBRjAgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVF
YXJseS5tbSAqLywKQEAgLTQ4NDksNiArNDg1Miw3IEBACiAJCQkJN0M4M0UwQzQxRDBBNjU0MjAw
RkVCQ0YzIC8qIFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdGMEUxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRX
ZWJWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjBGMUE0MTFBRTYwMDQ0N0M0QyAv
KiBSZXNpemVXaW5kb3dBZnRlckNyYXNoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQjdBRkRD
MjNDNDUyOTcwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUxQzhFMUE1MUYyNkFGNEMwMEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDQjEwRTEyMTM0NTdEMzAwQUM1QUYwIC8qIFJlc3Bv
bnNpdmVuZXNzVGltZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTJDNEM5RTIwRUFBNDBEMDA0
OTQ1RUEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckNyYXNoLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZERlbGVn
YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlv
bkRlbGVnYXRlLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9y
dCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1Jlc291cmNlTG9hZERlbGVn
YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbnRlcmZhY2UgVGVzdFJlc291
cmNlTG9hZERlbGVnYXRlIDogTlNPYmplY3QgPF9XS1Jlc291cmNlTG9hZERlbGVnYXRlPgorCitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXndpbGxTZW5kUmVxdWVzdCkoV0tXZWJW
aWV3ICosIE5TVVJMUmVxdWVzdCAqKTsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gVGVzdFJl
c291cmNlTG9hZERlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyB3aWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKK3sKKyAgICBpZiAoX3dp
bGxTZW5kUmVxdWVzdCkKKyAgICAgICAgX3dpbGxTZW5kUmVxdWVzdCh3ZWJWaWV3LCByZXF1ZXN0
KTsKK30KKworQGVuZAorCitURVNUKFJlc291cmNlTG9hZERlbGVnYXRlLCBCYXNpYykKK3sKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisKKyAgICBhdXRvIG5h
dmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7
CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5n
ZXQoKV07CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbbmF2aWdhdGlvbkRl
bGVnYXRlIHNldERpZEZpbmlzaE5hdmlnYXRpb246XihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9u
ICopIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBfX2Jsb2NrIFJldGFp
blB0cjxOU1VSTFJlcXVlc3Q+IHJlcXVlc3RGcm9tRGVsZWdhdGU7CisgICAgYXV0byByZXNvdXJj
ZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSBuZXddKTsK
KyAgICBbd2ViVmlldyBfc2V0UmVzb3VyY2VMb2FkRGVsZWdhdGU6cmVzb3VyY2VMb2FkRGVsZWdh
dGUuZ2V0KCldOworICAgIFtyZXNvdXJjZUxvYWREZWxlZ2F0ZSBzZXRXaWxsU2VuZFJlcXVlc3Q6
XihXS1dlYlZpZXcgKiwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KSB7CisgICAgICAgIHJlcXVlc3RG
cm9tRGVsZWdhdGUgPSByZXF1ZXN0OworICAgIH1dOworCisgICAgUmV0YWluUHRyPE5TVVJMUmVx
dWVzdD4gcmVxdWVzdExvYWRlZCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RMb2FkZWQuZ2V0KCldOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgCisgICAgRVhQRUNUX1dLX1NUUkVRKHJlcXVlc3RM
b2FkZWQuZ2V0KCkuVVJMLmFic29sdXRlU3RyaW5nLCByZXF1ZXN0RnJvbURlbGVnYXRlLmdldCgp
LlVSTC5hYnNvbHV0ZVN0cmluZyk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387040</attachid>
            <date>2020-01-07 14:55:35 -0800</date>
            <delta_ts>2020-01-07 15:41:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205887-20200107145534.patch</filename>
            <type>text/plain</type>
            <size>47674</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDA5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IF9XS1Jlc291cmNlTG9hZERlbGVnYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDU4ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
c2V0SGFzUmVzb3VyY2VMb2FkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omhhc1Jl
c291cmNlTG9hZENsaWVudCBjb25zdCk6CisKIDIwMjAtMDEtMDYgIERhbmllbCBCYXRlcyAgPGRh
YmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFByZWNpc2lvbiBvZiBnZXRDbGllbnRSZWN0cygp
LCBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBkaWZmZXJzIGRlcGVuZGluZyB3aGV0aGVyIHNpbXBs
ZSBsaW5lIGxheW91dCBvciBsaW5lIGJveCBsYXlvdXQgaXMgdXNlZApJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgJKHJldmlzaW9uIDI1NDA5MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MTcsNiArNjE3LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVzdW1lQWxsTWVkaWFCdWZmZXJpbmcoKTsKICAgICBib29sIG1lZGlhQnVmZmVyaW5n
SXNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQnVmZmVyaW5nSXNTdXNwZW5kZWQ7
IH0KIAorICAgIHZvaWQgc2V0SGFzUmVzb3VyY2VMb2FkQ2xpZW50KGJvb2wgaGFzKSB7IG1faGFz
UmVzb3VyY2VMb2FkQ2xpZW50ID0gaGFzOyB9CisgICAgYm9vbCBoYXNSZXNvdXJjZUxvYWRDbGll
bnQoKSBjb25zdCB7IHJldHVybiBtX2hhc1Jlc291cmNlTG9hZENsaWVudDsgfQorCiAjaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVNZWRpYUV2
ZW50KE1lZGlhRXZlbnRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZvbHVtZU9m
TWVkaWFFbGVtZW50KGRvdWJsZSwgdWludDY0X3QpOwpAQCAtOTg5LDYgKzk5Miw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX21lZGlhUGxheWJhY2tJc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX21lZGlhQnVmZmVyaW5nSXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9p
blVwZGF0ZVJlbmRlcmluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1Jlc291cmNlTG9hZENs
aWVudCB7IGZhbHNlIH07CiAgICAgVmVjdG9yPFVzZXJDb250ZW50VVJMUGF0dGVybj4gbV9jb3Jz
RGlzYWJsaW5nUGF0dGVybnM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU0MTAyKQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1OSBA
QAorMjAyMC0wMS0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIEludHJvZHVjZSBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1ODg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IGRlbGVnYXRl
IHRoYXQgd2lsbCBiZSBpbmZvcm1lZCBhYm91dCBtYWluIGFuZCBzdWJyZXNvdXJjZSByZXF1ZXN0
cy4KKyAgICAgICAgVGhpcyBpcyBkaXN0aW5jdCBmcm9tIHRoZSBXS05hdmlnYXRpb25EZWxlZ2F0
ZSwgd2hpY2ggcHJpbWFyaWx5IHJlY2VpdmVzIGNhbGxiYWNrcyBhYm91dCBtYWluIHJlc291cmNl
IHJlcXVlc3RzLgorICAgICAgICBCZWNhdXNlIHRoZSBJUEMgY2h1cm4gY2FuIGJlIGEgc2lnbmlm
aWNhbnQgcGVyZm9ybWFuY2UgcmVkdWN0aW9uLCBvbmx5IHNlbmQgdGhlIElQQyBtZXNzYWdlcyBp
ZiB0aGUgcGFnZSBoYXMgc3VjaCBhIGNsaWVudC4KKyAgICAgICAgVGhpcyBjbGllbnQgd2lsbCBu
ZWVkIHRvIGJlIGV4cGFuZGVkIHRvIGltcGxlbWVudCA8cmRhcjovL3Byb2JsZW0vNTcxMzIyOTA+
IGJ1dCB0aGlzIGlzIGEgbWluaW1hbCB0ZXN0YWJsZSBzdGFydC4KKyAgICAgICAgVGhlIHNpbXBs
ZSBjYXNlIGlzIGNvdmVyZWQgYnkgYW4gQVBJIHRlc3QuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAg
ICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZENsaWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfcmVzb3VyY2VMb2FkRGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9zZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZXNv
dXJjZUxvYWREZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUmVz
b3VyY2VMb2FkRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Jl
c291cmNlTG9hZERlbGVnYXRlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZERlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkRGVsZWdhdGU6OmNyZWF0ZVJlc291cmNlTG9hZENsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZERlbGVnYXRlOjpkZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZERlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OlJlc291cmNlTG9hZENsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnBhZ2VXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFJlc291cmNl
TG9hZENsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9vdmVy
cmlkZGVuTWVkaWFUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SGFzUmVzb3Vy
Y2VMb2FkQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIw
LTAxLTA2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXSBHZXQgZGlzcGxheSBsZXZlbCBpbiB0aGUgVUkgcHJvY2VzcyBmb3IgYWxsIGlPUyBwbGF0
Zm9ybXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI1NDA5MikKKysrIFNv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzcxLDYgKzM3
MSw3IEBAIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVV0aWxpdGllcy5tbQogVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2Eu
bW0KIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KK1VJUHJv
Y2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1NhZmVC
cm93c2luZ1dhcm5pbmdDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25TdGF0ZUNvZGlu
Zy5tbQogVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNTQwOTIpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnM6OmVuY28KIAogICAgIGVuY29kZXIgPDwgZnJhbWVBbmNlc3Rvck9yaWdp
bnM7CiAgICAgZW5jb2RlciA8PCBpc0hUVFBTVXBncmFkZUVuYWJsZWQ7CisgICAgZW5jb2RlciA8
PCBwYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIGVuY29kZXIgPDwgc2VydmljZVdvcmtlcnNNb2RlOwpAQCAtMjQ5LDYgKzI1MCwxMiBA
QCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9ICppc0hU
VFBTVXBncmFkZUVuYWJsZWQ7CiAKKyAgICBPcHRpb25hbDxib29sPiBwYWdlSGFzUmVzb3VyY2VM
b2FkQ2xpZW50OworICAgIGRlY29kZXIgPj4gcGFnZUhhc1Jlc291cmNlTG9hZENsaWVudDsKKyAg
ICBpZiAoIXBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmVzdWx0LnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQgPSAqcGFnZUhhc1Jl
c291cmNlTG9hZENsaWVudDsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBPcHRp
b25hbDxTZXJ2aWNlV29ya2Vyc01vZGU+IHNlcnZpY2VXb3JrZXJzTW9kZTsKICAgICBkZWNvZGVy
ID4+IHNlcnZpY2VXb3JrZXJzTW9kZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgJKHJl
dmlzaW9uIDI1NDA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBzaG91bGRFbmFibGVDcm9zc09yaWdpblJlc291cmNlUG9saWN5IHsg
ZmFsc2UgfTsKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gZnJh
bWVBbmNlc3Rvck9yaWdpbnM7CiAgICAgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQgeyBmYWxz
ZSB9OworICAgIGJvb2wgcGFnZUhhc1Jlc291cmNlTG9hZENsaWVudCB7IGZhbHNlIH07CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2Rl
IHNlcnZpY2VXb3JrZXJzTW9kZSB7IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSB9
OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjU0MDkyKQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0xvYWRDaGVja2VyLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25N
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFz
ay5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKQEAgLTMyMSw2ICsz
MjIsOSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrCiAgICAgaWYg
KHJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Jsb2IoKSkKICAgICAgICAgcGFyYW1ldGVycy5ibG9i
RmlsZVJlZmVyZW5jZXMgPSBuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJs
b2Iob3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkpOwogCisgICAgaWYgKG1fcGFyYW1ldGVycy5wYWdl
SGFzUmVzb3VyY2VMb2FkQ2xpZW50KQorICAgICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9j
ZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3NQcm94eTo6UGFnZVdpbGxTZW5kUmVxdWVzdChtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5
SUQsIHJlcXVlc3QpLCAwKTsKKwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFdURk1vdmUocmVx
dWVzdCk7CiAgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlz
LCAmbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAq
bmV0d29ya1Nlc3Npb24pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjU0MDkyKQorKysgU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc4LDYgKzc4LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUoSQogICAgIGVuY29kZXIgPDwgaXNQcm9jZXNzU3dhcDsKICAgICBlbmNvZGVyIDw8IHVzZURh
cmtBcHBlYXJhbmNlOwogICAgIGVuY29kZXIgPDwgdXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2
ZWw7CisgICAgZW5jb2RlciA8PCBoYXNSZXNvdXJjZUxvYWRDbGllbnQ7CiAKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgZW5jb2RlciA8PCBjb2xvclNwYWNlOwpAQCAtMjU1LDYgKzI1NiwxMiBAQCBP
cHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLnVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9wdGlvbmFsPGJvb2w+IGhhc1Jlc291cmNl
TG9hZENsaWVudDsKKyAgICBkZWNvZGVyID4+IGhhc1Jlc291cmNlTG9hZENsaWVudDsKKyAgICBp
ZiAoIWhhc1Jlc291cmNlTG9hZENsaWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBwYXJhbWV0ZXJzLmhhc1Jlc291cmNlTG9hZENsaWVudCA9IFdURk1vdmUoKmhhc1Jlc291
cmNlTG9hZENsaWVudCk7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaAkocmV2aXNpb24gMjU0MDkyKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDggQEAg
c3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgTGF5ZXJIb3N0aW5nTW9k
ZSBsYXllckhvc3RpbmdNb2RlOwogCisgICAgYm9vbCBoYXNSZXNvdXJjZUxvYWRDbGllbnQgeyBm
YWxzZSB9OworCiAgICAgVmVjdG9yPFN0cmluZz4gbWltZVR5cGVzV2l0aEN1c3RvbUNvbnRlbnRQ
cm92aWRlcnM7CiAKICAgICBib29sIGNvbnRyb2xsZWRCeUF1dG9tYXRpb247CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1NDA5MikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJBUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmgiCiAj
aW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBUElQb2xpY3lDbGll
bnQuaCIKKyNpbmNsdWRlICJBUElSZXNvdXJjZUxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJ
VVJMUmVxdWVzdC5oIgpAQCAtNzE0LDYgKzcxNSwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
SW5qZWN0ZWRCdW5kbGVDbGllCiAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+aW5pdGlhbGl6
ZShjbGllbnQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UmVzb3VyY2VMb2FkQ2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlJlc291cmNlTG9hZENsaWVudD4mJiBjbGllbnQpCit7Cisg
ICAgYm9vbCBoYWRSZXNvdXJjZUxvYWRDbGllbnQgPSAhIW1fcmVzb3VyY2VMb2FkQ2xpZW50Owor
ICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gV1RGTW92ZShjbGllbnQpOworICAgIGJvb2wgaGFz
UmVzb3VyY2VMb2FkQ2xpZW50ID0gISFtX3Jlc291cmNlTG9hZENsaWVudDsKKyAgICBpZiAoaGFk
UmVzb3VyY2VMb2FkQ2xpZW50ICE9IGhhc1Jlc291cmNlTG9hZENsaWVudCkKKyAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SGFzUmVzb3VyY2VMb2FkQ2xpZW50KGhhc1Jlc291cmNl
TG9hZENsaWVudCkpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0
IFdlYktpdDo6VXNlckRhdGEmIG1lc3NhZ2VCb2R5KQogewogICAgIEFTU0VSVChtX3Byb2Nlc3Mt
PmNvbm5lY3Rpb24oKSA9PSAmY29ubmVjdGlvbik7CkBAIC01OTA2LDYgKzU5MTYsMTIgQEAgV2Vi
SW5zcGVjdG9yUHJveHkqIFdlYlBhZ2VQcm94eTo6aW5zcGVjdAogICAgIHJldHVybiBtX2luc3Bl
Y3Rvci5nZXQoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OndpbGxTZW5kUmVxdWVzdChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKG1fcmVzb3Vy
Y2VMb2FkQ2xpZW50KQorICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudC0+d2lsbFNlbmRSZXF1
ZXN0KHJlcXVlc3QpOworfQorCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eSogV2ViUGFnZVByb3h5OjpmdWxsU2NyZWVuTWFuYWdlcigpCiB7CkBA
IC03NTQ3LDYgKzc1NjMsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94
eTo6CiAKICAgICBwYXJhbWV0ZXJzLm92ZXJyaWRkZW5NZWRpYVR5cGUgPSBtX292ZXJyaWRkZW5N
ZWRpYVR5cGU7CiAgICAgcGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBtX2NvbmZp
Z3VyYXRpb24tPmNvcnNEaXNhYmxpbmdQYXR0ZXJucygpOworICAgIHBhcmFtZXRlcnMuaGFzUmVz
b3VyY2VMb2FkQ2xpZW50ID0gISFtX3Jlc291cmNlTG9hZENsaWVudDsKIAogICAgIHByb2Nlc3Mu
YWRkV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkobV91c2VyQ29udGVudENvbnRyb2xsZXIs
IHBhcmFtZXRlcnMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkocmV2aXNpb24gMjU0MDkyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsNyBAQCBjbGFzcyBMb2FkZXJDbGll
bnQ7CiBjbGFzcyBOYXZpZ2F0aW9uOwogY2xhc3MgTmF2aWdhdGlvbkNsaWVudDsKIGNsYXNzIFBv
bGljeUNsaWVudDsKK2NsYXNzIFJlc291cmNlTG9hZENsaWVudDsKIGNsYXNzIFVJQ2xpZW50Owog
Y2xhc3MgVVJMUmVxdWVzdDsKIH0KQEAgLTQ2NSw2ICs0NjYsOCBAQCBwdWJsaWM6CiAKICAgICBX
ZWJJbnNwZWN0b3JQcm94eSogaW5zcGVjdG9yKCkgY29uc3Q7CiAKKyAgICB2b2lkIHdpbGxTZW5k
UmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKwogICAgIHZvaWQgZGlk
Q2hhbmdlSW5zcGVjdG9yRnJvbnRlbmRDb3VudCh1bnNpZ25lZCBjb3VudCkgeyBtX2luc3BlY3Rv
ckZyb250ZW5kQ291bnQgPSBjb3VudDsgfQogICAgIHVuc2lnbmVkIGluc3BlY3RvckZyb250ZW5k
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckZyb250ZW5kQ291bnQ7IH0KICAgICBi
b29sIGhhc0luc3BlY3RvckZyb250ZW5kKCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JGcm9u
dGVuZENvdW50ID4gMDsgfQpAQCAtNTI5LDYgKzUzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dExvYWRlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMb2FkZXJDbGllbnQ+JiYpOwogICAg
IHZvaWQgc2V0UG9saWN5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlBvbGljeUNsaWVudD4m
Jik7CiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb25zdCBXS1BhZ2VJbmplY3Rl
ZEJ1bmRsZUNsaWVudEJhc2UqKTsKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZENsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpSZXNvdXJjZUxvYWRDbGllbnQ+JiYpOwogCiAgICAgQVBJOjpVSUNs
aWVudCYgdWlDbGllbnQoKSB7IHJldHVybiAqbV91aUNsaWVudDsgfQogICAgIHZvaWQgc2V0VUlD
bGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+JiYpOwpAQCAtMjIwOCw2ICsyMjEy
LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50PiBtX2Zp
bmRDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+IG1f
ZmluZE1hdGNoZXNDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6RGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQ+IG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEFQSTo6UmVzb3VyY2VMb2FkQ2xpZW50PiBtX3Jlc291cmNlTG9hZENsaWVudDsKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250ZXh0TWVu
dUNsaWVudD4gbV9jb250ZXh0TWVudUNsaWVudDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZENsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRDbGllbnQuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2FkQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgUmVzb3VyY2VMb2FkQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SZXNvdXJjZUxvYWRDbGllbnQoKSA9IGRlZmF1bHQ7CisK
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpIGNvbnN0ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lv
biAyNTQwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAjaW1wb3J0ICJSZW1vdGVMYXll
clRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJl
Z2lzdHJ5LmgiCiAjaW1wb3J0ICJSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmgiCisjaW1w
b3J0ICJSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nV2Fybmlu
Zy5oIgogI2ltcG9ydCAiVUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVmVyc2lvbkNoZWNrcy5oIgpA
QCAtNTA1LDYgKzUwNiw3IEBAICAgICAvLyBXZSBhcmUgaW4gdGhlIFZpZXcncyBpbml0aWFsaXph
dGkKICAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQobWFrZVVuaXF1ZTxXZWJL
aXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CiAKICAgICBfaWNvbkxvYWRpbmdE
ZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlPihzZWxmKTsK
KyAgICBfcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVzb3VyY2VM
b2FkRGVsZWdhdGU+KHNlbGYpOwogCiAgICAgX3VzZVBsYXRmb3JtRmluZFVJID0gWUVTOwogCkBA
IC02ODMsNiArNjg1LDE3IEBAIC0gKHZvaWQpX3NldEljb25Mb2FkaW5nRGVsZWdhdGU6KGlkPF9X
S0kKICAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZS0+c2V0RGVsZWdhdGUoaWNvbkxvYWRpbmdEZWxl
Z2F0ZSk7CiB9CiAKKy0gKGlkIDxfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZT4pX3Jlc291cmNlTG9h
ZERlbGVnYXRlCit7CisgICAgcmV0dXJuIF9yZXNvdXJjZUxvYWREZWxlZ2F0ZS0+ZGVsZWdhdGUo
KS5hdXRvcmVsZWFzZSgpOworfQorCistICh2b2lkKV9zZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZToo
aWQ8X1dLUmVzb3VyY2VMb2FkRGVsZWdhdGU+KWRlbGVnYXRlCit7CisgICAgX3BhZ2UtPnNldFJl
c291cmNlTG9hZENsaWVudChfcmVzb3VyY2VMb2FkRGVsZWdhdGUtPmNyZWF0ZVJlc291cmNlTG9h
ZENsaWVudCgpKTsKKyAgICBfcmVzb3VyY2VMb2FkRGVsZWdhdGUtPnNldERlbGVnYXRlKGRlbGVn
YXRlKTsKK30KKwogLSAoV0tOYXZpZ2F0aW9uICopbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QKIHsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9hZFJlcXVlc3QocmVxdWVz
dCkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0lu
dGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0ludGVybmFsLmgJKHJldmlzaW9uIDI1NDA5MikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogZW51bSBjbGFzcyBDb250aW51ZVVu
c2FmZUxvYWQgOiBib29sOwogY2xhc3MgSWNvbkxvYWRpbmdEZWxlZ2F0ZTsKIGNsYXNzIE5hdmln
YXRpb25TdGF0ZTsKK2NsYXNzIFJlc291cmNlTG9hZERlbGVnYXRlOwogY2xhc3MgU2FmZUJyb3dz
aW5nV2FybmluZzsKIGNsYXNzIFZpZXdTbmFwc2hvdDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKQEAg
LTEwOCw2ICsxMDksNyBAQCBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYktpdDo6TmF2aWdhdGlvblN0YXRlPiBfbmF2aWdhdGlvblN0YXRlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlVJRGVsZWdhdGU+IF91aURlbGVnYXRlOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU+IF9pY29uTG9hZGluZ0Rl
bGVnYXRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlJlc291cmNlTG9hZERlbGVnYXRl
PiBfcmVzb3VyY2VMb2FkRGVsZWdhdGU7CiAKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLVGV4dE1h
bmlwdWxhdGlvbkRlbGVnYXRlPj4gX3RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZTsKICAgICBXZWFr
T2JqQ1B0cjxpZCA8X1dLSW5wdXREZWxlZ2F0ZT4+IF9pbnB1dERlbGVnYXRlOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oCShyZXZpc2lvbiAyNTQwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDYgQEAg
dHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZAogQGNsYXNzIF9XS0FwcGxp
Y2F0aW9uTWFuaWZlc3Q7CiBAY2xhc3MgX1dLRnJhbWVIYW5kbGU7CiBAY2xhc3MgX1dLSGl0VGVz
dFJlc3VsdDsKLUBjbGFzcyBfV0tJY29uTG9hZGluZ0RlbGVnYXRlOwogQGNsYXNzIF9XS0luc3Bl
Y3RvcjsKIEBjbGFzcyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIEBjbGFzcyBfV0tTYWZlQnJv
d3NpbmdXYXJuaW5nOwpAQCAtMTI2LDYgKzEyNSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJ
bnRlZ2VyLCBfV0tSZWN0RWQKIEBwcm90b2NvbCBfV0tGdWxsc2NyZWVuRGVsZWdhdGU7CiBAcHJv
dG9jb2wgX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZTsKIEBwcm90b2NvbCBfV0tJbnB1dERlbGVnYXRl
OworQHByb3RvY29sIF9XS1Jlc291cmNlTG9hZERlbGVnYXRlOwogQHByb3RvY29sIF9XS1RleHRN
YW5pcHVsYXRpb25EZWxlZ2F0ZTsKIAogQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLUHJpdmF0ZSkK
QEAgLTEzOCw2ICsxMzgsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVj
dEVkCiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEhpc3RvcnlEZWxl
Z2F0ZTopIGlkIDxXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGU+IF9oaXN0b3J5RGVsZWdhdGU7CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRJY29uTG9hZGluZ0RlbGVnYXRl
OikgaWQgPF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU+IF9pY29uTG9hZGluZ0RlbGVnYXRlOworQHBy
b3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0UmVzb3VyY2VMb2FkRGVsZWdhdGU6
KSBpZCA8X1dLUmVzb3VyY2VMb2FkRGVsZWdhdGU+IF9yZXNvdXJjZUxvYWREZWxlZ2F0ZSBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMICpfdW5yZWFjaGFibGVVUkw7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMICpfbWFpbkZyYW1lVVJMIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZERlbGVnYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNlTG9hZERlbGVn
YXRlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1Jlc291cmNlTG9hZERlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpCitAcHJvdG9jb2wgX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUgPE5T
T2JqZWN0PgorQG9wdGlvbmFsCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyB3aWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Q7CisKK0BlbmQKKworTlNf
QVNTVU1FX05PTk5VTExfRU5ECkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBv
cnQgIkFQSVJlc291cmNlTG9hZENsaWVudC5oIgorI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCisj
aW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKworQHByb3RvY29sIF9XS1Jlc291cmNlTG9hZERl
bGVnYXRlOworCituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIFJlc291cmNlTG9hZENsaWVudDsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlc291cmNlTG9hZERlbGVnYXRlIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZXNvdXJj
ZUxvYWREZWxlZ2F0ZShXS1dlYlZpZXcgKik7CisgICAgflJlc291cmNlTG9hZERlbGVnYXRlKCk7
CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpSZXNvdXJjZUxvYWRDbGllbnQ+IGNyZWF0ZVJl
c291cmNlTG9hZENsaWVudCgpOworCisgICAgUmV0YWluUHRyPGlkPF9XS1Jlc291cmNlTG9hZERl
bGVnYXRlPj4gZGVsZWdhdGUoKTsKKyAgICB2b2lkIHNldERlbGVnYXRlKGlkPF9XS1Jlc291cmNl
TG9hZERlbGVnYXRlPik7CisKK3ByaXZhdGU6CisgICAgY2xhc3MgUmVzb3VyY2VMb2FkQ2xpZW50
IDogcHVibGljIEFQSTo6UmVzb3VyY2VMb2FkQ2xpZW50IHsKKyAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBSZXNvdXJjZUxvYWRD
bGllbnQoUmVzb3VyY2VMb2FkRGVsZWdhdGUmKTsKKyAgICAgICAgflJlc291cmNlTG9hZENsaWVu
dCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgLy8gQVBJOjpSZXNvdXJjZUxvYWRDbGllbnQK
KyAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JikgY29uc3QgZmluYWw7CisKKyAgICAgICAgUmVzb3VyY2VMb2FkRGVsZWdhdGUmIG1fcmVz
b3VyY2VMb2FkRGVsZWdhdGU7CisgICAgfTsKKworICAgIFdlYWtPYmpDUHRyPFdLV2ViVmlldz4g
bV93ZWJWaWV3OworICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZT4g
PiBtX2RlbGVnYXRlOworCisgICAgc3RydWN0IHsKKyAgICAgICAgYm9vbCB3aWxsU2VuZFJlcXVl
c3QgOiAxOworICAgIH0gbV9kZWxlZ2F0ZU1ldGhvZHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERl
bGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jl
c291cmNlTG9hZERlbGVnYXRlLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJl
c291cmNlTG9hZERlbGVnYXRlLmgiCisKKyNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZERlbGVnYXRl
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3Vy
Y2VMb2FkRGVsZWdhdGUoV0tXZWJWaWV3ICp3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3KHdlYlZp
ZXcpCit7Cit9CisKK1Jlc291cmNlTG9hZERlbGVnYXRlOjp+UmVzb3VyY2VMb2FkRGVsZWdhdGUo
KSA9IGRlZmF1bHQ7CisKK3N0ZDo6dW5pcXVlX3B0cjxBUEk6OlJlc291cmNlTG9hZENsaWVudD4g
UmVzb3VyY2VMb2FkRGVsZWdhdGU6OmNyZWF0ZVJlc291cmNlTG9hZENsaWVudCgpCit7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkQ2xpZW50PigqdGhpcyk7Cit9CisKK1JldGFp
blB0cjxpZDxfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZT4+IFJlc291cmNlTG9hZERlbGVnYXRlOjpk
ZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIG1fZGVsZWdhdGUuZ2V0KCk7Cit9CisKK3ZvaWQgUmVz
b3VyY2VMb2FkRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxfV0tSZXNvdXJjZUxvYWREZWxlZ2F0
ZT4gZGVsZWdhdGUpCit7CisgICAgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgbV9kZWxl
Z2F0ZU1ldGhvZHMud2lsbFNlbmRSZXF1ZXN0ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Iod2ViVmlldzp3aWxsU2VuZFJlcXVlc3Q6KV07Cit9CisKK1Jlc291cmNlTG9h
ZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OlJlc291cmNlTG9hZENsaWVudChSZXNvdXJj
ZUxvYWREZWxlZ2F0ZSYgZGVsZWdhdGUpCisgICAgOiBtX3Jlc291cmNlTG9hZERlbGVnYXRlKGRl
bGVnYXRlKQoreworfQorCitSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkQ2xpZW50
Ojp+UmVzb3VyY2VMb2FkQ2xpZW50KCkgPSBkZWZhdWx0OworCit2b2lkIFJlc291cmNlTG9hZERl
bGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Jlc291cmNl
TG9hZERlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndpbGxTZW5kUmVxdWVzdCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV9k
ZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBbZGVsZWdhdGUgd2ViVmlldzptX3Jlc291cmNlTG9hZERlbGVnYXRlLm1fd2ViVmlldy5nZXQo
KS5nZXQoKSB3aWxsU2VuZFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRh
dGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI1NDA5MikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk0NCw2ICs5NDQsMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzY2hlZHVs
ZUNsZWFySQogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc2Vzc2lvbklELCB7IH0sIHNob3Vs
ZEdyYW5kZmF0aGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnBhZ2VXaWxsU2VuZFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRp
ZmllciBwYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sK
KyAgICBhdXRvKiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CisgICAg
aWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWdlLT53aWxsU2VuZFJlcXVlc3Qo
cmVxdWVzdCk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nVGVzdGluZ0V2ZW50
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBldmVudCkKIHsKICAgICBp
ZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklE
KHNlc3Npb25JRCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjU0MDkyKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIwMSw2ICsyMDEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0UXVvdGEo
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKKyAgICB2b2lk
IHBhZ2VXaWxsU2VuZFJlcXVlc3QoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisKIHByaXZhdGU6CiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5CiAgICAgdm9pZCBnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNo
T3B0aW9ucyYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgko
cmV2aXNpb24gMjU0MDkyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw0ICs2Nyw2
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmUKICNlbmRpZgogCiAg
ICAgUmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3Vy
cmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQpIC0+IChPcHRpb25hbDx1aW50NjRfdD4g
bmV3UXVvdGEpIEFzeW5jCisgICAgCisgICAgUGFnZVdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0KQogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTQwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgyLDYg
KzExODIsNyBAQAogCQk1Q0FGREU0NzIxMzA4NDZBMDBCMUY3RTEgLyogX1dLSW5zcGVjdG9ySW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
QUZERTQ0MjEzMDg0MzYwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oICovOyB9Owog
CQk1Q0IyMzc4QzFERjBERTZFMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc4OTFERjBERDQz
MDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNCMjM3OEUxREYwRTBEMzAwMTE3QUEzIC8qIF9X
S1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc4RDFERjBFMEMyMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBv
bGljaWVzSW50ZXJuYWwuaCAqLzsgfTsKKwkJNUNCN0FGRTAyM0M1MkNFNTAwRTQ5Q0YzIC8qIF9X
S1Jlc291cmNlTG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0I3QUZERjIzQzUyQ0JDMDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2Fk
RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1Q0JDOUI4RTFDNjUyQ0EwMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0JDOUI4OTFDNjUyNEE1
MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmggKi87IH07CiAJCTVDQkQ1OTVDMjI4MEVERjQw
MDJCMjJBQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzVEMjM4ODIyN0ExODkyMDAwQjlCREEgLyogX1dL
Q3VzdG9tSGVhZGVyRmllbGRzLm1tICovOyB9OwogCQk1Q0QyODY1MTFFNzIzNTk5MDA5NEZEQzgg
LyogV0tDb250ZW50UnVsZUxpc3RTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNEMjg2NEQxRTcyMkY0NDAwOTRGREM4IC8qIFdLQ29udGVudFJ1
bGVMaXN0U3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CkBAIC0zOTAzLDYgKzM5MDQsMTAgQEAKIAkJNUNCMjM3ODkxREYwREQ0MzAwMTE3QUEzIC8q
IF9XS1dlYnNpdGVQb2xpY2llcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBf
V0tXZWJzaXRlUG9saWNpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMjM3
OEExREYwREQ0MzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1dlYnNpdGVQb2xpY2llcy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMjM3OEQxREYwRTBDMjAwMTE3QUEzIC8qIF9XS1dl
YnNpdGVQb2xpY2llc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IF9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDQjdBRkRBMjNDNDNFNjQwMEU0OUNGMyAvKiBBUElSZXNvdXJjZUxvYWRDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJUmVzb3VyY2VMb2FkQ2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjdBRkREMjNDNTI3M0QwMEU0OUNGMyAv
KiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
Q0I3QUZERTIzQzUyNzNEMDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCN0FGREYyM0M1MkNCQzAwRTQ5Q0Yz
IC8qIF9XS1Jlc291cmNlTG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IF9XS1Jlc291cmNlTG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0RhdGFUYXNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM5QjhCMUM2NTI1NzMwMEE4RkRDRiAvKiBOZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE5ldHdvcmtEYXRhVGFza0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
Q0M1REI5MTIxNDg4RTE2MDA2Q0I4QTggLyogU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01ODk3LDYgKzU5MDIsOCBAQAogCQkJ
CUNEQTI5QTFFMUNCRUI1RkIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHku
aCAqLywKIAkJCQlDREEyOUEyMjFDQkVCNjFBMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCUNEQTI5QTFGMUNCRUI1RkIwMDkwMUNDRiAv
KiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gKi8sCisJCQkJNUNCN0FGREQyM0M1Mjcz
RDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZERlbGVnYXRlLmggKi8sCisJCQkJNUNCN0FGREUyM0M1
MjczRDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZERlbGVnYXRlLm1tICovLAogCQkJCTVDQTk4NTRC
MjEwQkVCNzMwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gKi8sCiAJCQkJ
MUEwMDJENDcxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oICovLAogCQkJ
CTFBMDAyRDQ2MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcubW0gKi8sCkBA
IC02Nzc0LDYgKzY3ODEsNyBAQAogCQkJCUE1NUJBODBDMUJBMTJCRTEwMDdDRDMzRCAvKiBfV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oICovLAogCQkJCUE1NUJBODBEMUJBMTJC
RTEwMDdDRDMzRCAvKiBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSAqLywK
IAkJCQk5OTBFMUUwODIzODRBODhCMDA0NjAyREYgLyogX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXJQcml2YXRlLmggKi8sCisJCQkJNUNCN0FGREYyM0M1MkNCQzAwRTQ5Q0YzIC8q
IF9XS1Jlc291cmNlTG9hZERlbGVnYXRlLmggKi8sCiAJCQkJNDlGQkVGRkIyMzlBREIxODAwQkQw
MzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggKi8sCiAJCQkJNDlG
QkVGRkMyMzlCMDExRDAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBh
cnR5Lm1tICovLAogCQkJCTQ5QkNBMTkwMjNBMTc1NDkwMDI4QTgzNiAvKiBfV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmggKi8sCkBAIC04NDcyLDYgKzg0ODAsNyBA
QAogCQkJCTFBRkREMzE0MTg5MUI1NDAwMDE1Mzk3MCAvKiBBUElQb2xpY3lDbGllbnQuaCAqLywK
IAkJCQk3Q0U0RDIxRDFBNDkxNENBMDBDN0YxNTIgLyogQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmNwcCAqLywKIAkJCQk3Q0U0RDIxRTFBNDkxNENBMDBDN0YxNTIgLyogQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmggKi8sCisJCQkJNUNCN0FGREEyM0M0M0U2NDAwRTQ5Q0YzIC8qIEFQ
SVJlc291cmNlTG9hZENsaWVudC5oICovLAogCQkJCTQ5QkNBMTkxMjNBMTc3NjYwMDI4QTgzNiAv
KiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oICovLAogCQkJCTQ5QkNBMTk2
MjNBMThGNjIwMDI4QTgzNiAvKiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5o
ICovLAogCQkJCTFBRkRFNjVGMTk1NEU5QjEwMEM0OEZGQSAvKiBBUElTZXNzaW9uU3RhdGUuY3Bw
ICovLApAQCAtOTgxOCw2ICs5ODI3LDcgQEAKIAkJCQk5OTBFMUUwOTIzODRBQTU3MDA0NjAyREYg
LyogX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzNzcyMTZCODFBNEU2QkUwMDBEQ0E3MTggLyogX1dLUmVuZGVyaW5nUHJvZ3Jl
c3NFdmVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGNjA0QkFBMTg4OUZCQjgwMEVFMDM5NSAv
KiBfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1Q0I3QUZFMDIzQzUyQ0U1MDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5RkJGMDAxMjM5QjFGOEQwMEJEMDMyRiAvKiBfV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlCQ0ExOTUy
M0ExOENGRDAwMjhBODM2IC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RkJGMDAwMjM5QjFGNzUwMEJEMDMyRiAvKiBf
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwCShyZXZpc2lvbiAyNTQwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw2
ICsyNjQsOCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tCiAgICAg
Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xp
Y3kgPSByZXNvdXJjZUxvYWRlci5zaG91bGRTbmlmZkNvbnRlbnRFbmNvZGluZygpID8gQ29udGVu
dEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmIDogQ29udGVudEVuY29kaW5nU25pZmZpbmdQ
b2xpY3k6OkRvTm90U25pZmY7CiAgICAgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgPSByZXNvdXJjZUxvYWRlci5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZSgpID8gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5OjpEb05vdFVzZTsKIAorICAgIGF1dG8qIGZyYW1lID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUo
KTsKKwogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOwog
ICAgIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAgIGxvYWRQYXJh
bWV0ZXJzLndlYlBhZ2VQcm94eUlEID0gdHJhY2tpbmdQYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlE
OwpAQCAtMjg0LDcgKzI4NiwxMSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxv
YWRGcm9tCiAgICAgbG9hZFBhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBtYXhpbXVt
QnVmZmVyaW5nVGltZTsKICAgICBsb2FkUGFyYW1ldGVycy5vcHRpb25zID0gcmVzb3VyY2VMb2Fk
ZXIub3B0aW9ucygpOwogICAgIGxvYWRQYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSA9IHJlc291
cmNlTG9hZGVyLm9wdGlvbnMoKS5wcmVmbGlnaHRQb2xpY3k7Ci0gICAgbG9hZFBhcmFtZXRlcnMu
aXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSA/IHJlc291cmNl
TG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuSFRUUFNVcGdyYWRlRW5hYmxlZCgpIDogZmFsc2U7
CisgICAgaWYgKGZyYW1lKSB7CisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRl
RW5hYmxlZCA9IGZyYW1lLT5zZXR0aW5ncygpLkhUVFBTVXBncmFkZUVuYWJsZWQoKTsKKyAgICAg
ICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQorICAgICAgICAgICAgbG9hZFBhcmFt
ZXRlcnMucGFnZUhhc1Jlc291cmNlTG9hZENsaWVudCA9IHBhZ2UtPmhhc1Jlc291cmNlTG9hZENs
aWVudCgpOworICAgIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBsb2FkUGFy
YW1ldGVycy5zZXJ2aWNlV29ya2Vyc01vZGUgPSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2Vy
dmljZVdvcmtlcnNNb2RlOwpAQCAtMjkyLDcgKzI5OCw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnNjaGVkdWxlTG9hZEZyb20KICAgICBsb2FkUGFyYW1ldGVycy5odHRwSGVhZGVyc1RvS2Vl
cCA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5odHRwSGVhZGVyc1RvS2VlcDsKICNlbmRpZgog
Ci0gICAgYXV0byogZG9jdW1lbnQgPSByZXNvdXJjZUxvYWRlci5mcmFtZSgpID8gcmVzb3VyY2VM
b2FkZXIuZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CisgICAgYXV0byogZG9jdW1lbnQg
PSBmcmFtZSA/IGZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKICAgICBpZiAocmVzb3VyY2VM
b2FkZXIub3B0aW9ucygpLmNzcFJlc3BvbnNlSGVhZGVycykKICAgICAgICAgbG9hZFBhcmFtZXRl
cnMuY3NwUmVzcG9uc2VIZWFkZXJzID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLmNzcFJlc3Bv
bnNlSGVhZGVyczsKICAgICBlbHNlIGlmIChkb2N1bWVudCAmJiAhZG9jdW1lbnQtPnNob3VsZEJ5
cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpICYmIHJlc291cmNlTG9hZGVyLm9w
dGlvbnMoKS5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID09IENvbnRlbnRTZWN1cml0
eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2spIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNTQwOTIpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTU4LDYgKzU1OCw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCAKICNlbmRpZgogCiAgICAgbV9wYWdlLT5zZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKHBh
cmFtZXRlcnMuY29udHJvbGxlZEJ5QXV0b21hdGlvbik7CisgICAgbV9wYWdlLT5zZXRIYXNSZXNv
dXJjZUxvYWRDbGllbnQocGFyYW1ldGVycy5oYXNSZXNvdXJjZUxvYWRDbGllbnQpOwogCiAgICAg
bV9wYWdlLT5zZXRDYW5TdGFydE1lZGlhKGZhbHNlKTsKICAgICBtX21heVN0YXJ0TWVkaWFXaGVu
SW5XaW5kb3cgPSBwYXJhbWV0ZXJzLm1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3c7CkBAIC0xMjE2
LDYgKzEyMTcsMTIgQEAgdWludDY0X3QgV2ViUGFnZTo6cmVuZGVyVHJlZVNpemUoKSBjb25zdAog
ICAgIHJldHVybiBtX3BhZ2UtPnJlbmRlclRyZWVTaXplKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6
c2V0SGFzUmVzb3VyY2VMb2FkQ2xpZW50KGJvb2wgaGFzKQoreworICAgIGlmIChtX3BhZ2UpCisg
ICAgICAgIG1fcGFnZS0+c2V0SGFzUmVzb3VyY2VMb2FkQ2xpZW50KGhhcyk7Cit9CisKIHZvaWQg
V2ViUGFnZTo6c2V0VHJhY2tzUmVwYWludHMoYm9vbCB0cmFja1JlcGFpbnRzKQogewogICAgIGlm
IChGcmFtZVZpZXcqIHZpZXcgPSBtYWluRnJhbWVWaWV3KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyNTQwOTIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE1NDksNiArMTU0OSw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZERpc3BhdGNoU3lu
dGhldGljTW91c2VFdmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCkgY29uc3Q7CiAgICAgdm9p
ZCBwbGF0Zm9ybURpZFNlbGVjdEFsbCgpOworICAgIAorICAgIHZvaWQgc2V0SGFzUmVzb3VyY2VM
b2FkQ2xpZW50KGJvb2wpOwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgdm9pZCBk
aWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KGNvbnN0IFdlYkNvbnRleHRNZW51SXRl
bURhdGEmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjU0MDkyKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtNTg3LDQgKzU4Nyw2IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1
aW4KICAgICBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb24oV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXI6Okl0ZW1JZGVudGlmaWVyIGl0ZW1JRCwgVmVjdG9yPFdlYkNvcmU6OlRleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbj4gdG9rZW5zKSAtPiAoZW51
bTp1aW50OF90IFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRp
b25SZXN1bHQgcmVzdWx0KSBBc3luYwogICAgIAogICAgIFNldE92ZXJyaWRkZW5NZWRpYVR5cGUo
U3RyaW5nIG1lZGlhVHlwZSkKKworICAgIFNldEhhc1Jlc291cmNlTG9hZENsaWVudChib29sIGhh
cykKIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI1NDE1OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDIwLTAxLTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIF9XS1Jlc291cmNlTG9hZERlbGVn
YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU4
ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkRGVsZWdh
dGUubW06IEFkZGVkLgorICAgICAgICAoLVtUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmll
dzp3aWxsU2VuZFJlcXVlc3Q6XSk6CisgICAgICAgIChURVNUKToKKwogMjAyMC0wMS0wNyAgQWFr
YXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0VXU10gTGltaXQg
cHJlLWV4aXN0aW5nIEpTQyB0ZXN0cyBmYWlsdXJlcyB0byBkaXNwbGF5IGluIGJ1aWxkYm90IHN1
bW1hcnkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTQwOTIpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNDE5LDYgKzQxOSw3IEBACiAJCTVDQjNDRTM5MUZBMTY5N0Yw
MEMzQTJENiAvKiBXS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCM0NFMzgxRkExNjkxNzAwQzNBMkQ2IC8qIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gKi87IH07CiAJCTVDQjQwQjRFMUY0Qjk4RDMwMDdEQzdC
OSAvKiBVSURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNCNDBCNEQxRjRCOThCRTAwN0RDN0I5IC8qIFVJRGVsZWdhdGUubW0gKi87IH07
CiAJCTVDQjVCM0MyMUZGQzU1Q0YwMEMyN0JCMCAvKiBGcmFtZUhhbmRsZVNlcmlhbGl6YXRpb24u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I1QjNC
RDFGRkM1MTdFMDBDMjdCQjAgLyogRnJhbWVIYW5kbGVTZXJpYWxpemF0aW9uLm1tICovOyB9Owor
CQk1Q0I3QUZEQzIzQzQ1Mjk3MDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I3QUZEQjIzQzQ1
MUU0MDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi87IH07CiAJCTVDQ0IxMEUx
MjEzNDU3RDMwMEFDNUFGMCAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDQjEwRTAyMTM0NTc5RDAwQUM1QUYw
IC8qIFJlc3BvbnNpdmVuZXNzVGltZXIubW0gKi87IH07CiAJCTVDQ0IxMEUyMjEzNDU3RDUwMEFD
NUFGMCAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDQjEwREQyMTM0NTc5QzAwQUM1
QUYwIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkubW0gKi87IH07CiAJCTVD
Q0IxMEUzMjEzNDU3RDgwMEFDNUFGMCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmln
YXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0NCMTBERTIxMzQ1NzlEMDBBQzVBRjAgLyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZp
Z2F0aW9uLm1tICovOyB9OwpAQCAtMTk5Miw2ICsxOTkzLDcgQEAKIAkJNUNCM0NFMzgxRkExNjkx
NzAwQzNBMkQ2IC8qIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0I0MEI0RDFGNEI5OEJFMDA3REM3QjkgLyogVUlEZWxl
Z2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJRGVsZWdh
dGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjVCM0JEMUZGQzUxN0UwMEMy
N0JCMCAvKiBGcmFtZUhhbmRsZVNlcmlhbGl6YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBGcmFtZUhhbmRsZVNlcmlhbGl6YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDQjdBRkRCMjNDNDUxRTQwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlTG9hZERlbGVn
YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0NCMTBERDIxMzQ1NzlDMDBB
QzVBRjAgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRG
aXJlRWFybHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0IxMERFMjEzNDU3
OUQwMEFDNUFGMCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXN0b3JlU2Vzc2lvblN0YXRl
V2l0aG91dE5hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Ix
MERGMjEzNDU3OUQwMEFDNUFGMCAvKiBTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNob3VsZEdvVG9CYWNrRm9y
d2FyZExpc3RJdGVtLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjk4Myw2ICsy
OTg1LDcgQEAKIAkJCQkyRDA4RTkzNjIyNjdEMEYzMDAyNTE4REEgLyogUmVwYXJlbnRXZWJWaWV3
VGltZW91dC5tbSAqLywKIAkJCQkyRDJCRUIyQzIyMzI0RTVGMDA1NTQ0Q0EgLyogUmVxdWVzdFRl
eHRJbnB1dENvbnRleHQubW0gKi8sCiAJCQkJQ0Q5RTI5MkIxQzkwQTcxRjAwMEJCODAwIC8qIFJl
cXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tICovLAorCQkJCTVDQjdBRkRCMjNDNDUxRTQw
MEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLywKIAkJCQk1MUM4RTFBNDFGMjZB
QzU0MDBCRjczMUIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSAqLywKIAkJCQk1Q0NCMTBF
MDIxMzQ1NzlEMDBBQzVBRjAgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5tbSAqLywKIAkJCQk1Q0NC
MTBERDIxMzQ1NzlDMDBBQzVBRjAgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJs
eS5tbSAqLywKQEAgLTQ4NDksNiArNDg1Miw3IEBACiAJCQkJN0M4M0UwQzQxRDBBNjU0MjAwRkVC
Q0YzIC8qIFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdGMEUxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJW
aWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjBGMUE0MTFBRTYwMDQ0N0M0QyAvKiBS
ZXNpemVXaW5kb3dBZnRlckNyYXNoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQjdBRkRDMjND
NDUyOTcwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUxQzhFMUE1MUYyNkFGNEMwMEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDQjEwRTEyMTM0NTdEMzAwQUM1QUYwIC8qIFJlc3BvbnNp
dmVuZXNzVGltZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTJDNEM5RTIwRUFBNDBEMDA0OTQ1
RUEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckNyYXNoLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZERlbGVnYXRl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UmVzb3VyY2VMb2FkRGVsZWdhdGUubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisK
KyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8
V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1Jlc291cmNlTG9hZERlbGVnYXRl
Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbnRlcmZhY2UgVGVzdFJlc291cmNl
TG9hZERlbGVnYXRlIDogTlNPYmplY3QgPF9XS1Jlc291cmNlTG9hZERlbGVnYXRlPgorCitAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXndpbGxTZW5kUmVxdWVzdCkoV0tXZWJWaWV3
ICosIE5TVVJMUmVxdWVzdCAqKTsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gVGVzdFJlc291
cmNlTG9hZERlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3
aWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKK3sKKyAgICBpZiAoX3dpbGxT
ZW5kUmVxdWVzdCkKKyAgICAgICAgX3dpbGxTZW5kUmVxdWVzdCh3ZWJWaWV3LCByZXF1ZXN0KTsK
K30KKworQGVuZAorCitURVNUKFJlc291cmNlTG9hZERlbGVnYXRlLCBCYXNpYykKK3sKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisKKyAgICBhdXRvIG5hdmln
YXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7Cisg
ICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQo
KV07CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbbmF2aWdhdGlvbkRlbGVn
YXRlIHNldERpZEZpbmlzaE5hdmlnYXRpb246XihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICop
IHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBfX2Jsb2NrIFJldGFpblB0
cjxOU1VSTFJlcXVlc3Q+IHJlcXVlc3RGcm9tRGVsZWdhdGU7CisgICAgYXV0byByZXNvdXJjZUxv
YWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSBuZXddKTsKKyAg
ICBbd2ViVmlldyBfc2V0UmVzb3VyY2VMb2FkRGVsZWdhdGU6cmVzb3VyY2VMb2FkRGVsZWdhdGUu
Z2V0KCldOworICAgIFtyZXNvdXJjZUxvYWREZWxlZ2F0ZSBzZXRXaWxsU2VuZFJlcXVlc3Q6XihX
S1dlYlZpZXcgKiwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KSB7CisgICAgICAgIHJlcXVlc3RGcm9t
RGVsZWdhdGUgPSByZXF1ZXN0OworICAgIH1dOworCisgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVz
dD4gcmVxdWVzdExvYWRlZCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RMb2FkZWQuZ2V0KCldOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgCisgICAgRVhQRUNUX1dLX1NUUkVRKHJlcXVlc3RMb2Fk
ZWQuZ2V0KCkuVVJMLmFic29sdXRlU3RyaW5nLCByZXF1ZXN0RnJvbURlbGVnYXRlLmdldCgpLlVS
TC5hYnNvbHV0ZVN0cmluZyk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387046</attachid>
            <date>2020-01-07 15:41:23 -0800</date>
            <delta_ts>2020-01-07 18:16:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205887-20200107154122.patch</filename>
            <type>text/plain</type>
            <size>47632</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDA5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAxLTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IF9XS1Jlc291cmNlTG9hZERlbGVnYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDU4ODcKKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tz
b24uCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNl
dEhhc1Jlc291cmNlTG9hZENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpoYXNSZXNv
dXJjZUxvYWRDbGllbnQgY29uc3QpOgorCiAyMDIwLTAxLTA2ICBEYW5pZWwgQmF0ZXMgIDxkYWJh
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmVjaXNpb24gb2YgZ2V0Q2xpZW50UmVjdHMoKSwg
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgZGlmZmVycyBkZXBlbmRpbmcgd2hldGhlciBzaW1wbGUg
bGluZSBsYXlvdXQgb3IgbGluZSBib3ggbGF5b3V0IGlzIHVzZWQKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CShyZXZpc2lvbiAyNTQwOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjE3LDYgKzYxNyw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlc3VtZUFsbE1lZGlhQnVmZmVyaW5nKCk7CiAgICAgYm9vbCBtZWRpYUJ1ZmZlcmluZ0lz
U3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUJ1ZmZlcmluZ0lzU3VzcGVuZGVkOyB9
CiAKKyAgICB2b2lkIHNldEhhc1Jlc291cmNlTG9hZENsaWVudChib29sIGhhcykgeyBtX2hhc1Jl
c291cmNlTG9hZENsaWVudCA9IGhhczsgfQorICAgIGJvb2wgaGFzUmVzb3VyY2VMb2FkQ2xpZW50
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSZXNvdXJjZUxvYWRDbGllbnQ7IH0KKwogI2lmIEVOQUJM
RShNRURJQV9TRVNTSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlTWVkaWFFdmVu
dChNZWRpYUV2ZW50VHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWb2x1bWVPZk1l
ZGlhRWxlbWVudChkb3VibGUsIHVpbnQ2NF90KTsKQEAgLTk4OSw2ICs5OTIsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9tZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9tZWRpYUJ1ZmZlcmluZ0lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1faW5V
cGRhdGVSZW5kZXJpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNSZXNvdXJjZUxvYWRDbGll
bnQgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxVc2VyQ29udGVudFVSTFBhdHRlcm4+IG1fY29yc0Rp
c2FibGluZ1BhdHRlcm5zOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDEwMikKKysr
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAK
KzIwMjAtMDEtMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBJbnRyb2R1Y2UgX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTg4NworCisgICAgICAgIFJl
dmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBBZGQgYSBuZXcgZGVsZWdhdGUgdGhh
dCB3aWxsIGJlIGluZm9ybWVkIGFib3V0IG1haW4gYW5kIHN1YnJlc291cmNlIHJlcXVlc3RzLgor
ICAgICAgICBUaGlzIGlzIGRpc3RpbmN0IGZyb20gdGhlIFdLTmF2aWdhdGlvbkRlbGVnYXRlLCB3
aGljaCBwcmltYXJpbHkgcmVjZWl2ZXMgY2FsbGJhY2tzIGFib3V0IG1haW4gcmVzb3VyY2UgcmVx
dWVzdHMuCisgICAgICAgIEJlY2F1c2UgdGhlIElQQyBjaHVybiBjYW4gYmUgYSBzaWduaWZpY2Fu
dCBwZXJmb3JtYW5jZSByZWR1Y3Rpb24sIG9ubHkgc2VuZCB0aGUgSVBDIG1lc3NhZ2VzIGlmIHRo
ZSBwYWdlIGhhcyBzdWNoIGEgY2xpZW50LgorICAgICAgICBUaGlzIGNsaWVudCB3aWxsIG5lZWQg
dG8gYmUgZXhwYW5kZWQgdG8gaW1wbGVtZW50IDxyZGFyOi8vcHJvYmxlbS81NzEzMjI5MD4gYnV0
IHRoaXMgaXMgYSBtaW5pbWFsIHRlc3RhYmxlIHN0YXJ0LgorICAgICAgICBUaGUgc2ltcGxlIGNh
c2UgaXMgY292ZXJlZCBieSBhbiBBUEkgdGVzdC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKiBT
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2FkQ2xpZW50Lmg6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9yZXNvdXJjZUxvYWREZWxlZ2F0ZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Nl
dFJlc291cmNlTG9hZERlbGVnYXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jlc291cmNl
TG9hZERlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZTo6UmVzb3VyY2VMb2FkRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWREZWxlZ2F0ZTo6Y3JlYXRlUmVzb3VyY2VMb2FkQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU6OmRlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkRGVsZWdhdGU6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6UmVzb3VyY2VMb2FkQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU6OlJlc291cmNlTG9hZENsaWVu
dDo6d2lsbFNlbmRSZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6cGFnZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0UmVzb3VyY2VMb2Fk
Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVy
U3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX292ZXJyaWRk
ZW5NZWRpYVR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRIYXNSZXNvdXJjZUxv
YWRDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAtMDEt
MDYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IEdldCBkaXNwbGF5IGxldmVsIGluIHRoZSBVSSBwcm9jZXNzIGZvciBhbGwgaU9TIHBsYXRmb3Jt
cwpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjU0MDkyKQorKysgU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNzEsNiArMzcxLDcg
QEAgVUlQcm9jZXNzL0NvY29hL01lZGlhVXRpbGl0aWVzLm1tCiBVSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tCiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQog
VUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQorVUlQcm9jZXNz
L0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCiBVSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dz
aW5nV2FybmluZ0NvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvU2Vzc2lvblN0YXRlQ29kaW5nLm1t
CiBVSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI1NDA5MikKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVyczo6ZW5jbwogCiAgICAgZW5jb2RlciA8PCBmcmFtZUFuY2VzdG9yT3JpZ2luczsK
ICAgICBlbmNvZGVyIDw8IGlzSFRUUFNVcGdyYWRlRW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8IHBh
Z2VIYXNSZXNvdXJjZUxvYWRDbGllbnQ7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgZW5jb2RlciA8PCBzZXJ2aWNlV29ya2Vyc01vZGU7CkBAIC0yNDksNiArMjUwLDEyIEBAIE9w
dGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiAKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICAgICByZXN1bHQuaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gKmlzSFRUUFNV
cGdyYWRlRW5hYmxlZDsKIAorICAgIE9wdGlvbmFsPGJvb2w+IHBhZ2VIYXNSZXNvdXJjZUxvYWRD
bGllbnQ7CisgICAgZGVjb2RlciA+PiBwYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50OworICAgIGlm
ICghcGFnZUhhc1Jlc291cmNlTG9hZENsaWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXN1bHQucGFnZUhhc1Jlc291cmNlTG9hZENsaWVudCA9ICpwYWdlSGFzUmVzb3Vy
Y2VMb2FkQ2xpZW50OworCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIE9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJzTW9kZT4gc2VydmljZVdvcmtlcnNNb2RlOwogICAgIGRlY29kZXIgPj4g
c2VydmljZVdvcmtlcnNNb2RlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAkocmV2aXNp
b24gMjU0MDkyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIHNob3VsZEVuYWJsZUNyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3kgeyBmYWxz
ZSB9OwogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBmcmFtZUFu
Y2VzdG9yT3JpZ2luczsKICAgICBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCB7IGZhbHNlIH07
CisgICAgYm9vbCBwYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50IHsgZmFsc2UgfTsKIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGUgc2Vy
dmljZVdvcmtlcnNNb2RlIHsgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlOjpOb25lIH07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNTQwOTIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrTG9hZENoZWNrZXIuaCIKICNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgpAQCAtMzIxLDYgKzMyMiw5
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmsKICAgICBpZiAocmVx
dWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKQogICAgICAgICBwYXJhbWV0ZXJzLmJsb2JGaWxl
UmVmZXJlbmNlcyA9IG5ldHdvcmtTZXNzaW9uLT5ibG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYihv
cmlnaW5hbFJlcXVlc3QoKS51cmwoKSk7CiAKKyAgICBpZiAobV9wYXJhbWV0ZXJzLnBhZ2VIYXNS
ZXNvdXJjZUxvYWRDbGllbnQpCisgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3Mo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpQYWdlV2lsbFNlbmRSZXF1ZXN0KG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwg
cmVxdWVzdCksIDApOworCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KTsKICAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZu
ZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3
b3JrU2Vzc2lvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNTQwOTIpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzgsNiArNzgsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJ
CiAgICAgZW5jb2RlciA8PCBpc1Byb2Nlc3NTd2FwOwogICAgIGVuY29kZXIgPDwgdXNlRGFya0Fw
cGVhcmFuY2U7CiAgICAgZW5jb2RlciA8PCB1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbDsK
KyAgICBlbmNvZGVyIDw8IGhhc1Jlc291cmNlTG9hZENsaWVudDsKIAogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBlbmNvZGVyIDw8IGNvbG9yU3BhY2U7CkBAIC0yNTUsNiArMjU2LDEyIEBAIE9wdGlv
bmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlAKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMudXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwpKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgT3B0aW9uYWw8Ym9vbD4gaGFzUmVzb3VyY2VMb2Fk
Q2xpZW50OworICAgIGRlY29kZXIgPj4gaGFzUmVzb3VyY2VMb2FkQ2xpZW50OworICAgIGlmICgh
aGFzUmVzb3VyY2VMb2FkQ2xpZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHBhcmFtZXRlcnMuaGFzUmVzb3VyY2VMb2FkQ2xpZW50ID0gV1RGTW92ZSgqaGFzUmVzb3VyY2VM
b2FkQ2xpZW50KTsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMuY29sb3JTcGFjZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCShyZXZpc2lvbiAyNTQwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEsOCBAQCBzdHJ1
Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBMYXllckhvc3RpbmdNb2RlIGxh
eWVySG9zdGluZ01vZGU7CiAKKyAgICBib29sIGhhc1Jlc291cmNlTG9hZENsaWVudCB7IGZhbHNl
IH07CisKICAgICBWZWN0b3I8U3RyaW5nPiBtaW1lVHlwZXNXaXRoQ3VzdG9tQ29udGVudFByb3Zp
ZGVyczsKIAogICAgIGJvb2wgY29udHJvbGxlZEJ5QXV0b21hdGlvbjsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjU0MDkyKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkFQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaCIKICNpbmNs
dWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVBvbGljeUNsaWVudC5o
IgorI2luY2x1ZGUgIkFQSVJlc291cmNlTG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSVNlY3Vy
aXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIKICNpbmNsdWRlICJBUElVUkxS
ZXF1ZXN0LmgiCkBAIC03MTQsNiArNzE1LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbmpl
Y3RlZEJ1bmRsZUNsaWUKICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50LT5pbml0aWFsaXplKGNs
aWVudCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRSZXNvdXJjZUxvYWRDbGllbnQoc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6UmVzb3VyY2VMb2FkQ2xpZW50PiYmIGNsaWVudCkKK3sKKyAgICBi
b29sIGhhZFJlc291cmNlTG9hZENsaWVudCA9ICEhbV9yZXNvdXJjZUxvYWRDbGllbnQ7CisgICAg
bV9yZXNvdXJjZUxvYWRDbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CisgICAgYm9vbCBoYXNSZXNv
dXJjZUxvYWRDbGllbnQgPSAhIW1fcmVzb3VyY2VMb2FkQ2xpZW50OworICAgIGlmIChoYWRSZXNv
dXJjZUxvYWRDbGllbnQgIT0gaGFzUmVzb3VyY2VMb2FkQ2xpZW50KQorICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRIYXNSZXNvdXJjZUxvYWRDbGllbnQoaGFzUmVzb3VyY2VMb2Fk
Q2xpZW50KSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgY29uc3QgV2Vi
S2l0OjpVc2VyRGF0YSYgbWVzc2FnZUJvZHkpCiB7CiAgICAgQVNTRVJUKG1fcHJvY2Vzcy0+Y29u
bmVjdGlvbigpID09ICZjb25uZWN0aW9uKTsKQEAgLTU5MDYsNiArNTkxNiwxMiBAQCBXZWJJbnNw
ZWN0b3JQcm94eSogV2ViUGFnZVByb3h5OjppbnNwZWN0CiAgICAgcmV0dXJuIG1faW5zcGVjdG9y
LmdldCgpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAobV9yZXNvdXJjZUxv
YWRDbGllbnQpCisgICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50LT53aWxsU2VuZFJlcXVlc3Qo
cmVxdWVzdCk7Cit9CisKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5KiBXZWJQYWdlUHJveHk6OmZ1bGxTY3JlZW5NYW5hZ2VyKCkKIHsKQEAgLTc1
NDcsNiArNzU2Myw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoK
IAogICAgIHBhcmFtZXRlcnMub3ZlcnJpZGRlbk1lZGlhVHlwZSA9IG1fb3ZlcnJpZGRlbk1lZGlh
VHlwZTsKICAgICBwYXJhbWV0ZXJzLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IG1fY29uZmlndXJh
dGlvbi0+Y29yc0Rpc2FibGluZ1BhdHRlcm5zKCk7CisgICAgcGFyYW1ldGVycy5oYXNSZXNvdXJj
ZUxvYWRDbGllbnQgPSAhIW1fcmVzb3VyY2VMb2FkQ2xpZW50OwogCiAgICAgcHJvY2Vzcy5hZGRX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShtX3VzZXJDb250ZW50Q29udHJvbGxlciwgcGFy
YW1ldGVycyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShy
ZXZpc2lvbiAyNTQwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDYgKzE3NCw3IEBAIGNsYXNzIExvYWRlckNsaWVudDsK
IGNsYXNzIE5hdmlnYXRpb247CiBjbGFzcyBOYXZpZ2F0aW9uQ2xpZW50OwogY2xhc3MgUG9saWN5
Q2xpZW50OworY2xhc3MgUmVzb3VyY2VMb2FkQ2xpZW50OwogY2xhc3MgVUlDbGllbnQ7CiBjbGFz
cyBVUkxSZXF1ZXN0OwogfQpAQCAtNDY1LDYgKzQ2Niw4IEBAIHB1YmxpYzoKIAogICAgIFdlYklu
c3BlY3RvclByb3h5KiBpbnNwZWN0b3IoKSBjb25zdDsKIAorICAgIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworCiAgICAgdm9pZCBkaWRDaGFu
Z2VJbnNwZWN0b3JGcm9udGVuZENvdW50KHVuc2lnbmVkIGNvdW50KSB7IG1faW5zcGVjdG9yRnJv
bnRlbmRDb3VudCA9IGNvdW50OyB9CiAgICAgdW5zaWduZWQgaW5zcGVjdG9yRnJvbnRlbmRDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDb3VudDsgfQogICAgIGJvb2wg
aGFzSW5zcGVjdG9yRnJvbnRlbmQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckZyb250ZW5k
Q291bnQgPiAwOyB9CkBAIC01MjksNiArNTMyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TG9h
ZGVyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxvYWRlckNsaWVudD4mJik7CiAgICAgdm9p
ZCBzZXRQb2xpY3lDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6UG9saWN5Q2xpZW50PiYmKTsK
ICAgICB2b2lkIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnN0IFdLUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50QmFzZSopOworICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OlJlc291cmNlTG9hZENsaWVudD4mJik7CiAKICAgICBBUEk6OlVJQ2xpZW50
JiB1aUNsaWVudCgpIHsgcmV0dXJuICptX3VpQ2xpZW50OyB9CiAgICAgdm9pZCBzZXRVSUNsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4mJik7CkBAIC0yMjA4LDYgKzIyMTIsNyBA
QCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+IG1fZmluZENs
aWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4gbV9maW5k
TWF0Y2hlc0NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudD4gbV9kaWFnbm9zdGljTG9nZ2luZ0NsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpSZXNvdXJjZUxvYWRDbGllbnQ+IG1fcmVzb3VyY2VMb2FkQ2xpZW50OwogI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNvbnRleHRNZW51Q2xp
ZW50PiBtX2NvbnRleHRNZW51Q2xpZW50OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUmVzb3VyY2VMb2FkQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVJlc291cmNlTG9hZENsaWVudC5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElSZXNvdXJjZUxvYWRDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBSZXNvdXJjZUxvYWRDbGllbnQgeworcHVi
bGljOgorICAgIHZpcnR1YWwgflJlc291cmNlTG9hZENsaWVudCgpID0gZGVmYXVsdDsKKworICAg
IHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JikgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDI1
NDA5MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0J
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJl
ZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIgogI2ltcG9ydCAiUmVtb3RlT2JqZWN0UmVnaXN0
cnkuaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCIKKyNpbXBvcnQg
IlJlc291cmNlTG9hZERlbGVnYXRlLmgiCiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgi
CiAjaW1wb3J0ICJVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJWZXJzaW9uQ2hlY2tzLmgiCkBAIC01
MDUsNiArNTA2LDcgQEAgICAgIC8vIFdlIGFyZSBpbiB0aGUgVmlldydzIGluaXRpYWxpemF0aQog
ICAgIF9wYWdlLT5zZXREaWFnbm9zdGljTG9nZ2luZ0NsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KHNlbGYpKTsKIAogICAgIF9pY29uTG9hZGluZ0RlbGVn
YXRlID0gbWFrZVVuaXF1ZTxXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU+KHNlbGYpOworICAg
IF9yZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZT4oc2VsZik7CiAKICAgICBfdXNlUGxhdGZvcm1GaW5kVUkgPSBZRVM7CiAKQEAgLTY4
Myw2ICs2ODUsMTcgQEAgLSAodm9pZClfc2V0SWNvbkxvYWRpbmdEZWxlZ2F0ZTooaWQ8X1dLSQog
ICAgIF9pY29uTG9hZGluZ0RlbGVnYXRlLT5zZXREZWxlZ2F0ZShpY29uTG9hZGluZ0RlbGVnYXRl
KTsKIH0KIAorLSAoaWQgPF9XS1Jlc291cmNlTG9hZERlbGVnYXRlPilfcmVzb3VyY2VMb2FkRGVs
ZWdhdGUKK3sKKyAgICByZXR1cm4gX3Jlc291cmNlTG9hZERlbGVnYXRlLT5kZWxlZ2F0ZSgpLmF1
dG9yZWxlYXNlKCk7Cit9CisKKy0gKHZvaWQpX3NldFJlc291cmNlTG9hZERlbGVnYXRlOihpZDxf
V0tSZXNvdXJjZUxvYWREZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICBfcGFnZS0+c2V0UmVzb3Vy
Y2VMb2FkQ2xpZW50KF9yZXNvdXJjZUxvYWREZWxlZ2F0ZS0+Y3JlYXRlUmVzb3VyY2VMb2FkQ2xp
ZW50KCkpOworICAgIF9yZXNvdXJjZUxvYWREZWxlZ2F0ZS0+c2V0RGVsZWdhdGUoZGVsZWdhdGUp
OworfQorCiAtIChXS05hdmlnYXRpb24gKilsb2FkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVx
dWVzdAogewogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkUmVxdWVzdChyZXF1ZXN0KSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJu
YWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3SW50ZXJuYWwuaAkocmV2aXNpb24gMjU0MDkyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4
LDYgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBlbnVtIGNsYXNzIENvbnRpbnVlVW5zYWZl
TG9hZCA6IGJvb2w7CiBjbGFzcyBJY29uTG9hZGluZ0RlbGVnYXRlOwogY2xhc3MgTmF2aWdhdGlv
blN0YXRlOworY2xhc3MgUmVzb3VyY2VMb2FkRGVsZWdhdGU7CiBjbGFzcyBTYWZlQnJvd3NpbmdX
YXJuaW5nOwogY2xhc3MgVmlld1NuYXBzaG90OwogY2xhc3MgV2ViUGFnZVByb3h5OwpAQCAtMTA4
LDYgKzEwOSw3IEBAIGNsYXNzIFZpZXdHZXN0dXJlQ29udHJvbGxlcjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU+IF9uYXZpZ2F0aW9uU3RhdGU7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYktpdDo6VUlEZWxlZ2F0ZT4gX3VpRGVsZWdhdGU7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZT4gX2ljb25Mb2FkaW5nRGVsZWdh
dGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU+IF9y
ZXNvdXJjZUxvYWREZWxlZ2F0ZTsKIAogICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tUZXh0TWFuaXB1
bGF0aW9uRGVsZWdhdGU+PiBfdGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOwogICAgIFdlYWtPYmpD
UHRyPGlkIDxfV0tJbnB1dERlbGVnYXRlPj4gX2lucHV0RGVsZWdhdGU7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJ
KHJldmlzaW9uIDI1NDA5MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgsNiBAQCB0eXBl
ZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkCiBAY2xhc3MgX1dLQXBwbGljYXRp
b25NYW5pZmVzdDsKIEBjbGFzcyBfV0tGcmFtZUhhbmRsZTsKIEBjbGFzcyBfV0tIaXRUZXN0UmVz
dWx0OwotQGNsYXNzIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU7CiBAY2xhc3MgX1dLSW5zcGVjdG9y
OwogQGNsYXNzIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogQGNsYXNzIF9XS1NhZmVCcm93c2lu
Z1dhcm5pbmc7CkBAIC0xMjYsNiArMTI1LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVn
ZXIsIF9XS1JlY3RFZAogQHByb3RvY29sIF9XS0Z1bGxzY3JlZW5EZWxlZ2F0ZTsKIEBwcm90b2Nv
bCBfV0tJY29uTG9hZGluZ0RlbGVnYXRlOwogQHByb3RvY29sIF9XS0lucHV0RGVsZWdhdGU7CitA
cHJvdG9jb2wgX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGU7CiBAcHJvdG9jb2wgX1dLVGV4dE1hbmlw
dWxhdGlvbkRlbGVnYXRlOwogCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tQcml2YXRlKQpAQCAt
MTM4LDYgKzEzOCw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWQK
IAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0SGlzdG9yeURlbGVnYXRl
OikgaWQgPFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZT4gX2hpc3RvcnlEZWxlZ2F0ZTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEljb25Mb2FkaW5nRGVsZWdhdGU6KSBp
ZCA8X1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZT4gX2ljb25Mb2FkaW5nRGVsZWdhdGU7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZTopIGlk
IDxfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZT4gX3Jlc291cmNlTG9hZERlbGVnYXRlIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVUkwgKl91bnJlYWNoYWJsZVVSTDsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVUkwgKl9tYWluRnJhbWVVUkwgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
UmVzb3VyY2VMb2FkRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSkKK0Bwcm90b2NvbCBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZSA8TlNPYmpl
Y3Q+CitAb3B0aW9uYWwKKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHdp
bGxTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKKworQGVuZAorCitOU19BU1NV
TUVfTk9OTlVMTF9FTkQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Jlc291
cmNlTG9hZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAi
QVBJUmVzb3VyY2VMb2FkQ2xpZW50LmgiCisjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKKyNpbXBv
cnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorCitAcHJvdG9jb2wgX1dLUmVzb3VyY2VMb2FkRGVsZWdh
dGU7CisKK25hbWVzcGFjZSBBUEkgeworY2xhc3MgUmVzb3VyY2VMb2FkQ2xpZW50OworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVzb3VyY2VMb2FkRGVsZWdhdGUgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFJlc291cmNlTG9h
ZERlbGVnYXRlKFdLV2ViVmlldyAqKTsKKyAgICB+UmVzb3VyY2VMb2FkRGVsZWdhdGUoKTsKKwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlJlc291cmNlTG9hZENsaWVudD4gY3JlYXRlUmVzb3Vy
Y2VMb2FkQ2xpZW50KCk7CisKKyAgICBSZXRhaW5QdHI8aWQ8X1dLUmVzb3VyY2VMb2FkRGVsZWdh
dGU+PiBkZWxlZ2F0ZSgpOworICAgIHZvaWQgc2V0RGVsZWdhdGUoaWQ8X1dLUmVzb3VyY2VMb2Fk
RGVsZWdhdGU+KTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBSZXNvdXJjZUxvYWRDbGllbnQgOiBw
dWJsaWMgQVBJOjpSZXNvdXJjZUxvYWRDbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IFJlc291cmNlTG9hZENsaWVu
dChSZXNvdXJjZUxvYWREZWxlZ2F0ZSYpOworICAgICAgICB+UmVzb3VyY2VMb2FkQ2xpZW50KCk7
CisKKyAgICBwcml2YXRlOgorICAgICAgICAvLyBBUEk6OlJlc291cmNlTG9hZENsaWVudAorICAg
ICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KSBjb25zdCBmaW5hbDsKKworICAgICAgICBSZXNvdXJjZUxvYWREZWxlZ2F0ZSYgbV9yZXNvdXJj
ZUxvYWREZWxlZ2F0ZTsKKyAgICB9OworCisgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBtX3dl
YlZpZXc7CisgICAgV2Vha09iakNQdHI8aWQgPF9XS1Jlc291cmNlTG9hZERlbGVnYXRlPiA+IG1f
ZGVsZWdhdGU7CisKKyAgICBzdHJ1Y3QgeworICAgICAgICBib29sIHdpbGxTZW5kUmVxdWVzdCA6
IDE7CisgICAgfSBtX2RlbGVnYXRlTWV0aG9kczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdh
dGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUuaCIKKworI2ltcG9ydCAiX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Jlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxv
YWREZWxlZ2F0ZShXS1dlYlZpZXcgKndlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcod2ViVmlldykK
K3sKK30KKworUmVzb3VyY2VMb2FkRGVsZWdhdGU6On5SZXNvdXJjZUxvYWREZWxlZ2F0ZSgpID0g
ZGVmYXVsdDsKKworc3RkOjp1bmlxdWVfcHRyPEFQSTo6UmVzb3VyY2VMb2FkQ2xpZW50PiBSZXNv
dXJjZUxvYWREZWxlZ2F0ZTo6Y3JlYXRlUmVzb3VyY2VMb2FkQ2xpZW50KCkKK3sKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRDbGllbnQ+KCp0aGlzKTsKK30KKworUmV0YWluUHRy
PGlkPF9XS1Jlc291cmNlTG9hZERlbGVnYXRlPj4gUmVzb3VyY2VMb2FkRGVsZWdhdGU6OmRlbGVn
YXRlKCkKK3sKKyAgICByZXR1cm4gbV9kZWxlZ2F0ZS5nZXQoKTsKK30KKwordm9pZCBSZXNvdXJj
ZUxvYWREZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQgPF9XS1Jlc291cmNlTG9hZERlbGVnYXRlPiBk
ZWxlZ2F0ZSkKK3sKKyAgICBtX2RlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBtX2RlbGVnYXRl
TWV0aG9kcy53aWxsU2VuZFJlcXVlc3QgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcih3ZWJWaWV3OndpbGxTZW5kUmVxdWVzdDopXTsKK30KKworUmVzb3VyY2VMb2FkRGVs
ZWdhdGU6OlJlc291cmNlTG9hZENsaWVudDo6UmVzb3VyY2VMb2FkQ2xpZW50KFJlc291cmNlTG9h
ZERlbGVnYXRlJiBkZWxlZ2F0ZSkKKyAgICA6IG1fcmVzb3VyY2VMb2FkRGVsZWdhdGUoZGVsZWdh
dGUpCit7Cit9CisKK1Jlc291cmNlTG9hZERlbGVnYXRlOjpSZXNvdXJjZUxvYWRDbGllbnQ6On5S
ZXNvdXJjZUxvYWRDbGllbnQoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVzb3VyY2VMb2FkRGVsZWdh
dGU6OlJlc291cmNlTG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVzb3VyY2VMb2Fk
RGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2lsbFNlbmRSZXF1ZXN0KQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV9yZXNvdXJjZUxvYWREZWxlZ2F0ZS5tX2RlbGVn
YXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtk
ZWxlZ2F0ZSB3ZWJWaWV3Om1fcmVzb3VyY2VMb2FkRGVsZWdhdGUubV93ZWJWaWV3LmdldCgpLmdl
dCgpIHdpbGxTZW5kUmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBv
bGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjU0MDkyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDUyLDYgKzQ1MiwxNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0dsb2JhbERp
YWduCiAgICAgICAgIHBhZ2UtPmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKG1lc3NhZ2Us
IGRlc2NyaXB0aW9uLCB2YWx1ZSwgc2lnbmlmaWNhbnRGaWd1cmVzLCBzaG91bGRTYW1wbGUpOwog
fQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnBhZ2VXaWxsU2VuZFJlcXVlc3QoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKK3sKKyAgICBhdXRvKiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBh
Z2VJRCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWdlLT53aWxs
U2VuZFJlcXVlc3QocmVxdWVzdCk7Cit9CisKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAy
NTQwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDYgKzIwMSw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIAorICAgIHZvaWQgcGFnZVdpbGxTZW5kUmVxdWVzdChXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKwogcHJpdmF0ZToKICAgICAv
LyBBdXhpbGlhcnlQcm9jZXNzUHJveHkKICAgICB2b2lkIGdldExhdW5jaE9wdGlvbnMoUHJvY2Vz
c0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTQwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTY3LDQgKzY3LDYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdh
Y3lSZQogI2VuZGlmCiAKICAgICBSZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIHVpbnQ2NF90IHF1
b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCkgLT4gKE9w
dGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkgQXN5bmMKKyAgICAKKyAgICBQYWdlV2lsbFNlbmRS
ZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1NDA5MikKKysr
IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTExODIsNiArMTE4Miw3IEBACiAJCTVDQUZERTQ3MjEzMDg0NkEwMEIxRjdFMSAv
KiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNBRkRFNDQyMTMwODQzNjAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvcklu
dGVybmFsLmggKi87IH07CiAJCTVDQjIzNzhDMURGMERFNkUwMDExN0FBMyAvKiBfV0tXZWJzaXRl
UG9saWNpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQjIzNzg5MURGMERENDMwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1Q0IyMzc4RTFERjBF
MEQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjIzNzhEMURGMEUwQzIwMDExN0FB
MyAvKiBfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oICovOyB9OworCQk1Q0I3QUZFMDIzQzUy
Q0U1MDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjdBRkRGMjNDNTJDQkMwMEU0OUNGMyAv
KiBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTVDQkM5QjhFMUM2NTJDQTAwMEE4RkRDRiAvKiBOZXR3b3Jr
RGF0YVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCAqLzsgfTsKIAkJ
NUNCRDU5NUMyMjgwRURGNDAwMkIyMkFBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNUQyMzg4MjI3QTE4
OTIwMDBCOUJEQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gKi87IH07CiAJCTVDRDI4NjUx
MUU3MjM1OTkwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0QyODY0RDFFNzIyRjQ0MDA5NEZE
QzggLyogV0tDb250ZW50UnVsZUxpc3RTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTM5MDMsNiArMzkwNCwxMCBAQAogCQk1Q0IyMzc4OTFE
RjBERDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IF9XS1dlYnNpdGVQb2xpY2llcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1Q0IyMzc4QTFERjBERDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLV2Vic2l0ZVBv
bGljaWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IyMzc4RDFERjBFMEMy
MDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCN0FGREEyM0M0M0U2NDAwRTQ5Q0YzIC8qIEFQSVJlc291
cmNlTG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElSZXNv
dXJjZUxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCN0FGREQy
M0M1MjczRDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDQjdBRkRFMjNDNTI3M0QwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291
cmNlTG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I3QUZE
RjIzQzUyQ0JDMDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzlCODkxQzY1MjRBNTAwQThGRENGIC8qIE5ldHdv
cmtEYXRhVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrRGF0
YVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzlCOEIxQzY1MjU3MzAw
QThGRENGIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTmV0d29ya0RhdGFUYXNrQ29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDQzVEQjkxMjE0ODhFMTYwMDZDQjhBOCAvKiBTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU4OTcs
NiArNTkwMiw4IEBACiAJCQkJQ0RBMjlBMUUxQ0JFQjVGQjAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eS5oICovLAogCQkJCUNEQTI5QTIyMUNCRUI2MUEwMDkwMUNDRiAvKiBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJQ0RBMjlBMUYx
Q0JFQjVGQjAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSAqLywKKwkJ
CQk1Q0I3QUZERDIzQzUyNzNEMDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCAqLywK
KwkJCQk1Q0I3QUZERTIzQzUyNzNEMDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0g
Ki8sCiAJCQkJNUNBOTg1NEIyMTBCRUI3MzAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmdD
b2NvYS5tbSAqLywKIAkJCQkxQTAwMkQ0NzE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lvblN0YXRl
Q29kaW5nLmggKi8sCiAJCQkJMUEwMDJENDYxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0
ZUNvZGluZy5tbSAqLywKQEAgLTY3NzQsNiArNjc4MSw3IEBACiAJCQkJQTU1QkE4MEMxQkExMkJF
MTAwN0NEMzNEIC8qIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmggKi8sCiAJ
CQkJQTU1QkE4MEQxQkExMkJFMTAwN0NEMzNEIC8qIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tICovLAogCQkJCTk5MEUxRTA4MjM4NEE4OEIwMDQ2MDJERiAvKiBfV0tSZW1v
dGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlclByaXZhdGUuaCAqLywKKwkJCQk1Q0I3QUZERjIz
QzUyQ0JDMDBFNDlDRjMgLyogX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCAqLywKIAkJCQk0OUZC
RUZGQjIzOUFEQjE4MDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFy
dHkuaCAqLywKIAkJCQk0OUZCRUZGQzIzOUIwMTFEMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcnN0UGFydHkubW0gKi8sCiAJCQkJNDlCQ0ExOTAyM0ExNzU0OTAwMjhBODM2
IC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJuYWwuaCAqLywKQEAg
LTg0NzIsNiArODQ4MCw3IEBACiAJCQkJMUFGREQzMTQxODkxQjU0MDAwMTUzOTcwIC8qIEFQSVBv
bGljeUNsaWVudC5oICovLAogCQkJCTdDRTREMjFEMUE0OTE0Q0EwMEM3RjE1MiAvKiBBUElQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwICovLAogCQkJCTdDRTREMjFFMUE0OTE0Q0EwMEM3RjE1
MiAvKiBBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQk1Q0I3QUZEQTIzQzQz
RTY0MDBFNDlDRjMgLyogQVBJUmVzb3VyY2VMb2FkQ2xpZW50LmggKi8sCiAJCQkJNDlCQ0ExOTEy
M0ExNzc2NjAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Lmgg
Ki8sCiAJCQkJNDlCQ0ExOTYyM0ExOEY2MjAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRp
c3RpY3NUaGlyZFBhcnR5LmggKi8sCiAJCQkJMUFGREU2NUYxOTU0RTlCMTAwQzQ4RkZBIC8qIEFQ
SVNlc3Npb25TdGF0ZS5jcHAgKi8sCkBAIC05ODE4LDYgKzk4MjcsNyBAQAogCQkJCTk5MEUxRTA5
MjM4NEFBNTcwMDQ2MDJERiAvKiBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlclBy
aXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NzIxNkI4MUE0RTZCRTAwMERDQTcxOCAvKiBf
V0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUY2MDRCQUEx
ODg5RkJCODAwRUUwMzk1IC8qIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAorCQkJCTVDQjdBRkUwMjNDNTJDRTUwMEU0OUNGMyAvKiBfV0tSZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlGQkYwMDEyMzlCMUY4RDAwQkQw
MzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OUJDQTE5NTIzQTE4Q0ZEMDAyOEE4MzYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlGQkYwMDAyMzlC
MUY3NTAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmggaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHJldmlzaW9uIDI1NDA5MikKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjY0LDYgKzI2NCw4IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVk
dWxlTG9hZEZyb20KICAgICBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBjb250ZW50RW5j
b2RpbmdTbmlmZmluZ1BvbGljeSA9IHJlc291cmNlTG9hZGVyLnNob3VsZFNuaWZmQ29udGVudEVu
Y29kaW5nKCkgPyBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYgOiBDb250ZW50
RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6RG9Ob3RTbmlmZjsKICAgICBTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHJlc291cmNlTG9hZGVyLnNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKCkgPyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlIDogU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlOwogCisgICAgYXV0byogZnJhbWUgPSByZXNv
dXJjZUxvYWRlci5mcmFtZSgpOworCiAgICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMg
bG9hZFBhcmFtZXRlcnM7CiAgICAgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciA9IGlkZW50aWZp
ZXI7CiAgICAgbG9hZFBhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQgPSB0cmFja2luZ1BhcmFtZXRl
cnMud2ViUGFnZVByb3h5SUQ7CkBAIC0yODQsNyArMjg2LDExIEBAIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnNjaGVkdWxlTG9hZEZyb20KICAgICBsb2FkUGFyYW1ldGVycy5tYXhpbXVtQnVmZmVy
aW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIGxvYWRQYXJhbWV0ZXJzLm9wdGlv
bnMgPSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCk7CiAgICAgbG9hZFBhcmFtZXRlcnMucHJlZmxp
Z2h0UG9saWN5ID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnByZWZsaWdodFBvbGljeTsKLSAg
ICBsb2FkUGFyYW1ldGVycy5pc0hUVFBTVXBncmFkZUVuYWJsZWQgPSByZXNvdXJjZUxvYWRlci5m
cmFtZSgpID8gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5IVFRQU1VwZ3JhZGVF
bmFibGVkKCkgOiBmYWxzZTsKKyAgICBpZiAoZnJhbWUpIHsKKyAgICAgICAgbG9hZFBhcmFtZXRl
cnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gZnJhbWUtPnNldHRpbmdzKCkuSFRUUFNVcGdyYWRl
RW5hYmxlZCgpOworICAgICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCisgICAg
ICAgICAgICBsb2FkUGFyYW1ldGVycy5wYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50ID0gcGFnZS0+
aGFzUmVzb3VyY2VMb2FkQ2xpZW50KCk7CisgICAgfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogICAgIGxvYWRQYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJzTW9kZSA9IHJlc291cmNlTG9h
ZGVyLm9wdGlvbnMoKS5zZXJ2aWNlV29ya2Vyc01vZGU7CkBAIC0yOTIsNyArMjk4LDcgQEAgdm9p
ZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbQogICAgIGxvYWRQYXJhbWV0ZXJz
Lmh0dHBIZWFkZXJzVG9LZWVwID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLmh0dHBIZWFkZXJz
VG9LZWVwOwogI2VuZGlmCiAKLSAgICBhdXRvKiBkb2N1bWVudCA9IHJlc291cmNlTG9hZGVyLmZy
YW1lKCkgPyByZXNvdXJjZUxvYWRlci5mcmFtZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKKyAg
ICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lID8gZnJhbWUtPmRvY3VtZW50KCkgOiBudWxscHRyOwog
ICAgIGlmIChyZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuY3NwUmVzcG9uc2VIZWFkZXJzKQogICAg
ICAgICBsb2FkUGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMgPSByZXNvdXJjZUxvYWRlci5v
cHRpb25zKCkuY3NwUmVzcG9uc2VIZWFkZXJzOwogICAgIGVsc2UgaWYgKGRvY3VtZW50ICYmICFk
b2N1bWVudC0+c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCkgJiYg
cmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLmNvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24g
PT0gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaykgewpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlz
aW9uIDI1NDA5MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTgsNiArNTU4LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIAogI2VuZGlmCiAKICAgICBtX3BhZ2UtPnNldENvbnRyb2xs
ZWRCeUF1dG9tYXRpb24ocGFyYW1ldGVycy5jb250cm9sbGVkQnlBdXRvbWF0aW9uKTsKKyAgICBt
X3BhZ2UtPnNldEhhc1Jlc291cmNlTG9hZENsaWVudChwYXJhbWV0ZXJzLmhhc1Jlc291cmNlTG9h
ZENsaWVudCk7CiAKICAgICBtX3BhZ2UtPnNldENhblN0YXJ0TWVkaWEoZmFsc2UpOwogICAgIG1f
bWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyA9IHBhcmFtZXRlcnMubWF5U3RhcnRNZWRpYVdoZW5J
bldpbmRvdzsKQEAgLTEyMTYsNiArMTIxNywxMiBAQCB1aW50NjRfdCBXZWJQYWdlOjpyZW5kZXJU
cmVlU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS0+cmVuZGVyVHJlZVNpemUoKTsKIH0K
IAordm9pZCBXZWJQYWdlOjpzZXRIYXNSZXNvdXJjZUxvYWRDbGllbnQoYm9vbCBoYXMpCit7Cisg
ICAgaWYgKG1fcGFnZSkKKyAgICAgICAgbV9wYWdlLT5zZXRIYXNSZXNvdXJjZUxvYWRDbGllbnQo
aGFzKTsKK30KKwogdm9pZCBXZWJQYWdlOjpzZXRUcmFja3NSZXBhaW50cyhib29sIHRyYWNrUmVw
YWludHMpCiB7CiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1haW5GcmFtZVZpZXcoKSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9u
IDI1NDA5MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMTU0OSw2ICsxNTQ5LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
c2hvdWxkRGlzcGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW50c1doZW5Nb2RpZnlpbmdTZWxlY3Rpb24o
KSBjb25zdDsKICAgICB2b2lkIHBsYXRmb3JtRGlkU2VsZWN0QWxsKCk7CisgICAgCisgICAgdm9p
ZCBzZXRIYXNSZXNvdXJjZUxvYWRDbGllbnQoYm9vbCk7CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKICAgICB2b2lkIGRpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoY29uc3Qg
V2ViQ29udGV4dE1lbnVJdGVtRGF0YSYpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNTQwOTIp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC01ODcsNCArNTg3LDYgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZChlbnVtOnVpbgogICAgIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbihXZWJDb3Jl
OjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6SXRlbUlkZW50aWZpZXIgaXRlbUlELCBWZWN0
b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2Vu
PiB0b2tlbnMpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXI6Ok1hbmlwdWxhdGlvblJlc3VsdCByZXN1bHQpIEFzeW5jCiAgICAgCiAgICAgU2V0T3Zl
cnJpZGRlbk1lZGlhVHlwZShTdHJpbmcgbWVkaWFUeXBlKQorCisgICAgU2V0SGFzUmVzb3VyY2VM
b2FkQ2xpZW50KGJvb2wgaGFzKQogfQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU0MTU4KQorKysgVG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDEtMDcgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgX1dL
UmVzb3VyY2VMb2FkRGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNTg4NworCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVz
b3VyY2VMb2FkRGVsZWdhdGUubW06IEFkZGVkLgorICAgICAgICAoLVtUZXN0UmVzb3VyY2VMb2Fk
RGVsZWdhdGUgd2ViVmlldzp3aWxsU2VuZFJlcXVlc3Q6XSk6CisgICAgICAgIChURVNUKToKKwog
MjAyMC0wMS0wNyAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0VXU10gTGltaXQgcHJlLWV4aXN0aW5nIEpTQyB0ZXN0cyBmYWlsdXJlcyB0byBkaXNwbGF5
IGluIGJ1aWxkYm90IHN1bW1hcnkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyNTQwOTIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDE5LDYgKzQxOSw3IEBACiAJCTVD
QjNDRTM5MUZBMTY5N0YwMEMzQTJENiAvKiBXS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCM0NFMzgxRkExNjkx
NzAwQzNBMkQ2IC8qIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gKi87IH07CiAJCTVDQjQwQjRF
MUY0Qjk4RDMwMDdEQzdCOSAvKiBVSURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCNDBCNEQxRjRCOThCRTAwN0RDN0I5IC8qIFVJRGVs
ZWdhdGUubW0gKi87IH07CiAJCTVDQjVCM0MyMUZGQzU1Q0YwMEMyN0JCMCAvKiBGcmFtZUhhbmRs
ZVNlcmlhbGl6YXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0I1QjNCRDFGRkM1MTdFMDBDMjdCQjAgLyogRnJhbWVIYW5kbGVTZXJpYWxpemF0
aW9uLm1tICovOyB9OworCQk1Q0I3QUZEQzIzQzQ1Mjk3MDBFNDlDRjMgLyogUmVzb3VyY2VMb2Fk
RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0I3QUZEQjIzQzQ1MUU0MDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi87
IH07CiAJCTVDQ0IxMEUxMjEzNDU3RDMwMEFDNUFGMCAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDQjEwRTAy
MTM0NTc5RDAwQUM1QUYwIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIubW0gKi87IH07CiAJCTVDQ0Ix
MEUyMjEzNDU3RDUwMEFDNUFGMCAvKiBSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDQjEw
REQyMTM0NTc5QzAwQUM1QUYwIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHku
bW0gKi87IH07CiAJCTVDQ0IxMEUzMjEzNDU3RDgwMEFDNUFGMCAvKiBSZXN0b3JlU2Vzc2lvblN0
YXRlV2l0aG91dE5hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0NCMTBERTIxMzQ1NzlEMDBBQzVBRjAgLyogUmVzdG9yZVNlc3Npb25T
dGF0ZVdpdGhvdXROYXZpZ2F0aW9uLm1tICovOyB9OwpAQCAtMTk5Miw2ICsxOTkzLDcgQEAKIAkJ
NUNCM0NFMzgxRkExNjkxNzAwQzNBMkQ2IC8qIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdDb25maWd1cmF0
aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0I0MEI0RDFGNEI5OEJFMDA3
REM3QjkgLyogVUlEZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFVJRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjVC
M0JEMUZGQzUxN0UwMEMyN0JCMCAvKiBGcmFtZUhhbmRsZVNlcmlhbGl6YXRpb24ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBGcmFtZUhhbmRsZVNlcmlhbGl6YXRpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDQjdBRkRCMjNDNDUxRTQwMEU0OUNGMyAvKiBSZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJl
c291cmNlTG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0NC
MTBERDIxMzQ1NzlDMDBBQzVBRjAgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJs
eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc3BvbnNpdmVu
ZXNzVGltZXJEb2VzbnRGaXJlRWFybHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDQ0IxMERFMjEzNDU3OUQwMEFDNUFGMCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5h
dmlnYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXN0
b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDQ0IxMERGMjEzNDU3OUQwMEFDNUFGMCAvKiBTaG91bGRHb1RvQmFja0Zvcndh
cmRMaXN0SXRlbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNo
b3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjk4Myw2ICsyOTg1LDcgQEAKIAkJCQkyRDA4RTkzNjIyNjdEMEYzMDAyNTE4REEgLyog
UmVwYXJlbnRXZWJWaWV3VGltZW91dC5tbSAqLywKIAkJCQkyRDJCRUIyQzIyMzI0RTVGMDA1NTQ0
Q0EgLyogUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0gKi8sCiAJCQkJQ0Q5RTI5MkIxQzkwQTcx
RjAwMEJCODAwIC8qIFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tICovLAorCQkJCTVD
QjdBRkRCMjNDNDUxRTQwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLywKIAkJ
CQk1MUM4RTFBNDFGMjZBQzU0MDBCRjczMUIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSAq
LywKIAkJCQk1Q0NCMTBFMDIxMzQ1NzlEMDBBQzVBRjAgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5t
bSAqLywKIAkJCQk1Q0NCMTBERDIxMzQ1NzlDMDBBQzVBRjAgLyogUmVzcG9uc2l2ZW5lc3NUaW1l
ckRvZXNudEZpcmVFYXJseS5tbSAqLywKQEAgLTQ4NDksNiArNDg1Miw3IEBACiAJCQkJN0M4M0Uw
QzQxRDBBNjU0MjAwRkVCQ0YzIC8qIFJlcXVpcmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMEUxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc2l6ZVJldmVy
c2VQYWdpbmF0ZWRXZWJWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjBGMUE0MTFB
RTYwMDQ0N0M0QyAvKiBSZXNpemVXaW5kb3dBZnRlckNyYXNoLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTVDQjdBRkRDMjNDNDUyOTcwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTUxQzhFMUE1MUYyNkFGNEMwMEJGNzMxQiAvKiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDQjEwRTEyMTM0NTdEMzAwQUM1
QUYwIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTJDNEM5
RTIwRUFBNDBEMDA0OTQ1RUEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckNyYXNoLm1tIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291
cmNlTG9hZERlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0JKG5vbmV4aXN0ZW50KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0
ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1Jlc291
cmNlTG9hZERlbGVnYXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbnRlcmZh
Y2UgVGVzdFJlc291cmNlTG9hZERlbGVnYXRlIDogTlNPYmplY3QgPF9XS1Jlc291cmNlTG9hZERl
bGVnYXRlPgorCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXndpbGxTZW5kUmVx
dWVzdCkoV0tXZWJWaWV3ICosIE5TVVJMUmVxdWVzdCAqKTsKKworQGVuZAorCitAaW1wbGVtZW50
YXRpb24gVGVzdFJlc291cmNlTG9hZERlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyB3aWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKK3sK
KyAgICBpZiAoX3dpbGxTZW5kUmVxdWVzdCkKKyAgICAgICAgX3dpbGxTZW5kUmVxdWVzdCh3ZWJW
aWV3LCByZXF1ZXN0KTsKK30KKworQGVuZAorCitURVNUKFJlc291cmNlTG9hZERlbGVnYXRlLCBC
YXNpYykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisK
KyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVs
ZWdhdGUgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRp
b25EZWxlZ2F0ZS5nZXQoKV07CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBb
bmF2aWdhdGlvbkRlbGVnYXRlIHNldERpZEZpbmlzaE5hdmlnYXRpb246XihXS1dlYlZpZXcgKiwg
V0tOYXZpZ2F0aW9uICopIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBf
X2Jsb2NrIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlcXVlc3RGcm9tRGVsZWdhdGU7CisgICAg
YXV0byByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RSZXNvdXJjZUxvYWREZWxl
Z2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBfc2V0UmVzb3VyY2VMb2FkRGVsZWdhdGU6cmVzb3Vy
Y2VMb2FkRGVsZWdhdGUuZ2V0KCldOworICAgIFtyZXNvdXJjZUxvYWREZWxlZ2F0ZSBzZXRXaWxs
U2VuZFJlcXVlc3Q6XihXS1dlYlZpZXcgKiwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KSB7CisgICAg
ICAgIHJlcXVlc3RGcm9tRGVsZWdhdGUgPSByZXF1ZXN0OworICAgIH1dOworCisgICAgUmV0YWlu
UHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdExvYWRlZCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RMb2FkZWQuZ2V0KCldOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgCisgICAgRVhQRUNUX1dLX1NU
UkVRKHJlcXVlc3RMb2FkZWQuZ2V0KCkuVVJMLmFic29sdXRlU3RyaW5nLCByZXF1ZXN0RnJvbURl
bGVnYXRlLmdldCgpLlVSTC5hYnNvbHV0ZVN0cmluZyk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390815</attachid>
            <date>2020-02-14 14:11:55 -0800</date>
            <delta_ts>2020-02-14 14:11:55 -0800</delta_ts>
            <desc>patch fixing perf bug</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>3385</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTYzNDYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAyLTE0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWxsb3cgVUlETkFJbmZvLmVycm9y
cyBmcm9tIHVpZG5hX25hbWVUb1VuaWNvZGUgdGhhdCB3b3VsZCBub3QgY2F1c2UgVVJMIHBhcnNp
bmcgZmFpbHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNzM2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc4MjUzMTc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgICogd3RmL1VSTEhlbHBlcnMuY3Bw
OgorICAgICAgICAoV1RGOjpVUkxIZWxwZXJzOjptYXBIb3N0TmFtZSk6CisKIDIwMjAtMDItMTAg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCBzcGVjdWxhdGl2ZSBidWlsZCBmaXggb24gd2F0Y2hPUyBzaW11bGF0b3IKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1VS
TEhlbHBlcnMuY3BwCShyZXZpc2lvbiAyNTYzNDYpCisrKyBTb3VyY2UvV1RGL3d0Zi9VUkxIZWxw
ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ4LDcgKzU0OCw4IEBACiAgICAgVUVycm9yQ29k
ZSB1ZXJyb3IgPSBVX1pFUk9fRVJST1I7CiAgICAgVUlETkFJbmZvIHByb2Nlc3NpbmdEZXRhaWxz
ID0gVUlETkFfSU5GT19JTklUSUFMSVpFUjsKICAgICBpbnQzMl90IG51bUNoYXJhY3RlcnNDb252
ZXJ0ZWQgPSAoZGVjb2RlRnVuY3Rpb24gPyB1aWRuYV9uYW1lVG9BU0NJSSA6IHVpZG5hX25hbWVU
b1VuaWNvZGUpKCZVUkxQYXJzZXI6OmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2Rlcigp
LCBzb3VyY2VCdWZmZXIuZGF0YSgpLCBsZW5ndGgsIGRlc3RpbmF0aW9uQnVmZmVyLCBob3N0TmFt
ZUJ1ZmZlckxlbmd0aCwgJnByb2Nlc3NpbmdEZXRhaWxzLCAmdWVycm9yKTsKLSAgICBpZiAobGVu
Z3RoICYmIChVX0ZBSUxVUkUodWVycm9yKSB8fCBwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMpKQor
ICAgIGludCBhbGxvd2VkRXJyb3JzID0gZGVjb2RlRnVuY3Rpb24gPyAwIDogVUlETkFfRVJST1Jf
RU1QVFlfTEFCRUwgfCBVSUROQV9FUlJPUl9MRUFESU5HX0hZUEhFTiB8IFVJRE5BX0VSUk9SX1RS
QUlMSU5HX0hZUEhFTiB8IFVJRE5BX0VSUk9SX0hZUEhFTl8zXzQ7CisgICAgaWYgKGxlbmd0aCAm
JiAoVV9GQUlMVVJFKHVlcnJvcikgfHwgcHJvY2Vzc2luZ0RldGFpbHMuZXJyb3JzICYgfmFsbG93
ZWRFcnJvcnMpKQogICAgICAgICByZXR1cm4gbnVsbG9wdDsKICAgICAKICAgICBpZiAobnVtQ2hh
cmFjdGVyc0NvbnZlcnRlZCA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpICYmICFtZW1j
bXAoc291cmNlQnVmZmVyLmRhdGEoKSwgZGVzdGluYXRpb25CdWZmZXIsIGxlbmd0aCAqIHNpemVv
ZihVQ2hhcikpKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NjY0NCkKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDItMTQg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBX
S1dlYlZpZXcuX3NldFJlc291cmNlTG9hZERlbGVnYXRlIHNob3VsZCBjbGVhciB0aGUgV2ViUGFn
ZVByb3h5J3MgUmVzb3VyY2VMb2FkQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU4ODcKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFJlc291cmNlTG9hZERl
bGVnYXRlOl0pOgorICAgICAgICBXZWJQYWdlUHJveHk6OnNldFJlc291cmNlTG9hZENsaWVudCBo
YXMgc29tZSBzcGVjaWFsIGxvZ2ljIHRvIHBvc3NpYmx5IGNsZWFyIGEgYml0IGluIHRoZSB3ZWIg
cHJvY2VzcyB0aGF0IHdpbGwgcmVkdWNlIElQQ3MuCisgICAgICAgIFRoaXMgaXMgYSBzbWFsbCBv
dmVyc2lnaHQgaW4gbXkgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24uCisKIDIwMjAtMDItMTQgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgZml4IHRoZSBpT1MgMTMuMSBidWlsZCBhZnRlciByMjU2NTIwCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDI1NjM0
NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTY4NCw4ICs2ODQsMTMgQEAKIAogLSAodm9pZClfc2V0UmVzb3VyY2VM
b2FkRGVsZWdhdGU6KGlkPF9XS1Jlc291cmNlTG9hZERlbGVnYXRlPilkZWxlZ2F0ZQogewotICAg
IF9wYWdlLT5zZXRSZXNvdXJjZUxvYWRDbGllbnQoX3Jlc291cmNlTG9hZERlbGVnYXRlLT5jcmVh
dGVSZXNvdXJjZUxvYWRDbGllbnQoKSk7Ci0gICAgX3Jlc291cmNlTG9hZERlbGVnYXRlLT5zZXRE
ZWxlZ2F0ZShkZWxlZ2F0ZSk7CisgICAgaWYgKGRlbGVnYXRlKSB7CisgICAgICAgIF9wYWdlLT5z
ZXRSZXNvdXJjZUxvYWRDbGllbnQoX3Jlc291cmNlTG9hZERlbGVnYXRlLT5jcmVhdGVSZXNvdXJj
ZUxvYWRDbGllbnQoKSk7CisgICAgICAgIF9yZXNvdXJjZUxvYWREZWxlZ2F0ZS0+c2V0RGVsZWdh
dGUoZGVsZWdhdGUpOworICAgIH0gZWxzZSB7CisgICAgICAgIF9wYWdlLT5zZXRSZXNvdXJjZUxv
YWRDbGllbnQobnVsbHB0cik7CisgICAgICAgIF9yZXNvdXJjZUxvYWREZWxlZ2F0ZS0+c2V0RGVs
ZWdhdGUobmlsKTsKKyAgICB9CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRSZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>