<?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>177928</bug_id>
          
          <creation_ts>2017-10-05 03:42:28 -0700</creation_ts>
          <short_desc>Make RealtimeIncomingAudioSources and RealtimeOutgoingAudioSources port agnostic</short_desc>
          <delta_ts>2017-10-16 09:41:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alejandro G. Castro">alex</reporter>
          <assigned_to name="Alejandro G. Castro">alex</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1356943</commentid>
    <comment_count>0</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-05 03:42:28 -0700</bug_when>
    <thetext>We need this in the GTK port in order to use libwebrtc backend and endpoint classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356952</commentid>
    <comment_count>1</comment_count>
      <attachid>322814</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-05 04:00:56 -0700</bug_when>
    <thetext>Created attachment 322814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356974</commentid>
    <comment_count>2</comment_count>
      <attachid>322814</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-05 04:39:53 -0700</bug_when>
    <thetext>Comment on attachment 322814
Patch

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

LGTM, with the same comments as its sister patch.

&gt; Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSourceMac.cpp:70
&gt; +    // FIXME: For the moment we skip them, we should find a better solution at libwebrtc level to not be called until getting some real data.

I would be interested to see whether GTK port will have the same issue here or not.
Maybe this issue is coming from the libwebrtc WebKit/Mac audio rendering integration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359920</commentid>
    <comment_count>3</comment_count>
      <attachid>323635</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-12 22:08:49 -0700</bug_when>
    <thetext>Created attachment 323635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359928</commentid>
    <comment_count>4</comment_count>
      <attachid>323638</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-12 22:25:52 -0700</bug_when>
    <thetext>Created attachment 323638
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360017</commentid>
    <comment_count>5</comment_count>
      <attachid>323677</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-13 09:08:14 -0700</bug_when>
    <thetext>Created attachment 323677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360019</commentid>
    <comment_count>6</comment_count>
      <attachid>323679</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-13 09:15:30 -0700</bug_when>
    <thetext>Created attachment 323679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360023</commentid>
    <comment_count>7</comment_count>
      <attachid>323681</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-13 09:28:26 -0700</bug_when>
    <thetext>Created attachment 323681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360033</commentid>
    <comment_count>8</comment_count>
      <attachid>323684</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-13 09:35:52 -0700</bug_when>
    <thetext>Created attachment 323684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360042</commentid>
    <comment_count>9</comment_count>
      <attachid>323687</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-13 09:51:46 -0700</bug_when>
    <thetext>Created attachment 323687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360055</commentid>
    <comment_count>10</comment_count>
      <attachid>323689</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-13 10:12:35 -0700</bug_when>
    <thetext>Created attachment 323689
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360068</commentid>
    <comment_count>11</comment_count>
      <attachid>323694</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-13 10:25:09 -0700</bug_when>
    <thetext>Created attachment 323694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360079</commentid>
    <comment_count>12</comment_count>
      <attachid>323699</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-13 10:45:19 -0700</bug_when>
    <thetext>Created attachment 323699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360093</commentid>
    <comment_count>13</comment_count>
      <attachid>323706</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-13 11:01:11 -0700</bug_when>
    <thetext>Created attachment 323706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360132</commentid>
    <comment_count>14</comment_count>
      <attachid>323715</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-13 11:48:47 -0700</bug_when>
    <thetext>Created attachment 323715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360208</commentid>
    <comment_count>15</comment_count>
      <attachid>323739</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-13 13:47:46 -0700</bug_when>
    <thetext>Created attachment 323739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360306</commentid>
    <comment_count>16</comment_count>
      <attachid>323739</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-13 16:28:33 -0700</bug_when>
    <thetext>Comment on attachment 323739
Patch

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

&gt; Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp:61
&gt; +

Double line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360747</commentid>
    <comment_count>17</comment_count>
      <attachid>323892</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-16 07:16:13 -0700</bug_when>
    <thetext>Created attachment 323892
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360755</commentid>
    <comment_count>18</comment_count>
      <attachid>323892</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-16 07:56:03 -0700</bug_when>
    <thetext>Comment on attachment 323892
Patch for landing

Rejecting attachment 323892 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 323892, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
.webkit.org/git/WebKit
   b9f4d12..9032476  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 223389 = b9f4d12279749dd6113b170a020ca3bd5ea37fe0
r223406 = 9032476984cacdd3aaf521d9babf7105e2c5f8c3
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: http://webkit-queues.webkit.org/results/4871101</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360767</commentid>
    <comment_count>19</comment_count>
      <attachid>323898</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-16 09:01:05 -0700</bug_when>
    <thetext>Created attachment 323898
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360793</commentid>
    <comment_count>20</comment_count>
      <attachid>323898</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-16 09:40:51 -0700</bug_when>
    <thetext>Comment on attachment 323898
Patch for landing

Clearing flags on attachment: 323898

Committed r223412: &lt;https://trac.webkit.org/changeset/223412&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360794</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-16 09:40:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360796</commentid>
    <comment_count>22</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-16 09:41:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/35007894&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322814</attachid>
            <date>2017-10-05 04:00:56 -0700</date>
            <delta_ts>2017-10-12 22:08:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177928-20171005130054.patch</filename>
            <type>text/plain</type>
            <size>73328</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRhZGJjMmRmZDgxY2U2
MTNmOGZhZGU0MDNkOWZkYjBlYzYzNTEwYy4uOWJjZjE4NWY5Y2YyMWMyMzZmN2I5MmYxNjZhM2I2
YjNmYWMzYjExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE3LTEwLTA1ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlcyBhbmQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlcyBw
b3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciB0aGUgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGFuZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgY2xhc3NlcywKKyAgICAgICAgbW92ZSB0aGUgbWFjIHNwZWNp
ZmljIGNvZGUgdG8gYSBkaWZmZXJlbnQgY2xhc3MuIFRoaXMgd2F5IHdlIGNhbiB1c2UgdGhlbSBm
cm9tCisgICAgICAgIG90aGVyIHBvcnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgd2UgYXJl
IG5vdCBhZGRpbmcgbmV3IGZ1bmN0aW9uYWxpdHkganVzdCByZWZhY3RvcmluZy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTm93IHRoaXMgZnVu
Y3Rpb24gY2hvb3NlcyBhbW9uZyB0aGUgcG9ydCB0byBjcmVhdGUgdGhlIG9iamVjdC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZTo6flJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0U291
cmNlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
OjpjYXBhYmlsaXRpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlOjpzZXR0aW5ncyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2UuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6Y3JlYXRlKTogTm93IHRoaXMgZnVuY3Rpb24gY2hvb3NlcyBhbW9uZyB0aGUg
cG9ydCB0byBjcmVhdGUgdGhlIG9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZl
cnRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnN0
b3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzb3Vy
Y2VNdXRlZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmhhbmRsZU11dGVkSWZOZWVkZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZS5oLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VNYWMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VNYWM6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VN
YWM6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VNYWM6Ok9uRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZU1hYy5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZS5oLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VNYWMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VN
YWM6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZU1hYyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VNYWM6OmhhbmRsZU11dGVkSWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTWFjOjpzZW5kU2lsZW5j
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VNYWM6Omlz
UmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VNYWM6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0
YUxvd0xpbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZU1hYzo6aGFzQnVmZmVyZWRFbm91Z2hEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZU1hYzo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZU1hYzo6cHVsbEF1ZGlvRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZU1hYy5oOiBBZGRlZC4KKwogMjAxNy0xMC0wNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRyZXNzIHBvc3QtcmV2aWV3IGZlZWRiYWNr
IGZvbGxvd2luZyByMjIyODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDdmMjJlNTE2Zjk3YTI5
N2RkNTQ4ZTc1Y2VlMDg3N2ExYzU2MjVmMWEuLmE4NDQxYmY0Y2IyYmZhNTNhNWMyMjY4MDc3ZjE2
NzcxMjAzNWMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yNTQ4LDkgKzI1NDgsMTEgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwCisgICAgcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcAogICAgIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAogCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmY4Njg4YmMzZDlkNmU0
MWU4MmRlNjY2OGIyYjlmYzViYjA4ZDM3Yy4uNGE0YzUzZmExNDcxZjY5OGUyYzU3N2UwZmNhOTRl
OGM0ZTI1YjA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTY5Niw4ICsxNjk2LDEyIEBACiAJCTQxMEI3RTcyMTA0NUZBQjAw
MEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYgLyogSlNN
ZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTEwM0FBQjFFMzk3OTEwMDA3NjlGMDMg
LyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE3MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovOyB9OwogCQk0MTEwM0FBQzFFMzk3OTEwMDA3
NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyog
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggKi87IH07CisJCTQxMTAzQUFCMUUzOTc5MTAw
MDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VNYWMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTcxRTM5NzkwQTAwNzY5
RjE0IC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZU1hYy5jcHAgKi87IH07CisJCTQxMTAz
QUFDMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VNYWMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE4MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VNYWMuaCAqLzsgfTsK
IAkJNDExMDNBQUQxRTM5NzkxMDAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNB
QTkxRTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oICovOyB9
OwogCQk0MTEwM0FBRTFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
MTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3Bw
ICovOyB9OworCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlTWFjLmggKi87IH07CisJCTQxMTAzQUFFMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2VNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDExMDNBQUExRTM5NzkwQTAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZU1hYy5jcHAgKi87IH07CiAJCTQxMjMwODFCMTM4QzQyOTcwMEJDQ0ZDQSAv
KiBXZWJDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRjE5QjFBMDgyNDVFNUEwMDFFOUFCQyAvKiBXZWJDb3JlLmZyYW1ld29y
ayAqLzsgfTsKIAkJNDEyMzA5MTMxMzhDNDJGRjAwQkNDRkNBIC8qIEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY4MjE2Mjk5MDI5RjRGQjUwMTAwMDEzMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87
IH07CiAJCTQxMjdENTM3MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI3RDUzNjBGOEFBQjFE
MDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovOyB9OwpAQCAtOTQ3Miw4ICs5NDc2LDEyIEBA
CiAJCTQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lc3NhZ2VFdmVudEN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTAzQUE3MUUzOTc5MEEwMDc2
OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMDNBQTgxRTM5NzkwQTAwNzY5RjAzIC8qIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDExMDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2VNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTEwM0FBODFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FB
OTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMg
LyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDExODlFRjcxQUQ4MjMyODAwQjkwQTBEIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVs
dENvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTE4OUVGNzFB
RDgyMzI4MDBCOTNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIzMjgwMEI5NTY3MiAvKiBSZWFk
YWJsZVN0cmVhbUJZT0JSZXF1ZXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJs
ZVN0cmVhbUJZT0JSZXF1ZXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2
NDk3LDYgKzE2NTA1LDggQEAKIAkJCQkwN0ZGREU2NjE4MUFFRDQyMDA3MkQ0MDkgLyogTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUuY3BwICovLAogCQkJCTA3RkZERTY3MTgxQUVENDIwMDcyRDQwOSAv
KiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oICovLAogCQkJCTVFQkI4OTM4MUM3N0JEQTQwMEM2
NUQ0MSAvKiBQZWVyTWVkaWFEZXNjcmlwdGlvbi5oICovLAorCQkJCTQxMTAzQUFBMUUzOTc5MEEw
MDc2OUYwMyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwICovLAorCQkJCTQxMTAz
QUE5MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCAqLywK
IAkJCQk0QTRGNjU2QjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAg
Ki8sCiAJCQkJNEE0RjY1NkMxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2Uu
aCAqLywKIAkJCQk0QTRGNjU2RDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcy5oICovLApAQCAtMTY1MDYsNiArMTY1MTYsOCBAQAogCQkJCTRBNEY2NTZG
MUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCAqLywKIAkJ
CQkyRUM0MURFMjFDMDQxMEEzMDBEMjk0RkUgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRl
ZENvbnN0cmFpbnRzLmNwcCAqLywKIAkJCQkwN0MxQzBFNDFCRkI2MEVEMDBCRDIyNTYgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggKi8sCisJCQkJNDExMDNBQTcx
RTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgKi8sCisJ
CQkJNDExMDNBQTgxRTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZS5oICovLAogCQkJCTMxMzU5MTBDMUU3RERDQjYwMEYzMDYzMCAvKiBSVENCdW5kbGVQb2xpY3ku
aCAqLywKIAkJCQkwNzIyMUJBMjE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmggKi8sCiAJCQkJMDcyMjFCQTMxN0NGMEFENDAwODQ4RTUxIC8qIFJUQ0RhdGFDaGFubmVs
SGFuZGxlckNsaWVudC5oICovLApAQCAtMTY1NTQsMTQgKzE2NTY2LDE0IEBACiAJCQkJMDc0NEVD
RUMxRTBDNEFFNTAwMEQwOTQ0IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tICovLAog
CQkJCTA3RUU3NkVEMUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yy5oICovLAogCQkJCTA3RUU3NkVFMUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZU1hYy5tbSAqLywKLQkJCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcCAqLywKLQkJCQk0MTEwM0FBOTFFMzk3OTBBMDA3NjlG
MDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi8sCisJCQkJNDExMDNBQUExRTM5
NzkwQTAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZU1hYy5jcHAgKi8sCisJ
CQkJNDExMDNBQTkxRTM5NzkwQTAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZU1hYy5oICovLAogCQkJCTVDREQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2UuY3BwICovLAogCQkJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLywKIAkJCQk0QTBGRkFBMzFBQUY1RUY2MDA2
MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgKi8sCiAJCQkJNEEwRkZB
QTQxQUFGNUVGNjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCAqLywK
LQkJCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcCAqLywKLQkJCQk0MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggKi8sCisJCQkJNDExMDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZU1hYy5jcHAgKi8sCisJCQkJNDExMDNBQTgxRTM5Nzkw
QTAwNzY5RjE0IC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZU1hYy5oICovLAogCQkJCTVD
REQ4MzNCMUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3Bw
ICovLAogCQkJCTVDREQ4MzNDMUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2UuaCAqLywKIAkJCQkwN0Q2MzczRTFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakMuaCAqLywKQEAgLTI5NjE0LDYgKzI5NjI2LDcgQEAKIAkJCQk0
MTI5QzlBQjFGNTlDNTczMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDNDMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5c2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTEwM0FBRDFFMzk3
OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlTWFjLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0
aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBMEZGQUEy
MUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI5NjIxLDYgKzI5NjM0LDcgQEAKIAkJCQk0QTRGNjU3NDFBQTk5N0YxMDBFMzhD
REQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
N0MxQzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENv
bnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMDMg
LyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTEw
M0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTWFjLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MUI5NTIyNDFGNThBNThGMDA5MzFEQzIgLyogUmVjb3JkaW5n
U3dpenpsZVR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQzNjhFODBDMjI2RTMyMDA1RUZC
NUYgLyogUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NTgxNzVENDE0QzAwQzIxRUM4
IC8qIFJlY3RhbmdsZVNoYXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNTgyLDYgKzMzNTk2LDcg
QEAKIAkJCQk0MTI5Qzk4QTFGNTg3RkVCMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDNCMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGlt
ZUFuYWx5c2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMTAzQUFFMUUzOTc5MTAwMDc2OUYw
MyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NDExMDNBQUUxRTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZU1h
Yy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODMzRTFFNDMyNERDMDA2MjFFOTIgLyogUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRBNEY2NTcw
MUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTRBMEZGQUExMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzM1ODksNiArMzM2MDQsNyBAQAogCQkJCTRBNEY2
NTczMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkVDNDFERTQxQzA0MTBBMzAwRDI5NEZFIC8qIFJlYWx0aW1lTWVk
aWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTEw
M0FBQjFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTQxMTAzQUFCMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2VNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzM0QxRTQz
MjREOTAwNjIxRTkyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBQjQxODExM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRjMjk1OGY1MTJiMzg4MTVlNTZkNDJiYmNhOWI4OGFkZDgzNjQ0YjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmli
dXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCIKKwor
I2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRpb0Zvcm1hdC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+
IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8gc291cmNlID0gYWRvcHRS
ZWYoKm5ldyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VNYWMoV1RGTW92ZShhdWRpb1RyYWNr
KSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpKSk7CisjZWxzZQorICAgIGF1dG8gc291cmNlID0gYWRv
cHRSZWYoKm5ldyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRpb1RyYWNr
KSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpKSk7CisjZW5kaWYKKyAgICBzb3VyY2UtPnN0YXJ0KCk7
CisgICAgcmV0dXJuIHNvdXJjZTsKK30KKworUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpS
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVk
aW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1RyYWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCisg
ICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFdURk1vdmUoYXVkaW9UcmFja0lkKSwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIFN0cmluZygpKQorICAgICwgbV9hdWRpb1RyYWNrKFdU
Rk1vdmUoYXVkaW9UcmFjaykpCit7CisgICAgbm90aWZ5TXV0ZWRDaGFuZ2UoIW1fYXVkaW9UcmFj
ayk7Cit9CisKK1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6flJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZSgpCit7CisgICAgc3RvcCgpOworfQorCit2b2lkIFJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNr
KQorICAgICAgICBtX2F1ZGlvVHJhY2stPkFkZFNpbmsodGhpcyk7Cit9CisKK3ZvaWQgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1f
YXVkaW9UcmFjaykKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5SZW1vdmVTaW5rKHRoaXMpOworfQor
Cit2b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlVHJhY2socnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiB0cmFjaykKK3sKKyAg
ICBBU1NFUlQoIW1fYXVkaW9UcmFjayk7CisgICAgQVNTRVJUKHRyYWNrKTsKKworICAgIG1fYXVk
aW9UcmFjayA9IFdURk1vdmUodHJhY2spOworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFtX2F1ZGlv
VHJhY2spOworICAgIGlmIChpc1Byb2R1Y2luZ0RhdGEoKSkKKyAgICAgICAgbV9hdWRpb1RyYWNr
LT5BZGRTaW5rKHRoaXMpOworfQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzJiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNhcGFiaWxpdGllcygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmVtcHR5Q2FwYWJp
bGl0aWVzKCk7Cit9CisKK2NvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXR0aW5ncygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Y3VycmVudFNldHRpbmdzOworfQorCit9CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZThiMzM2Yzk4MWM2ZWQ2
MWRlMTcyYjZiMjlmZGQ4NTlmYzczOTAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKQEAg
LTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo
aXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisj
aW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oIgorI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaD4KKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3Vy
Y2UsIHByaXZhdGUgd2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IGNyZWF0ZShydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CisK
KyAgICB2b2lkIHNldFNvdXJjZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlv
VHJhY2tJbnRlcmZhY2U+JiYpOworCitwcml2YXRlOgorICAgIFJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYm
LCBTdHJpbmcmJik7CisgICAgflJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpOworCisgICAg
Ly8gd2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSBBUEkKKyAgICB2aXJ0dWFsIHZvaWQg
T25EYXRhKGNvbnN0IHZvaWQqIC8qIGF1ZGlvRGF0YSAqLywgaW50IC8qIGJpdHNQZXJTYW1wbGUg
Ki8sIGludCAvKiBzYW1wbGVSYXRlICovLCBzaXplX3QgLyogbnVtYmVyT2ZDaGFubmVscyAqLywg
c2l6ZV90IC8qIG51bWJlck9mRnJhbWVzICovKSB7IH07CisKKyAgICAvLyBSZWFsdGltZU1lZGlh
U291cmNlIEFQSQorICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7CisgICAgdm9p
ZCBzdG9wUHJvZHVjaW5nRGF0YSgpICBmaW5hbDsKKworICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IGZpbmFsOworICAgIGNvbnN0
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBmaW5hbDsKKwor
ICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJlbnRTZXR0aW5nczsKKyAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiBtX2F1ZGlvVHJh
Y2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VC
UlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNj
ZTliNTQ2MWJhYWJiZTgxOTlhNTEzYzEyNGQzYWRmYTM2OGRlYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZS5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVp
cmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAi
TGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VNYWMoV1RGTW92ZShh
dWRpb1NvdXJjZSkpKTsKKyNlbHNlCisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlKFdURk1vdmUoYXVkaW9Tb3VyY2UpKSk7CisjZW5kaWYKK30KKwor
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2Uo
UmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQorICAgIDogbV9hdWRp
b1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkKKyAgICAsIG1fc2lsZW5jZUF1ZGlvVGltZXIo
KnRoaXMsICZSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRTaWxlbmNlKQoreworICAg
IG1fYXVkaW9Tb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKKyAgICBpbml0aWFsaXplQ29udmVy
dGVyKCk7Cit9CisKK2Jvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZXRTb3VyY2Uo
UmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIG5ld1NvdXJjZSkKK3sKKyAgICBtX2F1ZGlv
U291cmNlLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CisgICAgbV9hdWRpb1NvdXJjZSA9IFdURk1v
dmUobmV3U291cmNlKTsKKyAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7CisK
KyAgICBpbml0aWFsaXplQ29udmVydGVyKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjppbml0aWFsaXplQ29udmVydGVyKCkKK3sKKyAg
ICBtX211dGVkID0gbV9hdWRpb1NvdXJjZS0+bXV0ZWQoKTsKKyAgICBtX2VuYWJsZWQgPSBtX2F1
ZGlvU291cmNlLT5lbmFibGVkKCk7CisgICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOworfQorCit2
b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c3RvcCgpCit7CisgICAgbV9zaWxlbmNl
QXVkaW9UaW1lci5zdG9wKCk7CisgICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRo
aXMpOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlTXV0ZWRD
aGFuZ2VkKCkKK3sKKyAgICBtX211dGVkID0gbV9hdWRpb1NvdXJjZS0+bXV0ZWQoKTsKKyAgICBo
YW5kbGVNdXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCgpCit7CisgICAgbV9lbmFibGVkID0gbV9hdWRpb1Nv
dXJjZS0+ZW5hYmxlZCgpOworICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKK30KKwordm9pZCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmhhbmRsZU11dGVkSWZOZWVkZWQoKQoreworICAg
IGJvb2wgaXNTaWxlbmNlZCA9IG1fbXV0ZWQgfHwgIW1fZW5hYmxlZDsKKyAgICBpZiAoaXNTaWxl
bmNlZCAmJiAhbV9zaWxlbmNlQXVkaW9UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3NpbGVu
Y2VBdWRpb1RpbWVyLnN0YXJ0UmVwZWF0aW5nKDFfcyk7CisgICAgaWYgKCFpc1NpbGVuY2VkICYm
IG1fc2lsZW5jZUF1ZGlvVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9zaWxlbmNlQXVkaW9U
aW1lci5zdG9wKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVT
RShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA0ZGU3ZDc1MzA4NjI1OTg4ODI0MzU0MWIyMDQxOTk1ZTk2MGJhZjgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UuaApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVx
dWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAq
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisKKyNpZiBVU0UoTElCV0VCUlRDKQor
CisjaW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvbWVk
aWFzdHJlYW1pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aD4KKworbmFtZXNwYWNlIHdlYnJ0YyB7CitjbGFzcyBBdWRpb1RyYWNrSW50ZXJmYWNlOworY2xh
c3MgQXVkaW9UcmFja1NpbmtJbnRlcmZhY2U7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlIGZpbmFsIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4sIHB1YmxpYyB3ZWJydGM6
OkF1ZGlvU291cmNlSW50ZXJmYWNlLCBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpP
YnNlcnZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2U+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgYXVkaW9Tb3VyY2Up
OworCisgICAgflJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSgpIHsgc3RvcCgpOyB9CisKKyAg
ICB2b2lkIHN0b3AoKTsKKworICAgIGJvb2wgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZT4mJik7CisgICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXVkaW9Tb3VyY2UuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
PiYmKTsKKworICAgIHZpcnR1YWwgdm9pZCBBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJ
bnRlcmZhY2UqIHNpbmspIHsgbV9zaW5rcy5hcHBlbmQoc2luayk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgUmVtb3ZlU2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1f
c2lua3MucmVtb3ZlRmlyc3Qoc2luayk7IH0KKworICAgIGludCBBZGRSZWYoKSBjb25zdCBmaW5h
bCB7IHJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQorICAgIGludCBSZWxlYXNlKCkgY29uc3Qg
ZmluYWwgeyBkZXJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQorICAgIFNvdXJjZVN0YXRlIHN0
YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4ga0xpdmU7IH0KKyAgICBib29sIHJlbW90ZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBSZWdpc3Rlck9ic2VydmVyKHdl
YnJ0Yzo6T2JzZXJ2ZXJJbnRlcmZhY2UqKSBmaW5hbCB7IH0KKyAgICB2b2lkIFVucmVnaXN0ZXJP
YnNlcnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9CisKKyAgICB2b2lk
IHNvdXJjZU11dGVkQ2hhbmdlZCgpOworICAgIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYs
IGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYs
IHNpemVfdCkgeyB9OworCisgICAgdmlydHVhbCBib29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlv
RGF0YUhpZ2hMaW1pdCgpIHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgYm9vbCBpc1Jl
YWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpIHsgcmV0dXJuIGZhbHNlOyB9OworICAg
IHZpcnR1YWwgYm9vbCBoYXNCdWZmZXJlZEVub3VnaERhdGEoKSB7IHJldHVybiBmYWxzZTsgfTsK
KworICAgIC8vIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciBBUEkKKyAgICB2b2lk
IHRyYWNrTXV0ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyBzb3Vy
Y2VNdXRlZENoYW5nZWQoKTsgfQorICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hhbmdlZChNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlRW5hYmxlZENoYW5nZWQoKTsgfQorICAg
IHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgY29u
c3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBj
b25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNv
dW50KSBmaW5hbCB7IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGRhdGEsIGRlc2Ny
aXB0aW9uLCBzYW1wbGVDb3VudCk7IH0KKyAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KKyAgICB2b2lkIHRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVs
bEF1ZGlvRGF0YSgpIHsgfTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOworICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVNdXRlZElmTmVlZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHNl
bmRTaWxlbmNlKCkgeyB9OworCisgICAgVmVjdG9yPHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRl
cmZhY2UqPiBtX3NpbmtzOworICAgIFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gbV9hdWRp
b1NvdXJjZTsKKworICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2VuYWJs
ZWQgeyB0cnVlIH07CisgICAgVGltZXIgbV9zaWxlbmNlQXVkaW9UaW1lcjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4NzUzOGNkMDU1YjRkY2E0OTkyMWIyZDUxZDgwZjA4MmViMjI2NzM3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiAgICBkaXN0cmlidXRpb24uCi0gKiAz
LiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNv
bnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCIKLQotI2lmIFVTRShMSUJX
RUJSVEMpCi0KLSNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAi
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3Jt
YXQuaCIKLSNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKLSNpbmNsdWRlICJXZWJBdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIgotI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVk
aWFUaW1lQVZGb3VuZGF0aW9uLmg+Ci0KLSNpbmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+
IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQotewotICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBSZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQp
KSk7Ci0gICAgc291cmNlLT5zdGFydCgpOwotICAgIHJldHVybiBzb3VyY2U7Ci19Ci0KLVJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywg
U3RyaW5nJiYgYXVkaW9UcmFja0lkKQotICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3Zl
KGF1ZGlvVHJhY2tJZCksIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmco
KSkKLSAgICAsIG1fYXVkaW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQotewotICAgIG5vdGlm
eU11dGVkQ2hhbmdlKCFtX2F1ZGlvVHJhY2spOwotfQotCi1SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2U6On5SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UoKQotewotICAgIHN0b3AoKTsKLX0K
LQotCi1zdGF0aWMgaW5saW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1EZXNj
cmlwdGlvbihzaXplX3Qgc2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKLXsKLSAgICBB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgIEZpbGxPdXRBU0JE
Rm9yTFBDTShzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUsIGNoYW5uZWxDb3VudCwgTGliV2ViUlRD
QXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXpl
LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6Omlz
QmlnRW5kaWFuLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0gICAg
cmV0dXJuIHN0cmVhbUZvcm1hdDsKLX0KLQotdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2U6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQg
c2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1l
cykKLXsKLSAgICAvLyBXZSBtYXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0aCBlbXB0eSBzb3Vu
ZCBkYXRhIChtb25vLCBzYW1wbGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBsZVJhdGUgZXF1YWwg
dG8gMTYwMDApIHdoZW4gc3RhcnRpbmcgdGhlIGNhbGwuCi0gICAgLy8gRklYTUU6IEZvciB0aGUg
bW9tZW50IHdlIHNraXAgdGhlbSwgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gYXQg
bGlid2VicnRjIGxldmVsIHRvIG5vdCBiZSBjYWxsZWQgdW50aWwgZ2V0dGluZyBzb21lIHJlYWwg
ZGF0YS4KLSAgICBpZiAoc2FtcGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJPZkNoYW5uZWxzID09
IDEpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChiaXRzUGVyU2FtcGxlID09IDE2KTsK
LSAgICBBU1NFUlQobnVtYmVyT2ZDaGFubmVscyA9PSAxIHx8IG51bWJlck9mQ2hhbm5lbHMgPT0g
Mik7Ci0gICAgQVNTRVJUKHNhbXBsZVJhdGUgPT0gNDgwMDApOwotCi0gICAgQ01UaW1lIHN0YXJ0
VGltZSA9IENNVGltZU1ha2UobV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7Ci0gICAgYXV0
byBtZWRpYVRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7Ci0gICAgbV9udW1iZXJP
ZkZyYW1lcyArPSBudW1iZXJPZkZyYW1lczsKLQotICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbiBuZXdEZXNjcmlwdGlvbiA9IHN0cmVhbURlc2NyaXB0aW9uKHNhbXBsZVJhdGUsIG51bWJl
ck9mQ2hhbm5lbHMpOwotCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyB0
aGUgZXh0cmEgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGNvcHkuCi0gICAgLy8gSW5zdGVhZCwgd2Ug
c2hvdWxkIGJlIGFibGUgdG8gZGlyZWN0bHkgcGFzcyBhdWRpb0RhdGEgcG9pbnRlci4KLSAgICBX
ZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uKG5ld0Rlc2NyaXB0aW9uKSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFt
ZXMpIH07Ci0gICAgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSA9IG51
bWJlck9mQ2hhbm5lbHMgKiBudW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1wbGUgLyA4OwotICAg
IGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9IG51bWJlck9mQ2hh
bm5lbHM7Ci0KLSAgICBpZiAobXV0ZWQoKSkKLSAgICAgICAgbWVtc2V0KGF1ZGlvQnVmZmVyTGlz
dC5idWZmZXIoMCktPm1EYXRhLCAwLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5
dGVTaXplKTsKLSAgICBlbHNlCi0gICAgICAgIG1lbWNweShhdWRpb0J1ZmZlckxpc3QuYnVmZmVy
KDApLT5tRGF0YSwgYXVkaW9EYXRhLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5
dGVTaXplKTsKLQotICAgIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVm
ZmVyTGlzdCwgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgbnVtYmVy
T2ZGcmFtZXMpOwotfQotCi12b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RhcnRQ
cm9kdWNpbmdEYXRhKCkKLXsKLSAgICBpZiAobV9hdWRpb1RyYWNrKQotICAgICAgICBtX2F1ZGlv
VHJhY2stPkFkZFNpbmsodGhpcyk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCi17Ci0gICAgaWYgKG1fYXVkaW9UcmFjaykKLSAgICAg
ICAgbV9hdWRpb1RyYWNrLT5SZW1vdmVTaW5rKHRoaXMpOwotfQotCi12b2lkIFJlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiB0cmFjaykKLXsKLSAgICBBU1NFUlQoIW1fYXVkaW9U
cmFjayk7Ci0gICAgQVNTRVJUKHRyYWNrKTsKLQotICAgIG1fYXVkaW9UcmFjayA9IFdURk1vdmUo
dHJhY2spOwotICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFtX2F1ZGlvVHJhY2spOwotICAgIGlmIChp
c1Byb2R1Y2luZ0RhdGEoKSkKLSAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOwot
fQotCi1jb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBSZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2U6OmNhcGFiaWxpdGllcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFJlYWx0
aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmVtcHR5Q2FwYWJpbGl0aWVzKCk7Ci19Ci0KLWNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlOjpzZXR0aW5ncygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOwot
fQotCi19Ci0KLSNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjYwMjIw
ODUxOTdmZjM5YTY4NTQ3MDFlZmIyMGZiOWUwZGQ0ZTQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaAorKysgL2Rldi9udWxsCkBAIC0x
LDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiAgICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz
Ci0gKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2lu
Y2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2Uu
aCIKLSNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KLSNpbmNsdWRlIDx3ZWJy
dGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgotCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uICpDTUZv
cm1hdERlc2NyaXB0aW9uUmVmOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOwotCi1jbGFzcyBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UgZmluYWwgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSwgcHJpdmF0ZSB3ZWJydGM6
OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZT4gY3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKLQotICAgIHZvaWQgc2V0U291cmNl
VHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJik7
Ci0KLXByaXZhdGU6Ci0gICAgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKLSAgICB+
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKCk7Ci0KLSAgICAvLyB3ZWJydGM6OkF1ZGlvVHJh
Y2tTaW5rSW50ZXJmYWNlIEFQSQotICAgIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0
YSwgaW50IGJpdHNQZXJTYW1wbGUsIGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFu
bmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzKSBmaW5hbDsKLQotICAgIC8vIFJlYWx0aW1lTWVk
aWFTb3VyY2UgQVBJCi0gICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICB2
b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgIGZpbmFsOwotCi0gICAgY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7Ci0gICAgY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOwot
Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIG1fY3VycmVudFNldHRpbmdzOwotICAg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+IG1fYXVkaW9U
cmFjazsKLQotICAgIHVpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlTWFjLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzE1
NGQ1MjFiNGJlNjdlOTBlZjhhYWVlN2U2YmIxODNlOTgzMzcwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZU1hYy5jcHAKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24u
CisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VNYWMuaCIKKworI2lm
IFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisj
aW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTGliV2ViUlRD
QXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKKyNpbmNsdWRl
ICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIgorI2luY2x1ZGUgPHBhbC9hdmZvdW5k
YXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisKKyNpbmNsdWRlICJDb3JlTWVkaWFTb2Z0
TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VNYWM+IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZU1hYzo6Y3JlYXRlKHJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywg
U3RyaW5nJiYgYXVkaW9UcmFja0lkKQoreworICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5l
dyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VNYWMoV1RGTW92ZShhdWRpb1RyYWNrKSwgV1RG
TW92ZShhdWRpb1RyYWNrSWQpKSk7CisgICAgc291cmNlLT5zdGFydCgpOworICAgIHJldHVybiBz
b3VyY2U7Cit9CisKK1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZU1hYzo6UmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlTWFjKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJ
bnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQorICAgIDogUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlTWFjKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUo
YXVkaW9UcmFja0lkKSkKK3sKK30KKworCitzdGF0aWMgaW5saW5lIEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbiBzdHJlYW1EZXNjcmlwdGlvbihzaXplX3Qgc2FtcGxlUmF0ZSwgc2l6ZV90IGNo
YW5uZWxDb3VudCkKK3sKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9y
bWF0OworICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUsIGNo
YW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1
ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNGbG9hdCwgTGli
V2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNO
b25JbnRlcmxlYXZlZCk7CisgICAgcmV0dXJuIHN0cmVhbUZvcm1hdDsKK30KKwordm9pZCBSZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2VNYWM6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEs
IGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5l
bHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKK3sKKyAgICAvLyBXZSBtYXkgcmVjZWl2ZSBPbkRh
dGEgY2FsbHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1wbGVzIGVxdWFsIHRvIHpl
cm8gYW5kIHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4gc3RhcnRpbmcgdGhlIGNhbGwu
CisgICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAgdGhlbSwgd2Ugc2hvdWxkIGZp
bmQgYSBiZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVsIHRvIG5vdCBiZSBjYWxsZWQg
dW50aWwgZ2V0dGluZyBzb21lIHJlYWwgZGF0YS4KKyAgICBpZiAoc2FtcGxlUmF0ZSA9PSAxNjAw
MCAmJiBudW1iZXJPZkNoYW5uZWxzID09IDEpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VS
VChiaXRzUGVyU2FtcGxlID09IDE2KTsKKyAgICBBU1NFUlQobnVtYmVyT2ZDaGFubmVscyA9PSAx
IHx8IG51bWJlck9mQ2hhbm5lbHMgPT0gMik7CisgICAgQVNTRVJUKHNhbXBsZVJhdGUgPT0gNDgw
MDApOworCisgICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1ha2UobV9udW1iZXJPZkZyYW1l
cywgc2FtcGxlUmF0ZSk7CisgICAgYXV0byBtZWRpYVRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKHN0
YXJ0VGltZSk7CisgICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1iZXJPZkZyYW1lczsKKworICAg
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlwdGlvbiA9IHN0cmVhbURlc2Ny
aXB0aW9uKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpOworCisgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBub3QgbmVlZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGNv
cHkuCisgICAgLy8gSW5zdGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZGlyZWN0bHkgcGFzcyBh
dWRpb0RhdGEgcG9pbnRlci4KKyAgICBXZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9CdWZmZXJMaXN0
IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgV1RGOjpzYWZlQ2Fz
dDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpIH07CisgICAgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZl
cigwKS0+bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMgKiBudW1iZXJPZkZyYW1lcyAq
IGJpdHNQZXJTYW1wbGUgLyA4OworICAgIGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1OdW1i
ZXJDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7CisKKyAgICBpZiAobXV0ZWQoKSkKKyAgICAg
ICAgbWVtc2V0KGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRhLCAwLCBhdWRpb0J1ZmZl
ckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKKyAgICBlbHNlCisgICAgICAgIG1lbWNw
eShhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgYXVkaW9EYXRhLCBhdWRpb0J1ZmZl
ckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKKworICAgIGF1ZGlvU2FtcGxlc0F2YWls
YWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
KG5ld0Rlc2NyaXB0aW9uKSwgbnVtYmVyT2ZGcmFtZXMpOworfQorCit9CisKKyNlbmRpZiAvLyBV
U0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZU1hYy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZU1h
Yy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUxNmRhYzNmOTI5MDkzNTc1ZGRiYTNmNzAyM2FjMTg2ZmI2YTkyMGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlTWFjLmgKQEAgLTAsMCArMSw2MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
ICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9y
IHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmgiCisKKyNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlw
ZXMuaD4KKwordHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiAq
Q01Gb3JtYXREZXNjcmlwdGlvblJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBX
ZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzsKKworY2xhc3MgUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlTWFjIGZpbmFsIDogcHVibGljIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSwg
cHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UsIHByaXZhdGUgd2VicnRjOjpBdWRpb1RyYWNrU2lu
a0ludGVyZmFjZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VNYWM+IGNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNr
SW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CisKK3ByaXZhdGU6CisgICAgUmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlTWFjKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRl
cmZhY2U+JiYsIFN0cmluZyYmKTsKKyAgICB+UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlTWFj
KCkgeyB9OworCisgICAgLy8gd2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSBBUEkKKyAg
ICB2b2lkIE9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBp
bnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZy
YW1lcykgZmluYWw7CisKKyAgICB1aW50NjRfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGQ5MTAxZGM0Mzc5MTdkNTEwZTc0YmZjNzc1MWM3YzcwYzdkYzIyYTQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgcmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCIKLQotI2lmIFVTRShMSUJXRUJSVEMpCi0KLSNp
bmNsdWRlICJDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKLSNpbmNsdWRlICJMaWJXZWJSVENB
dWRpb0Zvcm1hdC5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotc3RhdGljIGlubGluZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24g
bGlid2VicnRjQXVkaW9Gb3JtYXQoRmxvYXQ2NCBzYW1wbGVSYXRlLCBzaXplX3QgY2hhbm5lbENv
dW50KQotewotICAgIC8vIEZJWE1FOiBNaWNyb3Bob25lcyBjYW4gaGF2ZSBtb3JlIHRoYW4gdHdv
IGNoYW5uZWxzLiBJbiBzdWNoIGNhc2UsIHdlIHNob3VsZCBkbyB0aGUgbWl4IGRvd24gYmFzZWQg
b24gQXVkaW9DaGFubmVsTGF5b3V0VGFnLgotICAgIHNpemVfdCBsaWJXZWJSVENDaGFubmVsQ291
bnQgPSBjaGFubmVsQ291bnQgPj0gMiA/IDIgOiBjaGFubmVsQ291bnQ7Ci0gICAgQXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKLSAgICBGaWxsT3V0QVNCREZvckxQQ00o
c3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlLCBsaWJXZWJSVENDaGFubmVsQ291bnQsIExpYldlYlJU
Q0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6
ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzRmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojpp
c0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQpOwotICAg
IHJldHVybiBzdHJlYW1Gb3JtYXQ7Ci19Ci0KLVJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4m
JiBhdWRpb1NvdXJjZSkKLSAgICA6IG1fYXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRpb1NvdXJjZSkp
Ci0gICAgLCBtX3NhbXBsZUNvbnZlcnRlcihBdWRpb1NhbXBsZURhdGFTb3VyY2U6OmNyZWF0ZShM
aWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlUmF0ZSAqIDIpKQotICAgICwgbV9zaWxlbmNlQXVk
aW9UaW1lcigqdGhpcywgJlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2VuZFNpbGVuY2Up
Ci17Ci0gICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwotICAgIGluaXRpYWxp
emVDb252ZXJ0ZXIoKTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNl
dFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgbmV3U291cmNlKQotewotICAg
IG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKLSAgICBtX2F1ZGlvU291cmNl
ID0gV1RGTW92ZShuZXdTb3VyY2UpOwotICAgIG1fYXVkaW9Tb3VyY2UtPmFkZE9ic2VydmVyKCp0
aGlzKTsKLQotICAgIGluaXRpYWxpemVDb252ZXJ0ZXIoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmluaXRpYWxpemVDb252ZXJ0ZXIo
KQotewotICAgIG1fbXV0ZWQgPSBtX2F1ZGlvU291cmNlLT5tdXRlZCgpOwotICAgIG1fZW5hYmxl
ZCA9IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsKLSAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7
Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzdG9wKCkKLXsKLSAgICBt
X3NpbGVuY2VBdWRpb1RpbWVyLnN0b3AoKTsKLSAgICBtX2F1ZGlvU291cmNlLT5yZW1vdmVPYnNl
cnZlcigqdGhpcyk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzb3Vy
Y2VNdXRlZENoYW5nZWQoKQotewotICAgIG1fbXV0ZWQgPSBtX2F1ZGlvU291cmNlLT5tdXRlZCgp
OwotICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2U6OnNvdXJjZUVuYWJsZWRDaGFuZ2VkKCkKLXsKLSAgICBtX2VuYWJsZWQgPSBt
X2F1ZGlvU291cmNlLT5lbmFibGVkKCk7Ci0gICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwotfQot
Ci12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aGFuZGxlTXV0ZWRJZk5lZWRlZCgp
Ci17Ci0gICAgYm9vbCBpc1NpbGVuY2VkID0gbV9tdXRlZCB8fCAhbV9lbmFibGVkOwotICAgIG1f
c2FtcGxlQ29udmVydGVyLT5zZXRNdXRlZChpc1NpbGVuY2VkKTsKLSAgICBpZiAoaXNTaWxlbmNl
ZCAmJiAhbV9zaWxlbmNlQXVkaW9UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3NpbGVuY2VB
dWRpb1RpbWVyLnN0YXJ0UmVwZWF0aW5nKDFfcyk7Ci0gICAgaWYgKCFpc1NpbGVuY2VkICYmIG1f
c2lsZW5jZUF1ZGlvVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9zaWxlbmNlQXVkaW9UaW1l
ci5zdG9wKCk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2ls
ZW5jZSgpCi17Ci0gICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1Ro
cmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIHNp
emVfdCBjaHVua1NhbXBsZUNvdW50ID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVS
YXRlKCkgLyAxMDA7Ci0gICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gY2h1bmtTYW1wbGVDb3Vu
dCAqIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAqIG1fb3V0cHV0U3RyZWFt
RGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOwotCi0gICAgICAgIGlmICghYnVmZmVyU2l6
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX2F1ZGlvQnVmZmVyLmdyb3coYnVm
ZmVyU2l6ZSk7Ci0gICAgICAgIG1lbXNldChtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgMCwgYnVmZmVy
U2l6ZSk7Ci0gICAgICAgIGZvciAoYXV0byBzaW5rIDogbV9zaW5rcykKLSAgICAgICAgICAgIHNp
bmstPk9uRGF0YShtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNh
bXBsZVNpemUsIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpLCBtX291dHB1
dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSwgY2h1bmtTYW1wbGVDb3VudCk7
Ci0gICAgfSk7Ci19Ci0KLWJvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjppc1JlYWNo
aW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKQotewotICAgIGF1dG8gd3JpdHRlbkF1ZGlv
RHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpOwotICAgIGF1dG8gcmVhZEF1ZGlvRHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1fb3V0
cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotCi0gICAgQVNTRVJUKHdyaXR0ZW5B
dWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1cmF0aW9uKTsKLSAgICByZXR1cm4gd3JpdHRlbkF1
ZGlvRHVyYXRpb24gPiByZWFkQXVkaW9EdXJhdGlvbiArIDAuNTsKLX0KLQotYm9vbCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0
KCkKLXsKLSAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9p
bnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKLSAgICBhdXRvIHJlYWRBdWRpb0R1
cmF0aW9uID0gbV9yZWFkQ291bnQgLyBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJh
dGUoKTsKLQotICAgIEFTU0VSVCh3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJh
dGlvbik7Ci0gICAgcmV0dXJuIHdyaXR0ZW5BdWRpb0R1cmF0aW9uIDwgcmVhZEF1ZGlvRHVyYXRp
b24gKyAwLjE7Ci19Ci0KLWJvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpoYXNCdWZm
ZXJlZEVuZ291aERhdGEoKQotewotICAgIGF1dG8gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dy
aXRlQ291bnQgLyBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotICAgIGF1
dG8gcmVhZEF1ZGlvRHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1fb3V0cHV0U3RyZWFtRGVzY3Jp
cHRpb24uc2FtcGxlUmF0ZSgpOwotCi0gICAgQVNTRVJUKHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49
IHJlYWRBdWRpb0R1cmF0aW9uKTsKLSAgICByZXR1cm4gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0g
cmVhZEF1ZGlvRHVyYXRpb24gKyAwLjAxOwotfQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IHN0cmVhbURlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCi17Ci0gICAgaWYgKG1faW5w
dXRTdHJlYW1EZXNjcmlwdGlvbiAhPSBzdHJlYW1EZXNjcmlwdGlvbikgewotICAgICAgICBtX2lu
cHV0U3RyZWFtRGVzY3JpcHRpb24gPSB0b0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihzdHJlYW1E
ZXNjcmlwdGlvbik7Ci0gICAgICAgIGF1dG8gc3RhdHVzICA9IG1fc2FtcGxlQ29udmVydGVyLT5z
ZXRJbnB1dEZvcm1hdChtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24pOwotICAgICAgICBBU1NFUlRf
VU5VU0VEKHN0YXR1cywgIXN0YXR1cyk7Ci0KLSAgICAgICAgbV9vdXRwdXRTdHJlYW1EZXNjcmlw
dGlvbiA9IGxpYndlYnJ0Y0F1ZGlvRm9ybWF0KExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVS
YXRlLCBzdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCkpOwotICAgICAgICBzdGF0
dXMgPSBtX3NhbXBsZUNvbnZlcnRlci0+c2V0T3V0cHV0Rm9ybWF0KG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSk7Ci0gICAgICAgIEFTU0VSVCghc3RhdHVzKTsK
LSAgICB9Ci0KLSAgICAvLyBMZXQncyBza2lwIHB1c2hpbmcgc2FtcGxlcyBpZiB3ZSBhcmUgdG9v
IHNsb3cgcHVsbGluZyB0aGVtLgotICAgIGlmIChtX3NraXBwaW5nQXVkaW9EYXRhKSB7Ci0gICAg
ICAgIGlmICghaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGltaXQoKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgbV9za2lwcGluZ0F1ZGlvRGF0YSA9IGZhbHNlOwotICAgIH0g
ZWxzZSBpZiAoaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCkpIHsKLSAgICAg
ICAgbV9za2lwcGluZ0F1ZGlvRGF0YSA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICAvLyBJZiB3ZSBjaGFuZ2UgdGhlIGF1ZGlvIHRyYWNrIG9yIGl0cyBzYW1wbGUgcmF0ZSBj
aGFuZ2VzLCB0aGUgdGltZXN0YW1wIGJhc2VkIG9uIG1fd3JpdGVDb3VudCBtYXkgYmUgd3Jvbmcu
Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB1cGRhdGUgbV93cml0ZUNvdW50IHRvIGJlIHZhbGlk
IGFjY29yZGluZyB0aGUgbmV3IHNhbXBsZVJhdGUuCi0gICAgbV9zYW1wbGVDb252ZXJ0ZXItPnB1
c2hTYW1wbGVzKE1lZGlhVGltZShtX3dyaXRlQ291bnQsIHN0YXRpY19jYXN0PHVpbnQzMl90Piht
X2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpKSksIGF1ZGlvRGF0YSwgc2FtcGxl
Q291bnQpOwotICAgIG1fd3JpdGVDb3VudCArPSBzYW1wbGVDb3VudDsKLQotICAgIGlmICghaGFz
QnVmZmVyZWRFbmdvdWhEYXRhKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIExpYldlYlJUQ1By
b3ZpZGVyOjpjYWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0gewotICAgICAgICBwcm90ZWN0ZWRUaGlzLT5wdWxsQXVkaW9EYXRhKCk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpwdWxsQXVkaW9E
YXRhKCkKLXsKLSAgICAvLyBsaWJ3ZWJydGMgZXhwZWN0cyAxMCBtcyBjaHVua3MuCi0gICAgc2l6
ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJh
dGUoKSAvIDEwMDsKLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IGNodW5rU2FtcGxlQ291bnQgKiBM
aWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlQnl0ZVNpemUgKiBtX291dHB1dFN0cmVhbURlc2Ny
aXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKTsKLSAgICBtX2F1ZGlvQnVmZmVyLmdyb3coYnVmZmVy
U2l6ZSk7Ci0KLSAgICBBdWRpb0J1ZmZlckxpc3QgYnVmZmVyTGlzdDsKLSAgICBidWZmZXJMaXN0
Lm1OdW1iZXJCdWZmZXJzID0gMTsKLSAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJD
aGFubmVscyA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOwot
ICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IGJ1ZmZlclNpemU7Ci0g
ICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YSA9IG1fYXVkaW9CdWZmZXIuZGF0YSgpOwot
Ci0gICAgbV9zYW1wbGVDb252ZXJ0ZXItPnB1bGxBdmFsYWlibGVTYW1wbGVzQXNDaHVua3MoYnVm
ZmVyTGlzdCwgY2h1bmtTYW1wbGVDb3VudCwgbV9yZWFkQ291bnQsIFt0aGlzLCBjaHVua1NhbXBs
ZUNvdW50XSB7Ci0gICAgICAgIG1fcmVhZENvdW50ICs9IGNodW5rU2FtcGxlQ291bnQ7Ci0gICAg
ICAgIGZvciAoYXV0byBzaW5rIDogbV9zaW5rcykKLSAgICAgICAgICAgIHNpbmstPk9uRGF0YSht
X2F1ZGlvQnVmZmVyLmRhdGEoKSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIG1f
b3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpLCBtX291dHB1dFN0cmVhbURlc2Ny
aXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSwgY2h1bmtTYW1wbGVDb3VudCk7Ci0gICAgfSk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBlYmM4MDRlNDk1ODUzMGJlNjYwMmZmZDYxYTJiNTNjN2ViNmU1NzQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJl
cXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0g
KiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShMSUJXRUJSVEMpCi0K
LSNpbmNsdWRlICJBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCIKLSNpbmNsdWRlICJMaWJXZWJSVENN
YWNyb3MuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgotI2luY2x1ZGUg
IlRpbWVyLmgiCi0jaW5jbHVkZSA8d2VicnRjL2FwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oPgot
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2Ugd2VicnRj
IHsKLWNsYXNzIEF1ZGlvVHJhY2tJbnRlcmZhY2U7Ci1jbGFzcyBBdWRpb1RyYWNrU2lua0ludGVy
ZmFjZTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlPiwgcHVibGljIHdlYnJ0Yzo6QXVkaW9Tb3VyY2VJbnRlcmZhY2Us
IHByaXZhdGUgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4gY3JlYXRlKFJlZjxNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRpb1NvdXJjZSkpKTsgfQot
ICAgIH5SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoKSB7IHN0b3AoKTsgfQotCi0gICAgdm9p
ZCBzdG9wKCk7Ci0KLSAgICBib29sIHNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU+JiYpOwotICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiBzb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBtX2F1ZGlvU291cmNlLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgQWRkU2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJm
YWNlKiBzaW5rKSB7IG1fc2lua3MuYXBwZW5kKHNpbmspOyB9Ci0gICAgdmlydHVhbCB2b2lkIFJl
bW92ZVNpbmsod2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSogc2luaykgeyBtX3Npbmtz
LnJlbW92ZUZpcnN0KHNpbmspOyB9Ci0KLSAgICBpbnQgQWRkUmVmKCkgY29uc3QgZmluYWwgeyBy
ZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7IH0KLSAgICBpbnQgUmVsZWFzZSgpIGNvbnN0IGZpbmFs
IHsgZGVyZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7IH0KLSAgICBTb3VyY2VTdGF0ZSBzdGF0ZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGtMaXZlOyB9Ci0gICAgYm9vbCByZW1vdGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgUmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6
Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9Ci0gICAgdm9pZCBVbnJlZ2lzdGVyT2JzZXJ2
ZXIod2VicnRjOjpPYnNlcnZlckludGVyZmFjZSopIGZpbmFsIHsgfQotCi0gICAgdm9pZCBzb3Vy
Y2VNdXRlZENoYW5nZWQoKTsKLSAgICB2b2lkIHNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7Ci0gICAg
dm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KTsKLQot
ICAgIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCk7Ci0gICAgYm9v
bCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpOwotICAgIGJvb2wgaGFzQnVm
ZmVyZWRFbmdvdWhEYXRhKCk7Ci0KLSAgICAvLyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2Jz
ZXJ2ZXIgQVBJCi0gICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSYpIGZpbmFsIHsgc291cmNlTXV0ZWRDaGFuZ2VkKCk7IH0KLSAgICB2b2lkIHRyYWNrRW5h
YmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IHNvdXJjZUVuYWJs
ZWRDaGFuZ2VkKCk7IH0KLSAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZSYsIGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lLCBjb25zdCBQbGF0Zm9y
bUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24sIHNpemVfdCBzYW1wbGVDb3VudCkgZmluYWwgeyBhdWRpb1NhbXBsZXNBdmFpbGFibGUobWVk
aWFUaW1lLCBkYXRhLCBkZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQpOyB9Ci0gICAgdm9pZCB0cmFj
a0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9Ci0gICAgdm9pZCB0cmFj
a1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQotCi0g
ICAgdm9pZCBwdWxsQXVkaW9EYXRhKCk7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVDb252ZXJ0ZXIo
KTsKLSAgICB2b2lkIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKLSAgICB2b2lkIHNlbmRTaWxlbmNl
KCk7Ci0KLSAgICBWZWN0b3I8d2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSo+IG1fc2lu
a3M7Ci0gICAgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX2F1ZGlvU291cmNlOwotICAg
IFJlZjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fc2FtcGxlQ29udmVydGVyOwotICAgIENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb247Ci0gICAgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb247Ci0KLSAgICBWZWN0
b3I8dWludDhfdD4gbV9hdWRpb0J1ZmZlcjsKLSAgICB1aW50NjRfdCBtX3JlYWRDb3VudCB7IDAg
fTsKLSAgICB1aW50NjRfdCBtX3dyaXRlQ291bnQgeyAwIH07Ci0gICAgYm9vbCBtX211dGVkIHsg
ZmFsc2UgfTsKLSAgICBib29sIG1fZW5hYmxlZCB7IHRydWUgfTsKLSAgICBib29sIG1fc2tpcHBp
bmdBdWRpb0RhdGEgeyBmYWxzZSB9OwotICAgIFRpbWVyIG1fc2lsZW5jZUF1ZGlvVGltZXI7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTWFjLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45ZjkxNjg5NTE4ZGJkNWZmOGFhZmYxNGEwMzc0YmQ4NzUyNTNhNzI2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZU1hYy5jcHAKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTWFjLmgiCisKKyNpZiBVU0UoTElCV0VC
UlRDKQorCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAi
TGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uIGxpYndlYnJ0Y0F1ZGlvRm9ybWF0KEZsb2F0NjQgc2FtcGxlUmF0ZSwgc2l6ZV90
IGNoYW5uZWxDb3VudCkKK3sKKyAgICAvLyBGSVhNRTogTWljcm9waG9uZXMgY2FuIGhhdmUgbW9y
ZSB0aGFuIHR3byBjaGFubmVscy4gSW4gc3VjaCBjYXNlLCB3ZSBzaG91bGQgZG8gdGhlIG1peCBk
b3duIGJhc2VkIG9uIEF1ZGlvQ2hhbm5lbExheW91dFRhZy4KKyAgICBzaXplX3QgbGliV2ViUlRD
Q2hhbm5lbENvdW50ID0gY2hhbm5lbENvdW50ID49IDIgPyAyIDogY2hhbm5lbENvdW50OworICAg
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgRmlsbE91dEFT
QkRGb3JMUENNKHN0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSwgbGliV2ViUlRDQ2hhbm5lbENvdW50
LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6
OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0Zsb2F0LCBMaWJXZWJSVENBdWRp
b0Zvcm1hdDo6aXNCaWdFbmRpYW4sIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc05vbkludGVybGVh
dmVkKTsKKyAgICByZXR1cm4gc3RyZWFtRm9ybWF0OworfQorCitSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2VNYWM6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZU1hYyhSZWY8TWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU+JiYgYXVkaW9Tb3VyY2UpCisgICAgOiBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2UoV1RGTW92ZShhdWRpb1NvdXJjZSkpCisgICAgLCBtX3NhbXBsZUNvbnZlcnRlcihB
dWRpb1NhbXBsZURhdGFTb3VyY2U6OmNyZWF0ZShMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxl
UmF0ZSAqIDIpKQoreworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZU1hYzo6
aGFuZGxlTXV0ZWRJZk5lZWRlZCgpCit7CisgICAgYm9vbCBpc1NpbGVuY2VkID0gbV9tdXRlZCB8
fCAhbV9lbmFibGVkOworICAgIG1fc2FtcGxlQ29udmVydGVyLT5zZXRNdXRlZChpc1NpbGVuY2Vk
KTsKKworICAgIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZU1hYzo6aGFuZGxlTXV0ZWRJZk5l
ZWRlZCgpOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZU1hYzo6c2VuZFNp
bGVuY2UoKQoreworICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENTaWduYWxpbmdU
aHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBz
aXplX3QgY2h1bmtTYW1wbGVDb3VudCA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpIC8gMTAwOworICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IGNodW5rU2FtcGxlQ291
bnQgKiBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlQnl0ZVNpemUgKiBtX291dHB1dFN0cmVh
bURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKTsKKworICAgICAgICBpZiAoIWJ1ZmZlclNp
emUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9hdWRpb0J1ZmZlci5ncm93KGJ1
ZmZlclNpemUpOworICAgICAgICBtZW1zZXQobV9hdWRpb0J1ZmZlci5kYXRhKCksIDAsIGJ1ZmZl
clNpemUpOworICAgICAgICBmb3IgKGF1dG8gc2luayA6IG1fc2lua3MpCisgICAgICAgICAgICBz
aW5rLT5PbkRhdGEobV9hdWRpb0J1ZmZlci5kYXRhKCksIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojpz
YW1wbGVTaXplLCBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSwgbV9vdXRw
dXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCksIGNodW5rU2FtcGxlQ291bnQp
OworICAgIH0pOworfQorCitib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZU1hYzo6aXNS
ZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCkKK3sKKyAgICBhdXRvIHdyaXR0ZW5B
dWRpb0R1cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNh
bXBsZVJhdGUoKTsKKyAgICBhdXRvIHJlYWRBdWRpb0R1cmF0aW9uID0gbV9yZWFkQ291bnQgLyBt
X291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKworICAgIEFTU0VSVCh3cml0
dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbik7CisgICAgcmV0dXJuIHdyaXR0
ZW5BdWRpb0R1cmF0aW9uID4gcmVhZEF1ZGlvRHVyYXRpb24gKyAwLjU7Cit9CisKK2Jvb2wgUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTWFjOjppc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFM
b3dMaW1pdCgpCit7CisgICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3Vu
dCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisgICAgYXV0byByZWFk
QXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5z
YW1wbGVSYXRlKCk7CisKKyAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1
ZGlvRHVyYXRpb24pOworICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA8IHJlYWRBdWRp
b0R1cmF0aW9uICsgMC4xOworfQorCitib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZU1h
Yzo6aGFzQnVmZmVyZWRFbm91Z2hEYXRhKCkKK3sKKyAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1cmF0
aW9uID0gbV93cml0ZUNvdW50IC8gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUo
KTsKKyAgICBhdXRvIHJlYWRBdWRpb0R1cmF0aW9uID0gbV9yZWFkQ291bnQgLyBtX291dHB1dFN0
cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKworICAgIEFTU0VSVCh3cml0dGVuQXVkaW9E
dXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbik7CisgICAgcmV0dXJuIHdyaXR0ZW5BdWRpb0R1
cmF0aW9uID49IHJlYWRBdWRpb0R1cmF0aW9uICsgMC4wMTsKK30KKwordm9pZCBSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2VNYWM6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRp
bWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiBzdHJlYW1EZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KQorewor
ICAgIGlmIChtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24gIT0gc3RyZWFtRGVzY3JpcHRpb24pIHsK
KyAgICAgICAgbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uID0gdG9DQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24oc3RyZWFtRGVzY3JpcHRpb24pOworICAgICAgICBhdXRvIHN0YXR1cyAgPSBtX3NhbXBs
ZUNvbnZlcnRlci0+c2V0SW5wdXRGb3JtYXQobV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uKTsKKyAg
ICAgICAgQVNTRVJUX1VOVVNFRChzdGF0dXMsICFzdGF0dXMpOworCisgICAgICAgIG1fb3V0cHV0
U3RyZWFtRGVzY3JpcHRpb24gPSBsaWJ3ZWJydGNBdWRpb0Zvcm1hdChMaWJXZWJSVENBdWRpb0Zv
cm1hdDo6c2FtcGxlUmF0ZSwgc3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpKTsK
KyAgICAgICAgc3RhdHVzID0gbV9zYW1wbGVDb252ZXJ0ZXItPnNldE91dHB1dEZvcm1hdChtX291
dHB1dFN0cmVhbURlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCkpOworICAgICAgICBBU1NF
UlQoIXN0YXR1cyk7CisgICAgfQorCisgICAgLy8gTGV0J3Mgc2tpcCBwdXNoaW5nIHNhbXBsZXMg
aWYgd2UgYXJlIHRvbyBzbG93IHB1bGxpbmcgdGhlbS4KKyAgICBpZiAobV9za2lwcGluZ0F1ZGlv
RGF0YSkgeworICAgICAgICBpZiAoIWlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0
KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc2tpcHBpbmdBdWRpb0RhdGEgPSBm
YWxzZTsKKyAgICB9IGVsc2UgaWYgKGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1p
dCgpKSB7CisgICAgICAgIG1fc2tpcHBpbmdBdWRpb0RhdGEgPSB0cnVlOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgLy8gSWYgd2UgY2hhbmdlIHRoZSBhdWRpbyB0cmFjayBvciBpdHMg
c2FtcGxlIHJhdGUgY2hhbmdlcywgdGhlIHRpbWVzdGFtcCBiYXNlZCBvbiBtX3dyaXRlQ291bnQg
bWF5IGJlIHdyb25nLgorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXBkYXRlIG1fd3JpdGVDb3Vu
dCB0byBiZSB2YWxpZCBhY2NvcmRpbmcgdGhlIG5ldyBzYW1wbGVSYXRlLgorICAgIG1fc2FtcGxl
Q29udmVydGVyLT5wdXNoU2FtcGxlcyhNZWRpYVRpbWUobV93cml0ZUNvdW50LCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4obV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSkpLCBhdWRp
b0RhdGEsIHNhbXBsZUNvdW50KTsKKyAgICBtX3dyaXRlQ291bnQgKz0gc2FtcGxlQ291bnQ7CisK
KyAgICBpZiAoIWhhc0J1ZmZlcmVkRW5nb3VoRGF0YSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+cHVsbEF1
ZGlvRGF0YSgpOworICAgIH0pOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZU1hYzo6cHVsbEF1ZGlvRGF0YSgpCit7CisgICAgLy8gbGlid2VicnRjIGV4cGVjdHMgMTAgbXMg
Y2h1bmtzLgorICAgIHNpemVfdCBjaHVua1NhbXBsZUNvdW50ID0gbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCkgLyAxMDA7CisgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVu
a1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9v
dXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7CisgICAgbV9hdWRpb0J1
ZmZlci5ncm93KGJ1ZmZlclNpemUpOworCisgICAgQXVkaW9CdWZmZXJMaXN0IGJ1ZmZlckxpc3Q7
CisgICAgYnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVycyA9IDE7CisgICAgYnVmZmVyTGlzdC5tQnVm
ZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJl
ck9mQ2hhbm5lbHMoKTsKKyAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUg
PSBidWZmZXJTaXplOworICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGEgPSBtX2F1ZGlv
QnVmZmVyLmRhdGEoKTsKKworICAgIG1fc2FtcGxlQ29udmVydGVyLT5wdWxsQXZhbGFpYmxlU2Ft
cGxlc0FzQ2h1bmtzKGJ1ZmZlckxpc3QsIGNodW5rU2FtcGxlQ291bnQsIG1fcmVhZENvdW50LCBb
dGhpcywgY2h1bmtTYW1wbGVDb3VudF0geworICAgICAgICBtX3JlYWRDb3VudCArPSBjaHVua1Nh
bXBsZUNvdW50OworICAgICAgICBmb3IgKGF1dG8gc2luayA6IG1fc2lua3MpCisgICAgICAgICAg
ICBzaW5rLT5PbkRhdGEobV9hdWRpb0J1ZmZlci5kYXRhKCksIExpYldlYlJUQ0F1ZGlvRm9ybWF0
OjpzYW1wbGVTaXplLCBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSwgbV9v
dXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCksIGNodW5rU2FtcGxlQ291
bnQpOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBV
U0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZU1hYy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZU1h
Yy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhhMTc5ODE2NDEyYmZjMjg4MzE3MDkwNTViYTQ4Nzc4ZGY3YjlhNGYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTWFjLmgKQEAgLTAsMCArMSw3NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgor
I2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oIgorCituYW1lc3BhY2Ugd2Vi
cnRjIHsKK2NsYXNzIEF1ZGlvVHJhY2tJbnRlcmZhY2U7CitjbGFzcyBBdWRpb1RyYWNrU2lua0lu
dGVyZmFjZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VNYWMgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTWFjPiwgcHVibGljIFJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZSwgcHVibGljIHdlYnJ0Yzo6QXVkaW9Tb3VyY2VJbnRlcmZhY2UsIHByaXZhdGUgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZU1hYz4gY3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2VNYWMoV1RGTW92ZShhdWRpb1NvdXJjZSkpKTsgfQorICAgIH5S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VNYWMoKSB7IH0KKworcHJpdmF0ZToKKyAgICBleHBs
aWNpdCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VNYWMoUmVmPE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlPiYmKTsKKworICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlh
VGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYsIHNpemVfdCkgZmluYWw7CisKKyAgICBib29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlv
RGF0YUhpZ2hMaW1pdCgpIGZpbmFsOworICAgIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9E
YXRhTG93TGltaXQoKSBmaW5hbDsKKyAgICBib29sIGhhc0J1ZmZlcmVkRW5vdWdoRGF0YSgpIGZp
bmFsOworCisgICAgdm9pZCBwdWxsQXVkaW9EYXRhKCkgZmluYWw7CisKKyAgICB2b2lkIGhhbmRs
ZU11dGVkSWZOZWVkZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRTaWxlbmNlKCkgZmluYWw7CisK
KyAgICBSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiBtX3NhbXBsZUNvbnZlcnRlcjsKKyAgICBD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uOworICAgIENB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uOworCisgICAg
VmVjdG9yPHVpbnQ4X3Q+IG1fYXVkaW9CdWZmZXI7CisgICAgdWludDY0X3QgbV9yZWFkQ291bnQg
eyAwIH07CisgICAgdWludDY0X3QgbV93cml0ZUNvdW50IHsgMCB9OworICAgIGJvb2wgbV9za2lw
cGluZ0F1ZGlvRGF0YSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323635</attachid>
            <date>2017-10-12 22:08:49 -0700</date>
            <delta_ts>2017-10-12 22:25:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177928-20171013070848.patch</filename>
            <type>text/plain</type>
            <size>70845</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkzODIyMzA3YzA4MTkz
ODNhYjVjNDliNDQxNTFlNWFkODFkNWFmMy4uODg2OTExNjJiZWQ0YTcyYjE3NTg2NzY1ODI3Mzll
N2JmOTNjZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTEwLTEyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlcyBhbmQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlcyBw
b3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciB0aGUgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGFuZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgY2xhc3NlcywKKyAgICAgICAgbW92ZSB0aGUgbWFjIHNwZWNp
ZmljIGNvZGUgdG8gYSBkaWZmZXJlbnQgY2xhc3MuIFRoaXMgd2F5IHdlIGNhbiB1c2UgdGhlbSBm
cm9tCisgICAgICAgIG90aGVyIHBvcnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgd2UgYXJl
IG5vdCBhZGRpbmcgbmV3IGZ1bmN0aW9uYWxpdHkganVzdCByZWZhY3RvcmluZy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmguIEp1c3QgdGhlIHBvcnQg
YWdub3N0aWMgcGFydHMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaC4gRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAuIERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmguIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6IEFkZGVkLCBpdCBhZGRzIENv
Y29hIGNvZGUgcGFydHMgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhpcyBm
dW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUgdG8g
YXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBBZGRl
ZCBDb2NvYSBjb2RlIGZyb20gb3JpZ2luYWwgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6
IEFkZGVkIENvY29hIGNvZGUgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhp
cyBmdW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUg
dG8gYXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBB
ZGRlZCBDb2NvYSBjb2RlIGZyb20gdGhlIG9yaWdpbmFsIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaC4KKwogMjAxNy0x
MC0wNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbV2luQ2Fpcm9dIEZpeCBidWlsZCBhZnRlciBCdWcgMTY3OTU2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDdmMjJlNTE2Zjk3YTI5N2RkNTQ4ZTc1Y2VlMDg3N2ExYzU2MjVmMWEuLmE4NDQxYmY0
Y2IyYmZhNTNhNWMyMjY4MDc3ZjE2NzcxMjAzNWMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yNTQ4LDkgKzI1NDgsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAKICAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcAogICAg
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3Bw
CisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCiAgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKICAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCisgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAogCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmY4Njg4YmMzZDlkNmU0MWU4MmRlNjY2OGIyYjlmYzViYjA4ZDM3Yy4uMjk5Yjc2NmM2
MTZjMGQzZTFiYjhlYWRlYTY3NjAxYzdiYjA0NDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5Niw4ICsxNjk2LDEyIEBA
CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEw
NDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTEw
M0FBQjFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovOyB9Owog
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
ODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggKi87IH07
CisJCTQxMTAzQUFCMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovOyB9OworCQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE4MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovOyB9OwogCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMDMg
LyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi87IH07CiAJCTQxMTAzQUFFMUUzOTc5MTAwMDc2OUYw
MyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQUExRTM5NzkwQTAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi87IH07CisJCTQxMTAzQUFEMUUzOTc5MTAw
MDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTkxRTM5NzkwQTAwNzY5
RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggKi87IH07CisJCTQxMTAz
QUFFMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
QTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3Bw
ICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2ViQ29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOUIx
QTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTQxMjMwOTEz
MTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGODIxNjI5OTAyOUY0RkI1MDEw
MDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTI3RDUzNzBGOEFB
QjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0
YXRlLmNwcCAqLzsgfTsKQEAgLTk0NzIsOCArOTQ3NiwxMiBAQAogCQk0MTBCN0U3MTEwNDVGQUIw
MDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMTAzQUE4MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE4MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBOTFFMzk3OTBBMDA3
NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIz
MjgwMEI5M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMyODAwQjk1NjcyIC8qIFJlYWRhYmxl
U3RyZWFtQllPQlJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtQllPQlJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0OTcs
NiArMTY1MDUsOCBAQAogCQkJCTA3RkZERTY2MTgxQUVENDIwMDcyRDQwOSAvKiBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZS5jcHAgKi8sCiAJCQkJMDdGRkRFNjcxODFBRUQ0MjAwNzJENDA5IC8qIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggKi8sCiAJCQkJNUVCQjg5MzgxQzc3QkRBNDAwQzY1RDQx
IC8qIFBlZXJNZWRpYURlc2NyaXB0aW9uLmggKi8sCisJCQkJNDExMDNBQUExRTM5NzkwQTAwNzY5
RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi8sCisJCQkJNDExMDNBQTkx
RTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oICovLAogCQkJ
CTRBNEY2NTZCMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLywK
IAkJCQk0QTRGNjU2QzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oICov
LAogCQkJCTRBNEY2NTZEMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzLmggKi8sCkBAIC0xNjUwNiw2ICsxNjUxNiw4IEBACiAJCQkJNEE0RjY1NkYxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovLAogCQkJCTJF
QzQxREUyMUMwNDEwQTMwMEQyOTRGRSAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuY3BwICovLAogCQkJCTA3QzFDMEU0MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLywKKwkJCQk0MTEwM0FBNzFFMzk3
OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCAqLywKKwkJCQk0
MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgg
Ki8sCiAJCQkJMzEzNTkxMEMxRTdERENCNjAwRjMwNjMwIC8qIFJUQ0J1bmRsZVBvbGljeS5oICov
LAogCQkJCTA3MjIxQkEyMTdDRjBBRDQwMDg0OEU1MSAvKiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCAqLywKIAkJCQkwNzIyMUJBMzE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50LmggKi8sCkBAIC0xNjU1NCwxNCArMTY1NjYsMTQgQEAKIAkJCQkwNzQ0RUNFQzFF
MEM0QUU1MDAwRDA5NDQgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJ
MDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgg
Ki8sCiAJCQkJMDdFRTc2RUUxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tICovLAotCQkJCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwICovLAotCQkJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAv
KiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCAqLywKKwkJCQk0MTEwM0FBQTFFMzk3OTBB
MDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwICovLAorCQkJ
CTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5oICovLAogCQkJCTVDREQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2UuY3BwICovLAogCQkJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLywKIAkJCQk0QTBGRkFBMzFBQUY1RUY2MDA2
MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgKi8sCiAJCQkJNEEwRkZB
QTQxQUFGNUVGNjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCAqLywK
LQkJCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcCAqLywKLQkJCQk0MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggKi8sCisJCQkJNDExMDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCAqLywKKwkJCQk0MTEwM0FBODFFMzk3
OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCAqLywKIAkJ
CQk1Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmNwcCAqLywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8sCkBAIC0yOTYxNCw2ICsyOTYyNiw3IEBACiAJ
CQkJNDEyOUM5QUIxRjU5QzU3MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAzQzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFs
eXNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExMDNBQUQxRTM5NzkxMDAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDExMDNBQUQx
RTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8q
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRB
MEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NjIxLDYgKzI5NjM0LDcgQEAKIAkJCQk0QTRGNjU3NDFBQTk5N0Yx
MDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBQzFFMzk3OTEwMDA3
NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQjk1MjI0MUY1OEE1OEYwMDkzMURDMiAvKiBS
ZWNvcmRpbmdTd2l6emxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2OEU4MEMyMjZF
MzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1ODE3NUQ0MTRD
MDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1ODIsNiAr
MzM1OTYsNyBAQAogCQkJCTQxMjlDOThBMUY1ODdGRUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVh
bVNpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwM0IxMkIwMjY3NjAwQzFBMzU5IC8q
IFJlYWx0aW1lQW5hbHlzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMDNBQUUxRTM5Nzkx
MDAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTEwM0FBRTFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzM0UxRTQzMjREQzAwNjIx
RTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0QTRGNjU3MDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0QTBGRkFBMTFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNTg5LDYgKzMzNjA0LDcgQEAK
IAkJCQk0QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQzQxREU0MUMwNDEwQTMwMEQyOTRGRSAvKiBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDExMDNBQUIxRTM5NzkxMDAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEwM0FBQjFFMzk3OTEwMDA3NjlGMTQgLyog
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDgzM0QxRTQzMjREOTAwNjIxRTkyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFu
Z2xlU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBQjQxODExM0UzNTZFODAwRDhBQUYz
IC8qIFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MWFiM2Q3NjgzYjNiOGZmYzUwMmJmMzQ2NTI0Nzk3MzVj
MjFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRp
b0Zvcm1hdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKKyAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQoreworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOworfQorCitSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1f
YXVkaW9UcmFjaykKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOworfQorCit2
b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQorewor
ICAgIGlmIChtX2F1ZGlvVHJhY2spCisgICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0
aGlzKTsKK30KKwordm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRy
YWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgdHJh
Y2spCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOworICAgIEFTU0VSVCh0cmFjayk7CisK
KyAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAgICBub3RpZnlNdXRlZENoYW5n
ZSghbV9hdWRpb1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCisgICAgICAgIG1f
YXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMo
KSBjb25zdAoreworICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpl
bXB0eUNhcGFiaWxpdGllcygpOworfQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAoreworICAg
IHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWU4YjMz
NmM5ODFjNmVkNjFkZTE3MmI2YjI5ZmRkODU5ZmM3MzkwMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldF
QlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSBmaW5hbCA6IHB1YmxpYyBSZWFsdGlt
ZU1lZGlhU291cmNlLCBwcml2YXRlIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2Ugewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBjcmVh
dGUocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3Ry
aW5nJiYpOworCisgICAgdm9pZCBzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmKTsKKworcHJpdmF0ZToKKyAgICBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0lu
dGVyZmFjZT4mJiwgU3RyaW5nJiYpOworICAgIH5SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2Uo
KTsKKworICAgIC8vIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgQVBJCisgICAgdmly
dHVhbCB2b2lkIE9uRGF0YShjb25zdCB2b2lkKiAvKiBhdWRpb0RhdGEgKi8sIGludCAvKiBiaXRz
UGVyU2FtcGxlICovLCBpbnQgLyogc2FtcGxlUmF0ZSAqLywgc2l6ZV90IC8qIG51bWJlck9mQ2hh
bm5lbHMgKi8sIHNpemVfdCAvKiBudW1iZXJPZkZyYW1lcyAqLykgeyB9OworCisgICAgLy8gUmVh
bHRpbWVNZWRpYVNvdXJjZSBBUEkKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFs
OworICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSAgZmluYWw7CisKKyAgICBjb25zdCBSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5hbDsK
KyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3Qg
ZmluYWw7CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGlu
Z3M7CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4g
bV9hdWRpb1RyYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
VVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZmM2E1YmViNmY1Y2NjMDEzNjk0ZTA5MTQwMmYyN2YyODIwZjdmYjkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisj
aW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92
aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZT4mJiBhdWRpb1NvdXJjZSkKKyAgICA6IG1fYXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRpb1Nv
dXJjZSkpCisgICAgLCBtX3NpbGVuY2VBdWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlOjpzZW5kU2lsZW5jZSkKK3sKKyAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNl
cnZlcigqdGhpcyk7CisgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOworfQorCitib29sIFJlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZT4mJiBuZXdTb3VyY2UpCit7CisgICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIo
KnRoaXMpOworICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7CisgICAgbV9h
dWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOworCisgICAgaW5pdGlhbGl6ZUNvbnZlcnRl
cigpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRlcigpCit7CisgICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3Vy
Y2UtPm11dGVkKCk7CisgICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxlZCgpOwor
ICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2U6OnN0b3AoKQoreworICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOworICAg
IG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKK30KKwordm9pZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCit7CisgICAgbV9tdXRl
ZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7CisgICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwor
fQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxlZENoYW5n
ZWQoKQoreworICAgIG1fZW5hYmxlZCA9IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsKKyAgICBo
YW5kbGVNdXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVkKCkKK3sKKyAgICBib29sIGlzU2lsZW5jZWQgPSBtX211
dGVkIHx8ICFtX2VuYWJsZWQ7CisgICAgaWYgKGlzU2lsZW5jZWQgJiYgIW1fc2lsZW5jZUF1ZGlv
VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdGFydFJlcGVh
dGluZygxX3MpOworICAgIGlmICghaXNTaWxlbmNlZCAmJiBtX3NpbGVuY2VBdWRpb1RpbWVyLmlz
QWN0aXZlKCkpCisgICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNGRlN2Q3NTMwODYyNTk4ODgyNDM1
NDFiMjA0MTk5NWU5NjBiYWY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAgLTAsMCAr
MSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01h
Y3Jvcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAi
VGltZXIuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSB3ZWJydGMg
eworY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKK2NsYXNzIEF1ZGlvVHJhY2tTaW5rSW50ZXJm
YWNlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwg
cHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKTsKKworICAgIH5SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UoKSB7IHN0b3AoKTsgfQorCisgICAgdm9pZCBzdG9wKCk7CisKKyAgICBi
b29sIHNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOworICAgIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU291cmNl
LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7CisKKyAgICB2aXJ0dWFsIHZv
aWQgQWRkU2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lu
a3MuYXBwZW5kKHNpbmspOyB9CisgICAgdmlydHVhbCB2b2lkIFJlbW92ZVNpbmsod2VicnRjOjpB
dWRpb1RyYWNrU2lua0ludGVyZmFjZSogc2luaykgeyBtX3NpbmtzLnJlbW92ZUZpcnN0KHNpbmsp
OyB9CisKKyAgICBpbnQgQWRkUmVmKCkgY29uc3QgZmluYWwgeyByZWYoKTsgcmV0dXJuIHJlZkNv
dW50KCk7IH0KKyAgICBpbnQgUmVsZWFzZSgpIGNvbnN0IGZpbmFsIHsgZGVyZWYoKTsgcmV0dXJu
IHJlZkNvdW50KCk7IH0KKyAgICBTb3VyY2VTdGF0ZSBzdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGtMaXZlOyB9CisgICAgYm9vbCByZW1vdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZvaWQgUmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNl
KikgZmluYWwgeyB9CisgICAgdm9pZCBVbnJlZ2lzdGVyT2JzZXJ2ZXIod2VicnRjOjpPYnNlcnZl
ckludGVyZmFjZSopIGZpbmFsIHsgfQorCisgICAgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoKTsK
KyAgICB2b2lkIHNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIGF1ZGlv
U2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0
YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIHsgfTsKKworICAgIHZp
cnR1YWwgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSB7IHJldHVy
biBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRh
TG93TGltaXQoKSB7IHJldHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnVmZmVy
ZWRFbm91Z2hEYXRhKCkgeyByZXR1cm4gZmFsc2U7IH07CisKKyAgICAvLyBNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgQVBJCisgICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZChNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlTXV0ZWRDaGFuZ2VkKCk7IH0KKyAg
ICB2b2lkIHRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5h
bCB7IHNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7IH0KKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWls
YWJsZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYsIGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1l
LCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkgZmluYWwgeyBhdWRpb1NhbXBs
ZXNBdmFpbGFibGUobWVkaWFUaW1lLCBkYXRhLCBkZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQpOyB9
CisgICAgdm9pZCB0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9
CisgICAgdm9pZCB0cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYp
IGZpbmFsIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHB1bGxBdWRpb0RhdGEoKSB7IH07CisKKyAg
ICB2b2lkIGluaXRpYWxpemVDb252ZXJ0ZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTXV0
ZWRJZk5lZWRlZCgpOworICAgIHZpcnR1YWwgdm9pZCBzZW5kU2lsZW5jZSgpIHsgfTsKKworICAg
IFZlY3Rvcjx3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9zaW5rczsKKyAgICBS
ZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7CisKKyAgICBib29sIG1f
bXV0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OworICAgIFRpbWVy
IG1fc2lsZW5jZUF1ZGlvVGltZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc1MzhjZDA1NWI0ZGNh
NDk5MjFiMmQ1MWQ4MGYwODJlYjIyNjczNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
ICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogICAgZGlzdHJpYnV0aW9uLgotICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwot
ICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlLmgiCi0KLSNpZiBVU0UoTElCV0VCUlRDKQotCi0jaW5jbHVkZSAiQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bi5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCi0jaW5jbHVkZSAiV2ViQXVk
aW9CdWZmZXJMaXN0LmgiCi0jaW5jbHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMu
aCIKLSNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgot
Ci0jaW5jbHVkZSAiQ29yZU1lZGlhU29mdExpbmsuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1SZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2U6OmNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJm
YWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkKLXsKLSAgICBhdXRvIHNv
dXJjZSA9IGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKFdURk1vdmUo
YXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFja0lkKSkpOwotICAgIHNvdXJjZS0+c3RhcnQo
KTsKLSAgICByZXR1cm4gc291cmNlOwotfQotCi1SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6
OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkK
LSAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgU3RyaW5nKCkpCi0gICAgLCBtX2F1ZGlvVHJhY2so
V1RGTW92ZShhdWRpb1RyYWNrKSkKLXsKLSAgICBub3RpZnlNdXRlZENoYW5nZSghbV9hdWRpb1Ry
YWNrKTsKLX0KLQotUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlKCkKLXsKLSAgICBzdG9wKCk7Ci19Ci0KLQotc3RhdGljIGlubGluZSBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRGVzY3JpcHRpb24oc2l6ZV90IHNhbXBsZVJh
dGUsIHNpemVfdCBjaGFubmVsQ291bnQpCi17Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uIHN0cmVhbUZvcm1hdDsKLSAgICBGaWxsT3V0QVNCREZvckxQQ00oc3RyZWFtRm9ybWF0LCBz
YW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXpl
LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6
OmlzRmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVk
aW9Gb3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQpOwotICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7Ci19
Ci0KLXZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpPbkRhdGEoY29uc3Qgdm9pZCog
YXVkaW9EYXRhLCBpbnQgYml0c1BlclNhbXBsZSwgaW50IHNhbXBsZVJhdGUsIHNpemVfdCBudW1i
ZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCi17Ci0gICAgLy8gV2UgbWF5IHJl
Y2VpdmUgT25EYXRhIGNhbGxzIHdpdGggZW1wdHkgc291bmQgZGF0YSAobW9ubywgc2FtcGxlcyBl
cXVhbCB0byB6ZXJvIGFuZCBzYW1wbGVSYXRlIGVxdWFsIHRvIDE2MDAwKSB3aGVuIHN0YXJ0aW5n
IHRoZSBjYWxsLgotICAgIC8vIEZJWE1FOiBGb3IgdGhlIG1vbWVudCB3ZSBza2lwIHRoZW0sIHdl
IHNob3VsZCBmaW5kIGEgYmV0dGVyIHNvbHV0aW9uIGF0IGxpYndlYnJ0YyBsZXZlbCB0byBub3Qg
YmUgY2FsbGVkIHVudGlsIGdldHRpbmcgc29tZSByZWFsIGRhdGEuCi0gICAgaWYgKHNhbXBsZVJh
dGUgPT0gMTYwMDAgJiYgbnVtYmVyT2ZDaGFubmVscyA9PSAxKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBBU1NFUlQoYml0c1BlclNhbXBsZSA9PSAxNik7Ci0gICAgQVNTRVJUKG51bWJlck9mQ2hh
bm5lbHMgPT0gMSB8fCBudW1iZXJPZkNoYW5uZWxzID09IDIpOwotICAgIEFTU0VSVChzYW1wbGVS
YXRlID09IDQ4MDAwKTsKLQotICAgIENNVGltZSBzdGFydFRpbWUgPSBDTVRpbWVNYWtlKG1fbnVt
YmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpOwotICAgIGF1dG8gbWVkaWFUaW1lID0gUEFMOjp0b01l
ZGlhVGltZShzdGFydFRpbWUpOwotICAgIG1fbnVtYmVyT2ZGcmFtZXMgKz0gbnVtYmVyT2ZGcmFt
ZXM7Ci0KLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbmV3RGVzY3JpcHRpb24gPSBz
dHJlYW1EZXNjcmlwdGlvbihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKTsKLQotICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdG8gZG8gdGhlIGV4dHJhIG1lbW9yeSBhbGxvY2F0
aW9uIGFuZCBjb3B5LgotICAgIC8vIEluc3RlYWQsIHdlIHNob3VsZCBiZSBhYmxlIHRvIGRpcmVj
dGx5IHBhc3MgYXVkaW9EYXRhIHBvaW50ZXIuCi0gICAgV2ViQXVkaW9CdWZmZXJMaXN0IGF1ZGlv
QnVmZmVyTGlzdCB7IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihuZXdEZXNjcmlwdGlvbiksIFdU
Rjo6c2FmZUNhc3Q8dWludDMyX3Q+KG51bWJlck9mRnJhbWVzKSB9OwotICAgIGF1ZGlvQnVmZmVy
TGlzdC5idWZmZXIoMCktPm1EYXRhQnl0ZVNpemUgPSBudW1iZXJPZkNoYW5uZWxzICogbnVtYmVy
T2ZGcmFtZXMgKiBiaXRzUGVyU2FtcGxlIC8gODsKLSAgICBhdWRpb0J1ZmZlckxpc3QuYnVmZmVy
KDApLT5tTnVtYmVyQ2hhbm5lbHMgPSBudW1iZXJPZkNoYW5uZWxzOwotCi0gICAgaWYgKG11dGVk
KCkpCi0gICAgICAgIG1lbXNldChhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgMCwg
YXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSk7Ci0gICAgZWxzZQotICAg
ICAgICBtZW1jcHkoYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGEsIGF1ZGlvRGF0YSwg
YXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSk7Ci0KLSAgICBhdWRpb1Nh
bXBsZXNBdmFpbGFibGUobWVkaWFUaW1lLCBhdWRpb0J1ZmZlckxpc3QsIENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbihuZXdEZXNjcmlwdGlvbiksIG51bWJlck9mRnJhbWVzKTsKLX0KLQotdm9pZCBS
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCi17Ci0gICAg
aWYgKG1fYXVkaW9UcmFjaykKLSAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOwot
fQotCi12b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEo
KQotewotICAgIGlmIChtX2F1ZGlvVHJhY2spCi0gICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3Zl
U2luayh0aGlzKTsKLX0KLQotdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNv
dXJjZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+
JiYgdHJhY2spCi17Ci0gICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOwotICAgIEFTU0VSVCh0cmFj
ayk7Ci0KLSAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKLSAgICBub3RpZnlNdXRl
ZENoYW5nZSghbV9hdWRpb1RyYWNrKTsKLSAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCi0gICAg
ICAgIG1fYXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKLX0KLQotY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdGllcyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmls
aXRpZXMoKSBjb25zdAotewotICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzOjplbXB0eUNhcGFiaWxpdGllcygpOwotfQotCi1jb25zdCBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MmIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNF
KExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI2MDIyMDg1MTk3ZmYzOWE2ODU0NzAxZWZiMjBm
YjllMGRkNGU0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogICAgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogICAgZGlz
dHJpYnV0aW9uLgotICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5h
bWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICAgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIFVTRShMSUJXRUJSVEMpCi0KLSNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3Mu
aCIKLSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCi0jaW5jbHVkZSA8Q29yZUF1ZGlv
L0NvcmVBdWRpb1R5cGVzLmg+Ci0jaW5jbHVkZSA8d2VicnRjL2FwaS9tZWRpYXN0cmVhbWludGVy
ZmFjZS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotdHlwZWRlZiBjb25zdCBzdHJ1
Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiAqQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2Jq
QzsKLQotY2xhc3MgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGZpbmFsIDogcHVibGljIFJl
YWx0aW1lTWVkaWFTb3VyY2UsIHByaXZhdGUgd2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFj
ZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+
IGNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYm
LCBTdHJpbmcmJik7Ci0KLSAgICB2b2lkIHNldFNvdXJjZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYpOwotCi1wcml2YXRlOgotICAgIFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Ry
YWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7Ci0gICAgflJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZSgpOwotCi0gICAgLy8gd2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSBBUEkKLSAg
ICB2b2lkIE9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBp
bnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZy
YW1lcykgZmluYWw7Ci0KLSAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlIEFQSQotICAgIHZvaWQg
c3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7Ci0gICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgp
ICBmaW5hbDsKLQotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNh
cGFiaWxpdGllcygpIGNvbnN0IGZpbmFsOwotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBmaW5hbDsKLQotICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncyBtX2N1cnJlbnRTZXR0aW5nczsKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiBtX2F1ZGlvVHJhY2s7Ci0KLSAgICB1aW50NjRfdCBt
X251bWJlck9mRnJhbWVzIHsgMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzZjk2YzZhZDllY2Y4YjQzMDNiZGFj
MzhhM2U5MzcxYzQ1NmVlMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3Bw
CkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNv
Y29hLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbi5oIgorI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1
ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0
LmgiCisjaW5jbHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCIKKyNpbmNsdWRl
IDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgorCisjaW5jbHVkZSAi
Q29yZU1lZGlhU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8UmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlPiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0
ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlv
VHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkKK3sKKyAgICBhdXRvIHNvdXJjZSA9IFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hOjpjcmVhdGUoV1RGTW92ZShhdWRpb1RyYWNrKSwg
V1RGTW92ZShhdWRpb1RyYWNrSWQpKTsKKyAgICBzb3VyY2UtPnN0YXJ0KCk7CisgICAgcmV0dXJu
IHNvdXJjZTsKK30KKworUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hPiBSZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZUNvY29hKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFja0lkKSkp
OworfQorCitSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlQ29jb2EocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0lu
dGVyZmFjZT4mJiBhdWRpb1RyYWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCisgICAgOiBSZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYShXVEZNb3ZlKGF1ZGlvVHJhY2spLCBXVEZNb3Zl
KGF1ZGlvVHJhY2tJZCkpCit7Cit9CisKKworc3RhdGljIGlubGluZSBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24gc3RyZWFtRGVzY3JpcHRpb24oc2l6ZV90IHNhbXBsZVJhdGUsIHNpemVfdCBj
aGFubmVsQ291bnQpCit7CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZv
cm1hdDsKKyAgICBGaWxsT3V0QVNCREZvckxQQ00oc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlLCBj
aGFubmVsQ291bnQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENB
dWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzRmxvYXQsIExp
YldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6Omlz
Tm9uSW50ZXJsZWF2ZWQpOworICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7Cit9CisKK3ZvaWQgUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0Rh
dGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hh
bm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKK3sKKyAgICAvLyBXZSBtYXkgcmVjZWl2ZSBP
bkRhdGEgY2FsbHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1wbGVzIGVxdWFsIHRv
IHplcm8gYW5kIHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4gc3RhcnRpbmcgdGhlIGNh
bGwuCisgICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAgdGhlbSwgd2Ugc2hvdWxk
IGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVsIHRvIG5vdCBiZSBjYWxs
ZWQgdW50aWwgZ2V0dGluZyBzb21lIHJlYWwgZGF0YS4KKyAgICBpZiAoc2FtcGxlUmF0ZSA9PSAx
NjAwMCAmJiBudW1iZXJPZkNoYW5uZWxzID09IDEpCisgICAgICAgIHJldHVybjsKKworICAgIEFT
U0VSVChiaXRzUGVyU2FtcGxlID09IDE2KTsKKyAgICBBU1NFUlQobnVtYmVyT2ZDaGFubmVscyA9
PSAxIHx8IG51bWJlck9mQ2hhbm5lbHMgPT0gMik7CisgICAgQVNTRVJUKHNhbXBsZVJhdGUgPT0g
NDgwMDApOworCisgICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1ha2UobV9udW1iZXJPZkZy
YW1lcywgc2FtcGxlUmF0ZSk7CisgICAgYXV0byBtZWRpYVRpbWUgPSBQQUw6OnRvTWVkaWFUaW1l
KHN0YXJ0VGltZSk7CisgICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1iZXJPZkZyYW1lczsKKwor
ICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlwdGlvbiA9IHN0cmVhbURl
c2NyaXB0aW9uKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpOworCisgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5IGFsbG9jYXRpb24gYW5k
IGNvcHkuCisgICAgLy8gSW5zdGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZGlyZWN0bHkgcGFz
cyBhdWRpb0RhdGEgcG9pbnRlci4KKyAgICBXZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9CdWZmZXJM
aXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgV1RGOjpzYWZl
Q2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpIH07CisgICAgYXVkaW9CdWZmZXJMaXN0LmJ1
ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMgKiBudW1iZXJPZkZyYW1l
cyAqIGJpdHNQZXJTYW1wbGUgLyA4OworICAgIGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1O
dW1iZXJDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7CisKKyAgICBpZiAobXV0ZWQoKSkKKyAg
ICAgICAgbWVtc2V0KGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRhLCAwLCBhdWRpb0J1
ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKKyAgICBlbHNlCisgICAgICAgIG1l
bWNweShhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgYXVkaW9EYXRhLCBhdWRpb0J1
ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKKworICAgIGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uKG5ld0Rlc2NyaXB0aW9uKSwgbnVtYmVyT2ZGcmFtZXMpOworfQorCit9CisKKyNlbmRpZiAv
LyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTU3Yzc2NmIxY2ViNzIyNTA5MDMzOTgyMGViN2YzMzk0
M2JmOTc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmgKQEAgLTAsMCArMSw1
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAg
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZS5oIgorCisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+CisKK3R5cGVkZWYg
Y29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9ybWF0RGVzY3JpcHRp
b25SZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92
aWRlckFWRk9iakM7CisKK2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hIGZp
bmFsIDogcHVibGljIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSwgcHVibGljIFJlYWx0aW1l
TWVkaWFTb3VyY2UsIHByaXZhdGUgd2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYT4g
Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYs
IFN0cmluZyYmKTsKKworcHJpdmF0ZToKKyAgICBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBT
dHJpbmcmJik7CisKKyAgICAvLyB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlIEFQSQor
ICAgIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJTYW1wbGUs
IGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzKSBmaW5hbDsKKworICAgIHVpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDkxMDFkYzQzNzkxN2Q1MTBlNzRiZmM3NzUxYzdjNzBjN2RjMjJh
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oIgotCi0jaWYgVVNFKExJQldFQlJUQykKLQot
I2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkxpYldlYlJU
Q0F1ZGlvRm9ybWF0LmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
biBsaWJ3ZWJydGNBdWRpb0Zvcm1hdChGbG9hdDY0IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVs
Q291bnQpCi17Ci0gICAgLy8gRklYTUU6IE1pY3JvcGhvbmVzIGNhbiBoYXZlIG1vcmUgdGhhbiB0
d28gY2hhbm5lbHMuIEluIHN1Y2ggY2FzZSwgd2Ugc2hvdWxkIGRvIHRoZSBtaXggZG93biBiYXNl
ZCBvbiBBdWRpb0NoYW5uZWxMYXlvdXRUYWcuCi0gICAgc2l6ZV90IGxpYldlYlJUQ0NoYW5uZWxD
b3VudCA9IGNoYW5uZWxDb3VudCA+PSAyID8gMiA6IGNoYW5uZWxDb3VudDsKLSAgICBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBD
TShzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUsIGxpYldlYlJUQ0NoYW5uZWxDb3VudCwgTGliV2Vi
UlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVT
aXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6
OmlzQmlnRW5kaWFuLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0g
ICAgcmV0dXJuIHN0cmVhbUZvcm1hdDsKLX0KLQotUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
OjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
PiYmIGF1ZGlvU291cmNlKQotICAgIDogbV9hdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNl
KSkKLSAgICAsIG1fc2FtcGxlQ29udmVydGVyKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRl
KExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRlICogMikpCi0gICAgLCBtX3NpbGVuY2VB
dWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5j
ZSkKLXsKLSAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7Ci0gICAgaW5pdGlh
bGl6ZUNvbnZlcnRlcigpOwotfQotCi1ib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCi17Ci0g
ICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwotICAgIG1fYXVkaW9Tb3Vy
Y2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Ci0gICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIo
KnRoaXMpOwotCi0gICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwotICAgIHJldHVybiB0cnVlOwot
fQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRl
cigpCi17Ci0gICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7Ci0gICAgbV9lbmFi
bGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxlZCgpOwotICAgIGhhbmRsZU11dGVkSWZOZWVkZWQo
KTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQotewotICAg
IG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOwotICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9i
c2VydmVyKCp0aGlzKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNv
dXJjZU11dGVkQ2hhbmdlZCgpCi17Ci0gICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVk
KCk7Ci0gICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwotfQotCi12b2lkIFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxlZENoYW5nZWQoKQotewotICAgIG1fZW5hYmxlZCA9
IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsKLSAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Ci19
Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVk
KCkKLXsKLSAgICBib29sIGlzU2lsZW5jZWQgPSBtX211dGVkIHx8ICFtX2VuYWJsZWQ7Ci0gICAg
bV9zYW1wbGVDb252ZXJ0ZXItPnNldE11dGVkKGlzU2lsZW5jZWQpOwotICAgIGlmIChpc1NpbGVu
Y2VkICYmICFtX3NpbGVuY2VBdWRpb1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fc2lsZW5j
ZUF1ZGlvVGltZXIuc3RhcnRSZXBlYXRpbmcoMV9zKTsKLSAgICBpZiAoIWlzU2lsZW5jZWQgJiYg
bV9zaWxlbmNlQXVkaW9UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3NpbGVuY2VBdWRpb1Rp
bWVyLnN0b3AoKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRT
aWxlbmNlKCkKLXsKLSAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5n
VGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAg
c2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBs
ZVJhdGUoKSAvIDEwMDsKLSAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNv
dW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJl
YW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7Ci0KLSAgICAgICAgaWYgKCFidWZmZXJT
aXplKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fYXVkaW9CdWZmZXIuZ3Jvdyhi
dWZmZXJTaXplKTsKLSAgICAgICAgbWVtc2V0KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCAwLCBidWZm
ZXJTaXplKTsKLSAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQotICAgICAgICAgICAg
c2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6
c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0
cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50
KTsKLSAgICB9KTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmlzUmVh
Y2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpCi17Ci0gICAgYXV0byB3cml0dGVuQXVk
aW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1w
bGVSYXRlKCk7Ci0gICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9v
dXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBBU1NFUlQod3JpdHRl
bkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOwotICAgIHJldHVybiB3cml0dGVu
QXVkaW9EdXJhdGlvbiA+IHJlYWRBdWRpb0R1cmF0aW9uICsgMC41OwotfQotCi1ib29sIFJlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGlt
aXQoKQotewotICAgIGF1dG8gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBt
X2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotICAgIGF1dG8gcmVhZEF1ZGlv
RHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpOwotCi0gICAgQVNTRVJUKHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1
cmF0aW9uKTsKLSAgICByZXR1cm4gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPCByZWFkQXVkaW9EdXJh
dGlvbiArIDAuMTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6Omhhc0J1
ZmZlcmVkRW5nb3VoRGF0YSgpCi17Ci0gICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1f
d3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAg
YXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24g
Pj0gcmVhZEF1ZGlvRHVyYXRpb24pOwotICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+
PSByZWFkQXVkaW9EdXJhdGlvbiArIDAuMDE7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
UGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYgc3RyZWFtRGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKLXsKLSAgICBpZiAobV9p
bnB1dFN0cmVhbURlc2NyaXB0aW9uICE9IHN0cmVhbURlc2NyaXB0aW9uKSB7Ci0gICAgICAgIG1f
aW5wdXRTdHJlYW1EZXNjcmlwdGlvbiA9IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKHN0cmVh
bURlc2NyaXB0aW9uKTsKLSAgICAgICAgYXV0byBzdGF0dXMgID0gbV9zYW1wbGVDb252ZXJ0ZXIt
PnNldElucHV0Rm9ybWF0KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbik7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsKLQotICAgICAgICBtX291dHB1dFN0cmVhbURlc2Ny
aXB0aW9uID0gbGlid2VicnRjQXVkaW9Gb3JtYXQoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBs
ZVJhdGUsIHN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSk7Ci0gICAgICAgIHN0
YXR1cyA9IG1fc2FtcGxlQ29udmVydGVyLT5zZXRPdXRwdXRGb3JtYXQobV9vdXRwdXRTdHJlYW1E
ZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKTsKLSAgICAgICAgQVNTRVJUKCFzdGF0dXMp
OwotICAgIH0KLQotICAgIC8vIExldCdzIHNraXAgcHVzaGluZyBzYW1wbGVzIGlmIHdlIGFyZSB0
b28gc2xvdyBwdWxsaW5nIHRoZW0uCi0gICAgaWYgKG1fc2tpcHBpbmdBdWRpb0RhdGEpIHsKLSAg
ICAgICAgaWYgKCFpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gZmFsc2U7Ci0gICAg
fSBlbHNlIGlmIChpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSkgewotICAg
ICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIC8vIElmIHdlIGNoYW5nZSB0aGUgYXVkaW8gdHJhY2sgb3IgaXRzIHNhbXBsZSByYXRl
IGNoYW5nZXMsIHRoZSB0aW1lc3RhbXAgYmFzZWQgb24gbV93cml0ZUNvdW50IG1heSBiZSB3cm9u
Zy4KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVwZGF0ZSBtX3dyaXRlQ291bnQgdG8gYmUgdmFs
aWQgYWNjb3JkaW5nIHRoZSBuZXcgc2FtcGxlUmF0ZS4KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+
cHVzaFNhbXBsZXMoTWVkaWFUaW1lKG1fd3JpdGVDb3VudCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkpKSwgYXVkaW9EYXRhLCBzYW1w
bGVDb3VudCk7Ci0gICAgbV93cml0ZUNvdW50ICs9IHNhbXBsZUNvdW50OwotCi0gICAgaWYgKCFo
YXNCdWZmZXJlZEVuZ291aERhdGEoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTGliV2ViUlRD
UHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPnB1bGxBdWRpb0RhdGEoKTsK
LSAgICB9KTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnB1bGxBdWRp
b0RhdGEoKQotewotICAgIC8vIGxpYndlYnJ0YyBleHBlY3RzIDEwIG1zIGNodW5rcy4KLSAgICBz
aXplX3QgY2h1bmtTYW1wbGVDb3VudCA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpIC8gMTAwOwotICAgIHNpemVfdCBidWZmZXJTaXplID0gY2h1bmtTYW1wbGVDb3VudCAq
IExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAqIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOwotICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZm
ZXJTaXplKTsKLQotICAgIEF1ZGlvQnVmZmVyTGlzdCBidWZmZXJMaXN0OwotICAgIGJ1ZmZlckxp
c3QubU51bWJlckJ1ZmZlcnMgPSAxOwotICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51bWJl
ckNoYW5uZWxzID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7
Ci0gICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gYnVmZmVyU2l6ZTsK
LSAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhID0gbV9hdWRpb0J1ZmZlci5kYXRhKCk7
Ci0KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVsbEF2YWxhaWJsZVNhbXBsZXNBc0NodW5rcyhi
dWZmZXJMaXN0LCBjaHVua1NhbXBsZUNvdW50LCBtX3JlYWRDb3VudCwgW3RoaXMsIGNodW5rU2Ft
cGxlQ291bnRdIHsKLSAgICAgICAgbV9yZWFkQ291bnQgKz0gY2h1bmtTYW1wbGVDb3VudDsKLSAg
ICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQotICAgICAgICAgICAgc2luay0+T25EYXRh
KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwg
bV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsKLSAgICB9KTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKExJQldFQlJUQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGViYzgwNGU0OTU4NTMwYmU2NjAyZmZkNjFhMmI1M2M3ZWI2ZTU3NC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
cmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKExJQldFQlJUQykK
LQotI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgotI2luY2x1ZGUgIkxpYldlYlJU
Q01hY3Jvcy5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCi0jaW5jbHVk
ZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+
Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSB3ZWJy
dGMgewotY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKLWNsYXNzIEF1ZGlvVHJhY2tTaW5rSW50
ZXJmYWNlOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFj
ZSwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgewotcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkpOyB9
Ci0gICAgflJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSgpIHsgc3RvcCgpOyB9Ci0KLSAgICB2
b2lkIHN0b3AoKTsKLQotICAgIGJvb2wgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZT4mJik7Ci0gICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXVkaW9Tb3VyY2UuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYm
KTsKLQotICAgIHZpcnR1YWwgdm9pZCBBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRl
cmZhY2UqIHNpbmspIHsgbV9zaW5rcy5hcHBlbmQoc2luayk7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
UmVtb3ZlU2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lu
a3MucmVtb3ZlRmlyc3Qoc2luayk7IH0KLQotICAgIGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7
IHJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQotICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmlu
YWwgeyBkZXJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQotICAgIFNvdXJjZVN0YXRlIHN0YXRl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4ga0xpdmU7IH0KLSAgICBib29sIHJlbW90ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBSZWdpc3Rlck9ic2VydmVyKHdlYnJ0
Yzo6T2JzZXJ2ZXJJbnRlcmZhY2UqKSBmaW5hbCB7IH0KLSAgICB2b2lkIFVucmVnaXN0ZXJPYnNl
cnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9Ci0KLSAgICB2b2lkIHNv
dXJjZU11dGVkQ2hhbmdlZCgpOwotICAgIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKTsKLSAg
ICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0
Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwot
Ci0gICAgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKTsKLSAgICBi
b29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCk7Ci0gICAgYm9vbCBoYXNC
dWZmZXJlZEVuZ291aERhdGEoKTsKLQotICAgIC8vIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpP
YnNlcnZlciBBUEkKLSAgICB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJikgZmluYWwgeyBzb3VyY2VNdXRlZENoYW5nZWQoKTsgfQotICAgIHZvaWQgdHJhY2tF
bmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlRW5h
YmxlZENoYW5nZWQoKTsgfQotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlJiwgY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRm
b3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KSBmaW5hbCB7IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZSht
ZWRpYVRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7IH0KLSAgICB2b2lkIHRy
YWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KLSAgICB2b2lkIHRy
YWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9Ci0K
LSAgICB2b2lkIHB1bGxBdWRpb0RhdGEoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnZlcnRl
cigpOwotICAgIHZvaWQgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwotICAgIHZvaWQgc2VuZFNpbGVu
Y2UoKTsKLQotICAgIFZlY3Rvcjx3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9z
aW5rczsKLSAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7Ci0g
ICAgUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9zYW1wbGVDb252ZXJ0ZXI7Ci0gICAgQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbjsKLSAgICBDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbjsKLQotICAgIFZl
Y3Rvcjx1aW50OF90PiBtX2F1ZGlvQnVmZmVyOwotICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsg
MCB9OwotICAgIHVpbnQ2NF90IG1fd3JpdGVDb3VudCB7IDAgfTsKLSAgICBib29sIG1fbXV0ZWQg
eyBmYWxzZSB9OwotICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9za2lw
cGluZ0F1ZGlvRGF0YSB7IGZhbHNlIH07Ci0gICAgVGltZXIgbV9zaWxlbmNlQXVkaW9UaW1lcjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMTJiODhhZjgwZjQ3ZGE3YmExZDRiYzE4NGM1YjBlOThjMjA0ZWE2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApAQCAtMCwwICsxLDE2NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQu
aCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBpbmxpbmUgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIGxpYndlYnJ0Y0F1
ZGlvRm9ybWF0KEZsb2F0NjQgc2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKK3sKKyAg
ICAvLyBGSVhNRTogTWljcm9waG9uZXMgY2FuIGhhdmUgbW9yZSB0aGFuIHR3byBjaGFubmVscy4g
SW4gc3VjaCBjYXNlLCB3ZSBzaG91bGQgZG8gdGhlIG1peCBkb3duIGJhc2VkIG9uIEF1ZGlvQ2hh
bm5lbExheW91dFRhZy4KKyAgICBzaXplX3QgbGliV2ViUlRDQ2hhbm5lbENvdW50ID0gY2hhbm5l
bENvdW50ID49IDIgPyAyIDogY2hhbm5lbENvdW50OworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgRmlsbE91dEFTQkRGb3JMUENNKHN0cmVhbUZvcm1h
dCwgc2FtcGxlUmF0ZSwgbGliV2ViUlRDQ2hhbm5lbENvdW50LCBMaWJXZWJSVENBdWRpb0Zvcm1h
dDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJU
Q0F1ZGlvRm9ybWF0Ojppc0Zsb2F0LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNCaWdFbmRpYW4s
IExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc05vbkludGVybGVhdmVkKTsKKyAgICByZXR1cm4gc3Ry
ZWFtRm9ybWF0OworfQorCitSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYm
IGF1ZGlvU291cmNlKQorICAgIDogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFdURk1vdmUo
YXVkaW9Tb3VyY2UpKQorICAgICwgbV9zYW1wbGVDb252ZXJ0ZXIoQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpjcmVhdGUoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUgKiAyKSkKK3sKK30K
KworUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4gUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlOjpjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNl
KQoreworICAgIHJldHVybiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6Y3JlYXRl
KFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYTo6aGFuZGxlTXV0ZWRJZk5lZWRlZCgpCit7CisgICAgYm9vbCBpc1NpbGVuY2Vk
ID0gbV9tdXRlZCB8fCAhbV9lbmFibGVkOworICAgIG1fc2FtcGxlQ29udmVydGVyLT5zZXRNdXRl
ZChpc1NpbGVuY2VkKTsKKworICAgIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpo
YW5kbGVNdXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlQ29jb2E6OnNlbmRTaWxlbmNlKCkKK3sKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9u
V2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIHsKKyAgICAgICAgc2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURl
c2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUg
PSBjaHVua1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXpl
ICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7CisKKyAgICAg
ICAgaWYgKCFidWZmZXJTaXplKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fYXVk
aW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKKyAgICAgICAgbWVtc2V0KG1fYXVkaW9CdWZmZXIu
ZGF0YSgpLCAwLCBidWZmZXJTaXplKTsKKyAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3Npbmtz
KQorICAgICAgICAgICAgc2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJS
VENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1w
bGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBj
aHVua1NhbXBsZUNvdW50KTsKKyAgICB9KTsKK30KKworYm9vbCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2VDb2NvYTo6aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCkKK3sK
KyAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9pbnB1dFN0
cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKyAgICBhdXRvIHJlYWRBdWRpb0R1cmF0aW9u
ID0gbV9yZWFkQ291bnQgLyBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsK
KworICAgIEFTU0VSVCh3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbik7
CisgICAgcmV0dXJuIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID4gcmVhZEF1ZGlvRHVyYXRpb24gKyAw
LjU7Cit9CisKK2Jvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmlzUmVhY2hp
bmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCkKK3sKKyAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1
cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJh
dGUoKTsKKyAgICBhdXRvIHJlYWRBdWRpb0R1cmF0aW9uID0gbV9yZWFkQ291bnQgLyBtX291dHB1
dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKworICAgIEFTU0VSVCh3cml0dGVuQXVk
aW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbik7CisgICAgcmV0dXJuIHdyaXR0ZW5BdWRp
b0R1cmF0aW9uIDwgcmVhZEF1ZGlvRHVyYXRpb24gKyAwLjE7Cit9CisKK2Jvb2wgUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6Omhhc0J1ZmZlcmVkRW5vdWdoRGF0YSgpCit7CisgICAg
YXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1E
ZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisgICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1f
cmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisKKyAg
ICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOworICAg
IHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbiArIDAuMDE7
Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmF1ZGlvU2FtcGxl
c0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVk
aW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBzdHJlYW1EZXNjcmlwdGlvbiwg
c2l6ZV90IHNhbXBsZUNvdW50KQoreworICAgIGlmIChtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24g
IT0gc3RyZWFtRGVzY3JpcHRpb24pIHsKKyAgICAgICAgbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9u
ID0gdG9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oc3RyZWFtRGVzY3JpcHRpb24pOworICAgICAg
ICBhdXRvIHN0YXR1cyAgPSBtX3NhbXBsZUNvbnZlcnRlci0+c2V0SW5wdXRGb3JtYXQobV9pbnB1
dFN0cmVhbURlc2NyaXB0aW9uKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzdGF0dXMsICFzdGF0
dXMpOworCisgICAgICAgIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gPSBsaWJ3ZWJydGNBdWRp
b0Zvcm1hdChMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlUmF0ZSwgc3RyZWFtRGVzY3JpcHRp
b24ubnVtYmVyT2ZDaGFubmVscygpKTsKKyAgICAgICAgc3RhdHVzID0gbV9zYW1wbGVDb252ZXJ0
ZXItPnNldE91dHB1dEZvcm1hdChtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnN0cmVhbURlc2Ny
aXB0aW9uKCkpOworICAgICAgICBBU1NFUlQoIXN0YXR1cyk7CisgICAgfQorCisgICAgLy8gTGV0
J3Mgc2tpcCBwdXNoaW5nIHNhbXBsZXMgaWYgd2UgYXJlIHRvbyBzbG93IHB1bGxpbmcgdGhlbS4K
KyAgICBpZiAobV9za2lwcGluZ0F1ZGlvRGF0YSkgeworICAgICAgICBpZiAoIWlzUmVhY2hpbmdC
dWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fc2tpcHBpbmdBdWRpb0RhdGEgPSBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKGlzUmVhY2hpbmdC
dWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpKSB7CisgICAgICAgIG1fc2tpcHBpbmdBdWRpb0Rh
dGEgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSWYgd2UgY2hhbmdl
IHRoZSBhdWRpbyB0cmFjayBvciBpdHMgc2FtcGxlIHJhdGUgY2hhbmdlcywgdGhlIHRpbWVzdGFt
cCBiYXNlZCBvbiBtX3dyaXRlQ291bnQgbWF5IGJlIHdyb25nLgorICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgdXBkYXRlIG1fd3JpdGVDb3VudCB0byBiZSB2YWxpZCBhY2NvcmRpbmcgdGhlIG5ldyBz
YW1wbGVSYXRlLgorICAgIG1fc2FtcGxlQ29udmVydGVyLT5wdXNoU2FtcGxlcyhNZWRpYVRpbWUo
bV93cml0ZUNvdW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9pbnB1dFN0cmVhbURlc2NyaXB0
aW9uLnNhbXBsZVJhdGUoKSkpLCBhdWRpb0RhdGEsIHNhbXBsZUNvdW50KTsKKyAgICBtX3dyaXRl
Q291bnQgKz0gc2FtcGxlQ291bnQ7CisKKyAgICBpZiAoIWhhc0J1ZmZlcmVkRW5nb3VoRGF0YSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRD
U2lnbmFsaW5nVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+cHVsbEF1ZGlvRGF0YSgpOworICAgIH0pOworfQorCit2b2lkIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpwdWxsQXVkaW9EYXRhKCkKK3sKKyAgICAv
LyBsaWJ3ZWJydGMgZXhwZWN0cyAxMCBtcyBjaHVua3MuCisgICAgc2l6ZV90IGNodW5rU2FtcGxl
Q291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKKyAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IGNodW5rU2FtcGxlQ291bnQgKiBMaWJXZWJSVENBdWRpb0Zv
cm1hdDo6c2FtcGxlQnl0ZVNpemUgKiBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9m
Q2hhbm5lbHMoKTsKKyAgICBtX2F1ZGlvQnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7CisKKyAgICBB
dWRpb0J1ZmZlckxpc3QgYnVmZmVyTGlzdDsKKyAgICBidWZmZXJMaXN0Lm1OdW1iZXJCdWZmZXJz
ID0gMTsKKyAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fb3V0
cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOworICAgIGJ1ZmZlckxpc3Qu
bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IGJ1ZmZlclNpemU7CisgICAgYnVmZmVyTGlzdC5t
QnVmZmVyc1swXS5tRGF0YSA9IG1fYXVkaW9CdWZmZXIuZGF0YSgpOworCisgICAgbV9zYW1wbGVD
b252ZXJ0ZXItPnB1bGxBdmFsYWlibGVTYW1wbGVzQXNDaHVua3MoYnVmZmVyTGlzdCwgY2h1bmtT
YW1wbGVDb3VudCwgbV9yZWFkQ291bnQsIFt0aGlzLCBjaHVua1NhbXBsZUNvdW50XSB7CisgICAg
ICAgIG1fcmVhZENvdW50ICs9IGNodW5rU2FtcGxlQ291bnQ7CisgICAgICAgIGZvciAoYXV0byBz
aW5rIDogbV9zaW5rcykKKyAgICAgICAgICAgIHNpbmstPk9uRGF0YShtX2F1ZGlvQnVmZmVyLmRh
dGEoKSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24uc2FtcGxlUmF0ZSgpLCBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9m
Q2hhbm5lbHMoKSwgY2h1bmtTYW1wbGVDb3VudCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2NDQ3YzFhMjMx
YWFmM2M2MjE3YWZlNDUwYmM3YjI0MjkyNDU4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlQ29jb2EuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJl
ZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCIK
KyNpbmNsdWRlICJSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCIKKworbmFtZXNwYWNlIHdl
YnJ0YyB7CitjbGFzcyBBdWRpb1RyYWNrSW50ZXJmYWNlOworY2xhc3MgQXVkaW9UcmFja1NpbmtJ
bnRlcmZhY2U7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlQ29jb2EgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E+LCBwdWJsaWMgUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwgcHJpdmF0
ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgeworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E+IGNyZWF0ZShSZWY8TWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU+JiYgYXVkaW9Tb3VyY2UpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoV1RGTW92ZShhdWRpb1NvdXJjZSkpKTsg
fQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNv
Y29hKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7CisKKyAgICB2b2lkIGF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYs
IGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOworCisgICAgYm9v
bCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSBmaW5hbDsKKyAgICBib29s
IGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCkgZmluYWw7CisgICAgYm9vbCBo
YXNCdWZmZXJlZEVub3VnaERhdGEoKSBmaW5hbDsKKworICAgIHZvaWQgcHVsbEF1ZGlvRGF0YSgp
IGZpbmFsOworCisgICAgdm9pZCBoYW5kbGVNdXRlZElmTmVlZGVkKCkgZmluYWw7CisgICAgdm9p
ZCBzZW5kU2lsZW5jZSgpIGZpbmFsOworCisgICAgUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4g
bV9zYW1wbGVDb252ZXJ0ZXI7CisgICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG1faW5wdXRT
dHJlYW1EZXNjcmlwdGlvbjsKKyAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9vdXRwdXRT
dHJlYW1EZXNjcmlwdGlvbjsKKworICAgIFZlY3Rvcjx1aW50OF90PiBtX2F1ZGlvQnVmZmVyOwor
ICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsgMCB9OworICAgIHVpbnQ2NF90IG1fd3JpdGVDb3Vu
dCB7IDAgfTsKKyAgICBib29sIG1fc2tpcHBpbmdBdWRpb0RhdGEgeyBmYWxzZSB9OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323638</attachid>
            <date>2017-10-12 22:25:52 -0700</date>
            <delta_ts>2017-10-13 09:08:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177928-20171013072550.patch</filename>
            <type>text/plain</type>
            <size>70827</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkzODIyMzA3YzA4MTkz
ODNhYjVjNDliNDQxNTFlNWFkODFkNWFmMy4uODg2OTExNjJiZWQ0YTcyYjE3NTg2NzY1ODI3Mzll
N2JmOTNjZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTEwLTEyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlcyBhbmQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlcyBw
b3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciB0aGUgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGFuZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgY2xhc3NlcywKKyAgICAgICAgbW92ZSB0aGUgbWFjIHNwZWNp
ZmljIGNvZGUgdG8gYSBkaWZmZXJlbnQgY2xhc3MuIFRoaXMgd2F5IHdlIGNhbiB1c2UgdGhlbSBm
cm9tCisgICAgICAgIG90aGVyIHBvcnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgd2UgYXJl
IG5vdCBhZGRpbmcgbmV3IGZ1bmN0aW9uYWxpdHkganVzdCByZWZhY3RvcmluZy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmguIEp1c3QgdGhlIHBvcnQg
YWdub3N0aWMgcGFydHMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaC4gRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAuIERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmguIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6IEFkZGVkLCBpdCBhZGRzIENv
Y29hIGNvZGUgcGFydHMgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhpcyBm
dW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUgdG8g
YXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBBZGRl
ZCBDb2NvYSBjb2RlIGZyb20gb3JpZ2luYWwgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6
IEFkZGVkIENvY29hIGNvZGUgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhp
cyBmdW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUg
dG8gYXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBB
ZGRlZCBDb2NvYSBjb2RlIGZyb20gdGhlIG9yaWdpbmFsIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaC4KKwogMjAxNy0x
MC0wNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbV2luQ2Fpcm9dIEZpeCBidWlsZCBhZnRlciBCdWcgMTY3OTU2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDdmMjJlNTE2Zjk3YTI5N2RkNTQ4ZTc1Y2VlMDg3N2ExYzU2MjVmMWEuLmE4NDQxYmY0
Y2IyYmZhNTNhNWMyMjY4MDc3ZjE2NzcxMjAzNWMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yNTQ4LDkgKzI1NDgsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAKICAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcAogICAg
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3Bw
CisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCiAgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKICAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCisgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAogCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmY4Njg4YmMzZDlkNmU0MWU4MmRlNjY2OGIyYjlmYzViYjA4ZDM3Yy4uMjk5Yjc2NmM2
MTZjMGQzZTFiYjhlYWRlYTY3NjAxYzdiYjA0NDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5Niw4ICsxNjk2LDEyIEBA
CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEw
NDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTEw
M0FBQjFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovOyB9Owog
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
ODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggKi87IH07
CisJCTQxMTAzQUFCMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovOyB9OworCQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE4MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovOyB9OwogCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMDMg
LyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi87IH07CiAJCTQxMTAzQUFFMUUzOTc5MTAwMDc2OUYw
MyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQUExRTM5NzkwQTAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi87IH07CisJCTQxMTAzQUFEMUUzOTc5MTAw
MDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTkxRTM5NzkwQTAwNzY5
RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggKi87IH07CisJCTQxMTAz
QUFFMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
QTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3Bw
ICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2ViQ29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOUIx
QTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTQxMjMwOTEz
MTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGODIxNjI5OTAyOUY0RkI1MDEw
MDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTI3RDUzNzBGOEFB
QjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0
YXRlLmNwcCAqLzsgfTsKQEAgLTk0NzIsOCArOTQ3NiwxMiBAQAogCQk0MTBCN0U3MTEwNDVGQUIw
MDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMTAzQUE4MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE4MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBOTFFMzk3OTBBMDA3
NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIz
MjgwMEI5M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMyODAwQjk1NjcyIC8qIFJlYWRhYmxl
U3RyZWFtQllPQlJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtQllPQlJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0OTcs
NiArMTY1MDUsOCBAQAogCQkJCTA3RkZERTY2MTgxQUVENDIwMDcyRDQwOSAvKiBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZS5jcHAgKi8sCiAJCQkJMDdGRkRFNjcxODFBRUQ0MjAwNzJENDA5IC8qIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggKi8sCiAJCQkJNUVCQjg5MzgxQzc3QkRBNDAwQzY1RDQx
IC8qIFBlZXJNZWRpYURlc2NyaXB0aW9uLmggKi8sCisJCQkJNDExMDNBQUExRTM5NzkwQTAwNzY5
RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi8sCisJCQkJNDExMDNBQTkx
RTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oICovLAogCQkJ
CTRBNEY2NTZCMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLywK
IAkJCQk0QTRGNjU2QzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oICov
LAogCQkJCTRBNEY2NTZEMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzLmggKi8sCkBAIC0xNjUwNiw2ICsxNjUxNiw4IEBACiAJCQkJNEE0RjY1NkYxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovLAogCQkJCTJF
QzQxREUyMUMwNDEwQTMwMEQyOTRGRSAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuY3BwICovLAogCQkJCTA3QzFDMEU0MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLywKKwkJCQk0MTEwM0FBNzFFMzk3
OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCAqLywKKwkJCQk0
MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgg
Ki8sCiAJCQkJMzEzNTkxMEMxRTdERENCNjAwRjMwNjMwIC8qIFJUQ0J1bmRsZVBvbGljeS5oICov
LAogCQkJCTA3MjIxQkEyMTdDRjBBRDQwMDg0OEU1MSAvKiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCAqLywKIAkJCQkwNzIyMUJBMzE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50LmggKi8sCkBAIC0xNjU1NCwxNCArMTY1NjYsMTQgQEAKIAkJCQkwNzQ0RUNFQzFF
MEM0QUU1MDAwRDA5NDQgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJ
MDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgg
Ki8sCiAJCQkJMDdFRTc2RUUxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tICovLAotCQkJCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwICovLAotCQkJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAv
KiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCAqLywKKwkJCQk0MTEwM0FBQTFFMzk3OTBB
MDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwICovLAorCQkJ
CTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5oICovLAogCQkJCTVDREQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2UuY3BwICovLAogCQkJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLywKIAkJCQk0QTBGRkFBMzFBQUY1RUY2MDA2
MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgKi8sCiAJCQkJNEEwRkZB
QTQxQUFGNUVGNjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCAqLywK
LQkJCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcCAqLywKLQkJCQk0MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggKi8sCisJCQkJNDExMDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCAqLywKKwkJCQk0MTEwM0FBODFFMzk3
OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCAqLywKIAkJ
CQk1Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmNwcCAqLywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8sCkBAIC0yOTYxNCw2ICsyOTYyNiw3IEBACiAJ
CQkJNDEyOUM5QUIxRjU5QzU3MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAzQzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFs
eXNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExMDNBQUQxRTM5NzkxMDAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDExMDNBQUQx
RTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8q
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRB
MEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NjIxLDYgKzI5NjM0LDcgQEAKIAkJCQk0QTRGNjU3NDFBQTk5N0Yx
MDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBQzFFMzk3OTEwMDA3
NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQjk1MjI0MUY1OEE1OEYwMDkzMURDMiAvKiBS
ZWNvcmRpbmdTd2l6emxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2OEU4MEMyMjZF
MzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1ODE3NUQ0MTRD
MDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1ODIsNiAr
MzM1OTYsNyBAQAogCQkJCTQxMjlDOThBMUY1ODdGRUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVh
bVNpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwM0IxMkIwMjY3NjAwQzFBMzU5IC8q
IFJlYWx0aW1lQW5hbHlzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMDNBQUUxRTM5Nzkx
MDAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTEwM0FBRTFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzM0UxRTQzMjREQzAwNjIx
RTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0QTRGNjU3MDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0QTBGRkFBMTFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNTg5LDYgKzMzNjA0LDcgQEAK
IAkJCQk0QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQzQxREU0MUMwNDEwQTMwMEQyOTRGRSAvKiBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDExMDNBQUIxRTM5NzkxMDAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEwM0FBQjFFMzk3OTEwMDA3NjlGMTQgLyog
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDgzM0QxRTQzMjREOTAwNjIxRTkyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFu
Z2xlU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBQjQxODExM0UzNTZFODAwRDhBQUYz
IC8qIFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MWFiM2Q3NjgzYjNiOGZmYzUwMmJmMzQ2NTI0Nzk3MzVj
MjFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRp
b0Zvcm1hdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKKyAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQoreworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOworfQorCitSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1f
YXVkaW9UcmFjaykKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOworfQorCit2
b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQorewor
ICAgIGlmIChtX2F1ZGlvVHJhY2spCisgICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0
aGlzKTsKK30KKwordm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRy
YWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgdHJh
Y2spCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOworICAgIEFTU0VSVCh0cmFjayk7CisK
KyAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAgICBub3RpZnlNdXRlZENoYW5n
ZSghbV9hdWRpb1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCisgICAgICAgIG1f
YXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMo
KSBjb25zdAoreworICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpl
bXB0eUNhcGFiaWxpdGllcygpOworfQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAoreworICAg
IHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY5N2Qx
N2M0ZTFkYzQ3N2MwOTU2Nzg3MmY3NWI0ZDhiOWM1MTg3MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldF
QlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlLCBwcml2YXRlIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYp
OworCisgICAgdm9pZCBzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmKTsKKworcHJpdmF0ZToKKyAgICBSZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFj
ZT4mJiwgU3RyaW5nJiYpOworICAgIH5SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UoKTsKKwor
ICAgIC8vIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgQVBJCisgICAgdmlydHVhbCB2
b2lkIE9uRGF0YShjb25zdCB2b2lkKiAvKiBhdWRpb0RhdGEgKi8sIGludCAvKiBiaXRzUGVyU2Ft
cGxlICovLCBpbnQgLyogc2FtcGxlUmF0ZSAqLywgc2l6ZV90IC8qIG51bWJlck9mQ2hhbm5lbHMg
Ki8sIHNpemVfdCAvKiBudW1iZXJPZkZyYW1lcyAqLykgeyB9OworCisgICAgLy8gUmVhbHRpbWVN
ZWRpYVNvdXJjZSBBUEkKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOworICAg
IHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSAgZmluYWw7CisKKyAgICBjb25zdCBSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5hbDsKKyAgICBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWw7
CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7Cisg
ICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4gbV9hdWRp
b1RyYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKExJ
QldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZmM2E1YmViNmY1Y2NjMDEzNjk0ZTA5MTQwMmYyN2YyODIwZjdmYjkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJl
cXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisg
KiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVk
ZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4m
JiBhdWRpb1NvdXJjZSkKKyAgICA6IG1fYXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRpb1NvdXJjZSkp
CisgICAgLCBtX3NpbGVuY2VBdWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlOjpzZW5kU2lsZW5jZSkKK3sKKyAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZlcigq
dGhpcyk7CisgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOworfQorCitib29sIFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4m
JiBuZXdTb3VyY2UpCit7CisgICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMp
OworICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7CisgICAgbV9hdWRpb1Nv
dXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOworCisgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
aW5pdGlhbGl6ZUNvbnZlcnRlcigpCit7CisgICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11
dGVkKCk7CisgICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxlZCgpOworICAgIGhh
bmRsZU11dGVkSWZOZWVkZWQoKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2U6OnN0b3AoKQoreworICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOworICAgIG1fYXVk
aW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCit7CisgICAgbV9tdXRlZCA9IG1f
YXVkaW9Tb3VyY2UtPm11dGVkKCk7CisgICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOworfQorCit2
b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxlZENoYW5nZWQoKQor
eworICAgIG1fZW5hYmxlZCA9IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsKKyAgICBoYW5kbGVN
dXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpo
YW5kbGVNdXRlZElmTmVlZGVkKCkKK3sKKyAgICBib29sIGlzU2lsZW5jZWQgPSBtX211dGVkIHx8
ICFtX2VuYWJsZWQ7CisgICAgaWYgKGlzU2lsZW5jZWQgJiYgIW1fc2lsZW5jZUF1ZGlvVGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdGFydFJlcGVhdGluZygx
X3MpOworICAgIGlmICghaXNTaWxlbmNlZCAmJiBtX3NpbGVuY2VBdWRpb1RpbWVyLmlzQWN0aXZl
KCkpCisgICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmU5ODE3ZjFjZjI0NDRjMzM3ZDU4MjgxMDA5
MmViYmFiOGJiOWRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAgLTAsMCArMSwxMDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisg
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiVGltZXIu
aCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+CisjaW5jbHVk
ZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSB3ZWJydGMgeworY2xh
c3MgQXVkaW9UcmFja0ludGVyZmFjZTsKK2NsYXNzIEF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlOwor
fQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwgcHJpdmF0ZSBNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlPiYmIGF1ZGlvU291cmNlKTsKKworICAgIH5SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2UoKSB7IHN0b3AoKTsgfQorCisgICAgdm9pZCBzdG9wKCk7CisKKyAgICBib29sIHNldFNvdXJj
ZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOworICAgIE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU291cmNlLmdldCgpOyB9CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7CisKKyAgICB2aXJ0dWFsIHZvaWQgQWRkU2luayh3
ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lua3MuYXBwZW5kKHNp
bmspOyB9CisgICAgdmlydHVhbCB2b2lkIFJlbW92ZVNpbmsod2VicnRjOjpBdWRpb1RyYWNrU2lu
a0ludGVyZmFjZSogc2luaykgeyBtX3NpbmtzLnJlbW92ZUZpcnN0KHNpbmspOyB9CisKKyAgICBp
bnQgQWRkUmVmKCkgY29uc3QgZmluYWwgeyByZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7IH0KKyAg
ICBpbnQgUmVsZWFzZSgpIGNvbnN0IGZpbmFsIHsgZGVyZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7
IH0KKyAgICBTb3VyY2VTdGF0ZSBzdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGtMaXZlOyB9
CisgICAgYm9vbCByZW1vdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZv
aWQgUmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9
CisgICAgdm9pZCBVbnJlZ2lzdGVyT2JzZXJ2ZXIod2VicnRjOjpPYnNlcnZlckludGVyZmFjZSop
IGZpbmFsIHsgfQorCisgICAgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoKTsKKyAgICB2b2lkIHNv
dXJjZUVuYWJsZWRDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvU2FtcGxlc0F2YWls
YWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIHsgfTsKKworICAgIHZpcnR1YWwgYm9vbCBp
c1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSB7IHJldHVybiBmYWxzZTsgfTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGltaXQoKSB7
IHJldHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnVmZmVyZWRFbm91Z2hEYXRh
KCkgeyByZXR1cm4gZmFsc2U7IH07CisKKyAgICAvLyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
T2JzZXJ2ZXIgQVBJCisgICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlTXV0ZWRDaGFuZ2VkKCk7IH0KKyAgICB2b2lkIHRyYWNr
RW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IHNvdXJjZUVu
YWJsZWRDaGFuZ2VkKCk7IH0KKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZSYsIGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lLCBjb25zdCBQbGF0
Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3Jp
cHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkgeyBhdWRpb1NhbXBsZXNBdmFpbGFibGUobWVkaWFU
aW1lLCBkYXRhLCBkZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQpOyB9CisgICAgdm9pZCB0cmFja0Vu
ZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9CisgICAgdm9pZCB0cmFja1Nl
dHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIHB1bGxBdWRpb0RhdGEoKSB7IH07CisKKyAgICB2b2lkIGluaXRpYWxpemVD
b252ZXJ0ZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOworICAg
IHZpcnR1YWwgdm9pZCBzZW5kU2lsZW5jZSgpIHsgfTsKKworICAgIFZlY3Rvcjx3ZWJydGM6OkF1
ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9zaW5rczsKKyAgICBSZWY8TWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7CisKKyAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OworICAgIFRpbWVyIG1fc2lsZW5jZUF1ZGlvVGlt
ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VC
UlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc1MzhjZDA1NWI0ZGNhNDk5MjFiMmQ1MWQ4MGYwODJl
YjIyNjczNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogICAgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogICAgZGlz
dHJpYnV0aW9uLgotICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICAgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgi
Ci0KLSNpZiBVU0UoTElCV0VCUlRDKQotCi0jaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bi5oIgotI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkxp
YldlYlJUQ0F1ZGlvRm9ybWF0LmgiCi0jaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCi0j
aW5jbHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCIKLSNpbmNsdWRlIDxwYWwv
YXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgotCi0jaW5jbHVkZSAiQ29yZU1l
ZGlhU29mdExpbmsuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8UmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlPiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ss
IFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkKLXsKLSAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpu
ZXcgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1v
dmUoYXVkaW9UcmFja0lkKSkpOwotICAgIHNvdXJjZS0+c3RhcnQoKTsKLSAgICByZXR1cm4gc291
cmNlOwotfQotCi1SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OlJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNl
PiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkKLSAgICA6IFJlYWx0aW1lTWVk
aWFTb3VyY2UoV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
OjpBdWRpbywgU3RyaW5nKCkpCi0gICAgLCBtX2F1ZGlvVHJhY2soV1RGTW92ZShhdWRpb1RyYWNr
KSkKLXsKLSAgICBub3RpZnlNdXRlZENoYW5nZSghbV9hdWRpb1RyYWNrKTsKLX0KLQotUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKCkKLXsK
LSAgICBzdG9wKCk7Ci19Ci0KLQotc3RhdGljIGlubGluZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24gc3RyZWFtRGVzY3JpcHRpb24oc2l6ZV90IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVs
Q291bnQpCi17Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsK
LSAgICBGaWxsT3V0QVNCREZvckxQQ00oc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlLCBjaGFubmVs
Q291bnQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zv
cm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzRmxvYXQsIExpYldlYlJU
Q0F1ZGlvRm9ybWF0Ojppc0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzTm9uSW50
ZXJsZWF2ZWQpOwotICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7Ci19Ci0KLXZvaWQgUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlOjpPbkRhdGEoY29uc3Qgdm9pZCogYXVkaW9EYXRhLCBpbnQgYml0
c1BlclNhbXBsZSwgaW50IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QgbnVtYmVyT2ZGcmFtZXMpCi17Ci0gICAgLy8gV2UgbWF5IHJlY2VpdmUgT25EYXRhIGNhbGxz
IHdpdGggZW1wdHkgc291bmQgZGF0YSAobW9ubywgc2FtcGxlcyBlcXVhbCB0byB6ZXJvIGFuZCBz
YW1wbGVSYXRlIGVxdWFsIHRvIDE2MDAwKSB3aGVuIHN0YXJ0aW5nIHRoZSBjYWxsLgotICAgIC8v
IEZJWE1FOiBGb3IgdGhlIG1vbWVudCB3ZSBza2lwIHRoZW0sIHdlIHNob3VsZCBmaW5kIGEgYmV0
dGVyIHNvbHV0aW9uIGF0IGxpYndlYnJ0YyBsZXZlbCB0byBub3QgYmUgY2FsbGVkIHVudGlsIGdl
dHRpbmcgc29tZSByZWFsIGRhdGEuCi0gICAgaWYgKHNhbXBsZVJhdGUgPT0gMTYwMDAgJiYgbnVt
YmVyT2ZDaGFubmVscyA9PSAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoYml0c1Bl
clNhbXBsZSA9PSAxNik7Ci0gICAgQVNTRVJUKG51bWJlck9mQ2hhbm5lbHMgPT0gMSB8fCBudW1i
ZXJPZkNoYW5uZWxzID09IDIpOwotICAgIEFTU0VSVChzYW1wbGVSYXRlID09IDQ4MDAwKTsKLQot
ICAgIENNVGltZSBzdGFydFRpbWUgPSBDTVRpbWVNYWtlKG1fbnVtYmVyT2ZGcmFtZXMsIHNhbXBs
ZVJhdGUpOwotICAgIGF1dG8gbWVkaWFUaW1lID0gUEFMOjp0b01lZGlhVGltZShzdGFydFRpbWUp
OwotICAgIG1fbnVtYmVyT2ZGcmFtZXMgKz0gbnVtYmVyT2ZGcmFtZXM7Ci0KLSAgICBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24gbmV3RGVzY3JpcHRpb24gPSBzdHJlYW1EZXNjcmlwdGlvbihz
YW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKTsKLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
bm90IG5lZWQgdG8gZG8gdGhlIGV4dHJhIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBjb3B5LgotICAg
IC8vIEluc3RlYWQsIHdlIHNob3VsZCBiZSBhYmxlIHRvIGRpcmVjdGx5IHBhc3MgYXVkaW9EYXRh
IHBvaW50ZXIuCi0gICAgV2ViQXVkaW9CdWZmZXJMaXN0IGF1ZGlvQnVmZmVyTGlzdCB7IENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbihuZXdEZXNjcmlwdGlvbiksIFdURjo6c2FmZUNhc3Q8dWludDMy
X3Q+KG51bWJlck9mRnJhbWVzKSB9OwotICAgIGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1E
YXRhQnl0ZVNpemUgPSBudW1iZXJPZkNoYW5uZWxzICogbnVtYmVyT2ZGcmFtZXMgKiBiaXRzUGVy
U2FtcGxlIC8gODsKLSAgICBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tTnVtYmVyQ2hhbm5l
bHMgPSBudW1iZXJPZkNoYW5uZWxzOwotCi0gICAgaWYgKG11dGVkKCkpCi0gICAgICAgIG1lbXNl
dChhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgMCwgYXVkaW9CdWZmZXJMaXN0LmJ1
ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSk7Ci0gICAgZWxzZQotICAgICAgICBtZW1jcHkoYXVkaW9C
dWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGEsIGF1ZGlvRGF0YSwgYXVkaW9CdWZmZXJMaXN0LmJ1
ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSk7Ci0KLSAgICBhdWRpb1NhbXBsZXNBdmFpbGFibGUobWVk
aWFUaW1lLCBhdWRpb0J1ZmZlckxpc3QsIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihuZXdEZXNj
cmlwdGlvbiksIG51bWJlck9mRnJhbWVzKTsKLX0KLQotdm9pZCBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCi17Ci0gICAgaWYgKG1fYXVkaW9UcmFjaykK
LSAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOwotfQotCi12b2lkIFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQotewotICAgIGlmIChtX2F1
ZGlvVHJhY2spCi0gICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0aGlzKTsKLX0KLQot
dm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRyYWNrKHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgdHJhY2spCi17Ci0gICAg
QVNTRVJUKCFtX2F1ZGlvVHJhY2spOwotICAgIEFTU0VSVCh0cmFjayk7Ci0KLSAgICBtX2F1ZGlv
VHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKLSAgICBub3RpZnlNdXRlZENoYW5nZSghbV9hdWRpb1Ry
YWNrKTsKLSAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCi0gICAgICAgIG1fYXVkaW9UcmFjay0+
QWRkU2luayh0aGlzKTsKLX0KLQotY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMoKSBjb25zdAotewot
ICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjplbXB0eUNhcGFiaWxp
dGllcygpOwotfQotCi1jb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAotewotICAgIHJldHVybiBtX2N1
cnJlbnRTZXR0aW5nczsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZmI2MDIyMDg1MTk3ZmYzOWE2ODU0NzAxZWZiMjBmYjllMGRkNGU0Mi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogICAgZGlzdHJpYnV0aW9uLgotICogMy4g
TmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmli
dXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20gdGhpcwotICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShM
SUJXRUJSVEMpCi0KLSNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKLSNpbmNsdWRlICJSZWFs
dGltZU1lZGlhU291cmNlLmgiCi0jaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+
Ci0jaW5jbHVkZSA8d2VicnRjL2FwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oPgotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLQotdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXRE
ZXNjcmlwdGlvbiAqQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzsKLQotY2xhc3MgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2Us
IHByaXZhdGUgd2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IGNyZWF0ZShydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7Ci0KLSAg
ICB2b2lkIHNldFNvdXJjZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJh
Y2tJbnRlcmZhY2U+JiYpOwotCi1wcml2YXRlOgotICAgIFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBT
dHJpbmcmJik7Ci0gICAgflJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpOwotCi0gICAgLy8g
d2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSBBUEkKLSAgICB2b2lkIE9uRGF0YShjb25z
dCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykgZmluYWw7Ci0KLSAg
ICAvLyBSZWFsdGltZU1lZGlhU291cmNlIEFQSQotICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRh
KCkgZmluYWw7Ci0gICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpICBmaW5hbDsKLQotICAgIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0
IGZpbmFsOwotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3Mo
KSBjb25zdCBmaW5hbDsKLQotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJl
bnRTZXR0aW5nczsKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50
ZXJmYWNlPiBtX2F1ZGlvVHJhY2s7Ci0KLSAgICB1aW50NjRfdCBtX251bWJlck9mRnJhbWVzIHsg
MCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2Eu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQzZjk2YzZhZDllY2Y4YjQzMDNiZGFjMzhhM2U5MzcxYzQ1NmVlMDAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwCkBAIC0wLDAgKzEsMTAyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmgiCisKKyNpZiBVU0Uo
TElCV0VCUlRDKQorCisjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1
ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlv
Rm9ybWF0LmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCisjaW5jbHVkZSAiV2Vi
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCIKKyNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9u
L01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgorCisjaW5jbHVkZSAiQ29yZU1lZGlhU29mdExpbmsu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlPiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1
ZGlvVHJhY2tJZCkKK3sKKyAgICBhdXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZUNvY29hOjpjcmVhdGUoV1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92ZShhdWRpb1RyYWNr
SWQpKTsKKyAgICBzb3VyY2UtPnN0YXJ0KCk7CisgICAgcmV0dXJuIHNvdXJjZTsKK30KKworUmVm
PFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hPiBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2VDb2NvYTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJ
bnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hKFdURk1v
dmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFja0lkKSkpOworfQorCitSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2Eo
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1Ry
YWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCisgICAgOiBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2VDb2NvYShXVEZNb3ZlKGF1ZGlvVHJhY2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpCit7
Cit9CisKKworc3RhdGljIGlubGluZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFt
RGVzY3JpcHRpb24oc2l6ZV90IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291bnQpCit7Cisg
ICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKKyAgICBGaWxsT3V0
QVNCREZvckxQQ00oc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIExpYldl
YlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxl
U2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzRmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0
Ojppc0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQpOwor
ICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7Cit9CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2E6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2Ft
cGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1i
ZXJPZkZyYW1lcykKK3sKKyAgICAvLyBXZSBtYXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0aCBl
bXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1wbGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBsZVJh
dGUgZXF1YWwgdG8gMTYwMDApIHdoZW4gc3RhcnRpbmcgdGhlIGNhbGwuCisgICAgLy8gRklYTUU6
IEZvciB0aGUgbW9tZW50IHdlIHNraXAgdGhlbSwgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgc29s
dXRpb24gYXQgbGlid2VicnRjIGxldmVsIHRvIG5vdCBiZSBjYWxsZWQgdW50aWwgZ2V0dGluZyBz
b21lIHJlYWwgZGF0YS4KKyAgICBpZiAoc2FtcGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJPZkNo
YW5uZWxzID09IDEpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChiaXRzUGVyU2FtcGxl
ID09IDE2KTsKKyAgICBBU1NFUlQobnVtYmVyT2ZDaGFubmVscyA9PSAxIHx8IG51bWJlck9mQ2hh
bm5lbHMgPT0gMik7CisgICAgQVNTRVJUKHNhbXBsZVJhdGUgPT0gNDgwMDApOworCisgICAgQ01U
aW1lIHN0YXJ0VGltZSA9IENNVGltZU1ha2UobV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7
CisgICAgYXV0byBtZWRpYVRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7CisgICAg
bV9udW1iZXJPZkZyYW1lcyArPSBudW1iZXJPZkZyYW1lczsKKworICAgIEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlwdGlvbiA9IHN0cmVhbURlc2NyaXB0aW9uKHNhbXBsZVJh
dGUsIG51bWJlck9mQ2hhbm5lbHMpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVl
ZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGNvcHkuCisgICAgLy8gSW5z
dGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZGlyZWN0bHkgcGFzcyBhdWRpb0RhdGEgcG9pbnRl
ci4KKyAgICBXZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVt
YmVyT2ZGcmFtZXMpIH07CisgICAgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRl
U2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMgKiBudW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1wbGUg
LyA4OworICAgIGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9IG51
bWJlck9mQ2hhbm5lbHM7CisKKyAgICBpZiAobXV0ZWQoKSkKKyAgICAgICAgbWVtc2V0KGF1ZGlv
QnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRhLCAwLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDAp
LT5tRGF0YUJ5dGVTaXplKTsKKyAgICBlbHNlCisgICAgICAgIG1lbWNweShhdWRpb0J1ZmZlckxp
c3QuYnVmZmVyKDApLT5tRGF0YSwgYXVkaW9EYXRhLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDAp
LT5tRGF0YUJ5dGVTaXplKTsKKworICAgIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUs
IGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9u
KSwgbnVtYmVyT2ZGcmFtZXMpOworfQorCit9CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lOTU3Yzc2NmIxY2ViNzIyNTA5MDMzOTgyMGViN2YzMzk0M2JmOTc2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykK
KworI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIgorCisjaW5jbHVkZSA8
Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+CisKK3R5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1
ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9ybWF0RGVzY3JpcHRpb25SZWY7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM7CisKK2Ns
YXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZSwgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UsIHByaXZh
dGUgd2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYT4gY3JlYXRlKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKKworcHJp
dmF0ZToKKyAgICBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYShydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CisKKyAgICAv
LyB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlIEFQSQorICAgIHZvaWQgT25EYXRhKGNv
bnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJTYW1wbGUsIGludCBzYW1wbGVSYXRlLCBz
aXplX3QgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzKSBmaW5hbDsKKwor
ICAgIHVpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZDkxMDFkYzQzNzkxN2Q1MTBlNzRiZmM3NzUxYzdjNzBjN2RjMjJhNC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBi
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0g
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZS5oIgotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkNBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCi0j
aW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1z
dGF0aWMgaW5saW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBsaWJ3ZWJydGNBdWRpb0Zv
cm1hdChGbG9hdDY0IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291bnQpCi17Ci0gICAgLy8g
RklYTUU6IE1pY3JvcGhvbmVzIGNhbiBoYXZlIG1vcmUgdGhhbiB0d28gY2hhbm5lbHMuIEluIHN1
Y2ggY2FzZSwgd2Ugc2hvdWxkIGRvIHRoZSBtaXggZG93biBiYXNlZCBvbiBBdWRpb0NoYW5uZWxM
YXlvdXRUYWcuCi0gICAgc2l6ZV90IGxpYldlYlJUQ0NoYW5uZWxDb3VudCA9IGNoYW5uZWxDb3Vu
dCA+PSAyID8gMiA6IGNoYW5uZWxDb3VudDsKLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24gc3RyZWFtRm9ybWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1Gb3JtYXQsIHNh
bXBsZVJhdGUsIGxpYldlYlJUQ0NoYW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNh
bXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRp
b0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBMaWJX
ZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0gICAgcmV0dXJuIHN0cmVhbUZv
cm1hdDsKLX0KLQotUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQot
ICAgIDogbV9hdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkKLSAgICAsIG1fc2FtcGxl
Q29udmVydGVyKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRlKExpYldlYlJUQ0F1ZGlvRm9y
bWF0OjpzYW1wbGVSYXRlICogMikpCi0gICAgLCBtX3NpbGVuY2VBdWRpb1RpbWVyKCp0aGlzLCAm
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5jZSkKLXsKLSAgICBtX2F1ZGlv
U291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7Ci0gICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwot
fQotCi1ib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCi17Ci0gICAgbV9hdWRpb1NvdXJjZS0+
cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwotICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1Nv
dXJjZSk7Ci0gICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwotCi0gICAgaW5p
dGlhbGl6ZUNvbnZlcnRlcigpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFJlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRlcigpCi17Ci0gICAgbV9tdXRl
ZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7Ci0gICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJj
ZS0+ZW5hYmxlZCgpOwotICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKLX0KLQotdm9pZCBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQotewotICAgIG1fc2lsZW5jZUF1ZGlvVGlt
ZXIuc3RvcCgpOwotICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKLX0K
LQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgp
Ci17Ci0gICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7Ci0gICAgaGFuZGxlTXV0
ZWRJZk5lZWRlZCgpOwotfQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291
cmNlRW5hYmxlZENoYW5nZWQoKQotewotICAgIG1fZW5hYmxlZCA9IG1fYXVkaW9Tb3VyY2UtPmVu
YWJsZWQoKTsKLSAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVkKCkKLXsKLSAgICBib29sIGlz
U2lsZW5jZWQgPSBtX211dGVkIHx8ICFtX2VuYWJsZWQ7Ci0gICAgbV9zYW1wbGVDb252ZXJ0ZXIt
PnNldE11dGVkKGlzU2lsZW5jZWQpOwotICAgIGlmIChpc1NpbGVuY2VkICYmICFtX3NpbGVuY2VB
dWRpb1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RhcnRS
ZXBlYXRpbmcoMV9zKTsKLSAgICBpZiAoIWlzU2lsZW5jZWQgJiYgbV9zaWxlbmNlQXVkaW9UaW1l
ci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3NpbGVuY2VBdWRpb1RpbWVyLnN0b3AoKTsKLX0KLQot
dm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRTaWxlbmNlKCkKLXsKLSAgICBM
aWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgc2l6ZV90IGNodW5rU2FtcGxl
Q291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKLSAg
ICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVk
aW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1i
ZXJPZkNoYW5uZWxzKCk7Ci0KLSAgICAgICAgaWYgKCFidWZmZXJTaXplKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKLSAgICAg
ICAgbWVtc2V0KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCAwLCBidWZmZXJTaXplKTsKLSAgICAgICAg
Zm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQotICAgICAgICAgICAgc2luay0+T25EYXRhKG1fYXVk
aW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRw
dXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRp
b24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsKLSAgICB9KTsKLX0KLQot
Ym9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlv
RGF0YUhpZ2hMaW1pdCgpCi17Ci0gICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3Jp
dGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAgYXV0
byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlw
dGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0g
cmVhZEF1ZGlvRHVyYXRpb24pOwotICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+IHJl
YWRBdWRpb0R1cmF0aW9uICsgMC41OwotfQotCi1ib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZTo6aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGltaXQoKQotewotICAgIGF1dG8g
d3JpdHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBtX2lucHV0U3RyZWFtRGVzY3Jp
cHRpb24uc2FtcGxlUmF0ZSgpOwotICAgIGF1dG8gcmVhZEF1ZGlvRHVyYXRpb24gPSBtX3JlYWRD
b3VudCAvIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotCi0gICAgQVNT
RVJUKHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1cmF0aW9uKTsKLSAgICByZXR1
cm4gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPCByZWFkQXVkaW9EdXJhdGlvbiArIDAuMTsKLX0KLQot
Ym9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6Omhhc0J1ZmZlcmVkRW5nb3VoRGF0YSgp
Ci17Ci0gICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5w
dXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAgYXV0byByZWFkQXVkaW9EdXJh
dGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRl
KCk7Ci0KLSAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRp
b24pOwotICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlv
biArIDAuMDE7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjphdWRpb1Nh
bXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEm
IGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgc3RyZWFtRGVzY3JpcHRp
b24sIHNpemVfdCBzYW1wbGVDb3VudCkKLXsKLSAgICBpZiAobV9pbnB1dFN0cmVhbURlc2NyaXB0
aW9uICE9IHN0cmVhbURlc2NyaXB0aW9uKSB7Ci0gICAgICAgIG1faW5wdXRTdHJlYW1EZXNjcmlw
dGlvbiA9IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKHN0cmVhbURlc2NyaXB0aW9uKTsKLSAg
ICAgICAgYXV0byBzdGF0dXMgID0gbV9zYW1wbGVDb252ZXJ0ZXItPnNldElucHV0Rm9ybWF0KG1f
aW5wdXRTdHJlYW1EZXNjcmlwdGlvbik7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCAh
c3RhdHVzKTsKLQotICAgICAgICBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uID0gbGlid2VicnRj
QXVkaW9Gb3JtYXQoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUsIHN0cmVhbURlc2Ny
aXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSk7Ci0gICAgICAgIHN0YXR1cyA9IG1fc2FtcGxlQ29u
dmVydGVyLT5zZXRPdXRwdXRGb3JtYXQobV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zdHJlYW1E
ZXNjcmlwdGlvbigpKTsKLSAgICAgICAgQVNTRVJUKCFzdGF0dXMpOwotICAgIH0KLQotICAgIC8v
IExldCdzIHNraXAgcHVzaGluZyBzYW1wbGVzIGlmIHdlIGFyZSB0b28gc2xvdyBwdWxsaW5nIHRo
ZW0uCi0gICAgaWYgKG1fc2tpcHBpbmdBdWRpb0RhdGEpIHsKLSAgICAgICAgaWYgKCFpc1JlYWNo
aW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChpc1JlYWNo
aW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSkgewotICAgICAgICBtX3NraXBwaW5nQXVk
aW9EYXRhID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIElmIHdlIGNo
YW5nZSB0aGUgYXVkaW8gdHJhY2sgb3IgaXRzIHNhbXBsZSByYXRlIGNoYW5nZXMsIHRoZSB0aW1l
c3RhbXAgYmFzZWQgb24gbV93cml0ZUNvdW50IG1heSBiZSB3cm9uZy4KLSAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHVwZGF0ZSBtX3dyaXRlQ291bnQgdG8gYmUgdmFsaWQgYWNjb3JkaW5nIHRoZSBu
ZXcgc2FtcGxlUmF0ZS4KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVzaFNhbXBsZXMoTWVkaWFU
aW1lKG1fd3JpdGVDb3VudCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faW5wdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCkpKSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7Ci0gICAgbV93
cml0ZUNvdW50ICs9IHNhbXBsZUNvdW50OwotCi0gICAgaWYgKCFoYXNCdWZmZXJlZEVuZ291aERh
dGEoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldl
YlJUQ1NpZ25hbGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0g
ICAgICAgIHByb3RlY3RlZFRoaXMtPnB1bGxBdWRpb0RhdGEoKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnB1bGxBdWRpb0RhdGEoKQotewotICAgIC8v
IGxpYndlYnJ0YyBleHBlY3RzIDEwIG1zIGNodW5rcy4KLSAgICBzaXplX3QgY2h1bmtTYW1wbGVD
b3VudCA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpIC8gMTAwOwotICAg
IHNpemVfdCBidWZmZXJTaXplID0gY2h1bmtTYW1wbGVDb3VudCAqIExpYldlYlJUQ0F1ZGlvRm9y
bWF0OjpzYW1wbGVCeXRlU2l6ZSAqIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZD
aGFubmVscygpOwotICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKLQotICAgIEF1
ZGlvQnVmZmVyTGlzdCBidWZmZXJMaXN0OwotICAgIGJ1ZmZlckxpc3QubU51bWJlckJ1ZmZlcnMg
PSAxOwotICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gbV9vdXRw
dXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7Ci0gICAgYnVmZmVyTGlzdC5t
QnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gYnVmZmVyU2l6ZTsKLSAgICBidWZmZXJMaXN0Lm1C
dWZmZXJzWzBdLm1EYXRhID0gbV9hdWRpb0J1ZmZlci5kYXRhKCk7Ci0KLSAgICBtX3NhbXBsZUNv
bnZlcnRlci0+cHVsbEF2YWxhaWJsZVNhbXBsZXNBc0NodW5rcyhidWZmZXJMaXN0LCBjaHVua1Nh
bXBsZUNvdW50LCBtX3JlYWRDb3VudCwgW3RoaXMsIGNodW5rU2FtcGxlQ291bnRdIHsKLSAgICAg
ICAgbV9yZWFkQ291bnQgKz0gY2h1bmtTYW1wbGVDb3VudDsKLSAgICAgICAgZm9yIChhdXRvIHNp
bmsgOiBtX3NpbmtzKQotICAgICAgICAgICAgc2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0
YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZD
aGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsKLSAgICB9KTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVi
YzgwNGU0OTU4NTMwYmU2NjAyZmZkNjFhMmI1M2M3ZWI2ZTU3NC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
LSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkF1ZGlv
U2FtcGxlRGF0YVNvdXJjZS5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgotI2luY2x1
ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNs
dWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotY2xhc3MgQXVkaW9U
cmFja0ludGVyZmFjZTsKLWNsYXNzIEF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlOwotfQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSBmaW5h
bCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwgcHJpdmF0ZSBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlPiYmIGF1ZGlvU291cmNlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkpOyB9Ci0gICAgflJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZSgpIHsgc3RvcCgpOyB9Ci0KLSAgICB2b2lkIHN0b3AoKTsKLQotICAg
IGJvb2wgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7Ci0gICAgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Tb3Vy
Y2UuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKLQotICAgIHZpcnR1YWwg
dm9pZCBBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspIHsgbV9z
aW5rcy5hcHBlbmQoc2luayk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgUmVtb3ZlU2luayh3ZWJydGM6
OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lua3MucmVtb3ZlRmlyc3Qoc2lu
ayk7IH0KLQotICAgIGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7IHJlZigpOyByZXR1cm4gcmVm
Q291bnQoKTsgfQotICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmluYWwgeyBkZXJlZigpOyByZXR1
cm4gcmVmQ291bnQoKTsgfQotICAgIFNvdXJjZVN0YXRlIHN0YXRlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4ga0xpdmU7IH0KLSAgICBib29sIHJlbW90ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdm9pZCBSZWdpc3Rlck9ic2VydmVyKHdlYnJ0Yzo6T2JzZXJ2ZXJJbnRlcmZh
Y2UqKSBmaW5hbCB7IH0KLSAgICB2b2lkIFVucmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2Vy
dmVySW50ZXJmYWNlKikgZmluYWwgeyB9Ci0KLSAgICB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgp
OwotICAgIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKTsKLSAgICB2b2lkIGF1ZGlvU2FtcGxl
c0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwotCi0gICAgYm9vbCBpc1JlYWNo
aW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKTsKLSAgICBib29sIGlzUmVhY2hpbmdCdWZm
ZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCk7Ci0gICAgYm9vbCBoYXNCdWZmZXJlZEVuZ291aERhdGEo
KTsKLQotICAgIC8vIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciBBUEkKLSAgICB2
b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyBz
b3VyY2VNdXRlZENoYW5nZWQoKTsgfQotICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hhbmdlZChNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlRW5hYmxlZENoYW5nZWQoKTsgfQot
ICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwg
Y29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRh
LCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBs
ZUNvdW50KSBmaW5hbCB7IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGRhdGEsIGRl
c2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7IH0KLSAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KLSAgICB2b2lkIHRyYWNrU2V0dGluZ3NDaGFuZ2Vk
KE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9Ci0KLSAgICB2b2lkIHB1bGxBdWRp
b0RhdGEoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwotICAgIHZvaWQgaGFu
ZGxlTXV0ZWRJZk5lZWRlZCgpOwotICAgIHZvaWQgc2VuZFNpbGVuY2UoKTsKLQotICAgIFZlY3Rv
cjx3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9zaW5rczsKLSAgICBSZWY8TWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7Ci0gICAgUmVmPEF1ZGlvU2FtcGxl
RGF0YVNvdXJjZT4gbV9zYW1wbGVDb252ZXJ0ZXI7Ci0gICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbjsKLSAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbjsKLQotICAgIFZlY3Rvcjx1aW50OF90PiBtX2F1
ZGlvQnVmZmVyOwotICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsgMCB9OwotICAgIHVpbnQ2NF90
IG1fd3JpdGVDb3VudCB7IDAgfTsKLSAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9OwotICAgIGJv
b2wgbV9lbmFibGVkIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9za2lwcGluZ0F1ZGlvRGF0YSB7IGZh
bHNlIH07Ci0gICAgVGltZXIgbV9zaWxlbmNlQXVkaW9UaW1lcjsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTJiODhh
ZjgwZjQ3ZGE3YmExZDRiYzE4NGM1YjBlOThjMjA0ZWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZUNvY29hLmNwcApAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
cmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAor
ICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmgi
CisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJX
ZWJSVENQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUg
QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIGxpYndlYnJ0Y0F1ZGlvRm9ybWF0KEZsb2F0NjQg
c2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKK3sKKyAgICAvLyBGSVhNRTogTWljcm9w
aG9uZXMgY2FuIGhhdmUgbW9yZSB0aGFuIHR3byBjaGFubmVscy4gSW4gc3VjaCBjYXNlLCB3ZSBz
aG91bGQgZG8gdGhlIG1peCBkb3duIGJhc2VkIG9uIEF1ZGlvQ2hhbm5lbExheW91dFRhZy4KKyAg
ICBzaXplX3QgbGliV2ViUlRDQ2hhbm5lbENvdW50ID0gY2hhbm5lbENvdW50ID49IDIgPyAyIDog
Y2hhbm5lbENvdW50OworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3Jt
YXQ7CisgICAgRmlsbE91dEFTQkRGb3JMUENNKHN0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSwgbGli
V2ViUlRDQ2hhbm5lbENvdW50LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGli
V2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0Zs
b2F0LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNCaWdFbmRpYW4sIExpYldlYlJUQ0F1ZGlvRm9y
bWF0Ojppc05vbkludGVybGVhdmVkKTsKKyAgICByZXR1cm4gc3RyZWFtRm9ybWF0OworfQorCitS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlQ29jb2EoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQorICAg
IDogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFdURk1vdmUoYXVkaW9Tb3VyY2UpKQorICAg
ICwgbV9zYW1wbGVDb252ZXJ0ZXIoQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoTGliV2Vi
UlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUgKiAyKSkKK3sKK30KKworUmVmPFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZT4gUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpjcmVhdGUoUmVm
PE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQoreworICAgIHJldHVybiBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6Y3JlYXRlKFdURk1vdmUoYXVkaW9Tb3Vy
Y2UpKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6aGFuZGxl
TXV0ZWRJZk5lZWRlZCgpCit7CisgICAgYm9vbCBpc1NpbGVuY2VkID0gbV9tdXRlZCB8fCAhbV9l
bmFibGVkOworICAgIG1fc2FtcGxlQ29udmVydGVyLT5zZXRNdXRlZChpc1NpbGVuY2VkKTsKKwor
ICAgIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpoYW5kbGVNdXRlZElmTmVlZGVk
KCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OnNlbmRTaWxl
bmNlKCkKK3sKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhy
ZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2l6
ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJh
dGUoKSAvIDEwMDsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNvdW50
ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJlYW1E
ZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7CisKKyAgICAgICAgaWYgKCFidWZmZXJTaXpl
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZm
ZXJTaXplKTsKKyAgICAgICAgbWVtc2V0KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCAwLCBidWZmZXJT
aXplKTsKKyAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQorICAgICAgICAgICAgc2lu
ay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2Ft
cGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0
U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsK
KyAgICB9KTsKK30KKworYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6aXNS
ZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCkKK3sKKyAgICBhdXRvIHdyaXR0ZW5B
dWRpb0R1cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNh
bXBsZVJhdGUoKTsKKyAgICBhdXRvIHJlYWRBdWRpb0R1cmF0aW9uID0gbV9yZWFkQ291bnQgLyBt
X291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKworICAgIEFTU0VSVCh3cml0
dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbik7CisgICAgcmV0dXJuIHdyaXR0
ZW5BdWRpb0R1cmF0aW9uID4gcmVhZEF1ZGlvRHVyYXRpb24gKyAwLjU7Cit9CisKK2Jvb2wgUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0
YUxvd0xpbWl0KCkKK3sKKyAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID0gbV93cml0ZUNv
dW50IC8gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKyAgICBhdXRvIHJl
YWRBdWRpb0R1cmF0aW9uID0gbV9yZWFkQ291bnQgLyBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9u
LnNhbXBsZVJhdGUoKTsKKworICAgIEFTU0VSVCh3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFk
QXVkaW9EdXJhdGlvbik7CisgICAgcmV0dXJuIHdyaXR0ZW5BdWRpb0R1cmF0aW9uIDwgcmVhZEF1
ZGlvRHVyYXRpb24gKyAwLjE7Cit9CisKK2Jvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2E6Omhhc0J1ZmZlcmVkRW5vdWdoRGF0YSgpCit7CisgICAgYXV0byB3cml0dGVuQXVkaW9E
dXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVS
YXRlKCk7CisgICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRw
dXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisKKyAgICBBU1NFUlQod3JpdHRlbkF1
ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOworICAgIHJldHVybiB3cml0dGVuQXVk
aW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbiArIDAuMDE7Cit9CisKK3ZvaWQgUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiBzdHJlYW1EZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50
KQoreworICAgIGlmIChtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24gIT0gc3RyZWFtRGVzY3JpcHRp
b24pIHsKKyAgICAgICAgbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uID0gdG9DQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24oc3RyZWFtRGVzY3JpcHRpb24pOworICAgICAgICBhdXRvIHN0YXR1cyAgPSBt
X3NhbXBsZUNvbnZlcnRlci0+c2V0SW5wdXRGb3JtYXQobV9pbnB1dFN0cmVhbURlc2NyaXB0aW9u
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzdGF0dXMsICFzdGF0dXMpOworCisgICAgICAgIG1f
b3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gPSBsaWJ3ZWJydGNBdWRpb0Zvcm1hdChMaWJXZWJSVENB
dWRpb0Zvcm1hdDo6c2FtcGxlUmF0ZSwgc3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVs
cygpKTsKKyAgICAgICAgc3RhdHVzID0gbV9zYW1wbGVDb252ZXJ0ZXItPnNldE91dHB1dEZvcm1h
dChtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCkpOworICAgICAg
ICBBU1NFUlQoIXN0YXR1cyk7CisgICAgfQorCisgICAgLy8gTGV0J3Mgc2tpcCBwdXNoaW5nIHNh
bXBsZXMgaWYgd2UgYXJlIHRvbyBzbG93IHB1bGxpbmcgdGhlbS4KKyAgICBpZiAobV9za2lwcGlu
Z0F1ZGlvRGF0YSkgeworICAgICAgICBpZiAoIWlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxv
d0xpbWl0KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc2tpcHBpbmdBdWRpb0Rh
dGEgPSBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhp
Z2hMaW1pdCgpKSB7CisgICAgICAgIG1fc2tpcHBpbmdBdWRpb0RhdGEgPSB0cnVlOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gSWYgd2UgY2hhbmdlIHRoZSBhdWRpbyB0cmFjayBv
ciBpdHMgc2FtcGxlIHJhdGUgY2hhbmdlcywgdGhlIHRpbWVzdGFtcCBiYXNlZCBvbiBtX3dyaXRl
Q291bnQgbWF5IGJlIHdyb25nLgorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXBkYXRlIG1fd3Jp
dGVDb3VudCB0byBiZSB2YWxpZCBhY2NvcmRpbmcgdGhlIG5ldyBzYW1wbGVSYXRlLgorICAgIG1f
c2FtcGxlQ29udmVydGVyLT5wdXNoU2FtcGxlcyhNZWRpYVRpbWUobV93cml0ZUNvdW50LCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4obV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSkp
LCBhdWRpb0RhdGEsIHNhbXBsZUNvdW50KTsKKyAgICBtX3dyaXRlQ291bnQgKz0gc2FtcGxlQ291
bnQ7CisKKyAgICBpZiAoIWhhc0J1ZmZlcmVkRW5nb3VoRGF0YSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+
cHVsbEF1ZGlvRGF0YSgpOworICAgIH0pOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZUNvY29hOjpwdWxsQXVkaW9EYXRhKCkKK3sKKyAgICAvLyBsaWJ3ZWJydGMgZXhwZWN0
cyAxMCBtcyBjaHVua3MuCisgICAgc2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0
cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKKyAgICBzaXplX3QgYnVmZmVyU2l6
ZSA9IGNodW5rU2FtcGxlQ291bnQgKiBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlQnl0ZVNp
emUgKiBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKTsKKyAgICBt
X2F1ZGlvQnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7CisKKyAgICBBdWRpb0J1ZmZlckxpc3QgYnVm
ZmVyTGlzdDsKKyAgICBidWZmZXJMaXN0Lm1OdW1iZXJCdWZmZXJzID0gMTsKKyAgICBidWZmZXJM
aXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRp
b24ubnVtYmVyT2ZDaGFubmVscygpOworICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFC
eXRlU2l6ZSA9IGJ1ZmZlclNpemU7CisgICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YSA9
IG1fYXVkaW9CdWZmZXIuZGF0YSgpOworCisgICAgbV9zYW1wbGVDb252ZXJ0ZXItPnB1bGxBdmFs
YWlibGVTYW1wbGVzQXNDaHVua3MoYnVmZmVyTGlzdCwgY2h1bmtTYW1wbGVDb3VudCwgbV9yZWFk
Q291bnQsIFt0aGlzLCBjaHVua1NhbXBsZUNvdW50XSB7CisgICAgICAgIG1fcmVhZENvdW50ICs9
IGNodW5rU2FtcGxlQ291bnQ7CisgICAgICAgIGZvciAoYXV0byBzaW5rIDogbV9zaW5rcykKKyAg
ICAgICAgICAgIHNpbmstPk9uRGF0YShtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgTGliV2ViUlRDQXVk
aW9Gb3JtYXQ6OnNhbXBsZVNpemUsIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0
ZSgpLCBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSwgY2h1bmtT
YW1wbGVDb3VudCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2VDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2NDQ3YzFhMjMxYWFmM2M2MjE3YWZlNDUwYmM3
YjI0MjkyNDU4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaApAQCAtMCww
ICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMp
CisKKyNpbmNsdWRlICJBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCIKKyNpbmNsdWRlICJSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CitjbGFzcyBBdWRp
b1RyYWNrSW50ZXJmYWNlOworY2xhc3MgQXVkaW9UcmFja1NpbmtJbnRlcmZhY2U7Cit9CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29j
b2EgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlQ29jb2E+LCBwdWJsaWMgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLCBwdWJs
aWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTo6T2JzZXJ2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlQ29jb2E+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+
JiYgYXVkaW9Tb3VyY2UpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlQ29jb2EoV1RGTW92ZShhdWRpb1NvdXJjZSkpKTsgfQorCitwcml2YXRlOgorICAg
IGV4cGxpY2l0IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hKFJlZjxNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZT4mJik7CisKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25z
dCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOworCisgICAgYm9vbCBpc1JlYWNoaW5nQnVmZmVy
ZWRBdWRpb0RhdGFIaWdoTGltaXQoKSBmaW5hbDsKKyAgICBib29sIGlzUmVhY2hpbmdCdWZmZXJl
ZEF1ZGlvRGF0YUxvd0xpbWl0KCkgZmluYWw7CisgICAgYm9vbCBoYXNCdWZmZXJlZEVub3VnaERh
dGEoKSBmaW5hbDsKKworICAgIHZvaWQgcHVsbEF1ZGlvRGF0YSgpIGZpbmFsOworCisgICAgdm9p
ZCBoYW5kbGVNdXRlZElmTmVlZGVkKCkgZmluYWw7CisgICAgdm9pZCBzZW5kU2lsZW5jZSgpIGZp
bmFsOworCisgICAgUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9zYW1wbGVDb252ZXJ0ZXI7
CisgICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbjsK
KyAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbjsK
KworICAgIFZlY3Rvcjx1aW50OF90PiBtX2F1ZGlvQnVmZmVyOworICAgIHVpbnQ2NF90IG1fcmVh
ZENvdW50IHsgMCB9OworICAgIHVpbnQ2NF90IG1fd3JpdGVDb3VudCB7IDAgfTsKKyAgICBib29s
IG1fc2tpcHBpbmdBdWRpb0RhdGEgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323677</attachid>
            <date>2017-10-13 09:08:14 -0700</date>
            <delta_ts>2017-10-13 09:15:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177928-20171013180813.patch</filename>
            <type>text/plain</type>
            <size>70747</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkzODIyMzA3YzA4MTkz
ODNhYjVjNDliNDQxNTFlNWFkODFkNWFmMy4uODg2OTExNjJiZWQ0YTcyYjE3NTg2NzY1ODI3Mzll
N2JmOTNjZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTEwLTEyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlcyBhbmQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlcyBw
b3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciB0aGUgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGFuZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgY2xhc3NlcywKKyAgICAgICAgbW92ZSB0aGUgbWFjIHNwZWNp
ZmljIGNvZGUgdG8gYSBkaWZmZXJlbnQgY2xhc3MuIFRoaXMgd2F5IHdlIGNhbiB1c2UgdGhlbSBm
cm9tCisgICAgICAgIG90aGVyIHBvcnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgd2UgYXJl
IG5vdCBhZGRpbmcgbmV3IGZ1bmN0aW9uYWxpdHkganVzdCByZWZhY3RvcmluZy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmguIEp1c3QgdGhlIHBvcnQg
YWdub3N0aWMgcGFydHMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaC4gRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAuIERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmguIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6IEFkZGVkLCBpdCBhZGRzIENv
Y29hIGNvZGUgcGFydHMgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhpcyBm
dW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUgdG8g
YXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBBZGRl
ZCBDb2NvYSBjb2RlIGZyb20gb3JpZ2luYWwgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6
IEFkZGVkIENvY29hIGNvZGUgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhp
cyBmdW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUg
dG8gYXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBB
ZGRlZCBDb2NvYSBjb2RlIGZyb20gdGhlIG9yaWdpbmFsIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaC4KKwogMjAxNy0x
MC0wNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbV2luQ2Fpcm9dIEZpeCBidWlsZCBhZnRlciBCdWcgMTY3OTU2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDdmMjJlNTE2Zjk3YTI5N2RkNTQ4ZTc1Y2VlMDg3N2ExYzU2MjVmMWEuLmE4NDQxYmY0
Y2IyYmZhNTNhNWMyMjY4MDc3ZjE2NzcxMjAzNWMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yNTQ4LDkgKzI1NDgsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAKICAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcAogICAg
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3Bw
CisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCiAgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKICAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCisgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAogCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmY4Njg4YmMzZDlkNmU0MWU4MmRlNjY2OGIyYjlmYzViYjA4ZDM3Yy4uMjk5Yjc2NmM2
MTZjMGQzZTFiYjhlYWRlYTY3NjAxYzdiYjA0NDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5Niw4ICsxNjk2LDEyIEBA
CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEw
NDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTEw
M0FBQjFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovOyB9Owog
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
ODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggKi87IH07
CisJCTQxMTAzQUFCMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovOyB9OworCQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE4MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovOyB9OwogCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMDMg
LyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi87IH07CiAJCTQxMTAzQUFFMUUzOTc5MTAwMDc2OUYw
MyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQUExRTM5NzkwQTAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi87IH07CisJCTQxMTAzQUFEMUUzOTc5MTAw
MDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTkxRTM5NzkwQTAwNzY5
RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggKi87IH07CisJCTQxMTAz
QUFFMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
QTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3Bw
ICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2ViQ29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOUIx
QTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTQxMjMwOTEz
MTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGODIxNjI5OTAyOUY0RkI1MDEw
MDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTI3RDUzNzBGOEFB
QjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0
YXRlLmNwcCAqLzsgfTsKQEAgLTk0NzIsOCArOTQ3NiwxMiBAQAogCQk0MTBCN0U3MTEwNDVGQUIw
MDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMTAzQUE4MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE4MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBOTFFMzk3OTBBMDA3
NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIz
MjgwMEI5M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMyODAwQjk1NjcyIC8qIFJlYWRhYmxl
U3RyZWFtQllPQlJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtQllPQlJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0OTcs
NiArMTY1MDUsOCBAQAogCQkJCTA3RkZERTY2MTgxQUVENDIwMDcyRDQwOSAvKiBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZS5jcHAgKi8sCiAJCQkJMDdGRkRFNjcxODFBRUQ0MjAwNzJENDA5IC8qIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggKi8sCiAJCQkJNUVCQjg5MzgxQzc3QkRBNDAwQzY1RDQx
IC8qIFBlZXJNZWRpYURlc2NyaXB0aW9uLmggKi8sCisJCQkJNDExMDNBQUExRTM5NzkwQTAwNzY5
RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi8sCisJCQkJNDExMDNBQTkx
RTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oICovLAogCQkJ
CTRBNEY2NTZCMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLywK
IAkJCQk0QTRGNjU2QzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oICov
LAogCQkJCTRBNEY2NTZEMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzLmggKi8sCkBAIC0xNjUwNiw2ICsxNjUxNiw4IEBACiAJCQkJNEE0RjY1NkYxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovLAogCQkJCTJF
QzQxREUyMUMwNDEwQTMwMEQyOTRGRSAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuY3BwICovLAogCQkJCTA3QzFDMEU0MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLywKKwkJCQk0MTEwM0FBNzFFMzk3
OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCAqLywKKwkJCQk0
MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgg
Ki8sCiAJCQkJMzEzNTkxMEMxRTdERENCNjAwRjMwNjMwIC8qIFJUQ0J1bmRsZVBvbGljeS5oICov
LAogCQkJCTA3MjIxQkEyMTdDRjBBRDQwMDg0OEU1MSAvKiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCAqLywKIAkJCQkwNzIyMUJBMzE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50LmggKi8sCkBAIC0xNjU1NCwxNCArMTY1NjYsMTQgQEAKIAkJCQkwNzQ0RUNFQzFF
MEM0QUU1MDAwRDA5NDQgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJ
MDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgg
Ki8sCiAJCQkJMDdFRTc2RUUxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tICovLAotCQkJCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwICovLAotCQkJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAv
KiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCAqLywKKwkJCQk0MTEwM0FBQTFFMzk3OTBB
MDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwICovLAorCQkJ
CTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5oICovLAogCQkJCTVDREQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2UuY3BwICovLAogCQkJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLywKIAkJCQk0QTBGRkFBMzFBQUY1RUY2MDA2
MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgKi8sCiAJCQkJNEEwRkZB
QTQxQUFGNUVGNjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCAqLywK
LQkJCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcCAqLywKLQkJCQk0MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggKi8sCisJCQkJNDExMDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCAqLywKKwkJCQk0MTEwM0FBODFFMzk3
OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCAqLywKIAkJ
CQk1Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmNwcCAqLywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8sCkBAIC0yOTYxNCw2ICsyOTYyNiw3IEBACiAJ
CQkJNDEyOUM5QUIxRjU5QzU3MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAzQzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFs
eXNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExMDNBQUQxRTM5NzkxMDAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDExMDNBQUQx
RTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8q
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRB
MEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NjIxLDYgKzI5NjM0LDcgQEAKIAkJCQk0QTRGNjU3NDFBQTk5N0Yx
MDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBQzFFMzk3OTEwMDA3
NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQjk1MjI0MUY1OEE1OEYwMDkzMURDMiAvKiBS
ZWNvcmRpbmdTd2l6emxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2OEU4MEMyMjZF
MzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1ODE3NUQ0MTRD
MDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1ODIsNiAr
MzM1OTYsNyBAQAogCQkJCTQxMjlDOThBMUY1ODdGRUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVh
bVNpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwM0IxMkIwMjY3NjAwQzFBMzU5IC8q
IFJlYWx0aW1lQW5hbHlzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMDNBQUUxRTM5Nzkx
MDAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTEwM0FBRTFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzM0UxRTQzMjREQzAwNjIx
RTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0QTRGNjU3MDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0QTBGRkFBMTFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNTg5LDYgKzMzNjA0LDcgQEAK
IAkJCQk0QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQzQxREU0MUMwNDEwQTMwMEQyOTRGRSAvKiBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDExMDNBQUIxRTM5NzkxMDAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEwM0FBQjFFMzk3OTEwMDA3NjlGMTQgLyog
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDgzM0QxRTQzMjREOTAwNjIxRTkyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFu
Z2xlU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBQjQxODExM0UzNTZFODAwRDhBQUYz
IC8qIFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MWFiM2Q3NjgzYjNiOGZmYzUwMmJmMzQ2NTI0Nzk3MzVj
MjFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRp
b0Zvcm1hdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKKyAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQoreworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOworfQorCitSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1f
YXVkaW9UcmFjaykKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOworfQorCit2
b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQorewor
ICAgIGlmIChtX2F1ZGlvVHJhY2spCisgICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0
aGlzKTsKK30KKwordm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRy
YWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgdHJh
Y2spCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOworICAgIEFTU0VSVCh0cmFjayk7CisK
KyAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAgICBub3RpZnlNdXRlZENoYW5n
ZSghbV9hdWRpb1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCisgICAgICAgIG1f
YXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMo
KSBjb25zdAoreworICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpl
bXB0eUNhcGFiaWxpdGllcygpOworfQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAoreworICAg
IHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY5N2Qx
N2M0ZTFkYzQ3N2MwOTU2Nzg3MmY3NWI0ZDhiOWM1MTg3MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldF
QlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlLCBwcml2YXRlIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYp
OworCisgICAgdm9pZCBzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmKTsKKworcHJpdmF0ZToKKyAgICBSZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFj
ZT4mJiwgU3RyaW5nJiYpOworICAgIH5SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UoKTsKKwor
ICAgIC8vIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgQVBJCisgICAgdmlydHVhbCB2
b2lkIE9uRGF0YShjb25zdCB2b2lkKiAvKiBhdWRpb0RhdGEgKi8sIGludCAvKiBiaXRzUGVyU2Ft
cGxlICovLCBpbnQgLyogc2FtcGxlUmF0ZSAqLywgc2l6ZV90IC8qIG51bWJlck9mQ2hhbm5lbHMg
Ki8sIHNpemVfdCAvKiBudW1iZXJPZkZyYW1lcyAqLykgeyB9OworCisgICAgLy8gUmVhbHRpbWVN
ZWRpYVNvdXJjZSBBUEkKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOworICAg
IHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSAgZmluYWw7CisKKyAgICBjb25zdCBSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5hbDsKKyAgICBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWw7
CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7Cisg
ICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4gbV9hdWRp
b1RyYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKExJ
QldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZmM2E1YmViNmY1Y2NjMDEzNjk0ZTA5MTQwMmYyN2YyODIwZjdmYjkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJl
cXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisg
KiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVk
ZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4m
JiBhdWRpb1NvdXJjZSkKKyAgICA6IG1fYXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRpb1NvdXJjZSkp
CisgICAgLCBtX3NpbGVuY2VBdWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlOjpzZW5kU2lsZW5jZSkKK3sKKyAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZlcigq
dGhpcyk7CisgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOworfQorCitib29sIFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4m
JiBuZXdTb3VyY2UpCit7CisgICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMp
OworICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7CisgICAgbV9hdWRpb1Nv
dXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOworCisgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
aW5pdGlhbGl6ZUNvbnZlcnRlcigpCit7CisgICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11
dGVkKCk7CisgICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxlZCgpOworICAgIGhh
bmRsZU11dGVkSWZOZWVkZWQoKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2U6OnN0b3AoKQoreworICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOworICAgIG1fYXVk
aW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCit7CisgICAgbV9tdXRlZCA9IG1f
YXVkaW9Tb3VyY2UtPm11dGVkKCk7CisgICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOworfQorCit2
b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxlZENoYW5nZWQoKQor
eworICAgIG1fZW5hYmxlZCA9IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsKKyAgICBoYW5kbGVN
dXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpo
YW5kbGVNdXRlZElmTmVlZGVkKCkKK3sKKyAgICBib29sIGlzU2lsZW5jZWQgPSBtX211dGVkIHx8
ICFtX2VuYWJsZWQ7CisgICAgaWYgKGlzU2lsZW5jZWQgJiYgIW1fc2lsZW5jZUF1ZGlvVGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdGFydFJlcGVhdGluZygx
X3MpOworICAgIGlmICghaXNTaWxlbmNlZCAmJiBtX3NpbGVuY2VBdWRpb1RpbWVyLmlzQWN0aXZl
KCkpCisgICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmU5ODE3ZjFjZjI0NDRjMzM3ZDU4MjgxMDA5
MmViYmFiOGJiOWRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAgLTAsMCArMSwxMDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisg
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiVGltZXIu
aCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+CisjaW5jbHVk
ZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSB3ZWJydGMgeworY2xh
c3MgQXVkaW9UcmFja0ludGVyZmFjZTsKK2NsYXNzIEF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlOwor
fQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwgcHJpdmF0ZSBNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlPiYmIGF1ZGlvU291cmNlKTsKKworICAgIH5SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2UoKSB7IHN0b3AoKTsgfQorCisgICAgdm9pZCBzdG9wKCk7CisKKyAgICBib29sIHNldFNvdXJj
ZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOworICAgIE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU291cmNlLmdldCgpOyB9CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7CisKKyAgICB2aXJ0dWFsIHZvaWQgQWRkU2luayh3
ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lua3MuYXBwZW5kKHNp
bmspOyB9CisgICAgdmlydHVhbCB2b2lkIFJlbW92ZVNpbmsod2VicnRjOjpBdWRpb1RyYWNrU2lu
a0ludGVyZmFjZSogc2luaykgeyBtX3NpbmtzLnJlbW92ZUZpcnN0KHNpbmspOyB9CisKKyAgICBp
bnQgQWRkUmVmKCkgY29uc3QgZmluYWwgeyByZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7IH0KKyAg
ICBpbnQgUmVsZWFzZSgpIGNvbnN0IGZpbmFsIHsgZGVyZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7
IH0KKyAgICBTb3VyY2VTdGF0ZSBzdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGtMaXZlOyB9
CisgICAgYm9vbCByZW1vdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZv
aWQgUmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9
CisgICAgdm9pZCBVbnJlZ2lzdGVyT2JzZXJ2ZXIod2VicnRjOjpPYnNlcnZlckludGVyZmFjZSop
IGZpbmFsIHsgfQorCisgICAgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoKTsKKyAgICB2b2lkIHNv
dXJjZUVuYWJsZWRDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvU2FtcGxlc0F2YWls
YWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIHsgfTsKKworICAgIHZpcnR1YWwgYm9vbCBp
c1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSB7IHJldHVybiBmYWxzZTsgfTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGltaXQoKSB7
IHJldHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnVmZmVyZWRFbm91Z2hEYXRh
KCkgeyByZXR1cm4gZmFsc2U7IH07CisKKyAgICAvLyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
T2JzZXJ2ZXIgQVBJCisgICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlTXV0ZWRDaGFuZ2VkKCk7IH0KKyAgICB2b2lkIHRyYWNr
RW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IHNvdXJjZUVu
YWJsZWRDaGFuZ2VkKCk7IH0KKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZSYsIGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lLCBjb25zdCBQbGF0
Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3Jp
cHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkgeyBhdWRpb1NhbXBsZXNBdmFpbGFibGUobWVkaWFU
aW1lLCBkYXRhLCBkZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQpOyB9CisgICAgdm9pZCB0cmFja0Vu
ZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9CisgICAgdm9pZCB0cmFja1Nl
dHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIHB1bGxBdWRpb0RhdGEoKSB7IH07CisKKyAgICB2b2lkIGluaXRpYWxpemVD
b252ZXJ0ZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOworICAg
IHZpcnR1YWwgdm9pZCBzZW5kU2lsZW5jZSgpIHsgfTsKKworICAgIFZlY3Rvcjx3ZWJydGM6OkF1
ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9zaW5rczsKKyAgICBSZWY8TWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7CisKKyAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OworICAgIFRpbWVyIG1fc2lsZW5jZUF1ZGlvVGlt
ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VC
UlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc1MzhjZDA1NWI0ZGNhNDk5MjFiMmQ1MWQ4MGYwODJl
YjIyNjczNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogICAgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogICAgZGlz
dHJpYnV0aW9uLgotICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICAgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgi
Ci0KLSNpZiBVU0UoTElCV0VCUlRDKQotCi0jaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bi5oIgotI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkxp
YldlYlJUQ0F1ZGlvRm9ybWF0LmgiCi0jaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCi0j
aW5jbHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCIKLSNpbmNsdWRlIDxwYWwv
YXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgotCi0jaW5jbHVkZSAiQ29yZU1l
ZGlhU29mdExpbmsuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8UmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlPiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ss
IFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkKLXsKLSAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpu
ZXcgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1v
dmUoYXVkaW9UcmFja0lkKSkpOwotICAgIHNvdXJjZS0+c3RhcnQoKTsKLSAgICByZXR1cm4gc291
cmNlOwotfQotCi1SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OlJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNl
PiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkKLSAgICA6IFJlYWx0aW1lTWVk
aWFTb3VyY2UoV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
OjpBdWRpbywgU3RyaW5nKCkpCi0gICAgLCBtX2F1ZGlvVHJhY2soV1RGTW92ZShhdWRpb1RyYWNr
KSkKLXsKLSAgICBub3RpZnlNdXRlZENoYW5nZSghbV9hdWRpb1RyYWNrKTsKLX0KLQotUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKCkKLXsK
LSAgICBzdG9wKCk7Ci19Ci0KLQotc3RhdGljIGlubGluZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24gc3RyZWFtRGVzY3JpcHRpb24oc2l6ZV90IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVs
Q291bnQpCi17Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsK
LSAgICBGaWxsT3V0QVNCREZvckxQQ00oc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlLCBjaGFubmVs
Q291bnQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zv
cm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzRmxvYXQsIExpYldlYlJU
Q0F1ZGlvRm9ybWF0Ojppc0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzTm9uSW50
ZXJsZWF2ZWQpOwotICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7Ci19Ci0KLXZvaWQgUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlOjpPbkRhdGEoY29uc3Qgdm9pZCogYXVkaW9EYXRhLCBpbnQgYml0
c1BlclNhbXBsZSwgaW50IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QgbnVtYmVyT2ZGcmFtZXMpCi17Ci0gICAgLy8gV2UgbWF5IHJlY2VpdmUgT25EYXRhIGNhbGxz
IHdpdGggZW1wdHkgc291bmQgZGF0YSAobW9ubywgc2FtcGxlcyBlcXVhbCB0byB6ZXJvIGFuZCBz
YW1wbGVSYXRlIGVxdWFsIHRvIDE2MDAwKSB3aGVuIHN0YXJ0aW5nIHRoZSBjYWxsLgotICAgIC8v
IEZJWE1FOiBGb3IgdGhlIG1vbWVudCB3ZSBza2lwIHRoZW0sIHdlIHNob3VsZCBmaW5kIGEgYmV0
dGVyIHNvbHV0aW9uIGF0IGxpYndlYnJ0YyBsZXZlbCB0byBub3QgYmUgY2FsbGVkIHVudGlsIGdl
dHRpbmcgc29tZSByZWFsIGRhdGEuCi0gICAgaWYgKHNhbXBsZVJhdGUgPT0gMTYwMDAgJiYgbnVt
YmVyT2ZDaGFubmVscyA9PSAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoYml0c1Bl
clNhbXBsZSA9PSAxNik7Ci0gICAgQVNTRVJUKG51bWJlck9mQ2hhbm5lbHMgPT0gMSB8fCBudW1i
ZXJPZkNoYW5uZWxzID09IDIpOwotICAgIEFTU0VSVChzYW1wbGVSYXRlID09IDQ4MDAwKTsKLQot
ICAgIENNVGltZSBzdGFydFRpbWUgPSBDTVRpbWVNYWtlKG1fbnVtYmVyT2ZGcmFtZXMsIHNhbXBs
ZVJhdGUpOwotICAgIGF1dG8gbWVkaWFUaW1lID0gUEFMOjp0b01lZGlhVGltZShzdGFydFRpbWUp
OwotICAgIG1fbnVtYmVyT2ZGcmFtZXMgKz0gbnVtYmVyT2ZGcmFtZXM7Ci0KLSAgICBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24gbmV3RGVzY3JpcHRpb24gPSBzdHJlYW1EZXNjcmlwdGlvbihz
YW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKTsKLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
bm90IG5lZWQgdG8gZG8gdGhlIGV4dHJhIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBjb3B5LgotICAg
IC8vIEluc3RlYWQsIHdlIHNob3VsZCBiZSBhYmxlIHRvIGRpcmVjdGx5IHBhc3MgYXVkaW9EYXRh
IHBvaW50ZXIuCi0gICAgV2ViQXVkaW9CdWZmZXJMaXN0IGF1ZGlvQnVmZmVyTGlzdCB7IENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbihuZXdEZXNjcmlwdGlvbiksIFdURjo6c2FmZUNhc3Q8dWludDMy
X3Q+KG51bWJlck9mRnJhbWVzKSB9OwotICAgIGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1E
YXRhQnl0ZVNpemUgPSBudW1iZXJPZkNoYW5uZWxzICogbnVtYmVyT2ZGcmFtZXMgKiBiaXRzUGVy
U2FtcGxlIC8gODsKLSAgICBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tTnVtYmVyQ2hhbm5l
bHMgPSBudW1iZXJPZkNoYW5uZWxzOwotCi0gICAgaWYgKG11dGVkKCkpCi0gICAgICAgIG1lbXNl
dChhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgMCwgYXVkaW9CdWZmZXJMaXN0LmJ1
ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSk7Ci0gICAgZWxzZQotICAgICAgICBtZW1jcHkoYXVkaW9C
dWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGEsIGF1ZGlvRGF0YSwgYXVkaW9CdWZmZXJMaXN0LmJ1
ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSk7Ci0KLSAgICBhdWRpb1NhbXBsZXNBdmFpbGFibGUobWVk
aWFUaW1lLCBhdWRpb0J1ZmZlckxpc3QsIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihuZXdEZXNj
cmlwdGlvbiksIG51bWJlck9mRnJhbWVzKTsKLX0KLQotdm9pZCBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCi17Ci0gICAgaWYgKG1fYXVkaW9UcmFjaykK
LSAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOwotfQotCi12b2lkIFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQotewotICAgIGlmIChtX2F1
ZGlvVHJhY2spCi0gICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0aGlzKTsKLX0KLQot
dm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRyYWNrKHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgdHJhY2spCi17Ci0gICAg
QVNTRVJUKCFtX2F1ZGlvVHJhY2spOwotICAgIEFTU0VSVCh0cmFjayk7Ci0KLSAgICBtX2F1ZGlv
VHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKLSAgICBub3RpZnlNdXRlZENoYW5nZSghbV9hdWRpb1Ry
YWNrKTsKLSAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCi0gICAgICAgIG1fYXVkaW9UcmFjay0+
QWRkU2luayh0aGlzKTsKLX0KLQotY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMoKSBjb25zdAotewot
ICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjplbXB0eUNhcGFiaWxp
dGllcygpOwotfQotCi1jb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAotewotICAgIHJldHVybiBtX2N1
cnJlbnRTZXR0aW5nczsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZmI2MDIyMDg1MTk3ZmYzOWE2ODU0NzAxZWZiMjBmYjllMGRkNGU0Mi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogICAgZGlzdHJpYnV0aW9uLgotICogMy4g
TmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmli
dXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20gdGhpcwotICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShM
SUJXRUJSVEMpCi0KLSNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKLSNpbmNsdWRlICJSZWFs
dGltZU1lZGlhU291cmNlLmgiCi0jaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+
Ci0jaW5jbHVkZSA8d2VicnRjL2FwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oPgotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLQotdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXRE
ZXNjcmlwdGlvbiAqQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzsKLQotY2xhc3MgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2Us
IHByaXZhdGUgd2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IGNyZWF0ZShydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7Ci0KLSAg
ICB2b2lkIHNldFNvdXJjZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJh
Y2tJbnRlcmZhY2U+JiYpOwotCi1wcml2YXRlOgotICAgIFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBT
dHJpbmcmJik7Ci0gICAgflJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpOwotCi0gICAgLy8g
d2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSBBUEkKLSAgICB2b2lkIE9uRGF0YShjb25z
dCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykgZmluYWw7Ci0KLSAg
ICAvLyBSZWFsdGltZU1lZGlhU291cmNlIEFQSQotICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRh
KCkgZmluYWw7Ci0gICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpICBmaW5hbDsKLQotICAgIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0
IGZpbmFsOwotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3Mo
KSBjb25zdCBmaW5hbDsKLQotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJl
bnRTZXR0aW5nczsKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50
ZXJmYWNlPiBtX2F1ZGlvVHJhY2s7Ci0KLSAgICB1aW50NjRfdCBtX251bWJlck9mRnJhbWVzIHsg
MCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2Eu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQzZjk2YzZhZDllY2Y4YjQzMDNiZGFjMzhhM2U5MzcxYzQ1NmVlMDAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwCkBAIC0wLDAgKzEsMTAyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmgiCisKKyNpZiBVU0Uo
TElCV0VCUlRDKQorCisjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1
ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlv
Rm9ybWF0LmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCisjaW5jbHVkZSAiV2Vi
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCIKKyNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9u
L01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgorCisjaW5jbHVkZSAiQ29yZU1lZGlhU29mdExpbmsu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlPiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1
ZGlvVHJhY2tJZCkKK3sKKyAgICBhdXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZUNvY29hOjpjcmVhdGUoV1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92ZShhdWRpb1RyYWNr
SWQpKTsKKyAgICBzb3VyY2UtPnN0YXJ0KCk7CisgICAgcmV0dXJuIHNvdXJjZTsKK30KKworUmVm
PFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hPiBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2VDb2NvYTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJ
bnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hKFdURk1v
dmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFja0lkKSkpOworfQorCitSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2Eo
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1Ry
YWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCisgICAgOiBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2VDb2NvYShXVEZNb3ZlKGF1ZGlvVHJhY2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpCit7
Cit9CisKKworc3RhdGljIGlubGluZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFt
RGVzY3JpcHRpb24oc2l6ZV90IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291bnQpCit7Cisg
ICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKKyAgICBGaWxsT3V0
QVNCREZvckxQQ00oc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIExpYldl
YlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxl
U2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzRmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0
Ojppc0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQpOwor
ICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7Cit9CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2E6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2Ft
cGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1i
ZXJPZkZyYW1lcykKK3sKKyAgICAvLyBXZSBtYXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0aCBl
bXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1wbGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBsZVJh
dGUgZXF1YWwgdG8gMTYwMDApIHdoZW4gc3RhcnRpbmcgdGhlIGNhbGwuCisgICAgLy8gRklYTUU6
IEZvciB0aGUgbW9tZW50IHdlIHNraXAgdGhlbSwgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgc29s
dXRpb24gYXQgbGlid2VicnRjIGxldmVsIHRvIG5vdCBiZSBjYWxsZWQgdW50aWwgZ2V0dGluZyBz
b21lIHJlYWwgZGF0YS4KKyAgICBpZiAoc2FtcGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJPZkNo
YW5uZWxzID09IDEpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChiaXRzUGVyU2FtcGxl
ID09IDE2KTsKKyAgICBBU1NFUlQobnVtYmVyT2ZDaGFubmVscyA9PSAxIHx8IG51bWJlck9mQ2hh
bm5lbHMgPT0gMik7CisgICAgQVNTRVJUKHNhbXBsZVJhdGUgPT0gNDgwMDApOworCisgICAgQ01U
aW1lIHN0YXJ0VGltZSA9IENNVGltZU1ha2UobV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7
CisgICAgYXV0byBtZWRpYVRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7CisgICAg
bV9udW1iZXJPZkZyYW1lcyArPSBudW1iZXJPZkZyYW1lczsKKworICAgIEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlwdGlvbiA9IHN0cmVhbURlc2NyaXB0aW9uKHNhbXBsZVJh
dGUsIG51bWJlck9mQ2hhbm5lbHMpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVl
ZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGNvcHkuCisgICAgLy8gSW5z
dGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZGlyZWN0bHkgcGFzcyBhdWRpb0RhdGEgcG9pbnRl
ci4KKyAgICBXZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVt
YmVyT2ZGcmFtZXMpIH07CisgICAgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRl
U2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMgKiBudW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1wbGUg
LyA4OworICAgIGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9IG51
bWJlck9mQ2hhbm5lbHM7CisKKyAgICBpZiAobXV0ZWQoKSkKKyAgICAgICAgbWVtc2V0KGF1ZGlv
QnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRhLCAwLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDAp
LT5tRGF0YUJ5dGVTaXplKTsKKyAgICBlbHNlCisgICAgICAgIG1lbWNweShhdWRpb0J1ZmZlckxp
c3QuYnVmZmVyKDApLT5tRGF0YSwgYXVkaW9EYXRhLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDAp
LT5tRGF0YUJ5dGVTaXplKTsKKworICAgIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUs
IGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9u
KSwgbnVtYmVyT2ZGcmFtZXMpOworfQorCit9CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lOTU3Yzc2NmIxY2ViNzIyNTA5MDMzOTgyMGViN2YzMzk0M2JmOTc2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykK
KworI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIgorCisjaW5jbHVkZSA8
Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+CisKK3R5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1
ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9ybWF0RGVzY3JpcHRpb25SZWY7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM7CisKK2Ns
YXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZSwgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UsIHByaXZh
dGUgd2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYT4gY3JlYXRlKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKKworcHJp
dmF0ZToKKyAgICBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYShydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CisKKyAgICAv
LyB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlIEFQSQorICAgIHZvaWQgT25EYXRhKGNv
bnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJTYW1wbGUsIGludCBzYW1wbGVSYXRlLCBz
aXplX3QgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzKSBmaW5hbDsKKwor
ICAgIHVpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZDkxMDFkYzQzNzkxN2Q1MTBlNzRiZmM3NzUxYzdjNzBjN2RjMjJhNC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBi
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0g
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZS5oIgotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkNBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCi0j
aW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1z
dGF0aWMgaW5saW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBsaWJ3ZWJydGNBdWRpb0Zv
cm1hdChGbG9hdDY0IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291bnQpCi17Ci0gICAgLy8g
RklYTUU6IE1pY3JvcGhvbmVzIGNhbiBoYXZlIG1vcmUgdGhhbiB0d28gY2hhbm5lbHMuIEluIHN1
Y2ggY2FzZSwgd2Ugc2hvdWxkIGRvIHRoZSBtaXggZG93biBiYXNlZCBvbiBBdWRpb0NoYW5uZWxM
YXlvdXRUYWcuCi0gICAgc2l6ZV90IGxpYldlYlJUQ0NoYW5uZWxDb3VudCA9IGNoYW5uZWxDb3Vu
dCA+PSAyID8gMiA6IGNoYW5uZWxDb3VudDsKLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24gc3RyZWFtRm9ybWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1Gb3JtYXQsIHNh
bXBsZVJhdGUsIGxpYldlYlJUQ0NoYW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNh
bXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRp
b0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBMaWJX
ZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0gICAgcmV0dXJuIHN0cmVhbUZv
cm1hdDsKLX0KLQotUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQot
ICAgIDogbV9hdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkKLSAgICAsIG1fc2FtcGxl
Q29udmVydGVyKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRlKExpYldlYlJUQ0F1ZGlvRm9y
bWF0OjpzYW1wbGVSYXRlICogMikpCi0gICAgLCBtX3NpbGVuY2VBdWRpb1RpbWVyKCp0aGlzLCAm
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5jZSkKLXsKLSAgICBtX2F1ZGlv
U291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7Ci0gICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwot
fQotCi1ib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCi17Ci0gICAgbV9hdWRpb1NvdXJjZS0+
cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwotICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1Nv
dXJjZSk7Ci0gICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwotCi0gICAgaW5p
dGlhbGl6ZUNvbnZlcnRlcigpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFJlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRlcigpCi17Ci0gICAgbV9tdXRl
ZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7Ci0gICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJj
ZS0+ZW5hYmxlZCgpOwotICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKLX0KLQotdm9pZCBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQotewotICAgIG1fc2lsZW5jZUF1ZGlvVGlt
ZXIuc3RvcCgpOwotICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKLX0K
LQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgp
Ci17Ci0gICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7Ci0gICAgaGFuZGxlTXV0
ZWRJZk5lZWRlZCgpOwotfQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291
cmNlRW5hYmxlZENoYW5nZWQoKQotewotICAgIG1fZW5hYmxlZCA9IG1fYXVkaW9Tb3VyY2UtPmVu
YWJsZWQoKTsKLSAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVkKCkKLXsKLSAgICBib29sIGlz
U2lsZW5jZWQgPSBtX211dGVkIHx8ICFtX2VuYWJsZWQ7Ci0gICAgbV9zYW1wbGVDb252ZXJ0ZXIt
PnNldE11dGVkKGlzU2lsZW5jZWQpOwotICAgIGlmIChpc1NpbGVuY2VkICYmICFtX3NpbGVuY2VB
dWRpb1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RhcnRS
ZXBlYXRpbmcoMV9zKTsKLSAgICBpZiAoIWlzU2lsZW5jZWQgJiYgbV9zaWxlbmNlQXVkaW9UaW1l
ci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3NpbGVuY2VBdWRpb1RpbWVyLnN0b3AoKTsKLX0KLQot
dm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRTaWxlbmNlKCkKLXsKLSAgICBM
aWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgc2l6ZV90IGNodW5rU2FtcGxl
Q291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKLSAg
ICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVk
aW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1i
ZXJPZkNoYW5uZWxzKCk7Ci0KLSAgICAgICAgaWYgKCFidWZmZXJTaXplKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKLSAgICAg
ICAgbWVtc2V0KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCAwLCBidWZmZXJTaXplKTsKLSAgICAgICAg
Zm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQotICAgICAgICAgICAgc2luay0+T25EYXRhKG1fYXVk
aW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRw
dXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRp
b24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsKLSAgICB9KTsKLX0KLQot
Ym9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlv
RGF0YUhpZ2hMaW1pdCgpCi17Ci0gICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3Jp
dGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAgYXV0
byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlw
dGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0g
cmVhZEF1ZGlvRHVyYXRpb24pOwotICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+IHJl
YWRBdWRpb0R1cmF0aW9uICsgMC41OwotfQotCi1ib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZTo6aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGltaXQoKQotewotICAgIGF1dG8g
d3JpdHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBtX2lucHV0U3RyZWFtRGVzY3Jp
cHRpb24uc2FtcGxlUmF0ZSgpOwotICAgIGF1dG8gcmVhZEF1ZGlvRHVyYXRpb24gPSBtX3JlYWRD
b3VudCAvIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotCi0gICAgQVNT
RVJUKHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1cmF0aW9uKTsKLSAgICByZXR1
cm4gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPCByZWFkQXVkaW9EdXJhdGlvbiArIDAuMTsKLX0KLQot
Ym9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6Omhhc0J1ZmZlcmVkRW5nb3VoRGF0YSgp
Ci17Ci0gICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5w
dXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAgYXV0byByZWFkQXVkaW9EdXJh
dGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRl
KCk7Ci0KLSAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRp
b24pOwotICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlv
biArIDAuMDE7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjphdWRpb1Nh
bXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEm
IGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgc3RyZWFtRGVzY3JpcHRp
b24sIHNpemVfdCBzYW1wbGVDb3VudCkKLXsKLSAgICBpZiAobV9pbnB1dFN0cmVhbURlc2NyaXB0
aW9uICE9IHN0cmVhbURlc2NyaXB0aW9uKSB7Ci0gICAgICAgIG1faW5wdXRTdHJlYW1EZXNjcmlw
dGlvbiA9IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKHN0cmVhbURlc2NyaXB0aW9uKTsKLSAg
ICAgICAgYXV0byBzdGF0dXMgID0gbV9zYW1wbGVDb252ZXJ0ZXItPnNldElucHV0Rm9ybWF0KG1f
aW5wdXRTdHJlYW1EZXNjcmlwdGlvbik7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCAh
c3RhdHVzKTsKLQotICAgICAgICBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uID0gbGlid2VicnRj
QXVkaW9Gb3JtYXQoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUsIHN0cmVhbURlc2Ny
aXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSk7Ci0gICAgICAgIHN0YXR1cyA9IG1fc2FtcGxlQ29u
dmVydGVyLT5zZXRPdXRwdXRGb3JtYXQobV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zdHJlYW1E
ZXNjcmlwdGlvbigpKTsKLSAgICAgICAgQVNTRVJUKCFzdGF0dXMpOwotICAgIH0KLQotICAgIC8v
IExldCdzIHNraXAgcHVzaGluZyBzYW1wbGVzIGlmIHdlIGFyZSB0b28gc2xvdyBwdWxsaW5nIHRo
ZW0uCi0gICAgaWYgKG1fc2tpcHBpbmdBdWRpb0RhdGEpIHsKLSAgICAgICAgaWYgKCFpc1JlYWNo
aW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChpc1JlYWNo
aW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSkgewotICAgICAgICBtX3NraXBwaW5nQXVk
aW9EYXRhID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIElmIHdlIGNo
YW5nZSB0aGUgYXVkaW8gdHJhY2sgb3IgaXRzIHNhbXBsZSByYXRlIGNoYW5nZXMsIHRoZSB0aW1l
c3RhbXAgYmFzZWQgb24gbV93cml0ZUNvdW50IG1heSBiZSB3cm9uZy4KLSAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHVwZGF0ZSBtX3dyaXRlQ291bnQgdG8gYmUgdmFsaWQgYWNjb3JkaW5nIHRoZSBu
ZXcgc2FtcGxlUmF0ZS4KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVzaFNhbXBsZXMoTWVkaWFU
aW1lKG1fd3JpdGVDb3VudCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faW5wdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCkpKSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7Ci0gICAgbV93
cml0ZUNvdW50ICs9IHNhbXBsZUNvdW50OwotCi0gICAgaWYgKCFoYXNCdWZmZXJlZEVuZ291aERh
dGEoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldl
YlJUQ1NpZ25hbGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0g
ICAgICAgIHByb3RlY3RlZFRoaXMtPnB1bGxBdWRpb0RhdGEoKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnB1bGxBdWRpb0RhdGEoKQotewotICAgIC8v
IGxpYndlYnJ0YyBleHBlY3RzIDEwIG1zIGNodW5rcy4KLSAgICBzaXplX3QgY2h1bmtTYW1wbGVD
b3VudCA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpIC8gMTAwOwotICAg
IHNpemVfdCBidWZmZXJTaXplID0gY2h1bmtTYW1wbGVDb3VudCAqIExpYldlYlJUQ0F1ZGlvRm9y
bWF0OjpzYW1wbGVCeXRlU2l6ZSAqIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZD
aGFubmVscygpOwotICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKLQotICAgIEF1
ZGlvQnVmZmVyTGlzdCBidWZmZXJMaXN0OwotICAgIGJ1ZmZlckxpc3QubU51bWJlckJ1ZmZlcnMg
PSAxOwotICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gbV9vdXRw
dXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7Ci0gICAgYnVmZmVyTGlzdC5t
QnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gYnVmZmVyU2l6ZTsKLSAgICBidWZmZXJMaXN0Lm1C
dWZmZXJzWzBdLm1EYXRhID0gbV9hdWRpb0J1ZmZlci5kYXRhKCk7Ci0KLSAgICBtX3NhbXBsZUNv
bnZlcnRlci0+cHVsbEF2YWxhaWJsZVNhbXBsZXNBc0NodW5rcyhidWZmZXJMaXN0LCBjaHVua1Nh
bXBsZUNvdW50LCBtX3JlYWRDb3VudCwgW3RoaXMsIGNodW5rU2FtcGxlQ291bnRdIHsKLSAgICAg
ICAgbV9yZWFkQ291bnQgKz0gY2h1bmtTYW1wbGVDb3VudDsKLSAgICAgICAgZm9yIChhdXRvIHNp
bmsgOiBtX3NpbmtzKQotICAgICAgICAgICAgc2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0
YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZD
aGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsKLSAgICB9KTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVi
YzgwNGU0OTU4NTMwYmU2NjAyZmZkNjFhMmI1M2M3ZWI2ZTU3NC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
LSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkF1ZGlv
U2FtcGxlRGF0YVNvdXJjZS5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgotI2luY2x1
ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNs
dWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotY2xhc3MgQXVkaW9U
cmFja0ludGVyZmFjZTsKLWNsYXNzIEF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlOwotfQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSBmaW5h
bCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwgcHJpdmF0ZSBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlPiYmIGF1ZGlvU291cmNlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkpOyB9Ci0gICAgflJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZSgpIHsgc3RvcCgpOyB9Ci0KLSAgICB2b2lkIHN0b3AoKTsKLQotICAg
IGJvb2wgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7Ci0gICAgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Tb3Vy
Y2UuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKLQotICAgIHZpcnR1YWwg
dm9pZCBBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspIHsgbV9z
aW5rcy5hcHBlbmQoc2luayk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgUmVtb3ZlU2luayh3ZWJydGM6
OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lua3MucmVtb3ZlRmlyc3Qoc2lu
ayk7IH0KLQotICAgIGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7IHJlZigpOyByZXR1cm4gcmVm
Q291bnQoKTsgfQotICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmluYWwgeyBkZXJlZigpOyByZXR1
cm4gcmVmQ291bnQoKTsgfQotICAgIFNvdXJjZVN0YXRlIHN0YXRlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4ga0xpdmU7IH0KLSAgICBib29sIHJlbW90ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdm9pZCBSZWdpc3Rlck9ic2VydmVyKHdlYnJ0Yzo6T2JzZXJ2ZXJJbnRlcmZh
Y2UqKSBmaW5hbCB7IH0KLSAgICB2b2lkIFVucmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2Vy
dmVySW50ZXJmYWNlKikgZmluYWwgeyB9Ci0KLSAgICB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgp
OwotICAgIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKTsKLSAgICB2b2lkIGF1ZGlvU2FtcGxl
c0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwotCi0gICAgYm9vbCBpc1JlYWNo
aW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKTsKLSAgICBib29sIGlzUmVhY2hpbmdCdWZm
ZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCk7Ci0gICAgYm9vbCBoYXNCdWZmZXJlZEVuZ291aERhdGEo
KTsKLQotICAgIC8vIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciBBUEkKLSAgICB2
b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyBz
b3VyY2VNdXRlZENoYW5nZWQoKTsgfQotICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hhbmdlZChNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlRW5hYmxlZENoYW5nZWQoKTsgfQot
ICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwg
Y29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRh
LCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBs
ZUNvdW50KSBmaW5hbCB7IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGRhdGEsIGRl
c2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7IH0KLSAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KLSAgICB2b2lkIHRyYWNrU2V0dGluZ3NDaGFuZ2Vk
KE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9Ci0KLSAgICB2b2lkIHB1bGxBdWRp
b0RhdGEoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwotICAgIHZvaWQgaGFu
ZGxlTXV0ZWRJZk5lZWRlZCgpOwotICAgIHZvaWQgc2VuZFNpbGVuY2UoKTsKLQotICAgIFZlY3Rv
cjx3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9zaW5rczsKLSAgICBSZWY8TWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7Ci0gICAgUmVmPEF1ZGlvU2FtcGxl
RGF0YVNvdXJjZT4gbV9zYW1wbGVDb252ZXJ0ZXI7Ci0gICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbjsKLSAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbjsKLQotICAgIFZlY3Rvcjx1aW50OF90PiBtX2F1
ZGlvQnVmZmVyOwotICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsgMCB9OwotICAgIHVpbnQ2NF90
IG1fd3JpdGVDb3VudCB7IDAgfTsKLSAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9OwotICAgIGJv
b2wgbV9lbmFibGVkIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9za2lwcGluZ0F1ZGlvRGF0YSB7IGZh
bHNlIH07Ci0gICAgVGltZXIgbV9zaWxlbmNlQXVkaW9UaW1lcjsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTJiODhh
ZjgwZjQ3ZGE3YmExZDRiYzE4NGM1YjBlOThjMjA0ZWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZUNvY29hLmNwcApAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
cmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAor
ICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmgi
CisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJX
ZWJSVENQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUg
QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIGxpYndlYnJ0Y0F1ZGlvRm9ybWF0KEZsb2F0NjQg
c2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKK3sKKyAgICAvLyBGSVhNRTogTWljcm9w
aG9uZXMgY2FuIGhhdmUgbW9yZSB0aGFuIHR3byBjaGFubmVscy4gSW4gc3VjaCBjYXNlLCB3ZSBz
aG91bGQgZG8gdGhlIG1peCBkb3duIGJhc2VkIG9uIEF1ZGlvQ2hhbm5lbExheW91dFRhZy4KKyAg
ICBzaXplX3QgbGliV2ViUlRDQ2hhbm5lbENvdW50ID0gY2hhbm5lbENvdW50ID49IDIgPyAyIDog
Y2hhbm5lbENvdW50OworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3Jt
YXQ7CisgICAgRmlsbE91dEFTQkRGb3JMUENNKHN0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSwgbGli
V2ViUlRDQ2hhbm5lbENvdW50LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGli
V2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0Zs
b2F0LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNCaWdFbmRpYW4sIExpYldlYlJUQ0F1ZGlvRm9y
bWF0Ojppc05vbkludGVybGVhdmVkKTsKKyAgICByZXR1cm4gc3RyZWFtRm9ybWF0OworfQorCitS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlQ29jb2EoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQorICAg
IDogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFdURk1vdmUoYXVkaW9Tb3VyY2UpKQorICAg
ICwgbV9zYW1wbGVDb252ZXJ0ZXIoQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoTGliV2Vi
UlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUgKiAyKSkKK3sKK30KKworUmVmPFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZT4gUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpjcmVhdGUoUmVm
PE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQoreworICAgIHJldHVybiBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6Y3JlYXRlKFdURk1vdmUoYXVkaW9Tb3Vy
Y2UpKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6aGFuZGxl
TXV0ZWRJZk5lZWRlZCgpCit7CisgICAgYm9vbCBpc1NpbGVuY2VkID0gbV9tdXRlZCB8fCAhbV9l
bmFibGVkOworICAgIG1fc2FtcGxlQ29udmVydGVyLT5zZXRNdXRlZChpc1NpbGVuY2VkKTsKKwor
ICAgIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpoYW5kbGVNdXRlZElmTmVlZGVk
KCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OnNlbmRTaWxl
bmNlKCkKK3sKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhy
ZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2l6
ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJh
dGUoKSAvIDEwMDsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNvdW50
ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJlYW1E
ZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7CisKKyAgICAgICAgaWYgKCFidWZmZXJTaXpl
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZm
ZXJTaXplKTsKKyAgICAgICAgbWVtc2V0KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCAwLCBidWZmZXJT
aXplKTsKKyAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQorICAgICAgICAgICAgc2lu
ay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2Ft
cGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0
U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsK
KyAgICB9KTsKK30KKworYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6aXNS
ZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCkKK3sKKyAgICBhdXRvIHdyaXR0ZW5B
dWRpb0R1cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNh
bXBsZVJhdGUoKTsKKyAgICBhdXRvIHJlYWRBdWRpb0R1cmF0aW9uID0gbV9yZWFkQ291bnQgLyBt
X291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKworICAgIEFTU0VSVCh3cml0
dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbik7CisgICAgcmV0dXJuIHdyaXR0
ZW5BdWRpb0R1cmF0aW9uID4gcmVhZEF1ZGlvRHVyYXRpb24gKyAwLjU7Cit9CisKK2Jvb2wgUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0
YUxvd0xpbWl0KCkKK3sKKyAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID0gbV93cml0ZUNv
dW50IC8gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKyAgICBhdXRvIHJl
YWRBdWRpb0R1cmF0aW9uID0gbV9yZWFkQ291bnQgLyBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9u
LnNhbXBsZVJhdGUoKTsKKworICAgIEFTU0VSVCh3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFk
QXVkaW9EdXJhdGlvbik7CisgICAgcmV0dXJuIHdyaXR0ZW5BdWRpb0R1cmF0aW9uIDwgcmVhZEF1
ZGlvRHVyYXRpb24gKyAwLjE7Cit9CisKK2Jvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2E6Omhhc0J1ZmZlcmVkRW5vdWdoRGF0YSgpCit7CisgICAgYXV0byB3cml0dGVuQXVkaW9E
dXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVS
YXRlKCk7CisgICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRw
dXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisKKyAgICBBU1NFUlQod3JpdHRlbkF1
ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOworICAgIHJldHVybiB3cml0dGVuQXVk
aW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbiArIDAuMDE7Cit9CisKK3ZvaWQgUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiBzdHJlYW1EZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50
KQoreworICAgIGlmIChtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24gIT0gc3RyZWFtRGVzY3JpcHRp
b24pIHsKKyAgICAgICAgbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uID0gdG9DQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24oc3RyZWFtRGVzY3JpcHRpb24pOworICAgICAgICBhdXRvIHN0YXR1cyAgPSBt
X3NhbXBsZUNvbnZlcnRlci0+c2V0SW5wdXRGb3JtYXQobV9pbnB1dFN0cmVhbURlc2NyaXB0aW9u
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzdGF0dXMsICFzdGF0dXMpOworCisgICAgICAgIG1f
b3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gPSBsaWJ3ZWJydGNBdWRpb0Zvcm1hdChMaWJXZWJSVENB
dWRpb0Zvcm1hdDo6c2FtcGxlUmF0ZSwgc3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVs
cygpKTsKKyAgICAgICAgc3RhdHVzID0gbV9zYW1wbGVDb252ZXJ0ZXItPnNldE91dHB1dEZvcm1h
dChtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCkpOworICAgICAg
ICBBU1NFUlQoIXN0YXR1cyk7CisgICAgfQorCisgICAgLy8gTGV0J3Mgc2tpcCBwdXNoaW5nIHNh
bXBsZXMgaWYgd2UgYXJlIHRvbyBzbG93IHB1bGxpbmcgdGhlbS4KKyAgICBpZiAobV9za2lwcGlu
Z0F1ZGlvRGF0YSkgeworICAgICAgICBpZiAoIWlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxv
d0xpbWl0KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc2tpcHBpbmdBdWRpb0Rh
dGEgPSBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhp
Z2hMaW1pdCgpKSB7CisgICAgICAgIG1fc2tpcHBpbmdBdWRpb0RhdGEgPSB0cnVlOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gSWYgd2UgY2hhbmdlIHRoZSBhdWRpbyB0cmFjayBv
ciBpdHMgc2FtcGxlIHJhdGUgY2hhbmdlcywgdGhlIHRpbWVzdGFtcCBiYXNlZCBvbiBtX3dyaXRl
Q291bnQgbWF5IGJlIHdyb25nLgorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXBkYXRlIG1fd3Jp
dGVDb3VudCB0byBiZSB2YWxpZCBhY2NvcmRpbmcgdGhlIG5ldyBzYW1wbGVSYXRlLgorICAgIG1f
c2FtcGxlQ29udmVydGVyLT5wdXNoU2FtcGxlcyhNZWRpYVRpbWUobV93cml0ZUNvdW50LCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4obV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSkp
LCBhdWRpb0RhdGEsIHNhbXBsZUNvdW50KTsKKyAgICBtX3dyaXRlQ291bnQgKz0gc2FtcGxlQ291
bnQ7CisKKyAgICBpZiAoIWhhc0J1ZmZlcmVkRW5nb3VoRGF0YSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+
cHVsbEF1ZGlvRGF0YSgpOworICAgIH0pOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZUNvY29hOjpwdWxsQXVkaW9EYXRhKCkKK3sKKyAgICAvLyBsaWJ3ZWJydGMgZXhwZWN0
cyAxMCBtcyBjaHVua3MuCisgICAgc2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0
cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKKyAgICBzaXplX3QgYnVmZmVyU2l6
ZSA9IGNodW5rU2FtcGxlQ291bnQgKiBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlQnl0ZVNp
emUgKiBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKTsKKyAgICBt
X2F1ZGlvQnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7CisKKyAgICBBdWRpb0J1ZmZlckxpc3QgYnVm
ZmVyTGlzdDsKKyAgICBidWZmZXJMaXN0Lm1OdW1iZXJCdWZmZXJzID0gMTsKKyAgICBidWZmZXJM
aXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRp
b24ubnVtYmVyT2ZDaGFubmVscygpOworICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFC
eXRlU2l6ZSA9IGJ1ZmZlclNpemU7CisgICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YSA9
IG1fYXVkaW9CdWZmZXIuZGF0YSgpOworCisgICAgbV9zYW1wbGVDb252ZXJ0ZXItPnB1bGxBdmFs
YWlibGVTYW1wbGVzQXNDaHVua3MoYnVmZmVyTGlzdCwgY2h1bmtTYW1wbGVDb3VudCwgbV9yZWFk
Q291bnQsIFt0aGlzLCBjaHVua1NhbXBsZUNvdW50XSB7CisgICAgICAgIG1fcmVhZENvdW50ICs9
IGNodW5rU2FtcGxlQ291bnQ7CisgICAgICAgIGZvciAoYXV0byBzaW5rIDogbV9zaW5rcykKKyAg
ICAgICAgICAgIHNpbmstPk9uRGF0YShtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgTGliV2ViUlRDQXVk
aW9Gb3JtYXQ6OnNhbXBsZVNpemUsIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0
ZSgpLCBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSwgY2h1bmtT
YW1wbGVDb3VudCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2VDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhNzA0MzAyMjkyZmIxMDc4MTU5YTJhOWQxNTAx
ODI4ZjgxMjA2OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaApAQCAtMCww
ICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMp
CisKKyNpbmNsdWRlICJBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCIKKyNpbmNsdWRlICJSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CitjbGFzcyBBdWRp
b1RyYWNrSW50ZXJmYWNlOworY2xhc3MgQXVkaW9UcmFja1NpbmtJbnRlcmZhY2U7Cit9CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29j
b2EgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlQ29jb2E+LCBwdWJsaWMgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hPiBj
cmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hKFdURk1vdmUo
YXVkaW9Tb3VyY2UpKSk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOworCisg
ICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxh
dGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBm
aW5hbDsKKworICAgIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCkg
ZmluYWw7CisgICAgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpIGZp
bmFsOworICAgIGJvb2wgaGFzQnVmZmVyZWRFbm91Z2hEYXRhKCkgZmluYWw7CisKKyAgICB2b2lk
IHB1bGxBdWRpb0RhdGEoKSBmaW5hbDsKKworICAgIHZvaWQgaGFuZGxlTXV0ZWRJZk5lZWRlZCgp
IGZpbmFsOworICAgIHZvaWQgc2VuZFNpbGVuY2UoKSBmaW5hbDsKKworICAgIFJlZjxBdWRpb1Nh
bXBsZURhdGFTb3VyY2U+IG1fc2FtcGxlQ29udmVydGVyOworICAgIENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb247CisgICAgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb247CisKKyAgICBWZWN0b3I8dWludDhfdD4g
bV9hdWRpb0J1ZmZlcjsKKyAgICB1aW50NjRfdCBtX3JlYWRDb3VudCB7IDAgfTsKKyAgICB1aW50
NjRfdCBtX3dyaXRlQ291bnQgeyAwIH07CisgICAgYm9vbCBtX3NraXBwaW5nQXVkaW9EYXRhIHsg
ZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShM
SUJXRUJSVEMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323679</attachid>
            <date>2017-10-13 09:15:30 -0700</date>
            <delta_ts>2017-10-13 09:28:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177928-20171013181529.patch</filename>
            <type>text/plain</type>
            <size>70678</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkzODIyMzA3YzA4MTkz
ODNhYjVjNDliNDQxNTFlNWFkODFkNWFmMy4uODg2OTExNjJiZWQ0YTcyYjE3NTg2NzY1ODI3Mzll
N2JmOTNjZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTEwLTEyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlcyBhbmQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlcyBw
b3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciB0aGUgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGFuZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgY2xhc3NlcywKKyAgICAgICAgbW92ZSB0aGUgbWFjIHNwZWNp
ZmljIGNvZGUgdG8gYSBkaWZmZXJlbnQgY2xhc3MuIFRoaXMgd2F5IHdlIGNhbiB1c2UgdGhlbSBm
cm9tCisgICAgICAgIG90aGVyIHBvcnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgd2UgYXJl
IG5vdCBhZGRpbmcgbmV3IGZ1bmN0aW9uYWxpdHkganVzdCByZWZhY3RvcmluZy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmguIEp1c3QgdGhlIHBvcnQg
YWdub3N0aWMgcGFydHMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaC4gRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAuIERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmguIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6IEFkZGVkLCBpdCBhZGRzIENv
Y29hIGNvZGUgcGFydHMgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhpcyBm
dW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUgdG8g
YXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBBZGRl
ZCBDb2NvYSBjb2RlIGZyb20gb3JpZ2luYWwgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6
IEFkZGVkIENvY29hIGNvZGUgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhp
cyBmdW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUg
dG8gYXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBB
ZGRlZCBDb2NvYSBjb2RlIGZyb20gdGhlIG9yaWdpbmFsIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaC4KKwogMjAxNy0x
MC0wNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbV2luQ2Fpcm9dIEZpeCBidWlsZCBhZnRlciBCdWcgMTY3OTU2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDdmMjJlNTE2Zjk3YTI5N2RkNTQ4ZTc1Y2VlMDg3N2ExYzU2MjVmMWEuLmE4NDQxYmY0
Y2IyYmZhNTNhNWMyMjY4MDc3ZjE2NzcxMjAzNWMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yNTQ4LDkgKzI1NDgsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAKICAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcAogICAg
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3Bw
CisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCiAgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKICAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCisgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAogCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmY4Njg4YmMzZDlkNmU0MWU4MmRlNjY2OGIyYjlmYzViYjA4ZDM3Yy4uMjk5Yjc2NmM2
MTZjMGQzZTFiYjhlYWRlYTY3NjAxYzdiYjA0NDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5Niw4ICsxNjk2LDEyIEBA
CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEw
NDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTEw
M0FBQjFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovOyB9Owog
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
ODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggKi87IH07
CisJCTQxMTAzQUFCMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovOyB9OworCQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE4MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovOyB9OwogCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMDMg
LyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi87IH07CiAJCTQxMTAzQUFFMUUzOTc5MTAwMDc2OUYw
MyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQUExRTM5NzkwQTAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi87IH07CisJCTQxMTAzQUFEMUUzOTc5MTAw
MDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTkxRTM5NzkwQTAwNzY5
RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggKi87IH07CisJCTQxMTAz
QUFFMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
QTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3Bw
ICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2ViQ29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOUIx
QTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTQxMjMwOTEz
MTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGODIxNjI5OTAyOUY0RkI1MDEw
MDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTI3RDUzNzBGOEFB
QjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0
YXRlLmNwcCAqLzsgfTsKQEAgLTk0NzIsOCArOTQ3NiwxMiBAQAogCQk0MTBCN0U3MTEwNDVGQUIw
MDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMTAzQUE4MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE4MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBOTFFMzk3OTBBMDA3
NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIz
MjgwMEI5M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMyODAwQjk1NjcyIC8qIFJlYWRhYmxl
U3RyZWFtQllPQlJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtQllPQlJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0OTcs
NiArMTY1MDUsOCBAQAogCQkJCTA3RkZERTY2MTgxQUVENDIwMDcyRDQwOSAvKiBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZS5jcHAgKi8sCiAJCQkJMDdGRkRFNjcxODFBRUQ0MjAwNzJENDA5IC8qIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggKi8sCiAJCQkJNUVCQjg5MzgxQzc3QkRBNDAwQzY1RDQx
IC8qIFBlZXJNZWRpYURlc2NyaXB0aW9uLmggKi8sCisJCQkJNDExMDNBQUExRTM5NzkwQTAwNzY5
RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi8sCisJCQkJNDExMDNBQTkx
RTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oICovLAogCQkJ
CTRBNEY2NTZCMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLywK
IAkJCQk0QTRGNjU2QzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oICov
LAogCQkJCTRBNEY2NTZEMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzLmggKi8sCkBAIC0xNjUwNiw2ICsxNjUxNiw4IEBACiAJCQkJNEE0RjY1NkYxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovLAogCQkJCTJF
QzQxREUyMUMwNDEwQTMwMEQyOTRGRSAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuY3BwICovLAogCQkJCTA3QzFDMEU0MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLywKKwkJCQk0MTEwM0FBNzFFMzk3
OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCAqLywKKwkJCQk0
MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgg
Ki8sCiAJCQkJMzEzNTkxMEMxRTdERENCNjAwRjMwNjMwIC8qIFJUQ0J1bmRsZVBvbGljeS5oICov
LAogCQkJCTA3MjIxQkEyMTdDRjBBRDQwMDg0OEU1MSAvKiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCAqLywKIAkJCQkwNzIyMUJBMzE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50LmggKi8sCkBAIC0xNjU1NCwxNCArMTY1NjYsMTQgQEAKIAkJCQkwNzQ0RUNFQzFF
MEM0QUU1MDAwRDA5NDQgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJ
MDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgg
Ki8sCiAJCQkJMDdFRTc2RUUxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tICovLAotCQkJCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwICovLAotCQkJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAv
KiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCAqLywKKwkJCQk0MTEwM0FBQTFFMzk3OTBB
MDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwICovLAorCQkJ
CTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5oICovLAogCQkJCTVDREQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2UuY3BwICovLAogCQkJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLywKIAkJCQk0QTBGRkFBMzFBQUY1RUY2MDA2
MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgKi8sCiAJCQkJNEEwRkZB
QTQxQUFGNUVGNjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCAqLywK
LQkJCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcCAqLywKLQkJCQk0MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggKi8sCisJCQkJNDExMDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCAqLywKKwkJCQk0MTEwM0FBODFFMzk3
OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCAqLywKIAkJ
CQk1Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmNwcCAqLywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8sCkBAIC0yOTYxNCw2ICsyOTYyNiw3IEBACiAJ
CQkJNDEyOUM5QUIxRjU5QzU3MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAzQzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFs
eXNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExMDNBQUQxRTM5NzkxMDAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDExMDNBQUQx
RTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8q
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRB
MEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NjIxLDYgKzI5NjM0LDcgQEAKIAkJCQk0QTRGNjU3NDFBQTk5N0Yx
MDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBQzFFMzk3OTEwMDA3
NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQjk1MjI0MUY1OEE1OEYwMDkzMURDMiAvKiBS
ZWNvcmRpbmdTd2l6emxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2OEU4MEMyMjZF
MzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1ODE3NUQ0MTRD
MDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1ODIsNiAr
MzM1OTYsNyBAQAogCQkJCTQxMjlDOThBMUY1ODdGRUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVh
bVNpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwM0IxMkIwMjY3NjAwQzFBMzU5IC8q
IFJlYWx0aW1lQW5hbHlzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMDNBQUUxRTM5Nzkx
MDAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTEwM0FBRTFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzM0UxRTQzMjREQzAwNjIx
RTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0QTRGNjU3MDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0QTBGRkFBMTFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNTg5LDYgKzMzNjA0LDcgQEAK
IAkJCQk0QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQzQxREU0MUMwNDEwQTMwMEQyOTRGRSAvKiBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDExMDNBQUIxRTM5NzkxMDAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEwM0FBQjFFMzk3OTEwMDA3NjlGMTQgLyog
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDgzM0QxRTQzMjREOTAwNjIxRTkyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFu
Z2xlU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBQjQxODExM0UzNTZFODAwRDhBQUYz
IC8qIFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MWFiM2Q3NjgzYjNiOGZmYzUwMmJmMzQ2NTI0Nzk3MzVj
MjFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRp
b0Zvcm1hdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKKyAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQoreworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOworfQorCitSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1f
YXVkaW9UcmFjaykKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOworfQorCit2
b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQorewor
ICAgIGlmIChtX2F1ZGlvVHJhY2spCisgICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0
aGlzKTsKK30KKwordm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRy
YWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgdHJh
Y2spCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOworICAgIEFTU0VSVCh0cmFjayk7CisK
KyAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAgICBub3RpZnlNdXRlZENoYW5n
ZSghbV9hdWRpb1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCisgICAgICAgIG1f
YXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMo
KSBjb25zdAoreworICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpl
bXB0eUNhcGFiaWxpdGllcygpOworfQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAoreworICAg
IHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY5N2Qx
N2M0ZTFkYzQ3N2MwOTU2Nzg3MmY3NWI0ZDhiOWM1MTg3MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldF
QlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlLCBwcml2YXRlIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYp
OworCisgICAgdm9pZCBzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmKTsKKworcHJpdmF0ZToKKyAgICBSZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFj
ZT4mJiwgU3RyaW5nJiYpOworICAgIH5SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UoKTsKKwor
ICAgIC8vIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgQVBJCisgICAgdmlydHVhbCB2
b2lkIE9uRGF0YShjb25zdCB2b2lkKiAvKiBhdWRpb0RhdGEgKi8sIGludCAvKiBiaXRzUGVyU2Ft
cGxlICovLCBpbnQgLyogc2FtcGxlUmF0ZSAqLywgc2l6ZV90IC8qIG51bWJlck9mQ2hhbm5lbHMg
Ki8sIHNpemVfdCAvKiBudW1iZXJPZkZyYW1lcyAqLykgeyB9OworCisgICAgLy8gUmVhbHRpbWVN
ZWRpYVNvdXJjZSBBUEkKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOworICAg
IHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSAgZmluYWw7CisKKyAgICBjb25zdCBSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5hbDsKKyAgICBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWw7
CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7Cisg
ICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4gbV9hdWRp
b1RyYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKExJ
QldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZmM2E1YmViNmY1Y2NjMDEzNjk0ZTA5MTQwMmYyN2YyODIwZjdmYjkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJl
cXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisg
KiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVk
ZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4m
JiBhdWRpb1NvdXJjZSkKKyAgICA6IG1fYXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRpb1NvdXJjZSkp
CisgICAgLCBtX3NpbGVuY2VBdWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlOjpzZW5kU2lsZW5jZSkKK3sKKyAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZlcigq
dGhpcyk7CisgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOworfQorCitib29sIFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4m
JiBuZXdTb3VyY2UpCit7CisgICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMp
OworICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7CisgICAgbV9hdWRpb1Nv
dXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOworCisgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
aW5pdGlhbGl6ZUNvbnZlcnRlcigpCit7CisgICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11
dGVkKCk7CisgICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxlZCgpOworICAgIGhh
bmRsZU11dGVkSWZOZWVkZWQoKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2U6OnN0b3AoKQoreworICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOworICAgIG1fYXVk
aW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCit7CisgICAgbV9tdXRlZCA9IG1f
YXVkaW9Tb3VyY2UtPm11dGVkKCk7CisgICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOworfQorCit2
b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxlZENoYW5nZWQoKQor
eworICAgIG1fZW5hYmxlZCA9IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsKKyAgICBoYW5kbGVN
dXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpo
YW5kbGVNdXRlZElmTmVlZGVkKCkKK3sKKyAgICBib29sIGlzU2lsZW5jZWQgPSBtX211dGVkIHx8
ICFtX2VuYWJsZWQ7CisgICAgaWYgKGlzU2lsZW5jZWQgJiYgIW1fc2lsZW5jZUF1ZGlvVGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdGFydFJlcGVhdGluZygx
X3MpOworICAgIGlmICghaXNTaWxlbmNlZCAmJiBtX3NpbGVuY2VBdWRpb1RpbWVyLmlzQWN0aXZl
KCkpCisgICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmU5ODE3ZjFjZjI0NDRjMzM3ZDU4MjgxMDA5
MmViYmFiOGJiOWRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAgLTAsMCArMSwxMDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisg
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiVGltZXIu
aCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+CisjaW5jbHVk
ZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSB3ZWJydGMgeworY2xh
c3MgQXVkaW9UcmFja0ludGVyZmFjZTsKK2NsYXNzIEF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlOwor
fQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwgcHJpdmF0ZSBNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlPiYmIGF1ZGlvU291cmNlKTsKKworICAgIH5SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2UoKSB7IHN0b3AoKTsgfQorCisgICAgdm9pZCBzdG9wKCk7CisKKyAgICBib29sIHNldFNvdXJj
ZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOworICAgIE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU291cmNlLmdldCgpOyB9CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7CisKKyAgICB2aXJ0dWFsIHZvaWQgQWRkU2luayh3
ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lua3MuYXBwZW5kKHNp
bmspOyB9CisgICAgdmlydHVhbCB2b2lkIFJlbW92ZVNpbmsod2VicnRjOjpBdWRpb1RyYWNrU2lu
a0ludGVyZmFjZSogc2luaykgeyBtX3NpbmtzLnJlbW92ZUZpcnN0KHNpbmspOyB9CisKKyAgICBp
bnQgQWRkUmVmKCkgY29uc3QgZmluYWwgeyByZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7IH0KKyAg
ICBpbnQgUmVsZWFzZSgpIGNvbnN0IGZpbmFsIHsgZGVyZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7
IH0KKyAgICBTb3VyY2VTdGF0ZSBzdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGtMaXZlOyB9
CisgICAgYm9vbCByZW1vdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZv
aWQgUmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9
CisgICAgdm9pZCBVbnJlZ2lzdGVyT2JzZXJ2ZXIod2VicnRjOjpPYnNlcnZlckludGVyZmFjZSop
IGZpbmFsIHsgfQorCisgICAgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoKTsKKyAgICB2b2lkIHNv
dXJjZUVuYWJsZWRDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvU2FtcGxlc0F2YWls
YWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIHsgfTsKKworICAgIHZpcnR1YWwgYm9vbCBp
c1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSB7IHJldHVybiBmYWxzZTsgfTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGltaXQoKSB7
IHJldHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnVmZmVyZWRFbm91Z2hEYXRh
KCkgeyByZXR1cm4gZmFsc2U7IH07CisKKyAgICAvLyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
T2JzZXJ2ZXIgQVBJCisgICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlTXV0ZWRDaGFuZ2VkKCk7IH0KKyAgICB2b2lkIHRyYWNr
RW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IHNvdXJjZUVu
YWJsZWRDaGFuZ2VkKCk7IH0KKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZSYsIGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lLCBjb25zdCBQbGF0
Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3Jp
cHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkgeyBhdWRpb1NhbXBsZXNBdmFpbGFibGUobWVkaWFU
aW1lLCBkYXRhLCBkZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQpOyB9CisgICAgdm9pZCB0cmFja0Vu
ZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9CisgICAgdm9pZCB0cmFja1Nl
dHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIHB1bGxBdWRpb0RhdGEoKSB7IH07CisKKyAgICB2b2lkIGluaXRpYWxpemVD
b252ZXJ0ZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOworICAg
IHZpcnR1YWwgdm9pZCBzZW5kU2lsZW5jZSgpIHsgfTsKKworICAgIFZlY3Rvcjx3ZWJydGM6OkF1
ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9zaW5rczsKKyAgICBSZWY8TWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7CisKKyAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OworICAgIFRpbWVyIG1fc2lsZW5jZUF1ZGlvVGlt
ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VC
UlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc1MzhjZDA1NWI0ZGNhNDk5MjFiMmQ1MWQ4MGYwODJl
YjIyNjczNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogICAgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogICAgZGlz
dHJpYnV0aW9uLgotICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICAgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgi
Ci0KLSNpZiBVU0UoTElCV0VCUlRDKQotCi0jaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bi5oIgotI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkxp
YldlYlJUQ0F1ZGlvRm9ybWF0LmgiCi0jaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCi0j
aW5jbHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCIKLSNpbmNsdWRlIDxwYWwv
YXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgotCi0jaW5jbHVkZSAiQ29yZU1l
ZGlhU29mdExpbmsuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8UmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlPiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ss
IFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkKLXsKLSAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpu
ZXcgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1v
dmUoYXVkaW9UcmFja0lkKSkpOwotICAgIHNvdXJjZS0+c3RhcnQoKTsKLSAgICByZXR1cm4gc291
cmNlOwotfQotCi1SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OlJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNl
PiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkKLSAgICA6IFJlYWx0aW1lTWVk
aWFTb3VyY2UoV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
OjpBdWRpbywgU3RyaW5nKCkpCi0gICAgLCBtX2F1ZGlvVHJhY2soV1RGTW92ZShhdWRpb1RyYWNr
KSkKLXsKLSAgICBub3RpZnlNdXRlZENoYW5nZSghbV9hdWRpb1RyYWNrKTsKLX0KLQotUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKCkKLXsK
LSAgICBzdG9wKCk7Ci19Ci0KLQotc3RhdGljIGlubGluZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24gc3RyZWFtRGVzY3JpcHRpb24oc2l6ZV90IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVs
Q291bnQpCi17Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsK
LSAgICBGaWxsT3V0QVNCREZvckxQQ00oc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlLCBjaGFubmVs
Q291bnQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zv
cm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzRmxvYXQsIExpYldlYlJU
Q0F1ZGlvRm9ybWF0Ojppc0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzTm9uSW50
ZXJsZWF2ZWQpOwotICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7Ci19Ci0KLXZvaWQgUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlOjpPbkRhdGEoY29uc3Qgdm9pZCogYXVkaW9EYXRhLCBpbnQgYml0
c1BlclNhbXBsZSwgaW50IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QgbnVtYmVyT2ZGcmFtZXMpCi17Ci0gICAgLy8gV2UgbWF5IHJlY2VpdmUgT25EYXRhIGNhbGxz
IHdpdGggZW1wdHkgc291bmQgZGF0YSAobW9ubywgc2FtcGxlcyBlcXVhbCB0byB6ZXJvIGFuZCBz
YW1wbGVSYXRlIGVxdWFsIHRvIDE2MDAwKSB3aGVuIHN0YXJ0aW5nIHRoZSBjYWxsLgotICAgIC8v
IEZJWE1FOiBGb3IgdGhlIG1vbWVudCB3ZSBza2lwIHRoZW0sIHdlIHNob3VsZCBmaW5kIGEgYmV0
dGVyIHNvbHV0aW9uIGF0IGxpYndlYnJ0YyBsZXZlbCB0byBub3QgYmUgY2FsbGVkIHVudGlsIGdl
dHRpbmcgc29tZSByZWFsIGRhdGEuCi0gICAgaWYgKHNhbXBsZVJhdGUgPT0gMTYwMDAgJiYgbnVt
YmVyT2ZDaGFubmVscyA9PSAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoYml0c1Bl
clNhbXBsZSA9PSAxNik7Ci0gICAgQVNTRVJUKG51bWJlck9mQ2hhbm5lbHMgPT0gMSB8fCBudW1i
ZXJPZkNoYW5uZWxzID09IDIpOwotICAgIEFTU0VSVChzYW1wbGVSYXRlID09IDQ4MDAwKTsKLQot
ICAgIENNVGltZSBzdGFydFRpbWUgPSBDTVRpbWVNYWtlKG1fbnVtYmVyT2ZGcmFtZXMsIHNhbXBs
ZVJhdGUpOwotICAgIGF1dG8gbWVkaWFUaW1lID0gUEFMOjp0b01lZGlhVGltZShzdGFydFRpbWUp
OwotICAgIG1fbnVtYmVyT2ZGcmFtZXMgKz0gbnVtYmVyT2ZGcmFtZXM7Ci0KLSAgICBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24gbmV3RGVzY3JpcHRpb24gPSBzdHJlYW1EZXNjcmlwdGlvbihz
YW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKTsKLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
bm90IG5lZWQgdG8gZG8gdGhlIGV4dHJhIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBjb3B5LgotICAg
IC8vIEluc3RlYWQsIHdlIHNob3VsZCBiZSBhYmxlIHRvIGRpcmVjdGx5IHBhc3MgYXVkaW9EYXRh
IHBvaW50ZXIuCi0gICAgV2ViQXVkaW9CdWZmZXJMaXN0IGF1ZGlvQnVmZmVyTGlzdCB7IENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbihuZXdEZXNjcmlwdGlvbiksIFdURjo6c2FmZUNhc3Q8dWludDMy
X3Q+KG51bWJlck9mRnJhbWVzKSB9OwotICAgIGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1E
YXRhQnl0ZVNpemUgPSBudW1iZXJPZkNoYW5uZWxzICogbnVtYmVyT2ZGcmFtZXMgKiBiaXRzUGVy
U2FtcGxlIC8gODsKLSAgICBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tTnVtYmVyQ2hhbm5l
bHMgPSBudW1iZXJPZkNoYW5uZWxzOwotCi0gICAgaWYgKG11dGVkKCkpCi0gICAgICAgIG1lbXNl
dChhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgMCwgYXVkaW9CdWZmZXJMaXN0LmJ1
ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSk7Ci0gICAgZWxzZQotICAgICAgICBtZW1jcHkoYXVkaW9C
dWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGEsIGF1ZGlvRGF0YSwgYXVkaW9CdWZmZXJMaXN0LmJ1
ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSk7Ci0KLSAgICBhdWRpb1NhbXBsZXNBdmFpbGFibGUobWVk
aWFUaW1lLCBhdWRpb0J1ZmZlckxpc3QsIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihuZXdEZXNj
cmlwdGlvbiksIG51bWJlck9mRnJhbWVzKTsKLX0KLQotdm9pZCBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCi17Ci0gICAgaWYgKG1fYXVkaW9UcmFjaykK
LSAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOwotfQotCi12b2lkIFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQotewotICAgIGlmIChtX2F1
ZGlvVHJhY2spCi0gICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0aGlzKTsKLX0KLQot
dm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRyYWNrKHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgdHJhY2spCi17Ci0gICAg
QVNTRVJUKCFtX2F1ZGlvVHJhY2spOwotICAgIEFTU0VSVCh0cmFjayk7Ci0KLSAgICBtX2F1ZGlv
VHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKLSAgICBub3RpZnlNdXRlZENoYW5nZSghbV9hdWRpb1Ry
YWNrKTsKLSAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCi0gICAgICAgIG1fYXVkaW9UcmFjay0+
QWRkU2luayh0aGlzKTsKLX0KLQotY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMoKSBjb25zdAotewot
ICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjplbXB0eUNhcGFiaWxp
dGllcygpOwotfQotCi1jb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAotewotICAgIHJldHVybiBtX2N1
cnJlbnRTZXR0aW5nczsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZmI2MDIyMDg1MTk3ZmYzOWE2ODU0NzAxZWZiMjBmYjllMGRkNGU0Mi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogICAgZGlzdHJpYnV0aW9uLgotICogMy4g
TmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmli
dXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20gdGhpcwotICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShM
SUJXRUJSVEMpCi0KLSNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKLSNpbmNsdWRlICJSZWFs
dGltZU1lZGlhU291cmNlLmgiCi0jaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+
Ci0jaW5jbHVkZSA8d2VicnRjL2FwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oPgotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLQotdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXRE
ZXNjcmlwdGlvbiAqQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzsKLQotY2xhc3MgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2Us
IHByaXZhdGUgd2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IGNyZWF0ZShydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7Ci0KLSAg
ICB2b2lkIHNldFNvdXJjZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJh
Y2tJbnRlcmZhY2U+JiYpOwotCi1wcml2YXRlOgotICAgIFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBT
dHJpbmcmJik7Ci0gICAgflJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpOwotCi0gICAgLy8g
d2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSBBUEkKLSAgICB2b2lkIE9uRGF0YShjb25z
dCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykgZmluYWw7Ci0KLSAg
ICAvLyBSZWFsdGltZU1lZGlhU291cmNlIEFQSQotICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRh
KCkgZmluYWw7Ci0gICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpICBmaW5hbDsKLQotICAgIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0
IGZpbmFsOwotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3Mo
KSBjb25zdCBmaW5hbDsKLQotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJl
bnRTZXR0aW5nczsKLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50
ZXJmYWNlPiBtX2F1ZGlvVHJhY2s7Ci0KLSAgICB1aW50NjRfdCBtX251bWJlck9mRnJhbWVzIHsg
MCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2Eu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQzZjk2YzZhZDllY2Y4YjQzMDNiZGFjMzhhM2U5MzcxYzQ1NmVlMDAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwCkBAIC0wLDAgKzEsMTAyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmgiCisKKyNpZiBVU0Uo
TElCV0VCUlRDKQorCisjaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1
ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlv
Rm9ybWF0LmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCisjaW5jbHVkZSAiV2Vi
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCIKKyNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9u
L01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgorCisjaW5jbHVkZSAiQ29yZU1lZGlhU29mdExpbmsu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlPiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1
ZGlvVHJhY2tJZCkKK3sKKyAgICBhdXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZUNvY29hOjpjcmVhdGUoV1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92ZShhdWRpb1RyYWNr
SWQpKTsKKyAgICBzb3VyY2UtPnN0YXJ0KCk7CisgICAgcmV0dXJuIHNvdXJjZTsKK30KKworUmVm
PFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hPiBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2VDb2NvYTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJ
bnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hKFdURk1v
dmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFja0lkKSkpOworfQorCitSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2Eo
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1Ry
YWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCisgICAgOiBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2VDb2NvYShXVEZNb3ZlKGF1ZGlvVHJhY2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpCit7
Cit9CisKKworc3RhdGljIGlubGluZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFt
RGVzY3JpcHRpb24oc2l6ZV90IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291bnQpCit7Cisg
ICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKKyAgICBGaWxsT3V0
QVNCREZvckxQQ00oc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIExpYldl
YlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxl
U2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzRmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0
Ojppc0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQpOwor
ICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7Cit9CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2E6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2Ft
cGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1i
ZXJPZkZyYW1lcykKK3sKKyAgICAvLyBXZSBtYXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0aCBl
bXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1wbGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBsZVJh
dGUgZXF1YWwgdG8gMTYwMDApIHdoZW4gc3RhcnRpbmcgdGhlIGNhbGwuCisgICAgLy8gRklYTUU6
IEZvciB0aGUgbW9tZW50IHdlIHNraXAgdGhlbSwgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgc29s
dXRpb24gYXQgbGlid2VicnRjIGxldmVsIHRvIG5vdCBiZSBjYWxsZWQgdW50aWwgZ2V0dGluZyBz
b21lIHJlYWwgZGF0YS4KKyAgICBpZiAoc2FtcGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJPZkNo
YW5uZWxzID09IDEpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChiaXRzUGVyU2FtcGxl
ID09IDE2KTsKKyAgICBBU1NFUlQobnVtYmVyT2ZDaGFubmVscyA9PSAxIHx8IG51bWJlck9mQ2hh
bm5lbHMgPT0gMik7CisgICAgQVNTRVJUKHNhbXBsZVJhdGUgPT0gNDgwMDApOworCisgICAgQ01U
aW1lIHN0YXJ0VGltZSA9IENNVGltZU1ha2UobV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7
CisgICAgYXV0byBtZWRpYVRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7CisgICAg
bV9udW1iZXJPZkZyYW1lcyArPSBudW1iZXJPZkZyYW1lczsKKworICAgIEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlwdGlvbiA9IHN0cmVhbURlc2NyaXB0aW9uKHNhbXBsZVJh
dGUsIG51bWJlck9mQ2hhbm5lbHMpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVl
ZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGNvcHkuCisgICAgLy8gSW5z
dGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZGlyZWN0bHkgcGFzcyBhdWRpb0RhdGEgcG9pbnRl
ci4KKyAgICBXZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVt
YmVyT2ZGcmFtZXMpIH07CisgICAgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRl
U2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMgKiBudW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1wbGUg
LyA4OworICAgIGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9IG51
bWJlck9mQ2hhbm5lbHM7CisKKyAgICBpZiAobXV0ZWQoKSkKKyAgICAgICAgbWVtc2V0KGF1ZGlv
QnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRhLCAwLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDAp
LT5tRGF0YUJ5dGVTaXplKTsKKyAgICBlbHNlCisgICAgICAgIG1lbWNweShhdWRpb0J1ZmZlckxp
c3QuYnVmZmVyKDApLT5tRGF0YSwgYXVkaW9EYXRhLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDAp
LT5tRGF0YUJ5dGVTaXplKTsKKworICAgIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUs
IGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9u
KSwgbnVtYmVyT2ZGcmFtZXMpOworfQorCit9CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kMDEwNDc1ZTVlY2EyZmZjOTE0MzAzNDcxYjY1ZmIxYTg5N2RhYmE3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykK
KworI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIgorCisjaW5jbHVkZSA8
Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+CisKK3R5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1
ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9ybWF0RGVzY3JpcHRpb25SZWY7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM7CisKK2Ns
YXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYT4gY3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKKworcHJpdmF0ZToKKyAgICBS
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CisKKyAgICAvLyB3ZWJydGM6OkF1
ZGlvVHJhY2tTaW5rSW50ZXJmYWNlIEFQSQorICAgIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIGF1
ZGlvRGF0YSwgaW50IGJpdHNQZXJTYW1wbGUsIGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVy
T2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzKSBmaW5hbDsKKworICAgIHVpbnQ2NF90
IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDkxMDFkYzQzNzkx
N2Q1MTBlNzRiZmM3NzUxYzdjNzBjN2RjMjJhNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIw
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5o
IgotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbi5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCi0jaW5jbHVkZSAiTGli
V2ViUlRDUHJvdmlkZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5l
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBsaWJ3ZWJydGNBdWRpb0Zvcm1hdChGbG9hdDY0
IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291bnQpCi17Ci0gICAgLy8gRklYTUU6IE1pY3Jv
cGhvbmVzIGNhbiBoYXZlIG1vcmUgdGhhbiB0d28gY2hhbm5lbHMuIEluIHN1Y2ggY2FzZSwgd2Ug
c2hvdWxkIGRvIHRoZSBtaXggZG93biBiYXNlZCBvbiBBdWRpb0NoYW5uZWxMYXlvdXRUYWcuCi0g
ICAgc2l6ZV90IGxpYldlYlJUQ0NoYW5uZWxDb3VudCA9IGNoYW5uZWxDb3VudCA+PSAyID8gMiA6
IGNoYW5uZWxDb3VudDsKLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9y
bWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUsIGxp
YldlYlJUQ0NoYW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExp
YldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNG
bG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBMaWJXZWJSVENBdWRpb0Zv
cm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0gICAgcmV0dXJuIHN0cmVhbUZvcm1hdDsKLX0KLQot
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2Uo
UmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQotICAgIDogbV9hdWRp
b1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkKLSAgICAsIG1fc2FtcGxlQ29udmVydGVyKEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRlKExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVS
YXRlICogMikpCi0gICAgLCBtX3NpbGVuY2VBdWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5jZSkKLXsKLSAgICBtX2F1ZGlvU291cmNlLT5hZGRP
YnNlcnZlcigqdGhpcyk7Ci0gICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwotfQotCi1ib29sIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZT4mJiBuZXdTb3VyY2UpCi17Ci0gICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2
ZXIoKnRoaXMpOwotICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Ci0gICAg
bV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwotCi0gICAgaW5pdGlhbGl6ZUNvbnZl
cnRlcigpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRlcigpCi17Ci0gICAgbV9tdXRlZCA9IG1fYXVkaW9T
b3VyY2UtPm11dGVkKCk7Ci0gICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxlZCgp
OwotICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2U6OnN0b3AoKQotewotICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOwot
ICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKLX0KLQotdm9pZCBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCi17Ci0gICAgbV9t
dXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7Ci0gICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgp
OwotfQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxlZENo
YW5nZWQoKQotewotICAgIG1fZW5hYmxlZCA9IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsKLSAg
ICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVkKCkKLXsKLSAgICBib29sIGlzU2lsZW5jZWQgPSBt
X211dGVkIHx8ICFtX2VuYWJsZWQ7Ci0gICAgbV9zYW1wbGVDb252ZXJ0ZXItPnNldE11dGVkKGlz
U2lsZW5jZWQpOwotICAgIGlmIChpc1NpbGVuY2VkICYmICFtX3NpbGVuY2VBdWRpb1RpbWVyLmlz
QWN0aXZlKCkpCi0gICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RhcnRSZXBlYXRpbmcoMV9z
KTsKLSAgICBpZiAoIWlzU2lsZW5jZWQgJiYgbV9zaWxlbmNlQXVkaW9UaW1lci5pc0FjdGl2ZSgp
KQotICAgICAgICBtX3NpbGVuY2VBdWRpb1RpbWVyLnN0b3AoKTsKLX0KLQotdm9pZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRTaWxlbmNlKCkKLXsKLSAgICBMaWJXZWJSVENQcm92
aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgc2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291
dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKLSAgICAgICAgc2l6ZV90
IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNh
bXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxz
KCk7Ci0KLSAgICAgICAgaWYgKCFidWZmZXJTaXplKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKLSAgICAgICAgbWVtc2V0KG1f
YXVkaW9CdWZmZXIuZGF0YSgpLCAwLCBidWZmZXJTaXplKTsKLSAgICAgICAgZm9yIChhdXRvIHNp
bmsgOiBtX3NpbmtzKQotICAgICAgICAgICAgc2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0
YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZD
aGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsKLSAgICB9KTsKLX0KLQotYm9vbCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1p
dCgpCi17Ci0gICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1f
aW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAgYXV0byByZWFkQXVkaW9E
dXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVS
YXRlKCk7Ci0KLSAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVy
YXRpb24pOwotICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+IHJlYWRBdWRpb0R1cmF0
aW9uICsgMC41OwotfQotCi1ib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aXNSZWFj
aGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGltaXQoKQotewotICAgIGF1dG8gd3JpdHRlbkF1ZGlv
RHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpOwotICAgIGF1dG8gcmVhZEF1ZGlvRHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1fb3V0
cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotCi0gICAgQVNTRVJUKHdyaXR0ZW5B
dWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1cmF0aW9uKTsKLSAgICByZXR1cm4gd3JpdHRlbkF1
ZGlvRHVyYXRpb24gPCByZWFkQXVkaW9EdXJhdGlvbiArIDAuMTsKLX0KLQotYm9vbCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U6Omhhc0J1ZmZlcmVkRW5nb3VoRGF0YSgpCi17Ci0gICAgYXV0
byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVh
ZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBB
U1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOwotICAgIHJl
dHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbiArIDAuMDE7Ci19
Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFi
bGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwg
Y29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgc3RyZWFtRGVzY3JpcHRpb24sIHNpemVfdCBz
YW1wbGVDb3VudCkKLXsKLSAgICBpZiAobV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uICE9IHN0cmVh
bURlc2NyaXB0aW9uKSB7Ci0gICAgICAgIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbiA9IHRvQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uKHN0cmVhbURlc2NyaXB0aW9uKTsKLSAgICAgICAgYXV0byBz
dGF0dXMgID0gbV9zYW1wbGVDb252ZXJ0ZXItPnNldElucHV0Rm9ybWF0KG1faW5wdXRTdHJlYW1E
ZXNjcmlwdGlvbik7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsKLQot
ICAgICAgICBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uID0gbGlid2VicnRjQXVkaW9Gb3JtYXQo
TGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUsIHN0cmVhbURlc2NyaXB0aW9uLm51bWJl
ck9mQ2hhbm5lbHMoKSk7Ci0gICAgICAgIHN0YXR1cyA9IG1fc2FtcGxlQ29udmVydGVyLT5zZXRP
dXRwdXRGb3JtYXQobV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigp
KTsKLSAgICAgICAgQVNTRVJUKCFzdGF0dXMpOwotICAgIH0KLQotICAgIC8vIExldCdzIHNraXAg
cHVzaGluZyBzYW1wbGVzIGlmIHdlIGFyZSB0b28gc2xvdyBwdWxsaW5nIHRoZW0uCi0gICAgaWYg
KG1fc2tpcHBpbmdBdWRpb0RhdGEpIHsKLSAgICAgICAgaWYgKCFpc1JlYWNoaW5nQnVmZmVyZWRB
dWRpb0RhdGFMb3dMaW1pdCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3NraXBw
aW5nQXVkaW9EYXRhID0gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChpc1JlYWNoaW5nQnVmZmVyZWRB
dWRpb0RhdGFIaWdoTGltaXQoKSkgewotICAgICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gdHJ1
ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIElmIHdlIGNoYW5nZSB0aGUgYXVk
aW8gdHJhY2sgb3IgaXRzIHNhbXBsZSByYXRlIGNoYW5nZXMsIHRoZSB0aW1lc3RhbXAgYmFzZWQg
b24gbV93cml0ZUNvdW50IG1heSBiZSB3cm9uZy4KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVw
ZGF0ZSBtX3dyaXRlQ291bnQgdG8gYmUgdmFsaWQgYWNjb3JkaW5nIHRoZSBuZXcgc2FtcGxlUmF0
ZS4KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVzaFNhbXBsZXMoTWVkaWFUaW1lKG1fd3JpdGVD
b3VudCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1w
bGVSYXRlKCkpKSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7Ci0gICAgbV93cml0ZUNvdW50ICs9
IHNhbXBsZUNvdW50OwotCi0gICAgaWYgKCFoYXNCdWZmZXJlZEVuZ291aERhdGEoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGlu
Z1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIHByb3Rl
Y3RlZFRoaXMtPnB1bGxBdWRpb0RhdGEoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2U6OnB1bGxBdWRpb0RhdGEoKQotewotICAgIC8vIGxpYndlYnJ0YyBl
eHBlY3RzIDEwIG1zIGNodW5rcy4KLSAgICBzaXplX3QgY2h1bmtTYW1wbGVDb3VudCA9IG1fb3V0
cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpIC8gMTAwOwotICAgIHNpemVfdCBidWZm
ZXJTaXplID0gY2h1bmtTYW1wbGVDb3VudCAqIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVC
eXRlU2l6ZSAqIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOwot
ICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKLQotICAgIEF1ZGlvQnVmZmVyTGlz
dCBidWZmZXJMaXN0OwotICAgIGJ1ZmZlckxpc3QubU51bWJlckJ1ZmZlcnMgPSAxOwotICAgIGJ1
ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7Ci0gICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5t
RGF0YUJ5dGVTaXplID0gYnVmZmVyU2l6ZTsKLSAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1E
YXRhID0gbV9hdWRpb0J1ZmZlci5kYXRhKCk7Ci0KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVs
bEF2YWxhaWJsZVNhbXBsZXNBc0NodW5rcyhidWZmZXJMaXN0LCBjaHVua1NhbXBsZUNvdW50LCBt
X3JlYWRDb3VudCwgW3RoaXMsIGNodW5rU2FtcGxlQ291bnRdIHsKLSAgICAgICAgbV9yZWFkQ291
bnQgKz0gY2h1bmtTYW1wbGVDb3VudDsKLSAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3Npbmtz
KQotICAgICAgICAgICAgc2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJS
VENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1w
bGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBj
aHVua1NhbXBsZUNvdW50KTsKLSAgICB9KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGViYzgwNGU0OTU4NTMw
YmU2NjAyZmZkNjFhMmI1M2M3ZWI2ZTU3NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
LSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNv
dXJjZS5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgotI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3ZWJydGMv
YXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotY2xhc3MgQXVkaW9UcmFja0ludGVyZmFj
ZTsKLWNsYXNzIEF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlOwotfQotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSBmaW5hbCA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+LCBwdWJsaWMg
d2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZTo6T2JzZXJ2ZXIgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlv
U291cmNlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkpOyB9Ci0gICAgflJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZSgpIHsgc3RvcCgpOyB9Ci0KLSAgICB2b2lkIHN0b3AoKTsKLQotICAgIGJvb2wgc2V0U291
cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7Ci0gICAgTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Tb3VyY2UuZ2V0KCk7IH0K
LQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVm
PE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBBZGRTaW5r
KHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspIHsgbV9zaW5rcy5hcHBlbmQo
c2luayk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgUmVtb3ZlU2luayh3ZWJydGM6OkF1ZGlvVHJhY2tT
aW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lua3MucmVtb3ZlRmlyc3Qoc2luayk7IH0KLQotICAg
IGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7IHJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQot
ICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmluYWwgeyBkZXJlZigpOyByZXR1cm4gcmVmQ291bnQo
KTsgfQotICAgIFNvdXJjZVN0YXRlIHN0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4ga0xpdmU7
IH0KLSAgICBib29sIHJlbW90ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dm9pZCBSZWdpc3Rlck9ic2VydmVyKHdlYnJ0Yzo6T2JzZXJ2ZXJJbnRlcmZhY2UqKSBmaW5hbCB7
IH0KLSAgICB2b2lkIFVucmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNl
KikgZmluYWwgeyB9Ci0KLSAgICB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgpOwotICAgIHZvaWQg
c291cmNlRW5hYmxlZENoYW5nZWQoKTsKLSAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShj
b25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwotCi0gICAgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRB
dWRpb0RhdGFIaWdoTGltaXQoKTsKLSAgICBib29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0
YUxvd0xpbWl0KCk7Ci0gICAgYm9vbCBoYXNCdWZmZXJlZEVuZ291aERhdGEoKTsKLQotICAgIC8v
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciBBUEkKLSAgICB2b2lkIHRyYWNrTXV0
ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyBzb3VyY2VNdXRlZENo
YW5nZWQoKTsgfQotICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlRW5hYmxlZENoYW5nZWQoKTsgfQotICAgIHZvaWQgYXVk
aW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgY29uc3QgTWVkaWFU
aW1lJiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KSBmaW5h
bCB7IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBz
YW1wbGVDb3VudCk7IH0KLSAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUmKSBmaW5hbCB7IH0KLSAgICB2b2lkIHRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlJikgZmluYWwgeyB9Ci0KLSAgICB2b2lkIHB1bGxBdWRpb0RhdGEoKTsKLQot
ICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwotICAgIHZvaWQgaGFuZGxlTXV0ZWRJZk5l
ZWRlZCgpOwotICAgIHZvaWQgc2VuZFNpbGVuY2UoKTsKLQotICAgIFZlY3Rvcjx3ZWJydGM6OkF1
ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9zaW5rczsKLSAgICBSZWY8TWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7Ci0gICAgUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4g
bV9zYW1wbGVDb252ZXJ0ZXI7Ci0gICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG1faW5wdXRT
dHJlYW1EZXNjcmlwdGlvbjsKLSAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9vdXRwdXRT
dHJlYW1EZXNjcmlwdGlvbjsKLQotICAgIFZlY3Rvcjx1aW50OF90PiBtX2F1ZGlvQnVmZmVyOwot
ICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsgMCB9OwotICAgIHVpbnQ2NF90IG1fd3JpdGVDb3Vu
dCB7IDAgfTsKLSAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9lbmFibGVk
IHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9za2lwcGluZ0F1ZGlvRGF0YSB7IGZhbHNlIH07Ci0gICAg
VGltZXIgbV9zaWxlbmNlQXVkaW9UaW1lcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2Eu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTJiODhhZjgwZjQ3ZGE3YmEx
ZDRiYzE4NGM1YjBlOThjMjA0ZWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29h
LmNwcApAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8g
YmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmgiCisKKyNpZiBVU0Uo
TElCV0VCUlRDKQorCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5j
bHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRl
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uIGxpYndlYnJ0Y0F1ZGlvRm9ybWF0KEZsb2F0NjQgc2FtcGxlUmF0ZSwg
c2l6ZV90IGNoYW5uZWxDb3VudCkKK3sKKyAgICAvLyBGSVhNRTogTWljcm9waG9uZXMgY2FuIGhh
dmUgbW9yZSB0aGFuIHR3byBjaGFubmVscy4gSW4gc3VjaCBjYXNlLCB3ZSBzaG91bGQgZG8gdGhl
IG1peCBkb3duIGJhc2VkIG9uIEF1ZGlvQ2hhbm5lbExheW91dFRhZy4KKyAgICBzaXplX3QgbGli
V2ViUlRDQ2hhbm5lbENvdW50ID0gY2hhbm5lbENvdW50ID49IDIgPyAyIDogY2hhbm5lbENvdW50
OworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgRmls
bE91dEFTQkRGb3JMUENNKHN0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSwgbGliV2ViUlRDQ2hhbm5l
bENvdW50LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9G
b3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0Zsb2F0LCBMaWJXZWJS
VENBdWRpb0Zvcm1hdDo6aXNCaWdFbmRpYW4sIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc05vbklu
dGVybGVhdmVkKTsKKyAgICByZXR1cm4gc3RyZWFtRm9ybWF0OworfQorCitSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoUmVm
PE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQorICAgIDogUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlKFdURk1vdmUoYXVkaW9Tb3VyY2UpKQorICAgICwgbV9zYW1wbGVD
b252ZXJ0ZXIoQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoTGliV2ViUlRDQXVkaW9Gb3Jt
YXQ6OnNhbXBsZVJhdGUgKiAyKSkKK3sKK30KKworUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZT4gUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpjcmVhdGUoUmVmPE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQoreworICAgIHJldHVybiBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYTo6Y3JlYXRlKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKK30KKwor
dm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6aGFuZGxlTXV0ZWRJZk5lZWRl
ZCgpCit7CisgICAgYm9vbCBpc1NpbGVuY2VkID0gbV9tdXRlZCB8fCAhbV9lbmFibGVkOworICAg
IG1fc2FtcGxlQ29udmVydGVyLT5zZXRNdXRlZChpc1NpbGVuY2VkKTsKKworICAgIFJlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpoYW5kbGVNdXRlZElmTmVlZGVkKCk7Cit9CisKK3Zv
aWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OnNlbmRTaWxlbmNlKCkKK3sKKyAg
ICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2l6ZV90IGNodW5rU2Ft
cGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsK
KyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNvdW50ICogTGliV2ViUlRD
QXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5u
dW1iZXJPZkNoYW5uZWxzKCk7CisKKyAgICAgICAgaWYgKCFidWZmZXJTaXplKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKKyAg
ICAgICAgbWVtc2V0KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCAwLCBidWZmZXJTaXplKTsKKyAgICAg
ICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQorICAgICAgICAgICAgc2luay0+T25EYXRhKG1f
YXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgbV9v
dXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVzY3Jp
cHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsKKyAgICB9KTsKK30K
KworYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6aXNSZWFjaGluZ0J1ZmZl
cmVkQXVkaW9EYXRhSGlnaExpbWl0KCkKK3sKKyAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1cmF0aW9u
ID0gbV93cml0ZUNvdW50IC8gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsK
KyAgICBhdXRvIHJlYWRBdWRpb0R1cmF0aW9uID0gbV9yZWFkQ291bnQgLyBtX291dHB1dFN0cmVh
bURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKworICAgIEFTU0VSVCh3cml0dGVuQXVkaW9EdXJh
dGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbik7CisgICAgcmV0dXJuIHdyaXR0ZW5BdWRpb0R1cmF0
aW9uID4gcmVhZEF1ZGlvRHVyYXRpb24gKyAwLjU7Cit9CisKK2Jvb2wgUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlQ29jb2E6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCkK
K3sKKyAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9pbnB1
dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKyAgICBhdXRvIHJlYWRBdWRpb0R1cmF0
aW9uID0gbV9yZWFkQ291bnQgLyBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUo
KTsKKworICAgIEFTU0VSVCh3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlv
bik7CisgICAgcmV0dXJuIHdyaXR0ZW5BdWRpb0R1cmF0aW9uIDwgcmVhZEF1ZGlvRHVyYXRpb24g
KyAwLjE7Cit9CisKK2Jvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6Omhhc0J1
ZmZlcmVkRW5vdWdoRGF0YSgpCit7CisgICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1f
d3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisgICAg
YXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCk7CisKKyAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24g
Pj0gcmVhZEF1ZGlvRHVyYXRpb24pOworICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+
PSByZWFkQXVkaW9EdXJhdGlvbiArIDAuMDE7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBj
b25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiBzdHJlYW1EZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KQoreworICAgIGlm
IChtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24gIT0gc3RyZWFtRGVzY3JpcHRpb24pIHsKKyAgICAg
ICAgbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uID0gdG9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24o
c3RyZWFtRGVzY3JpcHRpb24pOworICAgICAgICBhdXRvIHN0YXR1cyAgPSBtX3NhbXBsZUNvbnZl
cnRlci0+c2V0SW5wdXRGb3JtYXQobV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uKTsKKyAgICAgICAg
QVNTRVJUX1VOVVNFRChzdGF0dXMsICFzdGF0dXMpOworCisgICAgICAgIG1fb3V0cHV0U3RyZWFt
RGVzY3JpcHRpb24gPSBsaWJ3ZWJydGNBdWRpb0Zvcm1hdChMaWJXZWJSVENBdWRpb0Zvcm1hdDo6
c2FtcGxlUmF0ZSwgc3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpKTsKKyAgICAg
ICAgc3RhdHVzID0gbV9zYW1wbGVDb252ZXJ0ZXItPnNldE91dHB1dEZvcm1hdChtX291dHB1dFN0
cmVhbURlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCkpOworICAgICAgICBBU1NFUlQoIXN0
YXR1cyk7CisgICAgfQorCisgICAgLy8gTGV0J3Mgc2tpcCBwdXNoaW5nIHNhbXBsZXMgaWYgd2Ug
YXJlIHRvbyBzbG93IHB1bGxpbmcgdGhlbS4KKyAgICBpZiAobV9za2lwcGluZ0F1ZGlvRGF0YSkg
eworICAgICAgICBpZiAoIWlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc2tpcHBpbmdBdWRpb0RhdGEgPSBmYWxzZTsK
KyAgICB9IGVsc2UgaWYgKGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpKSB7
CisgICAgICAgIG1fc2tpcHBpbmdBdWRpb0RhdGEgPSB0cnVlOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgLy8gSWYgd2UgY2hhbmdlIHRoZSBhdWRpbyB0cmFjayBvciBpdHMgc2FtcGxl
IHJhdGUgY2hhbmdlcywgdGhlIHRpbWVzdGFtcCBiYXNlZCBvbiBtX3dyaXRlQ291bnQgbWF5IGJl
IHdyb25nLgorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXBkYXRlIG1fd3JpdGVDb3VudCB0byBi
ZSB2YWxpZCBhY2NvcmRpbmcgdGhlIG5ldyBzYW1wbGVSYXRlLgorICAgIG1fc2FtcGxlQ29udmVy
dGVyLT5wdXNoU2FtcGxlcyhNZWRpYVRpbWUobV93cml0ZUNvdW50LCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4obV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSkpLCBhdWRpb0RhdGEs
IHNhbXBsZUNvdW50KTsKKyAgICBtX3dyaXRlQ291bnQgKz0gc2FtcGxlQ291bnQ7CisKKyAgICBp
ZiAoIWhhc0J1ZmZlcmVkRW5nb3VoRGF0YSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBMaWJX
ZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+cHVsbEF1ZGlvRGF0
YSgpOworICAgIH0pOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29h
OjpwdWxsQXVkaW9EYXRhKCkKK3sKKyAgICAvLyBsaWJ3ZWJydGMgZXhwZWN0cyAxMCBtcyBjaHVu
a3MuCisgICAgc2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0
aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKKyAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IGNodW5rU2Ft
cGxlQ291bnQgKiBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlQnl0ZVNpemUgKiBtX291dHB1
dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKTsKKyAgICBtX2F1ZGlvQnVmZmVy
Lmdyb3coYnVmZmVyU2l6ZSk7CisKKyAgICBBdWRpb0J1ZmZlckxpc3QgYnVmZmVyTGlzdDsKKyAg
ICBidWZmZXJMaXN0Lm1OdW1iZXJCdWZmZXJzID0gMTsKKyAgICBidWZmZXJMaXN0Lm1CdWZmZXJz
WzBdLm1OdW1iZXJDaGFubmVscyA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZD
aGFubmVscygpOworICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IGJ1
ZmZlclNpemU7CisgICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YSA9IG1fYXVkaW9CdWZm
ZXIuZGF0YSgpOworCisgICAgbV9zYW1wbGVDb252ZXJ0ZXItPnB1bGxBdmFsYWlibGVTYW1wbGVz
QXNDaHVua3MoYnVmZmVyTGlzdCwgY2h1bmtTYW1wbGVDb3VudCwgbV9yZWFkQ291bnQsIFt0aGlz
LCBjaHVua1NhbXBsZUNvdW50XSB7CisgICAgICAgIG1fcmVhZENvdW50ICs9IGNodW5rU2FtcGxl
Q291bnQ7CisgICAgICAgIGZvciAoYXV0byBzaW5rIDogbV9zaW5rcykKKyAgICAgICAgICAgIHNp
bmstPk9uRGF0YShtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNh
bXBsZVNpemUsIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpLCBtX291dHB1
dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSwgY2h1bmtTYW1wbGVDb3VudCk7
CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShM
SUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2Nv
YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVhNzA0MzAyMjkyZmIxMDc4MTU5YTJhOWQxNTAxODI4ZjgxMjA2OTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaApAQCAtMCwwICsxLDcwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRl
ICJBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCIKKyNpbmNsdWRlICJSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2UuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CitjbGFzcyBBdWRpb1RyYWNrSW50ZXJm
YWNlOworY2xhc3MgQXVkaW9UcmFja1NpbmtJbnRlcmZhY2U7Cit9CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EgZmluYWwgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29j
b2E+LCBwdWJsaWMgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hPiBjcmVhdGUoUmVmPE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hKFdURk1vdmUoYXVkaW9Tb3VyY2Up
KSk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOworCisgICAgdm9pZCBhdWRp
b1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0Rh
dGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKKworICAg
IGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCkgZmluYWw7CisgICAg
Ym9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpIGZpbmFsOworICAgIGJv
b2wgaGFzQnVmZmVyZWRFbm91Z2hEYXRhKCkgZmluYWw7CisKKyAgICB2b2lkIHB1bGxBdWRpb0Rh
dGEoKSBmaW5hbDsKKworICAgIHZvaWQgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpIGZpbmFsOworICAg
IHZvaWQgc2VuZFNpbGVuY2UoKSBmaW5hbDsKKworICAgIFJlZjxBdWRpb1NhbXBsZURhdGFTb3Vy
Y2U+IG1fc2FtcGxlQ29udmVydGVyOworICAgIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX2lu
cHV0U3RyZWFtRGVzY3JpcHRpb247CisgICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG1fb3V0
cHV0U3RyZWFtRGVzY3JpcHRpb247CisKKyAgICBWZWN0b3I8dWludDhfdD4gbV9hdWRpb0J1ZmZl
cjsKKyAgICB1aW50NjRfdCBtX3JlYWRDb3VudCB7IDAgfTsKKyAgICB1aW50NjRfdCBtX3dyaXRl
Q291bnQgeyAwIH07CisgICAgYm9vbCBtX3NraXBwaW5nQXVkaW9EYXRhIHsgZmFsc2UgfTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323681</attachid>
            <date>2017-10-13 09:28:26 -0700</date>
            <delta_ts>2017-10-13 09:35:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177928-20171013182825.patch</filename>
            <type>text/plain</type>
            <size>70692</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkzODIyMzA3YzA4MTkz
ODNhYjVjNDliNDQxNTFlNWFkODFkNWFmMy4uODg2OTExNjJiZWQ0YTcyYjE3NTg2NzY1ODI3Mzll
N2JmOTNjZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTEwLTEyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlcyBhbmQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlcyBw
b3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciB0aGUgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGFuZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgY2xhc3NlcywKKyAgICAgICAgbW92ZSB0aGUgbWFjIHNwZWNp
ZmljIGNvZGUgdG8gYSBkaWZmZXJlbnQgY2xhc3MuIFRoaXMgd2F5IHdlIGNhbiB1c2UgdGhlbSBm
cm9tCisgICAgICAgIG90aGVyIHBvcnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgd2UgYXJl
IG5vdCBhZGRpbmcgbmV3IGZ1bmN0aW9uYWxpdHkganVzdCByZWZhY3RvcmluZy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmguIEp1c3QgdGhlIHBvcnQg
YWdub3N0aWMgcGFydHMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaC4gRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAuIERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmguIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6IEFkZGVkLCBpdCBhZGRzIENv
Y29hIGNvZGUgcGFydHMgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhpcyBm
dW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUgdG8g
YXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBBZGRl
ZCBDb2NvYSBjb2RlIGZyb20gb3JpZ2luYWwgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6
IEFkZGVkIENvY29hIGNvZGUgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhp
cyBmdW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUg
dG8gYXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBB
ZGRlZCBDb2NvYSBjb2RlIGZyb20gdGhlIG9yaWdpbmFsIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaC4KKwogMjAxNy0x
MC0wNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbV2luQ2Fpcm9dIEZpeCBidWlsZCBhZnRlciBCdWcgMTY3OTU2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDdmMjJlNTE2Zjk3YTI5N2RkNTQ4ZTc1Y2VlMDg3N2ExYzU2MjVmMWEuLmE4NDQxYmY0
Y2IyYmZhNTNhNWMyMjY4MDc3ZjE2NzcxMjAzNWMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yNTQ4LDkgKzI1NDgsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAKICAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcAogICAg
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3Bw
CisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCiAgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKICAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCisgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAogCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmY4Njg4YmMzZDlkNmU0MWU4MmRlNjY2OGIyYjlmYzViYjA4ZDM3Yy4uMjk5Yjc2NmM2
MTZjMGQzZTFiYjhlYWRlYTY3NjAxYzdiYjA0NDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5Niw4ICsxNjk2LDEyIEBA
CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEw
NDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTEw
M0FBQjFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovOyB9Owog
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
ODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggKi87IH07
CisJCTQxMTAzQUFCMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovOyB9OworCQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE4MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovOyB9OwogCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMDMg
LyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi87IH07CiAJCTQxMTAzQUFFMUUzOTc5MTAwMDc2OUYw
MyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQUExRTM5NzkwQTAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi87IH07CisJCTQxMTAzQUFEMUUzOTc5MTAw
MDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTkxRTM5NzkwQTAwNzY5
RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggKi87IH07CisJCTQxMTAz
QUFFMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
QTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3Bw
ICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2ViQ29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOUIx
QTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTQxMjMwOTEz
MTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGODIxNjI5OTAyOUY0RkI1MDEw
MDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTI3RDUzNzBGOEFB
QjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0
YXRlLmNwcCAqLzsgfTsKQEAgLTk0NzIsOCArOTQ3NiwxMiBAQAogCQk0MTBCN0U3MTEwNDVGQUIw
MDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMTAzQUE4MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE4MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBOTFFMzk3OTBBMDA3
NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIz
MjgwMEI5M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMyODAwQjk1NjcyIC8qIFJlYWRhYmxl
U3RyZWFtQllPQlJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtQllPQlJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0OTcs
NiArMTY1MDUsOCBAQAogCQkJCTA3RkZERTY2MTgxQUVENDIwMDcyRDQwOSAvKiBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZS5jcHAgKi8sCiAJCQkJMDdGRkRFNjcxODFBRUQ0MjAwNzJENDA5IC8qIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggKi8sCiAJCQkJNUVCQjg5MzgxQzc3QkRBNDAwQzY1RDQx
IC8qIFBlZXJNZWRpYURlc2NyaXB0aW9uLmggKi8sCisJCQkJNDExMDNBQUExRTM5NzkwQTAwNzY5
RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi8sCisJCQkJNDExMDNBQTkx
RTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oICovLAogCQkJ
CTRBNEY2NTZCMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLywK
IAkJCQk0QTRGNjU2QzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oICov
LAogCQkJCTRBNEY2NTZEMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzLmggKi8sCkBAIC0xNjUwNiw2ICsxNjUxNiw4IEBACiAJCQkJNEE0RjY1NkYxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovLAogCQkJCTJF
QzQxREUyMUMwNDEwQTMwMEQyOTRGRSAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuY3BwICovLAogCQkJCTA3QzFDMEU0MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLywKKwkJCQk0MTEwM0FBNzFFMzk3
OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCAqLywKKwkJCQk0
MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgg
Ki8sCiAJCQkJMzEzNTkxMEMxRTdERENCNjAwRjMwNjMwIC8qIFJUQ0J1bmRsZVBvbGljeS5oICov
LAogCQkJCTA3MjIxQkEyMTdDRjBBRDQwMDg0OEU1MSAvKiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCAqLywKIAkJCQkwNzIyMUJBMzE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50LmggKi8sCkBAIC0xNjU1NCwxNCArMTY1NjYsMTQgQEAKIAkJCQkwNzQ0RUNFQzFF
MEM0QUU1MDAwRDA5NDQgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJ
MDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgg
Ki8sCiAJCQkJMDdFRTc2RUUxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tICovLAotCQkJCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwICovLAotCQkJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAv
KiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCAqLywKKwkJCQk0MTEwM0FBQTFFMzk3OTBB
MDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwICovLAorCQkJ
CTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5oICovLAogCQkJCTVDREQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2UuY3BwICovLAogCQkJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLywKIAkJCQk0QTBGRkFBMzFBQUY1RUY2MDA2
MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgKi8sCiAJCQkJNEEwRkZB
QTQxQUFGNUVGNjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCAqLywK
LQkJCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcCAqLywKLQkJCQk0MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggKi8sCisJCQkJNDExMDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCAqLywKKwkJCQk0MTEwM0FBODFFMzk3
OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCAqLywKIAkJ
CQk1Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmNwcCAqLywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8sCkBAIC0yOTYxNCw2ICsyOTYyNiw3IEBACiAJ
CQkJNDEyOUM5QUIxRjU5QzU3MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAzQzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFs
eXNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExMDNBQUQxRTM5NzkxMDAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDExMDNBQUQx
RTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8q
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRB
MEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NjIxLDYgKzI5NjM0LDcgQEAKIAkJCQk0QTRGNjU3NDFBQTk5N0Yx
MDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBQzFFMzk3OTEwMDA3
NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQjk1MjI0MUY1OEE1OEYwMDkzMURDMiAvKiBS
ZWNvcmRpbmdTd2l6emxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2OEU4MEMyMjZF
MzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1ODE3NUQ0MTRD
MDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1ODIsNiAr
MzM1OTYsNyBAQAogCQkJCTQxMjlDOThBMUY1ODdGRUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVh
bVNpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwM0IxMkIwMjY3NjAwQzFBMzU5IC8q
IFJlYWx0aW1lQW5hbHlzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMDNBQUUxRTM5Nzkx
MDAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTEwM0FBRTFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzM0UxRTQzMjREQzAwNjIx
RTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0QTRGNjU3MDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0QTBGRkFBMTFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNTg5LDYgKzMzNjA0LDcgQEAK
IAkJCQk0QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQzQxREU0MUMwNDEwQTMwMEQyOTRGRSAvKiBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDExMDNBQUIxRTM5NzkxMDAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEwM0FBQjFFMzk3OTEwMDA3NjlGMTQgLyog
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDgzM0QxRTQzMjREOTAwNjIxRTkyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFu
Z2xlU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBQjQxODExM0UzNTZFODAwRDhBQUYz
IC8qIFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MWFiM2Q3NjgzYjNiOGZmYzUwMmJmMzQ2NTI0Nzk3MzVj
MjFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRp
b0Zvcm1hdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKKyAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQoreworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOworfQorCitSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1f
YXVkaW9UcmFjaykKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOworfQorCit2
b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQorewor
ICAgIGlmIChtX2F1ZGlvVHJhY2spCisgICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0
aGlzKTsKK30KKwordm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRy
YWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgdHJh
Y2spCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOworICAgIEFTU0VSVCh0cmFjayk7CisK
KyAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAgICBub3RpZnlNdXRlZENoYW5n
ZSghbV9hdWRpb1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCisgICAgICAgIG1f
YXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMo
KSBjb25zdAoreworICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpl
bXB0eUNhcGFiaWxpdGllcygpOworfQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAoreworICAg
IHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM3NmVh
ODQwYjMzMmY4MTU0ZTZmNjBhOGM0MzE2Yjg2ODlkOWQ0YgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldF
QlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlLCBwcml2YXRlIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYp
OworCisgICAgdm9pZCBzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmKTsKKworcHJvdGVjdGVkOgorICAgIH5SZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UoKTsKKworcHJpdmF0ZToKKyAgICBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwg
U3RyaW5nJiYpOworCisgICAgLy8gd2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSBBUEkK
KyAgICB2aXJ0dWFsIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIC8qIGF1ZGlvRGF0YSAqLywgaW50
IC8qIGJpdHNQZXJTYW1wbGUgKi8sIGludCAvKiBzYW1wbGVSYXRlICovLCBzaXplX3QgLyogbnVt
YmVyT2ZDaGFubmVscyAqLywgc2l6ZV90IC8qIG51bWJlck9mRnJhbWVzICovKSB7IH07CisKKyAg
ICAvLyBSZWFsdGltZU1lZGlhU291cmNlIEFQSQorICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRh
KCkgZmluYWw7CisgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpICBmaW5hbDsKKworICAgIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0
IGZpbmFsOworICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3Mo
KSBjb25zdCBmaW5hbDsKKworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJl
bnRTZXR0aW5nczsKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50
ZXJmYWNlPiBtX2F1ZGlvVHJhY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmYzYTViZWI2ZjVjY2MwMTM2OTRlMDkxNDAyZjI3ZjI4MjBmN2ZiOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCIKKworI2lmIFVTRShMSUJXRUJS
VEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRpb0Zvcm1hdC5oIgorI2luY2x1ZGUgIkxpYldl
YlJUQ1Byb3ZpZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQorICAgIDogbV9hdWRpb1NvdXJjZShXVEZNb3Zl
KGF1ZGlvU291cmNlKSkKKyAgICAsIG1fc2lsZW5jZUF1ZGlvVGltZXIoKnRoaXMsICZSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRTaWxlbmNlKQoreworICAgIG1fYXVkaW9Tb3VyY2Ut
PmFkZE9ic2VydmVyKCp0aGlzKTsKKyAgICBpbml0aWFsaXplQ29udmVydGVyKCk7Cit9CisKK2Jv
b2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZXRTb3VyY2UoUmVmPE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlPiYmIG5ld1NvdXJjZSkKK3sKKyAgICBtX2F1ZGlvU291cmNlLT5yZW1vdmVP
YnNlcnZlcigqdGhpcyk7CisgICAgbV9hdWRpb1NvdXJjZSA9IFdURk1vdmUobmV3U291cmNlKTsK
KyAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7CisKKyAgICBpbml0aWFsaXpl
Q29udmVydGVyKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlOjppbml0aWFsaXplQ29udmVydGVyKCkKK3sKKyAgICBtX211dGVkID0gbV9h
dWRpb1NvdXJjZS0+bXV0ZWQoKTsKKyAgICBtX2VuYWJsZWQgPSBtX2F1ZGlvU291cmNlLT5lbmFi
bGVkKCk7CisgICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOworfQorCit2b2lkIFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZTo6c3RvcCgpCit7CisgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdG9w
KCk7CisgICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOworfQorCit2b2lk
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlTXV0ZWRDaGFuZ2VkKCkKK3sKKyAg
ICBtX211dGVkID0gbV9hdWRpb1NvdXJjZS0+bXV0ZWQoKTsKKyAgICBoYW5kbGVNdXRlZElmTmVl
ZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzb3VyY2VFbmFi
bGVkQ2hhbmdlZCgpCit7CisgICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxlZCgp
OworICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2U6OmhhbmRsZU11dGVkSWZOZWVkZWQoKQoreworICAgIGJvb2wgaXNTaWxlbmNl
ZCA9IG1fbXV0ZWQgfHwgIW1fZW5hYmxlZDsKKyAgICBpZiAoaXNTaWxlbmNlZCAmJiAhbV9zaWxl
bmNlQXVkaW9UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3NpbGVuY2VBdWRpb1RpbWVyLnN0
YXJ0UmVwZWF0aW5nKDFfcyk7CisgICAgaWYgKCFpc1NpbGVuY2VkICYmIG1fc2lsZW5jZUF1ZGlv
VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdG9wKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyZTk4MTdmMWNmMjQ0
NGMzMzdkNTgyODEwMDkyZWJiYWI4YmI5ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApA
QCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
KyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTGli
V2ViUlRDTWFjcm9zLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKKyNp
bmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvbWVkaWFzdHJlYW1pbnRlcmZh
Y2UuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IHdlYnJ0YyB7CitjbGFzcyBBdWRpb1RyYWNrSW50ZXJmYWNlOworY2xhc3MgQXVkaW9UcmFja1Np
bmtJbnRlcmZhY2U7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZT4sIHB1YmxpYyB3ZWJydGM6OkF1ZGlvU291cmNlSW50ZXJmYWNl
LCBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+IGNyZWF0ZShSZWY8TWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgYXVkaW9Tb3VyY2UpOworCisgICAgflJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZSgpIHsgc3RvcCgpOyB9CisKKyAgICB2b2lkIHN0b3AoKTsKKworICAg
IGJvb2wgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7CisgICAgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Tb3Vy
Y2UuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKKworICAgIHZpcnR1YWwg
dm9pZCBBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspIHsgbV9z
aW5rcy5hcHBlbmQoc2luayk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgUmVtb3ZlU2luayh3ZWJydGM6
OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lua3MucmVtb3ZlRmlyc3Qoc2lu
ayk7IH0KKworICAgIGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7IHJlZigpOyByZXR1cm4gcmVm
Q291bnQoKTsgfQorICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmluYWwgeyBkZXJlZigpOyByZXR1
cm4gcmVmQ291bnQoKTsgfQorICAgIFNvdXJjZVN0YXRlIHN0YXRlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4ga0xpdmU7IH0KKyAgICBib29sIHJlbW90ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdm9pZCBSZWdpc3Rlck9ic2VydmVyKHdlYnJ0Yzo6T2JzZXJ2ZXJJbnRlcmZh
Y2UqKSBmaW5hbCB7IH0KKyAgICB2b2lkIFVucmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2Vy
dmVySW50ZXJmYWNlKikgZmluYWwgeyB9CisKKyAgICB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgp
OworICAgIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXVk
aW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9E
YXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgeyB9OworCisgICAg
dmlydHVhbCBib29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpIHsgcmV0
dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0Rh
dGFMb3dMaW1pdCgpIHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgYm9vbCBoYXNCdWZm
ZXJlZEVub3VnaERhdGEoKSB7IHJldHVybiBmYWxzZTsgfTsKKworICAgIC8vIE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlOjpPYnNlcnZlciBBUEkKKyAgICB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyBzb3VyY2VNdXRlZENoYW5nZWQoKTsgfQor
ICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZp
bmFsIHsgc291cmNlRW5hYmxlZENoYW5nZWQoKTsgfQorICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZh
aWxhYmxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRp
bWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KSB7IGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZShtZWRpYVRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7IH0KKyAg
ICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KKyAg
ICB2b2lkIHRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmlu
YWwgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVsbEF1ZGlvRGF0YSgpIHsgfTsKKworICAgIHZv
aWQgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNdXRlZElm
TmVlZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHNlbmRTaWxlbmNlKCkgeyB9OworCisgICAgVmVj
dG9yPHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqPiBtX3NpbmtzOworICAgIFJlZjxN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gbV9hdWRpb1NvdXJjZTsKKworICAgIGJvb2wgbV9tdXRl
ZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2VuYWJsZWQgeyB0cnVlIH07CisgICAgVGltZXIgbV9z
aWxlbmNlQXVkaW9UaW1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzUzOGNkMDU1YjRkY2E0OTky
MWIyZDUxZDgwZjA4MmViMjI2NzM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiAgICBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiAgICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAg
ICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuaCIKLQotI2lmIFVTRShMSUJXRUJSVEMpCi0KLSNpbmNsdWRlICJBdWRpb1N0
cmVhbURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgi
Ci0jaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKLSNpbmNsdWRlICJXZWJBdWRpb0J1
ZmZlckxpc3QuaCIKLSNpbmNsdWRlICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIgot
I2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+Ci0KLSNp
bmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJl
ZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+
JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQotewotICAgIGF1dG8gc291cmNl
ID0gYWRvcHRSZWYoKm5ldyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRp
b1RyYWNrKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpKSk7Ci0gICAgc291cmNlLT5zdGFydCgpOwot
ICAgIHJldHVybiBzb3VyY2U7Ci19Ci0KLVJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6UmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlv
VHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQotICAg
IDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCksIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKLSAgICAsIG1fYXVkaW9UcmFjayhXVEZN
b3ZlKGF1ZGlvVHJhY2spKQotewotICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFtX2F1ZGlvVHJhY2sp
OwotfQotCi1SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2UoKQotewotICAgIHN0b3AoKTsKLX0KLQotCi1zdGF0aWMgaW5saW5lIEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1EZXNjcmlwdGlvbihzaXplX3Qgc2FtcGxlUmF0ZSwg
c2l6ZV90IGNoYW5uZWxDb3VudCkKLXsKLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24g
c3RyZWFtRm9ybWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1Gb3JtYXQsIHNhbXBs
ZVJhdGUsIGNoYW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExp
YldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNG
bG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBMaWJXZWJSVENBdWRpb0Zv
cm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0gICAgcmV0dXJuIHN0cmVhbUZvcm1hdDsKLX0KLQot
dm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRp
b0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9m
Q2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKLXsKLSAgICAvLyBXZSBtYXkgcmVjZWl2
ZSBPbkRhdGEgY2FsbHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1wbGVzIGVxdWFs
IHRvIHplcm8gYW5kIHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4gc3RhcnRpbmcgdGhl
IGNhbGwuCi0gICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAgdGhlbSwgd2Ugc2hv
dWxkIGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVsIHRvIG5vdCBiZSBj
YWxsZWQgdW50aWwgZ2V0dGluZyBzb21lIHJlYWwgZGF0YS4KLSAgICBpZiAoc2FtcGxlUmF0ZSA9
PSAxNjAwMCAmJiBudW1iZXJPZkNoYW5uZWxzID09IDEpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEFTU0VSVChiaXRzUGVyU2FtcGxlID09IDE2KTsKLSAgICBBU1NFUlQobnVtYmVyT2ZDaGFubmVs
cyA9PSAxIHx8IG51bWJlck9mQ2hhbm5lbHMgPT0gMik7Ci0gICAgQVNTRVJUKHNhbXBsZVJhdGUg
PT0gNDgwMDApOwotCi0gICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1ha2UobV9udW1iZXJP
ZkZyYW1lcywgc2FtcGxlUmF0ZSk7Ci0gICAgYXV0byBtZWRpYVRpbWUgPSBQQUw6OnRvTWVkaWFU
aW1lKHN0YXJ0VGltZSk7Ci0gICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1iZXJPZkZyYW1lczsK
LQotICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlwdGlvbiA9IHN0cmVh
bURlc2NyaXB0aW9uKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpOwotCi0gICAgLy8gRklY
TUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5IGFsbG9jYXRpb24g
YW5kIGNvcHkuCi0gICAgLy8gSW5zdGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZGlyZWN0bHkg
cGFzcyBhdWRpb0RhdGEgcG9pbnRlci4KLSAgICBXZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9CdWZm
ZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgV1RGOjpz
YWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpIH07Ci0gICAgYXVkaW9CdWZmZXJMaXN0
LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMgKiBudW1iZXJPZkZy
YW1lcyAqIGJpdHNQZXJTYW1wbGUgLyA4OwotICAgIGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCkt
Pm1OdW1iZXJDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7Ci0KLSAgICBpZiAobXV0ZWQoKSkK
LSAgICAgICAgbWVtc2V0KGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRhLCAwLCBhdWRp
b0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKLSAgICBlbHNlCi0gICAgICAg
IG1lbWNweShhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgYXVkaW9EYXRhLCBhdWRp
b0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKLQotICAgIGF1ZGlvU2FtcGxl
c0F2YWlsYWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgbnVtYmVyT2ZGcmFtZXMpOwotfQotCi12b2lkIFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKLXsKLSAgICBpZiAo
bV9hdWRpb1RyYWNrKQotICAgICAgICBtX2F1ZGlvVHJhY2stPkFkZFNpbmsodGhpcyk7Ci19Ci0K
LXZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCi17
Ci0gICAgaWYgKG1fYXVkaW9UcmFjaykKLSAgICAgICAgbV9hdWRpb1RyYWNrLT5SZW1vdmVTaW5r
KHRoaXMpOwotfQotCi12b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNl
VHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiB0
cmFjaykKLXsKLSAgICBBU1NFUlQoIW1fYXVkaW9UcmFjayk7Ci0gICAgQVNTRVJUKHRyYWNrKTsK
LQotICAgIG1fYXVkaW9UcmFjayA9IFdURk1vdmUodHJhY2spOwotICAgIG5vdGlmeU11dGVkQ2hh
bmdlKCFtX2F1ZGlvVHJhY2spOwotICAgIGlmIChpc1Byb2R1Y2luZ0RhdGEoKSkKLSAgICAgICAg
bV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOwotfQotCi1jb25zdCBSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzJiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNhcGFiaWxpdGll
cygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6
OmVtcHR5Q2FwYWJpbGl0aWVzKCk7Ci19Ci0KLWNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXR0aW5ncygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOwotfQotCi19Ci0KLSNlbmRpZiAvLyBVU0UoTElC
V0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjYwMjIwODUxOTdmZjM5YTY4NTQ3MDFlZmIyMGZiOWUw
ZGQ0ZTQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiAgICBkaXN0cmli
dXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMg
b2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgot
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKLSNpbmNsdWRlIDxDb3JlQXVkaW8vQ29y
ZUF1ZGlvVHlwZXMuaD4KLSNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBv
cGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uICpDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOwot
Ci1jbGFzcyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UgZmluYWwgOiBwdWJsaWMgUmVhbHRp
bWVNZWRpYVNvdXJjZSwgcHJpdmF0ZSB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlIHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZT4gY3Jl
YXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0
cmluZyYmKTsKLQotICAgIHZvaWQgc2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJik7Ci0KLXByaXZhdGU6Ci0gICAgUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJ
bnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKLSAgICB+UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
KCk7Ci0KLSAgICAvLyB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlIEFQSQotICAgIHZv
aWQgT25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJTYW1wbGUsIGludCBz
YW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVz
KSBmaW5hbDsKLQotICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2UgQVBJCi0gICAgdm9pZCBzdGFy
dFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgIGZp
bmFsOwotCi0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJp
bGl0aWVzKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOwotCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzIG1fY3VycmVudFNldHRpbmdzOwotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OkF1ZGlvVHJhY2tJbnRlcmZhY2U+IG1fYXVkaW9UcmFjazsKLQotICAgIHVpbnQ2NF90IG1fbnVt
YmVyT2ZGcmFtZXMgeyAwIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNmOTZjNmFkOWVjZjhiNDMwM2JkYWMzOGEz
ZTkzNzFjNDU2ZWUwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKQEAg
LTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2Eu
aCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0
aW9uLmgiCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAi
TGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIK
KyNpbmNsdWRlICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIgorI2luY2x1ZGUgPHBh
bC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisKKyNpbmNsdWRlICJDb3Jl
TWVkaWFTb2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFj
aywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQoreworICAgIGF1dG8gc291cmNlID0gUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF1ZGlvVHJhY2spLCBXVEZN
b3ZlKGF1ZGlvVHJhY2tJZCkpOworICAgIHNvdXJjZS0+c3RhcnQoKTsKKyAgICByZXR1cm4gc291
cmNlOworfQorCitSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E+IFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZUNvY29hOjpjcmVhdGUocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1RyYWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNr
SWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlQ29jb2EoV1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpKSk7Cit9
CisKK1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hOjpSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VDb2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJm
YWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkKKyAgICA6IFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZUNvY29hKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVk
aW9UcmFja0lkKSkKK3sKK30KKworCitzdGF0aWMgaW5saW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbiBzdHJlYW1EZXNjcmlwdGlvbihzaXplX3Qgc2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5u
ZWxDb3VudCkKK3sKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0
OworICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUsIGNoYW5u
ZWxDb3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlv
Rm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNGbG9hdCwgTGliV2Vi
UlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25J
bnRlcmxlYXZlZCk7CisgICAgcmV0dXJuIHN0cmVhbUZvcm1hdDsKK30KKwordm9pZCBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYTo6T25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwg
aW50IGJpdHNQZXJTYW1wbGUsIGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVs
cywgc2l6ZV90IG51bWJlck9mRnJhbWVzKQoreworICAgIC8vIFdlIG1heSByZWNlaXZlIE9uRGF0
YSBjYWxscyB3aXRoIGVtcHR5IHNvdW5kIGRhdGEgKG1vbm8sIHNhbXBsZXMgZXF1YWwgdG8gemVy
byBhbmQgc2FtcGxlUmF0ZSBlcXVhbCB0byAxNjAwMCkgd2hlbiBzdGFydGluZyB0aGUgY2FsbC4K
KyAgICAvLyBGSVhNRTogRm9yIHRoZSBtb21lbnQgd2Ugc2tpcCB0aGVtLCB3ZSBzaG91bGQgZmlu
ZCBhIGJldHRlciBzb2x1dGlvbiBhdCBsaWJ3ZWJydGMgbGV2ZWwgdG8gbm90IGJlIGNhbGxlZCB1
bnRpbCBnZXR0aW5nIHNvbWUgcmVhbCBkYXRhLgorICAgIGlmIChzYW1wbGVSYXRlID09IDE2MDAw
ICYmIG51bWJlck9mQ2hhbm5lbHMgPT0gMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJU
KGJpdHNQZXJTYW1wbGUgPT0gMTYpOworICAgIEFTU0VSVChudW1iZXJPZkNoYW5uZWxzID09IDEg
fHwgbnVtYmVyT2ZDaGFubmVscyA9PSAyKTsKKyAgICBBU1NFUlQoc2FtcGxlUmF0ZSA9PSA0ODAw
MCk7CisKKyAgICBDTVRpbWUgc3RhcnRUaW1lID0gQ01UaW1lTWFrZShtX251bWJlck9mRnJhbWVz
LCBzYW1wbGVSYXRlKTsKKyAgICBhdXRvIG1lZGlhVGltZSA9IFBBTDo6dG9NZWRpYVRpbWUoc3Rh
cnRUaW1lKTsKKyAgICBtX251bWJlck9mRnJhbWVzICs9IG51bWJlck9mRnJhbWVzOworCisgICAg
QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG5ld0Rlc2NyaXB0aW9uID0gc3RyZWFtRGVzY3Jp
cHRpb24oc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscyk7CisKKyAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIG5vdCBuZWVkIHRvIGRvIHRoZSBleHRyYSBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgY29w
eS4KKyAgICAvLyBJbnN0ZWFkLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBkaXJlY3RseSBwYXNzIGF1
ZGlvRGF0YSBwb2ludGVyLgorICAgIFdlYkF1ZGlvQnVmZmVyTGlzdCBhdWRpb0J1ZmZlckxpc3Qg
eyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24obmV3RGVzY3JpcHRpb24pLCBXVEY6OnNhZmVDYXN0
PHVpbnQzMl90PihudW1iZXJPZkZyYW1lcykgfTsKKyAgICBhdWRpb0J1ZmZlckxpc3QuYnVmZmVy
KDApLT5tRGF0YUJ5dGVTaXplID0gbnVtYmVyT2ZDaGFubmVscyAqIG51bWJlck9mRnJhbWVzICog
Yml0c1BlclNhbXBsZSAvIDg7CisgICAgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bU51bWJl
ckNoYW5uZWxzID0gbnVtYmVyT2ZDaGFubmVsczsKKworICAgIGlmIChtdXRlZCgpKQorICAgICAg
ICBtZW1zZXQoYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGEsIDAsIGF1ZGlvQnVmZmVy
TGlzdC5idWZmZXIoMCktPm1EYXRhQnl0ZVNpemUpOworICAgIGVsc2UKKyAgICAgICAgbWVtY3B5
KGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRhLCBhdWRpb0RhdGEsIGF1ZGlvQnVmZmVy
TGlzdC5idWZmZXIoMCktPm1EYXRhQnl0ZVNpemUpOworCisgICAgYXVkaW9TYW1wbGVzQXZhaWxh
YmxlKG1lZGlhVGltZSwgYXVkaW9CdWZmZXJMaXN0LCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24o
bmV3RGVzY3JpcHRpb24pLCBudW1iZXJPZkZyYW1lcyk7Cit9CisKK30KKworI2VuZGlmIC8vIFVT
RShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQwMTA0NzVlNWVjYTJmZmM5MTQzMDM0NzFiNjVmYjFhODk3ZGFi
YTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuaApAQCAtMCwwICsxLDU3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBV
U0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgi
CisKKyNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KKwordHlwZWRlZiBjb25z
dCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiAqQ01Gb3JtYXREZXNjcmlwdGlvblJl
ZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQzsKKworY2xhc3MgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EgZmluYWwg
OiBwdWJsaWMgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hPiBjcmVhdGUocnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYpOworCitw
cml2YXRlOgorICAgIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKKworICAg
IC8vIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgQVBJCisgICAgdm9pZCBPbkRhdGEo
Y29uc3Qgdm9pZCogYXVkaW9EYXRhLCBpbnQgYml0c1BlclNhbXBsZSwgaW50IHNhbXBsZVJhdGUs
IHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpIGZpbmFsOwor
CisgICAgdWludDY0X3QgbV9udW1iZXJPZkZyYW1lcyB7IDAgfTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkOTEwMWRjNDM3OTE3ZDUxMGU3NGJmYzc3NTFjN2M3MGM3ZGMyMmE0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMjAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRv
IGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
LSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmgiCi0KLSNpZiBVU0UoTElCV0VCUlRDKQotCi0jaW5jbHVkZSAiQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIK
LSNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0YXRpYyBpbmxpbmUgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIGxpYndlYnJ0Y0F1ZGlv
Rm9ybWF0KEZsb2F0NjQgc2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKLXsKLSAgICAv
LyBGSVhNRTogTWljcm9waG9uZXMgY2FuIGhhdmUgbW9yZSB0aGFuIHR3byBjaGFubmVscy4gSW4g
c3VjaCBjYXNlLCB3ZSBzaG91bGQgZG8gdGhlIG1peCBkb3duIGJhc2VkIG9uIEF1ZGlvQ2hhbm5l
bExheW91dFRhZy4KLSAgICBzaXplX3QgbGliV2ViUlRDQ2hhbm5lbENvdW50ID0gY2hhbm5lbENv
dW50ID49IDIgPyAyIDogY2hhbm5lbENvdW50OwotICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbiBzdHJlYW1Gb3JtYXQ7Ci0gICAgRmlsbE91dEFTQkRGb3JMUENNKHN0cmVhbUZvcm1hdCwg
c2FtcGxlUmF0ZSwgbGliV2ViUlRDQ2hhbm5lbENvdW50LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6
c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1
ZGlvRm9ybWF0Ojppc0Zsb2F0LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNCaWdFbmRpYW4sIExp
YldlYlJUQ0F1ZGlvRm9ybWF0Ojppc05vbkludGVybGVhdmVkKTsKLSAgICByZXR1cm4gc3RyZWFt
Rm9ybWF0OwotfQotCi1SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OlJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgYXVkaW9Tb3VyY2Up
Ci0gICAgOiBtX2F1ZGlvU291cmNlKFdURk1vdmUoYXVkaW9Tb3VyY2UpKQotICAgICwgbV9zYW1w
bGVDb252ZXJ0ZXIoQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoTGliV2ViUlRDQXVkaW9G
b3JtYXQ6OnNhbXBsZVJhdGUgKiAyKSkKLSAgICAsIG1fc2lsZW5jZUF1ZGlvVGltZXIoKnRoaXMs
ICZSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRTaWxlbmNlKQotewotICAgIG1fYXVk
aW9Tb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKLSAgICBpbml0aWFsaXplQ29udmVydGVyKCk7
Ci19Ci0KLWJvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZXRTb3VyY2UoUmVmPE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIG5ld1NvdXJjZSkKLXsKLSAgICBtX2F1ZGlvU291cmNl
LT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7Ci0gICAgbV9hdWRpb1NvdXJjZSA9IFdURk1vdmUobmV3
U291cmNlKTsKLSAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7Ci0KLSAgICBp
bml0aWFsaXplQ29udmVydGVyKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlOjppbml0aWFsaXplQ29udmVydGVyKCkKLXsKLSAgICBtX211
dGVkID0gbV9hdWRpb1NvdXJjZS0+bXV0ZWQoKTsKLSAgICBtX2VuYWJsZWQgPSBtX2F1ZGlvU291
cmNlLT5lbmFibGVkKCk7Ci0gICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwotfQotCi12b2lkIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c3RvcCgpCi17Ci0gICAgbV9zaWxlbmNlQXVkaW9U
aW1lci5zdG9wKCk7Ci0gICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwot
fQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlTXV0ZWRDaGFuZ2Vk
KCkKLXsKLSAgICBtX211dGVkID0gbV9hdWRpb1NvdXJjZS0+bXV0ZWQoKTsKLSAgICBoYW5kbGVN
dXRlZElmTmVlZGVkKCk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpz
b3VyY2VFbmFibGVkQ2hhbmdlZCgpCi17Ci0gICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+
ZW5hYmxlZCgpOwotICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKLX0KLQotdm9pZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmhhbmRsZU11dGVkSWZOZWVkZWQoKQotewotICAgIGJvb2wg
aXNTaWxlbmNlZCA9IG1fbXV0ZWQgfHwgIW1fZW5hYmxlZDsKLSAgICBtX3NhbXBsZUNvbnZlcnRl
ci0+c2V0TXV0ZWQoaXNTaWxlbmNlZCk7Ci0gICAgaWYgKGlzU2lsZW5jZWQgJiYgIW1fc2lsZW5j
ZUF1ZGlvVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdGFy
dFJlcGVhdGluZygxX3MpOwotICAgIGlmICghaXNTaWxlbmNlZCAmJiBtX3NpbGVuY2VBdWRpb1Rp
bWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOwotfQot
Ci12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2VuZFNpbGVuY2UoKQotewotICAg
IExpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewotICAgICAgICBzaXplX3QgY2h1bmtTYW1w
bGVDb3VudCA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpIC8gMTAwOwot
ICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IGNodW5rU2FtcGxlQ291bnQgKiBMaWJXZWJSVENB
dWRpb0Zvcm1hdDo6c2FtcGxlQnl0ZVNpemUgKiBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51
bWJlck9mQ2hhbm5lbHMoKTsKLQotICAgICAgICBpZiAoIWJ1ZmZlclNpemUpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgbV9hdWRpb0J1ZmZlci5ncm93KGJ1ZmZlclNpemUpOwotICAg
ICAgICBtZW1zZXQobV9hdWRpb0J1ZmZlci5kYXRhKCksIDAsIGJ1ZmZlclNpemUpOwotICAgICAg
ICBmb3IgKGF1dG8gc2luayA6IG1fc2lua3MpCi0gICAgICAgICAgICBzaW5rLT5PbkRhdGEobV9h
dWRpb0J1ZmZlci5kYXRhKCksIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBtX291
dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlw
dGlvbi5udW1iZXJPZkNoYW5uZWxzKCksIGNodW5rU2FtcGxlQ291bnQpOwotICAgIH0pOwotfQot
Ci1ib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aXNSZWFjaGluZ0J1ZmZlcmVkQXVk
aW9EYXRhSGlnaExpbWl0KCkKLXsKLSAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID0gbV93
cml0ZUNvdW50IC8gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKLSAgICBh
dXRvIHJlYWRBdWRpb0R1cmF0aW9uID0gbV9yZWFkQ291bnQgLyBtX291dHB1dFN0cmVhbURlc2Ny
aXB0aW9uLnNhbXBsZVJhdGUoKTsKLQotICAgIEFTU0VSVCh3cml0dGVuQXVkaW9EdXJhdGlvbiA+
PSByZWFkQXVkaW9EdXJhdGlvbik7Ci0gICAgcmV0dXJuIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID4g
cmVhZEF1ZGlvRHVyYXRpb24gKyAwLjU7Ci19Ci0KLWJvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlOjppc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpCi17Ci0gICAgYXV0
byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVh
ZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBB
U1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOwotICAgIHJl
dHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA8IHJlYWRBdWRpb0R1cmF0aW9uICsgMC4xOwotfQot
Ci1ib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aGFzQnVmZmVyZWRFbmdvdWhEYXRh
KCkKLXsKLSAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9p
bnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKLSAgICBhdXRvIHJlYWRBdWRpb0R1
cmF0aW9uID0gbV9yZWFkQ291bnQgLyBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJh
dGUoKTsKLQotICAgIEFTU0VSVCh3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJh
dGlvbik7Ci0gICAgcmV0dXJuIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1cmF0
aW9uICsgMC4wMTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmF1ZGlv
U2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0
YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBzdHJlYW1EZXNjcmlw
dGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KQotewotICAgIGlmIChtX2lucHV0U3RyZWFtRGVzY3Jp
cHRpb24gIT0gc3RyZWFtRGVzY3JpcHRpb24pIHsKLSAgICAgICAgbV9pbnB1dFN0cmVhbURlc2Ny
aXB0aW9uID0gdG9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oc3RyZWFtRGVzY3JpcHRpb24pOwot
ICAgICAgICBhdXRvIHN0YXR1cyAgPSBtX3NhbXBsZUNvbnZlcnRlci0+c2V0SW5wdXRGb3JtYXQo
bV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChzdGF0dXMs
ICFzdGF0dXMpOwotCi0gICAgICAgIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gPSBsaWJ3ZWJy
dGNBdWRpb0Zvcm1hdChMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlUmF0ZSwgc3RyZWFtRGVz
Y3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpKTsKLSAgICAgICAgc3RhdHVzID0gbV9zYW1wbGVD
b252ZXJ0ZXItPnNldE91dHB1dEZvcm1hdChtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnN0cmVh
bURlc2NyaXB0aW9uKCkpOwotICAgICAgICBBU1NFUlQoIXN0YXR1cyk7Ci0gICAgfQotCi0gICAg
Ly8gTGV0J3Mgc2tpcCBwdXNoaW5nIHNhbXBsZXMgaWYgd2UgYXJlIHRvbyBzbG93IHB1bGxpbmcg
dGhlbS4KLSAgICBpZiAobV9za2lwcGluZ0F1ZGlvRGF0YSkgewotICAgICAgICBpZiAoIWlzUmVh
Y2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIG1fc2tpcHBpbmdBdWRpb0RhdGEgPSBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKGlzUmVh
Y2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpKSB7Ci0gICAgICAgIG1fc2tpcHBpbmdB
dWRpb0RhdGEgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gSWYgd2Ug
Y2hhbmdlIHRoZSBhdWRpbyB0cmFjayBvciBpdHMgc2FtcGxlIHJhdGUgY2hhbmdlcywgdGhlIHRp
bWVzdGFtcCBiYXNlZCBvbiBtX3dyaXRlQ291bnQgbWF5IGJlIHdyb25nLgotICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgdXBkYXRlIG1fd3JpdGVDb3VudCB0byBiZSB2YWxpZCBhY2NvcmRpbmcgdGhl
IG5ldyBzYW1wbGVSYXRlLgotICAgIG1fc2FtcGxlQ29udmVydGVyLT5wdXNoU2FtcGxlcyhNZWRp
YVRpbWUobV93cml0ZUNvdW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9pbnB1dFN0cmVhbURl
c2NyaXB0aW9uLnNhbXBsZVJhdGUoKSkpLCBhdWRpb0RhdGEsIHNhbXBsZUNvdW50KTsKLSAgICBt
X3dyaXRlQ291bnQgKz0gc2FtcGxlQ291bnQ7Ci0KLSAgICBpZiAoIWhhc0J1ZmZlcmVkRW5nb3Vo
RGF0YSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9u
V2ViUlRDU2lnbmFsaW5nVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsK
LSAgICAgICAgcHJvdGVjdGVkVGhpcy0+cHVsbEF1ZGlvRGF0YSgpOwotICAgIH0pOwotfQotCi12
b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6cHVsbEF1ZGlvRGF0YSgpCi17Ci0gICAg
Ly8gbGlid2VicnRjIGV4cGVjdHMgMTAgbXMgY2h1bmtzLgotICAgIHNpemVfdCBjaHVua1NhbXBs
ZUNvdW50ID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgLyAxMDA7Ci0g
ICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVkaW9G
b3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJP
ZkNoYW5uZWxzKCk7Ci0gICAgbV9hdWRpb0J1ZmZlci5ncm93KGJ1ZmZlclNpemUpOwotCi0gICAg
QXVkaW9CdWZmZXJMaXN0IGJ1ZmZlckxpc3Q7Ci0gICAgYnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVy
cyA9IDE7Ci0gICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSBtX291
dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKTsKLSAgICBidWZmZXJMaXN0
Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBidWZmZXJTaXplOwotICAgIGJ1ZmZlckxpc3Qu
bUJ1ZmZlcnNbMF0ubURhdGEgPSBtX2F1ZGlvQnVmZmVyLmRhdGEoKTsKLQotICAgIG1fc2FtcGxl
Q29udmVydGVyLT5wdWxsQXZhbGFpYmxlU2FtcGxlc0FzQ2h1bmtzKGJ1ZmZlckxpc3QsIGNodW5r
U2FtcGxlQ291bnQsIG1fcmVhZENvdW50LCBbdGhpcywgY2h1bmtTYW1wbGVDb3VudF0gewotICAg
ICAgICBtX3JlYWRDb3VudCArPSBjaHVua1NhbXBsZUNvdW50OwotICAgICAgICBmb3IgKGF1dG8g
c2luayA6IG1fc2lua3MpCi0gICAgICAgICAgICBzaW5rLT5PbkRhdGEobV9hdWRpb0J1ZmZlci5k
YXRhKCksIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBtX291dHB1dFN0cmVhbURl
c2NyaXB0aW9uLnNhbXBsZVJhdGUoKSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJP
ZkNoYW5uZWxzKCksIGNodW5rU2FtcGxlQ291bnQpOwotICAgIH0pOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
ZWJjODA0ZTQ5NTg1MzBiZTY2MDJmZmQ2MWEyYjUzYzdlYjZlNTc0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaAorKysgL2Rldi9udWxs
CkBAIC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBVU0UoTElCV0VCUlRDKQotCi0jaW5jbHVkZSAiQXVk
aW9TYW1wbGVEYXRhU291cmNlLmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgiCi0jaW5j
bHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2lu
Y2x1ZGUgPHdlYnJ0Yy9hcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaD4KLSNpbmNsdWRlIDx3dGYv
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIHdlYnJ0YyB7Ci1jbGFzcyBBdWRp
b1RyYWNrSW50ZXJmYWNlOwotY2xhc3MgQXVkaW9UcmFja1NpbmtJbnRlcmZhY2U7Ci19Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlIGZp
bmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZT4sIHB1YmxpYyB3ZWJydGM6OkF1ZGlvU291cmNlSW50ZXJmYWNlLCBwcml2YXRlIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFja1By
aXZhdGU+JiYgYXVkaW9Tb3VyY2UpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlKFdURk1vdmUoYXVkaW9Tb3VyY2UpKSk7IH0KLSAgICB+UmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlKCkgeyBzdG9wKCk7IH0KLQotICAgIHZvaWQgc3RvcCgpOwotCi0g
ICAgYm9vbCBzZXRTb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKLSAgICBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1Nv
dXJjZS5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOwotCi0gICAgdmlydHVh
bCB2b2lkIEFkZFNpbmsod2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSogc2luaykgeyBt
X3NpbmtzLmFwcGVuZChzaW5rKTsgfQotICAgIHZpcnR1YWwgdm9pZCBSZW1vdmVTaW5rKHdlYnJ0
Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspIHsgbV9zaW5rcy5yZW1vdmVGaXJzdChz
aW5rKTsgfQotCi0gICAgaW50IEFkZFJlZigpIGNvbnN0IGZpbmFsIHsgcmVmKCk7IHJldHVybiBy
ZWZDb3VudCgpOyB9Ci0gICAgaW50IFJlbGVhc2UoKSBjb25zdCBmaW5hbCB7IGRlcmVmKCk7IHJl
dHVybiByZWZDb3VudCgpOyB9Ci0gICAgU291cmNlU3RhdGUgc3RhdGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBrTGl2ZTsgfQotICAgIGJvb2wgcmVtb3RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2b2lkIFJlZ2lzdGVyT2JzZXJ2ZXIod2VicnRjOjpPYnNlcnZlckludGVy
ZmFjZSopIGZpbmFsIHsgfQotICAgIHZvaWQgVW5yZWdpc3Rlck9ic2VydmVyKHdlYnJ0Yzo6T2Jz
ZXJ2ZXJJbnRlcmZhY2UqKSBmaW5hbCB7IH0KLQotICAgIHZvaWQgc291cmNlTXV0ZWRDaGFuZ2Vk
KCk7Ci0gICAgdm9pZCBzb3VyY2VFbmFibGVkQ2hhbmdlZCgpOwotICAgIHZvaWQgYXVkaW9TYW1w
bGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwg
Y29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCk7Ci0KLSAgICBib29sIGlzUmVh
Y2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpOwotICAgIGJvb2wgaXNSZWFjaGluZ0J1
ZmZlcmVkQXVkaW9EYXRhTG93TGltaXQoKTsKLSAgICBib29sIGhhc0J1ZmZlcmVkRW5nb3VoRGF0
YSgpOwotCi0gICAgLy8gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIEFQSQotICAg
IHZvaWQgdHJhY2tNdXRlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7
IHNvdXJjZU11dGVkQ2hhbmdlZCgpOyB9Ci0gICAgdm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyBzb3VyY2VFbmFibGVkQ2hhbmdlZCgpOyB9
Ci0gICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUm
LCBjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRh
dGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2Ft
cGxlQ291bnQpIGZpbmFsIHsgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKG1lZGlhVGltZSwgZGF0YSwg
ZGVzY3JpcHRpb24sIHNhbXBsZUNvdW50KTsgfQotICAgIHZvaWQgdHJhY2tFbmRlZChNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQotICAgIHZvaWQgdHJhY2tTZXR0aW5nc0NoYW5n
ZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KLQotICAgIHZvaWQgcHVsbEF1
ZGlvRGF0YSgpOwotCi0gICAgdm9pZCBpbml0aWFsaXplQ29udmVydGVyKCk7Ci0gICAgdm9pZCBo
YW5kbGVNdXRlZElmTmVlZGVkKCk7Ci0gICAgdm9pZCBzZW5kU2lsZW5jZSgpOwotCi0gICAgVmVj
dG9yPHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqPiBtX3NpbmtzOwotICAgIFJlZjxN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gbV9hdWRpb1NvdXJjZTsKLSAgICBSZWY8QXVkaW9TYW1w
bGVEYXRhU291cmNlPiBtX3NhbXBsZUNvbnZlcnRlcjsKLSAgICBDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uOwotICAgIENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uOwotCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IG1f
YXVkaW9CdWZmZXI7Ci0gICAgdWludDY0X3QgbV9yZWFkQ291bnQgeyAwIH07Ci0gICAgdWludDY0
X3QgbV93cml0ZUNvdW50IHsgMCB9OwotICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07Ci0gICAg
Ym9vbCBtX2VuYWJsZWQgeyB0cnVlIH07Ci0gICAgYm9vbCBtX3NraXBwaW5nQXVkaW9EYXRhIHsg
ZmFsc2UgfTsKLSAgICBUaW1lciBtX3NpbGVuY2VBdWRpb1RpbWVyOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxMmI4
OGFmODBmNDdkYTdiYTFkNGJjMTg0YzViMGU5OGMyMDRlYTYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlQ29jb2EuY3BwCkBAIC0wLDAgKzEsMTY1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSByZXF1aXJlZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2Eu
aCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24uaCIKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRpb0Zvcm1hdC5oIgorI2luY2x1ZGUgIkxp
YldlYlJUQ1Byb3ZpZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGlubGlu
ZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbGlid2VicnRjQXVkaW9Gb3JtYXQoRmxvYXQ2
NCBzYW1wbGVSYXRlLCBzaXplX3QgY2hhbm5lbENvdW50KQoreworICAgIC8vIEZJWE1FOiBNaWNy
b3Bob25lcyBjYW4gaGF2ZSBtb3JlIHRoYW4gdHdvIGNoYW5uZWxzLiBJbiBzdWNoIGNhc2UsIHdl
IHNob3VsZCBkbyB0aGUgbWl4IGRvd24gYmFzZWQgb24gQXVkaW9DaGFubmVsTGF5b3V0VGFnLgor
ICAgIHNpemVfdCBsaWJXZWJSVENDaGFubmVsQ291bnQgPSBjaGFubmVsQ291bnQgPj0gMiA/IDIg
OiBjaGFubmVsQ291bnQ7CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZv
cm1hdDsKKyAgICBGaWxsT3V0QVNCREZvckxQQ00oc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlLCBs
aWJXZWJSVENDaGFubmVsQ291bnQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBM
aWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6Omlz
RmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVkaW9G
b3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQpOworICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7Cit9CisK
K1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgYXVkaW9Tb3VyY2UpCisg
ICAgOiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRpb1NvdXJjZSkpCisg
ICAgLCBtX3NhbXBsZUNvbnZlcnRlcihBdWRpb1NhbXBsZURhdGFTb3VyY2U6OmNyZWF0ZShMaWJX
ZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlUmF0ZSAqIDIpKQoreworfQorCitSZWY8UmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlPiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShS
ZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgYXVkaW9Tb3VyY2UpCit7CisgICAgcmV0dXJu
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpjcmVhdGUoV1RGTW92ZShhdWRpb1Nv
dXJjZSkpOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpoYW5k
bGVNdXRlZElmTmVlZGVkKCkKK3sKKyAgICBib29sIGlzU2lsZW5jZWQgPSBtX211dGVkIHx8ICFt
X2VuYWJsZWQ7CisgICAgbV9zYW1wbGVDb252ZXJ0ZXItPnNldE11dGVkKGlzU2lsZW5jZWQpOwor
CisgICAgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmhhbmRsZU11dGVkSWZOZWVk
ZWQoKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6c2VuZFNp
bGVuY2UoKQoreworICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENTaWduYWxpbmdU
aHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBz
aXplX3QgY2h1bmtTYW1wbGVDb3VudCA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpIC8gMTAwOworICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IGNodW5rU2FtcGxlQ291
bnQgKiBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlQnl0ZVNpemUgKiBtX291dHB1dFN0cmVh
bURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKTsKKworICAgICAgICBpZiAoIWJ1ZmZlclNp
emUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9hdWRpb0J1ZmZlci5ncm93KGJ1
ZmZlclNpemUpOworICAgICAgICBtZW1zZXQobV9hdWRpb0J1ZmZlci5kYXRhKCksIDAsIGJ1ZmZl
clNpemUpOworICAgICAgICBmb3IgKGF1dG8gc2luayA6IG1fc2lua3MpCisgICAgICAgICAgICBz
aW5rLT5PbkRhdGEobV9hdWRpb0J1ZmZlci5kYXRhKCksIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojpz
YW1wbGVTaXplLCBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSwgbV9vdXRw
dXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCksIGNodW5rU2FtcGxlQ291bnQp
OworICAgIH0pOworfQorCitib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpp
c1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKQoreworICAgIGF1dG8gd3JpdHRl
bkF1ZGlvRHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24u
c2FtcGxlUmF0ZSgpOworICAgIGF1dG8gcmVhZEF1ZGlvRHVyYXRpb24gPSBtX3JlYWRDb3VudCAv
IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOworCisgICAgQVNTRVJUKHdy
aXR0ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1cmF0aW9uKTsKKyAgICByZXR1cm4gd3Jp
dHRlbkF1ZGlvRHVyYXRpb24gPiByZWFkQXVkaW9EdXJhdGlvbiArIDAuNTsKK30KKworYm9vbCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9E
YXRhTG93TGltaXQoKQoreworICAgIGF1dG8gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dyaXRl
Q291bnQgLyBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOworICAgIGF1dG8g
cmVhZEF1ZGlvRHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRp
b24uc2FtcGxlUmF0ZSgpOworCisgICAgQVNTRVJUKHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49IHJl
YWRBdWRpb0R1cmF0aW9uKTsKKyAgICByZXR1cm4gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPCByZWFk
QXVkaW9EdXJhdGlvbiArIDAuMTsKK30KKworYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYTo6aGFzQnVmZmVyZWRFbm91Z2hEYXRhKCkKK3sKKyAgICBhdXRvIHdyaXR0ZW5BdWRp
b0R1cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBs
ZVJhdGUoKTsKKyAgICBhdXRvIHJlYWRBdWRpb0R1cmF0aW9uID0gbV9yZWFkQ291bnQgLyBtX291
dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKworICAgIEFTU0VSVCh3cml0dGVu
QXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbik7CisgICAgcmV0dXJuIHdyaXR0ZW5B
dWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1cmF0aW9uICsgMC4wMTsKK30KKwordm9pZCBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0
IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mIHN0cmVhbURlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291
bnQpCit7CisgICAgaWYgKG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbiAhPSBzdHJlYW1EZXNjcmlw
dGlvbikgeworICAgICAgICBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24gPSB0b0NBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbihzdHJlYW1EZXNjcmlwdGlvbik7CisgICAgICAgIGF1dG8gc3RhdHVzICA9
IG1fc2FtcGxlQ29udmVydGVyLT5zZXRJbnB1dEZvcm1hdChtX2lucHV0U3RyZWFtRGVzY3JpcHRp
b24pOworICAgICAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgIXN0YXR1cyk7CisKKyAgICAgICAg
bV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbiA9IGxpYndlYnJ0Y0F1ZGlvRm9ybWF0KExpYldlYlJU
Q0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRlLCBzdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5u
ZWxzKCkpOworICAgICAgICBzdGF0dXMgPSBtX3NhbXBsZUNvbnZlcnRlci0+c2V0T3V0cHV0Rm9y
bWF0KG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSk7CisgICAg
ICAgIEFTU0VSVCghc3RhdHVzKTsKKyAgICB9CisKKyAgICAvLyBMZXQncyBza2lwIHB1c2hpbmcg
c2FtcGxlcyBpZiB3ZSBhcmUgdG9vIHNsb3cgcHVsbGluZyB0aGVtLgorICAgIGlmIChtX3NraXBw
aW5nQXVkaW9EYXRhKSB7CisgICAgICAgIGlmICghaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRh
TG93TGltaXQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9za2lwcGluZ0F1ZGlv
RGF0YSA9IGZhbHNlOworICAgIH0gZWxzZSBpZiAoaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRh
SGlnaExpbWl0KCkpIHsKKyAgICAgICAgbV9za2lwcGluZ0F1ZGlvRGF0YSA9IHRydWU7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBJZiB3ZSBjaGFuZ2UgdGhlIGF1ZGlvIHRyYWNr
IG9yIGl0cyBzYW1wbGUgcmF0ZSBjaGFuZ2VzLCB0aGUgdGltZXN0YW1wIGJhc2VkIG9uIG1fd3Jp
dGVDb3VudCBtYXkgYmUgd3JvbmcuCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1cGRhdGUgbV93
cml0ZUNvdW50IHRvIGJlIHZhbGlkIGFjY29yZGluZyB0aGUgbmV3IHNhbXBsZVJhdGUuCisgICAg
bV9zYW1wbGVDb252ZXJ0ZXItPnB1c2hTYW1wbGVzKE1lZGlhVGltZShtX3dyaXRlQ291bnQsIHN0
YXRpY19jYXN0PHVpbnQzMl90PihtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgp
KSksIGF1ZGlvRGF0YSwgc2FtcGxlQ291bnQpOworICAgIG1fd3JpdGVDb3VudCArPSBzYW1wbGVD
b3VudDsKKworICAgIGlmICghaGFzQnVmZmVyZWRFbmdvdWhEYXRhKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQo
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5wdWxsQXVkaW9EYXRhKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlQ29jb2E6OnB1bGxBdWRpb0RhdGEoKQoreworICAgIC8vIGxpYndlYnJ0YyBleHBl
Y3RzIDEwIG1zIGNodW5rcy4KKyAgICBzaXplX3QgY2h1bmtTYW1wbGVDb3VudCA9IG1fb3V0cHV0
U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpIC8gMTAwOworICAgIHNpemVfdCBidWZmZXJT
aXplID0gY2h1bmtTYW1wbGVDb3VudCAqIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRl
U2l6ZSAqIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOworICAg
IG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKKworICAgIEF1ZGlvQnVmZmVyTGlzdCBi
dWZmZXJMaXN0OworICAgIGJ1ZmZlckxpc3QubU51bWJlckJ1ZmZlcnMgPSAxOworICAgIGJ1ZmZl
ckxpc3QubUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlw
dGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7CisgICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0
YUJ5dGVTaXplID0gYnVmZmVyU2l6ZTsKKyAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRh
ID0gbV9hdWRpb0J1ZmZlci5kYXRhKCk7CisKKyAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVsbEF2
YWxhaWJsZVNhbXBsZXNBc0NodW5rcyhidWZmZXJMaXN0LCBjaHVua1NhbXBsZUNvdW50LCBtX3Jl
YWRDb3VudCwgW3RoaXMsIGNodW5rU2FtcGxlQ291bnRdIHsKKyAgICAgICAgbV9yZWFkQ291bnQg
Kz0gY2h1bmtTYW1wbGVDb3VudDsKKyAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQor
ICAgICAgICAgICAgc2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENB
dWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVS
YXRlKCksIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVu
a1NhbXBsZUNvdW50KTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWE3MDQzMDIyOTJmYjEwNzgxNTlhMmE5ZDE1
MDE4MjhmODEyMDY5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oCkBAIC0w
LDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJU
QykKKworI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgorI2luY2x1ZGUgIlJlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKK2NsYXNzIEF1
ZGlvVHJhY2tJbnRlcmZhY2U7CitjbGFzcyBBdWRpb1RyYWNrU2lua0ludGVyZmFjZTsKK30KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2VDb2NvYT4sIHB1YmxpYyBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2Ugewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E+
IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgYXVkaW9Tb3VyY2UpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoV1RGTW92
ZShhdWRpb1NvdXJjZSkpKTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZUNvY29hKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7CisK
KyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQ
bGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3Qp
IGZpbmFsOworCisgICAgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQo
KSBmaW5hbDsKKyAgICBib29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCkg
ZmluYWw7CisgICAgYm9vbCBoYXNCdWZmZXJlZEVub3VnaERhdGEoKSBmaW5hbDsKKworICAgIHZv
aWQgcHVsbEF1ZGlvRGF0YSgpIGZpbmFsOworCisgICAgdm9pZCBoYW5kbGVNdXRlZElmTmVlZGVk
KCkgZmluYWw7CisgICAgdm9pZCBzZW5kU2lsZW5jZSgpIGZpbmFsOworCisgICAgUmVmPEF1ZGlv
U2FtcGxlRGF0YVNvdXJjZT4gbV9zYW1wbGVDb252ZXJ0ZXI7CisgICAgQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbjsKKyAgICBDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbjsKKworICAgIFZlY3Rvcjx1aW50OF90
PiBtX2F1ZGlvQnVmZmVyOworICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsgMCB9OworICAgIHVp
bnQ2NF90IG1fd3JpdGVDb3VudCB7IDAgfTsKKyAgICBib29sIG1fc2tpcHBpbmdBdWRpb0RhdGEg
eyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNF
KExJQldFQlJUQykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323684</attachid>
            <date>2017-10-13 09:35:52 -0700</date>
            <delta_ts>2017-10-13 09:51:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177928-20171013183551.patch</filename>
            <type>text/plain</type>
            <size>70687</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkzODIyMzA3YzA4MTkz
ODNhYjVjNDliNDQxNTFlNWFkODFkNWFmMy4uODg2OTExNjJiZWQ0YTcyYjE3NTg2NzY1ODI3Mzll
N2JmOTNjZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTEwLTEyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlcyBhbmQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlcyBw
b3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciB0aGUgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGFuZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgY2xhc3NlcywKKyAgICAgICAgbW92ZSB0aGUgbWFjIHNwZWNp
ZmljIGNvZGUgdG8gYSBkaWZmZXJlbnQgY2xhc3MuIFRoaXMgd2F5IHdlIGNhbiB1c2UgdGhlbSBm
cm9tCisgICAgICAgIG90aGVyIHBvcnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgd2UgYXJl
IG5vdCBhZGRpbmcgbmV3IGZ1bmN0aW9uYWxpdHkganVzdCByZWZhY3RvcmluZy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmguIEp1c3QgdGhlIHBvcnQg
YWdub3N0aWMgcGFydHMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaC4gRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAuIERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmguIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6IEFkZGVkLCBpdCBhZGRzIENv
Y29hIGNvZGUgcGFydHMgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhpcyBm
dW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUgdG8g
YXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBBZGRl
ZCBDb2NvYSBjb2RlIGZyb20gb3JpZ2luYWwgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6
IEFkZGVkIENvY29hIGNvZGUgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhp
cyBmdW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUg
dG8gYXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBB
ZGRlZCBDb2NvYSBjb2RlIGZyb20gdGhlIG9yaWdpbmFsIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaC4KKwogMjAxNy0x
MC0wNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbV2luQ2Fpcm9dIEZpeCBidWlsZCBhZnRlciBCdWcgMTY3OTU2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDdmMjJlNTE2Zjk3YTI5N2RkNTQ4ZTc1Y2VlMDg3N2ExYzU2MjVmMWEuLmE4NDQxYmY0
Y2IyYmZhNTNhNWMyMjY4MDc3ZjE2NzcxMjAzNWMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yNTQ4LDkgKzI1NDgsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAKICAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcAogICAg
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3Bw
CisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCiAgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKICAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCisgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAogCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmY4Njg4YmMzZDlkNmU0MWU4MmRlNjY2OGIyYjlmYzViYjA4ZDM3Yy4uMjk5Yjc2NmM2
MTZjMGQzZTFiYjhlYWRlYTY3NjAxYzdiYjA0NDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5Niw4ICsxNjk2LDEyIEBA
CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEw
NDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTEw
M0FBQjFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovOyB9Owog
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
ODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggKi87IH07
CisJCTQxMTAzQUFCMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovOyB9OworCQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE4MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovOyB9OwogCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMDMg
LyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi87IH07CiAJCTQxMTAzQUFFMUUzOTc5MTAwMDc2OUYw
MyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQUExRTM5NzkwQTAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi87IH07CisJCTQxMTAzQUFEMUUzOTc5MTAw
MDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTkxRTM5NzkwQTAwNzY5
RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggKi87IH07CisJCTQxMTAz
QUFFMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
QTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3Bw
ICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2ViQ29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOUIx
QTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTQxMjMwOTEz
MTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGODIxNjI5OTAyOUY0RkI1MDEw
MDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTI3RDUzNzBGOEFB
QjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0
YXRlLmNwcCAqLzsgfTsKQEAgLTk0NzIsOCArOTQ3NiwxMiBAQAogCQk0MTBCN0U3MTEwNDVGQUIw
MDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMTAzQUE4MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE4MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBOTFFMzk3OTBBMDA3
NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIz
MjgwMEI5M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMyODAwQjk1NjcyIC8qIFJlYWRhYmxl
U3RyZWFtQllPQlJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtQllPQlJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0OTcs
NiArMTY1MDUsOCBAQAogCQkJCTA3RkZERTY2MTgxQUVENDIwMDcyRDQwOSAvKiBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZS5jcHAgKi8sCiAJCQkJMDdGRkRFNjcxODFBRUQ0MjAwNzJENDA5IC8qIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggKi8sCiAJCQkJNUVCQjg5MzgxQzc3QkRBNDAwQzY1RDQx
IC8qIFBlZXJNZWRpYURlc2NyaXB0aW9uLmggKi8sCisJCQkJNDExMDNBQUExRTM5NzkwQTAwNzY5
RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi8sCisJCQkJNDExMDNBQTkx
RTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oICovLAogCQkJ
CTRBNEY2NTZCMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLywK
IAkJCQk0QTRGNjU2QzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oICov
LAogCQkJCTRBNEY2NTZEMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzLmggKi8sCkBAIC0xNjUwNiw2ICsxNjUxNiw4IEBACiAJCQkJNEE0RjY1NkYxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovLAogCQkJCTJF
QzQxREUyMUMwNDEwQTMwMEQyOTRGRSAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuY3BwICovLAogCQkJCTA3QzFDMEU0MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLywKKwkJCQk0MTEwM0FBNzFFMzk3
OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCAqLywKKwkJCQk0
MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgg
Ki8sCiAJCQkJMzEzNTkxMEMxRTdERENCNjAwRjMwNjMwIC8qIFJUQ0J1bmRsZVBvbGljeS5oICov
LAogCQkJCTA3MjIxQkEyMTdDRjBBRDQwMDg0OEU1MSAvKiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCAqLywKIAkJCQkwNzIyMUJBMzE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50LmggKi8sCkBAIC0xNjU1NCwxNCArMTY1NjYsMTQgQEAKIAkJCQkwNzQ0RUNFQzFF
MEM0QUU1MDAwRDA5NDQgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJ
MDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgg
Ki8sCiAJCQkJMDdFRTc2RUUxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tICovLAotCQkJCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwICovLAotCQkJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAv
KiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCAqLywKKwkJCQk0MTEwM0FBQTFFMzk3OTBB
MDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwICovLAorCQkJ
CTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5oICovLAogCQkJCTVDREQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2UuY3BwICovLAogCQkJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLywKIAkJCQk0QTBGRkFBMzFBQUY1RUY2MDA2
MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgKi8sCiAJCQkJNEEwRkZB
QTQxQUFGNUVGNjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCAqLywK
LQkJCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcCAqLywKLQkJCQk0MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggKi8sCisJCQkJNDExMDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCAqLywKKwkJCQk0MTEwM0FBODFFMzk3
OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCAqLywKIAkJ
CQk1Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmNwcCAqLywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8sCkBAIC0yOTYxNCw2ICsyOTYyNiw3IEBACiAJ
CQkJNDEyOUM5QUIxRjU5QzU3MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAzQzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFs
eXNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExMDNBQUQxRTM5NzkxMDAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDExMDNBQUQx
RTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8q
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRB
MEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NjIxLDYgKzI5NjM0LDcgQEAKIAkJCQk0QTRGNjU3NDFBQTk5N0Yx
MDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBQzFFMzk3OTEwMDA3
NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQjk1MjI0MUY1OEE1OEYwMDkzMURDMiAvKiBS
ZWNvcmRpbmdTd2l6emxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2OEU4MEMyMjZF
MzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1ODE3NUQ0MTRD
MDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1ODIsNiAr
MzM1OTYsNyBAQAogCQkJCTQxMjlDOThBMUY1ODdGRUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVh
bVNpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwM0IxMkIwMjY3NjAwQzFBMzU5IC8q
IFJlYWx0aW1lQW5hbHlzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMDNBQUUxRTM5Nzkx
MDAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTEwM0FBRTFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzM0UxRTQzMjREQzAwNjIx
RTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0QTRGNjU3MDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0QTBGRkFBMTFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNTg5LDYgKzMzNjA0LDcgQEAK
IAkJCQk0QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQzQxREU0MUMwNDEwQTMwMEQyOTRGRSAvKiBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDExMDNBQUIxRTM5NzkxMDAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEwM0FBQjFFMzk3OTEwMDA3NjlGMTQgLyog
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDgzM0QxRTQzMjREOTAwNjIxRTkyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFu
Z2xlU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBQjQxODExM0UzNTZFODAwRDhBQUYz
IC8qIFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MWFiM2Q3NjgzYjNiOGZmYzUwMmJmMzQ2NTI0Nzk3MzVj
MjFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRp
b0Zvcm1hdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKKyAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQoreworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOworfQorCitSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1f
YXVkaW9UcmFjaykKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOworfQorCit2
b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQorewor
ICAgIGlmIChtX2F1ZGlvVHJhY2spCisgICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0
aGlzKTsKK30KKwordm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRy
YWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgdHJh
Y2spCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOworICAgIEFTU0VSVCh0cmFjayk7CisK
KyAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAgICBub3RpZnlNdXRlZENoYW5n
ZSghbV9hdWRpb1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCisgICAgICAgIG1f
YXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMo
KSBjb25zdAoreworICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpl
bXB0eUNhcGFiaWxpdGllcygpOworfQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAoreworICAg
IHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM3NmVh
ODQwYjMzMmY4MTU0ZTZmNjBhOGM0MzE2Yjg2ODlkOWQ0YgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldF
QlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlLCBwcml2YXRlIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYp
OworCisgICAgdm9pZCBzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmKTsKKworcHJvdGVjdGVkOgorICAgIH5SZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UoKTsKKworcHJpdmF0ZToKKyAgICBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwg
U3RyaW5nJiYpOworCisgICAgLy8gd2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSBBUEkK
KyAgICB2aXJ0dWFsIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIC8qIGF1ZGlvRGF0YSAqLywgaW50
IC8qIGJpdHNQZXJTYW1wbGUgKi8sIGludCAvKiBzYW1wbGVSYXRlICovLCBzaXplX3QgLyogbnVt
YmVyT2ZDaGFubmVscyAqLywgc2l6ZV90IC8qIG51bWJlck9mRnJhbWVzICovKSB7IH07CisKKyAg
ICAvLyBSZWFsdGltZU1lZGlhU291cmNlIEFQSQorICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRh
KCkgZmluYWw7CisgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpICBmaW5hbDsKKworICAgIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0
IGZpbmFsOworICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3Mo
KSBjb25zdCBmaW5hbDsKKworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJl
bnRTZXR0aW5nczsKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50
ZXJmYWNlPiBtX2F1ZGlvVHJhY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmYzYTViZWI2ZjVjY2MwMTM2OTRlMDkxNDAyZjI3ZjI4MjBmN2ZiOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCIKKworI2lmIFVTRShMSUJXRUJS
VEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRpb0Zvcm1hdC5oIgorI2luY2x1ZGUgIkxpYldl
YlJUQ1Byb3ZpZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQorICAgIDogbV9hdWRpb1NvdXJjZShXVEZNb3Zl
KGF1ZGlvU291cmNlKSkKKyAgICAsIG1fc2lsZW5jZUF1ZGlvVGltZXIoKnRoaXMsICZSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRTaWxlbmNlKQoreworICAgIG1fYXVkaW9Tb3VyY2Ut
PmFkZE9ic2VydmVyKCp0aGlzKTsKKyAgICBpbml0aWFsaXplQ29udmVydGVyKCk7Cit9CisKK2Jv
b2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZXRTb3VyY2UoUmVmPE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlPiYmIG5ld1NvdXJjZSkKK3sKKyAgICBtX2F1ZGlvU291cmNlLT5yZW1vdmVP
YnNlcnZlcigqdGhpcyk7CisgICAgbV9hdWRpb1NvdXJjZSA9IFdURk1vdmUobmV3U291cmNlKTsK
KyAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7CisKKyAgICBpbml0aWFsaXpl
Q29udmVydGVyKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlOjppbml0aWFsaXplQ29udmVydGVyKCkKK3sKKyAgICBtX211dGVkID0gbV9h
dWRpb1NvdXJjZS0+bXV0ZWQoKTsKKyAgICBtX2VuYWJsZWQgPSBtX2F1ZGlvU291cmNlLT5lbmFi
bGVkKCk7CisgICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOworfQorCit2b2lkIFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZTo6c3RvcCgpCit7CisgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdG9w
KCk7CisgICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOworfQorCit2b2lk
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlTXV0ZWRDaGFuZ2VkKCkKK3sKKyAg
ICBtX211dGVkID0gbV9hdWRpb1NvdXJjZS0+bXV0ZWQoKTsKKyAgICBoYW5kbGVNdXRlZElmTmVl
ZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzb3VyY2VFbmFi
bGVkQ2hhbmdlZCgpCit7CisgICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxlZCgp
OworICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2U6OmhhbmRsZU11dGVkSWZOZWVkZWQoKQoreworICAgIGJvb2wgaXNTaWxlbmNl
ZCA9IG1fbXV0ZWQgfHwgIW1fZW5hYmxlZDsKKyAgICBpZiAoaXNTaWxlbmNlZCAmJiAhbV9zaWxl
bmNlQXVkaW9UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3NpbGVuY2VBdWRpb1RpbWVyLnN0
YXJ0UmVwZWF0aW5nKDFfcyk7CisgICAgaWYgKCFpc1NpbGVuY2VkICYmIG1fc2lsZW5jZUF1ZGlv
VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdG9wKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyZTk4MTdmMWNmMjQ0
NGMzMzdkNTgyODEwMDkyZWJiYWI4YmI5ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApA
QCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
KyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTGli
V2ViUlRDTWFjcm9zLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKKyNp
bmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvbWVkaWFzdHJlYW1pbnRlcmZh
Y2UuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IHdlYnJ0YyB7CitjbGFzcyBBdWRpb1RyYWNrSW50ZXJmYWNlOworY2xhc3MgQXVkaW9UcmFja1Np
bmtJbnRlcmZhY2U7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZT4sIHB1YmxpYyB3ZWJydGM6OkF1ZGlvU291cmNlSW50ZXJmYWNl
LCBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+IGNyZWF0ZShSZWY8TWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgYXVkaW9Tb3VyY2UpOworCisgICAgflJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZSgpIHsgc3RvcCgpOyB9CisKKyAgICB2b2lkIHN0b3AoKTsKKworICAg
IGJvb2wgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7CisgICAgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Tb3Vy
Y2UuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKKworICAgIHZpcnR1YWwg
dm9pZCBBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspIHsgbV9z
aW5rcy5hcHBlbmQoc2luayk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgUmVtb3ZlU2luayh3ZWJydGM6
OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lua3MucmVtb3ZlRmlyc3Qoc2lu
ayk7IH0KKworICAgIGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7IHJlZigpOyByZXR1cm4gcmVm
Q291bnQoKTsgfQorICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmluYWwgeyBkZXJlZigpOyByZXR1
cm4gcmVmQ291bnQoKTsgfQorICAgIFNvdXJjZVN0YXRlIHN0YXRlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4ga0xpdmU7IH0KKyAgICBib29sIHJlbW90ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdm9pZCBSZWdpc3Rlck9ic2VydmVyKHdlYnJ0Yzo6T2JzZXJ2ZXJJbnRlcmZh
Y2UqKSBmaW5hbCB7IH0KKyAgICB2b2lkIFVucmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2Vy
dmVySW50ZXJmYWNlKikgZmluYWwgeyB9CisKKyAgICB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgp
OworICAgIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXVk
aW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9E
YXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgeyB9OworCisgICAg
dmlydHVhbCBib29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpIHsgcmV0
dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0Rh
dGFMb3dMaW1pdCgpIHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgYm9vbCBoYXNCdWZm
ZXJlZEVub3VnaERhdGEoKSB7IHJldHVybiBmYWxzZTsgfTsKKworICAgIC8vIE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlOjpPYnNlcnZlciBBUEkKKyAgICB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyBzb3VyY2VNdXRlZENoYW5nZWQoKTsgfQor
ICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZp
bmFsIHsgc291cmNlRW5hYmxlZENoYW5nZWQoKTsgfQorICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZh
aWxhYmxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRp
bWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KSB7IGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZShtZWRpYVRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7IH0KKyAg
ICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KKyAg
ICB2b2lkIHRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmlu
YWwgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVsbEF1ZGlvRGF0YSgpIHsgfTsKKworICAgIHZv
aWQgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNdXRlZElm
TmVlZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHNlbmRTaWxlbmNlKCkgeyB9OworCisgICAgVmVj
dG9yPHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqPiBtX3NpbmtzOworICAgIFJlZjxN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gbV9hdWRpb1NvdXJjZTsKKworICAgIGJvb2wgbV9tdXRl
ZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2VuYWJsZWQgeyB0cnVlIH07CisgICAgVGltZXIgbV9z
aWxlbmNlQXVkaW9UaW1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzUzOGNkMDU1YjRkY2E0OTky
MWIyZDUxZDgwZjA4MmViMjI2NzM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiAgICBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiAgICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAg
ICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuaCIKLQotI2lmIFVTRShMSUJXRUJSVEMpCi0KLSNpbmNsdWRlICJBdWRpb1N0
cmVhbURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgi
Ci0jaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKLSNpbmNsdWRlICJXZWJBdWRpb0J1
ZmZlckxpc3QuaCIKLSNpbmNsdWRlICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIgot
I2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+Ci0KLSNp
bmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJl
ZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+
JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQotewotICAgIGF1dG8gc291cmNl
ID0gYWRvcHRSZWYoKm5ldyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRp
b1RyYWNrKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpKSk7Ci0gICAgc291cmNlLT5zdGFydCgpOwot
ICAgIHJldHVybiBzb3VyY2U7Ci19Ci0KLVJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6UmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlv
VHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQotICAg
IDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCksIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKLSAgICAsIG1fYXVkaW9UcmFjayhXVEZN
b3ZlKGF1ZGlvVHJhY2spKQotewotICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFtX2F1ZGlvVHJhY2sp
OwotfQotCi1SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2UoKQotewotICAgIHN0b3AoKTsKLX0KLQotCi1zdGF0aWMgaW5saW5lIEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1EZXNjcmlwdGlvbihzaXplX3Qgc2FtcGxlUmF0ZSwg
c2l6ZV90IGNoYW5uZWxDb3VudCkKLXsKLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24g
c3RyZWFtRm9ybWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1Gb3JtYXQsIHNhbXBs
ZVJhdGUsIGNoYW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExp
YldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNG
bG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBMaWJXZWJSVENBdWRpb0Zv
cm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0gICAgcmV0dXJuIHN0cmVhbUZvcm1hdDsKLX0KLQot
dm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRp
b0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9m
Q2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKLXsKLSAgICAvLyBXZSBtYXkgcmVjZWl2
ZSBPbkRhdGEgY2FsbHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1wbGVzIGVxdWFs
IHRvIHplcm8gYW5kIHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4gc3RhcnRpbmcgdGhl
IGNhbGwuCi0gICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAgdGhlbSwgd2Ugc2hv
dWxkIGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVsIHRvIG5vdCBiZSBj
YWxsZWQgdW50aWwgZ2V0dGluZyBzb21lIHJlYWwgZGF0YS4KLSAgICBpZiAoc2FtcGxlUmF0ZSA9
PSAxNjAwMCAmJiBudW1iZXJPZkNoYW5uZWxzID09IDEpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEFTU0VSVChiaXRzUGVyU2FtcGxlID09IDE2KTsKLSAgICBBU1NFUlQobnVtYmVyT2ZDaGFubmVs
cyA9PSAxIHx8IG51bWJlck9mQ2hhbm5lbHMgPT0gMik7Ci0gICAgQVNTRVJUKHNhbXBsZVJhdGUg
PT0gNDgwMDApOwotCi0gICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1ha2UobV9udW1iZXJP
ZkZyYW1lcywgc2FtcGxlUmF0ZSk7Ci0gICAgYXV0byBtZWRpYVRpbWUgPSBQQUw6OnRvTWVkaWFU
aW1lKHN0YXJ0VGltZSk7Ci0gICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1iZXJPZkZyYW1lczsK
LQotICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlwdGlvbiA9IHN0cmVh
bURlc2NyaXB0aW9uKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpOwotCi0gICAgLy8gRklY
TUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5IGFsbG9jYXRpb24g
YW5kIGNvcHkuCi0gICAgLy8gSW5zdGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZGlyZWN0bHkg
cGFzcyBhdWRpb0RhdGEgcG9pbnRlci4KLSAgICBXZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9CdWZm
ZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgV1RGOjpz
YWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpIH07Ci0gICAgYXVkaW9CdWZmZXJMaXN0
LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMgKiBudW1iZXJPZkZy
YW1lcyAqIGJpdHNQZXJTYW1wbGUgLyA4OwotICAgIGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCkt
Pm1OdW1iZXJDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7Ci0KLSAgICBpZiAobXV0ZWQoKSkK
LSAgICAgICAgbWVtc2V0KGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRhLCAwLCBhdWRp
b0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKLSAgICBlbHNlCi0gICAgICAg
IG1lbWNweShhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgYXVkaW9EYXRhLCBhdWRp
b0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKLQotICAgIGF1ZGlvU2FtcGxl
c0F2YWlsYWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgbnVtYmVyT2ZGcmFtZXMpOwotfQotCi12b2lkIFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKLXsKLSAgICBpZiAo
bV9hdWRpb1RyYWNrKQotICAgICAgICBtX2F1ZGlvVHJhY2stPkFkZFNpbmsodGhpcyk7Ci19Ci0K
LXZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCi17
Ci0gICAgaWYgKG1fYXVkaW9UcmFjaykKLSAgICAgICAgbV9hdWRpb1RyYWNrLT5SZW1vdmVTaW5r
KHRoaXMpOwotfQotCi12b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNl
VHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiB0
cmFjaykKLXsKLSAgICBBU1NFUlQoIW1fYXVkaW9UcmFjayk7Ci0gICAgQVNTRVJUKHRyYWNrKTsK
LQotICAgIG1fYXVkaW9UcmFjayA9IFdURk1vdmUodHJhY2spOwotICAgIG5vdGlmeU11dGVkQ2hh
bmdlKCFtX2F1ZGlvVHJhY2spOwotICAgIGlmIChpc1Byb2R1Y2luZ0RhdGEoKSkKLSAgICAgICAg
bV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOwotfQotCi1jb25zdCBSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzJiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNhcGFiaWxpdGll
cygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6
OmVtcHR5Q2FwYWJpbGl0aWVzKCk7Ci19Ci0KLWNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXR0aW5ncygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOwotfQotCi19Ci0KLSNlbmRpZiAvLyBVU0UoTElC
V0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjYwMjIwODUxOTdmZjM5YTY4NTQ3MDFlZmIyMGZiOWUw
ZGQ0ZTQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiAgICBkaXN0cmli
dXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMg
b2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgot
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKLSNpbmNsdWRlIDxDb3JlQXVkaW8vQ29y
ZUF1ZGlvVHlwZXMuaD4KLSNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBv
cGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uICpDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOwot
Ci1jbGFzcyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UgZmluYWwgOiBwdWJsaWMgUmVhbHRp
bWVNZWRpYVNvdXJjZSwgcHJpdmF0ZSB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlIHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZT4gY3Jl
YXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0
cmluZyYmKTsKLQotICAgIHZvaWQgc2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJik7Ci0KLXByaXZhdGU6Ci0gICAgUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJ
bnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKLSAgICB+UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
KCk7Ci0KLSAgICAvLyB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlIEFQSQotICAgIHZv
aWQgT25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJTYW1wbGUsIGludCBz
YW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVz
KSBmaW5hbDsKLQotICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2UgQVBJCi0gICAgdm9pZCBzdGFy
dFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgIGZp
bmFsOwotCi0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJp
bGl0aWVzKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOwotCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzIG1fY3VycmVudFNldHRpbmdzOwotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OkF1ZGlvVHJhY2tJbnRlcmZhY2U+IG1fYXVkaW9UcmFjazsKLQotICAgIHVpbnQ2NF90IG1fbnVt
YmVyT2ZGcmFtZXMgeyAwIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTllZWYwYzMzMDQ3MWQ0YjBjOTg1YzVkZjBj
YWVjNDM3YzQ0NThiOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKQEAg
LTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2Eu
aCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0
aW9uLmgiCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAi
TGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIK
KyNpbmNsdWRlICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIgorI2luY2x1ZGUgPHBh
bC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisKKyNpbmNsdWRlICJDb3Jl
TWVkaWFTb2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFj
aywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQoreworICAgIGF1dG8gc291cmNlID0gUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF1ZGlvVHJhY2spLCBXVEZN
b3ZlKGF1ZGlvVHJhY2tJZCkpOworICAgIHNvdXJjZS0+c3RhcnQoKTsKKyAgICByZXR1cm4gc291
cmNlOworfQorCitSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E+IFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZUNvY29hOjpjcmVhdGUocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1RyYWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNr
SWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlQ29jb2EoV1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpKSk7Cit9
CisKK1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hOjpSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VDb2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJm
YWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkKKyAgICA6IFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2spLCBXVEZNb3ZlKGF1ZGlvVHJh
Y2tJZCkpCit7Cit9CisKKworc3RhdGljIGlubGluZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24gc3RyZWFtRGVzY3JpcHRpb24oc2l6ZV90IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291
bnQpCit7CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKKyAg
ICBGaWxsT3V0QVNCREZvckxQQ00oc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlLCBjaGFubmVsQ291
bnQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1h
dDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzRmxvYXQsIExpYldlYlJUQ0F1
ZGlvRm9ybWF0Ojppc0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzTm9uSW50ZXJs
ZWF2ZWQpOworICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7Cit9CisKK3ZvaWQgUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlQ29jb2E6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBi
aXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNp
emVfdCBudW1iZXJPZkZyYW1lcykKK3sKKyAgICAvLyBXZSBtYXkgcmVjZWl2ZSBPbkRhdGEgY2Fs
bHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1wbGVzIGVxdWFsIHRvIHplcm8gYW5k
IHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4gc3RhcnRpbmcgdGhlIGNhbGwuCisgICAg
Ly8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAgdGhlbSwgd2Ugc2hvdWxkIGZpbmQgYSBi
ZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVsIHRvIG5vdCBiZSBjYWxsZWQgdW50aWwg
Z2V0dGluZyBzb21lIHJlYWwgZGF0YS4KKyAgICBpZiAoc2FtcGxlUmF0ZSA9PSAxNjAwMCAmJiBu
dW1iZXJPZkNoYW5uZWxzID09IDEpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChiaXRz
UGVyU2FtcGxlID09IDE2KTsKKyAgICBBU1NFUlQobnVtYmVyT2ZDaGFubmVscyA9PSAxIHx8IG51
bWJlck9mQ2hhbm5lbHMgPT0gMik7CisgICAgQVNTRVJUKHNhbXBsZVJhdGUgPT0gNDgwMDApOwor
CisgICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1ha2UobV9udW1iZXJPZkZyYW1lcywgc2Ft
cGxlUmF0ZSk7CisgICAgYXV0byBtZWRpYVRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKHN0YXJ0VGlt
ZSk7CisgICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1iZXJPZkZyYW1lczsKKworICAgIEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlwdGlvbiA9IHN0cmVhbURlc2NyaXB0aW9u
KHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpOworCisgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBub3QgbmVlZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGNvcHkuCisg
ICAgLy8gSW5zdGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZGlyZWN0bHkgcGFzcyBhdWRpb0Rh
dGEgcG9pbnRlci4KKyAgICBXZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9CdWZmZXJMaXN0IHsgQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgV1RGOjpzYWZlQ2FzdDx1aW50
MzJfdD4obnVtYmVyT2ZGcmFtZXMpIH07CisgICAgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+
bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMgKiBudW1iZXJPZkZyYW1lcyAqIGJpdHNQ
ZXJTYW1wbGUgLyA4OworICAgIGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1OdW1iZXJDaGFu
bmVscyA9IG51bWJlck9mQ2hhbm5lbHM7CisKKyAgICBpZiAobXV0ZWQoKSkKKyAgICAgICAgbWVt
c2V0KGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRhLCAwLCBhdWRpb0J1ZmZlckxpc3Qu
YnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKKyAgICBlbHNlCisgICAgICAgIG1lbWNweShhdWRp
b0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgYXVkaW9EYXRhLCBhdWRpb0J1ZmZlckxpc3Qu
YnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKKworICAgIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZSht
ZWRpYVRpbWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rl
c2NyaXB0aW9uKSwgbnVtYmVyT2ZGcmFtZXMpOworfQorCit9CisKKyNlbmRpZiAvLyBVU0UoTElC
V0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2Eu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMDEwNDc1ZTVlY2EyZmZjOTE0MzAzNDcxYjY1ZmIxYTg5N2RhYmE3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmgKQEAgLTAsMCArMSw1NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
ICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJ
QldFQlJUQykKKworI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIgorCisj
aW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+CisKK3R5cGVkZWYgY29uc3Qgc3Ry
dWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9ybWF0RGVzY3JpcHRpb25SZWY7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9i
akM7CisKK2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hIGZpbmFsIDogcHVi
bGljIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYT4gY3JlYXRlKHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKKworcHJpdmF0
ZToKKyAgICBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYShydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CisKKyAgICAvLyB3
ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlIEFQSQorICAgIHZvaWQgT25EYXRhKGNvbnN0
IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJTYW1wbGUsIGludCBzYW1wbGVSYXRlLCBzaXpl
X3QgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzKSBmaW5hbDsKKworICAg
IHVpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDkx
MDFkYzQzNzkxN2Q1MTBlNzRiZmM3NzUxYzdjNzBjN2RjMjJhNC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZS5oIgotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkNBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCi0jaW5j
bHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0
aWMgaW5saW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBsaWJ3ZWJydGNBdWRpb0Zvcm1h
dChGbG9hdDY0IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291bnQpCi17Ci0gICAgLy8gRklY
TUU6IE1pY3JvcGhvbmVzIGNhbiBoYXZlIG1vcmUgdGhhbiB0d28gY2hhbm5lbHMuIEluIHN1Y2gg
Y2FzZSwgd2Ugc2hvdWxkIGRvIHRoZSBtaXggZG93biBiYXNlZCBvbiBBdWRpb0NoYW5uZWxMYXlv
dXRUYWcuCi0gICAgc2l6ZV90IGxpYldlYlJUQ0NoYW5uZWxDb3VudCA9IGNoYW5uZWxDb3VudCA+
PSAyID8gMiA6IGNoYW5uZWxDb3VudDsKLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24g
c3RyZWFtRm9ybWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1Gb3JtYXQsIHNhbXBs
ZVJhdGUsIGxpYldlYlJUQ0NoYW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBs
ZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zv
cm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBMaWJXZWJS
VENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0gICAgcmV0dXJuIHN0cmVhbUZvcm1h
dDsKLX0KLQotUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQotICAg
IDogbV9hdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkKLSAgICAsIG1fc2FtcGxlQ29u
dmVydGVyKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRlKExpYldlYlJUQ0F1ZGlvRm9ybWF0
OjpzYW1wbGVSYXRlICogMikpCi0gICAgLCBtX3NpbGVuY2VBdWRpb1RpbWVyKCp0aGlzLCAmUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5jZSkKLXsKLSAgICBtX2F1ZGlvU291
cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7Ci0gICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwotfQot
Ci1ib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCi17Ci0gICAgbV9hdWRpb1NvdXJjZS0+cmVt
b3ZlT2JzZXJ2ZXIoKnRoaXMpOwotICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJj
ZSk7Ci0gICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwotCi0gICAgaW5pdGlh
bGl6ZUNvbnZlcnRlcigpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRlcigpCi17Ci0gICAgbV9tdXRlZCA9
IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7Ci0gICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+
ZW5hYmxlZCgpOwotICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKLX0KLQotdm9pZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQotewotICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIu
c3RvcCgpOwotICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKLX0KLQot
dm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCi17
Ci0gICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7Ci0gICAgaGFuZGxlTXV0ZWRJ
Zk5lZWRlZCgpOwotfQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNl
RW5hYmxlZENoYW5nZWQoKQotewotICAgIG1fZW5hYmxlZCA9IG1fYXVkaW9Tb3VyY2UtPmVuYWJs
ZWQoKTsKLSAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVkKCkKLXsKLSAgICBib29sIGlzU2ls
ZW5jZWQgPSBtX211dGVkIHx8ICFtX2VuYWJsZWQ7Ci0gICAgbV9zYW1wbGVDb252ZXJ0ZXItPnNl
dE11dGVkKGlzU2lsZW5jZWQpOwotICAgIGlmIChpc1NpbGVuY2VkICYmICFtX3NpbGVuY2VBdWRp
b1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RhcnRSZXBl
YXRpbmcoMV9zKTsKLSAgICBpZiAoIWlzU2lsZW5jZWQgJiYgbV9zaWxlbmNlQXVkaW9UaW1lci5p
c0FjdGl2ZSgpKQotICAgICAgICBtX3NpbGVuY2VBdWRpb1RpbWVyLnN0b3AoKTsKLX0KLQotdm9p
ZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRTaWxlbmNlKCkKLXsKLSAgICBMaWJX
ZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgc2l6ZV90IGNodW5rU2FtcGxlQ291
bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKLSAgICAg
ICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVkaW9G
b3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJP
ZkNoYW5uZWxzKCk7Ci0KLSAgICAgICAgaWYgKCFidWZmZXJTaXplKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKLSAgICAgICAg
bWVtc2V0KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCAwLCBidWZmZXJTaXplKTsKLSAgICAgICAgZm9y
IChhdXRvIHNpbmsgOiBtX3NpbmtzKQotICAgICAgICAgICAgc2luay0+T25EYXRhKG1fYXVkaW9C
dWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRwdXRT
dHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24u
bnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsKLSAgICB9KTsKLX0KLQotYm9v
bCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0
YUhpZ2hMaW1pdCgpCi17Ci0gICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVD
b3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAgYXV0byBy
ZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlv
bi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVh
ZEF1ZGlvRHVyYXRpb24pOwotICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+IHJlYWRB
dWRpb0R1cmF0aW9uICsgMC41OwotfQotCi1ib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZTo6aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGltaXQoKQotewotICAgIGF1dG8gd3Jp
dHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBtX2lucHV0U3RyZWFtRGVzY3JpcHRp
b24uc2FtcGxlUmF0ZSgpOwotICAgIGF1dG8gcmVhZEF1ZGlvRHVyYXRpb24gPSBtX3JlYWRDb3Vu
dCAvIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotCi0gICAgQVNTRVJU
KHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1cmF0aW9uKTsKLSAgICByZXR1cm4g
d3JpdHRlbkF1ZGlvRHVyYXRpb24gPCByZWFkQXVkaW9EdXJhdGlvbiArIDAuMTsKLX0KLQotYm9v
bCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6Omhhc0J1ZmZlcmVkRW5nb3VoRGF0YSgpCi17
Ci0gICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRT
dHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAgYXV0byByZWFkQXVkaW9EdXJhdGlv
biA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7
Ci0KLSAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24p
OwotICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbiAr
IDAuMDE7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjphdWRpb1NhbXBs
ZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1
ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgc3RyZWFtRGVzY3JpcHRpb24s
IHNpemVfdCBzYW1wbGVDb3VudCkKLXsKLSAgICBpZiAobV9pbnB1dFN0cmVhbURlc2NyaXB0aW9u
ICE9IHN0cmVhbURlc2NyaXB0aW9uKSB7Ci0gICAgICAgIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlv
biA9IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKHN0cmVhbURlc2NyaXB0aW9uKTsKLSAgICAg
ICAgYXV0byBzdGF0dXMgID0gbV9zYW1wbGVDb252ZXJ0ZXItPnNldElucHV0Rm9ybWF0KG1faW5w
dXRTdHJlYW1EZXNjcmlwdGlvbik7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCAhc3Rh
dHVzKTsKLQotICAgICAgICBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uID0gbGlid2VicnRjQXVk
aW9Gb3JtYXQoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUsIHN0cmVhbURlc2NyaXB0
aW9uLm51bWJlck9mQ2hhbm5lbHMoKSk7Ci0gICAgICAgIHN0YXR1cyA9IG1fc2FtcGxlQ29udmVy
dGVyLT5zZXRPdXRwdXRGb3JtYXQobV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zdHJlYW1EZXNj
cmlwdGlvbigpKTsKLSAgICAgICAgQVNTRVJUKCFzdGF0dXMpOwotICAgIH0KLQotICAgIC8vIExl
dCdzIHNraXAgcHVzaGluZyBzYW1wbGVzIGlmIHdlIGFyZSB0b28gc2xvdyBwdWxsaW5nIHRoZW0u
Ci0gICAgaWYgKG1fc2tpcHBpbmdBdWRpb0RhdGEpIHsKLSAgICAgICAgaWYgKCFpc1JlYWNoaW5n
QnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBtX3NraXBwaW5nQXVkaW9EYXRhID0gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChpc1JlYWNoaW5n
QnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSkgewotICAgICAgICBtX3NraXBwaW5nQXVkaW9E
YXRhID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIElmIHdlIGNoYW5n
ZSB0aGUgYXVkaW8gdHJhY2sgb3IgaXRzIHNhbXBsZSByYXRlIGNoYW5nZXMsIHRoZSB0aW1lc3Rh
bXAgYmFzZWQgb24gbV93cml0ZUNvdW50IG1heSBiZSB3cm9uZy4KLSAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHVwZGF0ZSBtX3dyaXRlQ291bnQgdG8gYmUgdmFsaWQgYWNjb3JkaW5nIHRoZSBuZXcg
c2FtcGxlUmF0ZS4KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVzaFNhbXBsZXMoTWVkaWFUaW1l
KG1fd3JpdGVDb3VudCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faW5wdXRTdHJlYW1EZXNjcmlw
dGlvbi5zYW1wbGVSYXRlKCkpKSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7Ci0gICAgbV93cml0
ZUNvdW50ICs9IHNhbXBsZUNvdW50OwotCi0gICAgaWYgKCFoYXNCdWZmZXJlZEVuZ291aERhdGEo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJU
Q1NpZ25hbGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAg
ICAgIHByb3RlY3RlZFRoaXMtPnB1bGxBdWRpb0RhdGEoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnB1bGxBdWRpb0RhdGEoKQotewotICAgIC8vIGxp
YndlYnJ0YyBleHBlY3RzIDEwIG1zIGNodW5rcy4KLSAgICBzaXplX3QgY2h1bmtTYW1wbGVDb3Vu
dCA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpIC8gMTAwOwotICAgIHNp
emVfdCBidWZmZXJTaXplID0gY2h1bmtTYW1wbGVDb3VudCAqIExpYldlYlJUQ0F1ZGlvRm9ybWF0
OjpzYW1wbGVCeXRlU2l6ZSAqIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFu
bmVscygpOwotICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKLQotICAgIEF1ZGlv
QnVmZmVyTGlzdCBidWZmZXJMaXN0OwotICAgIGJ1ZmZlckxpc3QubU51bWJlckJ1ZmZlcnMgPSAx
OwotICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gbV9vdXRwdXRT
dHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7Ci0gICAgYnVmZmVyTGlzdC5tQnVm
ZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gYnVmZmVyU2l6ZTsKLSAgICBidWZmZXJMaXN0Lm1CdWZm
ZXJzWzBdLm1EYXRhID0gbV9hdWRpb0J1ZmZlci5kYXRhKCk7Ci0KLSAgICBtX3NhbXBsZUNvbnZl
cnRlci0+cHVsbEF2YWxhaWJsZVNhbXBsZXNBc0NodW5rcyhidWZmZXJMaXN0LCBjaHVua1NhbXBs
ZUNvdW50LCBtX3JlYWRDb3VudCwgW3RoaXMsIGNodW5rU2FtcGxlQ291bnRdIHsKLSAgICAgICAg
bV9yZWFkQ291bnQgKz0gY2h1bmtTYW1wbGVDb3VudDsKLSAgICAgICAgZm9yIChhdXRvIHNpbmsg
OiBtX3NpbmtzKQotICAgICAgICAgICAgc2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgp
LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlw
dGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFu
bmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsKLSAgICB9KTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGViYzgw
NGU0OTU4NTMwYmU2NjAyZmZkNjFhMmI1M2M3ZWI2ZTU3NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0Ogot
ICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkF1ZGlvU2Ft
cGxlRGF0YVNvdXJjZS5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgotI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRl
IDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotY2xhc3MgQXVkaW9UcmFj
a0ludGVyZmFjZTsKLWNsYXNzIEF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlOwotfQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSBmaW5hbCA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+
LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwgcHJpdmF0ZSBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
PiYmIGF1ZGlvU291cmNlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkpOyB9Ci0gICAgflJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZSgpIHsgc3RvcCgpOyB9Ci0KLSAgICB2b2lkIHN0b3AoKTsKLQotICAgIGJv
b2wgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7Ci0gICAgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Tb3VyY2Uu
Z2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKLQotICAgIHZpcnR1YWwgdm9p
ZCBBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspIHsgbV9zaW5r
cy5hcHBlbmQoc2luayk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgUmVtb3ZlU2luayh3ZWJydGM6OkF1
ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lua3MucmVtb3ZlRmlyc3Qoc2luayk7
IH0KLQotICAgIGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7IHJlZigpOyByZXR1cm4gcmVmQ291
bnQoKTsgfQotICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmluYWwgeyBkZXJlZigpOyByZXR1cm4g
cmVmQ291bnQoKTsgfQotICAgIFNvdXJjZVN0YXRlIHN0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4ga0xpdmU7IH0KLSAgICBib29sIHJlbW90ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdm9pZCBSZWdpc3Rlck9ic2VydmVyKHdlYnJ0Yzo6T2JzZXJ2ZXJJbnRlcmZhY2Uq
KSBmaW5hbCB7IH0KLSAgICB2b2lkIFVucmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2VydmVy
SW50ZXJmYWNlKikgZmluYWwgeyB9Ci0KLSAgICB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgpOwot
ICAgIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKTsKLSAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwotCi0gICAgYm9vbCBpc1JlYWNoaW5n
QnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKTsKLSAgICBib29sIGlzUmVhY2hpbmdCdWZmZXJl
ZEF1ZGlvRGF0YUxvd0xpbWl0KCk7Ci0gICAgYm9vbCBoYXNCdWZmZXJlZEVuZ291aERhdGEoKTsK
LQotICAgIC8vIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciBBUEkKLSAgICB2b2lk
IHRyYWNrTXV0ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyBzb3Vy
Y2VNdXRlZENoYW5nZWQoKTsgfQotICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hhbmdlZChNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlRW5hYmxlZENoYW5nZWQoKTsgfQotICAg
IHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgY29u
c3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBj
b25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNv
dW50KSBmaW5hbCB7IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGRhdGEsIGRlc2Ny
aXB0aW9uLCBzYW1wbGVDb3VudCk7IH0KLSAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KLSAgICB2b2lkIHRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9Ci0KLSAgICB2b2lkIHB1bGxBdWRpb0Rh
dGEoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwotICAgIHZvaWQgaGFuZGxl
TXV0ZWRJZk5lZWRlZCgpOwotICAgIHZvaWQgc2VuZFNpbGVuY2UoKTsKLQotICAgIFZlY3Rvcjx3
ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9zaW5rczsKLSAgICBSZWY8TWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7Ci0gICAgUmVmPEF1ZGlvU2FtcGxlRGF0
YVNvdXJjZT4gbV9zYW1wbGVDb252ZXJ0ZXI7Ci0gICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
IG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbjsKLSAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24g
bV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbjsKLQotICAgIFZlY3Rvcjx1aW50OF90PiBtX2F1ZGlv
QnVmZmVyOwotICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsgMCB9OwotICAgIHVpbnQ2NF90IG1f
d3JpdGVDb3VudCB7IDAgfTsKLSAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wg
bV9lbmFibGVkIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9za2lwcGluZ0F1ZGlvRGF0YSB7IGZhbHNl
IH07Ci0gICAgVGltZXIgbV9zaWxlbmNlQXVkaW9UaW1lcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTJiODhhZjgw
ZjQ3ZGE3YmExZDRiYzE4NGM1YjBlOThjMjA0ZWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZUNvY29hLmNwcApAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVx
dWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICog
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmgiCisK
KyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
LmgiCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJS
VENQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgQXVk
aW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIGxpYndlYnJ0Y0F1ZGlvRm9ybWF0KEZsb2F0NjQgc2Ft
cGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKK3sKKyAgICAvLyBGSVhNRTogTWljcm9waG9u
ZXMgY2FuIGhhdmUgbW9yZSB0aGFuIHR3byBjaGFubmVscy4gSW4gc3VjaCBjYXNlLCB3ZSBzaG91
bGQgZG8gdGhlIG1peCBkb3duIGJhc2VkIG9uIEF1ZGlvQ2hhbm5lbExheW91dFRhZy4KKyAgICBz
aXplX3QgbGliV2ViUlRDQ2hhbm5lbENvdW50ID0gY2hhbm5lbENvdW50ID49IDIgPyAyIDogY2hh
bm5lbENvdW50OworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7
CisgICAgRmlsbE91dEFTQkRGb3JMUENNKHN0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSwgbGliV2Vi
UlRDQ2hhbm5lbENvdW50LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2Vi
UlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0Zsb2F0
LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNCaWdFbmRpYW4sIExpYldlYlJUQ0F1ZGlvRm9ybWF0
Ojppc05vbkludGVybGVhdmVkKTsKKyAgICByZXR1cm4gc3RyZWFtRm9ybWF0OworfQorCitSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQorICAgIDog
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFdURk1vdmUoYXVkaW9Tb3VyY2UpKQorICAgICwg
bV9zYW1wbGVDb252ZXJ0ZXIoQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoTGliV2ViUlRD
QXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUgKiAyKSkKK3sKK30KKworUmVmPFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZT4gUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpjcmVhdGUoUmVmPE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQoreworICAgIHJldHVybiBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6Y3JlYXRlKFdURk1vdmUoYXVkaW9Tb3VyY2Up
KTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6aGFuZGxlTXV0
ZWRJZk5lZWRlZCgpCit7CisgICAgYm9vbCBpc1NpbGVuY2VkID0gbV9tdXRlZCB8fCAhbV9lbmFi
bGVkOworICAgIG1fc2FtcGxlQ29udmVydGVyLT5zZXRNdXRlZChpc1NpbGVuY2VkKTsKKworICAg
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpoYW5kbGVNdXRlZElmTmVlZGVkKCk7
Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OnNlbmRTaWxlbmNl
KCkKK3sKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFk
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2l6ZV90
IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUo
KSAvIDEwMDsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNvdW50ICog
TGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7CisKKyAgICAgICAgaWYgKCFidWZmZXJTaXplKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZmZXJT
aXplKTsKKyAgICAgICAgbWVtc2V0KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCAwLCBidWZmZXJTaXpl
KTsKKyAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQorICAgICAgICAgICAgc2luay0+
T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxl
U2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0U3Ry
ZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsKKyAg
ICB9KTsKK30KKworYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6aXNSZWFj
aGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCkKK3sKKyAgICBhdXRvIHdyaXR0ZW5BdWRp
b0R1cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBs
ZVJhdGUoKTsKKyAgICBhdXRvIHJlYWRBdWRpb0R1cmF0aW9uID0gbV9yZWFkQ291bnQgLyBtX291
dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKworICAgIEFTU0VSVCh3cml0dGVu
QXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbik7CisgICAgcmV0dXJuIHdyaXR0ZW5B
dWRpb0R1cmF0aW9uID4gcmVhZEF1ZGlvRHVyYXRpb24gKyAwLjU7Cit9CisKK2Jvb2wgUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxv
d0xpbWl0KCkKK3sKKyAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID0gbV93cml0ZUNvdW50
IC8gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKyAgICBhdXRvIHJlYWRB
dWRpb0R1cmF0aW9uID0gbV9yZWFkQ291bnQgLyBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNh
bXBsZVJhdGUoKTsKKworICAgIEFTU0VSVCh3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVk
aW9EdXJhdGlvbik7CisgICAgcmV0dXJuIHdyaXR0ZW5BdWRpb0R1cmF0aW9uIDwgcmVhZEF1ZGlv
RHVyYXRpb24gKyAwLjE7Cit9CisKK2Jvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29j
b2E6Omhhc0J1ZmZlcmVkRW5vdWdoRGF0YSgpCit7CisgICAgYXV0byB3cml0dGVuQXVkaW9EdXJh
dGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRl
KCk7CisgICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRT
dHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisKKyAgICBBU1NFUlQod3JpdHRlbkF1ZGlv
RHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOworICAgIHJldHVybiB3cml0dGVuQXVkaW9E
dXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbiArIDAuMDE7Cit9CisKK3ZvaWQgUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRp
YVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiBzdHJlYW1EZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KQor
eworICAgIGlmIChtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24gIT0gc3RyZWFtRGVzY3JpcHRpb24p
IHsKKyAgICAgICAgbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uID0gdG9DQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24oc3RyZWFtRGVzY3JpcHRpb24pOworICAgICAgICBhdXRvIHN0YXR1cyAgPSBtX3Nh
bXBsZUNvbnZlcnRlci0+c2V0SW5wdXRGb3JtYXQobV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uKTsK
KyAgICAgICAgQVNTRVJUX1VOVVNFRChzdGF0dXMsICFzdGF0dXMpOworCisgICAgICAgIG1fb3V0
cHV0U3RyZWFtRGVzY3JpcHRpb24gPSBsaWJ3ZWJydGNBdWRpb0Zvcm1hdChMaWJXZWJSVENBdWRp
b0Zvcm1hdDo6c2FtcGxlUmF0ZSwgc3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygp
KTsKKyAgICAgICAgc3RhdHVzID0gbV9zYW1wbGVDb252ZXJ0ZXItPnNldE91dHB1dEZvcm1hdCht
X291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCkpOworICAgICAgICBB
U1NFUlQoIXN0YXR1cyk7CisgICAgfQorCisgICAgLy8gTGV0J3Mgc2tpcCBwdXNoaW5nIHNhbXBs
ZXMgaWYgd2UgYXJlIHRvbyBzbG93IHB1bGxpbmcgdGhlbS4KKyAgICBpZiAobV9za2lwcGluZ0F1
ZGlvRGF0YSkgeworICAgICAgICBpZiAoIWlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xp
bWl0KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc2tpcHBpbmdBdWRpb0RhdGEg
PSBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hM
aW1pdCgpKSB7CisgICAgICAgIG1fc2tpcHBpbmdBdWRpb0RhdGEgPSB0cnVlOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gSWYgd2UgY2hhbmdlIHRoZSBhdWRpbyB0cmFjayBvciBp
dHMgc2FtcGxlIHJhdGUgY2hhbmdlcywgdGhlIHRpbWVzdGFtcCBiYXNlZCBvbiBtX3dyaXRlQ291
bnQgbWF5IGJlIHdyb25nLgorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXBkYXRlIG1fd3JpdGVD
b3VudCB0byBiZSB2YWxpZCBhY2NvcmRpbmcgdGhlIG5ldyBzYW1wbGVSYXRlLgorICAgIG1fc2Ft
cGxlQ29udmVydGVyLT5wdXNoU2FtcGxlcyhNZWRpYVRpbWUobV93cml0ZUNvdW50LCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4obV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSkpLCBh
dWRpb0RhdGEsIHNhbXBsZUNvdW50KTsKKyAgICBtX3dyaXRlQ291bnQgKz0gc2FtcGxlQ291bnQ7
CisKKyAgICBpZiAoIWhhc0J1ZmZlcmVkRW5nb3VoRGF0YSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+cHVs
bEF1ZGlvRGF0YSgpOworICAgIH0pOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZUNvY29hOjpwdWxsQXVkaW9EYXRhKCkKK3sKKyAgICAvLyBsaWJ3ZWJydGMgZXhwZWN0cyAx
MCBtcyBjaHVua3MuCisgICAgc2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVh
bURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKKyAgICBzaXplX3QgYnVmZmVyU2l6ZSA9
IGNodW5rU2FtcGxlQ291bnQgKiBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlQnl0ZVNpemUg
KiBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKTsKKyAgICBtX2F1
ZGlvQnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7CisKKyAgICBBdWRpb0J1ZmZlckxpc3QgYnVmZmVy
TGlzdDsKKyAgICBidWZmZXJMaXN0Lm1OdW1iZXJCdWZmZXJzID0gMTsKKyAgICBidWZmZXJMaXN0
Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24u
bnVtYmVyT2ZDaGFubmVscygpOworICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFCeXRl
U2l6ZSA9IGJ1ZmZlclNpemU7CisgICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YSA9IG1f
YXVkaW9CdWZmZXIuZGF0YSgpOworCisgICAgbV9zYW1wbGVDb252ZXJ0ZXItPnB1bGxBdmFsYWli
bGVTYW1wbGVzQXNDaHVua3MoYnVmZmVyTGlzdCwgY2h1bmtTYW1wbGVDb3VudCwgbV9yZWFkQ291
bnQsIFt0aGlzLCBjaHVua1NhbXBsZUNvdW50XSB7CisgICAgICAgIG1fcmVhZENvdW50ICs9IGNo
dW5rU2FtcGxlQ291bnQ7CisgICAgICAgIGZvciAoYXV0byBzaW5rIDogbV9zaW5rcykKKyAgICAg
ICAgICAgIHNpbmstPk9uRGF0YShtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgTGliV2ViUlRDQXVkaW9G
b3JtYXQ6OnNhbXBsZVNpemUsIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgp
LCBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSwgY2h1bmtTYW1w
bGVDb3VudCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhNzA0MzAyMjkyZmIxMDc4MTU5YTJhOWQxNTAxODI4
ZjgxMjA2OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaApAQCAtMCwwICsx
LDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisg
KiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMpCisK
KyNpbmNsdWRlICJBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCIKKyNpbmNsdWRlICJSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2UuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CitjbGFzcyBBdWRpb1Ry
YWNrSW50ZXJmYWNlOworY2xhc3MgQXVkaW9UcmFja1NpbmtJbnRlcmZhY2U7Cit9CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2Eg
ZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlQ29jb2E+LCBwdWJsaWMgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hPiBjcmVh
dGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hKFdURk1vdmUoYXVk
aW9Tb3VyY2UpKSk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2VDb2NvYShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOworCisgICAg
dm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5h
bDsKKworICAgIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCkgZmlu
YWw7CisgICAgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpIGZpbmFs
OworICAgIGJvb2wgaGFzQnVmZmVyZWRFbm91Z2hEYXRhKCkgZmluYWw7CisKKyAgICB2b2lkIHB1
bGxBdWRpb0RhdGEoKSBmaW5hbDsKKworICAgIHZvaWQgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpIGZp
bmFsOworICAgIHZvaWQgc2VuZFNpbGVuY2UoKSBmaW5hbDsKKworICAgIFJlZjxBdWRpb1NhbXBs
ZURhdGFTb3VyY2U+IG1fc2FtcGxlQ29udmVydGVyOworICAgIENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb247CisgICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb247CisKKyAgICBWZWN0b3I8dWludDhfdD4gbV9h
dWRpb0J1ZmZlcjsKKyAgICB1aW50NjRfdCBtX3JlYWRDb3VudCB7IDAgfTsKKyAgICB1aW50NjRf
dCBtX3dyaXRlQ291bnQgeyAwIH07CisgICAgYm9vbCBtX3NraXBwaW5nQXVkaW9EYXRhIHsgZmFs
c2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShMSUJX
RUJSVEMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323687</attachid>
            <date>2017-10-13 09:51:46 -0700</date>
            <delta_ts>2017-10-13 10:12:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177928-20171013185145.patch</filename>
            <type>text/plain</type>
            <size>70697</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkzODIyMzA3YzA4MTkz
ODNhYjVjNDliNDQxNTFlNWFkODFkNWFmMy4uODg2OTExNjJiZWQ0YTcyYjE3NTg2NzY1ODI3Mzll
N2JmOTNjZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTEwLTEyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlcyBhbmQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlcyBw
b3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciB0aGUgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGFuZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgY2xhc3NlcywKKyAgICAgICAgbW92ZSB0aGUgbWFjIHNwZWNp
ZmljIGNvZGUgdG8gYSBkaWZmZXJlbnQgY2xhc3MuIFRoaXMgd2F5IHdlIGNhbiB1c2UgdGhlbSBm
cm9tCisgICAgICAgIG90aGVyIHBvcnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgd2UgYXJl
IG5vdCBhZGRpbmcgbmV3IGZ1bmN0aW9uYWxpdHkganVzdCByZWZhY3RvcmluZy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmguIEp1c3QgdGhlIHBvcnQg
YWdub3N0aWMgcGFydHMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaC4gRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAuIERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmguIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6IEFkZGVkLCBpdCBhZGRzIENv
Y29hIGNvZGUgcGFydHMgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhpcyBm
dW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUgdG8g
YXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBBZGRl
ZCBDb2NvYSBjb2RlIGZyb20gb3JpZ2luYWwgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6
IEFkZGVkIENvY29hIGNvZGUgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhp
cyBmdW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUg
dG8gYXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBB
ZGRlZCBDb2NvYSBjb2RlIGZyb20gdGhlIG9yaWdpbmFsIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaC4KKwogMjAxNy0x
MC0wNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbV2luQ2Fpcm9dIEZpeCBidWlsZCBhZnRlciBCdWcgMTY3OTU2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDdmMjJlNTE2Zjk3YTI5N2RkNTQ4ZTc1Y2VlMDg3N2ExYzU2MjVmMWEuLmE4NDQxYmY0
Y2IyYmZhNTNhNWMyMjY4MDc3ZjE2NzcxMjAzNWMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yNTQ4LDkgKzI1NDgsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAKICAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcAogICAg
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3Bw
CisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCiAgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKICAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCisgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAogCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmY4Njg4YmMzZDlkNmU0MWU4MmRlNjY2OGIyYjlmYzViYjA4ZDM3Yy4uMjk5Yjc2NmM2
MTZjMGQzZTFiYjhlYWRlYTY3NjAxYzdiYjA0NDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5Niw4ICsxNjk2LDEyIEBA
CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEw
NDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTEw
M0FBQjFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovOyB9Owog
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
ODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggKi87IH07
CisJCTQxMTAzQUFCMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovOyB9OworCQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE4MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovOyB9OwogCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMDMg
LyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi87IH07CiAJCTQxMTAzQUFFMUUzOTc5MTAwMDc2OUYw
MyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQUExRTM5NzkwQTAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi87IH07CisJCTQxMTAzQUFEMUUzOTc5MTAw
MDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTkxRTM5NzkwQTAwNzY5
RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggKi87IH07CisJCTQxMTAz
QUFFMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
QTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3Bw
ICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2ViQ29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOUIx
QTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTQxMjMwOTEz
MTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGODIxNjI5OTAyOUY0RkI1MDEw
MDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTI3RDUzNzBGOEFB
QjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0
YXRlLmNwcCAqLzsgfTsKQEAgLTk0NzIsOCArOTQ3NiwxMiBAQAogCQk0MTBCN0U3MTEwNDVGQUIw
MDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMTAzQUE4MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE4MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBOTFFMzk3OTBBMDA3
NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIz
MjgwMEI5M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMyODAwQjk1NjcyIC8qIFJlYWRhYmxl
U3RyZWFtQllPQlJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtQllPQlJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0OTcs
NiArMTY1MDUsOCBAQAogCQkJCTA3RkZERTY2MTgxQUVENDIwMDcyRDQwOSAvKiBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZS5jcHAgKi8sCiAJCQkJMDdGRkRFNjcxODFBRUQ0MjAwNzJENDA5IC8qIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggKi8sCiAJCQkJNUVCQjg5MzgxQzc3QkRBNDAwQzY1RDQx
IC8qIFBlZXJNZWRpYURlc2NyaXB0aW9uLmggKi8sCisJCQkJNDExMDNBQUExRTM5NzkwQTAwNzY5
RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi8sCisJCQkJNDExMDNBQTkx
RTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oICovLAogCQkJ
CTRBNEY2NTZCMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLywK
IAkJCQk0QTRGNjU2QzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oICov
LAogCQkJCTRBNEY2NTZEMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzLmggKi8sCkBAIC0xNjUwNiw2ICsxNjUxNiw4IEBACiAJCQkJNEE0RjY1NkYxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovLAogCQkJCTJF
QzQxREUyMUMwNDEwQTMwMEQyOTRGRSAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuY3BwICovLAogCQkJCTA3QzFDMEU0MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLywKKwkJCQk0MTEwM0FBNzFFMzk3
OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCAqLywKKwkJCQk0
MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgg
Ki8sCiAJCQkJMzEzNTkxMEMxRTdERENCNjAwRjMwNjMwIC8qIFJUQ0J1bmRsZVBvbGljeS5oICov
LAogCQkJCTA3MjIxQkEyMTdDRjBBRDQwMDg0OEU1MSAvKiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCAqLywKIAkJCQkwNzIyMUJBMzE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50LmggKi8sCkBAIC0xNjU1NCwxNCArMTY1NjYsMTQgQEAKIAkJCQkwNzQ0RUNFQzFF
MEM0QUU1MDAwRDA5NDQgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJ
MDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgg
Ki8sCiAJCQkJMDdFRTc2RUUxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tICovLAotCQkJCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwICovLAotCQkJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAv
KiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCAqLywKKwkJCQk0MTEwM0FBQTFFMzk3OTBB
MDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwICovLAorCQkJ
CTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5oICovLAogCQkJCTVDREQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2UuY3BwICovLAogCQkJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLywKIAkJCQk0QTBGRkFBMzFBQUY1RUY2MDA2
MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgKi8sCiAJCQkJNEEwRkZB
QTQxQUFGNUVGNjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCAqLywK
LQkJCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcCAqLywKLQkJCQk0MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggKi8sCisJCQkJNDExMDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCAqLywKKwkJCQk0MTEwM0FBODFFMzk3
OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCAqLywKIAkJ
CQk1Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmNwcCAqLywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8sCkBAIC0yOTYxNCw2ICsyOTYyNiw3IEBACiAJ
CQkJNDEyOUM5QUIxRjU5QzU3MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAzQzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFs
eXNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExMDNBQUQxRTM5NzkxMDAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDExMDNBQUQx
RTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8q
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRB
MEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NjIxLDYgKzI5NjM0LDcgQEAKIAkJCQk0QTRGNjU3NDFBQTk5N0Yx
MDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBQzFFMzk3OTEwMDA3
NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQjk1MjI0MUY1OEE1OEYwMDkzMURDMiAvKiBS
ZWNvcmRpbmdTd2l6emxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2OEU4MEMyMjZF
MzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1ODE3NUQ0MTRD
MDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1ODIsNiAr
MzM1OTYsNyBAQAogCQkJCTQxMjlDOThBMUY1ODdGRUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVh
bVNpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwM0IxMkIwMjY3NjAwQzFBMzU5IC8q
IFJlYWx0aW1lQW5hbHlzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMDNBQUUxRTM5Nzkx
MDAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTEwM0FBRTFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzM0UxRTQzMjREQzAwNjIx
RTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0QTRGNjU3MDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0QTBGRkFBMTFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNTg5LDYgKzMzNjA0LDcgQEAK
IAkJCQk0QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQzQxREU0MUMwNDEwQTMwMEQyOTRGRSAvKiBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDExMDNBQUIxRTM5NzkxMDAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEwM0FBQjFFMzk3OTEwMDA3NjlGMTQgLyog
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDgzM0QxRTQzMjREOTAwNjIxRTkyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFu
Z2xlU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBQjQxODExM0UzNTZFODAwRDhBQUYz
IC8qIFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MWFiM2Q3NjgzYjNiOGZmYzUwMmJmMzQ2NTI0Nzk3MzVj
MjFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRp
b0Zvcm1hdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKKyAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQoreworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOworfQorCitSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1f
YXVkaW9UcmFjaykKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOworfQorCit2
b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQorewor
ICAgIGlmIChtX2F1ZGlvVHJhY2spCisgICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0
aGlzKTsKK30KKwordm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRy
YWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgdHJh
Y2spCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOworICAgIEFTU0VSVCh0cmFjayk7CisK
KyAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAgICBub3RpZnlNdXRlZENoYW5n
ZSghbV9hdWRpb1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCisgICAgICAgIG1f
YXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMo
KSBjb25zdAoreworICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpl
bXB0eUNhcGFiaWxpdGllcygpOworfQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAoreworICAg
IHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMzNjNi
NjJkYWFiNDg2NjM4MDA5YWRjOTFlM2NjOTIzYjAzMjUwNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldF
QlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlLCBwcml2YXRlIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYp
OworCisgICAgdm9pZCBzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmKTsKKworcHJvdGVjdGVkOgorICAgIFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJm
YWNlPiYmLCBTdHJpbmcmJik7CisgICAgflJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpOwor
Citwcml2YXRlOgorICAgIC8vIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgQVBJCisg
ICAgdmlydHVhbCB2b2lkIE9uRGF0YShjb25zdCB2b2lkKiAvKiBhdWRpb0RhdGEgKi8sIGludCAv
KiBiaXRzUGVyU2FtcGxlICovLCBpbnQgLyogc2FtcGxlUmF0ZSAqLywgc2l6ZV90IC8qIG51bWJl
ck9mQ2hhbm5lbHMgKi8sIHNpemVfdCAvKiBudW1iZXJPZkZyYW1lcyAqLykgeyB9OworCisgICAg
Ly8gUmVhbHRpbWVNZWRpYVNvdXJjZSBBUEkKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgp
IGZpbmFsOworICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSAgZmluYWw7CisKKyAgICBjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBm
aW5hbDsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkg
Y29uc3QgZmluYWw7CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50
U2V0dGluZ3M7CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVy
ZmFjZT4gbV9hdWRpb1RyYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZmM2E1YmViNmY1Y2NjMDEzNjk0ZTA5MTQwMmYyN2YyODIwZjdmYjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCisKKyNpZiBVU0UoTElCV0VCUlRD
KQorCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJS
VENQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkKKyAgICA6IG1fYXVkaW9Tb3VyY2UoV1RGTW92ZShh
dWRpb1NvdXJjZSkpCisgICAgLCBtX3NpbGVuY2VBdWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5jZSkKK3sKKyAgICBtX2F1ZGlvU291cmNlLT5h
ZGRPYnNlcnZlcigqdGhpcyk7CisgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOworfQorCitib29s
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCit7CisgICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2Jz
ZXJ2ZXIoKnRoaXMpOworICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Cisg
ICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOworCisgICAgaW5pdGlhbGl6ZUNv
bnZlcnRlcigpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRlcigpCit7CisgICAgbV9tdXRlZCA9IG1fYXVk
aW9Tb3VyY2UtPm11dGVkKCk7CisgICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxl
ZCgpOworICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQoreworICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgp
OworICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKK30KKwordm9pZCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCit7CisgICAg
bV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7CisgICAgaGFuZGxlTXV0ZWRJZk5lZWRl
ZCgpOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxl
ZENoYW5nZWQoKQoreworICAgIG1fZW5hYmxlZCA9IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsK
KyAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVkKCkKK3sKKyAgICBib29sIGlzU2lsZW5jZWQg
PSBtX211dGVkIHx8ICFtX2VuYWJsZWQ7CisgICAgaWYgKGlzU2lsZW5jZWQgJiYgIW1fc2lsZW5j
ZUF1ZGlvVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdGFy
dFJlcGVhdGluZygxX3MpOworICAgIGlmICghaXNTaWxlbmNlZCAmJiBtX3NpbGVuY2VBdWRpb1Rp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NGUwODllMmYxYzk2ODlj
ZDMxMzcwNThiMTQ2MTA5NTdkZDk0NDA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAg
LTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkxpYldl
YlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCisjaW5j
bHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSB3
ZWJydGMgeworY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKK2NsYXNzIEF1ZGlvVHJhY2tTaW5r
SW50ZXJmYWNlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwg
cHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKTsKKworICAgIH5SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UoKSB7IHN0b3AoKTsgfQorCisgICAgdm9pZCBzdG9wKCk7CisKKyAgICBi
b29sIHNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOworICAgIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU291cmNl
LmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKKworcHJpdmF0ZToKKyAg
ICB2aXJ0dWFsIHZvaWQgQWRkU2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBz
aW5rKSB7IG1fc2lua3MuYXBwZW5kKHNpbmspOyB9CisgICAgdmlydHVhbCB2b2lkIFJlbW92ZVNp
bmsod2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSogc2luaykgeyBtX3NpbmtzLnJlbW92
ZUZpcnN0KHNpbmspOyB9CisKKyAgICBpbnQgQWRkUmVmKCkgY29uc3QgZmluYWwgeyByZWYoKTsg
cmV0dXJuIHJlZkNvdW50KCk7IH0KKyAgICBpbnQgUmVsZWFzZSgpIGNvbnN0IGZpbmFsIHsgZGVy
ZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7IH0KKyAgICBTb3VyY2VTdGF0ZSBzdGF0ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGtMaXZlOyB9CisgICAgYm9vbCByZW1vdGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgUmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2Vy
dmVySW50ZXJmYWNlKikgZmluYWwgeyB9CisgICAgdm9pZCBVbnJlZ2lzdGVyT2JzZXJ2ZXIod2Vi
cnRjOjpPYnNlcnZlckludGVyZmFjZSopIGZpbmFsIHsgfQorCisgICAgdm9pZCBzb3VyY2VNdXRl
ZENoYW5nZWQoKTsKKyAgICB2b2lkIHNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7CisgICAgdmlydHVh
bCB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0
Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIHsg
fTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGlt
aXQoKSB7IHJldHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGluZ0J1ZmZl
cmVkQXVkaW9EYXRhTG93TGltaXQoKSB7IHJldHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzQnVmZmVyZWRFbm91Z2hEYXRhKCkgeyByZXR1cm4gZmFsc2U7IH07CisKKyAgICAvLyBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgQVBJCisgICAgdm9pZCB0cmFja011dGVk
Q2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlTXV0ZWRDaGFu
Z2VkKCk7IH0KKyAgICB2b2lkIHRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUmKSBmaW5hbCB7IHNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7IH0KKyAgICB2b2lkIGF1ZGlv
U2FtcGxlc0F2YWlsYWJsZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYsIGNvbnN0IE1lZGlhVGlt
ZSYgbWVkaWFUaW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkgeyBhdWRp
b1NhbXBsZXNBdmFpbGFibGUobWVkaWFUaW1lLCBkYXRhLCBkZXNjcmlwdGlvbiwgc2FtcGxlQ291
bnQpOyB9CisgICAgdm9pZCB0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmlu
YWwgeyB9CisgICAgdm9pZCB0cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSYpIGZpbmFsIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHB1bGxBdWRpb0RhdGEoKSB7IH07
CisKKyAgICB2b2lkIGluaXRpYWxpemVDb252ZXJ0ZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlTXV0ZWRJZk5lZWRlZCgpOworICAgIHZpcnR1YWwgdm9pZCBzZW5kU2lsZW5jZSgpIHsgfTsK
KworICAgIFZlY3Rvcjx3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9zaW5rczsK
KyAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7CisKKyAgICBi
b29sIG1fbXV0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OworICAg
IFRpbWVyIG1fc2lsZW5jZUF1ZGlvVGltZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc1MzhjZDA1
NWI0ZGNhNDk5MjFiMmQ1MWQ4MGYwODJlYjIyNjczNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDE0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogICAgZGlzdHJpYnV0aW9uLgotICogMy4gTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAg
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20g
dGhpcwotICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmgiCi0KLSNpZiBVU0UoTElCV0VCUlRDKQotCi0jaW5jbHVk
ZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbi5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCi0jaW5jbHVkZSAi
V2ViQXVkaW9CdWZmZXJMaXN0LmgiCi0jaW5jbHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMuaCIKLSNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlv
bi5oPgotCi0jaW5jbHVkZSAiQ29yZU1lZGlhU29mdExpbmsuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1SZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBSZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2U6OmNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNr
SW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkKLXsKLSAgICBh
dXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKFdU
Rk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFja0lkKSkpOwotICAgIHNvdXJjZS0+
c3RhcnQoKTsKLSAgICByZXR1cm4gc291cmNlOwotfQotCi1SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2U6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJh
Y2tJZCkKLSAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgU3RyaW5nKCkpCi0gICAgLCBtX2F1ZGlv
VHJhY2soV1RGTW92ZShhdWRpb1RyYWNrKSkKLXsKLSAgICBub3RpZnlNdXRlZENoYW5nZSghbV9h
dWRpb1RyYWNrKTsKLX0KLQotUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlKCkKLXsKLSAgICBzdG9wKCk7Ci19Ci0KLQotc3RhdGljIGlubGlu
ZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRGVzY3JpcHRpb24oc2l6ZV90IHNh
bXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291bnQpCi17Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKLSAgICBGaWxsT3V0QVNCREZvckxQQ00oc3RyZWFtRm9y
bWF0LCBzYW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1w
bGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9G
b3JtYXQ6OmlzRmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0JpZ0VuZGlhbiwgTGliV2Vi
UlRDQXVkaW9Gb3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQpOwotICAgIHJldHVybiBzdHJlYW1Gb3Jt
YXQ7Ci19Ci0KLXZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpPbkRhdGEoY29uc3Qg
dm9pZCogYXVkaW9EYXRhLCBpbnQgYml0c1BlclNhbXBsZSwgaW50IHNhbXBsZVJhdGUsIHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCi17Ci0gICAgLy8gV2Ug
bWF5IHJlY2VpdmUgT25EYXRhIGNhbGxzIHdpdGggZW1wdHkgc291bmQgZGF0YSAobW9ubywgc2Ft
cGxlcyBlcXVhbCB0byB6ZXJvIGFuZCBzYW1wbGVSYXRlIGVxdWFsIHRvIDE2MDAwKSB3aGVuIHN0
YXJ0aW5nIHRoZSBjYWxsLgotICAgIC8vIEZJWE1FOiBGb3IgdGhlIG1vbWVudCB3ZSBza2lwIHRo
ZW0sIHdlIHNob3VsZCBmaW5kIGEgYmV0dGVyIHNvbHV0aW9uIGF0IGxpYndlYnJ0YyBsZXZlbCB0
byBub3QgYmUgY2FsbGVkIHVudGlsIGdldHRpbmcgc29tZSByZWFsIGRhdGEuCi0gICAgaWYgKHNh
bXBsZVJhdGUgPT0gMTYwMDAgJiYgbnVtYmVyT2ZDaGFubmVscyA9PSAxKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBBU1NFUlQoYml0c1BlclNhbXBsZSA9PSAxNik7Ci0gICAgQVNTRVJUKG51bWJl
ck9mQ2hhbm5lbHMgPT0gMSB8fCBudW1iZXJPZkNoYW5uZWxzID09IDIpOwotICAgIEFTU0VSVChz
YW1wbGVSYXRlID09IDQ4MDAwKTsKLQotICAgIENNVGltZSBzdGFydFRpbWUgPSBDTVRpbWVNYWtl
KG1fbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpOwotICAgIGF1dG8gbWVkaWFUaW1lID0gUEFM
Ojp0b01lZGlhVGltZShzdGFydFRpbWUpOwotICAgIG1fbnVtYmVyT2ZGcmFtZXMgKz0gbnVtYmVy
T2ZGcmFtZXM7Ci0KLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbmV3RGVzY3JpcHRp
b24gPSBzdHJlYW1EZXNjcmlwdGlvbihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKTsKLQot
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdG8gZG8gdGhlIGV4dHJhIG1lbW9yeSBh
bGxvY2F0aW9uIGFuZCBjb3B5LgotICAgIC8vIEluc3RlYWQsIHdlIHNob3VsZCBiZSBhYmxlIHRv
IGRpcmVjdGx5IHBhc3MgYXVkaW9EYXRhIHBvaW50ZXIuCi0gICAgV2ViQXVkaW9CdWZmZXJMaXN0
IGF1ZGlvQnVmZmVyTGlzdCB7IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihuZXdEZXNjcmlwdGlv
biksIFdURjo6c2FmZUNhc3Q8dWludDMyX3Q+KG51bWJlck9mRnJhbWVzKSB9OwotICAgIGF1ZGlv
QnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRhQnl0ZVNpemUgPSBudW1iZXJPZkNoYW5uZWxzICog
bnVtYmVyT2ZGcmFtZXMgKiBiaXRzUGVyU2FtcGxlIC8gODsKLSAgICBhdWRpb0J1ZmZlckxpc3Qu
YnVmZmVyKDApLT5tTnVtYmVyQ2hhbm5lbHMgPSBudW1iZXJPZkNoYW5uZWxzOwotCi0gICAgaWYg
KG11dGVkKCkpCi0gICAgICAgIG1lbXNldChhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0
YSwgMCwgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSk7Ci0gICAgZWxz
ZQotICAgICAgICBtZW1jcHkoYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGEsIGF1ZGlv
RGF0YSwgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSk7Ci0KLSAgICBh
dWRpb1NhbXBsZXNBdmFpbGFibGUobWVkaWFUaW1lLCBhdWRpb0J1ZmZlckxpc3QsIENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbihuZXdEZXNjcmlwdGlvbiksIG51bWJlck9mRnJhbWVzKTsKLX0KLQot
dm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCi17
Ci0gICAgaWYgKG1fYXVkaW9UcmFjaykKLSAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRo
aXMpOwotfQotCi12b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2lu
Z0RhdGEoKQotewotICAgIGlmIChtX2F1ZGlvVHJhY2spCi0gICAgICAgIG1fYXVkaW9UcmFjay0+
UmVtb3ZlU2luayh0aGlzKTsKLX0KLQotdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6
OnNldFNvdXJjZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRl
cmZhY2U+JiYgdHJhY2spCi17Ci0gICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOwotICAgIEFTU0VS
VCh0cmFjayk7Ci0KLSAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKLSAgICBub3Rp
ZnlNdXRlZENoYW5nZSghbV9hdWRpb1RyYWNrKTsKLSAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkp
Ci0gICAgICAgIG1fYXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKLX0KLQotY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpj
YXBhYmlsaXRpZXMoKSBjb25zdAotewotICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzOjplbXB0eUNhcGFiaWxpdGllcygpOwotfQotCi1jb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MmIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBj
b25zdAotewotICAgIHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKLX0KLQotfQotCi0jZW5kaWYg
Ly8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2Uu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI2MDIyMDg1MTk3ZmYzOWE2ODU0NzAx
ZWZiMjBmYjllMGRkNGU0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogICAgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ICAgZGlzdHJpYnV0aW9uLgotICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3Ig
dGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICAgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIFVTRShMSUJXRUJSVEMpCi0KLSNpbmNsdWRlICJMaWJXZWJSVENN
YWNyb3MuaCIKLSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCi0jaW5jbHVkZSA8Q29y
ZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+Ci0jaW5jbHVkZSA8d2VicnRjL2FwaS9tZWRpYXN0cmVh
bWludGVyZmFjZS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotdHlwZWRlZiBjb25z
dCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiAqQ01Gb3JtYXREZXNjcmlwdGlvblJl
ZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQzsKLQotY2xhc3MgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGZpbmFsIDogcHVi
bGljIFJlYWx0aW1lTWVkaWFTb3VyY2UsIHByaXZhdGUgd2VicnRjOjpBdWRpb1RyYWNrU2lua0lu
dGVyZmFjZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2U+IGNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJm
YWNlPiYmLCBTdHJpbmcmJik7Ci0KLSAgICB2b2lkIHNldFNvdXJjZVRyYWNrKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYpOwotCi1wcml2YXRlOgotICAg
IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7Ci0gICAgflJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZSgpOwotCi0gICAgLy8gd2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSBB
UEkKLSAgICB2b2lkIE9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2Ft
cGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1i
ZXJPZkZyYW1lcykgZmluYWw7Ci0KLSAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlIEFQSQotICAg
IHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7Ci0gICAgdm9pZCBzdG9wUHJvZHVjaW5n
RGF0YSgpICBmaW5hbDsKLQotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IGZpbmFsOwotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBmaW5hbDsKLQotICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJlbnRTZXR0aW5nczsKLSAgICBydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiBtX2F1ZGlvVHJhY2s7Ci0KLSAgICB1aW50
NjRfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2Nv
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5ZWVmMGMzMzA0NzFkNGIw
Yzk4NWM1ZGYwY2FlYzQzN2M0NDU4YjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29j
b2EuY3BwCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZUNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgor
I2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdWZm
ZXJMaXN0LmgiCisjaW5jbHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCIKKyNp
bmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgorCisjaW5j
bHVkZSAiQ29yZU1lZGlhU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6
OmNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYm
IGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkKK3sKKyAgICBhdXRvIHNvdXJjZSA9
IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hOjpjcmVhdGUoV1RGTW92ZShhdWRpb1Ry
YWNrKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpKTsKKyAgICBzb3VyY2UtPnN0YXJ0KCk7CisgICAg
cmV0dXJuIHNvdXJjZTsKK30KKworUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29h
PiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYg
YXVkaW9UcmFja0lkKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZUNvY29hKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFj
a0lkKSkpOworfQorCitSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9U
cmFja0ludGVyZmFjZT4mJiBhdWRpb1RyYWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCisgICAg
OiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92
ZShhdWRpb1RyYWNrSWQpKQoreworfQorCisKK3N0YXRpYyBpbmxpbmUgQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uIHN0cmVhbURlc2NyaXB0aW9uKHNpemVfdCBzYW1wbGVSYXRlLCBzaXplX3Qg
Y2hhbm5lbENvdW50KQoreworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1G
b3JtYXQ7CisgICAgRmlsbE91dEFTQkRGb3JMUENNKHN0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSwg
Y2hhbm5lbENvdW50LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRD
QXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0Zsb2F0LCBM
aWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNCaWdFbmRpYW4sIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojpp
c05vbkludGVybGVhdmVkKTsKKyAgICByZXR1cm4gc3RyZWFtRm9ybWF0OworfQorCit2b2lkIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hOjpPbkRhdGEoY29uc3Qgdm9pZCogYXVkaW9E
YXRhLCBpbnQgYml0c1BlclNhbXBsZSwgaW50IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNo
YW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCit7CisgICAgLy8gV2UgbWF5IHJlY2VpdmUg
T25EYXRhIGNhbGxzIHdpdGggZW1wdHkgc291bmQgZGF0YSAobW9ubywgc2FtcGxlcyBlcXVhbCB0
byB6ZXJvIGFuZCBzYW1wbGVSYXRlIGVxdWFsIHRvIDE2MDAwKSB3aGVuIHN0YXJ0aW5nIHRoZSBj
YWxsLgorICAgIC8vIEZJWE1FOiBGb3IgdGhlIG1vbWVudCB3ZSBza2lwIHRoZW0sIHdlIHNob3Vs
ZCBmaW5kIGEgYmV0dGVyIHNvbHV0aW9uIGF0IGxpYndlYnJ0YyBsZXZlbCB0byBub3QgYmUgY2Fs
bGVkIHVudGlsIGdldHRpbmcgc29tZSByZWFsIGRhdGEuCisgICAgaWYgKHNhbXBsZVJhdGUgPT0g
MTYwMDAgJiYgbnVtYmVyT2ZDaGFubmVscyA9PSAxKQorICAgICAgICByZXR1cm47CisKKyAgICBB
U1NFUlQoYml0c1BlclNhbXBsZSA9PSAxNik7CisgICAgQVNTRVJUKG51bWJlck9mQ2hhbm5lbHMg
PT0gMSB8fCBudW1iZXJPZkNoYW5uZWxzID09IDIpOworICAgIEFTU0VSVChzYW1wbGVSYXRlID09
IDQ4MDAwKTsKKworICAgIENNVGltZSBzdGFydFRpbWUgPSBDTVRpbWVNYWtlKG1fbnVtYmVyT2ZG
cmFtZXMsIHNhbXBsZVJhdGUpOworICAgIGF1dG8gbWVkaWFUaW1lID0gUEFMOjp0b01lZGlhVGlt
ZShzdGFydFRpbWUpOworICAgIG1fbnVtYmVyT2ZGcmFtZXMgKz0gbnVtYmVyT2ZGcmFtZXM7CisK
KyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbmV3RGVzY3JpcHRpb24gPSBzdHJlYW1E
ZXNjcmlwdGlvbihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKTsKKworICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgbm90IG5lZWQgdG8gZG8gdGhlIGV4dHJhIG1lbW9yeSBhbGxvY2F0aW9uIGFu
ZCBjb3B5LgorICAgIC8vIEluc3RlYWQsIHdlIHNob3VsZCBiZSBhYmxlIHRvIGRpcmVjdGx5IHBh
c3MgYXVkaW9EYXRhIHBvaW50ZXIuCisgICAgV2ViQXVkaW9CdWZmZXJMaXN0IGF1ZGlvQnVmZmVy
TGlzdCB7IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihuZXdEZXNjcmlwdGlvbiksIFdURjo6c2Fm
ZUNhc3Q8dWludDMyX3Q+KG51bWJlck9mRnJhbWVzKSB9OworICAgIGF1ZGlvQnVmZmVyTGlzdC5i
dWZmZXIoMCktPm1EYXRhQnl0ZVNpemUgPSBudW1iZXJPZkNoYW5uZWxzICogbnVtYmVyT2ZGcmFt
ZXMgKiBiaXRzUGVyU2FtcGxlIC8gODsKKyAgICBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5t
TnVtYmVyQ2hhbm5lbHMgPSBudW1iZXJPZkNoYW5uZWxzOworCisgICAgaWYgKG11dGVkKCkpCisg
ICAgICAgIG1lbXNldChhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgMCwgYXVkaW9C
dWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSk7CisgICAgZWxzZQorICAgICAgICBt
ZW1jcHkoYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGEsIGF1ZGlvRGF0YSwgYXVkaW9C
dWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSk7CisKKyAgICBhdWRpb1NhbXBsZXNB
dmFpbGFibGUobWVkaWFUaW1lLCBhdWRpb0J1ZmZlckxpc3QsIENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbihuZXdEZXNjcmlwdGlvbiksIG51bWJlck9mRnJhbWVzKTsKK30KKworfQorCisjZW5kaWYg
Ly8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZUNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAxMDQ3NWU1ZWNhMmZmYzkxNDMwMzQ3MWI2NWZiMWE4
OTdkYWJhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oCkBAIC0wLDAgKzEs
NTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAg
ICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2UuaCIKKworI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgorCit0eXBlZGVm
IGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uICpDTUZvcm1hdERlc2NyaXB0
aW9uUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDOworCitjbGFzcyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYSBm
aW5hbCA6IHB1YmxpYyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E+IGNyZWF0ZShydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7
CisKK3ByaXZhdGU6CisgICAgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EocnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYpOwor
CisgICAgLy8gd2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSBBUEkKKyAgICB2b2lkIE9u
RGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxl
UmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykgZmlu
YWw7CisKKyAgICB1aW50NjRfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQ5MTAxZGM0Mzc5MTdkNTEwZTc0YmZjNzc1MWM3YzcwYzdkYzIyYTQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWly
ZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgot
ICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2UuaCIKLQotI2lmIFVTRShMSUJXRUJSVEMpCi0KLSNpbmNsdWRlICJD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKLSNpbmNsdWRlICJMaWJXZWJSVENBdWRpb0Zvcm1h
dC5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotc3RhdGljIGlubGluZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbGlid2VicnRj
QXVkaW9Gb3JtYXQoRmxvYXQ2NCBzYW1wbGVSYXRlLCBzaXplX3QgY2hhbm5lbENvdW50KQotewot
ICAgIC8vIEZJWE1FOiBNaWNyb3Bob25lcyBjYW4gaGF2ZSBtb3JlIHRoYW4gdHdvIGNoYW5uZWxz
LiBJbiBzdWNoIGNhc2UsIHdlIHNob3VsZCBkbyB0aGUgbWl4IGRvd24gYmFzZWQgb24gQXVkaW9D
aGFubmVsTGF5b3V0VGFnLgotICAgIHNpemVfdCBsaWJXZWJSVENDaGFubmVsQ291bnQgPSBjaGFu
bmVsQ291bnQgPj0gMiA/IDIgOiBjaGFubmVsQ291bnQ7Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKLSAgICBGaWxsT3V0QVNCREZvckxQQ00oc3RyZWFtRm9y
bWF0LCBzYW1wbGVSYXRlLCBsaWJXZWJSVENDaGFubmVsQ291bnQsIExpYldlYlJUQ0F1ZGlvRm9y
bWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2Vi
UlRDQXVkaW9Gb3JtYXQ6OmlzRmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0JpZ0VuZGlh
biwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQpOwotICAgIHJldHVybiBz
dHJlYW1Gb3JtYXQ7Ci19Ci0KLVJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6UmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBhdWRpb1Nv
dXJjZSkKLSAgICA6IG1fYXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRpb1NvdXJjZSkpCi0gICAgLCBt
X3NhbXBsZUNvbnZlcnRlcihBdWRpb1NhbXBsZURhdGFTb3VyY2U6OmNyZWF0ZShMaWJXZWJSVENB
dWRpb0Zvcm1hdDo6c2FtcGxlUmF0ZSAqIDIpKQotICAgICwgbV9zaWxlbmNlQXVkaW9UaW1lcigq
dGhpcywgJlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2VuZFNpbGVuY2UpCi17Ci0gICAg
bV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwotICAgIGluaXRpYWxpemVDb252ZXJ0
ZXIoKTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZShS
ZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgbmV3U291cmNlKQotewotICAgIG1fYXVkaW9T
b3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKLSAgICBtX2F1ZGlvU291cmNlID0gV1RGTW92
ZShuZXdTb3VyY2UpOwotICAgIG1fYXVkaW9Tb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKLQot
ICAgIGluaXRpYWxpemVDb252ZXJ0ZXIoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmluaXRpYWxpemVDb252ZXJ0ZXIoKQotewotICAg
IG1fbXV0ZWQgPSBtX2F1ZGlvU291cmNlLT5tdXRlZCgpOwotICAgIG1fZW5hYmxlZCA9IG1fYXVk
aW9Tb3VyY2UtPmVuYWJsZWQoKTsKLSAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Ci19Ci0KLXZv
aWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzdG9wKCkKLXsKLSAgICBtX3NpbGVuY2VB
dWRpb1RpbWVyLnN0b3AoKTsKLSAgICBtX2F1ZGlvU291cmNlLT5yZW1vdmVPYnNlcnZlcigqdGhp
cyk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzb3VyY2VNdXRlZENo
YW5nZWQoKQotewotICAgIG1fbXV0ZWQgPSBtX2F1ZGlvU291cmNlLT5tdXRlZCgpOwotICAgIGhh
bmRsZU11dGVkSWZOZWVkZWQoKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2U6OnNvdXJjZUVuYWJsZWRDaGFuZ2VkKCkKLXsKLSAgICBtX2VuYWJsZWQgPSBtX2F1ZGlvU291
cmNlLT5lbmFibGVkKCk7Ci0gICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwotfQotCi12b2lkIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aGFuZGxlTXV0ZWRJZk5lZWRlZCgpCi17Ci0gICAg
Ym9vbCBpc1NpbGVuY2VkID0gbV9tdXRlZCB8fCAhbV9lbmFibGVkOwotICAgIG1fc2FtcGxlQ29u
dmVydGVyLT5zZXRNdXRlZChpc1NpbGVuY2VkKTsKLSAgICBpZiAoaXNTaWxlbmNlZCAmJiAhbV9z
aWxlbmNlQXVkaW9UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3NpbGVuY2VBdWRpb1RpbWVy
LnN0YXJ0UmVwZWF0aW5nKDFfcyk7Ci0gICAgaWYgKCFpc1NpbGVuY2VkICYmIG1fc2lsZW5jZUF1
ZGlvVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdG9wKCk7
Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5jZSgpCi17
Ci0gICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIHNpemVfdCBjaHVu
a1NhbXBsZUNvdW50ID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgLyAx
MDA7Ci0gICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gY2h1bmtTYW1wbGVDb3VudCAqIExpYldl
YlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAqIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRp
b24ubnVtYmVyT2ZDaGFubmVscygpOwotCi0gICAgICAgIGlmICghYnVmZmVyU2l6ZSkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBtX2F1ZGlvQnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7
Ci0gICAgICAgIG1lbXNldChtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgMCwgYnVmZmVyU2l6ZSk7Ci0g
ICAgICAgIGZvciAoYXV0byBzaW5rIDogbV9zaW5rcykKLSAgICAgICAgICAgIHNpbmstPk9uRGF0
YShtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUs
IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpLCBtX291dHB1dFN0cmVhbURl
c2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSwgY2h1bmtTYW1wbGVDb3VudCk7Ci0gICAgfSk7
Ci19Ci0KLWJvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjppc1JlYWNoaW5nQnVmZmVy
ZWRBdWRpb0RhdGFIaWdoTGltaXQoKQotewotICAgIGF1dG8gd3JpdHRlbkF1ZGlvRHVyYXRpb24g
PSBtX3dyaXRlQ291bnQgLyBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwot
ICAgIGF1dG8gcmVhZEF1ZGlvRHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1fb3V0cHV0U3RyZWFt
RGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotCi0gICAgQVNTRVJUKHdyaXR0ZW5BdWRpb0R1cmF0
aW9uID49IHJlYWRBdWRpb0R1cmF0aW9uKTsKLSAgICByZXR1cm4gd3JpdHRlbkF1ZGlvRHVyYXRp
b24gPiByZWFkQXVkaW9EdXJhdGlvbiArIDAuNTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2U6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCkKLXsKLSAg
ICBhdXRvIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9pbnB1dFN0cmVh
bURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKLSAgICBhdXRvIHJlYWRBdWRpb0R1cmF0aW9uID0g
bV9yZWFkQ291bnQgLyBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKLQot
ICAgIEFTU0VSVCh3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbik7Ci0g
ICAgcmV0dXJuIHdyaXR0ZW5BdWRpb0R1cmF0aW9uIDwgcmVhZEF1ZGlvRHVyYXRpb24gKyAwLjE7
Ci19Ci0KLWJvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpoYXNCdWZmZXJlZEVuZ291
aERhdGEoKQotewotICAgIGF1dG8gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dyaXRlQ291bnQg
LyBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotICAgIGF1dG8gcmVhZEF1
ZGlvRHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2Ft
cGxlUmF0ZSgpOwotCi0gICAgQVNTRVJUKHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRp
b0R1cmF0aW9uKTsKLSAgICByZXR1cm4gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlv
RHVyYXRpb24gKyAwLjAxOwotfQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVk
aW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIHN0cmVhbURl
c2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCi17Ci0gICAgaWYgKG1faW5wdXRTdHJlYW1E
ZXNjcmlwdGlvbiAhPSBzdHJlYW1EZXNjcmlwdGlvbikgewotICAgICAgICBtX2lucHV0U3RyZWFt
RGVzY3JpcHRpb24gPSB0b0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihzdHJlYW1EZXNjcmlwdGlv
bik7Ci0gICAgICAgIGF1dG8gc3RhdHVzICA9IG1fc2FtcGxlQ29udmVydGVyLT5zZXRJbnB1dEZv
cm1hdChtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24pOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHN0
YXR1cywgIXN0YXR1cyk7Ci0KLSAgICAgICAgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbiA9IGxp
YndlYnJ0Y0F1ZGlvRm9ybWF0KExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRlLCBzdHJl
YW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCkpOwotICAgICAgICBzdGF0dXMgPSBtX3Nh
bXBsZUNvbnZlcnRlci0+c2V0T3V0cHV0Rm9ybWF0KG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24u
c3RyZWFtRGVzY3JpcHRpb24oKSk7Ci0gICAgICAgIEFTU0VSVCghc3RhdHVzKTsKLSAgICB9Ci0K
LSAgICAvLyBMZXQncyBza2lwIHB1c2hpbmcgc2FtcGxlcyBpZiB3ZSBhcmUgdG9vIHNsb3cgcHVs
bGluZyB0aGVtLgotICAgIGlmIChtX3NraXBwaW5nQXVkaW9EYXRhKSB7Ci0gICAgICAgIGlmICgh
aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGltaXQoKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgbV9za2lwcGluZ0F1ZGlvRGF0YSA9IGZhbHNlOwotICAgIH0gZWxzZSBpZiAo
aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCkpIHsKLSAgICAgICAgbV9za2lw
cGluZ0F1ZGlvRGF0YSA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBJ
ZiB3ZSBjaGFuZ2UgdGhlIGF1ZGlvIHRyYWNrIG9yIGl0cyBzYW1wbGUgcmF0ZSBjaGFuZ2VzLCB0
aGUgdGltZXN0YW1wIGJhc2VkIG9uIG1fd3JpdGVDb3VudCBtYXkgYmUgd3JvbmcuCi0gICAgLy8g
RklYTUU6IFdlIHNob3VsZCB1cGRhdGUgbV93cml0ZUNvdW50IHRvIGJlIHZhbGlkIGFjY29yZGlu
ZyB0aGUgbmV3IHNhbXBsZVJhdGUuCi0gICAgbV9zYW1wbGVDb252ZXJ0ZXItPnB1c2hTYW1wbGVz
KE1lZGlhVGltZShtX3dyaXRlQ291bnQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2lucHV0U3Ry
ZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpKSksIGF1ZGlvRGF0YSwgc2FtcGxlQ291bnQpOwot
ICAgIG1fd3JpdGVDb3VudCArPSBzYW1wbGVDb3VudDsKLQotICAgIGlmICghaGFzQnVmZmVyZWRF
bmdvdWhEYXRhKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpj
YWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gewotICAgICAgICBwcm90ZWN0ZWRUaGlzLT5wdWxsQXVkaW9EYXRhKCk7Ci0gICAgfSk7Ci19
Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpwdWxsQXVkaW9EYXRhKCkKLXsK
LSAgICAvLyBsaWJ3ZWJydGMgZXhwZWN0cyAxMCBtcyBjaHVua3MuCi0gICAgc2l6ZV90IGNodW5r
U2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEw
MDsKLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IGNodW5rU2FtcGxlQ291bnQgKiBMaWJXZWJSVENB
dWRpb0Zvcm1hdDo6c2FtcGxlQnl0ZVNpemUgKiBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51
bWJlck9mQ2hhbm5lbHMoKTsKLSAgICBtX2F1ZGlvQnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7Ci0K
LSAgICBBdWRpb0J1ZmZlckxpc3QgYnVmZmVyTGlzdDsKLSAgICBidWZmZXJMaXN0Lm1OdW1iZXJC
dWZmZXJzID0gMTsKLSAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9
IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOwotICAgIGJ1ZmZl
ckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IGJ1ZmZlclNpemU7Ci0gICAgYnVmZmVy
TGlzdC5tQnVmZmVyc1swXS5tRGF0YSA9IG1fYXVkaW9CdWZmZXIuZGF0YSgpOwotCi0gICAgbV9z
YW1wbGVDb252ZXJ0ZXItPnB1bGxBdmFsYWlibGVTYW1wbGVzQXNDaHVua3MoYnVmZmVyTGlzdCwg
Y2h1bmtTYW1wbGVDb3VudCwgbV9yZWFkQ291bnQsIFt0aGlzLCBjaHVua1NhbXBsZUNvdW50XSB7
Ci0gICAgICAgIG1fcmVhZENvdW50ICs9IGNodW5rU2FtcGxlQ291bnQ7Ci0gICAgICAgIGZvciAo
YXV0byBzaW5rIDogbV9zaW5rcykKLSAgICAgICAgICAgIHNpbmstPk9uRGF0YShtX2F1ZGlvQnVm
ZmVyLmRhdGEoKSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIG1fb3V0cHV0U3Ry
ZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpLCBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51
bWJlck9mQ2hhbm5lbHMoKSwgY2h1bmtTYW1wbGVDb3VudCk7Ci0gICAgfSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDBlYmM4MDRlNDk1ODUzMGJlNjYwMmZmZDYxYTJiNTNjN2ViNmU1NzQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRv
IGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
LSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShMSUJXRUJSVEMpCi0KLSNpbmNsdWRl
ICJBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCIKLSNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIK
LSNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgotI2luY2x1ZGUgIlRpbWVyLmgi
Ci0jaW5jbHVkZSA8d2VicnRjL2FwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oPgotI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2Ugd2VicnRjIHsKLWNsYXNz
IEF1ZGlvVHJhY2tJbnRlcmZhY2U7Ci1jbGFzcyBBdWRpb1RyYWNrU2lua0ludGVyZmFjZTsKLX0K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2UgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlPiwgcHVibGljIHdlYnJ0Yzo6QXVkaW9Tb3VyY2VJbnRlcmZhY2UsIHByaXZhdGUg
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4gY3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRpb1NvdXJjZSkpKTsgfQotICAgIH5SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoKSB7IHN0b3AoKTsgfQotCi0gICAgdm9pZCBzdG9wKCk7
Ci0KLSAgICBib29sIHNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOwot
ICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2F1
ZGlvU291cmNlLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgQWRkU2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5r
KSB7IG1fc2lua3MuYXBwZW5kKHNpbmspOyB9Ci0gICAgdmlydHVhbCB2b2lkIFJlbW92ZVNpbmso
d2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSogc2luaykgeyBtX3NpbmtzLnJlbW92ZUZp
cnN0KHNpbmspOyB9Ci0KLSAgICBpbnQgQWRkUmVmKCkgY29uc3QgZmluYWwgeyByZWYoKTsgcmV0
dXJuIHJlZkNvdW50KCk7IH0KLSAgICBpbnQgUmVsZWFzZSgpIGNvbnN0IGZpbmFsIHsgZGVyZWYo
KTsgcmV0dXJuIHJlZkNvdW50KCk7IH0KLSAgICBTb3VyY2VTdGF0ZSBzdGF0ZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIGtMaXZlOyB9Ci0gICAgYm9vbCByZW1vdGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZvaWQgUmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2VydmVy
SW50ZXJmYWNlKikgZmluYWwgeyB9Ci0gICAgdm9pZCBVbnJlZ2lzdGVyT2JzZXJ2ZXIod2VicnRj
OjpPYnNlcnZlckludGVyZmFjZSopIGZpbmFsIHsgfQotCi0gICAgdm9pZCBzb3VyY2VNdXRlZENo
YW5nZWQoKTsKLSAgICB2b2lkIHNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7Ci0gICAgdm9pZCBhdWRp
b1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0Rh
dGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KTsKLQotICAgIGJvb2wg
aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCk7Ci0gICAgYm9vbCBpc1JlYWNo
aW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpOwotICAgIGJvb2wgaGFzQnVmZmVyZWRFbmdv
dWhEYXRhKCk7Ci0KLSAgICAvLyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgQVBJ
Ci0gICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZp
bmFsIHsgc291cmNlTXV0ZWRDaGFuZ2VkKCk7IH0KLSAgICB2b2lkIHRyYWNrRW5hYmxlZENoYW5n
ZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IHNvdXJjZUVuYWJsZWRDaGFuZ2Vk
KCk7IH0KLSAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSYsIGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0
YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVf
dCBzYW1wbGVDb3VudCkgZmluYWwgeyBhdWRpb1NhbXBsZXNBdmFpbGFibGUobWVkaWFUaW1lLCBk
YXRhLCBkZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQpOyB9Ci0gICAgdm9pZCB0cmFja0VuZGVkKE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9Ci0gICAgdm9pZCB0cmFja1NldHRpbmdz
Q2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQotCi0gICAgdm9pZCBw
dWxsQXVkaW9EYXRhKCk7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVDb252ZXJ0ZXIoKTsKLSAgICB2
b2lkIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKLSAgICB2b2lkIHNlbmRTaWxlbmNlKCk7Ci0KLSAg
ICBWZWN0b3I8d2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSo+IG1fc2lua3M7Ci0gICAg
UmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX2F1ZGlvU291cmNlOwotICAgIFJlZjxBdWRp
b1NhbXBsZURhdGFTb3VyY2U+IG1fc2FtcGxlQ29udmVydGVyOwotICAgIENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb247Ci0gICAgQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb247Ci0KLSAgICBWZWN0b3I8dWludDhf
dD4gbV9hdWRpb0J1ZmZlcjsKLSAgICB1aW50NjRfdCBtX3JlYWRDb3VudCB7IDAgfTsKLSAgICB1
aW50NjRfdCBtX3dyaXRlQ291bnQgeyAwIH07Ci0gICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsK
LSAgICBib29sIG1fZW5hYmxlZCB7IHRydWUgfTsKLSAgICBib29sIG1fc2tpcHBpbmdBdWRpb0Rh
dGEgeyBmYWxzZSB9OwotICAgIFRpbWVyIG1fc2lsZW5jZUF1ZGlvVGltZXI7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTEyYjg4YWY4MGY0N2RhN2JhMWQ0YmMxODRjNWIwZTk4YzIwNGVhNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5oIgorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCisjaW5jbHVk
ZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMg
aW5saW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBsaWJ3ZWJydGNBdWRpb0Zvcm1hdChG
bG9hdDY0IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291bnQpCit7CisgICAgLy8gRklYTUU6
IE1pY3JvcGhvbmVzIGNhbiBoYXZlIG1vcmUgdGhhbiB0d28gY2hhbm5lbHMuIEluIHN1Y2ggY2Fz
ZSwgd2Ugc2hvdWxkIGRvIHRoZSBtaXggZG93biBiYXNlZCBvbiBBdWRpb0NoYW5uZWxMYXlvdXRU
YWcuCisgICAgc2l6ZV90IGxpYldlYlJUQ0NoYW5uZWxDb3VudCA9IGNoYW5uZWxDb3VudCA+PSAy
ID8gMiA6IGNoYW5uZWxDb3VudDsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3Ry
ZWFtRm9ybWF0OworICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1Gb3JtYXQsIHNhbXBsZVJh
dGUsIGxpYldlYlJUQ0NoYW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNp
emUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1h
dDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBMaWJXZWJSVENB
dWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7CisgICAgcmV0dXJuIHN0cmVhbUZvcm1hdDsK
K30KKworUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OlJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUNvY29hKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJj
ZSkKKyAgICA6IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNl
KSkKKyAgICAsIG1fc2FtcGxlQ29udmVydGVyKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRl
KExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRlICogMikpCit7Cit9CisKK1JlZjxSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3Jl
YXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkKK3sKKyAgICBy
ZXR1cm4gUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF1
ZGlvU291cmNlKSk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6
OmhhbmRsZU11dGVkSWZOZWVkZWQoKQoreworICAgIGJvb2wgaXNTaWxlbmNlZCA9IG1fbXV0ZWQg
fHwgIW1fZW5hYmxlZDsKKyAgICBtX3NhbXBsZUNvbnZlcnRlci0+c2V0TXV0ZWQoaXNTaWxlbmNl
ZCk7CisKKyAgICBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6aGFuZGxlTXV0ZWRJ
Zk5lZWRlZCgpOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpz
ZW5kU2lsZW5jZSgpCit7CisgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25h
bGluZ1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAg
ICAgIHNpemVfdCBjaHVua1NhbXBsZUNvdW50ID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5z
YW1wbGVSYXRlKCkgLyAxMDA7CisgICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gY2h1bmtTYW1w
bGVDb3VudCAqIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAqIG1fb3V0cHV0
U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOworCisgICAgICAgIGlmICghYnVm
ZmVyU2l6ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2F1ZGlvQnVmZmVyLmdy
b3coYnVmZmVyU2l6ZSk7CisgICAgICAgIG1lbXNldChtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgMCwg
YnVmZmVyU2l6ZSk7CisgICAgICAgIGZvciAoYXV0byBzaW5rIDogbV9zaW5rcykKKyAgICAgICAg
ICAgIHNpbmstPk9uRGF0YShtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgTGliV2ViUlRDQXVkaW9Gb3Jt
YXQ6OnNhbXBsZVNpemUsIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpLCBt
X291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSwgY2h1bmtTYW1wbGVD
b3VudCk7CisgICAgfSk7Cit9CisKK2Jvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29j
b2E6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpCit7CisgICAgYXV0byB3
cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlw
dGlvbi5zYW1wbGVSYXRlKCk7CisgICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENv
dW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisKKyAgICBBU1NF
UlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOworICAgIHJldHVy
biB3cml0dGVuQXVkaW9EdXJhdGlvbiA+IHJlYWRBdWRpb0R1cmF0aW9uICsgMC41OworfQorCiti
b29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjppc1JlYWNoaW5nQnVmZmVyZWRB
dWRpb0RhdGFMb3dMaW1pdCgpCit7CisgICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1f
d3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisgICAg
YXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCk7CisKKyAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24g
Pj0gcmVhZEF1ZGlvRHVyYXRpb24pOworICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA8
IHJlYWRBdWRpb0R1cmF0aW9uICsgMC4xOworfQorCitib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZUNvY29hOjpoYXNCdWZmZXJlZEVub3VnaERhdGEoKQoreworICAgIGF1dG8gd3JpdHRl
bkF1ZGlvRHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24u
c2FtcGxlUmF0ZSgpOworICAgIGF1dG8gcmVhZEF1ZGlvRHVyYXRpb24gPSBtX3JlYWRDb3VudCAv
IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOworCisgICAgQVNTRVJUKHdy
aXR0ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1cmF0aW9uKTsKKyAgICByZXR1cm4gd3Jp
dHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24gKyAwLjAxOworfQorCit2b2lk
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUo
Y29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29u
c3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgc3RyZWFtRGVzY3JpcHRpb24sIHNpemVfdCBzYW1w
bGVDb3VudCkKK3sKKyAgICBpZiAobV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uICE9IHN0cmVhbURl
c2NyaXB0aW9uKSB7CisgICAgICAgIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbiA9IHRvQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uKHN0cmVhbURlc2NyaXB0aW9uKTsKKyAgICAgICAgYXV0byBzdGF0
dXMgID0gbV9zYW1wbGVDb252ZXJ0ZXItPnNldElucHV0Rm9ybWF0KG1faW5wdXRTdHJlYW1EZXNj
cmlwdGlvbik7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsKKworICAg
ICAgICBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uID0gbGlid2VicnRjQXVkaW9Gb3JtYXQoTGli
V2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUsIHN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9m
Q2hhbm5lbHMoKSk7CisgICAgICAgIHN0YXR1cyA9IG1fc2FtcGxlQ29udmVydGVyLT5zZXRPdXRw
dXRGb3JtYXQobV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKTsK
KyAgICAgICAgQVNTRVJUKCFzdGF0dXMpOworICAgIH0KKworICAgIC8vIExldCdzIHNraXAgcHVz
aGluZyBzYW1wbGVzIGlmIHdlIGFyZSB0b28gc2xvdyBwdWxsaW5nIHRoZW0uCisgICAgaWYgKG1f
c2tpcHBpbmdBdWRpb0RhdGEpIHsKKyAgICAgICAgaWYgKCFpc1JlYWNoaW5nQnVmZmVyZWRBdWRp
b0RhdGFMb3dMaW1pdCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3NraXBwaW5n
QXVkaW9EYXRhID0gZmFsc2U7CisgICAgfSBlbHNlIGlmIChpc1JlYWNoaW5nQnVmZmVyZWRBdWRp
b0RhdGFIaWdoTGltaXQoKSkgeworICAgICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIElmIHdlIGNoYW5nZSB0aGUgYXVkaW8g
dHJhY2sgb3IgaXRzIHNhbXBsZSByYXRlIGNoYW5nZXMsIHRoZSB0aW1lc3RhbXAgYmFzZWQgb24g
bV93cml0ZUNvdW50IG1heSBiZSB3cm9uZy4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVwZGF0
ZSBtX3dyaXRlQ291bnQgdG8gYmUgdmFsaWQgYWNjb3JkaW5nIHRoZSBuZXcgc2FtcGxlUmF0ZS4K
KyAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVzaFNhbXBsZXMoTWVkaWFUaW1lKG1fd3JpdGVDb3Vu
dCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVS
YXRlKCkpKSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7CisgICAgbV93cml0ZUNvdW50ICs9IHNh
bXBsZUNvdW50OworCisgICAgaWYgKCFoYXNCdWZmZXJlZEVuZ291aERhdGEoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1Ro
cmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPnB1bGxBdWRpb0RhdGEoKTsKKyAgICB9KTsKK30KKwordm9pZCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYTo6cHVsbEF1ZGlvRGF0YSgpCit7CisgICAgLy8gbGlid2VicnRj
IGV4cGVjdHMgMTAgbXMgY2h1bmtzLgorICAgIHNpemVfdCBjaHVua1NhbXBsZUNvdW50ID0gbV9v
dXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgLyAxMDA7CisgICAgc2l6ZV90IGJ1
ZmZlclNpemUgPSBjaHVua1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBs
ZUJ5dGVTaXplICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7
CisgICAgbV9hdWRpb0J1ZmZlci5ncm93KGJ1ZmZlclNpemUpOworCisgICAgQXVkaW9CdWZmZXJM
aXN0IGJ1ZmZlckxpc3Q7CisgICAgYnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVycyA9IDE7CisgICAg
YnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSBtX291dHB1dFN0cmVhbURl
c2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKTsKKyAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBd
Lm1EYXRhQnl0ZVNpemUgPSBidWZmZXJTaXplOworICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0u
bURhdGEgPSBtX2F1ZGlvQnVmZmVyLmRhdGEoKTsKKworICAgIG1fc2FtcGxlQ29udmVydGVyLT5w
dWxsQXZhbGFpYmxlU2FtcGxlc0FzQ2h1bmtzKGJ1ZmZlckxpc3QsIGNodW5rU2FtcGxlQ291bnQs
IG1fcmVhZENvdW50LCBbdGhpcywgY2h1bmtTYW1wbGVDb3VudF0geworICAgICAgICBtX3JlYWRD
b3VudCArPSBjaHVua1NhbXBsZUNvdW50OworICAgICAgICBmb3IgKGF1dG8gc2luayA6IG1fc2lu
a3MpCisgICAgICAgICAgICBzaW5rLT5PbkRhdGEobV9hdWRpb0J1ZmZlci5kYXRhKCksIExpYldl
YlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNh
bXBsZVJhdGUoKSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCks
IGNodW5rU2FtcGxlQ291bnQpOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTcwNDMwMjI5MmZiMTA3ODE1OWEy
YTlkMTUwMTgyOGY4MTIwNjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmgK
QEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElC
V0VCUlRDKQorCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVEYXRhU291cmNlLmgiCisjaW5jbHVkZSAi
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworY2xh
c3MgQXVkaW9UcmFja0ludGVyZmFjZTsKK2NsYXNzIEF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlOwor
fQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZUNvY29hIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZUNvY29hPiwgcHVibGljIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYT4gY3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYShX
VEZNb3ZlKGF1ZGlvU291cmNlKSkpOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYm
KTsKKworICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNv
bnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNp
emVfdCkgZmluYWw7CisKKyAgICBib29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hM
aW1pdCgpIGZpbmFsOworICAgIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGlt
aXQoKSBmaW5hbDsKKyAgICBib29sIGhhc0J1ZmZlcmVkRW5vdWdoRGF0YSgpIGZpbmFsOworCisg
ICAgdm9pZCBwdWxsQXVkaW9EYXRhKCkgZmluYWw7CisKKyAgICB2b2lkIGhhbmRsZU11dGVkSWZO
ZWVkZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRTaWxlbmNlKCkgZmluYWw7CisKKyAgICBSZWY8
QXVkaW9TYW1wbGVEYXRhU291cmNlPiBtX3NhbXBsZUNvbnZlcnRlcjsKKyAgICBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uOworICAgIENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uOworCisgICAgVmVjdG9yPHVp
bnQ4X3Q+IG1fYXVkaW9CdWZmZXI7CisgICAgdWludDY0X3QgbV9yZWFkQ291bnQgeyAwIH07Cisg
ICAgdWludDY0X3QgbV93cml0ZUNvdW50IHsgMCB9OworICAgIGJvb2wgbV9za2lwcGluZ0F1ZGlv
RGF0YSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBVU0UoTElCV0VCUlRDKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323689</attachid>
            <date>2017-10-13 10:12:35 -0700</date>
            <delta_ts>2017-10-13 10:25:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177928-20171013191234.patch</filename>
            <type>text/plain</type>
            <size>70706</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkzODIyMzA3YzA4MTkz
ODNhYjVjNDliNDQxNTFlNWFkODFkNWFmMy4uODg2OTExNjJiZWQ0YTcyYjE3NTg2NzY1ODI3Mzll
N2JmOTNjZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTEwLTEyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlcyBhbmQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlcyBw
b3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciB0aGUgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGFuZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgY2xhc3NlcywKKyAgICAgICAgbW92ZSB0aGUgbWFjIHNwZWNp
ZmljIGNvZGUgdG8gYSBkaWZmZXJlbnQgY2xhc3MuIFRoaXMgd2F5IHdlIGNhbiB1c2UgdGhlbSBm
cm9tCisgICAgICAgIG90aGVyIHBvcnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgd2UgYXJl
IG5vdCBhZGRpbmcgbmV3IGZ1bmN0aW9uYWxpdHkganVzdCByZWZhY3RvcmluZy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmguIEp1c3QgdGhlIHBvcnQg
YWdub3N0aWMgcGFydHMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaC4gRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAuIERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmguIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6IEFkZGVkLCBpdCBhZGRzIENv
Y29hIGNvZGUgcGFydHMgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhpcyBm
dW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUgdG8g
YXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBBZGRl
ZCBDb2NvYSBjb2RlIGZyb20gb3JpZ2luYWwgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6
IEFkZGVkIENvY29hIGNvZGUgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhp
cyBmdW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUg
dG8gYXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBB
ZGRlZCBDb2NvYSBjb2RlIGZyb20gdGhlIG9yaWdpbmFsIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaC4KKwogMjAxNy0x
MC0wNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbV2luQ2Fpcm9dIEZpeCBidWlsZCBhZnRlciBCdWcgMTY3OTU2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDdmMjJlNTE2Zjk3YTI5N2RkNTQ4ZTc1Y2VlMDg3N2ExYzU2MjVmMWEuLmE4NDQxYmY0
Y2IyYmZhNTNhNWMyMjY4MDc3ZjE2NzcxMjAzNWMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yNTQ4LDkgKzI1NDgsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAKICAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcAogICAg
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3Bw
CisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCiAgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKICAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCisgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAogCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmY4Njg4YmMzZDlkNmU0MWU4MmRlNjY2OGIyYjlmYzViYjA4ZDM3Yy4uMjk5Yjc2NmM2
MTZjMGQzZTFiYjhlYWRlYTY3NjAxYzdiYjA0NDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5Niw4ICsxNjk2LDEyIEBA
CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEw
NDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTEw
M0FBQjFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovOyB9Owog
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
ODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggKi87IH07
CisJCTQxMTAzQUFCMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovOyB9OworCQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE4MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovOyB9OwogCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMDMg
LyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi87IH07CiAJCTQxMTAzQUFFMUUzOTc5MTAwMDc2OUYw
MyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQUExRTM5NzkwQTAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi87IH07CisJCTQxMTAzQUFEMUUzOTc5MTAw
MDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTkxRTM5NzkwQTAwNzY5
RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggKi87IH07CisJCTQxMTAz
QUFFMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
QTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3Bw
ICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2ViQ29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOUIx
QTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTQxMjMwOTEz
MTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGODIxNjI5OTAyOUY0RkI1MDEw
MDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTI3RDUzNzBGOEFB
QjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0
YXRlLmNwcCAqLzsgfTsKQEAgLTk0NzIsOCArOTQ3NiwxMiBAQAogCQk0MTBCN0U3MTEwNDVGQUIw
MDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMTAzQUE4MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE4MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBOTFFMzk3OTBBMDA3
NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIz
MjgwMEI5M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMyODAwQjk1NjcyIC8qIFJlYWRhYmxl
U3RyZWFtQllPQlJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtQllPQlJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0OTcs
NiArMTY1MDUsOCBAQAogCQkJCTA3RkZERTY2MTgxQUVENDIwMDcyRDQwOSAvKiBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZS5jcHAgKi8sCiAJCQkJMDdGRkRFNjcxODFBRUQ0MjAwNzJENDA5IC8qIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggKi8sCiAJCQkJNUVCQjg5MzgxQzc3QkRBNDAwQzY1RDQx
IC8qIFBlZXJNZWRpYURlc2NyaXB0aW9uLmggKi8sCisJCQkJNDExMDNBQUExRTM5NzkwQTAwNzY5
RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi8sCisJCQkJNDExMDNBQTkx
RTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oICovLAogCQkJ
CTRBNEY2NTZCMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLywK
IAkJCQk0QTRGNjU2QzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oICov
LAogCQkJCTRBNEY2NTZEMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzLmggKi8sCkBAIC0xNjUwNiw2ICsxNjUxNiw4IEBACiAJCQkJNEE0RjY1NkYxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovLAogCQkJCTJF
QzQxREUyMUMwNDEwQTMwMEQyOTRGRSAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuY3BwICovLAogCQkJCTA3QzFDMEU0MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLywKKwkJCQk0MTEwM0FBNzFFMzk3
OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCAqLywKKwkJCQk0
MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgg
Ki8sCiAJCQkJMzEzNTkxMEMxRTdERENCNjAwRjMwNjMwIC8qIFJUQ0J1bmRsZVBvbGljeS5oICov
LAogCQkJCTA3MjIxQkEyMTdDRjBBRDQwMDg0OEU1MSAvKiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCAqLywKIAkJCQkwNzIyMUJBMzE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50LmggKi8sCkBAIC0xNjU1NCwxNCArMTY1NjYsMTQgQEAKIAkJCQkwNzQ0RUNFQzFF
MEM0QUU1MDAwRDA5NDQgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJ
MDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgg
Ki8sCiAJCQkJMDdFRTc2RUUxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tICovLAotCQkJCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwICovLAotCQkJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAv
KiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCAqLywKKwkJCQk0MTEwM0FBQTFFMzk3OTBB
MDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwICovLAorCQkJ
CTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5oICovLAogCQkJCTVDREQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2UuY3BwICovLAogCQkJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLywKIAkJCQk0QTBGRkFBMzFBQUY1RUY2MDA2
MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgKi8sCiAJCQkJNEEwRkZB
QTQxQUFGNUVGNjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCAqLywK
LQkJCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcCAqLywKLQkJCQk0MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggKi8sCisJCQkJNDExMDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCAqLywKKwkJCQk0MTEwM0FBODFFMzk3
OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCAqLywKIAkJ
CQk1Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmNwcCAqLywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8sCkBAIC0yOTYxNCw2ICsyOTYyNiw3IEBACiAJ
CQkJNDEyOUM5QUIxRjU5QzU3MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAzQzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFs
eXNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExMDNBQUQxRTM5NzkxMDAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDExMDNBQUQx
RTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8q
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRB
MEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NjIxLDYgKzI5NjM0LDcgQEAKIAkJCQk0QTRGNjU3NDFBQTk5N0Yx
MDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBQzFFMzk3OTEwMDA3
NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQjk1MjI0MUY1OEE1OEYwMDkzMURDMiAvKiBS
ZWNvcmRpbmdTd2l6emxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2OEU4MEMyMjZF
MzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1ODE3NUQ0MTRD
MDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1ODIsNiAr
MzM1OTYsNyBAQAogCQkJCTQxMjlDOThBMUY1ODdGRUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVh
bVNpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwM0IxMkIwMjY3NjAwQzFBMzU5IC8q
IFJlYWx0aW1lQW5hbHlzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMDNBQUUxRTM5Nzkx
MDAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTEwM0FBRTFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzM0UxRTQzMjREQzAwNjIx
RTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0QTRGNjU3MDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0QTBGRkFBMTFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNTg5LDYgKzMzNjA0LDcgQEAK
IAkJCQk0QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQzQxREU0MUMwNDEwQTMwMEQyOTRGRSAvKiBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDExMDNBQUIxRTM5NzkxMDAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEwM0FBQjFFMzk3OTEwMDA3NjlGMTQgLyog
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDgzM0QxRTQzMjREOTAwNjIxRTkyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFu
Z2xlU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBQjQxODExM0UzNTZFODAwRDhBQUYz
IC8qIFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MWFiM2Q3NjgzYjNiOGZmYzUwMmJmMzQ2NTI0Nzk3MzVj
MjFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRp
b0Zvcm1hdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKKyAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQoreworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOworfQorCitSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1f
YXVkaW9UcmFjaykKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOworfQorCit2
b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQorewor
ICAgIGlmIChtX2F1ZGlvVHJhY2spCisgICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0
aGlzKTsKK30KKwordm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRy
YWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgdHJh
Y2spCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOworICAgIEFTU0VSVCh0cmFjayk7CisK
KyAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAgICBub3RpZnlNdXRlZENoYW5n
ZSghbV9hdWRpb1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCisgICAgICAgIG1f
YXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMo
KSBjb25zdAoreworICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpl
bXB0eUNhcGFiaWxpdGllcygpOworfQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAoreworICAg
IHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMzNjNi
NjJkYWFiNDg2NjM4MDA5YWRjOTFlM2NjOTIzYjAzMjUwNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldF
QlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlLCBwcml2YXRlIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYp
OworCisgICAgdm9pZCBzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmKTsKKworcHJvdGVjdGVkOgorICAgIFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJm
YWNlPiYmLCBTdHJpbmcmJik7CisgICAgflJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpOwor
Citwcml2YXRlOgorICAgIC8vIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgQVBJCisg
ICAgdmlydHVhbCB2b2lkIE9uRGF0YShjb25zdCB2b2lkKiAvKiBhdWRpb0RhdGEgKi8sIGludCAv
KiBiaXRzUGVyU2FtcGxlICovLCBpbnQgLyogc2FtcGxlUmF0ZSAqLywgc2l6ZV90IC8qIG51bWJl
ck9mQ2hhbm5lbHMgKi8sIHNpemVfdCAvKiBudW1iZXJPZkZyYW1lcyAqLykgeyB9OworCisgICAg
Ly8gUmVhbHRpbWVNZWRpYVNvdXJjZSBBUEkKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgp
IGZpbmFsOworICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSAgZmluYWw7CisKKyAgICBjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBm
aW5hbDsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkg
Y29uc3QgZmluYWw7CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50
U2V0dGluZ3M7CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVy
ZmFjZT4gbV9hdWRpb1RyYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZmM2E1YmViNmY1Y2NjMDEzNjk0ZTA5MTQwMmYyN2YyODIwZjdmYjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCisKKyNpZiBVU0UoTElCV0VCUlRD
KQorCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJS
VENQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkKKyAgICA6IG1fYXVkaW9Tb3VyY2UoV1RGTW92ZShh
dWRpb1NvdXJjZSkpCisgICAgLCBtX3NpbGVuY2VBdWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5jZSkKK3sKKyAgICBtX2F1ZGlvU291cmNlLT5h
ZGRPYnNlcnZlcigqdGhpcyk7CisgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOworfQorCitib29s
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCit7CisgICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2Jz
ZXJ2ZXIoKnRoaXMpOworICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Cisg
ICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOworCisgICAgaW5pdGlhbGl6ZUNv
bnZlcnRlcigpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRlcigpCit7CisgICAgbV9tdXRlZCA9IG1fYXVk
aW9Tb3VyY2UtPm11dGVkKCk7CisgICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxl
ZCgpOworICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQoreworICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgp
OworICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKK30KKwordm9pZCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCit7CisgICAg
bV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7CisgICAgaGFuZGxlTXV0ZWRJZk5lZWRl
ZCgpOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxl
ZENoYW5nZWQoKQoreworICAgIG1fZW5hYmxlZCA9IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsK
KyAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVkKCkKK3sKKyAgICBib29sIGlzU2lsZW5jZWQg
PSBtX211dGVkIHx8ICFtX2VuYWJsZWQ7CisgICAgaWYgKGlzU2lsZW5jZWQgJiYgIW1fc2lsZW5j
ZUF1ZGlvVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdGFy
dFJlcGVhdGluZygxX3MpOworICAgIGlmICghaXNTaWxlbmNlZCAmJiBtX3NpbGVuY2VBdWRpb1Rp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NGUwODllMmYxYzk2ODlj
ZDMxMzcwNThiMTQ2MTA5NTdkZDk0NDA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAg
LTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkxpYldl
YlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCisjaW5j
bHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSB3
ZWJydGMgeworY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKK2NsYXNzIEF1ZGlvVHJhY2tTaW5r
SW50ZXJmYWNlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwg
cHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKTsKKworICAgIH5SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UoKSB7IHN0b3AoKTsgfQorCisgICAgdm9pZCBzdG9wKCk7CisKKyAgICBi
b29sIHNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOworICAgIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU291cmNl
LmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKKworcHJpdmF0ZToKKyAg
ICB2aXJ0dWFsIHZvaWQgQWRkU2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBz
aW5rKSB7IG1fc2lua3MuYXBwZW5kKHNpbmspOyB9CisgICAgdmlydHVhbCB2b2lkIFJlbW92ZVNp
bmsod2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSogc2luaykgeyBtX3NpbmtzLnJlbW92
ZUZpcnN0KHNpbmspOyB9CisKKyAgICBpbnQgQWRkUmVmKCkgY29uc3QgZmluYWwgeyByZWYoKTsg
cmV0dXJuIHJlZkNvdW50KCk7IH0KKyAgICBpbnQgUmVsZWFzZSgpIGNvbnN0IGZpbmFsIHsgZGVy
ZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7IH0KKyAgICBTb3VyY2VTdGF0ZSBzdGF0ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGtMaXZlOyB9CisgICAgYm9vbCByZW1vdGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgUmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2Vy
dmVySW50ZXJmYWNlKikgZmluYWwgeyB9CisgICAgdm9pZCBVbnJlZ2lzdGVyT2JzZXJ2ZXIod2Vi
cnRjOjpPYnNlcnZlckludGVyZmFjZSopIGZpbmFsIHsgfQorCisgICAgdm9pZCBzb3VyY2VNdXRl
ZENoYW5nZWQoKTsKKyAgICB2b2lkIHNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7CisgICAgdmlydHVh
bCB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0
Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIHsg
fTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGlt
aXQoKSB7IHJldHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGluZ0J1ZmZl
cmVkQXVkaW9EYXRhTG93TGltaXQoKSB7IHJldHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzQnVmZmVyZWRFbm91Z2hEYXRhKCkgeyByZXR1cm4gZmFsc2U7IH07CisKKyAgICAvLyBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgQVBJCisgICAgdm9pZCB0cmFja011dGVk
Q2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlTXV0ZWRDaGFu
Z2VkKCk7IH0KKyAgICB2b2lkIHRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUmKSBmaW5hbCB7IHNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7IH0KKyAgICB2b2lkIGF1ZGlv
U2FtcGxlc0F2YWlsYWJsZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYsIGNvbnN0IE1lZGlhVGlt
ZSYgbWVkaWFUaW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkgeyBhdWRp
b1NhbXBsZXNBdmFpbGFibGUobWVkaWFUaW1lLCBkYXRhLCBkZXNjcmlwdGlvbiwgc2FtcGxlQ291
bnQpOyB9CisgICAgdm9pZCB0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmlu
YWwgeyB9CisgICAgdm9pZCB0cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSYpIGZpbmFsIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHB1bGxBdWRpb0RhdGEoKSB7IH07
CisKKyAgICB2b2lkIGluaXRpYWxpemVDb252ZXJ0ZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlTXV0ZWRJZk5lZWRlZCgpOworICAgIHZpcnR1YWwgdm9pZCBzZW5kU2lsZW5jZSgpIHsgfTsK
KworICAgIFZlY3Rvcjx3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9zaW5rczsK
KyAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7CisKKyAgICBi
b29sIG1fbXV0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OworICAg
IFRpbWVyIG1fc2lsZW5jZUF1ZGlvVGltZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc1MzhjZDA1
NWI0ZGNhNDk5MjFiMmQ1MWQ4MGYwODJlYjIyNjczNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDE0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogICAgZGlzdHJpYnV0aW9uLgotICogMy4gTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAg
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20g
dGhpcwotICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmgiCi0KLSNpZiBVU0UoTElCV0VCUlRDKQotCi0jaW5jbHVk
ZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbi5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCi0jaW5jbHVkZSAi
V2ViQXVkaW9CdWZmZXJMaXN0LmgiCi0jaW5jbHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMuaCIKLSNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlv
bi5oPgotCi0jaW5jbHVkZSAiQ29yZU1lZGlhU29mdExpbmsuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1SZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBSZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2U6OmNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNr
SW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkKLXsKLSAgICBh
dXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKFdU
Rk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFja0lkKSkpOwotICAgIHNvdXJjZS0+
c3RhcnQoKTsKLSAgICByZXR1cm4gc291cmNlOwotfQotCi1SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2U6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJh
Y2tJZCkKLSAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgU3RyaW5nKCkpCi0gICAgLCBtX2F1ZGlv
VHJhY2soV1RGTW92ZShhdWRpb1RyYWNrKSkKLXsKLSAgICBub3RpZnlNdXRlZENoYW5nZSghbV9h
dWRpb1RyYWNrKTsKLX0KLQotUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlKCkKLXsKLSAgICBzdG9wKCk7Ci19Ci0KLQotc3RhdGljIGlubGlu
ZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRGVzY3JpcHRpb24oc2l6ZV90IHNh
bXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291bnQpCi17Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKLSAgICBGaWxsT3V0QVNCREZvckxQQ00oc3RyZWFtRm9y
bWF0LCBzYW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1w
bGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9G
b3JtYXQ6OmlzRmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0JpZ0VuZGlhbiwgTGliV2Vi
UlRDQXVkaW9Gb3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQpOwotICAgIHJldHVybiBzdHJlYW1Gb3Jt
YXQ7Ci19Ci0KLXZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpPbkRhdGEoY29uc3Qg
dm9pZCogYXVkaW9EYXRhLCBpbnQgYml0c1BlclNhbXBsZSwgaW50IHNhbXBsZVJhdGUsIHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCi17Ci0gICAgLy8gV2Ug
bWF5IHJlY2VpdmUgT25EYXRhIGNhbGxzIHdpdGggZW1wdHkgc291bmQgZGF0YSAobW9ubywgc2Ft
cGxlcyBlcXVhbCB0byB6ZXJvIGFuZCBzYW1wbGVSYXRlIGVxdWFsIHRvIDE2MDAwKSB3aGVuIHN0
YXJ0aW5nIHRoZSBjYWxsLgotICAgIC8vIEZJWE1FOiBGb3IgdGhlIG1vbWVudCB3ZSBza2lwIHRo
ZW0sIHdlIHNob3VsZCBmaW5kIGEgYmV0dGVyIHNvbHV0aW9uIGF0IGxpYndlYnJ0YyBsZXZlbCB0
byBub3QgYmUgY2FsbGVkIHVudGlsIGdldHRpbmcgc29tZSByZWFsIGRhdGEuCi0gICAgaWYgKHNh
bXBsZVJhdGUgPT0gMTYwMDAgJiYgbnVtYmVyT2ZDaGFubmVscyA9PSAxKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBBU1NFUlQoYml0c1BlclNhbXBsZSA9PSAxNik7Ci0gICAgQVNTRVJUKG51bWJl
ck9mQ2hhbm5lbHMgPT0gMSB8fCBudW1iZXJPZkNoYW5uZWxzID09IDIpOwotICAgIEFTU0VSVChz
YW1wbGVSYXRlID09IDQ4MDAwKTsKLQotICAgIENNVGltZSBzdGFydFRpbWUgPSBDTVRpbWVNYWtl
KG1fbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpOwotICAgIGF1dG8gbWVkaWFUaW1lID0gUEFM
Ojp0b01lZGlhVGltZShzdGFydFRpbWUpOwotICAgIG1fbnVtYmVyT2ZGcmFtZXMgKz0gbnVtYmVy
T2ZGcmFtZXM7Ci0KLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbmV3RGVzY3JpcHRp
b24gPSBzdHJlYW1EZXNjcmlwdGlvbihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKTsKLQot
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdG8gZG8gdGhlIGV4dHJhIG1lbW9yeSBh
bGxvY2F0aW9uIGFuZCBjb3B5LgotICAgIC8vIEluc3RlYWQsIHdlIHNob3VsZCBiZSBhYmxlIHRv
IGRpcmVjdGx5IHBhc3MgYXVkaW9EYXRhIHBvaW50ZXIuCi0gICAgV2ViQXVkaW9CdWZmZXJMaXN0
IGF1ZGlvQnVmZmVyTGlzdCB7IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihuZXdEZXNjcmlwdGlv
biksIFdURjo6c2FmZUNhc3Q8dWludDMyX3Q+KG51bWJlck9mRnJhbWVzKSB9OwotICAgIGF1ZGlv
QnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRhQnl0ZVNpemUgPSBudW1iZXJPZkNoYW5uZWxzICog
bnVtYmVyT2ZGcmFtZXMgKiBiaXRzUGVyU2FtcGxlIC8gODsKLSAgICBhdWRpb0J1ZmZlckxpc3Qu
YnVmZmVyKDApLT5tTnVtYmVyQ2hhbm5lbHMgPSBudW1iZXJPZkNoYW5uZWxzOwotCi0gICAgaWYg
KG11dGVkKCkpCi0gICAgICAgIG1lbXNldChhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0
YSwgMCwgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSk7Ci0gICAgZWxz
ZQotICAgICAgICBtZW1jcHkoYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGEsIGF1ZGlv
RGF0YSwgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSk7Ci0KLSAgICBh
dWRpb1NhbXBsZXNBdmFpbGFibGUobWVkaWFUaW1lLCBhdWRpb0J1ZmZlckxpc3QsIENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbihuZXdEZXNjcmlwdGlvbiksIG51bWJlck9mRnJhbWVzKTsKLX0KLQot
dm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCi17
Ci0gICAgaWYgKG1fYXVkaW9UcmFjaykKLSAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRo
aXMpOwotfQotCi12b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2lu
Z0RhdGEoKQotewotICAgIGlmIChtX2F1ZGlvVHJhY2spCi0gICAgICAgIG1fYXVkaW9UcmFjay0+
UmVtb3ZlU2luayh0aGlzKTsKLX0KLQotdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6
OnNldFNvdXJjZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRl
cmZhY2U+JiYgdHJhY2spCi17Ci0gICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOwotICAgIEFTU0VS
VCh0cmFjayk7Ci0KLSAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKLSAgICBub3Rp
ZnlNdXRlZENoYW5nZSghbV9hdWRpb1RyYWNrKTsKLSAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkp
Ci0gICAgICAgIG1fYXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKLX0KLQotY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpj
YXBhYmlsaXRpZXMoKSBjb25zdAotewotICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzOjplbXB0eUNhcGFiaWxpdGllcygpOwotfQotCi1jb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MmIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBj
b25zdAotewotICAgIHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKLX0KLQotfQotCi0jZW5kaWYg
Ly8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2Uu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI2MDIyMDg1MTk3ZmYzOWE2ODU0NzAx
ZWZiMjBmYjllMGRkNGU0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogICAgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ICAgZGlzdHJpYnV0aW9uLgotICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3Ig
dGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICAgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIFVTRShMSUJXRUJSVEMpCi0KLSNpbmNsdWRlICJMaWJXZWJSVENN
YWNyb3MuaCIKLSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCi0jaW5jbHVkZSA8Q29y
ZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+Ci0jaW5jbHVkZSA8d2VicnRjL2FwaS9tZWRpYXN0cmVh
bWludGVyZmFjZS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotdHlwZWRlZiBjb25z
dCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiAqQ01Gb3JtYXREZXNjcmlwdGlvblJl
ZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQzsKLQotY2xhc3MgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGZpbmFsIDogcHVi
bGljIFJlYWx0aW1lTWVkaWFTb3VyY2UsIHByaXZhdGUgd2VicnRjOjpBdWRpb1RyYWNrU2lua0lu
dGVyZmFjZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2U+IGNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJm
YWNlPiYmLCBTdHJpbmcmJik7Ci0KLSAgICB2b2lkIHNldFNvdXJjZVRyYWNrKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYpOwotCi1wcml2YXRlOgotICAg
IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7Ci0gICAgflJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZSgpOwotCi0gICAgLy8gd2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSBB
UEkKLSAgICB2b2lkIE9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2Ft
cGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1i
ZXJPZkZyYW1lcykgZmluYWw7Ci0KLSAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlIEFQSQotICAg
IHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7Ci0gICAgdm9pZCBzdG9wUHJvZHVjaW5n
RGF0YSgpICBmaW5hbDsKLQotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IGZpbmFsOwotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBmaW5hbDsKLQotICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJlbnRTZXR0aW5nczsKLSAgICBydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiBtX2F1ZGlvVHJhY2s7Ci0KLSAgICB1aW50
NjRfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2Nv
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNmUxMGEyYTI3YTNjMDBh
N2IzOWZhZTYxYTAzZjllYTVhODkwMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29j
b2EuY3BwCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZUNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgor
I2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdWZm
ZXJMaXN0LmgiCisjaW5jbHVkZSAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCIKKyNp
bmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgorCisjaW5j
bHVkZSAiQ29yZU1lZGlhU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6
OmNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYm
IGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkKK3sKKyAgICBhdXRvIHNvdXJjZSA9
IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hOjpjcmVhdGUoV1RGTW92ZShhdWRpb1Ry
YWNrKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpKTsKKyAgICBzb3VyY2UtPnN0YXJ0KCk7CisgICAg
cmV0dXJuIFdURk1vdmUoc291cmNlKTsKK30KKworUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZUNvY29hPiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYTo6Y3JlYXRlKHJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywg
U3RyaW5nJiYgYXVkaW9UcmFja0lkKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUo
YXVkaW9UcmFja0lkKSkpOworfQorCitSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYTo6
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1RyYWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNr
SWQpCisgICAgOiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRpb1RyYWNr
KSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpKQoreworfQorCisKK3N0YXRpYyBpbmxpbmUgQXVkaW9T
dHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbURlc2NyaXB0aW9uKHNpemVfdCBzYW1wbGVSYXRl
LCBzaXplX3QgY2hhbm5lbENvdW50KQoreworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
biBzdHJlYW1Gb3JtYXQ7CisgICAgRmlsbE91dEFTQkRGb3JMUENNKHN0cmVhbUZvcm1hdCwgc2Ft
cGxlUmF0ZSwgY2hhbm5lbENvdW50LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwg
TGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojpp
c0Zsb2F0LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNCaWdFbmRpYW4sIExpYldlYlJUQ0F1ZGlv
Rm9ybWF0Ojppc05vbkludGVybGVhdmVkKTsKKyAgICByZXR1cm4gc3RyZWFtRm9ybWF0OworfQor
Cit2b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hOjpPbkRhdGEoY29uc3Qgdm9p
ZCogYXVkaW9EYXRhLCBpbnQgYml0c1BlclNhbXBsZSwgaW50IHNhbXBsZVJhdGUsIHNpemVfdCBu
dW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCit7CisgICAgLy8gV2UgbWF5
IHJlY2VpdmUgT25EYXRhIGNhbGxzIHdpdGggZW1wdHkgc291bmQgZGF0YSAobW9ubywgc2FtcGxl
cyBlcXVhbCB0byB6ZXJvIGFuZCBzYW1wbGVSYXRlIGVxdWFsIHRvIDE2MDAwKSB3aGVuIHN0YXJ0
aW5nIHRoZSBjYWxsLgorICAgIC8vIEZJWE1FOiBGb3IgdGhlIG1vbWVudCB3ZSBza2lwIHRoZW0s
IHdlIHNob3VsZCBmaW5kIGEgYmV0dGVyIHNvbHV0aW9uIGF0IGxpYndlYnJ0YyBsZXZlbCB0byBu
b3QgYmUgY2FsbGVkIHVudGlsIGdldHRpbmcgc29tZSByZWFsIGRhdGEuCisgICAgaWYgKHNhbXBs
ZVJhdGUgPT0gMTYwMDAgJiYgbnVtYmVyT2ZDaGFubmVscyA9PSAxKQorICAgICAgICByZXR1cm47
CisKKyAgICBBU1NFUlQoYml0c1BlclNhbXBsZSA9PSAxNik7CisgICAgQVNTRVJUKG51bWJlck9m
Q2hhbm5lbHMgPT0gMSB8fCBudW1iZXJPZkNoYW5uZWxzID09IDIpOworICAgIEFTU0VSVChzYW1w
bGVSYXRlID09IDQ4MDAwKTsKKworICAgIENNVGltZSBzdGFydFRpbWUgPSBDTVRpbWVNYWtlKG1f
bnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpOworICAgIGF1dG8gbWVkaWFUaW1lID0gUEFMOjp0
b01lZGlhVGltZShzdGFydFRpbWUpOworICAgIG1fbnVtYmVyT2ZGcmFtZXMgKz0gbnVtYmVyT2ZG
cmFtZXM7CisKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbmV3RGVzY3JpcHRpb24g
PSBzdHJlYW1EZXNjcmlwdGlvbihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKTsKKworICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdG8gZG8gdGhlIGV4dHJhIG1lbW9yeSBhbGxv
Y2F0aW9uIGFuZCBjb3B5LgorICAgIC8vIEluc3RlYWQsIHdlIHNob3VsZCBiZSBhYmxlIHRvIGRp
cmVjdGx5IHBhc3MgYXVkaW9EYXRhIHBvaW50ZXIuCisgICAgV2ViQXVkaW9CdWZmZXJMaXN0IGF1
ZGlvQnVmZmVyTGlzdCB7IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihuZXdEZXNjcmlwdGlvbiks
IFdURjo6c2FmZUNhc3Q8dWludDMyX3Q+KG51bWJlck9mRnJhbWVzKSB9OworICAgIGF1ZGlvQnVm
ZmVyTGlzdC5idWZmZXIoMCktPm1EYXRhQnl0ZVNpemUgPSBudW1iZXJPZkNoYW5uZWxzICogbnVt
YmVyT2ZGcmFtZXMgKiBiaXRzUGVyU2FtcGxlIC8gODsKKyAgICBhdWRpb0J1ZmZlckxpc3QuYnVm
ZmVyKDApLT5tTnVtYmVyQ2hhbm5lbHMgPSBudW1iZXJPZkNoYW5uZWxzOworCisgICAgaWYgKG11
dGVkKCkpCisgICAgICAgIG1lbXNldChhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwg
MCwgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSk7CisgICAgZWxzZQor
ICAgICAgICBtZW1jcHkoYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGEsIGF1ZGlvRGF0
YSwgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSk7CisKKyAgICBhdWRp
b1NhbXBsZXNBdmFpbGFibGUobWVkaWFUaW1lLCBhdWRpb0J1ZmZlckxpc3QsIENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbihuZXdEZXNjcmlwdGlvbiksIG51bWJlck9mRnJhbWVzKTsKK30KKworfQor
CisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZUNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAxMDQ3NWU1ZWNhMmZmYzkxNDMwMzQ3
MWI2NWZiMWE4OTdkYWJhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oCkBA
IC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuaCIKKworI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgor
Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uICpDTUZvcm1h
dERlc2NyaXB0aW9uUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYkF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDOworCitjbGFzcyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2VDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UgeworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E+IGNy
ZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBT
dHJpbmcmJik7CisKK3ByaXZhdGU6CisgICAgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29j
b2EocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3Ry
aW5nJiYpOworCisgICAgLy8gd2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSBBUEkKKyAg
ICB2b2lkIE9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBp
bnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZy
YW1lcykgZmluYWw7CisKKyAgICB1aW50NjRfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGQ5MTAxZGM0Mzc5MTdkNTEwZTc0YmZjNzc1MWM3YzcwYzdkYzIyYTQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgcmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCIKLQotI2lmIFVTRShMSUJXRUJSVEMpCi0KLSNp
bmNsdWRlICJDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKLSNpbmNsdWRlICJMaWJXZWJSVENB
dWRpb0Zvcm1hdC5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotc3RhdGljIGlubGluZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24g
bGlid2VicnRjQXVkaW9Gb3JtYXQoRmxvYXQ2NCBzYW1wbGVSYXRlLCBzaXplX3QgY2hhbm5lbENv
dW50KQotewotICAgIC8vIEZJWE1FOiBNaWNyb3Bob25lcyBjYW4gaGF2ZSBtb3JlIHRoYW4gdHdv
IGNoYW5uZWxzLiBJbiBzdWNoIGNhc2UsIHdlIHNob3VsZCBkbyB0aGUgbWl4IGRvd24gYmFzZWQg
b24gQXVkaW9DaGFubmVsTGF5b3V0VGFnLgotICAgIHNpemVfdCBsaWJXZWJSVENDaGFubmVsQ291
bnQgPSBjaGFubmVsQ291bnQgPj0gMiA/IDIgOiBjaGFubmVsQ291bnQ7Ci0gICAgQXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKLSAgICBGaWxsT3V0QVNCREZvckxQQ00o
c3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlLCBsaWJXZWJSVENDaGFubmVsQ291bnQsIExpYldlYlJU
Q0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6
ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzRmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojpp
c0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQpOwotICAg
IHJldHVybiBzdHJlYW1Gb3JtYXQ7Ci19Ci0KLVJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4m
JiBhdWRpb1NvdXJjZSkKLSAgICA6IG1fYXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRpb1NvdXJjZSkp
Ci0gICAgLCBtX3NhbXBsZUNvbnZlcnRlcihBdWRpb1NhbXBsZURhdGFTb3VyY2U6OmNyZWF0ZShM
aWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlUmF0ZSAqIDIpKQotICAgICwgbV9zaWxlbmNlQXVk
aW9UaW1lcigqdGhpcywgJlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2VuZFNpbGVuY2Up
Ci17Ci0gICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwotICAgIGluaXRpYWxp
emVDb252ZXJ0ZXIoKTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNl
dFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgbmV3U291cmNlKQotewotICAg
IG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKLSAgICBtX2F1ZGlvU291cmNl
ID0gV1RGTW92ZShuZXdTb3VyY2UpOwotICAgIG1fYXVkaW9Tb3VyY2UtPmFkZE9ic2VydmVyKCp0
aGlzKTsKLQotICAgIGluaXRpYWxpemVDb252ZXJ0ZXIoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmluaXRpYWxpemVDb252ZXJ0ZXIo
KQotewotICAgIG1fbXV0ZWQgPSBtX2F1ZGlvU291cmNlLT5tdXRlZCgpOwotICAgIG1fZW5hYmxl
ZCA9IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsKLSAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7
Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzdG9wKCkKLXsKLSAgICBt
X3NpbGVuY2VBdWRpb1RpbWVyLnN0b3AoKTsKLSAgICBtX2F1ZGlvU291cmNlLT5yZW1vdmVPYnNl
cnZlcigqdGhpcyk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzb3Vy
Y2VNdXRlZENoYW5nZWQoKQotewotICAgIG1fbXV0ZWQgPSBtX2F1ZGlvU291cmNlLT5tdXRlZCgp
OwotICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2U6OnNvdXJjZUVuYWJsZWRDaGFuZ2VkKCkKLXsKLSAgICBtX2VuYWJsZWQgPSBt
X2F1ZGlvU291cmNlLT5lbmFibGVkKCk7Ci0gICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwotfQot
Ci12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aGFuZGxlTXV0ZWRJZk5lZWRlZCgp
Ci17Ci0gICAgYm9vbCBpc1NpbGVuY2VkID0gbV9tdXRlZCB8fCAhbV9lbmFibGVkOwotICAgIG1f
c2FtcGxlQ29udmVydGVyLT5zZXRNdXRlZChpc1NpbGVuY2VkKTsKLSAgICBpZiAoaXNTaWxlbmNl
ZCAmJiAhbV9zaWxlbmNlQXVkaW9UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3NpbGVuY2VB
dWRpb1RpbWVyLnN0YXJ0UmVwZWF0aW5nKDFfcyk7Ci0gICAgaWYgKCFpc1NpbGVuY2VkICYmIG1f
c2lsZW5jZUF1ZGlvVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9zaWxlbmNlQXVkaW9UaW1l
ci5zdG9wKCk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2ls
ZW5jZSgpCi17Ci0gICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1Ro
cmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIHNp
emVfdCBjaHVua1NhbXBsZUNvdW50ID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVS
YXRlKCkgLyAxMDA7Ci0gICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gY2h1bmtTYW1wbGVDb3Vu
dCAqIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAqIG1fb3V0cHV0U3RyZWFt
RGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOwotCi0gICAgICAgIGlmICghYnVmZmVyU2l6
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX2F1ZGlvQnVmZmVyLmdyb3coYnVm
ZmVyU2l6ZSk7Ci0gICAgICAgIG1lbXNldChtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgMCwgYnVmZmVy
U2l6ZSk7Ci0gICAgICAgIGZvciAoYXV0byBzaW5rIDogbV9zaW5rcykKLSAgICAgICAgICAgIHNp
bmstPk9uRGF0YShtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNh
bXBsZVNpemUsIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpLCBtX291dHB1
dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSwgY2h1bmtTYW1wbGVDb3VudCk7
Ci0gICAgfSk7Ci19Ci0KLWJvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjppc1JlYWNo
aW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKQotewotICAgIGF1dG8gd3JpdHRlbkF1ZGlv
RHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpOwotICAgIGF1dG8gcmVhZEF1ZGlvRHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1fb3V0
cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotCi0gICAgQVNTRVJUKHdyaXR0ZW5B
dWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1cmF0aW9uKTsKLSAgICByZXR1cm4gd3JpdHRlbkF1
ZGlvRHVyYXRpb24gPiByZWFkQXVkaW9EdXJhdGlvbiArIDAuNTsKLX0KLQotYm9vbCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0
KCkKLXsKLSAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9p
bnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKLSAgICBhdXRvIHJlYWRBdWRpb0R1
cmF0aW9uID0gbV9yZWFkQ291bnQgLyBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJh
dGUoKTsKLQotICAgIEFTU0VSVCh3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJh
dGlvbik7Ci0gICAgcmV0dXJuIHdyaXR0ZW5BdWRpb0R1cmF0aW9uIDwgcmVhZEF1ZGlvRHVyYXRp
b24gKyAwLjE7Ci19Ci0KLWJvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpoYXNCdWZm
ZXJlZEVuZ291aERhdGEoKQotewotICAgIGF1dG8gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dy
aXRlQ291bnQgLyBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotICAgIGF1
dG8gcmVhZEF1ZGlvRHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1fb3V0cHV0U3RyZWFtRGVzY3Jp
cHRpb24uc2FtcGxlUmF0ZSgpOwotCi0gICAgQVNTRVJUKHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49
IHJlYWRBdWRpb0R1cmF0aW9uKTsKLSAgICByZXR1cm4gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0g
cmVhZEF1ZGlvRHVyYXRpb24gKyAwLjAxOwotfQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IHN0cmVhbURlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCi17Ci0gICAgaWYgKG1faW5w
dXRTdHJlYW1EZXNjcmlwdGlvbiAhPSBzdHJlYW1EZXNjcmlwdGlvbikgewotICAgICAgICBtX2lu
cHV0U3RyZWFtRGVzY3JpcHRpb24gPSB0b0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihzdHJlYW1E
ZXNjcmlwdGlvbik7Ci0gICAgICAgIGF1dG8gc3RhdHVzICA9IG1fc2FtcGxlQ29udmVydGVyLT5z
ZXRJbnB1dEZvcm1hdChtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24pOwotICAgICAgICBBU1NFUlRf
VU5VU0VEKHN0YXR1cywgIXN0YXR1cyk7Ci0KLSAgICAgICAgbV9vdXRwdXRTdHJlYW1EZXNjcmlw
dGlvbiA9IGxpYndlYnJ0Y0F1ZGlvRm9ybWF0KExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVS
YXRlLCBzdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCkpOwotICAgICAgICBzdGF0
dXMgPSBtX3NhbXBsZUNvbnZlcnRlci0+c2V0T3V0cHV0Rm9ybWF0KG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSk7Ci0gICAgICAgIEFTU0VSVCghc3RhdHVzKTsK
LSAgICB9Ci0KLSAgICAvLyBMZXQncyBza2lwIHB1c2hpbmcgc2FtcGxlcyBpZiB3ZSBhcmUgdG9v
IHNsb3cgcHVsbGluZyB0aGVtLgotICAgIGlmIChtX3NraXBwaW5nQXVkaW9EYXRhKSB7Ci0gICAg
ICAgIGlmICghaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGltaXQoKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgbV9za2lwcGluZ0F1ZGlvRGF0YSA9IGZhbHNlOwotICAgIH0g
ZWxzZSBpZiAoaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCkpIHsKLSAgICAg
ICAgbV9za2lwcGluZ0F1ZGlvRGF0YSA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICAvLyBJZiB3ZSBjaGFuZ2UgdGhlIGF1ZGlvIHRyYWNrIG9yIGl0cyBzYW1wbGUgcmF0ZSBj
aGFuZ2VzLCB0aGUgdGltZXN0YW1wIGJhc2VkIG9uIG1fd3JpdGVDb3VudCBtYXkgYmUgd3Jvbmcu
Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB1cGRhdGUgbV93cml0ZUNvdW50IHRvIGJlIHZhbGlk
IGFjY29yZGluZyB0aGUgbmV3IHNhbXBsZVJhdGUuCi0gICAgbV9zYW1wbGVDb252ZXJ0ZXItPnB1
c2hTYW1wbGVzKE1lZGlhVGltZShtX3dyaXRlQ291bnQsIHN0YXRpY19jYXN0PHVpbnQzMl90Piht
X2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpKSksIGF1ZGlvRGF0YSwgc2FtcGxl
Q291bnQpOwotICAgIG1fd3JpdGVDb3VudCArPSBzYW1wbGVDb3VudDsKLQotICAgIGlmICghaGFz
QnVmZmVyZWRFbmdvdWhEYXRhKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIExpYldlYlJUQ1By
b3ZpZGVyOjpjYWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0gewotICAgICAgICBwcm90ZWN0ZWRUaGlzLT5wdWxsQXVkaW9EYXRhKCk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpwdWxsQXVkaW9E
YXRhKCkKLXsKLSAgICAvLyBsaWJ3ZWJydGMgZXhwZWN0cyAxMCBtcyBjaHVua3MuCi0gICAgc2l6
ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJh
dGUoKSAvIDEwMDsKLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IGNodW5rU2FtcGxlQ291bnQgKiBM
aWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlQnl0ZVNpemUgKiBtX291dHB1dFN0cmVhbURlc2Ny
aXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKTsKLSAgICBtX2F1ZGlvQnVmZmVyLmdyb3coYnVmZmVy
U2l6ZSk7Ci0KLSAgICBBdWRpb0J1ZmZlckxpc3QgYnVmZmVyTGlzdDsKLSAgICBidWZmZXJMaXN0
Lm1OdW1iZXJCdWZmZXJzID0gMTsKLSAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJD
aGFubmVscyA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOwot
ICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IGJ1ZmZlclNpemU7Ci0g
ICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YSA9IG1fYXVkaW9CdWZmZXIuZGF0YSgpOwot
Ci0gICAgbV9zYW1wbGVDb252ZXJ0ZXItPnB1bGxBdmFsYWlibGVTYW1wbGVzQXNDaHVua3MoYnVm
ZmVyTGlzdCwgY2h1bmtTYW1wbGVDb3VudCwgbV9yZWFkQ291bnQsIFt0aGlzLCBjaHVua1NhbXBs
ZUNvdW50XSB7Ci0gICAgICAgIG1fcmVhZENvdW50ICs9IGNodW5rU2FtcGxlQ291bnQ7Ci0gICAg
ICAgIGZvciAoYXV0byBzaW5rIDogbV9zaW5rcykKLSAgICAgICAgICAgIHNpbmstPk9uRGF0YSht
X2F1ZGlvQnVmZmVyLmRhdGEoKSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIG1f
b3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpLCBtX291dHB1dFN0cmVhbURlc2Ny
aXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSwgY2h1bmtTYW1wbGVDb3VudCk7Ci0gICAgfSk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBlYmM4MDRlNDk1ODUzMGJlNjYwMmZmZDYxYTJiNTNjN2ViNmU1NzQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJl
cXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0g
KiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVTRShMSUJXRUJSVEMpCi0K
LSNpbmNsdWRlICJBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCIKLSNpbmNsdWRlICJMaWJXZWJSVENN
YWNyb3MuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgotI2luY2x1ZGUg
IlRpbWVyLmgiCi0jaW5jbHVkZSA8d2VicnRjL2FwaS9tZWRpYXN0cmVhbWludGVyZmFjZS5oPgot
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2Ugd2VicnRj
IHsKLWNsYXNzIEF1ZGlvVHJhY2tJbnRlcmZhY2U7Ci1jbGFzcyBBdWRpb1RyYWNrU2lua0ludGVy
ZmFjZTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlPiwgcHVibGljIHdlYnJ0Yzo6QXVkaW9Tb3VyY2VJbnRlcmZhY2Us
IHByaXZhdGUgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4gY3JlYXRlKFJlZjxNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoV1RGTW92ZShhdWRpb1NvdXJjZSkpKTsgfQot
ICAgIH5SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoKSB7IHN0b3AoKTsgfQotCi0gICAgdm9p
ZCBzdG9wKCk7Ci0KLSAgICBib29sIHNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU+JiYpOwotICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiBzb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBtX2F1ZGlvU291cmNlLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgQWRkU2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJm
YWNlKiBzaW5rKSB7IG1fc2lua3MuYXBwZW5kKHNpbmspOyB9Ci0gICAgdmlydHVhbCB2b2lkIFJl
bW92ZVNpbmsod2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSogc2luaykgeyBtX3Npbmtz
LnJlbW92ZUZpcnN0KHNpbmspOyB9Ci0KLSAgICBpbnQgQWRkUmVmKCkgY29uc3QgZmluYWwgeyBy
ZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7IH0KLSAgICBpbnQgUmVsZWFzZSgpIGNvbnN0IGZpbmFs
IHsgZGVyZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7IH0KLSAgICBTb3VyY2VTdGF0ZSBzdGF0ZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGtMaXZlOyB9Ci0gICAgYm9vbCByZW1vdGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgUmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6
Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9Ci0gICAgdm9pZCBVbnJlZ2lzdGVyT2JzZXJ2
ZXIod2VicnRjOjpPYnNlcnZlckludGVyZmFjZSopIGZpbmFsIHsgfQotCi0gICAgdm9pZCBzb3Vy
Y2VNdXRlZENoYW5nZWQoKTsKLSAgICB2b2lkIHNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7Ci0gICAg
dm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KTsKLQot
ICAgIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCk7Ci0gICAgYm9v
bCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpOwotICAgIGJvb2wgaGFzQnVm
ZmVyZWRFbmdvdWhEYXRhKCk7Ci0KLSAgICAvLyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2Jz
ZXJ2ZXIgQVBJCi0gICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSYpIGZpbmFsIHsgc291cmNlTXV0ZWRDaGFuZ2VkKCk7IH0KLSAgICB2b2lkIHRyYWNrRW5h
YmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IHNvdXJjZUVuYWJs
ZWRDaGFuZ2VkKCk7IH0KLSAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZSYsIGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lLCBjb25zdCBQbGF0Zm9y
bUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24sIHNpemVfdCBzYW1wbGVDb3VudCkgZmluYWwgeyBhdWRpb1NhbXBsZXNBdmFpbGFibGUobWVk
aWFUaW1lLCBkYXRhLCBkZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQpOyB9Ci0gICAgdm9pZCB0cmFj
a0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9Ci0gICAgdm9pZCB0cmFj
a1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQotCi0g
ICAgdm9pZCBwdWxsQXVkaW9EYXRhKCk7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVDb252ZXJ0ZXIo
KTsKLSAgICB2b2lkIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKLSAgICB2b2lkIHNlbmRTaWxlbmNl
KCk7Ci0KLSAgICBWZWN0b3I8d2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSo+IG1fc2lu
a3M7Ci0gICAgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX2F1ZGlvU291cmNlOwotICAg
IFJlZjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fc2FtcGxlQ29udmVydGVyOwotICAgIENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb247Ci0gICAgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb247Ci0KLSAgICBWZWN0
b3I8dWludDhfdD4gbV9hdWRpb0J1ZmZlcjsKLSAgICB1aW50NjRfdCBtX3JlYWRDb3VudCB7IDAg
fTsKLSAgICB1aW50NjRfdCBtX3dyaXRlQ291bnQgeyAwIH07Ci0gICAgYm9vbCBtX211dGVkIHsg
ZmFsc2UgfTsKLSAgICBib29sIG1fZW5hYmxlZCB7IHRydWUgfTsKLSAgICBib29sIG1fc2tpcHBp
bmdBdWRpb0RhdGEgeyBmYWxzZSB9OwotICAgIFRpbWVyIG1fc2lsZW5jZUF1ZGlvVGltZXI7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTEyYjg4YWY4MGY0N2RhN2JhMWQ0YmMxODRjNWIwZTk4YzIwNGVhNgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2VDb2NvYS5oIgorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkNBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0Lmgi
CisjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGF0aWMgaW5saW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBsaWJ3ZWJydGNBdWRp
b0Zvcm1hdChGbG9hdDY0IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291bnQpCit7CisgICAg
Ly8gRklYTUU6IE1pY3JvcGhvbmVzIGNhbiBoYXZlIG1vcmUgdGhhbiB0d28gY2hhbm5lbHMuIElu
IHN1Y2ggY2FzZSwgd2Ugc2hvdWxkIGRvIHRoZSBtaXggZG93biBiYXNlZCBvbiBBdWRpb0NoYW5u
ZWxMYXlvdXRUYWcuCisgICAgc2l6ZV90IGxpYldlYlJUQ0NoYW5uZWxDb3VudCA9IGNoYW5uZWxD
b3VudCA+PSAyID8gMiA6IGNoYW5uZWxDb3VudDsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24gc3RyZWFtRm9ybWF0OworICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1Gb3JtYXQs
IHNhbXBsZVJhdGUsIGxpYldlYlJUQ0NoYW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6
OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENB
dWRpb0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBM
aWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7CisgICAgcmV0dXJuIHN0cmVh
bUZvcm1hdDsKK30KKworUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OlJlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBh
dWRpb1NvdXJjZSkKKyAgICA6IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1
ZGlvU291cmNlKSkKKyAgICAsIG1fc2FtcGxlQ29udmVydGVyKEF1ZGlvU2FtcGxlRGF0YVNvdXJj
ZTo6Y3JlYXRlKExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRlICogMikpCit7Cit9CisK
K1JlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZTo6Y3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkK
K3sKKyAgICByZXR1cm4gUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmNyZWF0ZShX
VEZNb3ZlKGF1ZGlvU291cmNlKSk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlQ29jb2E6OmhhbmRsZU11dGVkSWZOZWVkZWQoKQoreworICAgIGJvb2wgaXNTaWxlbmNlZCA9
IG1fbXV0ZWQgfHwgIW1fZW5hYmxlZDsKKyAgICBtX3NhbXBsZUNvbnZlcnRlci0+c2V0TXV0ZWQo
aXNTaWxlbmNlZCk7CisKKyAgICBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6aGFu
ZGxlTXV0ZWRJZk5lZWRlZCgpOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZUNvY29hOjpzZW5kU2lsZW5jZSgpCit7CisgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldl
YlJUQ1NpZ25hbGluZ1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSB7CisgICAgICAgIHNpemVfdCBjaHVua1NhbXBsZUNvdW50ID0gbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCkgLyAxMDA7CisgICAgICAgIHNpemVfdCBidWZmZXJTaXplID0g
Y2h1bmtTYW1wbGVDb3VudCAqIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAq
IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOworCisgICAgICAg
IGlmICghYnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2F1ZGlv
QnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7CisgICAgICAgIG1lbXNldChtX2F1ZGlvQnVmZmVyLmRh
dGEoKSwgMCwgYnVmZmVyU2l6ZSk7CisgICAgICAgIGZvciAoYXV0byBzaW5rIDogbV9zaW5rcykK
KyAgICAgICAgICAgIHNpbmstPk9uRGF0YShtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgTGliV2ViUlRD
QXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpLCBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSwgY2h1
bmtTYW1wbGVDb3VudCk7CisgICAgfSk7Cit9CisKK2Jvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlQ29jb2E6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpCit7Cisg
ICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJl
YW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisgICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9
IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisK
KyAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOwor
ICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+IHJlYWRBdWRpb0R1cmF0aW9uICsgMC41
OworfQorCitib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjppc1JlYWNoaW5n
QnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpCit7CisgICAgYXV0byB3cml0dGVuQXVkaW9EdXJh
dGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRl
KCk7CisgICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRT
dHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisKKyAgICBBU1NFUlQod3JpdHRlbkF1ZGlv
RHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOworICAgIHJldHVybiB3cml0dGVuQXVkaW9E
dXJhdGlvbiA8IHJlYWRBdWRpb0R1cmF0aW9uICsgMC4xOworfQorCitib29sIFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpoYXNCdWZmZXJlZEVub3VnaERhdGEoKQoreworICAgIGF1
dG8gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBtX2lucHV0U3RyZWFtRGVz
Y3JpcHRpb24uc2FtcGxlUmF0ZSgpOworICAgIGF1dG8gcmVhZEF1ZGlvRHVyYXRpb24gPSBtX3Jl
YWRDb3VudCAvIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOworCisgICAg
QVNTRVJUKHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1cmF0aW9uKTsKKyAgICBy
ZXR1cm4gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24gKyAwLjAxOwor
fQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjphdWRpb1NhbXBsZXNB
dmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlv
RGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgc3RyZWFtRGVzY3JpcHRpb24sIHNp
emVfdCBzYW1wbGVDb3VudCkKK3sKKyAgICBpZiAobV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uICE9
IHN0cmVhbURlc2NyaXB0aW9uKSB7CisgICAgICAgIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbiA9
IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKHN0cmVhbURlc2NyaXB0aW9uKTsKKyAgICAgICAg
YXV0byBzdGF0dXMgID0gbV9zYW1wbGVDb252ZXJ0ZXItPnNldElucHV0Rm9ybWF0KG1faW5wdXRT
dHJlYW1EZXNjcmlwdGlvbik7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVz
KTsKKworICAgICAgICBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uID0gbGlid2VicnRjQXVkaW9G
b3JtYXQoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUsIHN0cmVhbURlc2NyaXB0aW9u
Lm51bWJlck9mQ2hhbm5lbHMoKSk7CisgICAgICAgIHN0YXR1cyA9IG1fc2FtcGxlQ29udmVydGVy
LT5zZXRPdXRwdXRGb3JtYXQobV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlw
dGlvbigpKTsKKyAgICAgICAgQVNTRVJUKCFzdGF0dXMpOworICAgIH0KKworICAgIC8vIExldCdz
IHNraXAgcHVzaGluZyBzYW1wbGVzIGlmIHdlIGFyZSB0b28gc2xvdyBwdWxsaW5nIHRoZW0uCisg
ICAgaWYgKG1fc2tpcHBpbmdBdWRpb0RhdGEpIHsKKyAgICAgICAgaWYgKCFpc1JlYWNoaW5nQnVm
ZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBt
X3NraXBwaW5nQXVkaW9EYXRhID0gZmFsc2U7CisgICAgfSBlbHNlIGlmIChpc1JlYWNoaW5nQnVm
ZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSkgeworICAgICAgICBtX3NraXBwaW5nQXVkaW9EYXRh
ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIElmIHdlIGNoYW5nZSB0
aGUgYXVkaW8gdHJhY2sgb3IgaXRzIHNhbXBsZSByYXRlIGNoYW5nZXMsIHRoZSB0aW1lc3RhbXAg
YmFzZWQgb24gbV93cml0ZUNvdW50IG1heSBiZSB3cm9uZy4KKyAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIHVwZGF0ZSBtX3dyaXRlQ291bnQgdG8gYmUgdmFsaWQgYWNjb3JkaW5nIHRoZSBuZXcgc2Ft
cGxlUmF0ZS4KKyAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVzaFNhbXBsZXMoTWVkaWFUaW1lKG1f
d3JpdGVDb3VudCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlv
bi5zYW1wbGVSYXRlKCkpKSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7CisgICAgbV93cml0ZUNv
dW50ICs9IHNhbXBsZUNvdW50OworCisgICAgaWYgKCFoYXNCdWZmZXJlZEVuZ291aERhdGEoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1Np
Z25hbGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAg
IHByb3RlY3RlZFRoaXMtPnB1bGxBdWRpb0RhdGEoKTsKKyAgICB9KTsKK30KKwordm9pZCBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6cHVsbEF1ZGlvRGF0YSgpCit7CisgICAgLy8g
bGlid2VicnRjIGV4cGVjdHMgMTAgbXMgY2h1bmtzLgorICAgIHNpemVfdCBjaHVua1NhbXBsZUNv
dW50ID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgLyAxMDA7CisgICAg
c2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVkaW9Gb3Jt
YXQ6OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNo
YW5uZWxzKCk7CisgICAgbV9hdWRpb0J1ZmZlci5ncm93KGJ1ZmZlclNpemUpOworCisgICAgQXVk
aW9CdWZmZXJMaXN0IGJ1ZmZlckxpc3Q7CisgICAgYnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVycyA9
IDE7CisgICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSBtX291dHB1
dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKTsKKyAgICBidWZmZXJMaXN0Lm1C
dWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBidWZmZXJTaXplOworICAgIGJ1ZmZlckxpc3QubUJ1
ZmZlcnNbMF0ubURhdGEgPSBtX2F1ZGlvQnVmZmVyLmRhdGEoKTsKKworICAgIG1fc2FtcGxlQ29u
dmVydGVyLT5wdWxsQXZhbGFpYmxlU2FtcGxlc0FzQ2h1bmtzKGJ1ZmZlckxpc3QsIGNodW5rU2Ft
cGxlQ291bnQsIG1fcmVhZENvdW50LCBbdGhpcywgY2h1bmtTYW1wbGVDb3VudF0geworICAgICAg
ICBtX3JlYWRDb3VudCArPSBjaHVua1NhbXBsZUNvdW50OworICAgICAgICBmb3IgKGF1dG8gc2lu
ayA6IG1fc2lua3MpCisgICAgICAgICAgICBzaW5rLT5PbkRhdGEobV9hdWRpb0J1ZmZlci5kYXRh
KCksIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBtX291dHB1dFN0cmVhbURlc2Ny
aXB0aW9uLnNhbXBsZVJhdGUoKSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNo
YW5uZWxzKCksIGNodW5rU2FtcGxlQ291bnQpOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTcwNDMwMjI5MmZi
MTA3ODE1OWEyYTlkMTUwMTgyOGY4MTIwNjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZUNvY29hLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQs
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQg
dG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVEYXRhU291cmNlLmgiCisj
aW5jbHVkZSAiUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCisKK25hbWVzcGFjZSB3ZWJy
dGMgeworY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKK2NsYXNzIEF1ZGlvVHJhY2tTaW5rSW50
ZXJmYWNlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hPiwgcHVibGljIFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2VDb2NvYT4gY3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBhdWRp
b1NvdXJjZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYShXVEZNb3ZlKGF1ZGlvU291cmNlKSkpOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGlj
aXQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoUmVmPE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlPiYmKTsKKworICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlh
VGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYsIHNpemVfdCkgZmluYWw7CisKKyAgICBib29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlv
RGF0YUhpZ2hMaW1pdCgpIGZpbmFsOworICAgIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9E
YXRhTG93TGltaXQoKSBmaW5hbDsKKyAgICBib29sIGhhc0J1ZmZlcmVkRW5vdWdoRGF0YSgpIGZp
bmFsOworCisgICAgdm9pZCBwdWxsQXVkaW9EYXRhKCkgZmluYWw7CisKKyAgICB2b2lkIGhhbmRs
ZU11dGVkSWZOZWVkZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRTaWxlbmNlKCkgZmluYWw7CisK
KyAgICBSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiBtX3NhbXBsZUNvbnZlcnRlcjsKKyAgICBD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uOworICAgIENB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uOworCisgICAg
VmVjdG9yPHVpbnQ4X3Q+IG1fYXVkaW9CdWZmZXI7CisgICAgdWludDY0X3QgbV9yZWFkQ291bnQg
eyAwIH07CisgICAgdWludDY0X3QgbV93cml0ZUNvdW50IHsgMCB9OworICAgIGJvb2wgbV9za2lw
cGluZ0F1ZGlvRGF0YSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323694</attachid>
            <date>2017-10-13 10:25:09 -0700</date>
            <delta_ts>2017-10-13 10:45:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177928-20171013192509.patch</filename>
            <type>text/plain</type>
            <size>70708</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkzODIyMzA3YzA4MTkz
ODNhYjVjNDliNDQxNTFlNWFkODFkNWFmMy4uODg2OTExNjJiZWQ0YTcyYjE3NTg2NzY1ODI3Mzll
N2JmOTNjZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTEwLTEyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlcyBhbmQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlcyBw
b3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciB0aGUgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGFuZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgY2xhc3NlcywKKyAgICAgICAgbW92ZSB0aGUgbWFjIHNwZWNp
ZmljIGNvZGUgdG8gYSBkaWZmZXJlbnQgY2xhc3MuIFRoaXMgd2F5IHdlIGNhbiB1c2UgdGhlbSBm
cm9tCisgICAgICAgIG90aGVyIHBvcnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgd2UgYXJl
IG5vdCBhZGRpbmcgbmV3IGZ1bmN0aW9uYWxpdHkganVzdCByZWZhY3RvcmluZy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmguIEp1c3QgdGhlIHBvcnQg
YWdub3N0aWMgcGFydHMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaC4gRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAuIERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmguIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6IEFkZGVkLCBpdCBhZGRzIENv
Y29hIGNvZGUgcGFydHMgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhpcyBm
dW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUgdG8g
YXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBBZGRl
ZCBDb2NvYSBjb2RlIGZyb20gb3JpZ2luYWwgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6
IEFkZGVkIENvY29hIGNvZGUgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhp
cyBmdW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUg
dG8gYXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBB
ZGRlZCBDb2NvYSBjb2RlIGZyb20gdGhlIG9yaWdpbmFsIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaC4KKwogMjAxNy0x
MC0wNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbV2luQ2Fpcm9dIEZpeCBidWlsZCBhZnRlciBCdWcgMTY3OTU2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDdmMjJlNTE2Zjk3YTI5N2RkNTQ4ZTc1Y2VlMDg3N2ExYzU2MjVmMWEuLmE4NDQxYmY0
Y2IyYmZhNTNhNWMyMjY4MDc3ZjE2NzcxMjAzNWMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yNTQ4LDkgKzI1NDgsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAKICAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcAogICAg
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3Bw
CisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCiAgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKICAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCisgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAogCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmY4Njg4YmMzZDlkNmU0MWU4MmRlNjY2OGIyYjlmYzViYjA4ZDM3Yy4uMjk5Yjc2NmM2
MTZjMGQzZTFiYjhlYWRlYTY3NjAxYzdiYjA0NDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5Niw4ICsxNjk2LDEyIEBA
CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEw
NDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTEw
M0FBQjFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovOyB9Owog
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
ODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggKi87IH07
CisJCTQxMTAzQUFCMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovOyB9OworCQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE4MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovOyB9OwogCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMDMg
LyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi87IH07CiAJCTQxMTAzQUFFMUUzOTc5MTAwMDc2OUYw
MyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQUExRTM5NzkwQTAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi87IH07CisJCTQxMTAzQUFEMUUzOTc5MTAw
MDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTkxRTM5NzkwQTAwNzY5
RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggKi87IH07CisJCTQxMTAz
QUFFMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
QTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3Bw
ICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2ViQ29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOUIx
QTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTQxMjMwOTEz
MTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGODIxNjI5OTAyOUY0RkI1MDEw
MDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTI3RDUzNzBGOEFB
QjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0
YXRlLmNwcCAqLzsgfTsKQEAgLTk0NzIsOCArOTQ3NiwxMiBAQAogCQk0MTBCN0U3MTEwNDVGQUIw
MDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMTAzQUE4MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE4MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBOTFFMzk3OTBBMDA3
NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIz
MjgwMEI5M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMyODAwQjk1NjcyIC8qIFJlYWRhYmxl
U3RyZWFtQllPQlJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtQllPQlJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0OTcs
NiArMTY1MDUsOCBAQAogCQkJCTA3RkZERTY2MTgxQUVENDIwMDcyRDQwOSAvKiBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZS5jcHAgKi8sCiAJCQkJMDdGRkRFNjcxODFBRUQ0MjAwNzJENDA5IC8qIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggKi8sCiAJCQkJNUVCQjg5MzgxQzc3QkRBNDAwQzY1RDQx
IC8qIFBlZXJNZWRpYURlc2NyaXB0aW9uLmggKi8sCisJCQkJNDExMDNBQUExRTM5NzkwQTAwNzY5
RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi8sCisJCQkJNDExMDNBQTkx
RTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oICovLAogCQkJ
CTRBNEY2NTZCMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLywK
IAkJCQk0QTRGNjU2QzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oICov
LAogCQkJCTRBNEY2NTZEMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzLmggKi8sCkBAIC0xNjUwNiw2ICsxNjUxNiw4IEBACiAJCQkJNEE0RjY1NkYxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovLAogCQkJCTJF
QzQxREUyMUMwNDEwQTMwMEQyOTRGRSAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuY3BwICovLAogCQkJCTA3QzFDMEU0MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLywKKwkJCQk0MTEwM0FBNzFFMzk3
OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCAqLywKKwkJCQk0
MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgg
Ki8sCiAJCQkJMzEzNTkxMEMxRTdERENCNjAwRjMwNjMwIC8qIFJUQ0J1bmRsZVBvbGljeS5oICov
LAogCQkJCTA3MjIxQkEyMTdDRjBBRDQwMDg0OEU1MSAvKiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCAqLywKIAkJCQkwNzIyMUJBMzE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50LmggKi8sCkBAIC0xNjU1NCwxNCArMTY1NjYsMTQgQEAKIAkJCQkwNzQ0RUNFQzFF
MEM0QUU1MDAwRDA5NDQgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJ
MDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgg
Ki8sCiAJCQkJMDdFRTc2RUUxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tICovLAotCQkJCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwICovLAotCQkJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAv
KiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCAqLywKKwkJCQk0MTEwM0FBQTFFMzk3OTBB
MDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwICovLAorCQkJ
CTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5oICovLAogCQkJCTVDREQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2UuY3BwICovLAogCQkJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLywKIAkJCQk0QTBGRkFBMzFBQUY1RUY2MDA2
MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgKi8sCiAJCQkJNEEwRkZB
QTQxQUFGNUVGNjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCAqLywK
LQkJCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcCAqLywKLQkJCQk0MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggKi8sCisJCQkJNDExMDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCAqLywKKwkJCQk0MTEwM0FBODFFMzk3
OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCAqLywKIAkJ
CQk1Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmNwcCAqLywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8sCkBAIC0yOTYxNCw2ICsyOTYyNiw3IEBACiAJ
CQkJNDEyOUM5QUIxRjU5QzU3MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAzQzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFs
eXNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExMDNBQUQxRTM5NzkxMDAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDExMDNBQUQx
RTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8q
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRB
MEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NjIxLDYgKzI5NjM0LDcgQEAKIAkJCQk0QTRGNjU3NDFBQTk5N0Yx
MDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBQzFFMzk3OTEwMDA3
NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQjk1MjI0MUY1OEE1OEYwMDkzMURDMiAvKiBS
ZWNvcmRpbmdTd2l6emxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2OEU4MEMyMjZF
MzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1ODE3NUQ0MTRD
MDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1ODIsNiAr
MzM1OTYsNyBAQAogCQkJCTQxMjlDOThBMUY1ODdGRUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVh
bVNpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwM0IxMkIwMjY3NjAwQzFBMzU5IC8q
IFJlYWx0aW1lQW5hbHlzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMDNBQUUxRTM5Nzkx
MDAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTEwM0FBRTFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzM0UxRTQzMjREQzAwNjIx
RTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0QTRGNjU3MDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0QTBGRkFBMTFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNTg5LDYgKzMzNjA0LDcgQEAK
IAkJCQk0QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQzQxREU0MUMwNDEwQTMwMEQyOTRGRSAvKiBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDExMDNBQUIxRTM5NzkxMDAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEwM0FBQjFFMzk3OTEwMDA3NjlGMTQgLyog
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDgzM0QxRTQzMjREOTAwNjIxRTkyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFu
Z2xlU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBQjQxODExM0UzNTZFODAwRDhBQUYz
IC8qIFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MWFiM2Q3NjgzYjNiOGZmYzUwMmJmMzQ2NTI0Nzk3MzVj
MjFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRp
b0Zvcm1hdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKKyAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQoreworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOworfQorCitSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1f
YXVkaW9UcmFjaykKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOworfQorCit2
b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQorewor
ICAgIGlmIChtX2F1ZGlvVHJhY2spCisgICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0
aGlzKTsKK30KKwordm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRy
YWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgdHJh
Y2spCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOworICAgIEFTU0VSVCh0cmFjayk7CisK
KyAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAgICBub3RpZnlNdXRlZENoYW5n
ZSghbV9hdWRpb1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCisgICAgICAgIG1f
YXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMo
KSBjb25zdAoreworICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpl
bXB0eUNhcGFiaWxpdGllcygpOworfQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAoreworICAg
IHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMzNjNi
NjJkYWFiNDg2NjM4MDA5YWRjOTFlM2NjOTIzYjAzMjUwNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldF
QlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlLCBwcml2YXRlIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYp
OworCisgICAgdm9pZCBzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmKTsKKworcHJvdGVjdGVkOgorICAgIFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJm
YWNlPiYmLCBTdHJpbmcmJik7CisgICAgflJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpOwor
Citwcml2YXRlOgorICAgIC8vIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgQVBJCisg
ICAgdmlydHVhbCB2b2lkIE9uRGF0YShjb25zdCB2b2lkKiAvKiBhdWRpb0RhdGEgKi8sIGludCAv
KiBiaXRzUGVyU2FtcGxlICovLCBpbnQgLyogc2FtcGxlUmF0ZSAqLywgc2l6ZV90IC8qIG51bWJl
ck9mQ2hhbm5lbHMgKi8sIHNpemVfdCAvKiBudW1iZXJPZkZyYW1lcyAqLykgeyB9OworCisgICAg
Ly8gUmVhbHRpbWVNZWRpYVNvdXJjZSBBUEkKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgp
IGZpbmFsOworICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSAgZmluYWw7CisKKyAgICBjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBm
aW5hbDsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkg
Y29uc3QgZmluYWw7CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50
U2V0dGluZ3M7CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVy
ZmFjZT4gbV9hdWRpb1RyYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZmM2E1YmViNmY1Y2NjMDEzNjk0ZTA5MTQwMmYyN2YyODIwZjdmYjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCisKKyNpZiBVU0UoTElCV0VCUlRD
KQorCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJS
VENQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkKKyAgICA6IG1fYXVkaW9Tb3VyY2UoV1RGTW92ZShh
dWRpb1NvdXJjZSkpCisgICAgLCBtX3NpbGVuY2VBdWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5jZSkKK3sKKyAgICBtX2F1ZGlvU291cmNlLT5h
ZGRPYnNlcnZlcigqdGhpcyk7CisgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOworfQorCitib29s
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCit7CisgICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2Jz
ZXJ2ZXIoKnRoaXMpOworICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Cisg
ICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOworCisgICAgaW5pdGlhbGl6ZUNv
bnZlcnRlcigpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRlcigpCit7CisgICAgbV9tdXRlZCA9IG1fYXVk
aW9Tb3VyY2UtPm11dGVkKCk7CisgICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxl
ZCgpOworICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQoreworICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgp
OworICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKK30KKwordm9pZCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCit7CisgICAg
bV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7CisgICAgaGFuZGxlTXV0ZWRJZk5lZWRl
ZCgpOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxl
ZENoYW5nZWQoKQoreworICAgIG1fZW5hYmxlZCA9IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsK
KyAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVkKCkKK3sKKyAgICBib29sIGlzU2lsZW5jZWQg
PSBtX211dGVkIHx8ICFtX2VuYWJsZWQ7CisgICAgaWYgKGlzU2lsZW5jZWQgJiYgIW1fc2lsZW5j
ZUF1ZGlvVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdGFy
dFJlcGVhdGluZygxX3MpOworICAgIGlmICghaXNTaWxlbmNlZCAmJiBtX3NpbGVuY2VBdWRpb1Rp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWNlMTRkNDk4NmMzMmEy
NzFiZTFhNjJlYzdmNTI5YmRkZTQyYmY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAg
LTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkxpYldl
YlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCisjaW5j
bHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSB3
ZWJydGMgeworY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKK2NsYXNzIEF1ZGlvVHJhY2tTaW5r
SW50ZXJmYWNlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwg
cHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKTsKKworICAgIH5SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UoKSB7IHN0b3AoKTsgfQorCisgICAgdm9pZCBzdG9wKCk7CisKKyAgICBi
b29sIHNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOworICAgIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU291cmNl
LmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKKworICAgIGJvb2wgbV9t
dXRlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2VuYWJsZWQgeyB0cnVlIH07CisKK3ByaXZhdGU6
CisgICAgdmlydHVhbCB2b2lkIEFkZFNpbmsod2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFj
ZSogc2luaykgeyBtX3NpbmtzLmFwcGVuZChzaW5rKTsgfQorICAgIHZpcnR1YWwgdm9pZCBSZW1v
dmVTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspIHsgbV9zaW5rcy5y
ZW1vdmVGaXJzdChzaW5rKTsgfQorCisgICAgaW50IEFkZFJlZigpIGNvbnN0IGZpbmFsIHsgcmVm
KCk7IHJldHVybiByZWZDb3VudCgpOyB9CisgICAgaW50IFJlbGVhc2UoKSBjb25zdCBmaW5hbCB7
IGRlcmVmKCk7IHJldHVybiByZWZDb3VudCgpOyB9CisgICAgU291cmNlU3RhdGUgc3RhdGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBrTGl2ZTsgfQorICAgIGJvb2wgcmVtb3RlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIFJlZ2lzdGVyT2JzZXJ2ZXIod2VicnRjOjpP
YnNlcnZlckludGVyZmFjZSopIGZpbmFsIHsgfQorICAgIHZvaWQgVW5yZWdpc3Rlck9ic2VydmVy
KHdlYnJ0Yzo6T2JzZXJ2ZXJJbnRlcmZhY2UqKSBmaW5hbCB7IH0KKworICAgIHZvaWQgc291cmNl
TXV0ZWRDaGFuZ2VkKCk7CisgICAgdm9pZCBzb3VyY2VFbmFibGVkQ2hhbmdlZCgpOworICAgIHZp
cnR1YWwgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
UGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90
KSB7IH07CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGln
aExpbWl0KCkgeyByZXR1cm4gZmFsc2U7IH07CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hpbmdC
dWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCkgeyByZXR1cm4gZmFsc2U7IH07CisgICAgdmlydHVh
bCBib29sIGhhc0J1ZmZlcmVkRW5vdWdoRGF0YSgpIHsgcmV0dXJuIGZhbHNlOyB9OworCisgICAg
Ly8gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIEFQSQorICAgIHZvaWQgdHJhY2tN
dXRlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IHNvdXJjZU11dGVk
Q2hhbmdlZCgpOyB9CisgICAgdm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlJikgZmluYWwgeyBzb3VyY2VFbmFibGVkQ2hhbmdlZCgpOyB9CisgICAgdm9pZCBh
dWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmLCBjb25zdCBNZWRp
YVRpbWUmIG1lZGlhVGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpIHsg
YXVkaW9TYW1wbGVzQXZhaWxhYmxlKG1lZGlhVGltZSwgZGF0YSwgZGVzY3JpcHRpb24sIHNhbXBs
ZUNvdW50KTsgfQorICAgIHZvaWQgdHJhY2tFbmRlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYp
IGZpbmFsIHsgfQorICAgIHZvaWQgdHJhY2tTZXR0aW5nc0NoYW5nZWQoTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUmKSBmaW5hbCB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBwdWxsQXVkaW9EYXRhKCkg
eyB9OworCisgICAgdm9pZCBpbml0aWFsaXplQ29udmVydGVyKCk7CisgICAgdmlydHVhbCB2b2lk
IGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZFNpbGVuY2UoKSB7
IH07CisKKyAgICBWZWN0b3I8d2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSo+IG1fc2lu
a3M7CisgICAgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX2F1ZGlvU291cmNlOworCisg
ICAgVGltZXIgbV9zaWxlbmNlQXVkaW9UaW1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzUzOGNk
MDU1YjRkY2E0OTkyMWIyZDUxZDgwZjA4MmViMjI2NzM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiAgICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICog
ICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bSB0aGlzCi0gKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCIKLQotI2lmIFVTRShMSUJXRUJSVEMpCi0KLSNpbmNs
dWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKLSNpbmNsdWRl
ICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKLSNpbmNsdWRlICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5oIgotI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0
aW9uLmg+Ci0KLSNpbmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJh
Y2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQotewotICAg
IGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2Uo
V1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpKSk7Ci0gICAgc291cmNl
LT5zdGFydCgpOwotICAgIHJldHVybiBzb3VyY2U7Ci19Ci0KLVJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQotICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKLSAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQotewotICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOwotfQotCi1SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQotewotICAgIHN0b3AoKTsKLX0KLQotCi1zdGF0aWMgaW5s
aW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1EZXNjcmlwdGlvbihzaXplX3Qg
c2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKLXsKLSAgICBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1G
b3JtYXQsIHNhbXBsZVJhdGUsIGNoYW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNh
bXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRp
b0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBMaWJX
ZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0gICAgcmV0dXJuIHN0cmVhbUZv
cm1hdDsKLX0KLQotdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6Ok9uRGF0YShjb25z
dCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKLXsKLSAgICAvLyBX
ZSBtYXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBz
YW1wbGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4g
c3RhcnRpbmcgdGhlIGNhbGwuCi0gICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAg
dGhlbSwgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVs
IHRvIG5vdCBiZSBjYWxsZWQgdW50aWwgZ2V0dGluZyBzb21lIHJlYWwgZGF0YS4KLSAgICBpZiAo
c2FtcGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJPZkNoYW5uZWxzID09IDEpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEFTU0VSVChiaXRzUGVyU2FtcGxlID09IDE2KTsKLSAgICBBU1NFUlQobnVt
YmVyT2ZDaGFubmVscyA9PSAxIHx8IG51bWJlck9mQ2hhbm5lbHMgPT0gMik7Ci0gICAgQVNTRVJU
KHNhbXBsZVJhdGUgPT0gNDgwMDApOwotCi0gICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1h
a2UobV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7Ci0gICAgYXV0byBtZWRpYVRpbWUgPSBQ
QUw6OnRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7Ci0gICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1i
ZXJPZkZyYW1lczsKLQotICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlw
dGlvbiA9IHN0cmVhbURlc2NyaXB0aW9uKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpOwot
Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5
IGFsbG9jYXRpb24gYW5kIGNvcHkuCi0gICAgLy8gSW5zdGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUg
dG8gZGlyZWN0bHkgcGFzcyBhdWRpb0RhdGEgcG9pbnRlci4KLSAgICBXZWJBdWRpb0J1ZmZlckxp
c3QgYXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0
aW9uKSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpIH07Ci0gICAgYXVk
aW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMg
KiBudW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1wbGUgLyA4OwotICAgIGF1ZGlvQnVmZmVyTGlz
dC5idWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7Ci0KLSAgICBp
ZiAobXV0ZWQoKSkKLSAgICAgICAgbWVtc2V0KGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1E
YXRhLCAwLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKLSAgICBl
bHNlCi0gICAgICAgIG1lbWNweShhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgYXVk
aW9EYXRhLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKLQotICAg
IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgbnVtYmVyT2ZGcmFtZXMpOwotfQot
Ci12b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkK
LXsKLSAgICBpZiAobV9hdWRpb1RyYWNrKQotICAgICAgICBtX2F1ZGlvVHJhY2stPkFkZFNpbmso
dGhpcyk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzdG9wUHJvZHVj
aW5nRGF0YSgpCi17Ci0gICAgaWYgKG1fYXVkaW9UcmFjaykKLSAgICAgICAgbV9hdWRpb1RyYWNr
LT5SZW1vdmVTaW5rKHRoaXMpOwotfQotCi12b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZTo6c2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0lu
dGVyZmFjZT4mJiB0cmFjaykKLXsKLSAgICBBU1NFUlQoIW1fYXVkaW9UcmFjayk7Ci0gICAgQVNT
RVJUKHRyYWNrKTsKLQotICAgIG1fYXVkaW9UcmFjayA9IFdURk1vdmUodHJhY2spOwotICAgIG5v
dGlmeU11dGVkQ2hhbmdlKCFtX2F1ZGlvVHJhY2spOwotICAgIGlmIChpc1Byb2R1Y2luZ0RhdGEo
KSkKLSAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOwotfQotCi1jb25zdCBSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6
OmNhcGFiaWxpdGllcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXM6OmVtcHR5Q2FwYWJpbGl0aWVzKCk7Ci19Ci0KLWNvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXR0aW5ncygp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOwotfQotCi19Ci0KLSNlbmRp
ZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjYwMjIwODUxOTdmZjM5YTY4NTQ3
MDFlZmIyMGZiOWUwZGQ0ZTQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiAgICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAgICBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkxpYldlYlJU
Q01hY3Jvcy5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKLSNpbmNsdWRlIDxD
b3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KLSNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3Ry
ZWFtaW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi10eXBlZGVmIGNv
bnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uICpDTUZvcm1hdERlc2NyaXB0aW9u
UmVmOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDOwotCi1jbGFzcyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UgZmluYWwgOiBw
dWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSwgcHJpdmF0ZSB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5r
SW50ZXJmYWNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZT4gY3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRl
cmZhY2U+JiYsIFN0cmluZyYmKTsKLQotICAgIHZvaWQgc2V0U291cmNlVHJhY2socnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJik7Ci0KLXByaXZhdGU6Ci0g
ICAgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKLSAgICB+UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlKCk7Ci0KLSAgICAvLyB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNl
IEFQSQotICAgIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJT
YW1wbGUsIGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51
bWJlck9mRnJhbWVzKSBmaW5hbDsKLQotICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2UgQVBJCi0g
ICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICB2b2lkIHN0b3BQcm9kdWNp
bmdEYXRhKCkgIGZpbmFsOwotCi0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOwotCi0gICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzIG1fY3VycmVudFNldHRpbmdzOwotICAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+IG1fYXVkaW9UcmFjazsKLQotICAgIHVp
bnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNv
Y29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M2ZTEwYTJhMjdhM2Mw
MGE3YjM5ZmFlNjFhMDNmOWVhNWE4OTAyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJBdWRpb1N0
cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgi
CisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJXZWJBdWRpb0J1
ZmZlckxpc3QuaCIKKyNpbmNsdWRlICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIgor
I2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisKKyNp
bmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Jl
ZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+
JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQoreworICAgIGF1dG8gc291cmNl
ID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF1ZGlv
VHJhY2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpOworICAgIHNvdXJjZS0+c3RhcnQoKTsKKyAg
ICByZXR1cm4gV1RGTW92ZShzb3VyY2UpOworfQorCitSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2E+IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hOjpjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1RyYWNr
LCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EoV1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92
ZShhdWRpb1RyYWNrSWQpKSk7Cit9CisKK1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29h
OjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJh
Y2tJZCkKKyAgICA6IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvVHJh
Y2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpCit7Cit9CisKKworc3RhdGljIGlubGluZSBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRGVzY3JpcHRpb24oc2l6ZV90IHNhbXBsZVJh
dGUsIHNpemVfdCBjaGFubmVsQ291bnQpCit7CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uIHN0cmVhbUZvcm1hdDsKKyAgICBGaWxsT3V0QVNCREZvckxQQ00oc3RyZWFtRm9ybWF0LCBz
YW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXpl
LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6
OmlzRmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVk
aW9Gb3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQpOworICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7Cit9
CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E6Ok9uRGF0YShjb25zdCB2
b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90
IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKK3sKKyAgICAvLyBXZSBt
YXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1w
bGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4gc3Rh
cnRpbmcgdGhlIGNhbGwuCisgICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAgdGhl
bSwgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVsIHRv
IG5vdCBiZSBjYWxsZWQgdW50aWwgZ2V0dGluZyBzb21lIHJlYWwgZGF0YS4KKyAgICBpZiAoc2Ft
cGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJPZkNoYW5uZWxzID09IDEpCisgICAgICAgIHJldHVy
bjsKKworICAgIEFTU0VSVChiaXRzUGVyU2FtcGxlID09IDE2KTsKKyAgICBBU1NFUlQobnVtYmVy
T2ZDaGFubmVscyA9PSAxIHx8IG51bWJlck9mQ2hhbm5lbHMgPT0gMik7CisgICAgQVNTRVJUKHNh
bXBsZVJhdGUgPT0gNDgwMDApOworCisgICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1ha2Uo
bV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CisgICAgYXV0byBtZWRpYVRpbWUgPSBQQUw6
OnRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7CisgICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1iZXJP
ZkZyYW1lczsKKworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlwdGlv
biA9IHN0cmVhbURlc2NyaXB0aW9uKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpOworCisg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5IGFs
bG9jYXRpb24gYW5kIGNvcHkuCisgICAgLy8gSW5zdGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8g
ZGlyZWN0bHkgcGFzcyBhdWRpb0RhdGEgcG9pbnRlci4KKyAgICBXZWJBdWRpb0J1ZmZlckxpc3Qg
YXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9u
KSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpIH07CisgICAgYXVkaW9C
dWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMgKiBu
dW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1wbGUgLyA4OworICAgIGF1ZGlvQnVmZmVyTGlzdC5i
dWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7CisKKyAgICBpZiAo
bXV0ZWQoKSkKKyAgICAgICAgbWVtc2V0KGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRh
LCAwLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKKyAgICBlbHNl
CisgICAgICAgIG1lbWNweShhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgYXVkaW9E
YXRhLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKKworICAgIGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgbnVtYmVyT2ZGcmFtZXMpOworfQorCit9
CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDEwNDc1ZTVlY2EyZmZjOTE0MzAz
NDcxYjY1ZmIxYTg5N2RhYmE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmgK
QEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZS5oIgorCisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+
CisKK3R5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9y
bWF0RGVzY3JpcHRpb25SZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakM7CisKK2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYT4g
Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYs
IFN0cmluZyYmKTsKKworcHJpdmF0ZToKKyAgICBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBT
dHJpbmcmJik7CisKKyAgICAvLyB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlIEFQSQor
ICAgIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJTYW1wbGUs
IGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzKSBmaW5hbDsKKworICAgIHVpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDkxMDFkYzQzNzkxN2Q1MTBlNzRiZmM3NzUxYzdjNzBjN2RjMjJh
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oIgotCi0jaWYgVVNFKExJQldFQlJUQykKLQot
I2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkxpYldlYlJU
Q0F1ZGlvRm9ybWF0LmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
biBsaWJ3ZWJydGNBdWRpb0Zvcm1hdChGbG9hdDY0IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVs
Q291bnQpCi17Ci0gICAgLy8gRklYTUU6IE1pY3JvcGhvbmVzIGNhbiBoYXZlIG1vcmUgdGhhbiB0
d28gY2hhbm5lbHMuIEluIHN1Y2ggY2FzZSwgd2Ugc2hvdWxkIGRvIHRoZSBtaXggZG93biBiYXNl
ZCBvbiBBdWRpb0NoYW5uZWxMYXlvdXRUYWcuCi0gICAgc2l6ZV90IGxpYldlYlJUQ0NoYW5uZWxD
b3VudCA9IGNoYW5uZWxDb3VudCA+PSAyID8gMiA6IGNoYW5uZWxDb3VudDsKLSAgICBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBD
TShzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUsIGxpYldlYlJUQ0NoYW5uZWxDb3VudCwgTGliV2Vi
UlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVT
aXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6
OmlzQmlnRW5kaWFuLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0g
ICAgcmV0dXJuIHN0cmVhbUZvcm1hdDsKLX0KLQotUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
OjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
PiYmIGF1ZGlvU291cmNlKQotICAgIDogbV9hdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNl
KSkKLSAgICAsIG1fc2FtcGxlQ29udmVydGVyKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRl
KExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRlICogMikpCi0gICAgLCBtX3NpbGVuY2VB
dWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5j
ZSkKLXsKLSAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7Ci0gICAgaW5pdGlh
bGl6ZUNvbnZlcnRlcigpOwotfQotCi1ib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCi17Ci0g
ICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwotICAgIG1fYXVkaW9Tb3Vy
Y2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Ci0gICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIo
KnRoaXMpOwotCi0gICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwotICAgIHJldHVybiB0cnVlOwot
fQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRl
cigpCi17Ci0gICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7Ci0gICAgbV9lbmFi
bGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxlZCgpOwotICAgIGhhbmRsZU11dGVkSWZOZWVkZWQo
KTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQotewotICAg
IG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOwotICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9i
c2VydmVyKCp0aGlzKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNv
dXJjZU11dGVkQ2hhbmdlZCgpCi17Ci0gICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVk
KCk7Ci0gICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwotfQotCi12b2lkIFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxlZENoYW5nZWQoKQotewotICAgIG1fZW5hYmxlZCA9
IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsKLSAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Ci19
Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVk
KCkKLXsKLSAgICBib29sIGlzU2lsZW5jZWQgPSBtX211dGVkIHx8ICFtX2VuYWJsZWQ7Ci0gICAg
bV9zYW1wbGVDb252ZXJ0ZXItPnNldE11dGVkKGlzU2lsZW5jZWQpOwotICAgIGlmIChpc1NpbGVu
Y2VkICYmICFtX3NpbGVuY2VBdWRpb1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fc2lsZW5j
ZUF1ZGlvVGltZXIuc3RhcnRSZXBlYXRpbmcoMV9zKTsKLSAgICBpZiAoIWlzU2lsZW5jZWQgJiYg
bV9zaWxlbmNlQXVkaW9UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3NpbGVuY2VBdWRpb1Rp
bWVyLnN0b3AoKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRT
aWxlbmNlKCkKLXsKLSAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5n
VGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAg
c2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBs
ZVJhdGUoKSAvIDEwMDsKLSAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNv
dW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJl
YW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7Ci0KLSAgICAgICAgaWYgKCFidWZmZXJT
aXplKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fYXVkaW9CdWZmZXIuZ3Jvdyhi
dWZmZXJTaXplKTsKLSAgICAgICAgbWVtc2V0KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCAwLCBidWZm
ZXJTaXplKTsKLSAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQotICAgICAgICAgICAg
c2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6
c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0
cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50
KTsKLSAgICB9KTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmlzUmVh
Y2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpCi17Ci0gICAgYXV0byB3cml0dGVuQXVk
aW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1w
bGVSYXRlKCk7Ci0gICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9v
dXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBBU1NFUlQod3JpdHRl
bkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOwotICAgIHJldHVybiB3cml0dGVu
QXVkaW9EdXJhdGlvbiA+IHJlYWRBdWRpb0R1cmF0aW9uICsgMC41OwotfQotCi1ib29sIFJlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGlt
aXQoKQotewotICAgIGF1dG8gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBt
X2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotICAgIGF1dG8gcmVhZEF1ZGlv
RHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpOwotCi0gICAgQVNTRVJUKHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1
cmF0aW9uKTsKLSAgICByZXR1cm4gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPCByZWFkQXVkaW9EdXJh
dGlvbiArIDAuMTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6Omhhc0J1
ZmZlcmVkRW5nb3VoRGF0YSgpCi17Ci0gICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1f
d3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAg
YXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24g
Pj0gcmVhZEF1ZGlvRHVyYXRpb24pOwotICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+
PSByZWFkQXVkaW9EdXJhdGlvbiArIDAuMDE7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
UGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYgc3RyZWFtRGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKLXsKLSAgICBpZiAobV9p
bnB1dFN0cmVhbURlc2NyaXB0aW9uICE9IHN0cmVhbURlc2NyaXB0aW9uKSB7Ci0gICAgICAgIG1f
aW5wdXRTdHJlYW1EZXNjcmlwdGlvbiA9IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKHN0cmVh
bURlc2NyaXB0aW9uKTsKLSAgICAgICAgYXV0byBzdGF0dXMgID0gbV9zYW1wbGVDb252ZXJ0ZXIt
PnNldElucHV0Rm9ybWF0KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbik7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsKLQotICAgICAgICBtX291dHB1dFN0cmVhbURlc2Ny
aXB0aW9uID0gbGlid2VicnRjQXVkaW9Gb3JtYXQoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBs
ZVJhdGUsIHN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSk7Ci0gICAgICAgIHN0
YXR1cyA9IG1fc2FtcGxlQ29udmVydGVyLT5zZXRPdXRwdXRGb3JtYXQobV9vdXRwdXRTdHJlYW1E
ZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKTsKLSAgICAgICAgQVNTRVJUKCFzdGF0dXMp
OwotICAgIH0KLQotICAgIC8vIExldCdzIHNraXAgcHVzaGluZyBzYW1wbGVzIGlmIHdlIGFyZSB0
b28gc2xvdyBwdWxsaW5nIHRoZW0uCi0gICAgaWYgKG1fc2tpcHBpbmdBdWRpb0RhdGEpIHsKLSAg
ICAgICAgaWYgKCFpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gZmFsc2U7Ci0gICAg
fSBlbHNlIGlmIChpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSkgewotICAg
ICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIC8vIElmIHdlIGNoYW5nZSB0aGUgYXVkaW8gdHJhY2sgb3IgaXRzIHNhbXBsZSByYXRl
IGNoYW5nZXMsIHRoZSB0aW1lc3RhbXAgYmFzZWQgb24gbV93cml0ZUNvdW50IG1heSBiZSB3cm9u
Zy4KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVwZGF0ZSBtX3dyaXRlQ291bnQgdG8gYmUgdmFs
aWQgYWNjb3JkaW5nIHRoZSBuZXcgc2FtcGxlUmF0ZS4KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+
cHVzaFNhbXBsZXMoTWVkaWFUaW1lKG1fd3JpdGVDb3VudCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkpKSwgYXVkaW9EYXRhLCBzYW1w
bGVDb3VudCk7Ci0gICAgbV93cml0ZUNvdW50ICs9IHNhbXBsZUNvdW50OwotCi0gICAgaWYgKCFo
YXNCdWZmZXJlZEVuZ291aERhdGEoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTGliV2ViUlRD
UHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPnB1bGxBdWRpb0RhdGEoKTsK
LSAgICB9KTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnB1bGxBdWRp
b0RhdGEoKQotewotICAgIC8vIGxpYndlYnJ0YyBleHBlY3RzIDEwIG1zIGNodW5rcy4KLSAgICBz
aXplX3QgY2h1bmtTYW1wbGVDb3VudCA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpIC8gMTAwOwotICAgIHNpemVfdCBidWZmZXJTaXplID0gY2h1bmtTYW1wbGVDb3VudCAq
IExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAqIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOwotICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZm
ZXJTaXplKTsKLQotICAgIEF1ZGlvQnVmZmVyTGlzdCBidWZmZXJMaXN0OwotICAgIGJ1ZmZlckxp
c3QubU51bWJlckJ1ZmZlcnMgPSAxOwotICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51bWJl
ckNoYW5uZWxzID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7
Ci0gICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gYnVmZmVyU2l6ZTsK
LSAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhID0gbV9hdWRpb0J1ZmZlci5kYXRhKCk7
Ci0KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVsbEF2YWxhaWJsZVNhbXBsZXNBc0NodW5rcyhi
dWZmZXJMaXN0LCBjaHVua1NhbXBsZUNvdW50LCBtX3JlYWRDb3VudCwgW3RoaXMsIGNodW5rU2Ft
cGxlQ291bnRdIHsKLSAgICAgICAgbV9yZWFkQ291bnQgKz0gY2h1bmtTYW1wbGVDb3VudDsKLSAg
ICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQotICAgICAgICAgICAgc2luay0+T25EYXRh
KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwg
bV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsKLSAgICB9KTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKExJQldFQlJUQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGViYzgwNGU0OTU4NTMwYmU2NjAyZmZkNjFhMmI1M2M3ZWI2ZTU3NC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
cmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKExJQldFQlJUQykK
LQotI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgotI2luY2x1ZGUgIkxpYldlYlJU
Q01hY3Jvcy5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCi0jaW5jbHVk
ZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+
Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSB3ZWJy
dGMgewotY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKLWNsYXNzIEF1ZGlvVHJhY2tTaW5rSW50
ZXJmYWNlOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFj
ZSwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgewotcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkpOyB9
Ci0gICAgflJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSgpIHsgc3RvcCgpOyB9Ci0KLSAgICB2
b2lkIHN0b3AoKTsKLQotICAgIGJvb2wgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZT4mJik7Ci0gICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXVkaW9Tb3VyY2UuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYm
KTsKLQotICAgIHZpcnR1YWwgdm9pZCBBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRl
cmZhY2UqIHNpbmspIHsgbV9zaW5rcy5hcHBlbmQoc2luayk7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
UmVtb3ZlU2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lu
a3MucmVtb3ZlRmlyc3Qoc2luayk7IH0KLQotICAgIGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7
IHJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQotICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmlu
YWwgeyBkZXJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQotICAgIFNvdXJjZVN0YXRlIHN0YXRl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4ga0xpdmU7IH0KLSAgICBib29sIHJlbW90ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBSZWdpc3Rlck9ic2VydmVyKHdlYnJ0
Yzo6T2JzZXJ2ZXJJbnRlcmZhY2UqKSBmaW5hbCB7IH0KLSAgICB2b2lkIFVucmVnaXN0ZXJPYnNl
cnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9Ci0KLSAgICB2b2lkIHNv
dXJjZU11dGVkQ2hhbmdlZCgpOwotICAgIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKTsKLSAg
ICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0
Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwot
Ci0gICAgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKTsKLSAgICBi
b29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCk7Ci0gICAgYm9vbCBoYXNC
dWZmZXJlZEVuZ291aERhdGEoKTsKLQotICAgIC8vIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpP
YnNlcnZlciBBUEkKLSAgICB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJikgZmluYWwgeyBzb3VyY2VNdXRlZENoYW5nZWQoKTsgfQotICAgIHZvaWQgdHJhY2tF
bmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlRW5h
YmxlZENoYW5nZWQoKTsgfQotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlJiwgY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRm
b3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KSBmaW5hbCB7IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZSht
ZWRpYVRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7IH0KLSAgICB2b2lkIHRy
YWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KLSAgICB2b2lkIHRy
YWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9Ci0K
LSAgICB2b2lkIHB1bGxBdWRpb0RhdGEoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnZlcnRl
cigpOwotICAgIHZvaWQgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwotICAgIHZvaWQgc2VuZFNpbGVu
Y2UoKTsKLQotICAgIFZlY3Rvcjx3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9z
aW5rczsKLSAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7Ci0g
ICAgUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9zYW1wbGVDb252ZXJ0ZXI7Ci0gICAgQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbjsKLSAgICBDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbjsKLQotICAgIFZl
Y3Rvcjx1aW50OF90PiBtX2F1ZGlvQnVmZmVyOwotICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsg
MCB9OwotICAgIHVpbnQ2NF90IG1fd3JpdGVDb3VudCB7IDAgfTsKLSAgICBib29sIG1fbXV0ZWQg
eyBmYWxzZSB9OwotICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9za2lw
cGluZ0F1ZGlvRGF0YSB7IGZhbHNlIH07Ci0gICAgVGltZXIgbV9zaWxlbmNlQXVkaW9UaW1lcjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMTJiODhhZjgwZjQ3ZGE3YmExZDRiYzE4NGM1YjBlOThjMjA0ZWE2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApAQCAtMCwwICsxLDE2NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQu
aCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBpbmxpbmUgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIGxpYndlYnJ0Y0F1
ZGlvRm9ybWF0KEZsb2F0NjQgc2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKK3sKKyAg
ICAvLyBGSVhNRTogTWljcm9waG9uZXMgY2FuIGhhdmUgbW9yZSB0aGFuIHR3byBjaGFubmVscy4g
SW4gc3VjaCBjYXNlLCB3ZSBzaG91bGQgZG8gdGhlIG1peCBkb3duIGJhc2VkIG9uIEF1ZGlvQ2hh
bm5lbExheW91dFRhZy4KKyAgICBzaXplX3QgbGliV2ViUlRDQ2hhbm5lbENvdW50ID0gY2hhbm5l
bENvdW50ID49IDIgPyAyIDogY2hhbm5lbENvdW50OworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgRmlsbE91dEFTQkRGb3JMUENNKHN0cmVhbUZvcm1h
dCwgc2FtcGxlUmF0ZSwgbGliV2ViUlRDQ2hhbm5lbENvdW50LCBMaWJXZWJSVENBdWRpb0Zvcm1h
dDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJU
Q0F1ZGlvRm9ybWF0Ojppc0Zsb2F0LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNCaWdFbmRpYW4s
IExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc05vbkludGVybGVhdmVkKTsKKyAgICByZXR1cm4gc3Ry
ZWFtRm9ybWF0OworfQorCitSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYm
IGF1ZGlvU291cmNlKQorICAgIDogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFdURk1vdmUo
YXVkaW9Tb3VyY2UpKQorICAgICwgbV9zYW1wbGVDb252ZXJ0ZXIoQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpjcmVhdGUoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUgKiAyKSkKK3sKK30K
KworUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4gUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlOjpjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNl
KQoreworICAgIHJldHVybiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6Y3JlYXRl
KFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYTo6aGFuZGxlTXV0ZWRJZk5lZWRlZCgpCit7CisgICAgYm9vbCBpc1NpbGVuY2Vk
ID0gbV9tdXRlZCB8fCAhbV9lbmFibGVkOworICAgIG1fc2FtcGxlQ29udmVydGVyLT5zZXRNdXRl
ZChpc1NpbGVuY2VkKTsKKworICAgIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpo
YW5kbGVNdXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlQ29jb2E6OnNlbmRTaWxlbmNlKCkKK3sKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9u
V2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIHsKKyAgICAgICAgc2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURl
c2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUg
PSBjaHVua1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXpl
ICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7CisKKyAgICAg
ICAgaWYgKCFidWZmZXJTaXplKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fYXVk
aW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKKyAgICAgICAgbWVtc2V0KG1fYXVkaW9CdWZmZXIu
ZGF0YSgpLCAwLCBidWZmZXJTaXplKTsKKyAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3Npbmtz
KQorICAgICAgICAgICAgc2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJS
VENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1w
bGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBj
aHVua1NhbXBsZUNvdW50KTsKKyAgICB9KTsKK30KKworYm9vbCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2VDb2NvYTo6aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCkKK3sK
KyAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9pbnB1dFN0
cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKyAgICBhdXRvIHJlYWRBdWRpb0R1cmF0aW9u
ID0gbV9yZWFkQ291bnQgLyBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsK
KworICAgIEFTU0VSVCh3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbik7
CisgICAgcmV0dXJuIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID4gcmVhZEF1ZGlvRHVyYXRpb24gKyAw
LjU7Cit9CisKK2Jvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmlzUmVhY2hp
bmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCkKK3sKKyAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1
cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJh
dGUoKTsKKyAgICBhdXRvIHJlYWRBdWRpb0R1cmF0aW9uID0gbV9yZWFkQ291bnQgLyBtX291dHB1
dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKworICAgIEFTU0VSVCh3cml0dGVuQXVk
aW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbik7CisgICAgcmV0dXJuIHdyaXR0ZW5BdWRp
b0R1cmF0aW9uIDwgcmVhZEF1ZGlvRHVyYXRpb24gKyAwLjE7Cit9CisKK2Jvb2wgUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6Omhhc0J1ZmZlcmVkRW5vdWdoRGF0YSgpCit7CisgICAg
YXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1E
ZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisgICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1f
cmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisKKyAg
ICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOworICAg
IHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbiArIDAuMDE7
Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmF1ZGlvU2FtcGxl
c0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVk
aW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBzdHJlYW1EZXNjcmlwdGlvbiwg
c2l6ZV90IHNhbXBsZUNvdW50KQoreworICAgIGlmIChtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24g
IT0gc3RyZWFtRGVzY3JpcHRpb24pIHsKKyAgICAgICAgbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9u
ID0gdG9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oc3RyZWFtRGVzY3JpcHRpb24pOworICAgICAg
ICBhdXRvIHN0YXR1cyAgPSBtX3NhbXBsZUNvbnZlcnRlci0+c2V0SW5wdXRGb3JtYXQobV9pbnB1
dFN0cmVhbURlc2NyaXB0aW9uKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzdGF0dXMsICFzdGF0
dXMpOworCisgICAgICAgIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gPSBsaWJ3ZWJydGNBdWRp
b0Zvcm1hdChMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlUmF0ZSwgc3RyZWFtRGVzY3JpcHRp
b24ubnVtYmVyT2ZDaGFubmVscygpKTsKKyAgICAgICAgc3RhdHVzID0gbV9zYW1wbGVDb252ZXJ0
ZXItPnNldE91dHB1dEZvcm1hdChtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnN0cmVhbURlc2Ny
aXB0aW9uKCkpOworICAgICAgICBBU1NFUlQoIXN0YXR1cyk7CisgICAgfQorCisgICAgLy8gTGV0
J3Mgc2tpcCBwdXNoaW5nIHNhbXBsZXMgaWYgd2UgYXJlIHRvbyBzbG93IHB1bGxpbmcgdGhlbS4K
KyAgICBpZiAobV9za2lwcGluZ0F1ZGlvRGF0YSkgeworICAgICAgICBpZiAoIWlzUmVhY2hpbmdC
dWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fc2tpcHBpbmdBdWRpb0RhdGEgPSBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKGlzUmVhY2hpbmdC
dWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpKSB7CisgICAgICAgIG1fc2tpcHBpbmdBdWRpb0Rh
dGEgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSWYgd2UgY2hhbmdl
IHRoZSBhdWRpbyB0cmFjayBvciBpdHMgc2FtcGxlIHJhdGUgY2hhbmdlcywgdGhlIHRpbWVzdGFt
cCBiYXNlZCBvbiBtX3dyaXRlQ291bnQgbWF5IGJlIHdyb25nLgorICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgdXBkYXRlIG1fd3JpdGVDb3VudCB0byBiZSB2YWxpZCBhY2NvcmRpbmcgdGhlIG5ldyBz
YW1wbGVSYXRlLgorICAgIG1fc2FtcGxlQ29udmVydGVyLT5wdXNoU2FtcGxlcyhNZWRpYVRpbWUo
bV93cml0ZUNvdW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9pbnB1dFN0cmVhbURlc2NyaXB0
aW9uLnNhbXBsZVJhdGUoKSkpLCBhdWRpb0RhdGEsIHNhbXBsZUNvdW50KTsKKyAgICBtX3dyaXRl
Q291bnQgKz0gc2FtcGxlQ291bnQ7CisKKyAgICBpZiAoIWhhc0J1ZmZlcmVkRW5nb3VoRGF0YSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRD
U2lnbmFsaW5nVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+cHVsbEF1ZGlvRGF0YSgpOworICAgIH0pOworfQorCit2b2lkIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpwdWxsQXVkaW9EYXRhKCkKK3sKKyAgICAv
LyBsaWJ3ZWJydGMgZXhwZWN0cyAxMCBtcyBjaHVua3MuCisgICAgc2l6ZV90IGNodW5rU2FtcGxl
Q291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKKyAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IGNodW5rU2FtcGxlQ291bnQgKiBMaWJXZWJSVENBdWRpb0Zv
cm1hdDo6c2FtcGxlQnl0ZVNpemUgKiBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9m
Q2hhbm5lbHMoKTsKKyAgICBtX2F1ZGlvQnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7CisKKyAgICBB
dWRpb0J1ZmZlckxpc3QgYnVmZmVyTGlzdDsKKyAgICBidWZmZXJMaXN0Lm1OdW1iZXJCdWZmZXJz
ID0gMTsKKyAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fb3V0
cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOworICAgIGJ1ZmZlckxpc3Qu
bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IGJ1ZmZlclNpemU7CisgICAgYnVmZmVyTGlzdC5t
QnVmZmVyc1swXS5tRGF0YSA9IG1fYXVkaW9CdWZmZXIuZGF0YSgpOworCisgICAgbV9zYW1wbGVD
b252ZXJ0ZXItPnB1bGxBdmFsYWlibGVTYW1wbGVzQXNDaHVua3MoYnVmZmVyTGlzdCwgY2h1bmtT
YW1wbGVDb3VudCwgbV9yZWFkQ291bnQsIFt0aGlzLCBjaHVua1NhbXBsZUNvdW50XSB7CisgICAg
ICAgIG1fcmVhZENvdW50ICs9IGNodW5rU2FtcGxlQ291bnQ7CisgICAgICAgIGZvciAoYXV0byBz
aW5rIDogbV9zaW5rcykKKyAgICAgICAgICAgIHNpbmstPk9uRGF0YShtX2F1ZGlvQnVmZmVyLmRh
dGEoKSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24uc2FtcGxlUmF0ZSgpLCBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9m
Q2hhbm5lbHMoKSwgY2h1bmtTYW1wbGVDb3VudCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhNzA0MzAyMjky
ZmIxMDc4MTU5YTJhOWQxNTAxODI4ZjgxMjA2OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlQ29jb2EuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJl
ZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCIK
KyNpbmNsdWRlICJSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCIKKworbmFtZXNwYWNlIHdl
YnJ0YyB7CitjbGFzcyBBdWRpb1RyYWNrSW50ZXJmYWNlOworY2xhc3MgQXVkaW9UcmFja1NpbmtJ
bnRlcmZhY2U7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlQ29jb2EgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E+LCBwdWJsaWMgUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUNvY29hPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1
ZGlvU291cmNlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZUNvY29hKFdURk1vdmUoYXVkaW9Tb3VyY2UpKSk7IH0KKworcHJpdmF0ZToKKyAgICBleHBs
aWNpdCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYShSZWY8TWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU+JiYpOworCisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVk
aWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKKworICAgIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVk
aW9EYXRhSGlnaExpbWl0KCkgZmluYWw7CisgICAgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRp
b0RhdGFMb3dMaW1pdCgpIGZpbmFsOworICAgIGJvb2wgaGFzQnVmZmVyZWRFbm91Z2hEYXRhKCkg
ZmluYWw7CisKKyAgICB2b2lkIHB1bGxBdWRpb0RhdGEoKSBmaW5hbDsKKworICAgIHZvaWQgaGFu
ZGxlTXV0ZWRJZk5lZWRlZCgpIGZpbmFsOworICAgIHZvaWQgc2VuZFNpbGVuY2UoKSBmaW5hbDsK
KworICAgIFJlZjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fc2FtcGxlQ29udmVydGVyOworICAg
IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb247CisgICAg
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb247CisKKyAg
ICBWZWN0b3I8dWludDhfdD4gbV9hdWRpb0J1ZmZlcjsKKyAgICB1aW50NjRfdCBtX3JlYWRDb3Vu
dCB7IDAgfTsKKyAgICB1aW50NjRfdCBtX3dyaXRlQ291bnQgeyAwIH07CisgICAgYm9vbCBtX3Nr
aXBwaW5nQXVkaW9EYXRhIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323699</attachid>
            <date>2017-10-13 10:45:19 -0700</date>
            <delta_ts>2017-10-13 11:01:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177928-20171013194518.patch</filename>
            <type>text/plain</type>
            <size>70708</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkzODIyMzA3YzA4MTkz
ODNhYjVjNDliNDQxNTFlNWFkODFkNWFmMy4uODg2OTExNjJiZWQ0YTcyYjE3NTg2NzY1ODI3Mzll
N2JmOTNjZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTEwLTEyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlcyBhbmQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlcyBw
b3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciB0aGUgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGFuZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgY2xhc3NlcywKKyAgICAgICAgbW92ZSB0aGUgbWFjIHNwZWNp
ZmljIGNvZGUgdG8gYSBkaWZmZXJlbnQgY2xhc3MuIFRoaXMgd2F5IHdlIGNhbiB1c2UgdGhlbSBm
cm9tCisgICAgICAgIG90aGVyIHBvcnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgd2UgYXJl
IG5vdCBhZGRpbmcgbmV3IGZ1bmN0aW9uYWxpdHkganVzdCByZWZhY3RvcmluZy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmguIEp1c3QgdGhlIHBvcnQg
YWdub3N0aWMgcGFydHMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaC4gRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAuIERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmguIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6IEFkZGVkLCBpdCBhZGRzIENv
Y29hIGNvZGUgcGFydHMgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhpcyBm
dW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUgdG8g
YXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBBZGRl
ZCBDb2NvYSBjb2RlIGZyb20gb3JpZ2luYWwgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6
IEFkZGVkIENvY29hIGNvZGUgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhp
cyBmdW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUg
dG8gYXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBB
ZGRlZCBDb2NvYSBjb2RlIGZyb20gdGhlIG9yaWdpbmFsIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaC4KKwogMjAxNy0x
MC0wNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbV2luQ2Fpcm9dIEZpeCBidWlsZCBhZnRlciBCdWcgMTY3OTU2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDdmMjJlNTE2Zjk3YTI5N2RkNTQ4ZTc1Y2VlMDg3N2ExYzU2MjVmMWEuLmE4NDQxYmY0
Y2IyYmZhNTNhNWMyMjY4MDc3ZjE2NzcxMjAzNWMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yNTQ4LDkgKzI1NDgsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAKICAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcAogICAg
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3Bw
CisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCiAgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKICAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCisgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAogCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmY4Njg4YmMzZDlkNmU0MWU4MmRlNjY2OGIyYjlmYzViYjA4ZDM3Yy4uMjk5Yjc2NmM2
MTZjMGQzZTFiYjhlYWRlYTY3NjAxYzdiYjA0NDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5Niw4ICsxNjk2LDEyIEBA
CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEw
NDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTEw
M0FBQjFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovOyB9Owog
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
ODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggKi87IH07
CisJCTQxMTAzQUFCMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovOyB9OworCQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE4MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovOyB9OwogCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMDMg
LyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi87IH07CiAJCTQxMTAzQUFFMUUzOTc5MTAwMDc2OUYw
MyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQUExRTM5NzkwQTAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi87IH07CisJCTQxMTAzQUFEMUUzOTc5MTAw
MDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTkxRTM5NzkwQTAwNzY5
RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggKi87IH07CisJCTQxMTAz
QUFFMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
QTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3Bw
ICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2ViQ29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOUIx
QTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTQxMjMwOTEz
MTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGODIxNjI5OTAyOUY0RkI1MDEw
MDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTI3RDUzNzBGOEFB
QjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0
YXRlLmNwcCAqLzsgfTsKQEAgLTk0NzIsOCArOTQ3NiwxMiBAQAogCQk0MTBCN0U3MTEwNDVGQUIw
MDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMTAzQUE4MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE4MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBOTFFMzk3OTBBMDA3
NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIz
MjgwMEI5M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMyODAwQjk1NjcyIC8qIFJlYWRhYmxl
U3RyZWFtQllPQlJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtQllPQlJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0OTcs
NiArMTY1MDUsOCBAQAogCQkJCTA3RkZERTY2MTgxQUVENDIwMDcyRDQwOSAvKiBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZS5jcHAgKi8sCiAJCQkJMDdGRkRFNjcxODFBRUQ0MjAwNzJENDA5IC8qIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggKi8sCiAJCQkJNUVCQjg5MzgxQzc3QkRBNDAwQzY1RDQx
IC8qIFBlZXJNZWRpYURlc2NyaXB0aW9uLmggKi8sCisJCQkJNDExMDNBQUExRTM5NzkwQTAwNzY5
RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi8sCisJCQkJNDExMDNBQTkx
RTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oICovLAogCQkJ
CTRBNEY2NTZCMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLywK
IAkJCQk0QTRGNjU2QzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oICov
LAogCQkJCTRBNEY2NTZEMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzLmggKi8sCkBAIC0xNjUwNiw2ICsxNjUxNiw4IEBACiAJCQkJNEE0RjY1NkYxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovLAogCQkJCTJF
QzQxREUyMUMwNDEwQTMwMEQyOTRGRSAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuY3BwICovLAogCQkJCTA3QzFDMEU0MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLywKKwkJCQk0MTEwM0FBNzFFMzk3
OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCAqLywKKwkJCQk0
MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgg
Ki8sCiAJCQkJMzEzNTkxMEMxRTdERENCNjAwRjMwNjMwIC8qIFJUQ0J1bmRsZVBvbGljeS5oICov
LAogCQkJCTA3MjIxQkEyMTdDRjBBRDQwMDg0OEU1MSAvKiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCAqLywKIAkJCQkwNzIyMUJBMzE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50LmggKi8sCkBAIC0xNjU1NCwxNCArMTY1NjYsMTQgQEAKIAkJCQkwNzQ0RUNFQzFF
MEM0QUU1MDAwRDA5NDQgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJ
MDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgg
Ki8sCiAJCQkJMDdFRTc2RUUxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tICovLAotCQkJCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwICovLAotCQkJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAv
KiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCAqLywKKwkJCQk0MTEwM0FBQTFFMzk3OTBB
MDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwICovLAorCQkJ
CTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5oICovLAogCQkJCTVDREQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2UuY3BwICovLAogCQkJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLywKIAkJCQk0QTBGRkFBMzFBQUY1RUY2MDA2
MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgKi8sCiAJCQkJNEEwRkZB
QTQxQUFGNUVGNjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCAqLywK
LQkJCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcCAqLywKLQkJCQk0MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggKi8sCisJCQkJNDExMDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCAqLywKKwkJCQk0MTEwM0FBODFFMzk3
OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCAqLywKIAkJ
CQk1Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmNwcCAqLywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8sCkBAIC0yOTYxNCw2ICsyOTYyNiw3IEBACiAJ
CQkJNDEyOUM5QUIxRjU5QzU3MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAzQzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFs
eXNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExMDNBQUQxRTM5NzkxMDAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDExMDNBQUQx
RTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8q
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRB
MEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NjIxLDYgKzI5NjM0LDcgQEAKIAkJCQk0QTRGNjU3NDFBQTk5N0Yx
MDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBQzFFMzk3OTEwMDA3
NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQjk1MjI0MUY1OEE1OEYwMDkzMURDMiAvKiBS
ZWNvcmRpbmdTd2l6emxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2OEU4MEMyMjZF
MzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1ODE3NUQ0MTRD
MDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1ODIsNiAr
MzM1OTYsNyBAQAogCQkJCTQxMjlDOThBMUY1ODdGRUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVh
bVNpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwM0IxMkIwMjY3NjAwQzFBMzU5IC8q
IFJlYWx0aW1lQW5hbHlzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMDNBQUUxRTM5Nzkx
MDAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTEwM0FBRTFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzM0UxRTQzMjREQzAwNjIx
RTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0QTRGNjU3MDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0QTBGRkFBMTFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNTg5LDYgKzMzNjA0LDcgQEAK
IAkJCQk0QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQzQxREU0MUMwNDEwQTMwMEQyOTRGRSAvKiBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDExMDNBQUIxRTM5NzkxMDAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEwM0FBQjFFMzk3OTEwMDA3NjlGMTQgLyog
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDgzM0QxRTQzMjREOTAwNjIxRTkyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFu
Z2xlU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBQjQxODExM0UzNTZFODAwRDhBQUYz
IC8qIFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MWFiM2Q3NjgzYjNiOGZmYzUwMmJmMzQ2NTI0Nzk3MzVj
MjFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRp
b0Zvcm1hdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKKyAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQoreworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOworfQorCitSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1f
YXVkaW9UcmFjaykKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOworfQorCit2
b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQorewor
ICAgIGlmIChtX2F1ZGlvVHJhY2spCisgICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0
aGlzKTsKK30KKwordm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRy
YWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgdHJh
Y2spCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOworICAgIEFTU0VSVCh0cmFjayk7CisK
KyAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAgICBub3RpZnlNdXRlZENoYW5n
ZSghbV9hdWRpb1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCisgICAgICAgIG1f
YXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMo
KSBjb25zdAoreworICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpl
bXB0eUNhcGFiaWxpdGllcygpOworfQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAoreworICAg
IHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMzNjNi
NjJkYWFiNDg2NjM4MDA5YWRjOTFlM2NjOTIzYjAzMjUwNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldF
QlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlLCBwcml2YXRlIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYp
OworCisgICAgdm9pZCBzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmKTsKKworcHJvdGVjdGVkOgorICAgIFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJm
YWNlPiYmLCBTdHJpbmcmJik7CisgICAgflJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpOwor
Citwcml2YXRlOgorICAgIC8vIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgQVBJCisg
ICAgdmlydHVhbCB2b2lkIE9uRGF0YShjb25zdCB2b2lkKiAvKiBhdWRpb0RhdGEgKi8sIGludCAv
KiBiaXRzUGVyU2FtcGxlICovLCBpbnQgLyogc2FtcGxlUmF0ZSAqLywgc2l6ZV90IC8qIG51bWJl
ck9mQ2hhbm5lbHMgKi8sIHNpemVfdCAvKiBudW1iZXJPZkZyYW1lcyAqLykgeyB9OworCisgICAg
Ly8gUmVhbHRpbWVNZWRpYVNvdXJjZSBBUEkKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgp
IGZpbmFsOworICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSAgZmluYWw7CisKKyAgICBjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBm
aW5hbDsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkg
Y29uc3QgZmluYWw7CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50
U2V0dGluZ3M7CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVy
ZmFjZT4gbV9hdWRpb1RyYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZmM2E1YmViNmY1Y2NjMDEzNjk0ZTA5MTQwMmYyN2YyODIwZjdmYjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCisKKyNpZiBVU0UoTElCV0VCUlRD
KQorCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJS
VENQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkKKyAgICA6IG1fYXVkaW9Tb3VyY2UoV1RGTW92ZShh
dWRpb1NvdXJjZSkpCisgICAgLCBtX3NpbGVuY2VBdWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5jZSkKK3sKKyAgICBtX2F1ZGlvU291cmNlLT5h
ZGRPYnNlcnZlcigqdGhpcyk7CisgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOworfQorCitib29s
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCit7CisgICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2Jz
ZXJ2ZXIoKnRoaXMpOworICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Cisg
ICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOworCisgICAgaW5pdGlhbGl6ZUNv
bnZlcnRlcigpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRlcigpCit7CisgICAgbV9tdXRlZCA9IG1fYXVk
aW9Tb3VyY2UtPm11dGVkKCk7CisgICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxl
ZCgpOworICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQoreworICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgp
OworICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKK30KKwordm9pZCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCit7CisgICAg
bV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7CisgICAgaGFuZGxlTXV0ZWRJZk5lZWRl
ZCgpOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxl
ZENoYW5nZWQoKQoreworICAgIG1fZW5hYmxlZCA9IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsK
KyAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVkKCkKK3sKKyAgICBib29sIGlzU2lsZW5jZWQg
PSBtX211dGVkIHx8ICFtX2VuYWJsZWQ7CisgICAgaWYgKGlzU2lsZW5jZWQgJiYgIW1fc2lsZW5j
ZUF1ZGlvVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdGFy
dFJlcGVhdGluZygxX3MpOworICAgIGlmICghaXNTaWxlbmNlZCAmJiBtX3NpbGVuY2VBdWRpb1Rp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjM1ODMyZjEyZWMzZTYw
YjAwZTI2YmQ0OTBmNWVjZmRjMGE0ODM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAg
LTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkxpYldl
YlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCisjaW5j
bHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSB3
ZWJydGMgeworY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKK2NsYXNzIEF1ZGlvVHJhY2tTaW5r
SW50ZXJmYWNlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwg
cHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKTsKKworICAgIH5SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UoKSB7IHN0b3AoKTsgfQorCisgICAgdm9pZCBzdG9wKCk7CisKKyAgICBi
b29sIHNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOworICAgIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU291cmNl
LmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKKworICAgIFZlY3Rvcjx3
ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9zaW5rczsKKyAgICBib29sIG1fbXV0
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OworCitwcml2YXRlOgor
ICAgIHZpcnR1YWwgdm9pZCBBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2Uq
IHNpbmspIHsgbV9zaW5rcy5hcHBlbmQoc2luayk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgUmVtb3Zl
U2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lua3MucmVt
b3ZlRmlyc3Qoc2luayk7IH0KKworICAgIGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7IHJlZigp
OyByZXR1cm4gcmVmQ291bnQoKTsgfQorICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmluYWwgeyBk
ZXJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQorICAgIFNvdXJjZVN0YXRlIHN0YXRlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4ga0xpdmU7IH0KKyAgICBib29sIHJlbW90ZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBSZWdpc3Rlck9ic2VydmVyKHdlYnJ0Yzo6T2Jz
ZXJ2ZXJJbnRlcmZhY2UqKSBmaW5hbCB7IH0KKyAgICB2b2lkIFVucmVnaXN0ZXJPYnNlcnZlcih3
ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9CisKKyAgICB2b2lkIHNvdXJjZU11
dGVkQ2hhbmdlZCgpOworICAgIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkg
eyB9OworCisgICAgdmlydHVhbCBib29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hM
aW1pdCgpIHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoaW5nQnVm
ZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpIHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwg
Ym9vbCBoYXNCdWZmZXJlZEVub3VnaERhdGEoKSB7IHJldHVybiBmYWxzZTsgfTsKKworICAgIC8v
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciBBUEkKKyAgICB2b2lkIHRyYWNrTXV0
ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyBzb3VyY2VNdXRlZENo
YW5nZWQoKTsgfQorICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlRW5hYmxlZENoYW5nZWQoKTsgfQorICAgIHZvaWQgYXVk
aW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgY29uc3QgTWVkaWFU
aW1lJiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KSB7IGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVD
b3VudCk7IH0KKyAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBm
aW5hbCB7IH0KKyAgICB2b2lkIHRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJikgZmluYWwgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVsbEF1ZGlvRGF0YSgpIHsg
fTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOworICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVNdXRlZElmTmVlZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHNlbmRTaWxlbmNlKCkgeyB9
OworCisgICAgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX2F1ZGlvU291cmNlOworCisg
ICAgVGltZXIgbV9zaWxlbmNlQXVkaW9UaW1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzUzOGNk
MDU1YjRkY2E0OTkyMWIyZDUxZDgwZjA4MmViMjI2NzM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiAgICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICog
ICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bSB0aGlzCi0gKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCIKLQotI2lmIFVTRShMSUJXRUJSVEMpCi0KLSNpbmNs
dWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKLSNpbmNsdWRl
ICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKLSNpbmNsdWRlICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5oIgotI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0
aW9uLmg+Ci0KLSNpbmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJh
Y2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQotewotICAg
IGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2Uo
V1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpKSk7Ci0gICAgc291cmNl
LT5zdGFydCgpOwotICAgIHJldHVybiBzb3VyY2U7Ci19Ci0KLVJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQotICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKLSAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQotewotICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOwotfQotCi1SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQotewotICAgIHN0b3AoKTsKLX0KLQotCi1zdGF0aWMgaW5s
aW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1EZXNjcmlwdGlvbihzaXplX3Qg
c2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKLXsKLSAgICBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1G
b3JtYXQsIHNhbXBsZVJhdGUsIGNoYW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNh
bXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRp
b0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBMaWJX
ZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0gICAgcmV0dXJuIHN0cmVhbUZv
cm1hdDsKLX0KLQotdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6Ok9uRGF0YShjb25z
dCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKLXsKLSAgICAvLyBX
ZSBtYXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBz
YW1wbGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4g
c3RhcnRpbmcgdGhlIGNhbGwuCi0gICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAg
dGhlbSwgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVs
IHRvIG5vdCBiZSBjYWxsZWQgdW50aWwgZ2V0dGluZyBzb21lIHJlYWwgZGF0YS4KLSAgICBpZiAo
c2FtcGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJPZkNoYW5uZWxzID09IDEpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEFTU0VSVChiaXRzUGVyU2FtcGxlID09IDE2KTsKLSAgICBBU1NFUlQobnVt
YmVyT2ZDaGFubmVscyA9PSAxIHx8IG51bWJlck9mQ2hhbm5lbHMgPT0gMik7Ci0gICAgQVNTRVJU
KHNhbXBsZVJhdGUgPT0gNDgwMDApOwotCi0gICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1h
a2UobV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7Ci0gICAgYXV0byBtZWRpYVRpbWUgPSBQ
QUw6OnRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7Ci0gICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1i
ZXJPZkZyYW1lczsKLQotICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlw
dGlvbiA9IHN0cmVhbURlc2NyaXB0aW9uKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpOwot
Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5
IGFsbG9jYXRpb24gYW5kIGNvcHkuCi0gICAgLy8gSW5zdGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUg
dG8gZGlyZWN0bHkgcGFzcyBhdWRpb0RhdGEgcG9pbnRlci4KLSAgICBXZWJBdWRpb0J1ZmZlckxp
c3QgYXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0
aW9uKSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpIH07Ci0gICAgYXVk
aW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMg
KiBudW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1wbGUgLyA4OwotICAgIGF1ZGlvQnVmZmVyTGlz
dC5idWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7Ci0KLSAgICBp
ZiAobXV0ZWQoKSkKLSAgICAgICAgbWVtc2V0KGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1E
YXRhLCAwLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKLSAgICBl
bHNlCi0gICAgICAgIG1lbWNweShhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgYXVk
aW9EYXRhLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKLQotICAg
IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgbnVtYmVyT2ZGcmFtZXMpOwotfQot
Ci12b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkK
LXsKLSAgICBpZiAobV9hdWRpb1RyYWNrKQotICAgICAgICBtX2F1ZGlvVHJhY2stPkFkZFNpbmso
dGhpcyk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzdG9wUHJvZHVj
aW5nRGF0YSgpCi17Ci0gICAgaWYgKG1fYXVkaW9UcmFjaykKLSAgICAgICAgbV9hdWRpb1RyYWNr
LT5SZW1vdmVTaW5rKHRoaXMpOwotfQotCi12b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZTo6c2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0lu
dGVyZmFjZT4mJiB0cmFjaykKLXsKLSAgICBBU1NFUlQoIW1fYXVkaW9UcmFjayk7Ci0gICAgQVNT
RVJUKHRyYWNrKTsKLQotICAgIG1fYXVkaW9UcmFjayA9IFdURk1vdmUodHJhY2spOwotICAgIG5v
dGlmeU11dGVkQ2hhbmdlKCFtX2F1ZGlvVHJhY2spOwotICAgIGlmIChpc1Byb2R1Y2luZ0RhdGEo
KSkKLSAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOwotfQotCi1jb25zdCBSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6
OmNhcGFiaWxpdGllcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXM6OmVtcHR5Q2FwYWJpbGl0aWVzKCk7Ci19Ci0KLWNvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXR0aW5ncygp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOwotfQotCi19Ci0KLSNlbmRp
ZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjYwMjIwODUxOTdmZjM5YTY4NTQ3
MDFlZmIyMGZiOWUwZGQ0ZTQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiAgICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAgICBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkxpYldlYlJU
Q01hY3Jvcy5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKLSNpbmNsdWRlIDxD
b3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KLSNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3Ry
ZWFtaW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi10eXBlZGVmIGNv
bnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uICpDTUZvcm1hdERlc2NyaXB0aW9u
UmVmOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDOwotCi1jbGFzcyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UgZmluYWwgOiBw
dWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSwgcHJpdmF0ZSB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5r
SW50ZXJmYWNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZT4gY3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRl
cmZhY2U+JiYsIFN0cmluZyYmKTsKLQotICAgIHZvaWQgc2V0U291cmNlVHJhY2socnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJik7Ci0KLXByaXZhdGU6Ci0g
ICAgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKLSAgICB+UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlKCk7Ci0KLSAgICAvLyB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNl
IEFQSQotICAgIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJT
YW1wbGUsIGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51
bWJlck9mRnJhbWVzKSBmaW5hbDsKLQotICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2UgQVBJCi0g
ICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICB2b2lkIHN0b3BQcm9kdWNp
bmdEYXRhKCkgIGZpbmFsOwotCi0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOwotCi0gICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzIG1fY3VycmVudFNldHRpbmdzOwotICAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+IG1fYXVkaW9UcmFjazsKLQotICAgIHVp
bnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNv
Y29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M2ZTEwYTJhMjdhM2Mw
MGE3YjM5ZmFlNjFhMDNmOWVhNWE4OTAyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJBdWRpb1N0
cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgi
CisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJXZWJBdWRpb0J1
ZmZlckxpc3QuaCIKKyNpbmNsdWRlICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIgor
I2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisKKyNp
bmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Jl
ZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+
JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQoreworICAgIGF1dG8gc291cmNl
ID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF1ZGlv
VHJhY2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpOworICAgIHNvdXJjZS0+c3RhcnQoKTsKKyAg
ICByZXR1cm4gV1RGTW92ZShzb3VyY2UpOworfQorCitSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2E+IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hOjpjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1RyYWNr
LCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EoV1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92
ZShhdWRpb1RyYWNrSWQpKSk7Cit9CisKK1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29h
OjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJh
Y2tJZCkKKyAgICA6IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvVHJh
Y2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpCit7Cit9CisKKworc3RhdGljIGlubGluZSBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRGVzY3JpcHRpb24oc2l6ZV90IHNhbXBsZVJh
dGUsIHNpemVfdCBjaGFubmVsQ291bnQpCit7CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uIHN0cmVhbUZvcm1hdDsKKyAgICBGaWxsT3V0QVNCREZvckxQQ00oc3RyZWFtRm9ybWF0LCBz
YW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXpl
LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6
OmlzRmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVk
aW9Gb3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQpOworICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7Cit9
CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E6Ok9uRGF0YShjb25zdCB2
b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90
IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKK3sKKyAgICAvLyBXZSBt
YXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1w
bGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4gc3Rh
cnRpbmcgdGhlIGNhbGwuCisgICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAgdGhl
bSwgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVsIHRv
IG5vdCBiZSBjYWxsZWQgdW50aWwgZ2V0dGluZyBzb21lIHJlYWwgZGF0YS4KKyAgICBpZiAoc2Ft
cGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJPZkNoYW5uZWxzID09IDEpCisgICAgICAgIHJldHVy
bjsKKworICAgIEFTU0VSVChiaXRzUGVyU2FtcGxlID09IDE2KTsKKyAgICBBU1NFUlQobnVtYmVy
T2ZDaGFubmVscyA9PSAxIHx8IG51bWJlck9mQ2hhbm5lbHMgPT0gMik7CisgICAgQVNTRVJUKHNh
bXBsZVJhdGUgPT0gNDgwMDApOworCisgICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1ha2Uo
bV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CisgICAgYXV0byBtZWRpYVRpbWUgPSBQQUw6
OnRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7CisgICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1iZXJP
ZkZyYW1lczsKKworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlwdGlv
biA9IHN0cmVhbURlc2NyaXB0aW9uKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpOworCisg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5IGFs
bG9jYXRpb24gYW5kIGNvcHkuCisgICAgLy8gSW5zdGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8g
ZGlyZWN0bHkgcGFzcyBhdWRpb0RhdGEgcG9pbnRlci4KKyAgICBXZWJBdWRpb0J1ZmZlckxpc3Qg
YXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9u
KSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpIH07CisgICAgYXVkaW9C
dWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMgKiBu
dW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1wbGUgLyA4OworICAgIGF1ZGlvQnVmZmVyTGlzdC5i
dWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7CisKKyAgICBpZiAo
bXV0ZWQoKSkKKyAgICAgICAgbWVtc2V0KGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRh
LCAwLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKKyAgICBlbHNl
CisgICAgICAgIG1lbWNweShhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgYXVkaW9E
YXRhLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKKworICAgIGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgbnVtYmVyT2ZGcmFtZXMpOworfQorCit9
CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDEwNDc1ZTVlY2EyZmZjOTE0MzAz
NDcxYjY1ZmIxYTg5N2RhYmE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmgK
QEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZS5oIgorCisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+
CisKK3R5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9y
bWF0RGVzY3JpcHRpb25SZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakM7CisKK2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYT4g
Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYs
IFN0cmluZyYmKTsKKworcHJpdmF0ZToKKyAgICBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBT
dHJpbmcmJik7CisKKyAgICAvLyB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlIEFQSQor
ICAgIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJTYW1wbGUs
IGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzKSBmaW5hbDsKKworICAgIHVpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDkxMDFkYzQzNzkxN2Q1MTBlNzRiZmM3NzUxYzdjNzBjN2RjMjJh
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oIgotCi0jaWYgVVNFKExJQldFQlJUQykKLQot
I2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkxpYldlYlJU
Q0F1ZGlvRm9ybWF0LmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
biBsaWJ3ZWJydGNBdWRpb0Zvcm1hdChGbG9hdDY0IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVs
Q291bnQpCi17Ci0gICAgLy8gRklYTUU6IE1pY3JvcGhvbmVzIGNhbiBoYXZlIG1vcmUgdGhhbiB0
d28gY2hhbm5lbHMuIEluIHN1Y2ggY2FzZSwgd2Ugc2hvdWxkIGRvIHRoZSBtaXggZG93biBiYXNl
ZCBvbiBBdWRpb0NoYW5uZWxMYXlvdXRUYWcuCi0gICAgc2l6ZV90IGxpYldlYlJUQ0NoYW5uZWxD
b3VudCA9IGNoYW5uZWxDb3VudCA+PSAyID8gMiA6IGNoYW5uZWxDb3VudDsKLSAgICBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBD
TShzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUsIGxpYldlYlJUQ0NoYW5uZWxDb3VudCwgTGliV2Vi
UlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVT
aXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6
OmlzQmlnRW5kaWFuLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0g
ICAgcmV0dXJuIHN0cmVhbUZvcm1hdDsKLX0KLQotUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
OjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
PiYmIGF1ZGlvU291cmNlKQotICAgIDogbV9hdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNl
KSkKLSAgICAsIG1fc2FtcGxlQ29udmVydGVyKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRl
KExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRlICogMikpCi0gICAgLCBtX3NpbGVuY2VB
dWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5j
ZSkKLXsKLSAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7Ci0gICAgaW5pdGlh
bGl6ZUNvbnZlcnRlcigpOwotfQotCi1ib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCi17Ci0g
ICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwotICAgIG1fYXVkaW9Tb3Vy
Y2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Ci0gICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIo
KnRoaXMpOwotCi0gICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwotICAgIHJldHVybiB0cnVlOwot
fQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRl
cigpCi17Ci0gICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7Ci0gICAgbV9lbmFi
bGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxlZCgpOwotICAgIGhhbmRsZU11dGVkSWZOZWVkZWQo
KTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQotewotICAg
IG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOwotICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9i
c2VydmVyKCp0aGlzKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNv
dXJjZU11dGVkQ2hhbmdlZCgpCi17Ci0gICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVk
KCk7Ci0gICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwotfQotCi12b2lkIFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxlZENoYW5nZWQoKQotewotICAgIG1fZW5hYmxlZCA9
IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsKLSAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Ci19
Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVk
KCkKLXsKLSAgICBib29sIGlzU2lsZW5jZWQgPSBtX211dGVkIHx8ICFtX2VuYWJsZWQ7Ci0gICAg
bV9zYW1wbGVDb252ZXJ0ZXItPnNldE11dGVkKGlzU2lsZW5jZWQpOwotICAgIGlmIChpc1NpbGVu
Y2VkICYmICFtX3NpbGVuY2VBdWRpb1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fc2lsZW5j
ZUF1ZGlvVGltZXIuc3RhcnRSZXBlYXRpbmcoMV9zKTsKLSAgICBpZiAoIWlzU2lsZW5jZWQgJiYg
bV9zaWxlbmNlQXVkaW9UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3NpbGVuY2VBdWRpb1Rp
bWVyLnN0b3AoKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRT
aWxlbmNlKCkKLXsKLSAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5n
VGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAg
c2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBs
ZVJhdGUoKSAvIDEwMDsKLSAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNv
dW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJl
YW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7Ci0KLSAgICAgICAgaWYgKCFidWZmZXJT
aXplKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fYXVkaW9CdWZmZXIuZ3Jvdyhi
dWZmZXJTaXplKTsKLSAgICAgICAgbWVtc2V0KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCAwLCBidWZm
ZXJTaXplKTsKLSAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQotICAgICAgICAgICAg
c2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6
c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0
cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50
KTsKLSAgICB9KTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmlzUmVh
Y2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpCi17Ci0gICAgYXV0byB3cml0dGVuQXVk
aW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1w
bGVSYXRlKCk7Ci0gICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9v
dXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBBU1NFUlQod3JpdHRl
bkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOwotICAgIHJldHVybiB3cml0dGVu
QXVkaW9EdXJhdGlvbiA+IHJlYWRBdWRpb0R1cmF0aW9uICsgMC41OwotfQotCi1ib29sIFJlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGlt
aXQoKQotewotICAgIGF1dG8gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBt
X2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotICAgIGF1dG8gcmVhZEF1ZGlv
RHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpOwotCi0gICAgQVNTRVJUKHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1
cmF0aW9uKTsKLSAgICByZXR1cm4gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPCByZWFkQXVkaW9EdXJh
dGlvbiArIDAuMTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6Omhhc0J1
ZmZlcmVkRW5nb3VoRGF0YSgpCi17Ci0gICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1f
d3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAg
YXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24g
Pj0gcmVhZEF1ZGlvRHVyYXRpb24pOwotICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+
PSByZWFkQXVkaW9EdXJhdGlvbiArIDAuMDE7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
UGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYgc3RyZWFtRGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKLXsKLSAgICBpZiAobV9p
bnB1dFN0cmVhbURlc2NyaXB0aW9uICE9IHN0cmVhbURlc2NyaXB0aW9uKSB7Ci0gICAgICAgIG1f
aW5wdXRTdHJlYW1EZXNjcmlwdGlvbiA9IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKHN0cmVh
bURlc2NyaXB0aW9uKTsKLSAgICAgICAgYXV0byBzdGF0dXMgID0gbV9zYW1wbGVDb252ZXJ0ZXIt
PnNldElucHV0Rm9ybWF0KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbik7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsKLQotICAgICAgICBtX291dHB1dFN0cmVhbURlc2Ny
aXB0aW9uID0gbGlid2VicnRjQXVkaW9Gb3JtYXQoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBs
ZVJhdGUsIHN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSk7Ci0gICAgICAgIHN0
YXR1cyA9IG1fc2FtcGxlQ29udmVydGVyLT5zZXRPdXRwdXRGb3JtYXQobV9vdXRwdXRTdHJlYW1E
ZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKTsKLSAgICAgICAgQVNTRVJUKCFzdGF0dXMp
OwotICAgIH0KLQotICAgIC8vIExldCdzIHNraXAgcHVzaGluZyBzYW1wbGVzIGlmIHdlIGFyZSB0
b28gc2xvdyBwdWxsaW5nIHRoZW0uCi0gICAgaWYgKG1fc2tpcHBpbmdBdWRpb0RhdGEpIHsKLSAg
ICAgICAgaWYgKCFpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gZmFsc2U7Ci0gICAg
fSBlbHNlIGlmIChpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSkgewotICAg
ICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIC8vIElmIHdlIGNoYW5nZSB0aGUgYXVkaW8gdHJhY2sgb3IgaXRzIHNhbXBsZSByYXRl
IGNoYW5nZXMsIHRoZSB0aW1lc3RhbXAgYmFzZWQgb24gbV93cml0ZUNvdW50IG1heSBiZSB3cm9u
Zy4KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVwZGF0ZSBtX3dyaXRlQ291bnQgdG8gYmUgdmFs
aWQgYWNjb3JkaW5nIHRoZSBuZXcgc2FtcGxlUmF0ZS4KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+
cHVzaFNhbXBsZXMoTWVkaWFUaW1lKG1fd3JpdGVDb3VudCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkpKSwgYXVkaW9EYXRhLCBzYW1w
bGVDb3VudCk7Ci0gICAgbV93cml0ZUNvdW50ICs9IHNhbXBsZUNvdW50OwotCi0gICAgaWYgKCFo
YXNCdWZmZXJlZEVuZ291aERhdGEoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTGliV2ViUlRD
UHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPnB1bGxBdWRpb0RhdGEoKTsK
LSAgICB9KTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnB1bGxBdWRp
b0RhdGEoKQotewotICAgIC8vIGxpYndlYnJ0YyBleHBlY3RzIDEwIG1zIGNodW5rcy4KLSAgICBz
aXplX3QgY2h1bmtTYW1wbGVDb3VudCA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpIC8gMTAwOwotICAgIHNpemVfdCBidWZmZXJTaXplID0gY2h1bmtTYW1wbGVDb3VudCAq
IExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAqIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOwotICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZm
ZXJTaXplKTsKLQotICAgIEF1ZGlvQnVmZmVyTGlzdCBidWZmZXJMaXN0OwotICAgIGJ1ZmZlckxp
c3QubU51bWJlckJ1ZmZlcnMgPSAxOwotICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51bWJl
ckNoYW5uZWxzID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7
Ci0gICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gYnVmZmVyU2l6ZTsK
LSAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhID0gbV9hdWRpb0J1ZmZlci5kYXRhKCk7
Ci0KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVsbEF2YWxhaWJsZVNhbXBsZXNBc0NodW5rcyhi
dWZmZXJMaXN0LCBjaHVua1NhbXBsZUNvdW50LCBtX3JlYWRDb3VudCwgW3RoaXMsIGNodW5rU2Ft
cGxlQ291bnRdIHsKLSAgICAgICAgbV9yZWFkQ291bnQgKz0gY2h1bmtTYW1wbGVDb3VudDsKLSAg
ICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQotICAgICAgICAgICAgc2luay0+T25EYXRh
KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwg
bV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsKLSAgICB9KTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKExJQldFQlJUQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGViYzgwNGU0OTU4NTMwYmU2NjAyZmZkNjFhMmI1M2M3ZWI2ZTU3NC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
cmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKExJQldFQlJUQykK
LQotI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgotI2luY2x1ZGUgIkxpYldlYlJU
Q01hY3Jvcy5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCi0jaW5jbHVk
ZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+
Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSB3ZWJy
dGMgewotY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKLWNsYXNzIEF1ZGlvVHJhY2tTaW5rSW50
ZXJmYWNlOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFj
ZSwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgewotcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkpOyB9
Ci0gICAgflJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSgpIHsgc3RvcCgpOyB9Ci0KLSAgICB2
b2lkIHN0b3AoKTsKLQotICAgIGJvb2wgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZT4mJik7Ci0gICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXVkaW9Tb3VyY2UuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYm
KTsKLQotICAgIHZpcnR1YWwgdm9pZCBBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRl
cmZhY2UqIHNpbmspIHsgbV9zaW5rcy5hcHBlbmQoc2luayk7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
UmVtb3ZlU2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lu
a3MucmVtb3ZlRmlyc3Qoc2luayk7IH0KLQotICAgIGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7
IHJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQotICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmlu
YWwgeyBkZXJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQotICAgIFNvdXJjZVN0YXRlIHN0YXRl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4ga0xpdmU7IH0KLSAgICBib29sIHJlbW90ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBSZWdpc3Rlck9ic2VydmVyKHdlYnJ0
Yzo6T2JzZXJ2ZXJJbnRlcmZhY2UqKSBmaW5hbCB7IH0KLSAgICB2b2lkIFVucmVnaXN0ZXJPYnNl
cnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9Ci0KLSAgICB2b2lkIHNv
dXJjZU11dGVkQ2hhbmdlZCgpOwotICAgIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKTsKLSAg
ICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0
Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwot
Ci0gICAgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKTsKLSAgICBi
b29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCk7Ci0gICAgYm9vbCBoYXNC
dWZmZXJlZEVuZ291aERhdGEoKTsKLQotICAgIC8vIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpP
YnNlcnZlciBBUEkKLSAgICB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJikgZmluYWwgeyBzb3VyY2VNdXRlZENoYW5nZWQoKTsgfQotICAgIHZvaWQgdHJhY2tF
bmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlRW5h
YmxlZENoYW5nZWQoKTsgfQotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlJiwgY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRm
b3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KSBmaW5hbCB7IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZSht
ZWRpYVRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7IH0KLSAgICB2b2lkIHRy
YWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KLSAgICB2b2lkIHRy
YWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9Ci0K
LSAgICB2b2lkIHB1bGxBdWRpb0RhdGEoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnZlcnRl
cigpOwotICAgIHZvaWQgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwotICAgIHZvaWQgc2VuZFNpbGVu
Y2UoKTsKLQotICAgIFZlY3Rvcjx3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9z
aW5rczsKLSAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7Ci0g
ICAgUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9zYW1wbGVDb252ZXJ0ZXI7Ci0gICAgQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbjsKLSAgICBDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbjsKLQotICAgIFZl
Y3Rvcjx1aW50OF90PiBtX2F1ZGlvQnVmZmVyOwotICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsg
MCB9OwotICAgIHVpbnQ2NF90IG1fd3JpdGVDb3VudCB7IDAgfTsKLSAgICBib29sIG1fbXV0ZWQg
eyBmYWxzZSB9OwotICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9za2lw
cGluZ0F1ZGlvRGF0YSB7IGZhbHNlIH07Ci0gICAgVGltZXIgbV9zaWxlbmNlQXVkaW9UaW1lcjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMTJiODhhZjgwZjQ3ZGE3YmExZDRiYzE4NGM1YjBlOThjMjA0ZWE2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApAQCAtMCwwICsxLDE2NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQu
aCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBpbmxpbmUgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIGxpYndlYnJ0Y0F1
ZGlvRm9ybWF0KEZsb2F0NjQgc2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKK3sKKyAg
ICAvLyBGSVhNRTogTWljcm9waG9uZXMgY2FuIGhhdmUgbW9yZSB0aGFuIHR3byBjaGFubmVscy4g
SW4gc3VjaCBjYXNlLCB3ZSBzaG91bGQgZG8gdGhlIG1peCBkb3duIGJhc2VkIG9uIEF1ZGlvQ2hh
bm5lbExheW91dFRhZy4KKyAgICBzaXplX3QgbGliV2ViUlRDQ2hhbm5lbENvdW50ID0gY2hhbm5l
bENvdW50ID49IDIgPyAyIDogY2hhbm5lbENvdW50OworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgRmlsbE91dEFTQkRGb3JMUENNKHN0cmVhbUZvcm1h
dCwgc2FtcGxlUmF0ZSwgbGliV2ViUlRDQ2hhbm5lbENvdW50LCBMaWJXZWJSVENBdWRpb0Zvcm1h
dDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJU
Q0F1ZGlvRm9ybWF0Ojppc0Zsb2F0LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNCaWdFbmRpYW4s
IExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc05vbkludGVybGVhdmVkKTsKKyAgICByZXR1cm4gc3Ry
ZWFtRm9ybWF0OworfQorCitSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYm
IGF1ZGlvU291cmNlKQorICAgIDogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFdURk1vdmUo
YXVkaW9Tb3VyY2UpKQorICAgICwgbV9zYW1wbGVDb252ZXJ0ZXIoQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpjcmVhdGUoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUgKiAyKSkKK3sKK30K
KworUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4gUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlOjpjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNl
KQoreworICAgIHJldHVybiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6Y3JlYXRl
KFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYTo6aGFuZGxlTXV0ZWRJZk5lZWRlZCgpCit7CisgICAgYm9vbCBpc1NpbGVuY2Vk
ID0gbV9tdXRlZCB8fCAhbV9lbmFibGVkOworICAgIG1fc2FtcGxlQ29udmVydGVyLT5zZXRNdXRl
ZChpc1NpbGVuY2VkKTsKKworICAgIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpo
YW5kbGVNdXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlQ29jb2E6OnNlbmRTaWxlbmNlKCkKK3sKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9u
V2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIHsKKyAgICAgICAgc2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURl
c2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUg
PSBjaHVua1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXpl
ICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7CisKKyAgICAg
ICAgaWYgKCFidWZmZXJTaXplKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fYXVk
aW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKKyAgICAgICAgbWVtc2V0KG1fYXVkaW9CdWZmZXIu
ZGF0YSgpLCAwLCBidWZmZXJTaXplKTsKKyAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3Npbmtz
KQorICAgICAgICAgICAgc2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJS
VENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1w
bGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBj
aHVua1NhbXBsZUNvdW50KTsKKyAgICB9KTsKK30KKworYm9vbCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2VDb2NvYTo6aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCkKK3sK
KyAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9pbnB1dFN0
cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKyAgICBhdXRvIHJlYWRBdWRpb0R1cmF0aW9u
ID0gbV9yZWFkQ291bnQgLyBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsK
KworICAgIEFTU0VSVCh3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbik7
CisgICAgcmV0dXJuIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID4gcmVhZEF1ZGlvRHVyYXRpb24gKyAw
LjU7Cit9CisKK2Jvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmlzUmVhY2hp
bmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCkKK3sKKyAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1
cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJh
dGUoKTsKKyAgICBhdXRvIHJlYWRBdWRpb0R1cmF0aW9uID0gbV9yZWFkQ291bnQgLyBtX291dHB1
dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKworICAgIEFTU0VSVCh3cml0dGVuQXVk
aW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbik7CisgICAgcmV0dXJuIHdyaXR0ZW5BdWRp
b0R1cmF0aW9uIDwgcmVhZEF1ZGlvRHVyYXRpb24gKyAwLjE7Cit9CisKK2Jvb2wgUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6Omhhc0J1ZmZlcmVkRW5vdWdoRGF0YSgpCit7CisgICAg
YXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1E
ZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisgICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1f
cmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisKKyAg
ICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOworICAg
IHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbiArIDAuMDE7
Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmF1ZGlvU2FtcGxl
c0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVk
aW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBzdHJlYW1EZXNjcmlwdGlvbiwg
c2l6ZV90IHNhbXBsZUNvdW50KQoreworICAgIGlmIChtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24g
IT0gc3RyZWFtRGVzY3JpcHRpb24pIHsKKyAgICAgICAgbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9u
ID0gdG9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oc3RyZWFtRGVzY3JpcHRpb24pOworICAgICAg
ICBhdXRvIHN0YXR1cyAgPSBtX3NhbXBsZUNvbnZlcnRlci0+c2V0SW5wdXRGb3JtYXQobV9pbnB1
dFN0cmVhbURlc2NyaXB0aW9uKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzdGF0dXMsICFzdGF0
dXMpOworCisgICAgICAgIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gPSBsaWJ3ZWJydGNBdWRp
b0Zvcm1hdChMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlUmF0ZSwgc3RyZWFtRGVzY3JpcHRp
b24ubnVtYmVyT2ZDaGFubmVscygpKTsKKyAgICAgICAgc3RhdHVzID0gbV9zYW1wbGVDb252ZXJ0
ZXItPnNldE91dHB1dEZvcm1hdChtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnN0cmVhbURlc2Ny
aXB0aW9uKCkpOworICAgICAgICBBU1NFUlQoIXN0YXR1cyk7CisgICAgfQorCisgICAgLy8gTGV0
J3Mgc2tpcCBwdXNoaW5nIHNhbXBsZXMgaWYgd2UgYXJlIHRvbyBzbG93IHB1bGxpbmcgdGhlbS4K
KyAgICBpZiAobV9za2lwcGluZ0F1ZGlvRGF0YSkgeworICAgICAgICBpZiAoIWlzUmVhY2hpbmdC
dWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fc2tpcHBpbmdBdWRpb0RhdGEgPSBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKGlzUmVhY2hpbmdC
dWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpKSB7CisgICAgICAgIG1fc2tpcHBpbmdBdWRpb0Rh
dGEgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSWYgd2UgY2hhbmdl
IHRoZSBhdWRpbyB0cmFjayBvciBpdHMgc2FtcGxlIHJhdGUgY2hhbmdlcywgdGhlIHRpbWVzdGFt
cCBiYXNlZCBvbiBtX3dyaXRlQ291bnQgbWF5IGJlIHdyb25nLgorICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgdXBkYXRlIG1fd3JpdGVDb3VudCB0byBiZSB2YWxpZCBhY2NvcmRpbmcgdGhlIG5ldyBz
YW1wbGVSYXRlLgorICAgIG1fc2FtcGxlQ29udmVydGVyLT5wdXNoU2FtcGxlcyhNZWRpYVRpbWUo
bV93cml0ZUNvdW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9pbnB1dFN0cmVhbURlc2NyaXB0
aW9uLnNhbXBsZVJhdGUoKSkpLCBhdWRpb0RhdGEsIHNhbXBsZUNvdW50KTsKKyAgICBtX3dyaXRl
Q291bnQgKz0gc2FtcGxlQ291bnQ7CisKKyAgICBpZiAoIWhhc0J1ZmZlcmVkRW5nb3VoRGF0YSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRD
U2lnbmFsaW5nVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+cHVsbEF1ZGlvRGF0YSgpOworICAgIH0pOworfQorCit2b2lkIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpwdWxsQXVkaW9EYXRhKCkKK3sKKyAgICAv
LyBsaWJ3ZWJydGMgZXhwZWN0cyAxMCBtcyBjaHVua3MuCisgICAgc2l6ZV90IGNodW5rU2FtcGxl
Q291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKKyAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IGNodW5rU2FtcGxlQ291bnQgKiBMaWJXZWJSVENBdWRpb0Zv
cm1hdDo6c2FtcGxlQnl0ZVNpemUgKiBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9m
Q2hhbm5lbHMoKTsKKyAgICBtX2F1ZGlvQnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7CisKKyAgICBB
dWRpb0J1ZmZlckxpc3QgYnVmZmVyTGlzdDsKKyAgICBidWZmZXJMaXN0Lm1OdW1iZXJCdWZmZXJz
ID0gMTsKKyAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fb3V0
cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOworICAgIGJ1ZmZlckxpc3Qu
bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IGJ1ZmZlclNpemU7CisgICAgYnVmZmVyTGlzdC5t
QnVmZmVyc1swXS5tRGF0YSA9IG1fYXVkaW9CdWZmZXIuZGF0YSgpOworCisgICAgbV9zYW1wbGVD
b252ZXJ0ZXItPnB1bGxBdmFsYWlibGVTYW1wbGVzQXNDaHVua3MoYnVmZmVyTGlzdCwgY2h1bmtT
YW1wbGVDb3VudCwgbV9yZWFkQ291bnQsIFt0aGlzLCBjaHVua1NhbXBsZUNvdW50XSB7CisgICAg
ICAgIG1fcmVhZENvdW50ICs9IGNodW5rU2FtcGxlQ291bnQ7CisgICAgICAgIGZvciAoYXV0byBz
aW5rIDogbV9zaW5rcykKKyAgICAgICAgICAgIHNpbmstPk9uRGF0YShtX2F1ZGlvQnVmZmVyLmRh
dGEoKSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24uc2FtcGxlUmF0ZSgpLCBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9m
Q2hhbm5lbHMoKSwgY2h1bmtTYW1wbGVDb3VudCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhNzA0MzAyMjky
ZmIxMDc4MTU5YTJhOWQxNTAxODI4ZjgxMjA2OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlQ29jb2EuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJl
ZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCIK
KyNpbmNsdWRlICJSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCIKKworbmFtZXNwYWNlIHdl
YnJ0YyB7CitjbGFzcyBBdWRpb1RyYWNrSW50ZXJmYWNlOworY2xhc3MgQXVkaW9UcmFja1NpbmtJ
bnRlcmZhY2U7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlQ29jb2EgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E+LCBwdWJsaWMgUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUNvY29hPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1
ZGlvU291cmNlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZUNvY29hKFdURk1vdmUoYXVkaW9Tb3VyY2UpKSk7IH0KKworcHJpdmF0ZToKKyAgICBleHBs
aWNpdCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYShSZWY8TWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU+JiYpOworCisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVk
aWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKKworICAgIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVk
aW9EYXRhSGlnaExpbWl0KCkgZmluYWw7CisgICAgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRp
b0RhdGFMb3dMaW1pdCgpIGZpbmFsOworICAgIGJvb2wgaGFzQnVmZmVyZWRFbm91Z2hEYXRhKCkg
ZmluYWw7CisKKyAgICB2b2lkIHB1bGxBdWRpb0RhdGEoKSBmaW5hbDsKKworICAgIHZvaWQgaGFu
ZGxlTXV0ZWRJZk5lZWRlZCgpIGZpbmFsOworICAgIHZvaWQgc2VuZFNpbGVuY2UoKSBmaW5hbDsK
KworICAgIFJlZjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fc2FtcGxlQ29udmVydGVyOworICAg
IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb247CisgICAg
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb247CisKKyAg
ICBWZWN0b3I8dWludDhfdD4gbV9hdWRpb0J1ZmZlcjsKKyAgICB1aW50NjRfdCBtX3JlYWRDb3Vu
dCB7IDAgfTsKKyAgICB1aW50NjRfdCBtX3dyaXRlQ291bnQgeyAwIH07CisgICAgYm9vbCBtX3Nr
aXBwaW5nQXVkaW9EYXRhIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323706</attachid>
            <date>2017-10-13 11:01:11 -0700</date>
            <delta_ts>2017-10-13 11:48:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177928-20171013200111.patch</filename>
            <type>text/plain</type>
            <size>70645</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkzODIyMzA3YzA4MTkz
ODNhYjVjNDliNDQxNTFlNWFkODFkNWFmMy4uODg2OTExNjJiZWQ0YTcyYjE3NTg2NzY1ODI3Mzll
N2JmOTNjZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTEwLTEyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlcyBhbmQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlcyBw
b3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciB0aGUgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGFuZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgY2xhc3NlcywKKyAgICAgICAgbW92ZSB0aGUgbWFjIHNwZWNp
ZmljIGNvZGUgdG8gYSBkaWZmZXJlbnQgY2xhc3MuIFRoaXMgd2F5IHdlIGNhbiB1c2UgdGhlbSBm
cm9tCisgICAgICAgIG90aGVyIHBvcnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgd2UgYXJl
IG5vdCBhZGRpbmcgbmV3IGZ1bmN0aW9uYWxpdHkganVzdCByZWZhY3RvcmluZy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmguIEp1c3QgdGhlIHBvcnQg
YWdub3N0aWMgcGFydHMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaC4gRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAuIERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmguIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6IEFkZGVkLCBpdCBhZGRzIENv
Y29hIGNvZGUgcGFydHMgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhpcyBm
dW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUgdG8g
YXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBBZGRl
ZCBDb2NvYSBjb2RlIGZyb20gb3JpZ2luYWwgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6
IEFkZGVkIENvY29hIGNvZGUgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhp
cyBmdW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUg
dG8gYXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBB
ZGRlZCBDb2NvYSBjb2RlIGZyb20gdGhlIG9yaWdpbmFsIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaC4KKwogMjAxNy0x
MC0wNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbV2luQ2Fpcm9dIEZpeCBidWlsZCBhZnRlciBCdWcgMTY3OTU2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDdmMjJlNTE2Zjk3YTI5N2RkNTQ4ZTc1Y2VlMDg3N2ExYzU2MjVmMWEuLmE4NDQxYmY0
Y2IyYmZhNTNhNWMyMjY4MDc3ZjE2NzcxMjAzNWMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yNTQ4LDkgKzI1NDgsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAKICAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcAogICAg
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3Bw
CisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCiAgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKICAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCisgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAogCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmY4Njg4YmMzZDlkNmU0MWU4MmRlNjY2OGIyYjlmYzViYjA4ZDM3Yy4uMjk5Yjc2NmM2
MTZjMGQzZTFiYjhlYWRlYTY3NjAxYzdiYjA0NDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5Niw4ICsxNjk2LDEyIEBA
CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEw
NDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTEw
M0FBQjFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovOyB9Owog
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
ODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggKi87IH07
CisJCTQxMTAzQUFCMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovOyB9OworCQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE4MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovOyB9OwogCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMDMg
LyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi87IH07CiAJCTQxMTAzQUFFMUUzOTc5MTAwMDc2OUYw
MyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQUExRTM5NzkwQTAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi87IH07CisJCTQxMTAzQUFEMUUzOTc5MTAw
MDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTkxRTM5NzkwQTAwNzY5
RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggKi87IH07CisJCTQxMTAz
QUFFMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
QTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3Bw
ICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2ViQ29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOUIx
QTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTQxMjMwOTEz
MTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGODIxNjI5OTAyOUY0RkI1MDEw
MDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTI3RDUzNzBGOEFB
QjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0
YXRlLmNwcCAqLzsgfTsKQEAgLTk0NzIsOCArOTQ3NiwxMiBAQAogCQk0MTBCN0U3MTEwNDVGQUIw
MDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMTAzQUE4MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE4MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBOTFFMzk3OTBBMDA3
NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIz
MjgwMEI5M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMyODAwQjk1NjcyIC8qIFJlYWRhYmxl
U3RyZWFtQllPQlJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtQllPQlJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0OTcs
NiArMTY1MDUsOCBAQAogCQkJCTA3RkZERTY2MTgxQUVENDIwMDcyRDQwOSAvKiBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZS5jcHAgKi8sCiAJCQkJMDdGRkRFNjcxODFBRUQ0MjAwNzJENDA5IC8qIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggKi8sCiAJCQkJNUVCQjg5MzgxQzc3QkRBNDAwQzY1RDQx
IC8qIFBlZXJNZWRpYURlc2NyaXB0aW9uLmggKi8sCisJCQkJNDExMDNBQUExRTM5NzkwQTAwNzY5
RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi8sCisJCQkJNDExMDNBQTkx
RTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oICovLAogCQkJ
CTRBNEY2NTZCMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLywK
IAkJCQk0QTRGNjU2QzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oICov
LAogCQkJCTRBNEY2NTZEMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzLmggKi8sCkBAIC0xNjUwNiw2ICsxNjUxNiw4IEBACiAJCQkJNEE0RjY1NkYxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovLAogCQkJCTJF
QzQxREUyMUMwNDEwQTMwMEQyOTRGRSAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuY3BwICovLAogCQkJCTA3QzFDMEU0MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLywKKwkJCQk0MTEwM0FBNzFFMzk3
OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCAqLywKKwkJCQk0
MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgg
Ki8sCiAJCQkJMzEzNTkxMEMxRTdERENCNjAwRjMwNjMwIC8qIFJUQ0J1bmRsZVBvbGljeS5oICov
LAogCQkJCTA3MjIxQkEyMTdDRjBBRDQwMDg0OEU1MSAvKiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCAqLywKIAkJCQkwNzIyMUJBMzE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50LmggKi8sCkBAIC0xNjU1NCwxNCArMTY1NjYsMTQgQEAKIAkJCQkwNzQ0RUNFQzFF
MEM0QUU1MDAwRDA5NDQgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJ
MDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgg
Ki8sCiAJCQkJMDdFRTc2RUUxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tICovLAotCQkJCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwICovLAotCQkJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAv
KiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCAqLywKKwkJCQk0MTEwM0FBQTFFMzk3OTBB
MDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwICovLAorCQkJ
CTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5oICovLAogCQkJCTVDREQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2UuY3BwICovLAogCQkJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLywKIAkJCQk0QTBGRkFBMzFBQUY1RUY2MDA2
MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgKi8sCiAJCQkJNEEwRkZB
QTQxQUFGNUVGNjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCAqLywK
LQkJCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcCAqLywKLQkJCQk0MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggKi8sCisJCQkJNDExMDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCAqLywKKwkJCQk0MTEwM0FBODFFMzk3
OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCAqLywKIAkJ
CQk1Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmNwcCAqLywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8sCkBAIC0yOTYxNCw2ICsyOTYyNiw3IEBACiAJ
CQkJNDEyOUM5QUIxRjU5QzU3MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAzQzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFs
eXNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExMDNBQUQxRTM5NzkxMDAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDExMDNBQUQx
RTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8q
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRB
MEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NjIxLDYgKzI5NjM0LDcgQEAKIAkJCQk0QTRGNjU3NDFBQTk5N0Yx
MDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBQzFFMzk3OTEwMDA3
NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQjk1MjI0MUY1OEE1OEYwMDkzMURDMiAvKiBS
ZWNvcmRpbmdTd2l6emxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2OEU4MEMyMjZF
MzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1ODE3NUQ0MTRD
MDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1ODIsNiAr
MzM1OTYsNyBAQAogCQkJCTQxMjlDOThBMUY1ODdGRUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVh
bVNpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwM0IxMkIwMjY3NjAwQzFBMzU5IC8q
IFJlYWx0aW1lQW5hbHlzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMDNBQUUxRTM5Nzkx
MDAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTEwM0FBRTFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzM0UxRTQzMjREQzAwNjIx
RTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0QTRGNjU3MDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0QTBGRkFBMTFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNTg5LDYgKzMzNjA0LDcgQEAK
IAkJCQk0QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQzQxREU0MUMwNDEwQTMwMEQyOTRGRSAvKiBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDExMDNBQUIxRTM5NzkxMDAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEwM0FBQjFFMzk3OTEwMDA3NjlGMTQgLyog
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDgzM0QxRTQzMjREOTAwNjIxRTkyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFu
Z2xlU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBQjQxODExM0UzNTZFODAwRDhBQUYz
IC8qIFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MWFiM2Q3NjgzYjNiOGZmYzUwMmJmMzQ2NTI0Nzk3MzVj
MjFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRp
b0Zvcm1hdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKKyAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQoreworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOworfQorCitSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1f
YXVkaW9UcmFjaykKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOworfQorCit2
b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQorewor
ICAgIGlmIChtX2F1ZGlvVHJhY2spCisgICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0
aGlzKTsKK30KKwordm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRy
YWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgdHJh
Y2spCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOworICAgIEFTU0VSVCh0cmFjayk7CisK
KyAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAgICBub3RpZnlNdXRlZENoYW5n
ZSghbV9hdWRpb1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCisgICAgICAgIG1f
YXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMo
KSBjb25zdAoreworICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpl
bXB0eUNhcGFiaWxpdGllcygpOworfQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAoreworICAg
IHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMzNjNi
NjJkYWFiNDg2NjM4MDA5YWRjOTFlM2NjOTIzYjAzMjUwNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldF
QlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlLCBwcml2YXRlIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYp
OworCisgICAgdm9pZCBzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmKTsKKworcHJvdGVjdGVkOgorICAgIFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJm
YWNlPiYmLCBTdHJpbmcmJik7CisgICAgflJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpOwor
Citwcml2YXRlOgorICAgIC8vIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgQVBJCisg
ICAgdmlydHVhbCB2b2lkIE9uRGF0YShjb25zdCB2b2lkKiAvKiBhdWRpb0RhdGEgKi8sIGludCAv
KiBiaXRzUGVyU2FtcGxlICovLCBpbnQgLyogc2FtcGxlUmF0ZSAqLywgc2l6ZV90IC8qIG51bWJl
ck9mQ2hhbm5lbHMgKi8sIHNpemVfdCAvKiBudW1iZXJPZkZyYW1lcyAqLykgeyB9OworCisgICAg
Ly8gUmVhbHRpbWVNZWRpYVNvdXJjZSBBUEkKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgp
IGZpbmFsOworICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSAgZmluYWw7CisKKyAgICBjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBm
aW5hbDsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkg
Y29uc3QgZmluYWw7CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50
U2V0dGluZ3M7CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVy
ZmFjZT4gbV9hdWRpb1RyYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZmM2E1YmViNmY1Y2NjMDEzNjk0ZTA5MTQwMmYyN2YyODIwZjdmYjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCisKKyNpZiBVU0UoTElCV0VCUlRD
KQorCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJS
VENQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkKKyAgICA6IG1fYXVkaW9Tb3VyY2UoV1RGTW92ZShh
dWRpb1NvdXJjZSkpCisgICAgLCBtX3NpbGVuY2VBdWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5jZSkKK3sKKyAgICBtX2F1ZGlvU291cmNlLT5h
ZGRPYnNlcnZlcigqdGhpcyk7CisgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOworfQorCitib29s
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCit7CisgICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2Jz
ZXJ2ZXIoKnRoaXMpOworICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Cisg
ICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOworCisgICAgaW5pdGlhbGl6ZUNv
bnZlcnRlcigpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRlcigpCit7CisgICAgbV9tdXRlZCA9IG1fYXVk
aW9Tb3VyY2UtPm11dGVkKCk7CisgICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxl
ZCgpOworICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQoreworICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgp
OworICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKK30KKwordm9pZCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCit7CisgICAg
bV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7CisgICAgaGFuZGxlTXV0ZWRJZk5lZWRl
ZCgpOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxl
ZENoYW5nZWQoKQoreworICAgIG1fZW5hYmxlZCA9IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsK
KyAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVkKCkKK3sKKyAgICBib29sIGlzU2lsZW5jZWQg
PSBtX211dGVkIHx8ICFtX2VuYWJsZWQ7CisgICAgaWYgKGlzU2lsZW5jZWQgJiYgIW1fc2lsZW5j
ZUF1ZGlvVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdGFy
dFJlcGVhdGluZygxX3MpOworICAgIGlmICghaXNTaWxlbmNlZCAmJiBtX3NpbGVuY2VBdWRpb1Rp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjM1ODMyZjEyZWMzZTYw
YjAwZTI2YmQ0OTBmNWVjZmRjMGE0ODM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAg
LTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkxpYldl
YlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCisjaW5j
bHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSB3
ZWJydGMgeworY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKK2NsYXNzIEF1ZGlvVHJhY2tTaW5r
SW50ZXJmYWNlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwg
cHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKTsKKworICAgIH5SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UoKSB7IHN0b3AoKTsgfQorCisgICAgdm9pZCBzdG9wKCk7CisKKyAgICBi
b29sIHNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOworICAgIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU291cmNl
LmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKKworICAgIFZlY3Rvcjx3
ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9zaW5rczsKKyAgICBib29sIG1fbXV0
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OworCitwcml2YXRlOgor
ICAgIHZpcnR1YWwgdm9pZCBBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2Uq
IHNpbmspIHsgbV9zaW5rcy5hcHBlbmQoc2luayk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgUmVtb3Zl
U2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lua3MucmVt
b3ZlRmlyc3Qoc2luayk7IH0KKworICAgIGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7IHJlZigp
OyByZXR1cm4gcmVmQ291bnQoKTsgfQorICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmluYWwgeyBk
ZXJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQorICAgIFNvdXJjZVN0YXRlIHN0YXRlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4ga0xpdmU7IH0KKyAgICBib29sIHJlbW90ZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBSZWdpc3Rlck9ic2VydmVyKHdlYnJ0Yzo6T2Jz
ZXJ2ZXJJbnRlcmZhY2UqKSBmaW5hbCB7IH0KKyAgICB2b2lkIFVucmVnaXN0ZXJPYnNlcnZlcih3
ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9CisKKyAgICB2b2lkIHNvdXJjZU11
dGVkQ2hhbmdlZCgpOworICAgIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkg
eyB9OworCisgICAgdmlydHVhbCBib29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hM
aW1pdCgpIHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoaW5nQnVm
ZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpIHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwg
Ym9vbCBoYXNCdWZmZXJlZEVub3VnaERhdGEoKSB7IHJldHVybiBmYWxzZTsgfTsKKworICAgIC8v
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciBBUEkKKyAgICB2b2lkIHRyYWNrTXV0
ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyBzb3VyY2VNdXRlZENo
YW5nZWQoKTsgfQorICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlRW5hYmxlZENoYW5nZWQoKTsgfQorICAgIHZvaWQgYXVk
aW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgY29uc3QgTWVkaWFU
aW1lJiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KSB7IGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVD
b3VudCk7IH0KKyAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBm
aW5hbCB7IH0KKyAgICB2b2lkIHRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJikgZmluYWwgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVsbEF1ZGlvRGF0YSgpIHsg
fTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOworICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVNdXRlZElmTmVlZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHNlbmRTaWxlbmNlKCkgeyB9
OworCisgICAgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX2F1ZGlvU291cmNlOworCisg
ICAgVGltZXIgbV9zaWxlbmNlQXVkaW9UaW1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzUzOGNk
MDU1YjRkY2E0OTkyMWIyZDUxZDgwZjA4MmViMjI2NzM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiAgICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICog
ICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bSB0aGlzCi0gKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCIKLQotI2lmIFVTRShMSUJXRUJSVEMpCi0KLSNpbmNs
dWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKLSNpbmNsdWRl
ICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKLSNpbmNsdWRlICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5oIgotI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0
aW9uLmg+Ci0KLSNpbmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJh
Y2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQotewotICAg
IGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2Uo
V1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpKSk7Ci0gICAgc291cmNl
LT5zdGFydCgpOwotICAgIHJldHVybiBzb3VyY2U7Ci19Ci0KLVJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQotICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKLSAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQotewotICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOwotfQotCi1SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQotewotICAgIHN0b3AoKTsKLX0KLQotCi1zdGF0aWMgaW5s
aW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1EZXNjcmlwdGlvbihzaXplX3Qg
c2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKLXsKLSAgICBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1G
b3JtYXQsIHNhbXBsZVJhdGUsIGNoYW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNh
bXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRp
b0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBMaWJX
ZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0gICAgcmV0dXJuIHN0cmVhbUZv
cm1hdDsKLX0KLQotdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6Ok9uRGF0YShjb25z
dCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKLXsKLSAgICAvLyBX
ZSBtYXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBz
YW1wbGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4g
c3RhcnRpbmcgdGhlIGNhbGwuCi0gICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAg
dGhlbSwgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVs
IHRvIG5vdCBiZSBjYWxsZWQgdW50aWwgZ2V0dGluZyBzb21lIHJlYWwgZGF0YS4KLSAgICBpZiAo
c2FtcGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJPZkNoYW5uZWxzID09IDEpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEFTU0VSVChiaXRzUGVyU2FtcGxlID09IDE2KTsKLSAgICBBU1NFUlQobnVt
YmVyT2ZDaGFubmVscyA9PSAxIHx8IG51bWJlck9mQ2hhbm5lbHMgPT0gMik7Ci0gICAgQVNTRVJU
KHNhbXBsZVJhdGUgPT0gNDgwMDApOwotCi0gICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1h
a2UobV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7Ci0gICAgYXV0byBtZWRpYVRpbWUgPSBQ
QUw6OnRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7Ci0gICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1i
ZXJPZkZyYW1lczsKLQotICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlw
dGlvbiA9IHN0cmVhbURlc2NyaXB0aW9uKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpOwot
Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5
IGFsbG9jYXRpb24gYW5kIGNvcHkuCi0gICAgLy8gSW5zdGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUg
dG8gZGlyZWN0bHkgcGFzcyBhdWRpb0RhdGEgcG9pbnRlci4KLSAgICBXZWJBdWRpb0J1ZmZlckxp
c3QgYXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0
aW9uKSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpIH07Ci0gICAgYXVk
aW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMg
KiBudW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1wbGUgLyA4OwotICAgIGF1ZGlvQnVmZmVyTGlz
dC5idWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7Ci0KLSAgICBp
ZiAobXV0ZWQoKSkKLSAgICAgICAgbWVtc2V0KGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1E
YXRhLCAwLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKLSAgICBl
bHNlCi0gICAgICAgIG1lbWNweShhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgYXVk
aW9EYXRhLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKLQotICAg
IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgbnVtYmVyT2ZGcmFtZXMpOwotfQot
Ci12b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkK
LXsKLSAgICBpZiAobV9hdWRpb1RyYWNrKQotICAgICAgICBtX2F1ZGlvVHJhY2stPkFkZFNpbmso
dGhpcyk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzdG9wUHJvZHVj
aW5nRGF0YSgpCi17Ci0gICAgaWYgKG1fYXVkaW9UcmFjaykKLSAgICAgICAgbV9hdWRpb1RyYWNr
LT5SZW1vdmVTaW5rKHRoaXMpOwotfQotCi12b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZTo6c2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0lu
dGVyZmFjZT4mJiB0cmFjaykKLXsKLSAgICBBU1NFUlQoIW1fYXVkaW9UcmFjayk7Ci0gICAgQVNT
RVJUKHRyYWNrKTsKLQotICAgIG1fYXVkaW9UcmFjayA9IFdURk1vdmUodHJhY2spOwotICAgIG5v
dGlmeU11dGVkQ2hhbmdlKCFtX2F1ZGlvVHJhY2spOwotICAgIGlmIChpc1Byb2R1Y2luZ0RhdGEo
KSkKLSAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOwotfQotCi1jb25zdCBSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6
OmNhcGFiaWxpdGllcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXM6OmVtcHR5Q2FwYWJpbGl0aWVzKCk7Ci19Ci0KLWNvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXR0aW5ncygp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOwotfQotCi19Ci0KLSNlbmRp
ZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjYwMjIwODUxOTdmZjM5YTY4NTQ3
MDFlZmIyMGZiOWUwZGQ0ZTQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiAgICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAgICBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkxpYldlYlJU
Q01hY3Jvcy5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKLSNpbmNsdWRlIDxD
b3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KLSNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3Ry
ZWFtaW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi10eXBlZGVmIGNv
bnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uICpDTUZvcm1hdERlc2NyaXB0aW9u
UmVmOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDOwotCi1jbGFzcyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UgZmluYWwgOiBw
dWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSwgcHJpdmF0ZSB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5r
SW50ZXJmYWNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZT4gY3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRl
cmZhY2U+JiYsIFN0cmluZyYmKTsKLQotICAgIHZvaWQgc2V0U291cmNlVHJhY2socnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJik7Ci0KLXByaXZhdGU6Ci0g
ICAgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKLSAgICB+UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlKCk7Ci0KLSAgICAvLyB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNl
IEFQSQotICAgIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJT
YW1wbGUsIGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51
bWJlck9mRnJhbWVzKSBmaW5hbDsKLQotICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2UgQVBJCi0g
ICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICB2b2lkIHN0b3BQcm9kdWNp
bmdEYXRhKCkgIGZpbmFsOwotCi0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOwotCi0gICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzIG1fY3VycmVudFNldHRpbmdzOwotICAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+IG1fYXVkaW9UcmFjazsKLQotICAgIHVp
bnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNv
Y29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M2ZTEwYTJhMjdhM2Mw
MGE3YjM5ZmFlNjFhMDNmOWVhNWE4OTAyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJBdWRpb1N0
cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgi
CisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJXZWJBdWRpb0J1
ZmZlckxpc3QuaCIKKyNpbmNsdWRlICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIgor
I2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisKKyNp
bmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Jl
ZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+
JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQoreworICAgIGF1dG8gc291cmNl
ID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF1ZGlv
VHJhY2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpOworICAgIHNvdXJjZS0+c3RhcnQoKTsKKyAg
ICByZXR1cm4gV1RGTW92ZShzb3VyY2UpOworfQorCitSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2E+IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hOjpjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1RyYWNr
LCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EoV1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92
ZShhdWRpb1RyYWNrSWQpKSk7Cit9CisKK1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29h
OjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJh
Y2tJZCkKKyAgICA6IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvVHJh
Y2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpCit7Cit9CisKKworc3RhdGljIGlubGluZSBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRGVzY3JpcHRpb24oc2l6ZV90IHNhbXBsZVJh
dGUsIHNpemVfdCBjaGFubmVsQ291bnQpCit7CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uIHN0cmVhbUZvcm1hdDsKKyAgICBGaWxsT3V0QVNCREZvckxQQ00oc3RyZWFtRm9ybWF0LCBz
YW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXpl
LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6
OmlzRmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVk
aW9Gb3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQpOworICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7Cit9
CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E6Ok9uRGF0YShjb25zdCB2
b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90
IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKK3sKKyAgICAvLyBXZSBt
YXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1w
bGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4gc3Rh
cnRpbmcgdGhlIGNhbGwuCisgICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAgdGhl
bSwgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVsIHRv
IG5vdCBiZSBjYWxsZWQgdW50aWwgZ2V0dGluZyBzb21lIHJlYWwgZGF0YS4KKyAgICBpZiAoc2Ft
cGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJPZkNoYW5uZWxzID09IDEpCisgICAgICAgIHJldHVy
bjsKKworICAgIEFTU0VSVChiaXRzUGVyU2FtcGxlID09IDE2KTsKKyAgICBBU1NFUlQobnVtYmVy
T2ZDaGFubmVscyA9PSAxIHx8IG51bWJlck9mQ2hhbm5lbHMgPT0gMik7CisgICAgQVNTRVJUKHNh
bXBsZVJhdGUgPT0gNDgwMDApOworCisgICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1ha2Uo
bV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CisgICAgYXV0byBtZWRpYVRpbWUgPSBQQUw6
OnRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7CisgICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1iZXJP
ZkZyYW1lczsKKworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlwdGlv
biA9IHN0cmVhbURlc2NyaXB0aW9uKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpOworCisg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5IGFs
bG9jYXRpb24gYW5kIGNvcHkuCisgICAgLy8gSW5zdGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8g
ZGlyZWN0bHkgcGFzcyBhdWRpb0RhdGEgcG9pbnRlci4KKyAgICBXZWJBdWRpb0J1ZmZlckxpc3Qg
YXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9u
KSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpIH07CisgICAgYXVkaW9C
dWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMgKiBu
dW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1wbGUgLyA4OworICAgIGF1ZGlvQnVmZmVyTGlzdC5i
dWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7CisKKyAgICBpZiAo
bXV0ZWQoKSkKKyAgICAgICAgbWVtc2V0KGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRh
LCAwLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKKyAgICBlbHNl
CisgICAgICAgIG1lbWNweShhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgYXVkaW9E
YXRhLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKKworICAgIGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgbnVtYmVyT2ZGcmFtZXMpOworfQorCit9
CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDEwNDc1ZTVlY2EyZmZjOTE0MzAz
NDcxYjY1ZmIxYTg5N2RhYmE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmgK
QEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZS5oIgorCisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+
CisKK3R5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9y
bWF0RGVzY3JpcHRpb25SZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakM7CisKK2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYT4g
Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYs
IFN0cmluZyYmKTsKKworcHJpdmF0ZToKKyAgICBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBT
dHJpbmcmJik7CisKKyAgICAvLyB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlIEFQSQor
ICAgIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJTYW1wbGUs
IGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzKSBmaW5hbDsKKworICAgIHVpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDkxMDFkYzQzNzkxN2Q1MTBlNzRiZmM3NzUxYzdjNzBjN2RjMjJh
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oIgotCi0jaWYgVVNFKExJQldFQlJUQykKLQot
I2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkxpYldlYlJU
Q0F1ZGlvRm9ybWF0LmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
biBsaWJ3ZWJydGNBdWRpb0Zvcm1hdChGbG9hdDY0IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVs
Q291bnQpCi17Ci0gICAgLy8gRklYTUU6IE1pY3JvcGhvbmVzIGNhbiBoYXZlIG1vcmUgdGhhbiB0
d28gY2hhbm5lbHMuIEluIHN1Y2ggY2FzZSwgd2Ugc2hvdWxkIGRvIHRoZSBtaXggZG93biBiYXNl
ZCBvbiBBdWRpb0NoYW5uZWxMYXlvdXRUYWcuCi0gICAgc2l6ZV90IGxpYldlYlJUQ0NoYW5uZWxD
b3VudCA9IGNoYW5uZWxDb3VudCA+PSAyID8gMiA6IGNoYW5uZWxDb3VudDsKLSAgICBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBD
TShzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUsIGxpYldlYlJUQ0NoYW5uZWxDb3VudCwgTGliV2Vi
UlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVT
aXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6
OmlzQmlnRW5kaWFuLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0g
ICAgcmV0dXJuIHN0cmVhbUZvcm1hdDsKLX0KLQotUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
OjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
PiYmIGF1ZGlvU291cmNlKQotICAgIDogbV9hdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNl
KSkKLSAgICAsIG1fc2FtcGxlQ29udmVydGVyKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRl
KExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRlICogMikpCi0gICAgLCBtX3NpbGVuY2VB
dWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5j
ZSkKLXsKLSAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7Ci0gICAgaW5pdGlh
bGl6ZUNvbnZlcnRlcigpOwotfQotCi1ib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCi17Ci0g
ICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwotICAgIG1fYXVkaW9Tb3Vy
Y2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Ci0gICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIo
KnRoaXMpOwotCi0gICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwotICAgIHJldHVybiB0cnVlOwot
fQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRl
cigpCi17Ci0gICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7Ci0gICAgbV9lbmFi
bGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxlZCgpOwotICAgIGhhbmRsZU11dGVkSWZOZWVkZWQo
KTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQotewotICAg
IG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOwotICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9i
c2VydmVyKCp0aGlzKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNv
dXJjZU11dGVkQ2hhbmdlZCgpCi17Ci0gICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVk
KCk7Ci0gICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwotfQotCi12b2lkIFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxlZENoYW5nZWQoKQotewotICAgIG1fZW5hYmxlZCA9
IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsKLSAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Ci19
Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVk
KCkKLXsKLSAgICBib29sIGlzU2lsZW5jZWQgPSBtX211dGVkIHx8ICFtX2VuYWJsZWQ7Ci0gICAg
bV9zYW1wbGVDb252ZXJ0ZXItPnNldE11dGVkKGlzU2lsZW5jZWQpOwotICAgIGlmIChpc1NpbGVu
Y2VkICYmICFtX3NpbGVuY2VBdWRpb1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fc2lsZW5j
ZUF1ZGlvVGltZXIuc3RhcnRSZXBlYXRpbmcoMV9zKTsKLSAgICBpZiAoIWlzU2lsZW5jZWQgJiYg
bV9zaWxlbmNlQXVkaW9UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3NpbGVuY2VBdWRpb1Rp
bWVyLnN0b3AoKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRT
aWxlbmNlKCkKLXsKLSAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5n
VGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAg
c2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBs
ZVJhdGUoKSAvIDEwMDsKLSAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNv
dW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJl
YW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7Ci0KLSAgICAgICAgaWYgKCFidWZmZXJT
aXplKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fYXVkaW9CdWZmZXIuZ3Jvdyhi
dWZmZXJTaXplKTsKLSAgICAgICAgbWVtc2V0KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCAwLCBidWZm
ZXJTaXplKTsKLSAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQotICAgICAgICAgICAg
c2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6
c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0
cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50
KTsKLSAgICB9KTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmlzUmVh
Y2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpCi17Ci0gICAgYXV0byB3cml0dGVuQXVk
aW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1w
bGVSYXRlKCk7Ci0gICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9v
dXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBBU1NFUlQod3JpdHRl
bkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOwotICAgIHJldHVybiB3cml0dGVu
QXVkaW9EdXJhdGlvbiA+IHJlYWRBdWRpb0R1cmF0aW9uICsgMC41OwotfQotCi1ib29sIFJlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGlt
aXQoKQotewotICAgIGF1dG8gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBt
X2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotICAgIGF1dG8gcmVhZEF1ZGlv
RHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpOwotCi0gICAgQVNTRVJUKHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1
cmF0aW9uKTsKLSAgICByZXR1cm4gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPCByZWFkQXVkaW9EdXJh
dGlvbiArIDAuMTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6Omhhc0J1
ZmZlcmVkRW5nb3VoRGF0YSgpCi17Ci0gICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1f
d3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAg
YXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24g
Pj0gcmVhZEF1ZGlvRHVyYXRpb24pOwotICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+
PSByZWFkQXVkaW9EdXJhdGlvbiArIDAuMDE7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
UGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYgc3RyZWFtRGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKLXsKLSAgICBpZiAobV9p
bnB1dFN0cmVhbURlc2NyaXB0aW9uICE9IHN0cmVhbURlc2NyaXB0aW9uKSB7Ci0gICAgICAgIG1f
aW5wdXRTdHJlYW1EZXNjcmlwdGlvbiA9IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKHN0cmVh
bURlc2NyaXB0aW9uKTsKLSAgICAgICAgYXV0byBzdGF0dXMgID0gbV9zYW1wbGVDb252ZXJ0ZXIt
PnNldElucHV0Rm9ybWF0KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbik7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsKLQotICAgICAgICBtX291dHB1dFN0cmVhbURlc2Ny
aXB0aW9uID0gbGlid2VicnRjQXVkaW9Gb3JtYXQoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBs
ZVJhdGUsIHN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSk7Ci0gICAgICAgIHN0
YXR1cyA9IG1fc2FtcGxlQ29udmVydGVyLT5zZXRPdXRwdXRGb3JtYXQobV9vdXRwdXRTdHJlYW1E
ZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKTsKLSAgICAgICAgQVNTRVJUKCFzdGF0dXMp
OwotICAgIH0KLQotICAgIC8vIExldCdzIHNraXAgcHVzaGluZyBzYW1wbGVzIGlmIHdlIGFyZSB0
b28gc2xvdyBwdWxsaW5nIHRoZW0uCi0gICAgaWYgKG1fc2tpcHBpbmdBdWRpb0RhdGEpIHsKLSAg
ICAgICAgaWYgKCFpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gZmFsc2U7Ci0gICAg
fSBlbHNlIGlmIChpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSkgewotICAg
ICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIC8vIElmIHdlIGNoYW5nZSB0aGUgYXVkaW8gdHJhY2sgb3IgaXRzIHNhbXBsZSByYXRl
IGNoYW5nZXMsIHRoZSB0aW1lc3RhbXAgYmFzZWQgb24gbV93cml0ZUNvdW50IG1heSBiZSB3cm9u
Zy4KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVwZGF0ZSBtX3dyaXRlQ291bnQgdG8gYmUgdmFs
aWQgYWNjb3JkaW5nIHRoZSBuZXcgc2FtcGxlUmF0ZS4KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+
cHVzaFNhbXBsZXMoTWVkaWFUaW1lKG1fd3JpdGVDb3VudCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkpKSwgYXVkaW9EYXRhLCBzYW1w
bGVDb3VudCk7Ci0gICAgbV93cml0ZUNvdW50ICs9IHNhbXBsZUNvdW50OwotCi0gICAgaWYgKCFo
YXNCdWZmZXJlZEVuZ291aERhdGEoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTGliV2ViUlRD
UHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPnB1bGxBdWRpb0RhdGEoKTsK
LSAgICB9KTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnB1bGxBdWRp
b0RhdGEoKQotewotICAgIC8vIGxpYndlYnJ0YyBleHBlY3RzIDEwIG1zIGNodW5rcy4KLSAgICBz
aXplX3QgY2h1bmtTYW1wbGVDb3VudCA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpIC8gMTAwOwotICAgIHNpemVfdCBidWZmZXJTaXplID0gY2h1bmtTYW1wbGVDb3VudCAq
IExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAqIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOwotICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZm
ZXJTaXplKTsKLQotICAgIEF1ZGlvQnVmZmVyTGlzdCBidWZmZXJMaXN0OwotICAgIGJ1ZmZlckxp
c3QubU51bWJlckJ1ZmZlcnMgPSAxOwotICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51bWJl
ckNoYW5uZWxzID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7
Ci0gICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gYnVmZmVyU2l6ZTsK
LSAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhID0gbV9hdWRpb0J1ZmZlci5kYXRhKCk7
Ci0KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVsbEF2YWxhaWJsZVNhbXBsZXNBc0NodW5rcyhi
dWZmZXJMaXN0LCBjaHVua1NhbXBsZUNvdW50LCBtX3JlYWRDb3VudCwgW3RoaXMsIGNodW5rU2Ft
cGxlQ291bnRdIHsKLSAgICAgICAgbV9yZWFkQ291bnQgKz0gY2h1bmtTYW1wbGVDb3VudDsKLSAg
ICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQotICAgICAgICAgICAgc2luay0+T25EYXRh
KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwg
bV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsKLSAgICB9KTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKExJQldFQlJUQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGViYzgwNGU0OTU4NTMwYmU2NjAyZmZkNjFhMmI1M2M3ZWI2ZTU3NC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
cmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKExJQldFQlJUQykK
LQotI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgotI2luY2x1ZGUgIkxpYldlYlJU
Q01hY3Jvcy5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCi0jaW5jbHVk
ZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+
Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSB3ZWJy
dGMgewotY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKLWNsYXNzIEF1ZGlvVHJhY2tTaW5rSW50
ZXJmYWNlOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFj
ZSwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgewotcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkpOyB9
Ci0gICAgflJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSgpIHsgc3RvcCgpOyB9Ci0KLSAgICB2
b2lkIHN0b3AoKTsKLQotICAgIGJvb2wgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZT4mJik7Ci0gICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXVkaW9Tb3VyY2UuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYm
KTsKLQotICAgIHZpcnR1YWwgdm9pZCBBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRl
cmZhY2UqIHNpbmspIHsgbV9zaW5rcy5hcHBlbmQoc2luayk7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
UmVtb3ZlU2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lu
a3MucmVtb3ZlRmlyc3Qoc2luayk7IH0KLQotICAgIGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7
IHJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQotICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmlu
YWwgeyBkZXJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQotICAgIFNvdXJjZVN0YXRlIHN0YXRl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4ga0xpdmU7IH0KLSAgICBib29sIHJlbW90ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBSZWdpc3Rlck9ic2VydmVyKHdlYnJ0
Yzo6T2JzZXJ2ZXJJbnRlcmZhY2UqKSBmaW5hbCB7IH0KLSAgICB2b2lkIFVucmVnaXN0ZXJPYnNl
cnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9Ci0KLSAgICB2b2lkIHNv
dXJjZU11dGVkQ2hhbmdlZCgpOwotICAgIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKTsKLSAg
ICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0
Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwot
Ci0gICAgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKTsKLSAgICBi
b29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCk7Ci0gICAgYm9vbCBoYXNC
dWZmZXJlZEVuZ291aERhdGEoKTsKLQotICAgIC8vIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpP
YnNlcnZlciBBUEkKLSAgICB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJikgZmluYWwgeyBzb3VyY2VNdXRlZENoYW5nZWQoKTsgfQotICAgIHZvaWQgdHJhY2tF
bmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlRW5h
YmxlZENoYW5nZWQoKTsgfQotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlJiwgY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRm
b3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KSBmaW5hbCB7IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZSht
ZWRpYVRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7IH0KLSAgICB2b2lkIHRy
YWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KLSAgICB2b2lkIHRy
YWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9Ci0K
LSAgICB2b2lkIHB1bGxBdWRpb0RhdGEoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnZlcnRl
cigpOwotICAgIHZvaWQgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwotICAgIHZvaWQgc2VuZFNpbGVu
Y2UoKTsKLQotICAgIFZlY3Rvcjx3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9z
aW5rczsKLSAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7Ci0g
ICAgUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9zYW1wbGVDb252ZXJ0ZXI7Ci0gICAgQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbjsKLSAgICBDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbjsKLQotICAgIFZl
Y3Rvcjx1aW50OF90PiBtX2F1ZGlvQnVmZmVyOwotICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsg
MCB9OwotICAgIHVpbnQ2NF90IG1fd3JpdGVDb3VudCB7IDAgfTsKLSAgICBib29sIG1fbXV0ZWQg
eyBmYWxzZSB9OwotICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9za2lw
cGluZ0F1ZGlvRGF0YSB7IGZhbHNlIH07Ci0gICAgVGltZXIgbV9zaWxlbmNlQXVkaW9UaW1lcjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41OWE3OWYwYmU0YmVmZGJlMjY0ODE0ZWY1NTMxNGUwYmQ0MDliYWI2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApAQCAtMCwwICsxLDE2NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQu
aCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBpbmxpbmUgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIGxpYndlYnJ0Y0F1
ZGlvRm9ybWF0KEZsb2F0NjQgc2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKK3sKKyAg
ICAvLyBGSVhNRTogTWljcm9waG9uZXMgY2FuIGhhdmUgbW9yZSB0aGFuIHR3byBjaGFubmVscy4g
SW4gc3VjaCBjYXNlLCB3ZSBzaG91bGQgZG8gdGhlIG1peCBkb3duIGJhc2VkIG9uIEF1ZGlvQ2hh
bm5lbExheW91dFRhZy4KKyAgICBzaXplX3QgbGliV2ViUlRDQ2hhbm5lbENvdW50ID0gY2hhbm5l
bENvdW50ID49IDIgPyAyIDogY2hhbm5lbENvdW50OworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgRmlsbE91dEFTQkRGb3JMUENNKHN0cmVhbUZvcm1h
dCwgc2FtcGxlUmF0ZSwgbGliV2ViUlRDQ2hhbm5lbENvdW50LCBMaWJXZWJSVENBdWRpb0Zvcm1h
dDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJU
Q0F1ZGlvRm9ybWF0Ojppc0Zsb2F0LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNCaWdFbmRpYW4s
IExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc05vbkludGVybGVhdmVkKTsKKyAgICByZXR1cm4gc3Ry
ZWFtRm9ybWF0OworfQorCitSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYm
IGF1ZGlvU291cmNlKQorICAgIDogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFdURk1vdmUo
YXVkaW9Tb3VyY2UpKQorICAgICwgbV9zYW1wbGVDb252ZXJ0ZXIoQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpjcmVhdGUoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUgKiAyKSkKK3sKK30K
KworUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4gUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlOjpjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNl
KQoreworICAgIHJldHVybiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6Y3JlYXRl
KFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYTo6aGFuZGxlTXV0ZWRJZk5lZWRlZCgpCit7CisgICAgYm9vbCBpc1NpbGVuY2Vk
ID0gbV9tdXRlZCB8fCAhbV9lbmFibGVkOworICAgIG1fc2FtcGxlQ29udmVydGVyLT5zZXRNdXRl
ZChpc1NpbGVuY2VkKTsKKworICAgIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpo
YW5kbGVNdXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlQ29jb2E6OnNlbmRTaWxlbmNlKCkKK3sKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9u
V2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIHsKKyAgICAgICAgc2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURl
c2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUg
PSBjaHVua1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXpl
ICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7CisKKyAgICAg
ICAgaWYgKCFidWZmZXJTaXplKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fYXVk
aW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKKyAgICAgICAgbWVtc2V0KG1fYXVkaW9CdWZmZXIu
ZGF0YSgpLCAwLCBidWZmZXJTaXplKTsKKyAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3Npbmtz
KQorICAgICAgICAgICAgc2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJS
VENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1w
bGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBj
aHVua1NhbXBsZUNvdW50KTsKKyAgICB9KTsKK30KKworYm9vbCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2VDb2NvYTo6aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhSGlnaExpbWl0KCkKK3sK
KyAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9pbnB1dFN0
cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKyAgICBhdXRvIHJlYWRBdWRpb0R1cmF0aW9u
ID0gbV9yZWFkQ291bnQgLyBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsK
KworICAgIEFTU0VSVCh3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbik7
CisgICAgcmV0dXJuIHdyaXR0ZW5BdWRpb0R1cmF0aW9uID4gcmVhZEF1ZGlvRHVyYXRpb24gKyAw
LjU7Cit9CisKK2Jvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmlzUmVhY2hp
bmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCkKK3sKKyAgICBhdXRvIHdyaXR0ZW5BdWRpb0R1
cmF0aW9uID0gbV93cml0ZUNvdW50IC8gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJh
dGUoKTsKKyAgICBhdXRvIHJlYWRBdWRpb0R1cmF0aW9uID0gbV9yZWFkQ291bnQgLyBtX291dHB1
dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKTsKKworICAgIEFTU0VSVCh3cml0dGVuQXVk
aW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbik7CisgICAgcmV0dXJuIHdyaXR0ZW5BdWRp
b0R1cmF0aW9uIDwgcmVhZEF1ZGlvRHVyYXRpb24gKyAwLjE7Cit9CisKK2Jvb2wgUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6Omhhc0J1ZmZlcmVkRW5vdWdoRGF0YSgpCit7CisgICAg
YXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1E
ZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisgICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1f
cmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisKKyAg
ICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOworICAg
IHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbiArIDAuMDE7
Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmF1ZGlvU2FtcGxl
c0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVk
aW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBzdHJlYW1EZXNjcmlwdGlvbiwg
c2l6ZV90IHNhbXBsZUNvdW50KQoreworICAgIGlmIChtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24g
IT0gc3RyZWFtRGVzY3JpcHRpb24pIHsKKyAgICAgICAgbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9u
ID0gdG9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oc3RyZWFtRGVzY3JpcHRpb24pOworICAgICAg
ICBhdXRvIHN0YXR1cyAgPSBtX3NhbXBsZUNvbnZlcnRlci0+c2V0SW5wdXRGb3JtYXQobV9pbnB1
dFN0cmVhbURlc2NyaXB0aW9uKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzdGF0dXMsICFzdGF0
dXMpOworCisgICAgICAgIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gPSBsaWJ3ZWJydGNBdWRp
b0Zvcm1hdChMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlUmF0ZSwgc3RyZWFtRGVzY3JpcHRp
b24ubnVtYmVyT2ZDaGFubmVscygpKTsKKyAgICAgICAgc3RhdHVzID0gbV9zYW1wbGVDb252ZXJ0
ZXItPnNldE91dHB1dEZvcm1hdChtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnN0cmVhbURlc2Ny
aXB0aW9uKCkpOworICAgICAgICBBU1NFUlQoIXN0YXR1cyk7CisgICAgfQorCisgICAgLy8gTGV0
J3Mgc2tpcCBwdXNoaW5nIHNhbXBsZXMgaWYgd2UgYXJlIHRvbyBzbG93IHB1bGxpbmcgdGhlbS4K
KyAgICBpZiAobV9za2lwcGluZ0F1ZGlvRGF0YSkgeworICAgICAgICBpZiAoIWlzUmVhY2hpbmdC
dWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fc2tpcHBpbmdBdWRpb0RhdGEgPSBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKGlzUmVhY2hpbmdC
dWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpKSB7CisgICAgICAgIG1fc2tpcHBpbmdBdWRpb0Rh
dGEgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSWYgd2UgY2hhbmdl
IHRoZSBhdWRpbyB0cmFjayBvciBpdHMgc2FtcGxlIHJhdGUgY2hhbmdlcywgdGhlIHRpbWVzdGFt
cCBiYXNlZCBvbiBtX3dyaXRlQ291bnQgbWF5IGJlIHdyb25nLgorICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgdXBkYXRlIG1fd3JpdGVDb3VudCB0byBiZSB2YWxpZCBhY2NvcmRpbmcgdGhlIG5ldyBz
YW1wbGVSYXRlLgorICAgIG1fc2FtcGxlQ29udmVydGVyLT5wdXNoU2FtcGxlcyhNZWRpYVRpbWUo
bV93cml0ZUNvdW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9pbnB1dFN0cmVhbURlc2NyaXB0
aW9uLnNhbXBsZVJhdGUoKSkpLCBhdWRpb0RhdGEsIHNhbXBsZUNvdW50KTsKKyAgICBtX3dyaXRl
Q291bnQgKz0gc2FtcGxlQ291bnQ7CisKKyAgICBpZiAoIWhhc0J1ZmZlcmVkRW5vdWdoRGF0YSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRD
U2lnbmFsaW5nVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+cHVsbEF1ZGlvRGF0YSgpOworICAgIH0pOworfQorCit2b2lkIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpwdWxsQXVkaW9EYXRhKCkKK3sKKyAgICAv
LyBsaWJ3ZWJydGMgZXhwZWN0cyAxMCBtcyBjaHVua3MuCisgICAgc2l6ZV90IGNodW5rU2FtcGxl
Q291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKKyAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IGNodW5rU2FtcGxlQ291bnQgKiBMaWJXZWJSVENBdWRpb0Zv
cm1hdDo6c2FtcGxlQnl0ZVNpemUgKiBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9m
Q2hhbm5lbHMoKTsKKyAgICBtX2F1ZGlvQnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7CisKKyAgICBB
dWRpb0J1ZmZlckxpc3QgYnVmZmVyTGlzdDsKKyAgICBidWZmZXJMaXN0Lm1OdW1iZXJCdWZmZXJz
ID0gMTsKKyAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1OdW1iZXJDaGFubmVscyA9IG1fb3V0
cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOworICAgIGJ1ZmZlckxpc3Qu
bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IGJ1ZmZlclNpemU7CisgICAgYnVmZmVyTGlzdC5t
QnVmZmVyc1swXS5tRGF0YSA9IG1fYXVkaW9CdWZmZXIuZGF0YSgpOworCisgICAgbV9zYW1wbGVD
b252ZXJ0ZXItPnB1bGxBdmFsYWlibGVTYW1wbGVzQXNDaHVua3MoYnVmZmVyTGlzdCwgY2h1bmtT
YW1wbGVDb3VudCwgbV9yZWFkQ291bnQsIFt0aGlzLCBjaHVua1NhbXBsZUNvdW50XSB7CisgICAg
ICAgIG1fcmVhZENvdW50ICs9IGNodW5rU2FtcGxlQ291bnQ7CisgICAgICAgIGZvciAoYXV0byBz
aW5rIDogbV9zaW5rcykKKyAgICAgICAgICAgIHNpbmstPk9uRGF0YShtX2F1ZGlvQnVmZmVyLmRh
dGEoKSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24uc2FtcGxlUmF0ZSgpLCBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9m
Q2hhbm5lbHMoKSwgY2h1bmtTYW1wbGVDb3VudCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2ZmE1YWQwMDJh
MDhkZDMzMTkwNDczYmVlMjJlZGY2MzIyMjQ3ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlQ29jb2EuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJl
ZCB0byBiZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCIK
KyNpbmNsdWRlICJSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCIKKworbmFtZXNwYWNlIHdl
YnJ0YyB7CitjbGFzcyBBdWRpb1RyYWNrSW50ZXJmYWNlOworY2xhc3MgQXVkaW9UcmFja1NpbmtJ
bnRlcmZhY2U7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZUNvY29hPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291
cmNlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNv
Y29hKFdURk1vdmUoYXVkaW9Tb3VyY2UpKSk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU+JiYpOworCisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1l
JiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9u
Jiwgc2l6ZV90KSBmaW5hbDsKKworICAgIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRh
SGlnaExpbWl0KCkgZmluYWw7CisgICAgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFM
b3dMaW1pdCgpIGZpbmFsOworICAgIGJvb2wgaGFzQnVmZmVyZWRFbm91Z2hEYXRhKCkgZmluYWw7
CisKKyAgICB2b2lkIHB1bGxBdWRpb0RhdGEoKSBmaW5hbDsKKworICAgIHZvaWQgaGFuZGxlTXV0
ZWRJZk5lZWRlZCgpIGZpbmFsOworICAgIHZvaWQgc2VuZFNpbGVuY2UoKSBmaW5hbDsKKworICAg
IFJlZjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fc2FtcGxlQ29udmVydGVyOworICAgIENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb247CisgICAgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb247CisKKyAgICBWZWN0
b3I8dWludDhfdD4gbV9hdWRpb0J1ZmZlcjsKKyAgICB1aW50NjRfdCBtX3JlYWRDb3VudCB7IDAg
fTsKKyAgICB1aW50NjRfdCBtX3dyaXRlQ291bnQgeyAwIH07CisgICAgYm9vbCBtX3NraXBwaW5n
QXVkaW9EYXRhIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFVTRShMSUJXRUJSVEMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323715</attachid>
            <date>2017-10-13 11:48:47 -0700</date>
            <delta_ts>2017-10-13 13:47:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177928-20171013204846.patch</filename>
            <type>text/plain</type>
            <size>70640</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkzODIyMzA3YzA4MTkz
ODNhYjVjNDliNDQxNTFlNWFkODFkNWFmMy4uODg2OTExNjJiZWQ0YTcyYjE3NTg2NzY1ODI3Mzll
N2JmOTNjZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTEwLTEyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlcyBhbmQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlcyBw
b3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciB0aGUgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGFuZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgY2xhc3NlcywKKyAgICAgICAgbW92ZSB0aGUgbWFjIHNwZWNp
ZmljIGNvZGUgdG8gYSBkaWZmZXJlbnQgY2xhc3MuIFRoaXMgd2F5IHdlIGNhbiB1c2UgdGhlbSBm
cm9tCisgICAgICAgIG90aGVyIHBvcnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgd2UgYXJl
IG5vdCBhZGRpbmcgbmV3IGZ1bmN0aW9uYWxpdHkganVzdCByZWZhY3RvcmluZy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmguIEp1c3QgdGhlIHBvcnQg
YWdub3N0aWMgcGFydHMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaC4gRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAuIERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmguIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6IEFkZGVkLCBpdCBhZGRzIENv
Y29hIGNvZGUgcGFydHMgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhpcyBm
dW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUgdG8g
YXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBBZGRl
ZCBDb2NvYSBjb2RlIGZyb20gb3JpZ2luYWwgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6
IEFkZGVkIENvY29hIGNvZGUgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhp
cyBmdW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUg
dG8gYXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBB
ZGRlZCBDb2NvYSBjb2RlIGZyb20gdGhlIG9yaWdpbmFsIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaC4KKwogMjAxNy0x
MC0wNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbV2luQ2Fpcm9dIEZpeCBidWlsZCBhZnRlciBCdWcgMTY3OTU2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDdmMjJlNTE2Zjk3YTI5N2RkNTQ4ZTc1Y2VlMDg3N2ExYzU2MjVmMWEuLmE4NDQxYmY0
Y2IyYmZhNTNhNWMyMjY4MDc3ZjE2NzcxMjAzNWMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yNTQ4LDkgKzI1NDgsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAKICAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcAogICAg
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3Bw
CisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCiAgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKICAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCisgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAogCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmY4Njg4YmMzZDlkNmU0MWU4MmRlNjY2OGIyYjlmYzViYjA4ZDM3Yy4uMjk5Yjc2NmM2
MTZjMGQzZTFiYjhlYWRlYTY3NjAxYzdiYjA0NDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5Niw4ICsxNjk2LDEyIEBA
CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEw
NDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTEw
M0FBQjFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovOyB9Owog
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
ODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggKi87IH07
CisJCTQxMTAzQUFCMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovOyB9OworCQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE4MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovOyB9OwogCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMDMg
LyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi87IH07CiAJCTQxMTAzQUFFMUUzOTc5MTAwMDc2OUYw
MyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQUExRTM5NzkwQTAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi87IH07CisJCTQxMTAzQUFEMUUzOTc5MTAw
MDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTkxRTM5NzkwQTAwNzY5
RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggKi87IH07CisJCTQxMTAz
QUFFMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
QTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3Bw
ICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2ViQ29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOUIx
QTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTQxMjMwOTEz
MTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGODIxNjI5OTAyOUY0RkI1MDEw
MDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTI3RDUzNzBGOEFB
QjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0
YXRlLmNwcCAqLzsgfTsKQEAgLTk0NzIsOCArOTQ3NiwxMiBAQAogCQk0MTBCN0U3MTEwNDVGQUIw
MDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMTAzQUE4MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE4MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBOTFFMzk3OTBBMDA3
NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIz
MjgwMEI5M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMyODAwQjk1NjcyIC8qIFJlYWRhYmxl
U3RyZWFtQllPQlJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtQllPQlJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0OTcs
NiArMTY1MDUsOCBAQAogCQkJCTA3RkZERTY2MTgxQUVENDIwMDcyRDQwOSAvKiBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZS5jcHAgKi8sCiAJCQkJMDdGRkRFNjcxODFBRUQ0MjAwNzJENDA5IC8qIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggKi8sCiAJCQkJNUVCQjg5MzgxQzc3QkRBNDAwQzY1RDQx
IC8qIFBlZXJNZWRpYURlc2NyaXB0aW9uLmggKi8sCisJCQkJNDExMDNBQUExRTM5NzkwQTAwNzY5
RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi8sCisJCQkJNDExMDNBQTkx
RTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oICovLAogCQkJ
CTRBNEY2NTZCMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLywK
IAkJCQk0QTRGNjU2QzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oICov
LAogCQkJCTRBNEY2NTZEMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzLmggKi8sCkBAIC0xNjUwNiw2ICsxNjUxNiw4IEBACiAJCQkJNEE0RjY1NkYxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovLAogCQkJCTJF
QzQxREUyMUMwNDEwQTMwMEQyOTRGRSAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuY3BwICovLAogCQkJCTA3QzFDMEU0MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLywKKwkJCQk0MTEwM0FBNzFFMzk3
OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCAqLywKKwkJCQk0
MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgg
Ki8sCiAJCQkJMzEzNTkxMEMxRTdERENCNjAwRjMwNjMwIC8qIFJUQ0J1bmRsZVBvbGljeS5oICov
LAogCQkJCTA3MjIxQkEyMTdDRjBBRDQwMDg0OEU1MSAvKiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCAqLywKIAkJCQkwNzIyMUJBMzE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50LmggKi8sCkBAIC0xNjU1NCwxNCArMTY1NjYsMTQgQEAKIAkJCQkwNzQ0RUNFQzFF
MEM0QUU1MDAwRDA5NDQgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJ
MDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgg
Ki8sCiAJCQkJMDdFRTc2RUUxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tICovLAotCQkJCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwICovLAotCQkJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAv
KiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCAqLywKKwkJCQk0MTEwM0FBQTFFMzk3OTBB
MDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwICovLAorCQkJ
CTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5oICovLAogCQkJCTVDREQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2UuY3BwICovLAogCQkJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLywKIAkJCQk0QTBGRkFBMzFBQUY1RUY2MDA2
MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgKi8sCiAJCQkJNEEwRkZB
QTQxQUFGNUVGNjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCAqLywK
LQkJCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcCAqLywKLQkJCQk0MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggKi8sCisJCQkJNDExMDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCAqLywKKwkJCQk0MTEwM0FBODFFMzk3
OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCAqLywKIAkJ
CQk1Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmNwcCAqLywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8sCkBAIC0yOTYxNCw2ICsyOTYyNiw3IEBACiAJ
CQkJNDEyOUM5QUIxRjU5QzU3MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAzQzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFs
eXNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExMDNBQUQxRTM5NzkxMDAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDExMDNBQUQx
RTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8q
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRB
MEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NjIxLDYgKzI5NjM0LDcgQEAKIAkJCQk0QTRGNjU3NDFBQTk5N0Yx
MDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBQzFFMzk3OTEwMDA3
NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQjk1MjI0MUY1OEE1OEYwMDkzMURDMiAvKiBS
ZWNvcmRpbmdTd2l6emxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2OEU4MEMyMjZF
MzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1ODE3NUQ0MTRD
MDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1ODIsNiAr
MzM1OTYsNyBAQAogCQkJCTQxMjlDOThBMUY1ODdGRUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVh
bVNpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwM0IxMkIwMjY3NjAwQzFBMzU5IC8q
IFJlYWx0aW1lQW5hbHlzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMDNBQUUxRTM5Nzkx
MDAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTEwM0FBRTFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzM0UxRTQzMjREQzAwNjIx
RTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0QTRGNjU3MDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0QTBGRkFBMTFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNTg5LDYgKzMzNjA0LDcgQEAK
IAkJCQk0QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQzQxREU0MUMwNDEwQTMwMEQyOTRGRSAvKiBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDExMDNBQUIxRTM5NzkxMDAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEwM0FBQjFFMzk3OTEwMDA3NjlGMTQgLyog
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDgzM0QxRTQzMjREOTAwNjIxRTkyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFu
Z2xlU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBQjQxODExM0UzNTZFODAwRDhBQUYz
IC8qIFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MWFiM2Q3NjgzYjNiOGZmYzUwMmJmMzQ2NTI0Nzk3MzVj
MjFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRp
b0Zvcm1hdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKKyAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQoreworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOworfQorCitSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1f
YXVkaW9UcmFjaykKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOworfQorCit2
b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQorewor
ICAgIGlmIChtX2F1ZGlvVHJhY2spCisgICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0
aGlzKTsKK30KKwordm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRy
YWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgdHJh
Y2spCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOworICAgIEFTU0VSVCh0cmFjayk7CisK
KyAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAgICBub3RpZnlNdXRlZENoYW5n
ZSghbV9hdWRpb1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCisgICAgICAgIG1f
YXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMo
KSBjb25zdAoreworICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpl
bXB0eUNhcGFiaWxpdGllcygpOworfQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAoreworICAg
IHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMzNjNi
NjJkYWFiNDg2NjM4MDA5YWRjOTFlM2NjOTIzYjAzMjUwNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldF
QlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlLCBwcml2YXRlIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYp
OworCisgICAgdm9pZCBzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmKTsKKworcHJvdGVjdGVkOgorICAgIFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJm
YWNlPiYmLCBTdHJpbmcmJik7CisgICAgflJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpOwor
Citwcml2YXRlOgorICAgIC8vIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgQVBJCisg
ICAgdmlydHVhbCB2b2lkIE9uRGF0YShjb25zdCB2b2lkKiAvKiBhdWRpb0RhdGEgKi8sIGludCAv
KiBiaXRzUGVyU2FtcGxlICovLCBpbnQgLyogc2FtcGxlUmF0ZSAqLywgc2l6ZV90IC8qIG51bWJl
ck9mQ2hhbm5lbHMgKi8sIHNpemVfdCAvKiBudW1iZXJPZkZyYW1lcyAqLykgeyB9OworCisgICAg
Ly8gUmVhbHRpbWVNZWRpYVNvdXJjZSBBUEkKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgp
IGZpbmFsOworICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSAgZmluYWw7CisKKyAgICBjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBm
aW5hbDsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkg
Y29uc3QgZmluYWw7CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50
U2V0dGluZ3M7CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVy
ZmFjZT4gbV9hdWRpb1RyYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZmM2E1YmViNmY1Y2NjMDEzNjk0ZTA5MTQwMmYyN2YyODIwZjdmYjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCisKKyNpZiBVU0UoTElCV0VCUlRD
KQorCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJS
VENQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkKKyAgICA6IG1fYXVkaW9Tb3VyY2UoV1RGTW92ZShh
dWRpb1NvdXJjZSkpCisgICAgLCBtX3NpbGVuY2VBdWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5jZSkKK3sKKyAgICBtX2F1ZGlvU291cmNlLT5h
ZGRPYnNlcnZlcigqdGhpcyk7CisgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOworfQorCitib29s
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCit7CisgICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2Jz
ZXJ2ZXIoKnRoaXMpOworICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Cisg
ICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOworCisgICAgaW5pdGlhbGl6ZUNv
bnZlcnRlcigpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRlcigpCit7CisgICAgbV9tdXRlZCA9IG1fYXVk
aW9Tb3VyY2UtPm11dGVkKCk7CisgICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxl
ZCgpOworICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQoreworICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgp
OworICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKK30KKwordm9pZCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCit7CisgICAg
bV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7CisgICAgaGFuZGxlTXV0ZWRJZk5lZWRl
ZCgpOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxl
ZENoYW5nZWQoKQoreworICAgIG1fZW5hYmxlZCA9IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsK
KyAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVkKCkKK3sKKyAgICBib29sIGlzU2lsZW5jZWQg
PSBtX211dGVkIHx8ICFtX2VuYWJsZWQ7CisgICAgaWYgKGlzU2lsZW5jZWQgJiYgIW1fc2lsZW5j
ZUF1ZGlvVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdGFy
dFJlcGVhdGluZygxX3MpOworICAgIGlmICghaXNTaWxlbmNlZCAmJiBtX3NpbGVuY2VBdWRpb1Rp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjM1ODMyZjEyZWMzZTYw
YjAwZTI2YmQ0OTBmNWVjZmRjMGE0ODM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAg
LTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkxpYldl
YlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCisjaW5j
bHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSB3
ZWJydGMgeworY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKK2NsYXNzIEF1ZGlvVHJhY2tTaW5r
SW50ZXJmYWNlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwg
cHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKTsKKworICAgIH5SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UoKSB7IHN0b3AoKTsgfQorCisgICAgdm9pZCBzdG9wKCk7CisKKyAgICBi
b29sIHNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOworICAgIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU291cmNl
LmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKKworICAgIFZlY3Rvcjx3
ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9zaW5rczsKKyAgICBib29sIG1fbXV0
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OworCitwcml2YXRlOgor
ICAgIHZpcnR1YWwgdm9pZCBBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2Uq
IHNpbmspIHsgbV9zaW5rcy5hcHBlbmQoc2luayk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgUmVtb3Zl
U2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lua3MucmVt
b3ZlRmlyc3Qoc2luayk7IH0KKworICAgIGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7IHJlZigp
OyByZXR1cm4gcmVmQ291bnQoKTsgfQorICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmluYWwgeyBk
ZXJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQorICAgIFNvdXJjZVN0YXRlIHN0YXRlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4ga0xpdmU7IH0KKyAgICBib29sIHJlbW90ZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBSZWdpc3Rlck9ic2VydmVyKHdlYnJ0Yzo6T2Jz
ZXJ2ZXJJbnRlcmZhY2UqKSBmaW5hbCB7IH0KKyAgICB2b2lkIFVucmVnaXN0ZXJPYnNlcnZlcih3
ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9CisKKyAgICB2b2lkIHNvdXJjZU11
dGVkQ2hhbmdlZCgpOworICAgIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkg
eyB9OworCisgICAgdmlydHVhbCBib29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hM
aW1pdCgpIHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoaW5nQnVm
ZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpIHsgcmV0dXJuIGZhbHNlOyB9OworICAgIHZpcnR1YWwg
Ym9vbCBoYXNCdWZmZXJlZEVub3VnaERhdGEoKSB7IHJldHVybiBmYWxzZTsgfTsKKworICAgIC8v
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciBBUEkKKyAgICB2b2lkIHRyYWNrTXV0
ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyBzb3VyY2VNdXRlZENo
YW5nZWQoKTsgfQorICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlRW5hYmxlZENoYW5nZWQoKTsgfQorICAgIHZvaWQgYXVk
aW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgY29uc3QgTWVkaWFU
aW1lJiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KSB7IGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVD
b3VudCk7IH0KKyAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBm
aW5hbCB7IH0KKyAgICB2b2lkIHRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJikgZmluYWwgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVsbEF1ZGlvRGF0YSgpIHsg
fTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOworICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVNdXRlZElmTmVlZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHNlbmRTaWxlbmNlKCkgeyB9
OworCisgICAgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX2F1ZGlvU291cmNlOworCisg
ICAgVGltZXIgbV9zaWxlbmNlQXVkaW9UaW1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzUzOGNk
MDU1YjRkY2E0OTkyMWIyZDUxZDgwZjA4MmViMjI2NzM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiAgICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICog
ICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bSB0aGlzCi0gKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCIKLQotI2lmIFVTRShMSUJXRUJSVEMpCi0KLSNpbmNs
dWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKLSNpbmNsdWRl
ICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKLSNpbmNsdWRlICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5oIgotI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0
aW9uLmg+Ci0KLSNpbmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJh
Y2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQotewotICAg
IGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2Uo
V1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpKSk7Ci0gICAgc291cmNl
LT5zdGFydCgpOwotICAgIHJldHVybiBzb3VyY2U7Ci19Ci0KLVJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQotICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKLSAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQotewotICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOwotfQotCi1SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQotewotICAgIHN0b3AoKTsKLX0KLQotCi1zdGF0aWMgaW5s
aW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1EZXNjcmlwdGlvbihzaXplX3Qg
c2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKLXsKLSAgICBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1G
b3JtYXQsIHNhbXBsZVJhdGUsIGNoYW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNh
bXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRp
b0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBMaWJX
ZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0gICAgcmV0dXJuIHN0cmVhbUZv
cm1hdDsKLX0KLQotdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6Ok9uRGF0YShjb25z
dCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKLXsKLSAgICAvLyBX
ZSBtYXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBz
YW1wbGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4g
c3RhcnRpbmcgdGhlIGNhbGwuCi0gICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAg
dGhlbSwgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVs
IHRvIG5vdCBiZSBjYWxsZWQgdW50aWwgZ2V0dGluZyBzb21lIHJlYWwgZGF0YS4KLSAgICBpZiAo
c2FtcGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJPZkNoYW5uZWxzID09IDEpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEFTU0VSVChiaXRzUGVyU2FtcGxlID09IDE2KTsKLSAgICBBU1NFUlQobnVt
YmVyT2ZDaGFubmVscyA9PSAxIHx8IG51bWJlck9mQ2hhbm5lbHMgPT0gMik7Ci0gICAgQVNTRVJU
KHNhbXBsZVJhdGUgPT0gNDgwMDApOwotCi0gICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1h
a2UobV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7Ci0gICAgYXV0byBtZWRpYVRpbWUgPSBQ
QUw6OnRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7Ci0gICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1i
ZXJPZkZyYW1lczsKLQotICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlw
dGlvbiA9IHN0cmVhbURlc2NyaXB0aW9uKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpOwot
Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5
IGFsbG9jYXRpb24gYW5kIGNvcHkuCi0gICAgLy8gSW5zdGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUg
dG8gZGlyZWN0bHkgcGFzcyBhdWRpb0RhdGEgcG9pbnRlci4KLSAgICBXZWJBdWRpb0J1ZmZlckxp
c3QgYXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0
aW9uKSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpIH07Ci0gICAgYXVk
aW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMg
KiBudW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1wbGUgLyA4OwotICAgIGF1ZGlvQnVmZmVyTGlz
dC5idWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7Ci0KLSAgICBp
ZiAobXV0ZWQoKSkKLSAgICAgICAgbWVtc2V0KGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1E
YXRhLCAwLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKLSAgICBl
bHNlCi0gICAgICAgIG1lbWNweShhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgYXVk
aW9EYXRhLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKLQotICAg
IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgbnVtYmVyT2ZGcmFtZXMpOwotfQot
Ci12b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkK
LXsKLSAgICBpZiAobV9hdWRpb1RyYWNrKQotICAgICAgICBtX2F1ZGlvVHJhY2stPkFkZFNpbmso
dGhpcyk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzdG9wUHJvZHVj
aW5nRGF0YSgpCi17Ci0gICAgaWYgKG1fYXVkaW9UcmFjaykKLSAgICAgICAgbV9hdWRpb1RyYWNr
LT5SZW1vdmVTaW5rKHRoaXMpOwotfQotCi12b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZTo6c2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0lu
dGVyZmFjZT4mJiB0cmFjaykKLXsKLSAgICBBU1NFUlQoIW1fYXVkaW9UcmFjayk7Ci0gICAgQVNT
RVJUKHRyYWNrKTsKLQotICAgIG1fYXVkaW9UcmFjayA9IFdURk1vdmUodHJhY2spOwotICAgIG5v
dGlmeU11dGVkQ2hhbmdlKCFtX2F1ZGlvVHJhY2spOwotICAgIGlmIChpc1Byb2R1Y2luZ0RhdGEo
KSkKLSAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOwotfQotCi1jb25zdCBSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6
OmNhcGFiaWxpdGllcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXM6OmVtcHR5Q2FwYWJpbGl0aWVzKCk7Ci19Ci0KLWNvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXR0aW5ncygp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOwotfQotCi19Ci0KLSNlbmRp
ZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjYwMjIwODUxOTdmZjM5YTY4NTQ3
MDFlZmIyMGZiOWUwZGQ0ZTQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiAgICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAgICBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkxpYldlYlJU
Q01hY3Jvcy5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKLSNpbmNsdWRlIDxD
b3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KLSNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3Ry
ZWFtaW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi10eXBlZGVmIGNv
bnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uICpDTUZvcm1hdERlc2NyaXB0aW9u
UmVmOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDOwotCi1jbGFzcyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UgZmluYWwgOiBw
dWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSwgcHJpdmF0ZSB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5r
SW50ZXJmYWNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZT4gY3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRl
cmZhY2U+JiYsIFN0cmluZyYmKTsKLQotICAgIHZvaWQgc2V0U291cmNlVHJhY2socnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJik7Ci0KLXByaXZhdGU6Ci0g
ICAgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKLSAgICB+UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlKCk7Ci0KLSAgICAvLyB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNl
IEFQSQotICAgIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJT
YW1wbGUsIGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51
bWJlck9mRnJhbWVzKSBmaW5hbDsKLQotICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2UgQVBJCi0g
ICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICB2b2lkIHN0b3BQcm9kdWNp
bmdEYXRhKCkgIGZpbmFsOwotCi0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOwotCi0gICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzIG1fY3VycmVudFNldHRpbmdzOwotICAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+IG1fYXVkaW9UcmFjazsKLQotICAgIHVp
bnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNv
Y29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M2ZTEwYTJhMjdhM2Mw
MGE3YjM5ZmFlNjFhMDNmOWVhNWE4OTAyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJBdWRpb1N0
cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgi
CisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJXZWJBdWRpb0J1
ZmZlckxpc3QuaCIKKyNpbmNsdWRlICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIgor
I2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisKKyNp
bmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Jl
ZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+
JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQoreworICAgIGF1dG8gc291cmNl
ID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF1ZGlv
VHJhY2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpOworICAgIHNvdXJjZS0+c3RhcnQoKTsKKyAg
ICByZXR1cm4gV1RGTW92ZShzb3VyY2UpOworfQorCitSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2E+IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hOjpjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1RyYWNr
LCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EoV1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92
ZShhdWRpb1RyYWNrSWQpKSk7Cit9CisKK1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29h
OjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJh
Y2tJZCkKKyAgICA6IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvVHJh
Y2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpCit7Cit9CisKKworc3RhdGljIGlubGluZSBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRGVzY3JpcHRpb24oc2l6ZV90IHNhbXBsZVJh
dGUsIHNpemVfdCBjaGFubmVsQ291bnQpCit7CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uIHN0cmVhbUZvcm1hdDsKKyAgICBGaWxsT3V0QVNCREZvckxQQ00oc3RyZWFtRm9ybWF0LCBz
YW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXpl
LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6
OmlzRmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVk
aW9Gb3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQpOworICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7Cit9
CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E6Ok9uRGF0YShjb25zdCB2
b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90
IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKK3sKKyAgICAvLyBXZSBt
YXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1w
bGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4gc3Rh
cnRpbmcgdGhlIGNhbGwuCisgICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAgdGhl
bSwgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVsIHRv
IG5vdCBiZSBjYWxsZWQgdW50aWwgZ2V0dGluZyBzb21lIHJlYWwgZGF0YS4KKyAgICBpZiAoc2Ft
cGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJPZkNoYW5uZWxzID09IDEpCisgICAgICAgIHJldHVy
bjsKKworICAgIEFTU0VSVChiaXRzUGVyU2FtcGxlID09IDE2KTsKKyAgICBBU1NFUlQobnVtYmVy
T2ZDaGFubmVscyA9PSAxIHx8IG51bWJlck9mQ2hhbm5lbHMgPT0gMik7CisgICAgQVNTRVJUKHNh
bXBsZVJhdGUgPT0gNDgwMDApOworCisgICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1ha2Uo
bV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CisgICAgYXV0byBtZWRpYVRpbWUgPSBQQUw6
OnRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7CisgICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1iZXJP
ZkZyYW1lczsKKworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlwdGlv
biA9IHN0cmVhbURlc2NyaXB0aW9uKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpOworCisg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5IGFs
bG9jYXRpb24gYW5kIGNvcHkuCisgICAgLy8gSW5zdGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8g
ZGlyZWN0bHkgcGFzcyBhdWRpb0RhdGEgcG9pbnRlci4KKyAgICBXZWJBdWRpb0J1ZmZlckxpc3Qg
YXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9u
KSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpIH07CisgICAgYXVkaW9C
dWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMgKiBu
dW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1wbGUgLyA4OworICAgIGF1ZGlvQnVmZmVyTGlzdC5i
dWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7CisKKyAgICBpZiAo
bXV0ZWQoKSkKKyAgICAgICAgbWVtc2V0KGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRh
LCAwLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKKyAgICBlbHNl
CisgICAgICAgIG1lbWNweShhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgYXVkaW9E
YXRhLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKKworICAgIGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgbnVtYmVyT2ZGcmFtZXMpOworfQorCit9
CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDEwNDc1ZTVlY2EyZmZjOTE0MzAz
NDcxYjY1ZmIxYTg5N2RhYmE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmgK
QEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZS5oIgorCisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+
CisKK3R5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9y
bWF0RGVzY3JpcHRpb25SZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakM7CisKK2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYT4g
Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYs
IFN0cmluZyYmKTsKKworcHJpdmF0ZToKKyAgICBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBT
dHJpbmcmJik7CisKKyAgICAvLyB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlIEFQSQor
ICAgIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJTYW1wbGUs
IGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzKSBmaW5hbDsKKworICAgIHVpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDkxMDFkYzQzNzkxN2Q1MTBlNzRiZmM3NzUxYzdjNzBjN2RjMjJh
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oIgotCi0jaWYgVVNFKExJQldFQlJUQykKLQot
I2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkxpYldlYlJU
Q0F1ZGlvRm9ybWF0LmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
biBsaWJ3ZWJydGNBdWRpb0Zvcm1hdChGbG9hdDY0IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVs
Q291bnQpCi17Ci0gICAgLy8gRklYTUU6IE1pY3JvcGhvbmVzIGNhbiBoYXZlIG1vcmUgdGhhbiB0
d28gY2hhbm5lbHMuIEluIHN1Y2ggY2FzZSwgd2Ugc2hvdWxkIGRvIHRoZSBtaXggZG93biBiYXNl
ZCBvbiBBdWRpb0NoYW5uZWxMYXlvdXRUYWcuCi0gICAgc2l6ZV90IGxpYldlYlJUQ0NoYW5uZWxD
b3VudCA9IGNoYW5uZWxDb3VudCA+PSAyID8gMiA6IGNoYW5uZWxDb3VudDsKLSAgICBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBD
TShzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUsIGxpYldlYlJUQ0NoYW5uZWxDb3VudCwgTGliV2Vi
UlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVT
aXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6
OmlzQmlnRW5kaWFuLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0g
ICAgcmV0dXJuIHN0cmVhbUZvcm1hdDsKLX0KLQotUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
OjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
PiYmIGF1ZGlvU291cmNlKQotICAgIDogbV9hdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNl
KSkKLSAgICAsIG1fc2FtcGxlQ29udmVydGVyKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRl
KExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRlICogMikpCi0gICAgLCBtX3NpbGVuY2VB
dWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5j
ZSkKLXsKLSAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7Ci0gICAgaW5pdGlh
bGl6ZUNvbnZlcnRlcigpOwotfQotCi1ib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCi17Ci0g
ICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwotICAgIG1fYXVkaW9Tb3Vy
Y2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Ci0gICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIo
KnRoaXMpOwotCi0gICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwotICAgIHJldHVybiB0cnVlOwot
fQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRl
cigpCi17Ci0gICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7Ci0gICAgbV9lbmFi
bGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxlZCgpOwotICAgIGhhbmRsZU11dGVkSWZOZWVkZWQo
KTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQotewotICAg
IG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOwotICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9i
c2VydmVyKCp0aGlzKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNv
dXJjZU11dGVkQ2hhbmdlZCgpCi17Ci0gICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVk
KCk7Ci0gICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwotfQotCi12b2lkIFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxlZENoYW5nZWQoKQotewotICAgIG1fZW5hYmxlZCA9
IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsKLSAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Ci19
Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVk
KCkKLXsKLSAgICBib29sIGlzU2lsZW5jZWQgPSBtX211dGVkIHx8ICFtX2VuYWJsZWQ7Ci0gICAg
bV9zYW1wbGVDb252ZXJ0ZXItPnNldE11dGVkKGlzU2lsZW5jZWQpOwotICAgIGlmIChpc1NpbGVu
Y2VkICYmICFtX3NpbGVuY2VBdWRpb1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fc2lsZW5j
ZUF1ZGlvVGltZXIuc3RhcnRSZXBlYXRpbmcoMV9zKTsKLSAgICBpZiAoIWlzU2lsZW5jZWQgJiYg
bV9zaWxlbmNlQXVkaW9UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3NpbGVuY2VBdWRpb1Rp
bWVyLnN0b3AoKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRT
aWxlbmNlKCkKLXsKLSAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5n
VGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAg
c2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBs
ZVJhdGUoKSAvIDEwMDsKLSAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNv
dW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJl
YW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7Ci0KLSAgICAgICAgaWYgKCFidWZmZXJT
aXplKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fYXVkaW9CdWZmZXIuZ3Jvdyhi
dWZmZXJTaXplKTsKLSAgICAgICAgbWVtc2V0KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCAwLCBidWZm
ZXJTaXplKTsKLSAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQotICAgICAgICAgICAg
c2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6
c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0
cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50
KTsKLSAgICB9KTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmlzUmVh
Y2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpCi17Ci0gICAgYXV0byB3cml0dGVuQXVk
aW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1w
bGVSYXRlKCk7Ci0gICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9v
dXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBBU1NFUlQod3JpdHRl
bkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOwotICAgIHJldHVybiB3cml0dGVu
QXVkaW9EdXJhdGlvbiA+IHJlYWRBdWRpb0R1cmF0aW9uICsgMC41OwotfQotCi1ib29sIFJlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGlt
aXQoKQotewotICAgIGF1dG8gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBt
X2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotICAgIGF1dG8gcmVhZEF1ZGlv
RHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpOwotCi0gICAgQVNTRVJUKHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1
cmF0aW9uKTsKLSAgICByZXR1cm4gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPCByZWFkQXVkaW9EdXJh
dGlvbiArIDAuMTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6Omhhc0J1
ZmZlcmVkRW5nb3VoRGF0YSgpCi17Ci0gICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1f
d3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAg
YXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24g
Pj0gcmVhZEF1ZGlvRHVyYXRpb24pOwotICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+
PSByZWFkQXVkaW9EdXJhdGlvbiArIDAuMDE7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
UGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYgc3RyZWFtRGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKLXsKLSAgICBpZiAobV9p
bnB1dFN0cmVhbURlc2NyaXB0aW9uICE9IHN0cmVhbURlc2NyaXB0aW9uKSB7Ci0gICAgICAgIG1f
aW5wdXRTdHJlYW1EZXNjcmlwdGlvbiA9IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKHN0cmVh
bURlc2NyaXB0aW9uKTsKLSAgICAgICAgYXV0byBzdGF0dXMgID0gbV9zYW1wbGVDb252ZXJ0ZXIt
PnNldElucHV0Rm9ybWF0KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbik7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsKLQotICAgICAgICBtX291dHB1dFN0cmVhbURlc2Ny
aXB0aW9uID0gbGlid2VicnRjQXVkaW9Gb3JtYXQoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBs
ZVJhdGUsIHN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSk7Ci0gICAgICAgIHN0
YXR1cyA9IG1fc2FtcGxlQ29udmVydGVyLT5zZXRPdXRwdXRGb3JtYXQobV9vdXRwdXRTdHJlYW1E
ZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKTsKLSAgICAgICAgQVNTRVJUKCFzdGF0dXMp
OwotICAgIH0KLQotICAgIC8vIExldCdzIHNraXAgcHVzaGluZyBzYW1wbGVzIGlmIHdlIGFyZSB0
b28gc2xvdyBwdWxsaW5nIHRoZW0uCi0gICAgaWYgKG1fc2tpcHBpbmdBdWRpb0RhdGEpIHsKLSAg
ICAgICAgaWYgKCFpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gZmFsc2U7Ci0gICAg
fSBlbHNlIGlmIChpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSkgewotICAg
ICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIC8vIElmIHdlIGNoYW5nZSB0aGUgYXVkaW8gdHJhY2sgb3IgaXRzIHNhbXBsZSByYXRl
IGNoYW5nZXMsIHRoZSB0aW1lc3RhbXAgYmFzZWQgb24gbV93cml0ZUNvdW50IG1heSBiZSB3cm9u
Zy4KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVwZGF0ZSBtX3dyaXRlQ291bnQgdG8gYmUgdmFs
aWQgYWNjb3JkaW5nIHRoZSBuZXcgc2FtcGxlUmF0ZS4KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+
cHVzaFNhbXBsZXMoTWVkaWFUaW1lKG1fd3JpdGVDb3VudCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkpKSwgYXVkaW9EYXRhLCBzYW1w
bGVDb3VudCk7Ci0gICAgbV93cml0ZUNvdW50ICs9IHNhbXBsZUNvdW50OwotCi0gICAgaWYgKCFo
YXNCdWZmZXJlZEVuZ291aERhdGEoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTGliV2ViUlRD
UHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPnB1bGxBdWRpb0RhdGEoKTsK
LSAgICB9KTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnB1bGxBdWRp
b0RhdGEoKQotewotICAgIC8vIGxpYndlYnJ0YyBleHBlY3RzIDEwIG1zIGNodW5rcy4KLSAgICBz
aXplX3QgY2h1bmtTYW1wbGVDb3VudCA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpIC8gMTAwOwotICAgIHNpemVfdCBidWZmZXJTaXplID0gY2h1bmtTYW1wbGVDb3VudCAq
IExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAqIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOwotICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZm
ZXJTaXplKTsKLQotICAgIEF1ZGlvQnVmZmVyTGlzdCBidWZmZXJMaXN0OwotICAgIGJ1ZmZlckxp
c3QubU51bWJlckJ1ZmZlcnMgPSAxOwotICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51bWJl
ckNoYW5uZWxzID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7
Ci0gICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gYnVmZmVyU2l6ZTsK
LSAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhID0gbV9hdWRpb0J1ZmZlci5kYXRhKCk7
Ci0KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVsbEF2YWxhaWJsZVNhbXBsZXNBc0NodW5rcyhi
dWZmZXJMaXN0LCBjaHVua1NhbXBsZUNvdW50LCBtX3JlYWRDb3VudCwgW3RoaXMsIGNodW5rU2Ft
cGxlQ291bnRdIHsKLSAgICAgICAgbV9yZWFkQ291bnQgKz0gY2h1bmtTYW1wbGVDb3VudDsKLSAg
ICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQotICAgICAgICAgICAgc2luay0+T25EYXRh
KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwg
bV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsKLSAgICB9KTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKExJQldFQlJUQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGViYzgwNGU0OTU4NTMwYmU2NjAyZmZkNjFhMmI1M2M3ZWI2ZTU3NC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
cmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKExJQldFQlJUQykK
LQotI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgotI2luY2x1ZGUgIkxpYldlYlJU
Q01hY3Jvcy5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCi0jaW5jbHVk
ZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+
Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSB3ZWJy
dGMgewotY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKLWNsYXNzIEF1ZGlvVHJhY2tTaW5rSW50
ZXJmYWNlOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFj
ZSwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgewotcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkpOyB9
Ci0gICAgflJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSgpIHsgc3RvcCgpOyB9Ci0KLSAgICB2
b2lkIHN0b3AoKTsKLQotICAgIGJvb2wgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZT4mJik7Ci0gICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXVkaW9Tb3VyY2UuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYm
KTsKLQotICAgIHZpcnR1YWwgdm9pZCBBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRl
cmZhY2UqIHNpbmspIHsgbV9zaW5rcy5hcHBlbmQoc2luayk7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
UmVtb3ZlU2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lu
a3MucmVtb3ZlRmlyc3Qoc2luayk7IH0KLQotICAgIGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7
IHJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQotICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmlu
YWwgeyBkZXJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQotICAgIFNvdXJjZVN0YXRlIHN0YXRl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4ga0xpdmU7IH0KLSAgICBib29sIHJlbW90ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBSZWdpc3Rlck9ic2VydmVyKHdlYnJ0
Yzo6T2JzZXJ2ZXJJbnRlcmZhY2UqKSBmaW5hbCB7IH0KLSAgICB2b2lkIFVucmVnaXN0ZXJPYnNl
cnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9Ci0KLSAgICB2b2lkIHNv
dXJjZU11dGVkQ2hhbmdlZCgpOwotICAgIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKTsKLSAg
ICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0
Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwot
Ci0gICAgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKTsKLSAgICBi
b29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCk7Ci0gICAgYm9vbCBoYXNC
dWZmZXJlZEVuZ291aERhdGEoKTsKLQotICAgIC8vIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpP
YnNlcnZlciBBUEkKLSAgICB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJikgZmluYWwgeyBzb3VyY2VNdXRlZENoYW5nZWQoKTsgfQotICAgIHZvaWQgdHJhY2tF
bmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlRW5h
YmxlZENoYW5nZWQoKTsgfQotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlJiwgY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRm
b3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KSBmaW5hbCB7IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZSht
ZWRpYVRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7IH0KLSAgICB2b2lkIHRy
YWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KLSAgICB2b2lkIHRy
YWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9Ci0K
LSAgICB2b2lkIHB1bGxBdWRpb0RhdGEoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnZlcnRl
cigpOwotICAgIHZvaWQgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwotICAgIHZvaWQgc2VuZFNpbGVu
Y2UoKTsKLQotICAgIFZlY3Rvcjx3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9z
aW5rczsKLSAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7Ci0g
ICAgUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9zYW1wbGVDb252ZXJ0ZXI7Ci0gICAgQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbjsKLSAgICBDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbjsKLQotICAgIFZl
Y3Rvcjx1aW50OF90PiBtX2F1ZGlvQnVmZmVyOwotICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsg
MCB9OwotICAgIHVpbnQ2NF90IG1fd3JpdGVDb3VudCB7IDAgfTsKLSAgICBib29sIG1fbXV0ZWQg
eyBmYWxzZSB9OwotICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9za2lw
cGluZ0F1ZGlvRGF0YSB7IGZhbHNlIH07Ci0gICAgVGltZXIgbV9zaWxlbmNlQXVkaW9UaW1lcjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jYzZjNzc1ZDdlODE4ZDA2OGU3NGQyMTMzMjk2MjY1NGZhNWQzNGZmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApAQCAtMCwwICsxLDE2NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQu
aCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBpbmxpbmUgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIGxpYndlYnJ0Y0F1
ZGlvRm9ybWF0KEZsb2F0NjQgc2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKK3sKKyAg
ICAvLyBGSVhNRTogTWljcm9waG9uZXMgY2FuIGhhdmUgbW9yZSB0aGFuIHR3byBjaGFubmVscy4g
SW4gc3VjaCBjYXNlLCB3ZSBzaG91bGQgZG8gdGhlIG1peCBkb3duIGJhc2VkIG9uIEF1ZGlvQ2hh
bm5lbExheW91dFRhZy4KKyAgICBzaXplX3QgbGliV2ViUlRDQ2hhbm5lbENvdW50ID0gY2hhbm5l
bENvdW50ID49IDIgPyAyIDogY2hhbm5lbENvdW50OworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgRmlsbE91dEFTQkRGb3JMUENNKHN0cmVhbUZvcm1h
dCwgc2FtcGxlUmF0ZSwgbGliV2ViUlRDQ2hhbm5lbENvdW50LCBMaWJXZWJSVENBdWRpb0Zvcm1h
dDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJU
Q0F1ZGlvRm9ybWF0Ojppc0Zsb2F0LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNCaWdFbmRpYW4s
IExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc05vbkludGVybGVhdmVkKTsKKyAgICByZXR1cm4gc3Ry
ZWFtRm9ybWF0OworfQorCitSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYm
IGF1ZGlvU291cmNlKQorICAgIDogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFdURk1vdmUo
YXVkaW9Tb3VyY2UpKQorICAgICwgbV9zYW1wbGVDb252ZXJ0ZXIoQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpjcmVhdGUoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUgKiAyKSkKK3sKK30K
KworUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4gUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlOjpjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNl
KQoreworICAgIHJldHVybiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6Y3JlYXRl
KFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYTo6aGFuZGxlTXV0ZWRJZk5lZWRlZCgpCit7CisgICAgYm9vbCBpc1NpbGVuY2Vk
ID0gbV9tdXRlZCB8fCAhbV9lbmFibGVkOworICAgIG1fc2FtcGxlQ29udmVydGVyLT5zZXRNdXRl
ZChpc1NpbGVuY2VkKTsKKworICAgIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aGFuZGxl
TXV0ZWRJZk5lZWRlZCgpOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNv
Y29hOjpzZW5kU2lsZW5jZSgpCit7CisgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJU
Q1NpZ25hbGluZ1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7
CisgICAgICAgIHNpemVfdCBjaHVua1NhbXBsZUNvdW50ID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlw
dGlvbi5zYW1wbGVSYXRlKCkgLyAxMDA7CisgICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gY2h1
bmtTYW1wbGVDb3VudCAqIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAqIG1f
b3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOworCisgICAgICAgIGlm
ICghYnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2F1ZGlvQnVm
ZmVyLmdyb3coYnVmZmVyU2l6ZSk7CisgICAgICAgIG1lbXNldChtX2F1ZGlvQnVmZmVyLmRhdGEo
KSwgMCwgYnVmZmVyU2l6ZSk7CisgICAgICAgIGZvciAoYXV0byBzaW5rIDogbV9zaW5rcykKKyAg
ICAgICAgICAgIHNpbmstPk9uRGF0YShtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgTGliV2ViUlRDQXVk
aW9Gb3JtYXQ6OnNhbXBsZVNpemUsIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0
ZSgpLCBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSwgY2h1bmtT
YW1wbGVDb3VudCk7CisgICAgfSk7Cit9CisKK2Jvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlQ29jb2E6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpCit7CisgICAg
YXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1E
ZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisgICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1f
cmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisKKyAg
ICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOworICAg
IHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+IHJlYWRBdWRpb0R1cmF0aW9uICsgMC41Owor
fQorCitib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjppc1JlYWNoaW5nQnVm
ZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpCit7CisgICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlv
biA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7
CisgICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJl
YW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisKKyAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVy
YXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOworICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJh
dGlvbiA8IHJlYWRBdWRpb0R1cmF0aW9uICsgMC4xOworfQorCitib29sIFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZUNvY29hOjpoYXNCdWZmZXJlZEVub3VnaERhdGEoKQoreworICAgIGF1dG8g
d3JpdHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBtX2lucHV0U3RyZWFtRGVzY3Jp
cHRpb24uc2FtcGxlUmF0ZSgpOworICAgIGF1dG8gcmVhZEF1ZGlvRHVyYXRpb24gPSBtX3JlYWRD
b3VudCAvIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOworCisgICAgQVNT
RVJUKHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1cmF0aW9uKTsKKyAgICByZXR1
cm4gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24gKyAwLjAxOworfQor
Cit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjphdWRpb1NhbXBsZXNBdmFp
bGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0
YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgc3RyZWFtRGVzY3JpcHRpb24sIHNpemVf
dCBzYW1wbGVDb3VudCkKK3sKKyAgICBpZiAobV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uICE9IHN0
cmVhbURlc2NyaXB0aW9uKSB7CisgICAgICAgIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbiA9IHRv
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKHN0cmVhbURlc2NyaXB0aW9uKTsKKyAgICAgICAgYXV0
byBzdGF0dXMgID0gbV9zYW1wbGVDb252ZXJ0ZXItPnNldElucHV0Rm9ybWF0KG1faW5wdXRTdHJl
YW1EZXNjcmlwdGlvbik7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsK
KworICAgICAgICBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uID0gbGlid2VicnRjQXVkaW9Gb3Jt
YXQoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUsIHN0cmVhbURlc2NyaXB0aW9uLm51
bWJlck9mQ2hhbm5lbHMoKSk7CisgICAgICAgIHN0YXR1cyA9IG1fc2FtcGxlQ29udmVydGVyLT5z
ZXRPdXRwdXRGb3JtYXQobV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlv
bigpKTsKKyAgICAgICAgQVNTRVJUKCFzdGF0dXMpOworICAgIH0KKworICAgIC8vIExldCdzIHNr
aXAgcHVzaGluZyBzYW1wbGVzIGlmIHdlIGFyZSB0b28gc2xvdyBwdWxsaW5nIHRoZW0uCisgICAg
aWYgKG1fc2tpcHBpbmdBdWRpb0RhdGEpIHsKKyAgICAgICAgaWYgKCFpc1JlYWNoaW5nQnVmZmVy
ZWRBdWRpb0RhdGFMb3dMaW1pdCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3Nr
aXBwaW5nQXVkaW9EYXRhID0gZmFsc2U7CisgICAgfSBlbHNlIGlmIChpc1JlYWNoaW5nQnVmZmVy
ZWRBdWRpb0RhdGFIaWdoTGltaXQoKSkgeworICAgICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIElmIHdlIGNoYW5nZSB0aGUg
YXVkaW8gdHJhY2sgb3IgaXRzIHNhbXBsZSByYXRlIGNoYW5nZXMsIHRoZSB0aW1lc3RhbXAgYmFz
ZWQgb24gbV93cml0ZUNvdW50IG1heSBiZSB3cm9uZy4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IHVwZGF0ZSBtX3dyaXRlQ291bnQgdG8gYmUgdmFsaWQgYWNjb3JkaW5nIHRoZSBuZXcgc2FtcGxl
UmF0ZS4KKyAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVzaFNhbXBsZXMoTWVkaWFUaW1lKG1fd3Jp
dGVDb3VudCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5z
YW1wbGVSYXRlKCkpKSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7CisgICAgbV93cml0ZUNvdW50
ICs9IHNhbXBsZUNvdW50OworCisgICAgaWYgKCFoYXNCdWZmZXJlZEVub3VnaERhdGEoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25h
bGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHBy
b3RlY3RlZFRoaXMtPnB1bGxBdWRpb0RhdGEoKTsKKyAgICB9KTsKK30KKwordm9pZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6cHVsbEF1ZGlvRGF0YSgpCit7CisgICAgLy8gbGli
d2VicnRjIGV4cGVjdHMgMTAgbXMgY2h1bmtzLgorICAgIHNpemVfdCBjaHVua1NhbXBsZUNvdW50
ID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgLyAxMDA7CisgICAgc2l6
ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6
OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5u
ZWxzKCk7CisgICAgbV9hdWRpb0J1ZmZlci5ncm93KGJ1ZmZlclNpemUpOworCisgICAgQXVkaW9C
dWZmZXJMaXN0IGJ1ZmZlckxpc3Q7CisgICAgYnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVycyA9IDE7
CisgICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSBtX291dHB1dFN0
cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKTsKKyAgICBidWZmZXJMaXN0Lm1CdWZm
ZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBidWZmZXJTaXplOworICAgIGJ1ZmZlckxpc3QubUJ1ZmZl
cnNbMF0ubURhdGEgPSBtX2F1ZGlvQnVmZmVyLmRhdGEoKTsKKworICAgIG1fc2FtcGxlQ29udmVy
dGVyLT5wdWxsQXZhbGFpYmxlU2FtcGxlc0FzQ2h1bmtzKGJ1ZmZlckxpc3QsIGNodW5rU2FtcGxl
Q291bnQsIG1fcmVhZENvdW50LCBbdGhpcywgY2h1bmtTYW1wbGVDb3VudF0geworICAgICAgICBt
X3JlYWRDb3VudCArPSBjaHVua1NhbXBsZUNvdW50OworICAgICAgICBmb3IgKGF1dG8gc2luayA6
IG1fc2lua3MpCisgICAgICAgICAgICBzaW5rLT5PbkRhdGEobV9hdWRpb0J1ZmZlci5kYXRhKCks
IExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBtX291dHB1dFN0cmVhbURlc2NyaXB0
aW9uLnNhbXBsZVJhdGUoKSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5u
ZWxzKCksIGNodW5rU2FtcGxlQ291bnQpOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmZhNWFkMDAyYTA4ZGQz
MzE5MDQ3M2JlZTIyZWRmNjMyMjI0N2U5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNv
Y29hLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8g
YmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBV
U0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVEYXRhU291cmNlLmgiCisjaW5j
bHVkZSAiUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKK2NsYXNzIEF1ZGlvVHJhY2tTaW5rSW50ZXJm
YWNlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYT4gY3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYShX
VEZNb3ZlKGF1ZGlvU291cmNlKSkpOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYm
KTsKKworICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNv
bnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNp
emVfdCkgZmluYWw7CisKKyAgICBib29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hM
aW1pdCgpIGZpbmFsOworICAgIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGlt
aXQoKSBmaW5hbDsKKyAgICBib29sIGhhc0J1ZmZlcmVkRW5vdWdoRGF0YSgpIGZpbmFsOworCisg
ICAgdm9pZCBwdWxsQXVkaW9EYXRhKCkgZmluYWw7CisKKyAgICB2b2lkIGhhbmRsZU11dGVkSWZO
ZWVkZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRTaWxlbmNlKCkgZmluYWw7CisKKyAgICBSZWY8
QXVkaW9TYW1wbGVEYXRhU291cmNlPiBtX3NhbXBsZUNvbnZlcnRlcjsKKyAgICBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uOworICAgIENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uOworCisgICAgVmVjdG9yPHVp
bnQ4X3Q+IG1fYXVkaW9CdWZmZXI7CisgICAgdWludDY0X3QgbV9yZWFkQ291bnQgeyAwIH07Cisg
ICAgdWludDY0X3QgbV93cml0ZUNvdW50IHsgMCB9OworICAgIGJvb2wgbV9za2lwcGluZ0F1ZGlv
RGF0YSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBVU0UoTElCV0VCUlRDKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323739</attachid>
            <date>2017-10-13 13:47:46 -0700</date>
            <delta_ts>2017-10-16 07:16:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177928-20171013224745.patch</filename>
            <type>text/plain</type>
            <size>70640</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkzODIyMzA3YzA4MTkz
ODNhYjVjNDliNDQxNTFlNWFkODFkNWFmMy4uODg2OTExNjJiZWQ0YTcyYjE3NTg2NzY1ODI3Mzll
N2JmOTNjZGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTEwLTEyICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlcyBhbmQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlcyBw
b3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciB0aGUgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIGFuZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UgY2xhc3NlcywKKyAgICAgICAgbW92ZSB0aGUgbWFjIHNwZWNp
ZmljIGNvZGUgdG8gYSBkaWZmZXJlbnQgY2xhc3MuIFRoaXMgd2F5IHdlIGNhbiB1c2UgdGhlbSBm
cm9tCisgICAgICAgIG90aGVyIHBvcnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgd2UgYXJl
IG5vdCBhZGRpbmcgbmV3IGZ1bmN0aW9uYWxpdHkganVzdCByZWZhY3RvcmluZy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmguIEp1c3QgdGhlIHBvcnQg
YWdub3N0aWMgcGFydHMuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaC4gRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAuIERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmguIERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6IEFkZGVkLCBpdCBhZGRzIENv
Y29hIGNvZGUgcGFydHMgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhpcyBm
dW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUgdG8g
YXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBBZGRl
ZCBDb2NvYSBjb2RlIGZyb20gb3JpZ2luYWwgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6
IEFkZGVkIENvY29hIGNvZGUgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKTogTW92ZWQgdGhp
cyBmdW5jdGlvbiBmcm9tIHRoZSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGZpbGUg
dG8gYXZvaWQgaW5jbHVkaW5nIHRoZSBDb2NvYSBmaWxlIHRoZXJlLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oOiBB
ZGRlZCBDb2NvYSBjb2RlIGZyb20gdGhlIG9yaWdpbmFsIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaC4KKwogMjAxNy0x
MC0wNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbV2luQ2Fpcm9dIEZpeCBidWlsZCBhZnRlciBCdWcgMTY3OTU2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDdmMjJlNTE2Zjk3YTI5N2RkNTQ4ZTc1Y2VlMDg3N2ExYzU2MjVmMWEuLmE4NDQxYmY0
Y2IyYmZhNTNhNWMyMjY4MDc3ZjE2NzcxMjAzNWMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yNTQ4LDkgKzI1NDgsMTEgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAKICAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcAogICAg
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3Bw
CisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCiAgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKICAgICBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCisgICAg
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAogCiAg
ICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmY4Njg4YmMzZDlkNmU0MWU4MmRlNjY2OGIyYjlmYzViYjA4ZDM3Yy4uMjk5Yjc2NmM2
MTZjMGQzZTFiYjhlYWRlYTY3NjAxYzdiYjA0NDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY5Niw4ICsxNjk2LDEyIEBA
CiAJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTBCN0U3MTEw
NDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk0MTEw
M0FBQjFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovOyB9Owog
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
ODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggKi87IH07
CisJCTQxMTAzQUFCMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovOyB9OworCQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE4MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovOyB9OwogCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMDMg
LyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi87IH07CiAJCTQxMTAzQUFFMUUzOTc5MTAwMDc2OUYw
MyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQUExRTM5NzkwQTAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi87IH07CisJCTQxMTAzQUFEMUUzOTc5MTAw
MDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTkxRTM5NzkwQTAwNzY5
RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggKi87IH07CisJCTQxMTAz
QUFFMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FB
QTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3Bw
ICovOyB9OwogCQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2ViQ29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOUIx
QTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTQxMjMwOTEz
MTM4QzQyRkYwMEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGODIxNjI5OTAyOUY0RkI1MDEw
MDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk0MTI3RDUzNzBGOEFB
QjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0
YXRlLmNwcCAqLzsgfTsKQEAgLTk0NzIsOCArOTQ3NiwxMiBAQAogCQk0MTBCN0U3MTEwNDVGQUIw
MDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMTAzQUE4MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE3MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUE4MUUz
OTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBOTFFMzk3OTBBMDA3
NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2VDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIz
MjgwMEI5M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMyODAwQjk1NjcyIC8qIFJlYWRhYmxl
U3RyZWFtQllPQlJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtQllPQlJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY0OTcs
NiArMTY1MDUsOCBAQAogCQkJCTA3RkZERTY2MTgxQUVENDIwMDcyRDQwOSAvKiBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZS5jcHAgKi8sCiAJCQkJMDdGRkRFNjcxODFBRUQ0MjAwNzJENDA5IC8qIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggKi8sCiAJCQkJNUVCQjg5MzgxQzc3QkRBNDAwQzY1RDQx
IC8qIFBlZXJNZWRpYURlc2NyaXB0aW9uLmggKi8sCisJCQkJNDExMDNBQUExRTM5NzkwQTAwNzY5
RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi8sCisJCQkJNDExMDNBQTkx
RTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oICovLAogCQkJ
CTRBNEY2NTZCMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLywK
IAkJCQk0QTRGNjU2QzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oICov
LAogCQkJCTRBNEY2NTZEMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzLmggKi8sCkBAIC0xNjUwNiw2ICsxNjUxNiw4IEBACiAJCQkJNEE0RjY1NkYxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovLAogCQkJCTJF
QzQxREUyMUMwNDEwQTMwMEQyOTRGRSAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuY3BwICovLAogCQkJCTA3QzFDMEU0MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLywKKwkJCQk0MTEwM0FBNzFFMzk3
OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCAqLywKKwkJCQk0
MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgg
Ki8sCiAJCQkJMzEzNTkxMEMxRTdERENCNjAwRjMwNjMwIC8qIFJUQ0J1bmRsZVBvbGljeS5oICov
LAogCQkJCTA3MjIxQkEyMTdDRjBBRDQwMDg0OEU1MSAvKiBSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCAqLywKIAkJCQkwNzIyMUJBMzE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50LmggKi8sCkBAIC0xNjU1NCwxNCArMTY1NjYsMTQgQEAKIAkJCQkwNzQ0RUNFQzFF
MEM0QUU1MDAwRDA5NDQgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gKi8sCiAJCQkJ
MDdFRTc2RUQxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgg
Ki8sCiAJCQkJMDdFRTc2RUUxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tICovLAotCQkJCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwICovLAotCQkJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAv
KiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCAqLywKKwkJCQk0MTEwM0FBQTFFMzk3OTBB
MDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwICovLAorCQkJ
CTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5oICovLAogCQkJCTVDREQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2UuY3BwICovLAogCQkJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLywKIAkJCQk0QTBGRkFBMzFBQUY1RUY2MDA2
MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgKi8sCiAJCQkJNEEwRkZB
QTQxQUFGNUVGNjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCAqLywK
LQkJCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcCAqLywKLQkJCQk0MTEwM0FBODFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggKi8sCisJCQkJNDExMDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCAqLywKKwkJCQk0MTEwM0FBODFFMzk3
OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCAqLywKIAkJ
CQk1Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmNwcCAqLywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8sCkBAIC0yOTYxNCw2ICsyOTYyNiw3IEBACiAJ
CQkJNDEyOUM5QUIxRjU5QzU3MzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDMxNjAzQzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFs
eXNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExMDNBQUQxRTM5NzkxMDAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDExMDNBQUQx
RTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8q
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRB
MEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NjIxLDYgKzI5NjM0LDcgQEAKIAkJCQk0QTRGNjU3NDFBQTk5N0Yx
MDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0MxQzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBQzFFMzk3OTEwMDA3
NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0MTEwM0FBQzFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQjk1MjI0MUY1OEE1OEYwMDkzMURDMiAvKiBS
ZWNvcmRpbmdTd2l6emxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2OEU4MEMyMjZF
MzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1ODE3NUQ0MTRD
MDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzM1ODIsNiAr
MzM1OTYsNyBAQAogCQkJCTQxMjlDOThBMUY1ODdGRUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVh
bVNpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwM0IxMkIwMjY3NjAwQzFBMzU5IC8q
IFJlYWx0aW1lQW5hbHlzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMDNBQUUxRTM5Nzkx
MDAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTEwM0FBRTFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDgzM0UxRTQzMjREQzAwNjIx
RTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0QTRGNjU3MDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0QTBGRkFBMTFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNTg5LDYgKzMzNjA0LDcgQEAK
IAkJCQk0QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQzQxREU0MUMwNDEwQTMwMEQyOTRGRSAvKiBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDExMDNBQUIxRTM5NzkxMDAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEwM0FBQjFFMzk3OTEwMDA3NjlGMTQgLyog
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDgzM0QxRTQzMjREOTAwNjIxRTkyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFu
Z2xlU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBQjQxODExM0UzNTZFODAwRDhBQUYz
IC8qIFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MWFiM2Q3NjgzYjNiOGZmYzUwMmJmMzQ2NTI0Nzk3MzVj
MjFhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRp
b0Zvcm1hdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKKyAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQoreworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOworfQorCitSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1f
YXVkaW9UcmFjaykKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOworfQorCit2
b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQorewor
ICAgIGlmIChtX2F1ZGlvVHJhY2spCisgICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0
aGlzKTsKK30KKwordm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldFNvdXJjZVRy
YWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgdHJh
Y2spCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvVHJhY2spOworICAgIEFTU0VSVCh0cmFjayk7CisK
KyAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAgICBub3RpZnlNdXRlZENoYW5n
ZSghbV9hdWRpb1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCisgICAgICAgIG1f
YXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMo
KSBjb25zdAoreworICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpl
bXB0eUNhcGFiaWxpdGllcygpOworfQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAoreworICAg
IHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMzNjNi
NjJkYWFiNDg2NjM4MDA5YWRjOTFlM2NjOTIzYjAzMjUwNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldF
QlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlLCBwcml2YXRlIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYp
OworCisgICAgdm9pZCBzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmKTsKKworcHJvdGVjdGVkOgorICAgIFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJm
YWNlPiYmLCBTdHJpbmcmJik7CisgICAgflJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpOwor
Citwcml2YXRlOgorICAgIC8vIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgQVBJCisg
ICAgdmlydHVhbCB2b2lkIE9uRGF0YShjb25zdCB2b2lkKiAvKiBhdWRpb0RhdGEgKi8sIGludCAv
KiBiaXRzUGVyU2FtcGxlICovLCBpbnQgLyogc2FtcGxlUmF0ZSAqLywgc2l6ZV90IC8qIG51bWJl
ck9mQ2hhbm5lbHMgKi8sIHNpemVfdCAvKiBudW1iZXJPZkZyYW1lcyAqLykgeyB9OworCisgICAg
Ly8gUmVhbHRpbWVNZWRpYVNvdXJjZSBBUEkKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgp
IGZpbmFsOworICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSAgZmluYWw7CisKKyAgICBjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBm
aW5hbDsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkg
Y29uc3QgZmluYWw7CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50
U2V0dGluZ3M7CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVy
ZmFjZT4gbV9hdWRpb1RyYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZmM2E1YmViNmY1Y2NjMDEzNjk0ZTA5MTQwMmYyN2YyODIwZjdmYjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCisKKyNpZiBVU0UoTElCV0VCUlRD
KQorCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJS
VENQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkKKyAgICA6IG1fYXVkaW9Tb3VyY2UoV1RGTW92ZShh
dWRpb1NvdXJjZSkpCisgICAgLCBtX3NpbGVuY2VBdWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5jZSkKK3sKKyAgICBtX2F1ZGlvU291cmNlLT5h
ZGRPYnNlcnZlcigqdGhpcyk7CisgICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOworfQorCitib29s
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCit7CisgICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2Jz
ZXJ2ZXIoKnRoaXMpOworICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Cisg
ICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOworCisgICAgaW5pdGlhbGl6ZUNv
bnZlcnRlcigpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRlcigpCit7CisgICAgbV9tdXRlZCA9IG1fYXVk
aW9Tb3VyY2UtPm11dGVkKCk7CisgICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxl
ZCgpOworICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQoreworICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgp
OworICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKK30KKwordm9pZCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCit7CisgICAg
bV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7CisgICAgaGFuZGxlTXV0ZWRJZk5lZWRl
ZCgpOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxl
ZENoYW5nZWQoKQoreworICAgIG1fZW5hYmxlZCA9IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsK
KyAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVkKCkKK3sKKyAgICBib29sIGlzU2lsZW5jZWQg
PSBtX211dGVkIHx8ICFtX2VuYWJsZWQ7CisgICAgaWYgKGlzU2lsZW5jZWQgJiYgIW1fc2lsZW5j
ZUF1ZGlvVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdGFy
dFJlcGVhdGluZygxX3MpOworICAgIGlmICghaXNTaWxlbmNlZCAmJiBtX3NpbGVuY2VBdWRpb1Rp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzkxMzNmMGQ4YjU4NzJm
NTdjMDlhOGQ3NWZmMmQwNzlhZjc4NzljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKQEAg
LTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkxpYldl
YlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCisjaW5j
bHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNl
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSB3
ZWJydGMgeworY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKK2NsYXNzIEF1ZGlvVHJhY2tTaW5r
SW50ZXJmYWNlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwg
cHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKTsKKworICAgIH5SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UoKSB7IHN0b3AoKTsgfQorCisgICAgdm9pZCBzdG9wKCk7CisKKyAgICBi
b29sIHNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYpOworICAgIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU291cmNl
LmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKKworICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVNdXRlZElmTmVlZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHNlbmRTaWxlbmNl
KCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCBwdWxsQXVkaW9EYXRhKCkgeyB9OworCisgICAgVmVj
dG9yPHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqPiBtX3NpbmtzOworICAgIGJvb2wg
bV9tdXRlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2VuYWJsZWQgeyB0cnVlIH07CisKK3ByaXZh
dGU6CisgICAgdmlydHVhbCB2b2lkIEFkZFNpbmsod2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVy
ZmFjZSogc2luaykgeyBtX3NpbmtzLmFwcGVuZChzaW5rKTsgfQorICAgIHZpcnR1YWwgdm9pZCBS
ZW1vdmVTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspIHsgbV9zaW5r
cy5yZW1vdmVGaXJzdChzaW5rKTsgfQorCisgICAgaW50IEFkZFJlZigpIGNvbnN0IGZpbmFsIHsg
cmVmKCk7IHJldHVybiByZWZDb3VudCgpOyB9CisgICAgaW50IFJlbGVhc2UoKSBjb25zdCBmaW5h
bCB7IGRlcmVmKCk7IHJldHVybiByZWZDb3VudCgpOyB9CisgICAgU291cmNlU3RhdGUgc3RhdGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBrTGl2ZTsgfQorICAgIGJvb2wgcmVtb3RlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIFJlZ2lzdGVyT2JzZXJ2ZXIod2VicnRj
OjpPYnNlcnZlckludGVyZmFjZSopIGZpbmFsIHsgfQorICAgIHZvaWQgVW5yZWdpc3Rlck9ic2Vy
dmVyKHdlYnJ0Yzo6T2JzZXJ2ZXJJbnRlcmZhY2UqKSBmaW5hbCB7IH0KKworICAgIHZvaWQgc291
cmNlTXV0ZWRDaGFuZ2VkKCk7CisgICAgdm9pZCBzb3VyY2VFbmFibGVkQ2hhbmdlZCgpOworICAg
IHZpcnR1YWwgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29u
c3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6
ZV90KSB7IH07CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRh
SGlnaExpbWl0KCkgeyByZXR1cm4gZmFsc2U7IH07CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hp
bmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCkgeyByZXR1cm4gZmFsc2U7IH07CisgICAgdmly
dHVhbCBib29sIGhhc0J1ZmZlcmVkRW5vdWdoRGF0YSgpIHsgcmV0dXJuIGZhbHNlOyB9OworCisg
ICAgLy8gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIEFQSQorICAgIHZvaWQgdHJh
Y2tNdXRlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IHNvdXJjZU11
dGVkQ2hhbmdlZCgpOyB9CisgICAgdm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlJikgZmluYWwgeyBzb3VyY2VFbmFibGVkQ2hhbmdlZCgpOyB9CisgICAgdm9p
ZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmLCBjb25zdCBN
ZWRpYVRpbWUmIG1lZGlhVGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQp
IHsgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKG1lZGlhVGltZSwgZGF0YSwgZGVzY3JpcHRpb24sIHNh
bXBsZUNvdW50KTsgfQorICAgIHZvaWQgdHJhY2tFbmRlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSYpIGZpbmFsIHsgfQorICAgIHZvaWQgdHJhY2tTZXR0aW5nc0NoYW5nZWQoTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnZlcnRlcigp
OworCisgICAgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX2F1ZGlvU291cmNlOworCisg
ICAgVGltZXIgbV9zaWxlbmNlQXVkaW9UaW1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzUzOGNk
MDU1YjRkY2E0OTkyMWIyZDUxZDgwZjA4MmViMjI2NzM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiAgICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICog
ICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bSB0aGlzCi0gKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCIKLQotI2lmIFVTRShMSUJXRUJSVEMpCi0KLSNpbmNs
dWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKLSNpbmNsdWRl
ICJXZWJBdWRpb0J1ZmZlckxpc3QuaCIKLSNpbmNsdWRlICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5oIgotI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0
aW9uLmg+Ci0KLSNpbmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJh
Y2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQotewotICAg
IGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2Uo
V1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpKSk7Ci0gICAgc291cmNl
LT5zdGFydCgpOwotICAgIHJldHVybiBzb3VyY2U7Ci19Ci0KLVJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9U
cmFja0lkKQotICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcoKSkKLSAgICAsIG1fYXVk
aW9UcmFjayhXVEZNb3ZlKGF1ZGlvVHJhY2spKQotewotICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFt
X2F1ZGlvVHJhY2spOwotfQotCi1SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6On5SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UoKQotewotICAgIHN0b3AoKTsKLX0KLQotCi1zdGF0aWMgaW5s
aW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1EZXNjcmlwdGlvbihzaXplX3Qg
c2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKLXsKLSAgICBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1G
b3JtYXQsIHNhbXBsZVJhdGUsIGNoYW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNh
bXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRp
b0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBMaWJX
ZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0gICAgcmV0dXJuIHN0cmVhbUZv
cm1hdDsKLX0KLQotdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6Ok9uRGF0YShjb25z
dCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKLXsKLSAgICAvLyBX
ZSBtYXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBz
YW1wbGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4g
c3RhcnRpbmcgdGhlIGNhbGwuCi0gICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAg
dGhlbSwgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVs
IHRvIG5vdCBiZSBjYWxsZWQgdW50aWwgZ2V0dGluZyBzb21lIHJlYWwgZGF0YS4KLSAgICBpZiAo
c2FtcGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJPZkNoYW5uZWxzID09IDEpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEFTU0VSVChiaXRzUGVyU2FtcGxlID09IDE2KTsKLSAgICBBU1NFUlQobnVt
YmVyT2ZDaGFubmVscyA9PSAxIHx8IG51bWJlck9mQ2hhbm5lbHMgPT0gMik7Ci0gICAgQVNTRVJU
KHNhbXBsZVJhdGUgPT0gNDgwMDApOwotCi0gICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1h
a2UobV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7Ci0gICAgYXV0byBtZWRpYVRpbWUgPSBQ
QUw6OnRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7Ci0gICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1i
ZXJPZkZyYW1lczsKLQotICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlw
dGlvbiA9IHN0cmVhbURlc2NyaXB0aW9uKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpOwot
Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5
IGFsbG9jYXRpb24gYW5kIGNvcHkuCi0gICAgLy8gSW5zdGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUg
dG8gZGlyZWN0bHkgcGFzcyBhdWRpb0RhdGEgcG9pbnRlci4KLSAgICBXZWJBdWRpb0J1ZmZlckxp
c3QgYXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0
aW9uKSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpIH07Ci0gICAgYXVk
aW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMg
KiBudW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1wbGUgLyA4OwotICAgIGF1ZGlvQnVmZmVyTGlz
dC5idWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7Ci0KLSAgICBp
ZiAobXV0ZWQoKSkKLSAgICAgICAgbWVtc2V0KGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1E
YXRhLCAwLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKLSAgICBl
bHNlCi0gICAgICAgIG1lbWNweShhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgYXVk
aW9EYXRhLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKLQotICAg
IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgbnVtYmVyT2ZGcmFtZXMpOwotfQot
Ci12b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkK
LXsKLSAgICBpZiAobV9hdWRpb1RyYWNrKQotICAgICAgICBtX2F1ZGlvVHJhY2stPkFkZFNpbmso
dGhpcyk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzdG9wUHJvZHVj
aW5nRGF0YSgpCi17Ci0gICAgaWYgKG1fYXVkaW9UcmFjaykKLSAgICAgICAgbV9hdWRpb1RyYWNr
LT5SZW1vdmVTaW5rKHRoaXMpOwotfQotCi12b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZTo6c2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0lu
dGVyZmFjZT4mJiB0cmFjaykKLXsKLSAgICBBU1NFUlQoIW1fYXVkaW9UcmFjayk7Ci0gICAgQVNT
RVJUKHRyYWNrKTsKLQotICAgIG1fYXVkaW9UcmFjayA9IFdURk1vdmUodHJhY2spOwotICAgIG5v
dGlmeU11dGVkQ2hhbmdlKCFtX2F1ZGlvVHJhY2spOwotICAgIGlmIChpc1Byb2R1Y2luZ0RhdGEo
KSkKLSAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOwotfQotCi1jb25zdCBSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6
OmNhcGFiaWxpdGllcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXM6OmVtcHR5Q2FwYWJpbGl0aWVzKCk7Ci19Ci0KLWNvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXR0aW5ncygp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOwotfQotCi19Ci0KLSNlbmRp
ZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjYwMjIwODUxOTdmZjM5YTY4NTQ3
MDFlZmIyMGZiOWUwZGQ0ZTQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiAgICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAgICBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkxpYldlYlJU
Q01hY3Jvcy5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKLSNpbmNsdWRlIDxD
b3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KLSNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3Ry
ZWFtaW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi10eXBlZGVmIGNv
bnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uICpDTUZvcm1hdERlc2NyaXB0aW9u
UmVmOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDOwotCi1jbGFzcyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UgZmluYWwgOiBw
dWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSwgcHJpdmF0ZSB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5r
SW50ZXJmYWNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZT4gY3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRl
cmZhY2U+JiYsIFN0cmluZyYmKTsKLQotICAgIHZvaWQgc2V0U291cmNlVHJhY2socnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJik7Ci0KLXByaXZhdGU6Ci0g
ICAgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKLSAgICB+UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlKCk7Ci0KLSAgICAvLyB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNl
IEFQSQotICAgIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJT
YW1wbGUsIGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51
bWJlck9mRnJhbWVzKSBmaW5hbDsKLQotICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2UgQVBJCi0g
ICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICB2b2lkIHN0b3BQcm9kdWNp
bmdEYXRhKCkgIGZpbmFsOwotCi0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOwotCi0gICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzIG1fY3VycmVudFNldHRpbmdzOwotICAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+IG1fYXVkaW9UcmFjazsKLQotICAgIHVp
bnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNv
Y29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M2ZTEwYTJhMjdhM2Mw
MGE3YjM5ZmFlNjFhMDNmOWVhNWE4OTAyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2EuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJBdWRpb1N0
cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgi
CisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJXZWJBdWRpb0J1
ZmZlckxpc3QuaCIKKyNpbmNsdWRlICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIgor
I2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisKKyNp
bmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Jl
ZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+
JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQoreworICAgIGF1dG8gc291cmNl
ID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E6OmNyZWF0ZShXVEZNb3ZlKGF1ZGlv
VHJhY2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpOworICAgIHNvdXJjZS0+c3RhcnQoKTsKKyAg
ICByZXR1cm4gV1RGTW92ZShzb3VyY2UpOworfQorCitSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlQ29jb2E+IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hOjpjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1RyYWNr
LCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EoV1RGTW92ZShhdWRpb1RyYWNrKSwgV1RGTW92
ZShhdWRpb1RyYWNrSWQpKSk7Cit9CisKK1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29h
OjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJh
Y2tJZCkKKyAgICA6IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvVHJh
Y2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpCit7Cit9CisKKworc3RhdGljIGlubGluZSBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRGVzY3JpcHRpb24oc2l6ZV90IHNhbXBsZVJh
dGUsIHNpemVfdCBjaGFubmVsQ291bnQpCit7CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uIHN0cmVhbUZvcm1hdDsKKyAgICBGaWxsT3V0QVNCREZvckxQQ00oc3RyZWFtRm9ybWF0LCBz
YW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXpl
LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6
OmlzRmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVk
aW9Gb3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQpOworICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7Cit9
CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E6Ok9uRGF0YShjb25zdCB2
b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90
IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKK3sKKyAgICAvLyBXZSBt
YXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1w
bGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBsZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4gc3Rh
cnRpbmcgdGhlIGNhbGwuCisgICAgLy8gRklYTUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAgdGhl
bSwgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gYXQgbGlid2VicnRjIGxldmVsIHRv
IG5vdCBiZSBjYWxsZWQgdW50aWwgZ2V0dGluZyBzb21lIHJlYWwgZGF0YS4KKyAgICBpZiAoc2Ft
cGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJPZkNoYW5uZWxzID09IDEpCisgICAgICAgIHJldHVy
bjsKKworICAgIEFTU0VSVChiaXRzUGVyU2FtcGxlID09IDE2KTsKKyAgICBBU1NFUlQobnVtYmVy
T2ZDaGFubmVscyA9PSAxIHx8IG51bWJlck9mQ2hhbm5lbHMgPT0gMik7CisgICAgQVNTRVJUKHNh
bXBsZVJhdGUgPT0gNDgwMDApOworCisgICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1ha2Uo
bV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CisgICAgYXV0byBtZWRpYVRpbWUgPSBQQUw6
OnRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7CisgICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1iZXJP
ZkZyYW1lczsKKworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlwdGlv
biA9IHN0cmVhbURlc2NyaXB0aW9uKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpOworCisg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5IGFs
bG9jYXRpb24gYW5kIGNvcHkuCisgICAgLy8gSW5zdGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8g
ZGlyZWN0bHkgcGFzcyBhdWRpb0RhdGEgcG9pbnRlci4KKyAgICBXZWJBdWRpb0J1ZmZlckxpc3Qg
YXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9u
KSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFtZXMpIH07CisgICAgYXVkaW9C
dWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMgKiBu
dW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1wbGUgLyA4OworICAgIGF1ZGlvQnVmZmVyTGlzdC5i
dWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7CisKKyAgICBpZiAo
bXV0ZWQoKSkKKyAgICAgICAgbWVtc2V0KGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRh
LCAwLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKKyAgICBlbHNl
CisgICAgICAgIG1lbWNweShhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgYXVkaW9E
YXRhLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXplKTsKKworICAgIGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgbnVtYmVyT2ZGcmFtZXMpOworfQorCit9
CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDEwNDc1ZTVlY2EyZmZjOTE0MzAz
NDcxYjY1ZmIxYTg5N2RhYmE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmgK
QEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZS5oIgorCisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+
CisKK3R5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9y
bWF0RGVzY3JpcHRpb25SZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakM7CisKK2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYT4g
Y3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYs
IFN0cmluZyYmKTsKKworcHJpdmF0ZToKKyAgICBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBT
dHJpbmcmJik7CisKKyAgICAvLyB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlIEFQSQor
ICAgIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJTYW1wbGUs
IGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzKSBmaW5hbDsKKworICAgIHVpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDkxMDFkYzQzNzkxN2Q1MTBlNzRiZmM3NzUxYzdjNzBjN2RjMjJh
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oIgotCi0jaWYgVVNFKExJQldFQlJUQykKLQot
I2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkxpYldlYlJU
Q0F1ZGlvRm9ybWF0LmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
biBsaWJ3ZWJydGNBdWRpb0Zvcm1hdChGbG9hdDY0IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVs
Q291bnQpCi17Ci0gICAgLy8gRklYTUU6IE1pY3JvcGhvbmVzIGNhbiBoYXZlIG1vcmUgdGhhbiB0
d28gY2hhbm5lbHMuIEluIHN1Y2ggY2FzZSwgd2Ugc2hvdWxkIGRvIHRoZSBtaXggZG93biBiYXNl
ZCBvbiBBdWRpb0NoYW5uZWxMYXlvdXRUYWcuCi0gICAgc2l6ZV90IGxpYldlYlJUQ0NoYW5uZWxD
b3VudCA9IGNoYW5uZWxDb3VudCA+PSAyID8gMiA6IGNoYW5uZWxDb3VudDsKLSAgICBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBD
TShzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUsIGxpYldlYlJUQ0NoYW5uZWxDb3VudCwgTGliV2Vi
UlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVT
aXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6
OmlzQmlnRW5kaWFuLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0g
ICAgcmV0dXJuIHN0cmVhbUZvcm1hdDsKLX0KLQotUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
OjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
PiYmIGF1ZGlvU291cmNlKQotICAgIDogbV9hdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNl
KSkKLSAgICAsIG1fc2FtcGxlQ29udmVydGVyKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRl
KExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRlICogMikpCi0gICAgLCBtX3NpbGVuY2VB
dWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5j
ZSkKLXsKLSAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7Ci0gICAgaW5pdGlh
bGl6ZUNvbnZlcnRlcigpOwotfQotCi1ib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCi17Ci0g
ICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwotICAgIG1fYXVkaW9Tb3Vy
Y2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Ci0gICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIo
KnRoaXMpOwotCi0gICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwotICAgIHJldHVybiB0cnVlOwot
fQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRl
cigpCi17Ci0gICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7Ci0gICAgbV9lbmFi
bGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxlZCgpOwotICAgIGhhbmRsZU11dGVkSWZOZWVkZWQo
KTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQotewotICAg
IG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOwotICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9i
c2VydmVyKCp0aGlzKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNv
dXJjZU11dGVkQ2hhbmdlZCgpCi17Ci0gICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVk
KCk7Ci0gICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwotfQotCi12b2lkIFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxlZENoYW5nZWQoKQotewotICAgIG1fZW5hYmxlZCA9
IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsKLSAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Ci19
Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVk
KCkKLXsKLSAgICBib29sIGlzU2lsZW5jZWQgPSBtX211dGVkIHx8ICFtX2VuYWJsZWQ7Ci0gICAg
bV9zYW1wbGVDb252ZXJ0ZXItPnNldE11dGVkKGlzU2lsZW5jZWQpOwotICAgIGlmIChpc1NpbGVu
Y2VkICYmICFtX3NpbGVuY2VBdWRpb1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fc2lsZW5j
ZUF1ZGlvVGltZXIuc3RhcnRSZXBlYXRpbmcoMV9zKTsKLSAgICBpZiAoIWlzU2lsZW5jZWQgJiYg
bV9zaWxlbmNlQXVkaW9UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3NpbGVuY2VBdWRpb1Rp
bWVyLnN0b3AoKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRT
aWxlbmNlKCkKLXsKLSAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5n
VGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAg
c2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBs
ZVJhdGUoKSAvIDEwMDsKLSAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNv
dW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJl
YW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7Ci0KLSAgICAgICAgaWYgKCFidWZmZXJT
aXplKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fYXVkaW9CdWZmZXIuZ3Jvdyhi
dWZmZXJTaXplKTsKLSAgICAgICAgbWVtc2V0KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCAwLCBidWZm
ZXJTaXplKTsKLSAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQotICAgICAgICAgICAg
c2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6
c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0
cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50
KTsKLSAgICB9KTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmlzUmVh
Y2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpCi17Ci0gICAgYXV0byB3cml0dGVuQXVk
aW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1w
bGVSYXRlKCk7Ci0gICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9v
dXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBBU1NFUlQod3JpdHRl
bkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOwotICAgIHJldHVybiB3cml0dGVu
QXVkaW9EdXJhdGlvbiA+IHJlYWRBdWRpb0R1cmF0aW9uICsgMC41OwotfQotCi1ib29sIFJlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGlt
aXQoKQotewotICAgIGF1dG8gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBt
X2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotICAgIGF1dG8gcmVhZEF1ZGlv
RHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpOwotCi0gICAgQVNTRVJUKHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1
cmF0aW9uKTsKLSAgICByZXR1cm4gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPCByZWFkQXVkaW9EdXJh
dGlvbiArIDAuMTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6Omhhc0J1
ZmZlcmVkRW5nb3VoRGF0YSgpCi17Ci0gICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1f
d3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAg
YXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24g
Pj0gcmVhZEF1ZGlvRHVyYXRpb24pOwotICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+
PSByZWFkQXVkaW9EdXJhdGlvbiArIDAuMDE7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
UGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYgc3RyZWFtRGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKLXsKLSAgICBpZiAobV9p
bnB1dFN0cmVhbURlc2NyaXB0aW9uICE9IHN0cmVhbURlc2NyaXB0aW9uKSB7Ci0gICAgICAgIG1f
aW5wdXRTdHJlYW1EZXNjcmlwdGlvbiA9IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKHN0cmVh
bURlc2NyaXB0aW9uKTsKLSAgICAgICAgYXV0byBzdGF0dXMgID0gbV9zYW1wbGVDb252ZXJ0ZXIt
PnNldElucHV0Rm9ybWF0KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbik7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsKLQotICAgICAgICBtX291dHB1dFN0cmVhbURlc2Ny
aXB0aW9uID0gbGlid2VicnRjQXVkaW9Gb3JtYXQoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBs
ZVJhdGUsIHN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSk7Ci0gICAgICAgIHN0
YXR1cyA9IG1fc2FtcGxlQ29udmVydGVyLT5zZXRPdXRwdXRGb3JtYXQobV9vdXRwdXRTdHJlYW1E
ZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKTsKLSAgICAgICAgQVNTRVJUKCFzdGF0dXMp
OwotICAgIH0KLQotICAgIC8vIExldCdzIHNraXAgcHVzaGluZyBzYW1wbGVzIGlmIHdlIGFyZSB0
b28gc2xvdyBwdWxsaW5nIHRoZW0uCi0gICAgaWYgKG1fc2tpcHBpbmdBdWRpb0RhdGEpIHsKLSAg
ICAgICAgaWYgKCFpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gZmFsc2U7Ci0gICAg
fSBlbHNlIGlmIChpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSkgewotICAg
ICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIC8vIElmIHdlIGNoYW5nZSB0aGUgYXVkaW8gdHJhY2sgb3IgaXRzIHNhbXBsZSByYXRl
IGNoYW5nZXMsIHRoZSB0aW1lc3RhbXAgYmFzZWQgb24gbV93cml0ZUNvdW50IG1heSBiZSB3cm9u
Zy4KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVwZGF0ZSBtX3dyaXRlQ291bnQgdG8gYmUgdmFs
aWQgYWNjb3JkaW5nIHRoZSBuZXcgc2FtcGxlUmF0ZS4KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+
cHVzaFNhbXBsZXMoTWVkaWFUaW1lKG1fd3JpdGVDb3VudCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkpKSwgYXVkaW9EYXRhLCBzYW1w
bGVDb3VudCk7Ci0gICAgbV93cml0ZUNvdW50ICs9IHNhbXBsZUNvdW50OwotCi0gICAgaWYgKCFo
YXNCdWZmZXJlZEVuZ291aERhdGEoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTGliV2ViUlRD
UHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPnB1bGxBdWRpb0RhdGEoKTsK
LSAgICB9KTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnB1bGxBdWRp
b0RhdGEoKQotewotICAgIC8vIGxpYndlYnJ0YyBleHBlY3RzIDEwIG1zIGNodW5rcy4KLSAgICBz
aXplX3QgY2h1bmtTYW1wbGVDb3VudCA9IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpIC8gMTAwOwotICAgIHNpemVfdCBidWZmZXJTaXplID0gY2h1bmtTYW1wbGVDb3VudCAq
IExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAqIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOwotICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZm
ZXJTaXplKTsKLQotICAgIEF1ZGlvQnVmZmVyTGlzdCBidWZmZXJMaXN0OwotICAgIGJ1ZmZlckxp
c3QubU51bWJlckJ1ZmZlcnMgPSAxOwotICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51bWJl
ckNoYW5uZWxzID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7
Ci0gICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gYnVmZmVyU2l6ZTsK
LSAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhID0gbV9hdWRpb0J1ZmZlci5kYXRhKCk7
Ci0KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVsbEF2YWxhaWJsZVNhbXBsZXNBc0NodW5rcyhi
dWZmZXJMaXN0LCBjaHVua1NhbXBsZUNvdW50LCBtX3JlYWRDb3VudCwgW3RoaXMsIGNodW5rU2Ft
cGxlQ291bnRdIHsKLSAgICAgICAgbV9yZWFkQ291bnQgKz0gY2h1bmtTYW1wbGVDb3VudDsKLSAg
ICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQotICAgICAgICAgICAgc2luay0+T25EYXRh
KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwg
bV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsKLSAgICB9KTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKExJQldFQlJUQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGViYzgwNGU0OTU4NTMwYmU2NjAyZmZkNjFhMmI1M2M3ZWI2ZTU3NC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
cmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKExJQldFQlJUQykK
LQotI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgotI2luY2x1ZGUgIkxpYldlYlJU
Q01hY3Jvcy5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCi0jaW5jbHVk
ZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+
Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSB3ZWJy
dGMgewotY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKLWNsYXNzIEF1ZGlvVHJhY2tTaW5rSW50
ZXJmYWNlOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U+LCBwdWJsaWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFj
ZSwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgewotcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkpOyB9
Ci0gICAgflJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSgpIHsgc3RvcCgpOyB9Ci0KLSAgICB2
b2lkIHN0b3AoKTsKLQotICAgIGJvb2wgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZT4mJik7Ci0gICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXVkaW9Tb3VyY2UuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYm
KTsKLQotICAgIHZpcnR1YWwgdm9pZCBBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRl
cmZhY2UqIHNpbmspIHsgbV9zaW5rcy5hcHBlbmQoc2luayk7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
UmVtb3ZlU2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lu
a3MucmVtb3ZlRmlyc3Qoc2luayk7IH0KLQotICAgIGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7
IHJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQotICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmlu
YWwgeyBkZXJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQotICAgIFNvdXJjZVN0YXRlIHN0YXRl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4ga0xpdmU7IH0KLSAgICBib29sIHJlbW90ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBSZWdpc3Rlck9ic2VydmVyKHdlYnJ0
Yzo6T2JzZXJ2ZXJJbnRlcmZhY2UqKSBmaW5hbCB7IH0KLSAgICB2b2lkIFVucmVnaXN0ZXJPYnNl
cnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9Ci0KLSAgICB2b2lkIHNv
dXJjZU11dGVkQ2hhbmdlZCgpOwotICAgIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKTsKLSAg
ICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0
Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwot
Ci0gICAgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKTsKLSAgICBi
b29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0KCk7Ci0gICAgYm9vbCBoYXNC
dWZmZXJlZEVuZ291aERhdGEoKTsKLQotICAgIC8vIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpP
YnNlcnZlciBBUEkKLSAgICB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJikgZmluYWwgeyBzb3VyY2VNdXRlZENoYW5nZWQoKTsgfQotICAgIHZvaWQgdHJhY2tF
bmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlRW5h
YmxlZENoYW5nZWQoKTsgfQotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlJiwgY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRm
b3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KSBmaW5hbCB7IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZSht
ZWRpYVRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7IH0KLSAgICB2b2lkIHRy
YWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KLSAgICB2b2lkIHRy
YWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9Ci0K
LSAgICB2b2lkIHB1bGxBdWRpb0RhdGEoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnZlcnRl
cigpOwotICAgIHZvaWQgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwotICAgIHZvaWQgc2VuZFNpbGVu
Y2UoKTsKLQotICAgIFZlY3Rvcjx3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9z
aW5rczsKLSAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7Ci0g
ICAgUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9zYW1wbGVDb252ZXJ0ZXI7Ci0gICAgQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbjsKLSAgICBDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbjsKLQotICAgIFZl
Y3Rvcjx1aW50OF90PiBtX2F1ZGlvQnVmZmVyOwotICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsg
MCB9OwotICAgIHVpbnQ2NF90IG1fd3JpdGVDb3VudCB7IDAgfTsKLSAgICBib29sIG1fbXV0ZWQg
eyBmYWxzZSB9OwotICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9za2lw
cGluZ0F1ZGlvRGF0YSB7IGZhbHNlIH07Ci0gICAgVGltZXIgbV9zaWxlbmNlQXVkaW9UaW1lcjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jYzZjNzc1ZDdlODE4ZDA2OGU3NGQyMTMzMjk2MjY1NGZhNWQzNGZmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApAQCAtMCwwICsxLDE2NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQu
aCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBpbmxpbmUgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIGxpYndlYnJ0Y0F1
ZGlvRm9ybWF0KEZsb2F0NjQgc2FtcGxlUmF0ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKK3sKKyAg
ICAvLyBGSVhNRTogTWljcm9waG9uZXMgY2FuIGhhdmUgbW9yZSB0aGFuIHR3byBjaGFubmVscy4g
SW4gc3VjaCBjYXNlLCB3ZSBzaG91bGQgZG8gdGhlIG1peCBkb3duIGJhc2VkIG9uIEF1ZGlvQ2hh
bm5lbExheW91dFRhZy4KKyAgICBzaXplX3QgbGliV2ViUlRDQ2hhbm5lbENvdW50ID0gY2hhbm5l
bENvdW50ID49IDIgPyAyIDogY2hhbm5lbENvdW50OworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgRmlsbE91dEFTQkRGb3JMUENNKHN0cmVhbUZvcm1h
dCwgc2FtcGxlUmF0ZSwgbGliV2ViUlRDQ2hhbm5lbENvdW50LCBMaWJXZWJSVENBdWRpb0Zvcm1h
dDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJU
Q0F1ZGlvRm9ybWF0Ojppc0Zsb2F0LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNCaWdFbmRpYW4s
IExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc05vbkludGVybGVhdmVkKTsKKyAgICByZXR1cm4gc3Ry
ZWFtRm9ybWF0OworfQorCitSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYm
IGF1ZGlvU291cmNlKQorICAgIDogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKFdURk1vdmUo
YXVkaW9Tb3VyY2UpKQorICAgICwgbV9zYW1wbGVDb252ZXJ0ZXIoQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpjcmVhdGUoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUgKiAyKSkKK3sKK30K
KworUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4gUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlOjpjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNl
KQoreworICAgIHJldHVybiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6Y3JlYXRl
KFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYTo6aGFuZGxlTXV0ZWRJZk5lZWRlZCgpCit7CisgICAgYm9vbCBpc1NpbGVuY2Vk
ID0gbV9tdXRlZCB8fCAhbV9lbmFibGVkOworICAgIG1fc2FtcGxlQ29udmVydGVyLT5zZXRNdXRl
ZChpc1NpbGVuY2VkKTsKKworICAgIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aGFuZGxl
TXV0ZWRJZk5lZWRlZCgpOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNv
Y29hOjpzZW5kU2lsZW5jZSgpCit7CisgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJU
Q1NpZ25hbGluZ1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7
CisgICAgICAgIHNpemVfdCBjaHVua1NhbXBsZUNvdW50ID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlw
dGlvbi5zYW1wbGVSYXRlKCkgLyAxMDA7CisgICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gY2h1
bmtTYW1wbGVDb3VudCAqIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAqIG1f
b3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOworCisgICAgICAgIGlm
ICghYnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2F1ZGlvQnVm
ZmVyLmdyb3coYnVmZmVyU2l6ZSk7CisgICAgICAgIG1lbXNldChtX2F1ZGlvQnVmZmVyLmRhdGEo
KSwgMCwgYnVmZmVyU2l6ZSk7CisgICAgICAgIGZvciAoYXV0byBzaW5rIDogbV9zaW5rcykKKyAg
ICAgICAgICAgIHNpbmstPk9uRGF0YShtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgTGliV2ViUlRDQXVk
aW9Gb3JtYXQ6OnNhbXBsZVNpemUsIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0
ZSgpLCBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSwgY2h1bmtT
YW1wbGVDb3VudCk7CisgICAgfSk7Cit9CisKK2Jvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlQ29jb2E6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpCit7CisgICAg
YXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1E
ZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisgICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1f
cmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisKKyAg
ICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOworICAg
IHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+IHJlYWRBdWRpb0R1cmF0aW9uICsgMC41Owor
fQorCitib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjppc1JlYWNoaW5nQnVm
ZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpCit7CisgICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlv
biA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7
CisgICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJl
YW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisKKyAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVy
YXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOworICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJh
dGlvbiA8IHJlYWRBdWRpb0R1cmF0aW9uICsgMC4xOworfQorCitib29sIFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZUNvY29hOjpoYXNCdWZmZXJlZEVub3VnaERhdGEoKQoreworICAgIGF1dG8g
d3JpdHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBtX2lucHV0U3RyZWFtRGVzY3Jp
cHRpb24uc2FtcGxlUmF0ZSgpOworICAgIGF1dG8gcmVhZEF1ZGlvRHVyYXRpb24gPSBtX3JlYWRD
b3VudCAvIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOworCisgICAgQVNT
RVJUKHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1cmF0aW9uKTsKKyAgICByZXR1
cm4gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24gKyAwLjAxOworfQor
Cit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjphdWRpb1NhbXBsZXNBdmFp
bGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0
YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgc3RyZWFtRGVzY3JpcHRpb24sIHNpemVf
dCBzYW1wbGVDb3VudCkKK3sKKyAgICBpZiAobV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uICE9IHN0
cmVhbURlc2NyaXB0aW9uKSB7CisgICAgICAgIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbiA9IHRv
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKHN0cmVhbURlc2NyaXB0aW9uKTsKKyAgICAgICAgYXV0
byBzdGF0dXMgID0gbV9zYW1wbGVDb252ZXJ0ZXItPnNldElucHV0Rm9ybWF0KG1faW5wdXRTdHJl
YW1EZXNjcmlwdGlvbik7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsK
KworICAgICAgICBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uID0gbGlid2VicnRjQXVkaW9Gb3Jt
YXQoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUsIHN0cmVhbURlc2NyaXB0aW9uLm51
bWJlck9mQ2hhbm5lbHMoKSk7CisgICAgICAgIHN0YXR1cyA9IG1fc2FtcGxlQ29udmVydGVyLT5z
ZXRPdXRwdXRGb3JtYXQobV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlv
bigpKTsKKyAgICAgICAgQVNTRVJUKCFzdGF0dXMpOworICAgIH0KKworICAgIC8vIExldCdzIHNr
aXAgcHVzaGluZyBzYW1wbGVzIGlmIHdlIGFyZSB0b28gc2xvdyBwdWxsaW5nIHRoZW0uCisgICAg
aWYgKG1fc2tpcHBpbmdBdWRpb0RhdGEpIHsKKyAgICAgICAgaWYgKCFpc1JlYWNoaW5nQnVmZmVy
ZWRBdWRpb0RhdGFMb3dMaW1pdCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3Nr
aXBwaW5nQXVkaW9EYXRhID0gZmFsc2U7CisgICAgfSBlbHNlIGlmIChpc1JlYWNoaW5nQnVmZmVy
ZWRBdWRpb0RhdGFIaWdoTGltaXQoKSkgeworICAgICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIElmIHdlIGNoYW5nZSB0aGUg
YXVkaW8gdHJhY2sgb3IgaXRzIHNhbXBsZSByYXRlIGNoYW5nZXMsIHRoZSB0aW1lc3RhbXAgYmFz
ZWQgb24gbV93cml0ZUNvdW50IG1heSBiZSB3cm9uZy4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IHVwZGF0ZSBtX3dyaXRlQ291bnQgdG8gYmUgdmFsaWQgYWNjb3JkaW5nIHRoZSBuZXcgc2FtcGxl
UmF0ZS4KKyAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVzaFNhbXBsZXMoTWVkaWFUaW1lKG1fd3Jp
dGVDb3VudCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5z
YW1wbGVSYXRlKCkpKSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7CisgICAgbV93cml0ZUNvdW50
ICs9IHNhbXBsZUNvdW50OworCisgICAgaWYgKCFoYXNCdWZmZXJlZEVub3VnaERhdGEoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25h
bGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHBy
b3RlY3RlZFRoaXMtPnB1bGxBdWRpb0RhdGEoKTsKKyAgICB9KTsKK30KKwordm9pZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6cHVsbEF1ZGlvRGF0YSgpCit7CisgICAgLy8gbGli
d2VicnRjIGV4cGVjdHMgMTAgbXMgY2h1bmtzLgorICAgIHNpemVfdCBjaHVua1NhbXBsZUNvdW50
ID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgLyAxMDA7CisgICAgc2l6
ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6
OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5u
ZWxzKCk7CisgICAgbV9hdWRpb0J1ZmZlci5ncm93KGJ1ZmZlclNpemUpOworCisgICAgQXVkaW9C
dWZmZXJMaXN0IGJ1ZmZlckxpc3Q7CisgICAgYnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVycyA9IDE7
CisgICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSBtX291dHB1dFN0
cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKTsKKyAgICBidWZmZXJMaXN0Lm1CdWZm
ZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBidWZmZXJTaXplOworICAgIGJ1ZmZlckxpc3QubUJ1ZmZl
cnNbMF0ubURhdGEgPSBtX2F1ZGlvQnVmZmVyLmRhdGEoKTsKKworICAgIG1fc2FtcGxlQ29udmVy
dGVyLT5wdWxsQXZhbGFpYmxlU2FtcGxlc0FzQ2h1bmtzKGJ1ZmZlckxpc3QsIGNodW5rU2FtcGxl
Q291bnQsIG1fcmVhZENvdW50LCBbdGhpcywgY2h1bmtTYW1wbGVDb3VudF0geworICAgICAgICBt
X3JlYWRDb3VudCArPSBjaHVua1NhbXBsZUNvdW50OworICAgICAgICBmb3IgKGF1dG8gc2luayA6
IG1fc2lua3MpCisgICAgICAgICAgICBzaW5rLT5PbkRhdGEobV9hdWRpb0J1ZmZlci5kYXRhKCks
IExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBtX291dHB1dFN0cmVhbURlc2NyaXB0
aW9uLnNhbXBsZVJhdGUoKSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5u
ZWxzKCksIGNodW5rU2FtcGxlQ291bnQpOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmZhNWFkMDAyYTA4ZGQz
MzE5MDQ3M2JlZTIyZWRmNjMyMjI0N2U5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNv
Y29hLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8g
YmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBV
U0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVEYXRhU291cmNlLmgiCisjaW5j
bHVkZSAiUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCisKK25hbWVzcGFjZSB3ZWJydGMg
eworY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKK2NsYXNzIEF1ZGlvVHJhY2tTaW5rSW50ZXJm
YWNlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYT4gY3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYShX
VEZNb3ZlKGF1ZGlvU291cmNlKSkpOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYm
KTsKKworICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNv
bnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNp
emVfdCkgZmluYWw7CisKKyAgICBib29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hM
aW1pdCgpIGZpbmFsOworICAgIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGlt
aXQoKSBmaW5hbDsKKyAgICBib29sIGhhc0J1ZmZlcmVkRW5vdWdoRGF0YSgpIGZpbmFsOworCisg
ICAgdm9pZCBwdWxsQXVkaW9EYXRhKCkgZmluYWw7CisKKyAgICB2b2lkIGhhbmRsZU11dGVkSWZO
ZWVkZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRTaWxlbmNlKCkgZmluYWw7CisKKyAgICBSZWY8
QXVkaW9TYW1wbGVEYXRhU291cmNlPiBtX3NhbXBsZUNvbnZlcnRlcjsKKyAgICBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uOworICAgIENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uOworCisgICAgVmVjdG9yPHVp
bnQ4X3Q+IG1fYXVkaW9CdWZmZXI7CisgICAgdWludDY0X3QgbV9yZWFkQ291bnQgeyAwIH07Cisg
ICAgdWludDY0X3QgbV93cml0ZUNvdW50IHsgMCB9OworICAgIGJvb2wgbV9za2lwcGluZ0F1ZGlv
RGF0YSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBVU0UoTElCV0VCUlRDKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323892</attachid>
            <date>2017-10-16 07:16:13 -0700</date>
            <delta_ts>2017-10-16 09:00:59 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-177928-20171016161612.patch</filename>
            <type>text/plain</type>
            <size>70658</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTgwMGE3YjRiYjNmZGMw
NTE0YjM0MzNkZDM2ZTEzMGJkMmE4MGUxYy4uNDllYjRhOWQ0ZmI0MTMxMDZjZDA4NGIxMTZiODBi
OTVlMGY4ZmU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTEwLTE2ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlcyBhbmQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlcyBw
b3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAg
ICAgIFJlZmFjdG9yIHRoZSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UgYW5kIFJlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZSBjbGFzc2VzLAorICAgICAgICBtb3ZlIHRoZSBtYWMgc3BlY2lm
aWMgY29kZSB0byBhIGRpZmZlcmVudCBjbGFzcy4gVGhpcyB3YXkgd2UgY2FuIHVzZSB0aGVtIGZy
b20KKyAgICAgICAgb3RoZXIgcG9ydHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB3ZSBhcmUg
bm90IGFkZGluZyBuZXcgZnVuY3Rpb25hbGl0eSBqdXN0IHJlZmFjdG9yaW5nLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaC4gSnVzdCB0aGUgcG9ydCBh
Z25vc3RpYyBwYXJ0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oLiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2Uu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcC4gRGl0dG8uCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UuaC4gRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcDogQWRkZWQsIGl0IGFkZHMgQ29j
b2EgY29kZSBwYXJ0cyBmcm9tIG9yaWdpbmFsIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUpOiBNb3ZlZCB0aGlzIGZ1
bmN0aW9uIGZyb20gdGhlIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgZmlsZSB0byBh
dm9pZCBpbmNsdWRpbmcgdGhlIENvY29hIGZpbGUgdGhlcmUuCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmg6IEFkZGVk
IENvY29hIGNvZGUgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmguCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcDog
QWRkZWQgQ29jb2EgY29kZSBmcm9tIG9yaWdpbmFsIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpjcmVhdGUpOiBNb3ZlZCB0aGlz
IGZ1bmN0aW9uIGZyb20gdGhlIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgZmlsZSB0
byBhdm9pZCBpbmNsdWRpbmcgdGhlIENvY29hIGZpbGUgdGhlcmUuCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmg6IEFk
ZGVkIENvY29hIGNvZGUgZnJvbSB0aGUgb3JpZ2luYWwgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oLgorCiAyMDE3LTEw
LTE2ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IERvbid0IHVzZSBpbnRyaW5zaWMgd2lkdGggaWYgb3VyIGNvbnRhaW5lcidzIHdpZHRoIGlzIHpl
cm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZDdjN2I3YTVlOGQyNTJjMTBkYjk4OTNmMzBiODhm
N2EyNzRmNjgxMC4uZDMwNDUxMmFjZDA0NGI2MDViMDFiZjFlM2ZjNzgzNjI4NTc0NDQ5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTI1MzksOSArMjUzOSwxMSBAQCBzZXQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRl
ZENvbnN0cmFpbnRzLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0
ZURlc2NyaXB0b3IuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvci5jcHAKKyAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncy5jcHAKKyAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UuY3BwCiAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwZTE0YjFmNDA1MzE2MzQ5ZGUwOTczM2FjZDJiYWVi
ZjgwZjIwNjU3Li4yNTUzNGFjNmY2ZmM0OTYxNTE0ZDg1MTM1MThmOGFjY2YzYTY4NzhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xNjczLDggKzE2NzMsMTIgQEAKIAkJNDEwQjdFNzIxMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVz
c2FnZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3Rv
bS5jcHAgKi87IH07CiAJCTQxMTAzQUFCMUUzOTc5MTAwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDExMDNBQTcxRTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZS5jcHAgKi87IH07CiAJCTQxMTAzQUFDMUUzOTc5MTAwMDc2OUYwMyAvKiBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMTAzQUE4MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UuaCAqLzsgfTsKKwkJNDExMDNBQUIxRTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE3MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi87IH07CisJCTQxMTAzQUFDMUUzOTc5MTAw
MDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTgxRTM5NzkwQTAwNzY5
RjE0IC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmggKi87IH07CiAJCTQxMTAz
QUFEMUUzOTc5MTAwMDc2OUYwMyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE5MUUzOTc5
MEEwMDc2OUYwMyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCAqLzsgfTsKIAkJNDEx
MDNBQUUxRTM5NzkxMDAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FBQTFF
Mzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcCAqLzsgfTsK
KwkJNDExMDNBQUQxRTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZUNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTEwM0FBOTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29j
b2EuaCAqLzsgfTsKKwkJNDExMDNBQUUxRTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMTAzQUFBMUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi87IH07CiAJCTQxMjMwODFCMTM4QzQyOTcwMEJDQ0ZDQSAv
KiBXZWJDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRjE5QjFBMDgyNDVFNUEwMDFFOUFCQyAvKiBXZWJDb3JlLmZyYW1ld29y
ayAqLzsgfTsKIAkJNDEyMzA5MTMxMzhDNDJGRjAwQkNDRkNBIC8qIEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY4MjE2Mjk5MDI5RjRGQjUwMTAwMDEzMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87
IH07CiAJCTQxMjdENTM3MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI3RDUzNjBGOEFBQjFE
MDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovOyB9OwpAQCAtOTQ2NSw4ICs5NDY5LDEyIEBA
CiAJCTQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lc3NhZ2VFdmVudEN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTAzQUE3MUUzOTc5MEEwMDc2
OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMDNBQTgxRTM5NzkwQTAwNzY5RjAzIC8qIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDExMDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDExMDNBQTgxRTM5NzkwQTAwNzY5RjE0IC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTAzQUFBMUUzOTc5MEEw
MDc2OUYwMyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMDNBQTkxRTM5NzkwQTAwNzY5RjE0IC8q
IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIzMjgwMEI5MEEwRCAvKiBSZWFkYWJs
ZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFk
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDExODlFRjcxQUQ4MjMyODAwQjkzRjY0IC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRy
b2xsZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRy
b2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTE4OUVGNzFBRDgyMzI4
MDBCOTU2NzIgLyogUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjU1MCw2ICsxNjU1OCw4IEBACiAJCQkJMDdGRkRFNjYxODFBRUQ0MjAw
NzJENDA5IC8qIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcCAqLywKIAkJCQkwN0ZGREU2NzE4
MUFFRDQyMDA3MkQ0MDkgLyogTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCAqLywKIAkJCQk1RUJC
ODkzODFDNzdCREE0MDBDNjVENDEgLyogUGVlck1lZGlhRGVzY3JpcHRpb24uaCAqLywKKwkJCQk0
MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cCAqLywKKwkJCQk0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlLmggKi8sCiAJCQkJNEE0RjY1NkIxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1l
TWVkaWFTb3VyY2UuY3BwICovLAogCQkJCTRBNEY2NTZDMUFBOTk3RjEwMEUzOENERCAvKiBSZWFs
dGltZU1lZGlhU291cmNlLmggKi8sCiAJCQkJNEE0RjY1NkQxQUE5OTdGMTAwRTM4Q0REIC8qIFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCAqLywKQEAgLTE2NTU5LDYgKzE2NTY5LDgg
QEAKIAkJCQk0QTRGNjU2RjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzLmggKi8sCiAJCQkJMkVDNDFERTIxQzA0MTBBMzAwRDI5NEZFIC8qIFJlYWx0aW1lTWVk
aWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5jcHAgKi8sCiAJCQkJMDdDMUMwRTQxQkZCNjBF
RDAwQkQyMjU2IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oICov
LAorCQkJCTQxMTAzQUE3MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuY3BwICovLAorCQkJCTQxMTAzQUE4MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2UuaCAqLywKIAkJCQkzMTM1OTEwQzFFN0REQ0I2MDBGMzA2MzAgLyog
UlRDQnVuZGxlUG9saWN5LmggKi8sCiAJCQkJMDcyMjFCQTIxN0NGMEFENDAwODQ4RTUxIC8qIFJU
Q0RhdGFDaGFubmVsSGFuZGxlci5oICovLAogCQkJCTA3MjIxQkEzMTdDRjBBRDQwMDg0OEU1MSAv
KiBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCAqLywKQEAgLTE2NjA3LDE0ICsxNjYxOSwx
NCBAQAogCQkJCTA3NDRFQ0VDMUUwQzRBRTUwMDBEMDk0NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZU1hYy5tbSAqLywKIAkJCQkwN0VFNzZFRDFCRUE2MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VNYWMuaCAqLywKIAkJCQkwN0VFNzZFRTFCRUE2MTk4MDBGODkxMzMgLyog
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gKi8sCi0JCQkJNDExMDNBQUExRTM5NzkwQTAw
NzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi8sCi0JCQkJNDExMDNB
QTkxRTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oICovLAor
CQkJCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgKi8sCisJCQkJNDExMDNBQTkxRTM5NzkwQTAwNzY5RjE0IC8qIFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggKi8sCiAJCQkJNUNERDgzMzkxRTQzMjRCQjAwNjIx
RTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgKi8sCiAJCQkJNUNERDgzM0Ex
RTQzMjRCQjAwNjIxRTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oICovLAogCQkJ
CTRBMEZGQUEzMUFBRjVFRjYwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFj
LmNwcCAqLywKIAkJCQk0QTBGRkFBNDFBQUY1RUY2MDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck1hYy5oICovLAotCQkJCTQxMTAzQUE3MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovLAotCQkJCTQxMTAzQUE4MUUzOTc5MEEwMDc2
OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCAqLywKKwkJCQk0MTEwM0FBNzFF
Mzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwICov
LAorCQkJCTQxMTAzQUE4MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYS5oICovLAogCQkJCTVDREQ4MzNCMUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwICovLAogCQkJCTVDREQ4MzNDMUU0MzI0QkIwMDYyMUU5
MiAvKiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaCAqLywKIAkJCQkwN0Q2MzczRTFCQjBC
MTEzMDAyNTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCAqLywKQEAgLTI5
NzUwLDYgKzI5NzYyLDcgQEAKIAkJCQk0MTI5QzlBQjFGNTlDNTczMDA5RDc0MDMgLyogUmVhZGFi
bGVTdHJlYW1Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDNDMTJCMDI2NzYwMEMx
QTM1OSAvKiBSZWFsdGltZUFuYWx5c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBRDFF
Mzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNEY2NTcxMUFBOTk3RjEwMEUz
OENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTRGNjU3
MjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNEEwRkZBQTIxQUFGNUVBMjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjk3NTcsNiArMjk3NzAsNyBAQAog
CQkJCTRBNEY2NTc0MUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QzFDMEU1MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFs
dGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxMTAzQUFDMUUzOTc5MTAwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQxMTAzQUFDMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTFCOTUyMjQx
RjU4QTU4RjAwOTMxREMyIC8qIFJlY29yZGluZ1N3aXp6bGVUeXBlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM0MzY4RTgwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZENDVBOTU4MTc1RDQxNEMwMEMyMUVDOCAvKiBSZWN0YW5nbGVTaGFwZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMzcyOCw2ICszMzc0Miw3IEBACiAJCQkJNDEyOUM5OEExRjU4N0ZFQjAwOUQ3
NDAzIC8qIFJlYWRhYmxlU3RyZWFtU2luay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAz
QjEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MTEwM0FBRTFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMTAzQUFFMUUzOTc5MTAwMDc2OUYxNCAvKiBS
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
Q0REODMzRTFFNDMyNERDMDA2MjFFOTIgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTRBNEY2NTcwMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRBMEZGQUExMUFBRjVFQTIwMDYy
ODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MzM3MzUsNiArMzM3NTAsNyBAQAogCQkJCTRBNEY2NTczMUFBOTk3RjEwMEUzOENERCAvKiBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkVDNDFERTQx
QzA0MTBBMzAwRDI5NEZFIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTEwM0FBQjFFMzk3OTEwMDA3NjlGMDMgLyogUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMTAzQUFC
MUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1Q0REODMzRDFFNDMyNEQ5MDA2MjFFOTIgLyogUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENDVBOTVBMTc1RDQx
NzEwMEMyMUVDOCAvKiBSZWN0YW5nbGVTaGFwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0FC
NDE4MTEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDcxYWIzZDc2ODNiM2I4
ZmZjNTAyYmYzNDY1MjQ3OTczNWMyMWFiYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAK
QEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisg
KiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIgorCisjaWYgVVNFKExJQldFQlJUQykKKworI2lu
Y2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2Uo
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1Ry
YWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCisgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFdU
Rk1vdmUoYXVkaW9UcmFja0lkKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIFN0
cmluZygpKQorICAgICwgbV9hdWRpb1RyYWNrKFdURk1vdmUoYXVkaW9UcmFjaykpCit7CisgICAg
bm90aWZ5TXV0ZWRDaGFuZ2UoIW1fYXVkaW9UcmFjayk7Cit9CisKK1JlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZTo6flJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpCit7CisgICAgc3RvcCgp
OworfQorCit2b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdE
YXRhKCkKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrKQorICAgICAgICBtX2F1ZGlvVHJhY2stPkFk
ZFNpbmsodGhpcyk7Cit9CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzdG9w
UHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1fYXVkaW9UcmFjaykKKyAgICAgICAgbV9hdWRp
b1RyYWNrLT5SZW1vdmVTaW5rKHRoaXMpOworfQorCit2b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6c2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9U
cmFja0ludGVyZmFjZT4mJiB0cmFjaykKK3sKKyAgICBBU1NFUlQoIW1fYXVkaW9UcmFjayk7Cisg
ICAgQVNTRVJUKHRyYWNrKTsKKworICAgIG1fYXVkaW9UcmFjayA9IFdURk1vdmUodHJhY2spOwor
ICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFtX2F1ZGlvVHJhY2spOworICAgIGlmIChpc1Byb2R1Y2lu
Z0RhdGEoKSkKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOworfQorCitjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2U6OmNhcGFiaWxpdGllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXM6OmVtcHR5Q2FwYWJpbGl0aWVzKCk7Cit9CisKK2NvbnN0IFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXR0
aW5ncygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOworfQorCit9CisK
KyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40YzM2M2I2MmRhYWI0ODY2MzgwMDlhZGM5MWUzY2M5MjNiMDMyNTA0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1l
cyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgi
CisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgPHdlYnJ0Yy9hcGkv
bWVkaWFzdHJlYW1pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlIDog
cHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UsIHByaXZhdGUgd2VicnRjOjpBdWRpb1RyYWNrU2lu
a0ludGVyZmFjZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U+IGNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50
ZXJmYWNlPiYmLCBTdHJpbmcmJik7CisKKyAgICB2b2lkIHNldFNvdXJjZVRyYWNrKHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYpOworCitwcm90ZWN0ZWQ6
CisgICAgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKKyAgICB+UmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlKCk7CisKK3ByaXZhdGU6CisgICAgLy8gd2VicnRjOjpBdWRpb1RyYWNr
U2lua0ludGVyZmFjZSBBUEkKKyAgICB2aXJ0dWFsIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIC8q
IGF1ZGlvRGF0YSAqLywgaW50IC8qIGJpdHNQZXJTYW1wbGUgKi8sIGludCAvKiBzYW1wbGVSYXRl
ICovLCBzaXplX3QgLyogbnVtYmVyT2ZDaGFubmVscyAqLywgc2l6ZV90IC8qIG51bWJlck9mRnJh
bWVzICovKSB7IH07CisKKyAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlIEFQSQorICAgIHZvaWQg
c3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7CisgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgp
ICBmaW5hbDsKKworICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNh
cGFiaWxpdGllcygpIGNvbnN0IGZpbmFsOworICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBmaW5hbDsKKworICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncyBtX2N1cnJlbnRTZXR0aW5nczsKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiBtX2F1ZGlvVHJhY2s7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmYzYTViZWI2ZjVjY2MwMTM2OTRlMDkx
NDAyZjI3ZjI4MjBmN2ZiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKQEAgLTAsMCAr
MSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCIK
KworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRpb0Zvcm1hdC5o
IgorI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQorICAgIDogbV9h
dWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkKKyAgICAsIG1fc2lsZW5jZUF1ZGlvVGlt
ZXIoKnRoaXMsICZSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRTaWxlbmNlKQorewor
ICAgIG1fYXVkaW9Tb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKKyAgICBpbml0aWFsaXplQ29u
dmVydGVyKCk7Cit9CisKK2Jvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZXRTb3Vy
Y2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIG5ld1NvdXJjZSkKK3sKKyAgICBtX2F1
ZGlvU291cmNlLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CisgICAgbV9hdWRpb1NvdXJjZSA9IFdU
Rk1vdmUobmV3U291cmNlKTsKKyAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7
CisKKyAgICBpbml0aWFsaXplQ29udmVydGVyKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjppbml0aWFsaXplQ29udmVydGVyKCkKK3sK
KyAgICBtX211dGVkID0gbV9hdWRpb1NvdXJjZS0+bXV0ZWQoKTsKKyAgICBtX2VuYWJsZWQgPSBt
X2F1ZGlvU291cmNlLT5lbmFibGVkKCk7CisgICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOworfQor
Cit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c3RvcCgpCit7CisgICAgbV9zaWxl
bmNlQXVkaW9UaW1lci5zdG9wKCk7CisgICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIo
KnRoaXMpOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlTXV0
ZWRDaGFuZ2VkKCkKK3sKKyAgICBtX211dGVkID0gbV9hdWRpb1NvdXJjZS0+bXV0ZWQoKTsKKyAg
ICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCgpCit7CisgICAgbV9lbmFibGVkID0gbV9hdWRp
b1NvdXJjZS0+ZW5hYmxlZCgpOworICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKK30KKwordm9p
ZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmhhbmRsZU11dGVkSWZOZWVkZWQoKQorewor
ICAgIGJvb2wgaXNTaWxlbmNlZCA9IG1fbXV0ZWQgfHwgIW1fZW5hYmxlZDsKKyAgICBpZiAoaXNT
aWxlbmNlZCAmJiAhbV9zaWxlbmNlQXVkaW9UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3Np
bGVuY2VBdWRpb1RpbWVyLnN0YXJ0UmVwZWF0aW5nKDFfcyk7CisgICAgaWYgKCFpc1NpbGVuY2Vk
ICYmIG1fc2lsZW5jZUF1ZGlvVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9zaWxlbmNlQXVk
aW9UaW1lci5zdG9wKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVjOTEzM2YwZDhiNTg3MmY1N2MwOWE4ZDc1ZmYyZDA3OWFmNzg3OWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UuaApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
cmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisKKyNpZiBVU0UoTElCV0VCUlRD
KQorCisjaW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHdlYnJ0Yy9hcGkv
bWVkaWFzdHJlYW1pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIHdlYnJ0YyB7CitjbGFzcyBBdWRpb1RyYWNrSW50ZXJmYWNlOwor
Y2xhc3MgQXVkaW9UcmFja1NpbmtJbnRlcmZhY2U7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4sIHB1YmxpYyB3ZWJydGM6OkF1
ZGlvU291cmNlSW50ZXJmYWNlLCBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNl
cnZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2U+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgYXVkaW9Tb3VyY2UpOwor
CisgICAgflJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSgpIHsgc3RvcCgpOyB9CisKKyAgICB2
b2lkIHN0b3AoKTsKKworICAgIGJvb2wgc2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZT4mJik7CisgICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXVkaW9Tb3VyY2UuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+
JiYpOworCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2VuZFNpbGVuY2UoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIHB1bGxBdWRpb0Rh
dGEoKSB7IH07CisKKyAgICBWZWN0b3I8d2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSo+
IG1fc2lua3M7CisgICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZW5hYmxl
ZCB7IHRydWUgfTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgQWRkU2luayh3ZWJydGM6
OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lua3MuYXBwZW5kKHNpbmspOyB9
CisgICAgdmlydHVhbCB2b2lkIFJlbW92ZVNpbmsod2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVy
ZmFjZSogc2luaykgeyBtX3NpbmtzLnJlbW92ZUZpcnN0KHNpbmspOyB9CisKKyAgICBpbnQgQWRk
UmVmKCkgY29uc3QgZmluYWwgeyByZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7IH0KKyAgICBpbnQg
UmVsZWFzZSgpIGNvbnN0IGZpbmFsIHsgZGVyZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7IH0KKyAg
ICBTb3VyY2VTdGF0ZSBzdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGtMaXZlOyB9CisgICAg
Ym9vbCByZW1vdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgUmVn
aXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwgeyB9CisgICAg
dm9pZCBVbnJlZ2lzdGVyT2JzZXJ2ZXIod2VicnRjOjpPYnNlcnZlckludGVyZmFjZSopIGZpbmFs
IHsgfQorCisgICAgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoKTsKKyAgICB2b2lkIHNvdXJjZUVu
YWJsZWRDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShj
b25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIHsgfTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNo
aW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSB7IHJldHVybiBmYWxzZTsgfTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGltaXQoKSB7IHJldHVy
biBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnVmZmVyZWRFbm91Z2hEYXRhKCkgeyBy
ZXR1cm4gZmFsc2U7IH07CisKKyAgICAvLyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2
ZXIgQVBJCisgICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSYpIGZpbmFsIHsgc291cmNlTXV0ZWRDaGFuZ2VkKCk7IH0KKyAgICB2b2lkIHRyYWNrRW5hYmxl
ZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IHNvdXJjZUVuYWJsZWRD
aGFuZ2VkKCk7IH0KKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYsIGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lLCBjb25zdCBQbGF0Zm9ybUF1
ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24s
IHNpemVfdCBzYW1wbGVDb3VudCkgeyBhdWRpb1NhbXBsZXNBdmFpbGFibGUobWVkaWFUaW1lLCBk
YXRhLCBkZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQpOyB9CisgICAgdm9pZCB0cmFja0VuZGVkKE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9CisgICAgdm9pZCB0cmFja1NldHRpbmdz
Q2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQorCisgICAgdm9pZCBp
bml0aWFsaXplQ29udmVydGVyKCk7CisKKyAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+
IG1fYXVkaW9Tb3VyY2U7CisKKyAgICBUaW1lciBtX3NpbGVuY2VBdWRpb1RpbWVyOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDg3NTM4Y2QwNTViNGRjYTQ5OTIxYjJkNTFkODBmMDgyZWIyMjY3MzcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqICAgIGRpc3RyaWJ1dGlvbi4K
LSAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMgY29udHJpYnV0b3JzCi0gKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKLSAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIgotCi0jaWYgVVNF
KExJQldFQlJUQykKLQotI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKLSNpbmNs
dWRlICJDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKLSNpbmNsdWRlICJMaWJXZWJSVENBdWRp
b0Zvcm1hdC5oIgotI2luY2x1ZGUgIldlYkF1ZGlvQnVmZmVyTGlzdC5oIgotI2luY2x1ZGUgIldl
YkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmgiCi0jaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlv
bi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KLQotI2luY2x1ZGUgIkNvcmVNZWRpYVNvZnRMaW5r
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZT4gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUocnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1RyYWNrLCBTdHJpbmcmJiBh
dWRpb1RyYWNrSWQpCi17Ci0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3IFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2spLCBXVEZNb3ZlKGF1ZGlvVHJh
Y2tJZCkpKTsKLSAgICBzb3VyY2UtPnN0YXJ0KCk7Ci0gICAgcmV0dXJuIHNvdXJjZTsKLX0KLQot
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2Uo
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1Ry
YWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCi0gICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFdU
Rk1vdmUoYXVkaW9UcmFja0lkKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIFN0
cmluZygpKQotICAgICwgbV9hdWRpb1RyYWNrKFdURk1vdmUoYXVkaW9UcmFjaykpCi17Ci0gICAg
bm90aWZ5TXV0ZWRDaGFuZ2UoIW1fYXVkaW9UcmFjayk7Ci19Ci0KLVJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZTo6flJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpCi17Ci0gICAgc3RvcCgp
OwotfQotCi0KLXN0YXRpYyBpbmxpbmUgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVh
bURlc2NyaXB0aW9uKHNpemVfdCBzYW1wbGVSYXRlLCBzaXplX3QgY2hhbm5lbENvdW50KQotewot
ICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7Ci0gICAgRmlsbE91
dEFTQkRGb3JMUENNKHN0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSwgY2hhbm5lbENvdW50LCBMaWJX
ZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBs
ZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0Zsb2F0LCBMaWJXZWJSVENBdWRpb0Zvcm1h
dDo6aXNCaWdFbmRpYW4sIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc05vbkludGVybGVhdmVkKTsK
LSAgICByZXR1cm4gc3RyZWFtRm9ybWF0OwotfQotCi12b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6T25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJTYW1wbGUs
IGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzKQotewotICAgIC8vIFdlIG1heSByZWNlaXZlIE9uRGF0YSBjYWxscyB3aXRoIGVtcHR5
IHNvdW5kIGRhdGEgKG1vbm8sIHNhbXBsZXMgZXF1YWwgdG8gemVybyBhbmQgc2FtcGxlUmF0ZSBl
cXVhbCB0byAxNjAwMCkgd2hlbiBzdGFydGluZyB0aGUgY2FsbC4KLSAgICAvLyBGSVhNRTogRm9y
IHRoZSBtb21lbnQgd2Ugc2tpcCB0aGVtLCB3ZSBzaG91bGQgZmluZCBhIGJldHRlciBzb2x1dGlv
biBhdCBsaWJ3ZWJydGMgbGV2ZWwgdG8gbm90IGJlIGNhbGxlZCB1bnRpbCBnZXR0aW5nIHNvbWUg
cmVhbCBkYXRhLgotICAgIGlmIChzYW1wbGVSYXRlID09IDE2MDAwICYmIG51bWJlck9mQ2hhbm5l
bHMgPT0gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGJpdHNQZXJTYW1wbGUgPT0g
MTYpOwotICAgIEFTU0VSVChudW1iZXJPZkNoYW5uZWxzID09IDEgfHwgbnVtYmVyT2ZDaGFubmVs
cyA9PSAyKTsKLSAgICBBU1NFUlQoc2FtcGxlUmF0ZSA9PSA0ODAwMCk7Ci0KLSAgICBDTVRpbWUg
c3RhcnRUaW1lID0gQ01UaW1lTWFrZShtX251bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKLSAg
ICBhdXRvIG1lZGlhVGltZSA9IFBBTDo6dG9NZWRpYVRpbWUoc3RhcnRUaW1lKTsKLSAgICBtX251
bWJlck9mRnJhbWVzICs9IG51bWJlck9mRnJhbWVzOwotCi0gICAgQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uIG5ld0Rlc2NyaXB0aW9uID0gc3RyZWFtRGVzY3JpcHRpb24oc2FtcGxlUmF0ZSwg
bnVtYmVyT2ZDaGFubmVscyk7Ci0KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBuZWVkIHRv
IGRvIHRoZSBleHRyYSBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgY29weS4KLSAgICAvLyBJbnN0ZWFk
LCB3ZSBzaG91bGQgYmUgYWJsZSB0byBkaXJlY3RseSBwYXNzIGF1ZGlvRGF0YSBwb2ludGVyLgot
ICAgIFdlYkF1ZGlvQnVmZmVyTGlzdCBhdWRpb0J1ZmZlckxpc3QgeyBDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24obmV3RGVzY3JpcHRpb24pLCBXVEY6OnNhZmVDYXN0PHVpbnQzMl90PihudW1iZXJP
ZkZyYW1lcykgfTsKLSAgICBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5dGVTaXpl
ID0gbnVtYmVyT2ZDaGFubmVscyAqIG51bWJlck9mRnJhbWVzICogYml0c1BlclNhbXBsZSAvIDg7
Ci0gICAgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bU51bWJlckNoYW5uZWxzID0gbnVtYmVy
T2ZDaGFubmVsczsKLQotICAgIGlmIChtdXRlZCgpKQotICAgICAgICBtZW1zZXQoYXVkaW9CdWZm
ZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGEsIDAsIGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1E
YXRhQnl0ZVNpemUpOwotICAgIGVsc2UKLSAgICAgICAgbWVtY3B5KGF1ZGlvQnVmZmVyTGlzdC5i
dWZmZXIoMCktPm1EYXRhLCBhdWRpb0RhdGEsIGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1E
YXRhQnl0ZVNpemUpOwotCi0gICAgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKG1lZGlhVGltZSwgYXVk
aW9CdWZmZXJMaXN0LCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24obmV3RGVzY3JpcHRpb24pLCBu
dW1iZXJPZkZyYW1lcyk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpz
dGFydFByb2R1Y2luZ0RhdGEoKQotewotICAgIGlmIChtX2F1ZGlvVHJhY2spCi0gICAgICAgIG1f
YXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKLX0KLQotdm9pZCBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKLXsKLSAgICBpZiAobV9hdWRpb1RyYWNrKQot
ICAgICAgICBtX2F1ZGlvVHJhY2stPlJlbW92ZVNpbmsodGhpcyk7Ci19Ci0KLXZvaWQgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIHRyYWNrKQotewotICAgIEFTU0VSVCghbV9h
dWRpb1RyYWNrKTsKLSAgICBBU1NFUlQodHJhY2spOwotCi0gICAgbV9hdWRpb1RyYWNrID0gV1RG
TW92ZSh0cmFjayk7Ci0gICAgbm90aWZ5TXV0ZWRDaGFuZ2UoIW1fYXVkaW9UcmFjayk7Ci0gICAg
aWYgKGlzUHJvZHVjaW5nRGF0YSgpKQotICAgICAgICBtX2F1ZGlvVHJhY2stPkFkZFNpbmsodGhp
cyk7Ci19Ci0KLWNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZTo6Y2FwYWJpbGl0aWVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6ZW1wdHlDYXBhYmlsaXRpZXMoKTsKLX0K
LQotY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U6OnNldHRpbmdzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jdXJyZW50U2V0dGlu
Z3M7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZi
NjAyMjA4NTE5N2ZmMzlhNjg1NDcwMWVmYjIwZmI5ZTBkZDRlNDIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSAqICAgIGRpc3RyaWJ1dGlvbi4KLSAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCi0gKiAg
ICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
IHRoaXMKLSAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBVU0UoTElCV0VCUlRDKQot
Ci0jaW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNv
dXJjZS5oIgotI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgotI2luY2x1ZGUg
PHdlYnJ0Yy9hcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0KLXR5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24g
KkNNRm9ybWF0RGVzY3JpcHRpb25SZWY7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM7Ci0KLWNsYXNzIFJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZSBmaW5hbCA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlLCBwcml2YXRlIHdl
YnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBjcmVhdGUocnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYpOwotCi0gICAgdm9pZCBzZXRT
b3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNl
PiYmKTsKLQotcHJpdmF0ZToKLSAgICBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UocnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYpOwot
ICAgIH5SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UoKTsKLQotICAgIC8vIHdlYnJ0Yzo6QXVk
aW9UcmFja1NpbmtJbnRlcmZhY2UgQVBJCi0gICAgdm9pZCBPbkRhdGEoY29uc3Qgdm9pZCogYXVk
aW9EYXRhLCBpbnQgYml0c1BlclNhbXBsZSwgaW50IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJP
ZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpIGZpbmFsOwotCi0gICAgLy8gUmVhbHRp
bWVNZWRpYVNvdXJjZSBBUEkKLSAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwot
ICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSAgZmluYWw7Ci0KLSAgICBjb25zdCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5hbDsKLSAg
ICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmlu
YWw7Ci0KLSAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7
Ci0gICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4gbV9h
dWRpb1RyYWNrOwotCi0gICAgdWludDY0X3QgbV9udW1iZXJPZkZyYW1lcyB7IDAgfTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42M2Y3ODMwY2NlZGM0MWE0YjMyOGQ1N2U3NmRlNTE2Y2NlZDY4YzA4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oIgorCisjaWYgVVNFKExJQldFQlJUQykK
KworI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRpb0Zvcm1hdC5oIgor
I2luY2x1ZGUgIldlYkF1ZGlvQnVmZmVyTGlzdC5oIgorI2luY2x1ZGUgIldlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDLmgiCisjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVB
VkZvdW5kYXRpb24uaD4KKworI2luY2x1ZGUgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZT4gUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1RyYWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQp
Cit7CisgICAgYXV0byBzb3VyY2UgPSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYTo6
Y3JlYXRlKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFja0lkKSk7CisgICAg
c291cmNlLT5zdGFydCgpOworICAgIHJldHVybiBXVEZNb3ZlKHNvdXJjZSk7Cit9CisKK1JlZjxS
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYT4gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlQ29jb2E6OmNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50
ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYShXVEZNb3Zl
KGF1ZGlvVHJhY2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpKTsKK30KKworUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlQ29jb2E6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hKHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYgYXVkaW9UcmFj
aywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQorICAgIDogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFja0lkKSkKK3sKK30KKwor
c3RhdGljIGlubGluZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRGVzY3JpcHRp
b24oc2l6ZV90IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291bnQpCit7CisgICAgQXVkaW9T
dHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKKyAgICBGaWxsT3V0QVNCREZvckxQ
Q00oc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIExpYldlYlJUQ0F1ZGlv
Rm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGli
V2ViUlRDQXVkaW9Gb3JtYXQ6OmlzRmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0JpZ0Vu
ZGlhbiwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQpOworICAgIHJldHVy
biBzdHJlYW1Gb3JtYXQ7Cit9CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29j
b2E6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGxlLCBpbnQg
c2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1l
cykKK3sKKyAgICAvLyBXZSBtYXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0aCBlbXB0eSBzb3Vu
ZCBkYXRhIChtb25vLCBzYW1wbGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBsZVJhdGUgZXF1YWwg
dG8gMTYwMDApIHdoZW4gc3RhcnRpbmcgdGhlIGNhbGwuCisgICAgLy8gRklYTUU6IEZvciB0aGUg
bW9tZW50IHdlIHNraXAgdGhlbSwgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gYXQg
bGlid2VicnRjIGxldmVsIHRvIG5vdCBiZSBjYWxsZWQgdW50aWwgZ2V0dGluZyBzb21lIHJlYWwg
ZGF0YS4KKyAgICBpZiAoc2FtcGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJPZkNoYW5uZWxzID09
IDEpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChiaXRzUGVyU2FtcGxlID09IDE2KTsK
KyAgICBBU1NFUlQobnVtYmVyT2ZDaGFubmVscyA9PSAxIHx8IG51bWJlck9mQ2hhbm5lbHMgPT0g
Mik7CisgICAgQVNTRVJUKHNhbXBsZVJhdGUgPT0gNDgwMDApOworCisgICAgQ01UaW1lIHN0YXJ0
VGltZSA9IENNVGltZU1ha2UobV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CisgICAgYXV0
byBtZWRpYVRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7CisgICAgbV9udW1iZXJP
ZkZyYW1lcyArPSBudW1iZXJPZkZyYW1lczsKKworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbiBuZXdEZXNjcmlwdGlvbiA9IHN0cmVhbURlc2NyaXB0aW9uKHNhbXBsZVJhdGUsIG51bWJl
ck9mQ2hhbm5lbHMpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBkbyB0
aGUgZXh0cmEgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGNvcHkuCisgICAgLy8gSW5zdGVhZCwgd2Ug
c2hvdWxkIGJlIGFibGUgdG8gZGlyZWN0bHkgcGFzcyBhdWRpb0RhdGEgcG9pbnRlci4KKyAgICBX
ZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uKG5ld0Rlc2NyaXB0aW9uKSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4obnVtYmVyT2ZGcmFt
ZXMpIH07CisgICAgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFCeXRlU2l6ZSA9IG51
bWJlck9mQ2hhbm5lbHMgKiBudW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1wbGUgLyA4OworICAg
IGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9IG51bWJlck9mQ2hh
bm5lbHM7CisKKyAgICBpZiAobXV0ZWQoKSkKKyAgICAgICAgbWVtc2V0KGF1ZGlvQnVmZmVyTGlz
dC5idWZmZXIoMCktPm1EYXRhLCAwLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5
dGVTaXplKTsKKyAgICBlbHNlCisgICAgICAgIG1lbWNweShhdWRpb0J1ZmZlckxpc3QuYnVmZmVy
KDApLT5tRGF0YSwgYXVkaW9EYXRhLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5tRGF0YUJ5
dGVTaXplKTsKKworICAgIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGF1ZGlvQnVm
ZmVyTGlzdCwgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgbnVtYmVy
T2ZGcmFtZXMpOworfQorCit9CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDEw
NDc1ZTVlY2EyZmZjOTE0MzAzNDcxYjY1ZmIxYTg5N2RhYmE3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZUNvY29hLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1
ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIgorCisjaW5jbHVkZSA8Q29yZUF1ZGlv
L0NvcmVBdWRpb1R5cGVzLmg+CisKK3R5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0
RGVzY3JpcHRpb24gKkNNRm9ybWF0RGVzY3JpcHRpb25SZWY7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM7CisKK2NsYXNzIFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0aW1lSW5jb21p
bmdBdWRpb1NvdXJjZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2VDb2NvYT4gY3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlv
VHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKKworcHJpdmF0ZToKKyAgICBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2VDb2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Ry
YWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CisKKyAgICAvLyB3ZWJydGM6OkF1ZGlvVHJhY2tT
aW5rSW50ZXJmYWNlIEFQSQorICAgIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwg
aW50IGJpdHNQZXJTYW1wbGUsIGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVs
cywgc2l6ZV90IG51bWJlck9mRnJhbWVzKSBmaW5hbDsKKworICAgIHVpbnQ2NF90IG1fbnVtYmVy
T2ZGcmFtZXMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNl
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDkxMDFkYzQzNzkxN2Q1MTBlNzRi
ZmM3NzUxYzdjNzBjN2RjMjJhNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICog
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oIgotCi0jaWYg
VVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgot
I2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCi0jaW5jbHVkZSAiTGliV2ViUlRDUHJv
dmlkZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5lIEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiBsaWJ3ZWJydGNBdWRpb0Zvcm1hdChGbG9hdDY0IHNhbXBsZVJh
dGUsIHNpemVfdCBjaGFubmVsQ291bnQpCi17Ci0gICAgLy8gRklYTUU6IE1pY3JvcGhvbmVzIGNh
biBoYXZlIG1vcmUgdGhhbiB0d28gY2hhbm5lbHMuIEluIHN1Y2ggY2FzZSwgd2Ugc2hvdWxkIGRv
IHRoZSBtaXggZG93biBiYXNlZCBvbiBBdWRpb0NoYW5uZWxMYXlvdXRUYWcuCi0gICAgc2l6ZV90
IGxpYldlYlJUQ0NoYW5uZWxDb3VudCA9IGNoYW5uZWxDb3VudCA+PSAyID8gMiA6IGNoYW5uZWxD
b3VudDsKLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAg
IEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUsIGxpYldlYlJUQ0No
YW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1
ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNGbG9hdCwgTGli
V2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6aXNO
b25JbnRlcmxlYXZlZCk7Ci0gICAgcmV0dXJuIHN0cmVhbUZvcm1hdDsKLX0KLQotUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQotICAgIDogbV9hdWRpb1NvdXJjZShX
VEZNb3ZlKGF1ZGlvU291cmNlKSkKLSAgICAsIG1fc2FtcGxlQ29udmVydGVyKEF1ZGlvU2FtcGxl
RGF0YVNvdXJjZTo6Y3JlYXRlKExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRlICogMikp
Ci0gICAgLCBtX3NpbGVuY2VBdWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlOjpzZW5kU2lsZW5jZSkKLXsKLSAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNlcnZlcigq
dGhpcyk7Ci0gICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwotfQotCi1ib29sIFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4m
JiBuZXdTb3VyY2UpCi17Ci0gICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMp
OwotICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Ci0gICAgbV9hdWRpb1Nv
dXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwotCi0gICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
aW5pdGlhbGl6ZUNvbnZlcnRlcigpCi17Ci0gICAgbV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11
dGVkKCk7Ci0gICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxlZCgpOwotICAgIGhh
bmRsZU11dGVkSWZOZWVkZWQoKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2U6OnN0b3AoKQotewotICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgpOwotICAgIG1fYXVk
aW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCi17Ci0gICAgbV9tdXRlZCA9IG1f
YXVkaW9Tb3VyY2UtPm11dGVkKCk7Ci0gICAgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwotfQotCi12
b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxlZENoYW5nZWQoKQot
ewotICAgIG1fZW5hYmxlZCA9IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsKLSAgICBoYW5kbGVN
dXRlZElmTmVlZGVkKCk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpo
YW5kbGVNdXRlZElmTmVlZGVkKCkKLXsKLSAgICBib29sIGlzU2lsZW5jZWQgPSBtX211dGVkIHx8
ICFtX2VuYWJsZWQ7Ci0gICAgbV9zYW1wbGVDb252ZXJ0ZXItPnNldE11dGVkKGlzU2lsZW5jZWQp
OwotICAgIGlmIChpc1NpbGVuY2VkICYmICFtX3NpbGVuY2VBdWRpb1RpbWVyLmlzQWN0aXZlKCkp
Ci0gICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RhcnRSZXBlYXRpbmcoMV9zKTsKLSAgICBp
ZiAoIWlzU2lsZW5jZWQgJiYgbV9zaWxlbmNlQXVkaW9UaW1lci5pc0FjdGl2ZSgpKQotICAgICAg
ICBtX3NpbGVuY2VBdWRpb1RpbWVyLnN0b3AoKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2U6OnNlbmRTaWxlbmNlKCkKLXsKLSAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2Fs
bE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyldIHsKLSAgICAgICAgc2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVh
bURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKLSAgICAgICAgc2l6ZV90IGJ1ZmZlclNp
emUgPSBjaHVua1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVT
aXplICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7Ci0KLSAg
ICAgICAgaWYgKCFidWZmZXJTaXplKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1f
YXVkaW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKLSAgICAgICAgbWVtc2V0KG1fYXVkaW9CdWZm
ZXIuZGF0YSgpLCAwLCBidWZmZXJTaXplKTsKLSAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3Np
bmtzKQotICAgICAgICAgICAgc2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJX
ZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5z
YW1wbGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygp
LCBjaHVua1NhbXBsZUNvdW50KTsKLSAgICB9KTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2U6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpCi17Ci0g
ICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJl
YW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9
IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0K
LSAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOwot
ICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+IHJlYWRBdWRpb0R1cmF0aW9uICsgMC41
OwotfQotCi1ib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aXNSZWFjaGluZ0J1ZmZl
cmVkQXVkaW9EYXRhTG93TGltaXQoKQotewotICAgIGF1dG8gd3JpdHRlbkF1ZGlvRHVyYXRpb24g
PSBtX3dyaXRlQ291bnQgLyBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwot
ICAgIGF1dG8gcmVhZEF1ZGlvRHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1fb3V0cHV0U3RyZWFt
RGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotCi0gICAgQVNTRVJUKHdyaXR0ZW5BdWRpb0R1cmF0
aW9uID49IHJlYWRBdWRpb0R1cmF0aW9uKTsKLSAgICByZXR1cm4gd3JpdHRlbkF1ZGlvRHVyYXRp
b24gPCByZWFkQXVkaW9EdXJhdGlvbiArIDAuMTsKLX0KLQotYm9vbCBSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2U6Omhhc0J1ZmZlcmVkRW5nb3VoRGF0YSgpCi17Ci0gICAgYXV0byB3cml0dGVu
QXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5z
YW1wbGVSYXRlKCk7Ci0gICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8g
bV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAgICBBU1NFUlQod3Jp
dHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOwotICAgIHJldHVybiB3cml0
dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbiArIDAuMDE7Ci19Ci0KLXZvaWQg
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3Qg
TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiYgc3RyZWFtRGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3Vu
dCkKLXsKLSAgICBpZiAobV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uICE9IHN0cmVhbURlc2NyaXB0
aW9uKSB7Ci0gICAgICAgIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbiA9IHRvQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uKHN0cmVhbURlc2NyaXB0aW9uKTsKLSAgICAgICAgYXV0byBzdGF0dXMgID0g
bV9zYW1wbGVDb252ZXJ0ZXItPnNldElucHV0Rm9ybWF0KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlv
bik7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsKLQotICAgICAgICBt
X291dHB1dFN0cmVhbURlc2NyaXB0aW9uID0gbGlid2VicnRjQXVkaW9Gb3JtYXQoTGliV2ViUlRD
QXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUsIHN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5l
bHMoKSk7Ci0gICAgICAgIHN0YXR1cyA9IG1fc2FtcGxlQ29udmVydGVyLT5zZXRPdXRwdXRGb3Jt
YXQobV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKTsKLSAgICAg
ICAgQVNTRVJUKCFzdGF0dXMpOwotICAgIH0KLQotICAgIC8vIExldCdzIHNraXAgcHVzaGluZyBz
YW1wbGVzIGlmIHdlIGFyZSB0b28gc2xvdyBwdWxsaW5nIHRoZW0uCi0gICAgaWYgKG1fc2tpcHBp
bmdBdWRpb0RhdGEpIHsKLSAgICAgICAgaWYgKCFpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFM
b3dMaW1pdCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3NraXBwaW5nQXVkaW9E
YXRhID0gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFI
aWdoTGltaXQoKSkgewotICAgICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gdHJ1ZTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIElmIHdlIGNoYW5nZSB0aGUgYXVkaW8gdHJhY2sg
b3IgaXRzIHNhbXBsZSByYXRlIGNoYW5nZXMsIHRoZSB0aW1lc3RhbXAgYmFzZWQgb24gbV93cml0
ZUNvdW50IG1heSBiZSB3cm9uZy4KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVwZGF0ZSBtX3dy
aXRlQ291bnQgdG8gYmUgdmFsaWQgYWNjb3JkaW5nIHRoZSBuZXcgc2FtcGxlUmF0ZS4KLSAgICBt
X3NhbXBsZUNvbnZlcnRlci0+cHVzaFNhbXBsZXMoTWVkaWFUaW1lKG1fd3JpdGVDb3VudCwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkp
KSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7Ci0gICAgbV93cml0ZUNvdW50ICs9IHNhbXBsZUNv
dW50OwotCi0gICAgaWYgKCFoYXNCdWZmZXJlZEVuZ291aERhdGEoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMt
PnB1bGxBdWRpb0RhdGEoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2U6OnB1bGxBdWRpb0RhdGEoKQotewotICAgIC8vIGxpYndlYnJ0YyBleHBlY3RzIDEw
IG1zIGNodW5rcy4KLSAgICBzaXplX3QgY2h1bmtTYW1wbGVDb3VudCA9IG1fb3V0cHV0U3RyZWFt
RGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpIC8gMTAwOwotICAgIHNpemVfdCBidWZmZXJTaXplID0g
Y2h1bmtTYW1wbGVDb3VudCAqIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAq
IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpOwotICAgIG1fYXVk
aW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKLQotICAgIEF1ZGlvQnVmZmVyTGlzdCBidWZmZXJM
aXN0OwotICAgIGJ1ZmZlckxpc3QubU51bWJlckJ1ZmZlcnMgPSAxOwotICAgIGJ1ZmZlckxpc3Qu
bUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5u
dW1iZXJPZkNoYW5uZWxzKCk7Ci0gICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVT
aXplID0gYnVmZmVyU2l6ZTsKLSAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhID0gbV9h
dWRpb0J1ZmZlci5kYXRhKCk7Ci0KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVsbEF2YWxhaWJs
ZVNhbXBsZXNBc0NodW5rcyhidWZmZXJMaXN0LCBjaHVua1NhbXBsZUNvdW50LCBtX3JlYWRDb3Vu
dCwgW3RoaXMsIGNodW5rU2FtcGxlQ291bnRdIHsKLSAgICAgICAgbV9yZWFkQ291bnQgKz0gY2h1
bmtTYW1wbGVDb3VudDsKLSAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQotICAgICAg
ICAgICAgc2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zv
cm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCks
IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygpLCBjaHVua1NhbXBs
ZUNvdW50KTsKLSAgICB9KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2Uu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGViYzgwNGU0OTU4NTMwYmU2NjAyZmZk
NjFhMmI1M2M3ZWI2ZTU3NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
Ci0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgot
I2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3ZWJydGMvYXBpL21lZGlh
c3RyZWFtaW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKLWNsYXNz
IEF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+LCBwdWJsaWMgd2VicnRjOjpB
dWRpb1NvdXJjZUludGVyZmFjZSwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2Jz
ZXJ2ZXIgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZShXVEZNb3Zl
KGF1ZGlvU291cmNlKSkpOyB9Ci0gICAgflJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSgpIHsg
c3RvcCgpOyB9Ci0KLSAgICB2b2lkIHN0b3AoKTsKLQotICAgIGJvb2wgc2V0U291cmNlKFJlZjxN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7Ci0gICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUm
IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Tb3VyY2UuZ2V0KCk7IH0KLQotcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlPiYmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBBZGRTaW5rKHdlYnJ0Yzo6
QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspIHsgbV9zaW5rcy5hcHBlbmQoc2luayk7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgUmVtb3ZlU2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJm
YWNlKiBzaW5rKSB7IG1fc2lua3MucmVtb3ZlRmlyc3Qoc2luayk7IH0KLQotICAgIGludCBBZGRS
ZWYoKSBjb25zdCBmaW5hbCB7IHJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQotICAgIGludCBS
ZWxlYXNlKCkgY29uc3QgZmluYWwgeyBkZXJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsgfQotICAg
IFNvdXJjZVN0YXRlIHN0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4ga0xpdmU7IH0KLSAgICBi
b29sIHJlbW90ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBSZWdp
c3Rlck9ic2VydmVyKHdlYnJ0Yzo6T2JzZXJ2ZXJJbnRlcmZhY2UqKSBmaW5hbCB7IH0KLSAgICB2
b2lkIFVucmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmluYWwg
eyB9Ci0KLSAgICB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgpOwotICAgIHZvaWQgc291cmNlRW5h
YmxlZENoYW5nZWQoKTsKLSAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRp
YVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mLCBzaXplX3QpOwotCi0gICAgYm9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFI
aWdoTGltaXQoKTsKLSAgICBib29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUxvd0xpbWl0
KCk7Ci0gICAgYm9vbCBoYXNCdWZmZXJlZEVuZ291aERhdGEoKTsKLQotICAgIC8vIE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciBBUEkKLSAgICB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2Vk
KE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyBzb3VyY2VNdXRlZENoYW5nZWQoKTsg
fQotICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYp
IGZpbmFsIHsgc291cmNlRW5hYmxlZENoYW5nZWQoKTsgfQotICAgIHZvaWQgYXVkaW9TYW1wbGVz
QXZhaWxhYmxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgY29uc3QgTWVkaWFUaW1lJiBtZWRp
YVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KSBmaW5hbCB7IGF1ZGlv
U2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3Vu
dCk7IH0KLSAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5h
bCB7IH0KLSAgICB2b2lkIHRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlJikgZmluYWwgeyB9Ci0KLSAgICB2b2lkIHB1bGxBdWRpb0RhdGEoKTsKLQotICAgIHZvaWQg
aW5pdGlhbGl6ZUNvbnZlcnRlcigpOwotICAgIHZvaWQgaGFuZGxlTXV0ZWRJZk5lZWRlZCgpOwot
ICAgIHZvaWQgc2VuZFNpbGVuY2UoKTsKLQotICAgIFZlY3Rvcjx3ZWJydGM6OkF1ZGlvVHJhY2tT
aW5rSW50ZXJmYWNlKj4gbV9zaW5rczsKLSAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+
IG1fYXVkaW9Tb3VyY2U7Ci0gICAgUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9zYW1wbGVD
b252ZXJ0ZXI7Ci0gICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG1faW5wdXRTdHJlYW1EZXNj
cmlwdGlvbjsKLSAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9vdXRwdXRTdHJlYW1EZXNj
cmlwdGlvbjsKLQotICAgIFZlY3Rvcjx1aW50OF90PiBtX2F1ZGlvQnVmZmVyOwotICAgIHVpbnQ2
NF90IG1fcmVhZENvdW50IHsgMCB9OwotICAgIHVpbnQ2NF90IG1fd3JpdGVDb3VudCB7IDAgfTsK
LSAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9
OwotICAgIGJvb2wgbV9za2lwcGluZ0F1ZGlvRGF0YSB7IGZhbHNlIH07Ci0gICAgVGltZXIgbV9z
aWxlbmNlQXVkaW9UaW1lcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZUNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzZjNzc1ZDdlODE4ZDA2OGU3NGQyMTMzMjk2
MjY1NGZhNWQzNGZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApAQCAt
MCwwICsxLDE2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VCUlRD
KQorCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTGli
V2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgQXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uIGxpYndlYnJ0Y0F1ZGlvRm9ybWF0KEZsb2F0NjQgc2FtcGxlUmF0ZSwgc2l6ZV90IGNo
YW5uZWxDb3VudCkKK3sKKyAgICAvLyBGSVhNRTogTWljcm9waG9uZXMgY2FuIGhhdmUgbW9yZSB0
aGFuIHR3byBjaGFubmVscy4gSW4gc3VjaCBjYXNlLCB3ZSBzaG91bGQgZG8gdGhlIG1peCBkb3du
IGJhc2VkIG9uIEF1ZGlvQ2hhbm5lbExheW91dFRhZy4KKyAgICBzaXplX3QgbGliV2ViUlRDQ2hh
bm5lbENvdW50ID0gY2hhbm5lbENvdW50ID49IDIgPyAyIDogY2hhbm5lbENvdW50OworICAgIEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgRmlsbE91dEFTQkRG
b3JMUENNKHN0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSwgbGliV2ViUlRDQ2hhbm5lbENvdW50LCBM
aWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNh
bXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0Zsb2F0LCBMaWJXZWJSVENBdWRpb0Zv
cm1hdDo6aXNCaWdFbmRpYW4sIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc05vbkludGVybGVhdmVk
KTsKKyAgICByZXR1cm4gc3RyZWFtRm9ybWF0OworfQorCitSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoUmVmPE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQorICAgIDogUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlKFdURk1vdmUoYXVkaW9Tb3VyY2UpKQorICAgICwgbV9zYW1wbGVDb252ZXJ0ZXIo
QXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBs
ZVJhdGUgKiAyKSkKK3sKK30KKworUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4gUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlPiYmIGF1ZGlvU291cmNlKQoreworICAgIHJldHVybiBSZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2VDb2NvYTo6Y3JlYXRlKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKK30KKwordm9pZCBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6aGFuZGxlTXV0ZWRJZk5lZWRlZCgpCit7Cisg
ICAgYm9vbCBpc1NpbGVuY2VkID0gbV9tdXRlZCB8fCAhbV9lbmFibGVkOworICAgIG1fc2FtcGxl
Q29udmVydGVyLT5zZXRNdXRlZChpc1NpbGVuY2VkKTsKKworICAgIFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6aGFuZGxlTXV0ZWRJZk5lZWRlZCgpOworfQorCit2b2lkIFJlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpzZW5kU2lsZW5jZSgpCit7CisgICAgTGliV2ViUlRDUHJv
dmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNpemVfdCBjaHVua1NhbXBsZUNvdW50ID0gbV9v
dXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgLyAxMDA7CisgICAgICAgIHNpemVf
dCBidWZmZXJTaXplID0gY2h1bmtTYW1wbGVDb3VudCAqIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojpz
YW1wbGVCeXRlU2l6ZSAqIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVs
cygpOworCisgICAgICAgIGlmICghYnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBtX2F1ZGlvQnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7CisgICAgICAgIG1lbXNldCht
X2F1ZGlvQnVmZmVyLmRhdGEoKSwgMCwgYnVmZmVyU2l6ZSk7CisgICAgICAgIGZvciAoYXV0byBz
aW5rIDogbV9zaW5rcykKKyAgICAgICAgICAgIHNpbmstPk9uRGF0YShtX2F1ZGlvQnVmZmVyLmRh
dGEoKSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24uc2FtcGxlUmF0ZSgpLCBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9m
Q2hhbm5lbHMoKSwgY2h1bmtTYW1wbGVDb3VudCk7CisgICAgfSk7Cit9CisKK2Jvb2wgUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhp
Z2hMaW1pdCgpCit7CisgICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3Vu
dCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisgICAgYXV0byByZWFk
QXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5z
YW1wbGVSYXRlKCk7CisKKyAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1
ZGlvRHVyYXRpb24pOworICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+IHJlYWRBdWRp
b0R1cmF0aW9uICsgMC41OworfQorCitib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNv
Y29hOjppc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpCit7CisgICAgYXV0byB3
cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlw
dGlvbi5zYW1wbGVSYXRlKCk7CisgICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENv
dW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisKKyAgICBBU1NF
UlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOworICAgIHJldHVy
biB3cml0dGVuQXVkaW9EdXJhdGlvbiA8IHJlYWRBdWRpb0R1cmF0aW9uICsgMC4xOworfQorCiti
b29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpoYXNCdWZmZXJlZEVub3VnaERh
dGEoKQoreworICAgIGF1dG8gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBt
X2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOworICAgIGF1dG8gcmVhZEF1ZGlv
RHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxl
UmF0ZSgpOworCisgICAgQVNTRVJUKHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1
cmF0aW9uKTsKKyAgICByZXR1cm4gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVy
YXRpb24gKyAwLjAxOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29h
OjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1B
dWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgc3RyZWFt
RGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKK3sKKyAgICBpZiAobV9pbnB1dFN0cmVh
bURlc2NyaXB0aW9uICE9IHN0cmVhbURlc2NyaXB0aW9uKSB7CisgICAgICAgIG1faW5wdXRTdHJl
YW1EZXNjcmlwdGlvbiA9IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKHN0cmVhbURlc2NyaXB0
aW9uKTsKKyAgICAgICAgYXV0byBzdGF0dXMgID0gbV9zYW1wbGVDb252ZXJ0ZXItPnNldElucHV0
Rm9ybWF0KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbik7CisgICAgICAgIEFTU0VSVF9VTlVTRUQo
c3RhdHVzLCAhc3RhdHVzKTsKKworICAgICAgICBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uID0g
bGlid2VicnRjQXVkaW9Gb3JtYXQoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUsIHN0
cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSk7CisgICAgICAgIHN0YXR1cyA9IG1f
c2FtcGxlQ29udmVydGVyLT5zZXRPdXRwdXRGb3JtYXQobV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlv
bi5zdHJlYW1EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgQVNTRVJUKCFzdGF0dXMpOworICAgIH0K
KworICAgIC8vIExldCdzIHNraXAgcHVzaGluZyBzYW1wbGVzIGlmIHdlIGFyZSB0b28gc2xvdyBw
dWxsaW5nIHRoZW0uCisgICAgaWYgKG1fc2tpcHBpbmdBdWRpb0RhdGEpIHsKKyAgICAgICAgaWYg
KCFpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gZmFsc2U7CisgICAgfSBlbHNlIGlm
IChpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSkgeworICAgICAgICBtX3Nr
aXBwaW5nQXVkaW9EYXRhID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8v
IElmIHdlIGNoYW5nZSB0aGUgYXVkaW8gdHJhY2sgb3IgaXRzIHNhbXBsZSByYXRlIGNoYW5nZXMs
IHRoZSB0aW1lc3RhbXAgYmFzZWQgb24gbV93cml0ZUNvdW50IG1heSBiZSB3cm9uZy4KKyAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHVwZGF0ZSBtX3dyaXRlQ291bnQgdG8gYmUgdmFsaWQgYWNjb3Jk
aW5nIHRoZSBuZXcgc2FtcGxlUmF0ZS4KKyAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVzaFNhbXBs
ZXMoTWVkaWFUaW1lKG1fd3JpdGVDb3VudCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faW5wdXRT
dHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkpKSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7
CisgICAgbV93cml0ZUNvdW50ICs9IHNhbXBsZUNvdW50OworCisgICAgaWYgKCFoYXNCdWZmZXJl
ZEVub3VnaERhdGEoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTGliV2ViUlRDUHJvdmlkZXI6
OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPnB1bGxBdWRpb0RhdGEoKTsKKyAgICB9KTsK
K30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6cHVsbEF1ZGlvRGF0
YSgpCit7CisgICAgLy8gbGlid2VicnRjIGV4cGVjdHMgMTAgbXMgY2h1bmtzLgorICAgIHNpemVf
dCBjaHVua1NhbXBsZUNvdW50ID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRl
KCkgLyAxMDA7CisgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNvdW50ICogTGli
V2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJlYW1EZXNjcmlw
dGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7CisgICAgbV9hdWRpb0J1ZmZlci5ncm93KGJ1ZmZlclNp
emUpOworCisgICAgQXVkaW9CdWZmZXJMaXN0IGJ1ZmZlckxpc3Q7CisgICAgYnVmZmVyTGlzdC5t
TnVtYmVyQnVmZmVycyA9IDE7CisgICAgYnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tTnVtYmVyQ2hh
bm5lbHMgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKTsKKyAg
ICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBidWZmZXJTaXplOworICAg
IGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGEgPSBtX2F1ZGlvQnVmZmVyLmRhdGEoKTsKKwor
ICAgIG1fc2FtcGxlQ29udmVydGVyLT5wdWxsQXZhbGFpYmxlU2FtcGxlc0FzQ2h1bmtzKGJ1ZmZl
ckxpc3QsIGNodW5rU2FtcGxlQ291bnQsIG1fcmVhZENvdW50LCBbdGhpcywgY2h1bmtTYW1wbGVD
b3VudF0geworICAgICAgICBtX3JlYWRDb3VudCArPSBjaHVua1NhbXBsZUNvdW50OworICAgICAg
ICBmb3IgKGF1dG8gc2luayA6IG1fc2lua3MpCisgICAgICAgICAgICBzaW5rLT5PbkRhdGEobV9h
dWRpb0J1ZmZlci5kYXRhKCksIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBtX291
dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlw
dGlvbi5udW1iZXJPZkNoYW5uZWxzKCksIGNodW5rU2FtcGxlQ291bnQpOworICAgIH0pOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43NmZhNWFkMDAyYTA4ZGQzMzE5MDQ3M2JlZTIyZWRmNjMyMjI0N2U5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0
Z29pbmdBdWRpb1NvdXJjZUNvY29hLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVE
YXRhU291cmNlLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCisK
K25hbWVzcGFjZSB3ZWJydGMgeworY2xhc3MgQXVkaW9UcmFja0ludGVyZmFjZTsKK2NsYXNzIEF1
ZGlvVHJhY2tTaW5rSW50ZXJmYWNlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYT4gY3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZT4mJiBhdWRpb1NvdXJjZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2VDb2NvYShXVEZNb3ZlKGF1ZGlvU291cmNlKSkpOyB9CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EoUmVmPE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlPiYmKTsKKworICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNv
bnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWw7CisKKyAgICBib29sIGlzUmVhY2hpbmdCdWZm
ZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpIGZpbmFsOworICAgIGJvb2wgaXNSZWFjaGluZ0J1ZmZl
cmVkQXVkaW9EYXRhTG93TGltaXQoKSBmaW5hbDsKKyAgICBib29sIGhhc0J1ZmZlcmVkRW5vdWdo
RGF0YSgpIGZpbmFsOworCisgICAgdm9pZCBwdWxsQXVkaW9EYXRhKCkgZmluYWw7CisKKyAgICB2
b2lkIGhhbmRsZU11dGVkSWZOZWVkZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRTaWxlbmNlKCkg
ZmluYWw7CisKKyAgICBSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiBtX3NhbXBsZUNvbnZlcnRl
cjsKKyAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9pbnB1dFN0cmVhbURlc2NyaXB0aW9u
OworICAgIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9u
OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYXVkaW9CdWZmZXI7CisgICAgdWludDY0X3QgbV9y
ZWFkQ291bnQgeyAwIH07CisgICAgdWludDY0X3QgbV93cml0ZUNvdW50IHsgMCB9OworICAgIGJv
b2wgbV9za2lwcGluZ0F1ZGlvRGF0YSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323898</attachid>
            <date>2017-10-16 09:01:05 -0700</date>
            <delta_ts>2017-10-16 09:40:51 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-177928-20171016180103.patch</filename>
            <type>text/plain</type>
            <size>70784</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg3NDQzYWY3NTU0OTYz
ZGU3N2U5Y2E4YjZkZGFlMDEwNmIwZDIxNi4uNjEwMDZmYjM4NzA3NjRmMTg2YmJmM2MzZDRhNDdj
MDg0YjIwYmI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDE3LTEwLTE2ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgogCisgICAgICAgIE1ha2UgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlcyBhbmQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlcyBw
b3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5MjgKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAg
ICAgIFJlZmFjdG9yIHRoZSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UgYW5kIFJlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZSBjbGFzc2VzLAorICAgICAgICBtb3ZlIHRoZSBtYWMgc3BlY2lm
aWMgY29kZSB0byBhIGRpZmZlcmVudCBjbGFzcy4gVGhpcyB3YXkgd2UgY2FuIHVzZSB0aGVtIGZy
b20KKyAgICAgICAgb3RoZXIgcG9ydHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB3ZSBhcmUg
bm90IGFkZGluZyBuZXcgZnVuY3Rpb25hbGl0eSBqdXN0IHJlZmFjdG9yaW5nLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaC4gSnVzdCB0aGUgcG9ydCBh
Z25vc3RpYyBwYXJ0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oLiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2Uu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcC4gRGl0dG8uCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UuaC4gRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcDogQWRkZWQsIGl0IGFkZHMgQ29j
b2EgY29kZSBwYXJ0cyBmcm9tIG9yaWdpbmFsIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUpOiBNb3ZlZCB0aGlzIGZ1
bmN0aW9uIGZyb20gdGhlIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgZmlsZSB0byBh
dm9pZCBpbmNsdWRpbmcgdGhlIENvY29hIGZpbGUgdGhlcmUuCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmg6IEFkZGVk
IENvY29hIGNvZGUgZnJvbSBvcmlnaW5hbCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmguCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcDog
QWRkZWQgQ29jb2EgY29kZSBmcm9tIG9yaWdpbmFsIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpjcmVhdGUpOiBNb3ZlZCB0aGlz
IGZ1bmN0aW9uIGZyb20gdGhlIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgZmlsZSB0
byBhdm9pZCBpbmNsdWRpbmcgdGhlIENvY29hIGZpbGUgdGhlcmUuCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmg6IEFk
ZGVkIENvY29hIGNvZGUgZnJvbSB0aGUgb3JpZ2luYWwgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oLgorCisyMDE3LTEw
LTE2ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCiAgICAgICAgIE1h
a2UgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlcyBhbmQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlcyBwb3J0IGFnbm9zdGljCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzc4NjkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4MGYwYjI2ZGY4
YmI4ZWFmMDM3MmRjYjdkODhkYTY0ZmMzNmQxZTU4Li45MjFiNzNhMmRkMzg3Mzc5ZTNiOWEwZTU2
MjI4Mjk1N2VlZTc2MWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjUzOSwxMCArMjUzOSwx
MiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmNwcAogICAgIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAKKyAgICBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcAogICAgIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCisgICAgcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAogICAgIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAKIAogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxOTA0ODY2YTk1
MTUzMzZjMTA1ZTA0MTJmODE0NGEyOTRlZjc1Y2JkLi5iZmRiY2FhYTVkN2JiZjA5NTE2NWUyY2Iz
YTA3MzhiMGJiMDQ3NTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjczLDggKzE2NzMsMTIgQEAKIAkJNDEwQjdFNzIxMDQ1
RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAv
KiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi87IH07CiAJCTQxMTAzQUFCMUUzOTc5MTAwMDc2
OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTcxRTM5NzkwQTAwNzY5RjAzIC8q
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgKi87IH07CiAJCTQxMTAzQUFDMUUzOTc5
MTAwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE4MUUzOTc5MEEwMDc2OUYw
MyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCAqLzsgfTsKKwkJNDExMDNBQUIxRTM5
NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE3MUUzOTc5
MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi87IH07
CisJCTQxMTAzQUFDMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDExMDNBQTgxRTM5NzkwQTAwNzY5RjE0IC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNv
Y29hLmggKi87IH07CiAJCTQxMTAzQUFEMUUzOTc5MTAwMDc2OUYwMyAvKiBSZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaCAqLzsgfTsKIAkJNDExMDNBQUUxRTM5NzkxMDAwNzY5RjAzIC8qIFJlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlLmNwcCAqLzsgfTsKKwkJNDExMDNBQUQxRTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuaCAqLzsgfTsKKwkJNDExMDNBQUUxRTM5NzkxMDAwNzY5
RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUFBMUUzOTc5MEEwMDc2OUYx
NCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi87IH07CiAJCTQxMjMw
ODFCMTM4QzQyOTcwMEJDQ0ZDQSAvKiBXZWJDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5QjFBMDgyNDVFNUEwMDFFOUFC
QyAvKiBXZWJDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJNDEyMzA5MTMxMzhDNDJGRjAwQkNDRkNB
IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY4MjE2Mjk5MDI5RjRGQjUwMTAwMDEzMSAvKiBKYXZhU2Ny
aXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTQxMjdENTM3MEY4QUFCMUQwMEU0MjRGNSAvKiBT
Y3JpcHRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovOyB9OwpA
QCAtOTQ2Nyw4ICs5NDcxLDEyIEBACiAJCTQxMEI3RTcxMTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01l
c3NhZ2VFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMTAzQUE3MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMDNBQTgx
RTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8q
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMDNBQTgxRTM5NzkwQTAwNzY5RjE0IC8q
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMDNB
QTkxRTM5NzkwQTAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZUNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUFBMUUzOTc5
MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIz
MjgwMEI5MEEwRCAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMyODAwQjkzRjY0IC8qIFJl
YWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJl
YWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTU2NzIgLyogUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVz
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjU1Niw2ICsxNjU2NCw4IEBACiAJ
CQkJMDdGRkRFNjYxODFBRUQ0MjAwNzJENDA5IC8qIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNw
cCAqLywKIAkJCQkwN0ZGREU2NzE4MUFFRDQyMDA3MkQ0MDkgLyogTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaCAqLywKIAkJCQk1RUJCODkzODFDNzdCREE0MDBDNjVENDEgLyogUGVlck1lZGlhRGVz
Y3JpcHRpb24uaCAqLywKKwkJCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmNwcCAqLywKKwkJCQk0MTEwM0FBOTFFMzk3OTBBMDA3NjlGMDMg
LyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggKi8sCiAJCQkJNUNERDgzMzkxRTQzMjRC
QjAwNjIxRTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgKi8sCiAJCQkJNUNE
RDgzM0ExRTQzMjRCQjAwNjIxRTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oICov
LAogCQkJCTRBNEY2NTZCMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNw
cCAqLywKQEAgLTE2NTY3LDYgKzE2NTc3LDggQEAKIAkJCQk0QTRGNjU2RjFBQTk5N0YxMDBFMzhD
REQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggKi8sCiAJCQkJMkVDNDFERTIxQzA0
MTBBMzAwRDI5NEZFIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5j
cHAgKi8sCiAJCQkJMDdDMUMwRTQxQkZCNjBFRDAwQkQyMjU2IC8qIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oICovLAorCQkJCTQxMTAzQUE3MUUzOTc5MEEwMDc2OUYw
MyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovLAorCQkJCTQxMTAzQUE4MUUz
OTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCAqLywKIAkJCQk1
Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNw
cCAqLywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlLmggKi8sCiAJCQkJMzEzNTkxMEMxRTdERENCNjAwRjMwNjMwIC8qIFJUQ0J1bmRs
ZVBvbGljeS5oICovLApAQCAtMTY2MTksMTIgKzE2NjMxLDE2IEBACiAJCQkJMDdFRTc2RUUxQkVB
NjE5ODAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tICovLAogCQkJCTQx
MTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3Bw
ICovLAogCQkJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2UuaCAqLywKKwkJCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwICovLAorCQkJCTQxMTAzQUE5MUUzOTc5MEEwMDc2
OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovLAogCQkJCTVDREQ4
MzM5MUU0MzI0QkIwMDYyMUU4MyAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5j
cHAgKi8sCiAJCQkJNUNERDgzM0ExRTQzMjRCQjAwNjIxRTgzIC8qIFJlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZUNvY29hLmggKi8sCiAJCQkJNEEwRkZBQTMxQUFGNUVGNjAwNjI4MDNCIC8qIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwICovLAogCQkJCTRBMEZGQUE0MUFBRjVFRjYw
MDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmggKi8sCiAJCQkJNDExMDNB
QTcxRTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgKi8s
CiAJCQkJNDExMDNBQTgxRTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5oICovLAorCQkJCTQxMTAzQUE3MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgKi8sCisJCQkJNDExMDNBQTgxRTM5NzkwQTAwNzY5RjE0
IC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmggKi8sCiAJCQkJNUNERDgzM0Ix
RTQzMjRCQjAwNjIxQjgzIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcCAq
LywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFCODMgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlQ29jb2EuaCAqLywKIAkJCQkwN0Q2MzczRTFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCAqLywKQEAgLTI5NzYwLDYgKzI5Nzc2LDcgQEAKIAkJ
CQk0MTI5QzlBQjFGNTlDNTczMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZEMzE2MDNDMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5
c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEwM0FBRDFFMzk3OTEwMDA3NjlGMDMgLyogUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTEwM0FBRDFF
Mzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTRBNEY2NTcxMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlh
U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTRGNjU3MjFBQTk5N0YxMDBFMzhDREQgLyog
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEEw
RkZBQTIxQUFGNUVBMjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjk3NjcsNiArMjk3ODQsNyBAQAogCQkJCTRBNEY2NTc0MUFBOTk3RjEw
MEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA3QzFDMEU1MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9y
dGVkQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMTAzQUFDMUUzOTc5MTAwMDc2
OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQxMTAzQUFDMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VD
b2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTFCOTUyMjQxRjU4QTU4RjAwOTMxREMyIC8qIFJl
Y29yZGluZ1N3aXp6bGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MzY4RTgwQzIyNkUz
MjAwNUVGQjVGIC8qIFJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENDVBOTU4MTc1RDQxNEMw
MEMyMUVDOCAvKiBSZWN0YW5nbGVTaGFwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzczOCw2ICsz
Mzc1Niw3IEBACiAJCQkJNDEyOUM5OEExRjU4N0ZFQjAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFt
U2luay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAzQjEyQjAyNjc2MDBDMUEzNTkgLyog
UmVhbHRpbWVBbmFseXNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTEwM0FBRTFFMzk3OTEw
MDA3NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTQxMTAzQUFFMUUzOTc5MTAwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODMzRTFFNDMyNERDMDA2MjFF
OTIgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTVDREQ4MzNFMUU0MzI0REMwMDYyMUU4MyAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VD
b2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QTRGNjU3MDFBQTk5N0YxMDBFMzhDREQgLyog
UmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNzQ2LDYgKzMzNzY1
LDcgQEAKIAkJCQk0QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQzQxREU0MUMwNDEwQTMwMEQyOTRG
RSAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDExMDNBQUIxRTM5NzkxMDAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEwM0FBQjFFMzk3OTEwMDA3NjlG
MTQgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNERDgzM0QxRTQzMjREOTAwNjIxRTkyIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODMzRDFFNDMyNEQ5MDA2MjFCODMgLyog
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkQ0NUE5NUExNzVENDE3MTAwQzIxRUM4IC8qIFJlY3RhbmdsZVNoYXBlLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDcx
YWIzZDc2ODNiM2I4ZmZjNTAyYmYzNDY1MjQ3OTczNWMyMWFiYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZS5jcHAKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29u
dHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIgorCisjaWYgVVNFKExJQldF
QlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFj
ZT4mJiBhdWRpb1RyYWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCisgICAgOiBSZWFsdGltZU1l
ZGlhU291cmNlKFdURk1vdmUoYXVkaW9UcmFja0lkKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZTo6QXVkaW8sIFN0cmluZygpKQorICAgICwgbV9hdWRpb1RyYWNrKFdURk1vdmUoYXVkaW9UcmFj
aykpCit7CisgICAgbm90aWZ5TXV0ZWRDaGFuZ2UoIW1fYXVkaW9UcmFjayk7Cit9CisKK1JlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6flJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpCit7
CisgICAgc3RvcCgpOworfQorCit2b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c3Rh
cnRQcm9kdWNpbmdEYXRhKCkKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrKQorICAgICAgICBtX2F1
ZGlvVHJhY2stPkFkZFNpbmsodGhpcyk7Cit9CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKG1fYXVkaW9UcmFjaykKKyAg
ICAgICAgbV9hdWRpb1RyYWNrLT5SZW1vdmVTaW5rKHRoaXMpOworfQorCit2b2lkIFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiB0cmFjaykKK3sKKyAgICBBU1NFUlQoIW1fYXVk
aW9UcmFjayk7CisgICAgQVNTRVJUKHRyYWNrKTsKKworICAgIG1fYXVkaW9UcmFjayA9IFdURk1v
dmUodHJhY2spOworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFtX2F1ZGlvVHJhY2spOworICAgIGlm
IChpc1Byb2R1Y2luZ0RhdGEoKSkKKyAgICAgICAgbV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMp
OworfQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2U6OmNhcGFiaWxpdGllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmVtcHR5Q2FwYWJpbGl0aWVzKCk7Cit9CisK
K2NvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlOjpzZXR0aW5ncygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdz
OworfQorCit9CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzM2M2I2MmRhYWI0ODY2MzgwMDlhZGM5MWUzY2M5
MjNiMDMyNTA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKQEAgLTAsMCArMSw2OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24g
bm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTGliV2Vi
UlRDTWFjcm9zLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUg
PHdlYnJ0Yy9hcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UsIHByaXZhdGUgd2VicnRjOjpB
dWRpb1RyYWNrU2lua0ludGVyZmFjZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U+IGNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CisKKyAgICB2b2lkIHNldFNvdXJjZVRy
YWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYpOwor
Citwcm90ZWN0ZWQ6CisgICAgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKKyAgICB+
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKCk7CisKK3ByaXZhdGU6CisgICAgLy8gd2VicnRj
OjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSBBUEkKKyAgICB2aXJ0dWFsIHZvaWQgT25EYXRhKGNv
bnN0IHZvaWQqIC8qIGF1ZGlvRGF0YSAqLywgaW50IC8qIGJpdHNQZXJTYW1wbGUgKi8sIGludCAv
KiBzYW1wbGVSYXRlICovLCBzaXplX3QgLyogbnVtYmVyT2ZDaGFubmVscyAqLywgc2l6ZV90IC8q
IG51bWJlck9mRnJhbWVzICovKSB7IH07CisKKyAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlIEFQ
SQorICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7CisgICAgdm9pZCBzdG9wUHJv
ZHVjaW5nRGF0YSgpICBmaW5hbDsKKworICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IGZpbmFsOworICAgIGNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBmaW5hbDsKKworICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJlbnRTZXR0aW5nczsKKyAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiBtX2F1ZGlvVHJhY2s7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmYzYTViZWI2ZjVj
Y2MwMTM2OTRlMDkxNDAyZjI3ZjI4MjBmN2ZiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5j
cHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWFsdGltZU91dGdvaW5nQXVk
aW9Tb3VyY2UuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENB
dWRpb0Zvcm1hdC5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNl
KQorICAgIDogbV9hdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkKKyAgICAsIG1fc2ls
ZW5jZUF1ZGlvVGltZXIoKnRoaXMsICZSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRT
aWxlbmNlKQoreworICAgIG1fYXVkaW9Tb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKKyAgICBp
bml0aWFsaXplQ29udmVydGVyKCk7Cit9CisKK2Jvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlOjpzZXRTb3VyY2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIG5ld1NvdXJjZSkK
K3sKKyAgICBtX2F1ZGlvU291cmNlLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CisgICAgbV9hdWRp
b1NvdXJjZSA9IFdURk1vdmUobmV3U291cmNlKTsKKyAgICBtX2F1ZGlvU291cmNlLT5hZGRPYnNl
cnZlcigqdGhpcyk7CisKKyAgICBpbml0aWFsaXplQ29udmVydGVyKCk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjppbml0aWFsaXplQ29u
dmVydGVyKCkKK3sKKyAgICBtX211dGVkID0gbV9hdWRpb1NvdXJjZS0+bXV0ZWQoKTsKKyAgICBt
X2VuYWJsZWQgPSBtX2F1ZGlvU291cmNlLT5lbmFibGVkKCk7CisgICAgaGFuZGxlTXV0ZWRJZk5l
ZWRlZCgpOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c3RvcCgpCit7
CisgICAgbV9zaWxlbmNlQXVkaW9UaW1lci5zdG9wKCk7CisgICAgbV9hdWRpb1NvdXJjZS0+cmVt
b3ZlT2JzZXJ2ZXIoKnRoaXMpOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZTo6c291cmNlTXV0ZWRDaGFuZ2VkKCkKK3sKKyAgICBtX211dGVkID0gbV9hdWRpb1NvdXJjZS0+
bXV0ZWQoKTsKKyAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCgpCit7CisgICAgbV9lbmFi
bGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxlZCgpOworICAgIGhhbmRsZU11dGVkSWZOZWVkZWQo
KTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmhhbmRsZU11dGVkSWZO
ZWVkZWQoKQoreworICAgIGJvb2wgaXNTaWxlbmNlZCA9IG1fbXV0ZWQgfHwgIW1fZW5hYmxlZDsK
KyAgICBpZiAoaXNTaWxlbmNlZCAmJiAhbV9zaWxlbmNlQXVkaW9UaW1lci5pc0FjdGl2ZSgpKQor
ICAgICAgICBtX3NpbGVuY2VBdWRpb1RpbWVyLnN0YXJ0UmVwZWF0aW5nKDFfcyk7CisgICAgaWYg
KCFpc1NpbGVuY2VkICYmIG1fc2lsZW5jZUF1ZGlvVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAg
bV9zaWxlbmNlQXVkaW9UaW1lci5zdG9wKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVjOTEzM2YwZDhiNTg3MmY1N2MwOWE4ZDc1ZmYyZDA3OWFmNzg3OWMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisKKyNpZiBV
U0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgiCisjaW5jbHVkZSAi
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUg
PHdlYnJ0Yy9hcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFk
U2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIHdlYnJ0YyB7CitjbGFzcyBBdWRpb1RyYWNr
SW50ZXJmYWNlOworY2xhc3MgQXVkaW9UcmFja1NpbmtJbnRlcmZhY2U7Cit9CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4sIHB1Ymxp
YyB3ZWJydGM6OkF1ZGlvU291cmNlSW50ZXJmYWNlLCBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlOjpPYnNlcnZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgYXVk
aW9Tb3VyY2UpOworCisgICAgflJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSgpIHsgc3RvcCgp
OyB9CisKKyAgICB2b2lkIHN0b3AoKTsKKworICAgIGJvb2wgc2V0U291cmNlKFJlZjxNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZT4mJik7CisgICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHNvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Tb3VyY2UuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgor
ICAgIGV4cGxpY2l0IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZShSZWY8TWVkaWFTdHJlYW1U
cmFja1ByaXZhdGU+JiYpOworCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZU11dGVkSWZOZWVkZWQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZFNpbGVuY2UoKSB7IH07CisgICAgdmlydHVhbCB2b2lk
IHB1bGxBdWRpb0RhdGEoKSB7IH07CisKKyAgICBWZWN0b3I8d2VicnRjOjpBdWRpb1RyYWNrU2lu
a0ludGVyZmFjZSo+IG1fc2lua3M7CisgICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1fZW5hYmxlZCB7IHRydWUgfTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgQWRk
U2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lua3MuYXBw
ZW5kKHNpbmspOyB9CisgICAgdmlydHVhbCB2b2lkIFJlbW92ZVNpbmsod2VicnRjOjpBdWRpb1Ry
YWNrU2lua0ludGVyZmFjZSogc2luaykgeyBtX3NpbmtzLnJlbW92ZUZpcnN0KHNpbmspOyB9CisK
KyAgICBpbnQgQWRkUmVmKCkgY29uc3QgZmluYWwgeyByZWYoKTsgcmV0dXJuIHJlZkNvdW50KCk7
IH0KKyAgICBpbnQgUmVsZWFzZSgpIGNvbnN0IGZpbmFsIHsgZGVyZWYoKTsgcmV0dXJuIHJlZkNv
dW50KCk7IH0KKyAgICBTb3VyY2VTdGF0ZSBzdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGtM
aXZlOyB9CisgICAgYm9vbCByZW1vdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZvaWQgUmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJmYWNlKikgZmlu
YWwgeyB9CisgICAgdm9pZCBVbnJlZ2lzdGVyT2JzZXJ2ZXIod2VicnRjOjpPYnNlcnZlckludGVy
ZmFjZSopIGZpbmFsIHsgfQorCisgICAgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoKTsKKyAgICB2
b2lkIHNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvU2FtcGxl
c0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIHsgfTsKKworICAgIHZpcnR1YWwg
Ym9vbCBpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSB7IHJldHVybiBmYWxz
ZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGlt
aXQoKSB7IHJldHVybiBmYWxzZTsgfTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnVmZmVyZWRFbm91
Z2hEYXRhKCkgeyByZXR1cm4gZmFsc2U7IH07CisKKyAgICAvLyBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZTo6T2JzZXJ2ZXIgQVBJCisgICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlTXV0ZWRDaGFuZ2VkKCk7IH0KKyAgICB2b2lk
IHRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IHNv
dXJjZUVuYWJsZWRDaGFuZ2VkKCk7IH0KKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYsIGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lLCBjb25z
dCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYg
ZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkgeyBhdWRpb1NhbXBsZXNBdmFpbGFibGUo
bWVkaWFUaW1lLCBkYXRhLCBkZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQpOyB9CisgICAgdm9pZCB0
cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9CisgICAgdm9pZCB0
cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQor
CisgICAgdm9pZCBpbml0aWFsaXplQ29udmVydGVyKCk7CisKKyAgICBSZWY8TWVkaWFTdHJlYW1U
cmFja1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7CisKKyAgICBUaW1lciBtX3NpbGVuY2VBdWRpb1Rp
bWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3NTM4Y2QwNTViNGRjYTQ5OTIxYjJkNTFkODBmMDgy
ZWIyMjY3MzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqICAgIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqICAgIGRp
c3RyaWJ1dGlvbi4KLSAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCi0gKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKLSAqICAgIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5o
IgotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24uaCIKLSNpbmNsdWRlICJDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKLSNpbmNsdWRlICJM
aWJXZWJSVENBdWRpb0Zvcm1hdC5oIgotI2luY2x1ZGUgIldlYkF1ZGlvQnVmZmVyTGlzdC5oIgot
I2luY2x1ZGUgIldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmgiCi0jaW5jbHVkZSA8cGFs
L2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KLQotI2luY2x1ZGUgIkNvcmVN
ZWRpYVNvZnRMaW5rLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFJlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZT4gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1RyYWNr
LCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCi17Ci0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigq
bmV3IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvVHJhY2spLCBXVEZN
b3ZlKGF1ZGlvVHJhY2tJZCkpKTsKLSAgICBzb3VyY2UtPnN0YXJ0KCk7Ci0gICAgcmV0dXJuIHNv
dXJjZTsKLX0KLQotUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFj
ZT4mJiBhdWRpb1RyYWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCi0gICAgOiBSZWFsdGltZU1l
ZGlhU291cmNlKFdURk1vdmUoYXVkaW9UcmFja0lkKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZTo6QXVkaW8sIFN0cmluZygpKQotICAgICwgbV9hdWRpb1RyYWNrKFdURk1vdmUoYXVkaW9UcmFj
aykpCi17Ci0gICAgbm90aWZ5TXV0ZWRDaGFuZ2UoIW1fYXVkaW9UcmFjayk7Ci19Ci0KLVJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6flJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpCi17
Ci0gICAgc3RvcCgpOwotfQotCi0KLXN0YXRpYyBpbmxpbmUgQXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uIHN0cmVhbURlc2NyaXB0aW9uKHNpemVfdCBzYW1wbGVSYXRlLCBzaXplX3QgY2hhbm5l
bENvdW50KQotewotICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7
Ci0gICAgRmlsbE91dEFTQkRGb3JMUENNKHN0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSwgY2hhbm5l
bENvdW50LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9G
b3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0Zsb2F0LCBMaWJXZWJS
VENBdWRpb0Zvcm1hdDo6aXNCaWdFbmRpYW4sIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc05vbklu
dGVybGVhdmVkKTsKLSAgICByZXR1cm4gc3RyZWFtRm9ybWF0OwotfQotCi12b2lkIFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZTo6T25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJp
dHNQZXJTYW1wbGUsIGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgc2l6
ZV90IG51bWJlck9mRnJhbWVzKQotewotICAgIC8vIFdlIG1heSByZWNlaXZlIE9uRGF0YSBjYWxs
cyB3aXRoIGVtcHR5IHNvdW5kIGRhdGEgKG1vbm8sIHNhbXBsZXMgZXF1YWwgdG8gemVybyBhbmQg
c2FtcGxlUmF0ZSBlcXVhbCB0byAxNjAwMCkgd2hlbiBzdGFydGluZyB0aGUgY2FsbC4KLSAgICAv
LyBGSVhNRTogRm9yIHRoZSBtb21lbnQgd2Ugc2tpcCB0aGVtLCB3ZSBzaG91bGQgZmluZCBhIGJl
dHRlciBzb2x1dGlvbiBhdCBsaWJ3ZWJydGMgbGV2ZWwgdG8gbm90IGJlIGNhbGxlZCB1bnRpbCBn
ZXR0aW5nIHNvbWUgcmVhbCBkYXRhLgotICAgIGlmIChzYW1wbGVSYXRlID09IDE2MDAwICYmIG51
bWJlck9mQ2hhbm5lbHMgPT0gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGJpdHNQ
ZXJTYW1wbGUgPT0gMTYpOwotICAgIEFTU0VSVChudW1iZXJPZkNoYW5uZWxzID09IDEgfHwgbnVt
YmVyT2ZDaGFubmVscyA9PSAyKTsKLSAgICBBU1NFUlQoc2FtcGxlUmF0ZSA9PSA0ODAwMCk7Ci0K
LSAgICBDTVRpbWUgc3RhcnRUaW1lID0gQ01UaW1lTWFrZShtX251bWJlck9mRnJhbWVzLCBzYW1w
bGVSYXRlKTsKLSAgICBhdXRvIG1lZGlhVGltZSA9IFBBTDo6dG9NZWRpYVRpbWUoc3RhcnRUaW1l
KTsKLSAgICBtX251bWJlck9mRnJhbWVzICs9IG51bWJlck9mRnJhbWVzOwotCi0gICAgQXVkaW9T
dHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG5ld0Rlc2NyaXB0aW9uID0gc3RyZWFtRGVzY3JpcHRpb24o
c2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscyk7Ci0KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IG5vdCBuZWVkIHRvIGRvIHRoZSBleHRyYSBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgY29weS4KLSAg
ICAvLyBJbnN0ZWFkLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBkaXJlY3RseSBwYXNzIGF1ZGlvRGF0
YSBwb2ludGVyLgotICAgIFdlYkF1ZGlvQnVmZmVyTGlzdCBhdWRpb0J1ZmZlckxpc3QgeyBDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24obmV3RGVzY3JpcHRpb24pLCBXVEY6OnNhZmVDYXN0PHVpbnQz
Ml90PihudW1iZXJPZkZyYW1lcykgfTsKLSAgICBhdWRpb0J1ZmZlckxpc3QuYnVmZmVyKDApLT5t
RGF0YUJ5dGVTaXplID0gbnVtYmVyT2ZDaGFubmVscyAqIG51bWJlck9mRnJhbWVzICogYml0c1Bl
clNhbXBsZSAvIDg7Ci0gICAgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bU51bWJlckNoYW5u
ZWxzID0gbnVtYmVyT2ZDaGFubmVsczsKLQotICAgIGlmIChtdXRlZCgpKQotICAgICAgICBtZW1z
ZXQoYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGEsIDAsIGF1ZGlvQnVmZmVyTGlzdC5i
dWZmZXIoMCktPm1EYXRhQnl0ZVNpemUpOwotICAgIGVsc2UKLSAgICAgICAgbWVtY3B5KGF1ZGlv
QnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRhLCBhdWRpb0RhdGEsIGF1ZGlvQnVmZmVyTGlzdC5i
dWZmZXIoMCktPm1EYXRhQnl0ZVNpemUpOwotCi0gICAgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKG1l
ZGlhVGltZSwgYXVkaW9CdWZmZXJMaXN0LCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24obmV3RGVz
Y3JpcHRpb24pLCBudW1iZXJPZkZyYW1lcyk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQotewotICAgIGlmIChtX2F1ZGlvVHJhY2sp
Ci0gICAgICAgIG1fYXVkaW9UcmFjay0+QWRkU2luayh0aGlzKTsKLX0KLQotdm9pZCBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKLXsKLSAgICBpZiAobV9h
dWRpb1RyYWNrKQotICAgICAgICBtX2F1ZGlvVHJhY2stPlJlbW92ZVNpbmsodGhpcyk7Ci19Ci0K
LXZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXRTb3VyY2VUcmFjayhydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmIHRyYWNrKQotewotICAg
IEFTU0VSVCghbV9hdWRpb1RyYWNrKTsKLSAgICBBU1NFUlQodHJhY2spOwotCi0gICAgbV9hdWRp
b1RyYWNrID0gV1RGTW92ZSh0cmFjayk7Ci0gICAgbm90aWZ5TXV0ZWRDaGFuZ2UoIW1fYXVkaW9U
cmFjayk7Ci0gICAgaWYgKGlzUHJvZHVjaW5nRGF0YSgpKQotICAgICAgICBtX2F1ZGlvVHJhY2st
PkFkZFNpbmsodGhpcyk7Ci19Ci0KLWNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMmIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y2FwYWJpbGl0aWVzKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6ZW1wdHlDYXBhYmls
aXRpZXMoKTsKLX0KLQotY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldHRpbmdzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9j
dXJyZW50U2V0dGluZ3M7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGZiNjAyMjA4NTE5N2ZmMzlhNjg1NDcwMWVmYjIwZmI5ZTBkZDRlNDIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqICAgIGRpc3RyaWJ1dGlvbi4KLSAqIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJp
YnV0b3JzCi0gKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tIHRoaXMKLSAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBVU0Uo
TElCV0VCUlRDKQotCi0jaW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgiCi0jaW5jbHVkZSAiUmVh
bHRpbWVNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5o
PgotI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvbWVkaWFzdHJlYW1pbnRlcmZhY2UuaD4KLSNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+Ci0KLXR5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0
RGVzY3JpcHRpb24gKkNNRm9ybWF0RGVzY3JpcHRpb25SZWY7Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM7Ci0KLWNsYXNzIFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZSBmaW5hbCA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNl
LCBwcml2YXRlIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgewotcHVibGljOgotICAg
IHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBjcmVhdGUocnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYpOwotCi0g
ICAgdm9pZCBzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Ry
YWNrSW50ZXJmYWNlPiYmKTsKLQotcHJpdmF0ZToKLSAgICBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwg
U3RyaW5nJiYpOwotICAgIH5SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UoKTsKLQotICAgIC8v
IHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UgQVBJCi0gICAgdm9pZCBPbkRhdGEoY29u
c3Qgdm9pZCogYXVkaW9EYXRhLCBpbnQgYml0c1BlclNhbXBsZSwgaW50IHNhbXBsZVJhdGUsIHNp
emVfdCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpIGZpbmFsOwotCi0g
ICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZSBBUEkKLSAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0
YSgpIGZpbmFsOwotICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSAgZmluYWw7Ci0KLSAgICBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25z
dCBmaW5hbDsKLSAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdz
KCkgY29uc3QgZmluYWw7Ci0KLSAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJy
ZW50U2V0dGluZ3M7Ci0gICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0lu
dGVyZmFjZT4gbV9hdWRpb1RyYWNrOwotCi0gICAgdWludDY0X3QgbV9udW1iZXJPZkZyYW1lcyB7
IDAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShMSUJX
RUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29h
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42M2Y3ODMwY2NlZGM0MWE0YjMyOGQ1N2U3NmRlNTE2Y2NlZDY4YzA4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApAQCAtMCwwICsxLDEwMSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oIgorCisjaWYgVVNF
KExJQldFQlJUQykKKworI2luY2x1ZGUgIkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKKyNpbmNs
dWRlICJDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRp
b0Zvcm1hdC5oIgorI2luY2x1ZGUgIldlYkF1ZGlvQnVmZmVyTGlzdC5oIgorI2luY2x1ZGUgIldl
YkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmgiCisjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlv
bi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKworI2luY2x1ZGUgIkNvcmVNZWRpYVNvZnRMaW5r
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZT4gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUocnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiBhdWRpb1RyYWNrLCBTdHJpbmcmJiBh
dWRpb1RyYWNrSWQpCit7CisgICAgYXV0byBzb3VyY2UgPSBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2VDb2NvYTo6Y3JlYXRlKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFj
a0lkKSk7CisgICAgc291cmNlLT5zdGFydCgpOworICAgIHJldHVybiBXVEZNb3ZlKHNvdXJjZSk7
Cit9CisKK1JlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYT4gUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlQ29jb2E6OmNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYShXVEZNb3ZlKGF1ZGlvVHJhY2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpKTsKK30KKwor
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZUNvY29hKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+
JiYgYXVkaW9UcmFjaywgU3RyaW5nJiYgYXVkaW9UcmFja0lkKQorICAgIDogUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFja0lk
KSkKK3sKK30KKworc3RhdGljIGlubGluZSBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3Ry
ZWFtRGVzY3JpcHRpb24oc2l6ZV90IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291bnQpCit7
CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKKyAgICBGaWxs
T3V0QVNCREZvckxQQ00oc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIExp
YldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2Ft
cGxlU2l6ZSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzRmxvYXQsIExpYldlYlJUQ0F1ZGlvRm9y
bWF0Ojppc0JpZ0VuZGlhbiwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzTm9uSW50ZXJsZWF2ZWQp
OworICAgIHJldHVybiBzdHJlYW1Gb3JtYXQ7Cit9CisKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlQ29jb2E6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVy
U2FtcGxlLCBpbnQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBu
dW1iZXJPZkZyYW1lcykKK3sKKyAgICAvLyBXZSBtYXkgcmVjZWl2ZSBPbkRhdGEgY2FsbHMgd2l0
aCBlbXB0eSBzb3VuZCBkYXRhIChtb25vLCBzYW1wbGVzIGVxdWFsIHRvIHplcm8gYW5kIHNhbXBs
ZVJhdGUgZXF1YWwgdG8gMTYwMDApIHdoZW4gc3RhcnRpbmcgdGhlIGNhbGwuCisgICAgLy8gRklY
TUU6IEZvciB0aGUgbW9tZW50IHdlIHNraXAgdGhlbSwgd2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIg
c29sdXRpb24gYXQgbGlid2VicnRjIGxldmVsIHRvIG5vdCBiZSBjYWxsZWQgdW50aWwgZ2V0dGlu
ZyBzb21lIHJlYWwgZGF0YS4KKyAgICBpZiAoc2FtcGxlUmF0ZSA9PSAxNjAwMCAmJiBudW1iZXJP
ZkNoYW5uZWxzID09IDEpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChiaXRzUGVyU2Ft
cGxlID09IDE2KTsKKyAgICBBU1NFUlQobnVtYmVyT2ZDaGFubmVscyA9PSAxIHx8IG51bWJlck9m
Q2hhbm5lbHMgPT0gMik7CisgICAgQVNTRVJUKHNhbXBsZVJhdGUgPT0gNDgwMDApOworCisgICAg
Q01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1ha2UobV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0
ZSk7CisgICAgYXV0byBtZWRpYVRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7Cisg
ICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1iZXJPZkZyYW1lczsKKworICAgIEF1ZGlvU3RyZWFt
QmFzaWNEZXNjcmlwdGlvbiBuZXdEZXNjcmlwdGlvbiA9IHN0cmVhbURlc2NyaXB0aW9uKHNhbXBs
ZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3Qg
bmVlZCB0byBkbyB0aGUgZXh0cmEgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGNvcHkuCisgICAgLy8g
SW5zdGVhZCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZGlyZWN0bHkgcGFzcyBhdWRpb0RhdGEgcG9p
bnRlci4KKyAgICBXZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9CdWZmZXJMaXN0IHsgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0aW9uKSwgV1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4o
bnVtYmVyT2ZGcmFtZXMpIH07CisgICAgYXVkaW9CdWZmZXJMaXN0LmJ1ZmZlcigwKS0+bURhdGFC
eXRlU2l6ZSA9IG51bWJlck9mQ2hhbm5lbHMgKiBudW1iZXJPZkZyYW1lcyAqIGJpdHNQZXJTYW1w
bGUgLyA4OworICAgIGF1ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1OdW1iZXJDaGFubmVscyA9
IG51bWJlck9mQ2hhbm5lbHM7CisKKyAgICBpZiAobXV0ZWQoKSkKKyAgICAgICAgbWVtc2V0KGF1
ZGlvQnVmZmVyTGlzdC5idWZmZXIoMCktPm1EYXRhLCAwLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVy
KDApLT5tRGF0YUJ5dGVTaXplKTsKKyAgICBlbHNlCisgICAgICAgIG1lbWNweShhdWRpb0J1ZmZl
ckxpc3QuYnVmZmVyKDApLT5tRGF0YSwgYXVkaW9EYXRhLCBhdWRpb0J1ZmZlckxpc3QuYnVmZmVy
KDApLT5tRGF0YUJ5dGVTaXplKTsKKworICAgIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRp
bWUsIGF1ZGlvQnVmZmVyTGlzdCwgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKG5ld0Rlc2NyaXB0
aW9uKSwgbnVtYmVyT2ZGcmFtZXMpOworfQorCit9CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kMDEwNDc1ZTVlY2EyZmZjOTE0MzAzNDcxYjY1ZmIxYTg5N2RhYmE3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJU
QykKKworI2luY2x1ZGUgIlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIgorCisjaW5jbHVk
ZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+CisKK3R5cGVkZWYgY29uc3Qgc3RydWN0IG9w
YXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9ybWF0RGVzY3JpcHRpb25SZWY7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM7CisK
K2NsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hIGZpbmFsIDogcHVibGljIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYT4gY3JlYXRlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKKworcHJpdmF0ZToKKyAg
ICBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CisKKyAgICAvLyB3ZWJydGM6
OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlIEFQSQorICAgIHZvaWQgT25EYXRhKGNvbnN0IHZvaWQq
IGF1ZGlvRGF0YSwgaW50IGJpdHNQZXJTYW1wbGUsIGludCBzYW1wbGVSYXRlLCBzaXplX3QgbnVt
YmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzKSBmaW5hbDsKKworICAgIHVpbnQ2
NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDkxMDFkYzQz
NzkxN2Q1MTBlNzRiZmM3NzUxYzdjNzBjN2RjMjJhNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICog
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZS5oIgotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbi5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCi0jaW5jbHVkZSAi
TGliV2ViUlRDUHJvdmlkZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5s
aW5lIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBsaWJ3ZWJydGNBdWRpb0Zvcm1hdChGbG9h
dDY0IHNhbXBsZVJhdGUsIHNpemVfdCBjaGFubmVsQ291bnQpCi17Ci0gICAgLy8gRklYTUU6IE1p
Y3JvcGhvbmVzIGNhbiBoYXZlIG1vcmUgdGhhbiB0d28gY2hhbm5lbHMuIEluIHN1Y2ggY2FzZSwg
d2Ugc2hvdWxkIGRvIHRoZSBtaXggZG93biBiYXNlZCBvbiBBdWRpb0NoYW5uZWxMYXlvdXRUYWcu
Ci0gICAgc2l6ZV90IGxpYldlYlJUQ0NoYW5uZWxDb3VudCA9IGNoYW5uZWxDb3VudCA+PSAyID8g
MiA6IGNoYW5uZWxDb3VudDsKLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFt
Rm9ybWF0OwotICAgIEZpbGxPdXRBU0JERm9yTFBDTShzdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUs
IGxpYldlYlJUQ0NoYW5uZWxDb3VudCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUs
IExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVTaXplLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6
aXNGbG9hdCwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmlzQmlnRW5kaWFuLCBMaWJXZWJSVENBdWRp
b0Zvcm1hdDo6aXNOb25JbnRlcmxlYXZlZCk7Ci0gICAgcmV0dXJuIHN0cmVhbUZvcm1hdDsKLX0K
LQotUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2UoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQotICAgIDogbV9h
dWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkKLSAgICAsIG1fc2FtcGxlQ29udmVydGVy
KEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRlKExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1w
bGVSYXRlICogMikpCi0gICAgLCBtX3NpbGVuY2VBdWRpb1RpbWVyKCp0aGlzLCAmUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kU2lsZW5jZSkKLXsKLSAgICBtX2F1ZGlvU291cmNlLT5h
ZGRPYnNlcnZlcigqdGhpcyk7Ci0gICAgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwotfQotCi1ib29s
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCi17Ci0gICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlT2Jz
ZXJ2ZXIoKnRoaXMpOwotICAgIG1fYXVkaW9Tb3VyY2UgPSBXVEZNb3ZlKG5ld1NvdXJjZSk7Ci0g
ICAgbV9hdWRpb1NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwotCi0gICAgaW5pdGlhbGl6ZUNv
bnZlcnRlcigpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNvbnZlcnRlcigpCi17Ci0gICAgbV9tdXRlZCA9IG1fYXVk
aW9Tb3VyY2UtPm11dGVkKCk7Ci0gICAgbV9lbmFibGVkID0gbV9hdWRpb1NvdXJjZS0+ZW5hYmxl
ZCgpOwotICAgIGhhbmRsZU11dGVkSWZOZWVkZWQoKTsKLX0KLQotdm9pZCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U6OnN0b3AoKQotewotICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RvcCgp
OwotICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKLX0KLQotdm9pZCBS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCi17Ci0gICAg
bV9tdXRlZCA9IG1fYXVkaW9Tb3VyY2UtPm11dGVkKCk7Ci0gICAgaGFuZGxlTXV0ZWRJZk5lZWRl
ZCgpOwotfQotCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxl
ZENoYW5nZWQoKQotewotICAgIG1fZW5hYmxlZCA9IG1fYXVkaW9Tb3VyY2UtPmVuYWJsZWQoKTsK
LSAgICBoYW5kbGVNdXRlZElmTmVlZGVkKCk7Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1
ZGlvU291cmNlOjpoYW5kbGVNdXRlZElmTmVlZGVkKCkKLXsKLSAgICBib29sIGlzU2lsZW5jZWQg
PSBtX211dGVkIHx8ICFtX2VuYWJsZWQ7Ci0gICAgbV9zYW1wbGVDb252ZXJ0ZXItPnNldE11dGVk
KGlzU2lsZW5jZWQpOwotICAgIGlmIChpc1NpbGVuY2VkICYmICFtX3NpbGVuY2VBdWRpb1RpbWVy
LmlzQWN0aXZlKCkpCi0gICAgICAgIG1fc2lsZW5jZUF1ZGlvVGltZXIuc3RhcnRSZXBlYXRpbmco
MV9zKTsKLSAgICBpZiAoIWlzU2lsZW5jZWQgJiYgbV9zaWxlbmNlQXVkaW9UaW1lci5pc0FjdGl2
ZSgpKQotICAgICAgICBtX3NpbGVuY2VBdWRpb1RpbWVyLnN0b3AoKTsKLX0KLQotdm9pZCBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRTaWxlbmNlKCkKLXsKLSAgICBMaWJXZWJSVENQ
cm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgc2l6ZV90IGNodW5rU2FtcGxlQ291bnQgPSBt
X291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKLSAgICAgICAgc2l6
ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBsZUNvdW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6
OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5u
ZWxzKCk7Ci0KLSAgICAgICAgaWYgKCFidWZmZXJTaXplKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKLSAgICAgICAgbWVtc2V0
KG1fYXVkaW9CdWZmZXIuZGF0YSgpLCAwLCBidWZmZXJTaXplKTsKLSAgICAgICAgZm9yIChhdXRv
IHNpbmsgOiBtX3NpbmtzKQotICAgICAgICAgICAgc2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIu
ZGF0YSgpLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1E
ZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVy
T2ZDaGFubmVscygpLCBjaHVua1NhbXBsZUNvdW50KTsKLSAgICB9KTsKLX0KLQotYm9vbCBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hM
aW1pdCgpCi17Ci0gICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAv
IG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAgYXV0byByZWFkQXVk
aW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1w
bGVSYXRlKCk7Ci0KLSAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlv
RHVyYXRpb24pOwotICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+IHJlYWRBdWRpb0R1
cmF0aW9uICsgMC41OwotfQotCi1ib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aXNS
ZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGltaXQoKQotewotICAgIGF1dG8gd3JpdHRlbkF1
ZGlvRHVyYXRpb24gPSBtX3dyaXRlQ291bnQgLyBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2Ft
cGxlUmF0ZSgpOwotICAgIGF1dG8gcmVhZEF1ZGlvRHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1f
b3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOwotCi0gICAgQVNTRVJUKHdyaXR0
ZW5BdWRpb0R1cmF0aW9uID49IHJlYWRBdWRpb0R1cmF0aW9uKTsKLSAgICByZXR1cm4gd3JpdHRl
bkF1ZGlvRHVyYXRpb24gPCByZWFkQXVkaW9EdXJhdGlvbiArIDAuMTsKLX0KLQotYm9vbCBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6Omhhc0J1ZmZlcmVkRW5nb3VoRGF0YSgpCi17Ci0gICAg
YXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1E
ZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0gICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1f
cmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Ci0KLSAg
ICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOwotICAg
IHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbiArIDAuMDE7
Ci19Ci0KLXZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjphdWRpb1NhbXBsZXNBdmFp
bGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0
YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgc3RyZWFtRGVzY3JpcHRpb24sIHNpemVf
dCBzYW1wbGVDb3VudCkKLXsKLSAgICBpZiAobV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uICE9IHN0
cmVhbURlc2NyaXB0aW9uKSB7Ci0gICAgICAgIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbiA9IHRv
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKHN0cmVhbURlc2NyaXB0aW9uKTsKLSAgICAgICAgYXV0
byBzdGF0dXMgID0gbV9zYW1wbGVDb252ZXJ0ZXItPnNldElucHV0Rm9ybWF0KG1faW5wdXRTdHJl
YW1EZXNjcmlwdGlvbik7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsK
LQotICAgICAgICBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uID0gbGlid2VicnRjQXVkaW9Gb3Jt
YXQoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUsIHN0cmVhbURlc2NyaXB0aW9uLm51
bWJlck9mQ2hhbm5lbHMoKSk7Ci0gICAgICAgIHN0YXR1cyA9IG1fc2FtcGxlQ29udmVydGVyLT5z
ZXRPdXRwdXRGb3JtYXQobV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlv
bigpKTsKLSAgICAgICAgQVNTRVJUKCFzdGF0dXMpOwotICAgIH0KLQotICAgIC8vIExldCdzIHNr
aXAgcHVzaGluZyBzYW1wbGVzIGlmIHdlIGFyZSB0b28gc2xvdyBwdWxsaW5nIHRoZW0uCi0gICAg
aWYgKG1fc2tpcHBpbmdBdWRpb0RhdGEpIHsKLSAgICAgICAgaWYgKCFpc1JlYWNoaW5nQnVmZmVy
ZWRBdWRpb0RhdGFMb3dMaW1pdCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3Nr
aXBwaW5nQXVkaW9EYXRhID0gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChpc1JlYWNoaW5nQnVmZmVy
ZWRBdWRpb0RhdGFIaWdoTGltaXQoKSkgewotICAgICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0g
dHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIElmIHdlIGNoYW5nZSB0aGUg
YXVkaW8gdHJhY2sgb3IgaXRzIHNhbXBsZSByYXRlIGNoYW5nZXMsIHRoZSB0aW1lc3RhbXAgYmFz
ZWQgb24gbV93cml0ZUNvdW50IG1heSBiZSB3cm9uZy4KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IHVwZGF0ZSBtX3dyaXRlQ291bnQgdG8gYmUgdmFsaWQgYWNjb3JkaW5nIHRoZSBuZXcgc2FtcGxl
UmF0ZS4KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+cHVzaFNhbXBsZXMoTWVkaWFUaW1lKG1fd3Jp
dGVDb3VudCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5z
YW1wbGVSYXRlKCkpKSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7Ci0gICAgbV93cml0ZUNvdW50
ICs9IHNhbXBsZUNvdW50OwotCi0gICAgaWYgKCFoYXNCdWZmZXJlZEVuZ291aERhdGEoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgTGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25h
bGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIHBy
b3RlY3RlZFRoaXMtPnB1bGxBdWRpb0RhdGEoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnB1bGxBdWRpb0RhdGEoKQotewotICAgIC8vIGxpYndlYnJ0
YyBleHBlY3RzIDEwIG1zIGNodW5rcy4KLSAgICBzaXplX3QgY2h1bmtTYW1wbGVDb3VudCA9IG1f
b3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpIC8gMTAwOwotICAgIHNpemVfdCBi
dWZmZXJTaXplID0gY2h1bmtTYW1wbGVDb3VudCAqIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1w
bGVCeXRlU2l6ZSAqIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygp
OwotICAgIG1fYXVkaW9CdWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKLQotICAgIEF1ZGlvQnVmZmVy
TGlzdCBidWZmZXJMaXN0OwotICAgIGJ1ZmZlckxpc3QubU51bWJlckJ1ZmZlcnMgPSAxOwotICAg
IGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubU51bWJlckNoYW5uZWxzID0gbV9vdXRwdXRTdHJlYW1E
ZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7Ci0gICAgYnVmZmVyTGlzdC5tQnVmZmVyc1sw
XS5tRGF0YUJ5dGVTaXplID0gYnVmZmVyU2l6ZTsKLSAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBd
Lm1EYXRhID0gbV9hdWRpb0J1ZmZlci5kYXRhKCk7Ci0KLSAgICBtX3NhbXBsZUNvbnZlcnRlci0+
cHVsbEF2YWxhaWJsZVNhbXBsZXNBc0NodW5rcyhidWZmZXJMaXN0LCBjaHVua1NhbXBsZUNvdW50
LCBtX3JlYWRDb3VudCwgW3RoaXMsIGNodW5rU2FtcGxlQ291bnRdIHsKLSAgICAgICAgbV9yZWFk
Q291bnQgKz0gY2h1bmtTYW1wbGVDb3VudDsKLSAgICAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3Np
bmtzKQotICAgICAgICAgICAgc2luay0+T25EYXRhKG1fYXVkaW9CdWZmZXIuZGF0YSgpLCBMaWJX
ZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5z
YW1wbGVSYXRlKCksIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVtYmVyT2ZDaGFubmVscygp
LCBjaHVua1NhbXBsZUNvdW50KTsKLSAgICB9KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGViYzgwNGU0OTU4
NTMwYmU2NjAyZmZkNjFhMmI1M2M3ZWI2ZTU3NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgVVNFKExJQldFQlJUQykKLQotI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0
YVNvdXJjZS5oIgotI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgotI2luY2x1ZGUgIk1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3ZWJy
dGMvYXBpL21lZGlhc3RyZWFtaW50ZXJmYWNlLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVS
ZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSB3ZWJydGMgewotY2xhc3MgQXVkaW9UcmFja0ludGVy
ZmFjZTsKLWNsYXNzIEF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlOwotfQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSBmaW5hbCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+LCBwdWJs
aWMgd2VicnRjOjpBdWRpb1NvdXJjZUludGVyZmFjZSwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTo6T2JzZXJ2ZXIgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1
ZGlvU291cmNlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZShXVEZNb3ZlKGF1ZGlvU291cmNlKSkpOyB9Ci0gICAgflJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZSgpIHsgc3RvcCgpOyB9Ci0KLSAgICB2b2lkIHN0b3AoKTsKLQotICAgIGJvb2wgc2V0
U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJik7Ci0gICAgTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Tb3VyY2UuZ2V0KCk7
IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2Uo
UmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBBZGRT
aW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspIHsgbV9zaW5rcy5hcHBl
bmQoc2luayk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgUmVtb3ZlU2luayh3ZWJydGM6OkF1ZGlvVHJh
Y2tTaW5rSW50ZXJmYWNlKiBzaW5rKSB7IG1fc2lua3MucmVtb3ZlRmlyc3Qoc2luayk7IH0KLQot
ICAgIGludCBBZGRSZWYoKSBjb25zdCBmaW5hbCB7IHJlZigpOyByZXR1cm4gcmVmQ291bnQoKTsg
fQotICAgIGludCBSZWxlYXNlKCkgY29uc3QgZmluYWwgeyBkZXJlZigpOyByZXR1cm4gcmVmQ291
bnQoKTsgfQotICAgIFNvdXJjZVN0YXRlIHN0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4ga0xp
dmU7IH0KLSAgICBib29sIHJlbW90ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdm9pZCBSZWdpc3Rlck9ic2VydmVyKHdlYnJ0Yzo6T2JzZXJ2ZXJJbnRlcmZhY2UqKSBmaW5h
bCB7IH0KLSAgICB2b2lkIFVucmVnaXN0ZXJPYnNlcnZlcih3ZWJydGM6Ok9ic2VydmVySW50ZXJm
YWNlKikgZmluYWwgeyB9Ci0KLSAgICB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgpOwotICAgIHZv
aWQgc291cmNlRW5hYmxlZENoYW5nZWQoKTsKLSAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwotCi0gICAgYm9vbCBpc1JlYWNoaW5nQnVmZmVy
ZWRBdWRpb0RhdGFIaWdoTGltaXQoKTsKLSAgICBib29sIGlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlv
RGF0YUxvd0xpbWl0KCk7Ci0gICAgYm9vbCBoYXNCdWZmZXJlZEVuZ291aERhdGEoKTsKLQotICAg
IC8vIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciBBUEkKLSAgICB2b2lkIHRyYWNr
TXV0ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyBzb3VyY2VNdXRl
ZENoYW5nZWQoKTsgfQotICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYpIGZpbmFsIHsgc291cmNlRW5hYmxlZENoYW5nZWQoKTsgfQotICAgIHZvaWQg
YXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgY29uc3QgTWVk
aWFUaW1lJiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBB
dWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KSBm
aW5hbCB7IGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShtZWRpYVRpbWUsIGRhdGEsIGRlc2NyaXB0aW9u
LCBzYW1wbGVDb3VudCk7IH0KLSAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUmKSBmaW5hbCB7IH0KLSAgICB2b2lkIHRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9Ci0KLSAgICB2b2lkIHB1bGxBdWRpb0RhdGEoKTsK
LQotICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnZlcnRlcigpOwotICAgIHZvaWQgaGFuZGxlTXV0ZWRJ
Zk5lZWRlZCgpOwotICAgIHZvaWQgc2VuZFNpbGVuY2UoKTsKLQotICAgIFZlY3Rvcjx3ZWJydGM6
OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKj4gbV9zaW5rczsKLSAgICBSZWY8TWVkaWFTdHJlYW1U
cmFja1ByaXZhdGU+IG1fYXVkaW9Tb3VyY2U7Ci0gICAgUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJj
ZT4gbV9zYW1wbGVDb252ZXJ0ZXI7Ci0gICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG1faW5w
dXRTdHJlYW1EZXNjcmlwdGlvbjsKLSAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9vdXRw
dXRTdHJlYW1EZXNjcmlwdGlvbjsKLQotICAgIFZlY3Rvcjx1aW50OF90PiBtX2F1ZGlvQnVmZmVy
OwotICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsgMCB9OwotICAgIHVpbnQ2NF90IG1fd3JpdGVD
b3VudCB7IDAgfTsKLSAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9lbmFi
bGVkIHsgdHJ1ZSB9OwotICAgIGJvb2wgbV9za2lwcGluZ0F1ZGlvRGF0YSB7IGZhbHNlIH07Ci0g
ICAgVGltZXIgbV9zaWxlbmNlQXVkaW9UaW1lcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29j
b2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
T3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzZjNzc1ZDdlODE4ZDA2
OGU3NGQyMTMzMjk2MjY1NGZhNWQzNGZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNv
Y29hLmNwcApAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQs
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQg
dG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmgiCisKKyNpZiBV
U0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisj
aW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92
aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgQXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uIGxpYndlYnJ0Y0F1ZGlvRm9ybWF0KEZsb2F0NjQgc2FtcGxlUmF0
ZSwgc2l6ZV90IGNoYW5uZWxDb3VudCkKK3sKKyAgICAvLyBGSVhNRTogTWljcm9waG9uZXMgY2Fu
IGhhdmUgbW9yZSB0aGFuIHR3byBjaGFubmVscy4gSW4gc3VjaCBjYXNlLCB3ZSBzaG91bGQgZG8g
dGhlIG1peCBkb3duIGJhc2VkIG9uIEF1ZGlvQ2hhbm5lbExheW91dFRhZy4KKyAgICBzaXplX3Qg
bGliV2ViUlRDQ2hhbm5lbENvdW50ID0gY2hhbm5lbENvdW50ID49IDIgPyAyIDogY2hhbm5lbENv
dW50OworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAg
RmlsbE91dEFTQkRGb3JMUENNKHN0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSwgbGliV2ViUlRDQ2hh
bm5lbENvdW50LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlU2l6ZSwgTGliV2ViUlRDQXVk
aW9Gb3JtYXQ6OnNhbXBsZVNpemUsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc0Zsb2F0LCBMaWJX
ZWJSVENBdWRpb0Zvcm1hdDo6aXNCaWdFbmRpYW4sIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojppc05v
bkludGVybGVhdmVkKTsKKyAgICByZXR1cm4gc3RyZWFtRm9ybWF0OworfQorCitSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2Eo
UmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQorICAgIDogUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlKFdURk1vdmUoYXVkaW9Tb3VyY2UpKQorICAgICwgbV9zYW1w
bGVDb252ZXJ0ZXIoQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoTGliV2ViUlRDQXVkaW9G
b3JtYXQ6OnNhbXBsZVJhdGUgKiAyKSkKK3sKK30KKworUmVmPFJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZT4gUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpjcmVhdGUoUmVmPE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlPiYmIGF1ZGlvU291cmNlKQoreworICAgIHJldHVybiBSZWFsdGltZU91
dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6Y3JlYXRlKFdURk1vdmUoYXVkaW9Tb3VyY2UpKTsKK30K
Kwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6aGFuZGxlTXV0ZWRJZk5l
ZWRlZCgpCit7CisgICAgYm9vbCBpc1NpbGVuY2VkID0gbV9tdXRlZCB8fCAhbV9lbmFibGVkOwor
ICAgIG1fc2FtcGxlQ29udmVydGVyLT5zZXRNdXRlZChpc1NpbGVuY2VkKTsKKworICAgIFJlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6aGFuZGxlTXV0ZWRJZk5lZWRlZCgpOworfQorCit2b2lk
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpzZW5kU2lsZW5jZSgpCit7CisgICAg
TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNpemVfdCBjaHVua1NhbXBs
ZUNvdW50ID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgLyAxMDA7Cisg
ICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gY2h1bmtTYW1wbGVDb3VudCAqIExpYldlYlJUQ0F1
ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAqIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24ubnVt
YmVyT2ZDaGFubmVscygpOworCisgICAgICAgIGlmICghYnVmZmVyU2l6ZSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBtX2F1ZGlvQnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7CisgICAg
ICAgIG1lbXNldChtX2F1ZGlvQnVmZmVyLmRhdGEoKSwgMCwgYnVmZmVyU2l6ZSk7CisgICAgICAg
IGZvciAoYXV0byBzaW5rIDogbV9zaW5rcykKKyAgICAgICAgICAgIHNpbmstPk9uRGF0YShtX2F1
ZGlvQnVmZmVyLmRhdGEoKSwgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVNpemUsIG1fb3V0
cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpLCBtX291dHB1dFN0cmVhbURlc2NyaXB0
aW9uLm51bWJlck9mQ2hhbm5lbHMoKSwgY2h1bmtTYW1wbGVDb3VudCk7CisgICAgfSk7Cit9CisK
K2Jvb2wgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2E6OmlzUmVhY2hpbmdCdWZmZXJl
ZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpCit7CisgICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9
IG1fd3JpdGVDb3VudCAvIG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7Cisg
ICAgYXV0byByZWFkQXVkaW9EdXJhdGlvbiA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1E
ZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisKKyAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRp
b24gPj0gcmVhZEF1ZGlvRHVyYXRpb24pOworICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlv
biA+IHJlYWRBdWRpb0R1cmF0aW9uICsgMC41OworfQorCitib29sIFJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZUNvY29hOjppc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpCit7
CisgICAgYXV0byB3cml0dGVuQXVkaW9EdXJhdGlvbiA9IG1fd3JpdGVDb3VudCAvIG1faW5wdXRT
dHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7CisgICAgYXV0byByZWFkQXVkaW9EdXJhdGlv
biA9IG1fcmVhZENvdW50IC8gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCk7
CisKKyAgICBBU1NFUlQod3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0gcmVhZEF1ZGlvRHVyYXRpb24p
OworICAgIHJldHVybiB3cml0dGVuQXVkaW9EdXJhdGlvbiA8IHJlYWRBdWRpb0R1cmF0aW9uICsg
MC4xOworfQorCitib29sIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hOjpoYXNCdWZm
ZXJlZEVub3VnaERhdGEoKQoreworICAgIGF1dG8gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPSBtX3dy
aXRlQ291bnQgLyBtX2lucHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpOworICAgIGF1
dG8gcmVhZEF1ZGlvRHVyYXRpb24gPSBtX3JlYWRDb3VudCAvIG1fb3V0cHV0U3RyZWFtRGVzY3Jp
cHRpb24uc2FtcGxlUmF0ZSgpOworCisgICAgQVNTRVJUKHdyaXR0ZW5BdWRpb0R1cmF0aW9uID49
IHJlYWRBdWRpb0R1cmF0aW9uKTsKKyAgICByZXR1cm4gd3JpdHRlbkF1ZGlvRHVyYXRpb24gPj0g
cmVhZEF1ZGlvRHVyYXRpb24gKyAwLjAxOworfQorCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZUNvY29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29u
c3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYgc3RyZWFtRGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKK3sKKyAgICBpZiAo
bV9pbnB1dFN0cmVhbURlc2NyaXB0aW9uICE9IHN0cmVhbURlc2NyaXB0aW9uKSB7CisgICAgICAg
IG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbiA9IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKHN0
cmVhbURlc2NyaXB0aW9uKTsKKyAgICAgICAgYXV0byBzdGF0dXMgID0gbV9zYW1wbGVDb252ZXJ0
ZXItPnNldElucHV0Rm9ybWF0KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbik7CisgICAgICAgIEFT
U0VSVF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsKKworICAgICAgICBtX291dHB1dFN0cmVhbURl
c2NyaXB0aW9uID0gbGlid2VicnRjQXVkaW9Gb3JtYXQoTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNh
bXBsZVJhdGUsIHN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbHMoKSk7CisgICAgICAg
IHN0YXR1cyA9IG1fc2FtcGxlQ29udmVydGVyLT5zZXRPdXRwdXRGb3JtYXQobV9vdXRwdXRTdHJl
YW1EZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgQVNTRVJUKCFzdGF0
dXMpOworICAgIH0KKworICAgIC8vIExldCdzIHNraXAgcHVzaGluZyBzYW1wbGVzIGlmIHdlIGFy
ZSB0b28gc2xvdyBwdWxsaW5nIHRoZW0uCisgICAgaWYgKG1fc2tpcHBpbmdBdWRpb0RhdGEpIHsK
KyAgICAgICAgaWYgKCFpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFMb3dMaW1pdCgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gZmFsc2U7Cisg
ICAgfSBlbHNlIGlmIChpc1JlYWNoaW5nQnVmZmVyZWRBdWRpb0RhdGFIaWdoTGltaXQoKSkgewor
ICAgICAgICBtX3NraXBwaW5nQXVkaW9EYXRhID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIElmIHdlIGNoYW5nZSB0aGUgYXVkaW8gdHJhY2sgb3IgaXRzIHNhbXBsZSBy
YXRlIGNoYW5nZXMsIHRoZSB0aW1lc3RhbXAgYmFzZWQgb24gbV93cml0ZUNvdW50IG1heSBiZSB3
cm9uZy4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVwZGF0ZSBtX3dyaXRlQ291bnQgdG8gYmUg
dmFsaWQgYWNjb3JkaW5nIHRoZSBuZXcgc2FtcGxlUmF0ZS4KKyAgICBtX3NhbXBsZUNvbnZlcnRl
ci0+cHVzaFNhbXBsZXMoTWVkaWFUaW1lKG1fd3JpdGVDb3VudCwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KG1faW5wdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkpKSwgYXVkaW9EYXRhLCBz
YW1wbGVDb3VudCk7CisgICAgbV93cml0ZUNvdW50ICs9IHNhbXBsZUNvdW50OworCisgICAgaWYg
KCFoYXNCdWZmZXJlZEVub3VnaERhdGEoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTGliV2Vi
UlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ1NpZ25hbGluZ1RocmVhZChbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPnB1bGxBdWRpb0RhdGEo
KTsKKyAgICB9KTsKK30KKwordm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYTo6
cHVsbEF1ZGlvRGF0YSgpCit7CisgICAgLy8gbGlid2VicnRjIGV4cGVjdHMgMTAgbXMgY2h1bmtz
LgorICAgIHNpemVfdCBjaHVua1NhbXBsZUNvdW50ID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlv
bi5zYW1wbGVSYXRlKCkgLyAxMDA7CisgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBjaHVua1NhbXBs
ZUNvdW50ICogTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogbV9vdXRwdXRT
dHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCk7CisgICAgbV9hdWRpb0J1ZmZlci5n
cm93KGJ1ZmZlclNpemUpOworCisgICAgQXVkaW9CdWZmZXJMaXN0IGJ1ZmZlckxpc3Q7CisgICAg
YnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVycyA9IDE7CisgICAgYnVmZmVyTGlzdC5tQnVmZmVyc1sw
XS5tTnVtYmVyQ2hhbm5lbHMgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLm51bWJlck9mQ2hh
bm5lbHMoKTsKKyAgICBidWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBidWZm
ZXJTaXplOworICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbMF0ubURhdGEgPSBtX2F1ZGlvQnVmZmVy
LmRhdGEoKTsKKworICAgIG1fc2FtcGxlQ29udmVydGVyLT5wdWxsQXZhbGFpYmxlU2FtcGxlc0Fz
Q2h1bmtzKGJ1ZmZlckxpc3QsIGNodW5rU2FtcGxlQ291bnQsIG1fcmVhZENvdW50LCBbdGhpcywg
Y2h1bmtTYW1wbGVDb3VudF0geworICAgICAgICBtX3JlYWRDb3VudCArPSBjaHVua1NhbXBsZUNv
dW50OworICAgICAgICBmb3IgKGF1dG8gc2luayA6IG1fc2lua3MpCisgICAgICAgICAgICBzaW5r
LT5PbkRhdGEobV9hdWRpb0J1ZmZlci5kYXRhKCksIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1w
bGVTaXplLCBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSwgbV9vdXRwdXRT
dHJlYW1EZXNjcmlwdGlvbi5udW1iZXJPZkNoYW5uZWxzKCksIGNodW5rU2FtcGxlQ291bnQpOwor
ICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElC
V0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2Eu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43NmZhNWFkMDAyYTA4ZGQzMzE5MDQ3M2JlZTIyZWRmNjMyMjI0N2U5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmgKQEAgLTAsMCArMSw3MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgcmVxdWlyZWQgdG8gYmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAi
QXVkaW9TYW1wbGVEYXRhU291cmNlLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworY2xhc3MgQXVkaW9UcmFja0ludGVyZmFj
ZTsKK2NsYXNzIEF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlOworfQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hIGZpbmFsIDogcHVi
bGljIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYT4gY3JlYXRlKFJlZjxNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZT4mJiBhdWRpb1NvdXJjZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2VDb2NvYShXVEZNb3ZlKGF1ZGlvU291cmNlKSkpOyB9CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlQ29jb2Eo
UmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmKTsKKworICAgIHZvaWQgYXVkaW9TYW1wbGVz
QXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29u
c3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWw7CisKKyAgICBib29sIGlz
UmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0YUhpZ2hMaW1pdCgpIGZpbmFsOworICAgIGJvb2wgaXNS
ZWFjaGluZ0J1ZmZlcmVkQXVkaW9EYXRhTG93TGltaXQoKSBmaW5hbDsKKyAgICBib29sIGhhc0J1
ZmZlcmVkRW5vdWdoRGF0YSgpIGZpbmFsOworCisgICAgdm9pZCBwdWxsQXVkaW9EYXRhKCkgZmlu
YWw7CisKKyAgICB2b2lkIGhhbmRsZU11dGVkSWZOZWVkZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNl
bmRTaWxlbmNlKCkgZmluYWw7CisKKyAgICBSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiBtX3Nh
bXBsZUNvbnZlcnRlcjsKKyAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9pbnB1dFN0cmVh
bURlc2NyaXB0aW9uOworICAgIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX291dHB1dFN0cmVh
bURlc2NyaXB0aW9uOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYXVkaW9CdWZmZXI7CisgICAg
dWludDY0X3QgbV9yZWFkQ291bnQgeyAwIH07CisgICAgdWludDY0X3QgbV93cml0ZUNvdW50IHsg
MCB9OworICAgIGJvb2wgbV9za2lwcGluZ0F1ZGlvRGF0YSB7IGZhbHNlIH07Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>