<?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>138302</bug_id>
          
          <creation_ts>2014-11-03 01:02:50 -0800</creation_ts>
          <short_desc>Rename FindIndicator{Window} to TextIndicator{Window}</short_desc>
          <delta_ts>2014-11-03 11:17:35 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1045680</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-11-03 01:02:50 -0800</bug_when>
    <thetext>Rename FindIndicator{Window} to TextIndicator{Window} (and related), because it will soon be used to indicate ranges of text that are not necessarily find-in-page results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045681</commentid>
    <comment_count>1</comment_count>
      <attachid>240833</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-11-03 01:03:15 -0800</bug_when>
    <thetext>Created attachment 240833
rename</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045682</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-11-03 01:03:41 -0800</bug_when>
    <thetext>I&apos;m open to better name suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045683</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-03 01:05:19 -0800</bug_when>
    <thetext>Attachment 240833 did not pass style-queue:


ERROR: Source/WebKit2/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045788</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-11-03 11:13:54 -0800</bug_when>
    <thetext>&lt;rdar://problem/18855190&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045789</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-11-03 11:17:35 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/175476</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240833</attachid>
            <date>2014-11-03 01:03:15 -0800</date>
            <delta_ts>2014-11-03 08:01:14 -0800</delta_ts>
            <desc>rename</desc>
            <filename>rename-ti.diff</filename>
            <type>text/plain</type>
            <size>81802</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwNGM1MzE1Li43YTZiM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTQtMTEtMDMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVuYW1lIEZpbmRJbmRpY2F0b3J7V2luZG93fSB0byBUZXh0SW5kaWNhdG9ye1dp
