<?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>19703</bug_id>
          
          <creation_ts>2008-06-20 19:07:56 -0700</creation_ts>
          <short_desc>Crash in WebCore::InsertNodeBeforeCommand::doUnapply()</short_desc>
          <delta_ts>2008-12-23 13:43:50 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.mozilla.org/editor/midasdemo/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>GoogleBug, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ovafai</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>eric</cc>
    
    <cc>jparent</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>84026</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ovafai</who>
    <bug_when>2008-06-20 19:07:56 -0700</bug_when>
    <thetext>Go to http://www.mozilla.org/editor/midasdemo/.
1. Click on the &quot;View HTML Source&quot; checkbox
2. Type in &quot;&lt;blockquote&gt;foo&lt;/blockquote&gt;&quot;
3. Uncheck the view html source checkbox.
4. Place your cursor in or after the word foo.
5. Hit ctrl+z once or twice.

Crashes every time. I tried coming up with something more reduced, but couldn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87201</commentid>
    <comment_count>1</comment_count>
    <who name="Robert Blaut">webkit</who>
    <bug_when>2008-07-28 13:28:01 -0700</bug_when>
    <thetext>Confirmed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87202</commentid>
    <comment_count>2</comment_count>
      <attachid>22526</attachid>
    <who name="Robert Blaut">webkit</who>
    <bug_when>2008-07-28 13:28:28 -0700</bug_when>
    <thetext>Created attachment 22526
crash log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97618</commentid>
    <comment_count>3</comment_count>
    <who name="David Harrison">harrison</who>
    <bug_when>2008-11-04 14:15:02 -0800</bug_when>
    <thetext>In a debug build of TOT, this hits an assert

ASSERTION FAILED: m_refChild-&gt;parentNode()
(...WebCore/editing/InsertNodeBeforeCommand.cpp:59 virtual void WebCore::InsertNodeBeforeCommand::doUnapply())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97619</commentid>
    <comment_count>4</comment_count>
    <who name="David Harrison">harrison</who>
    <bug_when>2008-11-04 14:18:10 -0800</bug_when>
    <thetext>rdar://4059423</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103233</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-22 15:21:14 -0800</bug_when>
    <thetext>*** Bug 20676 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103245</commentid>
    <comment_count>6</comment_count>
      <attachid>26218</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-22 16:01:27 -0800</bug_when>
    <thetext>Created attachment 26218
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103316</commentid>
    <comment_count>7</comment_count>
      <attachid>26218</attachid>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2008-12-23 12:12:55 -0800</bug_when>
    <thetext>Comment on attachment 26218
patch

Two comments:

1) my eyes have gone partly numb reviewing this patch, so I&apos;m not 100% confident that I would have noticed minor errors
2) it&apos;s not obvious from these changes whether the various vaguely-specified bug reports have actually been fixed

But still, I didn&apos;t see any actual problems, and I saw lots of robustification. r=me assuming it passes the current layout tests.

John</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103324</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-23 13:43:50 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/39456

OK. I believe that fixes the bug. Now we need some more testing to see if the crash is truly gone and also to see if all those duplicates were really duplicates.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>22526</attachid>
            <date>2008-07-28 13:28:28 -0700</date>
            <delta_ts>2008-07-28 13:28:28 -0700</delta_ts>
            <desc>crash log</desc>
            <filename>crash-log.txt</filename>
            <type>text/plain</type>
            <size>41351</size>
            <attacher name="Robert Blaut">webkit</attacher>
            
              <data encoding="base64">UHJvY2VzczogICAgICAgICBTYWZhcmkgWzcyNV0KUGF0aDogICAgICAgICAgICAvQXBwbGljYXRp
b25zL1dlYktpdC5hcHAvQ29udGVudHMvTWFjT1MvV2ViS2l0CklkZW50aWZpZXI6ICAgICAgb3Jn
LndlYmtpdC5uaWdodGx5LldlYktpdApWZXJzaW9uOiAgICAgICAgIHIzNTQwNyAoMzU0MDcpCkNv
ZGUgVHlwZTogICAgICAgWDg2IChOYXRpdmUpClBhcmVudCBQcm9jZXNzOiAgbGF1bmNoZCBbNjZd
CgpEYXRlL1RpbWU6ICAgICAgIDIwMDgtMDctMjggMjI6MjQ6NDYuNjMxICswMjAwCk9TIFZlcnNp
b246ICAgICAgTWFjIE9TIFggMTAuNS40ICg5RTE3KQpSZXBvcnQgVmVyc2lvbjogIDYKCkV4Y2Vw
dGlvbiBUeXBlOiAgRVhDX0JBRF9BQ0NFU1MgKFNJR0JVUykKRXhjZXB0aW9uIENvZGVzOiBLRVJO
X1BST1RFQ1RJT05fRkFJTFVSRSBhdCAweDAwMDAwMDAwMDAwMDAwMDAKQ3Jhc2hlZCBUaHJlYWQ6
ICAwCgpUaHJlYWQgMCBDcmFzaGVkOgowICAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAg
CTB4MDBmMjdjZGEgV2ViQ29yZTo6SW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQ6OmRvVW5hcHBseSgp
ICsgMjYKMSAgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAwZTI1NDk5IFdlYkNv
cmU6OkVkaXRDb21tYW5kOjp1bmFwcGx5KCkgKyA1NwoyICAgY29tLmFwcGxlLldlYkNvcmUgICAg
ICAgICAgICAgCTB4MDBkMjA1YTUgV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmRvVW5h
cHBseSgpICsgODUKMyAgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAwZTI1NDk5
IFdlYkNvcmU6OkVkaXRDb21tYW5kOjp1bmFwcGx5KCkgKyA1Nwo0ICAgY29tLmFwcGxlLldlYkNv
cmUgICAgICAgICAgICAgCTB4MDBkMjA1YTUgV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6
OmRvVW5hcHBseSgpICsgODUKNSAgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAw
ZTI1NDk5IFdlYkNvcmU6OkVkaXRDb21tYW5kOjp1bmFwcGx5KCkgKyA1Nwo2ICAgY29tLmFwcGxl
LkZvdW5kYXRpb24gICAgICAgICAgCTB4OTVhYzExMDIgLVtfTlNVbmRvTGlnaHRJbnZvY2F0aW9u
IGludm9rZV0gKyAzNAo3ICAgY29tLmFwcGxlLkZvdW5kYXRpb24gICAgICAgICAgCTB4OTVhYWVi
ZTQgLVtfTlNVbmRvU3RhY2sgcG9wQW5kSW52b2tlXSArIDI0NAo4ICAgY29tLmFwcGxlLkZvdW5k
YXRpb24gICAgICAgICAgCTB4OTVhYWU5ZTcgLVtOU1VuZG9NYW5hZ2VyIHVuZG9OZXN0ZWRHcm91
cF0gKyAxOTkKOSAgIGNvbS5hcHBsZS5BcHBLaXQgICAgICAgICAgICAgIAkweDkzMmUzYzIzIC1b
TlNBcHBsaWNhdGlvbiBzZW5kQWN0aW9uOnRvOmZyb206XSArIDExMgoxMCAgY29tLmFwcGxlLlNh
ZmFyaSAgICAgICAgICAgICAgCTB4MDAwMmQ0NTggMHgxMDAwICsgMTgxMzM2CjExICBjb20uYXBw
bGUuQXBwS2l0ICAgICAgICAgICAgICAJMHg5MzM5MjY2MCAtW05TTWVudSBwZXJmb3JtQWN0aW9u
Rm9ySXRlbUF0SW5kZXg6XSArIDQ5MwoxMiAgY29tLmFwcGxlLkFwcEtpdCAgICAgICAgICAgICAg
CTB4OTMzOTIzNjUgLVtOU0NhcmJvbk1lbnVJbXBsIHBlcmZvcm1BY3Rpb25XaXRoSGlnaGxpZ2h0
aW5nRm9ySXRlbUF0SW5kZXg6XSArIDIyMAoxMyAgY29tLmFwcGxlLkFwcEtpdCAgICAgICAgICAg
ICAgCTB4OTMzOTFmZWIgLVtOU01lbnUgcGVyZm9ybUtleUVxdWl2YWxlbnQ6XSArIDg2NgoxNCAg
Y29tLmFwcGxlLkFwcEtpdCAgICAgICAgICAgICAgCTB4OTMzOTA4OTAgLVtOU0FwcGxpY2F0aW9u
IF9oYW5kbGVLZXlFcXVpdmFsZW50Ol0gKyA0OTIKMTUgIGNvbS5hcHBsZS5BcHBLaXQgICAgICAg
ICAgICAgIAkweDkzMmFkODUzIC1bTlNBcHBsaWNhdGlvbiBzZW5kRXZlbnQ6XSArIDM5OTkKMTYg
IGNvbS5hcHBsZS5TYWZhcmkgICAgICAgICAgICAgIAkweDAwMDJiNWQ4IDB4MTAwMCArIDE3MzUy
OAoxNyAgY29tLmFwcGxlLkFwcEtpdCAgICAgICAgICAgICAgCTB4OTMyMGFlMjcgLVtOU0FwcGxp
Y2F0aW9uIHJ1bl0gKyA4NDcKMTggIGNvbS5hcHBsZS5BcHBLaXQgICAgICAgICAgICAgIAkweDkz
MWQ4MDMwIE5TQXBwbGljYXRpb25NYWluICsgNTc0CjE5ICBjb20uYXBwbGUuU2FmYXJpICAgICAg
ICAgICAgICAJMHgwMDBiYTRkNiAweDEwMDAgKyA3NTg5OTgKClRocmVhZCAxOgowICAgbGliU3lz
dGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTA2ZWQ2OGUgX19zZW13YWl0X3NpZ25hbCArIDEw
CjEgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MDcxODM2ZCBwdGhyZWFkX2Nv
bmRfd2FpdCRVTklYMjAwMyArIDczCjIgICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJ
MHgwMGYwYzVlZiBXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnN5bmNUaHJlYWRNYWluTG9vcCgpICsg
MjM5CjMgICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJMHgwMGYwYzcwNSBXZWJDb3Jl
OjpJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWQoKSArIDE4MQo0ICAgbGliU3lz
dGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTA3MTc2ZjUgX3B0aHJlYWRfc3RhcnQgKyAzMjEK
NSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNzE3NWIyIHRocmVhZF9zdGFy
dCArIDM0CgpUaHJlYWQgMjoKMCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkw
NmVkNjhlIF9fc2Vtd2FpdF9zaWduYWwgKyAxMAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAg
ICAgICAgCTB4OTA3MTgzNmQgcHRocmVhZF9jb25kX3dhaXQkVU5JWDIwMDMgKyA3MwoyICAgY29t
LmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDEyYzczMWIgV2ViQ29yZTo6TG9jYWxTdG9y
YWdlVGhyZWFkOjpsb2NhbFN0b3JhZ2VUaHJlYWQoKSArIDQyNwozICAgbGliU3lzdGVtLkIuZHls
aWIgICAgICAgICAgICAgCTB4OTA3MTc2ZjUgX3B0aHJlYWRfc3RhcnQgKyAzMjEKNCAgIGxpYlN5
c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNzE3NWIyIHRocmVhZF9zdGFydCArIDM0CgpU
aHJlYWQgMzoKMCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNmU2NGE2IG1h
Y2hfbXNnX3RyYXAgKyAxMAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTA2
ZWRjOWMgbWFjaF9tc2cgKyA3MgoyICAgY29tLmFwcGxlLkNvcmVGb3VuZGF0aW9uICAgICAgCTB4
OTExMzEwY2UgQ0ZSdW5Mb29wUnVuU3BlY2lmaWMgKyAxNzkwCjMgICBjb20uYXBwbGUuQ29yZUZv
dW5kYXRpb24gICAgICAJMHg5MTEzMWNmOCBDRlJ1bkxvb3BSdW5Jbk1vZGUgKyA4OAo0ICAgY29t
LmFwcGxlLkNGTmV0d29yayAgICAgICAgICAgCTB4OTE1OWVhMzIgQ0ZVUkxDYWNoZVdvcmtlclRo
cmVhZCh2b2lkKikgKyAzOTYKNSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkw
NzE3NmY1IF9wdGhyZWFkX3N0YXJ0ICsgMzIxCjYgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAg
ICAgICAJMHg5MDcxNzViMiB0aHJlYWRfc3RhcnQgKyAzNAoKVGhyZWFkIDQ6CjAgICBsaWJTeXN0
ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MDZlNjRhNiBtYWNoX21zZ190cmFwICsgMTAKMSAg
IGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNmVkYzljIG1hY2hfbXNnICsgNzIK
MiAgIGNvbS5hcHBsZS5Db3JlRm91bmRhdGlvbiAgICAgIAkweDkxMTMxMGNlIENGUnVuTG9vcFJ1
blNwZWNpZmljICsgMTc5MAozICAgY29tLmFwcGxlLkNvcmVGb3VuZGF0aW9uICAgICAgCTB4OTEx
MzFjZjggQ0ZSdW5Mb29wUnVuSW5Nb2RlICsgODgKNCAgIGNvbS5hcHBsZS5Gb3VuZGF0aW9uICAg
ICAgICAgIAkweDk1YTQwNDYwICtbTlNVUkxDb25uZWN0aW9uKE5TVVJMQ29ubmVjdGlvblJlYWxs
eUludGVybmFsKSBfcmVzb3VyY2VMb2FkTG9vcDpdICsgMzIwCjUgICBjb20uYXBwbGUuRm91bmRh
dGlvbiAgICAgICAgICAJMHg5NTlkY2YxZCAtW05TVGhyZWFkIG1haW5dICsgNDUKNiAgIGNvbS5h
cHBsZS5Gb3VuZGF0aW9uICAgICAgICAgIAkweDk1OWRjYWM0IF9fTlNUaHJlYWRfX21haW5fXyAr
IDMwOAo3ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTA3MTc2ZjUgX3B0aHJl
YWRfc3RhcnQgKyAzMjEKOCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNzE3
NWIyIHRocmVhZF9zdGFydCArIDM0CgpUaHJlYWQgNToKMCAgIGxpYlN5c3RlbS5CLmR5bGliICAg
ICAgICAgICAgIAkweDkwNmU2NGVlIHNlbWFwaG9yZV93YWl0X3NpZ25hbF90cmFwICsgMTAKMSAg
IGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNzE4ODY2IF9wdGhyZWFkX2NvbmRf
d2FpdCArIDEyNjcKMiAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNzVlMzcx
IHB0aHJlYWRfY29uZF93YWl0ICsgNDgKMyAgIGNvbS56YW5nLlJlZ2V4S2l0ICAgICAgICAgICAg
IAkweDAwNzEwOTYxIFJLRmFzdENvbmRpdGlvbkxvY2sgKyA2NjMKNCAgIGNvbS56YW5nLlJlZ2V4
S2l0ICAgICAgICAgICAgIAkweDAwNzE5ZWZhIC1bUktUaHJlYWRQb29sIHdvcmtlclRocmVhZFN0
YXJ0Ol0gKyA0MzYKNSAgIGNvbS5hcHBsZS5Gb3VuZGF0aW9uICAgICAgICAgIAkweDk1OWRjZjFk
IC1bTlNUaHJlYWQgbWFpbl0gKyA0NQo2ICAgY29tLmFwcGxlLkZvdW5kYXRpb24gICAgICAgICAg
CTB4OTU5ZGNhYzQgX19OU1RocmVhZF9fbWFpbl9fICsgMzA4CjcgICBsaWJTeXN0ZW0uQi5keWxp
YiAgICAgICAgICAgICAJMHg5MDcxNzZmNSBfcHRocmVhZF9zdGFydCArIDMyMQo4ICAgbGliU3lz
dGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTA3MTc1YjIgdGhyZWFkX3N0YXJ0ICsgMzQKClRo
cmVhZCA2OgowICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTA2ZTY0ZWUgc2Vt
YXBob3JlX3dhaXRfc2lnbmFsX3RyYXAgKyAxMAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAg
ICAgICAgCTB4OTA3MTg4NjYgX3B0aHJlYWRfY29uZF93YWl0ICsgMTI2NwoyICAgbGliU3lzdGVt
LkIuZHlsaWIgICAgICAgICAgICAgCTB4OTA3NWUzNzEgcHRocmVhZF9jb25kX3dhaXQgKyA0OAoz
ICAgY29tLnphbmcuUmVnZXhLaXQgICAgICAgICAgICAgCTB4MDA3MTA5NjEgUktGYXN0Q29uZGl0
aW9uTG9jayArIDY2Mwo0ICAgY29tLnphbmcuUmVnZXhLaXQgICAgICAgICAgICAgCTB4MDA3MTll
ZmEgLVtSS1RocmVhZFBvb2wgd29ya2VyVGhyZWFkU3RhcnQ6XSArIDQzNgo1ICAgY29tLmFwcGxl
LkZvdW5kYXRpb24gICAgICAgICAgCTB4OTU5ZGNmMWQgLVtOU1RocmVhZCBtYWluXSArIDQ1CjYg
ICBjb20uYXBwbGUuRm91bmRhdGlvbiAgICAgICAgICAJMHg5NTlkY2FjNCBfX05TVGhyZWFkX19t
YWluX18gKyAzMDgKNyAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNzE3NmY1
IF9wdGhyZWFkX3N0YXJ0ICsgMzIxCjggICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJ
MHg5MDcxNzViMiB0aHJlYWRfc3RhcnQgKyAzNAoKVGhyZWFkIDc6CjAgICBsaWJTeXN0ZW0uQi5k
eWxpYiAgICAgICAgICAgICAJMHg5MDczNjVlMiBzZWxlY3QkREFSV0lOX0VYVFNOICsgMTAKMSAg
IGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNzE3NmY1IF9wdGhyZWFkX3N0YXJ0
ICsgMzIxCjIgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MDcxNzViMiB0aHJl
YWRfc3RhcnQgKyAzNAoKVGhyZWFkIDg6CjAgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAg
ICAJMHg5MDZlNjUwNiBzZW1hcGhvcmVfdGltZWR3YWl0X3NpZ25hbF90cmFwICsgMTAKMSAgIGxp
YlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNzE4ODRmIF9wdGhyZWFkX2NvbmRfd2Fp
dCArIDEyNDQKMiAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNzFhMGQzIHB0
aHJlYWRfY29uZF90aW1lZHdhaXRfcmVsYXRpdmVfbnAgKyA0NwozICAgY29tLmFwcGxlLkZvdW5k
YXRpb24gICAgICAgICAgCTB4OTVhMjJlOGMgLVtOU0NvbmRpdGlvbiB3YWl0VW50aWxEYXRlOl0g
KyAyMzYKNCAgIGNvbS5hcHBsZS5Gb3VuZGF0aW9uICAgICAgICAgIAkweDk1YTIyY2EwIC1bTlND
b25kaXRpb25Mb2NrIGxvY2tXaGVuQ29uZGl0aW9uOmJlZm9yZURhdGU6XSArIDE0NAo1ICAgY29t
LmFwcGxlLkZvdW5kYXRpb24gICAgICAgICAgCTB4OTVhMjJjMDUgLVtOU0NvbmRpdGlvbkxvY2sg
bG9ja1doZW5Db25kaXRpb246XSArIDY5CjYgICBjb20uYXBwbGUuQXBwS2l0ICAgICAgICAgICAg
ICAJMHg5MzI3ODQ3MCAtW05TVUlIZWFydEJlYXQgX2hlYXJ0QmVhdFRocmVhZDpdICsgNzUzCjcg
ICBjb20uYXBwbGUuRm91bmRhdGlvbiAgICAgICAgICAJMHg5NTlkY2YxZCAtW05TVGhyZWFkIG1h
aW5dICsgNDUKOCAgIGNvbS5hcHBsZS5Gb3VuZGF0aW9uICAgICAgICAgIAkweDk1OWRjYWM0IF9f
TlNUaHJlYWRfX21haW5fXyArIDMwOAo5ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAg
CTB4OTA3MTc2ZjUgX3B0aHJlYWRfc3RhcnQgKyAzMjEKMTAgIGxpYlN5c3RlbS5CLmR5bGliICAg
ICAgICAgICAgIAkweDkwNzE3NWIyIHRocmVhZF9zdGFydCArIDM0CgpUaHJlYWQgOToKMCAgIGxp
YlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNzUwMDdhIF9fd29ya3Ffb3BzICsgMTAK
MSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNzUwMGFhIHN0YXJ0X3dxdGhy
ZWFkICsgMzAKClRocmVhZCAxMDoKClRocmVhZCAxMToKMCAgIGxpYlN5c3RlbS5CLmR5bGliICAg
ICAgICAgICAgIAkweDkwNmU2NGE2IG1hY2hfbXNnX3RyYXAgKyAxMAoxICAgbGliU3lzdGVtLkIu
ZHlsaWIgICAgICAgICAgICAgCTB4OTA2ZWRjOWMgbWFjaF9tc2cgKyA3MgoyICAgY29tLmFwcGxl
LkNvcmVGb3VuZGF0aW9uICAgICAgCTB4OTExMzEwY2UgQ0ZSdW5Mb29wUnVuU3BlY2lmaWMgKyAx
NzkwCjMgICBjb20uYXBwbGUuQ29yZUZvdW5kYXRpb24gICAgICAJMHg5MTEzMWQ1NCBDRlJ1bkxv
b3BSdW4gKyA4NAo0ICAgY29tLmFwcGxlLkRlc2t0b3BTZXJ2aWNlcyAgICAgCTB4OTZmYjZlYTMg
VFN5c3RlbU5vdGlmaWNhdGlvblRhc2s6OlN5c3RlbU5vdGlmaWNhdGlvblRhc2tQcm9jKHZvaWQq
KSArIDEyMwo1ICAgLi4ucGxlLkNvcmVTZXJ2aWNlcy5DYXJib25Db3JlCTB4OTYyMDA1NWIgUHJp
dmF0ZU1QRW50cnlQb2ludCArIDU2CjYgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJ
MHg5MDcxNzZmNSBfcHRocmVhZF9zdGFydCArIDMyMQo3ICAgbGliU3lzdGVtLkIuZHlsaWIgICAg
ICAgICAgICAgCTB4OTA3MTc1YjIgdGhyZWFkX3N0YXJ0ICsgMzQKClRocmVhZCAxMjoKMCAgIGxp
YlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNmU2NGE2IG1hY2hfbXNnX3RyYXAgKyAx
MAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTA2ZWRjOWMgbWFjaF9tc2cg
KyA3MgoyICAgY29tLmFwcGxlLkNvcmVGb3VuZGF0aW9uICAgICAgCTB4OTExMzEwY2UgQ0ZSdW5M
b29wUnVuU3BlY2lmaWMgKyAxNzkwCjMgICBjb20uYXBwbGUuQ29yZUZvdW5kYXRpb24gICAgICAJ
MHg5MTEzMWQ1NCBDRlJ1bkxvb3BSdW4gKyA4NAo0ICAgY29tLmFwcGxlLkRlc2t0b3BTZXJ2aWNl
cyAgICAgCTB4OTZmYjcwMWMgVEZTRXZlbnRzTm90aWZpY2F0aW9uVGFzazo6RlNFdmVudHNOb3Rp
ZmljYXRpb25UYXNrUHJvYyh2b2lkKikgKyAyMTYKNSAgIC4uLnBsZS5Db3JlU2VydmljZXMuQ2Fy
Ym9uQ29yZQkweDk2MjAwNTViIFByaXZhdGVNUEVudHJ5UG9pbnQgKyA1Ngo2ICAgbGliU3lzdGVt
LkIuZHlsaWIgICAgICAgICAgICAgCTB4OTA3MTc2ZjUgX3B0aHJlYWRfc3RhcnQgKyAzMjEKNyAg
IGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNzE3NWIyIHRocmVhZF9zdGFydCAr
IDM0CgpUaHJlYWQgMTM6CjAgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MDZl
ZDY4ZSBfX3NlbXdhaXRfc2lnbmFsICsgMTAKMSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAg
ICAgIAkweDkwNzE4MzZkIHB0aHJlYWRfY29uZF93YWl0JFVOSVgyMDAzICsgNzMKMiAgIC4uLnBs
ZS5Db3JlU2VydmljZXMuQ2FyYm9uQ29yZQkweDk2MjAyMzQ3IFRTV2FpdE9uQ29uZGl0aW9uICsg
MTI2CjMgICAuLi5wbGUuQ29yZVNlcnZpY2VzLkNhcmJvbkNvcmUJMHg5NjFlMTJkMiBUU1dhaXRP
bkNvbmRpdGlvblRpbWVkUmVsYXRpdmUgKyAyMDIKNCAgIC4uLnBsZS5Db3JlU2VydmljZXMuQ2Fy
Ym9uQ29yZQkweDk2MjAxZmM0IE1QV2FpdE9uUXVldWUgKyAyMDgKNSAgIGNvbS5hcHBsZS5EZXNr
dG9wU2VydmljZXMgICAgIAkweDk2ZmMxZmRhIFROb2RlU3luY1Rhc2s6OlN5bmNUYXNrUHJvYyh2
b2lkKikgKyA4NAo2ICAgLi4ucGxlLkNvcmVTZXJ2aWNlcy5DYXJib25Db3JlCTB4OTYyMDA1NWIg
UHJpdmF0ZU1QRW50cnlQb2ludCArIDU2CjcgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAg
ICAJMHg5MDcxNzZmNSBfcHRocmVhZF9zdGFydCArIDMyMQo4ICAgbGliU3lzdGVtLkIuZHlsaWIg
ICAgICAgICAgICAgCTB4OTA3MTc1YjIgdGhyZWFkX3N0YXJ0ICsgMzQKClRocmVhZCAxNDoKMCAg
IGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNzE2ZjY2IGtldmVudCArIDEwCjEg
ICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MDcxNzZmNSBfcHRocmVhZF9zdGFy
dCArIDMyMQoyICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTA3MTc1YjIgdGhy
ZWFkX3N0YXJ0ICsgMzQKClRocmVhZCAxNToKMCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAg
ICAgIAkweDkwNmU2NGE2IG1hY2hfbXNnX3RyYXAgKyAxMAoxICAgbGliU3lzdGVtLkIuZHlsaWIg
ICAgICAgICAgICAgCTB4OTA2ZWRjOWMgbWFjaF9tc2cgKyA3MgoyICAgY29tLmFwcGxlLkNvcmVG
b3VuZGF0aW9uICAgICAgCTB4OTExMzEwY2UgQ0ZSdW5Mb29wUnVuU3BlY2lmaWMgKyAxNzkwCjMg
ICBjb20uYXBwbGUuQ29yZUZvdW5kYXRpb24gICAgICAJMHg5MTEzMWQ1NCBDRlJ1bkxvb3BSdW4g
KyA4NAo0ICAgY29tLmFwcGxlLlF1aWNrVGltZSAgICAgICAgICAgCTB4OTIyMThkYzMgUVRTTmV0
d29ya1RocmVhZF9SdW5UaHJlYWQgKyAxMzEKNSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAg
ICAgIAkweDkwNzE3NmY1IF9wdGhyZWFkX3N0YXJ0ICsgMzIxCjYgICBsaWJTeXN0ZW0uQi5keWxp
YiAgICAgICAgICAgICAJMHg5MDcxNzViMiB0aHJlYWRfc3RhcnQgKyAzNAoKVGhyZWFkIDE2Ogow
ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTA2ZWQ2OGUgX19zZW13YWl0X3Np
Z25hbCArIDEwCjEgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MDcxODM2ZCBw
dGhyZWFkX2NvbmRfd2FpdCRVTklYMjAwMyArIDczCjIgICBsaWJHTFByb2dyYW1tYWJpbGl0eS5k
eWxpYiAgICAJMHg5MThkNTQzMiBnbHZtRG9Xb3JrICsgMTYyCjMgICBsaWJTeXN0ZW0uQi5keWxp
YiAgICAgICAgICAgICAJMHg5MDcxNzZmNSBfcHRocmVhZF9zdGFydCArIDMyMQo0ICAgbGliU3lz
dGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTA3MTc1YjIgdGhyZWFkX3N0YXJ0ICsgMzQKClRo
cmVhZCAxNzoKMCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNmU2NGE2IG1h
Y2hfbXNnX3RyYXAgKyAxMAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTA2
ZWRjOWMgbWFjaF9tc2cgKyA3MgoyICAgY29tLmFwcGxlLkNvcmVGb3VuZGF0aW9uICAgICAgCTB4
OTExMzEwY2UgQ0ZSdW5Mb29wUnVuU3BlY2lmaWMgKyAxNzkwCjMgICBjb20uYXBwbGUuQ29yZUZv
dW5kYXRpb24gICAgICAJMHg5MTEzMWNmOCBDRlJ1bkxvb3BSdW5Jbk1vZGUgKyA4OAo0ICAgY29t
LmFwcGxlLmF1ZGlvLkNvcmVBdWRpbyAgICAgCTB4OTA0MTQ0NjQgSEFMUnVuTG9vcDo6T3duVGhy
ZWFkKHZvaWQqKSArIDE2MAo1ICAgY29tLmFwcGxlLmF1ZGlvLkNvcmVBdWRpbyAgICAgCTB4OTA0
MTQzMDAgQ0FQVGhyZWFkOjpFbnRyeShDQVBUaHJlYWQqKSArIDk2CjYgICBsaWJTeXN0ZW0uQi5k
eWxpYiAgICAgICAgICAgICAJMHg5MDcxNzZmNSBfcHRocmVhZF9zdGFydCArIDMyMQo3ICAgbGli
U3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTA3MTc1YjIgdGhyZWFkX3N0YXJ0ICsgMzQK
ClRocmVhZCAxODoKMCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNmVkNjhl
IF9fc2Vtd2FpdF9zaWduYWwgKyAxMAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAg
CTB4OTA3MTgzNmQgcHRocmVhZF9jb25kX3dhaXQkVU5JWDIwMDMgKyA3MwoyICAgY29tLmFwcGxl
LldlYkNvcmUgICAgICAgICAgICAgCTB4MDEyYzczMWIgV2ViQ29yZTo6TG9jYWxTdG9yYWdlVGhy
ZWFkOjpsb2NhbFN0b3JhZ2VUaHJlYWQoKSArIDQyNwozICAgbGliU3lzdGVtLkIuZHlsaWIgICAg
ICAgICAgICAgCTB4OTA3MTc2ZjUgX3B0aHJlYWRfc3RhcnQgKyAzMjEKNCAgIGxpYlN5c3RlbS5C
LmR5bGliICAgICAgICAgICAgIAkweDkwNzE3NWIyIHRocmVhZF9zdGFydCArIDM0CgpUaHJlYWQg
MTk6CjAgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MDZlZDY4ZSBfX3NlbXdh
aXRfc2lnbmFsICsgMTAKMSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNzE4
MzZkIHB0aHJlYWRfY29uZF93YWl0JFVOSVgyMDAzICsgNzMKMiAgIGNvbS5hcHBsZS5XZWJDb3Jl
ICAgICAgICAgICAgIAkweDAxMmM3MzFiIFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6bG9j
YWxTdG9yYWdlVGhyZWFkKCkgKyA0MjcKMyAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAg
IAkweDkwNzE3NmY1IF9wdGhyZWFkX3N0YXJ0ICsgMzIxCjQgICBsaWJTeXN0ZW0uQi5keWxpYiAg
ICAgICAgICAgICAJMHg5MDcxNzViMiB0aHJlYWRfc3RhcnQgKyAzNAoKVGhyZWFkIDIwOgowICAg
bGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTA2ZWQ2OGUgX19zZW13YWl0X3NpZ25h
bCArIDEwCjEgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MDcxODM2ZCBwdGhy
ZWFkX2NvbmRfd2FpdCRVTklYMjAwMyArIDczCjIgICBjb20uYXBwbGUuQ29sb3JTeW5jICAgICAg
ICAgICAJMHg5NWY4MzQ2MCBwdGhyZWFkU2VtYXBob3JlV2FpdCh0X3B0aHJlYWRTZW1hcGhvcmUq
KSArIDQyCjMgICBjb20uYXBwbGUuQ29sb3JTeW5jICAgICAgICAgICAJMHg5NWY5NWQ5MiBDTU1D
b252VGFzayh2b2lkKikgKyA1NAo0ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4
OTA3MTc2ZjUgX3B0aHJlYWRfc3RhcnQgKyAzMjEKNSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAg
ICAgICAgIAkweDkwNzE3NWIyIHRocmVhZF9zdGFydCArIDM0CgpUaHJlYWQgMjE6CjAgICBsaWJT
eXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5MDZlNjUwNiBzZW1hcGhvcmVfdGltZWR3YWl0
X3NpZ25hbF90cmFwICsgMTAKMSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDkw
NzE4ODRmIF9wdGhyZWFkX2NvbmRfd2FpdCArIDEyNDQKMiAgIGxpYlN5c3RlbS5CLmR5bGliICAg
ICAgICAgICAgIAkweDkwNzFhMGQzIHB0aHJlYWRfY29uZF90aW1lZHdhaXRfcmVsYXRpdmVfbnAg
KyA0NwozICAgLi4ucGxlLkNvcmVTZXJ2aWNlcy5DYXJib25Db3JlCTB4OTYxZTEyZmUgVFNXYWl0
T25Db25kaXRpb25UaW1lZFJlbGF0aXZlICsgMjQ2CjQgICAuLi5wbGUuQ29yZVNlcnZpY2VzLkNh
cmJvbkNvcmUJMHg5NjIwMWZjNCBNUFdhaXRPblF1ZXVlICsgMjA4CjUgICBjb20uYXBwbGUuRGVz
a3RvcFNlcnZpY2VzICAgICAJMHg5NmZjM2YyNCBURm9sZGVyU2l6ZVRhc2s6OkZvbGRlclNpemVU
YXNrUHJvYyh2b2lkKikgKyAxMDQKNiAgIC4uLnBsZS5Db3JlU2VydmljZXMuQ2FyYm9uQ29yZQkw
eDk2MjAwNTViIFByaXZhdGVNUEVudHJ5UG9pbnQgKyA1Ngo3ICAgbGliU3lzdGVtLkIuZHlsaWIg
ICAgICAgICAgICAgCTB4OTA3MTc2ZjUgX3B0aHJlYWRfc3RhcnQgKyAzMjEKOCAgIGxpYlN5c3Rl
bS5CLmR5bGliICAgICAgICAgICAgIAkweDkwNzE3NWIyIHRocmVhZF9zdGFydCArIDM0CgpUaHJl
YWQgMCBjcmFzaGVkIHdpdGggWDg2IFRocmVhZCBTdGF0ZSAoMzItYml0KToKICBlYXg6IDB4YmZm
ZmYwM2MgIGVieDogMHg5NWFhZWIwMSAgZWN4OiAweDFhNGE2NzAwICBlZHg6IDB4MDAwMDAwMDAK
ICBlZGk6IDB4MWE0YTY3MDAgIGVzaTogMHgxOWU0YzA4MCAgZWJwOiAweGJmZmZmMDQ4ICBlc3A6
IDB4YmZmZmYwMjAKICAgc3M6IDB4MDAwMDAwMWYgIGVmbDogMHgwMDAxMDI4MiAgZWlwOiAweDAw
ZjI3Y2RhICAgY3M6IDB4MDAwMDAwMTcKICAgZHM6IDB4MDAwMDAwMWYgICBlczogMHgwMDAwMDAx
ZiAgIGZzOiAweDAwMDAwMDAwICAgZ3M6IDB4MDAwMDAwMzcKICBjcjI6IDB4MDAwMDAwMDAKCkJp
bmFyeSBJbWFnZXM6CiAgICAweDEwMDAgLSAgIDB4MTMzZmVmICBjb20uYXBwbGUuU2FmYXJpIDMu
MS4yICg1NTI1LjIwLjEpIDxiODkxMWRiM2M5ZjRlODkyNTdmNDA3NzVhMjdiZTdjNj4gL0FwcGxp
Y2F0aW9ucy9TYWZhcmkuYXBwL0NvbnRlbnRzL01hY09TL1NhZmFyaQogIDB4MTdiMDAwIC0gICAw
eDE3Y2ZmYyArV2ViS2l0TmlnaHRseUVuYWJsZXIuZHlsaWIgPz8/ICg/Pz8pIDwyOWQ2ZTYxMThl
YjM4NGQ5OGIzZWRkYTUxNTdmNDFkMT4gL0FwcGxpY2F0aW9ucy9XZWJLaXQuYXBwL0NvbnRlbnRz
L1Jlc291cmNlcy9XZWJLaXROaWdodGx5RW5hYmxlci5keWxpYgogIDB4MTgxMDAwIC0gICAweDI0
OGZlZiAgY29tLmFwcGxlLldlYktpdCByMzU0MDcgKDUyNy4zKykgPGI5YzU5Mzc3NzIxNTgyODFm
YjMxMGZlZjRlZjU0YTlkPiAvQXBwbGljYXRpb25zL1dlYktpdC5hcHAvQ29udGVudHMvRnJhbWV3
b3Jrcy8xMC41L1dlYktpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9XZWJLaXQKICAweDJkNTAwMCAt
ICAgMHgyZTRmZjggIFN5bmRpY2F0aW9uVUkgPz8/ICg/Pz8pIDxlZGRlMDEzMzgyOTk3MWRiZDhh
MGYzNDczY2RiODVmYz4gL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL1N5bmRpY2F0
aW9uVUkuZnJhbWV3b3JrL1ZlcnNpb25zL0EvU3luZGljYXRpb25VSQogIDB4MmY0MDAwIC0gICAw
eDNlOGZlZiAgY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlIDUyNysgKDUyNy4zKykgPDMzYWU2ODVi
YWNiZDJkNzNlYzQ4MDQzNTIyNTA0YjM0PiAvQXBwbGljYXRpb25zL1dlYktpdC5hcHAvQ29udGVu
dHMvRnJhbWV3b3Jrcy8xMC41L0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL0ph
dmFTY3JpcHRDb3JlCiAgMHg0YWUwMDAgLSAgIDB4NGI3ZmZmICtuZXQuc291cmNlZm9yZ2UuU2Fm
YXJpQWRCbG9jayAwLjMuMiAoMC4zLjIpIDw4M2QzZjExMWY2NjBiZTM4NjZmZjQyNDI3ZTBiZDFj
OT4gL0xpYnJhcnkvSW5wdXRNYW5hZ2Vycy9TYWZhcmkgQWRCbG9jay9TYWZhcmkgQWRCbG9jay5i
dW5kbGUvQ29udGVudHMvTWFjT1MvU2FmYXJpIEFkQmxvY2sKICAweDcwMDAwMCAtICAgMHg3M2Rm
ZTMgK2NvbS56YW5nLlJlZ2V4S2l0IDAuNi4wICgwLjYuMCkgL0xpYnJhcnkvSW5wdXRNYW5hZ2Vy
cy9TYWZhcmkgQWRCbG9jay9TYWZhcmkgQWRCbG9jay5idW5kbGUvQ29udGVudHMvRnJhbWV3b3Jr
cy9SZWdleEtpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9SZWdleEtpdAogIDB4YzgxMDAwIC0gIDB4
MTQzMmZmZiAgY29tLmFwcGxlLldlYkNvcmUgNTI3KyAoNTI3LjMrKSA8YTQ0YzQyZTYxOTlmYTIy
MjZkMDAyNDkzYjYxN2ZlNWI+IC9BcHBsaWNhdGlvbnMvV2ViS2l0LmFwcC9Db250ZW50cy9GcmFt
ZXdvcmtzLzEwLjUvV2ViQ29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9XZWJDb3JlCiAweDE5ZTQw
MDAgLSAgMHgxOWU5ZmYzICBsaWJDR1hDb3JlSW1hZ2UuQS5keWxpYiA/Pz8gKD8/PykgPDMyMjY1
ZWMxNTdkYjk4YTMzYzVkY2YwZTY2ODdkZWMyPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQ29yZUdy
YXBoaWNzLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jlc291cmNlcy9saWJDR1hDb3JlSW1hZ2UuQS5k
eWxpYgogMHgxYjAwMDAwIC0gIDB4MWMxZWZmNyAgY29tLmFwcGxlLlJhd0NhbWVyYS5idW5kbGUg
Mi4wLjggKDIuMC44KSA8NTYwNjc5NDUxMzA4MDBhMzQ4ZWIwNzY2NzZkNDFlOTI+IC9TeXN0ZW0v
TGlicmFyeS9Db3JlU2VydmljZXMvUmF3Q2FtZXJhLmJ1bmRsZS9Db250ZW50cy9NYWNPUy9SYXdD
YW1lcmEKMHgxN2U2NjAwMCAtIDB4MTdlNjdmZmMgIGNvbS5hcHBsZS5KYXZhUGx1Z2luQ29jb2Eg
MTIuMS4wICgxMi4xLjApIDxkMjFhMTJjNTY2OGQ0ZDg5YmZlNDkyYTUyMjNhNzVjYz4gL0xpYnJh
cnkvSW50ZXJuZXQgUGx1Zy1JbnMvSmF2YVBsdWdpbkNvY29hLmJ1bmRsZS9Db250ZW50cy9NYWNP
Uy9KYXZhUGx1Z2luQ29jb2EKMHgxN2ViODAwMCAtIDB4MTdlYmRmZmQgIGNvbS5hcHBsZS5KYXZh
Vk0gMTIuMS4wICgxMi4xLjApIDwyNWM1NDZjMzZlNWJlZDk3ODU3OWQyODEwODBhYjRjOD4gL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSmF2YVZNLmZyYW1ld29yay9WZXJzaW9ucy9BL0phdmFW
TQoweDE4NTU4MDAwIC0gMHgxODU2MmZmZSAgY29tLmFwcGxlLlVSTE1vdW50IDMuMS4xICgzLjEu
MSkgPGI0MDE4ZTY4M2ZhZDQyNTllZTc4MDcwZTkxZjM1MDI5PiAvU3lzdGVtL0xpYnJhcnkvUHJp
dmF0ZUZyYW1ld29ya3MvVVJMTW91bnQuZnJhbWV3b3JrL1VSTE1vdW50CjB4MThhZDUwMDAgLSAw
eDE4YWQ2ZmYzICBBVFNISS5keWxpYiA/Pz8gKD8/PykgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0FU
Uy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9SZXNvdXJjZXMvQVRTSEkuZHlsaWIKMHgxOGYwNTAwMCAt
IDB4MThmMjFmZjcgIEdMUmVuZGVyZXJGbG9hdCA/Pz8gKD8/PykgPDk4YmU5Y2I0NGViMDE4ZmE2
MzAwZTk0NDdiMjE0ZmQ3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3
b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL0dMUmVuZGVyZXJGbG9hdC5idW5kbGUvR0xSZW5kZXJl
ckZsb2F0CjB4MThmYmUwMDAgLSAweDE4ZmU1ZmRkICtuZXQudGVsZXN0cmVhbS53bXYud2VicGx1
Z2luIDIuMi4wLjQ5ICgyLjIuMC40OSkgL0xpYnJhcnkvSW50ZXJuZXQgUGx1Zy1JbnMvRmxpcDRN
YWMgV01WIFBsdWdpbi53ZWJwbHVnaW4vQ29udGVudHMvTWFjT1MvRmxpcDRNYWMgV01WIFBsdWdp
bgoweDE5OTE0MDAwIC0gMHgxOTkxNWZmNyArY29tLmdvb2dsZS5Hb29nbGVOb3RpZmllclF1aWNr
QWRkQ01QbHVnaW4gMS45LjEwMCAoMS45LjEwMC4yMTUpIC9Vc2Vycy9xdWlyaXMvTGlicmFyeS9D
b250ZXh0dWFsIE1lbnUgSXRlbXMvR29vZ2xlIE5vdGlmaWVyIFF1aWNrIEFkZCBDTSBQbHVnaW4u
cGx1Z2luL0NvbnRlbnRzL01hY09TL0dvb2dsZSBOb3RpZmllciBRdWljayBBZGQgQ00gUGx1Z2lu
CjB4MTk5MWEwMDAgLSAweDE5OTI2ZmY2ICBjb20uYXBwbGUuYWlycG9ydC5kaXNrbWVudSAxLjIu
MSAoMTIxLjQpIC9TeXN0ZW0vTGlicmFyeS9Db250ZXh0dWFsIE1lbnUgSXRlbXMvQWlyUG9ydCBE
aXNrIE1lbnUucGx1Z2luL0NvbnRlbnRzL01hY09TL0FpclBvcnQgRGlzayBNZW51CjB4MTk5MmIw
MDAgLSAweDE5OTJkZmZlICBjb20uYXBwbGUuQXV0b21hdG9yQ01NIDEuMSAoMTYwKSA8NjUwMDc5
ZmQ5NWE1N2U4MTMxZTc5NDA5YTAwYjJhZWQ+IC9TeXN0ZW0vTGlicmFyeS9Db250ZXh0dWFsIE1l
bnUgSXRlbXMvQXV0b21hdG9yQ01NLnBsdWdpbi9Db250ZW50cy9NYWNPUy9BdXRvbWF0b3JDTU0K
MHgxOTkzMzAwMCAtIDB4MTk5MzRmZmQgIGNvbS5hcHBsZS5CbHVldG9vdGhNZW51IDIuMSAoMi4x
ZjE3KSAvU3lzdGVtL0xpYnJhcnkvQ29udGV4dHVhbCBNZW51IEl0ZW1zL0JsdWV0b290aENvbnRl
eHR1YWxNZW51LnBsdWdpbi9Db250ZW50cy9NYWNPUy9CbHVldG9vdGhDb250ZXh0dWFsTWVudQow
eDFhNmIwMDAwIC0gMHgxYTcxZWZmNyAgY29tLmFwcGxlLkJsdWV0b290aCAyLjEgKDIuMWYxNykg
PDI5YWI1ODQzYmI2MDhjMTU1ZDRkNzM1MzMyMGMyMTk0PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9JT0JsdWV0b290aC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9JT0JsdWV0b290aAoweDFhNzZh
MDAwIC0gMHgxYTc2ZGZmZiAgY29tLmFwcGxlLkJlemVsU2VydmljZXNGVyAxLjQuODMyICgxLjQu
ODMyKSAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQmV6ZWxTZXJ2aWNlcy5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9CZXplbFNlcnZpY2VzCjB4MWE3NzQwMDAgLSAweDFhNzc5ZmZmICBj
b20uYXBwbGUuRm9sZGVyQWN0aW9uc01lbnUgMS4zLjIgKDEuMy4yKSA8OWJhNjllZjBiZWM5NjI2
NGE3OWZhMjhiM2E1ZjA1OGI+IC9TeXN0ZW0vTGlicmFyeS9Db250ZXh0dWFsIE1lbnUgSXRlbXMv
Rm9sZGVyQWN0aW9uc01lbnUucGx1Z2luL0NvbnRlbnRzL01hY09TL0ZvbGRlckFjdGlvbnNNZW51
CjB4MWE4MmYwMDAgLSAweDFhODRlZmVkICBjb20uYXBwbGUuYXVkaW8uQ29yZUF1ZGlvS2l0IDEu
NSAoMS41KSA8ODJmMmU1MmM1MDJkYjdmM2IzMjM0OWE1NDIwOWEwZmU+IC9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVBdWRpb0tpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db3JlQXVkaW9L
aXQKMHgxYjg5YzAwMCAtIDB4MWI4YWFmZWIgIGxpYlNpbXBsaWZpZWRDaGluZXNlQ29udmVydGVy
LmR5bGliID8/PyAoPz8/KSA8YTUwNjUyODcxNTQ3NWNmZjZjNjIzNjc1ZjNhNzJiZjg+IC9TeXN0
ZW0vTGlicmFyeS9Db3JlU2VydmljZXMvRW5jb2RpbmdzL2xpYlNpbXBsaWZpZWRDaGluZXNlQ29u
dmVydGVyLmR5bGliCjB4MWJhNDEwMDAgLSAweDFiYTQzZmZiICBjb20uYXBwbGUuUERGSW1wb3J0
ZXIgMS43ICg/Pz8pIDw0OTBkZTc5NmZlOWE2YjNiOGE5ODQ0YTE2MzBkMzhlMj4gL1N5c3RlbS9M
aWJyYXJ5L0NvbXBvbmVudHMvUERGSW1wb3J0ZXIuY29tcG9uZW50L0NvbnRlbnRzL01hY09TL1BE
RkltcG9ydGVyCjB4MWJiYWIwMDAgLSAweDFiYmFlZmZmICBjb20uYXBwbGUuYXVkaW8uQXVkaW9J
UENQbHVnSW4gMS4wLjQgKDEuMC40KSA8OTAyOGY4ZmEzNWIxMGE1NzM4MThiZjQ2MDBkOTBmZGY+
IC9TeXN0ZW0vTGlicmFyeS9FeHRlbnNpb25zL0F1ZGlvSVBDRHJpdmVyLmtleHQvQ29udGVudHMv
UmVzb3VyY2VzL0F1ZGlvSVBDUGx1Z0luLmJ1bmRsZS9Db250ZW50cy9NYWNPUy9BdWRpb0lQQ1Bs
dWdJbgoweDFiYmI0MDAwIC0gMHgxYmJiOWZmZiAgY29tLmFwcGxlLmF1ZGlvLkFwcGxlSERBSEFM
UGx1Z0luIDEuNS43ICgxLjUuN2EyNCkgL1N5c3RlbS9MaWJyYXJ5L0V4dGVuc2lvbnMvQXBwbGVI
REEua2V4dC9Db250ZW50cy9QbHVnSW5zL0FwcGxlSERBSEFMUGx1Z0luLmJ1bmRsZS9Db250ZW50
cy9NYWNPUy9BcHBsZUhEQUhBTFBsdWdJbgoweDFjNjFhMDAwIC0gMHgxYzYyY2ZmZiAgbGliVHJh
ZGl0aW9uYWxDaGluZXNlQ29udmVydGVyLmR5bGliID8/PyAoPz8/KSA8NjJkYjIxMWMwNzQxOWEw
NDMyMjU0YTg2ZmNjOTY1ODc+IC9TeXN0ZW0vTGlicmFyeS9Db3JlU2VydmljZXMvRW5jb2Rpbmdz
L2xpYlRyYWRpdGlvbmFsQ2hpbmVzZUNvbnZlcnRlci5keWxpYgoweDFjNmM1MDAwIC0gMHgxYzcz
N2ZmZiAgY29tLmFwcGxlLmlMaWZlTWVkaWFCcm93c2VyIDEuMC44ICgyMTIpIDxhZmExZTFjYjI0
ZGFiODgwMjI2MTQ5M2U4NDY5MjU3MD4gL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtz
L2lMaWZlTWVkaWFCcm93c2VyLmZyYW1ld29yay9WZXJzaW9ucy9BL2lMaWZlTWVkaWFCcm93c2Vy
CjB4MWNjYWYwMDAgLSAweDFjZWVmZmQyICtuZXQudGVsZXN0cmVhbS53bXYuaW1wb3J0IDIuMi4w
LjQ5ICgyLjIuMC40OSkgL0xpYnJhcnkvUXVpY2tUaW1lL0ZsaXA0TWFjIFdNViBJbXBvcnQuY29t
cG9uZW50L0NvbnRlbnRzL01hY09TL0ZsaXA0TWFjIFdNViBJbXBvcnQKMHgxY2YyNzAwMCAtIDB4
MWQwODdmZTEgIGNvbS5hcHBsZS5RdWlja1RpbWVTdHJlYW1pbmcuY29tcG9uZW50IDcuNSAoODYx
KSA8OTgyMWVkMTY2N2ZiNDYxMzU3NzNmNDEzNTQwMDg2NzE+IC9TeXN0ZW0vTGlicmFyeS9RdWlj
a1RpbWUvUXVpY2tUaW1lU3RyZWFtaW5nLmNvbXBvbmVudC9Db250ZW50cy9NYWNPUy9RdWlja1Rp
bWVTdHJlYW1pbmcKMHgxZDE5ZDAwMCAtIDB4MWQxYTJmZmIgIGNvbS5hcHBsZS5BcHBsZU1QRUcy
Q29kZWMgMS4wLjEgKDIyMCkgL0xpYnJhcnkvUXVpY2tUaW1lL0FwcGxlTVBFRzJDb2RlYy5jb21w
b25lbnQvQ29udGVudHMvTWFjT1MvQXBwbGVNUEVHMkNvZGVjCjB4MWQzY2YwMDAgLSAweDFkOWNm
ZmZiICtjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIucGx1Z2luIDkuMC4xMjQgKDEuMC40ZjYw
KSA8ODM1NWRjZjA3NjU2NGI2Nzg0YzUxN2ZkMGVjY2IyZjI+IC9MaWJyYXJ5L0ludGVybmV0IFBs
dWctSW5zL0ZsYXNoIFBsYXllci5wbHVnaW4vQ29udGVudHMvTWFjT1MvRmxhc2ggUGxheWVyCjB4
MWRiMTAwMDAgLSAweDFkYzkyZmVmICBHTEVuZ2luZSA/Pz8gKD8/PykgPGU5YjNjOTNlNTBlMzIz
NmNhZTQzYTIxNjFlMzMxNzIwPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJh
bWV3b3JrL1Jlc291cmNlcy9HTEVuZ2luZS5idW5kbGUvR0xFbmdpbmUKMHgxZGNjMDAwMCAtIDB4
MWUwMDVmZmYgIGNvbS5hcHBsZS5kcml2ZXIuQXBwbGVJbnRlbEdNQVgzMTAwR0xEcml2ZXIgMS41
LjI4ICg1LjIuOCkgPGFkODk2MWIyMWJmYWEwNWZjODEyZWI1NGJiNWVmMGVjPiAvU3lzdGVtL0xp
YnJhcnkvRXh0ZW5zaW9ucy9BcHBsZUludGVsR01BWDMxMDBHTERyaXZlci5idW5kbGUvQ29udGVu
dHMvTWFjT1MvQXBwbGVJbnRlbEdNQVgzMTAwR0xEcml2ZXIKMHgxZjExNjAwMCAtIDB4MWYxMzBm
YzMgIGNvbS5hcHBsZS5BcHBsZUludGVybWVkaWF0ZUNvZGVjIDEuMiAoMTQ1KSAvTGlicmFyeS9R
dWlja1RpbWUvQXBwbGVJbnRlcm1lZGlhdGVDb2RlYy5jb21wb25lbnQvQ29udGVudHMvTWFjT1Mv
QXBwbGVJbnRlcm1lZGlhdGVDb2RlYwoweDFmMTU4MDAwIC0gMHgxZjE5M2ZmZiAgY29tLmFwcGxl
LlF1aWNrVGltZUZpcmVXaXJlRFYuY29tcG9uZW50IDcuNSAoODYxKSAvU3lzdGVtL0xpYnJhcnkv
UXVpY2tUaW1lL1F1aWNrVGltZUZpcmVXaXJlRFYuY29tcG9uZW50L0NvbnRlbnRzL01hY09TL1F1
aWNrVGltZUZpcmVXaXJlRFYKMHgxZjE5ZTAwMCAtIDB4MWYxYjhmZTMgIGNvbS5hcHBsZS5hcHBs
ZXBpeGxldHZpZGVvIDEuMi4xNiAoMS4yZDE2KSA8Nzk4OTMwZDQ2ZmI2MzIwMmQwNTRiYmFiZjZl
OGMwZTY+IC9TeXN0ZW0vTGlicmFyeS9RdWlja1RpbWUvQXBwbGVQaXhsZXRWaWRlby5jb21wb25l
bnQvQ29udGVudHMvTWFjT1MvQXBwbGVQaXhsZXRWaWRlbwoweDIwMWFiMDAwIC0gMHgyMDFlN2Zl
MyAgY29tLmFwcGxlLkFwcGxlVkFGcmFtZXdvcmsgNC4wLjIwICg0LjAuMjApIC9TeXN0ZW0vTGli
cmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9BcHBsZVZBLmZyYW1ld29yay9WZXJzaW9ucy9BL0FwcGxl
VkEKMHgyMWE1NDAwMCAtIDB4MjFjMTZmZWEgK25ldC50ZWxlc3RyZWFtLndtdi5hZHZhbmNlZCAy
LjIuMC40OSAoMi4yLjAuNDkpIC9MaWJyYXJ5L1F1aWNrVGltZS9GbGlwNE1hYyBXTVYgQWR2YW5j
ZWQuY29tcG9uZW50L0NvbnRlbnRzL01hY09TL0ZsaXA0TWFjIFdNViBBZHZhbmNlZAoweDIxZjAw
MDAwIC0gMHgyMjEyNWZmYyArb3JnLnBlcmlhbi5QZXJpYW4gMS4xICgxLjEpIDwxZjBkNzUxYWJh
YzQ2YWI0ZmU4YjUwNWJiZGQ4OTIxOT4gL0xpYnJhcnkvUXVpY2tUaW1lL1Blcmlhbi5jb21wb25l
bnQvQ29udGVudHMvTWFjT1MvUGVyaWFuCjB4MjU3OTQwMDAgLSAweDI1N2JlZmZmICBjb20uYXBw
bGUuYXVkaW8uU291bmRNYW5hZ2VyLkNvbXBvbmVudHMgMy45LjMgKDMuOS4zKSAvU3lzdGVtL0xp
YnJhcnkvQ29tcG9uZW50cy9Tb3VuZE1hbmFnZXJDb21wb25lbnRzLmNvbXBvbmVudC9Db250ZW50
cy9NYWNPUy9Tb3VuZE1hbmFnZXJDb21wb25lbnRzCjB4NzAwMDAwMDAgLSAweDcwMGUzZmYyICBj
b20uYXBwbGUuYXVkaW8udW5pdHMuQ29tcG9uZW50cyAxLjUuMSAoMS41LjEpIC9TeXN0ZW0vTGli
cmFyeS9Db21wb25lbnRzL0NvcmVBdWRpby5jb21wb25lbnQvQ29udGVudHMvTWFjT1MvQ29yZUF1
ZGlvCjB4OGZlMDAwMDAgLSAweDhmZTJkYTUzICBkeWxkIDk2LjIgKD8/PykgPDA2OTAwOTczZTgz
ZjcwNTQ4YjdhMmE1ZmE2NDM1ODY1PiAvdXNyL2xpYi9keWxkCjB4OTAwMDMwMDAgLSAweDkwMDE3
ZmYzICBjb20uYXBwbGUuSW1hZ2VDYXB0dXJlIDQuMCAoNS4wLjApIC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0ltYWdlQ2Fw
dHVyZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9JbWFnZUNhcHR1cmUKMHg5MDAxODAwMCAtIDB4OTAw
MjNmZjkgIGNvbS5hcHBsZS5oZWxwZGF0YSAxLjAgKDE0KSAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0
ZUZyYW1ld29ya3MvSGVscERhdGEuZnJhbWV3b3JrL1ZlcnNpb25zL0EvSGVscERhdGEKMHg5MDAy
NDAwMCAtIDB4OTAwMjRmZmQgIGNvbS5hcHBsZS5BY2NlbGVyYXRlIDEuNC4yIChBY2NlbGVyYXRl
IDEuNC4yKSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BY2NlbGVyYXRlLmZyYW1ld29yay9W
ZXJzaW9ucy9BL0FjY2VsZXJhdGUKMHg5MDAyYjAwMCAtIDB4OTAwMzBmZmYgIGNvbS5hcHBsZS5i
YWNrdXAuZnJhbWV3b3JrIDEuMCAoMS4wKSAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29y
a3MvQmFja3VwLmZyYW1ld29yay9WZXJzaW9ucy9BL0JhY2t1cAoweDkwMDMxMDAwIC0gMHg5MDE3
N2ZmNyAgY29tLmFwcGxlLkltYWdlSU8uZnJhbWV3b3JrIDIuMC4yICgyLjAuMikgPDc3ZGZlZTcz
ZjRjMGQyMzA0MjVhNTE1MWVlMGJjZTA1PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvSW1hZ2VJTy5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9JbWFnZUlPCjB4OTAxNzgwMDAgLSAweDkwMjJhZmZiICBsaWJj
cnlwdG8uMC45LjcuZHlsaWIgPz8/ICg/Pz8pIDwzMzBiMGU0OGU2N2ZhZmZjOGMyMmRmYzA2OWNh
N2E0Nz4gL3Vzci9saWIvbGliY3J5cHRvLjAuOS43LmR5bGliCjB4OTAyMmIwMDAgLSAweDkwMjJi
ZmZmICBjb20uYXBwbGUuQ2FyYm9uIDEzNiAoMTM2KSA8OTk2MTU3MGE0OTdkNzlmMTNiOGVhMTU5
ODI2YWY0MmQ+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9DYXJib24KMHg5MDIyYzAwMCAtIDB4OTAzMmRmZWYgIGNvbS5hcHBsZS5QdWJTdWIg
MS4wLjMgKDY1LjEuMSkgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUHViU3ViLmZyYW1ld29y
ay9WZXJzaW9ucy9BL1B1YlN1YgoweDkwMzljMDAwIC0gMHg5MDNjNGZmZiAgbGliY3Vwcy4yLmR5
bGliID8/PyAoPz8/KSA8ZWNlMjBkZmYyYTJjOGVkM2FlNmVmNzM1ZWY0NDBjMzc+IC91c3IvbGli
L2xpYmN1cHMuMi5keWxpYgoweDkwM2M1MDAwIC0gMHg5MDNjNWZmOCAgY29tLmFwcGxlLkNvY29h
IDYuNSAoPz8/KSA8ZTA2NGY5NGQ5NjljZTI1Y2I3ZGUzY2ZiOTgwYzMyNDk+IC9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NvY29hLmZyYW1ld29yay9WZXJzaW9ucy9BL0NvY29hCjB4OTAzZjcw
MDAgLSAweDkwNDczZmViICBjb20uYXBwbGUuYXVkaW8uQ29yZUF1ZGlvIDMuMS4wICgzLjEpIDw0
ODNlMGQzODc5ZDUyYmE5YWMxMGI0YmNmYjA3MjhkNj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ29yZUF1ZGlvLmZyYW1ld29yay9WZXJzaW9ucy9BL0NvcmVBdWRpbwoweDkwNDc0MDAwIC0g
MHg5MDQ3YmZmNyAgbGliQ0dBVFMuQS5keWxpYiA/Pz8gKD8/PykgPGRkMzE2MWU2NjUzZmE2NDAw
YjllZjljMTQ0MzA5ZmE1PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1l
d29yay9WZXJzaW9ucy9BL1Jlc291cmNlcy9saWJDR0FUUy5BLmR5bGliCjB4OTA0N2MwMDAgLSAw
eDkwNTM2ZmUzICBjb20uYXBwbGUuQ29yZVNlcnZpY2VzLk9TU2VydmljZXMgMjI2LjUgKDIyNi41
KSA8N2UxMGQyNWM2MTVhMzlmZTFhYjRkNDhlMjRhM2I1NTU+IC9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL09TU2Vy
dmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvT1NTZXJ2aWNlcwoweDkwNTM3MDAwIC0gMHg5MDVi
NmZmNSAgY29tLmFwcGxlLlNlYXJjaEtpdCAxLjIuMCAoMS4yLjApIDwyNzdiNDYwZGE4NmJjMjIy
Nzg1MTU5ZmU3N2UyZTJlZD4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvU2VhcmNoS2l0LmZyYW1ld29yay9WZXJz
aW9ucy9BL1NlYXJjaEtpdAoweDkwNWI3MDAwIC0gMHg5MDVkNGZmNyAgY29tLmFwcGxlLlF1aWNr
TG9va0ZyYW1ld29yayAxLjEgKDE3MC40KSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWlj
a0xvb2suZnJhbWV3b3JrL1ZlcnNpb25zL0EvUXVpY2tMb29rCjB4OTA1ZDUwMDAgLSAweDkwNjY4
ZmYzICBjb20uYXBwbGUuQXBwbGljYXRpb25TZXJ2aWNlcy5BVFMgMy4zICg/Pz8pIDwwNjRlYjZk
OTY0MTdhZmEzOGE4MGIxNzM1YzQxMTNhYT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
bGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0FUUy5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9BVFMKMHg5MDY2OTAwMCAtIDB4OTA2Y2ZmZmIgIGNvbS5hcHBsZS5J
U1N1cHBvcnQgMS43ICgzOCkgL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0lTU3Vw
cG9ydC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9JU1N1cHBvcnQKMHg5MDZkMDAwMCAtIDB4OTA2ZDBm
ZmQgIGNvbS5hcHBsZS52ZWNMaWIgMy40LjIgKHZlY0xpYiAzLjQuMikgL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvdmVjTGliLmZyYW1ld29yay9WZXJzaW9ucy9BL3ZlY0xpYgoweDkwNmQxMDAw
IC0gMHg5MDZkZmZmZCAgbGliei4xLmR5bGliID8/PyAoPz8/KSA8NWRkZDg1MzlhZTJlYmZkOGU3
Y2MxYzU3NTI1Mzg1Yzc+IC91c3IvbGliL2xpYnouMS5keWxpYgoweDkwNmU1MDAwIC0gMHg5MDg0
NWZmMyAgbGliU3lzdGVtLkIuZHlsaWIgPz8/ICg/Pz8pIDxhMTJmMzk3YWJmMjI4NTA3N2I4OWJk
NzI2YmZmNWIxOD4gL3Vzci9saWIvbGliU3lzdGVtLkIuZHlsaWIKMHg5MDg0NjAwMCAtIDB4OTA4
NGVmZmYgIGNvbS5hcHBsZS5EaXNrQXJiaXRyYXRpb24gMi4yLjEgKDIuMi4xKSA8NzViMGM4ZDg5
NDBhOGEyNzgxNjk2MWRkZGNhYzhlMGY+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Rpc2tB
cmJpdHJhdGlvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9EaXNrQXJiaXRyYXRpb24KMHg5MDg0ZjAw
MCAtIDB4OTA5ODdmZjcgIGxpYmljdWNvcmUuQS5keWxpYiA/Pz8gKD8/PykgPDUwMzEyMjZlYTI4
YjM3MWQ4ZGZkYmIzMmFjZmI0OGI1PiAvdXNyL2xpYi9saWJpY3Vjb3JlLkEuZHlsaWIKMHg5MDk4
ODAwMCAtIDB4OTBhMDJmZjggIGNvbS5hcHBsZS5wcmludC5mcmFtZXdvcmsuUHJpbnRDb3JlIDUu
NS4zICgyNDUuMykgPDIyMmRhZGU3YjMzYjk5NzA4YjhjMDlkMTMwM2Y5M2ZjPiAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9B
L0ZyYW1ld29ya3MvUHJpbnRDb3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL1ByaW50Q29yZQoweDkw
YTAzMDAwIC0gMHg5MGEyMWZmZiAgbGlicmVzb2x2LjkuZHlsaWIgPz8/ICg/Pz8pIDw5NjAyNDM1
YTZlYWM4N2EwZDFmNDFiOGNhODU0MTY5Mz4gL3Vzci9saWIvbGlicmVzb2x2LjkuZHlsaWIKMHg5
MGEyMjAwMCAtIDB4OTEwYmVmZmYgIGNvbS5hcHBsZS5Db3JlR3JhcGhpY3MgMS4zNTEuMzEgKD8/
PykgPGM5N2E0MjQ5ODYzNmIyNTk2NzY0ZTQ4NjY5Zjk4ZTAwPiAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29y
a3MvQ29yZUdyYXBoaWNzLmZyYW1ld29yay9WZXJzaW9ucy9BL0NvcmVHcmFwaGljcwoweDkxMGJm
MDAwIC0gMHg5MTFmMWZmZiAgY29tLmFwcGxlLkNvcmVGb3VuZGF0aW9uIDYuNS4zICg0NzYuMTQp
IDw3ZWY3ZjVkYjA5ZmY2ZGQwMTM1YTYxNjU4NzI4MDNjYz4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29yZUZvdW5kYXRpb24K
MHg5MTFmMjAwMCAtIDB4OTEyMGFmZmYgIGNvbS5hcHBsZS5vcGVuc2NyaXB0aW5nIDEuMi42ICg/
Pz8pIDxiOGU1NTNkZjY0M2YyYWVjNjhmYTk2OGIzYjQ1OWIyYj4gL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvT3BlblNjcmlw
dGluZy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9PcGVuU2NyaXB0aW5nCjB4OTEyNWMwMDAgLSAweDkx
MjdiZmZhICBsaWJKUEVHLmR5bGliID8/PyAoPz8/KSA8MGRkN2U5ZDdmYjIyMTc0Yjc4MjA1YTk0
NDE0NGY5YzM+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29yay9WZXJzaW9u
cy9BL1Jlc291cmNlcy9saWJKUEVHLmR5bGliCjB4OTEyN2MwMDAgLSAweDkxMmQ4ZmY3ICBjb20u
YXBwbGUuaHRtbHJlbmRlcmluZyA2OCAoMS4xLjMpIDxmZTg3YTlkZWRlMzhkYjAwZTZjODk0OTk0
MmM2YmQ0Zj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9WZXJz
aW9ucy9BL0ZyYW1ld29ya3MvSFRNTFJlbmRlcmluZy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9IVE1M
UmVuZGVyaW5nCjB4OTEyZDkwMDAgLSAweDkxMmU5ZmZmICBjb20uYXBwbGUuc3BlZWNoLnN5bnRo
ZXNpcy5mcmFtZXdvcmsgMy43LjEgKDMuNy4xKSA8MDZkOGZjMDMwNzMxNGY4ZmZjMTZmMjA2YWQz
ZGJmNDQ+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJh
bWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9TcGVlY2hTeW50aGVzaXMuZnJhbWV3b3JrL1Zl
cnNpb25zL0EvU3BlZWNoU3ludGhlc2lzCjB4OTEyZWEwMDAgLSAweDkxMzc2ZmY3ICBjb20uYXBw
bGUuTGF1bmNoU2VydmljZXMgMjg5LjIgKDI4OS4yKSA8MzU3Nzg4NmUzYTZkNTZlZTM5NDk4NTBj
NGZkZTc2Yzk+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0xhdW5jaFNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9u
cy9BL0xhdW5jaFNlcnZpY2VzCjB4OTEzNzcwMDAgLSAweDkxNTQ1ZmZmICBjb20uYXBwbGUuc2Vj
dXJpdHkgNS4wLjQgKDM0MTAyKSA8ZjAxZDZjYmQ2YTBmMjRmNmMxMzk1MmVkNDQ4ZTc3ZDY+IC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yay9WZXJzaW9ucy9BL1Nl
Y3VyaXR5CjB4OTE1NTQwMDAgLSAweDkxNTkyZmZmICBjb20uYXBwbGUuQ29yZU1lZGlhSU9TZXJ2
aWNlc1ByaXZhdGUgOS4wICg5LjApIC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9D
b3JlTWVkaWFJT1NlcnZpY2VzUHJpdmF0ZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db3JlTWVkaWFJ
T1NlcnZpY2VzUHJpdmF0ZQoweDkxNTkzMDAwIC0gMHg5MTYxNWZmMyAgY29tLmFwcGxlLkNGTmV0
d29yayAzMzAuNCAoMzMwLjQpIDxjZTViMDg1ZGYzNGE3OGI3ZjE5OGFmZjlkYjViNTJlYz4gL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9B
L0ZyYW1ld29ya3MvQ0ZOZXR3b3JrLmZyYW1ld29yay9WZXJzaW9ucy9BL0NGTmV0d29yawoweDkx
NjE2MDAwIC0gMHg5MTY0Y2ZlZiAgbGlidGlkeS5BLmR5bGliID8/PyAoPz8/KSA8ZjFkMTc0MmUw
NjI4MDQ0NGJhYTU2MzdiMjA5ZmQwYWY+IC91c3IvbGliL2xpYnRpZHkuQS5keWxpYgoweDkxNjRk
MDAwIC0gMHg5MTY3Y2ZlMyAgY29tLmFwcGxlLkFFIDQwMi4yICg0MDIuMikgPGUwMTU5NjE4N2U5
MWFmNWQ0ODY1MzkyMDAxN2I4YzhlPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2Vy
dmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9BRS5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9BRQoweDkxNjdkMDAwIC0gMHg5MTcyYmZmYiAgY29tLmFwcGxlLlFUS2l0IDcuNSAoODYx
KSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9R
VEtpdAoweDkxNzJjMDAwIC0gMHg5MTcyY2ZmZSAgY29tLmFwcGxlLk1vbml0b3JQYW5lbEZyYW1l
d29yayAxLjIuMCAoMS4yLjApIDxhMmI0NjJiZTZjNTExODdlZGRmN2QwOTdlZjBlMGEwND4gL1N5
c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL01vbml0b3JQYW5lbC5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9Nb25pdG9yUGFuZWwKMHg5MTcyZDAwMCAtIDB4OTE4MGVmZjcgIGxpYnhtbDIuMi5k
eWxpYiA/Pz8gKD8/PykgPDFiYWVmM2Q0OTcyZWU3ODlkOGZhNmMxZmE0NGRhNDVjPiAvdXNyL2xp
Yi9saWJ4bWwyLjIuZHlsaWIKMHg5MThhZTAwMCAtIDB4OTFkODFmZmUgIGxpYkdMUHJvZ3JhbW1h
YmlsaXR5LmR5bGliID8/PyAoPz8/KSA8NDc1ZGI2NDI0NGUwMTFjZDg4MTFlMDc2MDM1YjI2MzI+
IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9M
aWJyYXJpZXMvbGliR0xQcm9ncmFtbWFiaWxpdHkuZHlsaWIKMHg5MWQ4MjAwMCAtIDB4OTFkYWNm
ZmYgIGNvbS5hcHBsZS5Db3JlTWVkaWFQcml2YXRlIDkuMCAoOS4wKSA8OGViMjBiY2ZlY2M5NTA2
MDBhYTYyZGZhMDdhYTQ3ZjM+IC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Db3Jl
TWVkaWFQcml2YXRlLmZyYW1ld29yay9WZXJzaW9ucy9BL0NvcmVNZWRpYVByaXZhdGUKMHg5MWY0
NjAwMCAtIDB4OTFmNDZmZmUgIGNvbS5hcHBsZS5xdWFydHpmcmFtZXdvcmsgMS41ICgxLjUpIDw0
YjhmNTA1ZTMyZTRmMmQ2Nzk2N2EyNzY0MDFmOWFhZj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvUXVhcnR6LmZyYW1ld29yay9WZXJzaW9ucy9BL1F1YXJ0egoweDkxZjQ3MDAwIC0gMHg5MjAx
YWZlZiAgY29tLmFwcGxlLlF1aWNrVGltZUgyNjQuY29tcG9uZW50IDcuNSAoODYxKSAvU3lzdGVt
L0xpYnJhcnkvUXVpY2tUaW1lL1F1aWNrVGltZUgyNjQuY29tcG9uZW50L0NvbnRlbnRzL01hY09T
L1F1aWNrVGltZUgyNjQKMHg5MjAxYjAwMCAtIDB4OTIwYTJmZjcgIGxpYnNxbGl0ZTMuMC5keWxp
YiA/Pz8gKD8/PykgPDY5NzhiYmNjYTQyNzdkNmFlOWYwNDJiZWZmNjQzZjdkPiAvdXNyL2xpYi9s
aWJzcWxpdGUzLjAuZHlsaWIKMHg5MjBhMzAwMCAtIDB4OTIwYTNmZjggIGNvbS5hcHBsZS5BcHBs
aWNhdGlvblNlcnZpY2VzIDM0ICgzNCkgPDhmOTEwZmE2NWYwMWQ0MDFhZDhkMDRjYzkzM2NmODg3
PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9WZXJzaW9ucy9BL0FwcGxpY2F0aW9uU2VydmljZXMKMHg5MjBhNDAwMCAtIDB4OTIxNDZmZjMg
IGNvbS5hcHBsZS5RdWlja1RpbWVJbXBvcnRlcnMuY29tcG9uZW50IDcuNSAoODYxKSAvU3lzdGVt
L0xpYnJhcnkvUXVpY2tUaW1lL1F1aWNrVGltZUltcG9ydGVycy5jb21wb25lbnQvQ29udGVudHMv
TWFjT1MvUXVpY2tUaW1lSW1wb3J0ZXJzCjB4OTIxNDcwMDAgLSAweDkyMWEwZmY3ICBsaWJHTFUu
ZHlsaWIgPz8/ICg/Pz8pIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9MaWJyYXJpZXMvbGliR0xVLmR5bGliCjB4OTIxYTEwMDAgLSAweDkyMWE3
ZmZmICBjb20uYXBwbGUucHJpbnQuZnJhbWV3b3JrLlByaW50IDIxOC4wLjIgKDIyMC4xKSA8OGJm
N2VmNzEyMTYzNzZkMTJmY2Q1ZWMxN2U0Mzc0MmM+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1ByaW50LmZyYW1ld29yay9W
ZXJzaW9ucy9BL1ByaW50CjB4OTIxYTgwMDAgLSAweDkyMjA1ZmZiICBsaWJzdGRjKysuNi5keWxp
YiA/Pz8gKD8/PykgPDA0YjgxMmRjZWM2NzBkYWE4YjdkMjg1MmFiMTRiZTYwPiAvdXNyL2xpYi9s
aWJzdGRjKysuNi5keWxpYgoweDkyMjA2MDAwIC0gMHg5MjUyN2ZlYSAgY29tLmFwcGxlLlF1aWNr
VGltZSA3LjUuMCAoODYxKSA8NGUxMTYxYjIwNGIzYjFmMTA0NzQxMmMxNjQ4M2MzOWE+IC9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1aWNrVGltZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9RdWlj
a1RpbWUKMHg5MjUyODAwMCAtIDB4OTI5MzhmZWYgIGxpYkJMQVMuZHlsaWIgPz8/ICg/Pz8pIC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FjY2VsZXJhdGUuZnJhbWV3b3JrL1ZlcnNpb25zL0Ev
RnJhbWV3b3Jrcy92ZWNMaWIuZnJhbWV3b3JrL1ZlcnNpb25zL0EvbGliQkxBUy5keWxpYgoweDky
OTQzMDAwIC0gMHg5Mjk0NWZmZiAgY29tLmFwcGxlLkNyYXNoUmVwb3J0ZXJTdXBwb3J0IDEwLjUu
MCAoMTU2KSA8YTljZjA5MmJlN2E1NTRiM2NkYTAwZmU5NDZkMWMxYTc+IC9TeXN0ZW0vTGlicmFy
eS9Qcml2YXRlRnJhbWV3b3Jrcy9DcmFzaFJlcG9ydGVyU3VwcG9ydC5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9DcmFzaFJlcG9ydGVyU3VwcG9ydAoweDkyOWEwMDAwIC0gMHg5MmQ1ZWZlYSAgbGliTEFQ
QUNLLmR5bGliID8/PyAoPz8/KSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BY2NlbGVyYXRl
LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvdmVjTGliLmZyYW1ld29yay9WZXJzaW9u
cy9BL2xpYkxBUEFDSy5keWxpYgoweDkyZDVmMDAwIC0gMHg5MmUzZWZmZiAgbGlib2JqYy5BLmR5
bGliID8/PyAoPz8/KSA8YTUzMjA2Mjc0YjZjMmQ0MjY5MWY2Nzc4NjNmMzc5YWU+IC91c3IvbGli
L2xpYm9iamMuQS5keWxpYgoweDkyZTNmMDAwIC0gMHg5MmVlZmZmZiAgZWR1Lm1pdC5LZXJiZXJv
cyA2LjAuMTIgKDYuMC4xMikgPDFkYzUxNWViZTQwNzI5MmRiOGU2MDM5MzhjNzJkNGU4PiAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9LZXJiZXJvcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9LZXJi
ZXJvcwoweDkyZWYwMDAwIC0gMHg5MmYwMGZmYyAgY29tLmFwcGxlLkxhbmdBbmFseXNpcyAxLjYu
NCAoMS42LjQpIDw4Yjc4MzFiNWY3NGE5NTBhNTZjZjJkMjJhMmQ0MzZmNj4gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9G
cmFtZXdvcmtzL0xhbmdBbmFseXNpcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9MYW5nQW5hbHlzaXMK
MHg5MmYwMTAwMCAtIDB4OTJmNDdmZWYgIGNvbS5hcHBsZS5NZXRhZGF0YSAxMC41LjIgKDM5OC4x
OCkgPGFkYmIzYTE0ZThmN2RhNDQ0ZTE2ZDJmZDYxODYyNzcxPiAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9NZXRh
ZGF0YS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9NZXRhZGF0YQoweDkyZjQ4MDAwIC0gMHg5MmY4N2Zl
ZiAgbGliVElGRi5keWxpYiA/Pz8gKD8/PykgPDc2MzAxYjM1MDZmMzEwZmI0NTRiNTg4OTdjOGQw
YTlmPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9S
ZXNvdXJjZXMvbGliVElGRi5keWxpYgoweDkyZjg4MDAwIC0gMHg5MmZhY2ZmZiAgbGlieHNsdC4x
LmR5bGliID8/PyAoPz8/KSA8NDkzM2RkYzdmNjYxODc0MzE5N2FhZGM4NWIzM2I1YWI+IC91c3Iv
bGliL2xpYnhzbHQuMS5keWxpYgoweDkyZmFkMDAwIC0gMHg5MzAxZmZmZiAgY29tLmFwcGxlLlBE
RktpdCAyLjEgKDIuMSkgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1ld29y
ay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvUERGS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL1BERktp
dAoweDkzMDIwMDAwIC0gMHg5MzA1MWZmYiAgY29tLmFwcGxlLnF1YXJ0emZpbHRlcnMgMS41LjAg
KDEuNS4wKSA8MjI1ODFmOGZlOWRkMmNiMjYxZjk3YTg5NzQwN2VjM2U+IC9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1F1YXJ0
ekZpbHRlcnMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvUXVhcnR6RmlsdGVycwoweDkzMDUyMDAwIC0g
MHg5MzFkMWZmZiAgY29tLmFwcGxlLkFkZHJlc3NCb29rLmZyYW1ld29yayA0LjEuMSAoNjk1KSA8
MjRhNDQ4YmE0ZjlmNzg0MTg5YmQzMTgzZTM0NzRkODE+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FkZHJlc3NCb29rLmZyYW1ld29yay9WZXJzaW9ucy9BL0FkZHJlc3NCb29rCjB4OTMxZDIw
MDAgLSAweDkzOWNmZmVmICBjb20uYXBwbGUuQXBwS2l0IDYuNS4zICg5NDkuMzMpIDw4NGIyMzZm
NDM4MDJmNGMxNTAxMTUxM2QxOGVmYTEwMT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
S2l0LmZyYW1ld29yay9WZXJzaW9ucy9DL0FwcEtpdAoweDkzOWQwMDAwIC0gMHg5M2EwN2ZmZiAg
Y29tLmFwcGxlLlN5c3RlbUNvbmZpZ3VyYXRpb24gMS45LjIgKDEuOS4yKSA8OGIyNmViZjI2YTAw
OWEwOTg0ODRmMWVkMDFlYzQ5OWM+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1N5c3RlbUNv
bmZpZ3VyYXRpb24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU3lzdGVtQ29uZmlndXJhdGlvbgoweDkz
YTNkMDAwIC0gMHg5M2E0Y2ZmZSAgY29tLmFwcGxlLkRTT2JqQ1dyYXBwZXJzLkZyYW1ld29yayAx
LjMgKDEuMykgPDA5ZGViOWUzMmQwZDA5ZGZiOTVhZTU2OWJkZDJiN2E0PiAvU3lzdGVtL0xpYnJh
cnkvUHJpdmF0ZUZyYW1ld29ya3MvRFNPYmpDV3JhcHBlcnMuZnJhbWV3b3JrL1ZlcnNpb25zL0Ev
RFNPYmpDV3JhcHBlcnMKMHg5M2E0ZDAwMCAtIDB4OTNhNTRmZmYgIGNvbS5hcHBsZS5hZ2wgMy4w
LjkgKEFHTC0zLjAuOSkgPDdkYWM0YTdjYjBkZTJmNmQwOGFlNzFjMTI0OTM3OWUzPiAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BR0wuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQUdMCjB4OTNhNTUw
MDAgLSAweDkzYTU2ZmZjICBsaWJmZmkuZHlsaWIgPz8/ICg/Pz8pIDxhM2I1NzNlYjk1MGNhNTgz
MjkwZjdiMmI0YzQ4NmQwOT4gL3Vzci9saWIvbGliZmZpLmR5bGliCjB4OTNhNTcwMDAgLSAweDkz
YTYwZmZmICBjb20uYXBwbGUuc3BlZWNoLnJlY29nbml0aW9uLmZyYW1ld29yayAzLjcuMjQgKDMu
Ny4yNCkgPGQzMTgwZjllZGJkOWE1ZTZmMjgzZDYxNTZhYTNjNjAyPiAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9TcGVlY2hS
ZWNvZ25pdGlvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TcGVlY2hSZWNvZ25pdGlvbgoweDkzYTYx
MDAwIC0gMHg5M2E2MWZmYyAgY29tLmFwcGxlLmF1ZGlvLnVuaXRzLkF1ZGlvVW5pdCAxLjUgKDEu
NSkgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXVkaW9Vbml0LmZyYW1ld29yay9WZXJzaW9u
cy9BL0F1ZGlvVW5pdAoweDkzYTYyMDAwIC0gMHg5M2Q2OWZmNyAgY29tLmFwcGxlLkhJVG9vbGJv
eCAxLjUuMyAoPz8/KSA8ZTM2ZjVjNTUzZTVhMzJmNjRiN2ViNDU4ZGFkYWRjNzE+IC9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtz
L0hJVG9vbGJveC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9ISVRvb2xib3gKMHg5M2Q2YTAwMCAtIDB4
OTNlMzFmZjIgIGNvbS5hcHBsZS52SW1hZ2UgMy4wICgzLjApIC9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FjY2VsZXJhdGUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy92SW1hZ2Uu
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvdkltYWdlCjB4OTNlMzIwMDAgLSAweDkzZTUwZmYzICBjb20u
YXBwbGUuRGlyZWN0b3J5U2VydmljZS5GcmFtZXdvcmsgMy41LjQgKDMuNS40KSA8ZmUyN2U4MGUx
YTllODY0MDNmZDllZDE2ZGNmZTRlMTE+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0RpcmVj
dG9yeVNlcnZpY2UuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRGlyZWN0b3J5U2VydmljZQoweDkzZTUx
MDAwIC0gMHg5M2U1NWZmZiAgbGlibWF0aENvbW1vbi5BLmR5bGliID8/PyAoPz8/KSAvdXNyL2xp
Yi9zeXN0ZW0vbGlibWF0aENvbW1vbi5BLmR5bGliCjB4OTNlNTYwMDAgLSAweDkzZTViZmZmICBj
b20uYXBwbGUuQ29tbW9uUGFuZWxzIDEuMi40ICg4NSkgPGVhMDY2NWY1N2NkMjY3NjA5NDY2ZWQ4
YjJiMjBlODkzPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL1Zl
cnNpb25zL0EvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29t
bW9uUGFuZWxzCjB4OTNlNWMwMDAgLSAweDkzZWI2ZmY3ICBjb20uYXBwbGUuQ29yZVRleHQgMi4w
LjIgKD8/PykgPDlmZGUxMWY4NGE3MmU4OTBiYmYyYWE4YjBiMTNiNzlhPiAvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0Zy
YW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29yZVRleHQKMHg5M2ViNzAw
MCAtIDB4OTNlZTJmZTcgIGxpYmF1dG8uZHlsaWIgPz8/ICg/Pz8pIDw0MmQ4NDIyZGMyM2ExODA3
MTg2OWZkZjdiNWQ4ZmFiNT4gL3Vzci9saWIvbGliYXV0by5keWxpYgoweDkzZWUzMDAwIC0gMHg5
M2ZjOGZmMyAgY29tLmFwcGxlLkNvcmVEYXRhIDEwMC4xICgxODYpIDw4ZTI4MTYyZWYyMjg4Njky
NjE1YjUyYWNjMDFmOGI1ND4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZURhdGEuZnJh
bWV3b3JrL1ZlcnNpb25zL0EvQ29yZURhdGEKMHg5M2ZjOTAwMCAtIDB4OTQwMDNmZmUgIGNvbS5h
cHBsZS5zZWN1cml0eWZvdW5kYXRpb24gMy4wICgzMjk4OSkgPGY3MmQzYTY2NzI5YzUyOWZkMDUy
ZmJhOTZiMGZiODcxPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eUZvdW5kYXRp
b24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvU2VjdXJpdHlGb3VuZGF0aW9uCjB4OTQwMDQwMDAgLSAw
eDk1MTQ5ZmYyICBjb20uYXBwbGUuUXVpY2tUaW1lQ29tcG9uZW50cy5jb21wb25lbnQgNy41ICg4
NjEpIC9TeXN0ZW0vTGlicmFyeS9RdWlja1RpbWUvUXVpY2tUaW1lQ29tcG9uZW50cy5jb21wb25l
bnQvQ29udGVudHMvTWFjT1MvUXVpY2tUaW1lQ29tcG9uZW50cwoweDk1MTk5MDAwIC0gMHg5NTFk
N2ZmNyAgbGliR0xJbWFnZS5keWxpYiA/Pz8gKD8/PykgPDA5M2IxYjY5OGNhOTNhMDM4MGY1ZmEy
NjI0NTllYTI4PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL1Zl
cnNpb25zL0EvTGlicmFyaWVzL2xpYkdMSW1hZ2UuZHlsaWIKMHg5NTgyOTAwMCAtIDB4OTU4NjNm
ZmYgIGNvbS5hcHBsZS5jb3JldWkgMS4xICg2MSkgL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFt
ZXdvcmtzL0NvcmVVSS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db3JlVUkKMHg5NTg2NDAwMCAtIDB4
OTU4ZjdmZmYgIGNvbS5hcHBsZS5pbmsuZnJhbWV3b3JrIDEwMS4zICg4NikgPGJmM2ZhODkyN2I0
YjhiYWFlOTIzODFhOTc2ZmQyMDc5PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24u
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9JbmsuZnJhbWV3b3JrL1ZlcnNpb25zL0Ev
SW5rCjB4OTU4ZjgwMDAgLSAweDk1OTEzZmYzICBsaWJQbmcuZHlsaWIgPz8/ICg/Pz8pIDxjMDQ4
NGJlYzZlMjQzMmI0MDY3NTU1OTE5MjRmZTY2ND4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0ltYWdl
SU8uZnJhbWV3b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL2xpYlBuZy5keWxpYgoweDk1OWQyMDAw
IC0gMHg5NWM0ZGZlNyAgY29tLmFwcGxlLkZvdW5kYXRpb24gNi41LjUgKDY3Ny4xOSkgPGJmZDRl
YmVhMWE3NzM5ZGQ2YjUyM2YxNWRjYTAxYTM3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9G
b3VuZGF0aW9uLmZyYW1ld29yay9WZXJzaW9ucy9DL0ZvdW5kYXRpb24KMHg5NWM0ZTAwMCAtIDB4
OTVlMDlmZjMgIGNvbS5hcHBsZS5RdWFydHpDb21wb3NlciAyLjEgKDEwNi41KSA8MWE1MmI0MDZh
M2YzZDA0Mzg3YzgyMmRhNGE5M2MyNDU+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0
ei5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1F1YXJ0ekNvbXBvc2VyLmZyYW1ld29y
ay9WZXJzaW9ucy9BL1F1YXJ0ekNvbXBvc2VyCjB4OTVlMGEwMDAgLSAweDk1ZTBmZmZiICBjb20u
YXBwbGUuRGlzcGxheVNlcnZpY2VzRlcgMi4wICgyLjApIDxiMTdmYjU1NzE5NDZiMGJhMjI4YmFm
ZDA4ZTAwMTFjOD4gL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0Rpc3BsYXlTZXJ2
aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9EaXNwbGF5U2VydmljZXMKMHg5NWUxMDAwMCAtIDB4
OTVlMTJmZmYgIGNvbS5hcHBsZS5zZWN1cml0eWhpIDMuMCAoMzA4MTcpIDw3MmNiOGIwMTI2MDMz
NzBlOTA0YjMxYTI0YTkxMTIxYj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZy
YW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvU2VjdXJpdHlISS5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9TZWN1cml0eUhJCjB4OTVlNmEwMDAgLSAweDk1ZTljZmZmICBjb20uYXBwbGUuTERBUEZy
YW1ld29yayAxLjQuMyAoMTA2KSA8OTRhMjZhYmZjMGE1ZDg4Yzc1Mjc2M2I0NGExMGFlNTE+IC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0xEQVAuZnJhbWV3b3JrL1ZlcnNpb25zL0EvTERBUAow
eDk1ZTlkMDAwIC0gMHg5NWVhN2ZlYiAgY29tLmFwcGxlLmF1ZGlvLlNvdW5kTWFuYWdlciAzLjku
MiAoMy45LjIpIDwwZjJiYTZlODkxZDM3NjEyMTJjZjVhNWU2MTM0ZDY4Mz4gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQ2Fy
Ym9uU291bmQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ2FyYm9uU291bmQKMHg5NWVhODAwMCAtIDB4
OTVmNGZmZWIgIGNvbS5hcHBsZS5RRCAzLjExLjUyICg/Pz8pIDxjNzJiZDdiZDJjZTEyNjk0YzM2
NDBhNzMxZDFhZDg3OD4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1FELmZyYW1ld29yay9WZXJzaW9u
cy9BL1FECjB4OTVmNTAwMDAgLSAweDk2MDFiZmZmICBjb20uYXBwbGUuQ29sb3JTeW5jIDQuNS4w
ICg0LjUuMCkgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0NvbG9yU3luYy5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9Db2xvclN5bmMKMHg5NjAxYzAwMCAtIDB4OTYwYTdmZmYgIGNvbS5hcHBsZS5mcmFtZXdv
cmsuSU9LaXQgMS41LjEgKD8/PykgPDYwY2ZjNGIxNzVjNGVmNjBiYjhlOTAzNjcxNmEyOWY0PiAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9JT0tp
dAoweDk2MTg5MDAwIC0gMHg5NjFiNmZlYiAgbGlidkRTUC5keWxpYiA/Pz8gKD8/PykgPGIyMzJj
MDE4ZGRkMDQwZWM0ZTJjMmFmNjMyZGQ0OTdmPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
Y2NlbGVyYXRlLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvdmVjTGliLmZyYW1ld29y
ay9WZXJzaW9ucy9BL2xpYnZEU1AuZHlsaWIKMHg5NjFiNzAwMCAtIDB4OTY0OTFmZjMgIGNvbS5h
cHBsZS5Db3JlU2VydmljZXMuQ2FyYm9uQ29yZSA3ODYuNCAoNzg2LjQpIDwwNTljNDgwM2E3YTk1
ZTNjMWE5NWEzMzJiYWViMWVkZj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQ2FyYm9uQ29yZS5mcmFtZXdvcmsv
VmVyc2lvbnMvQS9DYXJib25Db3JlCjB4OTY0OTIwMDAgLSAweDk2NDkyZmZhICBjb20uYXBwbGUu
Q29yZVNlcnZpY2VzIDMyICgzMikgPDJmY2M4ZjNiZDViYmZjMDAwYjQ3NmNhZDhlNmEzZGQyPiAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25z
L0EvQ29yZVNlcnZpY2VzCjB4OTY0OTMwMDAgLSAweDk2NDllZmU3ICBsaWJDU3luYy5BLmR5bGli
ID8/PyAoPz8/KSA8ODAxMWZjMTk2M2NlYmRkZTBjNmYxMDFkYmVlNWFmZDc+IC9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0Ev
RnJhbWV3b3Jrcy9Db3JlR3JhcGhpY3MuZnJhbWV3b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL2xp
YkNTeW5jLkEuZHlsaWIKMHg5NjQ5ZjAwMCAtIDB4OTY1ZDZmZWIgIGNvbS5hcHBsZS5pbWFnZUtp
dCAxLjAuMSAoMS4wKSA8OWI2ZGEzMjEwYjdlNjllNzUwMzljYmIwZmQ0YTg0ODI+IC9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtz
L0ltYWdlS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0ltYWdlS2l0CjB4OTY1ZDcwMDAgLSAweDk2
NmNiZmY0ICBsaWJpY29udi4yLmR5bGliID8/PyAoPz8/KSA8YzUwOGM2MGZhZmNhMTc4MjRjMDAx
N2IyZTQzNjk4MDI+IC91c3IvbGliL2xpYmljb252LjIuZHlsaWIKMHg5NjZjYzAwMCAtIDB4OTY2
Y2ZmZmYgIGNvbS5hcHBsZS5oZWxwIDEuMSAoMzYpIDxiNTA3YjA4ZTQ4NGNiODkwMzNlOWNmMjMw
NjJkNzdkZT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9WZXJz
aW9ucy9BL0ZyYW1ld29ya3MvSGVscC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9IZWxwCjB4OTY2ZDAw
MDAgLSAweDk2NmQwZmZiICBjb20uYXBwbGUuaW5zdGFsbHNlcnZlci5mcmFtZXdvcmsgMS4wICg4
KSAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvSW5zdGFsbFNlcnZlci5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9JbnN0YWxsU2VydmVyCjB4OTY2ZDEwMDAgLSAweDk2YTY3ZmZmICBjb20u
YXBwbGUuUXVhcnR6Q29yZSAxLjUuMyAoMS41LjMpIDwxYjY1YzA1Zjg5ZTgxYTQ5OTMwMmZkNjMy
OTViMjQyZD4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsv
VmVyc2lvbnMvQS9RdWFydHpDb3JlCjB4OTZhODEwMDAgLSAweDk2YWExZmYyICBsaWJHTC5keWxp
YiA/Pz8gKD8/PykgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9W
ZXJzaW9ucy9BL0xpYnJhcmllcy9saWJHTC5keWxpYgoweDk2YWEyMDAwIC0gMHg5NmFmMmZmNyAg
Y29tLmFwcGxlLkhJU2VydmljZXMgMS43LjAgKD8/PykgPGY3ZTc4ODkxYTZkMDgyNjVjODNkY2E4
ZTM3OGJlMWVhPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2Vz
LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvSElTZXJ2aWNlcy5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9ISVNlcnZpY2VzCjB4OTZhZjgwMDAgLSAweDk2YjA0ZmU3ICBjb20uYXBwbGUub3Bl
bmdsIDEuNS42ICgxLjUuNikgPDEyNWRlNzdlYTI0MzRhOTEzNjRlNzlhMDkwNWE3NzcxPiAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrL1ZlcnNpb25zL0EvT3BlbkdM
CjB4OTZiMDUwMDAgLSAweDk2YjRmZmUxICBjb20uYXBwbGUuc2VjdXJpdHlpbnRlcmZhY2UgMy4w
ICgzMjUzMikgPGY1MjFkYWU0MTZjZTdhM2JkZDU5NGIwZDRlMmZiNTE3PiAvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9TZWN1cml0eUludGVyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWN1
cml0eUludGVyZmFjZQoweDk2Y2IxMDAwIC0gMHg5NmNmMmZlNyAgbGliUklQLkEuZHlsaWIgPz8/
ICg/Pz8pIDxjOGQ5ODhkMzg4MGQ3MjY4NDY4MTEyYzY0YzYyNmQ4Nj4gL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFt
ZXdvcmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9SZXNvdXJjZXMvbGliUklQ
LkEuZHlsaWIKMHg5NmQyMzAwMCAtIDB4OTZkNDdmZWIgIGxpYnNzbC4wLjkuNy5keWxpYiA/Pz8g
KD8/PykgPGFjZWU3ZmM1MzQ2NzQ0OThkY2FjMjExMzE4YWEyM2U4PiAvdXNyL2xpYi9saWJzc2wu
MC45LjcuZHlsaWIKMHg5NmQ0ODAwMCAtIDB4OTZkNDhmZmQgIGNvbS5hcHBsZS5BY2NlbGVyYXRl
LnZlY0xpYiAzLjQuMiAodmVjTGliIDMuNC4yKSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9B
Y2NlbGVyYXRlLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvdmVjTGliLmZyYW1ld29y
ay9WZXJzaW9ucy9BL3ZlY0xpYgoweDk2ZDQ5MDAwIC0gMHg5NmQ0YmZmNSAgbGliUmFkaWFuY2Uu
ZHlsaWIgPz8/ICg/Pz8pIDxiOWUwNGFmYTkxZTRiNTk3YTAwNzk3ZDY3YTcyNjhmYj4gL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9GcmFtZXdvcmtzL0ltYWdlSU8uZnJhbWV3b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL2xp
YlJhZGlhbmNlLmR5bGliCjB4OTZmYjUwMDAgLSAweDk3MDNmZmUzICBjb20uYXBwbGUuRGVza3Rv
cFNlcnZpY2VzIDEuNC42ICgxLjQuNikgPDk0ZDFhMjhiMzUxYjdkZmY3N2JlY2FkYWIwOTY3Nzcy
PiAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvRGVza3RvcFNlcnZpY2VzUHJpdi5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9EZXNrdG9wU2VydmljZXNQcml2CjB4OTcwNDAwMDAgLSAweDk3
MGJkZmVmICBsaWJ2TWlzYy5keWxpYiA/Pz8gKD8/PykgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQWNjZWxlcmF0ZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL3ZlY0xpYi5mcmFt
ZXdvcmsvVmVyc2lvbnMvQS9saWJ2TWlzYy5keWxpYgoweDk3MGJlMDAwIC0gMHg5NzBjNWZlOSAg
bGliZ2NjX3MuMS5keWxpYiA/Pz8gKD8/PykgPGE5YWIxMzVhNWY4MWY2ZTM0NTUyN2RmODdmNTFi
ZmM5PiAvdXNyL2xpYi9saWJnY2Nfcy4xLmR5bGliCjB4OTcwYzYwMDAgLSAweDk3MTE1ZmZmICBj
b20uYXBwbGUuUXVpY2tMb29rVUlGcmFtZXdvcmsgMS4xICgxNzAuNCkgL1N5c3RlbS9MaWJyYXJ5
L1ByaXZhdGVGcmFtZXdvcmtzL1F1aWNrTG9va1VJLmZyYW1ld29yay9WZXJzaW9ucy9BL1F1aWNr
TG9va1VJCjB4OTcxMTYwMDAgLSAweDk3MTJjZmU3ICBjb20uYXBwbGUuQ29yZVZpZGVvIDEuNS4x
ICgxLjUuMSkgPGVkN2JiOTVmYjk0ODE3ZWEzMjEyMDkwYWFjNWM2NWYzPiAvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29yZVZpZGVvCjB4
OTcxMmQwMDAgLSAweDk3MTMxZmZmICBsaWJHSUYuZHlsaWIgPz8/ICg/Pz8pIDxiOGY2MWUzNDZm
YTI0M2E3MTM4OTEwYmVkM2RjZGI2Yj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGlj
YXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0ltYWdlSU8uZnJh
bWV3b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL2xpYkdJRi5keWxpYgoweDk3MTMyMDAwIC0gMHg5
NzEzOWZmZSAgbGliYnNtLmR5bGliID8/PyAoPz8/KSA8ZDI1YzYzMzc4YTUwMjk2NDhmZmQ0YjQ2
NjliZTMxYmY+IC91c3IvbGliL2xpYmJzbS5keWxpYgoweDk3MTNhMDAwIC0gMHg5NzE2MmZmNyAg
Y29tLmFwcGxlLnNob3J0Y3V0IDEgKDEuMCkgPDA1Nzc4Mzg2NzEzODkwMmI1MmJjMDk0MWZlZGI3
NGQxPiAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvU2hvcnRjdXQuZnJhbWV3b3Jr
L1ZlcnNpb25zL0EvU2hvcnRjdXQKMHg5NzE2MzAwMCAtIDB4OTcyODdmZTMgIGNvbS5hcHBsZS5h
dWRpby50b29sYm94LkF1ZGlvVG9vbGJveCAxLjUuMSAoMS41LjEpIC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0F1ZGlvVG9vbGJveC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9BdWRpb1Rvb2xib3gK
MHg5NzI4ODAwMCAtIDB4OTcyY2FmZWYgIGNvbS5hcHBsZS5OYXZpZ2F0aW9uU2VydmljZXMgMy41
LjIgKDE2MykgPDkxODQ0OTgwODA0MDY3YjA3YTBiNjEyNDMxMGQzZjMxPiAvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9OYXZp
Z2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvTmF2aWdhdGlvblNlcnZpY2VzCjB4
OTcyY2IwMDAgLSAweDk3MmRhZmZmICBsaWJzYXNsMi4yLmR5bGliID8/PyAoPz8/KSA8YjllMWNh
MGI2NjEyZTI4MGI2Y2JlYTZkZjBlZWM1ZjY+IC91c3IvbGliL2xpYnNhc2wyLjIuZHlsaWIKMHg5
NzJkYjAwMCAtIDB4OTcyZjFmZmYgIGNvbS5hcHBsZS5EaWN0aW9uYXJ5U2VydmljZXMgMS4wLjAg
KDEuMC4wKSA8YWQwYWEwMjUyZTMzMjNkMTgyZTE3ZjUwZGVmZTU2ZmM+IC9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtz
L0RpY3Rpb25hcnlTZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9EaWN0aW9uYXJ5U2Vydmlj
ZXMKMHhiYTkwMDAwMCAtIDB4YmE5MTZmZmYgIGxpYkphcGFuZXNlQ29udmVydGVyLmR5bGliID8/
PyAoPz8/KSA8MWU5MmUzNDhlNzNmYzZmY2U3MjM5MzZjMTFlNGIyNWM+IC9TeXN0ZW0vTGlicmFy
eS9Db3JlU2VydmljZXMvRW5jb2RpbmdzL2xpYkphcGFuZXNlQ29udmVydGVyLmR5bGliCjB4YmFi
MDAwMDAgLSAweGJhYjIxZmUyICBsaWJLb3JlYW5Db252ZXJ0ZXIuZHlsaWIgPz8/ICg/Pz8pIDwy
ZjNiZTkzYzhjMDg3Mjk1OGI2ODEzOTdlZTA5YzlmMT4gL1N5c3RlbS9MaWJyYXJ5L0NvcmVTZXJ2
aWNlcy9FbmNvZGluZ3MvbGliS29yZWFuQ29udmVydGVyLmR5bGliCjB4ZmZmZTgwMDAgLSAweGZm
ZmViZmZmICBsaWJvYmpjLkEuZHlsaWIgPz8/ICg/Pz8pIC91c3IvbGliL2xpYm9iamMuQS5keWxp
YgoweGZmZmYwMDAwIC0gMHhmZmZmMTc4MCAgbGliU3lzdGVtLkIuZHlsaWIgPz8/ICg/Pz8pIC91
c3IvbGliL2xpYlN5c3RlbS5CLmR5bGliCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26218</attachid>
            <date>2008-12-22 16:01:27 -0800</date>
            <delta_ts>2008-12-23 12:12:55 -0800</delta_ts>
            <desc>patch</desc>
            <filename>RobustUndoPatch.txt</filename>
            <type>text/plain</type>
            <size>146230</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTQ0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMwIEBACisyMDA4LTEyLTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGlt
cHJvdmUgcm9idXN0bmVzcyBvZiB1bmRvL3JlZG8gaW4gSFRNTCBlZGl0aW5nIHRvIGZpeCB0aGUg
Zm9sbG93aW5nIGJ1Z3MKKyAgICAgICAgICA+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NzAzPiBDcmFzaCBpbiBXZWJDb3JlOjpJbnNlcnROb2RlQmVmb3JlQ29tbWFu
ZDo6ZG9VbmFwcGx5KCkKKyAgICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDA1OTQyMz4gRE9NIG9w
ZXJhdGlvbnMgcGVyZm9ybWVkIG9uIGVkaXRhYmxlIEhUTUwgY2FuIGNhdXNlIGEgY3Jhc2ggbGF0
ZXIgZHVyaW5nIFVuZG8KKworICAgICAgICBNYWpvciBjYXRlZ29yaWVzIG9mIGltcHJvdmVtZW50
czoKKworICAgICAgICAgICAgMSkgQWRkZWQgbnVsbCBjaGVja3MuCisgICAgICAgICAgICAyKSBF
bGltaW5hdGVkIHR5cGUgY2FzdHMgd2l0aG91dCBjb3JyZXNwb25kaW5nIHR5cGUgY2hlY2tzLgor
ICAgICAgICAgICAgMykgQXZvaWRlZCBwb3NzaWJsZSBpbmZpbml0ZSBsb29wcyBieSBidWlsZGlu
ZyB1cCBsaXN0cyBvZiBub2RlcyB0byBvcGVyYXRlIG9uCisgICAgICAgICAgICAgICBiZWZvcmUg
c3RhcnRpbmcgdG8gbWFrZSBET00gY2hhbmdlcy4KKyAgICAgICAgICAgIDQpIFVzZSBtb3JlIFJl
ZlB0ci4KKworICAgICAgICBObyB0ZXN0IGF0IHRoaXMgdGltZSwgYnV0IHRlc3QgY2FzZXMgc2hv
dWxkIGZvbGxvdyBpbiBzZXBhcmF0ZSBwYXRjaGVzLgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBTZXQgdGhlIHJvbGUgb2YgQ1NTUHJvcGVydHlOYW1lcy5o
IHRvIFByaXZhdGUgc28gaXQKKyAgICAgICAgY2FuIGJlIHVzZWQgaW4gb3RoZXIgUHJpdmF0ZSBo
ZWFkZXJzLCBzcGVjaWZpY2FsbHkgZWRpdGluZyBvbmVzLgorCisgICAgICAgICogY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bG9j
YXRlQ291c2luTGlzdCk6IEFkb3B0IHBhcmVudEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNlbGVjdG9yOjpsb2NhdGVTaGFyZWRTdHlsZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9y
KTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6IChXZWJDb3JlOjpFbGVtZW50
OjpjbG9uZUVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOiBBZGRlZCBj
bG9uZUVsZW1lbnQgYW5kIGFuIGltcGxlbWVudGF0aW9uIG9mIHBhcmVudEVsZW1lbnQuCisgICAg
ICAgICogZG9tL05vZGUuaDogTW92ZWQgcGFyZW50RWxlbWVudCBmcm9tIGhlcmUgdG8gRWxlbWVu
dC5oIGFuZCBjaGFuZ2VkIGl0cworICAgICAgICBpbXBsZW1lbnRhdGlvbiBzbyBpdCB3aWxsIHJl
dHVybiAwIHdoZW4gdGhlIHBhcmVudCBpcyBub3QgYW4gZWxlbWVudAorICAgICAgICAoZG9jdW1l
bnQsIGRvY3VtZW50IGZyYWdtZW50LCBldGMuKS4KKworICAgICAgICAqIGVkaXRpbmcvQXBwZW5k
Tm9kZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kTm9kZUNvbW1hbmQ6OkFw
cGVuZE5vZGVDb21tYW5kKTogTWFkZSBwYXJlbnQgYmUgYW4gRWxlbWVudC4KKyAgICAgICAgTW92
ZWQgYXNzZXJ0aW9ucyBmcm9tIGRvQXBwbHkgaW4gaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkFw
cGVuZE5vZGVDb21tYW5kOjpkb0FwcGx5KTogU2ltcGxpZmllZCB0byBqdXN0IGEgc2luZ2xlIHVu
Y2hlY2tlZAorICAgICAgICBhcHBlbmRDaGlsZCBjYWxsLgorICAgICAgICAoV2ViQ29yZTo6QXBw
ZW5kTm9kZUNvbW1hbmQ6OmRvVW5hcHBseSk6IFNpbXBsaWZpZWQgdG8ganVzdCBhIHNpbmdsZSBy
ZW1vdmUgY2FsbC4KKyAgICAgICAgKiBlZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmg6IFVwZGF0
ZWQuCisKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVN0eWxlU3BhbkVsZW1lbnQpOiBFbGltaW5hdGUgY2FzdGluZyBieSBj
cmVhdGluZyBhbiBlbGVtZW50IGluIGEgbW9yZQorICAgICAgICBkaXJlY3Qgd2F5IHdpdGggbmV3
IGluc3RlYWQgb2YgY3JlYXRlRWxlbWVudE5TLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHls
ZUNvbW1hbmQ6OkFwcGx5U3R5bGVDb21tYW5kKTogVXNlIFBhc3NSZWZQdHIuCisgICAgICAgIChX
ZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlQ1NTU3R5bGUpOiBVc2UgQ1NTUHJvcGVy
dHlJRC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphZGRJbmxpbmVTdHls
ZUlmTmVlZGVkKTogVXNlIGNsb25lRWxlbWVudC4KKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5
bGVDb21tYW5kLmg6CisKKyAgICAgICAgKiBlZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtCbG9ja3F1b3RlQ29tbWFuZDo6ZG9BcHBseSk6
IFVzZSBFbGVtZW50KiBhbmQgY2xvbmVFbGVtZW50LgorCisgICAgICAgICogZWRpdGluZy9Db21w
b3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29t
bWFuZDo6YXBwbHlTdHlsZWRFbGVtZW50KTogVXNlIFBhc3NSZWZQdHIgYW5kIHVuc2lnbmVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZVN0eWxlZEVsZW1l
bnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNl
cnROb2RlQmVmb3JlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29t
bWFuZDo6aW5zZXJ0Tm9kZUFmdGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb21wb3Np
dGVFZGl0Q29tbWFuZDo6aW5zZXJ0Tm9kZUF0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwZW5kTm9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZUNoaWxkcmVuSW5SYW5nZSk6IERpdHRvLiBB
bHNvIHVzZSBhIHZlY3RvciB0bworICAgICAgICBtYWtlIHRoZSBsaXN0IG9mIGNoaWxkcmVuIGlu
IGNhc2UgcmVtb3ZpbmcgdGhlbSBoYXMgc2lkZSBlZmZlY3RzLgorICAgICAgICAoV2ViQ29yZTo6
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZU5vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9k
ZUFuZFBydW5lQW5jZXN0b3JzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6c3BsaXRUZXh0Tm9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29t
cG9zaXRlRWRpdENvbW1hbmQ6OnNwbGl0RWxlbWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1lcmdlSWRlbnRpY2FsRWxlbWVudHMpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjp3cmFwQ29udGVudHNJbkR1
bW15U3Bhbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6
OnNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmpvaW5UZXh0Tm9kZXMpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnB1dFRleHQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnRUZXh0SW50b05vZGUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpkZWxldGVUZXh0
RnJvbU5vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5k
OjpyZXBsYWNlVGV4dEluTm9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRl
RWRpdENvbW1hbmQ6Omluc2VydE5vZGVBdFRhYlNwYW5Qb3NpdGlvbik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZUNTU1Byb3BlcnR5KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZUF0
dHJpYnV0ZSk6IERpdHRvLiBJbXBsZW1lbnQgYnkgY2FsbGluZworICAgICAgICBzZXROb2RlQXR0
cmlidXRlIGluc3RlYWQgb2Ygd2l0aCBpdHMgb3duIFNpbXBsZUVkaXRDb21tYW5kLgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnNldE5vZGVBdHRyaWJ1dGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpkZWxldGVJbnNpZ25p
ZmljYW50VGV4dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1h
bmQ6OmFwcGVuZEJsb2NrUGxhY2Vob2xkZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBvc2l0ZUVkaXRDb21tYW5kOjphZGRCbG9ja1BsYWNlaG9sZGVySWZOZWVkZWQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnROZXdEZWZhdWx0
UGFyYWdyYXBoRWxlbWVudEF0KTogRGl0dG8uIERvbid0CisgICAgICAgIGJvdGhlciB1c2luZyBh
biB1bmRvYWJsZSBvcGVyYXRpb24gdG8gcHV0IHRoZSBicmVhayBlbGVtZW50IGludG8gdGhlIHBh
cmFncmFwaAorICAgICAgICBlbGVtZW50IGJlY2F1c2UgdGhlcmUncyBubyBuZWVkIHRvIHNwbGl0
IHRoZW0gYW5kIHJlZG8gdGhpcyB3aGVuIGRvaW5nIHVuZG8vcmVkby4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmJyZWFrT3V0T2ZFbXB0eUxpc3RJdGVt
KTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oOiBEaXR0
by4KKworICAgICAgICAqIGVkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kOjpEZWxldGVGcm9tVGV4
dE5vZGVDb21tYW5kKTogVXNlIHVuc2lnbmVkLgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlRnJv
bVRleHROb2RlQ29tbWFuZDo6ZG9BcHBseSk6IEVsaW1pbmF0ZWQgaW5hcHByb3ByaWF0ZSBhc3Nl
cnRpb25zLgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZDo6ZG9V
bmFwcGx5KTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21t
YW5kLmg6CisKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlTm9kZSk6IFVz
ZSBQYXNzUmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6
ZGVsZXRlVGV4dEZyb21Ob2RlKTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9EZWxldGVTZWxl
Y3Rpb25Db21tYW5kLmg6CisKKyAgICAgICAgKiBlZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9ja0NvbW1hbmQ6OkZvcm1hdEJsb2NrQ29t
bWFuZCk6IFVzZSBBdG9taWNTdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRCbG9ja0Nv
bW1hbmQ6OmRvQXBwbHkpOiBVc2UgRWxlbWVudC4KKyAgICAgICAgKiBlZGl0aW5nL0Zvcm1hdEJs
b2NrQ29tbWFuZC5oOgorCisgICAgICAgICogZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbmRlbnRCbG9ja3F1b3RlRWxlbWVudCk6IFVz
ZSBuZXcgdG8gY3JlYXRlIHRoZSBlbGVtZW50CisgICAgICAgIGluc3RlYWQgb2YgY2FsbGluZyBh
IGZ1bmN0aW9uIHNvIHdlIGhhdmUgYSBtb3JlIHNwZWNpZmljIHR5cGUuCisgICAgICAgIChXZWJD
b3JlOjpJbmRlbnRPdXRkZW50Q29tbWFuZDo6cHJlcGFyZUJsb2NrcXVvdGVMZXZlbEZvckluc2Vy
dGlvbik6CisgICAgICAgIFVzZSBSZWZQdHIgYW5kIEVsZW1lbnQuCisgICAgICAgIChXZWJDb3Jl
OjpJbmRlbnRPdXRkZW50Q29tbWFuZDo6aW5kZW50UmVnaW9uKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpJbmRlbnRPdXRkZW50Q29tbWFuZDo6b3V0ZGVudFBhcmFncmFwaCk6IERpdHRvLgor
ICAgICAgICAqIGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuaDoKKworICAgICAgICAqIGVk
aXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kKToKKyAg
ICAgICAgVXNlIHVuc2lnbmVkLiBBZGRlZCBhbiBhc3NlcnRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpkb0FwcGx5KTogRWxpbWluYXRlZCBpbmFwcHJv
cHJpYXRlIGFzc2VydGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRJbnRvVGV4dE5vZGVD
b21tYW5kOjpkb1VuYXBwbHkpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0luc2VydEludG9U
ZXh0Tm9kZUNvbW1hbmQuaDoKKworICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjppbnNl
cnROb2RlQWZ0ZXJQb3NpdGlvbik6IFVzZSBFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6SW5z
ZXJ0TGluZUJyZWFrQ29tbWFuZDo6aW5zZXJ0Tm9kZUJlZm9yZVBvc2l0aW9uKTogRGl0dG8uCisK
KyAgICAgICAgKiBlZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5KTogVXNlIEVsZW1lbnQuCisKKyAgICAgICAg
KiBlZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc2VydE5vZGVCZWZvcmVDb21tYW5kOjpJbnNlcnROb2RlQmVmb3JlQ29tbWFuZCk6IE1vdmVk
IGFzc2VydGlvbnMKKyAgICAgICAgaGVyZSBmcm9tIGRvQXBwbHkuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNlcnROb2RlQmVmb3JlQ29tbWFuZDo6ZG9BcHBseSk6IEVsaW1pbmF0ZWQgaW5hcHByb3By
aWF0ZSBhc3NlcnRpb25zLgorICAgICAgICBBZGRlZCBhIG51bGwgY2hlY2suCisgICAgICAgIChX
ZWJDb3JlOjpJbnNlcnROb2RlQmVmb3JlQ29tbWFuZDo6ZG9VbmFwcGx5KTogU2ltcGxpZmllZCB0
byBqdXN0IGEgc2luZ2xlIHJlbW92ZSBjYWxsLgorCisgICAgICAgICogZWRpdGluZy9JbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFBh
cmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvQXBwbHkpOiBVc2UgRWxlbWVudCBhbmQgY2xvbmVF
bGVtZW50LgorCisgICAgICAgICogZWRpdGluZy9Kb2luVGV4dE5vZGVzQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKb2luVGV4dE5vZGVzQ29tbWFuZDo6ZG9BcHBseSk6IEVsaW1pbmF0
ZWQgaW5hcHByb3ByaWF0ZSBhc3NlcnRpb25zLgorICAgICAgICBBZGRlZCBzb21lIHJ1bnRpbWUg
Y2hlY2tzLiBEb24ndCBzdG9yZSBhbnl0aGluZyBpbiBtX29mZnNldC4KKyAgICAgICAgKFdlYkNv
cmU6OkpvaW5UZXh0Tm9kZXNDb21tYW5kOjpkb1VuYXBwbHkpOiBEaXR0by4KKyAgICAgICAgKiBl
ZGl0aW5nL0pvaW5UZXh0Tm9kZXNDb21tYW5kLmg6CisKKyAgICAgICAgKiBlZGl0aW5nL01lcmdl
SWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lcmdlSWRl
bnRpY2FsRWxlbWVudHNDb21tYW5kOjpNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZCk6IE1v
dmVkCisgICAgICAgIGFuIGFzc2VydGlvbiBoZXJlIGZyb20gZG9BcHBseS4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpkb0FwcGx5KTogRWxpbWluYXRl
ZCBpbmFwcHJvcHJpYXRlIGFzc2VydGlvbnMuCisgICAgICAgIEFkZGVkIGEgbnVsbCBjaGVjay4g
Q2hhbmdlZCBpbXBsZW1lbnRhdGlvbiB0byB1c2UgcmVtb3ZlIHRvIGF2b2lkIG51bGwgcGFyZW50
IGlzc3VlLgorICAgICAgICBVc2UgYSB2ZWN0b3Igb2Ygbm9kZXMgdG8gYXZvaWQgcG9zc2libGUg
aW5maW5pdGUgbG9vcCBpZiBtdXRhdGlvbiBoYXBwZW5zIHdoaWxlIGl0ZXJhdGluZy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpkb1VuYXBwbHkpOiBE
aXR0by4KKworICAgICAgICAqIGVkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ6OmFwcGVu
ZFNpYmxpbmdOb2RlUmFuZ2UpOiBVc2UgRWxlbWVudCouCisgICAgICAgIChXZWJDb3JlOjpJbmNy
ZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ6OmRvQXBwbHkpOiBEaXR0by4KKyAgICAgICAg
KiBlZGl0aW5nL01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oOgorCisgICAgICAgICogZWRpdGlu
Zy9SZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Zl
Q1NTUHJvcGVydHlDb21tYW5kOjpSZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQpOiBVc2UgUGFzc1Jl
ZlB0ciBhbmQKKyAgICAgICAgQ1NTUHJvcGVydHlJRC4gQWxzbyByZW5hbWVkIG1fZGVjbCB0byBt
X3N0eWxlLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kOjpkb0Fw
cGx5KTogRWxpbWluYXRlZCBpbmFwcHJvcHJpYXRlIGFzc2VydGlvbnMuCisgICAgICAgIChXZWJD
b3JlOjpSZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQ6OmRvVW5hcHBseSk6IERpdHRvLgorCisgICAg
ICAgICogZWRpdGluZy9SZW1vdmVOb2RlQXR0cmlidXRlQ29tbWFuZC5jcHA6IFJlbW92ZWQgY29u
dGVudHMgb2YgdGhpcyBmaWxlLiBUbyBiZSBkZWxldGVkLgorICAgICAgICBVc2UgU2V0Tm9kZUF0
dHJpYnV0ZUNvbW1hbmQgaW5zdGVhZC4KKyAgICAgICAgKiBlZGl0aW5nL1JlbW92ZU5vZGVBdHRy
aWJ1dGVDb21tYW5kLmg6IERpdHRvLgorCisgICAgICAgICogZWRpdGluZy9SZW1vdmVOb2RlQ29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdmVOb2RlQ29tbWFuZDo6UmVtb3ZlTm9k
ZUNvbW1hbmQpOiBNb3ZlZCBhc3NlcnRpb25zIGhlcmUgZnJvbSBkb0FwcGx5LgorICAgICAgICBE
b24ndCBpbml0aWFsaXplIG1fcmVmQ2hpbGQgaGVyZTsgcmF0aGVyIGRvIGl0IGluIGRvQXBwbHku
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdmVOb2RlQ29tbWFuZDo6ZG9BcHBseSk6IEVsaW1pbmF0
ZWQgaW5hcHByb3ByaWF0ZSBhc3NlcnRpb25zLiBBZGRlZAorICAgICAgICBjaGVja3MgYW5kIHN0
cmVhbWxpbmVkIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlTm9kZUNv
bW1hbmQ6OmRvVW5hcHBseSk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvUmVtb3ZlTm9kZUNv
bW1hbmQuaDoKKworICAgICAgICAqIGVkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJl
bkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlTm9kZVByZXNlcnZpbmdDaGls
ZHJlbkNvbW1hbmQ6OmRvQXBwbHkpOiBVc2UgYSB2ZWN0b3IuCisKKyAgICAgICAgKiBlZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2Vt
ZW50RnJhZ21lbnQ6Omluc2VydEZyYWdtZW50Rm9yVGVzdFJlbmRlcmluZyk6IFJlbW92ZWQgbm93
LXVubmVlZGVkIGNhc3QuCisKKyAgICAgICAgKiBlZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldE5vZGVBdHRyaWJ1dGVDb21tYW5kOjpTZXRO
b2RlQXR0cmlidXRlQ29tbWFuZCk6IFVzZSBBdG9taWNTdHJpbmcuCisgICAgICAgIFJlbW92ZWQg
YXNzZXJ0aW9uIHRoYXQgcHJldmVudHMgdXMgZnJvbSB1c2luZyB0aGlzIHRvIHJlbW92ZSBhbiBh
dHRyaWJ1dGUuCisgICAgICAgIChXZWJDb3JlOjpTZXROb2RlQXR0cmlidXRlQ29tbWFuZDo6ZG9B
cHBseSk6IEVsaW1pbmF0ZWQgaW5hcHByb3ByaWF0ZSBhc3NlcnRpb25zLgorICAgICAgICAoV2Vi
Q29yZTo6U2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQ6OmRvVW5hcHBseSk6IERpdHRvLgorICAgICAg
ICAqIGVkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuaDoKKworICAgICAgICAqIGVkaXRp
bmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGxpdEVsZW1l
bnRDb21tYW5kOjpTcGxpdEVsZW1lbnRDb21tYW5kKTogTW92ZWQgYXNzZXJ0aW9uIGhlcmUgZnJv
bSBkb0FwcGx5LgorICAgICAgICAoV2ViQ29yZTo6U3BsaXRFbGVtZW50Q29tbWFuZDo6ZG9BcHBs
eSk6IENoZWNrIHNvbWUgbW9yZSBpbnZhcmlhbnRzIGFuZCB1c2UgYSB2ZWN0b3IKKyAgICAgICAg
dG8gYXZvaWQgcG9zc2libGUgaW5maW5pdGUgbG9vcHMuCisgICAgICAgIChXZWJDb3JlOjpTcGxp
dEVsZW1lbnRDb21tYW5kOjpkb1VuYXBwbHkpOiBEaXR0by4KKworICAgICAgICAqIGVkaXRpbmcv
U3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BsaXRUZXh0Tm9k
ZUNvbW1hbmQ6OlNwbGl0VGV4dE5vZGVDb21tYW5kKTogTW92ZWQgYXNzZXJ0aW9ucyBhbmQgY29t
bWVudAorICAgICAgICBoZXJlIGZyb20gZG9BcHBseS4KKyAgICAgICAgKFdlYkNvcmU6OlNwbGl0
VGV4dE5vZGVDb21tYW5kOjpkb0FwcGx5KTogQ2hlY2sgZm9yIG51bGwgYW5kIGZhaWx1cmVzIHdo
ZW4gYXBwbHlpbmcuCisgICAgICAgIChXZWJDb3JlOjpTcGxpdFRleHROb2RlQ29tbWFuZDo6ZG9V
bmFwcGx5KTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL1NwbGl0VGV4dE5vZGVDb250YWlu
aW5nRWxlbWVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BsaXRUZXh0Tm9kZUNv
bnRhaW5pbmdFbGVtZW50Q29tbWFuZDo6ZG9BcHBseSk6IFVzZSBFbGVtZW50LgorCisgICAgICAg
ICogZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kOjpkb0FwcGx5KTogQ2hlY2sg
Zm9yIG51bGwgYW5kIGlnbm9yZSBmYWlsdXJlcy4KKyAgICAgICAgRG9uJ3QgcmV1c2UgdGhlIGR1
bW15IHNwYW4uIFNpbXBsaWZpZWQgbG9naWMuCisgICAgICAgIChXZWJDb3JlOjpXcmFwQ29udGVu
dHNJbkR1bW15U3BhbkNvbW1hbmQ6OmRvVW5hcHBseSk6IERpdHRvLgorCisgICAgICAgICogZWRp
dGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0Jsb2NrKTogTWFrZSBz
dXJlIHRoaXMgcmV0dXJucyB0cnVlIG9ubHkgZm9yIGVsZW1lbnRzLgorICAgICAgICAoV2ViQ29y
ZTo6ZW5jbG9zaW5nQmxvY2spOiBSZXR1cm4gYW4gRWxlbWVudCouCisgICAgICAgIChXZWJDb3Jl
OjplbmNsb3NpbmdUYWJsZUNlbGwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2lu
Z0xpc3QpOiBSZXR1cm4gYW4gSFRNTEVsZW1lbnQqLgorICAgICAgICAoV2ViQ29yZTo6b3V0ZXJt
b3N0RW5jbG9zaW5nTGlzdCk6IFJldHVybiBhbiBIVE1MRWxlbWVudCouCisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudCk6IFJldHVybiBhbiBIVE1MRWxlbWVu
dCouCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCcmVha0VsZW1lbnQpOiBSZXR1cm4gYW4gSFRN
TEVsZW1lbnQqLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlT3JkZXJlZExpc3RFbGVtZW50KTog
UmV0dXJuIGFuIEhUTUxFbGVtZW50Ki4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVVub3JkZXJl
ZExpc3RFbGVtZW50KTogUmV0dXJuIGFuIEhUTUxFbGVtZW50Ki4KKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUxpc3RJdGVtRWxlbWVudCk6IFJldHVybiBhbiBIVE1MRWxlbWVudCouCisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVIVE1MRWxlbWVudCk6IFJldHVybiBhbiBIVE1MRWxlbWVudCouCisg
ICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5oOgorCisgICAgICAgICogZWRpdGluZy9tYXJr
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGcm9tVGV4dCk6IFVzZSBj
cmVhdGVCcmVha0VsZW1lbnQgYW5kIHVzZSBFbGVtZW50Ki4KKworICAgICAgICAqIHBhZ2UvTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzOjp0YXJnZXROb2RlKTogVXNlIHBhcmVudEVsZW1lbnQuCisK
IDIwMDgtMTItMjIgIERoYW5hbmpveSBDaHV0aWEgIDxkaGFucmRAZ21haWwuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhdmlkIEtpbHplci4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAzOTQ0MCkKKysrIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03OTcsNyArNzk3
LDcgQEAKIAkJNjU1MEI2QTYwOTlERjAyNzAwOTBENzgxIC8qIFRleHQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NTBCNjlDMDk5REYwMjcwMDkwRDc4
MSAvKiBUZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNjU2NTNGMkQwRDk3MjdEMjAwQ0E5NzIzIC8qIFNWR0FsdEdseXBoRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1M0YyQTBE
OTcyN0QyMDBDQTk3MjMgLyogU1ZHQWx0R2x5cGhFbGVtZW50LmNwcCAqLzsgfTsKIAkJNjU2NTNG
MkUwRDk3MjdEMjAwQ0E5NzIzIC8qIFNWR0FsdEdseXBoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTNGMkIwRDk3MjdEMjAwQ0E5NzIz
IC8qIFNWR0FsdEdseXBoRWxlbWVudC5oICovOyB9OwotCQk2NTY1ODBGNDA5RDEyQjIwMDAwRTYx
RDcgLyogQ1NTUHJvcGVydHlOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU2NTgwRUYwOUQxMkIyMDAwMEU2MUQ3IC8qIENTU1Byb3BlcnR5TmFt
ZXMuaCAqLzsgfTsKKwkJNjU2NTgwRjQwOUQxMkIyMDAwMEU2MUQ3IC8qIENTU1Byb3BlcnR5TmFt
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4
MEVGMDlEMTJCMjAwMDBFNjFENyAvKiBDU1NQcm9wZXJ0eU5hbWVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU2NTgxNTEwOUQxMzA0MzAwMEU2
MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ4MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdv
cmRzLmggKi87IH07CiAJCTY1NjU4MUIyMDlEMTRFRTYwMDBFNjFENyAvKiBVc2VyQWdlbnRTdHls
ZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjU2NTgxQUUwOUQxNEVFNjAwMEU2MUQ3IC8qIFVzZXJBZ2VudFN0eWxlU2hlZXRzLmggKi87IH07
CiAJCTY1NjU4MUZFMDlEMTUwOEQwMDBFNjFENyAvKiBTVkdFbGVtZW50RmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxRTcwOUQxNTA4
RDAwMEU2MUQ3IC8qIFNWR0VsZW1lbnRGYWN0b3J5LmggKi87IH07CkluZGV4OiBXZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gMzk0NDApCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTA1LDcgKzkwNSw3IEBAIE5vZGUqIENTU1N0
eWxlU2VsZWN0b3I6OmxvY2F0ZUNvdXNpbkxpc3QKICAgICAgICAgICAgICAgICByID0gci0+cHJl
dmlvdXNTaWJsaW5nKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIXIgJiYgZGVw
dGggPCBjU3R5bGVTZWFyY2hUaHJlc2hvbGQpCi0gICAgICAgICAgICAgICAgciA9IGxvY2F0ZUNv
dXNpbkxpc3Qoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHBhcmVudC0+cGFyZW50Tm9kZSgpKSwgZGVw
dGggKyAxKTsKKyAgICAgICAgICAgICAgICByID0gbG9jYXRlQ291c2luTGlzdChwYXJlbnQtPnBh
cmVudEVsZW1lbnQoKSwgZGVwdGggKyAxKTsKICAgICAgICAgICAgIHdoaWxlIChyKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHItPnJlbmRlclN0eWxlKCkgPT0gc3QpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiByLT5sYXN0Q2hpbGQoKTsKQEAgLTk5OCw3ICs5OTgsNyBAQCBSZW5kZXJTdHls
ZSogQ1NTU3R5bGVTZWxlY3Rvcjo6bG9jYXRlU2hhCiAgICAgICAgICAgICBmb3IgKG4gPSBuLT5w
cmV2aW91c1NpYmxpbmcoKTsgbiAmJiAhbi0+aXNFbGVtZW50Tm9kZSgpOyBuID0gbi0+cHJldmlv
dXNTaWJsaW5nKCkpIHsgfQogICAgICAgICB9CiAgICAgICAgIGlmICghbikgCi0gICAgICAgICAg
ICBuID0gbG9jYXRlQ291c2luTGlzdChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9lbGVtZW50LT5w
YXJlbnROb2RlKCkpKTsKKyAgICAgICAgICAgIG4gPSBsb2NhdGVDb3VzaW5MaXN0KG1fZWxlbWVu
dC0+cGFyZW50RWxlbWVudCgpKTsKICAgICAgICAgd2hpbGUgKG4pIHsKICAgICAgICAgICAgIGlm
IChjYW5TaGFyZVN0eWxlV2l0aEVsZW1lbnQobikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG4t
PnJlbmRlclN0eWxlKCk7CkBAIC0xOTYyLDEwICsxOTYyLDkgQEAgYm9vbCBDU1NTdHlsZVNlbGVj
dG9yOjpTZWxlY3RvckNoZWNrZXI6OgogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvTGFzdENoaWxkOiB7CiAgICAgICAgICAgICAgICAgLy8gbGFzdC1j
aGlsZCBtYXRjaGVzIHRoZSBsYXN0IGNoaWxkIHRoYXQgaXMgYW4gZWxlbWVudAotICAgICAgICAg
ICAgICAgIGlmIChlLT5wYXJlbnROb2RlKCkgJiYgZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnRO
b2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgRWxlbWVudCogcGFyZW50Tm9kZSA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihlLT5wYXJlbnROb2RlKCkpOworICAgICAgICAgICAgICAgIGlmIChF
bGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZS0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChw
YXJlbnROb2RlLT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogbiA9IGUtPm5leHRTaWJsaW5nKCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAobiAmJiAhbi0+aXNFbGVtZW50Tm9kZSgpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuLT5uZXh0U2libGluZygpOwpAQCAtMTk3NCw3
ICsxOTczLDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OgogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmICghbV9jb2xsZWN0UnVs
ZXNPbmx5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHls
ZSA9IGVsZW1lbnRTdHlsZSA/IGVsZW1lbnRTdHlsZSA6IGUtPnJlbmRlclN0eWxlKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBlbGVtZW50U3R5
bGUgPyBlbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnROb2RlLT5yZW5kZXJTdHlsZSgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gZWxlbWVudFN0
eWxlID8gZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxk
UnVsZXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgY2hpbGRTdHls
ZSkKQEAgLTE5ODYsMTQgKzE5ODUsMTMgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rv
ckNoZWNrZXI6OgogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
UHNldWRvTGFzdE9mVHlwZTogewogICAgICAgICAgICAgICAgIC8vIGxhc3Qtb2YtdHlwZSBtYXRj
aGVzIHRoZSBsYXN0IGVsZW1lbnQgb2YgaXRzIHR5cGUKLSAgICAgICAgICAgICAgICBpZiAoZS0+
cGFyZW50Tm9kZSgpICYmIGUtPnBhcmVudE5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIEVsZW1lbnQqIHBhcmVudE5vZGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50
Kj4oZS0+cGFyZW50Tm9kZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50
RWxlbWVudCA9IGUtPnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
IW1fY29sbGVjdFJ1bGVzT25seSkgewotICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5
bGUqIHBhcmVudFN0eWxlID0gZWxlbWVudFN0eWxlID8gZWxlbWVudFBhcmVudFN0eWxlIDogcGFy
ZW50Tm9kZS0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0
eWxlKiBwYXJlbnRTdHlsZSA9IGVsZW1lbnRTdHlsZSA/IGVsZW1lbnRQYXJlbnRTdHlsZSA6IHBh
cmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
cGFyZW50U3R5bGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNl
dENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJlbnROb2RlLT5pc0Zpbmlz
aGVkUGFyc2luZ0NoaWxkcmVuKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxl
bWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwogICAgICAgICAgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlID0gZS0+dGFn
UU5hbWUoKTsKQEAgLTIwMTAsOCArMjAwOCw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaGVja2VyOjoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb09ubHlDaGlsZDogewotICAgICAgICAg
ICAgICAgIGlmIChlLT5wYXJlbnROb2RlKCkgJiYgZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnRO
b2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgRWxlbWVudCogcGFyZW50Tm9kZSA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihlLT5wYXJlbnROb2RlKCkpOworICAgICAgICAgICAgICAgIGlmIChF
bGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZS0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgZmlyc3RDaGlsZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBi
b29sIGxhc3RDaGlsZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAKQEAgLTIwMjAsNyAr
MjAxNyw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAg
ICAgICAgICAgICAgICAgICAgIG4gPSBuLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFuKQogICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdENoaWxkICYmIHBhcmVudE5vZGUtPmlz
RmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZmly
c3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLT5uZXh0U2libGluZygpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgd2hpbGUgKG4gJiYgIW4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuID0gbi0+bmV4dFNpYmxpbmcoKTsKQEAgLTIwMjksNyArMjAy
Niw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAoIW1fY29sbGVjdFJ1bGVzT25s
eSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBl
bGVtZW50U3R5bGUgPyBlbGVtZW50U3R5bGUgOiBlLT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gZWxlbWVudFN0eWxlID8g
ZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50Tm9kZS0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGVsZW1lbnRTdHlsZSA/
IGVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1
bGVzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxk
cmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCk7CkBAIC0yMDQ1LDE2ICsyMDQyLDE1IEBAIGJv
b2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb09ubHlPZlR5cGU6IHsKICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogVGhpcyBzZWxlY3RvciBpcyB2ZXJ5IHNsb3cuCi0gICAgICAgICAg
ICAgICAgaWYgKGUtPnBhcmVudE5vZGUoKSAmJiBlLT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5v
ZGUoKSkgewotICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBwYXJlbnROb2RlID0gc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KGUtPnBhcmVudE5vZGUoKSk7CisgICAgICAgICAgICAgICAgaWYgKEVs
ZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlLT5wYXJlbnRFbGVtZW50KCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFtX2NvbGxlY3RSdWxlc09ubHkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGVsZW1lbnRTdHlsZSA/IGVsZW1lbnRQYXJl
bnRTdHlsZSA6IHBhcmVudE5vZGUtPnJlbmRlclN0eWxlKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBlbGVtZW50U3R5bGUgPyBlbGVtZW50UGFy
ZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHBhcmVudFN0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5B
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoIXBh
cmVudE5vZGUtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGJv
b2wgZmlyc3RDaGlsZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBib29sIGxhc3RDaGls
ZCA9IGZhbHNlOwpAQCAtMjA4NCw3ICsyMDgwLDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpT
ZWxlY3RvckNoZWNrZXI6OgogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRo
Q2hpbGQ6IHsKICAgICAgICAgICAgICAgICBpZiAoIXNlbC0+cGFyc2VOdGgoKSkKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgaWYgKGUtPnBhcmVudE5vZGUoKSAm
JiBlLT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSkgeworICAgICAgICAgICAgICAgIGlm
IChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZS0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGludCBjb3VudCA9IDE7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIG4g
PSBlLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG4pIHsK
QEAgLTIxMDIsNyArMjA5OCw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVj
a2VyOjoKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmICghbV9j
b2xsZWN0UnVsZXNPbmx5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSog
Y2hpbGRTdHlsZSA9IGVsZW1lbnRTdHlsZSA/IGVsZW1lbnRTdHlsZSA6IGUtPnJlbmRlclN0eWxl
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBl
bGVtZW50U3R5bGUgPyBlbGVtZW50UGFyZW50U3R5bGUgOiBlLT5wYXJlbnROb2RlKCktPnJlbmRl
clN0eWxlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUgPSBlbGVtZW50U3R5bGUgPyBlbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5y
ZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkU3R5bGUpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRTdHlsZS0+c2V0Q2hpbGRJbmRleChjb3Vu
dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCkBAIC0yMTE3LDcg
KzIxMTMsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhPZlR5cGU6IHsKICAgICAgICAgICAg
ICAgICBpZiAoIXNlbC0+cGFyc2VOdGgoKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgaWYgKGUtPnBhcmVudE5vZGUoKSAmJiBlLT5wYXJlbnROb2RlKCktPmlz
RWxlbWVudE5vZGUoKSkgeworICAgICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVt
ZW50ID0gZS0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBjb3Vu
dCA9IDE7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBl
LT50YWdRTmFtZSgpOwogICAgICAgICAgICAgICAgICAgICBOb2RlKiBuID0gZS0+cHJldmlvdXNT
aWJsaW5nKCk7CkBAIC0yMTI4LDcgKzIxMjQsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNl
bGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgIGlmICghbV9jb2xsZWN0UnVsZXNPbmx5KSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBlbGVtZW50U3R5
bGUgPyBlbGVtZW50UGFyZW50U3R5bGUgOiBlLT5wYXJlbnROb2RlKCktPnJlbmRlclN0eWxlKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBlbGVt
ZW50U3R5bGUgPyBlbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHls
ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3
YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTIxNDEsMTQg
KzIxMzcsMTMgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OgogICAg
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoTGFzdENoaWxkOiB7CiAgICAgICAg
ICAgICAgICAgaWYgKCFzZWwtPnBhcnNlTnRoKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGlmIChlLT5wYXJlbnROb2RlKCkgJiYgZS0+cGFyZW50Tm9kZSgp
LT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgRWxlbWVudCogcGFyZW50
Tm9kZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihlLT5wYXJlbnROb2RlKCkpOworICAgICAgICAg
ICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZS0+cGFyZW50RWxlbWVudCgpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmICghbV9jb2xsZWN0UnVsZXNPbmx5KSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBlbGVtZW50U3R5bGUg
PyBlbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnROb2RlLT5yZW5kZXJTdHlsZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gZWxlbWVudFN0eWxl
ID8gZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3Np
dGlvbmFsUnVsZXMoKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICBpZiAoIXBhcmVudE5vZGUtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVu
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgICAgIGludCBjb3VudCA9IDE7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIG4gPSBlLT5u
ZXh0U2libGluZygpOwpAQCAtMjE2NSwxNCArMjE2MCwxMyBAQCBib29sIENTU1N0eWxlU2VsZWN0
b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9OdGhMYXN0T2ZUeXBlOiB7CiAgICAgICAgICAgICAgICAgaWYgKCFzZWwtPnBhcnNlTnRoKCkp
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGlmIChlLT5wYXJl
bnROb2RlKCkgJiYgZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgRWxlbWVudCogcGFyZW50Tm9kZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihl
LT5wYXJlbnROb2RlKCkpOworICAgICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVt
ZW50ID0gZS0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghbV9j
b2xsZWN0UnVsZXNPbmx5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUgPSBlbGVtZW50U3R5bGUgPyBlbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRO
b2RlLT5yZW5kZXJTdHlsZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUq
IHBhcmVudFN0eWxlID0gZWxlbWVudFN0eWxlID8gZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50
RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJl
bnRTdHlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudE5vZGUtPmlzRmluaXNoZWRQ
YXJzaW5nQ2hpbGRyZW4oKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50
LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDE7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBlLT50YWdRTmFtZSgpOwpJ
bmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAJKHJldmlzaW9uIDM5NDQwKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsMTEgQEAgUGFzc1JlZlB0cjxOb2RlPiBFbGVt
ZW50OjpjbG9uZU5vZGUoYm9vbAogICAgIHJldHVybiBjbG9uZS5yZWxlYXNlKCk7CiB9CiAKK1Bh
c3NSZWZQdHI8RWxlbWVudD4gRWxlbWVudDo6Y2xvbmVFbGVtZW50KCkKK3sKKyAgICByZXR1cm4g
c3RhdGljX3BvaW50ZXJfY2FzdDxFbGVtZW50PihjbG9uZU5vZGUoZmFsc2UpKTsKK30KKwogdm9p
ZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG5hbWVkQXR0ck1hcCkgewpJbmRleDogV2ViQ29y
ZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2
aXNpb24gMzk0NDApCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTExNiw2ICsxMTYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9j
dW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5
UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdl
ID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCisgICAgUGFzc1JlZlB0cjxFbGVtZW50
PiBjbG9uZUVsZW1lbnQoKTsKKwogICAgIHZvaWQgbm9ybWFsaXplQXR0cmlidXRlcygpOwogCiAg
ICAgdmlydHVhbCBib29sIGlzSW5wdXRUeXBlSGlkZGVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KQEAgLTI1MSw2ICsyNTMsMTIgQEAgaW5saW5lIE5hbWVkQXR0ck1hcCogTm9kZTo6YXR0cmli
dXRlcygpIAogICAgIHJldHVybiBpc0VsZW1lbnROb2RlKCkgPyBzdGF0aWNfY2FzdDxjb25zdCBF
bGVtZW50Kj4odGhpcyktPmF0dHJpYnV0ZXMoKSA6IDA7CiB9CiAKK2lubGluZSBFbGVtZW50KiBO
b2RlOjpwYXJlbnRFbGVtZW50KCkgY29uc3QKK3sKKyAgICBOb2RlKiBwYXJlbnQgPSBwYXJlbnRO
b2RlKCk7CisgICAgcmV0dXJuIHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSA/IHN0
YXRpY19jYXN0PEVsZW1lbnQqPihwYXJlbnQpIDogMDsKK30KKwogfSAvL25hbWVzcGFjZQogCiAj
ZW5kaWYKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Ob2RlLmgJKHJldmlzaW9uIDM5NDQwKQorKysgV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRO
b2RlVmFsdWUoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgTm9k
ZVR5cGUgbm9kZVR5cGUoKSBjb25zdCA9IDA7CiAgICAgTm9kZSogcGFyZW50Tm9kZSgpIGNvbnN0
IHsgcmV0dXJuIHBhcmVudCgpOyB9Ci0gICAgTm9kZSogcGFyZW50RWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIHBhcmVudCgpOyB9IC8vIElFIGV4dGVuc2lvbgorICAgIEVsZW1lbnQqIHBhcmVudEVs
ZW1lbnQoKSBjb25zdDsKICAgICBOb2RlKiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCB7IHJldHVy
biBtX3ByZXZpb3VzOyB9CiAgICAgTm9kZSogbmV4dFNpYmxpbmcoKSBjb25zdCB7IHJldHVybiBt
X25leHQ7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGNoaWxkTm9kZXMoKTsK
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmNwcAkocmV2aXNpb24gMzk0NDAp
CisrKyBXZWJDb3JlL2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSwzOSArMjUsMzMgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFw
cGVuZE5vZGVDb21tYW5kLmgiCisKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUFwcGVuZE5vZGVDb21tYW5kOjpBcHBlbmROb2RlQ29tbWFuZChQYXNz
UmVmUHRyPE5vZGU+IHBhcmVudE5vZGUsIFBhc3NSZWZQdHI8Tm9kZT4gY2hpbGRUb0FwcGVuZCkK
LSAgICA6IFNpbXBsZUVkaXRDb21tYW5kKHBhcmVudE5vZGUtPmRvY3VtZW50KCkpLCBtX3BhcmVu
dE5vZGUocGFyZW50Tm9kZSksIG1fY2hpbGRUb0FwcGVuZChjaGlsZFRvQXBwZW5kKQorQXBwZW5k
Tm9kZUNvbW1hbmQ6OkFwcGVuZE5vZGVDb21tYW5kKFBhc3NSZWZQdHI8RWxlbWVudD4gcGFyZW50
LCBQYXNzUmVmUHRyPE5vZGU+IG5vZGUpCisgICAgOiBTaW1wbGVFZGl0Q29tbWFuZChwYXJlbnQt
PmRvY3VtZW50KCkpCisgICAgLCBtX3BhcmVudChwYXJlbnQpCisgICAgLCBtX25vZGUobm9kZSkK
IHsKLSAgICBBU1NFUlQobV9jaGlsZFRvQXBwZW5kKTsKLSAgICBBU1NFUlQobV9wYXJlbnROb2Rl
KTsKKyAgICBBU1NFUlQobV9wYXJlbnQpOworICAgIEFTU0VSVChtX25vZGUpOworICAgIEFTU0VS
VCghbV9ub2RlLT5wYXJlbnQoKSk7CisKKyAgICBBU1NFUlQoZW5jbG9zaW5nTm9kZU9mVHlwZShQ
b3NpdGlvbihtX3BhcmVudC5nZXQoKSwgMCksIGlzQ29udGVudEVkaXRhYmxlKSB8fCAhbV9wYXJl
bnQtPmF0dGFjaGVkKCkpOwogfQogCiB2b2lkIEFwcGVuZE5vZGVDb21tYW5kOjpkb0FwcGx5KCkK
IHsKLSAgICBBU1NFUlQobV9jaGlsZFRvQXBwZW5kKTsKLSAgICBBU1NFUlQobV9wYXJlbnROb2Rl
KTsKLSAgICAvLyBJZiB0aGUgY2hpbGQgdG8gYXBwZW5kIGlzIGFscmVhZHkgaW4gYSB0cmVlLCBh
cHBlbmRpbmcgaXQgd2lsbCByZW1vdmUgaXQgZnJvbSBpdCdzIG9sZCBsb2NhdGlvbgotICAgIC8v
IGluIGFuIG5vbi11bmRvYWJsZSB3YXkuICBXZSBtaWdodCBldmVudHVhbGx5IGZpbmQgaXQgdXNl
ZnVsIHRvIGRvIGFuIHVuZG9hYmxlIHJlbW92ZSBpbiB0aGlzIGNhc2UuCi0gICAgQVNTRVJUKCFt
X2NoaWxkVG9BcHBlbmQtPnBhcmVudCgpKTsKLSAgICBBU1NFUlQoZW5jbG9zaW5nTm9kZU9mVHlw
ZShQb3NpdGlvbihtX3BhcmVudE5vZGUuZ2V0KCksIDApLCAmaXNDb250ZW50RWRpdGFibGUpIHx8
ICFtX3BhcmVudE5vZGUtPmF0dGFjaGVkKCkpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgbV9wYXJlbnROb2RlLT5hcHBlbmRDaGlsZChtX2NoaWxkVG9BcHBlbmQuZ2V0KCksIGVj
KTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBtX3Bh
cmVudC0+YXBwZW5kQ2hpbGQobV9ub2RlLmdldCgpLCBlYyk7CiB9CiAKIHZvaWQgQXBwZW5kTm9k
ZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiB7Ci0gICAgQVNTRVJUKG1fY2hpbGRUb0FwcGVuZCk7Ci0g
ICAgQVNTRVJUKG1fcGFyZW50Tm9kZSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBtX3BhcmVudE5vZGUtPnJlbW92ZUNoaWxkKG1fY2hpbGRUb0FwcGVuZC5nZXQoKSwgZWMpOwot
ICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIG1fbm9kZS0+
cmVtb3ZlKGVjKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9l
ZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5n
L0FwcGVuZE5vZGVDb21tYW5kLmgJKHJldmlzaW9uIDM5NDQwKQorKysgV2ViQ29yZS9lZGl0aW5n
L0FwcGVuZE5vZGVDb21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE5ICszMiwxOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFwcGVuZE5vZGVDb21tYW5kIDogcHVibGljIFNp
bXBsZUVkaXRDb21tYW5kIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcHBlbmRO
b2RlQ29tbWFuZD4gY3JlYXRlKFBhc3NSZWZQdHI8Tm9kZT4gcGFyZW50Tm9kZSwgUGFzc1JlZlB0
cjxOb2RlPiBjaGlsZFRvQXBwZW5kKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFwcGVuZE5vZGVD
b21tYW5kPiBjcmVhdGUoUGFzc1JlZlB0cjxFbGVtZW50PiBwYXJlbnQsIFBhc3NSZWZQdHI8Tm9k
ZT4gbm9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXBwZW5kTm9kZUNv
bW1hbmQocGFyZW50Tm9kZSwgY2hpbGRUb0FwcGVuZCkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEFwcGVuZE5vZGVDb21tYW5kKHBhcmVudCwgbm9kZSkpOwogICAgIH0KIAogcHJpdmF0
ZToKLSAgICBBcHBlbmROb2RlQ29tbWFuZChQYXNzUmVmUHRyPE5vZGU+IHBhcmVudE5vZGUsIFBh
c3NSZWZQdHI8Tm9kZT4gY2hpbGRUb0FwcGVuZCk7CisgICAgQXBwZW5kTm9kZUNvbW1hbmQoUGFz
c1JlZlB0cjxFbGVtZW50PiBwYXJlbnQsIFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZG9BcHBseSgpOwogICAgIHZpcnR1YWwgdm9pZCBkb1VuYXBwbHkoKTsKIAot
ICAgIFJlZlB0cjxOb2RlPiBtX3BhcmVudE5vZGU7Ci0gICAgUmVmUHRyPE5vZGU+IG1fY2hpbGRU
b0FwcGVuZDsKKyAgICBSZWZQdHI8RWxlbWVudD4gbV9wYXJlbnQ7CisgICAgUmVmUHRyPE5vZGU+
IG1fbm9kZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcAkocmV2aXNpb24gMzk0NDApCisrKyBXZWJDb3JlL2VkaXRp
bmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQsMTEgKzI3NCw5
IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUZvbnRFbGUKIAogUGFzc1JlZlB0
cjxIVE1MRWxlbWVudD4gY3JlYXRlU3R5bGVTcGFuRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQp
CiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IHN0eWxl
RWxlbWVudCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50TlMoeGh0bWxOYW1lc3BhY2VVUkksICJz
cGFuIiwgZWMpOwotICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+
IHN0eWxlRWxlbWVudCA9IG5ldyBIVE1MRWxlbWVudChzcGFuVGFnLCBkb2N1bWVudCk7CiAgICAg
c3R5bGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBzdHlsZVNwYW5DbGFzc1N0cmlu
ZygpKTsKLSAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxIVE1MRWxlbWVudD4oc3R5bGVF
bGVtZW50LnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIHN0eWxlRWxlbWVudC5yZWxlYXNlKCk7CiB9
CiAKIEFwcGx5U3R5bGVDb21tYW5kOjpBcHBseVN0eWxlQ29tbWFuZChEb2N1bWVudCogZG9jdW1l
bnQsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24s
IEVQcm9wZXJ0eUxldmVsIHByb3BlcnR5TGV2ZWwpCkBAIC0zMDcsNyArMzA1LDcgQEAgQXBwbHlT
dHlsZUNvbW1hbmQ6OkFwcGx5U3R5bGVDb21tYW5kKERvYwogewogfQogCi1BcHBseVN0eWxlQ29t
bWFuZDo6QXBwbHlTdHlsZUNvbW1hbmQoRWxlbWVudCogZWxlbWVudCwgYm9vbCByZW1vdmVPbmx5
LCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24pCitBcHBseVN0eWxlQ29tbWFuZDo6QXBwbHlTdHls
ZUNvbW1hbmQoUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50LCBib29sIHJlbW92ZU9ubHksIEVk
aXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKICAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGVsZW1l
bnQtPmRvY3VtZW50KCkpCiAgICAgLCBtX3N0eWxlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjpjcmVhdGUoKSkKICAgICAsIG1fZWRpdGluZ0FjdGlvbihlZGl0aW5nQWN0aW9uKQpAQCAtOTk1
LDcgKzk5Myw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUNTU1N0eWxlKEMKIAog
ICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBlbmQgPSBzdHls
ZS0+ZW5kKCk7CiAgICAgZm9yIChDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBzdHlsZS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlu
dCBwcm9wZXJ0eUlEID0gKCppdCkuaWQoKTsKKyAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oKCppdCkuaWQoKSk7CiAgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBkZWNsLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5
SUQpOwogICAgICAgICBpZiAodmFsdWUgJiYgKHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlXaGl0
ZVNwYWNlIHx8ICFpc1RhYlNwYW5Ob2RlKGVsZW0pKSkgewogICAgICAgICAgICAgcmVtb3ZlQ1NT
UHJvcGVydHkoZGVjbCwgcHJvcGVydHlJRCk7CkBAIC0xNTUzLDcgKzE1NTEsNyBAQCB2b2lkIEFw
cGx5U3R5bGVDb21tYW5kOjphZGRJbmxpbmVTdHlsZUlmCiAgICAgfQogICAgIAogICAgIGlmICht
X3N0eWxlZElubGluZUVsZW1lbnQpIHsKLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGNsb25lZEVs
ZW1lbnQgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PEVsZW1lbnQ+KG1fc3R5bGVkSW5saW5lRWxlbWVu
dC0+Y2xvbmVOb2RlKGZhbHNlKSk7CisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBjbG9uZWRFbGVt
ZW50ID0gbV9zdHlsZWRJbmxpbmVFbGVtZW50LT5jbG9uZUVsZW1lbnQoKTsKICAgICAgICAgaW5z
ZXJ0Tm9kZUJlZm9yZShjbG9uZWRFbGVtZW50LmdldCgpLCBzdGFydE5vZGUpOwogICAgICAgICBz
dXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50KHN0YXJ0Tm9kZSwgZW5kTm9kZSwgY2xvbmVkRWxl
bWVudC5nZXQoKSk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21t
YW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJ
KHJldmlzaW9uIDM5NDQwKQorKysgV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBBcHBseVN0eWxlQ29tbWFuZChkb2N1bWVudCwgc3R5bGUsIHN0
YXJ0LCBlbmQsIGFjdGlvbiwgbGV2ZWwpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
QXBwbHlTdHlsZUNvbW1hbmQ+IGNyZWF0ZShFbGVtZW50KiBlbGVtZW50LCBib29sIHJlbW92ZU9u
bHkgPSBmYWxzZSwgRWRpdEFjdGlvbiBhY3Rpb24gPSBFZGl0QWN0aW9uQ2hhbmdlQXR0cmlidXRl
cykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcHBseVN0eWxlQ29tbWFuZD4gY3JlYXRlKFBhc3NS
ZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgYm9vbCByZW1vdmVPbmx5ID0gZmFsc2UsIEVkaXRBY3Rp
b24gYWN0aW9uID0gRWRpdEFjdGlvbkNoYW5nZUF0dHJpYnV0ZXMpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEFwcGx5U3R5bGVDb21tYW5kKGVsZW1lbnQsIHJlbW92ZU9ubHks
IGFjdGlvbikpOwogICAgIH0KQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBBcHBseVN0eWxlQ29tbWFuZChEb2N1bWVudCosIENTU1N0eWxlRGVjbGFyYXRpb24qLCBFZGl0
QWN0aW9uLCBFUHJvcGVydHlMZXZlbCk7CiAgICAgQXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1lbnQq
LCBDU1NTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3Np
dGlvbiYgZW5kLCBFZGl0QWN0aW9uLCBFUHJvcGVydHlMZXZlbCk7Ci0gICAgQXBwbHlTdHlsZUNv
bW1hbmQoRWxlbWVudCosIGJvb2wgcmVtb3ZlT25seSwgRWRpdEFjdGlvbik7CisgICAgQXBwbHlT
dHlsZUNvbW1hbmQoUGFzc1JlZlB0cjxFbGVtZW50PiwgYm9vbCByZW1vdmVPbmx5LCBFZGl0QWN0
aW9uKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCk7CiAgICAgdmlydHVhbCBFZGl0QWN0
aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9CcmVha0Js
b2NrcXVvdGVDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQnJlYWtC
bG9ja3F1b3RlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDM5NDQwKQorKysgV2ViQ29yZS9lZGl0aW5n
L0JyZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMCArNTks
MTAgQEAgdm9pZCBCcmVha0Jsb2NrcXVvdGVDb21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBzdGFy
dE5vZGUgaXMgdGhlIGZpcnN0IG5vZGUgdGhhdCB3ZSBuZWVkIHRvIG1vdmUgdG8gdGhlIG5ldyBi
bG9ja3F1b3RlLgogICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHBvcy5ub2RlKCk7CiAgICAgLy8gRmlu
ZCB0aGUgdG9wLW1vc3QgYmxvY2txdW90ZSBmcm9tIHRoZSBzdGFydC4KLSAgICBOb2RlKiB0b3BC
bG9ja3F1b3RlID0gMDsKKyAgICBFbGVtZW50KiB0b3BCbG9ja3F1b3RlID0gMDsKICAgICBmb3Ig
KE5vZGUgKm5vZGUgPSBzdGFydE5vZGUtPnBhcmVudE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUt
PnBhcmVudE5vZGUoKSkgewogICAgICAgICBpZiAoaXNNYWlsQmxvY2txdW90ZShub2RlKSkKLSAg
ICAgICAgICAgIHRvcEJsb2NrcXVvdGUgPSBub2RlOworICAgICAgICAgICAgdG9wQmxvY2txdW90
ZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKICAgICB9CiAgICAgaWYgKCF0b3BCbG9j
a3F1b3RlIHx8ICF0b3BCbG9ja3F1b3RlLT5wYXJlbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTEwMiwyMSArMTAyLDIxIEBAIHZvaWQgQnJlYWtCbG9ja3F1b3RlQ29tbWFuZDo6ZG9BcHBs
eSgpCiAgICAgfQogICAgIAogICAgIC8vIEJ1aWxkIHVwIGxpc3Qgb2YgYW5jZXN0b3JzIGluIGJl
dHdlZW4gdGhlIHN0YXJ0IG5vZGUgYW5kIHRoZSB0b3AgYmxvY2txdW90ZS4KLSAgICBWZWN0b3I8
Tm9kZSo+IGFuY2VzdG9yczsgICAgCi0gICAgZm9yIChOb2RlKiBub2RlID0gc3RhcnROb2RlLT5w
YXJlbnROb2RlKCk7IG5vZGUgIT0gdG9wQmxvY2txdW90ZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5v
ZGUoKSkKKyAgICBWZWN0b3I8RWxlbWVudCo+IGFuY2VzdG9yczsgICAgCisgICAgZm9yIChFbGVt
ZW50KiBub2RlID0gc3RhcnROb2RlLT5wYXJlbnRFbGVtZW50KCk7IG5vZGUgJiYgbm9kZSAhPSB0
b3BCbG9ja3F1b3RlOyBub2RlID0gbm9kZS0+cGFyZW50RWxlbWVudCgpKQogICAgICAgICBhbmNl
c3RvcnMuYXBwZW5kKG5vZGUpOwogICAgIAogICAgIC8vIEluc2VydCBhIGNsb25lIG9mIHRoZSB0
b3AgYmxvY2txdW90ZSBhZnRlciB0aGUgYnJlYWsuCi0gICAgUmVmUHRyPE5vZGU+IGNsb25lZEJs
b2NrcXVvdGUgPSB0b3BCbG9ja3F1b3RlLT5jbG9uZU5vZGUoZmFsc2UpOworICAgIFJlZlB0cjxF
bGVtZW50PiBjbG9uZWRCbG9ja3F1b3RlID0gdG9wQmxvY2txdW90ZS0+Y2xvbmVFbGVtZW50KCk7
CiAgICAgaW5zZXJ0Tm9kZUFmdGVyKGNsb25lZEJsb2NrcXVvdGUuZ2V0KCksIGJyZWFrTm9kZS5n
ZXQoKSk7CiAgICAgCiAgICAgLy8gQ2xvbmUgc3RhcnROb2RlJ3MgYW5jZXN0b3JzIGludG8gdGhl
IGNsb25lZCBibG9ja3F1b3RlLgogICAgIC8vIE9uIGV4aXRpbmcgdGhpcyBsb29wLCBjbG9uZWRB
bmNlc3RvciBpcyB0aGUgbG93ZXN0IGFuY2VzdG9yCiAgICAgLy8gdGhhdCB3YXMgY2xvbmVkIChp
LmUuIHRoZSBjbG9uZSBvZiBlaXRoZXIgYW5jZXN0b3JzLmxhc3QoKQogICAgIC8vIG9yIGNsb25l
ZEJsb2NrcXVvdGUgaWYgYW5jZXN0b3JzIGlzIGVtcHR5KS4KLSAgICBSZWZQdHI8Tm9kZT4gY2xv
bmVkQW5jZXN0b3IgPSBjbG9uZWRCbG9ja3F1b3RlOworICAgIFJlZlB0cjxFbGVtZW50PiBjbG9u
ZWRBbmNlc3RvciA9IGNsb25lZEJsb2NrcXVvdGU7CiAgICAgZm9yIChzaXplX3QgaSA9IGFuY2Vz
dG9ycy5zaXplKCk7IGkgIT0gMDsgLS1pKSB7Ci0gICAgICAgIFJlZlB0cjxOb2RlPiBjbG9uZWRD
aGlsZCA9IGFuY2VzdG9yc1tpIC0gMV0tPmNsb25lTm9kZShmYWxzZSk7IC8vIHNoYWxsb3cgY2xv
bmUKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGNsb25lZENoaWxkID0gYW5jZXN0b3JzW2kgLSAx
XS0+Y2xvbmVFbGVtZW50KCk7IC8vIHNoYWxsb3cgY2xvbmUKICAgICAgICAgLy8gUHJlc2VydmUg
bGlzdCBpdGVtIG51bWJlcmluZyBpbiBjbG9uZWQgbGlzdHMuCiAgICAgICAgIGlmIChjbG9uZWRD
aGlsZC0+aXNFbGVtZW50Tm9kZSgpICYmIGNsb25lZENoaWxkLT5oYXNUYWdOYW1lKG9sVGFnKSkg
ewogICAgICAgICAgICAgTm9kZSogbGlzdENoaWxkTm9kZSA9IGkgPiAxID8gYW5jZXN0b3JzW2kg
LSAyXSA6IHN0YXJ0Tm9kZTsKQEAgLTE0OSwxMSArMTQ5LDExIEBAIHZvaWQgQnJlYWtCbG9ja3F1
b3RlQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIC8vIFRocm91Z2hvdXQgdGhpcyBsb29wLCBj
bG9uZWRQYXJlbnQgaXMgdGhlIGNsb25lIG9mIGFuY2VzdG9yJ3MgcGFyZW50LgogICAgICAgICAv
LyBUaGlzIGlzIHNvIHdlIGNhbiBjbG9uZSBhbmNlc3RvcidzIHNpYmxpbmdzIGFuZCBwbGFjZSB0
aGUgY2xvbmVzCiAgICAgICAgIC8vIGludG8gdGhlIGNsb25lIGNvcnJlc3BvbmRpbmcgdG8gdGhl
IGFuY2VzdG9yJ3MgcGFyZW50LgotICAgICAgICBOb2RlKiBhbmNlc3RvcjsKLSAgICAgICAgTm9k
ZSogY2xvbmVkUGFyZW50OwotICAgICAgICBmb3IgKGFuY2VzdG9yID0gYW5jZXN0b3JzLmZpcnN0
KCksIGNsb25lZFBhcmVudCA9IGNsb25lZEFuY2VzdG9yLT5wYXJlbnROb2RlKCk7CisgICAgICAg
IEVsZW1lbnQqIGFuY2VzdG9yOworICAgICAgICBFbGVtZW50KiBjbG9uZWRQYXJlbnQ7CisgICAg
ICAgIGZvciAoYW5jZXN0b3IgPSBhbmNlc3RvcnMuZmlyc3QoKSwgY2xvbmVkUGFyZW50ID0gY2xv
bmVkQW5jZXN0b3ItPnBhcmVudEVsZW1lbnQoKTsKICAgICAgICAgICAgICBhbmNlc3RvciAmJiBh
bmNlc3RvciAhPSB0b3BCbG9ja3F1b3RlOwotICAgICAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0
b3ItPnBhcmVudE5vZGUoKSwgY2xvbmVkUGFyZW50ID0gY2xvbmVkUGFyZW50LT5wYXJlbnROb2Rl
KCkpIHsKKyAgICAgICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRFbGVtZW50KCks
IGNsb25lZFBhcmVudCA9IGNsb25lZFBhcmVudC0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAg
ICAgICBtb3ZlTm9kZSA9IGFuY2VzdG9yLT5uZXh0U2libGluZygpOwogICAgICAgICAgICAgd2hp
bGUgKG1vdmVOb2RlKSB7CiAgICAgICAgICAgICAgICAgTm9kZSAqbmV4dCA9IG1vdmVOb2RlLT5u
ZXh0U2libGluZygpOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
Y3BwCShyZXZpc2lvbiAzOTQ0MCkKKysrIFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJNZXJn
ZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVk
ZSAiUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmgiCi0jaW5jbHVkZSAiUmVtb3ZlTm9kZUF0dHJp
YnV0ZUNvbW1hbmQuaCIKICNpbmNsdWRlICJSZW1vdmVOb2RlQ29tbWFuZC5oIgogI2luY2x1ZGUg
IlJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmgiCiAjaW5jbHVkZSAiUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuaCIKQEAgLTEwOCwxMiArMTA3LDEyIEBAIHZvaWQgQ29tcG9zaXRl
RWRpdENvbW1hbmQ6OmFwcGx5U3R5bGUoQ1MKICAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShB
cHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIHN0eWxlLCBzdGFydCwgZW5kLCBl
ZGl0aW5nQWN0aW9uKSk7CiB9CiAKLXZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGx5U3R5
bGVkRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQordm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6
YXBwbHlTdHlsZWRFbGVtZW50KFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCkKIHsKICAgICBh
cHBseUNvbW1hbmRUb0NvbXBvc2l0ZShBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGVsZW1lbnQs
IGZhbHNlKSk7CiB9CiAKLXZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZVN0eWxlZEVs
ZW1lbnQoRWxlbWVudCogZWxlbWVudCkKK3ZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92
ZVN0eWxlZEVsZW1lbnQoUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50KQogewogICAgIGFwcGx5
Q29tbWFuZFRvQ29tcG9zaXRlKEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUoZWxlbWVudCwgdHJ1
ZSkpOwogfQpAQCAtMTI4LDI0ICsxMjcsMjggQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6
aW5zZXJ0TGluZUJyZQogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEluc2VydExpbmVCcmVh
a0NvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpKSk7CiB9CiAKLXZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6Omluc2VydE5vZGVCZWZvcmUoTm9kZSogaW5zZXJ0Q2hpbGQsIE5vZGUqIHJlZkNoaWxk
KQordm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0Tm9kZUJlZm9yZShQYXNzUmVmUHRy
PE5vZGU+IGluc2VydENoaWxkLCBQYXNzUmVmUHRyPE5vZGU+IHJlZkNoaWxkKQogewogICAgIEFT
U0VSVCghcmVmQ2hpbGQtPmhhc1RhZ05hbWUoYm9keVRhZykpOwogICAgIGFwcGx5Q29tbWFuZFRv
Q29tcG9zaXRlKEluc2VydE5vZGVCZWZvcmVDb21tYW5kOjpjcmVhdGUoaW5zZXJ0Q2hpbGQsIHJl
ZkNoaWxkKSk7CiB9CiAKLXZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Omluc2VydE5vZGVBZnRl
cihOb2RlKiBpbnNlcnRDaGlsZCwgTm9kZSogcmVmQ2hpbGQpCit2b2lkIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjppbnNlcnROb2RlQWZ0ZXIoUGFzc1JlZlB0cjxOb2RlPiBpbnNlcnRDaGlsZCwgUGFz
c1JlZlB0cjxOb2RlPiByZWZDaGlsZCkKIHsKKyAgICBBU1NFUlQoaW5zZXJ0Q2hpbGQpOworICAg
IEFTU0VSVChyZWZDaGlsZCk7CiAgICAgQVNTRVJUKCFyZWZDaGlsZC0+aGFzVGFnTmFtZShib2R5
VGFnKSk7Ci0gICAgaWYgKHJlZkNoaWxkLT5wYXJlbnROb2RlKCktPmxhc3RDaGlsZCgpID09IHJl
ZkNoaWxkKQotICAgICAgICBhcHBlbmROb2RlKGluc2VydENoaWxkLCByZWZDaGlsZC0+cGFyZW50
Tm9kZSgpKTsKKyAgICBFbGVtZW50KiBwYXJlbnQgPSByZWZDaGlsZC0+cGFyZW50RWxlbWVudCgp
OworICAgIEFTU0VSVChwYXJlbnQpOworICAgIGlmIChwYXJlbnQtPmxhc3RDaGlsZCgpID09IHJl
ZkNoaWxkKQorICAgICAgICBhcHBlbmROb2RlKGluc2VydENoaWxkLCBwYXJlbnQpOwogICAgIGVs
c2UgewogICAgICAgICBBU1NFUlQocmVmQ2hpbGQtPm5leHRTaWJsaW5nKCkpOwogICAgICAgICBp
bnNlcnROb2RlQmVmb3JlKGluc2VydENoaWxkLCByZWZDaGlsZC0+bmV4dFNpYmxpbmcoKSk7CiAg
ICAgfQogfQogCi12b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnROb2RlQXQoTm9kZSog
aW5zZXJ0Q2hpbGQsIGNvbnN0IFBvc2l0aW9uJiBlZGl0aW5nUG9zaXRpb24pCit2b2lkIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjppbnNlcnROb2RlQXQoUGFzc1JlZlB0cjxOb2RlPiBpbnNlcnRDaGls
ZCwgY29uc3QgUG9zaXRpb24mIGVkaXRpbmdQb3NpdGlvbikKIHsKICAgICBBU1NFUlQoaXNFZGl0
YWJsZVBvc2l0aW9uKGVkaXRpbmdQb3NpdGlvbikpOwogICAgIC8vIEZvciBlZGl0aW5nIHBvc2l0
aW9ucyBsaWtlIFt0YWJsZSwgMF0sIGluc2VydCBiZWZvcmUgdGhlIHRhYmxlLApAQCAtMTYxLDcg
KzE2NCw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Omluc2VydE5vZGVBdCgKICAgICAg
ICAgaWYgKGNoaWxkKQogICAgICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShpbnNlcnRDaGlsZCwg
Y2hpbGQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcHBlbmROb2RlKGluc2VydENoaWxk
LCByZWZDaGlsZCk7CisgICAgICAgICAgICBhcHBlbmROb2RlKGluc2VydENoaWxkLCBzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4ocmVmQ2hpbGQpKTsKICAgICB9IGVsc2UgaWYgKGNhcmV0TWluT2Zmc2V0
KHJlZkNoaWxkKSA+PSBvZmZzZXQpIHsKICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShpbnNlcnRD
aGlsZCwgcmVmQ2hpbGQpOwogICAgIH0gZWxzZSBpZiAocmVmQ2hpbGQtPmlzVGV4dE5vZGUoKSAm
JiBjYXJldE1heE9mZnNldChyZWZDaGlsZCkgPiBvZmZzZXQpIHsKQEAgLTE3MiwzOCArMTc1LDM5
IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Omluc2VydE5vZGVBdCgKICAgICB9CiB9CiAK
LXZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGVuZE5vZGUoTm9kZSogbmV3Q2hpbGQsIE5v
ZGUqIHBhcmVudCkKK3ZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGVuZE5vZGUoUGFzc1Jl
ZlB0cjxOb2RlPiBub2RlLCBQYXNzUmVmUHRyPEVsZW1lbnQ+IHBhcmVudCkKIHsKLSAgICBBU1NF
UlQoY2FuSGF2ZUNoaWxkcmVuRm9yRWRpdGluZyhwYXJlbnQpKTsKLSAgICBhcHBseUNvbW1hbmRU
b0NvbXBvc2l0ZShBcHBlbmROb2RlQ29tbWFuZDo6Y3JlYXRlKHBhcmVudCwgbmV3Q2hpbGQpKTsK
KyAgICBBU1NFUlQoY2FuSGF2ZUNoaWxkcmVuRm9yRWRpdGluZyhwYXJlbnQuZ2V0KCkpKTsKKyAg
ICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShBcHBlbmROb2RlQ29tbWFuZDo6Y3JlYXRlKHBhcmVu
dCwgbm9kZSkpOwogfQogCi12b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1vdmVDaGlsZHJl
bkluUmFuZ2UoTm9kZSogbm9kZSwgaW50IGZyb20sIGludCB0bykKK3ZvaWQgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6OnJlbW92ZUNoaWxkcmVuSW5SYW5nZShQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIHVu
c2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKQogewotICAgIE5vZGUqIG5vZGVUb1JlbW92ZSA9IG5v
ZGUtPmNoaWxkTm9kZShmcm9tKTsKLSAgICBmb3IgKGludCBpID0gZnJvbTsgaSA8IHRvOyBpKysp
IHsKLSAgICAgICAgQVNTRVJUKG5vZGVUb1JlbW92ZSk7Ci0gICAgICAgIE5vZGUqIG5leHQgPSBu
b2RlVG9SZW1vdmUtPm5leHRTaWJsaW5nKCk7Ci0gICAgICAgIHJlbW92ZU5vZGUobm9kZVRvUmVt
b3ZlKTsKLSAgICAgICAgbm9kZVRvUmVtb3ZlID0gbmV4dDsKLSAgICB9CisgICAgVmVjdG9yPFJl
ZlB0cjxOb2RlPiA+IGNoaWxkcmVuOworICAgIE5vZGUqIGNoaWxkID0gbm9kZS0+Y2hpbGROb2Rl
KGZyb20pOworICAgIGZvciAodW5zaWduZWQgaSA9IGZyb207IGNoaWxkICYmIGkgPCB0bzsgaSsr
LCBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICAgICBjaGlsZHJlbi5hcHBlbmQo
Y2hpbGQpOworCisgICAgc2l6ZV90IHNpemUgPSBjaGlsZHJlbi5zaXplKCk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIHJlbW92ZU5vZGUoY2hpbGRyZW5b
aV0ucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9k
ZShOb2RlKiByZW1vdmVDaGlsZCkKK3ZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZU5v
ZGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlKQogewotICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRl
KFJlbW92ZU5vZGVDb21tYW5kOjpjcmVhdGUocmVtb3ZlQ2hpbGQpKTsKKyAgICBhcHBseUNvbW1h
bmRUb0NvbXBvc2l0ZShSZW1vdmVOb2RlQ29tbWFuZDo6Y3JlYXRlKG5vZGUpKTsKIH0KIAotdm9p
ZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbihOb2Rl
KiByZW1vdmVDaGlsZCkKK3ZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZU5vZGVQcmVz
ZXJ2aW5nQ2hpbGRyZW4oUGFzc1JlZlB0cjxOb2RlPiBub2RlKQogewotICAgIGFwcGx5Q29tbWFu
ZFRvQ29tcG9zaXRlKFJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kOjpjcmVhdGUo
cmVtb3ZlQ2hpbGQpKTsKKyAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShSZW1vdmVOb2RlUHJl
c2VydmluZ0NoaWxkcmVuQ29tbWFuZDo6Y3JlYXRlKG5vZGUpKTsKIH0KIAotdm9pZCBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZUFuZFBydW5lQW5jZXN0b3JzKE5vZGUqIG5vZGUpCit2
b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1vdmVOb2RlQW5kUHJ1bmVBbmNlc3RvcnMoUGFz
c1JlZlB0cjxOb2RlPiBub2RlKQogewogICAgIFJlZlB0cjxOb2RlPiBwYXJlbnQgPSBub2RlLT5w
YXJlbnROb2RlKCk7CiAgICAgcmVtb3ZlTm9kZShub2RlKTsKLSAgICBwcnVuZShwYXJlbnQpOwor
ICAgIHBydW5lKHBhcmVudC5yZWxlYXNlKCkpOwogfQogCiBzdGF0aWMgYm9vbCBoYXNBUmVuZGVy
ZWREZXNjZW5kYW50KE5vZGUqIG5vZGUpCkBAIC0yMjYsMjQgKzIzMCwyNCBAQCB2b2lkIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjpwcnVuZShQYXNzUmVmCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAKICAgICAgICAgUmVmUHRyPE5vZGU+IG5leHQgPSBub2RlLT5wYXJlbnROb2RlKCk7
Ci0gICAgICAgIHJlbW92ZU5vZGUobm9kZS5nZXQoKSk7CisgICAgICAgIHJlbW92ZU5vZGUobm9k
ZSk7CiAgICAgICAgIG5vZGUgPSBuZXh0OwogICAgIH0KIH0KIAotdm9pZCBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6c3BsaXRUZXh0Tm9kZShUZXh0ICp0ZXh0LCBpbnQgb2Zmc2V0KQordm9pZCBDb21w
b3NpdGVFZGl0Q29tbWFuZDo6c3BsaXRUZXh0Tm9kZShQYXNzUmVmUHRyPFRleHQ+IG5vZGUsIHVu
c2lnbmVkIG9mZnNldCkKIHsKLSAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShTcGxpdFRleHRO
b2RlQ29tbWFuZDo6Y3JlYXRlKHRleHQsIG9mZnNldCkpOworICAgIGFwcGx5Q29tbWFuZFRvQ29t
cG9zaXRlKFNwbGl0VGV4dE5vZGVDb21tYW5kOjpjcmVhdGUobm9kZSwgb2Zmc2V0KSk7CiB9CiAK
LXZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnNwbGl0RWxlbWVudChFbGVtZW50KiBlbGVtZW50
LCBOb2RlKiBhdENoaWxkKQordm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c3BsaXRFbGVtZW50
KFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgUGFzc1JlZlB0cjxOb2RlPiBhdENoaWxkKQog
ewogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFNwbGl0RWxlbWVudENvbW1hbmQ6OmNyZWF0
ZShlbGVtZW50LCBhdENoaWxkKSk7CiB9CiAKLXZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1l
cmdlSWRlbnRpY2FsRWxlbWVudHMoRWxlbWVudCogZmlyc3QsIEVsZW1lbnQqIHNlY29uZCkKK3Zv
aWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1lcmdlSWRlbnRpY2FsRWxlbWVudHMoUGFzc1JlZlB0
cjxFbGVtZW50PiBmaXJzdCwgUGFzc1JlZlB0cjxFbGVtZW50PiBzZWNvbmQpCiB7Ci0gICAgQVNT
RVJUKCFmaXJzdC0+aXNEZXNjZW5kYW50T2Yoc2Vjb25kKSAmJiBzZWNvbmQgIT0gZmlyc3QpOwor
ICAgIEFTU0VSVCghZmlyc3QtPmlzRGVzY2VuZGFudE9mKHNlY29uZC5nZXQoKSkgJiYgc2Vjb25k
ICE9IGZpcnN0KTsKICAgICBpZiAoZmlyc3QtPm5leHRTaWJsaW5nKCkgIT0gc2Vjb25kKSB7CiAg
ICAgICAgIHJlbW92ZU5vZGUoc2Vjb25kKTsKICAgICAgICAgaW5zZXJ0Tm9kZUFmdGVyKHNlY29u
ZCwgZmlyc3QpOwpAQCAtMjUxLDIyICsyNTUsMjIgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFu
ZDo6bWVyZ2VJZGVudGljYQogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKE1lcmdlSWRlbnRp
Y2FsRWxlbWVudHNDb21tYW5kOjpjcmVhdGUoZmlyc3QsIHNlY29uZCkpOwogfQogCi12b2lkIENv
bXBvc2l0ZUVkaXRDb21tYW5kOjp3cmFwQ29udGVudHNJbkR1bW15U3BhbihFbGVtZW50KiBlbGVt
ZW50KQordm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6d3JhcENvbnRlbnRzSW5EdW1teVNwYW4o
UGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50KQogewogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9z
aXRlKFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZDo6Y3JlYXRlKGVsZW1lbnQpKTsKIH0K
IAotdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVt
ZW50KFRleHQgKnRleHQsIGludCBvZmZzZXQpCit2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpz
cGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnQoUGFzc1JlZlB0cjxUZXh0PiB0ZXh0LCB1bnNp
Z25lZCBvZmZzZXQpCiB7CiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoU3BsaXRUZXh0Tm9k
ZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZDo6Y3JlYXRlKHRleHQsIG9mZnNldCkpOwogfQogCi12
b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpqb2luVGV4dE5vZGVzKFRleHQgKnRleHQxLCBUZXh0
ICp0ZXh0MikKK3ZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmpvaW5UZXh0Tm9kZXMoUGFzc1Jl
ZlB0cjxUZXh0PiB0ZXh0MSwgUGFzc1JlZlB0cjxUZXh0PiB0ZXh0MikKIHsKICAgICBhcHBseUNv
bW1hbmRUb0NvbXBvc2l0ZShKb2luVGV4dE5vZGVzQ29tbWFuZDo6Y3JlYXRlKHRleHQxLCB0ZXh0
MikpOwogfQogCi12b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnB1dFRleHQoY29uc3QgU3Ry
aW5nICZ0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkVGV4dCkKK3ZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6OmlucHV0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgc2VsZWN0SW5zZXJ0ZWRU
ZXh0KQogewogICAgIGludCBvZmZzZXQgPSAwOwogICAgIGludCBsZW5ndGggPSB0ZXh0Lmxlbmd0
aCgpOwpAQCAtMjkzLDE5ICsyOTcsMTkgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5w
dXRUZXh0KGNvbgogICAgIH0KIH0KIAotdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0
VGV4dEludG9Ob2RlKFRleHQgKm5vZGUsIGludCBvZmZzZXQsIGNvbnN0IFN0cmluZyAmdGV4dCkK
K3ZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Omluc2VydFRleHRJbnRvTm9kZShQYXNzUmVmUHRy
PFRleHQ+IG5vZGUsIHVuc2lnbmVkIG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAg
IGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmNyZWF0
ZShub2RlLCBvZmZzZXQsIHRleHQpKTsKIH0KIAotdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6
ZGVsZXRlVGV4dEZyb21Ob2RlKFRleHQgKm5vZGUsIGludCBvZmZzZXQsIGludCBjb3VudCkKK3Zv
aWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmRlbGV0ZVRleHRGcm9tTm9kZShQYXNzUmVmUHRyPFRl
eHQ+IG5vZGUsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQpCiB7CiAgICAgYXBwbHlD
b21tYW5kVG9Db21wb3NpdGUoRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZDo6Y3JlYXRlKG5vZGUs
IG9mZnNldCwgY291bnQpKTsKIH0KIAotdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFj
ZVRleHRJbk5vZGUoVGV4dCAqbm9kZSwgaW50IG9mZnNldCwgaW50IGNvdW50LCBjb25zdCBTdHJp
bmcgJnJlcGxhY2VtZW50VGV4dCkKK3ZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VU
ZXh0SW5Ob2RlKFBhc3NSZWZQdHI8VGV4dD4gbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBjb3VudCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQpCiB7Ci0gICAgYXBwbHlDb21t
YW5kVG9Db21wb3NpdGUoRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZDo6Y3JlYXRlKG5vZGUsIG9m
ZnNldCwgY291bnQpKTsKKyAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShEZWxldGVGcm9tVGV4
dE5vZGVDb21tYW5kOjpjcmVhdGUobm9kZS5nZXQoKSwgb2Zmc2V0LCBjb3VudCkpOwogICAgIGFw
cGx5Q29tbWFuZFRvQ29tcG9zaXRlKEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmNyZWF0ZShu
b2RlLCBvZmZzZXQsIHJlcGxhY2VtZW50VGV4dCkpOwogfQogCkBAIC0zMjYsMTEgKzMzMCwxMCBA
QCBQb3NpdGlvbiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cG9zaXRpb25PCiAgICAgcmV0dXJuIHBv
c2l0aW9uQmVmb3JlTm9kZSh0YWJTcGFuKTsKIH0KIAotdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFu
ZDo6aW5zZXJ0Tm9kZUF0VGFiU3BhblBvc2l0aW9uKE5vZGUqIG5vZGUsIGNvbnN0IFBvc2l0aW9u
JiBwb3MpCit2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnROb2RlQXRUYWJTcGFuUG9z
aXRpb24oUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBjb25zdCBQb3NpdGlvbiYgcG9zKQogewogICAg
IC8vIGluc2VydCBub2RlIGJlZm9yZSwgYWZ0ZXIsIG9yIGF0IHNwbGl0IG9mIHRhYiBzcGFuCi0g
ICAgUG9zaXRpb24gaW5zZXJ0UG9zID0gcG9zaXRpb25PdXRzaWRlVGFiU3Bhbihwb3MpOwotICAg
IGluc2VydE5vZGVBdChub2RlLCBpbnNlcnRQb3MpOworICAgIGluc2VydE5vZGVBdChub2RlLCBw
b3NpdGlvbk91dHNpZGVUYWJTcGFuKHBvcykpOwogfQogCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21t
YW5kOjpkZWxldGVTZWxlY3Rpb24oYm9vbCBzbWFydERlbGV0ZSwgYm9vbCBtZXJnZUJsb2Nrc0Fm
dGVyRGVsZXRlLCBib29sIHJlcGxhY2UsIGJvb2wgZXhwYW5kRm9yU3BlY2lhbEVsZW1lbnRzKQpA
QCAtMzQ1LDE5ICszNDgsMTcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRlU2Vs
ZWN0aQogICAgICAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShEZWxldGVTZWxlY3Rpb25Db21t
YW5kOjpjcmVhdGUoc2VsZWN0aW9uLCBzbWFydERlbGV0ZSwgbWVyZ2VCbG9ja3NBZnRlckRlbGV0
ZSwgcmVwbGFjZSwgZXhwYW5kRm9yU3BlY2lhbEVsZW1lbnRzKSk7CiB9CiAKLXZvaWQgQ29tcG9z
aXRlRWRpdENvbW1hbmQ6OnJlbW92ZUNTU1Byb3BlcnR5KENTU1N0eWxlRGVjbGFyYXRpb24gKmRl
Y2wsIGludCBwcm9wZXJ0eSkKK3ZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZUNTU1By
b3BlcnR5KFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlLCBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5KQogewotICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFJlbW92
ZUNTU1Byb3BlcnR5Q29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIGRlY2wsIHByb3BlcnR5KSk7
CisgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kOjpj
cmVhdGUoZG9jdW1lbnQoKSwgc3R5bGUsIHByb3BlcnR5KSk7CiB9CiAKLXZvaWQgQ29tcG9zaXRl
RWRpdENvbW1hbmQ6OnJlbW92ZU5vZGVBdHRyaWJ1dGUoRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKQordm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVt
b3ZlTm9kZUF0dHJpYnV0ZShQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZSkKIHsKLSAgICBpZiAoZWxlbWVudC0+Z2V0QXR0cmlidXRlKGF0
dHJpYnV0ZSkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBhcHBseUNvbW1hbmRUb0Nv
bXBvc2l0ZShSZW1vdmVOb2RlQXR0cmlidXRlQ29tbWFuZDo6Y3JlYXRlKGVsZW1lbnQsIGF0dHJp
YnV0ZSkpOworICAgIHNldE5vZGVBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlLCBBdG9taWNT
dHJpbmcoKSk7OwogfQogCi12b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpzZXROb2RlQXR0cmli
dXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSwgY29u
c3QgU3RyaW5nICZ2YWx1ZSkKK3ZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnNldE5vZGVBdHRy
aWJ1dGUoUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgYXBwbHlDb21tYW5k
VG9Db21wb3NpdGUoU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQ6OmNyZWF0ZShlbGVtZW50LCBhdHRy
aWJ1dGUsIHZhbHVlKSk7CiB9CkBAIC00NTcsMTIgKzQ1OCwxNSBAQCB2b2lkIENvbXBvc2l0ZUVk
aXRDb21tYW5kOjpyZWJhbGFuY2VXaGl0CiAgICAgICAgIHJlYmFsYW5jZVdoaXRlc3BhY2VBdChz
ZWxlY3Rpb24uZW5kKCkpOwogfQogCi12b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpkZWxldGVJ
bnNpZ25pZmljYW50VGV4dChUZXh0KiB0ZXh0Tm9kZSwgaW50IHN0YXJ0LCBpbnQgZW5kKQordm9p
ZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRlSW5zaWduaWZpY2FudFRleHQoUGFzc1JlZlB0
cjxUZXh0PiB0ZXh0Tm9kZSwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkKIHsKLSAgICBp
ZiAoIXRleHROb2RlIHx8ICF0ZXh0Tm9kZS0+cmVuZGVyZXIoKSB8fCBzdGFydCA+PSBlbmQpCisg
ICAgaWYgKCF0ZXh0Tm9kZSB8fCBzdGFydCA+PSBlbmQpCiAgICAgICAgIHJldHVybjsKIAogICAg
IFJlbmRlclRleHQqIHRleHRSZW5kZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQqPih0ZXh0
Tm9kZS0+cmVuZGVyZXIoKSk7CisgICAgaWYgKCF0ZXh0UmVuZGVyZXIpCisgICAgICAgIHJldHVy
bjsKKwogICAgIElubGluZVRleHRCb3gqIGJveCA9IHRleHRSZW5kZXJlci0+Zmlyc3RUZXh0Qm94
KCk7CiAgICAgaWYgKCFib3gpIHsKICAgICAgICAgLy8gd2hvbGUgdGV4dCBub2RlIGlzIGVtcHR5
CkBAIC00NzAsMjMgKzQ3NCwyMyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpkZWxldGVJ
bnNpZ25pCiAgICAgICAgIHJldHVybjsgICAgCiAgICAgfQogICAgIAotICAgIGludCBsZW5ndGgg
PSB0ZXh0Tm9kZS0+bGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dE5vZGUtPmxl
bmd0aCgpOwogICAgIGlmIChzdGFydCA+PSBsZW5ndGggfHwgZW5kID4gbGVuZ3RoKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpbnQgcmVtb3ZlZCA9IDA7CisgICAgdW5zaWduZWQgcmVtb3ZlZCA9
IDA7CiAgICAgSW5saW5lVGV4dEJveCogcHJldkJveCA9IDA7CiAgICAgU3RyaW5nIHN0cjsKIAog
ICAgIC8vIFRoaXMgbG9vcCBzdHJ1Y3R1cmUgd29ya3MgdG8gcHJvY2VzcyBhbGwgZ2FwcyBwcmVj
ZWRpbmcgYSBib3gsCiAgICAgLy8gYW5kIGFsc28gd2lsbCBsb29rIGF0IHRoZSBnYXAgYWZ0ZXIg
dGhlIGxhc3QgYm94LgogICAgIHdoaWxlIChwcmV2Qm94IHx8IGJveCkgewotICAgICAgICBpbnQg
Z2FwU3RhcnQgPSBwcmV2Qm94ID8gcHJldkJveC0+bV9zdGFydCArIHByZXZCb3gtPm1fbGVuIDog
MDsKKyAgICAgICAgdW5zaWduZWQgZ2FwU3RhcnQgPSBwcmV2Qm94ID8gcHJldkJveC0+bV9zdGFy
dCArIHByZXZCb3gtPm1fbGVuIDogMDsKICAgICAgICAgaWYgKGVuZCA8IGdhcFN0YXJ0KQogICAg
ICAgICAgICAgLy8gTm8gbW9yZSBjaGFuY2UgZm9yIGFueSBpbnRlcnNlY3Rpb25zCiAgICAgICAg
ICAgICBicmVhazsKIAotICAgICAgICBpbnQgZ2FwRW5kID0gYm94ID8gYm94LT5tX3N0YXJ0IDog
bGVuZ3RoOworICAgICAgICB1bnNpZ25lZCBnYXBFbmQgPSBib3ggPyBib3gtPm1fc3RhcnQgOiBs
ZW5ndGg7CiAgICAgICAgIGJvb2wgaW5kaWNlc0ludGVyc2VjdCA9IHN0YXJ0IDw9IGdhcEVuZCAm
JiBlbmQgPj0gZ2FwU3RhcnQ7CiAgICAgICAgIGludCBnYXBMZW4gPSBnYXBFbmQgLSBnYXBTdGFy
dDsKICAgICAgICAgaWYgKGluZGljZXNJbnRlcnNlY3QgJiYgZ2FwTGVuID4gMCkgewpAQCAtNTEy
LDcgKzUxNiw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmRlbGV0ZUluc2lnbmkKICAg
ICAgICAgICAgIC8vIEFzc2VydCB0aGF0IHdlIGFyZSBub3QgZ29pbmcgdG8gZGVsZXRlIGFsbCBv
ZiB0aGUgdGV4dCBpbiB0aGUgbm9kZS4KICAgICAgICAgICAgIC8vIElmIHdlIHdlcmUsIHRoYXQg
c2hvdWxkIGhhdmUgYmVlbiBkb25lIGFib3ZlIHdpdGggdGhlIGNhbGwgdG8gCiAgICAgICAgICAg
ICAvLyByZW1vdmVOb2RlIGFuZCByZXR1cm4uCi0gICAgICAgICAgICBBU1NFUlQoc3RhcnQgPiAw
IHx8ICh1bnNpZ25lZCllbmQgLSBzdGFydCA8IHRleHROb2RlLT5sZW5ndGgoKSk7CisgICAgICAg
ICAgICBBU1NFUlQoc3RhcnQgPiAwIHx8IGVuZCAtIHN0YXJ0IDwgdGV4dE5vZGUtPmxlbmd0aCgp
KTsKICAgICAgICAgICAgIGRlbGV0ZVRleHRGcm9tTm9kZSh0ZXh0Tm9kZSwgc3RhcnQsIGVuZCAt
IHN0YXJ0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTU0NiwxNiArNTUwLDE2IEBAIHZvaWQgQ29t
cG9zaXRlRWRpdENvbW1hbmQ6OmRlbGV0ZUluc2lnbmkKICAgICBkZWxldGVJbnNpZ25pZmljYW50
VGV4dChwb3MsIGVuZCk7CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZT4gQ29tcG9zaXRlRWRpdENvbW1h
bmQ6OmFwcGVuZEJsb2NrUGxhY2Vob2xkZXIoTm9kZSogbm9kZSkKK1Bhc3NSZWZQdHI8Tm9kZT4g
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGVuZEJsb2NrUGxhY2Vob2xkZXIoUGFzc1JlZlB0cjxF
bGVtZW50PiBjb250YWluZXIpCiB7Ci0gICAgaWYgKCFub2RlKQorICAgIGlmICghY29udGFpbmVy
KQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICAvLyBTaG91bGQgYXNzZXJ0IGlzQmxvY2tG
bG93IHx8IGlzSW5saW5lRmxvdyB3aGVuIGRlbGV0aW9uIGltcHJvdmVzLiAgU2VlIDQyNDQ5NjQu
Ci0gICAgQVNTRVJUKG5vZGUtPnJlbmRlcmVyKCkpOworICAgIC8vIFNob3VsZCBhc3NlcnQgaXNC
bG9ja0Zsb3cgfHwgaXNJbmxpbmVGbG93IHdoZW4gZGVsZXRpb24gaW1wcm92ZXMuIFNlZSA0MjQ0
OTY0LgorICAgIEFTU0VSVChjb250YWluZXItPnJlbmRlcmVyKCkpOwogCiAgICAgUmVmUHRyPE5v
ZGU+IHBsYWNlaG9sZGVyID0gY3JlYXRlQmxvY2tQbGFjZWhvbGRlckVsZW1lbnQoZG9jdW1lbnQo
KSk7Ci0gICAgYXBwZW5kTm9kZShwbGFjZWhvbGRlci5nZXQoKSwgbm9kZSk7CisgICAgYXBwZW5k
Tm9kZShwbGFjZWhvbGRlciwgY29udGFpbmVyKTsKICAgICByZXR1cm4gcGxhY2Vob2xkZXIucmVs
ZWFzZSgpOwogfQogCkBAIC01NjgsMjUgKzU3MiwyNSBAQCBQYXNzUmVmUHRyPE5vZGU+IENvbXBv
c2l0ZUVkaXRDb21tYW5kOjppCiAgICAgQVNTRVJUKHBvcy5ub2RlKCktPnJlbmRlcmVyKCkpOwog
CiAgICAgUmVmUHRyPE5vZGU+IHBsYWNlaG9sZGVyID0gY3JlYXRlQmxvY2tQbGFjZWhvbGRlckVs
ZW1lbnQoZG9jdW1lbnQoKSk7Ci0gICAgaW5zZXJ0Tm9kZUF0KHBsYWNlaG9sZGVyLmdldCgpLCBw
b3MpOworICAgIGluc2VydE5vZGVBdChwbGFjZWhvbGRlciwgcG9zKTsKICAgICByZXR1cm4gcGxh
Y2Vob2xkZXIucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRD
b21tYW5kOjphZGRCbG9ja1BsYWNlaG9sZGVySWZOZWVkZWQoTm9kZSogbm9kZSkKK1Bhc3NSZWZQ
dHI8Tm9kZT4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmFkZEJsb2NrUGxhY2Vob2xkZXJJZk5lZWRl
ZChFbGVtZW50KiBjb250YWluZXIpCiB7Ci0gICAgaWYgKCFub2RlKQorICAgIGlmICghY29udGFp
bmVyKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHVwZGF0ZUxheW91dCgpOwogCi0gICAgUmVu
ZGVyT2JqZWN0ICpyZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IGNvbnRhaW5lci0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyIHx8
ICFyZW5kZXJlci0+aXNCbG9ja0Zsb3coKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAg
Ly8gYXBwZW5kIHRoZSBwbGFjZWhvbGRlciB0byBtYWtlIHN1cmUgaXQgZm9sbG93cwogICAgIC8v
IGFueSB1bnJlbmRlcmVkIGJsb2NrcwogICAgIGlmIChyZW5kZXJlci0+aGVpZ2h0KCkgPT0gMCB8
fCAocmVuZGVyZXItPmlzTGlzdEl0ZW0oKSAmJiByZW5kZXJlci0+aXNFbXB0eSgpKSkKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZEJsb2NrUGxhY2Vob2xkZXIobm9kZSk7CisgICAgICAgIHJldHVybiBh
cHBlbmRCbG9ja1BsYWNlaG9sZGVyKGNvbnRhaW5lcik7CiAKICAgICByZXR1cm4gMDsKIH0KQEAg
LTYxMyw5ICs2MTcsMTAgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlUGxhY2Vo
bwogCiBQYXNzUmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnNlcnROZXdEZWZh
dWx0UGFyYWdyYXBoRWxlbWVudEF0KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKLSAgICBS
ZWZQdHI8Tm9kZT4gcGFyYWdyYXBoRWxlbWVudCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVt
ZW50KGRvY3VtZW50KCkpOwotICAgIGFwcGVuZE5vZGUoY3JlYXRlQnJlYWtFbGVtZW50KGRvY3Vt
ZW50KCkpLmdldCgpLCBwYXJhZ3JhcGhFbGVtZW50LmdldCgpKTsKLSAgICBpbnNlcnROb2RlQXQo
cGFyYWdyYXBoRWxlbWVudC5nZXQoKSwgcG9zaXRpb24pOworICAgIFJlZlB0cjxFbGVtZW50PiBw
YXJhZ3JhcGhFbGVtZW50ID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoZG9jdW1lbnQo
KSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBwYXJhZ3JhcGhFbGVtZW50LT5hcHBlbmRD
aGlsZChjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSksIGVjKTsKKyAgICBpbnNlcnROb2Rl
QXQocGFyYWdyYXBoRWxlbWVudCwgcG9zaXRpb24pOwogICAgIHJldHVybiBwYXJhZ3JhcGhFbGVt
ZW50LnJlbGVhc2UoKTsKIH0KIApAQCAtODM0LDcgKzgzOSw3IEBAIHZvaWQgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgKICAgICBhZnRlclBhcmFncmFwaCA9IFZpc2libGVQb3Np
dGlvbihhZnRlclBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpKTsKICAgICBpZiAoYmVmb3JlUGFy
YWdyYXBoLmlzTm90TnVsbCgpICYmICghaXNFbmRPZlBhcmFncmFwaChiZWZvcmVQYXJhZ3JhcGgp
IHx8IGJlZm9yZVBhcmFncmFwaCA9PSBhZnRlclBhcmFncmFwaCkpIHsKICAgICAgICAgLy8gRklY
TUU6IFRyaW0gdGV4dCBiZXR3ZWVuIGJlZm9yZVBhcmFncmFwaCBhbmQgYWZ0ZXJQYXJhZ3JhcGgg
aWYgdGhleSBhcmVuJ3QgZXF1YWwuCi0gICAgICAgIGluc2VydE5vZGVBdChjcmVhdGVCcmVha0Vs
ZW1lbnQoZG9jdW1lbnQoKSkuZ2V0KCksIGJlZm9yZVBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgp
KTsKKyAgICAgICAgaW5zZXJ0Tm9kZUF0KGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKSwg
YmVmb3JlUGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkpOwogICAgICAgICAvLyBOZWVkIGFuIHVw
ZGF0ZUxheW91dCBoZXJlIGluIGNhc2UgaW5zZXJ0aW5nIHRoZSBiciBoYXMgc3BsaXQgYSB0ZXh0
IG5vZGUuCiAgICAgICAgIHVwZGF0ZUxheW91dCgpOwogICAgIH0KQEAgLTg0Myw3ICs4NDgsNyBA
QCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgZGVzdGluYXRp
b25JbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRUb0Rlc3RpbmF0aW9uUmFu
Z2UuZ2V0KCksIHRydWUpOwogICAgIAogICAgIHNldEVuZGluZ1NlbGVjdGlvbihkZXN0aW5hdGlv
bik7Ci0gICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OmNyZWF0ZShkb2N1bWVudCgpLCBmcmFnbWVudC5nZXQoKSwgdHJ1ZSwgZmFsc2UsICFwcmVzZXJ2
ZVN0eWxlLCBmYWxzZSwgdHJ1ZSkpOworICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgZnJhZ21lbnQsIHRydWUsIGZh
bHNlLCAhcHJlc2VydmVTdHlsZSwgZmFsc2UsIHRydWUpKTsKICAgICAvLyBSZXN0b3JlIHN0eWxl
cyBmcm9tIGFuIGVtcHR5IHBhcmFncmFwaCB0byB0aGUgbmV3IGVtcHR5IHBhcmFncmFwaC4KICAg
ICBpZiAoc3R5bGVJbkVtcHR5UGFyYWdyYXBoKQogICAgICAgICBhcHBseVN0eWxlKHN0eWxlSW5F
bXB0eVBhcmFncmFwaC5nZXQoKSk7CkBAIC04NzUsMTkgKzg4MCwxOSBAQCBib29sIENvbXBvc2l0
ZUVkaXRDb21tYW5kOjpicmVha091dE9mRW1wCiAgICAgaWYgKCFsaXN0Tm9kZS0+aXNDb250ZW50
RWRpdGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIFJlZlB0cjxOb2Rl
PiBuZXdCbG9jayA9IGlzTGlzdEVsZW1lbnQobGlzdE5vZGUtPnBhcmVudE5vZGUoKSkgPyBjcmVh
dGVMaXN0SXRlbUVsZW1lbnQoZG9jdW1lbnQoKSkgOiBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxl
bWVudChkb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8RWxlbWVudD4gbmV3QmxvY2sgPSBpc0xpc3RF
bGVtZW50KGxpc3ROb2RlLT5wYXJlbnROb2RlKCkpID8gY3JlYXRlTGlzdEl0ZW1FbGVtZW50KGRv
Y3VtZW50KCkpIDogY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoZG9jdW1lbnQoKSk7CiAg
ICAgCiAgICAgaWYgKGVtcHR5TGlzdEl0ZW0tPnJlbmRlcmVyKCktPm5leHRTaWJsaW5nKCkpIHsK
ICAgICAgICAgaWYgKGVtcHR5TGlzdEl0ZW0tPnJlbmRlcmVyKCktPnByZXZpb3VzU2libGluZygp
KQogICAgICAgICAgICAgc3BsaXRFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihsaXN0Tm9k
ZSksIGVtcHR5TGlzdEl0ZW0pOwotICAgICAgICBpbnNlcnROb2RlQmVmb3JlKG5ld0Jsb2NrLmdl
dCgpLCBsaXN0Tm9kZSk7CisgICAgICAgIGluc2VydE5vZGVCZWZvcmUobmV3QmxvY2ssIGxpc3RO
b2RlKTsKICAgICAgICAgcmVtb3ZlTm9kZShlbXB0eUxpc3RJdGVtKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBpbnNlcnROb2RlQWZ0ZXIobmV3QmxvY2suZ2V0KCksIGxpc3ROb2RlKTsKKyAgICAg
ICAgaW5zZXJ0Tm9kZUFmdGVyKG5ld0Jsb2NrLCBsaXN0Tm9kZSk7CiAgICAgICAgIHJlbW92ZU5v
ZGUoZW1wdHlMaXN0SXRlbS0+cmVuZGVyZXIoKS0+cHJldmlvdXNTaWJsaW5nKCkgPyBlbXB0eUxp
c3RJdGVtIDogbGlzdE5vZGUpOwogICAgIH0KICAgICAKLSAgICBhcHBlbmRCbG9ja1BsYWNlaG9s
ZGVyKG5ld0Jsb2NrLmdldCgpKTsKKyAgICBhcHBlbmRCbG9ja1BsYWNlaG9sZGVyKG5ld0Jsb2Nr
KTsKICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oU2VsZWN0aW9uKFBvc2l0aW9uKG5ld0Jsb2NrLmdl
dCgpLCAwKSwgRE9XTlNUUkVBTSkpOwogICAgIAogICAgIGNvbXB1dGVkU3R5bGUoZW5kaW5nU2Vs
ZWN0aW9uKCkuc3RhcnQoKS5ub2RlKCkpLT5kaWZmKHN0eWxlLmdldCgpKTsKQEAgLTkyMCwxMiAr
OTI1LDEyIEBAIGJvb2wgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmJyZWFrT3V0T2ZFbXAKICAgICBS
ZWZQdHI8Tm9kZT4gYnIgPSBjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgLy8g
V2Ugd2FudCB0byByZXBsYWNlIHRoaXMgcXVvdGVkIHBhcmFncmFwaCB3aXRoIGFuIHVucXVvdGVk
IG9uZSwgc28gaW5zZXJ0IGEgYnIKICAgICAvLyB0byBob2xkIHRoZSBjYXJldCBiZWZvcmUgdGhl
IGhpZ2hlc3QgYmxvY2txdW90ZS4KLSAgICBpbnNlcnROb2RlQmVmb3JlKGJyLmdldCgpLCBoaWdo
ZXN0QmxvY2txdW90ZSk7CisgICAgaW5zZXJ0Tm9kZUJlZm9yZShiciwgaGlnaGVzdEJsb2NrcXVv
dGUpOwogICAgIFZpc2libGVQb3NpdGlvbiBhdEJSKFBvc2l0aW9uKGJyLmdldCgpLCAwKSk7CiAg
ICAgLy8gSWYgdGhlIGJyIHdlIGluc2VydGVkIGNvbGxhcHNlZCwgZm9yIGV4YW1wbGUgZm9vPGJy
PjxibG9ja3F1b3RlPi4uLjwvYmxvY2txdW90ZT4sIGluc2VydCAKICAgICAvLyBhIHNlY29uZCBv
bmUuCiAgICAgaWYgKCFpc1N0YXJ0T2ZQYXJhZ3JhcGgoYXRCUikpCi0gICAgICAgIGluc2VydE5v
ZGVCZWZvcmUoY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpLmdldCgpLCBici5nZXQoKSk7
CisgICAgICAgIGluc2VydE5vZGVCZWZvcmUoY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkp
LCBicik7CiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFNlbGVjdGlvbihhdEJSKSk7CiAgICAgCiAg
ICAgLy8gSWYgdGhpcyBpcyBhbiBlbXB0eSBwYXJhZ3JhcGggdGhlcmUgbXVzdCBiZSBhIGxpbmUg
YnJlYWsgaGVyZS4KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCShy
ZXZpc2lvbiAzOTQ0MCkKKysrIFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIENvbXBvc2l0ZUVkaXRD
b21tYW5kX2gKIAogI2luY2x1ZGUgIkVkaXRDb21tYW5kLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVy
dHlOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNDQsNTAgKzQ1LDUwIEBAIHByb3RlY3RlZDoKICAgICAvLwogICAgIC8vIHN1Z2FyeS1z
d2VldCBjb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gaGVscCBjcmVhdGUgYW5kIGFwcGx5IGVkaXQg
Y29tbWFuZHMgaW4gY29tcG9zaXRlIGNvbW1hbmRzCiAgICAgLy8KLSAgICB2b2lkIGFwcGVuZE5v
ZGUoTm9kZSogYXBwZW5kQ2hpbGQsIE5vZGUqIHBhcmVudE5vZGUpOworICAgIHZvaWQgYXBwZW5k
Tm9kZShQYXNzUmVmUHRyPE5vZGU+LCBQYXNzUmVmUHRyPEVsZW1lbnQ+IHBhcmVudCk7CiAgICAg
dm9pZCBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShQYXNzUmVmUHRyPEVkaXRDb21tYW5kPik7CiAg
ICAgdm9pZCBhcHBseVN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qLCBFZGl0QWN0aW9uID0gRWRp
dEFjdGlvbkNoYW5nZUF0dHJpYnV0ZXMpOwogICAgIHZvaWQgYXBwbHlTdHlsZShDU1NTdHlsZURl
Y2xhcmF0aW9uKiwgY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kLCBF
ZGl0QWN0aW9uID0gRWRpdEFjdGlvbkNoYW5nZUF0dHJpYnV0ZXMpOwotICAgIHZvaWQgYXBwbHlT
dHlsZWRFbGVtZW50KEVsZW1lbnQqKTsKLSAgICB2b2lkIHJlbW92ZVN0eWxlZEVsZW1lbnQoRWxl
bWVudCopOworICAgIHZvaWQgYXBwbHlTdHlsZWRFbGVtZW50KFBhc3NSZWZQdHI8RWxlbWVudD4p
OworICAgIHZvaWQgcmVtb3ZlU3R5bGVkRWxlbWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+KTsKICAg
ICB2b2lkIGRlbGV0ZVNlbGVjdGlvbihib29sIHNtYXJ0RGVsZXRlID0gZmFsc2UsIGJvb2wgbWVy
Z2VCbG9ja3NBZnRlckRlbGV0ZSA9IHRydWUsIGJvb2wgcmVwbGFjZSA9IGZhbHNlLCBib29sIGV4
cGFuZEZvclNwZWNpYWxFbGVtZW50cyA9IHRydWUpOwogICAgIHZvaWQgZGVsZXRlU2VsZWN0aW9u
KGNvbnN0IFNlbGVjdGlvbiYsIGJvb2wgc21hcnREZWxldGUgPSBmYWxzZSwgYm9vbCBtZXJnZUJs
b2Nrc0FmdGVyRGVsZXRlID0gdHJ1ZSwgYm9vbCByZXBsYWNlID0gZmFsc2UsIGJvb2wgZXhwYW5k
Rm9yU3BlY2lhbEVsZW1lbnRzID0gdHJ1ZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHRG
cm9tTm9kZShUZXh0KiBub2RlLCBpbnQgb2Zmc2V0LCBpbnQgY291bnQpOworICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVUZXh0RnJvbU5vZGUoUGFzc1JlZlB0cjxUZXh0PiwgdW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBjb3VudCk7CiAgICAgdm9pZCBpbnB1dFRleHQoY29uc3QgU3RyaW5nJiwgYm9v
bCBzZWxlY3RJbnNlcnRlZFRleHQgPSBmYWxzZSk7Ci0gICAgdm9pZCBpbnNlcnROb2RlQWZ0ZXIo
Tm9kZSogaW5zZXJ0Q2hpbGQsIE5vZGUqIHJlZkNoaWxkKTsKLSAgICB2b2lkIGluc2VydE5vZGVB
dChOb2RlKiBpbnNlcnRDaGlsZCwgY29uc3QgUG9zaXRpb24mKTsKLSAgICB2b2lkIGluc2VydE5v
ZGVCZWZvcmUoTm9kZSogaW5zZXJ0Q2hpbGQsIE5vZGUqIHJlZkNoaWxkKTsKKyAgICB2b2lkIGlu
c2VydE5vZGVBZnRlcihQYXNzUmVmUHRyPE5vZGU+LCBQYXNzUmVmUHRyPE5vZGU+IHJlZkNoaWxk
KTsKKyAgICB2b2lkIGluc2VydE5vZGVBdChQYXNzUmVmUHRyPE5vZGU+LCBjb25zdCBQb3NpdGlv
biYpOworICAgIHZvaWQgaW5zZXJ0Tm9kZUF0VGFiU3BhblBvc2l0aW9uKFBhc3NSZWZQdHI8Tm9k
ZT4sIGNvbnN0IFBvc2l0aW9uJik7CisgICAgdm9pZCBpbnNlcnROb2RlQmVmb3JlKFBhc3NSZWZQ
dHI8Tm9kZT4sIFBhc3NSZWZQdHI8Tm9kZT4gcmVmQ2hpbGQpOwogICAgIHZvaWQgaW5zZXJ0UGFy
YWdyYXBoU2VwYXJhdG9yKGJvb2wgdXNlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQgPSBmYWxzZSk7
CiAgICAgdm9pZCBpbnNlcnRMaW5lQnJlYWsoKTsKLSAgICB2b2lkIGluc2VydFRleHRJbnRvTm9k
ZShUZXh0KiBub2RlLCBpbnQgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQpOwotICAgIHZvaWQg
am9pblRleHROb2RlcyhUZXh0KiwgVGV4dCopOworICAgIHZvaWQgaW5zZXJ0VGV4dEludG9Ob2Rl
KFBhc3NSZWZQdHI8VGV4dD4sIHVuc2lnbmVkIG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsK
KyAgICB2b2lkIGpvaW5UZXh0Tm9kZXMoUGFzc1JlZlB0cjxUZXh0PiwgUGFzc1JlZlB0cjxUZXh0
Pik7CisgICAgdm9pZCBtZXJnZUlkZW50aWNhbEVsZW1lbnRzKFBhc3NSZWZQdHI8RWxlbWVudD4s
IFBhc3NSZWZQdHI8RWxlbWVudD4pOwogICAgIHZvaWQgcmViYWxhbmNlV2hpdGVzcGFjZSgpOwog
ICAgIHZvaWQgcmViYWxhbmNlV2hpdGVzcGFjZUF0KGNvbnN0IFBvc2l0aW9uJik7Ci0gICAgdm9p
ZCBwcmVwYXJlV2hpdGVzcGFjZUF0UG9zaXRpb25Gb3JTcGxpdChQb3NpdGlvbiYgcG9zaXRpb24p
OwotICAgIHZvaWQgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTU3R5bGVEZWNsYXJhdGlvbiosIGludCBw
cm9wZXJ0eSk7Ci0gICAgdm9pZCByZW1vdmVOb2RlQXR0cmlidXRlKEVsZW1lbnQqLCBjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpOwotICAgIHZvaWQgcmVtb3ZlQ2hpbGRyZW5JblJhbmdl
KE5vZGUqLCBpbnQgZnJvbSwgaW50IHRvKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTm9kZShO
b2RlKik7Ci0gICAgdm9pZCByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKE5vZGUqKTsKLSAg
ICB2b2lkIHJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9ycyhOb2RlKik7CisgICAgdm9pZCBwcmVw
YXJlV2hpdGVzcGFjZUF0UG9zaXRpb25Gb3JTcGxpdChQb3NpdGlvbiYpOworICAgIHZvaWQgcmVt
b3ZlQ1NTUHJvcGVydHkoUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4sIENT
U1Byb3BlcnR5SUQpOworICAgIHZvaWQgcmVtb3ZlTm9kZUF0dHJpYnV0ZShQYXNzUmVmUHRyPEVs
ZW1lbnQ+LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpOworICAgIHZvaWQgcmVtb3Zl
Q2hpbGRyZW5JblJhbmdlKFBhc3NSZWZQdHI8Tm9kZT4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVk
IHRvKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTm9kZShQYXNzUmVmUHRyPE5vZGU+KTsKKyAg
ICB2b2lkIHJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW4oUGFzc1JlZlB0cjxOb2RlPik7Cisg
ICAgdm9pZCByZW1vdmVOb2RlQW5kUHJ1bmVBbmNlc3RvcnMoUGFzc1JlZlB0cjxOb2RlPik7CiAg
ICAgdm9pZCBwcnVuZShQYXNzUmVmUHRyPE5vZGU+KTsKLSAgICB2b2lkIHJlcGxhY2VUZXh0SW5O
b2RlKFRleHQqIG5vZGUsIGludCBvZmZzZXQsIGludCBjb3VudCwgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudFRleHQpOworICAgIHZvaWQgcmVwbGFjZVRleHRJbk5vZGUoUGFzc1JlZlB0cjxUZXh0
PiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCwgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudFRleHQpOwogICAgIFBvc2l0aW9uIHBvc2l0aW9uT3V0c2lkZVRhYlNwYW4oY29uc3QgUG9z
aXRpb24mKTsKLSAgICB2b2lkIGluc2VydE5vZGVBdFRhYlNwYW5Qb3NpdGlvbihOb2RlKiwgY29u
c3QgUG9zaXRpb24mKTsKLSAgICB2b2lkIHNldE5vZGVBdHRyaWJ1dGUoRWxlbWVudCosIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9p
ZCBzcGxpdFRleHROb2RlKFRleHQqLCBpbnQgb2Zmc2V0KTsKLSAgICB2b2lkIHNwbGl0RWxlbWVu
dChFbGVtZW50KiwgTm9kZSogYXRDaGlsZCk7Ci0gICAgdm9pZCBtZXJnZUlkZW50aWNhbEVsZW1l
bnRzKEVsZW1lbnQqLCBFbGVtZW50Kik7Ci0gICAgdm9pZCB3cmFwQ29udGVudHNJbkR1bW15U3Bh
bihFbGVtZW50Kik7Ci0gICAgdm9pZCBzcGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnQoVGV4
dCosIGludCBvZmZzZXQpOworICAgIHZvaWQgc2V0Tm9kZUF0dHJpYnV0ZShQYXNzUmVmUHRyPEVs
ZW1lbnQ+LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpOworICAgIHZvaWQgc3BsaXRFbGVtZW50KFBhc3NSZWZQdHI8RWxlbWVudD4sIFBh
c3NSZWZQdHI8Tm9kZT4gYXRDaGlsZCk7CisgICAgdm9pZCBzcGxpdFRleHROb2RlKFBhc3NSZWZQ
dHI8VGV4dD4sIHVuc2lnbmVkIG9mZnNldCk7CisgICAgdm9pZCBzcGxpdFRleHROb2RlQ29udGFp
bmluZ0VsZW1lbnQoUGFzc1JlZlB0cjxUZXh0PiwgdW5zaWduZWQgb2Zmc2V0KTsKKyAgICB2b2lk
IHdyYXBDb250ZW50c0luRHVtbXlTcGFuKFBhc3NSZWZQdHI8RWxlbWVudD4pOwogCi0gICAgdm9p
ZCBkZWxldGVJbnNpZ25pZmljYW50VGV4dChUZXh0KiwgaW50IHN0YXJ0LCBpbnQgZW5kKTsKKyAg
ICB2b2lkIGRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0KFBhc3NSZWZQdHI8VGV4dD4sIHVuc2lnbmVk
IHN0YXJ0LCB1bnNpZ25lZCBlbmQpOwogICAgIHZvaWQgZGVsZXRlSW5zaWduaWZpY2FudFRleHQo
Y29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKTsKICAgICB2b2lkIGRl
bGV0ZUluc2lnbmlmaWNhbnRUZXh0RG93bnN0cmVhbShjb25zdCBQb3NpdGlvbiYpOwogCi0gICAg
UGFzc1JlZlB0cjxOb2RlPiBhcHBlbmRCbG9ja1BsYWNlaG9sZGVyKE5vZGUqKTsKKyAgICBQYXNz
UmVmUHRyPE5vZGU+IGFwcGVuZEJsb2NrUGxhY2Vob2xkZXIoUGFzc1JlZlB0cjxFbGVtZW50Pik7
CiAgICAgUGFzc1JlZlB0cjxOb2RlPiBpbnNlcnRCbG9ja1BsYWNlaG9sZGVyKGNvbnN0IFBvc2l0
aW9uJik7Ci0gICAgUGFzc1JlZlB0cjxOb2RlPiBhZGRCbG9ja1BsYWNlaG9sZGVySWZOZWVkZWQo
Tm9kZSopOworICAgIFBhc3NSZWZQdHI8Tm9kZT4gYWRkQmxvY2tQbGFjZWhvbGRlcklmTmVlZGVk
KEVsZW1lbnQqKTsKICAgICB2b2lkIHJlbW92ZVBsYWNlaG9sZGVyQXQoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJik7CiAKICAgICBQYXNzUmVmUHRyPE5vZGU+IGluc2VydE5ld0RlZmF1bHRQYXJhZ3Jh
cGhFbGVtZW50QXQoY29uc3QgUG9zaXRpb24mKTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9EZWxl
dGVGcm9tVGV4dE5vZGVDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
RGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDM5NDQwKQorKysgV2ViQ29y
ZS9lZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCwxMyArMzAsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EZWxldGVGcm9tVGV4
dE5vZGVDb21tYW5kOjpEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kKFBhc3NSZWZQdHI8VGV4dD4g
bm9kZSwgaW50IG9mZnNldCwgaW50IGNvdW50KQotICAgIDogU2ltcGxlRWRpdENvbW1hbmQobm9k
ZS0+ZG9jdW1lbnQoKSksIG1fbm9kZShub2RlKSwgbV9vZmZzZXQob2Zmc2V0KSwgbV9jb3VudChj
b3VudCkKK0RlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6OkRlbGV0ZUZyb21UZXh0Tm9kZUNvbW1h
bmQoUGFzc1JlZlB0cjxUZXh0PiBub2RlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50
KQorICAgIDogU2ltcGxlRWRpdENvbW1hbmQobm9kZS0+ZG9jdW1lbnQoKSkKKyAgICAsIG1fbm9k
ZShub2RlKQorICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICwgbV9jb3VudChjb3VudCkKIHsK
ICAgICBBU1NFUlQobV9ub2RlKTsKLSAgICBBU1NFUlQobV9vZmZzZXQgPj0gMCk7Ci0gICAgQVNT
RVJUKG1fb2Zmc2V0IDwgKGludCltX25vZGUtPmxlbmd0aCgpKTsKLSAgICBBU1NFUlQobV9jb3Vu
dCA+PSAwKTsKKyAgICBBU1NFUlQobV9vZmZzZXQgPD0gbV9ub2RlLT5sZW5ndGgoKSk7CisgICAg
QVNTRVJUKG1fb2Zmc2V0ICsgbV9jb3VudCA8PSBtX25vZGUtPmxlbmd0aCgpKTsKIH0KIAogdm9p
ZCBEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kOjpkb0FwcGx5KCkKQEAgLTQ1LDIwICs0NywxOCBA
QCB2b2lkIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6OmRvQXBwbHkoCiAKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICBtX3RleHQgPSBtX25vZGUtPnN1YnN0cmluZ0RhdGEobV9vZmZz
ZXQsIG1fY291bnQsIGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgaWYgKGVjKQorICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgbV9ub2RlLT5kZWxldGVEYXRhKG1fb2Zmc2V0LCBtX2Nv
dW50LCBlYyk7Ci0gICAgQVNTRVJUKGVjID09IDApOwogfQogCiB2b2lkIERlbGV0ZUZyb21UZXh0
Tm9kZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiB7CiAgICAgQVNTRVJUKG1fbm9kZSk7Ci0gICAgQVNT
RVJUKCFtX3RleHQuaXNFbXB0eSgpKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgbV9ub2RlLT5pbnNlcnREYXRhKG1fb2Zmc2V0LCBtX3Rl
eHQsIGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuaAko
cmV2aXNpb24gMzk0NDApCisrKyBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29t
bWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwyMCArMzQsMjAgQEAgY2xhc3MgVGV4dDsKIAog
Y2xhc3MgRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZCA6IHB1YmxpYyBTaW1wbGVFZGl0Q29tbWFu
ZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGVsZXRlRnJvbVRleHROb2RlQ29t
bWFuZD4gY3JlYXRlKFBhc3NSZWZQdHI8VGV4dD4gbm9kZSwgaW50IG9mZnNldCwgaW50IGNvdW50
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ+IGNyZWF0
ZShQYXNzUmVmUHRyPFRleHQ+IG5vZGUsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlbGV0ZUZyb21UZXh0Tm9kZUNv
bW1hbmQobm9kZSwgb2Zmc2V0LCBjb3VudCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEZWxl
dGVGcm9tVGV4dE5vZGVDb21tYW5kKFBhc3NSZWZQdHI8VGV4dD4sIGludCBvZmZzZXQsIGludCBj
b3VudCk7CisgICAgRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZChQYXNzUmVmUHRyPFRleHQ+LCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50KTsKIAogICAgIHZpcnR1YWwgdm9pZCBkb0Fw
cGx5KCk7CiAgICAgdmlydHVhbCB2b2lkIGRvVW5hcHBseSgpOwogCiAgICAgUmVmUHRyPFRleHQ+
IG1fbm9kZTsKLSAgICBpbnQgbV9vZmZzZXQ7Ci0gICAgaW50IG1fY291bnQ7CisgICAgdW5zaWdu
ZWQgbV9vZmZzZXQ7CisgICAgdW5zaWduZWQgbV9jb3VudDsKICAgICBTdHJpbmcgbV90ZXh0Owog
fTsKIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAko
cmV2aXNpb24gMzk0NDApCisrKyBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNyw3ICszMTcsNyBAQCBzdGF0aWMgdm9pZCB1cGRh
dGVQb3NpdGlvbkZvck5vZGVSZW1vdmFsCiAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25CZWZv
cmVOb2RlKG5vZGUpOwogfQogCi12b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZU5v
ZGUoTm9kZSAqbm9kZSkKK3ZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlTm9kZShQ
YXNzUmVmUHRyPE5vZGU+IG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47
CkBAIC0zNDQsMTIgKzM0NCwxMiBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92
ZU5vZGUoCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKGlzVGFibGVTdHJ1Y3R1cmVO
b2RlKG5vZGUpIHx8IG5vZGUgPT0gbm9kZS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpKSB7CisgICAg
aWYgKGlzVGFibGVTdHJ1Y3R1cmVOb2RlKG5vZGUuZ2V0KCkpIHx8IG5vZGUgPT0gbm9kZS0+cm9v
dEVkaXRhYmxlRWxlbWVudCgpKSB7CiAgICAgICAgIC8vIERvIG5vdCByZW1vdmUgYW4gZWxlbWVu
dCBvZiB0YWJsZSBzdHJ1Y3R1cmU7IHJlbW92ZSBpdHMgY29udGVudHMuCiAgICAgICAgIC8vIExp
a2V3aXNlIGZvciB0aGUgcm9vdCBlZGl0YWJsZSBlbGVtZW50LgotICAgICAgICBOb2RlICpjaGls
ZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgTm9kZSogY2hpbGQgPSBub2RlLT5maXJz
dENoaWxkKCk7CiAgICAgICAgIHdoaWxlIChjaGlsZCkgewotICAgICAgICAgICAgTm9kZSAqcmVt
b3ZlID0gY2hpbGQ7CisgICAgICAgICAgICBOb2RlKiByZW1vdmUgPSBjaGlsZDsKICAgICAgICAg
ICAgIGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgICAgICAgICByZW1vdmVOb2Rl
KHJlbW92ZSk7CiAgICAgICAgIH0KQEAgLTM2OCw5ICszNjgsOSBAQCB2b2lkIERlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQ6OnJlbW92ZU5vZGUoCiAgICAgICAgIG1fbmVlZFBsYWNlaG9sZGVyID0gdHJ1
ZTsKICAgICAKICAgICAvLyBGSVhNRTogVXBkYXRlIHRoZSBlbmRwb2ludHMgb2YgdGhlIHJhbmdl
IGJlaW5nIGRlbGV0ZWQuCi0gICAgdXBkYXRlUG9zaXRpb25Gb3JOb2RlUmVtb3ZhbChub2RlLCBt
X2VuZGluZ1Bvc2l0aW9uKTsKLSAgICB1cGRhdGVQb3NpdGlvbkZvck5vZGVSZW1vdmFsKG5vZGUs
IG1fbGVhZGluZ1doaXRlc3BhY2UpOwotICAgIHVwZGF0ZVBvc2l0aW9uRm9yTm9kZVJlbW92YWwo
bm9kZSwgbV90cmFpbGluZ1doaXRlc3BhY2UpOworICAgIHVwZGF0ZVBvc2l0aW9uRm9yTm9kZVJl
bW92YWwobm9kZS5nZXQoKSwgbV9lbmRpbmdQb3NpdGlvbik7CisgICAgdXBkYXRlUG9zaXRpb25G
b3JOb2RlUmVtb3ZhbChub2RlLmdldCgpLCBtX2xlYWRpbmdXaGl0ZXNwYWNlKTsKKyAgICB1cGRh
dGVQb3NpdGlvbkZvck5vZGVSZW1vdmFsKG5vZGUuZ2V0KCksIG1fdHJhaWxpbmdXaGl0ZXNwYWNl
KTsKICAgICAKICAgICBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZShub2RlKTsKIH0K
QEAgLTM4NiwxMiArMzg2LDEyIEBAIHZvaWQgdXBkYXRlUG9zaXRpb25Gb3JUZXh0UmVtb3ZhbChO
b2RlKiAKICAgICB9CiB9CiAKLXZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZGVsZXRlVGV4
dEZyb21Ob2RlKFRleHQgKm5vZGUsIGludCBvZmZzZXQsIGludCBjb3VudCkKK3ZvaWQgRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZDo6ZGVsZXRlVGV4dEZyb21Ob2RlKFBhc3NSZWZQdHI8VGV4dD4gbm9k
ZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCkKIHsKICAgICAvLyBGSVhNRTogVXBk
YXRlIHRoZSBlbmRwb2ludHMgb2YgdGhlIHJhbmdlIGJlaW5nIGRlbGV0ZWQuCi0gICAgdXBkYXRl
UG9zaXRpb25Gb3JUZXh0UmVtb3ZhbChub2RlLCBvZmZzZXQsIGNvdW50LCBtX2VuZGluZ1Bvc2l0
aW9uKTsKLSAgICB1cGRhdGVQb3NpdGlvbkZvclRleHRSZW1vdmFsKG5vZGUsIG9mZnNldCwgY291
bnQsIG1fbGVhZGluZ1doaXRlc3BhY2UpOwotICAgIHVwZGF0ZVBvc2l0aW9uRm9yVGV4dFJlbW92
YWwobm9kZSwgb2Zmc2V0LCBjb3VudCwgbV90cmFpbGluZ1doaXRlc3BhY2UpOworICAgIHVwZGF0
ZVBvc2l0aW9uRm9yVGV4dFJlbW92YWwobm9kZS5nZXQoKSwgb2Zmc2V0LCBjb3VudCwgbV9lbmRp
bmdQb3NpdGlvbik7CisgICAgdXBkYXRlUG9zaXRpb25Gb3JUZXh0UmVtb3ZhbChub2RlLmdldCgp
LCBvZmZzZXQsIGNvdW50LCBtX2xlYWRpbmdXaGl0ZXNwYWNlKTsKKyAgICB1cGRhdGVQb3NpdGlv
bkZvclRleHRSZW1vdmFsKG5vZGUuZ2V0KCksIG9mZnNldCwgY291bnQsIG1fdHJhaWxpbmdXaGl0
ZXNwYWNlKTsKICAgICAKICAgICBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRlVGV4dEZyb21O
b2RlKG5vZGUsIG9mZnNldCwgY291bnQpOwogfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0RlbGV0
ZVNlbGVjdGlvbkNvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZC5oCShyZXZpc2lvbiAzOTQ0MCkKKysrIFdlYkNvcmUvZWRpdGluZy9E
ZWxldGVTZWxlY3Rpb25Db21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDggKzYyLDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNhbGN1bGF0ZUVuZGluZ1Bvc2l0aW9uKCk7CiAgICAgdm9pZCBj
YWxjdWxhdGVUeXBpbmdTdHlsZUFmdGVyRGVsZXRlKCk7CiAgICAgdm9pZCBjbGVhclRyYW5zaWVu
dFN0YXRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZU5vZGUoTm9kZSopOwotICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVUZXh0RnJvbU5vZGUoVGV4dCosIGludCwgaW50KTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlTm9kZShQYXNzUmVmUHRyPE5vZGU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlVGV4dEZyb21Ob2RlKFBhc3NSZWZQdHI8VGV4dD4sIHVuc2lnbmVkLCB1bnNpZ25lZCk7CiAK
ICAgICBib29sIG1faGFzU2VsZWN0aW9uVG9EZWxldGU7CiAgICAgYm9vbCBtX3NtYXJ0RGVsZXRl
OwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAJKHJldmlzaW9uIDM5
NDQwKQorKysgV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogCi1Gb3JtYXRCbG9ja0NvbW1hbmQ6OkZvcm1hdEJsb2NrQ29tbWFu
ZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGFnTmFtZSkgCitGb3JtYXRCbG9j
a0NvbW1hbmQ6OkZvcm1hdEJsb2NrQ29tbWFuZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0
b21pY1N0cmluZyYgdGFnTmFtZSkgCiAgICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChkb2N1bWVu
dCksIG1fdGFnTmFtZSh0YWdOYW1lKQogewogfQpAQCAtMTA3LDIxICsxMDcsMjEgQEAgdm9pZCBG
b3JtYXRCbG9ja0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgIFZpc2libGVQb3NpdGlvbiBwYXJhZ3Jh
cGhFbmQgPSBlbmRPZlBhcmFncmFwaChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSk7
CiAgICAgVmlzaWJsZVBvc2l0aW9uIGJsb2NrU3RhcnQgPSBzdGFydE9mQmxvY2soZW5kaW5nU2Vs
ZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOwogICAgIFZpc2libGVQb3NpdGlvbiBibG9ja0VuZCA9
IGVuZE9mQmxvY2soZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOwotICAgIFJlZlB0
cjxOb2RlPiBibG9ja05vZGUgPSBjcmVhdGVFbGVtZW50KGRvY3VtZW50KCksIG1fdGFnTmFtZSk7
Ci0gICAgUmVmUHRyPE5vZGU+IHBsYWNlaG9sZGVyID0gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3Vt
ZW50KCkpOworICAgIFJlZlB0cjxFbGVtZW50PiBibG9ja05vZGUgPSBjcmVhdGVIVE1MRWxlbWVu
dChkb2N1bWVudCgpLCBtX3RhZ05hbWUpOworICAgIFJlZlB0cjxFbGVtZW50PiBwbGFjZWhvbGRl
ciA9IGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKTsKICAgICAKICAgICBOb2RlKiByb290
ID0gZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKS5ub2RlKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQo
KTsKICAgICBpZiAodmFsaWRCbG9ja1RhZyhyZWZOb2RlLT5ub2RlTmFtZSgpLmxvd2VyKCkpICYm
IAogICAgICAgICBwYXJhZ3JhcGhTdGFydCA9PSBibG9ja1N0YXJ0ICYmIHBhcmFncmFwaEVuZCA9
PSBibG9ja0VuZCAmJiAKICAgICAgICAgcmVmTm9kZSAhPSByb290ICYmICFyb290LT5pc0Rlc2Nl
bmRhbnRPZihyZWZOb2RlKSkKICAgICAgICAgLy8gQWxyZWFkeSBpbiBhIHZhbGlkIGJsb2NrIHRh
ZyB0aGF0IG9ubHkgY29udGFpbnMgdGhlIGN1cnJlbnQgcGFyYWdyYXBoLCBzbyB3ZSBjYW4gc3dh
cCB3aXRoIHRoZSBuZXcgdGFnCi0gICAgICAgIGluc2VydE5vZGVCZWZvcmUoYmxvY2tOb2RlLmdl
dCgpLCByZWZOb2RlKTsKKyAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShibG9ja05vZGUsIHJlZk5v
ZGUpOwogICAgIGVsc2UgewogICAgICAgICAvLyBBdm9pZCBpbnNlcnRpbmcgaW5zaWRlIGlubGlu
ZSBlbGVtZW50cyB0aGF0IHN1cnJvdW5kIHBhcmFncmFwaFN0YXJ0IHdpdGggdXBzdHJlYW0oKS4K
ICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IHRvIGF2b2lkIGNyZWF0aW5nIGJsb2F0ZWQgbWFya3Vw
LgotICAgICAgICBpbnNlcnROb2RlQXQoYmxvY2tOb2RlLmdldCgpLCBwYXJhZ3JhcGhTdGFydC5k
ZWVwRXF1aXZhbGVudCgpLnVwc3RyZWFtKCkpOworICAgICAgICBpbnNlcnROb2RlQXQoYmxvY2tO
b2RlLCBwYXJhZ3JhcGhTdGFydC5kZWVwRXF1aXZhbGVudCgpLnVwc3RyZWFtKCkpOwogICAgIH0K
LSAgICBhcHBlbmROb2RlKHBsYWNlaG9sZGVyLmdldCgpLCBibG9ja05vZGUuZ2V0KCkpOworICAg
IGFwcGVuZE5vZGUocGxhY2Vob2xkZXIsIGJsb2NrTm9kZSk7CiAgICAgCiAgICAgVmlzaWJsZVBv
c2l0aW9uIGRlc3RpbmF0aW9uKFBvc2l0aW9uKHBsYWNlaG9sZGVyLmdldCgpLCAwKSk7CiAgICAg
aWYgKHBhcmFncmFwaFN0YXJ0ID09IHBhcmFncmFwaEVuZCAmJiAhbGluZUJyZWFrRXhpc3RzQXRQ
b3NpdGlvbihwYXJhZ3JhcGhTdGFydCkpIHsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9Gb3JtYXRC
bG9ja0NvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tD
b21tYW5kLmgJKHJldmlzaW9uIDM5NDQwKQorKysgV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2Nr
Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxOSArMzIsMTkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBGb3JtYXRCbG9ja0NvbW1hbmQgOiBwdWJsaWMgQ29tcG9zaXRlRWRp
dENvbW1hbmQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1hdEJsb2NrQ29t
bWFuZD4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0YWdOYW1lKQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1hdEJsb2NrQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50
KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBGb3JtYXRCbG9ja0NvbW1hbmQoZG9jdW1lbnQsIHRhZ05hbWUp
KTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRm9ybWF0QmxvY2tDb21tYW5kKERvY3VtZW50Kiwg
Y29uc3QgU3RyaW5nJiB0YWdOYW1lKTsKKyAgICBGb3JtYXRCbG9ja0NvbW1hbmQoRG9jdW1lbnQq
LCBjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpOwogCiAgICAgdmlydHVhbCB2b2lkIGRvQXBw
bHkoKTsKICAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0IHsgcmV0
dXJuIEVkaXRBY3Rpb25Gb3JtYXRCbG9jazsgfQogCiAgICAgYm9vbCBtb2RpZnlSYW5nZSgpOwot
ICAgIFN0cmluZyBtX3RhZ05hbWU7CisgICAgQXRvbWljU3RyaW5nIG1fdGFnTmFtZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRk
ZW50Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRl
bnRDb21tYW5kLmNwcAkocmV2aXNpb24gMzk0NDApCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5kZW50
T3V0ZGVudENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNyArMjQsMTggQEAKICAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUg
IkluZGVudE91dGRlbnRDb21tYW5kLmgiCi0jaW5jbHVkZSAiSW5zZXJ0TGlzdENvbW1hbmQuaCIK
KwogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKLSNpbmNs
dWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
QmxvY2txdW90ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJ
bnNlcnRMaW5lQnJlYWtDb21tYW5kLmgiCisjaW5jbHVkZSAiSW5zZXJ0TGlzdENvbW1hbmQuaCIK
ICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlNwbGl0RWxlbWVudENvbW1hbmQuaCIKICNp
bmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1
ZGUgInZpc2libGVfdW5pdHMuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAg
LTQ4LDEyICs0OSwxMiBAQCBzdGF0aWMgU3RyaW5nIGluZGVudEJsb2NrcXVvdGVTdHJpbmcoKQog
ICAgIHJldHVybiBzdHJpbmc7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0
ZUluZGVudEJsb2NrcXVvdGVFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK3N0YXRpYyBQYXNz
UmVmUHRyPEhUTUxCbG9ja3F1b3RlRWxlbWVudD4gY3JlYXRlSW5kZW50QmxvY2txdW90ZUVsZW1l
bnQoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIFJlZlB0cjxFbGVtZW50PiBpbmRlbnRCbG9j
a3F1b3RlRWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoZG9jdW1lbnQsICJibG9ja3F1b3RlIik7Ci0g
ICAgaW5kZW50QmxvY2txdW90ZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIGluZGVu
dEJsb2NrcXVvdGVTdHJpbmcoKSk7Ci0gICAgaW5kZW50QmxvY2txdW90ZUVsZW1lbnQtPnNldEF0
dHJpYnV0ZShzdHlsZUF0dHIsICJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFk
ZGluZzogMHB4OyIpOwotICAgIHJldHVybiBpbmRlbnRCbG9ja3F1b3RlRWxlbWVudC5yZWxlYXNl
KCk7CisgICAgUmVmUHRyPEhUTUxCbG9ja3F1b3RlRWxlbWVudD4gZWxlbWVudCA9IG5ldyBIVE1M
QmxvY2txdW90ZUVsZW1lbnQoYmxvY2txdW90ZVRhZywgZG9jdW1lbnQpOworICAgIGVsZW1lbnQt
PnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIGluZGVudEJsb2NrcXVvdGVTdHJpbmcoKSk7CisgICAg
ZWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgIm1hcmdpbjogMCAwIDAgNDBweDsgYm9y
ZGVyOiBub25lOyBwYWRkaW5nOiAwcHg7Iik7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgp
OwogfQogCiBzdGF0aWMgYm9vbCBpc0luZGVudEJsb2NrcXVvdGUoY29uc3QgTm9kZSogbm9kZSkK
QEAgLTcyLDMyICs3MywzMyBAQCBzdGF0aWMgYm9vbCBpc0xpc3RPckluZGVudEJsb2NrcXVvdGUo
Y29uCiAKIEluZGVudE91dGRlbnRDb21tYW5kOjpJbmRlbnRPdXRkZW50Q29tbWFuZChEb2N1bWVu
dCogZG9jdW1lbnQsIEVJbmRlbnRUeXBlIHR5cGVPZkFjdGlvbiwgaW50IG1hcmdpbkluUGl4ZWxz
KQogICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQoZG9jdW1lbnQpLCBtX3R5cGVPZkFjdGlvbih0
eXBlT2ZBY3Rpb24pLCBtX21hcmdpbkluUGl4ZWxzKG1hcmdpbkluUGl4ZWxzKQote30KK3sKK30K
IAogLy8gVGhpcyBmdW5jdGlvbiBpcyBhIHdvcmthcm91bmQgZm9yIG1vdmVQYXJhZ3JhcGgncyB0
ZW5kZW5jeSB0byBzdHJpcCBibG9ja3F1b3Rlcy4gSXQgdXBkYXRlcyBsYXN0QmxvY2txdW90ZSB0
byBwb2ludCB0byB0aGUKIC8vIGNvcnJlY3QgbGV2ZWwgZm9yIHRoZSBjdXJyZW50IHBhcmFncmFw
aCwgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGEgcGxhY2Vob2xkZXIgYnIgd2hlcmUgdGhlIGlu
c2VydGlvbiBzaG91bGQgYmUgcGVyZm9ybWVkLgotTm9kZSogSW5kZW50T3V0ZGVudENvbW1hbmQ6
OnByZXBhcmVCbG9ja3F1b3RlTGV2ZWxGb3JJbnNlcnRpb24oVmlzaWJsZVBvc2l0aW9uJiBjdXJy
ZW50UGFyYWdyYXBoLCBOb2RlKiogbGFzdEJsb2NrcXVvdGUpCitQYXNzUmVmUHRyPEVsZW1lbnQ+
IEluZGVudE91dGRlbnRDb21tYW5kOjpwcmVwYXJlQmxvY2txdW90ZUxldmVsRm9ySW5zZXJ0aW9u
KFZpc2libGVQb3NpdGlvbiYgY3VycmVudFBhcmFncmFwaCwgUmVmUHRyPEVsZW1lbnQ+JiBsYXN0
QmxvY2txdW90ZSkKIHsKICAgICBpbnQgY3VycmVudEJsb2NrcXVvdGVMZXZlbCA9IDA7CiAgICAg
aW50IGxhc3RCbG9ja3F1b3RlTGV2ZWwgPSAwOwogICAgIE5vZGUqIG5vZGUgPSBjdXJyZW50UGFy
YWdyYXBoLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpOwogICAgIHdoaWxlICgobm9kZSA9IGVuY2xv
c2luZ05vZGVPZlR5cGUoUG9zaXRpb24obm9kZS0+cGFyZW50Tm9kZSgpLCAwKSwgJmlzSW5kZW50
QmxvY2txdW90ZSkpKQogICAgICAgICBjdXJyZW50QmxvY2txdW90ZUxldmVsKys7Ci0gICAgbm9k
ZSA9ICpsYXN0QmxvY2txdW90ZTsKKyAgICBub2RlID0gbGFzdEJsb2NrcXVvdGUuZ2V0KCk7CiAg
ICAgd2hpbGUgKChub2RlID0gZW5jbG9zaW5nTm9kZU9mVHlwZShQb3NpdGlvbihub2RlLT5wYXJl
bnROb2RlKCksIDApLCAmaXNJbmRlbnRCbG9ja3F1b3RlKSkpCiAgICAgICAgIGxhc3RCbG9ja3F1
b3RlTGV2ZWwrKzsKICAgICB3aGlsZSAoY3VycmVudEJsb2NrcXVvdGVMZXZlbCA+IGxhc3RCbG9j
a3F1b3RlTGV2ZWwpIHsKLSAgICAgICAgUmVmUHRyPE5vZGU+IG5ld0Jsb2NrcXVvdGUgPSBjcmVh
dGVJbmRlbnRCbG9ja3F1b3RlRWxlbWVudChkb2N1bWVudCgpKTsKLSAgICAgICAgYXBwZW5kTm9k
ZShuZXdCbG9ja3F1b3RlLmdldCgpLCAqbGFzdEJsb2NrcXVvdGUpOwotICAgICAgICAqbGFzdEJs
b2NrcXVvdGUgPSBuZXdCbG9ja3F1b3RlLmdldCgpOworICAgICAgICBSZWZQdHI8RWxlbWVudD4g
bmV3QmxvY2txdW90ZSA9IGNyZWF0ZUluZGVudEJsb2NrcXVvdGVFbGVtZW50KGRvY3VtZW50KCkp
OworICAgICAgICBhcHBlbmROb2RlKG5ld0Jsb2NrcXVvdGUsIGxhc3RCbG9ja3F1b3RlKTsKKyAg
ICAgICAgbGFzdEJsb2NrcXVvdGUgPSBuZXdCbG9ja3F1b3RlOwogICAgICAgICBsYXN0QmxvY2tx
dW90ZUxldmVsKys7CiAgICAgfQogICAgIHdoaWxlIChjdXJyZW50QmxvY2txdW90ZUxldmVsIDwg
bGFzdEJsb2NrcXVvdGVMZXZlbCkgewotICAgICAgICAqbGFzdEJsb2NrcXVvdGUgPSBlbmNsb3Np
bmdOb2RlT2ZUeXBlKFBvc2l0aW9uKCgqbGFzdEJsb2NrcXVvdGUpLT5wYXJlbnROb2RlKCksIDAp
LCAmaXNJbmRlbnRCbG9ja3F1b3RlKTsKKyAgICAgICAgbGFzdEJsb2NrcXVvdGUgPSBzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4oZW5jbG9zaW5nTm9kZU9mVHlwZShQb3NpdGlvbihsYXN0QmxvY2txdW90
ZS0+cGFyZW50Tm9kZSgpLCAwKSwgaXNJbmRlbnRCbG9ja3F1b3RlKSk7CiAgICAgICAgIGxhc3RC
bG9ja3F1b3RlTGV2ZWwtLTsKICAgICB9Ci0gICAgUmVmUHRyPE5vZGU+IHBsYWNlaG9sZGVyID0g
Y3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpOwotICAgIGFwcGVuZE5vZGUocGxhY2Vob2xk
ZXIuZ2V0KCksICpsYXN0QmxvY2txdW90ZSk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IHBsYWNlaG9s
ZGVyID0gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpOworICAgIGFwcGVuZE5vZGUocGxh
Y2Vob2xkZXIsIGxhc3RCbG9ja3F1b3RlKTsKICAgICAvLyBBZGQgYW5vdGhlciBiciBiZWZvcmUg
dGhlIHBsYWNlaG9sZGVyIGlmIGl0IGNvbGxhcHNlZC4KICAgICBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvcyhQb3NpdGlvbihwbGFjZWhvbGRlci5nZXQoKSwgMCkpOwogICAgIGlmICghaXNTdGFy
dE9mUGFyYWdyYXBoKHZpc2libGVQb3MpKQpAQCAtMTIwLDU3ICsxMjIsNTcgQEAgdm9pZCBJbmRl
bnRPdXRkZW50Q29tbWFuZDo6aW5kZW50UmVnaW9uKAogICAgIC8vIGFuZCB0aGVyZSdzIG5vdGhp
bmcgdG8gbW92ZS4KICAgICBQb3NpdGlvbiBzdGFydCA9IHN0YXJ0T2ZTZWxlY3Rpb24uZGVlcEVx
dWl2YWxlbnQoKS5kb3duc3RyZWFtKCk7CiAgICAgaWYgKHN0YXJ0Lm5vZGUoKSA9PSBlZGl0YWJs
ZVJvb3RGb3JQb3NpdGlvbihzdGFydCkpIHsKLSAgICAgICAgUmVmUHRyPE5vZGU+IGJsb2NrcXVv
dGUgPSBjcmVhdGVJbmRlbnRCbG9ja3F1b3RlRWxlbWVudChkb2N1bWVudCgpKTsKLSAgICAgICAg
aW5zZXJ0Tm9kZUF0KGJsb2NrcXVvdGUuZ2V0KCksIHN0YXJ0KTsKLSAgICAgICAgUmVmUHRyPE5v
ZGU+IHBsYWNlaG9sZGVyID0gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpOwotICAgICAg
ICBhcHBlbmROb2RlKHBsYWNlaG9sZGVyLmdldCgpLCBibG9ja3F1b3RlLmdldCgpKTsKKyAgICAg
ICAgUmVmUHRyPEVsZW1lbnQ+IGJsb2NrcXVvdGUgPSBjcmVhdGVJbmRlbnRCbG9ja3F1b3RlRWxl
bWVudChkb2N1bWVudCgpKTsKKyAgICAgICAgaW5zZXJ0Tm9kZUF0KGJsb2NrcXVvdGUsIHN0YXJ0
KTsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHBsYWNlaG9sZGVyID0gY3JlYXRlQnJlYWtFbGVt
ZW50KGRvY3VtZW50KCkpOworICAgICAgICBhcHBlbmROb2RlKHBsYWNlaG9sZGVyLCBibG9ja3F1
b3RlKTsKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFNlbGVjdGlvbihQb3NpdGlvbihwbGFj
ZWhvbGRlci5nZXQoKSwgMCksIERPV05TVFJFQU0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKLSAgICBOb2RlKiBwcmV2aW91c0xpc3ROb2RlID0gMDsKLSAgICBOb2RlKiBuZXdMaXN0
Tm9kZSA9IDA7Ci0gICAgTm9kZSogbmV3QmxvY2txdW90ZSA9IDA7CisgICAgUmVmUHRyPEVsZW1l
bnQ+IHByZXZpb3VzTGlzdE5vZGU7CisgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0xpc3ROb2RlOwor
ICAgIFJlZlB0cjxFbGVtZW50PiBuZXdCbG9ja3F1b3RlOwogICAgIFZpc2libGVQb3NpdGlvbiBl
bmRPZkN1cnJlbnRQYXJhZ3JhcGggPSBlbmRPZlBhcmFncmFwaChzdGFydE9mU2VsZWN0aW9uKTsK
ICAgICBWaXNpYmxlUG9zaXRpb24gZW5kQWZ0ZXJTZWxlY3Rpb24gPSBlbmRPZlBhcmFncmFwaChl
bmRPZlBhcmFncmFwaChlbmRPZlNlbGVjdGlvbikubmV4dCgpKTsKICAgICB3aGlsZSAoZW5kT2ZD
dXJyZW50UGFyYWdyYXBoICE9IGVuZEFmdGVyU2VsZWN0aW9uKSB7CiAgICAgICAgIC8vIEl0ZXJh
dGUgYWNyb3NzIHRoZSBzZWxlY3RlZCBwYXJhZ3JhcGhzLi4uCiAgICAgICAgIFZpc2libGVQb3Np
dGlvbiBlbmRPZk5leHRQYXJhZ3JhcGggPSBlbmRPZlBhcmFncmFwaChlbmRPZkN1cnJlbnRQYXJh
Z3JhcGgubmV4dCgpKTsKLSAgICAgICAgTm9kZSogbGlzdE5vZGUgPSBlbmNsb3NpbmdMaXN0KGVu
ZE9mQ3VycmVudFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKSk7Ci0gICAgICAgIE5v
ZGUqIGluc2VydGlvblBvaW50OworICAgICAgICBSZWZQdHI8RWxlbWVudD4gbGlzdE5vZGUgPSBl
bmNsb3NpbmdMaXN0KGVuZE9mQ3VycmVudFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLm5vZGUo
KSk7CisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBpbnNlcnRpb25Qb2ludDsKICAgICAgICAgaWYg
KGxpc3ROb2RlKSB7Ci0gICAgICAgICAgICBSZWZQdHI8Tm9kZT4gcGxhY2Vob2xkZXIgPSBjcmVh
dGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9
IHBsYWNlaG9sZGVyLmdldCgpOworICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHBsYWNlaG9s
ZGVyID0gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpOworICAgICAgICAgICAgaW5zZXJ0
aW9uUG9pbnQgPSBwbGFjZWhvbGRlcjsKICAgICAgICAgICAgIG5ld0Jsb2NrcXVvdGUgPSAwOwot
ICAgICAgICAgICAgUmVmUHRyPE5vZGU+IGxpc3RJdGVtID0gY3JlYXRlTGlzdEl0ZW1FbGVtZW50
KGRvY3VtZW50KCkpOworICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGxpc3RJdGVtID0gY3Jl
YXRlTGlzdEl0ZW1FbGVtZW50KGRvY3VtZW50KCkpOwogICAgICAgICAgICAgaWYgKGxpc3ROb2Rl
ID09IHByZXZpb3VzTGlzdE5vZGUpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgcHJldmlvdXMg
cGFyYWdyYXBoIHdhcyBpbnNpZGUgdGhlIHNhbWUgbGlzdCwgc28gYWRkIHRoaXMgbGlzdCBpdGVt
IHRvIHRoZSBsaXN0IHdlIGFscmVhZHkgY3JlYXRlZAotICAgICAgICAgICAgICAgIGFwcGVuZE5v
ZGUobGlzdEl0ZW0uZ2V0KCksIG5ld0xpc3ROb2RlKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRO
b2RlKHBsYWNlaG9sZGVyLmdldCgpLCBsaXN0SXRlbS5nZXQoKSk7CisgICAgICAgICAgICAgICAg
YXBwZW5kTm9kZShsaXN0SXRlbSwgbmV3TGlzdE5vZGUpOworICAgICAgICAgICAgICAgIGFwcGVu
ZE5vZGUocGxhY2Vob2xkZXIsIGxpc3RJdGVtKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgLy8gQ2xvbmUgdGhlIGxpc3QgZWxlbWVudCwgaW5zZXJ0IGl0IGJlZm9yZSB0
aGUgY3VycmVudCBwYXJhZ3JhcGgsIGFuZCBtb3ZlIHRoZSBwYXJhZ3JhcGggaW50byBpdC4KLSAg
ICAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gY2xvbmVkTGlzdCA9IHN0YXRpY19jYXN0PEVsZW1l
bnQqPihsaXN0Tm9kZSktPmNsb25lTm9kZShmYWxzZSk7Ci0gICAgICAgICAgICAgICAgaW5zZXJ0
Tm9kZUJlZm9yZShjbG9uZWRMaXN0LmdldCgpLCBlbmNsb3NpbmdMaXN0Q2hpbGQoZW5kT2ZDdXJy
ZW50UGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKSk7Ci0gICAgICAgICAgICAgICAg
YXBwZW5kTm9kZShsaXN0SXRlbS5nZXQoKSwgY2xvbmVkTGlzdC5nZXQoKSk7Ci0gICAgICAgICAg
ICAgICAgYXBwZW5kTm9kZShwbGFjZWhvbGRlci5nZXQoKSwgbGlzdEl0ZW0uZ2V0KCkpOwotICAg
ICAgICAgICAgICAgIG5ld0xpc3ROb2RlID0gY2xvbmVkTGlzdC5nZXQoKTsKKyAgICAgICAgICAg
ICAgICBSZWZQdHI8RWxlbWVudD4gY2xvbmVkTGlzdCA9IGxpc3ROb2RlLT5jbG9uZUVsZW1lbnQo
KTsKKyAgICAgICAgICAgICAgICBpbnNlcnROb2RlQmVmb3JlKGNsb25lZExpc3QsIGVuY2xvc2lu
Z0xpc3RDaGlsZChlbmRPZkN1cnJlbnRQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkp
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmROb2RlKGxpc3RJdGVtLCBjbG9uZWRMaXN0KTsKKyAg
ICAgICAgICAgICAgICBhcHBlbmROb2RlKHBsYWNlaG9sZGVyLCBsaXN0SXRlbSk7CisgICAgICAg
ICAgICAgICAgbmV3TGlzdE5vZGUgPSBjbG9uZWRMaXN0OwogICAgICAgICAgICAgICAgIHByZXZp
b3VzTGlzdE5vZGUgPSBsaXN0Tm9kZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlm
IChuZXdCbG9ja3F1b3RlKQogICAgICAgICAgICAgLy8gVGhlIHByZXZpb3VzIHBhcmFncmFwaCB3
YXMgcHV0IGludG8gYSBuZXcgYmxvY2txdW90ZSwgc28gbW92ZSB0aGlzIHBhcmFncmFwaCB0aGVy
ZSBhcyB3ZWxsCi0gICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IHByZXBhcmVCbG9ja3F1b3Rl
TGV2ZWxGb3JJbnNlcnRpb24oZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCAmbmV3QmxvY2txdW90ZSk7
CisgICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IHByZXBhcmVCbG9ja3F1b3RlTGV2ZWxGb3JJ
bnNlcnRpb24oZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCBuZXdCbG9ja3F1b3RlKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgYmxvY2txdW90ZSBhbmQgaW5zZXJ0
IGl0IGFzIGEgY2hpbGQgb2YgdGhlIHJvb3QgZWRpdGFibGUgZWxlbWVudC4gV2UgYWNjb21wbGlz
aAogICAgICAgICAgICAgLy8gdGhpcyBieSBzcGxpdHRpbmcgYWxsIHBhcmVudHMgb2YgdGhlIGN1
cnJlbnQgcGFyYWdyYXBoIHVwIHRvIHRoYXQgcG9pbnQuCi0gICAgICAgICAgICBSZWZQdHI8Tm9k
ZT4gYmxvY2txdW90ZSA9IGNyZWF0ZUluZGVudEJsb2NrcXVvdGVFbGVtZW50KGRvY3VtZW50KCkp
OworICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGJsb2NrcXVvdGUgPSBjcmVhdGVJbmRlbnRC
bG9ja3F1b3RlRWxlbWVudChkb2N1bWVudCgpKTsKICAgICAgICAgICAgIFBvc2l0aW9uIHN0YXJ0
ID0gc3RhcnRPZlBhcmFncmFwaChlbmRPZkN1cnJlbnRQYXJhZ3JhcGgpLmRlZXBFcXVpdmFsZW50
KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGUqIGVuY2xvc2luZ0NlbGwgPSBlbmNs
b3NpbmdOb2RlT2ZUeXBlKHN0YXJ0LCAmaXNUYWJsZUNlbGwpOwogICAgICAgICAgICAgTm9kZSog
bm9kZVRvU3BsaXRUbyA9IGVuY2xvc2luZ0NlbGwgPyBlbmNsb3NpbmdDZWxsIDogZWRpdGFibGVS
b290Rm9yUG9zaXRpb24oc3RhcnQpOwogICAgICAgICAgICAgUmVmUHRyPE5vZGU+IHN0YXJ0T2ZO
ZXdCbG9jayA9IHNwbGl0VHJlZVRvTm9kZShzdGFydC5ub2RlKCksIG5vZGVUb1NwbGl0VG8pOwot
ICAgICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShibG9ja3F1b3RlLmdldCgpLCBzdGFydE9mTmV3
QmxvY2suZ2V0KCkpOwotICAgICAgICAgICAgbmV3QmxvY2txdW90ZSA9IGJsb2NrcXVvdGUuZ2V0
KCk7Ci0gICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IHByZXBhcmVCbG9ja3F1b3RlTGV2ZWxG
b3JJbnNlcnRpb24oZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCAmbmV3QmxvY2txdW90ZSk7CisgICAg
ICAgICAgICBpbnNlcnROb2RlQmVmb3JlKGJsb2NrcXVvdGUsIHN0YXJ0T2ZOZXdCbG9jayk7Cisg
ICAgICAgICAgICBuZXdCbG9ja3F1b3RlID0gYmxvY2txdW90ZTsKKyAgICAgICAgICAgIGluc2Vy
dGlvblBvaW50ID0gcHJlcGFyZUJsb2NrcXVvdGVMZXZlbEZvckluc2VydGlvbihlbmRPZkN1cnJl
bnRQYXJhZ3JhcGgsIG5ld0Jsb2NrcXVvdGUpOwogICAgICAgICAgICAgLy8gRG9uJ3QgcHV0IHRo
ZSBuZXh0IHBhcmFncmFwaCBpbiB0aGUgYmxvY2txdW90ZSB3ZSBqdXN0IGNyZWF0ZWQgZm9yIHRo
aXMgcGFyYWdyYXBoIHVubGVzcyAKICAgICAgICAgICAgIC8vIHRoZSBuZXh0IHBhcmFncmFwaCBp
cyBpbiB0aGUgc2FtZSBjZWxsLgogICAgICAgICAgICAgaWYgKGVuY2xvc2luZ0NlbGwgJiYgZW5j
bG9zaW5nQ2VsbCAhPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKGVuZE9mTmV4dFBhcmFncmFwaC5kZWVw
RXF1aXZhbGVudCgpLCAmaXNUYWJsZUNlbGwpKQpAQCAtMjIzLDkgKzIyNSw5IEBAIHZvaWQgSW5k
ZW50T3V0ZGVudENvbW1hbmQ6Om91dGRlbnRQYXJhZ3IKICAgICAgICAgdmlzaWJsZVN0YXJ0T2ZQ
YXJhZ3JhcGggPSBWaXNpYmxlUG9zaXRpb24odmlzaWJsZVN0YXJ0T2ZQYXJhZ3JhcGguZGVlcEVx
dWl2YWxlbnQoKSk7CiAgICAgICAgIHZpc2libGVFbmRPZlBhcmFncmFwaCA9IFZpc2libGVQb3Np
dGlvbih2aXNpYmxlRW5kT2ZQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKSk7CiAgICAgICAgIGlm
ICh2aXNpYmxlU3RhcnRPZlBhcmFncmFwaC5pc05vdE51bGwoKSAmJiAhaXNTdGFydE9mUGFyYWdy
YXBoKHZpc2libGVTdGFydE9mUGFyYWdyYXBoKSkKLSAgICAgICAgICAgIGluc2VydE5vZGVBdChj
cmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSkuZ2V0KCksIHZpc2libGVTdGFydE9mUGFyYWdy
YXBoLmRlZXBFcXVpdmFsZW50KCkpOworICAgICAgICAgICAgaW5zZXJ0Tm9kZUF0KGNyZWF0ZUJy
ZWFrRWxlbWVudChkb2N1bWVudCgpKSwgdmlzaWJsZVN0YXJ0T2ZQYXJhZ3JhcGguZGVlcEVxdWl2
YWxlbnQoKSk7CiAgICAgICAgIGlmICh2aXNpYmxlRW5kT2ZQYXJhZ3JhcGguaXNOb3ROdWxsKCkg
JiYgIWlzRW5kT2ZQYXJhZ3JhcGgodmlzaWJsZUVuZE9mUGFyYWdyYXBoKSkKLSAgICAgICAgICAg
IGluc2VydE5vZGVBdChjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSkuZ2V0KCksIHZpc2li
bGVFbmRPZlBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICAgICAgICAgIGluc2VydE5v
ZGVBdChjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSksIHZpc2libGVFbmRPZlBhcmFncmFw
aC5kZWVwRXF1aXZhbGVudCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBOb2RlKiBl
bmNsb3NpbmdCbG9ja0Zsb3cgPSBlbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KHZpc2libGVTdGFy
dE9mUGFyYWdyYXBoKTsKQEAgLTIzMyw3ICsyMzUsNyBAQCB2b2lkIEluZGVudE91dGRlbnRDb21t
YW5kOjpvdXRkZW50UGFyYWdyCiAgICAgaWYgKGVuY2xvc2luZ0Jsb2NrRmxvdyAhPSBlbmNsb3Np
bmdOb2RlKQogICAgICAgICBzcGxpdEJsb2NrcXVvdGVOb2RlID0gc3BsaXRUcmVlVG9Ob2RlKGVu
Y2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQodmlzaWJsZVN0YXJ0T2ZQYXJhZ3JhcGgpLCBlbmNsb3Np
bmdOb2RlLCB0cnVlKTsKICAgICBSZWZQdHI8Tm9kZT4gcGxhY2Vob2xkZXIgPSBjcmVhdGVCcmVh
a0VsZW1lbnQoZG9jdW1lbnQoKSk7Ci0gICAgaW5zZXJ0Tm9kZUJlZm9yZShwbGFjZWhvbGRlci5n
ZXQoKSwgc3BsaXRCbG9ja3F1b3RlTm9kZS5nZXQoKSk7CisgICAgaW5zZXJ0Tm9kZUJlZm9yZShw
bGFjZWhvbGRlciwgc3BsaXRCbG9ja3F1b3RlTm9kZSk7CiAgICAgbW92ZVBhcmFncmFwaChzdGFy
dE9mUGFyYWdyYXBoKHZpc2libGVTdGFydE9mUGFyYWdyYXBoKSwgZW5kT2ZQYXJhZ3JhcGgodmlz
aWJsZUVuZE9mUGFyYWdyYXBoKSwgVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKHBsYWNlaG9sZGVy
LmdldCgpLCAwKSksIHRydWUpOwogfQogCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0
ZGVudENvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVu
dENvbW1hbmQuaAkocmV2aXNpb24gMzk0NDApCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0
ZGVudENvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgaW5kZW50UmVnaW9uKCk7CiAgICAgdm9pZCBvdXRkZW50UmVnaW9uKCk7CiAgICAg
dm9pZCBvdXRkZW50UGFyYWdyYXBoKCk7Ci0gICAgTm9kZSogcHJlcGFyZUJsb2NrcXVvdGVMZXZl
bEZvckluc2VydGlvbihWaXNpYmxlUG9zaXRpb24mLCBOb2RlKiopOworICAgIFBhc3NSZWZQdHI8
RWxlbWVudD4gcHJlcGFyZUJsb2NrcXVvdGVMZXZlbEZvckluc2VydGlvbihWaXNpYmxlUG9zaXRp
b24mLCBSZWZQdHI8RWxlbWVudD4mKTsKIAogICAgIEVJbmRlbnRUeXBlIG1fdHlwZU9mQWN0aW9u
OwogICAgIGludCBtX21hcmdpbkluUGl4ZWxzOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9J
bnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcAkocmV2aXNpb24gMzk0NDApCisrKyBXZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDI5ICszMCwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUluc2VydEludG9UZXh0
Tm9kZUNvbW1hbmQ6Okluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQoUGFzc1JlZlB0cjxUZXh0PiBu
b2RlLCBpbnQgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQpCitJbnNlcnRJbnRvVGV4dE5vZGVD
b21tYW5kOjpJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kKFBhc3NSZWZQdHI8VGV4dD4gbm9kZSwg
dW5zaWduZWQgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgOiBTaW1wbGVFZGl0Q29t
bWFuZChub2RlLT5kb2N1bWVudCgpKQogICAgICwgbV9ub2RlKG5vZGUpCiAgICAgLCBtX29mZnNl
dChvZmZzZXQpCiAgICAgLCBtX3RleHQodGV4dCkKIHsKICAgICBBU1NFUlQobV9ub2RlKTsKLSAg
ICBBU1NFUlQob2Zmc2V0ID49IDApOwotICAgIEFTU0VSVCghdGV4dC5pc0VtcHR5KCkpOworICAg
IEFTU0VSVChtX29mZnNldCA8PSBtX25vZGUtPmxlbmd0aCgpKTsKKyAgICBBU1NFUlQoIW1fdGV4
dC5pc0VtcHR5KCkpOwogfQogCiB2b2lkIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmRvQXBw
bHkoKQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIEV4Y2VwdGlvbkNvZGUgZWM7
CiAgICAgbV9ub2RlLT5pbnNlcnREYXRhKG1fb2Zmc2V0LCBtX3RleHQsIGVjKTsKLSAgICBBU1NF
UlQoZWMgPT0gMCk7CiB9CiAKIHZvaWQgSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZDo6ZG9VbmFw
cGx5KCkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBFeGNlcHRpb25Db2RlIGVj
OwogICAgIG1fbm9kZS0+ZGVsZXRlRGF0YShtX29mZnNldCwgbV90ZXh0Lmxlbmd0aCgpLCBlYyk7
Ci0gICAgQVNTRVJUKGVjID09IDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmgJKHJldmlzaW9u
IDM5NDQwKQorKysgV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsMTkgKzM0LDE5IEBAIGNsYXNzIFRleHQ7CiAKIGNsYXNzIElu
c2VydEludG9UZXh0Tm9kZUNvbW1hbmQgOiBwdWJsaWMgU2ltcGxlRWRpdENvbW1hbmQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ+IGNy
ZWF0ZShQYXNzUmVmUHRyPFRleHQ+IG5vZGUsIGludCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4
dCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kPiBjcmVh
dGUoUGFzc1JlZlB0cjxUZXh0PiBub2RlLCB1bnNpZ25lZCBvZmZzZXQsIGNvbnN0IFN0cmluZyYg
dGV4dCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zZXJ0SW50b1RleHRO
b2RlQ29tbWFuZChub2RlLCBvZmZzZXQsIHRleHQpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
SW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZChQYXNzUmVmUHRyPFRleHQ+IG5vZGUsIGludCBvZmZz
ZXQsIGNvbnN0IFN0cmluZyYgdGV4dCk7CisgICAgSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZChQ
YXNzUmVmUHRyPFRleHQ+IG5vZGUsIHVuc2lnbmVkIG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZXh0
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCk7CiAgICAgdmlydHVhbCB2b2lkIGRvVW5h
cHBseSgpOwogCiAgICAgUmVmUHRyPFRleHQ+IG1fbm9kZTsKLSAgICBpbnQgbV9vZmZzZXQ7Cisg
ICAgdW5zaWduZWQgbV9vZmZzZXQ7CiAgICAgU3RyaW5nIG1fdGV4dDsKIH07CiAKSW5kZXg6IFdl
YkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAJKHJldmlzaW9uIDM5NDQw
KQorKysgV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MSwyNCArNTEsMjQgQEAgYm9vbCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpw
cmVzZXJ2ZXNUeQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEluc2VydExpbmVCcmVha0Nv
bW1hbmQ6Omluc2VydE5vZGVBZnRlclBvc2l0aW9uKE5vZGUgKm5vZGUsIGNvbnN0IFBvc2l0aW9u
ICZwb3MpCit2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6Omluc2VydE5vZGVBZnRlclBvc2l0
aW9uKE5vZGUqIG5vZGUsIGNvbnN0IFBvc2l0aW9uJiBwb3MpCiB7CiAgICAgLy8gSW5zZXJ0IHRo
ZSBCUiBhZnRlciB0aGUgY2FyZXQgcG9zaXRpb24uIEluIHRoZSBjYXNlIHRoZQogICAgIC8vIHBv
c2l0aW9uIGlzIGEgYmxvY2ssIGRvIGFuIGFwcGVuZC4gV2UgZG9uJ3Qgd2FudCB0byBpbnNlcnQK
ICAgICAvLyB0aGUgQlIgKmFmdGVyKiB0aGUgYmxvY2suCi0gICAgTm9kZSAqY2IgPSBwb3Mubm9k
ZSgpLT5lbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KCk7CisgICAgRWxlbWVudCogY2IgPSBwb3Mu
bm9kZSgpLT5lbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KCk7CiAgICAgaWYgKGNiID09IHBvcy5u
b2RlKCkpCiAgICAgICAgIGFwcGVuZE5vZGUobm9kZSwgY2IpOwogICAgIGVsc2UKICAgICAgICAg
aW5zZXJ0Tm9kZUFmdGVyKG5vZGUsIHBvcy5ub2RlKCkpOwogfQogCi12b2lkIEluc2VydExpbmVC
cmVha0NvbW1hbmQ6Omluc2VydE5vZGVCZWZvcmVQb3NpdGlvbihOb2RlICpub2RlLCBjb25zdCBQ
b3NpdGlvbiAmcG9zKQordm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjppbnNlcnROb2RlQmVm
b3JlUG9zaXRpb24oTm9kZSogbm9kZSwgY29uc3QgUG9zaXRpb24mIHBvcykKIHsKICAgICAvLyBJ
bnNlcnQgdGhlIEJSIGFmdGVyIHRoZSBjYXJldCBwb3NpdGlvbi4gSW4gdGhlIGNhc2UgdGhlCiAg
ICAgLy8gcG9zaXRpb24gaXMgYSBibG9jaywgZG8gYW4gYXBwZW5kLiBXZSBkb24ndCB3YW50IHRv
IGluc2VydAogICAgIC8vIHRoZSBCUiAqYmVmb3JlKiB0aGUgYmxvY2suCi0gICAgTm9kZSAqY2Ig
PSBwb3Mubm9kZSgpLT5lbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KCk7CisgICAgRWxlbWVudCog
Y2IgPSBwb3Mubm9kZSgpLT5lbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KCk7CiAgICAgaWYgKGNi
ID09IHBvcy5ub2RlKCkpCiAgICAgICAgIGFwcGVuZE5vZGUobm9kZSwgY2IpOwogICAgIGVsc2UK
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcAkocmV2aXNpb24gMzk0NDAp
CisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNywxOSArMzcsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCi1QYXNzUmVmUHRyPE5vZGU+IEluc2VydExpc3RDb21tYW5kOjppbnNl
cnRMaXN0KERvY3VtZW50KiBkb2N1bWVudCwgVHlwZSB0eXBlKQorUGFzc1JlZlB0cjxIVE1MRWxl
bWVudD4gSW5zZXJ0TGlzdENvbW1hbmQ6Omluc2VydExpc3QoRG9jdW1lbnQqIGRvY3VtZW50LCBU
eXBlIHR5cGUpCiB7CiAgICAgUmVmUHRyPEluc2VydExpc3RDb21tYW5kPiBpbnNlcnRDb21tYW5k
ID0gbmV3IEluc2VydExpc3RDb21tYW5kKGRvY3VtZW50LCB0eXBlLCAiIik7CiAgICAgaW5zZXJ0
Q29tbWFuZC0+YXBwbHkoKTsKICAgICByZXR1cm4gaW5zZXJ0Q29tbWFuZC0+bV9saXN0RWxlbWVu
dDsKIH0KIAotTm9kZSogSW5zZXJ0TGlzdENvbW1hbmQ6OmZpeE9ycGhhbmVkTGlzdENoaWxkKE5v
ZGUqIG5vZGUpCitIVE1MRWxlbWVudCogSW5zZXJ0TGlzdENvbW1hbmQ6OmZpeE9ycGhhbmVkTGlz
dENoaWxkKE5vZGUqIG5vZGUpCiB7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGxpc3RFbGVtZW50ID0g
Y3JlYXRlVW5vcmRlcmVkTGlzdEVsZW1lbnQoZG9jdW1lbnQoKSk7Ci0gICAgaW5zZXJ0Tm9kZUJl
Zm9yZShsaXN0RWxlbWVudC5nZXQoKSwgbm9kZSk7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBs
aXN0RWxlbWVudCA9IGNyZWF0ZVVub3JkZXJlZExpc3RFbGVtZW50KGRvY3VtZW50KCkpOworICAg
IGluc2VydE5vZGVCZWZvcmUobGlzdEVsZW1lbnQsIG5vZGUpOwogICAgIHJlbW92ZU5vZGUobm9k
ZSk7Ci0gICAgYXBwZW5kTm9kZShub2RlLCBsaXN0RWxlbWVudC5nZXQoKSk7CisgICAgYXBwZW5k
Tm9kZShub2RlLCBsaXN0RWxlbWVudCk7CiAgICAgbV9saXN0RWxlbWVudCA9IGxpc3RFbGVtZW50
OwogICAgIHJldHVybiBsaXN0RWxlbWVudC5nZXQoKTsKIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2
b2lkIEluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5KCkKICAgICBib29sIHN3aXRjaExpc3RUeXBl
ID0gZmFsc2U7CiAgICAgaWYgKGxpc3RDaGlsZE5vZGUpIHsKICAgICAgICAgLy8gUmVtb3ZlIHRo
ZSBsaXN0IGNobGlsZC4KLSAgICAgICAgTm9kZSogbGlzdE5vZGUgPSBlbmNsb3NpbmdMaXN0KGxp
c3RDaGlsZE5vZGUpOworICAgICAgICBIVE1MRWxlbWVudCogbGlzdE5vZGUgPSBlbmNsb3NpbmdM
aXN0KGxpc3RDaGlsZE5vZGUpOwogICAgICAgICBpZiAoIWxpc3ROb2RlKQogICAgICAgICAgICAg
bGlzdE5vZGUgPSBmaXhPcnBoYW5lZExpc3RDaGlsZChsaXN0Q2hpbGROb2RlKTsKICAgICAgICAg
aWYgKCFsaXN0Tm9kZS0+aGFzVGFnTmFtZShsaXN0VGFnKSkKQEAgLTE2OCwxMiArMTY4LDEyIEBA
IHZvaWQgSW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICAvLyBXaGVuIHJlbW92
aW5nIGEgbGlzdCwgd2UgbXVzdCBhbHdheXMgY3JlYXRlIGEgcGxhY2Vob2xkZXIgdG8gYWN0IGFz
IGEgcG9pbnQgb2YgaW5zZXJ0aW9uCiAgICAgICAgIC8vIGZvciB0aGUgbGlzdCBjb250ZW50IGJl
aW5nIHJlbW92ZWQuCiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBwbGFjZWhvbGRlciA9IGNyZWF0
ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKTsKLSAgICAgICAgUmVmUHRyPE5vZGU+IG5vZGVUb0lu
c2VydCA9IHBsYWNlaG9sZGVyOworICAgICAgICBSZWZQdHI8RWxlbWVudD4gbm9kZVRvSW5zZXJ0
ID0gcGxhY2Vob2xkZXI7CiAgICAgICAgIC8vIElmIHRoZSBjb250ZW50IG9mIHRoZSBsaXN0IGl0
ZW0gd2lsbCBiZSBtb3ZlZCBpbnRvIGFub3RoZXIgbGlzdCwgcHV0IGl0IGluIGEgbGlzdCBpdGVt
CiAgICAgICAgIC8vIHNvIHRoYXQgd2UgZG9uJ3QgY3JlYXRlIGFuIG9ycGhhbmVkIGxpc3QgY2hp
bGQuCiAgICAgICAgIGlmIChlbmNsb3NpbmdMaXN0KGxpc3ROb2RlKSkgewogICAgICAgICAgICAg
bm9kZVRvSW5zZXJ0ID0gY3JlYXRlTGlzdEl0ZW1FbGVtZW50KGRvY3VtZW50KCkpOwotICAgICAg
ICAgICAgYXBwZW5kTm9kZShwbGFjZWhvbGRlci5nZXQoKSwgbm9kZVRvSW5zZXJ0LmdldCgpKTsK
KyAgICAgICAgICAgIGFwcGVuZE5vZGUocGxhY2Vob2xkZXIsIG5vZGVUb0luc2VydCk7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChuZXh0TGlzdENoaWxkICYmIHByZXZpb3VzTGlz
dENoaWxkKSB7CkBAIC0xODQsMTggKzE4NCwxOCBAQCB2b2lkIEluc2VydExpc3RDb21tYW5kOjpk
b0FwcGx5KCkKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBhcHBlYXIgdG8gc3BsaXQgYXQgbmV4
dExpc3RDaGlsZCBhcyBvcHBvc2VkIHRvIGxpc3RDaGlsZE5vZGUgc28gdGhhdCB3aGVuIHdlIHJl
bW92ZQogICAgICAgICAgICAgLy8gbGlzdENoaWxkTm9kZSBiZWxvdyBpbiBtb3ZlUGFyYWdyYXBo
cywgcHJldmlvdXNMaXN0Q2hpbGQgd2lsbCBiZSByZW1vdmVkIGFsb25nIHdpdGggaXQgaWYgaXQg
aXMgCiAgICAgICAgICAgICAvLyB1bnJlbmRlcmVkLiBCdXQgd2Ugb3VnaHQgdG8gcmVtb3ZlIG5l
eHRMaXN0Q2hpbGQgdG9vLCBpZiBpdCBpcyB1bnJlbmRlcmVkLgotICAgICAgICAgICAgc3BsaXRF
bGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihsaXN0Tm9kZSksIHNwbGl0VHJlZVRvTm9kZShu
ZXh0TGlzdENoaWxkLCBsaXN0Tm9kZSkuZ2V0KCkpOwotICAgICAgICAgICAgaW5zZXJ0Tm9kZUJl
Zm9yZShub2RlVG9JbnNlcnQuZ2V0KCksIGxpc3ROb2RlKTsKKyAgICAgICAgICAgIHNwbGl0RWxl
bWVudChsaXN0Tm9kZSwgc3BsaXRUcmVlVG9Ob2RlKG5leHRMaXN0Q2hpbGQsIGxpc3ROb2RlKSk7
CisgICAgICAgICAgICBpbnNlcnROb2RlQmVmb3JlKG5vZGVUb0luc2VydCwgbGlzdE5vZGUpOwog
ICAgICAgICB9IGVsc2UgaWYgKG5leHRMaXN0Q2hpbGQgfHwgbGlzdENoaWxkTm9kZS0+cGFyZW50
Tm9kZSgpICE9IGxpc3ROb2RlKSB7CiAgICAgICAgICAgICAvLyBKdXN0IGJlY2F1c2UgbGlzdENo
aWxkTm9kZSBoYXMgbm8gcHJldmlvdXNMaXN0Q2hpbGQgZG9lc24ndCBtZWFuIHRoZXJlIGlzbid0
IGFueSBjb250ZW50CiAgICAgICAgICAgICAvLyBpbiBsaXN0Tm9kZSB0aGF0IGNvbWVzIGJlZm9y
ZSBsaXN0Q2hpbGROb2RlLCBhcyBsaXN0Q2hpbGROb2RlIGNvdWxkIGhhdmUgYW5jZXN0b3JzCiAg
ICAgICAgICAgICAvLyBiZXR3ZWVuIGl0IGFuZCBsaXN0Tm9kZS4gU28sIHdlIHNwbGl0IHVwIHRv
IGxpc3ROb2RlIGJlZm9yZSBpbnNlcnRpbmcgdGhlIHBsYWNlaG9sZGVyCiAgICAgICAgICAgICAv
LyB3aGVyZSB3ZSdyZSBhYm91dCB0byBtb3ZlIGxpc3RDaGlsZE5vZGUgdG8uCiAgICAgICAgICAg
ICBpZiAobGlzdENoaWxkTm9kZS0+cGFyZW50Tm9kZSgpICE9IGxpc3ROb2RlKQotICAgICAgICAg
ICAgICAgIHNwbGl0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50ICo+KGxpc3ROb2RlKSwgc3Bs
aXRUcmVlVG9Ob2RlKGxpc3RDaGlsZE5vZGUsIGxpc3ROb2RlKS5nZXQoKSk7Ci0gICAgICAgICAg
ICBpbnNlcnROb2RlQmVmb3JlKG5vZGVUb0luc2VydC5nZXQoKSwgbGlzdE5vZGUpOworICAgICAg
ICAgICAgICAgIHNwbGl0RWxlbWVudChsaXN0Tm9kZSwgc3BsaXRUcmVlVG9Ob2RlKGxpc3RDaGls
ZE5vZGUsIGxpc3ROb2RlKS5nZXQoKSk7CisgICAgICAgICAgICBpbnNlcnROb2RlQmVmb3JlKG5v
ZGVUb0luc2VydCwgbGlzdE5vZGUpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGluc2Vy
dE5vZGVBZnRlcihub2RlVG9JbnNlcnQuZ2V0KCksIGxpc3ROb2RlKTsKKyAgICAgICAgICAgIGlu
c2VydE5vZGVBZnRlcihub2RlVG9JbnNlcnQsIGxpc3ROb2RlKTsKICAgICAgICAgCiAgICAgICAg
IFZpc2libGVQb3NpdGlvbiBpbnNlcnRpb25Qb2ludCA9IFZpc2libGVQb3NpdGlvbihQb3NpdGlv
bihwbGFjZWhvbGRlci5nZXQoKSwgMCkpOwogICAgICAgICBtb3ZlUGFyYWdyYXBocyhzdGFydCwg
ZW5kLCBpbnNlcnRpb25Qb2ludCwgdHJ1ZSk7CkBAIC0yMDgsMTEgKzIwOCwxMSBAQCB2b2lkIElu
c2VydExpc3RDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgLy8gQ2hlY2sgZm9yIGFkam9pbmlu
ZyBsaXN0cy4KICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzUG9zaXRpb24gPSBzdGFy
dC5wcmV2aW91cyh0cnVlKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQb3NpdGlvbiA9
IGVuZC5uZXh0KHRydWUpOwotICAgICAgICBSZWZQdHI8RWxlbWVudD4gbGlzdEl0ZW1FbGVtZW50
ID0gY3JlYXRlTGlzdEl0ZW1FbGVtZW50KGRvY3VtZW50KCkpOwotICAgICAgICBSZWZQdHI8RWxl
bWVudD4gcGxhY2Vob2xkZXIgPSBjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSk7Ci0gICAg
ICAgIGFwcGVuZE5vZGUocGxhY2Vob2xkZXIuZ2V0KCksIGxpc3RJdGVtRWxlbWVudC5nZXQoKSk7
Ci0gICAgICAgIE5vZGUqIHByZXZpb3VzTGlzdCA9IG91dGVybW9zdEVuY2xvc2luZ0xpc3QocHJl
dmlvdXNQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKSk7Ci0gICAgICAgIE5vZGUqIG5l
eHRMaXN0ID0gb3V0ZXJtb3N0RW5jbG9zaW5nTGlzdChuZXh0UG9zaXRpb24uZGVlcEVxdWl2YWxl
bnQoKS5ub2RlKCkpOworICAgICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGxpc3RJdGVtRWxlbWVu
dCA9IGNyZWF0ZUxpc3RJdGVtRWxlbWVudChkb2N1bWVudCgpKTsKKyAgICAgICAgUmVmUHRyPEhU
TUxFbGVtZW50PiBwbGFjZWhvbGRlciA9IGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKTsK
KyAgICAgICAgYXBwZW5kTm9kZShwbGFjZWhvbGRlciwgbGlzdEl0ZW1FbGVtZW50KTsKKyAgICAg
ICAgRWxlbWVudCogcHJldmlvdXNMaXN0ID0gb3V0ZXJtb3N0RW5jbG9zaW5nTGlzdChwcmV2aW91
c1Bvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKTsKKyAgICAgICAgRWxlbWVudCogbmV4
dExpc3QgPSBvdXRlcm1vc3RFbmNsb3NpbmdMaXN0KG5leHRQb3NpdGlvbi5kZWVwRXF1aXZhbGVu
dCgpLm5vZGUoKSk7CiAgICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHN0YXJ0LmRlZXBFcXVpdmFs
ZW50KCkubm9kZSgpOwogICAgICAgICBOb2RlKiBwcmV2aW91c0NlbGwgPSBlbmNsb3NpbmdUYWJs
ZUNlbGwocHJldmlvdXNQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKICAgICAgICAgTm9kZSog
bmV4dENlbGwgPSBlbmNsb3NpbmdUYWJsZUNlbGwobmV4dFBvc2l0aW9uLmRlZXBFcXVpdmFsZW50
KCkpOwpAQCAtMjIzLDE2ICsyMjMsMTYgQEAgdm9pZCBJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBs
eSgpCiAgICAgICAgICAgICBuZXh0TGlzdCA9IDA7CiAgICAgICAgIC8vIFBsYWNlIGxpc3QgaXRl
bSBpbnRvIGFkam9pbmluZyBsaXN0cy4KICAgICAgICAgaWYgKHByZXZpb3VzTGlzdCkKLSAgICAg
ICAgICAgIGFwcGVuZE5vZGUobGlzdEl0ZW1FbGVtZW50LmdldCgpLCBwcmV2aW91c0xpc3QpOwor
ICAgICAgICAgICAgYXBwZW5kTm9kZShsaXN0SXRlbUVsZW1lbnQsIHByZXZpb3VzTGlzdCk7CiAg
ICAgICAgIGVsc2UgaWYgKG5leHRMaXN0KQotICAgICAgICAgICAgaW5zZXJ0Tm9kZUF0KGxpc3RJ
dGVtRWxlbWVudC5nZXQoKSwgUG9zaXRpb24obmV4dExpc3QsIDApKTsKKyAgICAgICAgICAgIGlu
c2VydE5vZGVBdChsaXN0SXRlbUVsZW1lbnQsIFBvc2l0aW9uKG5leHRMaXN0LCAwKSk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBsaXN0LgotICAgICAgICAgICAg
UmVmUHRyPEVsZW1lbnQ+IGxpc3RFbGVtZW50ID0gbV90eXBlID09IE9yZGVyZWRMaXN0ID8gY3Jl
YXRlT3JkZXJlZExpc3RFbGVtZW50KGRvY3VtZW50KCkpIDogY3JlYXRlVW5vcmRlcmVkTGlzdEVs
ZW1lbnQoZG9jdW1lbnQoKSk7CisgICAgICAgICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGxpc3RF
bGVtZW50ID0gbV90eXBlID09IE9yZGVyZWRMaXN0ID8gY3JlYXRlT3JkZXJlZExpc3RFbGVtZW50
KGRvY3VtZW50KCkpIDogY3JlYXRlVW5vcmRlcmVkTGlzdEVsZW1lbnQoZG9jdW1lbnQoKSk7CiAg
ICAgICAgICAgICBtX2xpc3RFbGVtZW50ID0gbGlzdEVsZW1lbnQ7CiAgICAgICAgICAgICBpZiAo
IW1faWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxFbGVtZW50
Kj4obGlzdEVsZW1lbnQuZ2V0KCkpLT5zZXRJZChtX2lkKTsKLSAgICAgICAgICAgIGFwcGVuZE5v
ZGUobGlzdEl0ZW1FbGVtZW50LmdldCgpLCBsaXN0RWxlbWVudC5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgbGlzdEVsZW1lbnQtPnNldElkKG1faWQpOworICAgICAgICAgICAgYXBwZW5kTm9kZShs
aXN0SXRlbUVsZW1lbnQsIGxpc3RFbGVtZW50KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKHN0YXJ0ID09IGVuZCAmJiBpc0Jsb2NrKHN0YXJ0LmRlZXBFcXVpdmFsZW50KCkubm9kZSgp
KSkgewogICAgICAgICAgICAgICAgIC8vIEluc2VydGluZyB0aGUgbGlzdCBpbnRvIGFuIGVtcHR5
IHBhcmFncmFwaCB0aGF0IGlzbid0IGhlbGQgb3BlbiAKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lk
IEluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgICAgIGlmIChsaXN0Q2hpbGQg
JiYgbGlzdENoaWxkLT5oYXNUYWdOYW1lKGxpVGFnKSkKICAgICAgICAgICAgICAgICBpbnNlcnRp
b25Qb3MgPSBwb3NpdGlvbkJlZm9yZU5vZGUobGlzdENoaWxkKTsKICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGluc2VydE5vZGVBdChsaXN0RWxlbWVudC5nZXQoKSwgaW5zZXJ0aW9uUG9z
KTsKKyAgICAgICAgICAgIGluc2VydE5vZGVBdChsaXN0RWxlbWVudCwgaW5zZXJ0aW9uUG9zKTsK
ICAgICAgICAgfQogICAgICAgICBtb3ZlUGFyYWdyYXBoKHN0YXJ0LCBlbmQsIFZpc2libGVQb3Np
dGlvbihQb3NpdGlvbihwbGFjZWhvbGRlci5nZXQoKSwgMCkpLCB0cnVlKTsKICAgICAgICAgaWYg
KG5leHRMaXN0ICYmIHByZXZpb3VzTGlzdCkKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRM
aXN0Q29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29t
bWFuZC5oCShyZXZpc2lvbiAzOTQ0MCkKKysrIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29t
bWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw4IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgSFRNTEVsZW1lbnQ7CisKIGNsYXNzIEluc2VydExpc3RDb21tYW5kIDog
cHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kIHsKIHB1YmxpYzoKICAgICBlbnVtIFR5cGUgeyBP
cmRlcmVkTGlzdCwgVW5vcmRlcmVkTGlzdCB9OwpAQCAtMzksNyArNDEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zZXJ0TGlzdENvbW1hbmQoZG9jdW1lbnQsIGxp
c3RUeXBlLCBsaXN0SUQpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb2RlPiBp
bnNlcnRMaXN0KERvY3VtZW50KiwgVHlwZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEVs
ZW1lbnQ+IGluc2VydExpc3QoRG9jdW1lbnQqLCBUeXBlKTsKICAgICAKICAgICB2aXJ0dWFsIGJv
b2wgcHJlc2VydmVzVHlwaW5nU3R5bGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTQ5
LDkgKzUxLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOwogICAgIHZp
cnR1YWwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gRWRpdEFjdGlv
bkluc2VydExpc3Q7IH0KIAotICAgIE5vZGUqIGZpeE9ycGhhbmVkTGlzdENoaWxkKE5vZGUqKTsK
KyAgICBIVE1MRWxlbWVudCogZml4T3JwaGFuZWRMaXN0Q2hpbGQoTm9kZSopOwogICAgIGJvb2wg
bW9kaWZ5UmFuZ2UoKTsKLSAgICBSZWZQdHI8Tm9kZT4gbV9saXN0RWxlbWVudDsKKyAgICBSZWZQ
dHI8SFRNTEVsZW1lbnQ+IG1fbGlzdEVsZW1lbnQ7CiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3Ry
aW5nIG1faWQ7CiAgICAgYm9vbCBtX2ZvcmNlQ3JlYXRlTGlzdDsKSW5kZXg6IFdlYkNvcmUvZWRp
dGluZy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9l
ZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcAkocmV2aXNpb24gMzk0NDApCisrKyBX
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwOCBBcHBsZSBD
b21wdXRlciwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1
LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzEsMzYgKzMxLDMyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IEluc2VydE5vZGVCZWZvcmVDb21tYW5kOjpJbnNlcnROb2RlQmVmb3JlQ29tbWFuZChQYXNzUmVm
UHRyPE5vZGU+IGluc2VydENoaWxkLCBQYXNzUmVmUHRyPE5vZGU+IHJlZkNoaWxkKQotICAgIDog
U2ltcGxlRWRpdENvbW1hbmQocmVmQ2hpbGQtPmRvY3VtZW50KCkpLCBtX2luc2VydENoaWxkKGlu
c2VydENoaWxkKSwgbV9yZWZDaGlsZChyZWZDaGlsZCkKKyAgICA6IFNpbXBsZUVkaXRDb21tYW5k
KHJlZkNoaWxkLT5kb2N1bWVudCgpKQorICAgICwgbV9pbnNlcnRDaGlsZChpbnNlcnRDaGlsZCkK
KyAgICAsIG1fcmVmQ2hpbGQocmVmQ2hpbGQpCiB7CiAgICAgQVNTRVJUKG1faW5zZXJ0Q2hpbGQp
OworICAgIEFTU0VSVCghbV9pbnNlcnRDaGlsZC0+cGFyZW50Tm9kZSgpKTsKICAgICBBU1NFUlQo
bV9yZWZDaGlsZCk7CisgICAgQVNTRVJUKG1fcmVmQ2hpbGQtPnBhcmVudE5vZGUoKSk7CisKKyAg
ICBBU1NFUlQoZW5jbG9zaW5nTm9kZU9mVHlwZShQb3NpdGlvbihtX3JlZkNoaWxkLT5wYXJlbnRO
b2RlKCksIDApLCBpc0NvbnRlbnRFZGl0YWJsZSkgfHwgIW1fcmVmQ2hpbGQtPnBhcmVudE5vZGUo
KS0+YXR0YWNoZWQoKSk7CiB9CiAKIHZvaWQgSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQ6OmRvQXBw
bHkoKQogewotICAgIEFTU0VSVChtX2luc2VydENoaWxkKTsKLSAgICBBU1NFUlQobV9yZWZDaGls
ZCk7Ci0gICAgQVNTRVJUKG1fcmVmQ2hpbGQtPnBhcmVudE5vZGUoKSk7Ci0gICAgLy8gSWYgdGhl
IGNoaWxkIHRvIGluc2VydCBpcyBhbHJlYWR5IGluIGEgdHJlZSwgaW5zZXJ0aW5nIGl0IHdpbGwg
cmVtb3ZlIGl0IGZyb20gaXQncyBvbGQgbG9jYXRpb24KLSAgICAvLyBpbiBhbiBub24tdW5kb2Fi
bGUgd2F5LiAgV2UgbWlnaHQgZXZlbnR1YWxseSBmaW5kIGl0IHVzZWZ1bCB0byBkbyBhbiB1bmRv
YWJsZSByZW1vdmUgaW4gdGhpcyBjYXNlLgotICAgIEFTU0VSVCghbV9pbnNlcnRDaGlsZC0+cGFy
ZW50KCkpOwotICAgIEFTU0VSVChlbmNsb3NpbmdOb2RlT2ZUeXBlKFBvc2l0aW9uKG1fcmVmQ2hp
bGQtPnBhcmVudE5vZGUoKSwgMCksICZpc0NvbnRlbnRFZGl0YWJsZSkgfHwgIW1fcmVmQ2hpbGQt
PnBhcmVudE5vZGUoKS0+YXR0YWNoZWQoKSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBtX3JlZkNoaWxkLT5wYXJlbnROb2RlKCktPmluc2VydEJlZm9yZShtX2luc2VydENoaWxk
LmdldCgpLCBtX3JlZkNoaWxkLmdldCgpLCBlYyk7Ci0gICAgQVNTRVJUKGVjID09IDApOworICAg
IE5vZGUqIHBhcmVudCA9IG1fcmVmQ2hpbGQtPnBhcmVudE5vZGUoKTsKKyAgICBpZiAoIXBhcmVu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBwYXJlbnQt
Pmluc2VydEJlZm9yZShtX2luc2VydENoaWxkLmdldCgpLCBtX3JlZkNoaWxkLmdldCgpLCBlYyk7
CiB9CiAKIHZvaWQgSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiB7Ci0gICAg
QVNTRVJUKG1faW5zZXJ0Q2hpbGQpOwotICAgIEFTU0VSVChtX3JlZkNoaWxkKTsKLSAgICBBU1NF
UlQobV9yZWZDaGlsZC0+cGFyZW50Tm9kZSgpKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIG1fcmVmQ2hpbGQtPnBhcmVudE5vZGUoKS0+cmVtb3ZlQ2hpbGQobV9pbnNlcnRDaGls
ZC5nZXQoKSwgZWMpOwotICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICBFeGNlcHRpb25Db2RlIGVj
OworICAgIG1faW5zZXJ0Q2hpbGQtPnJlbW92ZShlYyk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUv
ZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAJKHJl
dmlzaW9uIDM5NDQwKQorKysgV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRv
ckNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMTMgKzExOSwxNiBAQCB2b2lkIElu
c2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvCiAgICAgfQogICAgIAogICAgIC8vIEZJ
WE1FOiBUaGUgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50IGNvbnZlcnNpb24gbmVlZHMgdG8gYmUg
bW92ZWQgaW50byBlbmNsb3NpbmdCbG9jay4KLSAgICBOb2RlKiBzdGFydEJsb2NrID0gZW5jbG9z
aW5nQmxvY2socmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHBvcykubm9kZSgpKTsKKyAgICBOb2Rl
KiBzdGFydEJsb2NrTm9kZSA9IGVuY2xvc2luZ0Jsb2NrKHJhbmdlQ29tcGxpYW50RXF1aXZhbGVu
dChwb3MpLm5vZGUoKSk7CiAgICAgUG9zaXRpb24gY2Fub25pY2FsUG9zID0gVmlzaWJsZVBvc2l0
aW9uKHBvcykuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICBpZiAoIXN0YXJ0QmxvY2sgfHwgIXN0YXJ0
QmxvY2stPnBhcmVudE5vZGUoKSB8fCAKLSAgICAgICAgaXNUYWJsZUNlbGwoc3RhcnRCbG9jaykg
fHwKLSAgICAgICAgc3RhcnRCbG9jay0+aGFzVGFnTmFtZShmb3JtVGFnKSB8fCAKLSAgICAgICAg
Y2Fub25pY2FsUG9zLm5vZGUoKS0+cmVuZGVyZXIoKSAmJiBjYW5vbmljYWxQb3Mubm9kZSgpLT5y
ZW5kZXJlcigpLT5pc1RhYmxlKCkgfHwKLSAgICAgICAgY2Fub25pY2FsUG9zLm5vZGUoKS0+aGFz
VGFnTmFtZShoclRhZykpIHsKKyAgICBFbGVtZW50KiBzdGFydEJsb2NrID0gc3RhdGljX2Nhc3Q8
RWxlbWVudCo+KHN0YXJ0QmxvY2tOb2RlKTsKKyAgICBpZiAoIXN0YXJ0QmxvY2tOb2RlCisgICAg
ICAgICAgICB8fCAhc3RhcnRCbG9ja05vZGUtPmlzRWxlbWVudE5vZGUoKQorICAgICAgICAgICAg
fHwgIXN0YXJ0QmxvY2stPnBhcmVudE5vZGUoKQorICAgICAgICAgICAgfHwgaXNUYWJsZUNlbGwo
c3RhcnRCbG9jaykKKyAgICAgICAgICAgIHx8IHN0YXJ0QmxvY2stPmhhc1RhZ05hbWUoZm9ybVRh
ZykKKyAgICAgICAgICAgIHx8IGNhbm9uaWNhbFBvcy5ub2RlKCktPnJlbmRlcmVyKCkgJiYgY2Fu
b25pY2FsUG9zLm5vZGUoKS0+cmVuZGVyZXIoKS0+aXNUYWJsZSgpCisgICAgICAgICAgICB8fCBj
YW5vbmljYWxQb3Mubm9kZSgpLT5oYXNUYWdOYW1lKGhyVGFnKSkgewogICAgICAgICBhcHBseUNv
bW1hbmRUb0NvbXBvc2l0ZShJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQo
KSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTU3LDE0ICsxNjAsMTQgQEAgdm9pZCBJ
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkbwogICAgIGJvb2wgbmVzdE5ld0Jsb2Nr
ID0gZmFsc2U7CiAKICAgICAvLyBDcmVhdGUgYmxvY2sgdG8gYmUgaW5zZXJ0ZWQuCi0gICAgUmVm
UHRyPE5vZGU+IGJsb2NrVG9JbnNlcnQ7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGJsb2NrVG9JbnNl
cnQ7CiAgICAgaWYgKHN0YXJ0QmxvY2sgPT0gc3RhcnRCbG9jay0+cm9vdEVkaXRhYmxlRWxlbWVu
dCgpKSB7Ci0gICAgICAgIGJsb2NrVG9JbnNlcnQgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PE5vZGU+
KGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KCkpKTsKKyAgICAgICAgYmxv
Y2tUb0luc2VydCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KCkpOwog
ICAgICAgICBuZXN0TmV3QmxvY2sgPSB0cnVlOwogICAgIH0gZWxzZSBpZiAoc2hvdWxkVXNlRGVm
YXVsdFBhcmFncmFwaEVsZW1lbnQoc3RhcnRCbG9jaykpIAotICAgICAgICBibG9ja1RvSW5zZXJ0
ID0gc3RhdGljX3BvaW50ZXJfY2FzdDxOb2RlPihjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVu
dChkb2N1bWVudCgpKSk7CisgICAgICAgIGJsb2NrVG9JbnNlcnQgPSBjcmVhdGVEZWZhdWx0UGFy
YWdyYXBoRWxlbWVudChkb2N1bWVudCgpKTsKICAgICBlbHNlCi0gICAgICAgIGJsb2NrVG9JbnNl
cnQgPSBzdGFydEJsb2NrLT5jbG9uZU5vZGUoZmFsc2UpOworICAgICAgICBibG9ja1RvSW5zZXJ0
ID0gc3RhcnRCbG9jay0+Y2xvbmVFbGVtZW50KCk7CiAgICAgCiAgICAgLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ICAgICAvLyBIYW5kbGUgY2FzZSB3aGVuIHBvc2l0aW9uIGlzIGluIHRoZSBsYXN0IHZpc2libGUg
cG9zaXRpb24gaW4gaXRzIGJsb2NrLApAQCAtMTc0LDE1ICsxNzcsMTUgQEAgdm9pZCBJbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkbwogICAgICAgICAgICAgaWYgKGlzRmlyc3RJbkJs
b2NrICYmICFsaW5lQnJlYWtFeGlzdHNBdFBvc2l0aW9uKHZpc2libGVQb3MpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gVGhlIGJsb2NrIGlzIGVtcHR5LiAgQ3JlYXRlIGFuIGVtcHR5IGJsb2NrIHRv
CiAgICAgICAgICAgICAgICAgLy8gcmVwcmVzZW50IHRoZSBwYXJhZ3JhcGggdGhhdCB3ZSdyZSBs
ZWF2aW5nLgotICAgICAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBleHRyYUJsb2NrID0gY3JlYXRl
RGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICAgICAgYXBw
ZW5kTm9kZShleHRyYUJsb2NrLmdldCgpLCBzdGFydEJsb2NrKTsKLSAgICAgICAgICAgICAgICBh
cHBlbmRCbG9ja1BsYWNlaG9sZGVyKGV4dHJhQmxvY2suZ2V0KCkpOworICAgICAgICAgICAgICAg
IFJlZlB0cjxFbGVtZW50PiBleHRyYUJsb2NrID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1l
bnQoZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kTm9kZShleHRyYUJsb2NrLCBz
dGFydEJsb2NrKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRCbG9ja1BsYWNlaG9sZGVyKGV4dHJh
QmxvY2spOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXBwZW5kTm9kZShibG9ja1RvSW5z
ZXJ0LmdldCgpLCBzdGFydEJsb2NrKTsKKyAgICAgICAgICAgIGFwcGVuZE5vZGUoYmxvY2tUb0lu
c2VydCwgc3RhcnRCbG9jayk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaW5zZXJ0Tm9k
ZUFmdGVyKGJsb2NrVG9JbnNlcnQuZ2V0KCksIHN0YXJ0QmxvY2spOworICAgICAgICAgICAgaW5z
ZXJ0Tm9kZUFmdGVyKGJsb2NrVG9JbnNlcnQsIHN0YXJ0QmxvY2spOwogCi0gICAgICAgIGFwcGVu
ZEJsb2NrUGxhY2Vob2xkZXIoYmxvY2tUb0luc2VydC5nZXQoKSk7CisgICAgICAgIGFwcGVuZEJs
b2NrUGxhY2Vob2xkZXIoYmxvY2tUb0luc2VydCk7CiAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlv
bihTZWxlY3Rpb24oUG9zaXRpb24oYmxvY2tUb0luc2VydC5nZXQoKSwgMCksIERPV05TVFJFQU0p
KTsKICAgICAgICAgYXBwbHlTdHlsZUFmdGVySW5zZXJ0aW9uKHN0YXJ0QmxvY2spOwogICAgICAg
ICByZXR1cm47CkBAIC0yMzEsMTAgKzIzNCwxMSBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFy
YXRvckNvbW1hbmQ6OmRvCiAgICAgc3RhcnROb2RlID0gcG9zLm5vZGUoKTsKIAogICAgIC8vIEJ1
aWxkIHVwIGxpc3Qgb2YgYW5jZXN0b3JzIGluIGJldHdlZW4gdGhlIHN0YXJ0IG5vZGUgYW5kIHRo
ZSBzdGFydCBibG9jay4KLSAgICBWZWN0b3I8Tm9kZSo+IGFuY2VzdG9yczsKLSAgICBpZiAoc3Rh
cnROb2RlICE9IHN0YXJ0QmxvY2spCi0gICAgICAgIGZvciAoTm9kZSogbiA9IHN0YXJ0Tm9kZS0+
cGFyZW50Tm9kZSgpOyBuICYmIG4gIT0gc3RhcnRCbG9jazsgbiA9IG4tPnBhcmVudE5vZGUoKSkK
KyAgICBWZWN0b3I8RWxlbWVudCo+IGFuY2VzdG9yczsKKyAgICBpZiAoc3RhcnROb2RlICE9IHN0
YXJ0QmxvY2spIHsKKyAgICAgICAgZm9yIChFbGVtZW50KiBuID0gc3RhcnROb2RlLT5wYXJlbnRF
bGVtZW50KCk7IG4gJiYgbiAhPSBzdGFydEJsb2NrOyBuID0gbi0+cGFyZW50RWxlbWVudCgpKQog
ICAgICAgICAgICAgYW5jZXN0b3JzLmFwcGVuZChuKTsKKyAgICB9CiAKICAgICAvLyBNYWtlIHN1
cmUgd2UgZG8gbm90IGNhdXNlIGEgcmVuZGVyZWQgc3BhY2UgdG8gYmVjb21lIHVucmVuZGVyZWQu
CiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdGhlIGFmZmluaXR5IGZvciBwb3MsIGJ1dCBwb3MuZG93
bnN0cmVhbSgpIGRvZXMgbm90IGdpdmUgaXQKQEAgLTI2OCwxMCArMjcyLDEwIEBAIHZvaWQgSW5z
ZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG8KICAgICB1cGRhdGVMYXlvdXQoKTsKICAg
ICAKICAgICAvLyBNYWtlIGNsb25lcyBvZiBhbmNlc3RvcnMgaW4gYmV0d2VlbiB0aGUgc3RhcnQg
bm9kZSBhbmQgdGhlIHN0YXJ0IGJsb2NrLgotICAgIFJlZlB0cjxOb2RlPiBwYXJlbnQgPSBibG9j
a1RvSW5zZXJ0OworICAgIFJlZlB0cjxFbGVtZW50PiBwYXJlbnQgPSBibG9ja1RvSW5zZXJ0Owog
ICAgIGZvciAoc2l6ZV90IGkgPSBhbmNlc3RvcnMuc2l6ZSgpOyBpICE9IDA7IC0taSkgewotICAg
ICAgICBSZWZQdHI8Tm9kZT4gY2hpbGQgPSBhbmNlc3RvcnNbaSAtIDFdLT5jbG9uZU5vZGUoZmFs
c2UpOyAvLyBzaGFsbG93IGNsb25lCi0gICAgICAgIGFwcGVuZE5vZGUoY2hpbGQuZ2V0KCksIHBh
cmVudC5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBjaGlsZCA9IGFuY2VzdG9yc1tp
IC0gMV0tPmNsb25lRWxlbWVudCgpOyAvLyBzaGFsbG93IGNsb25lCisgICAgICAgIGFwcGVuZE5v
ZGUoY2hpbGQsIHBhcmVudCk7CiAgICAgICAgIHBhcmVudCA9IGNoaWxkLnJlbGVhc2UoKTsKICAg
ICB9CiAKQEAgLTI5Nyw5ICszMDEsMTEgQEAgdm9pZCBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JD
b21tYW5kOjpkbwogCiAgICAgLy8gTW92ZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBzdGFydCBub2Rl
LgogICAgIGlmICghYW5jZXN0b3JzLmlzRW1wdHkoKSkgewotICAgICAgICBOb2RlKiBsZWZ0UGFy
ZW50ID0gYW5jZXN0b3JzLmZpcnN0KCk7CisgICAgICAgIEVsZW1lbnQqIGxlZnRQYXJlbnQgPSBh
bmNlc3RvcnMuZmlyc3QoKTsKICAgICAgICAgd2hpbGUgKGxlZnRQYXJlbnQgJiYgbGVmdFBhcmVu
dCAhPSBzdGFydEJsb2NrKSB7Ci0gICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE5v
ZGUoKTsKKyAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50RWxlbWVudCgpOworICAg
ICAgICAgICAgaWYgKCFwYXJlbnQpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBOb2RlKiBuID0gbGVmdFBhcmVudC0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgICAgIHdoaWxl
IChuICYmIG4gIT0gYmxvY2tUb0luc2VydCkgewogICAgICAgICAgICAgICAgIE5vZGUqIG5leHQg
PSBuLT5uZXh0U2libGluZygpOwpAQCAtMzA3LDcgKzMxMyw3IEBAIHZvaWQgSW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG8KICAgICAgICAgICAgICAgICBhcHBlbmROb2RlKG4sIHBh
cmVudC5nZXQoKSk7CiAgICAgICAgICAgICAgICAgbiA9IG5leHQ7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBsZWZ0UGFyZW50ID0gbGVmdFBhcmVudC0+cGFyZW50Tm9kZSgpOworICAgICAg
ICAgICAgbGVmdFBhcmVudCA9IGxlZnRQYXJlbnQtPnBhcmVudEVsZW1lbnQoKTsKICAgICAgICAg
fQogICAgIH0KIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0pvaW5UZXh0Tm9kZXNDb21tYW5kLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSm9pblRleHROb2Rlc0NvbW1hbmQuY3Bw
CShyZXZpc2lvbiAzOTQ0MCkKKysrIFdlYkNvcmUvZWRpdGluZy9Kb2luVGV4dE5vZGVzQ29tbWFu
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDM1ICs0MiwzMyBAQCBKb2luVGV4dE5vZGVzQ29t
bWFuZDo6Sm9pblRleHROb2Rlc0NvbW1hCiAKIHZvaWQgSm9pblRleHROb2Rlc0NvbW1hbmQ6OmRv
QXBwbHkoKQogewotICAgIEFTU0VSVChtX3RleHQxKTsKLSAgICBBU1NFUlQobV90ZXh0Mik7Ci0g
ICAgQVNTRVJUKG1fdGV4dDEtPm5leHRTaWJsaW5nKCkgPT0gbV90ZXh0Mik7CisgICAgaWYgKG1f
dGV4dDEtPm5leHRTaWJsaW5nKCkgIT0gbV90ZXh0MikKKyAgICAgICAgcmV0dXJuOwogCiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgbV90ZXh0Mi0+aW5zZXJ0RGF0YSgwLCBtX3RleHQx
LT5kYXRhKCksIGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgaWYgKGVjKQorICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3RleHQyLT5wYXJlbnROb2RlKCktPnJlbW92ZUNoaWxkKG1fdGV4
dDEuZ2V0KCksIGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7Ci0KLSAgICBtX29mZnNldCA9IG1f
dGV4dDEtPmxlbmd0aCgpOworICAgIG1fdGV4dDEtPnJlbW92ZShlYyk7CiB9CiAKIHZvaWQgSm9p
blRleHROb2Rlc0NvbW1hbmQ6OmRvVW5hcHBseSgpCiB7Ci0gICAgQVNTRVJUKG1fdGV4dDIpOwot
ICAgIEFTU0VSVChtX29mZnNldCA+IDApOworICAgIGlmIChtX3RleHQxLT5wYXJlbnROb2RlKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIE5vZGUqIHBhcmVudCA9IG1fdGV4dDItPnBhcmVudE5v
ZGUoKTsKKyAgICBpZiAoIXBhcmVudCkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAKLSAgICBtX3RleHQyLT5kZWxldGVEYXRhKDAsIG1fb2Zmc2V0LCBlYyk7
Ci0gICAgQVNTRVJUKGVjID09IDApOworICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKG1fdGV4dDEu
Z2V0KCksIG1fdGV4dDIuZ2V0KCksIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybjsK
IAotICAgIG1fdGV4dDItPnBhcmVudE5vZGUoKS0+aW5zZXJ0QmVmb3JlKG1fdGV4dDEuZ2V0KCks
IG1fdGV4dDIuZ2V0KCksIGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7Ci0gICAgICAgIAotICAg
IEFTU0VSVChtX3RleHQyLT5wcmV2aW91c1NpYmxpbmcoKS0+aXNUZXh0Tm9kZSgpKTsKLSAgICBB
U1NFUlQobV90ZXh0Mi0+cHJldmlvdXNTaWJsaW5nKCkgPT0gbV90ZXh0MSk7CisgICAgbV90ZXh0
Mi0+ZGVsZXRlRGF0YSgwLCBtX3RleHQxLT5sZW5ndGgoKSwgZWMpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvSm9pblRleHROb2Rlc0NvbW1hbmQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSm9pblRleHROb2Rlc0NvbW1hbmQuaAko
cmV2aXNpb24gMzk0NDApCisrKyBXZWJDb3JlL2VkaXRpbmcvSm9pblRleHROb2Rlc0NvbW1hbmQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRy
PFRleHQ+IG1fdGV4dDE7CiAgICAgUmVmUHRyPFRleHQ+IG1fdGV4dDI7Ci0gICAgdW5zaWduZWQg
bV9vZmZzZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Vk
aXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHAJKHJldmlzaW9u
IDM5NDQwKQorKysgV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5k
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMzAgKzMxLDMzIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpNZXJnZUlkZW50aWNhbEVsZW1l
bnRzQ29tbWFuZChQYXNzUmVmUHRyPEVsZW1lbnQ+IGZpcnN0LCBQYXNzUmVmUHRyPEVsZW1lbnQ+
IHNlY29uZCkKLSAgICA6IFNpbXBsZUVkaXRDb21tYW5kKGZpcnN0LT5kb2N1bWVudCgpKSwgbV9l
bGVtZW50MShmaXJzdCksIG1fZWxlbWVudDIoc2Vjb25kKQorICAgIDogU2ltcGxlRWRpdENvbW1h
bmQoZmlyc3QtPmRvY3VtZW50KCkpCisgICAgLCBtX2VsZW1lbnQxKGZpcnN0KQorICAgICwgbV9l
bGVtZW50MihzZWNvbmQpCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudDEpOwogICAgIEFTU0VSVCht
X2VsZW1lbnQyKTsKKyAgICBBU1NFUlQobV9lbGVtZW50MS0+bmV4dFNpYmxpbmcoKSA9PSBtX2Vs
ZW1lbnQyKTsKIH0KIAogdm9pZCBNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZDo6ZG9BcHBs
eSgpCiB7Ci0gICAgQVNTRVJUKG1fZWxlbWVudDEpOwotICAgIEFTU0VSVChtX2VsZW1lbnQyKTsK
LSAgICBBU1NFUlQobV9lbGVtZW50MS0+bmV4dFNpYmxpbmcoKSA9PSBtX2VsZW1lbnQyKTsKLSAg
ICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpZiAobV9lbGVtZW50MS0+bmV4dFNp
YmxpbmcoKSAhPSBtX2VsZW1lbnQyKQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fYXRD
aGlsZCkKLSAgICAgICAgbV9hdENoaWxkID0gbV9lbGVtZW50Mi0+Zmlyc3RDaGlsZCgpOworICAg
IG1fYXRDaGlsZCA9IG1fZWxlbWVudDItPmZpcnN0Q2hpbGQoKTsKIAotICAgIHdoaWxlIChtX2Vs
ZW1lbnQxLT5sYXN0Q2hpbGQoKSkgewotICAgICAgICBtX2VsZW1lbnQyLT5pbnNlcnRCZWZvcmUo
bV9lbGVtZW50MS0+bGFzdENoaWxkKCksIG1fZWxlbWVudDItPmZpcnN0Q2hpbGQoKSwgZWMpOwot
ICAgICAgICBBU1NFUlQoZWMgPT0gMCk7Ci0gICAgfQorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworCisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IGNoaWxkcmVuOworICAgIGZvciAoTm9kZSog
Y2hpbGQgPSBtX2VsZW1lbnQxLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKQorICAgICAgICBjaGlsZHJlbi5hcHBlbmQoY2hpbGQpOworCisgICAgc2l6
ZV90IHNpemUgPSBjaGlsZHJlbi5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyArK2kpCisgICAgICAgIG1fZWxlbWVudDItPmluc2VydEJlZm9yZShjaGlsZHJlbltpXS5y
ZWxlYXNlKCksIG1fYXRDaGlsZC5nZXQoKSwgZWMpOwogCi0gICAgbV9lbGVtZW50Mi0+cGFyZW50
Tm9kZSgpLT5yZW1vdmVDaGlsZChtX2VsZW1lbnQxLmdldCgpLCBlYyk7Ci0gICAgQVNTRVJUKGVj
ID09IDApOworICAgIG1fZWxlbWVudDEtPnJlbW92ZShlYyk7CiB9CiAKIHZvaWQgTWVyZ2VJZGVu
dGljYWxFbGVtZW50c0NvbW1hbmQ6OmRvVW5hcHBseSgpCkBAIC02MiwxNiArNjUsMjUgQEAgdm9p
ZCBNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZDo6ZG9VbgogICAgIEFTU0VSVChtX2VsZW1l
bnQxKTsKICAgICBBU1NFUlQobV9lbGVtZW50Mik7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICBSZWZQdHI8Tm9kZT4gYXRDaGlsZCA9IG1fYXRDaGlsZC5yZWxlYXNlKCk7CiAKLSAg
ICBtX2VsZW1lbnQyLT5wYXJlbnQoKS0+aW5zZXJ0QmVmb3JlKG1fZWxlbWVudDEuZ2V0KCksIG1f
ZWxlbWVudDIuZ2V0KCksIGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgTm9kZSogcGFy
ZW50ID0gbV9lbGVtZW50Mi0+cGFyZW50KCk7CisgICAgaWYgKCFwYXJlbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCi0gICAgd2hpbGUgKG1fZWxlbWVu
dDItPmZpcnN0Q2hpbGQoKSAhPSBtX2F0Q2hpbGQpIHsKLSAgICAgICAgQVNTRVJUKG1fZWxlbWVu
dDItPmZpcnN0Q2hpbGQoKSk7Ci0gICAgICAgIG1fZWxlbWVudDEtPmFwcGVuZENoaWxkKG1fZWxl
bWVudDItPmZpcnN0Q2hpbGQoKSwgZWMpOwotICAgICAgICBBU1NFUlQoZWMgPT0gMCk7Ci0gICAg
fQorICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKG1fZWxlbWVudDEuZ2V0KCksIG1fZWxlbWVudDIu
Z2V0KCksIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxS
ZWZQdHI8Tm9kZT4gPiBjaGlsZHJlbjsKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gbV9lbGVtZW50
Mi0+Zmlyc3RDaGlsZCgpOyBjaGlsZCAmJiBjaGlsZCAhPSBhdENoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKQorICAgICAgICBjaGlsZHJlbi5hcHBlbmQoY2hpbGQpOworCisgICAg
c2l6ZV90IHNpemUgPSBjaGlsZHJlbi5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpCisgICAgICAgIG1fZWxlbWVudDEtPmFwcGVuZENoaWxkKGNoaWxkcmVuW2ld
LnJlbGVhc2UoKSwgZWMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL2VkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcAkocmV2aXNpb24gMzk0
NDApCisrKyBXZWJDb3JlL2VkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgTW9kaWZ5U2VsZWN0aW9uTGlzdExl
dmVsQ29tbWFuZDo6aW4KICAgICB9CiB9CiAKLXZvaWQgTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVs
Q29tbWFuZDo6YXBwZW5kU2libGluZ05vZGVSYW5nZShOb2RlKiBzdGFydE5vZGUsIE5vZGUqIGVu
ZE5vZGUsIE5vZGUqIG5ld1BhcmVudCkKK3ZvaWQgTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsQ29t
bWFuZDo6YXBwZW5kU2libGluZ05vZGVSYW5nZShOb2RlKiBzdGFydE5vZGUsIE5vZGUqIGVuZE5v
ZGUsIEVsZW1lbnQqIG5ld1BhcmVudCkKIHsKICAgICBOb2RlKiBub2RlID0gc3RhcnROb2RlOwog
ICAgIHdoaWxlICgxKSB7CkBAIC0xNzgsMTQgKzE3OCwxNiBAQCB2b2lkIEluY3JlYXNlU2VsZWN0
aW9uTGlzdExldmVsQ29tbWFuZDo6CiAgICAgTm9kZSogcHJldmlvdXNJdGVtID0gc3RhcnRMaXN0
Q2hpbGQtPnJlbmRlcmVyKCktPnByZXZpb3VzU2libGluZygpLT5lbGVtZW50KCk7CiAgICAgaWYg
KGlzTGlzdEVsZW1lbnQocHJldmlvdXNJdGVtKSkgewogICAgICAgICAvLyBtb3ZlIG5vZGVzIHVw
IGludG8gcHJlY2VkaW5nIGxpc3QKLSAgICAgICAgYXBwZW5kU2libGluZ05vZGVSYW5nZShzdGFy
dExpc3RDaGlsZCwgZW5kTGlzdENoaWxkLCBwcmV2aW91c0l0ZW0pOworICAgICAgICBhcHBlbmRT
aWJsaW5nTm9kZVJhbmdlKHN0YXJ0TGlzdENoaWxkLCBlbmRMaXN0Q2hpbGQsIHN0YXRpY19jYXN0
PEVsZW1lbnQqPihwcmV2aW91c0l0ZW0pKTsKICAgICAgICAgbV9saXN0RWxlbWVudCA9IHByZXZp
b3VzSXRlbTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBjcmVhdGUgYSBzdWJsaXN0IGZvciB0
aGUgcHJlY2VkaW5nIGVsZW1lbnQgYW5kIG1vdmUgbm9kZXMgdGhlcmUKLSAgICAgICAgUmVmUHRy
PE5vZGU+IG5ld1BhcmVudDsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld1BhcmVudDsKICAg
ICAgICAgc3dpdGNoIChtX2xpc3RUeXBlKSB7CiAgICAgICAgICAgICBjYXNlIEluaGVyaXRlZExp
c3RUeXBlOgotICAgICAgICAgICAgICAgIG5ld1BhcmVudCA9IHN0YXJ0TGlzdENoaWxkLT5wYXJl
bnROb2RlKCktPmNsb25lTm9kZShmYWxzZSk7CisgICAgICAgICAgICAgICAgbmV3UGFyZW50ID0g
c3RhcnRMaXN0Q2hpbGQtPnBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICBpZiAobmV3
UGFyZW50KQorICAgICAgICAgICAgICAgICAgICBuZXdQYXJlbnQgPSBuZXdQYXJlbnQtPmNsb25l
RWxlbWVudCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBPcmRl
cmVkTGlzdDoKICAgICAgICAgICAgICAgICBuZXdQYXJlbnQgPSBjcmVhdGVPcmRlcmVkTGlzdEVs
ZW1lbnQoZG9jdW1lbnQoKSk7CkBAIC0yNTgsNyArMjYwLDcgQEAgdm9pZCBEZWNyZWFzZVNlbGVj
dGlvbkxpc3RMZXZlbENvbW1hbmQ6OgogCiAgICAgTm9kZSogcHJldmlvdXNJdGVtID0gc3RhcnRM
aXN0Q2hpbGQtPnJlbmRlcmVyKCktPnByZXZpb3VzU2libGluZygpID8gc3RhcnRMaXN0Q2hpbGQt
PnJlbmRlcmVyKCktPnByZXZpb3VzU2libGluZygpLT5lbGVtZW50KCkgOiAwOwogICAgIE5vZGUq
IG5leHRJdGVtID0gZW5kTGlzdENoaWxkLT5yZW5kZXJlcigpLT5uZXh0U2libGluZygpID8gZW5k
TGlzdENoaWxkLT5yZW5kZXJlcigpLT5uZXh0U2libGluZygpLT5lbGVtZW50KCkgOiAwOwotICAg
IE5vZGUqIGxpc3ROb2RlID0gc3RhcnRMaXN0Q2hpbGQtPnBhcmVudE5vZGUoKTsKKyAgICBFbGVt
ZW50KiBsaXN0Tm9kZSA9IHN0YXJ0TGlzdENoaWxkLT5wYXJlbnRFbGVtZW50KCk7CiAKICAgICBp
ZiAoIXByZXZpb3VzSXRlbSkgewogICAgICAgICAvLyBhdCBzdGFydCBvZiBzdWJsaXN0LCBtb3Zl
IHRoZSBjaGlsZChyZW4pIHRvIGJlZm9yZSB0aGUgc3VibGlzdApAQCAtMjY5LDkgKzI3MSw5IEBA
IHZvaWQgRGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kOjoKICAgICB9IGVsc2UgaWYg
KCFuZXh0SXRlbSkgewogICAgICAgICAvLyBhdCBlbmQgb2YgbGlzdCwgbW92ZSB0aGUgY2hpbGQo
cmVuKSB0byBhZnRlciB0aGUgc3VibGlzdAogICAgICAgICBpbnNlcnRTaWJsaW5nTm9kZVJhbmdl
QWZ0ZXIoc3RhcnRMaXN0Q2hpbGQsIGVuZExpc3RDaGlsZCwgbGlzdE5vZGUpOyAgICAKLSAgICB9
IGVsc2UgeworICAgIH0gZWxzZSBpZiAobGlzdE5vZGUpIHsKICAgICAgICAgLy8gaW4gdGhlIG1p
ZGRsZSBvZiBsaXN0LCBzcGxpdCB0aGUgbGlzdCBhbmQgbW92ZSB0aGUgY2hpbGRyZW4gdG8gdGhl
IGRpdmlkZQotICAgICAgICBzcGxpdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGxpc3RO
b2RlKSwgc3RhcnRMaXN0Q2hpbGQpOworICAgICAgICBzcGxpdEVsZW1lbnQobGlzdE5vZGUsIHN0
YXJ0TGlzdENoaWxkKTsKICAgICAgICAgaW5zZXJ0U2libGluZ05vZGVSYW5nZUJlZm9yZShzdGFy
dExpc3RDaGlsZCwgZW5kTGlzdENoaWxkLCBsaXN0Tm9kZSk7CiAgICAgfQogfQpJbmRleDogV2Vi
Q29yZS9lZGl0aW5nL01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaAkocmV2aXNpb24gMzk0NDAp
CisrKyBXZWJDb3JlL2VkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsQ29t
bWFuZCA6IAogcHJvdGVjdGVkOgogICAgIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQo
RG9jdW1lbnQqKTsKICAgICAKLSAgICB2b2lkIGFwcGVuZFNpYmxpbmdOb2RlUmFuZ2UoTm9kZSog
c3RhcnROb2RlLCBOb2RlKiBlbmROb2RlLCBOb2RlKiBuZXdQYXJlbnQpOworICAgIHZvaWQgYXBw
ZW5kU2libGluZ05vZGVSYW5nZShOb2RlKiBzdGFydE5vZGUsIE5vZGUqIGVuZE5vZGUsIEVsZW1l
bnQqIG5ld1BhcmVudCk7CiAgICAgdm9pZCBpbnNlcnRTaWJsaW5nTm9kZVJhbmdlQmVmb3JlKE5v
ZGUqIHN0YXJ0Tm9kZSwgTm9kZSogZW5kTm9kZSwgTm9kZSogcmVmTm9kZSk7CiAgICAgdm9pZCBp
bnNlcnRTaWJsaW5nTm9kZVJhbmdlQWZ0ZXIoTm9kZSogc3RhcnROb2RlLCBOb2RlKiBlbmROb2Rl
LCBOb2RlKiByZWZOb2RlKTsKIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUNTU1Byb3Bl
cnR5Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUNTU1By
b3BlcnR5Q29tbWFuZC5jcHAJKHJldmlzaW9uIDM5NDQwKQorKysgV2ViQ29yZS9lZGl0aW5nL1Jl
bW92ZUNTU1Byb3BlcnR5Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDMyICszMSwy
NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZDo6
UmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kKERvY3VtZW50KiBkb2N1bWVudCwgQ1NTU3R5bGVEZWNs
YXJhdGlvbiogZGVjbCwgaW50IHByb3BlcnR5KQorUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kOjpS
ZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQoRG9jdW1lbnQqIGRvY3VtZW50LCBQYXNzUmVmUHRyPENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkK
ICAgICA6IFNpbXBsZUVkaXRDb21tYW5kKGRvY3VtZW50KQotICAgICwgbV9kZWNsKGRlY2wtPm1h
a2VNdXRhYmxlKCkpCisgICAgLCBtX3N0eWxlKHN0eWxlKQogICAgICwgbV9wcm9wZXJ0eShwcm9w
ZXJ0eSkKICAgICAsIG1faW1wb3J0YW50KGZhbHNlKQogewotICAgIEFTU0VSVChtX2RlY2wpOwor
ICAgIEFTU0VSVChtX3N0eWxlKTsKIH0KIAogdm9pZCBSZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQ6
OmRvQXBwbHkoKQogewotICAgIEFTU0VSVChtX2RlY2wpOwotCi0gICAgbV9vbGRWYWx1ZSA9IG1f
ZGVjbC0+Z2V0UHJvcGVydHlWYWx1ZShtX3Byb3BlcnR5KTsKLSAgICBBU1NFUlQoIW1fb2xkVmFs
dWUuaXNOdWxsKCkpOwotCi0gICAgbV9pbXBvcnRhbnQgPSBtX2RlY2wtPmdldFByb3BlcnR5UHJp
b3JpdHkobV9wcm9wZXJ0eSk7Ci0gICAgbV9kZWNsLT5yZW1vdmVQcm9wZXJ0eShtX3Byb3BlcnR5
KTsKKyAgICBtX29sZFZhbHVlID0gbV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShtX3Byb3BlcnR5
KTsKKyAgICBtX2ltcG9ydGFudCA9IG1fc3R5bGUtPmdldFByb3BlcnR5UHJpb3JpdHkobV9wcm9w
ZXJ0eSk7CisgICAgbV9zdHlsZS0+cmVtb3ZlUHJvcGVydHkobV9wcm9wZXJ0eSk7CiB9CiAKIHZv
aWQgUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kOjpkb1VuYXBwbHkoKQogewotICAgIEFTU0VSVCht
X2RlY2wpOwotICAgIEFTU0VSVCghbV9vbGRWYWx1ZS5pc051bGwoKSk7Ci0KLSAgICBtX2RlY2wt
PnNldFByb3BlcnR5KG1fcHJvcGVydHksIG1fb2xkVmFsdWUsIG1faW1wb3J0YW50KTsKKyAgICBt
X3N0eWxlLT5zZXRQcm9wZXJ0eShtX3Byb3BlcnR5LCBtX29sZFZhbHVlLCBtX2ltcG9ydGFudCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9SZW1v
dmVDU1NQcm9wZXJ0eUNvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvUmVt
b3ZlQ1NTUHJvcGVydHlDb21tYW5kLmgJKHJldmlzaW9uIDM5NDQwKQorKysgV2ViQ29yZS9lZGl0
aW5nL1JlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyNiAr
MjcsMjUgQEAKICNkZWZpbmUgUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kX2gKIAogI2luY2x1ZGUg
IkVkaXRDb21tYW5kLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247Ci0KIGNsYXNzIFJlbW92
ZUNTU1Byb3BlcnR5Q29tbWFuZCA6IHB1YmxpYyBTaW1wbGVFZGl0Q29tbWFuZCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kPiBjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50LCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgaW50IHByb3Bl
cnR5KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZD4gY3Jl
YXRlKERvY3VtZW50KiBkb2N1bWVudCwgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbj4gc3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHkpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFJlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZChkb2N1bWVudCwgc3R5bGUs
IHByb3BlcnR5KSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFJlbW92ZUNTU1Byb3BlcnR5Q29t
bWFuZChEb2N1bWVudCosIENTU1N0eWxlRGVjbGFyYXRpb24qLCBpbnQgcHJvcGVydHkpOworICAg
IFJlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZChEb2N1bWVudCosIFBhc3NSZWZQdHI8Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24+LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KTsKIAogICAgIHZpcnR1
YWwgdm9pZCBkb0FwcGx5KCk7CiAgICAgdmlydHVhbCB2b2lkIGRvVW5hcHBseSgpOwogCi0gICAg
UmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBtX2RlY2w7Ci0gICAgaW50IG1fcHJv
cGVydHk7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBtX3N0eWxlOwor
ICAgIENTU1Byb3BlcnR5SUQgbV9wcm9wZXJ0eTsKICAgICBTdHJpbmcgbV9vbGRWYWx1ZTsKICAg
ICBib29sIG1faW1wb3J0YW50OwogfTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2Rl
QXR0cmlidXRlQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlbW92
ZU5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcAkocmV2aXNpb24gMzk0NDApCisrKyBXZWJDb3JlL2Vk
aXRpbmcvUmVtb3ZlTm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYyICsxIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlJlbW92ZU5vZGVBdHRyaWJ1dGVDb21tYW5kLmgiCi0KLSNpbmNsdWRlICJFbGVtZW50LmgiCi0j
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZW1v
dmVOb2RlQXR0cmlidXRlQ29tbWFuZDo6UmVtb3ZlTm9kZUF0dHJpYnV0ZUNvbW1hbmQoUGFzc1Jl
ZlB0cjxFbGVtZW50PiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpCi0g
ICAgOiBTaW1wbGVFZGl0Q29tbWFuZChlbGVtZW50LT5kb2N1bWVudCgpKSwgbV9lbGVtZW50KGVs
ZW1lbnQpLCBtX2F0dHJpYnV0ZShhdHRyaWJ1dGUpCi17Ci0gICAgQVNTRVJUKG1fZWxlbWVudCk7
Ci19Ci0KLXZvaWQgUmVtb3ZlTm9kZUF0dHJpYnV0ZUNvbW1hbmQ6OmRvQXBwbHkoKQotewotICAg
IEFTU0VSVChtX2VsZW1lbnQpOwotCi0gICAgbV9vbGRWYWx1ZSA9IG1fZWxlbWVudC0+Z2V0QXR0
cmlidXRlKG1fYXR0cmlidXRlKTsKLSAgICBBU1NFUlQoIW1fb2xkVmFsdWUuaXNOdWxsKCkpOwot
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgbV9lbGVtZW50LT5yZW1vdmVBdHRyaWJ1
dGUobV9hdHRyaWJ1dGUsIGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7Ci19Ci0KLXZvaWQgUmVt
b3ZlTm9kZUF0dHJpYnV0ZUNvbW1hbmQ6OmRvVW5hcHBseSgpCi17Ci0gICAgQVNTRVJUKG1fZWxl
bWVudCk7Ci0gICAgQVNTRVJUKCFtX29sZFZhbHVlLmlzTnVsbCgpKTsKLQotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRlKG1fYXR0cmlidXRlLCBt
X29sZFZhbHVlLmltcGwoKSwgZWMpOwotICAgIEFTU0VSVChlYyA9PSAwKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorLyogZGVsZXRlIHRoaXMgZmlsZSAqLwpJbmRleDogV2ViQ29yZS9l
ZGl0aW5nL1JlbW92ZU5vZGVBdHRyaWJ1dGVDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9lZGl0aW5nL1JlbW92ZU5vZGVBdHRyaWJ1dGVDb21tYW5kLmgJKHJldmlzaW9uIDM5NDQwKQor
KysgV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVBdHRyaWJ1dGVDb21tYW5kLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNTQgKzEgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFJlbW92
ZU5vZGVBdHRyaWJ1dGVDb21tYW5kX2gKLSNkZWZpbmUgUmVtb3ZlTm9kZUF0dHJpYnV0ZUNvbW1h
bmRfaAotCi0jaW5jbHVkZSAiRWRpdENvbW1hbmQuaCIKLSNpbmNsdWRlICJRdWFsaWZpZWROYW1l
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUmVtb3ZlTm9kZUF0dHJpYnV0ZUNv
bW1hbmQgOiBwdWJsaWMgU2ltcGxlRWRpdENvbW1hbmQgewotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFJlbW92ZU5vZGVBdHRyaWJ1dGVDb21tYW5kPiBjcmVhdGUoUGFzc1JlZlB0cjxF
bGVtZW50PiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW92ZU5vZGVBdHRyaWJ1dGVDb21tYW5kKGVs
ZW1lbnQsIGF0dHJpYnV0ZSkpOwotICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAgUmVtb3ZlTm9k
ZUF0dHJpYnV0ZUNvbW1hbmQoUGFzc1JlZlB0cjxFbGVtZW50PiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCk7Ci0gICAgdmlydHVh
bCB2b2lkIGRvVW5hcHBseSgpOwotCi0gICAgUmVmUHRyPEVsZW1lbnQ+IG1fZWxlbWVudDsKLSAg
ICBRdWFsaWZpZWROYW1lIG1fYXR0cmlidXRlOwotICAgIEF0b21pY1N0cmluZyBtX29sZFZhbHVl
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUmVtb3ZlTm9kZUF0
dHJpYnV0ZUNvbW1hbmRfaAorI2Vycm9yIGRlbGV0ZSB0aGlzIGZpbGUKSW5kZXg6IFdlYkNvcmUv
ZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0
aW5nL1JlbW92ZU5vZGVDb21tYW5kLmNwcAkocmV2aXNpb24gMzk0NDApCisrKyBXZWJDb3JlL2Vk
aXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwzMyArMzEs
MzYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW1vdmVOb2RlQ29tbWFuZDo6UmVtb3Zl
Tm9kZUNvbW1hbmQoUGFzc1JlZlB0cjxOb2RlPiByZW1vdmVDaGlsZCkKLSAgICA6IFNpbXBsZUVk
aXRDb21tYW5kKHJlbW92ZUNoaWxkLT5kb2N1bWVudCgpKQotICAgICwgbV9yZW1vdmVDaGlsZChy
ZW1vdmVDaGlsZCkKLSAgICAsIG1fcGFyZW50KG1fcmVtb3ZlQ2hpbGQtPnBhcmVudE5vZGUoKSkK
LSAgICAsIG1fcmVmQ2hpbGQobV9yZW1vdmVDaGlsZC0+bmV4dFNpYmxpbmcoKSkKK1JlbW92ZU5v
ZGVDb21tYW5kOjpSZW1vdmVOb2RlQ29tbWFuZChQYXNzUmVmUHRyPE5vZGU+IG5vZGUpCisgICAg
OiBTaW1wbGVFZGl0Q29tbWFuZChub2RlLT5kb2N1bWVudCgpKQorICAgICwgbV9ub2RlKG5vZGUp
CiB7Ci0gICAgQVNTRVJUKG1fcGFyZW50KTsKKyAgICBBU1NFUlQobV9ub2RlKTsKKyAgICBBU1NF
UlQobV9ub2RlLT5wYXJlbnROb2RlKCkpOwogfQogCiB2b2lkIFJlbW92ZU5vZGVDb21tYW5kOjpk
b0FwcGx5KCkKIHsKLSAgICBBU1NFUlQobV9wYXJlbnQpOwotICAgIEFTU0VSVChtX3JlbW92ZUNo
aWxkKTsKKyAgICBOb2RlKiBwYXJlbnQgPSBtX25vZGUtPnBhcmVudE5vZGUoKTsKKyAgICBpZiAo
IXBhcmVudCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgbV9wYXJlbnQtPnJlbW92ZUNoaWxkKG1fcmVtb3ZlQ2hpbGQuZ2V0KCksIGVjKTsKLSAgICBB
U1NFUlQoZWMgPT0gMCk7CisgICAgbV9wYXJlbnQgPSBwYXJlbnQ7CisgICAgbV9yZWZDaGlsZCA9
IG1fbm9kZS0+bmV4dFNpYmxpbmcoKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgbV9u
b2RlLT5yZW1vdmUoZWMpOwogfQogCiB2b2lkIFJlbW92ZU5vZGVDb21tYW5kOjpkb1VuYXBwbHko
KQogewotICAgIEFTU0VSVChtX3BhcmVudCk7Ci0gICAgQVNTRVJUKG1fcmVtb3ZlQ2hpbGQpOwor
ICAgIFJlZlB0cjxOb2RlPiBwYXJlbnQgPSBtX3BhcmVudC5yZWxlYXNlKCk7CisgICAgUmVmUHRy
PE5vZGU+IHJlZkNoaWxkID0gbV9yZWZDaGlsZC5yZWxlYXNlKCk7CisgICAgaWYgKCFwYXJlbnQp
CisgICAgICAgIHJldHVybjsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIG1fcGFy
ZW50LT5pbnNlcnRCZWZvcmUobV9yZW1vdmVDaGlsZC5nZXQoKSwgbV9yZWZDaGlsZC5nZXQoKSwg
ZWMpOwotICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIHBh
cmVudC0+aW5zZXJ0QmVmb3JlKG1fbm9kZS5nZXQoKSwgcmVmQ2hpbGQuZ2V0KCksIGVjKTsKIH0K
IAogfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmgJKHJldmlzaW9uIDM5NDQw
KQorKysgV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBkb1VuYXBwbHkoKTsKIAotICAgIFJlZlB0cjxOb2RlPiBtX3JlbW92
ZUNoaWxkOworICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7CiAgICAgUmVmUHRyPE5vZGU+IG1fcGFy
ZW50OwogICAgIFJlZlB0cjxOb2RlPiBtX3JlZkNoaWxkOyAgICAKIH07CkluZGV4OiBXZWJDb3Jl
L2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFu
ZC5jcHAJKHJldmlzaW9uIDM5NDQwKQorKysgV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVz
ZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTEgKzM5LDE3
IEBAIFJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kOjpSZW0KIAogdm9pZCBSZW1v
dmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZDo6ZG9BcHBseSgpCiB7Ci0gICAgd2hpbGUg
KE5vZGUqIGN1cnIgPSBtX25vZGUtPmZpcnN0Q2hpbGQoKSkgewotICAgICAgICByZW1vdmVOb2Rl
KGN1cnIpOwotICAgICAgICBpbnNlcnROb2RlQmVmb3JlKGN1cnIsIG1fbm9kZS5nZXQoKSk7Cisg
ICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IGNoaWxkcmVuOworICAgIGZvciAoTm9kZSogY2hpbGQg
PSBtX25vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5n
KCkpCisgICAgICAgIGNoaWxkcmVuLmFwcGVuZChjaGlsZCk7CisKKyAgICBzaXplX3Qgc2l6ZSA9
IGNoaWxkcmVuLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkg
eworICAgICAgICBSZWZQdHI8Tm9kZT4gY2hpbGQgPSBjaGlsZHJlbltpXS5yZWxlYXNlKCk7Cisg
ICAgICAgIHJlbW92ZU5vZGUoY2hpbGQpOworICAgICAgICBpbnNlcnROb2RlQmVmb3JlKGNoaWxk
LnJlbGVhc2UoKSwgbV9ub2RlKTsKICAgICB9Ci0gICAgcmVtb3ZlTm9kZShtX25vZGUuZ2V0KCkp
OworICAgIHJlbW92ZU5vZGUobV9ub2RlKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiAzOTQ0MCkKKysrIFdlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIyMSw3ICsyMjEsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IFJlcGxhY2VtZW50RnJhZ21lbnQ6Omlu
CiAgICAgaWYgKCFib2R5KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxTdHlsZWRF
bGVtZW50PiBob2xkZXIgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFN0eWxlZEVsZW1lbnQ+KGNyZWF0
ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KG1fZG9jdW1lbnQuZ2V0KCkpKTsKKyAgICBSZWZQdHI8
U3R5bGVkRWxlbWVudD4gaG9sZGVyID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQobV9k
b2N1bWVudC5nZXQoKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAKSW5kZXg6
IFdlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcAkocmV2aXNpb24g
Mzk0NDApCisrKyBXZWJDb3JlL2VkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiwzNSArMzIsMjYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQ6OlNldE5vZGVBdHRyaWJ1dGVDb21tYW5kKFBhc3NSZWZQ
dHI8RWxlbWVudD4gZWxlbWVudCwgCi0gICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZSwgY29uc3QgU3RyaW5nICZ2YWx1ZSkKLSAgICA6IFNpbXBsZUVkaXRDb21tYW5kKGVsZW1l
bnQtPmRvY3VtZW50KCkpLCBtX2VsZW1lbnQoZWxlbWVudCksIG1fYXR0cmlidXRlKGF0dHJpYnV0
ZSksIG1fdmFsdWUodmFsdWUpCisgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKKyAgICA6IFNpbXBsZUVkaXRDb21tYW5kKGVs
ZW1lbnQtPmRvY3VtZW50KCkpCisgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKKyAgICAsIG1fYXR0
cmlidXRlKGF0dHJpYnV0ZSkKKyAgICAsIG1fdmFsdWUodmFsdWUpCiB7CiAgICAgQVNTRVJUKG1f
ZWxlbWVudCk7Ci0gICAgQVNTRVJUKCFtX3ZhbHVlLmlzTnVsbCgpKTsKIH0KIAogdm9pZCBTZXRO
b2RlQXR0cmlidXRlQ29tbWFuZDo6ZG9BcHBseSgpCiB7Ci0gICAgQVNTRVJUKG1fZWxlbWVudCk7
Ci0gICAgQVNTRVJUKCFtX3ZhbHVlLmlzTnVsbCgpKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIG1fb2xkVmFsdWUgPSBtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZShtX2F0dHJpYnV0
ZSk7Ci0gICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1dGUobV9hdHRyaWJ1dGUsIG1fdmFsdWUuaW1w
bCgpLCBlYyk7Ci0gICAgQVNTRVJUKGVjID09IDApOworICAgIG1fZWxlbWVudC0+c2V0QXR0cmli
dXRlKG1fYXR0cmlidXRlLCBtX3ZhbHVlKTsKIH0KIAogdm9pZCBTZXROb2RlQXR0cmlidXRlQ29t
bWFuZDo6ZG9VbmFwcGx5KCkKIHsKLSAgICBBU1NFUlQobV9lbGVtZW50KTsKLQotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIGlmIChtX29sZFZhbHVlLmlzTnVsbCgpKQotICAgICAgICBt
X2VsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZShtX2F0dHJpYnV0ZSwgZWMpOwotICAgIGVsc2UKLSAg
ICAgICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1dGUobV9hdHRyaWJ1dGUsIG1fb2xkVmFsdWUuaW1w
bCgpLCBlYyk7Ci0gICAgQVNTRVJUKGVjID09IDApOworICAgIG1fZWxlbWVudC0+c2V0QXR0cmli
dXRlKG1fYXR0cmlidXRlLCBtX29sZFZhbHVlKTsKKyAgICBBdG9taWNTdHJpbmdJbXBsKiBudWxs
U3RyaW5nID0gMDsKKyAgICBtX29sZFZhbHVlID0gbnVsbFN0cmluZzsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNv
bW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNv
bW1hbmQuaAkocmV2aXNpb24gMzk0NDApCisrKyBXZWJDb3JlL2VkaXRpbmcvU2V0Tm9kZUF0dHJp
YnV0ZUNvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kKFBhc3NSZWZQdHI8
RWxlbWVudD4sIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSk7CisgICAgU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQoUGFzc1JlZlB0cjxFbGVtZW50Piwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCk7CiAgICAgdmlydHVhbCB2b2lkIGRvVW5h
cHBseSgpOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcAkocmV2
aXNpb24gMzk0NDApCisrKyBXZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDU5ICszMiw2MCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBTcGxpdEVsZW1lbnRDb21tYW5kOjpTcGxpdEVsZW1lbnRDb21tYW5kKFBhc3NSZWZQdHI8RWxl
bWVudD4gZWxlbWVudCwgUGFzc1JlZlB0cjxOb2RlPiBhdENoaWxkKQotICAgIDogU2ltcGxlRWRp
dENvbW1hbmQoZWxlbWVudC0+ZG9jdW1lbnQoKSksIG1fZWxlbWVudDIoZWxlbWVudCksIG1fYXRD
aGlsZChhdENoaWxkKQorICAgIDogU2ltcGxlRWRpdENvbW1hbmQoZWxlbWVudC0+ZG9jdW1lbnQo
KSkKKyAgICAsIG1fZWxlbWVudDIoZWxlbWVudCkKKyAgICAsIG1fYXRDaGlsZChhdENoaWxkKQog
ewogICAgIEFTU0VSVChtX2VsZW1lbnQyKTsKICAgICBBU1NFUlQobV9hdENoaWxkKTsKKyAgICBB
U1NFUlQobV9hdENoaWxkLT5wYXJlbnROb2RlKCkgPT0gbV9lbGVtZW50Mik7CiB9CiAKIHZvaWQg
U3BsaXRFbGVtZW50Q29tbWFuZDo6ZG9BcHBseSgpCiB7Ci0gICAgQVNTRVJUKG1fZWxlbWVudDIp
OwotICAgIEFTU0VSVChtX2F0Q2hpbGQpOwotICAgIEFTU0VSVChtX2F0Q2hpbGQtPnBhcmVudE5v
ZGUoKSA9PSBtX2VsZW1lbnQyKTsKKyAgICBSZWZQdHI8RWxlbWVudD4gcHJlZml4RWxlbWVudCA9
IG1fZWxlbWVudDItPmNsb25lRWxlbWVudCgpOworCisgICAgaWYgKG1fYXRDaGlsZC0+cGFyZW50
Tm9kZSgpICE9IG1fZWxlbWVudDIpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxSZWZQ
dHI8Tm9kZT4gPiBjaGlsZHJlbjsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX2VsZW1lbnQyLT5m
aXJzdENoaWxkKCk7IG5vZGUgIT0gbV9hdENoaWxkOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmco
KSkKKyAgICAgICAgY2hpbGRyZW4uYXBwZW5kKG5vZGUpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAKLSAgICBpZiAoIW1fZWxlbWVudDEpIHsKLSAgICAgICAgLy8gY3JlYXRlIG9ubHkg
aWYgbmVlZGVkLgotICAgICAgICAvLyBpZiByZWFwcGx5aW5nLCB0aGlzIG9iamVjdCB3aWxsIGFs
cmVhZHkgZXhpc3QuCi0gICAgICAgIG1fZWxlbWVudDEgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PEVs
ZW1lbnQ+KG1fZWxlbWVudDItPmNsb25lTm9kZShmYWxzZSkpOwotICAgICAgICBBU1NFUlQobV9l
bGVtZW50MSk7Ci0gICAgfQotCi0gICAgbV9lbGVtZW50Mi0+cGFyZW50KCktPmluc2VydEJlZm9y
ZShtX2VsZW1lbnQxLmdldCgpLCBtX2VsZW1lbnQyLmdldCgpLCBlYyk7Ci0gICAgQVNTRVJUKGVj
ID09IDApOwotICAgIAotICAgIC8vIEJhaWwgaWYgd2Ugd2VyZSBhc2tlZCB0byBzcGxpdCBhdCBh
IGJvZ3VzIGNoaWxkLCB0byBhdm9pZCBoYW5naW5nIGJlbG93LgotICAgIGlmICghbV9hdENoaWxk
IHx8IG1fYXRDaGlsZC0+cGFyZW50Tm9kZSgpICE9IG1fZWxlbWVudDIpCisgICAgTm9kZSogcGFy
ZW50ID0gbV9lbGVtZW50Mi0+cGFyZW50Tm9kZSgpOworICAgIGlmICghcGFyZW50KQogICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgd2hpbGUgKG1fZWxlbWVudDItPmZpcnN0Q2hpbGQoKSAhPSBt
X2F0Q2hpbGQpIHsKLSAgICAgICAgQVNTRVJUKG1fZWxlbWVudDItPmZpcnN0Q2hpbGQoKSk7Ci0g
ICAgICAgIG1fZWxlbWVudDEtPmFwcGVuZENoaWxkKG1fZWxlbWVudDItPmZpcnN0Q2hpbGQoKSwg
ZWMpOwotICAgICAgICBBU1NFUlQoZWMgPT0gMCk7Ci0gICAgfQorICAgIHBhcmVudC0+aW5zZXJ0
QmVmb3JlKHByZWZpeEVsZW1lbnQuZ2V0KCksIG1fZWxlbWVudDIuZ2V0KCksIGVjKTsKKyAgICBp
ZiAoZWMpCisgICAgICAgIHJldHVybjsKKyAgICBtX2VsZW1lbnQxID0gcHJlZml4RWxlbWVudC5y
ZWxlYXNlKCk7CisKKyAgICBzaXplX3Qgc2l6ZSA9IGNoaWxkcmVuLnNpemUoKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgbV9lbGVtZW50MS0+YXBwZW5k
Q2hpbGQoY2hpbGRyZW5baV0sIGVjKTsKIH0KIAogdm9pZCBTcGxpdEVsZW1lbnRDb21tYW5kOjpk
b1VuYXBwbHkoKQogewotICAgIEFTU0VSVChtX2VsZW1lbnQxKTsKLSAgICBBU1NFUlQobV9lbGVt
ZW50Mik7Ci0gICAgQVNTRVJUKG1fYXRDaGlsZCk7CisgICAgaWYgKCFtX2VsZW1lbnQxKQorICAg
ICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gY2hpbGRyZW47CisgICAg
Zm9yIChOb2RlKiBub2RlID0gbV9lbGVtZW50MS0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0g
bm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgY2hpbGRyZW4uYXBwZW5kKG5vZGUpOwogCi0g
ICAgQVNTRVJUKG1fZWxlbWVudDEtPm5leHRTaWJsaW5nKCkgPT0gbV9lbGVtZW50Mik7Ci0gICAg
QVNTRVJUKG1fZWxlbWVudDItPmZpcnN0Q2hpbGQoKSAmJiBtX2VsZW1lbnQyLT5maXJzdENoaWxk
KCkgPT0gbV9hdENoaWxkKTsKKyAgICBSZWZQdHI8Tm9kZT4gcmVmQ2hpbGQgPSBtX2VsZW1lbnQy
LT5maXJzdENoaWxkKCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKIAotICAgIHdoaWxl
IChtX2VsZW1lbnQxLT5sYXN0Q2hpbGQoKSkgewotICAgICAgICBtX2VsZW1lbnQyLT5pbnNlcnRC
ZWZvcmUobV9lbGVtZW50MS0+bGFzdENoaWxkKCksIG1fZWxlbWVudDItPmZpcnN0Q2hpbGQoKSwg
ZWMpOwotICAgICAgICBBU1NFUlQoZWMgPT0gMCk7Ci0gICAgfQorICAgIHNpemVfdCBzaXplID0g
Y2hpbGRyZW4uc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQor
ICAgICAgICBtX2VsZW1lbnQyLT5pbnNlcnRCZWZvcmUoY2hpbGRyZW5baV0uZ2V0KCksIHJlZkNo
aWxkLmdldCgpLCBlYyk7CiAKLSAgICBtX2VsZW1lbnQyLT5wYXJlbnROb2RlKCktPnJlbW92ZUNo
aWxkKG1fZWxlbWVudDEuZ2V0KCksIGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgbV9l
bGVtZW50MS0+cmVtb3ZlKGVjKTsKKyAgICBtX2VsZW1lbnQxID0gMDsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5k
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQu
Y3BwCShyZXZpc2lvbiAzOTQ0MCkKKysrIFdlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29t
bWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDU4ICszMyw2MCBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBTcGxpdFRleHROb2RlQ29tbWFuZDo6U3BsaXRUZXh0Tm9kZUNvbW1hbmQoUGFz
c1JlZlB0cjxUZXh0PiB0ZXh0LCBpbnQgb2Zmc2V0KQotICAgIDogU2ltcGxlRWRpdENvbW1hbmQo
dGV4dC0+ZG9jdW1lbnQoKSksIG1fdGV4dDIodGV4dCksIG1fb2Zmc2V0KG9mZnNldCkKKyAgICA6
IFNpbXBsZUVkaXRDb21tYW5kKHRleHQtPmRvY3VtZW50KCkpCisgICAgLCBtX3RleHQyKHRleHQp
CisgICAgLCBtX29mZnNldChvZmZzZXQpCiB7CisgICAgLy8gTk9URTogVmFyaW91cyBjYWxsZXJz
IHJlbHkgb24gdGhlIGZhY3QgdGhhdCB0aGUgb3JpZ2luYWwgbm9kZSBiZWNvbWVzCisgICAgLy8g
dGhlIHNlY29uZCBub2RlIChpLmUuIHRoZSBuZXcgbm9kZSBpcyBpbnNlcnRlZCBiZWZvcmUgdGhl
IGV4aXN0aW5nIG9uZSkuCisgICAgLy8gVGhhdCBpcyBub3QgYSBmdW5kYW1lbnRhbCBkZXBlbmRl
bmN5IChpLmUuIGl0IGNvdWxkIGJlIHJlLWNvZGVkKSwgYnV0CisgICAgLy8gcmF0aGVyIGlzIGJh
c2VkIG9uIGhvdyB0aGlzIGNvZGUgaGFwcGVucyB0byB3b3JrLgogICAgIEFTU0VSVChtX3RleHQy
KTsKICAgICBBU1NFUlQobV90ZXh0Mi0+bGVuZ3RoKCkgPiAwKTsKKyAgICBBU1NFUlQobV9vZmZz
ZXQgPiAwKTsKKyAgICBBU1NFUlQobV9vZmZzZXQgPCBtX3RleHQyLT5sZW5ndGgoKSk7CiB9CiAK
IHZvaWQgU3BsaXRUZXh0Tm9kZUNvbW1hbmQ6OmRvQXBwbHkoKQogewotICAgIEFTU0VSVChtX3Rl
eHQyKTsKLSAgICBBU1NFUlQobV9vZmZzZXQgPiAwKTsKLQogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogCi0gICAgLy8gTk9URTogVmFyaW91cyBjYWxsZXJzIHJlbHkgb24gdGhlIGZhY3QgdGhh
dCB0aGUgb3JpZ2luYWwgbm9kZSBiZWNvbWVzCi0gICAgLy8gdGhlIHNlY29uZCBub2RlIChpLmUu
IHRoZSBuZXcgbm9kZSBpcyBpbnNlcnRlZCBiZWZvcmUgdGhlIGV4aXN0aW5nIG9uZSkuCi0gICAg
Ly8gVGhhdCBpcyBub3QgYSBmdW5kYW1lbnRhbCBkZXBlbmRlbmN5IChpLmUuIGl0IGNvdWxkIGJl
IHJlLWNvZGVkKSwgYnV0Ci0gICAgLy8gcmF0aGVyIGlzIGJhc2VkIG9uIGhvdyB0aGlzIGNvZGUg
aGFwcGVucyB0byB3b3JrLgotICAgIGlmICghbV90ZXh0MSkgewotICAgICAgICAvLyBjcmVhdGUg
b25seSBpZiBuZWVkZWQuCi0gICAgICAgIC8vIGlmIHJlYXBwbHlpbmcsIHRoaXMgb2JqZWN0IHdp
bGwgYWxyZWFkeSBleGlzdC4KLSAgICAgICAgbV90ZXh0MSA9IGRvY3VtZW50KCktPmNyZWF0ZVRl
eHROb2RlKG1fdGV4dDItPnN1YnN0cmluZ0RhdGEoMCwgbV9vZmZzZXQsIGVjKSk7Ci0gICAgICAg
IEFTU0VSVChlYyA9PSAwKTsKLSAgICAgICAgQVNTRVJUKG1fdGV4dDEpOwotICAgIH0KKyAgICBT
dHJpbmcgcHJlZml4VGV4dCA9IG1fdGV4dDItPnN1YnN0cmluZ0RhdGEoMCwgbV9vZmZzZXQsIGVj
KTsKKyAgICBpZiAocHJlZml4VGV4dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IFJlZlB0cjxUZXh0PiBwcmVmaXhUZXh0Tm9kZSA9IG5ldyBUZXh0KGRvY3VtZW50KCksIHByZWZp
eFRleHQpOworICAgIEFTU0VSVChwcmVmaXhUZXh0Tm9kZSk7CisgICAgZG9jdW1lbnQoKS0+Y29w
eU1hcmtlcnMobV90ZXh0Mi5nZXQoKSwgMCwgbV9vZmZzZXQsIHByZWZpeFRleHROb2RlLmdldCgp
LCAwKTsKKworICAgIE5vZGUqIHBhcmVudCA9IG1fdGV4dDItPnBhcmVudE5vZGUoKTsKKyAgICBp
ZiAoIXBhcmVudCkKKyAgICAgICAgcmV0dXJuOworICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKHBy
ZWZpeFRleHROb2RlLmdldCgpLCBtX3RleHQyLmdldCgpLCBlYyk7CisgICAgaWYgKGVjKQorICAg
ICAgICByZXR1cm47CiAKLSAgICBkb2N1bWVudCgpLT5jb3B5TWFya2VycyhtX3RleHQyLmdldCgp
LCAwLCBtX29mZnNldCwgbV90ZXh0MS5nZXQoKSwgMCk7CiAgICAgbV90ZXh0Mi0+ZGVsZXRlRGF0
YSgwLCBtX29mZnNldCwgZWMpOwotICAgIEFTU0VSVChlYyA9PSAwKTsKLQotICAgIG1fdGV4dDIt
PnBhcmVudE5vZGUoKS0+aW5zZXJ0QmVmb3JlKG1fdGV4dDEuZ2V0KCksIG1fdGV4dDIuZ2V0KCks
IGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7Ci0gICAgICAgIAotICAgIEFTU0VSVChtX3RleHQy
LT5wcmV2aW91c1NpYmxpbmcoKS0+aXNUZXh0Tm9kZSgpKTsKLSAgICBBU1NFUlQobV90ZXh0Mi0+
cHJldmlvdXNTaWJsaW5nKCkgPT0gbV90ZXh0MSk7CisgICAgbV90ZXh0MSA9IHByZWZpeFRleHRO
b2RlLnJlbGVhc2UoKTsKIH0KIAogdm9pZCBTcGxpdFRleHROb2RlQ29tbWFuZDo6ZG9VbmFwcGx5
KCkKIHsKLSAgICBBU1NFUlQobV90ZXh0MSk7Ci0gICAgQVNTRVJUKG1fdGV4dDIpOwotICAgIEFT
U0VSVChtX3RleHQxLT5uZXh0U2libGluZygpID09IG1fdGV4dDIpOwotICAgICAgICAKLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBtX3RleHQyLT5pbnNlcnREYXRhKDAsIG1fdGV4dDEt
PmRhdGEoKSwgZWMpOwotICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICBpZiAoIW1fdGV4dDEpCisg
ICAgICAgIHJldHVybjsKIAotICAgIGRvY3VtZW50KCktPmNvcHlNYXJrZXJzKG1fdGV4dDEuZ2V0
KCksIDAsIG1fb2Zmc2V0LCBtX3RleHQyLmdldCgpLCAwKTsKKyAgICBBU1NFUlQobV90ZXh0MS0+
ZG9jdW1lbnQoKSA9PSBkb2N1bWVudCgpKTsKIAotICAgIG1fdGV4dDItPnBhcmVudE5vZGUoKS0+
cmVtb3ZlQ2hpbGQobV90ZXh0MS5nZXQoKSwgZWMpOwotICAgIEFTU0VSVChlYyA9PSAwKTsKKyAg
ICBSZWZQdHI8VGV4dD4gcHJlZml4VGV4dE5vZGUgPSBtX3RleHQxLnJlbGVhc2UoKTsKKyAgICBT
dHJpbmcgcHJlZml4VGV4dCA9IHByZWZpeFRleHROb2RlLT5kYXRhKCk7CisKKyAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBtX3RleHQyLT5pbnNlcnREYXRhKDAsIHByZWZpeFRleHQsIGVj
KTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybjsKIAotICAgIG1fb2Zmc2V0ID0gbV90ZXh0
MS0+bGVuZ3RoKCk7CisgICAgZG9jdW1lbnQoKS0+Y29weU1hcmtlcnMocHJlZml4VGV4dE5vZGUu
Z2V0KCksIDAsIHByZWZpeFRleHQubGVuZ3RoKCksIG1fdGV4dDIuZ2V0KCksIDApOworICAgIHBy
ZWZpeFRleHROb2RlLT5yZW1vdmUoZWMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFu
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1NwbGl0VGV4dE5vZGVDb250YWlu
aW5nRWxlbWVudENvbW1hbmQuY3BwCShyZXZpc2lvbiAzOTQ0MCkKKysrIFdlYkNvcmUvZWRpdGlu
Zy9TcGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00NiwxNCArNDYsMjEgQEAgdm9pZCBTcGxpdFRleHROb2RlQ29udGFpbmlu
Z0VsZW1lbnRDb21tYQogICAgIEFTU0VSVChtX29mZnNldCA+IDApOwogCiAgICAgc3BsaXRUZXh0
Tm9kZShtX3RleHQuZ2V0KCksIG1fb2Zmc2V0KTsKLSAgICAKLSAgICBOb2RlICpwYXJlbnROb2Rl
ID0gbV90ZXh0LT5wYXJlbnROb2RlKCk7Ci0gICAgaWYgKCFwYXJlbnROb2RlLT5yZW5kZXJlcigp
IHx8ICFwYXJlbnROb2RlLT5yZW5kZXJlcigpLT5pc0lubGluZSgpKSB7Ci0gICAgICAgIHdyYXBD
b250ZW50c0luRHVtbXlTcGFuKHN0YXRpY19jYXN0PEVsZW1lbnQgKj4ocGFyZW50Tm9kZSkpOwot
ICAgICAgICBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS0+Zmlyc3RDaGlsZCgpOworCisgICAgRWxl
bWVudCogcGFyZW50ID0gbV90ZXh0LT5wYXJlbnRFbGVtZW50KCk7CisgICAgaWYgKCFwYXJlbnQp
CisgICAgICAgIHJldHVybjsKKworICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSBw
YXJlbnQtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFwYXJlbnRSZW5kZXJlciB8fCAhcGFyZW50UmVu
ZGVyZXItPmlzSW5saW5lKCkpIHsKKyAgICAgICAgd3JhcENvbnRlbnRzSW5EdW1teVNwYW4ocGFy
ZW50KTsKKyAgICAgICAgTm9kZSogZmlyc3RDaGlsZCA9IHBhcmVudC0+Zmlyc3RDaGlsZCgpOwor
ICAgICAgICBpZiAoIWZpcnN0Q2hpbGQgfHwgIWZpcnN0Q2hpbGQtPmlzRWxlbWVudE5vZGUoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcGFyZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KGZpcnN0Q2hpbGQpOwogICAgIH0KIAotICAgIHNwbGl0RWxlbWVudChzdGF0aWNfY2FzdDxF
bGVtZW50ICo+KHBhcmVudE5vZGUpLCBtX3RleHQuZ2V0KCkpOworICAgIHNwbGl0RWxlbWVudChw
YXJlbnQsIG1fdGV4dCk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9XcmFwQ29udGVu
dHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9X
cmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwCShyZXZpc2lvbiAzOTQ0MCkKKysrIFdl
YkNvcmUvZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NSwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDQ2ICszMiw1MCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQ6OldyYXBDb250ZW50c0luRHVtbXlTcGFu
Q29tbWFuZChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQpCi0gICAgOiBTaW1wbGVFZGl0Q29t
bWFuZChlbGVtZW50LT5kb2N1bWVudCgpKSwgbV9lbGVtZW50KGVsZW1lbnQpCisgICAgOiBTaW1w
bGVFZGl0Q29tbWFuZChlbGVtZW50LT5kb2N1bWVudCgpKQorICAgICwgbV9lbGVtZW50KGVsZW1l
bnQpCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7CiB9CiAKIHZvaWQgV3JhcENvbnRlbnRzSW5E
dW1teVNwYW5Db21tYW5kOjpkb0FwcGx5KCkKIHsKLSAgICBBU1NFUlQobV9lbGVtZW50KTsKLQot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBjaGls
ZHJlbjsKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gbV9lbGVtZW50LT5maXJzdENoaWxkKCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICAgICBjaGlsZHJlbi5hcHBl
bmQoY2hpbGQpOwogCi0gICAgaWYgKCFtX2R1bW15U3BhbikKLSAgICAgICAgbV9kdW1teVNwYW4g
PSBzdGF0aWNfcG9pbnRlcl9jYXN0PEhUTUxFbGVtZW50PihjcmVhdGVTdHlsZVNwYW5FbGVtZW50
KGRvY3VtZW50KCkpKTsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHNwYW4gPSBjcmVhdGVTdHls
ZVNwYW5FbGVtZW50KGRvY3VtZW50KCkpOwogIAotICAgIHdoaWxlIChtX2VsZW1lbnQtPmZpcnN0
Q2hpbGQoKSkgewotICAgICAgICBtX2R1bW15U3Bhbi0+YXBwZW5kQ2hpbGQobV9lbGVtZW50LT5m
aXJzdENoaWxkKCksIGVjKTsKLSAgICAgICAgQVNTRVJUKGVjID09IDApOwotICAgIH0KKyAgICBF
eGNlcHRpb25Db2RlIGVjOworCisgICAgc2l6ZV90IHNpemUgPSBjaGlsZHJlbi5zaXplKCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIHNwYW4tPmFwcGVu
ZENoaWxkKGNoaWxkcmVuW2ldLnJlbGVhc2UoKSwgZWMpOwogCi0gICAgbV9lbGVtZW50LT5hcHBl
bmRDaGlsZChtX2R1bW15U3Bhbi5nZXQoKSwgZWMpOwotICAgIEFTU0VSVChlYyA9PSAwKTsKKyAg
ICBtX2VsZW1lbnQtPmFwcGVuZENoaWxkKHNwYW4uZ2V0KCksIGVjKTsKKworICAgIG1fZHVtbXlT
cGFuID0gc3Bhbi5yZWxlYXNlKCk7CiB9CiAKIHZvaWQgV3JhcENvbnRlbnRzSW5EdW1teVNwYW5D
b21tYW5kOjpkb1VuYXBwbHkoKQogewogICAgIEFTU0VSVChtX2VsZW1lbnQpOwotICAgIEFTU0VS
VChtX2R1bW15U3Bhbik7CiAKLSAgICBBU1NFUlQobV9lbGVtZW50LT5maXJzdENoaWxkKCkgPT0g
bV9kdW1teVNwYW4pOwotICAgIEFTU0VSVCghbV9lbGVtZW50LT5maXJzdENoaWxkKCktPm5leHRT
aWJsaW5nKCkpOworICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gc3BhbiA9IG1fZHVtbXlTcGFuLnJl
bGVhc2UoKTsKKyAgICBpZiAoIXNwYW4pCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxS
ZWZQdHI8Tm9kZT4gPiBjaGlsZHJlbjsKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gc3Bhbi0+Zmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAg
Y2hpbGRyZW4uYXBwZW5kKGNoaWxkKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IEV4Y2VwdGlvbkNvZGUgZWM7CiAKLSAgICB3aGlsZSAobV9kdW1teVNwYW4tPmZpcnN0Q2hpbGQo
KSkgewotICAgICAgICBtX2VsZW1lbnQtPmFwcGVuZENoaWxkKG1fZHVtbXlTcGFuLT5maXJzdENo
aWxkKCksIGVjKTsKLSAgICAgICAgQVNTRVJUKGVjID09IDApOwotICAgIH0KKyAgICBzaXplX3Qg
c2l6ZSA9IGNoaWxkcmVuLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkKKyAgICAgICAgbV9lbGVtZW50LT5hcHBlbmRDaGlsZChjaGlsZHJlbltpXS5yZWxlYXNl
KCksIGVjKTsKIAotICAgIG1fZWxlbWVudC0+cmVtb3ZlQ2hpbGQobV9kdW1teVNwYW4uZ2V0KCks
IGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgc3Bhbi0+cmVtb3ZlKGVjKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50
c0luRHVtbXlTcGFuQ29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9XcmFw
Q29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaAkocmV2aXNpb24gMzk0NDApCisrKyBXZWJDb3Jl
L2VkaXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBIVE1MRWxl
bWVudDsKKwogY2xhc3MgV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kIDogcHVibGljIFNp
bXBsZUVkaXRDb21tYW5kIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXcmFwQ29u
dGVudHNJbkR1bW15U3BhbkNvbW1hbmQ+IGNyZWF0ZShQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1l
bnQpCkBAIC00NCw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRvVW5hcHBs
eSgpOwogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fZWxlbWVudDsKLSAgICBSZWZQdHI8RWxlbWVu
dD4gbV9kdW1teVNwYW47CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX2R1bW15U3BhbjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9odG1sZWRp
dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAko
cmV2aXNpb24gMzk0NDApCisrKyBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw5ICsyOSwxNCBAQAogI2luY2x1ZGUgIkNoYXJhY3Rlck5hbWVzLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFZGl0aW5nVGV4dC5oIgotI2luY2x1
ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEJSRWxlbWVudC5oIgorI2luY2x1ZGUg
IkhUTUxEaXZFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEVsZW1lbnRGYWN0b3J5LmgiCiAjaW5j
bHVkZSAiSFRNTEludGVyY2hhbmdlLmgiCisjaW5jbHVkZSAiSFRNTExJRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxPTGlzdEVsZW1lbnQuaCIKKyNpbmNs
dWRlICJIVE1MVUxpc3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUG9zaXRpb25JdGVyYXRvci5oIgog
I2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgi
CkBAIC0zMDIsNyArMzA3LDcgQEAgYm9vbCBpc0Jsb2NrKGNvbnN0IE5vZGUqIG5vZGUpCiAvLyBr
bm93aW5nIGFib3V0IHRoZXNlIGtpbmRzIG9mIHNwZWNpYWwgY2FzZXMuCiBOb2RlKiBlbmNsb3Np
bmdCbG9jayhOb2RlKiBub2RlKQogewotICAgIHJldHVybiBlbmNsb3NpbmdOb2RlT2ZUeXBlKFBv
c2l0aW9uKG5vZGUsIDApLCAmaXNCbG9jayk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1l
bnQqPihlbmNsb3NpbmdOb2RlT2ZUeXBlKFBvc2l0aW9uKG5vZGUsIDApLCBpc0Jsb2NrKSk7CiB9
CiAKIFBvc2l0aW9uIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChjb25zdCBQb3NpdGlvbiYgcG9z
KQpAQCAtNjE2LDcgKzYyMSw3IEBAIE5vZGUqIGhpZ2hlc3RFbmNsb3NpbmdOb2RlT2ZUeXBlKGNv
bnN0IFAKIAogTm9kZSogZW5jbG9zaW5nVGFibGVDZWxsKGNvbnN0IFBvc2l0aW9uJiBwKQogewot
ICAgIHJldHVybiBlbmNsb3NpbmdOb2RlT2ZUeXBlKHAsICZpc1RhYmxlQ2VsbCk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQqPihlbmNsb3NpbmdOb2RlT2ZUeXBlKHAsIGlzVGFibGVD
ZWxsKSk7CiB9CiAKIE5vZGUqIGVuY2xvc2luZ0FuY2hvckVsZW1lbnQoY29uc3QgUG9zaXRpb24m
IHApCkBAIC02MzAsNyArNjM1LDcgQEAgTm9kZSogZW5jbG9zaW5nQW5jaG9yRWxlbWVudChjb25z
dCBQb3NpdAogICAgIHJldHVybiBub2RlOwogfQogCi1Ob2RlKiBlbmNsb3NpbmdMaXN0KE5vZGUq
IG5vZGUpCitIVE1MRWxlbWVudCogZW5jbG9zaW5nTGlzdChOb2RlKiBub2RlKQogewogICAgIGlm
ICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC02MzksNyArNjQ0LDcgQEAgTm9kZSogZW5j
bG9zaW5nTGlzdChOb2RlKiBub2RlKQogICAgIAogICAgIGZvciAoTm9kZSogbiA9IG5vZGUtPnBh
cmVudE5vZGUoKTsgbjsgbiA9IG4tPnBhcmVudE5vZGUoKSkgewogICAgICAgICBpZiAobi0+aGFz
VGFnTmFtZSh1bFRhZykgfHwgbi0+aGFzVGFnTmFtZShvbFRhZykpCi0gICAgICAgICAgICByZXR1
cm4gbjsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KG4pOwog
ICAgICAgICBpZiAobiA9PSByb290KQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAt
NjY2LDEyICs2NzEsMTIgQEAgTm9kZSogZW5jbG9zaW5nTGlzdENoaWxkKE5vZGUgKm5vZGUpCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBOb2RlKiBlbWJlZGRlZFN1Ymxpc3QoTm9kZSogbGlz
dEl0ZW0pCitzdGF0aWMgSFRNTEVsZW1lbnQqIGVtYmVkZGVkU3VibGlzdChOb2RlKiBsaXN0SXRl
bSkKIHsKICAgICAvLyBDaGVjayB0aGUgRE9NIHNvIHRoYXQgd2UnbGwgZmluZCBjb2xsYXBzZWQg
c3VibGlzdHMgd2l0aG91dCByZW5kZXJlcnMuCiAgICAgZm9yIChOb2RlKiBuID0gbGlzdEl0ZW0t
PmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGlz
TGlzdEVsZW1lbnQobikpCi0gICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KG4pOwogICAgIH0KICAgICAKICAgICByZXR1cm4g
MDsKQEAgLTY4Miw3ICs2ODcsNyBAQCBzdGF0aWMgTm9kZSogYXBwZW5kZWRTdWJsaXN0KE5vZGUq
IGxpc3RJCiAgICAgLy8gQ2hlY2sgdGhlIERPTSBzbyB0aGF0IHdlJ2xsIGZpbmQgY29sbGFwc2Vk
IHN1Ymxpc3RzIHdpdGhvdXQgcmVuZGVyZXJzLgogICAgIGZvciAoTm9kZSogbiA9IGxpc3RJdGVt
LT5uZXh0U2libGluZygpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAo
aXNMaXN0RWxlbWVudChuKSkKLSAgICAgICAgICAgIHJldHVybiBuOworICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4obik7CiAgICAgICAgIGlmIChuLT5yZW5kZXJl
cigpICYmIG4tPnJlbmRlcmVyKCktPmlzTGlzdEl0ZW0oKSkKICAgICAgICAgICAgIHJldHVybiAw
OwogICAgIH0KQEAgLTcxOCwxMyArNzIzLDE0IEBAIE5vZGUqIG91dGVybW9zdEVuY2xvc2luZ0xp
c3RDaGlsZChOb2RlKiAKICAgICByZXR1cm4gbGlzdE5vZGU7CiB9CiAKLU5vZGUqIG91dGVybW9z
dEVuY2xvc2luZ0xpc3QoTm9kZSogbm9kZSkKK0hUTUxFbGVtZW50KiBvdXRlcm1vc3RFbmNsb3Np
bmdMaXN0KE5vZGUqIG5vZGUpCiB7Ci0gICAgTm9kZSogbGlzdE5vZGUgPSAwOwotICAgIE5vZGUq
IG5leHROb2RlID0gbm9kZTsKLSAgICB3aGlsZSAoKG5leHROb2RlID0gZW5jbG9zaW5nTGlzdChu
ZXh0Tm9kZSkpKQotICAgICAgICBsaXN0Tm9kZSA9IG5leHROb2RlOwotICAgIHJldHVybiBsaXN0
Tm9kZTsKKyAgICBIVE1MRWxlbWVudCogbGlzdCA9IGVuY2xvc2luZ0xpc3Qobm9kZSk7CisgICAg
aWYgKCFsaXN0KQorICAgICAgICByZXR1cm4gMDsKKyAgICB3aGlsZSAoSFRNTEVsZW1lbnQqIG5l
eHRMaXN0ID0gZW5jbG9zaW5nTGlzdChsaXN0KSkKKyAgICAgICAgbGlzdCA9IG5leHRMaXN0Owor
ICAgIHJldHVybiBsaXN0OwogfQogCiBOb2RlKiBoaWdoZXN0QW5jZXN0b3IoTm9kZSogbm9kZSkK
QEAgLTc1NSw1MiArNzYxLDM0IEBAIGJvb2wgaXNUYWJsZUNlbGwoY29uc3QgTm9kZSogbm9kZSkK
ICAgICByZXR1cm4gci0+aXNUYWJsZUNlbGwoKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBj
cmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChEb2N1bWVudCAqZG9jdW1lbnQpCitQYXNzUmVm
UHRyPEhUTUxFbGVtZW50PiBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChEb2N1bWVudCog
ZG9jdW1lbnQpCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudE5TKHhodG1sTmFtZXNwYWNlVVJJ
LCAiZGl2IiwgZWMpOwotICAgIEFTU0VSVChlYyA9PSAwKTsKLSAgICByZXR1cm4gZWxlbWVudC5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIG5ldyBIVE1MRGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50
KTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVCcmVha0VsZW1lbnQoRG9jdW1lbnQg
KmRvY3VtZW50KQorUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlQnJlYWtFbGVtZW50KERv
Y3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQ
dHI8RWxlbWVudD4gYnJlYWtOb2RlID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5h
bWVzcGFjZVVSSSwgImJyIiwgZWMpOwotICAgIEFTU0VSVChlYyA9PSAwKTsKLSAgICByZXR1cm4g
YnJlYWtOb2RlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbmV3IEhUTUxCUkVsZW1lbnQoYnJUYWcs
IGRvY3VtZW50KTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVPcmRlcmVkTGlzdEVs
ZW1lbnQoRG9jdW1lbnQgKmRvY3VtZW50KQorUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRl
T3JkZXJlZExpc3RFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGRvY3VtZW50LT5jcmVh
dGVFbGVtZW50TlMoeGh0bWxOYW1lc3BhY2VVUkksICJvbCIsIGVjKTsKLSAgICBBU1NFUlQoZWMg
PT0gMCk7Ci0gICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpOworICAgIHJldHVybiBuZXcgSFRN
TE9MaXN0RWxlbWVudChvbFRhZywgZG9jdW1lbnQpOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+
IGNyZWF0ZVVub3JkZXJlZExpc3RFbGVtZW50KERvY3VtZW50ICpkb2N1bWVudCkKK1Bhc3NSZWZQ
dHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVVub3JkZXJlZExpc3RFbGVtZW50KERvY3VtZW50KiBkb2N1
bWVudCkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8RWxlbWVudD4g
ZWxlbWVudCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50TlMoeGh0bWxOYW1lc3BhY2VVUkksICJ1
bCIsIGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7Ci0gICAgcmV0dXJuIGVsZW1lbnQucmVsZWFz
ZSgpOworICAgIHJldHVybiBuZXcgSFRNTFVMaXN0RWxlbWVudCh1bFRhZywgZG9jdW1lbnQpOwog
fQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUxpc3RJdGVtRWxlbWVudChEb2N1bWVudCAq
ZG9jdW1lbnQpCitQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVMaXN0SXRlbUVsZW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJl
ZlB0cjxFbGVtZW50PiBicmVha05vZGUgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudE5TKHhodG1s
TmFtZXNwYWNlVVJJLCAibGkiLCBlYyk7Ci0gICAgQVNTRVJUKGVjID09IDApOwotICAgIHJldHVy
biBicmVha05vZGUucmVsZWFzZSgpOworICAgIHJldHVybiBuZXcgSFRNTExJRWxlbWVudChsaVRh
ZywgZG9jdW1lbnQpOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRhZ05hbWUpCitQYXNzUmVmUHRyPEhUTUxF
bGVtZW50PiBjcmVhdGVIVE1MRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdGFnTmFtZSkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQ
dHI8RWxlbWVudD4gYnJlYWtOb2RlID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5h
bWVzcGFjZVVSSSwgdGFnTmFtZSwgZWMpOwotICAgIEFTU0VSVChlYyA9PSAwKTsKLSAgICByZXR1
cm4gYnJlYWtOb2RlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gSFRNTEVsZW1lbnRGYWN0b3J5Ojpj
cmVhdGVIVE1MRWxlbWVudChRdWFsaWZpZWROYW1lKG51bGxBdG9tLCB0YWdOYW1lLCB4aHRtbE5h
bWVzcGFjZVVSSSksIGRvY3VtZW50LCAwLCBmYWxzZSk7CiB9CiAKIGJvb2wgaXNUYWJTcGFuTm9k
ZShjb25zdCBOb2RlICpub2RlKQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgJKHJldmlzaW9uIDM5
NDQwKQorKysgV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1
dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKK2NsYXNzIEhUTUxFbGVtZW50OwogY2xh
c3MgTm9kZTsKIGNsYXNzIFBvc2l0aW9uOwogY2xhc3MgUmFuZ2U7CkBAIC03NiwxMiArNzcsMTIg
QEAgU2VsZWN0aW9uIGF2b2lkSW50ZXJzZWN0aW9uV2l0aE5vZGUoY29ucwogYm9vbCBpc1NwZWNp
YWxFbGVtZW50KGNvbnN0IE5vZGUqKTsKIGJvb2wgdmFsaWRCbG9ja1RhZyhjb25zdCBTdHJpbmcm
KTsKIAotUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChE
b2N1bWVudCopOwotUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVCcmVha0VsZW1lbnQoRG9jdW1l
bnQqKTsKLVBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlT3JkZXJlZExpc3RFbGVtZW50KERvY3Vt
ZW50Kik7Ci1QYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVVub3JkZXJlZExpc3RFbGVtZW50KERv
Y3VtZW50Kik7Ci1QYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUxpc3RJdGVtRWxlbWVudChEb2N1
bWVudCopOwotUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KERvY3VtZW50KiwgY29u
c3QgU3RyaW5nJik7CitQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVEZWZhdWx0UGFyYWdy
YXBoRWxlbWVudChEb2N1bWVudCopOworUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlQnJl
YWtFbGVtZW50KERvY3VtZW50Kik7CitQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVPcmRl
cmVkTGlzdEVsZW1lbnQoRG9jdW1lbnQqKTsKK1Bhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0
ZVVub3JkZXJlZExpc3RFbGVtZW50KERvY3VtZW50Kik7CitQYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBjcmVhdGVMaXN0SXRlbUVsZW1lbnQoRG9jdW1lbnQqKTsKK1Bhc3NSZWZQdHI8SFRNTEVsZW1l
bnQ+IGNyZWF0ZUhUTUxFbGVtZW50KERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJik7CiAK
IGJvb2wgaXNUYWJTcGFuTm9kZShjb25zdCBOb2RlKik7CiBib29sIGlzVGFiU3BhblRleHROb2Rl
KGNvbnN0IE5vZGUqKTsKQEAgLTExOCw4ICsxMTksOCBAQCBOb2RlKiBlbmNsb3NpbmdUYWJsZUNl
bGwoY29uc3QgUG9zaXRpb24mCiBOb2RlKiBlbmNsb3NpbmdFbXB0eUxpc3RJdGVtKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpOwogTm9kZSogZW5jbG9zaW5nQW5jaG9yRWxlbWVudChjb25zdCBQb3Np
dGlvbiYpOwogYm9vbCBpc0xpc3RFbGVtZW50KE5vZGUqKTsKLU5vZGUqIGVuY2xvc2luZ0xpc3Qo
Tm9kZSopOwotTm9kZSogb3V0ZXJtb3N0RW5jbG9zaW5nTGlzdChOb2RlKik7CitIVE1MRWxlbWVu
dCogZW5jbG9zaW5nTGlzdChOb2RlKik7CitIVE1MRWxlbWVudCogb3V0ZXJtb3N0RW5jbG9zaW5n
TGlzdChOb2RlKik7CiBOb2RlKiBlbmNsb3NpbmdMaXN0Q2hpbGQoTm9kZSopOwogTm9kZSogaGln
aGVzdEFuY2VzdG9yKE5vZGUqKTsKIGJvb2wgaXNUYWJsZUVsZW1lbnQoTm9kZSopOwpJbmRleDog
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAJKHJldmlzaW9uIDM5NDQwKQorKysgV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDQsOSArMTEwNCw3IEBAIFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gY3JlYXRlRnJhZ20KICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGRv
Y3VtZW50LT5jcmVhdGVUZXh0Tm9kZShzdHJpbmcpLCBlYyk7CiAgICAgICAgIEFTU0VSVChlYyA9
PSAwKTsKICAgICAgICAgaWYgKHN0cmluZy5lbmRzV2l0aCgiXG4iKSkgewotICAgICAgICAgICAg
UmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQ7Ci0gICAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQt
PmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwgImJyIiwgZWMpOwotICAgICAgICAg
ICAgQVNTRVJUKGVjID09IDApOworICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQg
PSBjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQpOwogICAgICAgICAgICAgZWxlbWVudC0+c2V0
QXR0cmlidXRlKGNsYXNzQXR0ciwgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUpOyAgICAgICAgICAg
IAogICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQucmVsZWFzZSgpLCBl
Yyk7CiAgICAgICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CkBAIC0xMTIxLDggKzExMTksMTMgQEAg
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbQogICAgIH0KIAogICAgIC8v
IEJyZWFrIHN0cmluZyBpbnRvIHBhcmFncmFwaHMuIEV4dHJhIGxpbmUgYnJlYWtzIHR1cm4gaW50
byBlbXB0eSBwYXJhZ3JhcGhzLgotICAgIE5vZGUqIGJsb2NrID0gZW5jbG9zaW5nQmxvY2soY29u
dGV4dC0+Zmlyc3ROb2RlKCkpOwotICAgIGJvb2wgdXNlQ2xvbmVzT2ZFbmNsb3NpbmdCbG9jayA9
IGJsb2NrICYmICFibG9jay0+aGFzVGFnTmFtZShib2R5VGFnKSAmJiAhYmxvY2stPmhhc1RhZ05h
bWUoaHRtbFRhZykgJiYgYmxvY2sgIT0gZWRpdGFibGVSb290Rm9yUG9zaXRpb24oY29udGV4dC0+
c3RhcnRQb3NpdGlvbigpKTsKKyAgICBOb2RlKiBibG9ja05vZGUgPSBlbmNsb3NpbmdCbG9jayhj
b250ZXh0LT5maXJzdE5vZGUoKSk7CisgICAgRWxlbWVudCogYmxvY2sgPSBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4oYmxvY2tOb2RlKTsKKyAgICBib29sIHVzZUNsb25lc09mRW5jbG9zaW5nQmxvY2sg
PSBibG9ja05vZGUKKyAgICAgICAgJiYgYmxvY2tOb2RlLT5pc0VsZW1lbnROb2RlKCkKKyAgICAg
ICAgJiYgIWJsb2NrLT5oYXNUYWdOYW1lKGJvZHlUYWcpCisgICAgICAgICYmICFibG9jay0+aGFz
VGFnTmFtZShodG1sVGFnKQorICAgICAgICAmJiBibG9jayAhPSBlZGl0YWJsZVJvb3RGb3JQb3Np
dGlvbihjb250ZXh0LT5zdGFydFBvc2l0aW9uKCkpOwogICAgIAogICAgIFZlY3RvcjxTdHJpbmc+
IGxpc3Q7CiAgICAgc3RyaW5nLnNwbGl0KCdcbicsIHRydWUsIGxpc3QpOyAvLyB0cnVlIGdldHMg
dXMgZW1wdHkgc3RyaW5ncyBpbiB0aGUgbGlzdApAQCAtMTEzMywxMSArMTEzNiwxMyBAQCBQYXNz
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtCiAgICAgICAgIFJlZlB0cjxFbGVt
ZW50PiBlbGVtZW50OwogICAgICAgICBpZiAocy5pc0VtcHR5KCkgJiYgaSArIDEgPT0gbnVtTGlu
ZXMpIHsKICAgICAgICAgICAgIC8vIEZvciBsYXN0IGxpbmUsIHVzZSB0aGUgIm1hZ2ljIEJSIiBy
YXRoZXIgdGhhbiBhIFAuCi0gICAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZUVs
ZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwgImJyIiwgZWMpOwotICAgICAgICAgICAgQVNTRVJU
KGVjID09IDApOworICAgICAgICAgICAgZWxlbWVudCA9IGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1
bWVudCk7CiAgICAgICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBcHBs
ZUludGVyY2hhbmdlTmV3bGluZSk7ICAgICAgICAgICAgCiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBlbGVtZW50ID0gdXNlQ2xvbmVzT2ZFbmNsb3NpbmdCbG9jayA/IHN0YXRpY19jYXN0
PEVsZW1lbnQqPihibG9jay0+Y2xvbmVOb2RlKGZhbHNlKS5nZXQoKSkgOiBjcmVhdGVEZWZhdWx0
UGFyYWdyYXBoRWxlbWVudChkb2N1bWVudCk7CisgICAgICAgICAgICBpZiAodXNlQ2xvbmVzT2ZF
bmNsb3NpbmdCbG9jaykKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gYmxvY2stPmNsb25lRWxl
bWVudCgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBjcmVh
dGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChkb2N1bWVudCk7CiAgICAgICAgICAgICBmaWxsQ29u
dGFpbmVyRnJvbVN0cmluZyhlbGVtZW50LmdldCgpLCBzKTsKICAgICAgICAgfQogICAgICAgICBm
cmFnbWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5yZWxlYXNlKCksIGVjKTsKSW5kZXg6IFdlYkNv
cmUvcGFnZS9Nb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAJKHJldmlzaW9uIDM5
NDQwKQorKysgV2ViQ29yZS9wYWdlL01vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNywxNiArMjcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyBpbmxpbmUgRWxlbWVudCogdGFyZ2V0RWxlbWVudChOb2RlKiBub2RlKQotewotICAg
IGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgTm9kZSogcGFyZW50ID0gbm9kZS0+
cGFyZW50KCk7Ci0gICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKQot
ICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHBhcmVu
dCk7Ci19Ci0KIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHM6Ok1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgY29uc3QgSGl0VGVz
dFJlc3VsdCYgaGl0VGVzdFJlc3VsdCkKICAgICA6IG1fZXZlbnQoZXZlbnQpCiAgICAgLCBtX2hp
dFRlc3RSZXN1bHQoaGl0VGVzdFJlc3VsdCkKQEAgLTQ2LDEwICszNiwxMiBAQCBNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzOjpNb3VzZUV2ZW50CiBOb2RlKiBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzOjp0YXJnZXROb2RlKCkgY29uc3QKIHsKICAgICBOb2RlKiBub2RlID0gbV9oaXRU
ZXN0UmVzdWx0LmlubmVyTm9kZSgpOwotICAgIGlmIChub2RlICYmIG5vZGUtPmluRG9jdW1lbnQo
KSkKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChub2RlLT5pbkRv
Y3VtZW50KCkpCiAgICAgICAgIHJldHVybiBub2RlOwogCi0gICAgRWxlbWVudCogZWxlbWVudCA9
IHRhcmdldEVsZW1lbnQobm9kZSk7CisgICAgRWxlbWVudCogZWxlbWVudCA9IG5vZGUtPnBhcmVu
dEVsZW1lbnQoKTsKICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pbkRvY3VtZW50KCkpCiAg
ICAgICAgIHJldHVybiBlbGVtZW50OwogCg==
</data>
<flag name="review"
          id="12388"
          type_id="1"
          status="+"
          setter="sullivan"
    />
          </attachment>
      

    </bug>

</bugzilla>