bmRvd30KKyAgICAgICAgTmVlZCB0aGUgYnVnIFVSTCAoT09QUyEpLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBGaW5kSW5kaWNhdG9ye1dp
bmRvd30gdG8gVGV4dEluZGljYXRvcntXaW5kb3d9IChhbmQgcmVsYXRlZCksCisgICAgICAgIGJl
Y2F1c2UgaXQgd2lsbCBzb29uIGJlIHVzZWQgdG8gaW5kaWNhdGUgcmFuZ2VzIG9mIHRleHQgdGhh
dCBhcmUgbm90CisgICAgICAgIG5lY2Vzc2FyaWx5IGZpbmQtaW4tcGFnZSByZXN1bHRzLgorCisg
ICAgICAgIEZpbmRDb250cm9sbGVyIHN0aWxsIGhhcyB0aGluZ3MgbmFtZWQgJ2ZpbmRJbmRpY2F0
b3InIGludGVybmFsbHksCisgICAgICAgIGFuZCBJIGxlZnQgdGhlIEFQSSBhbG9uZSAoYmVjYXVz
ZSBhbGwgdGhlIEFQSSBiaXRzIGFyZSBhY3R1YWxseSBmaW5kLXNwZWNpZmljKSwKKyAgICAgICAg
YnV0IHRoZSBhY3R1YWwgRmluZEluZGljYXRvci9XaW5kb3cgYW5kIHRoZSBtZXNzYWdlIHRvIHNl
dCBpdCB1cCwgZXRjLiBhcmUgYWxsCisgICAgICAgIG5vdyBjYWxsZWQgVGV4dCouCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9UZXh0SW5kaWNhdG9yLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9GaW5kSW5kaWNhdG9yLmNwcC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvVGV4dEluZGljYXRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0ZpbmRJbmRpY2F0b3IuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RleHRJbmRp
Y2F0b3JXaW5kb3cuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
RmluZEluZGljYXRvcldpbmRvdy5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVGV4dEluZGlj
YXRvcldpbmRvdy5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
RmluZEluZGljYXRvcldpbmRvdy5tbS4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVy
LmNwcDoKKwogMjAxNC0xMS0wMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBVc2UgRnJhbWVTbmFwc2hvdHRpbmcgZnVuY3Rpb25zIGluIEZpbmRDb250
cm9sbGVyOjpnZXRGaW5kSW5kaWNhdG9yQml0bWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0KaW5kZXggNTlmMmI2OC4uNzI3OWE4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtNDAsOCArNDAsNiBAQAogI2ltcG9y
dCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRWRpdGluZ1JhbmdlLmgiCiAjaW1wb3J0ICJF
ZGl0b3JTdGF0ZS5oIgotI2ltcG9ydCAiRmluZEluZGljYXRvci5oIgotI2ltcG9ydCAiRmluZElu
ZGljYXRvcldpbmRvdy5oIgogI2ltcG9ydCAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2ltcG9ydCAi
TG9nZ2luZy5oIgogI2ltcG9ydCAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgpAQCAtNTMsNiAr
NTEsOCBAQAogI2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXh0Q2hlY2tl
ci5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXJTdGF0ZS5oIgorI2ltcG9ydCAiVGV4dEluZGljYXRv
ci5oIgorI2ltcG9ydCAiVGV4dEluZGljYXRvcldpbmRvdy5oIgogI2ltcG9ydCAiVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIgogI2ltcG9ydCAiVmlld0dlc3R1cmVDb250cm9s
bGVyLmgiCiAjaW1wb3J0ICJWaWV3U25hcHNob3RTdG9yZS5oIgpAQCAtMTgyLDcgKzE4Miw3IEBA
IHN0cnVjdCBXS1ZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsKICAgICAvLyBGb3Ig
YXN5bmNocm9ub3VzIHZhbGlkYXRpb24uCiAgICAgVmFsaWRhdGlvbk1hcCBfdmFsaWRhdGlvbk1h
cDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxGaW5kSW5kaWNhdG9yV2luZG93PiBfZmluZEluZGlj
YXRvcldpbmRvdzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dEluZGljYXRvcldpbmRvdz4gX3Rl
eHRJbmRpY2F0b3JXaW5kb3c7CiAKICAgICAvLyBXZSBrZWVwIGhlcmUgdGhlIGV2ZW50IHdoZW4g
cmVzZW5kaW5nIGl0IHRvCiAgICAgLy8gdGhlIGFwcGxpY2F0aW9uIHRvIGRpc3Rpbmd1aXNoIHRo
ZSBjYXNlIG9mIGEgbmV3IGV2ZW50IGZyb20gb25lIApAQCAtNDkyLDcgKzQ5Miw3IEBAIHN0cnVj
dCBXS1ZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsKIC0gKHZvaWQpcmVuZXdHU3Rh
dGUKIHsKICAgICAvLyBIaWRlIHRoZSBmaW5kIGluZGljYXRvci4KLSAgICBfZGF0YS0+X2ZpbmRJ
bmRpY2F0b3JXaW5kb3cgPSBudWxscHRyOworICAgIF9kYXRhLT5fdGV4dEluZGljYXRvcldpbmRv
dyA9IG51bGxwdHI7CiAKICAgICAvLyBVcGRhdGUgdGhlIHZpZXcgZnJhbWUuCiAgICAgaWYgKFtz
ZWxmIHdpbmRvd10pCkBAIC0zMDQxLDE3ICszMDQxLDE3IEBAIHN0YXRpYyB2b2lkKiBrZXlWYWx1
ZU9ic2VydmluZ0NvbnRleHQgPSAma2V5VmFsdWVPYnNlcnZpbmdDb250ZXh0OwogICAgIH0KIH0K
IAotLSAodm9pZClfc2V0RmluZEluZGljYXRvcjooUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPilm
aW5kSW5kaWNhdG9yIGZhZGVPdXQ6KEJPT0wpZmFkZU91dCBhbmltYXRlOihCT09MKWFuaW1hdGUK
Ky0gKHZvaWQpX3NldFRleHRJbmRpY2F0b3I6KFBhc3NSZWZQdHI8VGV4dEluZGljYXRvcj4pdGV4
dEluZGljYXRvciBmYWRlT3V0OihCT09MKWZhZGVPdXQgYW5pbWF0ZTooQk9PTClhbmltYXRlCiB7
Ci0gICAgaWYgKCFmaW5kSW5kaWNhdG9yKSB7Ci0gICAgICAgIF9kYXRhLT5fZmluZEluZGljYXRv
cldpbmRvdyA9IG51bGxwdHI7CisgICAgaWYgKCF0ZXh0SW5kaWNhdG9yKSB7CisgICAgICAgIF9k
YXRhLT5fdGV4dEluZGljYXRvcldpbmRvdyA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAoIV9kYXRhLT5fZmluZEluZGljYXRvcldpbmRvdykKLSAgICAgICAgX2Rh
dGEtPl9maW5kSW5kaWNhdG9yV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxGaW5kSW5kaWNhdG9y
V2luZG93PihzZWxmKTsKKyAgICBpZiAoIV9kYXRhLT5fdGV4dEluZGljYXRvcldpbmRvdykKKyAg
ICAgICAgX2RhdGEtPl90ZXh0SW5kaWNhdG9yV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0
SW5kaWNhdG9yV2luZG93PihzZWxmKTsKIAotICAgIF9kYXRhLT5fZmluZEluZGljYXRvcldpbmRv
dy0+c2V0RmluZEluZGljYXRvcihmaW5kSW5kaWNhdG9yLCBmYWRlT3V0LCBhbmltYXRlKTsKKyAg
ICBfZGF0YS0+X3RleHRJbmRpY2F0b3JXaW5kb3ctPnNldFRleHRJbmRpY2F0b3IodGV4dEluZGlj
YXRvciwgZmFkZU91dCwgYW5pbWF0ZSk7CiB9CiAKIC0gKENBTGF5ZXIgKilfcm9vdExheWVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaApp
bmRleCAwMTY4ZWM2Li4xZWMyZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKQEAgLTQ2LDggKzQ2LDggQEAgc3RydWN0IEtleXBy
ZXNzQ29tbWFuZDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5
OwotY2xhc3MgRmluZEluZGljYXRvcjsKIGNsYXNzIExheWVyVHJlZUNvbnRleHQ7CitjbGFzcyBU
ZXh0SW5kaWNhdG9yOwogY2xhc3MgVmlld1NuYXBzaG90OwogY2xhc3MgV2ViQ29udGV4dDsKIHN0
cnVjdCBBY3Rpb25NZW51SGl0VGVzdFJlc3VsdDsKQEAgLTgwLDcgKzgwLDcgQEAgc3RydWN0IFdl
YlBhZ2VDb25maWd1cmF0aW9uOwogLSAodm9pZClfc2V0SW50cmluc2ljQ29udGVudFNpemU6KE5T
U2l6ZSlpbnRyaW5zaWNDb250ZW50U2l6ZTsKIC0gKE5TUmVjdClfY29udmVydFRvRGV2aWNlU3Bh
Y2U6KE5TUmVjdClyZWN0OwogLSAoTlNSZWN0KV9jb252ZXJ0VG9Vc2VyU3BhY2U6KE5TUmVjdCly
ZWN0OwotLSAodm9pZClfc2V0RmluZEluZGljYXRvcjooUGFzc1JlZlB0cjxXZWJLaXQ6OkZpbmRJ
bmRpY2F0b3I+KWZpbmRJbmRpY2F0b3IgZmFkZU91dDooQk9PTClmYWRlT3V0IGFuaW1hdGU6KEJP
T0wpYW5pbWF0ZTsKKy0gKHZvaWQpX3NldFRleHRJbmRpY2F0b3I6KFBhc3NSZWZQdHI8V2ViS2l0
OjpUZXh0SW5kaWNhdG9yPil0ZXh0SW5kaWNhdG9yIGZhZGVPdXQ6KEJPT0wpZmFkZU91dCBhbmlt
YXRlOihCT09MKWFuaW1hdGU7CiAKIC0gKHZvaWQpX3NldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlUm9vdExheWVyOihDQUxheWVyICopcm9vdExheWVyOwogLSAoQ0FMYXllciAqKV9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9GaW5kSW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9G
aW5kSW5kaWNhdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzFlMjA2Yi4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRmluZEluZGljYXRvci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwyNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJGaW5kSW5kaWNhdG9yLmgiCi0KLSNpbmNsdWRlICJTaGFyZWFi
bGVCaXRtYXAuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dlb21ldHJ5VXRpbGl0aWVzLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9HcmFkaWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Q
YXRoLmg+Ci0KLSNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMDEwMDAKLSNkZWZpbmUgRU5BQkxFX0xFR0FDWV9GSU5EX0lORElDQVRPUl9TVFlM
RSAxCi0jZWxzZQotI2RlZmluZSBFTkFCTEVfTEVHQUNZX0ZJTkRfSU5ESUNBVE9SX1NUWUxFIDAK
LSNlbmRpZgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotI2lmIEVOQUJMRShMRUdBQ1lf
RklORF9JTkRJQ0FUT1JfU1RZTEUpCi1zdGF0aWMgY29uc3QgZmxvYXQgY29ybmVyUmFkaXVzID0g
My4wOwotCi1zdGF0aWMgY29uc3QgZmxvYXQgc2hhZG93T2Zmc2V0WCA9IDAuMDsKLXN0YXRpYyBj
b25zdCBmbG9hdCBzaGFkb3dPZmZzZXRZID0gMS4wOwotc3RhdGljIGNvbnN0IGZsb2F0IHNoYWRv
d0JsdXJSYWRpdXMgPSAzLjA7Ci0KLXN0YXRpYyBjb25zdCBpbnQgc2hhZG93UmVkID0gMDsKLXN0
YXRpYyBjb25zdCBpbnQgc2hhZG93R3JlZW4gPSAwOwotc3RhdGljIGNvbnN0IGludCBzaGFkb3dC
bHVlID0gMDsKLXN0YXRpYyBjb25zdCBpbnQgc2hhZG93QWxwaGEgPSAyMDQ7Ci0KLXN0YXRpYyBj
b25zdCBmbG9hdCBsaWdodEJvcmRlclRoaWNrbmVzcyA9IDEuMDsKLXN0YXRpYyBjb25zdCBmbG9h
dCBob3Jpem9udGFsUGFkZGluZ0luc2lkZUxpZ2h0Qm9yZGVyID0gMy4wOwotc3RhdGljIGNvbnN0
IGZsb2F0IHZlcnRpY2FsUGFkZGluZ0luc2lkZUxpZ2h0Qm9yZGVyID0gMS4wOwotCi1zdGF0aWMg
Y29uc3QgZmxvYXQgaG9yaXpvbnRhbEJvcmRlckluc2lkZVNoYWRvdyA9IGxpZ2h0Qm9yZGVyVGhp
Y2tuZXNzICsgaG9yaXpvbnRhbFBhZGRpbmdJbnNpZGVMaWdodEJvcmRlcjsKLXN0YXRpYyBjb25z
dCBmbG9hdCB2ZXJ0aWNhbEJvcmRlckluc2lkZVNoYWRvdyA9IGxpZ2h0Qm9yZGVyVGhpY2tuZXNz
ICsgdmVydGljYWxQYWRkaW5nSW5zaWRlTGlnaHRCb3JkZXI7Ci0KLXN0YXRpYyBjb25zdCBmbG9h
dCBsZWZ0Qm9yZGVyVGhpY2tuZXNzID0gaG9yaXpvbnRhbEJvcmRlckluc2lkZVNoYWRvdyArIHNo
YWRvd09mZnNldFggKyBzaGFkb3dCbHVyUmFkaXVzIC8gMi4wOwotc3RhdGljIGNvbnN0IGZsb2F0
IHRvcEJvcmRlclRoaWNrbmVzcyA9IHZlcnRpY2FsQm9yZGVySW5zaWRlU2hhZG93IC0gc2hhZG93
T2Zmc2V0WSArIHNoYWRvd0JsdXJSYWRpdXMgLyAyLjA7Ci1zdGF0aWMgY29uc3QgZmxvYXQgcmln
aHRCb3JkZXJUaGlja25lc3MgPSBob3Jpem9udGFsQm9yZGVySW5zaWRlU2hhZG93IC0gc2hhZG93
T2Zmc2V0WCArIHNoYWRvd0JsdXJSYWRpdXMgLyAyLjA7Ci1zdGF0aWMgY29uc3QgZmxvYXQgYm90
dG9tQm9yZGVyVGhpY2tuZXNzID0gdmVydGljYWxCb3JkZXJJbnNpZGVTaGFkb3cgKyBzaGFkb3dP
ZmZzZXRZICsgc2hhZG93Qmx1clJhZGl1cyAvIDIuMDsKLQotc3RhdGljIGNvbnN0IGZsb2F0IGhv
cml6b250YWxPdXRzZXRUb0NlbnRlck9mTGlnaHRCb3JkZXIgPSBob3Jpem9udGFsQm9yZGVySW5z
aWRlU2hhZG93IC0gbGlnaHRCb3JkZXJUaGlja25lc3MgLyAyLjA7Ci1zdGF0aWMgY29uc3QgZmxv
YXQgdmVydGljYWxPdXRzZXRUb0NlbnRlck9mTGlnaHRCb3JkZXIgPSB2ZXJ0aWNhbEJvcmRlcklu
c2lkZVNoYWRvdyAtIGxpZ2h0Qm9yZGVyVGhpY2tuZXNzIC8gMi4wOwotCi1zdGF0aWMgY29uc3Qg
aW50IGxpZ2h0Qm9yZGVyUmVkID0gMjQ1Owotc3RhdGljIGNvbnN0IGludCBsaWdodEJvcmRlckdy
ZWVuID0gMjMwOwotc3RhdGljIGNvbnN0IGludCBsaWdodEJvcmRlckJsdWUgPSAwOwotc3RhdGlj
IGNvbnN0IGludCBsaWdodEJvcmRlckFscGhhID0gMjU1OwotCi1zdGF0aWMgY29uc3QgaW50IGdy
YWRpZW50RGFya1JlZCA9IDIzNzsKLXN0YXRpYyBjb25zdCBpbnQgZ3JhZGllbnREYXJrR3JlZW4g
PSAyMDQ7Ci1zdGF0aWMgY29uc3QgaW50IGdyYWRpZW50RGFya0JsdWUgPSAwOwotc3RhdGljIGNv
bnN0IGludCBncmFkaWVudERhcmtBbHBoYSA9IDI1NTsKLQotc3RhdGljIGNvbnN0IGludCBncmFk
aWVudExpZ2h0UmVkID0gMjQyOwotc3RhdGljIGNvbnN0IGludCBncmFkaWVudExpZ2h0R3JlZW4g
PSAyMzk7Ci1zdGF0aWMgY29uc3QgaW50IGdyYWRpZW50TGlnaHRCbHVlID0gMDsKLXN0YXRpYyBj
b25zdCBpbnQgZ3JhZGllbnRMaWdodEFscGhhID0gMjU1OwotI2Vsc2UKLWNvbnN0IGZsb2F0IGZs
YXRTdHlsZUhvcml6b250YWxCb3JkZXIgPSAyOwotY29uc3QgZmxvYXQgZmxhdFN0eWxlVmVydGlj
YWxCb3JkZXIgPSAxOwotY29uc3QgZmxvYXQgZmxhdFNoYWRvd09mZnNldFggPSAwOwotY29uc3Qg
ZmxvYXQgZmxhdFNoYWRvd09mZnNldFkgPSA1OwotY29uc3QgZmxvYXQgZmxhdFNoYWRvd0JsdXJS
YWRpdXMgPSAyNTsKLWNvbnN0IGZsb2F0IGZsYXRSaW1TaGFkb3dCbHVyUmFkaXVzID0gMjsKLSNl
bmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiBG
aW5kSW5kaWNhdG9yOjpjcmVhdGUoY29uc3QgRmxvYXRSZWN0JiBzZWxlY3Rpb25SZWN0SW5XaW5k
b3dDb29yZGluYXRlcywgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHRleHRSZWN0c0luU2VsZWN0
aW9uUmVjdENvb3JkaW5hdGVzLCBmbG9hdCBjb250ZW50SW1hZ2VTY2FsZUZhY3RvciwgY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGNvbnRlbnRJbWFnZUhhbmRsZSkKLXsKLSAgICBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBjb250ZW50SW1hZ2UgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShjb250ZW50SW1hZ2VIYW5kbGUpOwotICAgIGlmICghY29udGVudEltYWdlKQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICBBU1NFUlQoY29udGVudEltYWdlU2NhbGVGYWN0b3IgIT0gMSB8fCBjb250
ZW50SW1hZ2UtPnNpemUoKSA9PSBlbmNsb3NpbmdJbnRSZWN0KHNlbGVjdGlvblJlY3RJbldpbmRv
d0Nvb3JkaW5hdGVzKS5zaXplKCkpOwotCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaW5kSW5k
aWNhdG9yKHNlbGVjdGlvblJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzLCB0ZXh0UmVjdHNJblNlbGVj
dGlvblJlY3RDb29yZGluYXRlcywgY29udGVudEltYWdlU2NhbGVGYWN0b3IsIGNvbnRlbnRJbWFn
ZS5yZWxlYXNlKCkpKTsKLX0KLQotc3RhdGljIEZsb2F0UmVjdCBpbmZsYXRlUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGZsb2F0IGluZmxhdGVYLCBmbG9hdCBpbmZsYXRlWSkKLXsKLSAgICBG
bG9hdFJlY3QgaW5mbGF0ZWRSZWN0ID0gcmVjdDsKLSAgICBpbmZsYXRlZFJlY3QuaW5mbGF0ZVgo
aW5mbGF0ZVgpOwotICAgIGluZmxhdGVkUmVjdC5pbmZsYXRlWShpbmZsYXRlWSk7Ci0gICAgcmV0
dXJuIGluZmxhdGVkUmVjdDsKLX0KLQotc3RhdGljIEZsb2F0UmVjdCBvdXRzZXRJbmRpY2F0b3JS
ZWN0SW5jbHVkaW5nU2hhZG93KGNvbnN0IEZsb2F0UmVjdCByZWN0KQotewotI2lmIEVOQUJMRShM
RUdBQ1lfRklORF9JTkRJQ0FUT1JfU1RZTEUpCi0gICAgRmxvYXRSZWN0IG91dHNldFJlY3QgPSBy
ZWN0OwotICAgIG91dHNldFJlY3QubW92ZSgtbGVmdEJvcmRlclRoaWNrbmVzcywgLXRvcEJvcmRl
clRoaWNrbmVzcyk7Ci0gICAgb3V0c2V0UmVjdC5leHBhbmQobGVmdEJvcmRlclRoaWNrbmVzcyAr
IHJpZ2h0Qm9yZGVyVGhpY2tuZXNzLCB0b3BCb3JkZXJUaGlja25lc3MgKyBib3R0b21Cb3JkZXJU
aGlja25lc3MpOwotICAgIHJldHVybiBvdXRzZXRSZWN0OwotI2Vsc2UKLSAgICByZXR1cm4gaW5m
bGF0ZVJlY3QocmVjdCwgZmxhdFNoYWRvd0JsdXJSYWRpdXMgKyBmbGF0U3R5bGVIb3Jpem9udGFs
Qm9yZGVyLCBmbGF0U2hhZG93Qmx1clJhZGl1cyArIGZsYXRTdHlsZVZlcnRpY2FsQm9yZGVyKTsK
LSNlbmRpZgotfQotCi1zdGF0aWMgYm9vbCBmaW5kSW5kaWNhdG9yc0ZvclRleHRSZWN0c092ZXJs
YXAoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHRleHRSZWN0cykKLXsKLSAgICBzaXplX3QgY291
bnQgPSB0ZXh0UmVjdHMuc2l6ZSgpOwotICAgIGlmIChjb3VudCA8PSAxKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBWZWN0b3I8RmxvYXRSZWN0PiBpbmRpY2F0b3JSZWN0czsKLSAgICBp
bmRpY2F0b3JSZWN0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKLQotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBGbG9hdFJlY3QgaW5kaWNh
dG9yUmVjdCA9IG91dHNldEluZGljYXRvclJlY3RJbmNsdWRpbmdTaGFkb3codGV4dFJlY3RzW2ld
KTsKLQotICAgICAgICBmb3IgKHNpemVfdCBqID0gaW5kaWNhdG9yUmVjdHMuc2l6ZSgpOyBqOyAp
IHsKLSAgICAgICAgICAgIC0tajsKLSAgICAgICAgICAgIGlmIChpbmRpY2F0b3JSZWN0LmludGVy
c2VjdHMoaW5kaWNhdG9yUmVjdHNbal0pKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaW5kaWNhdG9yUmVjdHMudW5jaGVja2VkQXBwZW5kKGluZGlj
YXRvclJlY3QpOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotRmluZEluZGljYXRv
cjo6RmluZEluZGljYXRvcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNlbGVjdGlvblJlY3RJ
bldpbmRvd0Nvb3JkaW5hdGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYgdGV4
dFJlY3RzSW5TZWxlY3Rpb25SZWN0Q29vcmRpbmF0ZXMsIGZsb2F0IGNvbnRlbnRJbWFnZVNjYWxl
RmFjdG9yLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udGVudEltYWdlKQotICAgIDog
bV9zZWxlY3Rpb25SZWN0SW5XaW5kb3dDb29yZGluYXRlcyhzZWxlY3Rpb25SZWN0SW5XaW5kb3dD
b29yZGluYXRlcykKLSAgICAsIG1fdGV4dFJlY3RzSW5TZWxlY3Rpb25SZWN0Q29vcmRpbmF0ZXMo
dGV4dFJlY3RzSW5TZWxlY3Rpb25SZWN0Q29vcmRpbmF0ZXMpCi0gICAgLCBtX2NvbnRlbnRJbWFn
ZVNjYWxlRmFjdG9yKGNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yKQotICAgICwgbV9jb250ZW50SW1h
Z2UoY29udGVudEltYWdlKQotewotICAgIGlmIChmaW5kSW5kaWNhdG9yc0ZvclRleHRSZWN0c092
ZXJsYXAobV90ZXh0UmVjdHNJblNlbGVjdGlvblJlY3RDb29yZGluYXRlcykpIHsKLSAgICAgICAg
bV90ZXh0UmVjdHNJblNlbGVjdGlvblJlY3RDb29yZGluYXRlc1swXSA9IHVuaW9uUmVjdChtX3Rl
eHRSZWN0c0luU2VsZWN0aW9uUmVjdENvb3JkaW5hdGVzKTsKLSAgICAgICAgbV90ZXh0UmVjdHNJ
blNlbGVjdGlvblJlY3RDb29yZGluYXRlcy5zaHJpbmsoMSk7Ci0gICAgfQotfQotCi1GaW5kSW5k
aWNhdG9yOjp+RmluZEluZGljYXRvcigpCi17Ci19Ci0KLUZsb2F0UmVjdCBGaW5kSW5kaWNhdG9y
OjpmcmFtZVJlY3QoKSBjb25zdAotewotICAgIHJldHVybiBvdXRzZXRJbmRpY2F0b3JSZWN0SW5j
bHVkaW5nU2hhZG93KG1fc2VsZWN0aW9uUmVjdEluV2luZG93Q29vcmRpbmF0ZXMpOwotfQotCi0j
aWYgRU5BQkxFKExFR0FDWV9GSU5EX0lORElDQVRPUl9TVFlMRSkKLXN0YXRpYyBpbmxpbmUgQ29s
b3IgbGlnaHRCb3JkZXJDb2xvcigpCi17Ci0gICAgcmV0dXJuIENvbG9yKGxpZ2h0Qm9yZGVyUmVk
LCBsaWdodEJvcmRlckdyZWVuLCBsaWdodEJvcmRlckJsdWUsIGxpZ2h0Qm9yZGVyQWxwaGEpOwot
fQotCi1zdGF0aWMgaW5saW5lIENvbG9yIHNoYWRvd0NvbG9yKCkKLXsKLSAgICByZXR1cm4gQ29s
b3Ioc2hhZG93UmVkLCBzaGFkb3dHcmVlbiwgc2hhZG93Qmx1ZSwgc2hhZG93QWxwaGEpOwotfQot
Ci1zdGF0aWMgaW5saW5lIENvbG9yIGdyYWRpZW50TGlnaHRDb2xvcigpCi17Ci0gICAgcmV0dXJu
IENvbG9yKGdyYWRpZW50TGlnaHRSZWQsIGdyYWRpZW50TGlnaHRHcmVlbiwgZ3JhZGllbnRMaWdo
dEJsdWUsIGdyYWRpZW50TGlnaHRBbHBoYSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgQ29sb3IgZ3Jh
ZGllbnREYXJrQ29sb3IoKQotewotICAgIHJldHVybiBDb2xvcihncmFkaWVudERhcmtSZWQsIGdy
YWRpZW50RGFya0dyZWVuLCBncmFkaWVudERhcmtCbHVlLCBncmFkaWVudERhcmtBbHBoYSk7Ci19
Ci0KLXN0YXRpYyBQYXRoIHBhdGhXaXRoUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiBwYXRo
UmVjdCwgZmxvYXQgcmFkaXVzKQotewotICAgIFBhdGggcGF0aDsKLSAgICBwYXRoLmFkZFJvdW5k
ZWRSZWN0KHBhdGhSZWN0LCBGbG9hdFNpemUocmFkaXVzLCByYWRpdXMpKTsKLQotICAgIHJldHVy
biBwYXRoOwotfQotI2Vsc2UKLXN0YXRpYyBpbmxpbmUgQ29sb3IgZmxhdEhpZ2hsaWdodENvbG9y
KCkKLXsKLSAgICByZXR1cm4gQ29sb3IoMjU1LCAyNTUsIDAsIDI1NSk7Ci19Ci0KLXN0YXRpYyBp
bmxpbmUgQ29sb3IgZmxhdFJpbVNoYWRvd0NvbG9yKCkKLXsKLSAgICByZXR1cm4gQ29sb3IoMCwg
MCwgMCwgMzgpOwotfQotCi1zdGF0aWMgaW5saW5lIENvbG9yIGZsYXREcm9wU2hhZG93Q29sb3Io
KQotewotICAgIHJldHVybiBDb2xvcigwLCAwLCAwLCA1MSk7Ci19Ci0jZW5kaWYKLSAgICAKLXZv
aWQgRmluZEluZGljYXRvcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgSW50UmVjdCYgLypkaXJ0eVJlY3QqLykKLXsKLSNpZiBFTkFCTEUoTEVHQUNZX0ZJTkRf
SU5ESUNBVE9SX1NUWUxFKQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90ZXh0UmVjdHNJ
blNlbGVjdGlvblJlY3RDb29yZGluYXRlcy5zaXplKCk7ICsraSkgewotICAgICAgICBGbG9hdFJl
Y3QgdGV4dFJlY3QgPSBtX3RleHRSZWN0c0luU2VsZWN0aW9uUmVjdENvb3JkaW5hdGVzW2ldOwot
ICAgICAgICB0ZXh0UmVjdC5tb3ZlKGxlZnRCb3JkZXJUaGlja25lc3MsIHRvcEJvcmRlclRoaWNr
bmVzcyk7Ci0KLSAgICAgICAgRmxvYXRSZWN0IG91dGVyUGF0aFJlY3QgPSBpbmZsYXRlUmVjdCh0
ZXh0UmVjdCwgaG9yaXpvbnRhbE91dHNldFRvQ2VudGVyT2ZMaWdodEJvcmRlciwgdmVydGljYWxP
dXRzZXRUb0NlbnRlck9mTGlnaHRCb3JkZXIpOwotICAgICAgICBGbG9hdFJlY3QgaW5uZXJQYXRo
UmVjdCA9IGluZmxhdGVSZWN0KHRleHRSZWN0LCBob3Jpem9udGFsUGFkZGluZ0luc2lkZUxpZ2h0
Qm9yZGVyLCB2ZXJ0aWNhbFBhZGRpbmdJbnNpZGVMaWdodEJvcmRlcik7Ci0KLSAgICAgICAgewot
ICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNz
Q29udGV4dCk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hhZG93KEZsb2F0U2l6
ZShzaGFkb3dPZmZzZXRYLCBzaGFkb3dPZmZzZXRZKSwgc2hhZG93Qmx1clJhZGl1cywgc2hhZG93
Q29sb3IoKSwgQ29sb3JTcGFjZVNSR0IpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNl
dEZpbGxDb2xvcihsaWdodEJvcmRlckNvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxQYXRoKHBhdGhXaXRoUm91bmRlZFJlY3Qob3V0
ZXJQYXRoUmVjdCwgY29ybmVyUmFkaXVzKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB7Ci0gICAg
ICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250
ZXh0KTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKHBhdGhXaXRoUm91bmRlZFJl
Y3QoaW5uZXJQYXRoUmVjdCwgY29ybmVyUmFkaXVzKSk7Ci0gICAgICAgICAgICBSZWZQdHI8R3Jh
ZGllbnQ+IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KGlubmVyUGF0aFJl
Y3QueCgpLCBpbm5lclBhdGhSZWN0LnkoKSksIEZsb2F0UG9pbnQoaW5uZXJQYXRoUmVjdC54KCks
IGlubmVyUGF0aFJlY3QubWF4WSgpKSk7Ci0gICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKDAsIGdyYWRpZW50TGlnaHRDb2xvcigpKTsKLSAgICAgICAgICAgIGdyYWRpZW50LT5hZGRD
b2xvclN0b3AoMSwgZ3JhZGllbnREYXJrQ29sb3IoKSk7Ci0gICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0RmlsbEdyYWRpZW50KGdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KG91dGVyUGF0aFJlY3QpOwotICAgICAgICB9
Ci0KLSAgICAgICAgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQudHJh
bnNsYXRlKEZsb2F0U2l6ZShyb3VuZGYobGVmdEJvcmRlclRoaWNrbmVzcyksIHJvdW5kZih0b3BC
b3JkZXJUaGlja25lc3MpKSk7Ci0KLSAgICAgICAgICAgIEludFJlY3QgY29udGVudEltYWdlUmVj
dCA9IGVuY2xvc2luZ0ludFJlY3QobV90ZXh0UmVjdHNJblNlbGVjdGlvblJlY3RDb29yZGluYXRl
c1tpXSk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRJbWFnZS0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0
LCBtX2NvbnRlbnRJbWFnZVNjYWxlRmFjdG9yLCBjb250ZW50SW1hZ2VSZWN0LmxvY2F0aW9uKCks
IGNvbnRlbnRJbWFnZVJlY3QpOwotICAgICAgICB9Ci0gICAgfQotI2Vsc2UKLSAgICBmb3IgKGF1
dG8mIHRleHRSZWN0IDogbV90ZXh0UmVjdHNJblNlbGVjdGlvblJlY3RDb29yZGluYXRlcykgewot
ICAgICAgICBGbG9hdFJlY3QgYmx1clJlY3QgPSB0ZXh0UmVjdDsKLSAgICAgICAgYmx1clJlY3Qu
bW92ZShmbGF0U2hhZG93Qmx1clJhZGl1cyArIGZsYXRTdHlsZUhvcml6b250YWxCb3JkZXIsIGZs
YXRTaGFkb3dCbHVyUmFkaXVzICsgZmxhdFN0eWxlVmVydGljYWxCb3JkZXIpOwotICAgICAgICBG
bG9hdFJlY3Qgb3V0ZXJQYXRoUmVjdCA9IGluZmxhdGVSZWN0KGJsdXJSZWN0LCBmbGF0U3R5bGVI
b3Jpem9udGFsQm9yZGVyLCBmbGF0U3R5bGVWZXJ0aWNhbEJvcmRlcik7Ci0KLSAgICAgICAgewot
ICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNz
Q29udGV4dCk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hhZG93KEZsb2F0U2l6
ZSgpLCBmbGF0UmltU2hhZG93Qmx1clJhZGl1cywgZmxhdFJpbVNoYWRvd0NvbG9yKCksIENvbG9y
U3BhY2VTUkdCKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZmxh
dEhpZ2hsaWdodENvbG9yKCksIENvbG9yU3BhY2VTUkdCKTsKLSAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5maWxsUmVjdChvdXRlclBhdGhSZWN0KTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5zZXRTaGFkb3coRmxvYXRTaXplKGZsYXRTaGFkb3dPZmZzZXRYLCBmbGF0U2hhZG93T2Zm
c2V0WSksIGZsYXRTaGFkb3dCbHVyUmFkaXVzLCBmbGF0RHJvcFNoYWRvd0NvbG9yKCksIENvbG9y
U3BhY2VTUkdCKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChvdXRlclBh
dGhSZWN0KTsKLSAgICAgICAgfQotCi0gICAgICAgIHsKLSAgICAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOwotICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZShGbG9hdFNpemUoZmxhdFNoYWRvd0JsdXJSYWRpdXMg
KyBmbGF0U3R5bGVIb3Jpem9udGFsQm9yZGVyLCBmbGF0U2hhZG93Qmx1clJhZGl1cyArIGZsYXRT
dHlsZVZlcnRpY2FsQm9yZGVyKSk7Ci0KLSAgICAgICAgICAgIEludFJlY3QgY29udGVudEltYWdl
UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QodGV4dFJlY3QpOwotICAgICAgICAgICAgbV9jb250ZW50
SW1hZ2UtPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgbV9jb250ZW50SW1hZ2VTY2FsZUZhY3Rvciwg
Y29udGVudEltYWdlUmVjdC5sb2NhdGlvbigpLCBjb250ZW50SW1hZ2VSZWN0KTsKLSAgICAgICAg
fQotICAgIH0KLSNlbmRpZgotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9GaW5kSW5kaWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvRmluZEluZGljYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhMzQ5NzNiLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9GaW5kSW5k
aWNhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBGaW5kSW5kaWNhdG9yX2gKLSNkZWZpbmUgRmluZEluZGljYXRvcl9oCi0KLSNpbmNsdWRl
ICJTaGFyZWFibGVCaXRtYXAuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBH
cmFwaGljc0NvbnRleHQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBGaW5kSW5k
aWNhdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8RmluZEluZGljYXRvcj4gewotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIHNlbGVjdGlvblJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzLCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6RmxvYXRSZWN0PiYgdGV4dFJlY3RzSW5TZWxlY3Rpb25SZWN0Q29vcmRpbmF0ZXMs
IGZsb2F0IGNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSYgY29udGVudEltYWdlSGFuZGxlKTsKLSAgICB+RmluZEluZGljYXRvcigpOwotCi0gICAg
V2ViQ29yZTo6RmxvYXRSZWN0IHNlbGVjdGlvblJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKCkgY29u
c3QgeyByZXR1cm4gbV9zZWxlY3Rpb25SZWN0SW5XaW5kb3dDb29yZGluYXRlczsgfQotICAgIFdl
YkNvcmU6OkZsb2F0UmVjdCBmcmFtZVJlY3QoKSBjb25zdDsKLQotICAgIFNoYXJlYWJsZUJpdG1h
cCogY29udGVudEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50SW1hZ2UuZ2V0KCk7IH0K
LQotICAgIHZvaWQgZHJhdyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBkaXJ0eVJlY3QpOwotCi1wcml2YXRlOgotICAgIEZpbmRJbmRpY2F0b3IoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzZWxlY3Rpb25SZWN0LCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6RmxvYXRSZWN0PiYgdGV4dFJlY3RzLCBmbG9hdCBjb250ZW50SW1hZ2VTY2FsZUZhY3Rvciwg
UGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnRlbnRJbWFnZSk7Ci0KLSAgICBXZWJDb3Jl
OjpGbG9hdFJlY3QgbV9zZWxlY3Rpb25SZWN0SW5XaW5kb3dDb29yZGluYXRlczsKLSAgICBWZWN0
b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiBtX3RleHRSZWN0c0luU2VsZWN0aW9uUmVjdENvb3JkaW5h
dGVzOwotICAgIGZsb2F0IG1fY29udGVudEltYWdlU2NhbGVGYWN0b3I7Ci0gICAgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gbV9jb250ZW50SW1hZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIEZpbmRJbmRpY2F0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKaW5kZXggODMxMzVmNi4uYTAzYTM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCkBAIC01NCw3ICs1NCw3IEBAIHN0cnVjdCBIaWdobGlnaHQ7CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKLWNsYXNzIEZpbmRJbmRpY2F0
b3I7CitjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsK
IGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwogY2xhc3MgVmlld1NuYXBzaG90OwpA
QCAtMjE0LDcgKzIxNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29s
b3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CiAjZW5k
aWYKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZElu
ZGljYXRvcj4sIGJvb2wgZmFkZU91dCwgYm9vbCBhbmltYXRlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldFRleHRJbmRpY2F0b3IoUGFzc1JlZlB0cjxUZXh0SW5kaWNhdG9yPiwgYm9vbCBmYWRl
T3V0LCBib29sIGFuaW1hdGUpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBlbnRlckFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9UZXh0SW5kaWNhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5mZTU4ZDIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1RleHRJbmRpY2F0b3IuY3BwCkBAIC0wLDAgKzEsMjc3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleHRJbmRpY2F0b3IuaCIKKworI2lu
Y2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR2VvbWV0cnlVdGls
aXRpZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYWRpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc0NvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1BhdGguaD4KKworI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTAwMAorI2RlZmluZSBFTkFCTEVfTEVHQUNZX1RFWFRf
SU5ESUNBVE9SX1NUWUxFIDEKKyNlbHNlCisjZGVmaW5lIEVOQUJMRV9MRUdBQ1lfVEVYVF9JTkRJ
Q0FUT1JfU1RZTEUgMAorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisjaWYg
RU5BQkxFKExFR0FDWV9URVhUX0lORElDQVRPUl9TVFlMRSkKK3N0YXRpYyBjb25zdCBmbG9hdCBj
b3JuZXJSYWRpdXMgPSAzLjA7CisKK3N0YXRpYyBjb25zdCBmbG9hdCBzaGFkb3dPZmZzZXRYID0g
MC4wOworc3RhdGljIGNvbnN0IGZsb2F0IHNoYWRvd09mZnNldFkgPSAxLjA7CitzdGF0aWMgY29u
c3QgZmxvYXQgc2hhZG93Qmx1clJhZGl1cyA9IDMuMDsKKworc3RhdGljIGNvbnN0IGludCBzaGFk
b3dSZWQgPSAwOworc3RhdGljIGNvbnN0IGludCBzaGFkb3dHcmVlbiA9IDA7CitzdGF0aWMgY29u
c3QgaW50IHNoYWRvd0JsdWUgPSAwOworc3RhdGljIGNvbnN0IGludCBzaGFkb3dBbHBoYSA9IDIw
NDsKKworc3RhdGljIGNvbnN0IGZsb2F0IGxpZ2h0Qm9yZGVyVGhpY2tuZXNzID0gMS4wOworc3Rh
dGljIGNvbnN0IGZsb2F0IGhvcml6b250YWxQYWRkaW5nSW5zaWRlTGlnaHRCb3JkZXIgPSAzLjA7
CitzdGF0aWMgY29uc3QgZmxvYXQgdmVydGljYWxQYWRkaW5nSW5zaWRlTGlnaHRCb3JkZXIgPSAx
LjA7CisKK3N0YXRpYyBjb25zdCBmbG9hdCBob3Jpem9udGFsQm9yZGVySW5zaWRlU2hhZG93ID0g
bGlnaHRCb3JkZXJUaGlja25lc3MgKyBob3Jpem9udGFsUGFkZGluZ0luc2lkZUxpZ2h0Qm9yZGVy
Oworc3RhdGljIGNvbnN0IGZsb2F0IHZlcnRpY2FsQm9yZGVySW5zaWRlU2hhZG93ID0gbGlnaHRC
b3JkZXJUaGlja25lc3MgKyB2ZXJ0aWNhbFBhZGRpbmdJbnNpZGVMaWdodEJvcmRlcjsKKworc3Rh
dGljIGNvbnN0IGZsb2F0IGxlZnRCb3JkZXJUaGlja25lc3MgPSBob3Jpem9udGFsQm9yZGVySW5z
aWRlU2hhZG93ICsgc2hhZG93T2Zmc2V0WCArIHNoYWRvd0JsdXJSYWRpdXMgLyAyLjA7CitzdGF0
aWMgY29uc3QgZmxvYXQgdG9wQm9yZGVyVGhpY2tuZXNzID0gdmVydGljYWxCb3JkZXJJbnNpZGVT
aGFkb3cgLSBzaGFkb3dPZmZzZXRZICsgc2hhZG93Qmx1clJhZGl1cyAvIDIuMDsKK3N0YXRpYyBj
b25zdCBmbG9hdCByaWdodEJvcmRlclRoaWNrbmVzcyA9IGhvcml6b250YWxCb3JkZXJJbnNpZGVT
aGFkb3cgLSBzaGFkb3dPZmZzZXRYICsgc2hhZG93Qmx1clJhZGl1cyAvIDIuMDsKK3N0YXRpYyBj
b25zdCBmbG9hdCBib3R0b21Cb3JkZXJUaGlja25lc3MgPSB2ZXJ0aWNhbEJvcmRlckluc2lkZVNo
YWRvdyArIHNoYWRvd09mZnNldFkgKyBzaGFkb3dCbHVyUmFkaXVzIC8gMi4wOworCitzdGF0aWMg
Y29uc3QgZmxvYXQgaG9yaXpvbnRhbE91dHNldFRvQ2VudGVyT2ZMaWdodEJvcmRlciA9IGhvcml6
b250YWxCb3JkZXJJbnNpZGVTaGFkb3cgLSBsaWdodEJvcmRlclRoaWNrbmVzcyAvIDIuMDsKK3N0
YXRpYyBjb25zdCBmbG9hdCB2ZXJ0aWNhbE91dHNldFRvQ2VudGVyT2ZMaWdodEJvcmRlciA9IHZl
cnRpY2FsQm9yZGVySW5zaWRlU2hhZG93IC0gbGlnaHRCb3JkZXJUaGlja25lc3MgLyAyLjA7CisK
K3N0YXRpYyBjb25zdCBpbnQgbGlnaHRCb3JkZXJSZWQgPSAyNDU7CitzdGF0aWMgY29uc3QgaW50
IGxpZ2h0Qm9yZGVyR3JlZW4gPSAyMzA7CitzdGF0aWMgY29uc3QgaW50IGxpZ2h0Qm9yZGVyQmx1
ZSA9IDA7CitzdGF0aWMgY29uc3QgaW50IGxpZ2h0Qm9yZGVyQWxwaGEgPSAyNTU7CisKK3N0YXRp
YyBjb25zdCBpbnQgZ3JhZGllbnREYXJrUmVkID0gMjM3Oworc3RhdGljIGNvbnN0IGludCBncmFk
aWVudERhcmtHcmVlbiA9IDIwNDsKK3N0YXRpYyBjb25zdCBpbnQgZ3JhZGllbnREYXJrQmx1ZSA9
IDA7CitzdGF0aWMgY29uc3QgaW50IGdyYWRpZW50RGFya0FscGhhID0gMjU1OworCitzdGF0aWMg
Y29uc3QgaW50IGdyYWRpZW50TGlnaHRSZWQgPSAyNDI7CitzdGF0aWMgY29uc3QgaW50IGdyYWRp
ZW50TGlnaHRHcmVlbiA9IDIzOTsKK3N0YXRpYyBjb25zdCBpbnQgZ3JhZGllbnRMaWdodEJsdWUg
PSAwOworc3RhdGljIGNvbnN0IGludCBncmFkaWVudExpZ2h0QWxwaGEgPSAyNTU7CisjZWxzZQor
Y29uc3QgZmxvYXQgZmxhdFN0eWxlSG9yaXpvbnRhbEJvcmRlciA9IDI7Citjb25zdCBmbG9hdCBm
bGF0U3R5bGVWZXJ0aWNhbEJvcmRlciA9IDE7Citjb25zdCBmbG9hdCBmbGF0U2hhZG93T2Zmc2V0
WCA9IDA7Citjb25zdCBmbG9hdCBmbGF0U2hhZG93T2Zmc2V0WSA9IDU7Citjb25zdCBmbG9hdCBm
bGF0U2hhZG93Qmx1clJhZGl1cyA9IDI1OworY29uc3QgZmxvYXQgZmxhdFJpbVNoYWRvd0JsdXJS
YWRpdXMgPSAyOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPFRl
eHRJbmRpY2F0b3I+IFRleHRJbmRpY2F0b3I6OmNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIHNlbGVj
dGlvblJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzLCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgdGV4
dFJlY3RzSW5TZWxlY3Rpb25SZWN0Q29vcmRpbmF0ZXMsIGZsb2F0IGNvbnRlbnRJbWFnZVNjYWxl
RmFjdG9yLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgY29udGVudEltYWdlSGFuZGxl
KQoreworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnRlbnRJbWFnZSA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKGNvbnRlbnRJbWFnZUhhbmRsZSk7CisgICAgaWYgKCFjb250ZW50SW1h
Z2UpCisgICAgICAgIHJldHVybiAwOworICAgIEFTU0VSVChjb250ZW50SW1hZ2VTY2FsZUZhY3Rv
ciAhPSAxIHx8IGNvbnRlbnRJbWFnZS0+c2l6ZSgpID09IGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0
aW9uUmVjdEluV2luZG93Q29vcmRpbmF0ZXMpLnNpemUoKSk7CisKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFRleHRJbmRpY2F0b3Ioc2VsZWN0aW9uUmVjdEluV2luZG93Q29vcmRpbmF0ZXMsIHRl
eHRSZWN0c0luU2VsZWN0aW9uUmVjdENvb3JkaW5hdGVzLCBjb250ZW50SW1hZ2VTY2FsZUZhY3Rv
ciwgY29udGVudEltYWdlLnJlbGVhc2UoKSkpOworfQorCitzdGF0aWMgRmxvYXRSZWN0IGluZmxh
dGVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgaW5mbGF0ZVgsIGZsb2F0IGluZmxh
dGVZKQoreworICAgIEZsb2F0UmVjdCBpbmZsYXRlZFJlY3QgPSByZWN0OworICAgIGluZmxhdGVk
UmVjdC5pbmZsYXRlWChpbmZsYXRlWCk7CisgICAgaW5mbGF0ZWRSZWN0LmluZmxhdGVZKGluZmxh
dGVZKTsKKyAgICByZXR1cm4gaW5mbGF0ZWRSZWN0OworfQorCitzdGF0aWMgRmxvYXRSZWN0IG91
dHNldEluZGljYXRvclJlY3RJbmNsdWRpbmdTaGFkb3coY29uc3QgRmxvYXRSZWN0IHJlY3QpCit7
CisjaWYgRU5BQkxFKExFR0FDWV9URVhUX0lORElDQVRPUl9TVFlMRSkKKyAgICBGbG9hdFJlY3Qg
b3V0c2V0UmVjdCA9IHJlY3Q7CisgICAgb3V0c2V0UmVjdC5tb3ZlKC1sZWZ0Qm9yZGVyVGhpY2tu
ZXNzLCAtdG9wQm9yZGVyVGhpY2tuZXNzKTsKKyAgICBvdXRzZXRSZWN0LmV4cGFuZChsZWZ0Qm9y
ZGVyVGhpY2tuZXNzICsgcmlnaHRCb3JkZXJUaGlja25lc3MsIHRvcEJvcmRlclRoaWNrbmVzcyAr
IGJvdHRvbUJvcmRlclRoaWNrbmVzcyk7CisgICAgcmV0dXJuIG91dHNldFJlY3Q7CisjZWxzZQor
ICAgIHJldHVybiBpbmZsYXRlUmVjdChyZWN0LCBmbGF0U2hhZG93Qmx1clJhZGl1cyArIGZsYXRT
dHlsZUhvcml6b250YWxCb3JkZXIsIGZsYXRTaGFkb3dCbHVyUmFkaXVzICsgZmxhdFN0eWxlVmVy
dGljYWxCb3JkZXIpOworI2VuZGlmCit9CisKK3N0YXRpYyBib29sIHRleHRJbmRpY2F0b3JzRm9y
VGV4dFJlY3RzT3ZlcmxhcChjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgdGV4dFJlY3RzKQorewor
ICAgIHNpemVfdCBjb3VudCA9IHRleHRSZWN0cy5zaXplKCk7CisgICAgaWYgKGNvdW50IDw9IDEp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFZlY3RvcjxGbG9hdFJlY3Q+IGluZGljYXRv
clJlY3RzOworICAgIGluZGljYXRvclJlY3RzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQp
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIEZs
b2F0UmVjdCBpbmRpY2F0b3JSZWN0ID0gb3V0c2V0SW5kaWNhdG9yUmVjdEluY2x1ZGluZ1NoYWRv
dyh0ZXh0UmVjdHNbaV0pOworCisgICAgICAgIGZvciAoc2l6ZV90IGogPSBpbmRpY2F0b3JSZWN0
cy5zaXplKCk7IGo7ICkgeworICAgICAgICAgICAgLS1qOworICAgICAgICAgICAgaWYgKGluZGlj
YXRvclJlY3QuaW50ZXJzZWN0cyhpbmRpY2F0b3JSZWN0c1tqXSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpbmRpY2F0b3JSZWN0cy51bmNoZWNr
ZWRBcHBlbmQoaW5kaWNhdG9yUmVjdCk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQor
CitUZXh0SW5kaWNhdG9yOjpUZXh0SW5kaWNhdG9yKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
c2VsZWN0aW9uUmVjdEluV2luZG93Q29vcmRpbmF0ZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpG
bG9hdFJlY3Q+JiB0ZXh0UmVjdHNJblNlbGVjdGlvblJlY3RDb29yZGluYXRlcywgZmxvYXQgY29u
dGVudEltYWdlU2NhbGVGYWN0b3IsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb250ZW50
SW1hZ2UpCisgICAgOiBtX3NlbGVjdGlvblJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKHNlbGVjdGlv
blJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKQorICAgICwgbV90ZXh0UmVjdHNJblNlbGVjdGlvblJl
Y3RDb29yZGluYXRlcyh0ZXh0UmVjdHNJblNlbGVjdGlvblJlY3RDb29yZGluYXRlcykKKyAgICAs
IG1fY29udGVudEltYWdlU2NhbGVGYWN0b3IoY29udGVudEltYWdlU2NhbGVGYWN0b3IpCisgICAg
LCBtX2NvbnRlbnRJbWFnZShjb250ZW50SW1hZ2UpCit7CisgICAgaWYgKHRleHRJbmRpY2F0b3Jz
Rm9yVGV4dFJlY3RzT3ZlcmxhcChtX3RleHRSZWN0c0luU2VsZWN0aW9uUmVjdENvb3JkaW5hdGVz
KSkgeworICAgICAgICBtX3RleHRSZWN0c0luU2VsZWN0aW9uUmVjdENvb3JkaW5hdGVzWzBdID0g
dW5pb25SZWN0KG1fdGV4dFJlY3RzSW5TZWxlY3Rpb25SZWN0Q29vcmRpbmF0ZXMpOworICAgICAg
ICBtX3RleHRSZWN0c0luU2VsZWN0aW9uUmVjdENvb3JkaW5hdGVzLnNocmluaygxKTsKKyAgICB9
Cit9CisKK1RleHRJbmRpY2F0b3I6On5UZXh0SW5kaWNhdG9yKCkKK3sKK30KKworRmxvYXRSZWN0
IFRleHRJbmRpY2F0b3I6OmZyYW1lUmVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG91dHNldElu
ZGljYXRvclJlY3RJbmNsdWRpbmdTaGFkb3cobV9zZWxlY3Rpb25SZWN0SW5XaW5kb3dDb29yZGlu
YXRlcyk7Cit9CisKKyNpZiBFTkFCTEUoTEVHQUNZX1RFWFRfSU5ESUNBVE9SX1NUWUxFKQorc3Rh
dGljIGlubGluZSBDb2xvciBsaWdodEJvcmRlckNvbG9yKCkKK3sKKyAgICByZXR1cm4gQ29sb3Io
bGlnaHRCb3JkZXJSZWQsIGxpZ2h0Qm9yZGVyR3JlZW4sIGxpZ2h0Qm9yZGVyQmx1ZSwgbGlnaHRC
b3JkZXJBbHBoYSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgQ29sb3Igc2hhZG93Q29sb3IoKQorewor
ICAgIHJldHVybiBDb2xvcihzaGFkb3dSZWQsIHNoYWRvd0dyZWVuLCBzaGFkb3dCbHVlLCBzaGFk
b3dBbHBoYSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgQ29sb3IgZ3JhZGllbnRMaWdodENvbG9yKCkK
K3sKKyAgICByZXR1cm4gQ29sb3IoZ3JhZGllbnRMaWdodFJlZCwgZ3JhZGllbnRMaWdodEdyZWVu
LCBncmFkaWVudExpZ2h0Qmx1ZSwgZ3JhZGllbnRMaWdodEFscGhhKTsKK30KKworc3RhdGljIGlu
bGluZSBDb2xvciBncmFkaWVudERhcmtDb2xvcigpCit7CisgICAgcmV0dXJuIENvbG9yKGdyYWRp
ZW50RGFya1JlZCwgZ3JhZGllbnREYXJrR3JlZW4sIGdyYWRpZW50RGFya0JsdWUsIGdyYWRpZW50
RGFya0FscGhhKTsKK30KKworc3RhdGljIFBhdGggcGF0aFdpdGhSb3VuZGVkUmVjdChjb25zdCBG
bG9hdFJlY3QmIHBhdGhSZWN0LCBmbG9hdCByYWRpdXMpCit7CisgICAgUGF0aCBwYXRoOworICAg
IHBhdGguYWRkUm91bmRlZFJlY3QocGF0aFJlY3QsIEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cykp
OworCisgICAgcmV0dXJuIHBhdGg7Cit9CisjZWxzZQorc3RhdGljIGlubGluZSBDb2xvciBmbGF0
SGlnaGxpZ2h0Q29sb3IoKQoreworICAgIHJldHVybiBDb2xvcigyNTUsIDI1NSwgMCwgMjU1KTsK
K30KKworc3RhdGljIGlubGluZSBDb2xvciBmbGF0UmltU2hhZG93Q29sb3IoKQoreworICAgIHJl
dHVybiBDb2xvcigwLCAwLCAwLCAzOCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgQ29sb3IgZmxhdERy
b3BTaGFkb3dDb2xvcigpCit7CisgICAgcmV0dXJuIENvbG9yKDAsIDAsIDAsIDUxKTsKK30KKyNl
bmRpZgorICAgIAordm9pZCBUZXh0SW5kaWNhdG9yOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKmRpcnR5UmVjdCovKQoreworI2lmIEVOQUJM
RShMRUdBQ1lfVEVYVF9JTkRJQ0FUT1JfU1RZTEUpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX3RleHRSZWN0c0luU2VsZWN0aW9uUmVjdENvb3JkaW5hdGVzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIEZsb2F0UmVjdCB0ZXh0UmVjdCA9IG1fdGV4dFJlY3RzSW5TZWxlY3Rpb25SZWN0Q29v
cmRpbmF0ZXNbaV07CisgICAgICAgIHRleHRSZWN0Lm1vdmUobGVmdEJvcmRlclRoaWNrbmVzcywg
dG9wQm9yZGVyVGhpY2tuZXNzKTsKKworICAgICAgICBGbG9hdFJlY3Qgb3V0ZXJQYXRoUmVjdCA9
IGluZmxhdGVSZWN0KHRleHRSZWN0LCBob3Jpem9udGFsT3V0c2V0VG9DZW50ZXJPZkxpZ2h0Qm9y
ZGVyLCB2ZXJ0aWNhbE91dHNldFRvQ2VudGVyT2ZMaWdodEJvcmRlcik7CisgICAgICAgIEZsb2F0
UmVjdCBpbm5lclBhdGhSZWN0ID0gaW5mbGF0ZVJlY3QodGV4dFJlY3QsIGhvcml6b250YWxQYWRk
aW5nSW5zaWRlTGlnaHRCb3JkZXIsIHZlcnRpY2FsUGFkZGluZ0luc2lkZUxpZ2h0Qm9yZGVyKTsK
KworICAgICAgICB7CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRT
aGFkb3coRmxvYXRTaXplKHNoYWRvd09mZnNldFgsIHNoYWRvd09mZnNldFkpLCBzaGFkb3dCbHVy
UmFkaXVzLCBzaGFkb3dDb2xvcigpLCBDb2xvclNwYWNlU1JHQik7CisgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGxpZ2h0Qm9yZGVyQ29sb3IoKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFBhdGgocGF0aFdpdGhS
b3VuZGVkUmVjdChvdXRlclBhdGhSZWN0LCBjb3JuZXJSYWRpdXMpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihncmFwaGljc0NvbnRleHQpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXAocGF0
aFdpdGhSb3VuZGVkUmVjdChpbm5lclBhdGhSZWN0LCBjb3JuZXJSYWRpdXMpKTsKKyAgICAgICAg
ICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9p
bnQoaW5uZXJQYXRoUmVjdC54KCksIGlubmVyUGF0aFJlY3QueSgpKSwgRmxvYXRQb2ludChpbm5l
clBhdGhSZWN0LngoKSwgaW5uZXJQYXRoUmVjdC5tYXhZKCkpKTsKKyAgICAgICAgICAgIGdyYWRp
ZW50LT5hZGRDb2xvclN0b3AoMCwgZ3JhZGllbnRMaWdodENvbG9yKCkpOworICAgICAgICAgICAg
Z3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLCBncmFkaWVudERhcmtDb2xvcigpKTsKKyAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3Qob3V0ZXJQYXRoUmVj
dCk7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKKyAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC50cmFuc2xhdGUoRmxvYXRTaXplKHJvdW5kZihsZWZ0Qm9yZGVyVGhpY2tuZXNz
KSwgcm91bmRmKHRvcEJvcmRlclRoaWNrbmVzcykpKTsKKworICAgICAgICAgICAgSW50UmVjdCBj
b250ZW50SW1hZ2VSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtX3RleHRSZWN0c0luU2VsZWN0aW9u
UmVjdENvb3JkaW5hdGVzW2ldKTsKKyAgICAgICAgICAgIG1fY29udGVudEltYWdlLT5wYWludChn
cmFwaGljc0NvbnRleHQsIG1fY29udGVudEltYWdlU2NhbGVGYWN0b3IsIGNvbnRlbnRJbWFnZVJl
Y3QubG9jYXRpb24oKSwgY29udGVudEltYWdlUmVjdCk7CisgICAgICAgIH0KKyAgICB9CisjZWxz
ZQorICAgIGZvciAoYXV0byYgdGV4dFJlY3QgOiBtX3RleHRSZWN0c0luU2VsZWN0aW9uUmVjdENv
b3JkaW5hdGVzKSB7CisgICAgICAgIEZsb2F0UmVjdCBibHVyUmVjdCA9IHRleHRSZWN0OworICAg
ICAgICBibHVyUmVjdC5tb3ZlKGZsYXRTaGFkb3dCbHVyUmFkaXVzICsgZmxhdFN0eWxlSG9yaXpv
bnRhbEJvcmRlciwgZmxhdFNoYWRvd0JsdXJSYWRpdXMgKyBmbGF0U3R5bGVWZXJ0aWNhbEJvcmRl
cik7CisgICAgICAgIEZsb2F0UmVjdCBvdXRlclBhdGhSZWN0ID0gaW5mbGF0ZVJlY3QoYmx1clJl
Y3QsIGZsYXRTdHlsZUhvcml6b250YWxCb3JkZXIsIGZsYXRTdHlsZVZlcnRpY2FsQm9yZGVyKTsK
KworICAgICAgICB7CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRT
aGFkb3coRmxvYXRTaXplKCksIGZsYXRSaW1TaGFkb3dCbHVyUmFkaXVzLCBmbGF0UmltU2hhZG93
Q29sb3IoKSwgQ29sb3JTcGFjZVNSR0IpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNl
dEZpbGxDb2xvcihmbGF0SGlnaGxpZ2h0Q29sb3IoKSwgQ29sb3JTcGFjZVNSR0IpOworICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KG91dGVyUGF0aFJlY3QpOworICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNldFNoYWRvdyhGbG9hdFNpemUoZmxhdFNoYWRvd09mZnNldFgs
IGZsYXRTaGFkb3dPZmZzZXRZKSwgZmxhdFNoYWRvd0JsdXJSYWRpdXMsIGZsYXREcm9wU2hhZG93
Q29sb3IoKSwgQ29sb3JTcGFjZVNSR0IpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZp
bGxSZWN0KG91dGVyUGF0aFJlY3QpOworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7
CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKEZsb2F0U2l6ZShmbGF0U2hh
ZG93Qmx1clJhZGl1cyArIGZsYXRTdHlsZUhvcml6b250YWxCb3JkZXIsIGZsYXRTaGFkb3dCbHVy
UmFkaXVzICsgZmxhdFN0eWxlVmVydGljYWxCb3JkZXIpKTsKKworICAgICAgICAgICAgSW50UmVj
dCBjb250ZW50SW1hZ2VSZWN0ID0gZW5jbG9zaW5nSW50UmVjdCh0ZXh0UmVjdCk7CisgICAgICAg
ICAgICBtX2NvbnRlbnRJbWFnZS0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0LCBtX2NvbnRlbnRJbWFn
ZVNjYWxlRmFjdG9yLCBjb250ZW50SW1hZ2VSZWN0LmxvY2F0aW9uKCksIGNvbnRlbnRJbWFnZVJl
Y3QpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1RleHRJbmRpY2F0b3IuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0SW5kaWNhdG9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ3NmU3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9UZXh0SW5kaWNhdG9yLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgVGV4dEluZGljYXRvcl9oCisjZGVmaW5lIFRleHRJbmRpY2F0b3JfaAor
CisjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJl
Y3QuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBHcmFwaGljc0NvbnRleHQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBU
ZXh0SW5kaWNhdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dEluZGljYXRvcj4geworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRJbmRpY2F0b3I+IGNyZWF0ZShjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIHNlbGVjdGlvblJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzLCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYgdGV4dFJlY3RzSW5TZWxlY3Rpb25SZWN0Q29vcmRp
bmF0ZXMsIGZsb2F0IGNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yLCBjb25zdCBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSYgY29udGVudEltYWdlSGFuZGxlKTsKKyAgICB+VGV4dEluZGljYXRvcigpOwor
CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHNlbGVjdGlvblJlY3RJbldpbmRvd0Nvb3JkaW5hdGVz
KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25SZWN0SW5XaW5kb3dDb29yZGluYXRlczsgfQor
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBmcmFtZVJlY3QoKSBjb25zdDsKKworICAgIFNoYXJlYWJs
ZUJpdG1hcCogY29udGVudEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50SW1hZ2UuZ2V0
KCk7IH0KKworICAgIHZvaWQgZHJhdyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpOworCitwcml2YXRlOgorICAgIFRleHRJbmRpY2F0
b3IoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzZWxlY3Rpb25SZWN0LCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6RmxvYXRSZWN0PiYgdGV4dFJlY3RzLCBmbG9hdCBjb250ZW50SW1hZ2VTY2FsZUZh
Y3RvciwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnRlbnRJbWFnZSk7CisKKyAgICBX
ZWJDb3JlOjpGbG9hdFJlY3QgbV9zZWxlY3Rpb25SZWN0SW5XaW5kb3dDb29yZGluYXRlczsKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiBtX3RleHRSZWN0c0luU2VsZWN0aW9uUmVjdENv
b3JkaW5hdGVzOworICAgIGZsb2F0IG1fY29udGVudEltYWdlU2NhbGVGYWN0b3I7CisgICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9jb250ZW50SW1hZ2U7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFRleHRJbmRpY2F0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiY2ZlMzY0Li5hMDE1ZDRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2lu
Y2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXJNZXNzYWdlcy5oIgotI2luY2x1ZGUg
IkZpbmRJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKQEAg
LTU1LDYgKzU0LDcgQEAKICNpbmNsdWRlICJQcmludEluZm8uaCIKICNpbmNsdWRlICJUZXh0Q2hl
Y2tlci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKKyNpbmNsdWRlICJUZXh0SW5k
aWNhdG9yLmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkJh
Y2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKQEAg
LTM2MTksMTAgKzM2MTksMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEdldEltYWdlRm9yRmlu
ZE1hdGNoKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBjb250ZW4KICAgICBtX2ZpbmRN
YXRjaGVzQ2xpZW50LmRpZEdldEltYWdlRm9yTWF0Y2hSZXN1bHQodGhpcywgV2ViSW1hZ2U6OmNy
ZWF0ZShTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb250ZW50SW1hZ2VIYW5kbGUpKS5nZXQoKSwg
bWF0Y2hJbmRleCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5kSW5kaWNhdG9yKGNv
bnN0IEZsb2F0UmVjdCYgc2VsZWN0aW9uUmVjdEluV2luZG93Q29vcmRpbmF0ZXMsIGNvbnN0IFZl
Y3RvcjxGbG9hdFJlY3Q+JiB0ZXh0UmVjdHNJblNlbGVjdGlvblJlY3RDb29yZGluYXRlcywgZmxv
YXQgY29udGVudEltYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
JiBjb250ZW50SW1hZ2VIYW5kbGUsIGJvb2wgZmFkZU91dCwgYm9vbCBhbmltYXRlKQordm9pZCBX
ZWJQYWdlUHJveHk6OnNldFRleHRJbmRpY2F0b3IoY29uc3QgRmxvYXRSZWN0JiBzZWxlY3Rpb25S
ZWN0SW5XaW5kb3dDb29yZGluYXRlcywgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHRleHRSZWN0
c0luU2VsZWN0aW9uUmVjdENvb3JkaW5hdGVzLCBmbG9hdCBjb250ZW50SW1hZ2VTY2FsZUZhY3Rv
ciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGNvbnRlbnRJbWFnZUhhbmRsZSwgYm9v
bCBmYWRlT3V0LCBib29sIGFuaW1hdGUpCiB7Ci0gICAgUmVmUHRyPEZpbmRJbmRpY2F0b3I+IGZp
bmRJbmRpY2F0b3IgPSBGaW5kSW5kaWNhdG9yOjpjcmVhdGUoc2VsZWN0aW9uUmVjdEluV2luZG93
Q29vcmRpbmF0ZXMsIHRleHRSZWN0c0luU2VsZWN0aW9uUmVjdENvb3JkaW5hdGVzLCBjb250ZW50
SW1hZ2VTY2FsZUZhY3RvciwgY29udGVudEltYWdlSGFuZGxlKTsKLSAgICBtX3BhZ2VDbGllbnQu
c2V0RmluZEluZGljYXRvcihmaW5kSW5kaWNhdG9yLnJlbGVhc2UoKSwgZmFkZU91dCwgYW5pbWF0
ZSk7CisgICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNh
dG9yOjpjcmVhdGUoc2VsZWN0aW9uUmVjdEluV2luZG93Q29vcmRpbmF0ZXMsIHRleHRSZWN0c0lu
U2VsZWN0aW9uUmVjdENvb3JkaW5hdGVzLCBjb250ZW50SW1hZ2VTY2FsZUZhY3RvciwgY29udGVu
dEltYWdlSGFuZGxlKTsKKyAgICBtX3BhZ2VDbGllbnQuc2V0VGV4dEluZGljYXRvcih0ZXh0SW5k
aWNhdG9yLnJlbGVhc2UoKSwgZmFkZU91dCwgYW5pbWF0ZSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRGaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50MzJfdCBtYXRjaENv
dW50LCBpbnQzMl90IG1hdGNoSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggYmZlN2IzMS4uNzA4ZGU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtNjYxLDcgKzY2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGhpZGVG
aW5kVUkoKTsKICAgICB2b2lkIGNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBGaW5k
T3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CiAgICAgdm9pZCBkaWRDb3VudFN0cmlu
Z01hdGNoZXMoY29uc3QgU3RyaW5nJiwgdWludDMyX3QgbWF0Y2hDb3VudCk7Ci0gICAgdm9pZCBz
ZXRGaW5kSW5kaWNhdG9yKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc2VsZWN0aW9uUmVjdElu
V2luZG93Q29vcmRpbmF0ZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiB0ZXh0
UmVjdHNJblNlbGVjdGlvblJlY3RDb29yZGluYXRlcywgZmxvYXQgY29udGVudEltYWdlU2NhbGVG
YWN0b3IsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBjb250ZW50SW1hZ2VIYW5kbGUs
IGJvb2wgZmFkZU91dCwgYm9vbCBhbmltYXRlKTsKKyAgICB2b2lkIHNldFRleHRJbmRpY2F0b3Io
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzZWxlY3Rpb25SZWN0SW5XaW5kb3dDb29yZGluYXRl
cywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mIHRleHRSZWN0c0luU2VsZWN0aW9u
UmVjdENvb3JkaW5hdGVzLCBmbG9hdCBjb250ZW50SW1hZ2VTY2FsZUZhY3RvciwgY29uc3QgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUmIGNvbnRlbnRJbWFnZUhhbmRsZSwgYm9vbCBmYWRlT3V0LCBi
b29sIGFuaW1hdGUpOwogICAgIHZvaWQgZGlkRmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCB1aW50
MzJfdCBtYXRjaENvdW50LCBpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgZGlkRmFpbFRv
RmluZFN0cmluZyhjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRpZEZpbmRTdHJpbmdNYXRjaGVz
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4+JiBt
YXRjaFJlY3RzLCBpbnQzMl90IGZpcnN0SW5kZXhBZnRlclNlbGVjdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5MWJh
NjBiLi4zNzA5ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KQEAgLTIyOCw3ICsyMjgsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogCiAgICAgIyBGaW5kIG1lc3NhZ2VzCiAgICAgRGlkQ291bnRTdHJpbmdNYXRjaGVz
KFN0cmluZyBzdHJpbmcsIHVpbnQzMl90IG1hdGNoQ291bnQpCi0gICAgU2V0RmluZEluZGljYXRv
cihXZWJDb3JlOjpGbG9hdFJlY3Qgc2VsZWN0aW9uUmVjdCwgVmVjdG9yPFdlYkNvcmU6OkZsb2F0
UmVjdD4gdGV4dFJlY3RzLCBmbG9hdCBjb250ZW50SW1hZ2VTY2FsZUZhY3RvciwgV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSBjb250ZW50SW1hZ2VIYW5kbGUsIGJvb2wgZmFkZU91dCwg
Ym9vbCBhbmltYXRlKQorICAgIFNldFRleHRJbmRpY2F0b3IoV2ViQ29yZTo6RmxvYXRSZWN0IHNl
bGVjdGlvblJlY3QsIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywgZmxvYXQg
Y29udGVudEltYWdlU2NhbGVGYWN0b3IsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUg
Y29udGVudEltYWdlSGFuZGxlLCBib29sIGZhZGVPdXQsIGJvb2wgYW5pbWF0ZSkKICAgICBEaWRG
aW5kU3RyaW5nKFN0cmluZyBzdHJpbmcsIHVpbnQzMl90IG1hdGNoQ291bnQsIGludDMyX3QgbWF0
Y2hJbmRleCkKICAgICBEaWRGYWlsVG9GaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcpCiAgICAgRGlk
RmluZFN0cmluZ01hdGNoZXMoU3RyaW5nIHN0cmluZywgVmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJ
bnRSZWN0Pj4gbWF0Y2hlcywgaW50MzJfdCBmaXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXgg
MTM2YzZmOS4uMzIzZGZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaApAQCAtOTYsNyArOTYsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQ
cm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZp
bmRJbmRpY2F0b3I+LCBib29sIGZhZGVPdXQsIGJvb2wgYW5pbWF0ZSkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3IoUGFzc1JlZlB0cjxUZXh0SW5kaWNhdG9yPiwg
Ym9vbCBmYWRlT3V0LCBib29sIGFuaW1hdGUpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lk
IGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tCmluZGV4IDQyZDI5NjEuLjhjM2JiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzEsMTAgKzMx
LDEwIEBACiAjaW1wb3J0ICJBUElEYXRhLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCi0jaW1wb3J0ICJGaW5kSW5kaWNhdG9yLmgiCiAjaW1w
b3J0ICJJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIgogI2ltcG9ydCAiTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudC5oIgogI2ltcG9ydCAiTmF2aWdhdGlvblN0YXRlLmgiCisjaW1wb3J0
ICJUZXh0SW5kaWNhdG9yLmgiCiAjaW1wb3J0ICJWaWV3U25hcHNob3RTdG9yZS5oIgogI2ltcG9y
dCAiV0tDb250ZW50Vmlldy5oIgogI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgi
CkBAIC00NDAsNyArNDQwLDcgQEAgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdl
Q2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHIKICAgICByZXR1cm4g
MDsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRy
PEZpbmRJbmRpY2F0b3I+IGZpbmRJbmRpY2F0b3IsIGJvb2wgZmFkZU91dCwgYm9vbCBhbmltYXRl
KQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0VGV4dEluZGljYXRvcihQYXNzUmVmUHRyPFRleHRJ
bmRpY2F0b3I+IHRleHRJbmRpY2F0b3IsIGJvb2wgZmFkZU91dCwgYm9vbCBhbmltYXRlKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCmluZGV4
IGNiN2UwOWMuLmU1MWVmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5oCkBAIC0zOSw5ICszOSw5IEBAIHN0cnVjdCBIaWdobGlnaHQ7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKLWNsYXNzIEZpbmRJbmRpY2F0
b3I7CiBjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CiBjbGFzcyBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjsKK2NsYXNzIFRleHRJbmRpY2F0b3I7CiBjbGFzcyBXZWJD
b250ZXh0OwogY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvRmluZEluZGljYXRvcldpbmRvdy5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9GaW5kSW5kaWNhdG9yV2luZG93LmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NTJjODMuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9GaW5kSW5kaWNhdG9yV2luZG93LmgKKysrIC9kZXYvbnVs
bApAQCAtMSw3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGaW5kSW5kaWNhdG9yV2lu
ZG93X2gKLSNkZWZpbmUgRmluZEluZGljYXRvcldpbmRvd19oCi0KLSNpZiBQTEFURk9STShNQUMp
Ci0KLSNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgotI2ltcG9ydCA8d3RmL05vbmNv
cHlhYmxlLmg+Ci0jaW1wb3J0IDx3dGYvUmVmUHRyLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+Ci0jaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgotCi1AY2xhc3MgV0tGaW5kSW5kaWNhdG9yV2lu
ZG93QW5pbWF0aW9uOwotQGNsYXNzIFdLVmlldzsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNs
YXNzIEZpbmRJbmRpY2F0b3I7Ci0KLWNsYXNzIEZpbmRJbmRpY2F0b3JXaW5kb3cgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEZpbmRJbmRpY2F0b3JXaW5kb3cpOwotCi1wdWJsaWM6Ci0gICAg
ZXhwbGljaXQgRmluZEluZGljYXRvcldpbmRvdyhXS1ZpZXcgKik7Ci0gICAgfkZpbmRJbmRpY2F0
b3JXaW5kb3coKTsKLQotICAgIHZvaWQgc2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJ
bmRpY2F0b3I+LCBib29sIGZhZGVPdXQsIGJvb2wgYW5pbWF0ZSk7Ci0KLXByaXZhdGU6Ci0gICAg
dm9pZCBjbG9zZVdpbmRvdygpOwotCi0gICAgdm9pZCBzdGFydEZhZGVPdXRUaW1lckZpcmVkKCk7
Ci0KLSAgICB2b2lkIGZhZGVPdXRBbmltYXRpb25DYWxsYmFjayhkb3VibGUpOwotICAgIHZvaWQg
ZmFkZU91dEFuaW1hdGlvbkRpZEVuZCgpOwotCi0gICAgdm9pZCBib3VuY2VBbmltYXRpb25DYWxs
YmFjayhkb3VibGUpOwotICAgIHZvaWQgYm91bmNlQW5pbWF0aW9uRGlkRW5kKCk7Ci0KLSAgICBX
S1ZpZXcqIG1fd2tWaWV3OwotICAgIFJlZlB0cjxGaW5kSW5kaWNhdG9yPiBtX2ZpbmRJbmRpY2F0
b3I7Ci0gICAgUmV0YWluUHRyPE5TV2luZG93PiBtX2ZpbmRJbmRpY2F0b3JXaW5kb3c7Ci0KLSAg
ICBXS1dpbmRvd0JvdW5jZUFuaW1hdGlvbkNvbnRleHRSZWYgbV9ib3VuY2VBbmltYXRpb25Db250
ZXh0OwotICAgIFJldGFpblB0cjxXS0ZpbmRJbmRpY2F0b3JXaW5kb3dBbmltYXRpb24+IG1fYm91
bmNlQW5pbWF0aW9uOwotCi0gICAgUnVuTG9vcDo6VGltZXI8RmluZEluZGljYXRvcldpbmRvdz4g
bV9zdGFydEZhZGVPdXRUaW1lcjsKLSAgICBSZXRhaW5QdHI8V0tGaW5kSW5kaWNhdG9yV2luZG93
QW5pbWF0aW9uPiBtX2ZhZGVPdXRBbmltYXRpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIEZpbmRJbmRpY2F0b3JXaW5kb3dfaAotCi0jZW5kaWYgLy8gUExBVEZP
Uk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9GaW5kSW5k
aWNhdG9yV2luZG93Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9GaW5kSW5kaWNh
dG9yV2luZG93Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMThjNzUyLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvRmluZEluZGljYXRvcldpbmRv
dy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDI1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJGaW5kSW5kaWNhdG9yV2luZG93LmgiCi0KLSNpZiBQTEFU
Rk9STShNQUMpCi0KLSNpbXBvcnQgIkZpbmRJbmRpY2F0b3IuaCIKLSNpbXBvcnQgIldLVmlldy5o
IgotI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KLQotc3RhdGljIGNvbnN0IGRv
dWJsZSBib3VuY2VBbmltYXRpb25EdXJhdGlvbiA9IDAuMTI7Ci1zdGF0aWMgY29uc3QgZG91Ymxl
IHRpbWVCZWZvcmVGYWRlU3RhcnRzID0gYm91bmNlQW5pbWF0aW9uRHVyYXRpb24gKyAwLjI7Ci1z
dGF0aWMgY29uc3QgZG91YmxlIGZhZGVPdXRBbmltYXRpb25EdXJhdGlvbiA9IDAuMzsKLQotdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLUBpbnRlcmZhY2UgV0tGaW5kSW5kaWNhdG9yVmlldyA6
IE5TVmlldyB7Ci0gICAgUmVmUHRyPFdlYktpdDo6RmluZEluZGljYXRvcj4gX2ZpbmRJbmRpY2F0
b3I7Ci19Ci0KLS0gKGlkKV9pbml0V2l0aEZpbmRJbmRpY2F0b3I6KFBhc3NSZWZQdHI8V2ViS2l0
OjpGaW5kSW5kaWNhdG9yPilmaW5kSW5kaWNhdG9yOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24g
V0tGaW5kSW5kaWNhdG9yVmlldwotCi0tIChpZClfaW5pdFdpdGhGaW5kSW5kaWNhdG9yOihQYXNz
UmVmUHRyPFdlYktpdDo6RmluZEluZGljYXRvcj4pZmluZEluZGljYXRvcgotewotICAgIGlmICgo
c2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKSkKLSAgICAgICAgX2ZpbmRJ
bmRpY2F0b3IgPSBmaW5kSW5kaWNhdG9yOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZv
aWQpZHJhd1JlY3Q6KE5TUmVjdClyZWN0Ci17Ci0gICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNz
Q29udGV4dChzdGF0aWNfY2FzdDxDR0NvbnRleHRSZWY+KFtbTlNHcmFwaGljc0NvbnRleHQgY3Vy
cmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF0pKTsKLQotICAgIF9maW5kSW5kaWNhdG9yLT5kcmF3
KGdyYXBoaWNzQ29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChyZWN0KSk7Ci19Ci0KLS0gKEJPT0wp
aXNGbGlwcGVkCi17Ci0gICAgcmV0dXJuIFlFUzsKLX0KLQotQGVuZAotCi1AaW50ZXJmYWNlIFdL
RmluZEluZGljYXRvcldpbmRvd0FuaW1hdGlvbiA6IE5TQW5pbWF0aW9uPE5TQW5pbWF0aW9uRGVs
ZWdhdGU+IHsKLSAgICBXZWJLaXQ6OkZpbmRJbmRpY2F0b3JXaW5kb3cqIF9maW5kSW5kaWNhdG9y
V2luZG93OwotICAgIHZvaWQgKFdlYktpdDo6RmluZEluZGljYXRvcldpbmRvdzo6Kl9hbmltYXRp
b25Qcm9ncmVzc0NhbGxiYWNrKShkb3VibGUgcHJvZ3Jlc3MpOwotICAgIHZvaWQgKFdlYktpdDo6
RmluZEluZGljYXRvcldpbmRvdzo6Kl9hbmltYXRpb25EaWRFbmRDYWxsYmFjaykoKTsKLX0KLQot
LSAoaWQpX2luaXRXaXRoRmluZEluZGljYXRvcldpbmRvdzooV2ViS2l0OjpGaW5kSW5kaWNhdG9y
V2luZG93ICopZmluZEluZGljYXRvcldpbmRvdyAKLSAgICAgICAgICAgICAgICAgYW5pbWF0aW9u
RHVyYXRpb246KENGVGltZUludGVydmFsKWR1cmF0aW9uCi0gICAgICAgICBhbmltYXRpb25Qcm9n
cmVzc0NhbGxiYWNrOih2b2lkIChXZWJLaXQ6OkZpbmRJbmRpY2F0b3JXaW5kb3c6OiopKGRvdWJs
ZSBwcm9ncmVzcykpYW5pbWF0aW9uUHJvZ3Jlc3NDYWxsYmFjawotICAgICAgICAgICBhbmltYXRp
b25EaWRFbmRDYWxsYmFjazoodm9pZCAoV2ViS2l0OjpGaW5kSW5kaWNhdG9yV2luZG93OjoqKSgp
KWFuaW1hdGlvbkRpZEVuZENhbGxiYWNrOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tGaW5k
SW5kaWNhdG9yV2luZG93QW5pbWF0aW9uCi0KLS0gKGlkKV9pbml0V2l0aEZpbmRJbmRpY2F0b3JX
aW5kb3c6KFdlYktpdDo6RmluZEluZGljYXRvcldpbmRvdyAqKWZpbmRJbmRpY2F0b3JXaW5kb3cg
Ci0gICAgICAgICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uOihDRlRpbWVJbnRlcnZhbClhbmlt
YXRpb25EdXJhdGlvbgotICAgICAgICAgYW5pbWF0aW9uUHJvZ3Jlc3NDYWxsYmFjazoodm9pZCAo
V2ViS2l0OjpGaW5kSW5kaWNhdG9yV2luZG93OjoqKShkb3VibGUgcHJvZ3Jlc3MpKWFuaW1hdGlv
blByb2dyZXNzQ2FsbGJhY2sKLSAgICAgICAgICAgYW5pbWF0aW9uRGlkRW5kQ2FsbGJhY2s6KHZv
aWQgKFdlYktpdDo6RmluZEluZGljYXRvcldpbmRvdzo6KikoKSlhbmltYXRpb25EaWRFbmRDYWxs
YmFjawotewotICAgIGlmICgoc2VsZiA9IFtzdXBlciBpbml0V2l0aER1cmF0aW9uOmFuaW1hdGlv
bkR1cmF0aW9uIGFuaW1hdGlvbkN1cnZlOk5TQW5pbWF0aW9uRWFzZUluT3V0XSkpIHsKLSAgICAg
ICAgX2ZpbmRJbmRpY2F0b3JXaW5kb3cgPSBmaW5kSW5kaWNhdG9yV2luZG93OwotICAgICAgICBf
YW5pbWF0aW9uUHJvZ3Jlc3NDYWxsYmFjayA9IGFuaW1hdGlvblByb2dyZXNzQ2FsbGJhY2s7Ci0g
ICAgICAgIF9hbmltYXRpb25EaWRFbmRDYWxsYmFjayA9IGFuaW1hdGlvbkRpZEVuZENhbGxiYWNr
OwotICAgICAgICBbc2VsZiBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICAgICAgW3NlbGYgc2V0QW5p
bWF0aW9uQmxvY2tpbmdNb2RlOk5TQW5pbWF0aW9uTm9uYmxvY2tpbmddOwotICAgIH0KLSAgICBy
ZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClzZXRDdXJyZW50UHJvZ3Jlc3M6KE5TQW5pbWF0aW9u
UHJvZ3Jlc3MpcHJvZ3Jlc3MKLXsKLSAgICAoX2ZpbmRJbmRpY2F0b3JXaW5kb3ctPipfYW5pbWF0
aW9uUHJvZ3Jlc3NDYWxsYmFjaykocHJvZ3Jlc3MpOwotfQotCi0tICh2b2lkKWFuaW1hdGlvbkRp
ZEVuZDooTlNBbmltYXRpb24gKilhbmltYXRpb24KLXsKLSAgICBBU1NFUlQoYW5pbWF0aW9uID09
IHNlbGYpOwotCi0gICAgKF9maW5kSW5kaWNhdG9yV2luZG93LT4qX2FuaW1hdGlvbkRpZEVuZENh
bGxiYWNrKSgpOwotfQotCi1AZW5kCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1GaW5kSW5kaWNh
dG9yV2luZG93OjpGaW5kSW5kaWNhdG9yV2luZG93KFdLVmlldyAqd2tWaWV3KQotICAgIDogbV93
a1ZpZXcod2tWaWV3KQotICAgICwgbV9ib3VuY2VBbmltYXRpb25Db250ZXh0KDApCi0gICAgLCBt
X3N0YXJ0RmFkZU91dFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkZpbmRJbmRpY2F0b3JX
aW5kb3c6OnN0YXJ0RmFkZU91dFRpbWVyRmlyZWQpCi17Ci19Ci0KLUZpbmRJbmRpY2F0b3JXaW5k
b3c6On5GaW5kSW5kaWNhdG9yV2luZG93KCkKLXsKLSAgICBjbG9zZVdpbmRvdygpOwotfQotCi12
b2lkIEZpbmRJbmRpY2F0b3JXaW5kb3c6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5k
SW5kaWNhdG9yPiBmaW5kSW5kaWNhdG9yLCBib29sIGZhZGVPdXQsIGJvb2wgYW5pbWF0ZSkKLXsK
LSAgICBpZiAobV9maW5kSW5kaWNhdG9yID09IGZpbmRJbmRpY2F0b3IpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fZmluZEluZGljYXRvciA9IGZpbmRJbmRpY2F0b3I7Ci0KLSAgICAvLyBHZXQg
cmlkIG9mIHRoZSBvbGQgd2luZG93LgotICAgIGNsb3NlV2luZG93KCk7Ci0KLSAgICBpZiAoIW1f
ZmluZEluZGljYXRvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNSZWN0IGNvbnRlbnRSZWN0
ID0gbV9maW5kSW5kaWNhdG9yLT5mcmFtZVJlY3QoKTsKLSAgICBOU1JlY3Qgd2luZG93RnJhbWVS
ZWN0ID0gTlNJbnRlZ3JhbFJlY3QoW21fd2tWaWV3IGNvbnZlcnRSZWN0OmNvbnRlbnRSZWN0IHRv
VmlldzpuaWxdKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICB3aW5k
b3dGcmFtZVJlY3Qub3JpZ2luID0gW1ttX3drVmlldyB3aW5kb3ddIGNvbnZlcnRCYXNlVG9TY3Jl
ZW46d2luZG93RnJhbWVSZWN0Lm9yaWdpbl07Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9w
Ci0gICAgTlNSZWN0IHdpbmRvd0NvbnRlbnRSZWN0ID0gW05TV2luZG93IGNvbnRlbnRSZWN0Rm9y
RnJhbWVSZWN0OndpbmRvd0ZyYW1lUmVjdCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFz
a107Ci0gICAgCi0gICAgbV9maW5kSW5kaWNhdG9yV2luZG93ID0gYWRvcHROUyhbW05TV2luZG93
IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OndpbmRvd0NvbnRlbnRSZWN0IAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHls
ZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNraW5nOk5TQmFja2luZ1N0
b3JlQnVmZmVyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlZmVyOk5PXSk7Ci0KLSAgICBbbV9maW5kSW5kaWNhdG9y
V2luZG93IHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBjbGVhckNvbG9yXV07Ci0gICAgW21f
ZmluZEluZGljYXRvcldpbmRvdyBzZXRPcGFxdWU6Tk9dOwotICAgIFttX2ZpbmRJbmRpY2F0b3JX
aW5kb3cgc2V0SWdub3Jlc01vdXNlRXZlbnRzOllFU107Ci0KLSAgICBSZXRhaW5QdHI8V0tGaW5k
SW5kaWNhdG9yVmlldz4gZmluZEluZGljYXRvclZpZXcgPSBhZG9wdE5TKFtbV0tGaW5kSW5kaWNh
dG9yVmlldyBhbGxvY10gX2luaXRXaXRoRmluZEluZGljYXRvcjptX2ZpbmRJbmRpY2F0b3JdKTsK
LSAgICBbbV9maW5kSW5kaWNhdG9yV2luZG93IHNldENvbnRlbnRWaWV3OmZpbmRJbmRpY2F0b3JW
aWV3LmdldCgpXTsKLQotICAgIFtbbV93a1ZpZXcgd2luZG93XSBhZGRDaGlsZFdpbmRvdzptX2Zp
bmRJbmRpY2F0b3JXaW5kb3cuZ2V0KCkgb3JkZXJlZDpOU1dpbmRvd0Fib3ZlXTsKLSAgICBbbV9m
aW5kSW5kaWNhdG9yV2luZG93IHNldFJlbGVhc2VkV2hlbkNsb3NlZDpOT107Ci0KLSAgICBpZiAo
YW5pbWF0ZSkgewotICAgICAgICAvLyBTdGFydCB0aGUgYm91bmNlIGFuaW1hdGlvbi4KLSAgICAg
ICAgbV9ib3VuY2VBbmltYXRpb25Db250ZXh0ID0gV0tXaW5kb3dCb3VuY2VBbmltYXRpb25Db250
ZXh0Q3JlYXRlKG1fZmluZEluZGljYXRvcldpbmRvdy5nZXQoKSk7Ci0gICAgICAgIG1fYm91bmNl
QW5pbWF0aW9uID0gYWRvcHROUyhbW1dLRmluZEluZGljYXRvcldpbmRvd0FuaW1hdGlvbiBhbGxv
Y10gX2luaXRXaXRoRmluZEluZGljYXRvcldpbmRvdzp0aGlzCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmltYXRpb25EdXJhdGlvbjpib3VuY2VBbmltYXRpb25EdXJhdGlvbgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuaW1hdGlvblByb2dyZXNzQ2FsbGJhY2s6JkZpbmRJbmRpY2F0b3JXaW5k
b3c6OmJvdW5jZUFuaW1hdGlvbkNhbGxiYWNrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRp
b25EaWRFbmRDYWxsYmFjazomRmluZEluZGljYXRvcldpbmRvdzo6Ym91bmNlQW5pbWF0aW9uRGlk
RW5kXSk7Ci0gICAgICAgIFttX2JvdW5jZUFuaW1hdGlvbiBzdGFydEFuaW1hdGlvbl07Ci0gICAg
fQotCi0gICAgaWYgKGZhZGVPdXQpCi0gICAgICAgIG1fc3RhcnRGYWRlT3V0VGltZXIuc3RhcnRP
bmVTaG90KHRpbWVCZWZvcmVGYWRlU3RhcnRzKTsKLX0KLQotdm9pZCBGaW5kSW5kaWNhdG9yV2lu
ZG93OjpjbG9zZVdpbmRvdygpCi17Ci0gICAgaWYgKCFtX2ZpbmRJbmRpY2F0b3JXaW5kb3cpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fc3RhcnRGYWRlT3V0VGltZXIuc3RvcCgpOwotCi0gICAg
aWYgKG1fZmFkZU91dEFuaW1hdGlvbikgewotICAgICAgICBbbV9mYWRlT3V0QW5pbWF0aW9uIHN0
b3BBbmltYXRpb25dOwotICAgICAgICBtX2ZhZGVPdXRBbmltYXRpb24gPSBudWxscHRyOwotICAg
IH0KLQotICAgIGlmIChtX2JvdW5jZUFuaW1hdGlvbikgewotICAgICAgICBbbV9ib3VuY2VBbmlt
YXRpb24gc3RvcEFuaW1hdGlvbl07Ci0gICAgICAgIG1fYm91bmNlQW5pbWF0aW9uID0gbnVsbHB0
cjsKLSAgICB9Ci0KLSAgICBpZiAobV9ib3VuY2VBbmltYXRpb25Db250ZXh0KQotICAgICAgICBX
S1dpbmRvd0JvdW5jZUFuaW1hdGlvbkNvbnRleHREZXN0cm95KG1fYm91bmNlQW5pbWF0aW9uQ29u
dGV4dCk7Ci0gICAgCi0gICAgW1ttX2ZpbmRJbmRpY2F0b3JXaW5kb3cgcGFyZW50V2luZG93XSBy
ZW1vdmVDaGlsZFdpbmRvdzptX2ZpbmRJbmRpY2F0b3JXaW5kb3cuZ2V0KCldOwotICAgIFttX2Zp
bmRJbmRpY2F0b3JXaW5kb3cgY2xvc2VdOwotICAgIG1fZmluZEluZGljYXRvcldpbmRvdyA9IG51
bGxwdHI7Ci19Ci0KLXZvaWQgRmluZEluZGljYXRvcldpbmRvdzo6c3RhcnRGYWRlT3V0VGltZXJG
aXJlZCgpCi17Ci0gICAgQVNTRVJUKCFtX2ZhZGVPdXRBbmltYXRpb24pOwotICAgIAotICAgIG1f
ZmFkZU91dEFuaW1hdGlvbiA9IGFkb3B0TlMoW1tXS0ZpbmRJbmRpY2F0b3JXaW5kb3dBbmltYXRp
b24gYWxsb2NdIF9pbml0V2l0aEZpbmRJbmRpY2F0b3JXaW5kb3c6dGhpcwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmltYXRpb25EdXJhdGlvbjpmYWRlT3V0QW5pbWF0aW9uRHVyYXRpb24K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvblByb2dyZXNzQ2FsbGJhY2s6JkZpbmRJbmRpY2F0
b3JXaW5kb3c6OmZhZGVPdXRBbmltYXRpb25DYWxsYmFjawotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmltYXRpb25EaWRFbmRDYWxsYmFjazomRmluZEluZGljYXRvcldpbmRvdzo6ZmFkZU91dEFuaW1h
dGlvbkRpZEVuZF0pOwotICAgIFttX2ZhZGVPdXRBbmltYXRpb24gc3RhcnRBbmltYXRpb25dOwot
fQotICAgICAgICAgICAgICAgICAgICAgICAgCi12b2lkIEZpbmRJbmRpY2F0b3JXaW5kb3c6OmZh
ZGVPdXRBbmltYXRpb25DYWxsYmFjayhkb3VibGUgcHJvZ3Jlc3MpCi17Ci0gICAgQVNTRVJUKG1f
ZmFkZU91dEFuaW1hdGlvbik7Ci0KLSAgICBbbV9maW5kSW5kaWNhdG9yV2luZG93IHNldEFscGhh
VmFsdWU6MS4wIC0gcHJvZ3Jlc3NdOwotfQotCi12b2lkIEZpbmRJbmRpY2F0b3JXaW5kb3c6OmZh
ZGVPdXRBbmltYXRpb25EaWRFbmQoKQotewotICAgIEFTU0VSVChtX2ZhZGVPdXRBbmltYXRpb24p
OwotICAgIEFTU0VSVChtX2ZpbmRJbmRpY2F0b3JXaW5kb3cpOwotCi0gICAgY2xvc2VXaW5kb3co
KTsKLX0KLQotdm9pZCBGaW5kSW5kaWNhdG9yV2luZG93Ojpib3VuY2VBbmltYXRpb25DYWxsYmFj
ayhkb3VibGUgcHJvZ3Jlc3MpCi17Ci0gICAgQVNTRVJUKG1fYm91bmNlQW5pbWF0aW9uKTsKLSAg
ICBBU1NFUlQobV9ib3VuY2VBbmltYXRpb25Db250ZXh0KTsKLQotICAgIFdLV2luZG93Qm91bmNl
QW5pbWF0aW9uU2V0QW5pbWF0aW9uUHJvZ3Jlc3MobV9ib3VuY2VBbmltYXRpb25Db250ZXh0LCBw
cm9ncmVzcyk7Ci19Ci0KLXZvaWQgRmluZEluZGljYXRvcldpbmRvdzo6Ym91bmNlQW5pbWF0aW9u
RGlkRW5kKCkKLXsKLSAgICBBU1NFUlQobV9ib3VuY2VBbmltYXRpb24pOwotICAgIEFTU0VSVCht
X2JvdW5jZUFuaW1hdGlvbkNvbnRleHQpOwotICAgIEFTU0VSVChtX2ZpbmRJbmRpY2F0b3JXaW5k
b3cpOwotCi0gICAgV0tXaW5kb3dCb3VuY2VBbmltYXRpb25Db250ZXh0RGVzdHJveShtX2JvdW5j
ZUFuaW1hdGlvbkNvbnRleHQpOwotICAgIG1fYm91bmNlQW5pbWF0aW9uQ29udGV4dCA9IDA7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IGNiZGFh
OTMuLjE0NzU4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIEZpbmRJbmRpY2F0b3JXaW5kb3c7
CitjbGFzcyBUZXh0SW5kaWNhdG9yV2luZG93OwogCiBjbGFzcyBQYWdlQ2xpZW50SW1wbCBmaW5h
bCA6IHB1YmxpYyBQYWdlQ2xpZW50CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtMTIw
LDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbG9yUGlj
a2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xv
ciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAjZW5kaWYKIAotICAg
IHZvaWQgc2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+LCBib29sIGZh
ZGVPdXQsIGJvb2wgYW5pbWF0ZSk7CisgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKFBhc3NSZWZQ
dHI8VGV4dEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCwgYm9vbCBhbmltYXRlKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJl
ZUNvbnRleHQmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5t
bQppbmRleCBhYTk4NmViLi4zNzRmZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTMzLDExICszMywxMSBAQAogI2ltcG9ydCAiRGF0
YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgogI2ltcG9ydCAi
RG93bmxvYWRQcm94eS5oIgotI2ltcG9ydCAiRmluZEluZGljYXRvci5oIgogI2ltcG9ydCAiTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2ltcG9ydCAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgog
I2ltcG9ydCAiTmF2aWdhdGlvblN0YXRlLmgiCiAjaW1wb3J0ICJTdHJpbmdVdGlsaXRpZXMuaCIK
KyNpbXBvcnQgIlRleHRJbmRpY2F0b3IuaCIKICNpbXBvcnQgIlZpZXdTbmFwc2hvdFN0b3JlLmgi
CiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQgIldLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIuaCIKQEAgLTQ2Nyw5ICs0NjcsOSBAQCBQYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBQ
YWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiBwYWdlLAogfQog
I2VuZGlmCiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0
cjxGaW5kSW5kaWNhdG9yPiBmaW5kSW5kaWNhdG9yLCBib29sIGZhZGVPdXQsIGJvb2wgYW5pbWF0
ZSkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldFRleHRJbmRpY2F0b3IoUGFzc1JlZlB0cjxUZXh0
SW5kaWNhdG9yPiB0ZXh0SW5kaWNhdG9yLCBib29sIGZhZGVPdXQsIGJvb2wgYW5pbWF0ZSkKIHsK
LSAgICBbbV93a1ZpZXcgX3NldEZpbmRJbmRpY2F0b3I6ZmluZEluZGljYXRvciBmYWRlT3V0OmZh
ZGVPdXQgYW5pbWF0ZTphbmltYXRlXTsKKyAgICBbbV93a1ZpZXcgX3NldFRleHRJbmRpY2F0b3I6
dGV4dEluZGljYXRvciBmYWRlT3V0OmZhZGVPdXQgYW5pbWF0ZTphbmltYXRlXTsKIH0KIAogdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKQEAgLTY4NSw3ICs2ODUsNyBAQCB2b2lkIFBh
Z2VDbGllbnRJbXBsOjpiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IEludFJlY3QmIGluaXRpYWxG
cmFtZSwgY29uc3QgSW50Ugogdm9pZCBQYWdlQ2xpZW50SW1wbDo6bmF2aWdhdGlvbkdlc3R1cmVE
aWRCZWdpbigpCiB7CiAgICAgLy8gSGlkZSB0aGUgZmluZGUgaW5kaWNhdG9yIGlmIGl0J3Mgdmlz
aWJsZS4KLSAgICBzZXRGaW5kSW5kaWNhdG9yKG51bGxwdHIsIGZhbHNlLCBmYWxzZSk7CisgICAg
c2V0VGV4dEluZGljYXRvcihudWxscHRyLCBmYWxzZSwgZmFsc2UpOwogCiAjaWYgV0tfQVBJX0VO
QUJMRUQKICAgICBpZiAobV93ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi45ZWYxNjRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgVGV4dEluZGljYXRvcldpbmRvd19oCisjZGVmaW5lIFRleHRJbmRpY2F0b3JX
aW5kb3dfaAorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0ICJXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UuaCIKKyNpbXBvcnQgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2ltcG9ydCA8d3RmL1JlZlB0
ci5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4K
KworQGNsYXNzIFdLVGV4dEluZGljYXRvcldpbmRvd0FuaW1hdGlvbjsKK0BjbGFzcyBXS1ZpZXc7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBUZXh0SW5kaWNhdG9yOworCitjbGFzcyBU
ZXh0SW5kaWNhdG9yV2luZG93IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZXh0SW5kaWNh
dG9yV2luZG93KTsKKworcHVibGljOgorICAgIGV4cGxpY2l0IFRleHRJbmRpY2F0b3JXaW5kb3co
V0tWaWV3ICopOworICAgIH5UZXh0SW5kaWNhdG9yV2luZG93KCk7CisKKyAgICB2b2lkIHNldFRl
eHRJbmRpY2F0b3IoUGFzc1JlZlB0cjxUZXh0SW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0LCBib29s
IGFuaW1hdGUpOworCitwcml2YXRlOgorICAgIHZvaWQgY2xvc2VXaW5kb3coKTsKKworICAgIHZv
aWQgc3RhcnRGYWRlT3V0VGltZXJGaXJlZCgpOworCisgICAgdm9pZCBmYWRlT3V0QW5pbWF0aW9u
Q2FsbGJhY2soZG91YmxlKTsKKyAgICB2b2lkIGZhZGVPdXRBbmltYXRpb25EaWRFbmQoKTsKKwor
ICAgIHZvaWQgYm91bmNlQW5pbWF0aW9uQ2FsbGJhY2soZG91YmxlKTsKKyAgICB2b2lkIGJvdW5j
ZUFuaW1hdGlvbkRpZEVuZCgpOworCisgICAgV0tWaWV3KiBtX3drVmlldzsKKyAgICBSZWZQdHI8
VGV4dEluZGljYXRvcj4gbV90ZXh0SW5kaWNhdG9yOworICAgIFJldGFpblB0cjxOU1dpbmRvdz4g
bV90ZXh0SW5kaWNhdG9yV2luZG93OworCisgICAgV0tXaW5kb3dCb3VuY2VBbmltYXRpb25Db250
ZXh0UmVmIG1fYm91bmNlQW5pbWF0aW9uQ29udGV4dDsKKyAgICBSZXRhaW5QdHI8V0tUZXh0SW5k
aWNhdG9yV2luZG93QW5pbWF0aW9uPiBtX2JvdW5jZUFuaW1hdGlvbjsKKworICAgIFJ1bkxvb3A6
OlRpbWVyPFRleHRJbmRpY2F0b3JXaW5kb3c+IG1fc3RhcnRGYWRlT3V0VGltZXI7CisgICAgUmV0
YWluUHRyPFdLVGV4dEluZGljYXRvcldpbmRvd0FuaW1hdGlvbj4gbV9mYWRlT3V0QW5pbWF0aW9u
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBUZXh0SW5kaWNhdG9y
V2luZG93X2gKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi41ZDY1OGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCkBAIC0wLDAgKzEsMjM3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXh0SW5kaWNh
dG9yV2luZG93LmgiCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgIlRleHRJbmRpY2F0
b3IuaCIKKyNpbXBvcnQgIldLVmlldy5oIgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHQuaD4KKworc3RhdGljIGNvbnN0IGRvdWJsZSBib3VuY2VBbmltYXRpb25EdXJhdGlvbiA9IDAu
MTI7CitzdGF0aWMgY29uc3QgZG91YmxlIHRpbWVCZWZvcmVGYWRlU3RhcnRzID0gYm91bmNlQW5p
bWF0aW9uRHVyYXRpb24gKyAwLjI7CitzdGF0aWMgY29uc3QgZG91YmxlIGZhZGVPdXRBbmltYXRp
b25EdXJhdGlvbiA9IDAuMzsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0BpbnRlcmZh
Y2UgV0tUZXh0SW5kaWNhdG9yVmlldyA6IE5TVmlldyB7CisgICAgUmVmUHRyPFdlYktpdDo6VGV4
dEluZGljYXRvcj4gX3RleHRJbmRpY2F0b3I7Cit9CisKKy0gKGlkKV9pbml0V2l0aFRleHRJbmRp
Y2F0b3I6KFBhc3NSZWZQdHI8V2ViS2l0OjpUZXh0SW5kaWNhdG9yPil0ZXh0SW5kaWNhdG9yOwor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tUZXh0SW5kaWNhdG9yVmlldworCistIChpZClfaW5p
dFdpdGhUZXh0SW5kaWNhdG9yOihQYXNzUmVmUHRyPFdlYktpdDo6VGV4dEluZGljYXRvcj4pdGV4
dEluZGljYXRvcgoreworICAgIGlmICgoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOk5TWmVy
b1JlY3RdKSkKKyAgICAgICAgX3RleHRJbmRpY2F0b3IgPSB0ZXh0SW5kaWNhdG9yOworCisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZHJhd1JlY3Q6KE5TUmVjdClyZWN0Cit7CisgICAg
R3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dChzdGF0aWNfY2FzdDxDR0NvbnRleHRSZWY+
KFtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF0pKTsKKwor
ICAgIF90ZXh0SW5kaWNhdG9yLT5kcmF3KGdyYXBoaWNzQ29udGV4dCwgZW5jbG9zaW5nSW50UmVj
dChyZWN0KSk7Cit9CisKKy0gKEJPT0wpaXNGbGlwcGVkCit7CisgICAgcmV0dXJuIFlFUzsKK30K
KworQGVuZAorCitAaW50ZXJmYWNlIFdLVGV4dEluZGljYXRvcldpbmRvd0FuaW1hdGlvbiA6IE5T
QW5pbWF0aW9uPE5TQW5pbWF0aW9uRGVsZWdhdGU+IHsKKyAgICBXZWJLaXQ6OlRleHRJbmRpY2F0
b3JXaW5kb3cqIF90ZXh0SW5kaWNhdG9yV2luZG93OworICAgIHZvaWQgKFdlYktpdDo6VGV4dElu
ZGljYXRvcldpbmRvdzo6Kl9hbmltYXRpb25Qcm9ncmVzc0NhbGxiYWNrKShkb3VibGUgcHJvZ3Jl
c3MpOworICAgIHZvaWQgKFdlYktpdDo6VGV4dEluZGljYXRvcldpbmRvdzo6Kl9hbmltYXRpb25E
aWRFbmRDYWxsYmFjaykoKTsKK30KKworLSAoaWQpX2luaXRXaXRoVGV4dEluZGljYXRvcldpbmRv
dzooV2ViS2l0OjpUZXh0SW5kaWNhdG9yV2luZG93ICopdGV4dEluZGljYXRvcldpbmRvdyBhbmlt
YXRpb25EdXJhdGlvbjooQ0ZUaW1lSW50ZXJ2YWwpZHVyYXRpb24gYW5pbWF0aW9uUHJvZ3Jlc3ND
YWxsYmFjazoodm9pZCAoV2ViS2l0OjpUZXh0SW5kaWNhdG9yV2luZG93OjoqKShkb3VibGUgcHJv
Z3Jlc3MpKWFuaW1hdGlvblByb2dyZXNzQ2FsbGJhY2sgYW5pbWF0aW9uRGlkRW5kQ2FsbGJhY2s6
KHZvaWQgKFdlYktpdDo6VGV4dEluZGljYXRvcldpbmRvdzo6KikoKSlhbmltYXRpb25EaWRFbmRD
YWxsYmFjazsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLVGV4dEluZGljYXRvcldpbmRvd0Fu
aW1hdGlvbgorCistIChpZClfaW5pdFdpdGhUZXh0SW5kaWNhdG9yV2luZG93OihXZWJLaXQ6OlRl
eHRJbmRpY2F0b3JXaW5kb3cgKil0ZXh0SW5kaWNhdG9yV2luZG93IGFuaW1hdGlvbkR1cmF0aW9u
OihDRlRpbWVJbnRlcnZhbClhbmltYXRpb25EdXJhdGlvbiBhbmltYXRpb25Qcm9ncmVzc0NhbGxi
YWNrOih2b2lkIChXZWJLaXQ6OlRleHRJbmRpY2F0b3JXaW5kb3c6OiopKGRvdWJsZSBwcm9ncmVz
cykpYW5pbWF0aW9uUHJvZ3Jlc3NDYWxsYmFjayBhbmltYXRpb25EaWRFbmRDYWxsYmFjazoodm9p
ZCAoV2ViS2l0OjpUZXh0SW5kaWNhdG9yV2luZG93OjoqKSgpKWFuaW1hdGlvbkRpZEVuZENhbGxi
YWNrCit7CisgICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRXaXRoRHVyYXRpb246YW5pbWF0aW9u
RHVyYXRpb24gYW5pbWF0aW9uQ3VydmU6TlNBbmltYXRpb25FYXNlSW5PdXRdKSkgeworICAgICAg
ICBfdGV4dEluZGljYXRvcldpbmRvdyA9IHRleHRJbmRpY2F0b3JXaW5kb3c7CisgICAgICAgIF9h
bmltYXRpb25Qcm9ncmVzc0NhbGxiYWNrID0gYW5pbWF0aW9uUHJvZ3Jlc3NDYWxsYmFjazsKKyAg
ICAgICAgX2FuaW1hdGlvbkRpZEVuZENhbGxiYWNrID0gYW5pbWF0aW9uRGlkRW5kQ2FsbGJhY2s7
CisgICAgICAgIFtzZWxmIHNldERlbGVnYXRlOnNlbGZdOworICAgICAgICBbc2VsZiBzZXRBbmlt
YXRpb25CbG9ja2luZ01vZGU6TlNBbmltYXRpb25Ob25ibG9ja2luZ107CisgICAgfQorICAgIHJl
dHVybiBzZWxmOworfQorCistICh2b2lkKXNldEN1cnJlbnRQcm9ncmVzczooTlNBbmltYXRpb25Q
cm9ncmVzcylwcm9ncmVzcworeworICAgIChfdGV4dEluZGljYXRvcldpbmRvdy0+Kl9hbmltYXRp
b25Qcm9ncmVzc0NhbGxiYWNrKShwcm9ncmVzcyk7Cit9CisKKy0gKHZvaWQpYW5pbWF0aW9uRGlk
RW5kOihOU0FuaW1hdGlvbiAqKWFuaW1hdGlvbgoreworICAgIEFTU0VSVChhbmltYXRpb24gPT0g
c2VsZik7CisKKyAgICAoX3RleHRJbmRpY2F0b3JXaW5kb3ctPipfYW5pbWF0aW9uRGlkRW5kQ2Fs
bGJhY2spKCk7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1RleHRJbmRpY2F0
b3JXaW5kb3c6OlRleHRJbmRpY2F0b3JXaW5kb3coV0tWaWV3ICp3a1ZpZXcpCisgICAgOiBtX3dr
Vmlldyh3a1ZpZXcpCisgICAgLCBtX2JvdW5jZUFuaW1hdGlvbkNvbnRleHQoMCkKKyAgICAsIG1f
c3RhcnRGYWRlT3V0VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmVGV4dEluZGljYXRvcldp
bmRvdzo6c3RhcnRGYWRlT3V0VGltZXJGaXJlZCkKK3sKK30KKworVGV4dEluZGljYXRvcldpbmRv
dzo6flRleHRJbmRpY2F0b3JXaW5kb3coKQoreworICAgIGNsb3NlV2luZG93KCk7Cit9CisKK3Zv
aWQgVGV4dEluZGljYXRvcldpbmRvdzo6c2V0VGV4dEluZGljYXRvcihQYXNzUmVmUHRyPFRleHRJ
bmRpY2F0b3I+IHRleHRJbmRpY2F0b3IsIGJvb2wgZmFkZU91dCwgYm9vbCBhbmltYXRlKQorewor
ICAgIGlmIChtX3RleHRJbmRpY2F0b3IgPT0gdGV4dEluZGljYXRvcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV90ZXh0SW5kaWNhdG9yID0gdGV4dEluZGljYXRvcjsKKworICAgIC8vIEdldCBy
aWQgb2YgdGhlIG9sZCB3aW5kb3cuCisgICAgY2xvc2VXaW5kb3coKTsKKworICAgIGlmICghbV90
ZXh0SW5kaWNhdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBOU1JlY3QgY29udGVudFJlY3Qg
PSBtX3RleHRJbmRpY2F0b3ItPmZyYW1lUmVjdCgpOworICAgIE5TUmVjdCB3aW5kb3dGcmFtZVJl
Y3QgPSBOU0ludGVncmFsUmVjdChbbV93a1ZpZXcgY29udmVydFJlY3Q6Y29udGVudFJlY3QgdG9W
aWV3Om5pbF0pOworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgorICAgIHdpbmRv
d0ZyYW1lUmVjdC5vcmlnaW4gPSBbW21fd2tWaWV3IHdpbmRvd10gY29udmVydEJhc2VUb1NjcmVl
bjp3aW5kb3dGcmFtZVJlY3Qub3JpZ2luXTsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AK
KyAgICBOU1JlY3Qgd2luZG93Q29udGVudFJlY3QgPSBbTlNXaW5kb3cgY29udGVudFJlY3RGb3JG
cmFtZVJlY3Q6d2luZG93RnJhbWVSZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNr
XTsKKyAgICAKKyAgICBtX3RleHRJbmRpY2F0b3JXaW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cg
YWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6d2luZG93Q29udGVudFJlY3Qgc3R5bGVNYXNrOk5T
Qm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVy
Ok5PXSk7CisKKyAgICBbbV90ZXh0SW5kaWNhdG9yV2luZG93IHNldEJhY2tncm91bmRDb2xvcjpb
TlNDb2xvciBjbGVhckNvbG9yXV07CisgICAgW21fdGV4dEluZGljYXRvcldpbmRvdyBzZXRPcGFx
dWU6Tk9dOworICAgIFttX3RleHRJbmRpY2F0b3JXaW5kb3cgc2V0SWdub3Jlc01vdXNlRXZlbnRz
OllFU107CisKKyAgICBSZXRhaW5QdHI8V0tUZXh0SW5kaWNhdG9yVmlldz4gdGV4dEluZGljYXRv
clZpZXcgPSBhZG9wdE5TKFtbV0tUZXh0SW5kaWNhdG9yVmlldyBhbGxvY10gX2luaXRXaXRoVGV4
dEluZGljYXRvcjptX3RleHRJbmRpY2F0b3JdKTsKKyAgICBbbV90ZXh0SW5kaWNhdG9yV2luZG93
IHNldENvbnRlbnRWaWV3OnRleHRJbmRpY2F0b3JWaWV3LmdldCgpXTsKKworICAgIFtbbV93a1Zp
ZXcgd2luZG93XSBhZGRDaGlsZFdpbmRvdzptX3RleHRJbmRpY2F0b3JXaW5kb3cuZ2V0KCkgb3Jk
ZXJlZDpOU1dpbmRvd0Fib3ZlXTsKKyAgICBbbV90ZXh0SW5kaWNhdG9yV2luZG93IHNldFJlbGVh
c2VkV2hlbkNsb3NlZDpOT107CisKKyAgICBpZiAoYW5pbWF0ZSkgeworICAgICAgICAvLyBTdGFy
dCB0aGUgYm91bmNlIGFuaW1hdGlvbi4KKyAgICAgICAgbV9ib3VuY2VBbmltYXRpb25Db250ZXh0
ID0gV0tXaW5kb3dCb3VuY2VBbmltYXRpb25Db250ZXh0Q3JlYXRlKG1fdGV4dEluZGljYXRvcldp
bmRvdy5nZXQoKSk7CisgICAgICAgIG1fYm91bmNlQW5pbWF0aW9uID0gYWRvcHROUyhbW1dLVGV4
dEluZGljYXRvcldpbmRvd0FuaW1hdGlvbiBhbGxvY10gX2luaXRXaXRoVGV4dEluZGljYXRvcldp
bmRvdzp0aGlzIGFuaW1hdGlvbkR1cmF0aW9uOmJvdW5jZUFuaW1hdGlvbkR1cmF0aW9uCisgICAg
ICAgICAgICBhbmltYXRpb25Qcm9ncmVzc0NhbGxiYWNrOiZUZXh0SW5kaWNhdG9yV2luZG93Ojpi
b3VuY2VBbmltYXRpb25DYWxsYmFjayBhbmltYXRpb25EaWRFbmRDYWxsYmFjazomVGV4dEluZGlj
YXRvcldpbmRvdzo6Ym91bmNlQW5pbWF0aW9uRGlkRW5kXSk7CisgICAgICAgIFttX2JvdW5jZUFu
aW1hdGlvbiBzdGFydEFuaW1hdGlvbl07CisgICAgfQorCisgICAgaWYgKGZhZGVPdXQpCisgICAg
ICAgIG1fc3RhcnRGYWRlT3V0VGltZXIuc3RhcnRPbmVTaG90KHRpbWVCZWZvcmVGYWRlU3RhcnRz
KTsKK30KKwordm9pZCBUZXh0SW5kaWNhdG9yV2luZG93OjpjbG9zZVdpbmRvdygpCit7CisgICAg
aWYgKCFtX3RleHRJbmRpY2F0b3JXaW5kb3cpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3Rh
cnRGYWRlT3V0VGltZXIuc3RvcCgpOworCisgICAgaWYgKG1fZmFkZU91dEFuaW1hdGlvbikgewor
ICAgICAgICBbbV9mYWRlT3V0QW5pbWF0aW9uIHN0b3BBbmltYXRpb25dOworICAgICAgICBtX2Zh
ZGVPdXRBbmltYXRpb24gPSBudWxscHRyOworICAgIH0KKworICAgIGlmIChtX2JvdW5jZUFuaW1h
dGlvbikgeworICAgICAgICBbbV9ib3VuY2VBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07CisgICAg
ICAgIG1fYm91bmNlQW5pbWF0aW9uID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAobV9ib3Vu
Y2VBbmltYXRpb25Db250ZXh0KQorICAgICAgICBXS1dpbmRvd0JvdW5jZUFuaW1hdGlvbkNvbnRl
eHREZXN0cm95KG1fYm91bmNlQW5pbWF0aW9uQ29udGV4dCk7CisgICAgCisgICAgW1ttX3RleHRJ
bmRpY2F0b3JXaW5kb3cgcGFyZW50V2luZG93XSByZW1vdmVDaGlsZFdpbmRvdzptX3RleHRJbmRp
Y2F0b3JXaW5kb3cuZ2V0KCldOworICAgIFttX3RleHRJbmRpY2F0b3JXaW5kb3cgY2xvc2VdOwor
ICAgIG1fdGV4dEluZGljYXRvcldpbmRvdyA9IG51bGxwdHI7Cit9CisKK3ZvaWQgVGV4dEluZGlj
YXRvcldpbmRvdzo6c3RhcnRGYWRlT3V0VGltZXJGaXJlZCgpCit7CisgICAgQVNTRVJUKCFtX2Zh
ZGVPdXRBbmltYXRpb24pOworICAgIAorICAgIG1fZmFkZU91dEFuaW1hdGlvbiA9IGFkb3B0TlMo
W1tXS1RleHRJbmRpY2F0b3JXaW5kb3dBbmltYXRpb24gYWxsb2NdIF9pbml0V2l0aFRleHRJbmRp
Y2F0b3JXaW5kb3c6dGhpcyBhbmltYXRpb25EdXJhdGlvbjpmYWRlT3V0QW5pbWF0aW9uRHVyYXRp
b24KKyAgICAgICAgYW5pbWF0aW9uUHJvZ3Jlc3NDYWxsYmFjazomVGV4dEluZGljYXRvcldpbmRv
dzo6ZmFkZU91dEFuaW1hdGlvbkNhbGxiYWNrIGFuaW1hdGlvbkRpZEVuZENhbGxiYWNrOiZUZXh0
SW5kaWNhdG9yV2luZG93OjpmYWRlT3V0QW5pbWF0aW9uRGlkRW5kXSk7CisgICAgW21fZmFkZU91
dEFuaW1hdGlvbiBzdGFydEFuaW1hdGlvbl07Cit9CisKK3ZvaWQgVGV4dEluZGljYXRvcldpbmRv
dzo6ZmFkZU91dEFuaW1hdGlvbkNhbGxiYWNrKGRvdWJsZSBwcm9ncmVzcykKK3sKKyAgICBBU1NF
UlQobV9mYWRlT3V0QW5pbWF0aW9uKTsKKworICAgIFttX3RleHRJbmRpY2F0b3JXaW5kb3cgc2V0
QWxwaGFWYWx1ZToxLjAgLSBwcm9ncmVzc107Cit9CisKK3ZvaWQgVGV4dEluZGljYXRvcldpbmRv
dzo6ZmFkZU91dEFuaW1hdGlvbkRpZEVuZCgpCit7CisgICAgQVNTRVJUKG1fZmFkZU91dEFuaW1h
dGlvbik7CisgICAgQVNTRVJUKG1fdGV4dEluZGljYXRvcldpbmRvdyk7CisKKyAgICBjbG9zZVdp
bmRvdygpOworfQorCit2b2lkIFRleHRJbmRpY2F0b3JXaW5kb3c6OmJvdW5jZUFuaW1hdGlvbkNh
bGxiYWNrKGRvdWJsZSBwcm9ncmVzcykKK3sKKyAgICBBU1NFUlQobV9ib3VuY2VBbmltYXRpb24p
OworICAgIEFTU0VSVChtX2JvdW5jZUFuaW1hdGlvbkNvbnRleHQpOworCisgICAgV0tXaW5kb3dC
b3VuY2VBbmltYXRpb25TZXRBbmltYXRpb25Qcm9ncmVzcyhtX2JvdW5jZUFuaW1hdGlvbkNvbnRl
eHQsIHByb2dyZXNzKTsKK30KKwordm9pZCBUZXh0SW5kaWNhdG9yV2luZG93Ojpib3VuY2VBbmlt
YXRpb25EaWRFbmQoKQoreworICAgIEFTU0VSVChtX2JvdW5jZUFuaW1hdGlvbik7CisgICAgQVNT
RVJUKG1fYm91bmNlQW5pbWF0aW9uQ29udGV4dCk7CisgICAgQVNTRVJUKG1fdGV4dEluZGljYXRv
cldpbmRvdyk7CisKKyAgICBXS1dpbmRvd0JvdW5jZUFuaW1hdGlvbkNvbnRleHREZXN0cm95KG1f
Ym91bmNlQW5pbWF0aW9uQ29udGV4dCk7CisgICAgbV9ib3VuY2VBbmltYXRpb25Db250ZXh0ID0g
MDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNTY5MTRjYi4uZjBjODQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEwLDggKzExMCw4IEBACiAJCTBGQ0I0RTUx
MThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1NPYmpDU2VjdXJpdHlP
cmlnaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkNCNEU0MTE4QkJFMDQ0MDAwRkNGQzkgLyogV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TT2JqQ1Nl
Y3VyaXR5T3JpZ2luLm1tICovOyB9OwogCQkwRkNCNEU1NDE4QkJFMDQ0MDAwRkNGQzkgLyogV0tT
Y3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkNCNEU0NDE4QkJFMDQ0MDAwRkNGQzkgLyogV0tTY3JvbGxWaWV3LmggKi87IH07CiAJCTBG
Q0I0RTU1MThCQkUwNDQwMDBGQ0ZDOSAvKiBXS1Njcm9sbFZpZXcubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNCNEU0NTE4QkJFMDQ0MDAwRkNGQzkg
LyogV0tTY3JvbGxWaWV3Lm1tICovOyB9OwotCQkwRkNCNEU2MDE4QkJFM0Q5MDAwRkNGQzkgLyog
RmluZEluZGljYXRvcldpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZDQjRFNTYxOEJCRTNEOTAwMEZDRkM5IC8qIEZpbmRJbmRpY2F0b3JXaW5k
b3cuaCAqLzsgfTsKLQkJMEZDQjRFNjExOEJCRTNEOTAwMEZDRkM5IC8qIEZpbmRJbmRpY2F0b3JX
aW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkNCNEU1NzE4QkJFM0Q5MDAwRkNGQzkgLyogRmluZEluZGljYXRvcldpbmRvdy5tbSAqLzsgfTsK
KwkJMEZDQjRFNjAxOEJCRTNEOTAwMEZDRkM5IC8qIFRleHRJbmRpY2F0b3JXaW5kb3cuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0I0RTU2MThCQkUz
RDkwMDBGQ0ZDOSAvKiBUZXh0SW5kaWNhdG9yV2luZG93LmggKi87IH07CisJCTBGQ0I0RTYxMThC
QkUzRDkwMDBGQ0ZDOSAvKiBUZXh0SW5kaWNhdG9yV2luZG93Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDQjRFNTcxOEJCRTNEOTAwMEZDRkM5IC8q
IFRleHRJbmRpY2F0b3JXaW5kb3cubW0gKi87IH07CiAJCTBGQ0I0RTYyMThCQkUzRDkwMDBGQ0ZD
OSAvKiBQYWdlQ2xpZW50SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZDQjRFNTgxOEJCRTNEOTAwMEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBsLmgg
Ki87IH07CiAJCTBGQ0I0RTYzMThCQkUzRDkwMDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0I0RTU5MThC
QkUzRDkwMDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbC5tbSAqLzsgfTsKIAkJMEZDQjRFNjYxOEJC
RTNEOTAwMEZDRkM5IC8qIFdLUHJpbnRpbmdWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNCNEU1QzE4QkJFM0Q5MDAwRkNGQzkgLyogV0tQcmlu
dGluZ1ZpZXcuaCAqLzsgfTsKQEAgLTMwNyw4ICszMDcsOCBAQAogCQkxQTkwQzFFRTEyNjRGRDUw
MDAzRTQ0RDQgLyogV2ViRmluZE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTBDMUVEMTI2NEZENTAwMDNFNDRENCAvKiBXZWJGaW5kT3B0
aW9ucy5oICovOyB9OwogCQkxQTkwQzFGNDEyNjRGRDcxMDAzRTQ0RDQgLyogRmluZENvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTBD
MUYyMTI2NEZENzEwMDNFNDRENCAvKiBGaW5kQ29udHJvbGxlci5oICovOyB9OwogCQkxQTkwQzFG
NTEyNjRGRDcxMDAzRTQ0RDQgLyogRmluZENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5MEMxRjMxMjY0RkQ3MTAwM0U0NEQ0IC8q
IEZpbmRDb250cm9sbGVyLmNwcCAqLzsgfTsKLQkJMUE5MTAwNzExMjY2NzVDNDAwMTg0MkY1IC8q
IEZpbmRJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBOTEwMDZGMTI2Njc1QzMwMDE4NDJGNSAvKiBGaW5kSW5kaWNhdG9yLmggKi87IH07
Ci0JCTFBOTEwMDcyMTI2Njc1QzQwMDE4NDJGNSAvKiBGaW5kSW5kaWNhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTEwMDcwMTI2Njc1QzQw
MDE4NDJGNSAvKiBGaW5kSW5kaWNhdG9yLmNwcCAqLzsgfTsKKwkJMUE5MTAwNzExMjY2NzVDNDAw
MTg0MkY1IC8qIFRleHRJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBOTEwMDZGMTI2Njc1QzMwMDE4NDJGNSAvKiBUZXh0SW5kaWNhdG9y
LmggKi87IH07CisJCTFBOTEwMDcyMTI2Njc1QzQwMDE4NDJGNSAvKiBUZXh0SW5kaWNhdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTEwMDcw
MTI2Njc1QzQwMDE4NDJGNSAvKiBUZXh0SW5kaWNhdG9yLmNwcCAqLzsgfTsKIAkJMUE5MkRDMTEx
MkY4QkE0NjAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTJEQzEwMTJGOEJBNDYwMDE3QUY2NSAvKiBM
YXllclRyZWVDb250ZXh0LmggKi87IH07CiAJCTFBOTJEQzEzMTJGOEJBQjkwMDE3QUY2NSAvKiBM
YXllclRyZWVDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBOTJEQzEyMTJGOEJBQjkwMDE3QUY2NSAvKiBMYXllclRyZWVDb250ZXh0LmNw
cCAqLzsgfTsKIAkJMUE5RTMyODkxODIxNjM2OTAwRjVEMDRDIC8qIF9XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTlFMzI4NzE4MjE2MzY5MDBGNUQwNEMgLyogX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjA1NCw4ICsy
MDU0LDggQEAKIAkJMEZDQjRFNDExOEJCRTA0NDAwMEZDRkM5IC8qIFdLR2VvbG9jYXRpb25Qcm92
aWRlcklPU09iakNTZWN1cml0eU9yaWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFdLR2VvbG9jYXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9yaWdpbi5t
bTsgcGF0aCA9IGlvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1NPYmpDU2VjdXJpdHlPcmlnaW4u
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQ0I0RTQ0MThCQkUwNDQwMDBGQ0ZD
OSAvKiBXS1Njcm9sbFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tT
Y3JvbGxWaWV3Lmg7IHBhdGggPSBpb3MvV0tTY3JvbGxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQ0I0RTQ1MThCQkUwNDQwMDBGQ0ZDOSAvKiBXS1Njcm9sbFZpZXcubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1Njcm9sbFZpZXcubW07
IHBhdGggPSBpb3MvV0tTY3JvbGxWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwRkNCNEU1NjE4QkJFM0Q5MDAwRkNGQzkgLyogRmluZEluZGljYXRvcldpbmRvdy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5kSW5kaWNhdG9yV2luZG93Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQ0I0RTU3MThCQkUzRDkwMDBGQ0ZDOSAvKiBGaW5k
SW5kaWNhdG9yV2luZG93Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRmluZEluZGljYXRvcldpbmRvdy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEZDQjRFNTYxOEJCRTNEOTAwMEZDRkM5IC8qIFRleHRJbmRpY2F0b3JXaW5kb3cuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEluZGljYXRvcldpbmRvdy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkNCNEU1NzE4QkJFM0Q5MDAwRkNGQzkgLyogVGV4dElu
ZGljYXRvcldpbmRvdy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFRleHRJbmRpY2F0b3JXaW5kb3cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
Q0I0RTU4MThCQkUzRDkwMDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlQ2xpZW50SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkNCNEU1OTE4QkJFM0Q5MDAwRkNGQzkgLyogUGFnZUNsaWVudEltcGwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYWdlQ2xpZW50SW1wbC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDQjRFNUMxOEJCRTNEOTAwMEZDRkM5
IC8qIFdLUHJpbnRpbmdWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
UHJpbnRpbmdWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjc2LDggKzIy
NzYsOCBAQAogCQkxQTkwQzFFRDEyNjRGRDUwMDAzRTQ0RDQgLyogV2ViRmluZE9wdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRmluZE9wdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE5MEMxRjIxMjY0RkQ3MTAwM0U0NEQ0IC8qIEZpbmRD
b250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmRDb250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBOTBDMUYzMTI2NEZENzEwMDNF
NDRENCAvKiBGaW5kQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGaW5kQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFBOTEwMDZGMTI2Njc1QzMwMDE4NDJGNSAvKiBGaW5kSW5kaWNhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmRJbmRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUE5MTAwNzAxMjY2NzVDNDAwMTg0MkY1IC8qIEZpbmRJbmRpY2F0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmluZEluZGljYXRvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBOTEwMDZGMTI2Njc1QzMwMDE4NDJGNSAv
KiBUZXh0SW5kaWNhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJ
bmRpY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE5MTAwNzAxMjY2NzVD
NDAwMTg0MkY1IC8qIFRleHRJbmRpY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGV4dEluZGljYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBOTJEQzEwMTJGOEJBNDYwMDE3QUY2NSAvKiBMYXllclRyZWVDb250ZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheWVyVHJlZUNvbnRleHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE5MkRDMTIxMkY4QkFCOTAwMTdBRjY1IC8qIExheWVyVHJl
ZUNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5ZXJU
cmVlQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBOUUzMjg3MTgy
MTYzNjkwMEY1RDA0QyAvKiBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTc3OCwxMCArNTc3OCwxMCBAQAogCQkJCUJDMjY1MjEyMTE4
MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmNwcCAqLywKIAkJCQlCQzI2NTIxMzEx
ODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5oICovLAogCQkJCTFBNjQyMkZDMTJE
RDA4RkUwMENBQUUyQyAvKiBEcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluICovLAotCQkJCTFB
OTEwMDcwMTI2Njc1QzQwMDE4NDJGNSAvKiBGaW5kSW5kaWNhdG9yLmNwcCAqLywKKwkJCQkxQTkx
MDA3MDEyNjY3NUM0MDAxODQyRjUgLyogVGV4dEluZGljYXRvci5jcHAgKi8sCiAJCQkJMUFFMDBE
NUUxODMxNzkyMTAwMDg3REQ3IC8qIEZyYW1lTG9hZFN0YXRlLmNwcCAqLywKIAkJCQkxQUUwMEQ1
RjE4MzE3OTIxMDAwODdERDcgLyogRnJhbWVMb2FkU3RhdGUuaCAqLywKLQkJCQkxQTkxMDA2RjEy
NjY3NUMzMDAxODQyRjUgLyogRmluZEluZGljYXRvci5oICovLAorCQkJCTFBOTEwMDZGMTI2Njc1
QzMwMDE4NDJGNSAvKiBUZXh0SW5kaWNhdG9yLmggKi8sCiAJCQkJQkMxNzc1M0UxMThCQUJGMDAw
N0Q5RTlBIC8qIEdlbmVyaWNDYWxsYmFjay5oICovLAogCQkJCUJDMDZGNDQ5MTJEQkQxRjUwMDJE
NzhERSAvKiBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCAqLywK
IAkJCQlCQzA2RjQ0ODEyREJEMUY1MDAyRDc4REUgLyogR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5oICovLApAQCAtNjU4NCw4ICs2NTg0LDggQEAKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCUI4NzhCNjEzMTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAq
LywKIAkJCQlCODc4QjYxNDEzMzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tICov
LAotCQkJCTBGQ0I0RTU2MThCQkUzRDkwMDBGQ0ZDOSAvKiBGaW5kSW5kaWNhdG9yV2luZG93Lmgg
Ki8sCi0JCQkJMEZDQjRFNTcxOEJCRTNEOTAwMEZDRkM5IC8qIEZpbmRJbmRpY2F0b3JXaW5kb3cu
bW0gKi8sCisJCQkJMEZDQjRFNTYxOEJCRTNEOTAwMEZDRkM5IC8qIFRleHRJbmRpY2F0b3JXaW5k
b3cuaCAqLywKKwkJCQkwRkNCNEU1NzE4QkJFM0Q5MDAwRkNGQzkgLyogVGV4dEluZGljYXRvcldp
bmRvdy5tbSAqLywKIAkJCQkxQUZERTY1QjE5NTRFOEQ1MDBDNDhGRkEgLyogTGVnYWN5U2Vzc2lv
blN0YXRlQ29kaW5nLmNwcCAqLywKIAkJCQkwRkNCNEU1ODE4QkJFM0Q5MDAwRkNGQzkgLyogUGFn
ZUNsaWVudEltcGwuaCAqLywKIAkJCQkwRkNCNEU1OTE4QkJFM0Q5MDAwRkNGQzkgLyogUGFnZUNs
aWVudEltcGwubW0gKi8sCkBAIC03MTYzLDcgKzcxNjMsNyBAQAogCQkJCTFBN0M2Q0RCMTM3ODk1
MDgwMEI5QzA0RCAvKiBFbnZpcm9ubWVudFZhcmlhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFBNTc1RkIxNDk2QjUyNjAwQTRFRTA2IC8qIEV2ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE5MEMxRjQxMjY0RkQ3MTAwM0U0NEQ0IC8qIEZpbmRDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKLQkJCQkxQTkxMDA3MTEyNjY3NUM0MDAxODQyRjUgLyogRmluZEluZGljYXRv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUE5MTAwNzExMjY2NzVDNDAwMTg0MkY1IC8qIFRleHRJ
bmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUU3NzI4MTgzREQ2RjYwMDA3MjAzRiAv
KiBBc3luY1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTgxRDhEMTMxOUY3RUYwMDI0
MTkxMCAvKiBGb250SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCQzNERkMxODk5RjUxQzAw
NEYwNjI2IC8qIFdLTmF2aWdhdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTcyMTEs
NyArNzIxMSw3IEBACiAJCQkJNTE2NTRFRkUxODRFRjMzRjAwN0RDODM3IC8qIFVuaXF1ZUlEQkRh
dGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMzRTBEMTEy
NDA4RTg2MDAzNjBGM0YgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTExNURDNzIxOTFEODJEQTAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1h
dHRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZDQjRFNjAxOEJCRTNEOTAwMEZDRkM5IC8qIEZp
bmRJbmRpY2F0b3JXaW5kb3cuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQ0I0RTYwMThCQkUzRDkw
MDBGQ0ZDOSAvKiBUZXh0SW5kaWNhdG9yV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE0
REY3NzEyMEI1Qjc5MDA4MjZDMEMgLyogSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNCMEIwREUxMjMwNUE4QzAwQjEzNDFFIC8qIEluamVjdGVkQnVuZGxl
VXNlck1lc3NhZ2VDb2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTQ5QTQ5MTFGRkE4Q0Uw
MDQ4QjQ2NCAvKiBKU05QTWV0aG9kLmggaW4gSGVhZGVycyAqLywKQEAgLTg4MTksNyArODgxOSw3
IEBACiAJCQkJMUFBNTc2MDIxNDk2Qjk3OTAwQTRFRTA2IC8qIEV2ZW50RGlzcGF0Y2hlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTFFMDkzMzE4ODYxRDM4MDBEMkRD
NDkgLyogV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
OTBDMUY1MTI2NEZENzEwMDNFNDRENCAvKiBGaW5kQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQkxQTkxMDA3MjEyNjY3NUM0MDAxODQyRjUgLyogRmluZEluZGljYXRvci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkxQTkxMDA3MjEyNjY3NUM0MDAxODQyRjUgLyogVGV4dEluZGljYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0U4MUQ4QzEzMTlGN0VGMDAyNDE5MTAgLyogRm9u
dEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc4RTFBNDkxODIwOENENjAwMzEwMDdBIC8q
IFdLTlNTdHJpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUFGMDhCNzE5MjY5RTZEMDBCNjM5
MEMgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtOTMxOCw3ICs5MzE4LDcgQEAKIAkJCQlCQ0JBQUM3MjE0NEU2MTk5MDA1M0Y4
MkYgLyogV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNCQUFDRjUxNDUyMzI0RjAwNTNGODJGIC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAubW0gaW4g
U291cmNlcyAqLywKIAkJCQk1MTI5MDk5MjE4M0FDRUFGMDA1NTIyQTYgLyogV2ViSURCU2VydmVy
Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRkNCNEU2MTE4QkJFM0Q5MDAwRkNG
QzkgLyogRmluZEluZGljYXRvcldpbmRvdy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTBGQ0I0RTYx
MThCQkUzRDkwMDBGQ0ZDOSAvKiBUZXh0SW5kaWNhdG9yV2luZG93Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkMyMDRFRUUxMUM4M0VDODAwOEYzMzc1IC8qIFdLQnVuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDNkU3MEZCMThCMkRDN0EwMEYyNEUyRSAvKiBXZWJQcm9jZXNzQ29jb2EubW0g
aW4gU291cmNlcyAqLywKIAkJCQk5MzVFRUI5RTEyNzc2MUFDMDAzMzIyQjggLyogV0tCdW5kbGVC
YWNrRm9yd2FyZExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAppbmRleCBjYmY0OTZiLi5j
NmUyOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmlu
ZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5jcHAKQEAgLTM1NCw3ICszNTQsNyBAQCBib29sIEZpbmRDb250cm9sbGVy
Ojp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2lu
Z092ZQogICAgICAgICB0ZXh0UmVjdHNJblNlbGVjdGlvblJlY3RDb29yZGluYXRlcy5hcHBlbmQo
dGV4dFJlY3RJblNlbGVjdGlvblJlY3RDb29yZGluYXRlcyk7CiAgICAgfSAgICAgICAgICAgIAog
Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEZpbmRJbmRp
Y2F0b3Ioc2VsZWN0aW9uUmVjdEluV2luZG93Q29vcmRpbmF0ZXMsIHRleHRSZWN0c0luU2VsZWN0
aW9uUmVjdENvb3JkaW5hdGVzLCBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFj
dG9yKCksIGhhbmRsZSwgIWlzU2hvd2luZ092ZXJsYXksIHNob3VsZEFuaW1hdGUpKTsKKyAgICBt
X3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0VGV4dEluZGljYXRvcihz
ZWxlY3Rpb25SZWN0SW5XaW5kb3dDb29yZGluYXRlcywgdGV4dFJlY3RzSW5TZWxlY3Rpb25SZWN0
Q29vcmRpbmF0ZXMsIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwg
aGFuZGxlLCAhaXNTaG93aW5nT3ZlcmxheSwgc2hvdWxkQW5pbWF0ZSkpOwogICAgIG1fZmluZElu
ZGljYXRvclJlY3QgPSBzZWxlY3Rpb25SZWN0SW5XaW5kb3dDb29yZGluYXRlczsKICAgICBtX2lz
U2hvd2luZ0ZpbmRJbmRpY2F0b3IgPSB0cnVlOwogCkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBG
aW5kQ29udHJvbGxlcjo6aGlkZUZpbmRJbmRpY2F0b3IoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEZpbmRJbmRpY2F0b3IoRmxvYXRSZWN0KCksIFZlY3Rv
cjxGbG9hdFJlY3Q+KCksIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KSwgaGFuZGxlLCBmYWxzZSwgdHJ1ZSkpOworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTZXRUZXh0SW5kaWNhdG9yKEZsb2F0UmVjdCgpLCBWZWN0b3I8RmxvYXRS
ZWN0PigpLCBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCksIGhhbmRs
ZSwgZmFsc2UsIHRydWUpKTsKICAgICBtX2lzU2hvd2luZ0ZpbmRJbmRpY2F0b3IgPSBmYWxzZTsK
ICAgICBtX2ZvdW5kU3RyaW5nTWF0Y2hJbmRleCA9IC0xOwogICAgIGRpZEhpZGVGaW5kSW5kaWNh
dG9yKCk7Cg==
</data>
<flag name="review"
          id="265621"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>