GNU bug report logs - #70036
30.0.50; Move file-truename to the C level

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: Theodor Thornhill <theo@HIDDEN>; dated Wed, 27 Mar 2024 19:10:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 30 Mar 2024 11:18:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Mar 30 07:18:36 2024
Received: from localhost ([127.0.0.1]:44075 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rqWjK-0006sR-ER
	for submit <at> debbugs.gnu.org; Sat, 30 Mar 2024 07:18:36 -0400
Received: from out-171.mta1.migadu.com ([95.215.58.171]:62773)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <theo@HIDDEN>) id 1rqWjF-0006rq-HZ
 for 70036 <at> debbugs.gnu.org; Sat, 30 Mar 2024 07:18:33 -0400
X-Report-Abuse: Please report any abuse attempt to abuse@HIDDEN and
 include these headers.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thornhill.no;
 s=key1; t=1711797501;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=gsvLo7fAxKVbHN9ZmYzSseK0okgzRIMPdyXy2G3fDeo=;
 b=sfO7KvYjLgnSOst58fzqcNxg0x/c42BTg1huTOlg67AmBWzzOVc2nHg7/ruKdACsFDfhlD
 uPs2fINI9Ch8IP6YhIW/A3Xj88ZjJl6DfnABuC+XoxY8nFcGzjPFrcDj2jI7PnAsly/TnZ
 YFDQs4RjOnlnuCnY+rbXmTJMgqVv4gecEgwIoy4x1Tj4JzbPozRgS57zaIsZwLeUKOmSqe
 FUDSKtWqfi/lCPQAXTPyZACWS+IdkFyLkYvw4+bJLuH94xz3g7raghAFHMQuptTVMAAhIo
 lDAIki26cfVWxSnb4CBbZvX4vd7na/sAkZ1NQwY3KqfRHWL6O2nJIodPeV+rBg==
From: Theodor Thornhill <theo@HIDDEN>
To: Felician Nemeth <felician.nemeth@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
In-Reply-To: <87zfugoxwn.fsf@HIDDEN>
References: <87le63xzjt.fsf@HIDDEN> <87ttkrqvru.fsf@HIDDEN>
 <87il17xsea.fsf@HIDDEN> <86wmpmhp0a.fsf@HIDDEN>
 <874jcqygpn.fsf@HIDDEN> <875xx6muzt.fsf@HIDDEN>
 <8734say2wi.fsf@HIDDEN> <87zfugoxwn.fsf@HIDDEN>
Date: Sat, 30 Mar 2024 12:18:14 +0100
Message-ID: <874jcoeznt.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Migadu-Flow: FLOW_OUT
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70036
Cc: Eli Zaretskii <eliz@HIDDEN>, 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

Felician Nemeth <felician.nemeth@HIDDEN> writes:

> Theodor Thornhill <theo@HIDDEN> writes:
>> Felician Nemeth <felician.nemeth@HIDDEN> writes:
>
>>> Theo, can you email me the relevant messages that your server sends
>>> to Emacs?  Does the server send lots of similar diagnostics messages
>>> frequently?
>
>> I'll try to include such a report a little later today. 
>
> Thanks, that would be helpful.
>

It's a little hard scraping the logs for company related data, so I
haven't done this yet, but the profiles should be pretty expanatory if
you do some edits after applying the below patch.

>> [2. text/x-diff; 0001-Don-t-use-file-truepath-in-Eglot-bug-70036.patch]...
>
> I think using find-buffer-visiting instead of get-file-buffer and
> file-truename instead of expand-file-name in Eglot is problematic.
> Let's say we have these files:
>
> /project/a.c
> /project/a.h -> /other/a.h
>
> Eglot will communicate these file names to the LSP server: /project/a.c
> and /other/a.h.  Then the server cannot "associate" a.h with a.c.
> Additionally, a.h will be outside of the LSP workspace.
>
> This indeed confuses clangd a bit: it only takes into account the
> changes of buffer a.h when it is saved.  (Because it assumes
> /project/a.h is not opened in the editor.)

So in other words this is already a bug in eglot? 

>
> ------
>
> Regarding the patch itself, cache invalidation is missing from it.  The
> user might kill a buffer or save it under a different name with
> write-file.  Changing (PATH -> BUFFER) to (PATH -> (BUFFER, FILENAME))
> would probably work.  Eglot should save the current buffer-file-name
> when it inserts a new item into the hash of managed-buffers.  And when
> it retrieves an item, it should verify whether the buffer-file-name is
> the same as the saved file-name.
>
> Can file-truepath change while buffer-file-name remains the same?  Yes,
> but I think Eglot could ignore those rare cases, or handle it elsewhere.
> (For example, it could update the cache entry after a buffer is saved.)

Actually, cache invalidation is there, at least for killing a
buffer. Major modes are disabled on killing buffer, and it is removed as
a part of the teardown. Saving to a new buffer isn't handled properly
yet, but this looks like something not really supported by Eglot yet
anyway. If I resave a buffer with C-x C-w its content will be placed in
a new buffer, but old one will not be deleted, and the new one will not
be registered with the eglot server before running M-x revert-buffer
anyways. So that seems like a different issue, really.

Please check out the new patch. I find no issues diverging from the
current behavior using this one. It seems to solve all the performance
issues I stated, and now completely new stuff shows up in the profile,
which to me sounds like the bottlenecks have moved, suggesting we get a
nice performance upgrade.

What do you think? I'll test this for a while and install to master in a
few days if nothing comes up :-)

Theo


--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
 filename=0001-Don-t-use-file-truepath-in-Eglot-bug-70036.patch

From 26e5f3cc8e767215f7c50800a6d713702b8fa144 Mon Sep 17 00:00:00 2001
From: Theodor Thornhill <theo@HIDDEN>
Date: Thu, 28 Mar 2024 12:56:23 +0100
Subject: [PATCH] Don't use file-truepath in Eglot (bug#70036)

`file-truepath' is slow because of recursive calls and being implemented
in lisp.  It seems to not be needed in eglot, but it is used behind the
scenes in `find-buffer-visiting', thus appearing in profiles.  Moving
the implementation to a hash map will yield similar performance
benefits, but wouldn't require us to rewrite `file-truename' in C.

* lisp/progmodes/eglot.el (eglot-lsp-server): Convert 'managed-buffers'
to a hashmap.
(eglot-uri-to-path): Don't use file-truepath, as it is too slow to be
included in the hot path.
(eglot--on-shutdown): Use buffers from buffer map.
(eglot--managed-mode): Add buffer to map, rather than list. Also remove
it from the map on deactivation.
(eglot-handle-notification): Expose server and get buffer from the
buffer map.
---
 lisp/progmodes/eglot.el | 42 +++++++++++++++++++++++------------------
 1 file changed, 24 insertions(+), 18 deletions(-)

diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
index f247c43203c..7f4284bf09d 100644
--- a/lisp/progmodes/eglot.el
+++ b/lisp/progmodes/eglot.el
@@ -1053,8 +1053,8 @@ eglot-lsp-server
     :documentation "Map (DIR -> (WATCH ID1 ID2...)) for `didChangeWatchedFiles'."
     :initform (make-hash-table :test #'equal) :accessor eglot--file-watches)
    (managed-buffers
-    :initform nil
-    :documentation "List of buffers managed by server."
+    :documentation "Map (PATH -> BUFFER) for buffers managed by server."
+    :initform (make-hash-table :test #'equal)
     :accessor eglot--managed-buffers)
    (saved-initargs
     :documentation "Saved initargs for reconnection purposes."
@@ -1085,12 +1085,12 @@ eglot-uri-to-path
 
 (defun eglot-path-to-uri (path)
   "Convert PATH, a file name, to LSP URI string and return it."
-  (let ((truepath (file-truename path)))
+  (let ((expanded-path (expand-file-name path)))
     (if (and (url-type (url-generic-parse-url path))
              ;; It might be MS Windows path which includes a drive
              ;; letter that looks like a URL scheme (bug#59338)
              (not (and (eq system-type 'windows-nt)
-                       (file-name-absolute-p truepath))))
+                       (file-name-absolute-p expanded-path))))
         ;; Path is already a URI, so forward it to the LSP server
         ;; untouched.  The server should be able to handle it, since
         ;; it provided this URI to clients in the first place.
@@ -1098,11 +1098,11 @@ eglot-path-to-uri
       (concat "file://"
               ;; Add a leading "/" for local MS Windows-style paths.
               (if (and (eq system-type 'windows-nt)
-                       (not (file-remote-p truepath)))
+                       (not (file-remote-p expanded-path)))
                   "/")
               (url-hexify-string
                ;; Again watch out for trampy paths.
-               (directory-file-name (file-local-name truepath))
+               (directory-file-name (file-local-name expanded-path))
                eglot--uri-path-allowed-chars)))))
 
 (defun eglot-range-region (range &optional markers)
@@ -1187,7 +1187,7 @@ eglot--servers-by-xrefed-file
 (defun eglot--on-shutdown (server)
   "Called by jsonrpc.el when SERVER is already dead."
   ;; Turn off `eglot--managed-mode' where appropriate.
-  (dolist (buffer (eglot--managed-buffers server))
+  (dolist (buffer (map-values (eglot--managed-buffers server)))
     (let (;; Avoid duplicate shutdowns (github#389)
           (eglot-autoshutdown nil))
       (eglot--when-live-buffer buffer (eglot--managed-mode-off))))
@@ -1992,7 +1992,11 @@ eglot--managed-mode
       (add-hook 'eldoc-documentation-functions #'eglot-signature-eldoc-function
                 nil t)
       (eldoc-mode 1))
-    (cl-pushnew (current-buffer) (eglot--managed-buffers (eglot-current-server))))
+
+    (let ((buffer (current-buffer)))
+      (puthash (expand-file-name (buffer-file-name buffer))
+               buffer
+               (eglot--managed-buffers (eglot-current-server)))))
    (t
     (remove-hook 'after-change-functions #'eglot--after-change t)
     (remove-hook 'before-change-functions #'eglot--before-change t)
@@ -2020,10 +2024,10 @@ eglot--managed-mode
     (let ((server eglot--cached-server))
       (setq eglot--cached-server nil)
       (when server
-        (setf (eglot--managed-buffers server)
-              (delq (current-buffer) (eglot--managed-buffers server)))
+        (remhash (expand-file-name (buffer-file-name (current-buffer)))
+                 (eglot--managed-buffers server))
         (when (and eglot-autoshutdown
-                   (null (eglot--managed-buffers server)))
+                   (null (map-values (eglot--managed-buffers server))))
           (eglot-shutdown server)))))))
 
 (defun eglot--managed-mode-off ()
@@ -2346,7 +2350,7 @@ eglot-handle-notification
                           (remhash token (eglot--progress-reporters server))))))))))
 
 (cl-defmethod eglot-handle-notification
-  (_server (_method (eql textDocument/publishDiagnostics)) &key uri diagnostics
+  (server (_method (eql textDocument/publishDiagnostics)) &key uri diagnostics
            &allow-other-keys) ; FIXME: doesn't respect `eglot-strict-mode'
   "Handle notification publishDiagnostics."
   (cl-flet ((eglot--diag-type (sev)
@@ -2357,7 +2361,7 @@ eglot-handle-notification
             (mess (source code message)
               (concat source (and code (format " [%s]" code)) ": " message)))
     (if-let* ((path (expand-file-name (eglot-uri-to-path uri)))
-              (buffer (find-buffer-visiting path)))
+              (buffer (gethash path (eglot--managed-buffers server))))
         (with-current-buffer buffer
           (cl-loop
            initially
@@ -2842,7 +2846,7 @@ eglot--xref-make-match
 Try to visit the target file for a richer summary line."
   (pcase-let*
       ((file (eglot-uri-to-path uri))
-       (visiting (or (find-buffer-visiting file)
+       (visiting (or (gethash file (eglot--managed-buffers (eglot-current-server)))
                      (gethash uri eglot--temp-location-buffers)))
        (collect (lambda ()
                   (eglot--widening
@@ -3542,13 +3546,14 @@ eglot--propose-changes-as-diff
   (with-current-buffer (get-buffer-create "*EGLOT proposed server changes*")
     (buffer-disable-undo (current-buffer))
     (let ((inhibit-read-only t)
-          (target (current-buffer)))
+          (target (current-buffer))
+          (managed-buffers (eglot--managed-buffers (eglot-current-server))))
       (diff-mode)
       (erase-buffer)
       (pcase-dolist (`(,path ,edits ,_) prepared)
         (with-temp-buffer
           (let* ((diff (current-buffer))
-                 (existing-buf (find-buffer-visiting path))
+                 (existing-buf (gethash path (gethash path managed-buffers)))
                  (existing-buf-label (prin1-to-string existing-buf)))
             (with-temp-buffer
               (if existing-buf
@@ -3583,7 +3588,8 @@ eglot--apply-workspace-edit
                      (eglot--dbind ((VersionedTextDocumentIdentifier) uri version)
                          textDocument
                        (list (eglot-uri-to-path uri) edits version)))
-                   documentChanges)))
+                   documentChanges))
+          (managed-buffers (eglot--managed-buffers (eglot-current-server))))
       (unless (and changes documentChanges)
         ;; We don't want double edits, and some servers send both
         ;; changes and documentChanges.  This unless ensures that we
@@ -3591,7 +3597,7 @@ eglot--apply-workspace-edit
         (cl-loop for (uri edits) on changes by #'cddr
                  do (push (list (eglot-uri-to-path uri) edits) prepared)))
       (cl-flet ((notevery-visited-p ()
-                  (cl-notevery #'find-buffer-visiting
+                  (cl-notevery (lambda (p) (gethash p managed-buffers))
                                (mapcar #'car prepared)))
                 (accept-p ()
                   (y-or-n-p
-- 
2.40.1


--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 30 Mar 2024 09:46:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Mar 30 05:46:15 2024
Received: from localhost ([127.0.0.1]:44009 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rqVHy-0002MS-U3
	for submit <at> debbugs.gnu.org; Sat, 30 Mar 2024 05:46:15 -0400
Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]:53427)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <felician.nemeth@HIDDEN>) id 1rqVHv-0002MD-7H
 for 70036 <at> debbugs.gnu.org; Sat, 30 Mar 2024 05:46:13 -0400
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a465ddc2c09so149018366b.2
 for <70036 <at> debbugs.gnu.org>; Sat, 30 Mar 2024 02:46:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1711791963; x=1712396763; darn=debbugs.gnu.org;
 h=mime-version:face:user-agent:message-id:in-reply-to:date:references
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=fS5ZHG0AA6HvG/9ndxZby5pbzO7Rll+MbCy4dYEyXG0=;
 b=jH1NZoElJhwb7ytALWcfdTddwlk9zdyqw5wsgu2j33W6acbjADsU7r97a/J66JTRK1
 mtIbUcsuL8Bp4JPG9TVLOvWReZk7yD80cyCzQeVR0esbbdjnMiM794pcHhXlsjI+1GxC
 NqhpZHn3CP06xavX6xULN1BV1UjdP9aqymaMjphZfLoZThBIy0AMvqDLopzp9POjxdYy
 pmkHWPfays80AmaL9MFfhG4vnostX9IgGRvqWQg0oYdTBCFTFLjomcCthb+Iocb2mPQw
 uNnkFURO9lHea+fFUHEQ9dvwjUMwO+JTfD4ULfNl4zk++kaT1fvt2eEstpp3Uzxp2x/S
 gbbA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1711791963; x=1712396763;
 h=mime-version:face:user-agent:message-id:in-reply-to:date:references
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=fS5ZHG0AA6HvG/9ndxZby5pbzO7Rll+MbCy4dYEyXG0=;
 b=KxyyivxRlpWCHtIAtb8gJh3xf2zoRq+GIlSQdcjfb5yecRqeIxgEr/IpuciexKH0mg
 BLE+YeZloNjVHpDG99tpU8TC4U546tMMX9eVmuo0V0yn2UfuELxtGfAQ9LsJOpo17D8K
 hrYC17yGng9uu7Dc63HnEclO0EeQ5unZ01RBIHgqOgvH3hOYgWoJ1tiwxen8oPMdD4CV
 zCSq7OOXyLLoN4dmp6OUPbsfGVmqOIiibG6FR7JcWLK0DTdkFJJbONQGrHZDJEn+YfBW
 pgHG2MDac9GibEgU887h20xpZKu5Ec4Hm90KmTYxW2X0VG9gIlHsDK2YY9/yhBla6FKI
 5Y0Q==
X-Forwarded-Encrypted: i=1;
 AJvYcCUcmHFj1mAFXE39xYc+6lrtXbGmCjhdt1xzxlNQDAV3pgXrMIm/lUwjQXwmSySb56QUcvuZ+xMdRS2CvAeId2tQQjJNNHM=
X-Gm-Message-State: AOJu0Ywu++rH+DB/FSfKGoxQhJqttieGflqt5Ywlap4ejPxGIq/mJCtT
 WiRq7fDK2rdjlajDZ2O/Lcps/nO4xWJwwi4FP8VK0YR+U+7KGu9yfmqQSM4y
X-Google-Smtp-Source: AGHT+IEDOm3mIbAbHZvJfWUNynJXHBT36jFT5lCEu4kq3rm1KfS7MigdI/LWIQIf3UgvL0WJ0WQymQ==
X-Received: by 2002:a05:6402:5202:b0:56d:b5ce:9e04 with SMTP id
 s2-20020a056402520200b0056db5ce9e04mr3368473edd.30.1711791962455; 
 Sat, 30 Mar 2024 02:46:02 -0700 (PDT)
Received: from betli.gmail.com (catv-213-222-160-137.catv.fixed.vodafone.hu.
 [213.222.160.137]) by smtp.gmail.com with ESMTPSA id
 fe8-20020a056402390800b0056c522d014esm2931729edb.57.2024.03.30.02.46.01
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 30 Mar 2024 02:46:02 -0700 (PDT)
From: Felician Nemeth <felician.nemeth@HIDDEN>
To: Theodor Thornhill <theo@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
References: <87le63xzjt.fsf@HIDDEN> <87ttkrqvru.fsf@HIDDEN>
 <87il17xsea.fsf@HIDDEN> <86wmpmhp0a.fsf@HIDDEN>
 <874jcqygpn.fsf@HIDDEN> <875xx6muzt.fsf@HIDDEN>
 <8734say2wi.fsf@HIDDEN>
Date: Sat, 30 Mar 2024 10:46:00 +0100
In-Reply-To: <8734say2wi.fsf@HIDDEN> (Theodor Thornhill via's message of
 "Thu, 28 Mar 2024 13:08:45 +0100")
Message-ID: <87zfugoxwn.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAABGdBTUEAALGPC/xhBQAAACBj
 SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX5+fmhoaEwMDD/
 ///TMNVWAAAAAWJLR0QDEQxM8gAAAAlwSFlzAAAPEgAADxIBIZvyMwAAAAd0SU1FB+AICBUfHgLs
 gGoAAAGXSURBVCjPRdK/b5tAFAfw753gBEwM2ApMbuVIqf+Ko0qiyhOu4sj2xJBYMn/FUdX7UUUZ
 OjHgyvf+yj6IcW6Bjx53934ADEvs8bmEr8UVoTYTOyJO9KoYsVofN8kILdbeJ8Li6YpZWop4xOK0
 VdfIoXmkHn5/5D7/Ts/8THacSqnkKTcMTxgUkVzFnEIRTKwwYYSCvzfg16f0i8YApW/XG/Pm8R49
 dXjxKmRnxv3OwooQWcv4RUYem1fsNe/WU63uk7AmYxk78y32/ee2tZB4fO+WcZ7lnIGEolXW1EGw
 LfkSuQ0XTgRefgNlfNwRNV6QhBxJ8JNxTMUPyBqTd0bjaAP5G7NJRU39z80hLOZTjqB7K3tEEFSj
 aEsuQew6qBxxyhHjVUR7H7NpC9iHJZGLMCEuweqAqE1BHbfK2oRIz9EHYA/+wiFWru9smeVfuWNZ
 2+NFtX80UA1TvJNdytM4DwO4kY7bJz8Qcd0G0ceslZGkkeoBsjUHwF1+jjM3XHaXEZ7mGLfwPFO+
 RV9QLY2iEdmDo78D/gNPaXVYqd+pyQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNi0wOC0wOFQyMzoz
 MDoyOCswMjowMGy/yHYAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTYtMDgtMDhUMjM6MzA6MjgrMDI6
 MDAd4nDKAAAAAElFTkSuQmCC
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70036
Cc: Eli Zaretskii <eliz@HIDDEN>, 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Theodor Thornhill <theo@HIDDEN> writes:
> Felician Nemeth <felician.nemeth@HIDDEN> writes:

>> Theo, can you email me the relevant messages that your server sends
>> to Emacs?  Does the server send lots of similar diagnostics messages
>> frequently?

> I'll try to include such a report a little later today. 

Thanks, that would be helpful.

> [2. text/x-diff; 0001-Don-t-use-file-truepath-in-Eglot-bug-70036.patch]...

I think using find-buffer-visiting instead of get-file-buffer and
file-truename instead of expand-file-name in Eglot is problematic.
Let's say we have these files:

/project/a.c
/project/a.h -> /other/a.h

Eglot will communicate these file names to the LSP server: /project/a.c
and /other/a.h.  Then the server cannot "associate" a.h with a.c.
Additionally, a.h will be outside of the LSP workspace.

This indeed confuses clangd a bit: it only takes into account the
changes of buffer a.h when it is saved.  (Because it assumes
/project/a.h is not opened in the editor.)

------

Regarding the patch itself, cache invalidation is missing from it.  The
user might kill a buffer or save it under a different name with
write-file.  Changing (PATH -> BUFFER) to (PATH -> (BUFFER, FILENAME))
would probably work.  Eglot should save the current buffer-file-name
when it inserts a new item into the hash of managed-buffers.  And when
it retrieves an item, it should verify whether the buffer-file-name is
the same as the saved file-name.

Can file-truepath change while buffer-file-name remains the same?  Yes,
but I think Eglot could ignore those rare cases, or handle it elsewhere.
(For example, it could update the cache entry after a buffer is saved.)




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 13:52:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 28 09:52:44 2024
Received: from localhost ([127.0.0.1]:39602 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpqBP-0002nP-N2
	for submit <at> debbugs.gnu.org; Thu, 28 Mar 2024 09:52:43 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:59798)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1rpqBL-0002ma-SM
 for 70036 <at> debbugs.gnu.org; Thu, 28 Mar 2024 09:52:41 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1rpqBE-0001Bk-Mj; Thu, 28 Mar 2024 09:52:32 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=VX/nW8TTq7LQ58CdOHzHjsWauydzcOm9Yejf72dIo88=; b=TdYZTfFe7MwT
 haBSmQMw46Tcgkt/KrqrSKUbcLCrcrTCjveeipCrm3M2rw++gO9CUvDDwAQp2yrc+w8e59fwJhKJS
 IjK0fYCZlLUDUxxwF3jxzsf0HHR4CLHkChjENQY9PT/WctKLdJY8xpXQ7PpipFjMcQ5Q4ORswFost
 rwPW3knvsmAShcdIJE7o8G4VWEjG+juxjtpNgK/+p3lmmsBqVIQIwT8O6sl5AO/3RHI3MVDHBATcj
 pDJSTRPMooMgLRngm+KQiulYyFGBGsHzqYchyvQD7L1kngb/kxnKurhf+ex8Q8+NNr1H2ZE6B+40B
 yORMmhQWk2pe2NnU/rFqiw==;
Date: Thu, 28 Mar 2024 15:52:23 +0200
Message-Id: <86zfuifoq0.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87il16tw0l.fsf@localhost> (message from Ihor Radchenko on Thu,
 28 Mar 2024 11:51:06 +0000)
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
References: <87le63xzjt.fsf@HIDDEN> <87jzlmd831.fsf@localhost>
 <87v856wrj1.fsf@HIDDEN> <87r0futxj4.fsf@localhost>
 <875xx6y46j.fsf@HIDDEN> <87il16tw0l.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 70036
Cc: 70036 <at> debbugs.gnu.org, theo@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Cc: 70036 <at> debbugs.gnu.org
> From: Ihor Radchenko <yantar92@HIDDEN>
> Date: Thu, 28 Mar 2024 11:51:06 +0000
> 
> If the slow parts of `file-truename' are the calls to C subroutines,
> rewriting `file-truename' in C will not help much with the performance.

That is only true if the C implementation uses the same C subroutines,
or their bodies.  If, instead, the C implementation uses something
like 'realpath', which produces the fully resolved file name ion one
go, then the profile from the Lisp implementation is not really
relevant.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 12:47:42 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 28 08:47:42 2024
Received: from localhost ([127.0.0.1]:39529 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rppAT-0005oV-Hh
	for submit <at> debbugs.gnu.org; Thu, 28 Mar 2024 08:47:42 -0400
Received: from out-184.mta0.migadu.com ([91.218.175.184]:13907)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <theo@HIDDEN>) id 1rppAQ-0005n1-2X
 for 70036 <at> debbugs.gnu.org; Thu, 28 Mar 2024 08:47:40 -0400
X-Report-Abuse: Please report any abuse attempt to abuse@HIDDEN and
 include these headers.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thornhill.no;
 s=key1; t=1711630050;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=NRnFQsmLBcEvYyzyQR4l6EzsfBnWWz+sjIt3girwMFc=;
 b=ybJyiSZupupU5wrsk8IUx+1iItFGO2HQTNchO0sjU9nSJVwndUxN5Wb6O2J2/fmiL9pq57
 1m5YjxDwykI1zUbKoO3hZ9ae5dtZBcoN4VJBs8mAfy/ThGTAaz6T74638zaqbvY7+qfg4U
 VxwLOeL+kfDbt+wcLHFZjJh6rXYGIMvT10KxniQJd28/W/3DxSQVRfRKIXIBDThp+bh9wU
 P/lXOh2h5YCMtf65DtKdaoOdsLRBNLhZOgtMVGmrxGSBhIP0eLye1lMJxEYkWyY+13LFtg
 TToHITTQOHZxZzLqMlJEuYC7yyxX56HsRWsWZiBi9liGfP2DJxVqniDjFvjupQ==
From: Theodor Thornhill <theo@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
In-Reply-To: <87il16tw0l.fsf@localhost>
References: <87le63xzjt.fsf@HIDDEN> <87jzlmd831.fsf@localhost>
 <87v856wrj1.fsf@HIDDEN> <87r0futxj4.fsf@localhost>
 <875xx6y46j.fsf@HIDDEN> <87il16tw0l.fsf@localhost>
Date: Thu, 28 Mar 2024 13:47:27 +0100
Message-ID: <87zfuiwmjk.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Migadu-Flow: FLOW_OUT
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70036
Cc: 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Ihor Radchenko <yantar92@HIDDEN> writes:

> Theodor Thornhill <theo@HIDDEN> writes:
>
>> I'm sorry, but I don't see the real difference here. Yes, the profile is
>> more detailed this way, but it doesn't change the fact that
>> file-truename is slow, does it?
>
> It does not, but it is important for your suggestion to move
> `file-truename' to the C level.
>
> If the slow parts of `file-truename' are the calls to C subroutines,
> rewriting `file-truename' in C will not help much with the performance.
> (Unless you try hard and move parts of the used subroutines into the C
> implementation of `file-truename', but that will involve copy-pasting
> parts of the existing code and cannot be a good idea without very strong
> justification)
>

Yeah, I agree with this.

>> The question to me is whether or not this is an acceptable performance
>> hit to take for eglot given what it's trying to do, and my opinion is
>> no. Whether or not it should be moved to C is open to suggestion. I'm
>> preparing a patch that only targets Eglot by removing reliance on this
>> function.
>
> If your aim is improving eglot performance specifically, sure.
> If your aim is improving `file-truename' performance in general, a more
> detailed analysis can be helpful.
>

And this.

Wrt eglot specifically or not - I'm not sure whether or not this affects
other parts of emacs. My guess is that it will, but I haven't
investigated that yet.

>>        17839  63% - command-execute
>>        17794  63%  - funcall-interactively
>>        17793  63%   - eval-last-sexp
>>        17793  63%    - #<compiled-function EF0>
>>        17793  63%     - elisp--eval-last-sexp
>>        17791  63%      - eval
>>        17791  63%       - benchmark-call
>>        17788  63%        - #<lambda 219>
>>        17783  63%         - file-truename
>>        17576  62%          - let
>> ...
>
> When you have recursive calls, it is generally more useful to view
> reversed calltree (B) in the profiler report. It will accumulate calls
> to the same function together, regardless on how deep in the call stack
> these calls are made.
>

TIL - thanks :)





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 12:09:01 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 28 08:09:01 2024
Received: from localhost ([127.0.0.1]:39288 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpoZ2-000288-Hi
	for submit <at> debbugs.gnu.org; Thu, 28 Mar 2024 08:09:01 -0400
Received: from out-174.mta0.migadu.com ([2001:41d0:1004:224b::ae]:10778)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <theo@HIDDEN>) id 1rpoYz-000279-HI
 for 70036 <at> debbugs.gnu.org; Thu, 28 Mar 2024 08:08:58 -0400
X-Report-Abuse: Please report any abuse attempt to abuse@HIDDEN and
 include these headers.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thornhill.no;
 s=key1; t=1711627729;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=WBpMWIZMnBvAJnOO1U8kMO0eLPAy3YaQQaKpYcyJKFQ=;
 b=x3IljinKolVusJWjgcVxfvv3C2DtsNuBtCe7aDghIwP32VDPnacUsryQO05eSGGKjEwjQy
 NxcenBW3VckGuyLgapeX/D+QqiConWJhg3ZJYzC7MCKARl0OpdBn6/cYdxn/ckL7mEP6LR
 rXYbQRhz4Uas3PXCb4WaDciMLo8EPCJKoQZavLQap5DrvpHbkaF3mYNRiWvCw9BHuOpMwJ
 VZd5nQHBhrJpTXoffMkbVDQ1mLc3SM5eH2y6eeDVuhAm7zp/oGlpC8aXCfLJlQslWwrNeV
 /WmjrS2lUYew8qWDFpyfeWF3BNLU1XqhR1uYai5myQWwW3BCtvDSaFspeAmmKQ==
From: Theodor Thornhill <theo@HIDDEN>
To: Felician Nemeth <felician.nemeth@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
In-Reply-To: <875xx6muzt.fsf@HIDDEN>
References: <87le63xzjt.fsf@HIDDEN> <87ttkrqvru.fsf@HIDDEN>
 <87il17xsea.fsf@HIDDEN> <86wmpmhp0a.fsf@HIDDEN>
 <874jcqygpn.fsf@HIDDEN> <875xx6muzt.fsf@HIDDEN>
Date: Thu, 28 Mar 2024 13:08:45 +0100
Message-ID: <8734say2wi.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Migadu-Flow: FLOW_OUT
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70036
Cc: Eli Zaretskii <eliz@HIDDEN>, 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Felician Nemeth <felician.nemeth@HIDDEN> writes:

> Theodor Thornhill <theo@HIDDEN> writes:
>
>> This wouldn't help for the usage in find-buffer-visiting, though. But
>> this one could more easily be replaced by reworking the diagnostics
>> handler. We could store the last received diagnostics in the server
>> object, and do a quick lookup from known buffers there.
>
> eglot-handle-notification:textDocument/publishDiagnostics,
> eglot--xref-make-match, and eglot--apply-workspace-edit call
> find-buffer-visiting.  It seems to me only the first case might be
> really time sensitive.  Theo, can you email me the relevant messages
> that your server sends to Emacs?  Does the server send lots of similar
> diagnostics messages frequently?
>
> Thanks,
> Felici=C3=A1n

I'll try to include such a report a little later today. But yes, it
happens a lot. Consider the following patch, though. It eliminates the
issues for publishDiagnostics. It can easily be extended to the other
places where find-buffer-visiting is used.

The publishDiagnostics is sent on change from the server, so that isn't
directly initiated by Eglot.

What do you think?

Theo


--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
 filename=0001-Don-t-use-file-truepath-in-Eglot-bug-70036.patch

From d43fe85eae05baa07dd4c3e873a1b94542d97ea9 Mon Sep 17 00:00:00 2001
From: Theodor Thornhill <theo@HIDDEN>
Date: Thu, 28 Mar 2024 12:56:23 +0100
Subject: [PATCH] Don't use file-truepath in Eglot (bug#70036)

`file-truepath' is slow because of recursive calls and being implemented
in lisp.  It seems to not be needed in eglot, but it is used behind the
scenes in `find-buffer-visiting', thus appearing in profiles.  Moving
the implementation to a hash map will yield similar performance
benefits, but wouldn't require us to rewrite `file-truename' in C.

* lisp/progmodes/eglot.el (eglot-lsp-server): Convert 'managed-buffers'
to a hashmap.
(eglot-uri-to-path): Don't use file-truepath, as it is too slow to be
included in the hot path.
(eglot--on-shutdown): Use buffers from buffer map.
(eglot--managed-mode): Add buffer to map, rather than list. Also remove
it from the map on deactivation.
(eglot-handle-notification): Expose server and get buffer from the
buffer map.
---
 lisp/progmodes/eglot.el | 30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
index 7d2f1a55165..c6dbca6fc6a 100644
--- a/lisp/progmodes/eglot.el
+++ b/lisp/progmodes/eglot.el
@@ -1053,8 +1053,8 @@ eglot-lsp-server
     :documentation "Map (DIR -> (WATCH ID1 ID2...)) for `didChangeWatchedFiles'."
     :initform (make-hash-table :test #'equal) :accessor eglot--file-watches)
    (managed-buffers
-    :initform nil
-    :documentation "List of buffers managed by server."
+    :documentation "Map (PATH -> BUFFER) for buffers managed by server."
+    :initform (make-hash-table :test #'equal)
     :accessor eglot--managed-buffers)
    (saved-initargs
     :documentation "Saved initargs for reconnection purposes."
@@ -1085,12 +1085,12 @@ eglot-uri-to-path
 
 (defun eglot-path-to-uri (path)
   "Convert PATH, a file name, to LSP URI string and return it."
-  (let ((truepath (file-truename path)))
+  (let ((expanded-path (expand-file-name path)))
     (if (and (url-type (url-generic-parse-url path))
              ;; It might be MS Windows path which includes a drive
              ;; letter that looks like a URL scheme (bug#59338)
              (not (and (eq system-type 'windows-nt)
-                       (file-name-absolute-p truepath))))
+                       (file-name-absolute-p expanded-path))))
         ;; Path is already a URI, so forward it to the LSP server
         ;; untouched.  The server should be able to handle it, since
         ;; it provided this URI to clients in the first place.
@@ -1098,11 +1098,11 @@ eglot-path-to-uri
       (concat "file://"
               ;; Add a leading "/" for local MS Windows-style paths.
               (if (and (eq system-type 'windows-nt)
-                       (not (file-remote-p truepath)))
+                       (not (file-remote-p expanded-path)))
                   "/")
               (url-hexify-string
                ;; Again watch out for trampy paths.
-               (directory-file-name (file-local-name truepath))
+               (directory-file-name (file-local-name expanded-path))
                eglot--uri-path-allowed-chars)))))
 
 (defun eglot-range-region (range &optional markers)
@@ -1187,7 +1187,7 @@ eglot--servers-by-xrefed-file
 (defun eglot--on-shutdown (server)
   "Called by jsonrpc.el when SERVER is already dead."
   ;; Turn off `eglot--managed-mode' where appropriate.
-  (dolist (buffer (eglot--managed-buffers server))
+  (dolist (buffer (map-values (eglot--managed-buffers server)))
     (let (;; Avoid duplicate shutdowns (github#389)
           (eglot-autoshutdown nil))
       (eglot--when-live-buffer buffer (eglot--managed-mode-off))))
@@ -1992,7 +1992,11 @@ eglot--managed-mode
       (add-hook 'eldoc-documentation-functions #'eglot-signature-eldoc-function
                 nil t)
       (eldoc-mode 1))
-    (cl-pushnew (current-buffer) (eglot--managed-buffers (eglot-current-server))))
+
+    (let ((buffer (current-buffer)))
+      (puthash (expand-file-name (buffer-file-name buffer))
+               buffer
+               (eglot--managed-buffers (eglot-current-server)))))
    (t
     (remove-hook 'after-change-functions #'eglot--after-change t)
     (remove-hook 'before-change-functions #'eglot--before-change t)
@@ -2020,10 +2024,10 @@ eglot--managed-mode
     (let ((server eglot--cached-server))
       (setq eglot--cached-server nil)
       (when server
-        (setf (eglot--managed-buffers server)
-              (delq (current-buffer) (eglot--managed-buffers server)))
+        (remhash (expand-file-name (buffer-file-name (current-buffer)))
+                 (eglot--managed-buffers server))
         (when (and eglot-autoshutdown
-                   (null (eglot--managed-buffers server)))
+                   (null (map-values (eglot--managed-buffers server))))
           (eglot-shutdown server)))))))
 
 (defun eglot--managed-mode-off ()
@@ -2346,7 +2350,7 @@ eglot-handle-notification
                           (remhash token (eglot--progress-reporters server))))))))))
 
 (cl-defmethod eglot-handle-notification
-  (_server (_method (eql textDocument/publishDiagnostics)) &key uri diagnostics
+  (server (_method (eql textDocument/publishDiagnostics)) &key uri diagnostics
            &allow-other-keys) ; FIXME: doesn't respect `eglot-strict-mode'
   "Handle notification publishDiagnostics."
   (cl-flet ((eglot--diag-type (sev)
@@ -2357,7 +2361,7 @@ eglot-handle-notification
             (mess (source code message)
               (concat source (and code (format " [%s]" code)) ": " message)))
     (if-let* ((path (expand-file-name (eglot-uri-to-path uri)))
-              (buffer (find-buffer-visiting path)))
+              (buffer (gethash path (eglot--managed-buffers server))))
         (with-current-buffer buffer
           (cl-loop
            initially
-- 
2.40.1


--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 11:55:14 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 28 07:55:14 2024
Received: from localhost ([127.0.0.1]:39258 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpoLh-0000uc-Tc
	for submit <at> debbugs.gnu.org; Thu, 28 Mar 2024 07:55:14 -0400
Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]:61919)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <felician.nemeth@HIDDEN>) id 1rpoLf-0000tq-1A
 for 70036 <at> debbugs.gnu.org; Thu, 28 Mar 2024 07:55:12 -0400
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-414970d4185so6407555e9.3
 for <70036 <at> debbugs.gnu.org>; Thu, 28 Mar 2024 04:55:10 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1711626904; x=1712231704; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:face:user-agent:message-id
 :in-reply-to:date:references:subject:cc:to:from:from:to:cc:subject
 :date:message-id:reply-to;
 bh=QDv4JkwEgB/2C2DOPBdiVMvC4pBds1CZfUP2YYX8nmY=;
 b=As6hoItS0+xENAHOaSkScUTmmlVCvpqTOfC/Ez0CYEkz6W3KYE2BSA2tpCo+BiIfbN
 dnvPC4WNSe3QmQOXmkCzIE1EWjfvMxdZXz8epW8g90L6SBaT/2yuqUWMr+J0a3/2r1IH
 NyMfSbQNSt2jg/0RjNwfK4ntIkeX7wxBObXAuMfEb9TkIR1CIVrb7SnueEz8MJi6MIjq
 v+sXRgzjKQI0gOro4r7129fNeJ3luqIXzszTbj1wLPDBdp3/TBoxfz7tIGV22qnJm1PK
 zRjs/DS+IM2qcOR/NyTi9RBpFwOTvt4aVBe6nwg6ADX3fIKWFhpRP7iKr4fNVFfdInaS
 jeTw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1711626904; x=1712231704;
 h=content-transfer-encoding:mime-version:face:user-agent:message-id
 :in-reply-to:date:references:subject:cc:to:from:x-gm-message-state
 :from:to:cc:subject:date:message-id:reply-to;
 bh=QDv4JkwEgB/2C2DOPBdiVMvC4pBds1CZfUP2YYX8nmY=;
 b=U9K/iuFMFivv4iGGypWmTcevQ5cl0P1zD6i9kTXVM4Gf9hDBHFQFHn4TONUj5v6Yrb
 uzT65LGQC3jEsd++36eKCJkvfPXmiDE1LUv842MMlR27P3TCFOH6Dgq3GNNqrE5B2Bv0
 VA+5w9Hup9cDr5rRFraalL8BID+yreVGACK7x/v5wjKCMwojEdCTTfB71wl5YdR+liwB
 lO8KE7hia7vNacxoW9ei0DRGhzqCriqvG7080vCl0DYuO2yjIrx8H5/U6ks5l+K+vpfc
 N+2igxfZG09j8MmnKLQ3qqM9S2MB/5+KjXYYXqufajKHGUA2VPue9d9NDQOteFifevEp
 pd0Q==
X-Forwarded-Encrypted: i=1;
 AJvYcCW2NOcUu/4KZul/lS7EuOeWHjSCoXgVWW8VBmCgzm5uvvONAs/CvEEMZWcFU0bq7LYIekVDAJFRMakDn55V4F02G5HV68Y=
X-Gm-Message-State: AOJu0Yygoa0IJgxZmwNp2i8UOrAVIGAryLQ1Oi7Vid2HiggJtz2DOjWf
 rSdwvDWqtRawDVK7k4fO0vo4YJPlcYJjvSeOf4h5fIoRzpZEFKAX4cJJ0kAr
X-Google-Smtp-Source: AGHT+IFRx+BZzVoUffJg9pBvUYZUTN5bbriaWLHSKAbRq9gnBE4NVrA8pYFC+PY+gCOjGYAUip4UjA==
X-Received: by 2002:a05:600c:4f4e:b0:413:fff2:a7d1 with SMTP id
 m14-20020a05600c4f4e00b00413fff2a7d1mr2259235wmq.29.1711626903985; 
 Thu, 28 Mar 2024 04:55:03 -0700 (PDT)
Received: from ulti.gmail.com ([2001:738:2001:407f:d329:3c92:fe6f:14c3])
 by smtp.gmail.com with ESMTPSA id
 bg3-20020a05600c3c8300b0041481207b23sm2118266wmb.8.2024.03.28.04.55.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 28 Mar 2024 04:55:03 -0700 (PDT)
From: Felician Nemeth <felician.nemeth@HIDDEN>
To: Theodor Thornhill <theo@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
References: <87le63xzjt.fsf@HIDDEN> <87ttkrqvru.fsf@HIDDEN>
 <87il17xsea.fsf@HIDDEN> <86wmpmhp0a.fsf@HIDDEN>
 <874jcqygpn.fsf@HIDDEN>
Date: Thu, 28 Mar 2024 12:55:02 +0100
In-Reply-To: <874jcqygpn.fsf@HIDDEN> (Theodor Thornhill's message of
 "Thu, 28 Mar 2024 08:10:28 +0100")
Message-ID: <875xx6muzt.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAABGdBTUEAALGPC/xhBQAAACBj
 SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX5+fmhoaEwMDD/
 ///TMNVWAAAAAWJLR0QDEQxM8gAAAAlwSFlzAAAPEgAADxIBIZvyMwAAAAd0SU1FB+AICBUfHgLs
 gGoAAAGXSURBVCjPRdK/b5tAFAfw753gBEwM2ApMbuVIqf+Ko0qiyhOu4sj2xJBYMn/FUdX7UUUZ
 OjHgyvf+yj6IcW6Bjx53934ADEvs8bmEr8UVoTYTOyJO9KoYsVofN8kILdbeJ8Li6YpZWop4xOK0
 VdfIoXmkHn5/5D7/Ts/8THacSqnkKTcMTxgUkVzFnEIRTKwwYYSCvzfg16f0i8YApW/XG/Pm8R49
 dXjxKmRnxv3OwooQWcv4RUYem1fsNe/WU63uk7AmYxk78y32/ee2tZB4fO+WcZ7lnIGEolXW1EGw
 LfkSuQ0XTgRefgNlfNwRNV6QhBxJ8JNxTMUPyBqTd0bjaAP5G7NJRU39z80hLOZTjqB7K3tEEFSj
 aEsuQew6qBxxyhHjVUR7H7NpC9iHJZGLMCEuweqAqE1BHbfK2oRIz9EHYA/+wiFWru9smeVfuWNZ
 2+NFtX80UA1TvJNdytM4DwO4kY7bJz8Qcd0G0ceslZGkkeoBsjUHwF1+jjM3XHaXEZ7mGLfwPFO+
 RV9QLY2iEdmDo78D/gNPaXVYqd+pyQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNi0wOC0wOFQyMzoz
 MDoyOCswMjowMGy/yHYAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTYtMDgtMDhUMjM6MzA6MjgrMDI6
 MDAd4nDKAAAAAElFTkSuQmCC
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-2
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70036
Cc: Eli Zaretskii <eliz@HIDDEN>, 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Theodor Thornhill <theo@HIDDEN> writes:

> This wouldn't help for the usage in find-buffer-visiting, though. But
> this one could more easily be replaced by reworking the diagnostics
> handler. We could store the last received diagnostics in the server
> object, and do a quick lookup from known buffers there.

eglot-handle-notification:textDocument/publishDiagnostics,
eglot--xref-make-match, and eglot--apply-workspace-edit call
find-buffer-visiting.  It seems to me only the first case might be
really time sensitive.  Theo, can you email me the relevant messages
that your server sends to Emacs?  Does the server send lots of similar
diagnostics messages frequently?

Thanks,
Felici=E1n




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 11:51:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 28 07:51:11 2024
Received: from localhost ([127.0.0.1]:39243 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpoHm-0000Z2-Nu
	for submit <at> debbugs.gnu.org; Thu, 28 Mar 2024 07:51:11 -0400
Received: from mout02.posteo.de ([185.67.36.66]:59195)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1rpoHi-0000Xx-Mi
 for 70036 <at> debbugs.gnu.org; Thu, 28 Mar 2024 07:51:10 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id B130E240103
 for <70036 <at> debbugs.gnu.org>; Thu, 28 Mar 2024 12:50:59 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1711626659; bh=pDFDrS4FYhDwIx7dH/CojKH818PJG2gZ4/1YK2ur4Cc=;
 h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type:
 From;
 b=B4AayFEJOq9dED5fjgyqaPLiMIfy+MkwoZU8ijjsBkhirop/6Ofgggnh7a6s8K9jF
 7IQyL5jqZAQadLv/KZKpijBFyEg9Y/N4tqNEkq5wvHTaa8KkipDqeeRCsjZSGTy0qZ
 eVtzDYAOfx2750C/5IcdfbFW9uE/tVacmlbBw+dCcAUZtoj9t91L/A8z7C0gj2TGmR
 5zpuKuPAp65f8lcupVRw3oKiU8bX1LvQ3vdTp6/6P799gC/GJQa/Nx1//wFpx0b51e
 3w1BbzqIFiUPnCwyUFqkWITtupFmseEA4qWBkZUlOdO7ZPs9RNTm+LWWO1mxbpS6Xu
 14uUpwzBRv5mw==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4V521G6ccjz9rxB;
 Thu, 28 Mar 2024 12:50:58 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Theodor Thornhill <theo@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
In-Reply-To: <875xx6y46j.fsf@HIDDEN>
References: <87le63xzjt.fsf@HIDDEN> <87jzlmd831.fsf@localhost>
 <87v856wrj1.fsf@HIDDEN> <87r0futxj4.fsf@localhost>
 <875xx6y46j.fsf@HIDDEN>
Date: Thu, 28 Mar 2024 11:51:06 +0000
Message-ID: <87il16tw0l.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 70036
Cc: 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Theodor Thornhill <theo@HIDDEN> writes:

> I'm sorry, but I don't see the real difference here. Yes, the profile is
> more detailed this way, but it doesn't change the fact that
> file-truename is slow, does it?

It does not, but it is important for your suggestion to move
`file-truename' to the C level.

If the slow parts of `file-truename' are the calls to C subroutines,
rewriting `file-truename' in C will not help much with the performance.
(Unless you try hard and move parts of the used subroutines into the C
implementation of `file-truename', but that will involve copy-pasting
parts of the existing code and cannot be a good idea without very strong
justification)

> The question to me is whether or not this is an acceptable performance
> hit to take for eglot given what it's trying to do, and my opinion is
> no. Whether or not it should be moved to C is open to suggestion. I'm
> preparing a patch that only targets Eglot by removing reliance on this
> function.

If your aim is improving eglot performance specifically, sure.
If your aim is improving `file-truename' performance in general, a more
detailed analysis can be helpful.

>        17839  63% - command-execute
>        17794  63%  - funcall-interactively
>        17793  63%   - eval-last-sexp
>        17793  63%    - #<compiled-function EF0>
>        17793  63%     - elisp--eval-last-sexp
>        17791  63%      - eval
>        17791  63%       - benchmark-call
>        17788  63%        - #<lambda 219>
>        17783  63%         - file-truename
>        17576  62%          - let
> ...

When you have recursive calls, it is generally more useful to view
reversed calltree (B) in the profiler report. It will accumulate calls
to the same function together, regardless on how deep in the call stack
these calls are made.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 11:41:25 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 28 07:41:25 2024
Received: from localhost ([127.0.0.1]:39223 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpo8K-0008Bg-IR
	for submit <at> debbugs.gnu.org; Thu, 28 Mar 2024 07:41:24 -0400
Received: from out-184.mta1.migadu.com ([95.215.58.184]:26337)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <theo@HIDDEN>) id 1rpo8G-0008Aj-Ny
 for 70036 <at> debbugs.gnu.org; Thu, 28 Mar 2024 07:41:22 -0400
X-Report-Abuse: Please report any abuse attempt to abuse@HIDDEN and
 include these headers.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thornhill.no;
 s=key1; t=1711626073;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=3b0JR+VrbMtbW4J14nJrHwQeZgm1Yx807o4y4k0m4ok=;
 b=BEqt0xVVdvTxL7AM6KOeFtvIYOGRvVuQX5H1TZvMfxmqclM9BPlGx1YsqCqHJYaiUoaYYs
 syv7aCWCZZQxwY47+mmh2Ob23eEr70pduu0eRlzhqPPLXBIxde60tZJEE23yyB7HkzSONC
 7/eg8C4WINFEIp/48GYGRB6GbJqHfBuzcfFZD84TexQjAXKczOw3vmRu4MPGwHeWenbqZE
 QNq5Z/67mMMeqjEPSwSkACVvRf/TCsXkKqMoE/MamEzNJbAiryZ8KWRiMezEnXvPc4QJqL
 a73mEFX0wKUS0vkNuzriGhoUCWOS3rrW/wq7qQuT+INDZsuHihk71tx+KeJM5Q==
From: Theodor Thornhill <theo@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
In-Reply-To: <87r0futxj4.fsf@localhost>
References: <87le63xzjt.fsf@HIDDEN> <87jzlmd831.fsf@localhost>
 <87v856wrj1.fsf@HIDDEN> <87r0futxj4.fsf@localhost>
Date: Thu, 28 Mar 2024 12:41:08 +0100
Message-ID: <875xx6y46j.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Migadu-Flow: FLOW_OUT
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70036
Cc: 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Ihor Radchenko <yantar92@HIDDEN> writes:

> Theodor Thornhill <theo@HIDDEN> writes:
>
>> Not sure I understand what you mean. I tried it again, but this time the
>> call is 100000 times and in an existing file on my system which is
>> deeply nested. I run emacs with `emacs -Q` from a build on
>> `30b1b0d7cd8e4d46a601e9737350cda970f6bab0`.
>>
>> the relevant part from the profile this time:
>> ```
>>        15478  72% - command-execute
>>        15440  72%  - funcall-interactively
>>        15439  72%   - eval-last-sexp
>>        15439  72%    - #<compiled-function 0C4>
>>        15439  72%     - elisp--eval-last-sexp
>>        15436  71%      - eval
>>        15436  71%       - benchmark-call
>>        15434  71%        - #<lambda E8B>
>>        15434  71%         - file-truename
>>        13536  63%          - file-truename
>>        12224  57%           - file-truename
>> ...
>> To me this looks like it spends a lot of time in recursive calls
>
> No. It is just that your `file-truename' is native-compiled and the
> profiler is unable to get the details from inside native subr code.
>
> You can re-evaluate the defun to reveal the details in the profiler
> output. Or use Emacs compiled without native-compilation support.
>
> -- 
> Ihor Radchenko // yantar92,
> Org mode contributor,
> Learn more about Org mode at <https://orgmode.org/>.
> Support Org development at <https://liberapay.com/org-mode>,
> or support my work at <https://liberapay.com/yantar92>

I'm sorry, but I don't see the real difference here. Yes, the profile is
more detailed this way, but it doesn't change the fact that
file-truename is slow, does it?

The question to me is whether or not this is an acceptable performance
hit to take for eglot given what it's trying to do, and my opinion is
no. Whether or not it should be moved to C is open to suggestion. I'm
preparing a patch that only targets Eglot by removing reliance on this
function.

Theo

```
       17839  63% - command-execute
       17794  63%  - funcall-interactively
       17793  63%   - eval-last-sexp
       17793  63%    - #<compiled-function EF0>
       17793  63%     - elisp--eval-last-sexp
       17791  63%      - eval
       17791  63%       - benchmark-call
       17788  63%        - #<lambda 219>
       17783  63%         - file-truename
       17576  62%          - let
       17546  62%           - while
       17529  62%            - let
       17358  61%             - if
       17356  61%              - let
       16365  58%               - or
       15969  56%                - if
       15964  56%                 - let
       15951  56%                  - file-name-as-directory
       15824  56%                   - file-truename
       15788  56%                    - let
       15768  56%                     - while
       15712  55%                      - let
       15579  55%                       - if
       15577  55%                        - let
        7224  25%                         - or
        3429  12%                          - if
        3325  11%                           - let
        3059  10%                            - file-name-as-directory
        1866   6%                             - file-truename
        1501   5%                              - let
        1276   4%                               - while
        1121   3%                                - let
        1004   3%                                   find-file-name-handler
          18   0%                                   if
          49   0%                                - setcar
          26   0%                                   1-
          37   0%                                - if
          23   0%                                   <
          36   0%                                  not
          97   0%                               - if
          46   0%                                - eq
           8   0%                                   quote
           7   0%                                 or
         218   0%                              - cond
         112   0%                               - and
          95   0%                                - string=
          73   0%                                   substring
          82   0%                               - or
          57   0%                                  string=
          17   0%                                or
         123   0%                            - setcar
          83   0%                             - cons
```




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 11:18:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 28 07:18:30 2024
Received: from localhost ([127.0.0.1]:39200 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpnm8-0003Ro-RM
	for submit <at> debbugs.gnu.org; Thu, 28 Mar 2024 07:18:29 -0400
Received: from mout02.posteo.de ([185.67.36.66]:41829)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1rpnm4-0003Qu-Px
 for 70036 <at> debbugs.gnu.org; Thu, 28 Mar 2024 07:18:27 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id 346BF240104
 for <70036 <at> debbugs.gnu.org>; Thu, 28 Mar 2024 12:18:17 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1711624697; bh=td7t6LEN0/qZXYt6Mzs8Ys2JeEOZBjVO8zajkH00fqM=;
 h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type:
 From;
 b=JecxYgESTMQFJFOqsNYo5vJv3N1AimrGBqf3JlKZafOOlF/LJff+MrkX7z7yfL90G
 ydqI9+uePMulyiEYTayM6sI/wZD4eFDOj67zNuE2rhmZRjXAstvUOspmmZxdXs1fcK
 ljqmnBP9T6ZcAdx0pbMf4FIr8AtGbd/ZzBcOeyAD8pcMF+omzr7UEvjFLMgWINGL0/
 5FUsKetkq3e+4/Z1lTHU/EAEeoQQuTQXLoMHScPVJ3ZCdlOoCERBdkt+QmqiYZNsMV
 8RWH64HRIt5DfqpUrpt/5r5iTsKNRpN6b8vcdH+6AxRUWERPiAnKa8J3GLUxw3djBA
 l19EiPecx1aYw==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4V51HX0pXkz9rxB;
 Thu, 28 Mar 2024 12:18:15 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Theodor Thornhill <theo@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
In-Reply-To: <87v856wrj1.fsf@HIDDEN>
References: <87le63xzjt.fsf@HIDDEN> <87jzlmd831.fsf@localhost>
 <87v856wrj1.fsf@HIDDEN>
Date: Thu, 28 Mar 2024 11:18:23 +0000
Message-ID: <87r0futxj4.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 70036
Cc: 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Theodor Thornhill <theo@HIDDEN> writes:

> Not sure I understand what you mean. I tried it again, but this time the
> call is 100000 times and in an existing file on my system which is
> deeply nested. I run emacs with `emacs -Q` from a build on
> `30b1b0d7cd8e4d46a601e9737350cda970f6bab0`.
>
> the relevant part from the profile this time:
> ```
>        15478  72% - command-execute
>        15440  72%  - funcall-interactively
>        15439  72%   - eval-last-sexp
>        15439  72%    - #<compiled-function 0C4>
>        15439  72%     - elisp--eval-last-sexp
>        15436  71%      - eval
>        15436  71%       - benchmark-call
>        15434  71%        - #<lambda E8B>
>        15434  71%         - file-truename
>        13536  63%          - file-truename
>        12224  57%           - file-truename
> ...
> To me this looks like it spends a lot of time in recursive calls

No. It is just that your `file-truename' is native-compiled and the
profiler is unable to get the details from inside native subr code.

You can re-evaluate the defun to reveal the details in the profiler
output. Or use Emacs compiled without native-compilation support.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 11:00:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 28 07:00:02 2024
Received: from localhost ([127.0.0.1]:39184 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpnUG-0001ps-HY
	for submit <at> debbugs.gnu.org; Thu, 28 Mar 2024 07:00:01 -0400
Received: from out-175.mta0.migadu.com ([2001:41d0:1004:224b::af]:55273)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <theo@HIDDEN>) id 1rpnUD-0001ox-Kw
 for 70036 <at> debbugs.gnu.org; Thu, 28 Mar 2024 06:59:59 -0400
X-Report-Abuse: Please report any abuse attempt to abuse@HIDDEN and
 include these headers.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thornhill.no;
 s=key1; t=1711623590;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=zch7rFV8HCf+VNhzYWcqY5WKqV7oAXOYHpMMUreB8pg=;
 b=ZXmm7iPhSQ/USZPana6jrNNid6YYfuIF4juD+Yr+1QbZ0jJaMCqcRPXuq10RV67f8aGqe7
 nZuXJbIqCNJhlzFdlkIt/KX788uq3D0uMY+tXrGtI0kUbLcUiY0wPheiU0KQmsYZ7O2Gwa
 eE2Cr5bZqOVxWB5sqqBBLaUGwMqOtQ7HZklaMgkTvpv95RuXBY8KPbCVoqgIA0TejrpEfp
 iRlCdfl+YGKzxTITGSnMA98fIY4ASIagfHToyBrcdBYpzcjtIU2hpXDR8F/Hf9VKc+FWIs
 38QJUaKCiN0wQLmwqP4qx6ZNnjIybnyc+ReHkgyZrfKkC6jSxUEARSqt0Zue4Q==
From: Theodor Thornhill <theo@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
In-Reply-To: <87jzlmd831.fsf@localhost>
References: <87le63xzjt.fsf@HIDDEN> <87jzlmd831.fsf@localhost>
Date: Thu, 28 Mar 2024 11:59:46 +0100
Message-ID: <87v856wrj1.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Migadu-Flow: FLOW_OUT
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70036
Cc: 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Ihor Radchenko <yantar92@HIDDEN> writes:

> Theodor Thornhill via "Bug reports for GNU Emacs, the Swiss army knife
> of text editors" <bug-gnu-emacs@HIDDEN> writes:
>
>> Firstly, I'll show some benchmarks
>>
>> ```
>> ;; Emacs 29 branch
>>
>> (benchmark-run 10000
>>   (file-truename "~/Work/some/long/path/to/parse/that/is/very/deep/deep/deep/super/duper/deep/deep.el"))
>> ;; (1.810892642 1 0.051070616)
>> ...
>> Below are the profiles and the patch. On my system I needed to `ln -s
>> lisp/loadup.el .` to make it compile. Not sure if that is due to
>> differences between old and new `file-truename`, or something else.
>
> The profiles look fishy. For example, in emacs-30-before
>

Not sure I understand what you mean. I tried it again, but this time the
call is 100000 times and in an existing file on my system which is
deeply nested. I run emacs with `emacs -Q` from a build on
`30b1b0d7cd8e4d46a601e9737350cda970f6bab0`.

the relevant part from the profile this time:
```
       15478  72% - command-execute
       15440  72%  - funcall-interactively
       15439  72%   - eval-last-sexp
       15439  72%    - #<compiled-function 0C4>
       15439  72%     - elisp--eval-last-sexp
       15436  71%      - eval
       15436  71%       - benchmark-call
       15434  71%        - #<lambda E8B>
       15434  71%         - file-truename
       13536  63%          - file-truename
       12224  57%           - file-truename
       10970  51%            - file-truename
        9673  45%             - file-truename
        8468  39%              - file-truename
        7420  34%               - file-truename
        6374  29%                - file-truename
        5286  24%                 - file-truename
        4275  19%                  - file-truename
        3313  15%                   - file-truename
        2454  11%                    - file-truename
        1652   7%                     - file-truename
         984   4%                      - file-truename
         376   1%                         file-truename
           1   0%          time-since
           1   0%     execute-extended-command
```

To me this looks like it spends a lot of time in recursive calls

Theo




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 09:22:31 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 28 05:22:31 2024
Received: from localhost ([127.0.0.1]:39056 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rplxu-0002mf-Rp
	for submit <at> debbugs.gnu.org; Thu, 28 Mar 2024 05:22:30 -0400
Received: from mout02.posteo.de ([185.67.36.66]:41263)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1rplxs-0002lw-1L
 for 70036 <at> debbugs.gnu.org; Thu, 28 Mar 2024 05:22:28 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id 0EF61240101
 for <70036 <at> debbugs.gnu.org>; Thu, 28 Mar 2024 10:22:20 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1711617741; bh=CQxQxrYYSQz5C5oja1BEDF67crzNOJ/4OtY8Tmxs/a0=;
 h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type:
 From;
 b=TiCzphK2zW/+Upcg27LORp+hlFxfF7zUaIV9Gye6a4gjWVtGUTrVr1YZ8qVe+g7Ck
 kPcZXdfBKI5FzdZSMOxEP1bc6EjId0ynwKYNXvGwJkgRb+e7RY5uQ4iK/DXHEvWEt2
 BF80AV3/AL0kg0KuGFsnbwXJfTLYnl533RN64bcQc8AIRjwDwGNZ2zsmNqxxFV4xK1
 kGJJzc+1v2wgv5LwXAv34tgfk2HETNYTkgm3+JaeV8Ylt6dSJXsJCxSeTyzViVVCW9
 lyncKzvyJqU73q6L6jtuKyodQ45ZKWJZNYYlAiIPonPHHk9JU2CuSF30DpEe+XIf79
 j5H3JzNZaOmHA==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4V4yjk71Lpz9rxB;
 Thu, 28 Mar 2024 10:22:18 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Theodor Thornhill <theo@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
In-Reply-To: <87le63xzjt.fsf@HIDDEN>
References: <87le63xzjt.fsf@HIDDEN>
Date: Thu, 28 Mar 2024 09:22:26 +0000
Message-ID: <87jzlmd831.fsf@localhost>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Debbugs-Envelope-To: 70036
Cc: 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>

--=-=-=
Content-Type: text/plain

Theodor Thornhill via "Bug reports for GNU Emacs, the Swiss army knife
of text editors" <bug-gnu-emacs@HIDDEN> writes:

> Firstly, I'll show some benchmarks
>
> ```
> ;; Emacs 29 branch
>
> (benchmark-run 10000
>   (file-truename "~/Work/some/long/path/to/parse/that/is/very/deep/deep/deep/super/duper/deep/deep.el"))
> ;; (1.810892642 1 0.051070616)
> ...
> Below are the profiles and the patch. On my system I needed to `ln -s
> lisp/loadup.el .` to make it compile. Not sure if that is due to
> differences between old and new `file-truename`, or something else.

The profiles look fishy. For example, in emacs-30-before

          73  15%           - file-truename

73 is ~0.073 seconds, which cannot be right if you profiled the above
`benchmark-run'.

I tried to record the profiles on my side, using the above
`benchmark-run' call, and what I am seeing is that most of the CPU time
is already spend in C subrs:

        1285  17% + file-name-nondirectory
        1250  16%   Automatic GC
        1182  15% + file-symlink-p
        1060  14% + file-name-case-insensitive-p
         495   6% + find-file-name-handler
         451   6% + file-name-as-directory
         425   5% + file-name-directory
         401   5% - directory-file-name
         398   5%  + setq

I am attaching my profile, as saved via M-x
profiler-report-write-profile. You can view it via M-x
profile-report-find-profile

At least, the number of calls to `file-name-nondirectory' can be
trivially reduced in the `file-truename' code - it is called up to three
times in a row.


--=-=-=
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=profile-emacs-master.eld
Content-Transfer-Encoding: base64

Cltwcm9maWxlci1wcm9maWxlICIyOC4xIiBjcHUgI3MoaGFzaC10YWJsZSB0ZXN0IGVxdWFsIGRh
dGEgKFsicmVkaXNwbGF5X2ludGVybmFsIChDIGZ1bmN0aW9uKSIgIygicmVkaXNwbGF5IiAwIDkg
KGhlbHAtYXJncyAocmVkaXNwbGF5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygibm90bXVjaC1zaG93LWNvbW1hbmQtaG9vayIgMCAyNSAoaGVscC1hcmdzIChu
b3RtdWNoLXNob3ctY29tbWFuZC1ob29rKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIm5pbCIgIm5pbCIgIm5pbCIgIm5pbCIgIm5pbCIgIm5pbCIgIm5pbCIgIm5p
bCIgIm5pbCIgIm5pbCIgIm5pbCIgIm5pbCIgIm5pbCJdIDcgWyJyZWRpc3BsYXlfaW50ZXJuYWwg
KEMgZnVuY3Rpb24pIiAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmlsIiAi
bmlsIiAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmlsIl0gMTEgWyMoImZp
bGUtbmFtZS1jYXNlLWluc2Vuc2l0aXZlLXAiIDAgMjggKGhlbHAtYXJncyAoZmlsZS1uYW1lLWNh
c2UtaW5zZW5zaXRpdmUtcCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImFuZCIgMCAzIChoZWxwLWFyZ3MgKGFuZCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJncyAob3IpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChs
ZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAy
IChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygid2hpbGUiIDAgNSAoaGVscC1hcmdzICh3aGlsZSkgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFy
Z3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZp
bGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtbmFtZS1hcy1kaXJlY3Rvcnki
IDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhl
bHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJvciIgMCAyIChoZWxwLWFyZ3MgKG9yKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxw
LWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpXSA5
NzMgWyMoImZpbGUtc3ltbGluay1wIiAwIDE0IChoZWxwLWFyZ3MgKGZpbGUtc3ltbGluay1wKSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygic2V0cSIgMCA0ICho
ZWxwLWFyZ3MgKHNldHEpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhl
bHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAo
bGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10
cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiIzxsYW1iZGEgMzdGPiIgOSAxMiAoYWN0aW9u
IGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1k
b3duIC4gcHVzaC1idXR0b24pIChoZWFkZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24g
LiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFw
ICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24p
KSAoZm9sbG93LWxpbmsgLiBtb3VzZS1mYWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMg
LiBwdXNoLWJ1dHRvbikga2V5bWFwIChiYWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5
bWFwICg5IC4gYmFja3dhcmQtYnV0dG9uKSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1k
YXRhIChsYW1iZGEgbmlsIChmaWxlLXRydWVuYW1lICJ+L1dvcmsvc29tZS9sb25nL3BhdGgvdG8v
cGFyc2UvdGhhdC9pcy92ZXJ5L2RlZXAvZGVlcC9kZWVwL3N1cGVyL2R1cGVyL2RlZXAvZGVlcC5l
bCIpKSBjYXRlZ29yeSB0IGZvbGxvdy1saW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0y
LCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQg
Zm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9uKSkgIygiYmVuY2htYXJrLWNhbGwiIDAg
MTQgKGhlbHAtYXJncyAoYmVuY2htYXJrLWNhbGwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJldmFsIiAwIDQgKGhlbHAtYXJncyAoZXZhbCkgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImVsaXNwLS1ldmFsLWxhc3Qtc2V4
cCIgMCAyMSAoaGVscC1hcmdzIChlbGlzcC0tZXZhbC1sYXN0LXNleHApIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIENCOD4i
IDIwIDIzIChhY3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAg
KHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91
Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1v
ZGUtbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIg
LiBwdXNoLWJ1dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVz
aC1idXR0b24pICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1i
dXR0b24pICgyNyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0
dG9uKSkgYnV0dG9uLWRhdGEgI1swICJcMzAxXDMwMCFcMjA3IiBbbmlsIGVsaXNwLS1ldmFsLWxh
c3Qtc2V4cF0gMl0gY2F0ZWdvcnkgdCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0IGhlbHAtZWNobyAi
bW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1vdXNlLWZhY2UgaGln
aGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMoIiM8c3Vici1uYXRp
dmUtZWxpc3AgZXZhbC1sYXN0LXNleHA+IiAyMCAzNCAoYnV0dG9uICh0KSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBoZWxwLWFyZ3MgKGV2YWwtbGFzdC1zZXhwKSkpXSA2OCBbIygiZmls
ZS1uYW1lLW5vbmRpcmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChmaWxlLW5hbWUtbm9uZGlyZWN0
b3J5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZXF1YWwi
IDAgNSAoaGVscC1hcmdzIChlcXVhbCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFy
Z3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0
IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygid2hpbGUiIDAgNSAoaGVscC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5h
bWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtbmFtZS1hcy1kaXJlY3RvcnkiIDAgMjIgKGhl
bHAtYXJncyAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAo
aWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJvciIgMCAy
IChoZWxwLWFyZ3MgKG9yKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxl
dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpXSAzNjEgWyMoImZp
bGUtbmFtZS1ub25kaXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLW5vbmRpcmVj
dG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImFwcGx5
IiAwIDUgKGhlbHAtYXJncyAoYXBwbHkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJ0cmFtcC1ydW4tcmVhbC1oYW5kbGVyIiAwIDIyIChoZWxwLWFyZ3MgKHRy
YW1wLXJ1bi1yZWFsLWhhbmRsZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJ0cmFtcC1jb21wbGV0aW9uLWZpbGUtbmFtZS1oYW5kbGVyIiAwIDM0IChoZWxw
LWFyZ3MgKHRyYW1wLWNvbXBsZXRpb24tZmlsZS1uYW1lLWhhbmRsZXIpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IiAw
IDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJlcXVhbCIgMCA1IChoZWxwLWFyZ3MgKGVxdWFs
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAo
aGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhl
bHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
Iygid2hpbGUiIDAgNSAoaGVscC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMg
KGhlbHAtYXJncyAoZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoImZpbGUtbmFtZS1hcy1kaXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAo
ZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpXSAxNiBbIygiZmluZC1maWxlLW5hbWUtaGFuZGxlciIg
MCAyMiAoaGVscC1hcmdzIChmaW5kLWZpbGUtbmFtZS1oYW5kbGVyKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hpbGUiIDAgNSAo
aGVscC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmls
ZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
ImZpbGUtbmFtZS1hcy1kaXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLWFzLWRp
cmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxl
dCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJvciIgMCAyIChoZWxwLWFyZ3MgKG9yKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJn
cyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYi
IDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVs
cC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0
b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gMzg1IFsjKCJmaWxlLXN5bWxpbmstcCIg
MCAxNCAoaGVscC1hcmdzIChmaWxlLXN5bWxpbmstcCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoInNldHEiIDAgNCAoaGVscC1hcmdzIChzZXRxKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdz
IChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAw
IDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAo
bGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hpbGUi
IDAgNSAoaGVscC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJn
cyAoZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImZpbGUtbmFtZS1hcy1kaXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1l
LWFzLWRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJvciIgMCAyIChoZWxwLWFyZ3MgKG9yKSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhl
bHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpXSAxMTE0IFsjKCJmaWxlLW5hbWUtZGlyZWN0b3J5IiAwIDE5IChoZWxwLWFy
Z3MgKGZpbGUtbmFtZS1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJvciIgMCAyIChoZWxwLWFyZ3MgKG9yKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1h
cmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxl
dCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVu
YW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IiAwIDIyICho
ZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3Mg
KGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAg
MiAoaGVscC1hcmdzIChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChs
ZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIg
MCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSldIDM1MyBbIygiZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSIgMCAyMiAoaGVscC1hcmdz
IChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiZXF1YWwiIDAgNSAoaGVscC1hcmdzIChlcXVhbCkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyICho
ZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIndoaWxlIiAwIDUg
KGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZp
bGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1k
aXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJs
ZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdzIChvcikgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFy
Z3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlm
IiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKV0gMzg5IFsjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1
ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxl
LW5hbWUtYXMtZGlyZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3Rv
cnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAg
MyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdzIChvcikgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxl
dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIg
KGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJn
cyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmls
ZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSIg
MCAyMiAoaGVscC1hcmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVs
cC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
Im9yIiAwIDIgKGhlbHAtYXJncyAob3IpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gMjQgWyMoImZpbGUtbmFtZS1hcy1kaXJlY3Rvcnki
IDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhl
bHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJvciIgMCAyIChoZWxwLWFyZ3MgKG9yKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxw
LWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
IndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzICho
ZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZp
bGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdz
IChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIg
MCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKV0gNDIzIFsjKCJjb25jYXQiIDAgNiAoaGVscC1hcmdzIChjb25j
YXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJzZXRxIiAw
IDQgKGhlbHAtYXJncyAoc2V0cSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImNvbmQiIDAgNCAoaGVscC1hcmdzIChjb25kKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIg
MCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiIzxsYW1iZGEgMzdGPiIgOSAxMiAoYWN0aW9uIGhlbHAtZm5z
LS1kaXNwbGF5LWZ1bmN0aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVz
aC1idXR0b24pIChoZWFkZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1
dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNj
cmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93
LWxpbmsgLiBtb3VzZS1mYWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1
dHRvbikga2V5bWFwIChiYWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4g
YmFja3dhcmQtYnV0dG9uKSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhIChsYW1i
ZGEgbmlsIChmaWxlLXRydWVuYW1lICJ+L1dvcmsvc29tZS9sb25nL3BhdGgvdG8vcGFyc2UvdGhh
dC9pcy92ZXJ5L2RlZXAvZGVlcC9kZWVwL3N1cGVyL2R1cGVyL2RlZXAvZGVlcC5lbCIpKSBjYXRl
Z29yeSB0IGZvbGxvdy1saW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERp
c3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2Nr
LWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9uKSkgIygiYmVuY2htYXJrLWNhbGwiIDAgMTQgKGhlbHAt
YXJncyAoYmVuY2htYXJrLWNhbGwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJldmFsIiAwIDQgKGhlbHAtYXJncyAoZXZhbCkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImVsaXNwLS1ldmFsLWxhc3Qtc2V4cCIgMCAyMSAo
aGVscC1hcmdzIChlbGlzcC0tZXZhbC1sYXN0LXNleHApIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIENCOD4iIDIwIDIzIChh
Y3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRvdWNoc2Ny
ZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4t
ZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUtbGluZSBr
ZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1
dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1idXR0b24p
ICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0b24pICgy
NyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9uKSkgYnV0
dG9uLWRhdGEgI1swICJcMzAxXDMwMCFcMjA3IiBbbmlsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0g
Ml0gY2F0ZWdvcnkgdCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0IGhlbHAtZWNobyAibW91c2UtMiwg
UkVUOiBEaXNwbGF5IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1vdXNlLWZhY2UgaGlnaGxpZ2h0IGZv
bnQtbG9jay1mYWNlIGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMoIiM8c3Vici1uYXRpdmUtZWxpc3Ag
ZXZhbC1sYXN0LXNleHA+IiAyMCAzNCAoYnV0dG9uICh0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBoZWxwLWFyZ3MgKGV2YWwtbGFzdC1zZXhwKSkpICMoIiM8Y29tcGlsZWQtZnVuY3Rp
b24gRDg1PiIgMjAgMjMgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAg
KGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5
bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0
b24pKSAobW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAo
bW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNl
LTIgLiBwdXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJh
Y2t3YXJkLWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9y
d2FyZC1idXR0b24pKSBidXR0b24tZGF0YSAjWygmcmVzdCBfaXQpICIICSFcMjExElwyMDciIFth
ZC0tYWRkb2l0LWZ1bmN0aW9uIGV2YWwtbGFzdC1zZXhwLWFyZy1pbnRlcm5hbCBhZC1yZXR1cm4t
dmFsdWVdIDJdIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBoZWxwLWVjaG8gIm1v
dXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1mYWNlIGhpZ2hs
aWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0b24pKSAjKCJldmFsLXNleHAtZnUt
Zmxhc2gtZG9pdC1zaW1wbGUiIDAgMzAgKGhlbHAtYXJncyAoZXZhbC1zZXhwLWZ1LWZsYXNoLWRv
aXQtc2ltcGxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
ZXZhbC1zZXhwLWZ1LWZsYXNoLWRvaXQiIDAgMjMgKGhlbHAtYXJncyAoZXZhbC1zZXhwLWZ1LWZs
YXNoLWRvaXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJl
c2YtZmxhc2gtZG9pdCIgMCAxNCAoaGVscC1hcmdzIChlc2YtZmxhc2gtZG9pdCkgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImFkLUFkdmljZS1ldmFsLWxhc3Qt
c2V4cCIgMCAyNCAoaGVscC1hcmdzIChhZC1BZHZpY2UtZXZhbC1sYXN0LXNleHApIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gMTAgWyMoImZpbGUtbmFtZS1kaXJl
Y3RvcnkiIDAgMTkgKGhlbHAtYXJncyAoZmlsZS1uYW1lLWRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJncyAob3Ip
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAo
aGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hpbGUiIDAgNSAoaGVscC1hcmdzICh3
aGlsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIg
MCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10cnVlbmFtZSkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIiM8bGFtYmRhIDM3
Rj4iIDkgMTIgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1h
cCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0
b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAo
bW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2Ut
MiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBw
dXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJk
LWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1i
dXR0b24pKSBidXR0b24tZGF0YSAobGFtYmRhIG5pbCAoZmlsZS10cnVlbmFtZSAifi9Xb3JrL3Nv
bWUvbG9uZy9wYXRoL3RvL3BhcnNlL3RoYXQvaXMvdmVyeS9kZWVwL2RlZXAvZGVlcC9zdXBlci9k
dXBlci9kZWVwL2RlZXAuZWwiKSkgY2F0ZWdvcnkgdCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0IGhl
bHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1vdXNl
LWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMoImJl
bmNobWFyay1jYWxsIiAwIDE0IChoZWxwLWFyZ3MgKGJlbmNobWFyay1jYWxsKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZXZhbCIgMCA0IChoZWxwLWFyZ3Mg
KGV2YWwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJlbGlz
cC0tZXZhbC1sYXN0LXNleHAiIDAgMjEgKGhlbHAtYXJncyAoZWxpc3AtLWV2YWwtbGFzdC1zZXhw
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiIzxjb21waWxl
ZC1mdW5jdGlvbiBDQjg+IiAyMCAyMyAoYWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0aW9u
IGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChoZWFkZXIt
bGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBw
dXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1i
dXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsgLiBtb3VzZS1mYWNl
KSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5bWFwIChiYWNr
dGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dhcmQtYnV0dG9uKSkg
KDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhICNbMCAiXDMwMVwzMDAhXDIwNyIgW25p
bCBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDJdIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBidXR0
b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBib2R5
IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0b24p
KSAjKCIjPHN1YnItbmF0aXZlLWVsaXNwIGV2YWwtbGFzdC1zZXhwPiIgMjAgMzQgKGJ1dHRvbiAo
dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gaGVscC1hcmdzIChldmFsLWxhc3Qtc2V4
cCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIEQ4NT4iIDIwIDIzIChhY3Rpb24gaGVscC1mbnMt
LWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNo
LWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0
dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUtbGluZSBrZXltYXAgKHRvdWNoc2Ny
ZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChmb2xsb3ct
bGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1idXR0b24pICgxMyAuIHB1c2gtYnV0
dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0b24pICgyNyBrZXltYXAgKDkgLiBi
YWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEgI1soJnJl
c3QgX2l0KSAiCAkhXDIxMRJcMjA3IiBbYWQtLWFkZG9pdC1mdW5jdGlvbiBldmFsLWxhc3Qtc2V4
cC1hcmctaW50ZXJuYWwgYWQtcmV0dXJuLXZhbHVlXSAyXSBjYXRlZ29yeSB0IGZvbGxvdy1saW5r
IHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9u
J3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2Ug
YnV0dG9uKSkgIygiZXZhbC1zZXhwLWZ1LWZsYXNoLWRvaXQtc2ltcGxlIiAwIDMwIChoZWxwLWFy
Z3MgKGV2YWwtc2V4cC1mdS1mbGFzaC1kb2l0LXNpbXBsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpXSA1MSBbIygiZGlyZWN0b3J5LWZpbGUtbmFtZSIgMCAxOSAo
aGVscC1hcmdzIChkaXJlY3RvcnktZmlsZS1uYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygic2V0cSIgMCA0IChoZWxwLWFyZ3MgKHNldHEpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdz
IChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIg
MCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hpbGUiIDAgNSAoaGVscC1hcmdzICh3aGlsZSkgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxw
LWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
ImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtbmFtZS1hcy1kaXJlY3Rv
cnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxl
dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIg
KGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJvciIgMCAyIChoZWxwLWFyZ3MgKG9yKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzICho
ZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKV0gMzcyIFsjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVuYW1l
IiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IiAwIDIyIChoZWxw
LWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlm
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAo
aGVscC1hcmdzIChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1
IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChm
aWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChmaWxlLW5hbWUtYXMt
ZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
bGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJncyAob3IpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gMjUgWyMoImZpbmQtZmlsZS1u
YW1lLWhhbmRsZXIiIDAgMjIgKGhlbHAtYXJncyAoZmluZC1maWxlLW5hbWUtaGFuZGxlcikgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxw
LWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
IndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzICho
ZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZp
bGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdz
IChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIg
MCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFy
Z3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
bGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVu
YW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiIzxsYW1i
ZGEgMzdGPiIgOSAxMiAoYWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0aW9uIGtleW1hcCAo
a2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChoZWFkZXItbGluZSBrZXlt
YXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRv
bikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pICht
b3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsgLiBtb3VzZS1mYWNlKSAobW91c2Ut
MiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5bWFwIChiYWNrdGFiIC4gYmFj
a3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dhcmQtYnV0dG9uKSkgKDkgLiBmb3J3
YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhIChsYW1iZGEgbmlsIChmaWxlLXRydWVuYW1lICJ+L1dv
cmsvc29tZS9sb25nL3BhdGgvdG8vcGFyc2UvdGhhdC9pcy92ZXJ5L2RlZXAvZGVlcC9kZWVwL3N1
cGVyL2R1cGVyL2RlZXAvZGVlcC5lbCIpKSBjYXRlZ29yeSB0IGZvbGxvdy1saW5rIHQgYnV0dG9u
IHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9keSIg
bW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9uKSld
IDQ2IFsjKCJmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFt
ZS1ub25kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJjb25jYXQiIDAgNiAoaGVscC1hcmdzIChjb25jYXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJzZXRxIiAwIDQgKGhlbHAtYXJncyAoc2V0cSkgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAt
YXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJp
ZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFy
Z3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIndo
aWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxw
LWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUt
bmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdzIChv
cikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAz
IChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpXSAzODMgWyMoImZpbGUtbmFtZS1jYXNlLWluc2Vuc2l0aXZlLXAiIDAgMjggKGhlbHAtYXJn
cyAoZmlsZS1uYW1lLWNhc2UtaW5zZW5zaXRpdmUtcCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImFuZCIgMCAzIChoZWxwLWFyZ3MgKGFuZCkgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJncyAo
b3IpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAg
MyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hpbGUiIDAgNSAoaGVscC1hcmdz
ICh3aGlsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxl
dCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10cnVlbmFt
ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIiM8bGFtYmRh
IDM3Rj4iIDkgMTIgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtl
eW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFw
ICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24p
KSAobW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91
c2UtMiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIg
LiBwdXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3
YXJkLWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2Fy
ZC1idXR0b24pKSBidXR0b24tZGF0YSAobGFtYmRhIG5pbCAoZmlsZS10cnVlbmFtZSAifi9Xb3Jr
L3NvbWUvbG9uZy9wYXRoL3RvL3BhcnNlL3RoYXQvaXMvdmVyeS9kZWVwL2RlZXAvZGVlcC9zdXBl
ci9kdXBlci9kZWVwL2RlZXAuZWwiKSkgY2F0ZWdvcnkgdCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0
IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1v
dXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMo
ImJlbmNobWFyay1jYWxsIiAwIDE0IChoZWxwLWFyZ3MgKGJlbmNobWFyay1jYWxsKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZXZhbCIgMCA0IChoZWxwLWFy
Z3MgKGV2YWwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJl
bGlzcC0tZXZhbC1sYXN0LXNleHAiIDAgMjEgKGhlbHAtYXJncyAoZWxpc3AtLWV2YWwtbGFzdC1z
ZXhwKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiIzxjb21w
aWxlZC1mdW5jdGlvbiBDQjg+IiAyMCAyMyAoYWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0
aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChoZWFk
ZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIg
LiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVz
aC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsgLiBtb3VzZS1m
YWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5bWFwIChi
YWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dhcmQtYnV0dG9u
KSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhICNbMCAiXDMwMVwzMDAhXDIwNyIg
W25pbCBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDJdIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBi
dXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBi
b2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0
b24pKSAjKCIjPHN1YnItbmF0aXZlLWVsaXNwIGV2YWwtbGFzdC1zZXhwPiIgMjAgMzQgKGJ1dHRv
biAodCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gaGVscC1hcmdzIChldmFsLWxhc3Qt
c2V4cCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIEQ4NT4iIDIwIDIzIChhY3Rpb24gaGVscC1m
bnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBw
dXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gt
YnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUtbGluZSBrZXltYXAgKHRvdWNo
c2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChmb2xs
b3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1idXR0b24pICgxMyAuIHB1c2gt
YnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0b24pICgyNyBrZXltYXAgKDkg
LiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEgI1so
JnJlc3QgX2l0KSAiCAkhXDIxMRJcMjA3IiBbYWQtLWFkZG9pdC1mdW5jdGlvbiBldmFsLWxhc3Qt
c2V4cC1hcmctaW50ZXJuYWwgYWQtcmV0dXJuLXZhbHVlXSAyXSBjYXRlZ29yeSB0IGZvbGxvdy1s
aW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0
aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZh
Y2UgYnV0dG9uKSldIDg3IFsjKCJ0cmFtcC1ydW4tcmVhbC1oYW5kbGVyIiAwIDIyIChoZWxwLWFy
Z3MgKHRyYW1wLXJ1bi1yZWFsLWhhbmRsZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJ0cmFtcC1jb21wbGV0aW9uLWZpbGUtbmFtZS1oYW5kbGVyIiAwIDM0
IChoZWxwLWFyZ3MgKHRyYW1wLWNvbXBsZXRpb24tZmlsZS1uYW1lLWhhbmRsZXIpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtbm9uZGlyZWN0
b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJjb25jYXQiIDAgNiAoaGVscC1hcmdz
IChjb25jYXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJz
ZXRxIiAwIDQgKGhlbHAtYXJncyAoc2V0cSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAt
YXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
aWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAo
aGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGly
ZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdz
IChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIg
MCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSldIDQgWyMoImV4cGFuZC1maWxlLW5hbWUiIDAgMTYgKGhlbHAtYXJncyAoZXhwYW5kLWZp
bGUtbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImNv
bmNhdCIgMCA2IChoZWxwLWFyZ3MgKGNvbmNhdCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoInNldHEiIDAgNCAoaGVscC1hcmdzIChzZXRxKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAo
bGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiY29uZCIg
MCA0IChoZWxwLWFyZ3MgKGNvbmQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCIjPGxhbWJkYSAz
N0Y+IiA5IDEyIChhY3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXlt
YXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAo
dG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkg
KG1vZGUtbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNl
LTIgLiBwdXNoLWJ1dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4g
cHVzaC1idXR0b24pICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2Fy
ZC1idXR0b24pICgyNyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQt
YnV0dG9uKSkgYnV0dG9uLWRhdGEgKGxhbWJkYSBuaWwgKGZpbGUtdHJ1ZW5hbWUgIn4vV29yay9z
b21lL2xvbmcvcGF0aC90by9wYXJzZS90aGF0L2lzL3ZlcnkvZGVlcC9kZWVwL2RlZXAvc3VwZXIv
ZHVwZXIvZGVlcC9kZWVwLmVsIikpIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBo
ZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3Vz
ZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0b24pKSAjKCJi
ZW5jaG1hcmstY2FsbCIgMCAxNCAoaGVscC1hcmdzIChiZW5jaG1hcmstY2FsbCkgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImV2YWwiIDAgNCAoaGVscC1hcmdz
IChldmFsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZWxp
c3AtLWV2YWwtbGFzdC1zZXhwIiAwIDIxIChoZWxwLWFyZ3MgKGVsaXNwLS1ldmFsLWxhc3Qtc2V4
cCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIiM8Y29tcGls
ZWQtZnVuY3Rpb24gQ0I4PiIgMjAgMjMgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlv
biBrZXltYXAgKGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVy
LWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4g
cHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gt
YnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFj
ZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFj
a3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikp
ICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0b24tZGF0YSAjWzAgIlwzMDFcMzAwIVwyMDciIFtu
aWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAyXSBjYXRlZ29yeSB0IGZvbGxvdy1saW5rIHQgYnV0
dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9k
eSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9u
KSkgIygiIzxzdWJyLW5hdGl2ZS1lbGlzcCBldmFsLWxhc3Qtc2V4cD4iIDIwIDM0IChidXR0b24g
KHQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGhlbHAtYXJncyAoZXZhbC1sYXN0LXNl
eHApKSkgIygiIzxjb21waWxlZC1mdW5jdGlvbiBEODU+IiAyMCAyMyAoYWN0aW9uIGhlbHAtZm5z
LS1kaXNwbGF5LWZ1bmN0aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVz
aC1idXR0b24pIChoZWFkZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1
dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNj
cmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93
LWxpbmsgLiBtb3VzZS1mYWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1
dHRvbikga2V5bWFwIChiYWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4g
YmFja3dhcmQtYnV0dG9uKSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhICNbKCZy
ZXN0IF9pdCkgIggJIVwyMTESXDIwNyIgW2FkLS1hZGRvaXQtZnVuY3Rpb24gZXZhbC1sYXN0LXNl
eHAtYXJnLWludGVybmFsIGFkLXJldHVybi12YWx1ZV0gMl0gY2F0ZWdvcnkgdCBmb2xsb3ctbGlu
ayB0IGJ1dHRvbiB0IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBmdW5jdGlv
bidzIGJvZHkiIG1vdXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRvbiBmYWNl
IGJ1dHRvbikpICMoImV2YWwtc2V4cC1mdS1mbGFzaC1kb2l0LXNpbXBsZSIgMCAzMCAoaGVscC1h
cmdzIChldmFsLXNleHAtZnUtZmxhc2gtZG9pdC1zaW1wbGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJldmFsLXNleHAtZnUtZmxhc2gtZG9pdCIgMCAyMyAo
aGVscC1hcmdzIChldmFsLXNleHAtZnUtZmxhc2gtZG9pdCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImVzZi1mbGFzaC1kb2l0IiAwIDE0IChoZWxwLWFyZ3Mg
KGVzZi1mbGFzaC1kb2l0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSldIDQzIFsjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdz
IChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIg
MCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFy
Z3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
bGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVu
YW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1u
YW1lLWFzLWRpcmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMg
KGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJncyAob3IpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyICho
ZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSldIDMyIFsjKCJvciIgMCAyIChoZWxwLWFyZ3MgKG9yKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAo
aGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiIzxsYW1iZGEgMzdGPiIgOSAxMiAoYWN0aW9uIGhlbHAtZm5zLS1kaXNw
bGF5LWZ1bmN0aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0
b24pIChoZWFkZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikg
KG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1k
b3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsg
LiBtb3VzZS1mYWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikg
a2V5bWFwIChiYWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dh
cmQtYnV0dG9uKSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhIChsYW1iZGEgbmls
IChmaWxlLXRydWVuYW1lICJ+L1dvcmsvc29tZS9sb25nL3BhdGgvdG8vcGFyc2UvdGhhdC9pcy92
ZXJ5L2RlZXAvZGVlcC9kZWVwL3N1cGVyL2R1cGVyL2RlZXAvZGVlcC5lbCIpKSBjYXRlZ29yeSB0
IGZvbGxvdy1saW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkg
dGhlIGZ1bmN0aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2Ug
YnV0dG9uIGZhY2UgYnV0dG9uKSkgIygiYmVuY2htYXJrLWNhbGwiIDAgMTQgKGhlbHAtYXJncyAo
YmVuY2htYXJrLWNhbGwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJldmFsIiAwIDQgKGhlbHAtYXJncyAoZXZhbCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImVsaXNwLS1ldmFsLWxhc3Qtc2V4cCIgMCAyMSAoaGVscC1h
cmdzIChlbGlzcC0tZXZhbC1sYXN0LXNleHApIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIENCOD4iIDIwIDIzIChhY3Rpb24g
aGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRvdWNoc2NyZWVuLWRv
d24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAu
IHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUtbGluZSBrZXltYXAg
KHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikp
IChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1idXR0b24pICgxMyAu
IHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0b24pICgyNyBrZXlt
YXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9uKSkgYnV0dG9uLWRh
dGEgI1swICJcMzAxXDMwMCFcMjA3IiBbbmlsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gMl0gY2F0
ZWdvcnkgdCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBE
aXNwbGF5IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1vdXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9j
ay1mYWNlIGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMoIiM8c3Vici1uYXRpdmUtZWxpc3AgZXZhbC1s
YXN0LXNleHA+IiAyMCAzNCAoYnV0dG9uICh0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBoZWxwLWFyZ3MgKGV2YWwtbGFzdC1zZXhwKSkpICMoIiM8Y29tcGlsZWQtZnVuY3Rpb24gRDg1
PiIgMjAgMjMgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1h
cCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0
b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAo
bW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2Ut
MiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBw
dXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJk
LWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1i
dXR0b24pKSBidXR0b24tZGF0YSAjWygmcmVzdCBfaXQpICIICSFcMjExElwyMDciIFthZC0tYWRk
b2l0LWZ1bmN0aW9uIGV2YWwtbGFzdC1zZXhwLWFyZy1pbnRlcm5hbCBhZC1yZXR1cm4tdmFsdWVd
IDJdIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIs
IFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBm
b250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0b24pKSAjKCJldmFsLXNleHAtZnUtZmxhc2gt
ZG9pdC1zaW1wbGUiIDAgMzAgKGhlbHAtYXJncyAoZXZhbC1zZXhwLWZ1LWZsYXNoLWRvaXQtc2lt
cGxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZXZhbC1z
ZXhwLWZ1LWZsYXNoLWRvaXQiIDAgMjMgKGhlbHAtYXJncyAoZXZhbC1zZXhwLWZ1LWZsYXNoLWRv
aXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJlc2YtZmxh
c2gtZG9pdCIgMCAxNCAoaGVscC1hcmdzIChlc2YtZmxhc2gtZG9pdCkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImFkLUFkdmljZS1ldmFsLWxhc3Qtc2V4cCIg
MCAyNCAoaGVscC1hcmdzIChhZC1BZHZpY2UtZXZhbC1sYXN0LXNleHApIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJhcHBseSIgMCA1IChoZWxwLWFyZ3MgKGFw
cGx5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZXZhbC1s
YXN0LXNleHAiIDAgMTQgKGhlbHAtYXJncyAoZXZhbC1sYXN0LXNleHApIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIDUwOT4i
IDIwIDIzIChhY3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAg
KHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91
Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1v
ZGUtbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIg
LiBwdXNoLWJ1dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVz
aC1idXR0b24pICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1i
dXR0b24pICgyNyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0
dG9uKSkgYnV0dG9uLWRhdGEgI1syNTcgIlwzMDIBIVwyMTEQXDMwMwkhXDIwMw4AXDMwNCBcMjEw
XDMwNQFgXCJcMjA3IiBbZXJvcy0tbGFzdC1yZXN1bHQgZXJvcy0taW5zcGVjdC1idWZmZXItbmFt
ZSBldmFsLWxhc3Qtc2V4cCBnZXQtYnVmZmVyIGVyb3MtaW5zcGVjdC1sYXN0LXJlc3VsdCBlcm9z
LS1ldmFsLW92ZXJsYXldIDUgKCIvaG9tZS95YW50YXI5Mi8uZW1hY3MuZC9zdHJhaWdodC9idWls
ZC9lcm9zL2Vyb3MuZWxjIiAuIDY0MzEpICJQIl0gY2F0ZWdvcnkgdCBmb2xsb3ctbGluayB0IGJ1
dHRvbiB0IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBmdW5jdGlvbidzIGJv
ZHkiIG1vdXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRvbiBmYWNlIGJ1dHRv
bikpXSA0IFsjKCJmaW5kLWZpbGUtbmFtZS1oYW5kbGVyIiAwIDIyIChoZWxwLWFyZ3MgKGZpbmQt
ZmlsZS1uYW1lLWhhbmRsZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAt
YXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
ZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiIzxsYW1iZGEgMzdGPiIgOSAxMiAo
YWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNj
cmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChoZWFkZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVu
LWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUg
a2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1i
dXR0b24pKSAoZm9sbG93LWxpbmsgLiBtb3VzZS1mYWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9u
KSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5bWFwIChiYWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAo
Mjcga2V5bWFwICg5IC4gYmFja3dhcmQtYnV0dG9uKSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1
dHRvbi1kYXRhIChsYW1iZGEgbmlsIChmaWxlLXRydWVuYW1lICJ+L1dvcmsvc29tZS9sb25nL3Bh
dGgvdG8vcGFyc2UvdGhhdC9pcy92ZXJ5L2RlZXAvZGVlcC9kZWVwL3N1cGVyL2R1cGVyL2RlZXAv
ZGVlcC5lbCIpKSBjYXRlZ29yeSB0IGZvbGxvdy1saW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJt
b3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdo
bGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9uKSkgIygiYmVuY2htYXJrLWNh
bGwiIDAgMTQgKGhlbHAtYXJncyAoYmVuY2htYXJrLWNhbGwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJldmFsIiAwIDQgKGhlbHAtYXJncyAoZXZhbCkgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImVsaXNwLS1ldmFsLWxh
c3Qtc2V4cCIgMCAyMSAoaGVscC1hcmdzIChlbGlzcC0tZXZhbC1sYXN0LXNleHApIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9u
IENCOD4iIDIwIDIzIChhY3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChr
ZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1h
cCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9u
KSkgKG1vZGUtbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1v
dXNlLTIgLiBwdXNoLWJ1dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0y
IC4gcHVzaC1idXR0b24pICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNr
d2FyZC1idXR0b24pICgyNyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndh
cmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEgI1swICJcMzAxXDMwMCFcMjA3IiBbbmlsIGVsaXNwLS1l
dmFsLWxhc3Qtc2V4cF0gMl0gY2F0ZWdvcnkgdCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0IGhlbHAt
ZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1vdXNlLWZh
Y2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMoIiM8c3Vi
ci1uYXRpdmUtZWxpc3AgZXZhbC1sYXN0LXNleHA+IiAyMCAzNCAoYnV0dG9uICh0KSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBoZWxwLWFyZ3MgKGV2YWwtbGFzdC1zZXhwKSkpICMoIiM8
Y29tcGlsZWQtZnVuY3Rpb24gRDg1PiIgMjAgMjMgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1m
dW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAo
aGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3Vz
ZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAu
IHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91
c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1h
cCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1
dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0b24tZGF0YSAjWygmcmVzdCBfaXQpICII
CSFcMjExElwyMDciIFthZC0tYWRkb2l0LWZ1bmN0aW9uIGV2YWwtbGFzdC1zZXhwLWFyZy1pbnRl
cm5hbCBhZC1yZXR1cm4tdmFsdWVdIDJdIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBidXR0b24g
dCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBib2R5IiBt
b3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0b24pKSAj
KCJldmFsLXNleHAtZnUtZmxhc2gtZG9pdC1zaW1wbGUiIDAgMzAgKGhlbHAtYXJncyAoZXZhbC1z
ZXhwLWZ1LWZsYXNoLWRvaXQtc2ltcGxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiZXZhbC1zZXhwLWZ1LWZsYXNoLWRvaXQiIDAgMjMgKGhlbHAtYXJncyAo
ZXZhbC1zZXhwLWZ1LWZsYXNoLWRvaXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJlc2YtZmxhc2gtZG9pdCIgMCAxNCAoaGVscC1hcmdzIChlc2YtZmxhc2gt
ZG9pdCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImFkLUFk
dmljZS1ldmFsLWxhc3Qtc2V4cCIgMCAyNCAoaGVscC1hcmdzIChhZC1BZHZpY2UtZXZhbC1sYXN0
LXNleHApIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gNjQgWyMo
InNldGNhciIgMCA2IChoZWxwLWFyZ3MgKHNldGNhcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1h
cmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJm
aWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5
IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyICho
ZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
Iygib3IiIDAgMiAoaGVscC1hcmdzIChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVs
cC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAo
aGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChm
aWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSldIDE4IFsjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IiAw
IDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxw
LWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
b3IiIDAgMiAoaGVscC1hcmdzIChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1h
cmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3
aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVs
cC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygiIzxsYW1iZGEgMzdGPiIgOSAxMiAoYWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5
LWZ1bmN0aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24p
IChoZWFkZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1v
dXNlLTIgLiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3du
IC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsgLiBt
b3VzZS1mYWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5
bWFwIChiYWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dhcmQt
YnV0dG9uKSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhIChsYW1iZGEgbmlsIChm
aWxlLXRydWVuYW1lICJ+L1dvcmsvc29tZS9sb25nL3BhdGgvdG8vcGFyc2UvdGhhdC9pcy92ZXJ5
L2RlZXAvZGVlcC9kZWVwL3N1cGVyL2R1cGVyL2RlZXAvZGVlcC5lbCIpKSBjYXRlZ29yeSB0IGZv
bGxvdy1saW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhl
IGZ1bmN0aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0
dG9uIGZhY2UgYnV0dG9uKSkgIygiYmVuY2htYXJrLWNhbGwiIDAgMTQgKGhlbHAtYXJncyAoYmVu
Y2htYXJrLWNhbGwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJldmFsIiAwIDQgKGhlbHAtYXJncyAoZXZhbCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImVsaXNwLS1ldmFsLWxhc3Qtc2V4cCIgMCAyMSAoaGVscC1hcmdz
IChlbGlzcC0tZXZhbC1sYXN0LXNleHApIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIENCOD4iIDIwIDIzIChhY3Rpb24gaGVs
cC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24g
LiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1
c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUtbGluZSBrZXltYXAgKHRv
dWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChm
b2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1idXR0b24pICgxMyAuIHB1
c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0b24pICgyNyBrZXltYXAg
KDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEg
I1swICJcMzAxXDMwMCFcMjA3IiBbbmlsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gMl0gY2F0ZWdv
cnkgdCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNw
bGF5IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1vdXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1m
YWNlIGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMoIiM8c3Vici1uYXRpdmUtZWxpc3AgZXZhbC1sYXN0
LXNleHA+IiAyMCAzNCAoYnV0dG9uICh0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBo
ZWxwLWFyZ3MgKGV2YWwtbGFzdC1zZXhwKSkpXSAyOCBbIygibGV0IiAwIDMgKGhlbHAtYXJncyAo
bGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hpbGUi
IDAgNSAoaGVscC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJn
cyAoZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImZpbGUtbmFtZS1hcy1kaXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1l
LWFzLWRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJvciIgMCAyIChoZWxwLWFyZ3MgKG9yKSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhl
bHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hp
bGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAg
MyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMt
ZGlyZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1h
cmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gMjQg
WyMoImNvbnMiIDAgNCAoaGVscC1hcmdzIChjb25zKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiY29ucyIgMCA0IChoZWxwLWFyZ3MgKGNvbnMpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJzZXRjYXIiIDAgNiAoaGVscC1h
cmdzIChzZXRjYXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdzIChvcikgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxw
LWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
ImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxl
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMg
KGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1uYW1lLWFzLWRp
cmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJn
cyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYi
IDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJncyAob3IpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKV0gNiBbIygiZXEiIDAgMiAoaGVscC1hcmdzIChlcSkgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJn
cyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQi
IDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUt
YXMtZGlyZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVs
cC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdzIChvcikgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAt
YXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJs
ZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10cnVl
bmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSIgMCAyMiAo
aGVscC1hcmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSldIDExIFsjKCJvciIgMCAyIChoZWxw
LWFyZ3MgKG9yKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
bGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIndoaWxlIiAwIDUgKGhl
bHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUt
dHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCIj
PGxhbWJkYSAzN0Y+IiA5IDEyIChhY3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5
bWFwIChrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5l
IGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gt
YnV0dG9uKSkgKG1vZGUtbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRv
bikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpICht
b3VzZS0yIC4gcHVzaC1idXR0b24pICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIg
LiBiYWNrd2FyZC1idXR0b24pICgyNyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAu
IGZvcndhcmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEgKGxhbWJkYSBuaWwgKGZpbGUtdHJ1ZW5hbWUg
In4vV29yay9zb21lL2xvbmcvcGF0aC90by9wYXJzZS90aGF0L2lzL3ZlcnkvZGVlcC9kZWVwL2Rl
ZXAvc3VwZXIvZHVwZXIvZGVlcC9kZWVwLmVsIikpIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBi
dXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBi
b2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0
b24pKSAjKCJiZW5jaG1hcmstY2FsbCIgMCAxNCAoaGVscC1hcmdzIChiZW5jaG1hcmstY2FsbCkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImV2YWwiIDAgNCAo
aGVscC1hcmdzIChldmFsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiZWxpc3AtLWV2YWwtbGFzdC1zZXhwIiAwIDIxIChoZWxwLWFyZ3MgKGVsaXNwLS1ldmFs
LWxhc3Qtc2V4cCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
IiM8Y29tcGlsZWQtZnVuY3Rpb24gQ0I4PiIgMjAgMjMgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxh
eS1mdW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9u
KSAoaGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pICht
b3VzZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93
biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4g
bW91c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtl
eW1hcCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJk
LWJ1dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0b24tZGF0YSAjWzAgIlwzMDFcMzAw
IVwyMDciIFtuaWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAyXSBjYXRlZ29yeSB0IGZvbGxvdy1s
aW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0
aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZh
Y2UgYnV0dG9uKSkgIygiIzxzdWJyLW5hdGl2ZS1lbGlzcCBldmFsLWxhc3Qtc2V4cD4iIDIwIDM0
IChidXR0b24gKHQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGhlbHAtYXJncyAoZXZh
bC1sYXN0LXNleHApKSkgIygiIzxjb21waWxlZC1mdW5jdGlvbiBEODU+IiAyMCAyMyAoYWN0aW9u
IGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1k
b3duIC4gcHVzaC1idXR0b24pIChoZWFkZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24g
LiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFw
ICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24p
KSAoZm9sbG93LWxpbmsgLiBtb3VzZS1mYWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMg
LiBwdXNoLWJ1dHRvbikga2V5bWFwIChiYWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5
bWFwICg5IC4gYmFja3dhcmQtYnV0dG9uKSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1k
YXRhICNbKCZyZXN0IF9pdCkgIggJIVwyMTESXDIwNyIgW2FkLS1hZGRvaXQtZnVuY3Rpb24gZXZh
bC1sYXN0LXNleHAtYXJnLWludGVybmFsIGFkLXJldHVybi12YWx1ZV0gMl0gY2F0ZWdvcnkgdCBm
b2xsb3ctbGluayB0IGJ1dHRvbiB0IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRo
ZSBmdW5jdGlvbidzIGJvZHkiIG1vdXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1
dHRvbiBmYWNlIGJ1dHRvbikpICMoImV2YWwtc2V4cC1mdS1mbGFzaC1kb2l0LXNpbXBsZSIgMCAz
MCAoaGVscC1hcmdzIChldmFsLXNleHAtZnUtZmxhc2gtZG9pdC1zaW1wbGUpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJldmFsLXNleHAtZnUtZmxhc2gtZG9p
dCIgMCAyMyAoaGVscC1hcmdzIChldmFsLXNleHAtZnUtZmxhc2gtZG9pdCkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpXSA3IFsjKCJhcHBseSIgMCA1IChoZWxwLWFy
Z3MgKGFwcGx5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
dHJhbXAtcnVuLXJlYWwtaGFuZGxlciIgMCAyMiAoaGVscC1hcmdzICh0cmFtcC1ydW4tcmVhbC1o
YW5kbGVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygidHJh
bXAtY29tcGxldGlvbi1maWxlLW5hbWUtaGFuZGxlciIgMCAzNCAoaGVscC1hcmdzICh0cmFtcC1j
b21wbGV0aW9uLWZpbGUtbmFtZS1oYW5kbGVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygiZmlsZS1zeW1saW5rLXAiIDAgMTQgKGhlbHAtYXJncyAoZmlsZS1z
eW1saW5rLXApIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJz
ZXRxIiAwIDQgKGhlbHAtYXJncyAoc2V0cSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAt
YXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
aWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAo
aGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGly
ZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdz
IChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIg
MCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSldIDMgWyMoIjEtIiAwIDIgKGhlbHAtYXJncyAoMS0pIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJzZXRjYXIiIDAgNiAoaGVscC1hcmdzIChzZXRjYXIp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1
IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChm
aWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiIzxsYW1iZGEgMzdGPiIgOSAxMiAoYWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0aW9u
IGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChoZWFkZXIt
bGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBw
dXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1i
dXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsgLiBtb3VzZS1mYWNl
KSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5bWFwIChiYWNr
dGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dhcmQtYnV0dG9uKSkg
KDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhIChsYW1iZGEgbmlsIChmaWxlLXRydWVu
YW1lICJ+L1dvcmsvc29tZS9sb25nL3BhdGgvdG8vcGFyc2UvdGhhdC9pcy92ZXJ5L2RlZXAvZGVl
cC9kZWVwL3N1cGVyL2R1cGVyL2RlZXAvZGVlcC5lbCIpKSBjYXRlZ29yeSB0IGZvbGxvdy1saW5r
IHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9u
J3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2Ug
YnV0dG9uKSkgIygiYmVuY2htYXJrLWNhbGwiIDAgMTQgKGhlbHAtYXJncyAoYmVuY2htYXJrLWNh
bGwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJldmFsIiAw
IDQgKGhlbHAtYXJncyAoZXZhbCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImVsaXNwLS1ldmFsLWxhc3Qtc2V4cCIgMCAyMSAoaGVscC1hcmdzIChlbGlzcC0t
ZXZhbC1sYXN0LXNleHApIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIENCOD4iIDIwIDIzIChhY3Rpb24gaGVscC1mbnMtLWRp
c3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1
dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9u
KSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUtbGluZSBrZXltYXAgKHRvdWNoc2NyZWVu
LWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChmb2xsb3ctbGlu
ayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1idXR0b24pICgxMyAuIHB1c2gtYnV0dG9u
KSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0b24pICgyNyBrZXltYXAgKDkgLiBiYWNr
d2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEgI1swICJcMzAx
XDMwMCFcMjA3IiBbbmlsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gMl0gY2F0ZWdvcnkgdCBmb2xs
b3ctbGluayB0IGJ1dHRvbiB0IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBm
dW5jdGlvbidzIGJvZHkiIG1vdXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRv
biBmYWNlIGJ1dHRvbikpICMoIiM8c3Vici1uYXRpdmUtZWxpc3AgZXZhbC1sYXN0LXNleHA+IiAy
MCAzNCAoYnV0dG9uICh0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBoZWxwLWFyZ3Mg
KGV2YWwtbGFzdC1zZXhwKSkpICMoIiM8Y29tcGlsZWQtZnVuY3Rpb24gRDg1PiIgMjAgMjMgKGFj
dGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hzY3Jl
ZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1k
b3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtl
eW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0
dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikg
KDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3
IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0
b24tZGF0YSAjWygmcmVzdCBfaXQpICIICSFcMjExElwyMDciIFthZC0tYWRkb2l0LWZ1bmN0aW9u
IGV2YWwtbGFzdC1zZXhwLWFyZy1pbnRlcm5hbCBhZC1yZXR1cm4tdmFsdWVdIDJdIGNhdGVnb3J5
IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxh
eSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFj
ZSBidXR0b24gZmFjZSBidXR0b24pKSAjKCJldmFsLXNleHAtZnUtZmxhc2gtZG9pdC1zaW1wbGUi
IDAgMzAgKGhlbHAtYXJncyAoZXZhbC1zZXhwLWZ1LWZsYXNoLWRvaXQtc2ltcGxlKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZXZhbC1zZXhwLWZ1LWZsYXNo
LWRvaXQiIDAgMjMgKGhlbHAtYXJncyAoZXZhbC1zZXhwLWZ1LWZsYXNoLWRvaXQpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJlc2YtZmxhc2gtZG9pdCIgMCAx
NCAoaGVscC1hcmdzIChlc2YtZmxhc2gtZG9pdCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImFkLUFkdmljZS1ldmFsLWxhc3Qtc2V4cCIgMCAyNCAoaGVscC1h
cmdzIChhZC1BZHZpY2UtZXZhbC1sYXN0LXNleHApIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKV0gMyBbIygidHJhbXAtcnVuLXJlYWwtaGFuZGxlciIgMCAyMiAoaGVs
cC1hcmdzICh0cmFtcC1ydW4tcmVhbC1oYW5kbGVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygidHJhbXAtY29tcGxldGlvbi1maWxlLW5hbWUtaGFuZGxlciIg
MCAzNCAoaGVscC1hcmdzICh0cmFtcC1jb21wbGV0aW9uLWZpbGUtbmFtZS1oYW5kbGVyKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1uYW1lLWRpcmVj
dG9yeSIgMCAxOSAoaGVscC1hcmdzIChmaWxlLW5hbWUtZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdzIChvcikg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzICho
ZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdo
aWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAw
IDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1uYW1lLWFz
LWRpcmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAt
YXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
aWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJncyAob3IpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFy
Z3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSldIDEwIFsj
KCJlcXVhbCIgMCA1IChoZWxwLWFyZ3MgKGVxdWFsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAo
aGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hpbGUiIDAgNSAoaGVscC1hcmdzICh3
aGlsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIg
MCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10cnVlbmFtZSkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtbmFtZS1h
cy1kaXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSkgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxw
LWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
ImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJvciIgMCAyIChoZWxwLWFyZ3MgKG9yKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1h
cmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxl
dCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpXSAxMyBbIygiZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSIgMCAyMiAoaGVscC1hcmdz
IChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiYXBwbHkiIDAgNSAoaGVscC1hcmdzIChhcHBseSkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoInRyYW1wLXJ1bi1yZWFsLWhhbmRsZXIi
IDAgMjIgKGhlbHAtYXJncyAodHJhbXAtcnVuLXJlYWwtaGFuZGxlcikgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoInRyYW1wLWNvbXBsZXRpb24tZmlsZS1uYW1l
LWhhbmRsZXIiIDAgMzQgKGhlbHAtYXJncyAodHJhbXAtY29tcGxldGlvbi1maWxlLW5hbWUtaGFu
ZGxlcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUt
bmFtZS1ub25kaXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLW5vbmRpcmVjdG9y
eSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImNvbmNhdCIg
MCA2IChoZWxwLWFyZ3MgKGNvbmNhdCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoInNldHEiIDAgNCAoaGVscC1hcmdzIChzZXRxKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAt
YXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJs
ZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hpbGUiIDAgNSAoaGVs
cC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10
cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZp
bGUtbmFtZS1hcy1kaXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLWFzLWRpcmVj
dG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpXSAzMSBbIygi
Y29uY2F0IiAwIDYgKGhlbHAtYXJncyAoY29uY2F0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygic2V0cSIgMCA0IChoZWxwLWFyZ3MgKHNldHEpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3Mg
KGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAg
MiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChs
ZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIg
MCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdz
IChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChmaWxlLW5hbWUt
YXMtZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJncyAob3IpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVs
cC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSldIDEzIFsjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAo
aGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdz
IChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxl
LXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IiAw
IDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxw
LWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
b3IiIDAgMiAoaGVscC1hcmdzIChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1h
cmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3
aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSldIDEwIFsjKCJpZiIgMCAyIChoZWxwLWFyZ3Mg
KGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAw
IDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1uYW1lLWFz
LWRpcmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAt
YXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
aWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJncyAob3IpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFy
Z3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0
IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygid2hpbGUiIDAgNSAoaGVscC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5h
bWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtbmFtZS1hcy1kaXJlY3RvcnkiIDAgMjIgKGhl
bHAtYXJncyAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAo
aWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gMTAgWyMoImV4
cGFuZC1maWxlLW5hbWUiIDAgMTYgKGhlbHAtYXJncyAoZXhwYW5kLWZpbGUtbmFtZSkgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImFwcGx5IiAwIDUgKGhlbHAt
YXJncyAoYXBwbHkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJ0cmFtcC1ydW4tcmVhbC1oYW5kbGVyIiAwIDIyIChoZWxwLWFyZ3MgKHRyYW1wLXJ1bi1yZWFs
LWhhbmRsZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ0
cmFtcC1jb21wbGV0aW9uLWZpbGUtbmFtZS1oYW5kbGVyIiAwIDM0IChoZWxwLWFyZ3MgKHRyYW1w
LWNvbXBsZXRpb24tZmlsZS1uYW1lLWhhbmRsZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXN5bWxpbmstcCIgMCAxNCAoaGVscC1hcmdzIChmaWxl
LXN5bWxpbmstcCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
InNldHEiIDAgNCAoaGVscC1hcmdzIChzZXRxKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVs
cC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hpbGUiIDAgNSAoaGVscC1hcmdzICh3aGls
ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAz
IChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10cnVlbmFtZSkgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtbmFtZS1hcy1k
aXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSkgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFy
Z3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpXSAzMSBb
IygiZGlyZWN0b3J5LWZpbGUtbmFtZSIgMCAxOSAoaGVscC1hcmdzIChkaXJlY3RvcnktZmlsZS1u
YW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygic2V0cSIg
MCA0IChoZWxwLWFyZ3MgKHNldHEpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJn
cyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hp
bGUiIDAgNSAoaGVscC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAt
YXJncyAoZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoIiM8bGFtYmRhIDM3Rj4iIDkgMTIgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1m
dW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAo
aGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3Vz
ZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAu
IHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91
c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1h
cCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1
dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0b24tZGF0YSAobGFtYmRhIG5pbCAoZmls
ZS10cnVlbmFtZSAifi9Xb3JrL3NvbWUvbG9uZy9wYXRoL3RvL3BhcnNlL3RoYXQvaXMvdmVyeS9k
ZWVwL2RlZXAvZGVlcC9zdXBlci9kdXBlci9kZWVwL2RlZXAuZWwiKSkgY2F0ZWdvcnkgdCBmb2xs
b3ctbGluayB0IGJ1dHRvbiB0IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBm
dW5jdGlvbidzIGJvZHkiIG1vdXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRv
biBmYWNlIGJ1dHRvbikpICMoImJlbmNobWFyay1jYWxsIiAwIDE0IChoZWxwLWFyZ3MgKGJlbmNo
bWFyay1jYWxsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
ZXZhbCIgMCA0IChoZWxwLWFyZ3MgKGV2YWwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJlbGlzcC0tZXZhbC1sYXN0LXNleHAiIDAgMjEgKGhlbHAtYXJncyAo
ZWxpc3AtLWV2YWwtbGFzdC1zZXhwKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygiIzxjb21waWxlZC1mdW5jdGlvbiBDQjg+IiAyMCAyMyAoYWN0aW9uIGhlbHAt
Zm5zLS1kaXNwbGF5LWZ1bmN0aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4g
cHVzaC1idXR0b24pIChoZWFkZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNo
LWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFwICh0b3Vj
aHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9s
bG93LWxpbmsgLiBtb3VzZS1mYWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNo
LWJ1dHRvbikga2V5bWFwIChiYWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5
IC4gYmFja3dhcmQtYnV0dG9uKSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhICNb
MCAiXDMwMVwzMDAhXDIwNyIgW25pbCBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDJdIGNhdGVnb3J5
IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxh
eSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFj
ZSBidXR0b24gZmFjZSBidXR0b24pKSAjKCIjPHN1YnItbmF0aXZlLWVsaXNwIGV2YWwtbGFzdC1z
ZXhwPiIgMjAgMzQgKGJ1dHRvbiAodCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gaGVs
cC1hcmdzIChldmFsLWxhc3Qtc2V4cCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIEQ4NT4iIDIw
IDIzIChhY3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRv
dWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hz
Y3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUt
bGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBw
dXNoLWJ1dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1i
dXR0b24pICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0
b24pICgyNyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9u
KSkgYnV0dG9uLWRhdGEgI1soJnJlc3QgX2l0KSAiCAkhXDIxMRJcMjA3IiBbYWQtLWFkZG9pdC1m
dW5jdGlvbiBldmFsLWxhc3Qtc2V4cC1hcmctaW50ZXJuYWwgYWQtcmV0dXJuLXZhbHVlXSAyXSBj
YXRlZ29yeSB0IGZvbGxvdy1saW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6
IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1s
b2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9uKSkgIygiZXZhbC1zZXhwLWZ1LWZsYXNoLWRvaXQt
c2ltcGxlIiAwIDMwIChoZWxwLWFyZ3MgKGV2YWwtc2V4cC1mdS1mbGFzaC1kb2l0LXNpbXBsZSkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpXSAyNiBbIygib3IiIDAg
MiAoaGVscC1hcmdzIChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10cnVlbmFtZSkgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtbmFtZS1hcy1k
aXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSkgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFy
Z3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlm
IiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJvciIgMCAyIChoZWxwLWFyZ3MgKG9yKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdz
IChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIg
MCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVuYW1l
IiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IiAwIDIyIChoZWxw
LWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlm
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAo
aGVscC1hcmdzIChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
XSAzIFsjKCJzdHJpbmc9IiAwIDcgKGhlbHAtYXJncyAoc3RyaW5nPSkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJncyAob3IpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVs
cC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hpbGUiIDAgNSAoaGVscC1hcmdzICh3aGls
ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAz
IChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10cnVlbmFtZSkgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtbmFtZS1hcy1k
aXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSkgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFy
Z3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlm
IiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJvciIgMCAyIChoZWxwLWFyZ3MgKG9yKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdz
IChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIg
MCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gMTEgWyMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJvciIgMCAyICho
ZWxwLWFyZ3MgKG9yKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIndoaWxlIiAwIDUg
KGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZp
bGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1k
aXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJs
ZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdzIChvcikgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFy
Z3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlm
IiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSldIDIzIFsjKCJsZXQiIDAg
MyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMt
ZGlyZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1h
cmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJp
ZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdzIChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJn
cyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQi
IDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFt
ZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygiIzxsYW1iZGEgMzdGPiIgOSAxMiAoYWN0aW9uIGhlbHAt
Zm5zLS1kaXNwbGF5LWZ1bmN0aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4g
cHVzaC1idXR0b24pIChoZWFkZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNo
LWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFwICh0b3Vj
aHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9s
bG93LWxpbmsgLiBtb3VzZS1mYWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNo
LWJ1dHRvbikga2V5bWFwIChiYWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5
IC4gYmFja3dhcmQtYnV0dG9uKSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhIChs
YW1iZGEgbmlsIChmaWxlLXRydWVuYW1lICJ+L1dvcmsvc29tZS9sb25nL3BhdGgvdG8vcGFyc2Uv
dGhhdC9pcy92ZXJ5L2RlZXAvZGVlcC9kZWVwL3N1cGVyL2R1cGVyL2RlZXAvZGVlcC5lbCIpKSBj
YXRlZ29yeSB0IGZvbGxvdy1saW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6
IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1s
b2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9uKSkgIygiYmVuY2htYXJrLWNhbGwiIDAgMTQgKGhl
bHAtYXJncyAoYmVuY2htYXJrLWNhbGwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJldmFsIiAwIDQgKGhlbHAtYXJncyAoZXZhbCkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImVsaXNwLS1ldmFsLWxhc3Qtc2V4cCIgMCAy
MSAoaGVscC1hcmdzIChlbGlzcC0tZXZhbC1sYXN0LXNleHApIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gMyBbIygidHJhbXAtcnVuLXJlYWwtaGFuZGxlciIgMCAy
MiAoaGVscC1hcmdzICh0cmFtcC1ydW4tcmVhbC1oYW5kbGVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygidHJhbXAtY29tcGxldGlvbi1maWxlLW5hbWUtaGFu
ZGxlciIgMCAzNCAoaGVscC1hcmdzICh0cmFtcC1jb21wbGV0aW9uLWZpbGUtbmFtZS1oYW5kbGVy
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1zeW1s
aW5rLXAiIDAgMTQgKGhlbHAtYXJncyAoZmlsZS1zeW1saW5rLXApIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJzZXRxIiAwIDQgKGhlbHAtYXJncyAoc2V0cSkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhl
bHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxw
LWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
IndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzICho
ZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZp
bGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdz
IChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpXSAzIFsjKCJs
ZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hpbGUiIDAgNSAoaGVs
cC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10
cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZp
bGUtbmFtZS1hcy1kaXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLWFzLWRpcmVj
dG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIg
MCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJvciIgMCAyIChoZWxwLWFyZ3MgKG9yKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAo
bGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAg
MiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1h
cmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJm
aWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gMzAgWyMoImxldCIgMCAzIChoZWxwLWFy
Z3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZp
bGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIiM8bGFtYmRhIDM3Rj4iIDkgMTIgKGFj
dGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hzY3Jl
ZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1k
b3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtl
eW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0
dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikg
KDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3
IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0
b24tZGF0YSAobGFtYmRhIG5pbCAoZmlsZS10cnVlbmFtZSAifi9Xb3JrL3NvbWUvbG9uZy9wYXRo
L3RvL3BhcnNlL3RoYXQvaXMvdmVyeS9kZWVwL2RlZXAvZGVlcC9zdXBlci9kdXBlci9kZWVwL2Rl
ZXAuZWwiKSkgY2F0ZWdvcnkgdCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0IGhlbHAtZWNobyAibW91
c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1vdXNlLWZhY2UgaGlnaGxp
Z2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMoImJlbmNobWFyay1jYWxs
IiAwIDE0IChoZWxwLWFyZ3MgKGJlbmNobWFyay1jYWxsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZXZhbCIgMCA0IChoZWxwLWFyZ3MgKGV2YWwpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJlbGlzcC0tZXZhbC1sYXN0
LXNleHAiIDAgMjEgKGhlbHAtYXJncyAoZWxpc3AtLWV2YWwtbGFzdC1zZXhwKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiIzxjb21waWxlZC1mdW5jdGlvbiBD
Qjg+IiAyMCAyMyAoYWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0aW9uIGtleW1hcCAoa2V5
bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChoZWFkZXItbGluZSBrZXltYXAg
KHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikp
IChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3Vz
ZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsgLiBtb3VzZS1mYWNlKSAobW91c2UtMiAu
IHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5bWFwIChiYWNrdGFiIC4gYmFja3dh
cmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dhcmQtYnV0dG9uKSkgKDkgLiBmb3J3YXJk
LWJ1dHRvbikpIGJ1dHRvbi1kYXRhICNbMCAiXDMwMVwzMDAhXDIwNyIgW25pbCBlbGlzcC0tZXZh
bC1sYXN0LXNleHBdIDJdIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBoZWxwLWVj
aG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1mYWNl
IGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0b24pKSAjKCIjPHN1YnIt
bmF0aXZlLWVsaXNwIGV2YWwtbGFzdC1zZXhwPiIgMjAgMzQgKGJ1dHRvbiAodCkgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gaGVscC1hcmdzIChldmFsLWxhc3Qtc2V4cCkpKSAjKCIjPGNv
bXBpbGVkLWZ1bmN0aW9uIEQ4NT4iIDIwIDIzIChhY3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVu
Y3Rpb24ga2V5bWFwIChrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhl
YWRlci1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2Ut
MiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUtbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBw
dXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNl
LWZhY2UpIChtb3VzZS0yIC4gcHVzaC1idXR0b24pICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAg
KGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0b24pICgyNyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0
b24pKSAoOSAuIGZvcndhcmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEgI1soJnJlc3QgX2l0KSAiCAkh
XDIxMRJcMjA3IiBbYWQtLWFkZG9pdC1mdW5jdGlvbiBldmFsLWxhc3Qtc2V4cC1hcmctaW50ZXJu
YWwgYWQtcmV0dXJuLXZhbHVlXSAyXSBjYXRlZ29yeSB0IGZvbGxvdy1saW5rIHQgYnV0dG9uIHQg
aGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9keSIgbW91
c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9uKSkgIygi
ZXZhbC1zZXhwLWZ1LWZsYXNoLWRvaXQtc2ltcGxlIiAwIDMwIChoZWxwLWFyZ3MgKGV2YWwtc2V4
cC1mdS1mbGFzaC1kb2l0LXNpbXBsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImV2YWwtc2V4cC1mdS1mbGFzaC1kb2l0IiAwIDIzIChoZWxwLWFyZ3MgKGV2
YWwtc2V4cC1mdS1mbGFzaC1kb2l0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygiZXNmLWZsYXNoLWRvaXQiIDAgMTQgKGhlbHAtYXJncyAoZXNmLWZsYXNoLWRv
aXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJhZC1BZHZp
Y2UtZXZhbC1sYXN0LXNleHAiIDAgMjQgKGhlbHAtYXJncyAoYWQtQWR2aWNlLWV2YWwtbGFzdC1z
ZXhwKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiYXBwbHki
IDAgNSAoaGVscC1hcmdzIChhcHBseSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImV2YWwtbGFzdC1zZXhwIiAwIDE0IChoZWxwLWFyZ3MgKGV2YWwtbGFzdC1z
ZXhwKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiIzxjb21w
aWxlZC1mdW5jdGlvbiA1MDk+IiAyMCAyMyAoYWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0
aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChoZWFk
ZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIg
LiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVz
aC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsgLiBtb3VzZS1m
YWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5bWFwIChi
YWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dhcmQtYnV0dG9u
KSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhICNbMjU3ICJcMzAyASFcMjExEFwz
MDMJIVwyMDMOAFwzMDQgXDIxMFwzMDUBYFwiXDIwNyIgW2Vyb3MtLWxhc3QtcmVzdWx0IGVyb3Mt
LWluc3BlY3QtYnVmZmVyLW5hbWUgZXZhbC1sYXN0LXNleHAgZ2V0LWJ1ZmZlciBlcm9zLWluc3Bl
Y3QtbGFzdC1yZXN1bHQgZXJvcy0tZXZhbC1vdmVybGF5XSA1ICgiL2hvbWUveWFudGFyOTIvLmVt
YWNzLmQvc3RyYWlnaHQvYnVpbGQvZXJvcy9lcm9zLmVsYyIgLiA2NDMxKSAiUCJdIGNhdGVnb3J5
IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxh
eSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFj
ZSBidXR0b24gZmFjZSBidXR0b24pKV0gNiBbIygiZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSIgMCAy
MiAoaGVscC1hcmdzIChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZXF1YWwiIDAgNSAoaGVscC1hcmdzIChlcXVhbCkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhl
bHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hpbGUiIDAgNSAo
aGVscC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmls
ZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
IiM8bGFtYmRhIDM3Rj4iIDkgMTIgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBr
ZXltYXAgKGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxp
bmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVz
aC1idXR0b24pKSAobW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0
dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkg
KG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3Rh
YiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5
IC4gZm9yd2FyZC1idXR0b24pKSBidXR0b24tZGF0YSAobGFtYmRhIG5pbCAoZmlsZS10cnVlbmFt
ZSAifi9Xb3JrL3NvbWUvbG9uZy9wYXRoL3RvL3BhcnNlL3RoYXQvaXMvdmVyeS9kZWVwL2RlZXAv
ZGVlcC9zdXBlci9kdXBlci9kZWVwL2RlZXAuZWwiKSkgY2F0ZWdvcnkgdCBmb2xsb3ctbGluayB0
IGJ1dHRvbiB0IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBmdW5jdGlvbidz
IGJvZHkiIG1vdXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRvbiBmYWNlIGJ1
dHRvbikpICMoImJlbmNobWFyay1jYWxsIiAwIDE0IChoZWxwLWFyZ3MgKGJlbmNobWFyay1jYWxs
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZXZhbCIgMCA0
IChoZWxwLWFyZ3MgKGV2YWwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJlbGlzcC0tZXZhbC1sYXN0LXNleHAiIDAgMjEgKGhlbHAtYXJncyAoZWxpc3AtLWV2
YWwtbGFzdC1zZXhwKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiIzxjb21waWxlZC1mdW5jdGlvbiBDQjg+IiAyMCAyMyAoYWN0aW9uIGhlbHAtZm5zLS1kaXNw
bGF5LWZ1bmN0aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0
b24pIChoZWFkZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikg
KG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1k
b3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsg
LiBtb3VzZS1mYWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikg
a2V5bWFwIChiYWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dh
cmQtYnV0dG9uKSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhICNbMCAiXDMwMVwz
MDAhXDIwNyIgW25pbCBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDJdIGNhdGVnb3J5IHQgZm9sbG93
LWxpbmsgdCBidXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVu
Y3Rpb24ncyBib2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24g
ZmFjZSBidXR0b24pKSAjKCIjPHN1YnItbmF0aXZlLWVsaXNwIGV2YWwtbGFzdC1zZXhwPiIgMjAg
MzQgKGJ1dHRvbiAodCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gaGVscC1hcmdzIChl
dmFsLWxhc3Qtc2V4cCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIEQ4NT4iIDIwIDIzIChhY3Rp
b24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRvdWNoc2NyZWVu
LWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93
biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUtbGluZSBrZXlt
YXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRv
bikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1idXR0b24pICgx
MyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0b24pICgyNyBr
ZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9uKSkgYnV0dG9u
LWRhdGEgI1soJnJlc3QgX2l0KSAiCAkhXDIxMRJcMjA3IiBbYWQtLWFkZG9pdC1mdW5jdGlvbiBl
dmFsLWxhc3Qtc2V4cC1hcmctaW50ZXJuYWwgYWQtcmV0dXJuLXZhbHVlXSAyXSBjYXRlZ29yeSB0
IGZvbGxvdy1saW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkg
dGhlIGZ1bmN0aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2Ug
YnV0dG9uIGZhY2UgYnV0dG9uKSldIDM0IFsjKCJzdHJpbmc9IiAwIDcgKGhlbHAtYXJncyAoc3Ry
aW5nPSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIm9yIiAw
IDIgKGhlbHAtYXJncyAob3IpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJjb25kIiAwIDQgKGhlbHAtYXJncyAoY29uZCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAo
ZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImZpbGUtbmFtZS1hcy1kaXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLWFz
LWRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
ImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJvciIgMCAyIChoZWxwLWFyZ3MgKG9yKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAt
YXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
aWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAo
aGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGly
ZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdz
IChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gMTAgWyMo
ImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoImNvbmQiIDAgNCAoaGVscC1hcmdzIChjb25kKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVs
cC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygiIzxsYW1iZGEgMzdGPiIgOSAxMiAoYWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5
LWZ1bmN0aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24p
IChoZWFkZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1v
dXNlLTIgLiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3du
IC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsgLiBt
b3VzZS1mYWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5
bWFwIChiYWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dhcmQt
YnV0dG9uKSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhIChsYW1iZGEgbmlsIChm
aWxlLXRydWVuYW1lICJ+L1dvcmsvc29tZS9sb25nL3BhdGgvdG8vcGFyc2UvdGhhdC9pcy92ZXJ5
L2RlZXAvZGVlcC9kZWVwL3N1cGVyL2R1cGVyL2RlZXAvZGVlcC5lbCIpKSBjYXRlZ29yeSB0IGZv
bGxvdy1saW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhl
IGZ1bmN0aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0
dG9uIGZhY2UgYnV0dG9uKSkgIygiYmVuY2htYXJrLWNhbGwiIDAgMTQgKGhlbHAtYXJncyAoYmVu
Y2htYXJrLWNhbGwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJldmFsIiAwIDQgKGhlbHAtYXJncyAoZXZhbCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImVsaXNwLS1ldmFsLWxhc3Qtc2V4cCIgMCAyMSAoaGVscC1hcmdz
IChlbGlzcC0tZXZhbC1sYXN0LXNleHApIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIENCOD4iIDIwIDIzIChhY3Rpb24gaGVs
cC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24g
LiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1
c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUtbGluZSBrZXltYXAgKHRv
dWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChm
b2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1idXR0b24pICgxMyAuIHB1
c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0b24pICgyNyBrZXltYXAg
KDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEg
I1swICJcMzAxXDMwMCFcMjA3IiBbbmlsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gMl0gY2F0ZWdv
cnkgdCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNw
bGF5IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1vdXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1m
YWNlIGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMoIiM8c3Vici1uYXRpdmUtZWxpc3AgZXZhbC1sYXN0
LXNleHA+IiAyMCAzNCAoYnV0dG9uICh0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBo
ZWxwLWFyZ3MgKGV2YWwtbGFzdC1zZXhwKSkpICMoIiM8Y29tcGlsZWQtZnVuY3Rpb24gRDg1PiIg
MjAgMjMgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1hcCAo
dG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0b3Vj
aHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAobW9k
ZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAu
IHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNo
LWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1
dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1idXR0
b24pKSBidXR0b24tZGF0YSAjWygmcmVzdCBfaXQpICIICSFcMjExElwyMDciIFthZC0tYWRkb2l0
LWZ1bmN0aW9uIGV2YWwtbGFzdC1zZXhwLWFyZy1pbnRlcm5hbCBhZC1yZXR1cm4tdmFsdWVdIDJd
IGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJF
VDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250
LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0b24pKSAjKCJldmFsLXNleHAtZnUtZmxhc2gtZG9p
dC1zaW1wbGUiIDAgMzAgKGhlbHAtYXJncyAoZXZhbC1zZXhwLWZ1LWZsYXNoLWRvaXQtc2ltcGxl
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZXZhbC1zZXhw
LWZ1LWZsYXNoLWRvaXQiIDAgMjMgKGhlbHAtYXJncyAoZXZhbC1zZXhwLWZ1LWZsYXNoLWRvaXQp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJlc2YtZmxhc2gt
ZG9pdCIgMCAxNCAoaGVscC1hcmdzIChlc2YtZmxhc2gtZG9pdCkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImFkLUFkdmljZS1ldmFsLWxhc3Qtc2V4cCIgMCAy
NCAoaGVscC1hcmdzIChhZC1BZHZpY2UtZXZhbC1sYXN0LXNleHApIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJhcHBseSIgMCA1IChoZWxwLWFyZ3MgKGFwcGx5
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZXZhbC1sYXN0
LXNleHAiIDAgMTQgKGhlbHAtYXJncyAoZXZhbC1sYXN0LXNleHApIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gMTAgWyMoImZpbGUtbmFtZS1ub25kaXJlY3Rvcnki
IDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImNvbmNhdCIgMCA2IChoZWxwLWFyZ3MgKGNv
bmNhdCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoInNldHEi
IDAgNCAoaGVscC1hcmdzIChzZXRxKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdz
IChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIg
MCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hpbGUiIDAgNSAoaGVscC1hcmdzICh3aGlsZSkgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxw
LWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
ImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIiM8bGFtYmRhIDM3Rj4iIDkgMTIg
KGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hz
Y3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVl
bi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5l
IGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gt
YnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRv
bikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikg
KDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBi
dXR0b24tZGF0YSAobGFtYmRhIG5pbCAoZmlsZS10cnVlbmFtZSAifi9Xb3JrL3NvbWUvbG9uZy9w
YXRoL3RvL3BhcnNlL3RoYXQvaXMvdmVyeS9kZWVwL2RlZXAvZGVlcC9zdXBlci9kdXBlci9kZWVw
L2RlZXAuZWwiKSkgY2F0ZWdvcnkgdCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0IGhlbHAtZWNobyAi
bW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1vdXNlLWZhY2UgaGln
aGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMoImJlbmNobWFyay1j
YWxsIiAwIDE0IChoZWxwLWFyZ3MgKGJlbmNobWFyay1jYWxsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZXZhbCIgMCA0IChoZWxwLWFyZ3MgKGV2YWwpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJlbGlzcC0tZXZhbC1s
YXN0LXNleHAiIDAgMjEgKGhlbHAtYXJncyAoZWxpc3AtLWV2YWwtbGFzdC1zZXhwKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiIzxjb21waWxlZC1mdW5jdGlv
biBDQjg+IiAyMCAyMyAoYWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0aW9uIGtleW1hcCAo
a2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChoZWFkZXItbGluZSBrZXlt
YXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRv
bikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pICht
b3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsgLiBtb3VzZS1mYWNlKSAobW91c2Ut
MiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5bWFwIChiYWNrdGFiIC4gYmFj
a3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dhcmQtYnV0dG9uKSkgKDkgLiBmb3J3
YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhICNbMCAiXDMwMVwzMDAhXDIwNyIgW25pbCBlbGlzcC0t
ZXZhbC1sYXN0LXNleHBdIDJdIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBoZWxw
LWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1m
YWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0b24pKV0gMzQgWyMo
ImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxl
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMg
KGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1uYW1lLWFzLWRp
cmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJn
cyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYi
IDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJncyAob3IpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3Mg
KGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAw
IDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygid2hpbGUiIDAgNSAoaGVscC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUi
IDAgMTMgKGhlbHAtYXJncyAoZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtbmFtZS1hcy1kaXJlY3RvcnkiIDAgMjIgKGhlbHAt
YXJncyAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpXSA3IFsjKCJmaWxlLW5hbWUtZGlyZWN0b3J5IiAwIDE5IChoZWxwLWFy
Z3MgKGZpbGUtbmFtZS1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJhcHBseSIgMCA1IChoZWxwLWFyZ3MgKGFwcGx5KSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygidHJhbXAtcnVuLXJlYWwtaGFuZGxlciIg
MCAyMiAoaGVscC1hcmdzICh0cmFtcC1ydW4tcmVhbC1oYW5kbGVyKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygidHJhbXAtY29tcGxldGlvbi1maWxlLW5hbWUt
aGFuZGxlciIgMCAzNCAoaGVscC1hcmdzICh0cmFtcC1jb21wbGV0aW9uLWZpbGUtbmFtZS1oYW5k
bGVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1u
YW1lLWRpcmVjdG9yeSIgMCAxOSAoaGVscC1hcmdzIChmaWxlLW5hbWUtZGlyZWN0b3J5KSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1h
cmdzIChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxl
dCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxw
LWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRy
dWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmls
ZS1uYW1lLWFzLWRpcmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0
b3J5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAw
IDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJncyAob3IpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gMjEgWyMoImZpbGUtbmFtZS1ub25kaXJl
Y3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSkgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImFwcGx5IiAwIDUgKGhlbHAtYXJn
cyAoYXBwbHkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ0
cmFtcC1ydW4tcmVhbC1oYW5kbGVyIiAwIDIyIChoZWxwLWFyZ3MgKHRyYW1wLXJ1bi1yZWFsLWhh
bmRsZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ0cmFt
cC1jb21wbGV0aW9uLWZpbGUtbmFtZS1oYW5kbGVyIiAwIDM0IChoZWxwLWFyZ3MgKHRyYW1wLWNv
bXBsZXRpb24tZmlsZS1uYW1lLWhhbmRsZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3Mg
KGZpbGUtbmFtZS1ub25kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJlcXVhbCIgMCA1IChoZWxwLWFyZ3MgKGVxdWFsKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzICho
ZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdo
aWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAw
IDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1uYW1lLWFz
LWRpcmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAt
YXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
aWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpXSAxMyBbIygibm90IiAwIDMgKGhlbHAtYXJncyAobm90KSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hpbGUiIDAgNSAoaGVscC1hcmdzICh3
aGlsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIg
MCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10cnVlbmFtZSkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtbmFtZS1h
cy1kaXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSkgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxw
LWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
ImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJvciIgMCAyIChoZWxwLWFyZ3MgKG9yKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1h
cmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxl
dCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVu
YW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IiAwIDIyICho
ZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gNiBbIygic2V0cSIgMCA0IChoZWxw
LWFyZ3MgKHNldHEpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdzIChvcikgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxw
LWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
ImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxl
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMg
KGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1uYW1lLWFzLWRp
cmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJn
cyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYi
IDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJncyAob3IpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3Mg
KGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSldIDQgWyMoImlm
IiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdz
IChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIg
MCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVuYW1l
IiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IiAwIDIyIChoZWxw
LWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlm
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAo
aGVscC1hcmdzIChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1
IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSldIDE1IFsjKCJjb25zIiAwIDQgKGhlbHAtYXJncyAoY29ucykgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoInNldGNhciIgMCA2IChoZWxwLWFyZ3MgKHNl
dGNhcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIg
MCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJvciIgMCAyIChoZWxwLWFyZ3MgKG9yKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAo
bGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAg
MiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1h
cmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJm
aWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5
IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyICho
ZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
Iygib3IiIDAgMiAoaGVscC1hcmdzIChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpXSAxMCBbIygiZmlsZS1uYW1lLW5vbmRpcmVjdG9y
eSIgMCAyMiAoaGVscC1hcmdzIChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZXF1YWwiIDAgNSAoaGVscC1hcmdzIChl
cXVhbCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAw
IDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChp
ZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAz
IChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVuYW1lIiAw
IDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCIjPGxhbWJkYSAzN0Y+IiA5IDEyIChhY3Rpb24gaGVscC1mbnMt
LWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNo
LWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0
dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUtbGluZSBrZXltYXAgKHRvdWNoc2Ny
ZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChmb2xsb3ct
bGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1idXR0b24pICgxMyAuIHB1c2gtYnV0
dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0b24pICgyNyBrZXltYXAgKDkgLiBi
YWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEgKGxhbWJk
YSBuaWwgKGZpbGUtdHJ1ZW5hbWUgIn4vV29yay9zb21lL2xvbmcvcGF0aC90by9wYXJzZS90aGF0
L2lzL3ZlcnkvZGVlcC9kZWVwL2RlZXAvc3VwZXIvZHVwZXIvZGVlcC9kZWVwLmVsIikpIGNhdGVn
b3J5IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlz
cGxheSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2st
ZmFjZSBidXR0b24gZmFjZSBidXR0b24pKSAjKCJiZW5jaG1hcmstY2FsbCIgMCAxNCAoaGVscC1h
cmdzIChiZW5jaG1hcmstY2FsbCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImV2YWwiIDAgNCAoaGVscC1hcmdzIChldmFsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZWxpc3AtLWV2YWwtbGFzdC1zZXhwIiAwIDIxICho
ZWxwLWFyZ3MgKGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoIiM8Y29tcGlsZWQtZnVuY3Rpb24gQ0I4PiIgMjAgMjMgKGFj
dGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hzY3Jl
ZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1k
b3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtl
eW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0
dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikg
KDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3
IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0
b24tZGF0YSAjWzAgIlwzMDFcMzAwIVwyMDciIFtuaWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAy
XSBjYXRlZ29yeSB0IGZvbGxvdy1saW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBS
RVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9u
dC1sb2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9uKSkgIygiIzxzdWJyLW5hdGl2ZS1lbGlzcCBl
dmFsLWxhc3Qtc2V4cD4iIDIwIDM0IChidXR0b24gKHQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGhlbHAtYXJncyAoZXZhbC1sYXN0LXNleHApKSldIDI0IFsjKCJzdHJpbmc9IiAwIDcg
KGhlbHAtYXJncyAoc3RyaW5nPSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImFuZCIgMCAzIChoZWxwLWFyZ3MgKGFuZCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImNvbmQiIDAgNCAoaGVscC1hcmdzIChjb25kKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIg
MCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSIgMCAyMiAoaGVscC1h
cmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIm9yIiAwIDIgKGhl
bHAtYXJncyAob3IpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hpbGUiIDAgNSAo
aGVscC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmls
ZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
ImZpbGUtbmFtZS1hcy1kaXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLWFzLWRp
cmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxl
dCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpXSA3IFsjKCJzZXRjYXIiIDAgNiAoaGVscC1hcmdzIChzZXRjYXIpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdz
IChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIg
MCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdzIChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAo
aWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAg
MyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIg
MCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSIgMCAyMiAoaGVscC1h
cmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIm9yIiAwIDIgKGhl
bHAtYXJncyAob3IpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSldIDQgWyMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhl
bHAtYXJncyAoZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImZpbGUtbmFtZS1hcy1kaXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmls
ZS1uYW1lLWFzLWRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJvciIgMCAyIChoZWxwLWFyZ3Mg
KG9yKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAw
IDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJn
cyAod2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJs
ZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5h
bWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCIjPGxhbWJk
YSAzN0Y+IiA5IDEyIChhY3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChr
ZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1h
cCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9u
KSkgKG1vZGUtbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1v
dXNlLTIgLiBwdXNoLWJ1dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0y
IC4gcHVzaC1idXR0b24pICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNr
d2FyZC1idXR0b24pICgyNyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndh
cmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEgKGxhbWJkYSBuaWwgKGZpbGUtdHJ1ZW5hbWUgIn4vV29y
ay9zb21lL2xvbmcvcGF0aC90by9wYXJzZS90aGF0L2lzL3ZlcnkvZGVlcC9kZWVwL2RlZXAvc3Vw
ZXIvZHVwZXIvZGVlcC9kZWVwLmVsIikpIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBidXR0b24g
dCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBib2R5IiBt
b3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0b24pKSAj
KCJiZW5jaG1hcmstY2FsbCIgMCAxNCAoaGVscC1hcmdzIChiZW5jaG1hcmstY2FsbCkgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImV2YWwiIDAgNCAoaGVscC1h
cmdzIChldmFsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIiAwIDIxIChoZWxwLWFyZ3MgKGVsaXNwLS1ldmFsLWxhc3Qt
c2V4cCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIiM8Y29t
cGlsZWQtZnVuY3Rpb24gQ0I4PiIgMjAgMjMgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5j
dGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVh
ZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0y
IC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1
c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2Ut
ZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAo
YmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRv
bikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0b24tZGF0YSAjWzAgIlwzMDFcMzAwIVwyMDci
IFtuaWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAyXSBjYXRlZ29yeSB0IGZvbGxvdy1saW5rIHQg
YnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3Mg
Ym9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0
dG9uKSldIDMgWyMoInNldHEiIDAgNCAoaGVscC1hcmdzIChzZXRxKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAt
YXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJp
ZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFy
Z3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIndo
aWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxw
LWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUt
bmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdzIChv
cikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAz
IChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKV0gOCBbIygic2V0cSIgMCA0IChoZWxwLWFyZ3MgKHNldHEpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFy
Z3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYi
IDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdz
IChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGls
ZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVscC1h
cmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygiZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChmaWxlLW5h
bWUtYXMtZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJncyAob3Ip
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAo
aGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSldIDcgWyMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMg
KGhlbHAtYXJncyAoZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoIiM8bGFtYmRhIDM3Rj4iIDkgMTIgKGFjdGlvbiBoZWxwLWZucy0tZGlz
cGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0
dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24p
IChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4t
ZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5r
IC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24p
IGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3
YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0b24tZGF0YSAobGFtYmRhIG5p
bCAoZmlsZS10cnVlbmFtZSAifi9Xb3JrL3NvbWUvbG9uZy9wYXRoL3RvL3BhcnNlL3RoYXQvaXMv
dmVyeS9kZWVwL2RlZXAvZGVlcC9zdXBlci9kdXBlci9kZWVwL2RlZXAuZWwiKSkgY2F0ZWdvcnkg
dCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5
IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1vdXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNl
IGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMoImJlbmNobWFyay1jYWxsIiAwIDE0IChoZWxwLWFyZ3Mg
KGJlbmNobWFyay1jYWxsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiZXZhbCIgMCA0IChoZWxwLWFyZ3MgKGV2YWwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJlbGlzcC0tZXZhbC1sYXN0LXNleHAiIDAgMjEgKGhlbHAt
YXJncyAoZWxpc3AtLWV2YWwtbGFzdC1zZXhwKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygiIzxjb21waWxlZC1mdW5jdGlvbiBDQjg+IiAyMCAyMyAoYWN0aW9u
IGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1k
b3duIC4gcHVzaC1idXR0b24pIChoZWFkZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24g
LiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFw
ICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24p
KSAoZm9sbG93LWxpbmsgLiBtb3VzZS1mYWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMg
LiBwdXNoLWJ1dHRvbikga2V5bWFwIChiYWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5
bWFwICg5IC4gYmFja3dhcmQtYnV0dG9uKSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1k
YXRhICNbMCAiXDMwMVwzMDAhXDIwNyIgW25pbCBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDJdIGNh
dGVnb3J5IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDog
RGlzcGxheSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxv
Y2stZmFjZSBidXR0b24gZmFjZSBidXR0b24pKSAjKCIjPHN1YnItbmF0aXZlLWVsaXNwIGV2YWwt
bGFzdC1zZXhwPiIgMjAgMzQgKGJ1dHRvbiAodCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gaGVscC1hcmdzIChldmFsLWxhc3Qtc2V4cCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIEQ4
NT4iIDIwIDIzIChhY3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXlt
YXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAo
dG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkg
KG1vZGUtbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNl
LTIgLiBwdXNoLWJ1dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4g
cHVzaC1idXR0b24pICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2Fy
ZC1idXR0b24pICgyNyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQt
YnV0dG9uKSkgYnV0dG9uLWRhdGEgI1soJnJlc3QgX2l0KSAiCAkhXDIxMRJcMjA3IiBbYWQtLWFk
ZG9pdC1mdW5jdGlvbiBldmFsLWxhc3Qtc2V4cC1hcmctaW50ZXJuYWwgYWQtcmV0dXJuLXZhbHVl
XSAyXSBjYXRlZ29yeSB0IGZvbGxvdy1saW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0y
LCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQg
Zm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9uKSkgIygiZXZhbC1zZXhwLWZ1LWZsYXNo
LWRvaXQtc2ltcGxlIiAwIDMwIChoZWxwLWFyZ3MgKGV2YWwtc2V4cC1mdS1mbGFzaC1kb2l0LXNp
bXBsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImV2YWwt
c2V4cC1mdS1mbGFzaC1kb2l0IiAwIDIzIChoZWxwLWFyZ3MgKGV2YWwtc2V4cC1mdS1mbGFzaC1k
b2l0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZXNmLWZs
YXNoLWRvaXQiIDAgMTQgKGhlbHAtYXJncyAoZXNmLWZsYXNoLWRvaXQpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJhZC1BZHZpY2UtZXZhbC1sYXN0LXNleHAi
IDAgMjQgKGhlbHAtYXJncyAoYWQtQWR2aWNlLWV2YWwtbGFzdC1zZXhwKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiYXBwbHkiIDAgNSAoaGVscC1hcmdzIChh
cHBseSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImV2YWwt
bGFzdC1zZXhwIiAwIDE0IChoZWxwLWFyZ3MgKGV2YWwtbGFzdC1zZXhwKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiIzxjb21waWxlZC1mdW5jdGlvbiA1MDk+
IiAyMCAyMyAoYWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0aW9uIGtleW1hcCAoa2V5bWFw
ICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChoZWFkZXItbGluZSBrZXltYXAgKHRv
dWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpICht
b2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0y
IC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsgLiBtb3VzZS1mYWNlKSAobW91c2UtMiAuIHB1
c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5bWFwIChiYWNrdGFiIC4gYmFja3dhcmQt
YnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dhcmQtYnV0dG9uKSkgKDkgLiBmb3J3YXJkLWJ1
dHRvbikpIGJ1dHRvbi1kYXRhICNbMjU3ICJcMzAyASFcMjExEFwzMDMJIVwyMDMOAFwzMDQgXDIx
MFwzMDUBYFwiXDIwNyIgW2Vyb3MtLWxhc3QtcmVzdWx0IGVyb3MtLWluc3BlY3QtYnVmZmVyLW5h
bWUgZXZhbC1sYXN0LXNleHAgZ2V0LWJ1ZmZlciBlcm9zLWluc3BlY3QtbGFzdC1yZXN1bHQgZXJv
cy0tZXZhbC1vdmVybGF5XSA1ICgiL2hvbWUveWFudGFyOTIvLmVtYWNzLmQvc3RyYWlnaHQvYnVp
bGQvZXJvcy9lcm9zLmVsYyIgLiA2NDMxKSAiUCJdIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBi
dXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBi
b2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0
b24pKSAjKCJmdW5jYWxsLWludGVyYWN0aXZlbHkiIDAgMjEgKGhlbHAtYXJncyAoZnVuY2FsbC1p
bnRlcmFjdGl2ZWx5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSld
IDcgWyMoInN1YnN0cmluZyIgMCA5IChoZWxwLWFyZ3MgKHN1YnN0cmluZykgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoInN0cmluZz0iIDAgNyAoaGVscC1hcmdz
IChzdHJpbmc9KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
YW5kIiAwIDMgKGhlbHAtYXJncyAoYW5kKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiY29uZCIgMCA0IChoZWxwLWFyZ3MgKGNvbmQpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxw
LWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUt
bmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdzIChv
cikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAz
IChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3Mg
KHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0
IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1l
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1uYW1l
LWFzLWRpcmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSldIDMgWyMoImNhciIgMCAz
IChoZWxwLWFyZ3MgKGNhcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImNvbnMiIDAgNCAoaGVscC1hcmdzIChjb25zKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygic2V0Y2FyIiAwIDYgKGhlbHAtYXJncyAoc2V0Y2FyKSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhl
bHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJncyAob3IpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxw
LWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
bGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygid2hpbGUiIDAgNSAoaGVscC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxl
dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1
ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtbmFtZS1hcy1kaXJlY3RvcnkiIDAgMjIg
KGhlbHAtYXJncyAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJn
cyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJvciIg
MCAyIChoZWxwLWFyZ3MgKG9yKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSldIDMgWyMoInRyYW1wLXJ1bi1yZWFsLWhhbmRsZXIiIDAgMjIgKGhlbHAtYXJncyAodHJh
bXAtcnVuLXJlYWwtaGFuZGxlcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoInRyYW1wLWNvbXBsZXRpb24tZmlsZS1uYW1lLWhhbmRsZXIiIDAgMzQgKGhlbHAt
YXJncyAodHJhbXAtY29tcGxldGlvbi1maWxlLW5hbWUtaGFuZGxlcikgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtbmFtZS1ub25kaXJlY3RvcnkiIDAg
MjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImVxdWFsIiAwIDUgKGhlbHAtYXJncyAoZXF1YWwp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyICho
ZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIndoaWxlIiAwIDUg
KGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZp
bGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1k
aXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJs
ZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdzIChvcikgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFy
Z3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpXSA3IFsj
KCJjb25kIiAwIDQgKGhlbHAtYXJncyAoY29uZCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10
cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZp
bGUtbmFtZS1hcy1kaXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLWFzLWRpcmVj
dG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIg
MCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJvciIgMCAyIChoZWxwLWFyZ3MgKG9yKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAo
bGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAg
MiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1h
cmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJm
aWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5
IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyICho
ZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
Iygib3IiIDAgMiAoaGVscC1hcmdzIChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpXSA5IFsjKCIxLSIgMCAyIChoZWxwLWFyZ3MgKDEtKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygic2V0Y2FyIiAwIDYgKGhlbHAtYXJncyAo
c2V0Y2FyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hp
bGUiIDAgNSAoaGVscC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAt
YXJncyAoZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImZpbGUtbmFtZS1hcy1kaXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1u
YW1lLWFzLWRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJvciIgMCAyIChoZWxwLWFyZ3MgKG9y
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMg
KGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAo
d2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQi
IDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUt
YXMtZGlyZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gMyBbIygiY29weS1zZXF1
ZW5jZSIgMCAxMyAoaGVscC1hcmdzIChjb3B5LXNlcXVlbmNlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1h
cmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxl
dCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10cnVlbmFt
ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIiM8bGFtYmRh
IDM3Rj4iIDkgMTIgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtl
eW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFw
ICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24p
KSAobW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91
c2UtMiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIg
LiBwdXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3
YXJkLWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2Fy
ZC1idXR0b24pKSBidXR0b24tZGF0YSAobGFtYmRhIG5pbCAoZmlsZS10cnVlbmFtZSAifi9Xb3Jr
L3NvbWUvbG9uZy9wYXRoL3RvL3BhcnNlL3RoYXQvaXMvdmVyeS9kZWVwL2RlZXAvZGVlcC9zdXBl
ci9kdXBlci9kZWVwL2RlZXAuZWwiKSkgY2F0ZWdvcnkgdCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0
IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1v
dXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMo
ImJlbmNobWFyay1jYWxsIiAwIDE0IChoZWxwLWFyZ3MgKGJlbmNobWFyay1jYWxsKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZXZhbCIgMCA0IChoZWxwLWFy
Z3MgKGV2YWwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJl
bGlzcC0tZXZhbC1sYXN0LXNleHAiIDAgMjEgKGhlbHAtYXJncyAoZWxpc3AtLWV2YWwtbGFzdC1z
ZXhwKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiIzxjb21w
aWxlZC1mdW5jdGlvbiBDQjg+IiAyMCAyMyAoYWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0
aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChoZWFk
ZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIg
LiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVz
aC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsgLiBtb3VzZS1m
YWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5bWFwIChi
YWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dhcmQtYnV0dG9u
KSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhICNbMCAiXDMwMVwzMDAhXDIwNyIg
W25pbCBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDJdIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBi
dXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBi
b2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0
b24pKSAjKCIjPHN1YnItbmF0aXZlLWVsaXNwIGV2YWwtbGFzdC1zZXhwPiIgMjAgMzQgKGJ1dHRv
biAodCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gaGVscC1hcmdzIChldmFsLWxhc3Qt
c2V4cCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIEQ4NT4iIDIwIDIzIChhY3Rpb24gaGVscC1m
bnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBw
dXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gt
YnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUtbGluZSBrZXltYXAgKHRvdWNo
c2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChmb2xs
b3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1idXR0b24pICgxMyAuIHB1c2gt
YnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0b24pICgyNyBrZXltYXAgKDkg
LiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEgI1so
JnJlc3QgX2l0KSAiCAkhXDIxMRJcMjA3IiBbYWQtLWFkZG9pdC1mdW5jdGlvbiBldmFsLWxhc3Qt
c2V4cC1hcmctaW50ZXJuYWwgYWQtcmV0dXJuLXZhbHVlXSAyXSBjYXRlZ29yeSB0IGZvbGxvdy1s
aW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0
aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZh
Y2UgYnV0dG9uKSkgIygiZXZhbC1zZXhwLWZ1LWZsYXNoLWRvaXQtc2ltcGxlIiAwIDMwIChoZWxw
LWFyZ3MgKGV2YWwtc2V4cC1mdS1mbGFzaC1kb2l0LXNpbXBsZSkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImV2YWwtc2V4cC1mdS1mbGFzaC1kb2l0IiAwIDIz
IChoZWxwLWFyZ3MgKGV2YWwtc2V4cC1mdS1mbGFzaC1kb2l0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZXNmLWZsYXNoLWRvaXQiIDAgMTQgKGhlbHAtYXJn
cyAoZXNmLWZsYXNoLWRvaXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJhZC1BZHZpY2UtZXZhbC1sYXN0LXNleHAiIDAgMjQgKGhlbHAtYXJncyAoYWQtQWR2
aWNlLWV2YWwtbGFzdC1zZXhwKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSldIDQgWyMoInNldGNhciIgMCA2IChoZWxwLWFyZ3MgKHNldGNhcikgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxl
dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIg
KGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJvciIgMCAyIChoZWxwLWFyZ3MgKG9yKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzICho
ZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoIndoaWxlIiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEz
IChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCIjPGxhbWJkYSAzN0Y+IiA5IDEyIChhY3Rpb24gaGVscC1mbnMtLWRp
c3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1
dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9u
KSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUtbGluZSBrZXltYXAgKHRvdWNoc2NyZWVu
LWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChmb2xsb3ctbGlu
ayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1idXR0b24pICgxMyAuIHB1c2gtYnV0dG9u
KSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0b24pICgyNyBrZXltYXAgKDkgLiBiYWNr
d2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEgKGxhbWJkYSBu
aWwgKGZpbGUtdHJ1ZW5hbWUgIn4vV29yay9zb21lL2xvbmcvcGF0aC90by9wYXJzZS90aGF0L2lz
L3ZlcnkvZGVlcC9kZWVwL2RlZXAvc3VwZXIvZHVwZXIvZGVlcC9kZWVwLmVsIikpIGNhdGVnb3J5
IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxh
eSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFj
ZSBidXR0b24gZmFjZSBidXR0b24pKSAjKCJiZW5jaG1hcmstY2FsbCIgMCAxNCAoaGVscC1hcmdz
IChiZW5jaG1hcmstY2FsbCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImV2YWwiIDAgNCAoaGVscC1hcmdzIChldmFsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZWxpc3AtLWV2YWwtbGFzdC1zZXhwIiAwIDIxIChoZWxw
LWFyZ3MgKGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoIiM8Y29tcGlsZWQtZnVuY3Rpb24gQ0I4PiIgMjAgMjMgKGFjdGlv
biBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hzY3JlZW4t
ZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3du
IC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtleW1h
cCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9u
KSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikgKDEz
IC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3IGtl
eW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0b24t
ZGF0YSAjWzAgIlwzMDFcMzAwIVwyMDciIFtuaWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAyXSBj
YXRlZ29yeSB0IGZvbGxvdy1saW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6
IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1s
b2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9uKSkgIygiIzxzdWJyLW5hdGl2ZS1lbGlzcCBldmFs
LWxhc3Qtc2V4cD4iIDIwIDM0IChidXR0b24gKHQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGhlbHAtYXJncyAoZXZhbC1sYXN0LXNleHApKSldIDMgWyMoImFzc29jIiAwIDUgKGhlbHAt
YXJncyAoYXNzb2MpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdzIChvcikgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAt
YXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJs
ZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10cnVl
bmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSIgMCAyMiAo
aGVscC1hcmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdz
IChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIm9yIiAw
IDIgKGhlbHAtYXJncyAob3IpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAo
bGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSldIDcgWyMoImlm
IiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFt
ZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSIgMCAyMiAoaGVs
cC1hcmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChp
ZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIm9yIiAwIDIg
KGhlbHAtYXJncyAob3IpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygid2hpbGUiIDAg
NSAoaGVscC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAo
ZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImZpbGUtbmFtZS1hcy1kaXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmlsZS1uYW1lLWFz
LWRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
ImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpXSAzIFsjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJn
cyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmls
ZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSIg
MCAyMiAoaGVscC1hcmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVs
cC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
Im9yIiAwIDIgKGhlbHAtYXJncyAob3IpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAt
YXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
d2hpbGUiIDAgNSAoaGVscC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1ZW5hbWUiIDAgMTMgKGhl
bHAtYXJncyAoZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImZpbGUtbmFtZS1hcy1kaXJlY3RvcnkiIDAgMjIgKGhlbHAtYXJncyAoZmls
ZS1uYW1lLWFzLWRpcmVjdG9yeSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gMTQgWyMoImNhciIgMCAzIChoZWxw
LWFyZ3MgKGNhcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
IjEtIiAwIDIgKGhlbHAtYXJncyAoMS0pIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJzZXRjYXIiIDAgNiAoaGVscC1hcmdzIChzZXRjYXIpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3Mg
KHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0
IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1l
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1uYW1l
LWFzLWRpcmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhl
bHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJncyAob3IpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxw
LWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
bGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygid2hpbGUiIDAgNSAoaGVscC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxl
dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZpbGUtdHJ1
ZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoZmlsZS10cnVlbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpXSA2IFsjKCJzZXRxIiAwIDQgKGhlbHAtYXJncyAoc2V0
cSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAz
IChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3Mg
KHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0
IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAoaGVscC1hcmdzIChmaWxlLXRydWVuYW1l
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS1uYW1l
LWFzLWRpcmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhl
bHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJncyAob3IpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxw
LWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
bGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygid2hpbGUiIDAgNSAoaGVscC1hcmdzICh3aGlsZSkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxl
dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpXSAzIFsjKCJvciIg
MCAyIChoZWxwLWFyZ3MgKG9yKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3Mg
KGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIndoaWxl
IiAwIDUgKGhlbHAtYXJncyAod2hpbGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFy
Z3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFt
ZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygib3IiIDAgMiAoaGVscC1hcmdzIChvcikg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImxldCIgMCAzICho
ZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdo
aWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAw
IDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSldIDMgWyMoImNhciIgMCAzIChoZWxwLWFyZ3MgKGNhcikgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImFzc29jIiAwIDUgKGhlbHAtYXJncyAoYXNzb2Mp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyICho
ZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
Iygib3IiIDAgMiAoaGVscC1hcmdzIChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVs
cC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAo
aGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChm
aWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIm9yIiAwIDIgKGhlbHAtYXJn
cyAob3IpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQi
IDAgMyAoaGVscC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJpZiIgMCAyIChoZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSldIDQgWyMoIm9yIiAwIDIgKGhlbHAtYXJncyAob3IpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1h
cmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJm
aWxlLXRydWVuYW1lIiAwIDEzIChoZWxwLWFyZ3MgKGZpbGUtdHJ1ZW5hbWUpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmaWxlLW5hbWUtYXMtZGlyZWN0b3J5
IiAwIDIyIChoZWxwLWFyZ3MgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVscC1hcmdzIChsZXQp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJpZiIgMCAyICho
ZWxwLWFyZ3MgKGlmKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
Iygib3IiIDAgMiAoaGVscC1hcmdzIChvcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoImxldCIgMCAzIChoZWxwLWFyZ3MgKGxldCkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImlmIiAwIDIgKGhlbHAtYXJncyAoaWYpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJsZXQiIDAgMyAoaGVs
cC1hcmdzIChsZXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJ3aGlsZSIgMCA1IChoZWxwLWFyZ3MgKHdoaWxlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZmlsZS10cnVlbmFtZSIgMCAxMyAo
aGVscC1hcmdzIChmaWxlLXRydWVuYW1lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSIgMCAyMiAoaGVscC1hcmdzIChm
aWxlLW5hbWUtYXMtZGlyZWN0b3J5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygibGV0IiAwIDMgKGhlbHAtYXJncyAobGV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaWYiIDAgMiAoaGVscC1hcmdzIChpZikgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpXSAzIFsjKCJ0aW1lci1ldmVudC1o
YW5kbGVyIiAwIDE5IChoZWxwLWFyZ3MgKHRpbWVyLWV2ZW50LWhhbmRsZXIpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJyZWRpc3BsYXkiIDAgOSAoaGVscC1h
cmdzIChyZWRpc3BsYXkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJub3RtdWNoLXNob3ctY29tbWFuZC1ob29rIiAwIDI1IChoZWxwLWFyZ3MgKG5vdG11Y2gt
c2hvdy1jb21tYW5kLWhvb2spIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmls
IiAibmlsIiAibmlsIiAibmlsIiAibmlsIl0gNCBbIygibmF0aXZlLWVsaXNwLWxvYWQiIDAgMTcg
KGhlbHAtYXJncyAobmF0aXZlLWVsaXNwLWxvYWQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIDI2Qj4iIDIwIDIzIChhY3Rp
b24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRvdWNoc2NyZWVu
LWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93
biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUtbGluZSBrZXlt
YXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRv
bikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1idXR0b24pICgx
MyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0b24pICgyNyBr
ZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9uKSkgYnV0dG9u
LWRhdGEgI1s1MTQgIlwzMDRcMzA1XDMwM1wyNDJcIlwyMTBcMzA2AiFcMjEwXDMwNzESAFwzMTBc
MzAxITBcMjEwXDMxMVwzMDIhXDMwMFwyMDMvAFwzMTIDIVwzMTNVXDIwMy8AXDMxNAEhXDIwMy8A
XDMxNQFcMzAwXDMxNj1cIlwyMTBcMjEwXDMxNyBcMjA3IiBbbGF0ZSAiL3RtcC9lbWFjcy1hc3lu
Yy1jb21wLXByb2ZpbGVyLVlzaWtKNC5lbCIgIi9ob21lL3lhbnRhcjkyL0dpdC9lbWFjcy9saXNw
L3Byb2ZpbGVyLmVsIiAobmlsKSBydW4taG9vay13aXRoLWFyZ3MgbmF0aXZlLWNvbXAtYXN5bmMt
Y3UtZG9uZS1mdW5jdGlvbnMgY29tcC1hY2NlcHQtYW5kLXByb2Nlc3MtYXN5bmMtb3V0cHV0IChl
cnJvcikgZGVsZXRlLWZpbGUgY29tcC1lbC10by1lbG4tZmlsZW5hbWUgcHJvY2Vzcy1leGl0LXN0
YXR1cyAwIGZpbGUtZXhpc3RzLXAgbmF0aXZlLWVsaXNwLWxvYWQgbGF0ZSBjb21wLXJ1bi1hc3lu
Yy13b3JrZXJzXSA3ICIKCihmbiBQUk9DRVNTIEVWRU5UKSJdIGNhdGVnb3J5IHQgZm9sbG93LWxp
bmsgdCBidXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rp
b24ncyBib2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFj
ZSBidXR0b24pKSAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmls
IiAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmlsIl0gNDMgWyMoIm9iamVjdC1vZi1j
bGFzcy1wIiAwIDE3IChoZWxwLWFyZ3MgKG9iamVjdC1vZi1jbGFzcy1wKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiY2xvc3FsLW9iamVjdC0tZWllaW8tY2hp
bGRwIiAwIDI3IChoZWxwLWFyZ3MgKGNsb3NxbC1vYmplY3QtLWVpZWlvLWNoaWxkcCkgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImNsb3NxbC0tY2xvc3FsLW9i
amVjdC1wIiAwIDIzIChoZWxwLWFyZ3MgKGNsb3NxbC0tY2xvc3FsLW9iamVjdC1wKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZWllaW8tb3JlZi0tY2xvc3Fs
LW9yZWYiIDAgMjMgKGhlbHAtYXJncyAoZWllaW8tb3JlZi0tY2xvc3FsLW9yZWYpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJhcHBseSIgMCA1IChoZWxwLWFy
Z3MgKGFwcGx5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
c2xvdC12YWx1ZSIgMCAxMCAoaGVscC1hcmdzIChzbG90LXZhbHVlKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1zb3VyY2UtbW0tZ2V0LXNlYXJjaC1v
ci1tYXRjaC1mbnMiIDAgMzggKGhlbHAtYXJncyAoaGVsbS1zb3VyY2UtbW0tZ2V0LXNlYXJjaC1v
ci1tYXRjaC1mbnMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCIjPGNvbXBpbGVkLWZ1bmN0aW9uIEE1Rj4iIDIwIDIzIChhY3Rpb24gaGVscC1mbnMtLWRpc3Bs
YXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRv
bikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAo
bW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUtbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRv
d24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChmb2xsb3ctbGluayAu
IG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1idXR0b24pICgxMyAuIHB1c2gtYnV0dG9uKSBr
ZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0b24pICgyNyBrZXltYXAgKDkgLiBiYWNrd2Fy
ZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEgI1syNTcgIlwzMDEB
XDMwMlwiXDMwMz1cMjA0FgBcMzA0XDMwNVwzMDZcMzA3XDMwMQVcMzEwXCJcIlwzMTFcMjExJFwy
MTBcMzAxAVwzMTJcIlwzMDECXDMxM1wiXDIxMVwyMDM6AFwzMTQDXDMxMlwzMTVcMzExBgZcMzE2
PT9cMjA1MQAGBlwzMTdcMzIwBghcIkRcIiNcMjEwXDI2NgJcMzAxAVwzMjFcIlwyMDNjAFwzMDEB
XDMyMlwiXDIxMVwyMDNbAFwzMTQCXDMyMlwzMjNcMzI0BSEIQ1wiI1wyNjYCXDIwMmMAXDMxNAJc
MzIyCEMjXDI2NgJcMzAxAVwzMjVcIlwyMDNzAFwzMTQBXDMyMlwzMjYEXDMyMlwiI1wyMTBcMzAx
AVwzMjVcIj9cMjA1fwBcMzAxAVwzMjdcIlwyMTFcMjAzXDIzMABcMjExXDMzMD1cMjA0XDIzMABc
MzE0AlwzMjJcMzIzXDMyNFwzMDEGB1wzMjJcIiFcMzMxXCIjXDIxMFwyMTBcMzAxAVwzMzJcIlwy
MTFcMzMzXDIzMlwyMDRcMjYwAFwyMTFcMzM0PVwyMDRcMjYwAFwzMDRcMzM1XDMzNlwzMTFcMjEx
JFwyMTBcMzAxAlwzMzdcIlwzNDA9XDIwNFwzMDAAXDMwNFwzNDFcMzQyXDMxMVwyMTEkXDIxMFwz
MTFcMjA3IiBbaGVsbS1mdXp6eS1zZWFyY2gtZm4gc2xvdC12YWx1ZSBjYW5kaWRhdGVzIGhlbG0t
Y2FuZGlkYXRlcy1pbi1idWZmZXIgY2wtLWFzc2VydGlvbi1mYWlsZWQgKGVxIChzbG90LXZhbHVl
IHNvdXJjZSAnY2FuZGlkYXRlcykgJ2hlbG0tY2FuZGlkYXRlcy1pbi1idWZmZXIpIGZvcm1hdCAi
V3JvbmcgdXNhZ2Ugb2YgYGNhbmRpZGF0ZXMnIGF0dHIgaW4gYCVzJyB1c2UgYGRhdGEnIG9yIGBp
bml0JyBpbnN0ZWFkIiBuYW1lIG5pbCBpbml0IGRhdGEgZWllaW8tb3NldCBkZWxxIGhlbG0tZGVm
YXVsdC1pbml0LXNvdXJjZS1pbi1idWZmZXItZnVuY3Rpb24gbWFrZS1jbG9zdXJlICNbMCAiXDMw
MVwzMDJcMzAzXDMwMCFcMjAzDQBcMzAwIFwyMDIkAFwzMDRcMzAwIVwyMDMjAFwzMDVcMzAwIVwy
MDMjAHJcMzAwcVwyMTBcMzA2IClcMjAyJABcMzAwXCJcMjA3IiBbVjAgaGVsbS1pbml0LWNhbmRp
ZGF0ZXMtaW4tYnVmZmVyIGdsb2JhbCBmdW5jdGlvbnAgYnVmZmVycCBidWZmZXItbGl2ZS1wIGJ1
ZmZlci1zdHJpbmddIDRdIGZ1enp5LW1hdGNoIHNlYXJjaCBhcHBlbmQgaGVsbS1ta2xpc3QgbXVs
dGltYXRjaCBoZWxtLXNvdXJjZS1tbS1nZXQtc2VhcmNoLW9yLW1hdGNoLWZucyBtaWdlbW8gbm9t
dWx0aW1hdGNoIChoZWxtLW1tLTMtbWlnZW1vLXNlYXJjaCkgbWF0Y2ggKGlkZW50aXR5KSBpZGVu
dGl0eSAob3IgKGVxdWFsICcoaWRlbnRpdHkpIG10YykgKGVxICdpZGVudGl0eSBtdGMpKSAiSW52
YWxpZCBzbG90IHZhbHVlIGZvciBgbWF0Y2gnIiB2b2xhdGlsZSB0IChlcSAoc2xvdC12YWx1ZSBz
b3VyY2UgJ3ZvbGF0aWxlKSB0KSAiSW52YWxpZCBzbG90IHZhbHVlIGZvciBgdm9sYXRpbGUnIl0g
MTIgKCIvaG9tZS95YW50YXI5Mi8uZW1hY3MuZC9zdHJhaWdodC9idWlsZC9oZWxtLWNvcmUvaGVs
bS1zb3VyY2UuZWxjIiAuIDQxNzI0KV0gY2F0ZWdvcnkgdCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0
IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1v
dXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMo
ImFwcGx5IiAwIDUgKGhlbHAtYXJncyAoYXBwbHkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIDE4MD4iIDIwIDIzIChhY3Rp
b24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRvdWNoc2NyZWVu
LWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93
biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUtbGluZSBrZXlt
YXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRv
bikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1idXR0b24pICgx
MyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0b24pICgyNyBr
ZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9uKSkgYnV0dG9u
LWRhdGEgI1sxMjggIlwzMDJcMjExXDIwMxEAXDIxMUBcMzAzAQRcIlwyNjYCQVwyMDIBAFwyMTBc
MzAzXDMwMAJcIlwzMDFcMjExXDIwMycAXDIxMUBcMzAzAQVcIlwyNjYCQVwyMDIXAFwyMTBcMjA3
IiBbI1syNTcgIlwzMDEBXDMwMlwiXDMwMz1cMjA0FgBcMzA0XDMwNVwzMDZcMzA3XDMwMQVcMzEw
XCJcIlwzMTFcMjExJFwyMTBcMzAxAVwzMTJcIlwzMDECXDMxM1wiXDIxMVwyMDM6AFwzMTQDXDMx
MlwzMTVcMzExBgZcMzE2PT9cMjA1MQAGBlwzMTdcMzIwBghcIkRcIiNcMjEwXDI2NgJcMzAxAVwz
MjFcIlwyMDNjAFwzMDEBXDMyMlwiXDIxMVwyMDNbAFwzMTQCXDMyMlwzMjNcMzI0BSEIQ1wiI1wy
NjYCXDIwMmMAXDMxNAJcMzIyCEMjXDI2NgJcMzAxAVwzMjVcIlwyMDNzAFwzMTQBXDMyMlwzMjYE
XDMyMlwiI1wyMTBcMzAxAVwzMjVcIj9cMjA1fwBcMzAxAVwzMjdcIlwyMTFcMjAzXDIzMABcMjEx
XDMzMD1cMjA0XDIzMABcMzE0AlwzMjJcMzIzXDMyNFwzMDEGB1wzMjJcIiFcMzMxXCIjXDIxMFwy
MTBcMzAxAVwzMzJcIlwyMTFcMzMzXDIzMlwyMDRcMjYwAFwyMTFcMzM0PVwyMDRcMjYwAFwzMDRc
MzM1XDMzNlwzMTFcMjExJFwyMTBcMzAxAlwzMzdcIlwzNDA9XDIwNFwzMDAAXDMwNFwzNDFcMzQy
XDMxMVwyMTEkXDIxMFwzMTFcMjA3IiBbaGVsbS1mdXp6eS1zZWFyY2gtZm4gc2xvdC12YWx1ZSBj
YW5kaWRhdGVzIGhlbG0tY2FuZGlkYXRlcy1pbi1idWZmZXIgY2wtLWFzc2VydGlvbi1mYWlsZWQg
KGVxIChzbG90LXZhbHVlIHNvdXJjZSAnY2FuZGlkYXRlcykgJ2hlbG0tY2FuZGlkYXRlcy1pbi1i
dWZmZXIpIGZvcm1hdCAiV3JvbmcgdXNhZ2Ugb2YgYGNhbmRpZGF0ZXMnIGF0dHIgaW4gYCVzJyB1
c2UgYGRhdGEnIG9yIGBpbml0JyBpbnN0ZWFkIiBuYW1lIG5pbCBpbml0IGRhdGEgZWllaW8tb3Nl
dCBkZWxxIGhlbG0tZGVmYXVsdC1pbml0LXNvdXJjZS1pbi1idWZmZXItZnVuY3Rpb24gbWFrZS1j
bG9zdXJlICNbMCAiXDMwMVwzMDJcMzAzXDMwMCFcMjAzDQBcMzAwIFwyMDIkAFwzMDRcMzAwIVwy
MDMjAFwzMDVcMzAwIVwyMDMjAHJcMzAwcVwyMTBcMzA2IClcMjAyJABcMzAwXCJcMjA3IiBbVjAg
aGVsbS1pbml0LWNhbmRpZGF0ZXMtaW4tYnVmZmVyIGdsb2JhbCBmdW5jdGlvbnAgYnVmZmVycCBi
dWZmZXItbGl2ZS1wIGJ1ZmZlci1zdHJpbmddIDRdIGZ1enp5LW1hdGNoIHNlYXJjaCBhcHBlbmQg
aGVsbS1ta2xpc3QgbXVsdGltYXRjaCBoZWxtLXNvdXJjZS1tbS1nZXQtc2VhcmNoLW9yLW1hdGNo
LWZucyBtaWdlbW8gbm9tdWx0aW1hdGNoIChoZWxtLW1tLTMtbWlnZW1vLXNlYXJjaCkgbWF0Y2gg
KGlkZW50aXR5KSBpZGVudGl0eSAob3IgKGVxdWFsICcoaWRlbnRpdHkpIG10YykgKGVxICdpZGVu
dGl0eSBtdGMpKSAiSW52YWxpZCBzbG90IHZhbHVlIGZvciBgbWF0Y2gnIiB2b2xhdGlsZSB0IChl
cSAoc2xvdC12YWx1ZSBzb3VyY2UgJ3ZvbGF0aWxlKSB0KSAiSW52YWxpZCBzbG90IHZhbHVlIGZv
ciBgdm9sYXRpbGUnIl0gMTIgKCIvaG9tZS95YW50YXI5Mi8uZW1hY3MuZC9zdHJhaWdodC9idWls
ZC9oZWxtLWNvcmUvaGVsbS1zb3VyY2UuZWxjIiAuIDQxNzI0KV0gbmlsICgjWzI1NyAiXDMwMAFc
MzAxXDMwMiNcMjEwXDMwMAFcMzAzXDMwNCNcMjEwXDMwMAFcMzA1XDMwNiNcMjEwXDMwMAFcMzA3
XDMxMCNcMjEwXDMwMAFcMzExXDMxMiNcMjA3IiBbZWllaW8tb3NldCBhY3Rpb24gaGVsbS10eXBl
LWNvbW1hbmQtYWN0aW9ucyBjb2VyY2UgaGVsbS1zeW1ib2xpZnkgcGVyc2lzdGVudC1hY3Rpb24g
aGVsbS1NLXgtcGVyc2lzdGVudC1hY3Rpb24gcGVyc2lzdGVudC1oZWxwICJEZXNjcmliZSB0aGlz
IGNvbW1hbmQiIGdyb3VwIGhlbG0tY29tbWFuZF0gNSAoIi9ob21lL3lhbnRhcjkyLy5lbWFjcy5k
L3N0cmFpZ2h0L2J1aWxkL2hlbG0vaGVsbS10eXBlcy5lbGMiIC4gMjkzMildICNbMjU3ICJcMzAx
AVwzMDJcIlwyMDQNAFwzMDMBXDMwMlwzMDQjXDIxMFwzMDEBXDMwNVwiXDIwMxwAXDMwNlwzMDdc
MzAxA1wzMTBcIlwiXDIxMFwzMDEBXDMxMVwiXDIxMVwyMDNRAFwyMTE5XDIwMy4AXDIxMUpcMjAy
LwBcMjExXDMwMQNcMzEyXCJcMjA1PgBcMzEzIFwzMTQBXDMxNVwzMTYjXDIxMFwyMTFcMjAzSQBc
MzE3AQNcIlwyMDJKAAFcMzAzBVwzMTEDI1wyNjYEXDIxMFwzMDEBXDMyMFwiXDIxMVwyMDNoAFwz
MDMCXDMyMVwzMjIEBgZcIiNcMjY2AlwyMDJxAFwzMDMCXDMyMVwzMjMFISNcMjY2AlwzMDEBXDMy
NFwiXDIwM1wyMzcACFwyMDRcMjAzAFwzMjVcMzAwXDMyNlwzMjdcMjExJFwyMTBcMzAzAVwzMzBc
MzAxBFwzMzBcIlwyMTFcMjAzXDIzMgBcMzMxXDMzMgIhCENcIlwyNjIBXDIwMlwyMzUAXDIxMAhD
I1wyMTBcMzAxAVwzMzNcIlwyMDRcMzAyAFwzMDMBXDMzMFwzMDEEXDMzMFwiXDIxMVwyMDNcMjc1
AFwzMzFcMzMyAiFcMzM0Q1wiXDI2MgFcMjAyXDMwMABcMjEwXDMzNEMjXDIxMFwzMzVcMzAxAlwz
MzZcIiFcMjQ3XDIwM1wzNTAAXDMwMwFcMzMwXDMwMQRcMzMwXCJcMjExXDIwM1wzNDMAXDMzMVwz
MzICIVwzMzdDXCJcMjYyAVwyMDJcMzQ2AFwyMTBcMzM3QyNcMjEwXDMwMQFcMzQwXCJcMjExXDIw
MwIBXDIxMTlcMjAzXDM3MgBcMjExSlwyMDJcMzczAFwyMTFcMzAzA1wzNDADI1wyNjYCXDIxMFwz
MDEBXDMxMFwiXDMwMQJcMzQxXCJcMjExXDIwMyQBXDM0MgEhXDIwMxoBXDIxMTlcMjAzHwFcMjEx
OlwyMDMkAVwzMDZcMzQzA1wiXDIxMFwyMTBcMzAxAlwzNDRcIlwyMTFcMjA1QQFcMzQyASFcMjAz
OAFcMjExOVwyMDM9AVwyMTE6XDIwNUEBXDMwNlwzNDUDXCJcMjA3IiBbaGVsbS1mdXp6eS1zb3J0
LWZuIHNsb3QtdmFsdWUgZ3JvdXAgZWllaW8tb3NldCBoZWxtIGRlbGF5ZWQgd2FybiAiRGVwcmVj
YXRlZCB1c2FnZSBvZiBoZWxtIGBkZWxheWVkJyBzbG90IGluIGAlcyciIG5hbWUga2V5bWFwIG11
c3QtbWF0Y2ggbWFrZS1zcGFyc2Uta2V5bWFwIGRlZmluZS1rZXkgIg0iIGhlbG0tY29uZmlybS1h
bmQtZXhpdC1taW5pYnVmZmVyIG1ha2UtY29tcG9zZWQta2V5bWFwIHBlcnNpc3RlbnQtaGVscCBo
ZWFkZXItbGluZSBoZWxtLXNvdXJjZS0tcGVyc2lzdGVudC1oZWxwLXN0cmluZyBoZWxtLXNvdXJj
ZS0taGVhZGVyLWxpbmUgZnV6enktbWF0Y2ggY2wtLWFzc2VydGlvbi1mYWlsZWQgIldyb25nIHR5
cGUgYXJndW1lbnQgZnVuY3Rpb25wOiBuaWwiIG5pbCBmaWx0ZXJlZC1jYW5kaWRhdGUtdHJhbnNm
b3JtZXIgYXBwZW5kIGhlbG0tbWtsaXN0IG5vaGlnaGxpZ2h0IGhlbG0tZnV6enktaGlnaGxpZ2h0
LW1hdGNoZXMgaGVsbS1pbnRlcnByZXQtdmFsdWUgbXVsdGlsaW5lIGhlbG0tbXVsdGlsaW5lLXRy
YW5zZm9ybWVyIHJlcXVpcmVzLXBhdHRlcm4gYmVmb3JlLWluaXQtaG9vayBmdW5jdGlvbnAgIkhl
bG0gc291cmNlIGAlcyc6IGJlZm9yZS1pbml0LWhvb2sgU2hvdWxkIGJlIGRlZmluZWQgYXMgYSBz
eW1ib2wiIGFmdGVyLWluaXQtaG9vayAiSGVsbSBzb3VyY2UgYCVzJzogYWZ0ZXItaW5pdC1ob29r
IFNob3VsZCBiZSBkZWZpbmVkIGFzIGEgc3ltYm9sIl0gOSAoIi9ob21lL3lhbnRhcjkyLy5lbWFj
cy5kL3N0cmFpZ2h0L2J1aWxkL2hlbG0tY29yZS9oZWxtLXNvdXJjZS5lbGMiIC4gNDE3MjQpXSkg
YXBwbHldIDcgIgoKKGZuICZyZXN0IEFSR1MpIl0gY2F0ZWdvcnkgdCBmb2xsb3ctbGluayB0IGJ1
dHRvbiB0IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBmdW5jdGlvbidzIGJv
ZHkiIG1vdXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRvbiBmYWNlIGJ1dHRv
bikpICMoImFwcGx5IiAwIDUgKGhlbHAtYXJncyAoYXBwbHkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLS1zZXR1cC1zb3VyY2UiIDAgMTggKGhlbHAt
YXJncyAoaGVsbS0tc2V0dXAtc291cmNlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiaGVsbS1tYWtlLXNvdXJjZSIgMCAxNiAoaGVscC1hcmdzIChoZWxtLW1h
a2Utc291cmNlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
aGVsbS1NLXgtcmVhZC1leHRlbmRlZC1jb21tYW5kIiAwIDMwIChoZWxwLWFyZ3MgKGhlbG0tTS14
LXJlYWQtZXh0ZW5kZWQtY29tbWFuZCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImhlbG0tTS14IiAwIDggKGhlbHAtYXJncyAoaGVsbS1NLXgpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmdW5jYWxsLWludGVyYWN0aXZl
bHkiIDAgMjEgKGhlbHAtYXJncyAoZnVuY2FsbC1pbnRlcmFjdGl2ZWx5KSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSldIDcgWyMoImhlbG0tY29tcC1yZWFkLWdldC1j
YW5kaWRhdGVzIiAwIDI5IChoZWxwLWFyZ3MgKGhlbG0tY29tcC1yZWFkLWdldC1jYW5kaWRhdGVz
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiIzxjb21waWxl
ZC1mdW5jdGlvbiBDMEE+IiAyMCAyMyAoYWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0aW9u
IGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChoZWFkZXIt
bGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBw
dXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1i
dXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsgLiBtb3VzZS1mYWNl
KSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5bWFwIChiYWNr
dGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dhcmQtYnV0dG9uKSkg
KDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhICNbMCAiXDMwMlwzMDFcMzAwXDMwM1wy
MTFcMzA0JVwyMDciIFtjb21tYW5kcCAjPG9iYXJyYXkgbj05ODkxOT4gaGVsbS1jb21wLXJlYWQt
Z2V0LWNhbmRpZGF0ZXMgbmlsICIiXSA2XSBjYXRlZ29yeSB0IGZvbGxvdy1saW5rIHQgYnV0dG9u
IHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9keSIg
bW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9uKSkg
IygiIzxjb21waWxlZC1mdW5jdGlvbiAzMDU+IiAyMCAyMyAoYWN0aW9uIGhlbHAtZm5zLS1kaXNw
bGF5LWZ1bmN0aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0
b24pIChoZWFkZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikg
KG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1k
b3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsg
LiBtb3VzZS1mYWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikg
a2V5bWFwIChiYWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dh
cmQtYnV0dG9uKSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhICNbMCAiXDMwMVwz
MDJcMzAzXDMwMCFcMjAzDQBcMzAwIFwyMDIkAFwzMDRcMzAwIVwyMDMjAFwzMDVcMzAwIVwyMDMj
AHJcMzAwcVwyMTBcMzA2IClcMjAyJABcMzAwXCJcMjA3IiBbI1swICJcMzAyXDMwMVwzMDBcMzAz
XDIxMVwzMDQlXDIwNyIgW2NvbW1hbmRwICM8b2JhcnJheSBuPTk4OTE5PiBoZWxtLWNvbXAtcmVh
ZC1nZXQtY2FuZGlkYXRlcyBuaWwgIiJdIDZdIGhlbG0taW5pdC1jYW5kaWRhdGVzLWluLWJ1ZmZl
ciBnbG9iYWwgZnVuY3Rpb25wIGJ1ZmZlcnAgYnVmZmVyLWxpdmUtcCBidWZmZXItc3RyaW5nXSA0
XSBjYXRlZ29yeSB0IGZvbGxvdy1saW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBS
RVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9u
dC1sb2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9uKSkgIygiaGVsbS1hcHBseS1mdW5jdGlvbnMt
ZnJvbS1zb3VyY2UiIDAgMzIgKGhlbHAtYXJncyAoaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1z
b3VyY2UpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxt
LWNvbXB1dGUtYXR0ci1pbi1zb3VyY2VzIiAwIDI4IChoZWxwLWFyZ3MgKGhlbG0tY29tcHV0ZS1h
dHRyLWluLXNvdXJjZXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJoZWxtLWluaXRpYWwtc2V0dXAiIDAgMTggKGhlbHAtYXJncyAoaGVsbS1pbml0aWFsLXNl
dHVwKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1p
bml0aWFsaXplIiAwIDE1IChoZWxwLWFyZ3MgKGhlbG0taW5pdGlhbGl6ZSkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0taW50ZXJuYWwiIDAgMTMgKGhl
bHAtYXJncyAoaGVsbS1pbnRlcm5hbCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImhlbG0iIDAgNCAoaGVscC1hcmdzIChoZWxtKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbSIgMCA0IChoZWxwLWFyZ3MgKGhlbG0p
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLU0teC1y
ZWFkLWV4dGVuZGVkLWNvbW1hbmQiIDAgMzAgKGhlbHAtYXJncyAoaGVsbS1NLXgtcmVhZC1leHRl
bmRlZC1jb21tYW5kKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiaGVsbS1NLXgiIDAgOCAoaGVscC1hcmdzIChoZWxtLU0teCkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZ1bmNhbGwtaW50ZXJhY3RpdmVseSIgMCAyMSAo
aGVscC1hcmdzIChmdW5jYWxsLWludGVyYWN0aXZlbHkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJjb21tYW5kLWV4ZWN1dGUiIDAgMTUgKGhlbHAtYXJncyAo
Y29tbWFuZC1leGVjdXRlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIm5pbCIgIm5pbCJdIDI2IFsjKCJoZWxtLWluaXQtY2FuZGlkYXRlcy1pbi1idWZmZXIiIDAg
MzAgKGhlbHAtYXJncyAoaGVsbS1pbml0LWNhbmRpZGF0ZXMtaW4tYnVmZmVyKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiIzxjb21waWxlZC1mdW5jdGlvbiAz
MDU+IiAyMCAyMyAoYWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0aW9uIGtleW1hcCAoa2V5
bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChoZWFkZXItbGluZSBrZXltYXAg
KHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikp
IChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3Vz
ZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsgLiBtb3VzZS1mYWNlKSAobW91c2UtMiAu
IHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5bWFwIChiYWNrdGFiIC4gYmFja3dh
cmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dhcmQtYnV0dG9uKSkgKDkgLiBmb3J3YXJk
LWJ1dHRvbikpIGJ1dHRvbi1kYXRhICNbMCAiXDMwMVwzMDJcMzAzXDMwMCFcMjAzDQBcMzAwIFwy
MDIkAFwzMDRcMzAwIVwyMDMjAFwzMDVcMzAwIVwyMDMjAHJcMzAwcVwyMTBcMzA2IClcMjAyJABc
MzAwXCJcMjA3IiBbI1swICJcMzAyXDMwMVwzMDBcMzAzXDIxMVwzMDQlXDIwNyIgW2NvbW1hbmRw
ICM8b2JhcnJheSBuPTk4OTE5PiBoZWxtLWNvbXAtcmVhZC1nZXQtY2FuZGlkYXRlcyBuaWwgIiJd
IDZdIGhlbG0taW5pdC1jYW5kaWRhdGVzLWluLWJ1ZmZlciBnbG9iYWwgZnVuY3Rpb25wIGJ1ZmZl
cnAgYnVmZmVyLWxpdmUtcCBidWZmZXItc3RyaW5nXSA0XSBjYXRlZ29yeSB0IGZvbGxvdy1saW5r
IHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9u
J3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2Ug
YnV0dG9uKSkgIygiaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UiIDAgMzIgKGhlbHAt
YXJncyAoaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNvbXB1dGUtYXR0ci1pbi1zb3VyY2Vz
IiAwIDI4IChoZWxwLWFyZ3MgKGhlbG0tY29tcHV0ZS1hdHRyLWluLXNvdXJjZXMpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWluaXRpYWwtc2V0dXAi
IDAgMTggKGhlbHAtYXJncyAoaGVsbS1pbml0aWFsLXNldHVwKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1pbml0aWFsaXplIiAwIDE1IChoZWxwLWFy
Z3MgKGhlbG0taW5pdGlhbGl6ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImhlbG0taW50ZXJuYWwiIDAgMTMgKGhlbHAtYXJncyAoaGVsbS1pbnRlcm5hbCkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0iIDAgNCAo
aGVscC1hcmdzIChoZWxtKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiaGVsbSIgMCA0IChoZWxwLWFyZ3MgKGhlbG0pIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLU0teC1yZWFkLWV4dGVuZGVkLWNvbW1hbmQiIDAg
MzAgKGhlbHAtYXJncyAoaGVsbS1NLXgtcmVhZC1leHRlbmRlZC1jb21tYW5kKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1NLXgiIDAgOCAoaGVscC1h
cmdzIChoZWxtLU0teCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImZ1bmNhbGwtaW50ZXJhY3RpdmVseSIgMCAyMSAoaGVscC1hcmdzIChmdW5jYWxsLWludGVy
YWN0aXZlbHkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJj
b21tYW5kLWV4ZWN1dGUiIDAgMTUgKGhlbHAtYXJncyAoY29tbWFuZC1leGVjdXRlKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIm5pbCIgIm5pbCIgIm5pbCJdIDQg
WyMoIndpbmRvdy0tbWF5YmUtcmFpc2UtZnJhbWUiIDAgMjUgKGhlbHAtYXJncyAod2luZG93LS1t
YXliZS1yYWlzZS1mcmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImRpc3BsYXktYnVmZmVyLXBvcC11cC13aW5kb3ciIDAgMjggKGhlbHAtYXJncyAoZGlz
cGxheS1idWZmZXItcG9wLXVwLXdpbmRvdykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoImRpc3BsYXktYnVmZmVyLS1tYXliZS1wb3AtdXAtd2luZG93IiAwIDM1
IChoZWxwLWFyZ3MgKGRpc3BsYXktYnVmZmVyLS1tYXliZS1wb3AtdXAtd2luZG93KSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZGlzcGxheS1idWZmZXItLW1h
eWJlLXBvcC11cC1mcmFtZS1vci13aW5kb3ciIDAgNDQgKGhlbHAtYXJncyAoZGlzcGxheS1idWZm
ZXItLW1heWJlLXBvcC11cC1mcmFtZS1vci13aW5kb3cpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJkaXNwbGF5LWJ1ZmZlciIgMCAxNCAoaGVscC1hcmdzIChk
aXNwbGF5LWJ1ZmZlcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImhlbG0tZGVmYXVsdC1kaXNwbGF5LWJ1ZmZlciIgMCAyNyAoaGVscC1hcmdzIChoZWxtLWRl
ZmF1bHQtZGlzcGxheS1idWZmZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJoZWxtLWRpc3BsYXktYnVmZmVyIiAwIDE5IChoZWxwLWFyZ3MgKGhlbG0tZGlz
cGxheS1idWZmZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJoZWxtLWludGVybmFsIiAwIDEzIChoZWxwLWFyZ3MgKGhlbG0taW50ZXJuYWwpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtIiAwIDQgKGhlbHAtYXJn
cyAoaGVsbSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhl
bG0iIDAgNCAoaGVscC1hcmdzIChoZWxtKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiaGVsbS1NLXgtcmVhZC1leHRlbmRlZC1jb21tYW5kIiAwIDMwIChoZWxw
LWFyZ3MgKGhlbG0tTS14LXJlYWQtZXh0ZW5kZWQtY29tbWFuZCkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14IiAwIDggKGhlbHAtYXJncyAoaGVs
bS1NLXgpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmdW5j
YWxsLWludGVyYWN0aXZlbHkiIDAgMjEgKGhlbHAtYXJncyAoZnVuY2FsbC1pbnRlcmFjdGl2ZWx5
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiY29tbWFuZC1l
eGVjdXRlIiAwIDE1IChoZWxwLWFyZ3MgKGNvbW1hbmQtZXhlY3V0ZSkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICJuaWwiICJuaWwiXSAzIFsjKCJoZWxtLWNhbmRp
ZGF0ZS1idWZmZXIiIDAgMjEgKGhlbHAtYXJncyAoaGVsbS1jYW5kaWRhdGUtYnVmZmVyKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1tYWtlLXNlcGFy
YXRvciIgMCAxOSAoaGVscC1hcmdzIChoZWxtLW1ha2Utc2VwYXJhdG9yKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1NLXgtdHJhbnNmb3JtZXItMSIg
MCAyMiAoaGVscC1hcmdzIChoZWxtLU0teC10cmFuc2Zvcm1lci0xKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1NLXgtdHJhbnNmb3JtZXIiIDAgMjAg
KGhlbHAtYXJncyAoaGVsbS1NLXgtdHJhbnNmb3JtZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWFwcGx5LWZ1bmN0aW9ucy1mcm9tLXNvdXJjZSIg
MCAzMiAoaGVscC1hcmdzIChoZWxtLWFwcGx5LWZ1bmN0aW9ucy1mcm9tLXNvdXJjZSkgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tcHJvY2Vzcy1maWx0
ZXJlZC1jYW5kaWRhdGUtdHJhbnNmb3JtZXIiIDAgNDMgKGhlbHAtYXJncyAoaGVsbS1wcm9jZXNz
LWZpbHRlcmVkLWNhbmRpZGF0ZS10cmFuc2Zvcm1lcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tY29tcHV0ZS1tYXRjaGVzIiAwIDIwIChoZWxwLWFy
Z3MgKGhlbG0tY29tcHV0ZS1tYXRjaGVzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiaGVsbS0tY29sbGVjdC1tYXRjaGVzIiAwIDIxIChoZWxwLWFyZ3MgKGhl
bG0tLWNvbGxlY3QtbWF0Y2hlcykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImhlbG0tdXBkYXRlIiAwIDExIChoZWxwLWFyZ3MgKGhlbG0tdXBkYXRlKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1yZWFkLWZyb20t
bWluaWJ1ZmZlciIgMCAyNSAoaGVscC1hcmdzIChoZWxtLXJlYWQtZnJvbS1taW5pYnVmZmVyKSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1pbnRlcm5h
bCIgMCAxMyAoaGVscC1hcmdzIChoZWxtLWludGVybmFsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbSIgMCA0IChoZWxwLWFyZ3MgKGhlbG0pIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtIiAwIDQgKGhlbHAt
YXJncyAoaGVsbSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
ImhlbG0tTS14LXJlYWQtZXh0ZW5kZWQtY29tbWFuZCIgMCAzMCAoaGVscC1hcmdzIChoZWxtLU0t
eC1yZWFkLWV4dGVuZGVkLWNvbW1hbmQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJoZWxtLU0teCIgMCA4IChoZWxwLWFyZ3MgKGhlbG0tTS14KSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZnVuY2FsbC1pbnRlcmFjdGl2
ZWx5IiAwIDIxIChoZWxwLWFyZ3MgKGZ1bmNhbGwtaW50ZXJhY3RpdmVseSkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpXSAzIFsjKCIjPGNvbXBpbGVkLWZ1bmN0aW9u
IEUzNT4iIDIwIDIzIChhY3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChr
ZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1h
cCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9u
KSkgKG1vZGUtbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1v
dXNlLTIgLiBwdXNoLWJ1dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0y
IC4gcHVzaC1idXR0b24pICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNr
d2FyZC1idXR0b24pICgyNyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndh
cmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEgI1swICJcMzAxXDMwMCFcMjA1CQBcMzAyXDMwMCFcMjA3
IiBbIzxraWxsZWQgYnVmZmVyPiBidWZmZXItbmFtZSBraWxsLWJ1ZmZlcl0gMl0gY2F0ZWdvcnkg
dCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5
IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1vdXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNl
IGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMoInN1YnN0aXR1dGUtY29tbWFuZC1rZXlzIiAwIDIzICho
ZWxwLWFyZ3MgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1NLXgtdHJhbnNmb3JtZXItMSIgMCAyMiAoaGVs
cC1hcmdzIChoZWxtLU0teC10cmFuc2Zvcm1lci0xKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1NLXgtdHJhbnNmb3JtZXIiIDAgMjAgKGhlbHAtYXJn
cyAoaGVsbS1NLXgtdHJhbnNmb3JtZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJoZWxtLWFwcGx5LWZ1bmN0aW9ucy1mcm9tLXNvdXJjZSIgMCAzMiAoaGVs
cC1hcmdzIChoZWxtLWFwcGx5LWZ1bmN0aW9ucy1mcm9tLXNvdXJjZSkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tcHJvY2Vzcy1maWx0ZXJlZC1jYW5k
aWRhdGUtdHJhbnNmb3JtZXIiIDAgNDMgKGhlbHAtYXJncyAoaGVsbS1wcm9jZXNzLWZpbHRlcmVk
LWNhbmRpZGF0ZS10cmFuc2Zvcm1lcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImhlbG0tY29tcHV0ZS1tYXRjaGVzIiAwIDIwIChoZWxwLWFyZ3MgKGhlbG0t
Y29tcHV0ZS1tYXRjaGVzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiaGVsbS0tY29sbGVjdC1tYXRjaGVzIiAwIDIxIChoZWxwLWFyZ3MgKGhlbG0tLWNvbGxl
Y3QtbWF0Y2hlcykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
ImhlbG0tdXBkYXRlIiAwIDExIChoZWxwLWFyZ3MgKGhlbG0tdXBkYXRlKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1yZWFkLWZyb20tbWluaWJ1ZmZl
ciIgMCAyNSAoaGVscC1hcmdzIChoZWxtLXJlYWQtZnJvbS1taW5pYnVmZmVyKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1pbnRlcm5hbCIgMCAxMyAo
aGVscC1hcmdzIChoZWxtLWludGVybmFsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiaGVsbSIgMCA0IChoZWxwLWFyZ3MgKGhlbG0pIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtIiAwIDQgKGhlbHAtYXJncyAoaGVs
bSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14
LXJlYWQtZXh0ZW5kZWQtY29tbWFuZCIgMCAzMCAoaGVscC1hcmdzIChoZWxtLU0teC1yZWFkLWV4
dGVuZGVkLWNvbW1hbmQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJoZWxtLU0teCIgMCA4IChoZWxwLWFyZ3MgKGhlbG0tTS14KSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IiAwIDIx
IChoZWxwLWFyZ3MgKGZ1bmNhbGwtaW50ZXJhY3RpdmVseSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpXSA0IFsjKCJ3aGVyZS1pcy1pbnRlcm5hbCIgMCAxNyAoaGVs
cC1hcmdzICh3aGVyZS1pcy1pbnRlcm5hbCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoInN1YnN0aXR1dGUtY29tbWFuZC1rZXlzIiAwIDIzIChoZWxwLWFyZ3Mg
KHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiaGVsbS1NLXgtdHJhbnNmb3JtZXItMSIgMCAyMiAoaGVscC1hcmdzICho
ZWxtLU0teC10cmFuc2Zvcm1lci0xKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygiaGVsbS1NLXgtdHJhbnNmb3JtZXIiIDAgMjAgKGhlbHAtYXJncyAoaGVsbS1N
LXgtdHJhbnNmb3JtZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJoZWxtLWFwcGx5LWZ1bmN0aW9ucy1mcm9tLXNvdXJjZSIgMCAzMiAoaGVscC1hcmdzICho
ZWxtLWFwcGx5LWZ1bmN0aW9ucy1mcm9tLXNvdXJjZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tcHJvY2Vzcy1maWx0ZXJlZC1jYW5kaWRhdGUtdHJh
bnNmb3JtZXIiIDAgNDMgKGhlbHAtYXJncyAoaGVsbS1wcm9jZXNzLWZpbHRlcmVkLWNhbmRpZGF0
ZS10cmFuc2Zvcm1lcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImhlbG0tY29tcHV0ZS1tYXRjaGVzIiAwIDIwIChoZWxwLWFyZ3MgKGhlbG0tY29tcHV0ZS1t
YXRjaGVzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVs
bS0tY29sbGVjdC1tYXRjaGVzIiAwIDIxIChoZWxwLWFyZ3MgKGhlbG0tLWNvbGxlY3QtbWF0Y2hl
cykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tdXBk
YXRlIiAwIDExIChoZWxwLWFyZ3MgKGhlbG0tdXBkYXRlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1yZWFkLWZyb20tbWluaWJ1ZmZlciIgMCAyNSAo
aGVscC1hcmdzIChoZWxtLXJlYWQtZnJvbS1taW5pYnVmZmVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1pbnRlcm5hbCIgMCAxMyAoaGVscC1hcmdz
IChoZWxtLWludGVybmFsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiaGVsbSIgMCA0IChoZWxwLWFyZ3MgKGhlbG0pIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtIiAwIDQgKGhlbHAtYXJncyAoaGVsbSkgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14LXJlYWQtZXh0
ZW5kZWQtY29tbWFuZCIgMCAzMCAoaGVscC1hcmdzIChoZWxtLU0teC1yZWFkLWV4dGVuZGVkLWNv
bW1hbmQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxt
LU0teCIgMCA4IChoZWxwLWFyZ3MgKGhlbG0tTS14KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IiAwIDIxIChoZWxwLWFy
Z3MgKGZ1bmNhbGwtaW50ZXJhY3RpdmVseSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpXSA3IFsjKCJpbnRlcm4iIDAgNiAoaGVscC1hcmdzIChpbnRlcm4pIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJzdWJzdGl0dXRlLWNvbW1h
bmQta2V5cyIgMCAyMyAoaGVscC1hcmdzIChzdWJzdGl0dXRlLWNvbW1hbmQta2V5cykgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14LXRyYW5zZm9y
bWVyLTEiIDAgMjIgKGhlbHAtYXJncyAoaGVsbS1NLXgtdHJhbnNmb3JtZXItMSkgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14LXRyYW5zZm9ybWVy
IiAwIDIwIChoZWxwLWFyZ3MgKGhlbG0tTS14LXRyYW5zZm9ybWVyKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1z
b3VyY2UiIDAgMzIgKGhlbHAtYXJncyAoaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2Up
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLXByb2Nl
c3MtZmlsdGVyZWQtY2FuZGlkYXRlLXRyYW5zZm9ybWVyIiAwIDQzIChoZWxwLWFyZ3MgKGhlbG0t
cHJvY2Vzcy1maWx0ZXJlZC1jYW5kaWRhdGUtdHJhbnNmb3JtZXIpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNvbXB1dGUtbWF0Y2hlcyIgMCAyMCAo
aGVscC1hcmdzIChoZWxtLWNvbXB1dGUtbWF0Y2hlcykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tLWNvbGxlY3QtbWF0Y2hlcyIgMCAyMSAoaGVscC1h
cmdzIChoZWxtLS1jb2xsZWN0LW1hdGNoZXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJoZWxtLXVwZGF0ZSIgMCAxMSAoaGVscC1hcmdzIChoZWxtLXVwZGF0
ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tcmVh
ZC1mcm9tLW1pbmlidWZmZXIiIDAgMjUgKGhlbHAtYXJncyAoaGVsbS1yZWFkLWZyb20tbWluaWJ1
ZmZlcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0t
aW50ZXJuYWwiIDAgMTMgKGhlbHAtYXJncyAoaGVsbS1pbnRlcm5hbCkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0iIDAgNCAoaGVscC1hcmdzIChoZWxt
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbSIgMCA0
IChoZWxwLWFyZ3MgKGhlbG0pIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJoZWxtLU0teC1yZWFkLWV4dGVuZGVkLWNvbW1hbmQiIDAgMzAgKGhlbHAtYXJncyAo
aGVsbS1NLXgtcmVhZC1leHRlbmRlZC1jb21tYW5kKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1NLXgiIDAgOCAoaGVscC1hcmdzIChoZWxtLU0teCkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImZ1bmNhbGwtaW50
ZXJhY3RpdmVseSIgMCAyMSAoaGVscC1hcmdzIChmdW5jYWxsLWludGVyYWN0aXZlbHkpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gMyBbIygic3Vic3RpdHV0ZS1j
b21tYW5kLWtleXMiIDAgMjMgKGhlbHAtYXJncyAoc3Vic3RpdHV0ZS1jb21tYW5kLWtleXMpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLU0teC10cmFu
c2Zvcm1lci0xIiAwIDIyIChoZWxwLWFyZ3MgKGhlbG0tTS14LXRyYW5zZm9ybWVyLTEpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLU0teC10cmFuc2Zv
cm1lciIgMCAyMCAoaGVscC1hcmdzIChoZWxtLU0teC10cmFuc2Zvcm1lcikgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tYXBwbHktZnVuY3Rpb25zLWZy
b20tc291cmNlIiAwIDMyIChoZWxwLWFyZ3MgKGhlbG0tYXBwbHktZnVuY3Rpb25zLWZyb20tc291
cmNlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1w
cm9jZXNzLWZpbHRlcmVkLWNhbmRpZGF0ZS10cmFuc2Zvcm1lciIgMCA0MyAoaGVscC1hcmdzICho
ZWxtLXByb2Nlc3MtZmlsdGVyZWQtY2FuZGlkYXRlLXRyYW5zZm9ybWVyKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1jb21wdXRlLW1hdGNoZXMiIDAg
MjAgKGhlbHAtYXJncyAoaGVsbS1jb21wdXRlLW1hdGNoZXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLS1jb2xsZWN0LW1hdGNoZXMiIDAgMjEgKGhl
bHAtYXJncyAoaGVsbS0tY29sbGVjdC1tYXRjaGVzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS11cGRhdGUiIDAgMTEgKGhlbHAtYXJncyAoaGVsbS11
cGRhdGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxt
LXJlYWQtZnJvbS1taW5pYnVmZmVyIiAwIDI1IChoZWxwLWFyZ3MgKGhlbG0tcmVhZC1mcm9tLW1p
bmlidWZmZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJo
ZWxtLWludGVybmFsIiAwIDEzIChoZWxwLWFyZ3MgKGhlbG0taW50ZXJuYWwpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtIiAwIDQgKGhlbHAtYXJncyAo
aGVsbSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0i
IDAgNCAoaGVscC1hcmdzIChoZWxtKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygiaGVsbS1NLXgtcmVhZC1leHRlbmRlZC1jb21tYW5kIiAwIDMwIChoZWxwLWFy
Z3MgKGhlbG0tTS14LXJlYWQtZXh0ZW5kZWQtY29tbWFuZCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14IiAwIDggKGhlbHAtYXJncyAoaGVsbS1N
LXgpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmdW5jYWxs
LWludGVyYWN0aXZlbHkiIDAgMjEgKGhlbHAtYXJncyAoZnVuY2FsbC1pbnRlcmFjdGl2ZWx5KSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiY29tbWFuZC1leGVj
dXRlIiAwIDE1IChoZWxwLWFyZ3MgKGNvbW1hbmQtZXhlY3V0ZSkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpXSAzIFsjKCJzdHJpbmctd2lkdGgiIDAgMTIgKGhlbHAt
YXJncyAoc3RyaW5nLXdpZHRoKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygidHJ1bmNhdGUtc3RyaW5nLXRvLXdpZHRoIiAwIDI0IChoZWxwLWFyZ3MgKHRydW5j
YXRlLXN0cmluZy10by13aWR0aCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImhlbG0tZ2V0LWZpcnN0LWxpbmUtZG9jdW1lbnRhdGlvbiIgMCAzMyAoaGVscC1h
cmdzIChoZWxtLWdldC1maXJzdC1saW5lLWRvY3VtZW50YXRpb24pIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLU0teC10cmFuc2Zvcm1lci0xIiAwIDIy
IChoZWxwLWFyZ3MgKGhlbG0tTS14LXRyYW5zZm9ybWVyLTEpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLU0teC10cmFuc2Zvcm1lciIgMCAyMCAoaGVs
cC1hcmdzIChoZWxtLU0teC10cmFuc2Zvcm1lcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImhlbG0tYXBwbHktZnVuY3Rpb25zLWZyb20tc291cmNlIiAwIDMy
IChoZWxwLWFyZ3MgKGhlbG0tYXBwbHktZnVuY3Rpb25zLWZyb20tc291cmNlKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1wcm9jZXNzLWZpbHRlcmVk
LWNhbmRpZGF0ZS10cmFuc2Zvcm1lciIgMCA0MyAoaGVscC1hcmdzIChoZWxtLXByb2Nlc3MtZmls
dGVyZWQtY2FuZGlkYXRlLXRyYW5zZm9ybWVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygiaGVsbS1jb21wdXRlLW1hdGNoZXMiIDAgMjAgKGhlbHAtYXJncyAo
aGVsbS1jb21wdXRlLW1hdGNoZXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJoZWxtLS1jb2xsZWN0LW1hdGNoZXMiIDAgMjEgKGhlbHAtYXJncyAoaGVsbS0t
Y29sbGVjdC1tYXRjaGVzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiaGVsbS11cGRhdGUiIDAgMTEgKGhlbHAtYXJncyAoaGVsbS11cGRhdGUpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLXJlYWQtZnJvbS1taW5p
YnVmZmVyIiAwIDI1IChoZWxwLWFyZ3MgKGhlbG0tcmVhZC1mcm9tLW1pbmlidWZmZXIpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWludGVybmFsIiAw
IDEzIChoZWxwLWFyZ3MgKGhlbG0taW50ZXJuYWwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtIiAwIDQgKGhlbHAtYXJncyAoaGVsbSkgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0iIDAgNCAoaGVscC1hcmdz
IChoZWxtKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVs
bS1NLXgtcmVhZC1leHRlbmRlZC1jb21tYW5kIiAwIDMwIChoZWxwLWFyZ3MgKGhlbG0tTS14LXJl
YWQtZXh0ZW5kZWQtY29tbWFuZCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImhlbG0tTS14IiAwIDggKGhlbHAtYXJncyAoaGVsbS1NLXgpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gMyBbIygicmVwbGFjZS1idWZmZXItaW4t
d2luZG93cyIgMCAyNSAoaGVscC1hcmdzIChyZXBsYWNlLWJ1ZmZlci1pbi13aW5kb3dzKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygia2lsbC1idWZmZXIiIDAg
MTEgKGhlbHAtYXJncyAoa2lsbC1idWZmZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIDA5ND4iIDIwIDIzIChhY3Rpb24g
aGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRvdWNoc2NyZWVuLWRv
d24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAu
IHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUtbGluZSBrZXltYXAg
KHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikp
IChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1idXR0b24pICgxMyAu
IHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0b24pICgyNyBrZXlt
YXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9uKSkgYnV0dG9uLWRh
dGEgI1swICJcMzAxXDMwMCFcMjA1CQBcMzAyXDMwMCFcMjA3IiBbIzxraWxsZWQgYnVmZmVyPiBi
dWZmZXItbmFtZSBraWxsLWJ1ZmZlcl0gMl0gY2F0ZWdvcnkgdCBmb2xsb3ctbGluayB0IGJ1dHRv
biB0IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBmdW5jdGlvbidzIGJvZHki
IG1vdXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRvbiBmYWNlIGJ1dHRvbikp
ICMoInN1YnN0aXR1dGUtY29tbWFuZC1rZXlzIiAwIDIzIChoZWxwLWFyZ3MgKHN1YnN0aXR1dGUt
Y29tbWFuZC1rZXlzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiaGVsbS1NLXgtdHJhbnNmb3JtZXItMSIgMCAyMiAoaGVscC1hcmdzIChoZWxtLU0teC10cmFu
c2Zvcm1lci0xKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
aGVsbS1NLXgtdHJhbnNmb3JtZXIiIDAgMjAgKGhlbHAtYXJncyAoaGVsbS1NLXgtdHJhbnNmb3Jt
ZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWFw
cGx5LWZ1bmN0aW9ucy1mcm9tLXNvdXJjZSIgMCAzMiAoaGVscC1hcmdzIChoZWxtLWFwcGx5LWZ1
bmN0aW9ucy1mcm9tLXNvdXJjZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImhlbG0tcHJvY2Vzcy1maWx0ZXJlZC1jYW5kaWRhdGUtdHJhbnNmb3JtZXIiIDAg
NDMgKGhlbHAtYXJncyAoaGVsbS1wcm9jZXNzLWZpbHRlcmVkLWNhbmRpZGF0ZS10cmFuc2Zvcm1l
cikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tY29t
cHV0ZS1tYXRjaGVzIiAwIDIwIChoZWxwLWFyZ3MgKGhlbG0tY29tcHV0ZS1tYXRjaGVzKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS0tY29sbGVjdC1t
YXRjaGVzIiAwIDIxIChoZWxwLWFyZ3MgKGhlbG0tLWNvbGxlY3QtbWF0Y2hlcykgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tdXBkYXRlIiAwIDExICho
ZWxwLWFyZ3MgKGhlbG0tdXBkYXRlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygiaGVsbS1yZWFkLWZyb20tbWluaWJ1ZmZlciIgMCAyNSAoaGVscC1hcmdzICho
ZWxtLXJlYWQtZnJvbS1taW5pYnVmZmVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiaGVsbS1pbnRlcm5hbCIgMCAxMyAoaGVscC1hcmdzIChoZWxtLWludGVy
bmFsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbSIg
MCA0IChoZWxwLWFyZ3MgKGhlbG0pIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJoZWxtIiAwIDQgKGhlbHAtYXJncyAoaGVsbSkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14LXJlYWQtZXh0ZW5kZWQtY29tbWFu
ZCIgMCAzMCAoaGVscC1hcmdzIChoZWxtLU0teC1yZWFkLWV4dGVuZGVkLWNvbW1hbmQpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gNCBbIygiaW5zZXJ0IiAwIDYg
KGhlbHAtYXJncyAoaW5zZXJ0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygiaGVsbS1pbnNlcnQtbWF0Y2giIDAgMTcgKGhlbHAtYXJncyAoaGVsbS1pbnNlcnQt
bWF0Y2gpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxt
LXJlbmRlci1zb3VyY2UiIDAgMTggKGhlbHAtYXJncyAoaGVsbS1yZW5kZXItc291cmNlKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS11cGRhdGUiIDAg
MTEgKGhlbHAtYXJncyAoaGVsbS11cGRhdGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJoZWxtLXJlYWQtZnJvbS1taW5pYnVmZmVyIiAwIDI1IChoZWxwLWFy
Z3MgKGhlbG0tcmVhZC1mcm9tLW1pbmlidWZmZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWludGVybmFsIiAwIDEzIChoZWxwLWFyZ3MgKGhlbG0t
aW50ZXJuYWwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJo
ZWxtIiAwIDQgKGhlbHAtYXJncyAoaGVsbSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoImhlbG0iIDAgNCAoaGVscC1hcmdzIChoZWxtKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1NLXgtcmVhZC1leHRlbmRlZC1j
b21tYW5kIiAwIDMwIChoZWxwLWFyZ3MgKGhlbG0tTS14LXJlYWQtZXh0ZW5kZWQtY29tbWFuZCkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14IiAw
IDggKGhlbHAtYXJncyAoaGVsbS1NLXgpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJmdW5jYWxsLWludGVyYWN0aXZlbHkiIDAgMjEgKGhlbHAtYXJncyAoZnVu
Y2FsbC1pbnRlcmFjdGl2ZWx5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygiY29tbWFuZC1leGVjdXRlIiAwIDE1IChoZWxwLWFyZ3MgKGNvbW1hbmQtZXhlY3V0
ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICJuaWwiICJuaWwi
ICJuaWwiICJuaWwiXSAzIFsjKCJoZWxtLXJlYWQtZnJvbS1taW5pYnVmZmVyIiAwIDI1IChoZWxw
LWFyZ3MgKGhlbG0tcmVhZC1mcm9tLW1pbmlidWZmZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWludGVybmFsIiAwIDEzIChoZWxwLWFyZ3MgKGhl
bG0taW50ZXJuYWwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJoZWxtIiAwIDQgKGhlbHAtYXJncyAoaGVsbSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImhlbG0iIDAgNCAoaGVscC1hcmdzIChoZWxtKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1NLXgtcmVhZC1leHRlbmRl
ZC1jb21tYW5kIiAwIDMwIChoZWxwLWFyZ3MgKGhlbG0tTS14LXJlYWQtZXh0ZW5kZWQtY29tbWFu
ZCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14
IiAwIDggKGhlbHAtYXJncyAoaGVsbS1NLXgpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJmdW5jYWxsLWludGVyYWN0aXZlbHkiIDAgMjEgKGhlbHAtYXJncyAo
ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygiY29tbWFuZC1leGVjdXRlIiAwIDE1IChoZWxwLWFyZ3MgKGNvbW1hbmQtZXhl
Y3V0ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICJuaWwiICJu
aWwiICJuaWwiICJuaWwiICJuaWwiICJuaWwiICJuaWwiICJuaWwiXSAxMyBbInJlZGlzcGxheV9p
bnRlcm5hbCAoQyBmdW5jdGlvbikiICMoImhlbG0tcmVhZC1mcm9tLW1pbmlidWZmZXIiIDAgMjUg
KGhlbHAtYXJncyAoaGVsbS1yZWFkLWZyb20tbWluaWJ1ZmZlcikgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0taW50ZXJuYWwiIDAgMTMgKGhlbHAtYXJn
cyAoaGVsbS1pbnRlcm5hbCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImhlbG0iIDAgNCAoaGVscC1hcmdzIChoZWxtKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbSIgMCA0IChoZWxwLWFyZ3MgKGhlbG0pIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLU0teC1yZWFkLWV4
dGVuZGVkLWNvbW1hbmQiIDAgMzAgKGhlbHAtYXJncyAoaGVsbS1NLXgtcmVhZC1leHRlbmRlZC1j
b21tYW5kKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVs
bS1NLXgiIDAgOCAoaGVscC1hcmdzIChoZWxtLU0teCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImZ1bmNhbGwtaW50ZXJhY3RpdmVseSIgMCAyMSAoaGVscC1h
cmdzIChmdW5jYWxsLWludGVyYWN0aXZlbHkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJjb21tYW5kLWV4ZWN1dGUiIDAgMTUgKGhlbHAtYXJncyAoY29tbWFu
ZC1leGVjdXRlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIm5p
bCIgIm5pbCIgIm5pbCIgIm5pbCIgIm5pbCIgIm5pbCIgIm5pbCJdIDg2IFsjKCJyZS1zZWFyY2gt
Zm9yd2FyZCIgMCAxNyAoaGVscC1hcmdzIChyZS1zZWFyY2gtZm9yd2FyZCkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tY2FuZGlkYXRlcy1pbi1idWZm
ZXItc2VhcmNoLWRlZmF1bHQtZm4iIDAgNDMgKGhlbHAtYXJncyAoaGVsbS1jYW5kaWRhdGVzLWlu
LWJ1ZmZlci1zZWFyY2gtZGVmYXVsdC1mbikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoIiM8Y29tcGlsZWQtZnVuY3Rpb24gRERFPiIgMjAgMjMgKGFjdGlvbiBo
ZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hzY3JlZW4tZG93
biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4g
cHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtleW1hcCAo
dG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkg
KGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikgKDEzIC4g
cHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3IGtleW1h
cCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0b24tZGF0
YSAjWzAgIlwzMTBcMzExXDMxMlwiXDMxM1wzMDFcMjM2XDMxNCAeH1wzMTVcMzE2XDMwNVwzMTdc
MjExAjpcMjAzJgECQFwyNjICXDMwM2JcMjEwXDMyMDEnAFwzMjFcMzA3ITBcMjAyKwBcMjEwXDIw
MjEAXDIwMzEAXDMxNnlcMjEwXDMxN1wyMTFcMjExXDIxMVwyMTEGBlwzMDchXDIxMVwyNjIGXDIw
MxIBBDpcMjAzTABcMzE2eVwzMTVVXDIwMk4AbT9cMjAzEgEGCVwzMDRXXDIwMxIBXDMyMlwzMDYG
BlwyMDNqAAYGPFwyMDNqAAYGXDIwMm8AXDMyMyBcMzI0IERcIlwyNjIEXDMwMlwyMDNcMjExAFwz
MjVcMzE1XDMyNgYGI1wyMDRcMjExAFwzMjcEXDMyNlwzMDIGByEjXDI2MgRcMzMwBAYNXCJcMjYy
AwYKXDIwM1wyNDAAAlwyMDNcMjQwAAIGCVVcMjA0XDI0NAACXDIwNA0BA1wzMzFcMjMwXDIwNA0B
XDMwMlwyMDRcMjYzAAQ6XDIwM1wyNzMAXDMzMgRcMzA3XDMwMCNcMjAzDQFcMzMzBAYKBg4jXDIx
MFwzMzRcMzM1XDMwMVwiXDIxMVwyMDMCAQQ6XDIwM1wzMjUABEFcMjAyXDMyNgAEATxcMjAzXDM3
NABcMzM2AiFcMjA0XDM3NAABXDMxNwE6XDIwM1wzNjcAXDIxMFwyMTFAXDIxMQMhXDI2MggBQVwy
NjICXDIwMlwzNDMAXDI2NgRcMjAyAwEBASFcMjYyBlwyMTBcMjEwBglUXDI2MgoDAkJcMjYyAlwy
MTBcMzE3XDIwMjYAXDIxMFwyNjZcMjAzXDIzN1wyMzcBXDI0NFwyNjIBA1RcMjYyBAJBXDI2MgNc
MjAyEABcMjExXDIzNylcMjA3IiBbbmlsICgobmFtZSAuICJFbWFjcyBDb21tYW5kcyBoaXN0b3J5
IikgKGluaXQgI1swICJcMzAxXDMwMlwzMDNcMzAwIVwyMDMNAFwzMDAgXDIwMiQAXDMwNFwzMDAh
XDIwMyMAXDMwNVwzMDAhXDIwMyMAclwzMDBxXDIxMFwzMDYgKVwyMDIkAFwzMDBcIlwyMDciIFsj
WzAgIlwzMDJcMzAxXDIwNgYAXDMwM1wzMDBcMzA0XDIxMVwzMDUlXDIwNyIgW2NvbW1hbmRwIG5p
bCBoZWxtLWNvbXAtcmVhZC1nZXQtY2FuZGlkYXRlcyBleHRlbmRlZC1jb21tYW5kLWhpc3Rvcnkg
bmlsICIiXSA2XSBoZWxtLWluaXQtY2FuZGlkYXRlcy1pbi1idWZmZXIgZ2xvYmFsIGZ1bmN0aW9u
cCBidWZmZXJwIGJ1ZmZlci1saXZlLXAgYnVmZmVyLXN0cmluZ10gNF0pIChjYW5kaWRhdGVzIC4g
aGVsbS1jYW5kaWRhdGVzLWluLWJ1ZmZlcikgKGNsZWFudXAgLiBoZWxtLU0teC0tdW53aW5kLWZv
cm1zKSAoa2V5bWFwIGtleW1hcCAoa2V5bWFwICgxMyAuIGhlbG0tY29uZmlybS1hbmQtZXhpdC1t
aW5pYnVmZmVyKSkga2V5bWFwICgyOSAuIGhlbG0tTS14LXRvZ2dsZS1zaG9ydC1kb2MpICgyMSAu
IGhlbG0tTS14LXVuaXZlcnNhbC1hcmd1bWVudCkga2V5bWFwICgyNyBrZXltYXAgKDEzIC4gaGVs
bS1jci1lbXB0eS1zdHJpbmcpKSAoQy1yZXR1cm4gLiBoZWxtLWNyLWVtcHR5LXN0cmluZykga2V5
bWFwICgyMSAuIGhlbG0tZXhlY3V0ZS1wZXJzaXN0ZW50LWFjdGlvbikgKGYxMiAuICNbMCAiXDMw
MVwzMDAhXDIwNyIgWzExIGhlbG0tc2VsZWN0LW50aC1hY3Rpb25dIDIgbmlsIG5pbF0pIChmMTEg
LiAjWzAgIlwzMDFcMzAwIVwyMDciIFsxMCBoZWxtLXNlbGVjdC1udGgtYWN0aW9uXSAyIG5pbCBu
aWxdKSAoZjEwIC4gI1swICJcMzAxXDMwMCFcMjA3IiBbOSBoZWxtLXNlbGVjdC1udGgtYWN0aW9u
XSAyIG5pbCBuaWxdKSAoZjkgLiAjWzAgIlwzMDFcMzAwIVwyMDciIFs4IGhlbG0tc2VsZWN0LW50
aC1hY3Rpb25dIDIgbmlsIG5pbF0pIChmOCAuICNbMCAiXDMwMVwzMDAhXDIwNyIgWzcgaGVsbS1z
ZWxlY3QtbnRoLWFjdGlvbl0gMiBuaWwgbmlsXSkgKGY3IC4gI1swICJcMzAxXDMwMCFcMjA3IiBb
NiBoZWxtLXNlbGVjdC1udGgtYWN0aW9uXSAyIG5pbCBuaWxdKSAoZjYgLiAjWzAgIlwzMDFcMzAw
IVwyMDciIFs1IGhlbG0tc2VsZWN0LW50aC1hY3Rpb25dIDIgbmlsIG5pbF0pIChmNSAuICNbMCAi
XDMwMVwzMDAhXDIwNyIgWzQgaGVsbS1zZWxlY3QtbnRoLWFjdGlvbl0gMiBuaWwgbmlsXSkgKGY0
IC4gI1swICJcMzAxXDMwMCFcMjA3IiBbMyBoZWxtLXNlbGVjdC1udGgtYWN0aW9uXSAyIG5pbCBu
aWxdKSAoZjMgLiAjWzAgIlwzMDFcMzAwIVwyMDciIFsyIGhlbG0tc2VsZWN0LW50aC1hY3Rpb25d
IDIgbmlsIG5pbF0pIChmMiAuICNbMCAiXDMwMVwzMDAhXDIwNyIgWzEgaGVsbS1zZWxlY3QtbnRo
LWFjdGlvbl0gMiBuaWwgbmlsXSkgKG1lbnUtYmFyIGtleW1hcCAoaGVscC1tZW51IGtleW1hcCAo
ZGVzY3JpYmUga2V5bWFwIChkZXNjcmliZS1tb2RlIC4gaGVsbS1oZWxwKSkpKSAoaGVscCBrZXlt
YXAgKDEwOSAuIGhlbG0taGVscCkpICgyMyAuIGhlbG0taGVsbS15YW5rLXRleHQtYXQtcG9pbnQt
d2l0aC1zdWJrZXlzKSAoZjEgLiAjWzAgIlwzMDFcMzAwIVwyMDciIFswIGhlbG0tc2VsZWN0LW50
aC1hY3Rpb25dIDIgbmlsIG5pbF0pICg4IC4gYmFja3dhcmQtZGVsZXRlLWNoYXItdW50YWJpZnkp
ICgyMCAuIGhlbG0tdG9nZ2xlLXJlc3BsaXQtYW5kLXN3YXAtd2luZG93cykgKEMtdGFiIC4gdW5k
ZWZpbmVkKSAoNjcxMDg4OTcgLiBoZWxtLXRvZ2dsZS1zdXNwZW5kLXVwZGF0ZSkgKDI2IC4gaGVs
bS10b2dnbGUtZnVsbC1mcmFtZSkgKDMga2V5bWFwICgzMzU1NDQ1NSAuIHlhbnQvdG9nZ2xlLXJl
ZmlsZS10by10YXNrcykgKDU3IC4gI1swICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wyMDINAFwzMDBU
IVwyMDciIFs4IG5pbCBoZWxtLWV4ZWN1dGUtc2VsZWN0aW9uLWFjdGlvbi1hdC1udGhdIDIgbmls
IG5pbF0pICg1NiAuICNbMCAiXDMwMlwzMDFcMjAzCwBcMzAwVFtcMjAyDQBcMzAwVCFcMjA3IiBb
NyBuaWwgaGVsbS1leGVjdXRlLXNlbGVjdGlvbi1hY3Rpb24tYXQtbnRoXSAyIG5pbCBuaWxdKSAo
NTUgLiAjWzAgIlwzMDJcMzAxXDIwMwsAXDMwMFRbXDIwMg0AXDMwMFQhXDIwNyIgWzYgbmlsIGhl
bG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0LW50aF0gMiBuaWwgbmlsXSkgKDU0IC4gI1sw
ICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wyMDINAFwzMDBUIVwyMDciIFs1IG5pbCBoZWxtLWV4ZWN1
dGUtc2VsZWN0aW9uLWFjdGlvbi1hdC1udGhdIDIgbmlsIG5pbF0pICg1MyAuICNbMCAiXDMwMlwz
MDFcMjAzCwBcMzAwVFtcMjAyDQBcMzAwVCFcMjA3IiBbNCBuaWwgaGVsbS1leGVjdXRlLXNlbGVj
dGlvbi1hY3Rpb24tYXQtbnRoXSAyIG5pbCBuaWxdKSAoNTIgLiAjWzAgIlwzMDJcMzAxXDIwMwsA
XDMwMFRbXDIwMg0AXDMwMFQhXDIwNyIgWzMgbmlsIGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0
aW9uLWF0LW50aF0gMiBuaWwgbmlsXSkgKDUxIC4gI1swICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wy
MDINAFwzMDBUIVwyMDciIFsyIG5pbCBoZWxtLWV4ZWN1dGUtc2VsZWN0aW9uLWFjdGlvbi1hdC1u
dGhdIDIgbmlsIG5pbF0pICg1MCAuICNbMCAiXDMwMlwzMDFcMjAzCwBcMzAwVFtcMjAyDQBcMzAw
VCFcMjA3IiBbMSBuaWwgaGVsbS1leGVjdXRlLXNlbGVjdGlvbi1hY3Rpb24tYXQtbnRoXSAyIG5p
bCBuaWxdKSAoNDkgLiAjWzAgIlwzMDJcMzAxXDIwMwsAXDMwMFRbXDIwMg0AXDMwMFQhXDIwNyIg
WzAgbmlsIGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0LW50aF0gMiBuaWwgbmlsXSkg
KDExMCAuIGhlbG0taGVsbS1ydW4tY3ljbGUtcmVzdW1lLXdpdGgtc3Via2V5cykgKDEwOCAuIGhl
bG0tZGlzcGxheS1saW5lLW51bWJlcnMtbW9kZSkgKDYyIC4gaGVsbS10b2dnbGUtdHJ1bmNhdGUt
bGluZSkgKDIxIC4gaGVsbS1yZWZyZXNoKSAoNiAuIGhlbG0tZm9sbG93LW1vZGUpICg5IC4gaGVs
bS1pbnNlcnQtb3ItY29weSkgKDExIC4gaGVsbS1raWxsLXNlbGVjdGlvbi1hbmQtcXVpdCkgKDI1
IC4gaGVsbS15YW5rLXNlbGVjdGlvbikgKDM3IC4gaGVsbS1leGNoYW5nZS1taW5pYnVmZmVyLWFu
ZC1oZWFkZXItbGluZSkgKDk1IC4gaGVsbS10b2dnbGUtZnVsbC1mcmFtZSkgKDQ1IC4gaGVsbS1z
d2FwLXdpbmRvd3MpKSAoNjcxMDg5ODcgLiBoZWxtLWVubGFyZ2Utd2luZG93KSAoNjcxMDg5ODkg
LiBoZWxtLW5hcnJvdy13aW5kb3cpICgxOCAuIHVuZGVmaW5lZCkgKDE5IC4gdW5kZWZpbmVkKSAo
MjQga2V5bWFwICg1NyAuICNbMCAiXDMwMlwzMDFcMjAzCwBcMzAwVFtcMjAyDQBcMzAwVCFcMjA3
IiBbOCBuZWdhdGl2ZSBoZWxtLWV4ZWN1dGUtc2VsZWN0aW9uLWFjdGlvbi1hdC1udGhdIDIgbmls
IG5pbF0pICg1NiAuICNbMCAiXDMwMlwzMDFcMjAzCwBcMzAwVFtcMjAyDQBcMzAwVCFcMjA3IiBb
NyBuZWdhdGl2ZSBoZWxtLWV4ZWN1dGUtc2VsZWN0aW9uLWFjdGlvbi1hdC1udGhdIDIgbmlsIG5p
bF0pICg1NSAuICNbMCAiXDMwMlwzMDFcMjAzCwBcMzAwVFtcMjAyDQBcMzAwVCFcMjA3IiBbNiBu
ZWdhdGl2ZSBoZWxtLWV4ZWN1dGUtc2VsZWN0aW9uLWFjdGlvbi1hdC1udGhdIDIgbmlsIG5pbF0p
ICg1NCAuICNbMCAiXDMwMlwzMDFcMjAzCwBcMzAwVFtcMjAyDQBcMzAwVCFcMjA3IiBbNSBuZWdh
dGl2ZSBoZWxtLWV4ZWN1dGUtc2VsZWN0aW9uLWFjdGlvbi1hdC1udGhdIDIgbmlsIG5pbF0pICg1
MyAuICNbMCAiXDMwMlwzMDFcMjAzCwBcMzAwVFtcMjAyDQBcMzAwVCFcMjA3IiBbNCBuZWdhdGl2
ZSBoZWxtLWV4ZWN1dGUtc2VsZWN0aW9uLWFjdGlvbi1hdC1udGhdIDIgbmlsIG5pbF0pICg1MiAu
ICNbMCAiXDMwMlwzMDFcMjAzCwBcMzAwVFtcMjAyDQBcMzAwVCFcMjA3IiBbMyBuZWdhdGl2ZSBo
ZWxtLWV4ZWN1dGUtc2VsZWN0aW9uLWFjdGlvbi1hdC1udGhdIDIgbmlsIG5pbF0pICg1MSAuICNb
MCAiXDMwMlwzMDFcMjAzCwBcMzAwVFtcMjAyDQBcMzAwVCFcMjA3IiBbMiBuZWdhdGl2ZSBoZWxt
LWV4ZWN1dGUtc2VsZWN0aW9uLWFjdGlvbi1hdC1udGhdIDIgbmlsIG5pbF0pICg1MCAuICNbMCAi
XDMwMlwzMDFcMjAzCwBcMzAwVFtcMjAyDQBcMzAwVCFcMjA3IiBbMSBuZWdhdGl2ZSBoZWxtLWV4
ZWN1dGUtc2VsZWN0aW9uLWFjdGlvbi1hdC1udGhdIDIgbmlsIG5pbF0pICg0OSAuICNbMCAiXDMw
MlwzMDFcMjAzCwBcMzAwVFtcMjAyDQBcMzAwVCFcMjA3IiBbMCBuZWdhdGl2ZSBoZWxtLWV4ZWN1
dGUtc2VsZWN0aW9uLWFjdGlvbi1hdC1udGhdIDIgbmlsIG5pbF0pICgyIC4gaGVsbS1yZXN1bWUt
bGlzdC1idWZmZXJzLWFmdGVyLXF1aXQpICg5OCAuIGhlbG0tcmVzdW1lLXByZXZpb3VzLXNlc3Np
b24tYWZ0ZXItcXVpdCkgKDYgLiBoZWxtLXF1aXQtYW5kLWZpbmQtZmlsZSkpICgxMjcgLiBoZWxt
LWRlbGV0ZS1jaGFyLWJhY2t3YXJkKSAoMTEgLiBoZWxtLWRlbGV0ZS1taW5pYnVmZmVyLWNvbnRl
bnRzKSAoNjcxMDg4OTYgLiBoZWxtLXRvZ2dsZS12aXNpYmxlLW1hcmstZm9yd2FyZCkgKDAgLiBo
ZWxtLXRvZ2dsZS12aXNpYmxlLW1hcmspIChDLU0tdXAgLiBoZWxtLXNjcm9sbC1vdGhlci13aW5k
b3ctZG93bikgKEMtTS1kb3duIC4gaGVsbS1zY3JvbGwtb3RoZXItd2luZG93KSAoTS1wcmlvciAu
IGhlbG0tc2Nyb2xsLW90aGVyLXdpbmRvdy1kb3duKSAoTS1uZXh0IC4gaGVsbS1zY3JvbGwtb3Ro
ZXItd2luZG93KSAoMTIgLiBoZWxtLXJlY2VudGVyLXRvcC1ib3R0b20tb3RoZXItd2luZG93KSAo
bGVmdCAuIGhlbG0tcHJldmlvdXMtc291cmNlKSAocmlnaHQgLiBoZWxtLW5leHQtc291cmNlKSAo
MTUgLiBoZWxtLW5leHQtc291cmNlKSAoMTAgLiBoZWxtLWV4ZWN1dGUtcGVyc2lzdGVudC1hY3Rp
b24pICg5IC4gaGVsbS1zZWxlY3QtYWN0aW9uKSAoMTMgLiBoZWxtLW1heWJlLWV4aXQtbWluaWJ1
ZmZlcikgKDcgLiBoZWxtLWtleWJvYXJkLXF1aXQpICgyMiAuIGhlbG0tc2Nyb2xsLWRvd24pICgy
NyBrZXltYXAgKDEwNCAuIGJhY2t3YXJkLWtpbGwtd29yZCkgKDggLiBiYWNrd2FyZC1raWxsLXdv
cmQpICgxMDggLiB5YW50L2hlbG0teWFuay1zZWxlY3Rpb24tb3ItZXhlY3V0ZS1wZXJzaXN0ZW50
LWFjdGlvbikgKDEwNSAuIGhlbG0tcHJldmlvdXMtc291cmNlKSAoMTA3IC4gaGVsbS1wcmV2aW91
cy1saW5lKSAoMTA2IC4gaGVsbS1uZXh0LWxpbmUpICgxMTQgLiB1bmRlZmluZWQpICgxMTAgLiBu
ZXh0LWhpc3RvcnktZWxlbWVudCkgKDExMiAuIHByZXZpb3VzLWhpc3RvcnktZWxlbWVudCkgKDE5
IC4gdW5kZWZpbmVkKSAoMTggLiB1bmRlZmluZWQpICgxMTUgLiB1bmRlZmluZWQpICg1IC4gaGVs
bS1kaXNwbGF5LWFsbC1zb3VyY2VzKSAoMSAuIGhlbG0tc2hvdy1hbGwtY2FuZGlkYXRlcy1pbi1z
b3VyY2UpICg4NSAuIGhlbG0tdW5tYXJrLWFsbCkgKDk3IC4gaGVsbS1tYXJrLWFsbCkgKDEwOSAu
IGhlbG0tdG9nZ2xlLWFsbC1tYXJrcykgKDQxIC4gaGVsbS1uZXh0LXZpc2libGUtbWFyaykgKDQw
IC4gaGVsbS1wcmV2LXZpc2libGUtbWFyaykgKDkxKSAoMzIgLiBoZWxtLXRvZ2dsZS12aXNpYmxl
LW1hcmstYmFja3dhcmQpICgzMzU1NDQ1NCAuIGhlbG0tc2Nyb2xsLW90aGVyLXdpbmRvdy1kb3du
KSAoMjUgLiBoZWxtLXNjcm9sbC1vdGhlci13aW5kb3ctZG93bikgKDIyIC4gaGVsbS1zY3JvbGwt
b3RoZXItd2luZG93KSAoMTIgLiBoZWxtLXJlcG9zaXRpb24td2luZG93LW90aGVyLXdpbmRvdykg
KDExMSAuIGhlbG0tbmV4dC1zb3VyY2UpICg2MiAuIGhlbG0tZW5kLW9mLWJ1ZmZlcikgKDYwIC4g
aGVsbS1iZWdpbm5pbmctb2YtYnVmZmVyKSAoMTE4IC4gaGVsbS1zY3JvbGwtdXApKSAobmV4dCAu
IGhlbG0tbmV4dC1wYWdlKSAocHJpb3IgLiBoZWxtLXByZXZpb3VzLXBhZ2UpIChDLXVwIC4gaGVs
bS1mb2xsb3ctYWN0aW9uLWJhY2t3YXJkKSAoQy1kb3duIC4gaGVsbS1mb2xsb3ctYWN0aW9uLWZv
cndhcmQpICgxNiAuIGhlbG0tcHJldmlvdXMtbGluZSkgKDE0IC4gaGVsbS1uZXh0LWxpbmUpICh1
cCAuIGhlbG0tcHJldmlvdXMtbGluZSkgKGRvd24gLiBoZWxtLW5leHQtbGluZSkga2V5bWFwICgx
OCAuIGhlbG0tbWluaWJ1ZmZlci1oaXN0b3J5KSAoZXNjYXBlIC4ga2V5Ym9hcmQtcXVpdCkgKG1l
bnUtYmFyIGtleW1hcCAobWluaWJ1ZiAiTWluaWJ1ZiIga2V5bWFwIChwcmV2aW91cyBtZW51LWl0
ZW0gIlByZXZpb3VzIEhpc3RvcnkgSXRlbSIgcHJldmlvdXMtaGlzdG9yeS1lbGVtZW50IDpoZWxw
ICJQdXQgcHJldmlvdXMgbWluaWJ1ZmZlciBoaXN0b3J5IGVsZW1lbnQgaW4gdGhlIG1pbmlidWZm
ZXIiKSAobmV4dCBtZW51LWl0ZW0gIk5leHQgSGlzdG9yeSBJdGVtIiBuZXh0LWhpc3RvcnktZWxl
bWVudCA6aGVscCAiUHV0IG5leHQgbWluaWJ1ZmZlciBoaXN0b3J5IGVsZW1lbnQgaW4gdGhlIG1p
bmlidWZmZXIiKSAoaXNlYXJjaC1iYWNrd2FyZCBtZW51LWl0ZW0gIklzZWFyY2ggSGlzdG9yeSBC
YWNrd2FyZCIgaXNlYXJjaC1iYWNrd2FyZCA6aGVscCAiSW5jcmVtZW50YWxseSBzZWFyY2ggbWlu
aWJ1ZmZlciBoaXN0b3J5IGJhY2t3YXJkIikgKGlzZWFyY2gtZm9yd2FyZCBtZW51LWl0ZW0gIklz
ZWFyY2ggSGlzdG9yeSBGb3J3YXJkIiBpc2VhcmNoLWZvcndhcmQgOmhlbHAgIkluY3JlbWVudGFs
bHkgc2VhcmNoIG1pbmlidWZmZXIgaGlzdG9yeSBmb3J3YXJkIikgKHJldHVybiBtZW51LWl0ZW0g
IkVudGVyIiBleGl0LW1pbmlidWZmZXIgOmtleS1zZXF1ZW5jZSAiDSIgOmhlbHAgIlRlcm1pbmF0
ZSBpbnB1dCBhbmQgZXhpdCBtaW5pYnVmZmVyIikgKHF1aXQgbWVudS1pdGVtICJRdWl0IiBhYm9y
dC1yZWN1cnNpdmUtZWRpdCA6aGVscCAiQWJvcnQgaW5wdXQgYW5kIGV4aXQgbWluaWJ1ZmZlciIp
ICJNaW5pYnVmIikpICgyNCBrZXltYXAgKGRvd24gLiBtaW5pYnVmZmVyLWNvbXBsZXRlLWRlZmF1
bHRzKSAodXAgLiBtaW5pYnVmZmVyLWNvbXBsZXRlLWhpc3RvcnkpKSAoMTMgLiBleGl0LW1pbmli
dWZmZXIpICgxMCAuIGV4aXQtbWluaWJ1ZmZlcikgKDcgLiBhYm9ydC1taW5pYnVmZmVycykgKEMt
dGFiIC4gZmlsZS1jYWNoZS1taW5pYnVmZmVyLWNvbXBsZXRlKSAoOSAuIHNlbGYtaW5zZXJ0LWNv
bW1hbmQpIChYRjg2QmFjayAuIHByZXZpb3VzLWhpc3RvcnktZWxlbWVudCkgKHVwIC4gcHJldmlv
dXMtbGluZS1vci1oaXN0b3J5LWVsZW1lbnQpIChwcmlvciAuIHByZXZpb3VzLWhpc3RvcnktZWxl
bWVudCkgKFhGODZGb3J3YXJkIC4gbmV4dC1oaXN0b3J5LWVsZW1lbnQpIChkb3duIC4gbmV4dC1s
aW5lLW9yLWhpc3RvcnktZWxlbWVudCkgKG5leHQgLiBuZXh0LWhpc3RvcnktZWxlbWVudCkgKDI3
IGtleW1hcCAoMTA1IC4gcGFyZWRpdC1jb252b2x1dGUtc2V4cCkgKDExMSAuIHBhcmVkaXQtZm9y
d2FyZC1zbHVycC1zZXhwKSAoNjAgLiBtaW5pYnVmZmVyLWJlZ2lubmluZy1vZi1idWZmZXIpICgx
MTQgLiBwcmV2aW91cy1tYXRjaGluZy1oaXN0b3J5LWVsZW1lbnQpICgxMTUgLiBuZXh0LW1hdGNo
aW5nLWhpc3RvcnktZWxlbWVudCkgKDExMiAuIHByZXZpb3VzLWhpc3RvcnktZWxlbWVudCkgKDEx
MCAuIG5leHQtaGlzdG9yeS1lbGVtZW50KSkpIChhY3Rpb24gLiBoZWxtLXR5cGUtY29tbWFuZC1h
Y3Rpb25zKSAocGVyc2lzdGVudC1hY3Rpb24gLiBoZWxtLU0teC1wZXJzaXN0ZW50LWFjdGlvbikg
KHBlcnNpc3RlbnQtaGVscCAuICJEZXNjcmliZSB0aGlzIGNvbW1hbmQiKSAoaGVscC1tZXNzYWdl
IC4gaGVsbS1NLXgtaGVscC1tZXNzYWdlKSAocmVxdWlyZXMtcGF0dGVybiAuIDApIChmaWx0ZXJl
ZC1jYW5kaWRhdGUtdHJhbnNmb3JtZXIgaGVsbS1NLXgtdHJhbnNmb3JtZXIgIzxzdWJyIEY2MTZl
NmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzIwPiBoZWxtLWZ1
enp5LWhpZ2hsaWdodC1tYXRjaGVzKSAodm9sYXRpbGUgLiB0KSAobWF0Y2ggaWRlbnRpdHkpIChm
dXp6eS1tYXRjaCAuIHQpIChyZWRpc3BsYXkgLiBpZGVudGl0eSkgKG5vbWFyayAuIHQpIChjb2Vy
Y2UgLiBoZWxtLXN5bWJvbGlmeSkgKGhlYWRlci1saW5lIC4gIygiQy11OiBEZXNjcmliZSB0aGlz
IGNvbW1hbmQgKGtlZXBpbmcgc2Vzc2lvbikiIDAgMyAoZm9udC1sb2NrLWZhY2UgaGVscC1rZXkt
YmluZGluZyBmYWNlIGhlbHAta2V5LWJpbmRpbmcpKSkgKHJlc3VtZSAuIGhlbG0tTS14LXJlc3Vt
ZS1mbikgKG11bHRpbWF0Y2ggLiB0KSAobXVzdC1tYXRjaCAuIHQpIChncm91cCAuIGhlbG0tY29t
bWFuZCkgKGRhdGEgLiAjWzAgIlwzMDJcMzAxXDIwNgYAXDMwM1wzMDBcMzA0XDIxMVwzMDUlXDIw
NyIgW2NvbW1hbmRwIG5pbCBoZWxtLWNvbXAtcmVhZC1nZXQtY2FuZGlkYXRlcyBleHRlbmRlZC1j
b21tYW5kLWhpc3RvcnkgbmlsICIiXSA2XSkgKGdldC1saW5lIC4gYnVmZmVyLXN1YnN0cmluZy1u
by1wcm9wZXJ0aWVzKSAoc2VhcmNoIGhlbG0tbW0tZXhhY3Qtc2VhcmNoIGhlbG0tbW0tc2VhcmNo
IGhlbG0tY2FuZGlkYXRlcy1pbi1idWZmZXItc2VhcmNoLWRlZmF1bHQtZm4gaGVsbS1mdXp6eS1z
ZWFyY2gpKSBuaWwgMCAxNTAgKGhlbG0tbW0tZXhhY3Qtc2VhcmNoIGhlbG0tbW0tc2VhcmNoIGhl
bG0tY2FuZGlkYXRlcy1pbi1idWZmZXItc2VhcmNoLWRlZmF1bHQtZm4gaGVsbS1mdXp6eS1zZWFy
Y2gpIGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAicCIgbWFrZS1oYXNoLXRhYmxlIDp0
ZXN0IGVxdWFsIGFsbG93LWR1cHMgaGVsbS1zZXQtY2FzZS1mb2xkLXNlYXJjaCAwIDEgbmlsIChp
bnZhbGlkLXJlZ2V4cCkgbG9va2luZy1hdCBhcHBseSBwb3MtYm9sIHBvcy1lb2wgZ2V0LXRleHQt
cHJvcGVydHkgbWF0Y2gtcGFydCBwcm9wZXJ0aXplIGdldGhhc2ggIiIgaGVsbS1zZWFyY2gtbWF0
Y2gtcGFydCBwdXRoYXNoIGFzc29jLWRlZmF1bHQgZmlsdGVyLW9uZS1ieS1vbmUgZnVuY3Rpb25w
IGNhc2UtZm9sZC1zZWFyY2hdIDE4XSBjYXRlZ29yeSB0IGZvbGxvdy1saW5rIHQgYnV0dG9uIHQg
aGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9keSIgbW91
c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9uKSkgIygi
aGVsbS0tc2VhcmNoLWZyb20tY2FuZGlkYXRlLWJ1ZmZlci0xIiAwIDM2IChoZWxwLWFyZ3MgKGhl
bG0tLXNlYXJjaC1mcm9tLWNhbmRpZGF0ZS1idWZmZXItMSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tc2VhcmNoLWZyb20tY2FuZGlkYXRlLWJ1ZmZl
ciIgMCAzMyAoaGVscC1hcmdzIChoZWxtLXNlYXJjaC1mcm9tLWNhbmRpZGF0ZS1idWZmZXIpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNhbmRpZGF0
ZXMtaW4tYnVmZmVyLTEiIDAgMjcgKGhlbHAtYXJncyAoaGVsbS1jYW5kaWRhdGVzLWluLWJ1ZmZl
ci0xKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1j
YW5kaWRhdGVzLWluLWJ1ZmZlciIgMCAyNSAoaGVscC1hcmdzIChoZWxtLWNhbmRpZGF0ZXMtaW4t
YnVmZmVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVs
bS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UiIDAgMzIgKGhlbHAtYXJncyAoaGVsbS1hcHBs
eS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJoZWxtLWludGVycHJldC12YWx1ZSIgMCAyMCAoaGVscC1hcmdzIChoZWxt
LWludGVycHJldC12YWx1ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImhlbG0tZ2V0LWNhbmRpZGF0ZXMiIDAgMTkgKGhlbHAtYXJncyAoaGVsbS1nZXQtY2Fu
ZGlkYXRlcykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhl
bG0tZ2V0LWNhY2hlZC1jYW5kaWRhdGVzIiAwIDI2IChoZWxwLWFyZ3MgKGhlbG0tZ2V0LWNhY2hl
ZC1jYW5kaWRhdGVzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiaGVsbS1jb21wdXRlLW1hdGNoZXMiIDAgMjAgKGhlbHAtYXJncyAoaGVsbS1jb21wdXRlLW1h
dGNoZXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxt
LS1jb2xsZWN0LW1hdGNoZXMiIDAgMjEgKGhlbHAtYXJncyAoaGVsbS0tY29sbGVjdC1tYXRjaGVz
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS11cGRh
dGUiIDAgMTEgKGhlbHAtYXJncyAoaGVsbS11cGRhdGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNoZWNrLW5ldy1pbnB1dCIgMCAyMCAoaGVscC1h
cmdzIChoZWxtLWNoZWNrLW5ldy1pbnB1dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoImhlbG0tY2hlY2stbWluaWJ1ZmZlci1pbnB1dCIgMCAyNyAoaGVscC1h
cmdzIChoZWxtLWNoZWNrLW1pbmlidWZmZXItaW5wdXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKV0gMyBbIygid2hlcmUtaXMtaW50ZXJuYWwiIDAgMTcgKGhlbHAt
YXJncyAod2hlcmUtaXMtaW50ZXJuYWwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJzdWJzdGl0dXRlLWNvbW1hbmQta2V5cyIgMCAyMyAoaGVscC1hcmdzIChz
dWJzdGl0dXRlLWNvbW1hbmQta2V5cykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImhlbG0tTS14LXRyYW5zZm9ybWVyLTEiIDAgMjIgKGhlbHAtYXJncyAoaGVs
bS1NLXgtdHJhbnNmb3JtZXItMSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImhlbG0tTS14LXRyYW5zZm9ybWVyIiAwIDIwIChoZWxwLWFyZ3MgKGhlbG0tTS14
LXRyYW5zZm9ybWVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UiIDAgMzIgKGhlbHAtYXJncyAoaGVs
bS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLXByb2Nlc3MtZmlsdGVyZWQtY2FuZGlkYXRlLXRyYW5z
Zm9ybWVyIiAwIDQzIChoZWxwLWFyZ3MgKGhlbG0tcHJvY2Vzcy1maWx0ZXJlZC1jYW5kaWRhdGUt
dHJhbnNmb3JtZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJoZWxtLWNvbXB1dGUtbWF0Y2hlcyIgMCAyMCAoaGVscC1hcmdzIChoZWxtLWNvbXB1dGUtbWF0
Y2hlcykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0t
LWNvbGxlY3QtbWF0Y2hlcyIgMCAyMSAoaGVscC1hcmdzIChoZWxtLS1jb2xsZWN0LW1hdGNoZXMp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLXVwZGF0
ZSIgMCAxMSAoaGVscC1hcmdzIChoZWxtLXVwZGF0ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tY2hlY2stbmV3LWlucHV0IiAwIDIwIChoZWxwLWFy
Z3MgKGhlbG0tY2hlY2stbmV3LWlucHV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiaGVsbS1jaGVjay1taW5pYnVmZmVyLWlucHV0IiAwIDI3IChoZWxwLWFy
Z3MgKGhlbG0tY2hlY2stbWluaWJ1ZmZlci1pbnB1dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoIiM8Y29tcGlsZWQtZnVuY3Rpb24gNDJGPiIgMjAgMjMgKGFj
dGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hzY3Jl
ZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1k
b3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtl
eW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0
dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikg
KDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3
IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0
b24tZGF0YSAjWzAgIghcMjA2BQAJP1wyMDUZAFwzMDIgclwzMDNcMzA0AlwiXDIxNlwzMDUgXDIx
MFwzMDYgKlwyNjIBXDIwNyIgW2hlbG0taW4tcGVyc2lzdGVudC1hY3Rpb24gaGVsbS1zdXNwZW5k
LXVwZGF0ZS1mbGFnIGludGVybmFsLS1iZWZvcmUtc2F2ZS1zZWxlY3RlZC13aW5kb3cgbWFrZS1j
bG9zdXJlICNbMCAiXDMwMVwzMDAhXDIwNyIgW1YwIGludGVybmFsLS1hZnRlci1zYXZlLXNlbGVj
dGVkLXdpbmRvd10gMl0gaGVsbS1jaGVjay1taW5pYnVmZmVyLWlucHV0IGhlbG0tcHJpbnQtZXJy
b3ItbWVzc2FnZXNdIDRdIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBoZWxwLWVj
aG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1mYWNl
IGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0b24pKSAjKCJhcHBseSIg
MCA1IChoZWxwLWFyZ3MgKGFwcGx5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygidGltZXItZXZlbnQtaGFuZGxlciIgMCAxOSAoaGVscC1hcmdzICh0aW1lci1l
dmVudC1oYW5kbGVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiaGVsbS1yZWFkLWZyb20tbWluaWJ1ZmZlciIgMCAyNSAoaGVscC1hcmdzIChoZWxtLXJlYWQt
ZnJvbS1taW5pYnVmZmVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiaGVsbS1pbnRlcm5hbCIgMCAxMyAoaGVscC1hcmdzIChoZWxtLWludGVybmFsKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSldIDE0IFsjKCJjb21wbGV0aW9u
LXBjbS0tcGF0dGVybi0+cmVnZXgiIDAgMzAgKGhlbHAtYXJncyAoY29tcGxldGlvbi1wY20tLXBh
dHRlcm4tPnJlZ2V4KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiaGVsbS0tZnV6enktZmxleC1wYXR0ZXJuLXRvLXJlZ2V4cCIgMCAzNCAoaGVscC1hcmdzICho
ZWxtLS1mdXp6eS1mbGV4LXBhdHRlcm4tdG8tcmVnZXhwKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1mdXp6eS1mbGV4LXN0eWxlLXNjb3JlIiAwIDI3
IChoZWxwLWFyZ3MgKGhlbG0tZnV6enktZmxleC1zdHlsZS1zY29yZSkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tc2NvcmUtY2FuZGlkYXRlLWZvci1w
YXR0ZXJuIiAwIDMyIChoZWxwLWFyZ3MgKGhlbG0tc2NvcmUtY2FuZGlkYXRlLWZvci1wYXR0ZXJu
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiIzxjb21waWxl
ZC1mdW5jdGlvbiAyMEI+IiAyMCAyMyAoYWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0aW9u
IGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChoZWFkZXIt
bGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBw
dXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1i
dXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsgLiBtb3VzZS1mYWNl
KSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5bWFwIChiYWNr
dGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dhcmQtYnV0dG9uKSkg
KDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhICNbNTE0ICJcMzAzXDIwMwgAXDMwNVwy
MDIJAFwzMDZcMzAyXDIwMxoAAjpcMjAzGgBcMzA3AQQhIVwyMDIwAAI6XDIwMyUAXDIxMQMhXDIw
MjAAXDMwMlwyMDMvAFwzMDcDIVwyMDIwAAJcMzAyXDIwM0EAAjpcMjAzQQBcMzA3AgQhIVwyMDJX
AAI6XDIwM0wAAQMhXDIwMlcAXDMwMlwyMDNWAFwzMDcDIVwyMDJXAAJcMzEwAlwzMDBcIlwyMDZr
AFwzMTECXDMxMgQMXCJcMzEzBSFHRFwzMDAjXDMxMAJcMzAwXCJcMjA2fwBcMzExAlwzMTIEDFwi
XDMxMwUhR0RcMzAwIwFBQAFBQANAA0ABAVVcMjAzXDIzMABcMzAxP1wyMDVcMjMzAAMDV1wyMDcB
AVZcMjA3IiBbI3MoaGFzaC10YWJsZSB0ZXN0IGVxdWFsIGRhdGEgKCJwaWVtLWFtIiAoMC4xNDI4
NTcxNDI4NTcxNDI4NSA3KSAicHJvZmlsZXItc3RhcnQiICgwLjA3MTQyODU3MTQyODU3MTQyIDE0
KSAib3JnLWNhcHR1cmUtcmVmLWNhcHR1cmUtZG9pIiAoMC4wIDI3KSAicHJvZmlsZXItcmVwb3J0
IiAoMC4wNjY2NjY2NjY2NjY2NjY2NyAxNSkgInByb2ZpbGVyLXN0b3AiICgwLjA3NjkyMzA3Njky
MzA3NjkzIDEzKSAib3JnLWNhcHR1cmUtcmVmLWNhcHR1cmUtYXQtcG9pbnQiICgwLjAgMzIpICJi
eXRlLWNvbXBpbGUtZmlsZSIgKDAuMCAxNykgInBhcmVkaXQtbW9kZSIgKDAuMDgzMzMzMzMzMzMz
MzMzMzMgMTIpICJvcmctc3VibWl0LWJ1Zy1yZXBvcnQiICgwLjAgMjEpICJjb21wYW55LW1vZGUi
ICgwLjAgMTIpICJhcHJvcG9zLWZ1bmN0aW9uIiAoMC4wIDE2KSAic3RyYWlnaHQtdXNlLXBhY2th
Z2UiICgwLjAgMjApICJvcmctdGltZXN0YW1wIiAoMC4wIDEzKSAicGRmLXZpZXctbW9kZSIgKDAu
MDc2OTIzMDc2OTIzMDc2OTMgMTMpICJzdHJhaWdodC1yZWJ1aWxkLXBhY2thZ2UiICgwLjAgMjQp
ICJlbWFjcy1saXNwLW1vZGUiICgwLjAgMTUpKSkgbmlsIG5pbCB0IGhlbG0tcGF0dGVybiBjZHIg
Y2FyIGhlbG0tYmFzZW5hbWUgZ2V0aGFzaCBwdXRoYXNoIGhlbG0tc2NvcmUtY2FuZGlkYXRlLWZv
ci1wYXR0ZXJuIGhlbG0tc3RyaW5naWZ5XSAxMyAiCgooZm4gUzEgUzIpIl0gY2F0ZWdvcnkgdCBm
b2xsb3ctbGluayB0IGJ1dHRvbiB0IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRo
ZSBmdW5jdGlvbidzIGJvZHkiIG1vdXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1
dHRvbiBmYWNlIGJ1dHRvbikpICMoImhlbG0tZnV6enktbWF0Y2hpbmctZGVmYXVsdC1zb3J0LWZu
LTEiIDAgMzcgKGhlbHAtYXJncyAoaGVsbS1mdXp6eS1tYXRjaGluZy1kZWZhdWx0LXNvcnQtZm4t
MSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIiM8c3Vici1u
YXRpdmUtZWxpc3AgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19s
YW1iZGFfMjA+IiAyMCA3MyAoYnV0dG9uICh0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBoZWxwLWFyZ3MgKEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNf
bGFtYmRhXzIwKSkpICMoImhlbG0tYXBwbHktZnVuY3Rpb25zLWZyb20tc291cmNlIiAwIDMyICho
ZWxwLWFyZ3MgKGhlbG0tYXBwbHktZnVuY3Rpb25zLWZyb20tc291cmNlKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1wcm9jZXNzLWZpbHRlcmVkLWNh
bmRpZGF0ZS10cmFuc2Zvcm1lciIgMCA0MyAoaGVscC1hcmdzIChoZWxtLXByb2Nlc3MtZmlsdGVy
ZWQtY2FuZGlkYXRlLXRyYW5zZm9ybWVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiaGVsbS1jb21wdXRlLW1hdGNoZXMiIDAgMjAgKGhlbHAtYXJncyAoaGVs
bS1jb21wdXRlLW1hdGNoZXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJoZWxtLS1jb2xsZWN0LW1hdGNoZXMiIDAgMjEgKGhlbHAtYXJncyAoaGVsbS0tY29s
bGVjdC1tYXRjaGVzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiaGVsbS11cGRhdGUiIDAgMTEgKGhlbHAtYXJncyAoaGVsbS11cGRhdGUpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNoZWNrLW5ldy1pbnB1dCIg
MCAyMCAoaGVscC1hcmdzIChoZWxtLWNoZWNrLW5ldy1pbnB1dCkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tY2hlY2stbWluaWJ1ZmZlci1pbnB1dCIg
MCAyNyAoaGVscC1hcmdzIChoZWxtLWNoZWNrLW1pbmlidWZmZXItaW5wdXQpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIDQy
Rj4iIDIwIDIzIChhY3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXlt
YXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAo
dG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkg
KG1vZGUtbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNl
LTIgLiBwdXNoLWJ1dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4g
cHVzaC1idXR0b24pICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2Fy
ZC1idXR0b24pICgyNyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQt
YnV0dG9uKSkgYnV0dG9uLWRhdGEgI1swICIIXDIwNgUACT9cMjA1GQBcMzAyIHJcMzAzXDMwNAJc
IlwyMTZcMzA1IFwyMTBcMzA2ICpcMjYyAVwyMDciIFtoZWxtLWluLXBlcnNpc3RlbnQtYWN0aW9u
IGhlbG0tc3VzcGVuZC11cGRhdGUtZmxhZyBpbnRlcm5hbC0tYmVmb3JlLXNhdmUtc2VsZWN0ZWQt
d2luZG93IG1ha2UtY2xvc3VyZSAjWzAgIlwzMDFcMzAwIVwyMDciIFtWMCBpbnRlcm5hbC0tYWZ0
ZXItc2F2ZS1zZWxlY3RlZC13aW5kb3ddIDJdIGhlbG0tY2hlY2stbWluaWJ1ZmZlci1pbnB1dCBo
ZWxtLXByaW50LWVycm9yLW1lc3NhZ2VzXSA0XSBjYXRlZ29yeSB0IGZvbGxvdy1saW5rIHQgYnV0
dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9k
eSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9u
KSkgIygiYXBwbHkiIDAgNSAoaGVscC1hcmdzIChhcHBseSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpXSAzIFsjKCJoZWxtLW1tLWV4YWN0LXNlYXJjaCIgMCAyMCAo
aGVscC1hcmdzIChoZWxtLW1tLWV4YWN0LXNlYXJjaCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoIiM8Y29tcGlsZWQtZnVuY3Rpb24gNzA5PiIgMjAgMjMgKGFj
dGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hzY3Jl
ZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1k
b3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtl
eW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0
dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikg
KDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3
IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0
b24tZGF0YSAjWzAgIlwzMTBcMzExXDMxMlwiXDMxM1wzMDFcMjM2XDMxNCAeH1wzMTVcMzE2XDMw
NVwzMTdcMjExAjpcMjAzJgECQFwyNjICXDMwM2JcMjEwXDMyMDEnAFwzMjFcMzA3ITBcMjAyKwBc
MjEwXDIwMjEAXDIwMzEAXDMxNnlcMjEwXDMxN1wyMTFcMjExXDIxMVwyMTEGBlwzMDchXDIxMVwy
NjIGXDIwMxIBBDpcMjAzTABcMzE2eVwzMTVVXDIwMk4AbT9cMjAzEgEGCVwzMDRXXDIwMxIBXDMy
MlwzMDYGBlwyMDNqAAYGPFwyMDNqAAYGXDIwMm8AXDMyMyBcMzI0IERcIlwyNjIEXDMwMlwyMDNc
MjExAFwzMjVcMzE1XDMyNgYGI1wyMDRcMjExAFwzMjcEXDMyNlwzMDIGByEjXDI2MgRcMzMwBAYN
XCJcMjYyAwYKXDIwM1wyNDAAAlwyMDNcMjQwAAIGCVVcMjA0XDI0NAACXDIwNA0BA1wzMzFcMjMw
XDIwNA0BXDMwMlwyMDRcMjYzAAQ6XDIwM1wyNzMAXDMzMgRcMzA3XDMwMCNcMjAzDQFcMzMzBAYK
Bg4jXDIxMFwzMzRcMzM1XDMwMVwiXDIxMVwyMDMCAQQ6XDIwM1wzMjUABEFcMjAyXDMyNgAEATxc
MjAzXDM3NABcMzM2AiFcMjA0XDM3NAABXDMxNwE6XDIwM1wzNjcAXDIxMFwyMTFAXDIxMQMhXDI2
MggBQVwyNjICXDIwMlwzNDMAXDI2NgRcMjAyAwEBASFcMjYyBlwyMTBcMjEwBglUXDI2MgoDAkJc
MjYyAlwyMTBcMzE3XDIwMjYAXDIxMFwyNjZcMjAzXDIzN1wyMzcBXDI0NFwyNjIBA1RcMjYyBAJB
XDI2MgNcMjAyEABcMjExXDIzNylcMjA3IiBbbmlsICgobmFtZSAuICJFbWFjcyBDb21tYW5kcyIp
IChpbml0ICNbMCAiXDMwMVwzMDJcMzAzXDMwMCFcMjAzDQBcMzAwIFwyMDIkAFwzMDRcMzAwIVwy
MDMjAFwzMDVcMzAwIVwyMDMjAHJcMzAwcVwyMTBcMzA2IClcMjAyJABcMzAwXCJcMjA3IiBbI1sw
ICJcMzAyXDMwMVwzMDBcMzAzXDIxMVwzMDQlXDIwNyIgW2NvbW1hbmRwICM8b2JhcnJheSBuPTk4
OTE5PiBoZWxtLWNvbXAtcmVhZC1nZXQtY2FuZGlkYXRlcyBuaWwgIiJdIDZdIGhlbG0taW5pdC1j
YW5kaWRhdGVzLWluLWJ1ZmZlciBnbG9iYWwgZnVuY3Rpb25wIGJ1ZmZlcnAgYnVmZmVyLWxpdmUt
cCBidWZmZXItc3RyaW5nXSA0XSkgKGNhbmRpZGF0ZXMgLiBoZWxtLWNhbmRpZGF0ZXMtaW4tYnVm
ZmVyKSAoY2xlYW51cCAuIGhlbG0tTS14LS11bndpbmQtZm9ybXMpIChrZXltYXAga2V5bWFwIChr
ZXltYXAgKDEzIC4gaGVsbS1jb25maXJtLWFuZC1leGl0LW1pbmlidWZmZXIpKSBrZXltYXAgKDI5
IC4gaGVsbS1NLXgtdG9nZ2xlLXNob3J0LWRvYykgKDIxIC4gaGVsbS1NLXgtdW5pdmVyc2FsLWFy
Z3VtZW50KSBrZXltYXAgKDI3IGtleW1hcCAoMTMgLiBoZWxtLWNyLWVtcHR5LXN0cmluZykpIChD
LXJldHVybiAuIGhlbG0tY3ItZW1wdHktc3RyaW5nKSBrZXltYXAgKDIxIC4gaGVsbS1leGVjdXRl
LXBlcnNpc3RlbnQtYWN0aW9uKSAoZjEyIC4gI1swICJcMzAxXDMwMCFcMjA3IiBbMTEgaGVsbS1z
ZWxlY3QtbnRoLWFjdGlvbl0gMiBuaWwgbmlsXSkgKGYxMSAuICNbMCAiXDMwMVwzMDAhXDIwNyIg
WzEwIGhlbG0tc2VsZWN0LW50aC1hY3Rpb25dIDIgbmlsIG5pbF0pIChmMTAgLiAjWzAgIlwzMDFc
MzAwIVwyMDciIFs5IGhlbG0tc2VsZWN0LW50aC1hY3Rpb25dIDIgbmlsIG5pbF0pIChmOSAuICNb
MCAiXDMwMVwzMDAhXDIwNyIgWzggaGVsbS1zZWxlY3QtbnRoLWFjdGlvbl0gMiBuaWwgbmlsXSkg
KGY4IC4gI1swICJcMzAxXDMwMCFcMjA3IiBbNyBoZWxtLXNlbGVjdC1udGgtYWN0aW9uXSAyIG5p
bCBuaWxdKSAoZjcgLiAjWzAgIlwzMDFcMzAwIVwyMDciIFs2IGhlbG0tc2VsZWN0LW50aC1hY3Rp
b25dIDIgbmlsIG5pbF0pIChmNiAuICNbMCAiXDMwMVwzMDAhXDIwNyIgWzUgaGVsbS1zZWxlY3Qt
bnRoLWFjdGlvbl0gMiBuaWwgbmlsXSkgKGY1IC4gI1swICJcMzAxXDMwMCFcMjA3IiBbNCBoZWxt
LXNlbGVjdC1udGgtYWN0aW9uXSAyIG5pbCBuaWxdKSAoZjQgLiAjWzAgIlwzMDFcMzAwIVwyMDci
IFszIGhlbG0tc2VsZWN0LW50aC1hY3Rpb25dIDIgbmlsIG5pbF0pIChmMyAuICNbMCAiXDMwMVwz
MDAhXDIwNyIgWzIgaGVsbS1zZWxlY3QtbnRoLWFjdGlvbl0gMiBuaWwgbmlsXSkgKGYyIC4gI1sw
ICJcMzAxXDMwMCFcMjA3IiBbMSBoZWxtLXNlbGVjdC1udGgtYWN0aW9uXSAyIG5pbCBuaWxdKSAo
bWVudS1iYXIga2V5bWFwIChoZWxwLW1lbnUga2V5bWFwIChkZXNjcmliZSBrZXltYXAgKGRlc2Ny
aWJlLW1vZGUgLiBoZWxtLWhlbHApKSkpIChoZWxwIGtleW1hcCAoMTA5IC4gaGVsbS1oZWxwKSkg
KDIzIC4gaGVsbS1oZWxtLXlhbmstdGV4dC1hdC1wb2ludC13aXRoLXN1YmtleXMpIChmMSAuICNb
MCAiXDMwMVwzMDAhXDIwNyIgWzAgaGVsbS1zZWxlY3QtbnRoLWFjdGlvbl0gMiBuaWwgbmlsXSkg
KDggLiBiYWNrd2FyZC1kZWxldGUtY2hhci11bnRhYmlmeSkgKDIwIC4gaGVsbS10b2dnbGUtcmVz
cGxpdC1hbmQtc3dhcC13aW5kb3dzKSAoQy10YWIgLiB1bmRlZmluZWQpICg2NzEwODg5NyAuIGhl
bG0tdG9nZ2xlLXN1c3BlbmQtdXBkYXRlKSAoMjYgLiBoZWxtLXRvZ2dsZS1mdWxsLWZyYW1lKSAo
MyBrZXltYXAgKDMzNTU0NDU1IC4geWFudC90b2dnbGUtcmVmaWxlLXRvLXRhc2tzKSAoNTcgLiAj
WzAgIlwzMDJcMzAxXDIwMwsAXDMwMFRbXDIwMg0AXDMwMFQhXDIwNyIgWzggbmlsIGhlbG0tZXhl
Y3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0LW50aF0gMiBuaWwgbmlsXSkgKDU2IC4gI1swICJcMzAy
XDMwMVwyMDMLAFwzMDBUW1wyMDINAFwzMDBUIVwyMDciIFs3IG5pbCBoZWxtLWV4ZWN1dGUtc2Vs
ZWN0aW9uLWFjdGlvbi1hdC1udGhdIDIgbmlsIG5pbF0pICg1NSAuICNbMCAiXDMwMlwzMDFcMjAz
CwBcMzAwVFtcMjAyDQBcMzAwVCFcMjA3IiBbNiBuaWwgaGVsbS1leGVjdXRlLXNlbGVjdGlvbi1h
Y3Rpb24tYXQtbnRoXSAyIG5pbCBuaWxdKSAoNTQgLiAjWzAgIlwzMDJcMzAxXDIwMwsAXDMwMFRb
XDIwMg0AXDMwMFQhXDIwNyIgWzUgbmlsIGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0
LW50aF0gMiBuaWwgbmlsXSkgKDUzIC4gI1swICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wyMDINAFwz
MDBUIVwyMDciIFs0IG5pbCBoZWxtLWV4ZWN1dGUtc2VsZWN0aW9uLWFjdGlvbi1hdC1udGhdIDIg
bmlsIG5pbF0pICg1MiAuICNbMCAiXDMwMlwzMDFcMjAzCwBcMzAwVFtcMjAyDQBcMzAwVCFcMjA3
IiBbMyBuaWwgaGVsbS1leGVjdXRlLXNlbGVjdGlvbi1hY3Rpb24tYXQtbnRoXSAyIG5pbCBuaWxd
KSAoNTEgLiAjWzAgIlwzMDJcMzAxXDIwMwsAXDMwMFRbXDIwMg0AXDMwMFQhXDIwNyIgWzIgbmls
IGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0LW50aF0gMiBuaWwgbmlsXSkgKDUwIC4g
I1swICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wyMDINAFwzMDBUIVwyMDciIFsxIG5pbCBoZWxtLWV4
ZWN1dGUtc2VsZWN0aW9uLWFjdGlvbi1hdC1udGhdIDIgbmlsIG5pbF0pICg0OSAuICNbMCAiXDMw
MlwzMDFcMjAzCwBcMzAwVFtcMjAyDQBcMzAwVCFcMjA3IiBbMCBuaWwgaGVsbS1leGVjdXRlLXNl
bGVjdGlvbi1hY3Rpb24tYXQtbnRoXSAyIG5pbCBuaWxdKSAoMTEwIC4gaGVsbS1oZWxtLXJ1bi1j
eWNsZS1yZXN1bWUtd2l0aC1zdWJrZXlzKSAoMTA4IC4gaGVsbS1kaXNwbGF5LWxpbmUtbnVtYmVy
cy1tb2RlKSAoNjIgLiBoZWxtLXRvZ2dsZS10cnVuY2F0ZS1saW5lKSAoMjEgLiBoZWxtLXJlZnJl
c2gpICg2IC4gaGVsbS1mb2xsb3ctbW9kZSkgKDkgLiBoZWxtLWluc2VydC1vci1jb3B5KSAoMTEg
LiBoZWxtLWtpbGwtc2VsZWN0aW9uLWFuZC1xdWl0KSAoMjUgLiBoZWxtLXlhbmstc2VsZWN0aW9u
KSAoMzcgLiBoZWxtLWV4Y2hhbmdlLW1pbmlidWZmZXItYW5kLWhlYWRlci1saW5lKSAoOTUgLiBo
ZWxtLXRvZ2dsZS1mdWxsLWZyYW1lKSAoNDUgLiBoZWxtLXN3YXAtd2luZG93cykpICg2NzEwODk4
NyAuIGhlbG0tZW5sYXJnZS13aW5kb3cpICg2NzEwODk4OSAuIGhlbG0tbmFycm93LXdpbmRvdykg
KDE4IC4gdW5kZWZpbmVkKSAoMTkgLiB1bmRlZmluZWQpICgyNCBrZXltYXAgKDU3IC4gI1swICJc
MzAyXDMwMVwyMDMLAFwzMDBUW1wyMDINAFwzMDBUIVwyMDciIFs4IG5lZ2F0aXZlIGhlbG0tZXhl
Y3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0LW50aF0gMiBuaWwgbmlsXSkgKDU2IC4gI1swICJcMzAy
XDMwMVwyMDMLAFwzMDBUW1wyMDINAFwzMDBUIVwyMDciIFs3IG5lZ2F0aXZlIGhlbG0tZXhlY3V0
ZS1zZWxlY3Rpb24tYWN0aW9uLWF0LW50aF0gMiBuaWwgbmlsXSkgKDU1IC4gI1swICJcMzAyXDMw
MVwyMDMLAFwzMDBUW1wyMDINAFwzMDBUIVwyMDciIFs2IG5lZ2F0aXZlIGhlbG0tZXhlY3V0ZS1z
ZWxlY3Rpb24tYWN0aW9uLWF0LW50aF0gMiBuaWwgbmlsXSkgKDU0IC4gI1swICJcMzAyXDMwMVwy
MDMLAFwzMDBUW1wyMDINAFwzMDBUIVwyMDciIFs1IG5lZ2F0aXZlIGhlbG0tZXhlY3V0ZS1zZWxl
Y3Rpb24tYWN0aW9uLWF0LW50aF0gMiBuaWwgbmlsXSkgKDUzIC4gI1swICJcMzAyXDMwMVwyMDML
AFwzMDBUW1wyMDINAFwzMDBUIVwyMDciIFs0IG5lZ2F0aXZlIGhlbG0tZXhlY3V0ZS1zZWxlY3Rp
b24tYWN0aW9uLWF0LW50aF0gMiBuaWwgbmlsXSkgKDUyIC4gI1swICJcMzAyXDMwMVwyMDMLAFwz
MDBUW1wyMDINAFwzMDBUIVwyMDciIFszIG5lZ2F0aXZlIGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24t
YWN0aW9uLWF0LW50aF0gMiBuaWwgbmlsXSkgKDUxIC4gI1swICJcMzAyXDMwMVwyMDMLAFwzMDBU
W1wyMDINAFwzMDBUIVwyMDciIFsyIG5lZ2F0aXZlIGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0
aW9uLWF0LW50aF0gMiBuaWwgbmlsXSkgKDUwIC4gI1swICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wy
MDINAFwzMDBUIVwyMDciIFsxIG5lZ2F0aXZlIGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0aW9u
LWF0LW50aF0gMiBuaWwgbmlsXSkgKDQ5IC4gI1swICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wyMDIN
AFwzMDBUIVwyMDciIFswIG5lZ2F0aXZlIGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0
LW50aF0gMiBuaWwgbmlsXSkgKDIgLiBoZWxtLXJlc3VtZS1saXN0LWJ1ZmZlcnMtYWZ0ZXItcXVp
dCkgKDk4IC4gaGVsbS1yZXN1bWUtcHJldmlvdXMtc2Vzc2lvbi1hZnRlci1xdWl0KSAoNiAuIGhl
bG0tcXVpdC1hbmQtZmluZC1maWxlKSkgKDEyNyAuIGhlbG0tZGVsZXRlLWNoYXItYmFja3dhcmQp
ICgxMSAuIGhlbG0tZGVsZXRlLW1pbmlidWZmZXItY29udGVudHMpICg2NzEwODg5NiAuIGhlbG0t
dG9nZ2xlLXZpc2libGUtbWFyay1mb3J3YXJkKSAoMCAuIGhlbG0tdG9nZ2xlLXZpc2libGUtbWFy
aykgKEMtTS11cCAuIGhlbG0tc2Nyb2xsLW90aGVyLXdpbmRvdy1kb3duKSAoQy1NLWRvd24gLiBo
ZWxtLXNjcm9sbC1vdGhlci13aW5kb3cpIChNLXByaW9yIC4gaGVsbS1zY3JvbGwtb3RoZXItd2lu
ZG93LWRvd24pIChNLW5leHQgLiBoZWxtLXNjcm9sbC1vdGhlci13aW5kb3cpICgxMiAuIGhlbG0t
cmVjZW50ZXItdG9wLWJvdHRvbS1vdGhlci13aW5kb3cpIChsZWZ0IC4gaGVsbS1wcmV2aW91cy1z
b3VyY2UpIChyaWdodCAuIGhlbG0tbmV4dC1zb3VyY2UpICgxNSAuIGhlbG0tbmV4dC1zb3VyY2Up
ICgxMCAuIGhlbG0tZXhlY3V0ZS1wZXJzaXN0ZW50LWFjdGlvbikgKDkgLiBoZWxtLXNlbGVjdC1h
Y3Rpb24pICgxMyAuIGhlbG0tbWF5YmUtZXhpdC1taW5pYnVmZmVyKSAoNyAuIGhlbG0ta2V5Ym9h
cmQtcXVpdCkgKDIyIC4gaGVsbS1zY3JvbGwtZG93bikgKDI3IGtleW1hcCAoMTA0IC4gYmFja3dh
cmQta2lsbC13b3JkKSAoOCAuIGJhY2t3YXJkLWtpbGwtd29yZCkgKDEwOCAuIHlhbnQvaGVsbS15
YW5rLXNlbGVjdGlvbi1vci1leGVjdXRlLXBlcnNpc3RlbnQtYWN0aW9uKSAoMTA1IC4gaGVsbS1w
cmV2aW91cy1zb3VyY2UpICgxMDcgLiBoZWxtLXByZXZpb3VzLWxpbmUpICgxMDYgLiBoZWxtLW5l
eHQtbGluZSkgKDExNCAuIHVuZGVmaW5lZCkgKDExMCAuIG5leHQtaGlzdG9yeS1lbGVtZW50KSAo
MTEyIC4gcHJldmlvdXMtaGlzdG9yeS1lbGVtZW50KSAoMTkgLiB1bmRlZmluZWQpICgxOCAuIHVu
ZGVmaW5lZCkgKDExNSAuIHVuZGVmaW5lZCkgKDUgLiBoZWxtLWRpc3BsYXktYWxsLXNvdXJjZXMp
ICgxIC4gaGVsbS1zaG93LWFsbC1jYW5kaWRhdGVzLWluLXNvdXJjZSkgKDg1IC4gaGVsbS11bm1h
cmstYWxsKSAoOTcgLiBoZWxtLW1hcmstYWxsKSAoMTA5IC4gaGVsbS10b2dnbGUtYWxsLW1hcmtz
KSAoNDEgLiBoZWxtLW5leHQtdmlzaWJsZS1tYXJrKSAoNDAgLiBoZWxtLXByZXYtdmlzaWJsZS1t
YXJrKSAoOTEpICgzMiAuIGhlbG0tdG9nZ2xlLXZpc2libGUtbWFyay1iYWNrd2FyZCkgKDMzNTU0
NDU0IC4gaGVsbS1zY3JvbGwtb3RoZXItd2luZG93LWRvd24pICgyNSAuIGhlbG0tc2Nyb2xsLW90
aGVyLXdpbmRvdy1kb3duKSAoMjIgLiBoZWxtLXNjcm9sbC1vdGhlci13aW5kb3cpICgxMiAuIGhl
bG0tcmVwb3NpdGlvbi13aW5kb3ctb3RoZXItd2luZG93KSAoMTExIC4gaGVsbS1uZXh0LXNvdXJj
ZSkgKDYyIC4gaGVsbS1lbmQtb2YtYnVmZmVyKSAoNjAgLiBoZWxtLWJlZ2lubmluZy1vZi1idWZm
ZXIpICgxMTggLiBoZWxtLXNjcm9sbC11cCkpIChuZXh0IC4gaGVsbS1uZXh0LXBhZ2UpIChwcmlv
ciAuIGhlbG0tcHJldmlvdXMtcGFnZSkgKEMtdXAgLiBoZWxtLWZvbGxvdy1hY3Rpb24tYmFja3dh
cmQpIChDLWRvd24gLiBoZWxtLWZvbGxvdy1hY3Rpb24tZm9yd2FyZCkgKDE2IC4gaGVsbS1wcmV2
aW91cy1saW5lKSAoMTQgLiBoZWxtLW5leHQtbGluZSkgKHVwIC4gaGVsbS1wcmV2aW91cy1saW5l
KSAoZG93biAuIGhlbG0tbmV4dC1saW5lKSBrZXltYXAgKDE4IC4gaGVsbS1taW5pYnVmZmVyLWhp
c3RvcnkpIChlc2NhcGUgLiBrZXlib2FyZC1xdWl0KSAobWVudS1iYXIga2V5bWFwIChtaW5pYnVm
ICJNaW5pYnVmIiBrZXltYXAgKHByZXZpb3VzIG1lbnUtaXRlbSAiUHJldmlvdXMgSGlzdG9yeSBJ
dGVtIiBwcmV2aW91cy1oaXN0b3J5LWVsZW1lbnQgOmhlbHAgIlB1dCBwcmV2aW91cyBtaW5pYnVm
ZmVyIGhpc3RvcnkgZWxlbWVudCBpbiB0aGUgbWluaWJ1ZmZlciIpIChuZXh0IG1lbnUtaXRlbSAi
TmV4dCBIaXN0b3J5IEl0ZW0iIG5leHQtaGlzdG9yeS1lbGVtZW50IDpoZWxwICJQdXQgbmV4dCBt
aW5pYnVmZmVyIGhpc3RvcnkgZWxlbWVudCBpbiB0aGUgbWluaWJ1ZmZlciIpIChpc2VhcmNoLWJh
Y2t3YXJkIG1lbnUtaXRlbSAiSXNlYXJjaCBIaXN0b3J5IEJhY2t3YXJkIiBpc2VhcmNoLWJhY2t3
YXJkIDpoZWxwICJJbmNyZW1lbnRhbGx5IHNlYXJjaCBtaW5pYnVmZmVyIGhpc3RvcnkgYmFja3dh
cmQiKSAoaXNlYXJjaC1mb3J3YXJkIG1lbnUtaXRlbSAiSXNlYXJjaCBIaXN0b3J5IEZvcndhcmQi
IGlzZWFyY2gtZm9yd2FyZCA6aGVscCAiSW5jcmVtZW50YWxseSBzZWFyY2ggbWluaWJ1ZmZlciBo
aXN0b3J5IGZvcndhcmQiKSAocmV0dXJuIG1lbnUtaXRlbSAiRW50ZXIiIGV4aXQtbWluaWJ1ZmZl
ciA6a2V5LXNlcXVlbmNlICINIiA6aGVscCAiVGVybWluYXRlIGlucHV0IGFuZCBleGl0IG1pbmli
dWZmZXIiKSAocXVpdCBtZW51LWl0ZW0gIlF1aXQiIGFib3J0LXJlY3Vyc2l2ZS1lZGl0IDpoZWxw
ICJBYm9ydCBpbnB1dCBhbmQgZXhpdCBtaW5pYnVmZmVyIikgIk1pbmlidWYiKSkgKDI0IGtleW1h
cCAoZG93biAuIG1pbmlidWZmZXItY29tcGxldGUtZGVmYXVsdHMpICh1cCAuIG1pbmlidWZmZXIt
Y29tcGxldGUtaGlzdG9yeSkpICgxMyAuIGV4aXQtbWluaWJ1ZmZlcikgKDEwIC4gZXhpdC1taW5p
YnVmZmVyKSAoNyAuIGFib3J0LW1pbmlidWZmZXJzKSAoQy10YWIgLiBmaWxlLWNhY2hlLW1pbmli
dWZmZXItY29tcGxldGUpICg5IC4gc2VsZi1pbnNlcnQtY29tbWFuZCkgKFhGODZCYWNrIC4gcHJl
dmlvdXMtaGlzdG9yeS1lbGVtZW50KSAodXAgLiBwcmV2aW91cy1saW5lLW9yLWhpc3RvcnktZWxl
bWVudCkgKHByaW9yIC4gcHJldmlvdXMtaGlzdG9yeS1lbGVtZW50KSAoWEY4NkZvcndhcmQgLiBu
ZXh0LWhpc3RvcnktZWxlbWVudCkgKGRvd24gLiBuZXh0LWxpbmUtb3ItaGlzdG9yeS1lbGVtZW50
KSAobmV4dCAuIG5leHQtaGlzdG9yeS1lbGVtZW50KSAoMjcga2V5bWFwICgxMDUgLiBwYXJlZGl0
LWNvbnZvbHV0ZS1zZXhwKSAoMTExIC4gcGFyZWRpdC1mb3J3YXJkLXNsdXJwLXNleHApICg2MCAu
IG1pbmlidWZmZXItYmVnaW5uaW5nLW9mLWJ1ZmZlcikgKDExNCAuIHByZXZpb3VzLW1hdGNoaW5n
LWhpc3RvcnktZWxlbWVudCkgKDExNSAuIG5leHQtbWF0Y2hpbmctaGlzdG9yeS1lbGVtZW50KSAo
MTEyIC4gcHJldmlvdXMtaGlzdG9yeS1lbGVtZW50KSAoMTEwIC4gbmV4dC1oaXN0b3J5LWVsZW1l
bnQpKSkgKGFjdGlvbiAuIGhlbG0tdHlwZS1jb21tYW5kLWFjdGlvbnMpIChwZXJzaXN0ZW50LWFj
dGlvbiAuIGhlbG0tTS14LXBlcnNpc3RlbnQtYWN0aW9uKSAocGVyc2lzdGVudC1oZWxwIC4gIkRl
c2NyaWJlIHRoaXMgY29tbWFuZCIpIChoZWxwLW1lc3NhZ2UgLiBoZWxtLU0teC1oZWxwLW1lc3Nh
Z2UpIChyZXF1aXJlcy1wYXR0ZXJuIC4gMCkgKGZpbHRlcmVkLWNhbmRpZGF0ZS10cmFuc2Zvcm1l
ciBoZWxtLU0teC10cmFuc2Zvcm1lciAjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZk
NjI2NDYxX2Fub255bW91c19sYW1iZGFfMjA+IGhlbG0tZnV6enktaGlnaGxpZ2h0LW1hdGNoZXMp
ICh2b2xhdGlsZSAuIHQpIChtYXRjaCBpZGVudGl0eSkgKGZ1enp5LW1hdGNoIC4gdCkgKHJlZGlz
cGxheSAuIGlkZW50aXR5KSAobm9tYXJrIC4gdCkgKGNvZXJjZSAuIGhlbG0tc3ltYm9saWZ5KSAo
aGVhZGVyLWxpbmUgLiAjKCJDLXU6IERlc2NyaWJlIHRoaXMgY29tbWFuZCAoa2VlcGluZyBzZXNz
aW9uKSIgMCAzIChmb250LWxvY2stZmFjZSBoZWxwLWtleS1iaW5kaW5nIGZhY2UgaGVscC1rZXkt
YmluZGluZykpKSAocmVzdW1lIC4gaGVsbS1NLXgtcmVzdW1lLWZuKSAobXVsdGltYXRjaCAuIHQp
IChtdXN0LW1hdGNoIC4gdCkgKGdyb3VwIC4gaGVsbS1jb21tYW5kKSAoZGF0YSAuICNbMCAiXDMw
MlwzMDFcMzAwXDMwM1wyMTFcMzA0JVwyMDciIFtjb21tYW5kcCAjPG9iYXJyYXkgbj05ODkxOT4g
aGVsbS1jb21wLXJlYWQtZ2V0LWNhbmRpZGF0ZXMgbmlsICIiXSA2XSkgKGdldC1saW5lIC4gYnVm
ZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzKSAoc2VhcmNoIGhlbG0tbW0tZXhhY3Qtc2VhcmNo
IGhlbG0tbW0tc2VhcmNoIGhlbG0tY2FuZGlkYXRlcy1pbi1idWZmZXItc2VhcmNoLWRlZmF1bHQt
Zm4gaGVsbS1mdXp6eS1zZWFyY2gpKSBuaWwgMCAxNTAgKGhlbG0tbW0tZXhhY3Qtc2VhcmNoIGhl
bG0tbW0tc2VhcmNoIGhlbG0tY2FuZGlkYXRlcy1pbi1idWZmZXItc2VhcmNoLWRlZmF1bHQtZm4g
aGVsbS1mdXp6eS1zZWFyY2gpIGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAicCIgbWFr
ZS1oYXNoLXRhYmxlIDp0ZXN0IGVxdWFsIGFsbG93LWR1cHMgaGVsbS1zZXQtY2FzZS1mb2xkLXNl
YXJjaCAwIDEgbmlsIChpbnZhbGlkLXJlZ2V4cCkgbG9va2luZy1hdCBhcHBseSBwb3MtYm9sIHBv
cy1lb2wgZ2V0LXRleHQtcHJvcGVydHkgbWF0Y2gtcGFydCBwcm9wZXJ0aXplIGdldGhhc2ggIiIg
aGVsbS1zZWFyY2gtbWF0Y2gtcGFydCBwdXRoYXNoIGFzc29jLWRlZmF1bHQgZmlsdGVyLW9uZS1i
eS1vbmUgZnVuY3Rpb25wIGNhc2UtZm9sZC1zZWFyY2hdIDE4XSBjYXRlZ29yeSB0IGZvbGxvdy1s
aW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0
aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZh
Y2UgYnV0dG9uKSkgIygiaGVsbS0tc2VhcmNoLWZyb20tY2FuZGlkYXRlLWJ1ZmZlci0xIiAwIDM2
IChoZWxwLWFyZ3MgKGhlbG0tLXNlYXJjaC1mcm9tLWNhbmRpZGF0ZS1idWZmZXItMSkgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tc2VhcmNoLWZyb20t
Y2FuZGlkYXRlLWJ1ZmZlciIgMCAzMyAoaGVscC1hcmdzIChoZWxtLXNlYXJjaC1mcm9tLWNhbmRp
ZGF0ZS1idWZmZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJoZWxtLWNhbmRpZGF0ZXMtaW4tYnVmZmVyLTEiIDAgMjcgKGhlbHAtYXJncyAoaGVsbS1jYW5k
aWRhdGVzLWluLWJ1ZmZlci0xKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygiaGVsbS1jYW5kaWRhdGVzLWluLWJ1ZmZlciIgMCAyNSAoaGVscC1hcmdzIChoZWxt
LWNhbmRpZGF0ZXMtaW4tYnVmZmVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygiaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UiIDAgMzIgKGhlbHAt
YXJncyAoaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWludGVycHJldC12YWx1ZSIgMCAyMCAo
aGVscC1hcmdzIChoZWxtLWludGVycHJldC12YWx1ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tZ2V0LWNhbmRpZGF0ZXMiIDAgMTkgKGhlbHAtYXJn
cyAoaGVsbS1nZXQtY2FuZGlkYXRlcykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImhlbG0tZ2V0LWNhY2hlZC1jYW5kaWRhdGVzIiAwIDI2IChoZWxwLWFyZ3Mg
KGhlbG0tZ2V0LWNhY2hlZC1jYW5kaWRhdGVzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygiaGVsbS1jb21wdXRlLW1hdGNoZXMiIDAgMjAgKGhlbHAtYXJncyAo
aGVsbS1jb21wdXRlLW1hdGNoZXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJoZWxtLS1jb2xsZWN0LW1hdGNoZXMiIDAgMjEgKGhlbHAtYXJncyAoaGVsbS0t
Y29sbGVjdC1tYXRjaGVzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiaGVsbS11cGRhdGUiIDAgMTEgKGhlbHAtYXJncyAoaGVsbS11cGRhdGUpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNoZWNrLW5ldy1pbnB1
dCIgMCAyMCAoaGVscC1hcmdzIChoZWxtLWNoZWNrLW5ldy1pbnB1dCkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tY2hlY2stbWluaWJ1ZmZlci1pbnB1
dCIgMCAyNyAoaGVscC1hcmdzIChoZWxtLWNoZWNrLW1pbmlidWZmZXItaW5wdXQpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9u
IDQyRj4iIDIwIDIzIChhY3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChr
ZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1h
cCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9u
KSkgKG1vZGUtbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1v
dXNlLTIgLiBwdXNoLWJ1dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0y
IC4gcHVzaC1idXR0b24pICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNr
d2FyZC1idXR0b24pICgyNyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndh
cmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEgI1swICIIXDIwNgUACT9cMjA1GQBcMzAyIHJcMzAzXDMw
NAJcIlwyMTZcMzA1IFwyMTBcMzA2ICpcMjYyAVwyMDciIFtoZWxtLWluLXBlcnNpc3RlbnQtYWN0
aW9uIGhlbG0tc3VzcGVuZC11cGRhdGUtZmxhZyBpbnRlcm5hbC0tYmVmb3JlLXNhdmUtc2VsZWN0
ZWQtd2luZG93IG1ha2UtY2xvc3VyZSAjWzAgIlwzMDFcMzAwIVwyMDciIFtWMCBpbnRlcm5hbC0t
YWZ0ZXItc2F2ZS1zZWxlY3RlZC13aW5kb3ddIDJdIGhlbG0tY2hlY2stbWluaWJ1ZmZlci1pbnB1
dCBoZWxtLXByaW50LWVycm9yLW1lc3NhZ2VzXSA0XSBjYXRlZ29yeSB0IGZvbGxvdy1saW5rIHQg
YnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3Mg
Ym9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0
dG9uKSldIDE3IFsjKCJzcGxpdC1zdHJpbmciIDAgMTIgKGhlbHAtYXJncyAoc3BsaXQtc3RyaW5n
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1nZXQt
Zmlyc3QtbGluZS1kb2N1bWVudGF0aW9uIiAwIDMzIChoZWxwLWFyZ3MgKGhlbG0tZ2V0LWZpcnN0
LWxpbmUtZG9jdW1lbnRhdGlvbikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImhlbG0tTS14LXRyYW5zZm9ybWVyLTEiIDAgMjIgKGhlbHAtYXJncyAoaGVsbS1N
LXgtdHJhbnNmb3JtZXItMSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImhlbG0tTS14LXRyYW5zZm9ybWVyIiAwIDIwIChoZWxwLWFyZ3MgKGhlbG0tTS14LXRy
YW5zZm9ybWVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
aGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UiIDAgMzIgKGhlbHAtYXJncyAoaGVsbS1h
cHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJoZWxtLXByb2Nlc3MtZmlsdGVyZWQtY2FuZGlkYXRlLXRyYW5zZm9y
bWVyIiAwIDQzIChoZWxwLWFyZ3MgKGhlbG0tcHJvY2Vzcy1maWx0ZXJlZC1jYW5kaWRhdGUtdHJh
bnNmb3JtZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJo
ZWxtLWNvbXB1dGUtbWF0Y2hlcyIgMCAyMCAoaGVscC1hcmdzIChoZWxtLWNvbXB1dGUtbWF0Y2hl
cykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tLWNv
bGxlY3QtbWF0Y2hlcyIgMCAyMSAoaGVscC1hcmdzIChoZWxtLS1jb2xsZWN0LW1hdGNoZXMpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLXVwZGF0ZSIg
MCAxMSAoaGVscC1hcmdzIChoZWxtLXVwZGF0ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImhlbG0tY2hlY2stbmV3LWlucHV0IiAwIDIwIChoZWxwLWFyZ3Mg
KGhlbG0tY2hlY2stbmV3LWlucHV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygiaGVsbS1jaGVjay1taW5pYnVmZmVyLWlucHV0IiAwIDI3IChoZWxwLWFyZ3Mg
KGhlbG0tY2hlY2stbWluaWJ1ZmZlci1pbnB1dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoIiM8Y29tcGlsZWQtZnVuY3Rpb24gNDJGPiIgMjAgMjMgKGFjdGlv
biBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hzY3JlZW4t
ZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3du
IC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtleW1h
cCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9u
KSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikgKDEz
IC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3IGtl
eW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0b24t
ZGF0YSAjWzAgIghcMjA2BQAJP1wyMDUZAFwzMDIgclwzMDNcMzA0AlwiXDIxNlwzMDUgXDIxMFwz
MDYgKlwyNjIBXDIwNyIgW2hlbG0taW4tcGVyc2lzdGVudC1hY3Rpb24gaGVsbS1zdXNwZW5kLXVw
ZGF0ZS1mbGFnIGludGVybmFsLS1iZWZvcmUtc2F2ZS1zZWxlY3RlZC13aW5kb3cgbWFrZS1jbG9z
dXJlICNbMCAiXDMwMVwzMDAhXDIwNyIgW1YwIGludGVybmFsLS1hZnRlci1zYXZlLXNlbGVjdGVk
LXdpbmRvd10gMl0gaGVsbS1jaGVjay1taW5pYnVmZmVyLWlucHV0IGhlbG0tcHJpbnQtZXJyb3It
bWVzc2FnZXNdIDRdIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBoZWxwLWVjaG8g
Im1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1mYWNlIGhp
Z2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0b24pKSAjKCJhcHBseSIgMCA1
IChoZWxwLWFyZ3MgKGFwcGx5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygidGltZXItZXZlbnQtaGFuZGxlciIgMCAxOSAoaGVscC1hcmdzICh0aW1lci1ldmVu
dC1oYW5kbGVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
aGVsbS1yZWFkLWZyb20tbWluaWJ1ZmZlciIgMCAyNSAoaGVscC1hcmdzIChoZWxtLXJlYWQtZnJv
bS1taW5pYnVmZmVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiaGVsbS1pbnRlcm5hbCIgMCAxMyAoaGVscC1hcmdzIChoZWxtLWludGVybmFsKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSldIDcgWyMoImhlbG0tY2FuZGlkYXRl
LWJ1ZmZlciIgMCAyMSAoaGVscC1hcmdzIChoZWxtLWNhbmRpZGF0ZS1idWZmZXIpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLW1ha2Utc2VwYXJhdG9y
IiAwIDE5IChoZWxwLWFyZ3MgKGhlbG0tbWFrZS1zZXBhcmF0b3IpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLU0teC10cmFuc2Zvcm1lci0xIiAwIDIy
IChoZWxwLWFyZ3MgKGhlbG0tTS14LXRyYW5zZm9ybWVyLTEpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLU0teC10cmFuc2Zvcm1lciIgMCAyMCAoaGVs
cC1hcmdzIChoZWxtLU0teC10cmFuc2Zvcm1lcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImhlbG0tYXBwbHktZnVuY3Rpb25zLWZyb20tc291cmNlIiAwIDMy
IChoZWxwLWFyZ3MgKGhlbG0tYXBwbHktZnVuY3Rpb25zLWZyb20tc291cmNlKSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1wcm9jZXNzLWZpbHRlcmVk
LWNhbmRpZGF0ZS10cmFuc2Zvcm1lciIgMCA0MyAoaGVscC1hcmdzIChoZWxtLXByb2Nlc3MtZmls
dGVyZWQtY2FuZGlkYXRlLXRyYW5zZm9ybWVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygiaGVsbS1jb21wdXRlLW1hdGNoZXMiIDAgMjAgKGhlbHAtYXJncyAo
aGVsbS1jb21wdXRlLW1hdGNoZXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJoZWxtLS1jb2xsZWN0LW1hdGNoZXMiIDAgMjEgKGhlbHAtYXJncyAoaGVsbS0t
Y29sbGVjdC1tYXRjaGVzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiaGVsbS11cGRhdGUiIDAgMTEgKGhlbHAtYXJncyAoaGVsbS11cGRhdGUpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNoZWNrLW5ldy1pbnB1
dCIgMCAyMCAoaGVscC1hcmdzIChoZWxtLWNoZWNrLW5ldy1pbnB1dCkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tY2hlY2stbWluaWJ1ZmZlci1pbnB1
dCIgMCAyNyAoaGVscC1hcmdzIChoZWxtLWNoZWNrLW1pbmlidWZmZXItaW5wdXQpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9u
IDQyRj4iIDIwIDIzIChhY3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChr
ZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1h
cCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9u
KSkgKG1vZGUtbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1v
dXNlLTIgLiBwdXNoLWJ1dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0y
IC4gcHVzaC1idXR0b24pICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNr
d2FyZC1idXR0b24pICgyNyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndh
cmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEgI1swICIIXDIwNgUACT9cMjA1GQBcMzAyIHJcMzAzXDMw
NAJcIlwyMTZcMzA1IFwyMTBcMzA2ICpcMjYyAVwyMDciIFtoZWxtLWluLXBlcnNpc3RlbnQtYWN0
aW9uIGhlbG0tc3VzcGVuZC11cGRhdGUtZmxhZyBpbnRlcm5hbC0tYmVmb3JlLXNhdmUtc2VsZWN0
ZWQtd2luZG93IG1ha2UtY2xvc3VyZSAjWzAgIlwzMDFcMzAwIVwyMDciIFtWMCBpbnRlcm5hbC0t
YWZ0ZXItc2F2ZS1zZWxlY3RlZC13aW5kb3ddIDJdIGhlbG0tY2hlY2stbWluaWJ1ZmZlci1pbnB1
dCBoZWxtLXByaW50LWVycm9yLW1lc3NhZ2VzXSA0XSBjYXRlZ29yeSB0IGZvbGxvdy1saW5rIHQg
YnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3Mg
Ym9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0
dG9uKSkgIygiYXBwbHkiIDAgNSAoaGVscC1hcmdzIChhcHBseSkgY2F0ZWdvcnkgaGVscC1mdW5j
dGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoInRpbWVyLWV2ZW50LWhhbmRsZXIiIDAgMTkgKGhl
bHAtYXJncyAodGltZXItZXZlbnQtaGFuZGxlcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImhlbG0tcmVhZC1mcm9tLW1pbmlidWZmZXIiIDAgMjUgKGhlbHAt
YXJncyAoaGVsbS1yZWFkLWZyb20tbWluaWJ1ZmZlcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0taW50ZXJuYWwiIDAgMTMgKGhlbHAtYXJncyAoaGVs
bS1pbnRlcm5hbCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpXSA2
IFsjKCJzdWJzdGl0dXRlLWNvbW1hbmQta2V5cyIgMCAyMyAoaGVscC1hcmdzIChzdWJzdGl0dXRl
LWNvbW1hbmQta2V5cykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImhlbG0tTS14LXRyYW5zZm9ybWVyLTEiIDAgMjIgKGhlbHAtYXJncyAoaGVsbS1NLXgtdHJh
bnNmb3JtZXItMSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
ImhlbG0tTS14LXRyYW5zZm9ybWVyIiAwIDIwIChoZWxwLWFyZ3MgKGhlbG0tTS14LXRyYW5zZm9y
bWVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1h
cHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UiIDAgMzIgKGhlbHAtYXJncyAoaGVsbS1hcHBseS1m
dW5jdGlvbnMtZnJvbS1zb3VyY2UpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJoZWxtLXByb2Nlc3MtZmlsdGVyZWQtY2FuZGlkYXRlLXRyYW5zZm9ybWVyIiAw
IDQzIChoZWxwLWFyZ3MgKGhlbG0tcHJvY2Vzcy1maWx0ZXJlZC1jYW5kaWRhdGUtdHJhbnNmb3Jt
ZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNv
bXB1dGUtbWF0Y2hlcyIgMCAyMCAoaGVscC1hcmdzIChoZWxtLWNvbXB1dGUtbWF0Y2hlcykgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tLWNvbGxlY3Qt
bWF0Y2hlcyIgMCAyMSAoaGVscC1hcmdzIChoZWxtLS1jb2xsZWN0LW1hdGNoZXMpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLXVwZGF0ZSIgMCAxMSAo
aGVscC1hcmdzIChoZWxtLXVwZGF0ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImhlbG0tY2hlY2stbmV3LWlucHV0IiAwIDIwIChoZWxwLWFyZ3MgKGhlbG0t
Y2hlY2stbmV3LWlucHV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiaGVsbS1jaGVjay1taW5pYnVmZmVyLWlucHV0IiAwIDI3IChoZWxwLWFyZ3MgKGhlbG0t
Y2hlY2stbWluaWJ1ZmZlci1pbnB1dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoIiM8Y29tcGlsZWQtZnVuY3Rpb24gNDJGPiIgMjAgMjMgKGFjdGlvbiBoZWxw
LWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAu
IHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVz
aC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtleW1hcCAodG91
Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKGZv
bGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikgKDEzIC4gcHVz
aC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3IGtleW1hcCAo
OSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0b24tZGF0YSAj
WzAgIghcMjA2BQAJP1wyMDUZAFwzMDIgclwzMDNcMzA0AlwiXDIxNlwzMDUgXDIxMFwzMDYgKlwy
NjIBXDIwNyIgW2hlbG0taW4tcGVyc2lzdGVudC1hY3Rpb24gaGVsbS1zdXNwZW5kLXVwZGF0ZS1m
bGFnIGludGVybmFsLS1iZWZvcmUtc2F2ZS1zZWxlY3RlZC13aW5kb3cgbWFrZS1jbG9zdXJlICNb
MCAiXDMwMVwzMDAhXDIwNyIgW1YwIGludGVybmFsLS1hZnRlci1zYXZlLXNlbGVjdGVkLXdpbmRv
d10gMl0gaGVsbS1jaGVjay1taW5pYnVmZmVyLWlucHV0IGhlbG0tcHJpbnQtZXJyb3ItbWVzc2Fn
ZXNdIDRdIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBoZWxwLWVjaG8gIm1vdXNl
LTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdo
dCBmb250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0b24pKSAjKCJhcHBseSIgMCA1IChoZWxw
LWFyZ3MgKGFwcGx5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygidGltZXItZXZlbnQtaGFuZGxlciIgMCAxOSAoaGVscC1hcmdzICh0aW1lci1ldmVudC1oYW5k
bGVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1y
ZWFkLWZyb20tbWluaWJ1ZmZlciIgMCAyNSAoaGVscC1hcmdzIChoZWxtLXJlYWQtZnJvbS1taW5p
YnVmZmVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVs
bS1pbnRlcm5hbCIgMCAxMyAoaGVscC1hcmdzIChoZWxtLWludGVybmFsKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbSIgMCA0IChoZWxwLWFyZ3MgKGhl
bG0pIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKV0gNyBbIygia2ls
bC1idWZmZXIiIDAgMTEgKGhlbHAtYXJncyAoa2lsbC1idWZmZXIpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIDMyOT4iIDIw
IDIzIChhY3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRv
dWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hz
Y3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUt
bGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBw
dXNoLWJ1dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1i
dXR0b24pICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0
b24pICgyNyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9u
KSkgYnV0dG9uLWRhdGEgI1swICJcMzAxXDMwMCFcMjA1CQBcMzAyXDMwMCFcMjA3IiBbIzxraWxs
ZWQgYnVmZmVyPiBidWZmZXItbmFtZSBraWxsLWJ1ZmZlcl0gMl0gY2F0ZWdvcnkgdCBmb2xsb3ct
bGluayB0IGJ1dHRvbiB0IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBmdW5j
dGlvbidzIGJvZHkiIG1vdXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRvbiBm
YWNlIGJ1dHRvbikpICMoInN1YnN0aXR1dGUtY29tbWFuZC1rZXlzIiAwIDIzIChoZWxwLWFyZ3Mg
KHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiaGVsbS1nZXQtZmlyc3QtbGluZS1kb2N1bWVudGF0aW9uIiAwIDMzICho
ZWxwLWFyZ3MgKGhlbG0tZ2V0LWZpcnN0LWxpbmUtZG9jdW1lbnRhdGlvbikgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14LXRyYW5zZm9ybWVyLTEi
IDAgMjIgKGhlbHAtYXJncyAoaGVsbS1NLXgtdHJhbnNmb3JtZXItMSkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14LXRyYW5zZm9ybWVyIiAwIDIw
IChoZWxwLWFyZ3MgKGhlbG0tTS14LXRyYW5zZm9ybWVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2Ui
IDAgMzIgKGhlbHAtYXJncyAoaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLXByb2Nlc3MtZmls
dGVyZWQtY2FuZGlkYXRlLXRyYW5zZm9ybWVyIiAwIDQzIChoZWxwLWFyZ3MgKGhlbG0tcHJvY2Vz
cy1maWx0ZXJlZC1jYW5kaWRhdGUtdHJhbnNmb3JtZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNvbXB1dGUtbWF0Y2hlcyIgMCAyMCAoaGVscC1h
cmdzIChoZWxtLWNvbXB1dGUtbWF0Y2hlcykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoImhlbG0tLWNvbGxlY3QtbWF0Y2hlcyIgMCAyMSAoaGVscC1hcmdzICho
ZWxtLS1jb2xsZWN0LW1hdGNoZXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJoZWxtLXVwZGF0ZSIgMCAxMSAoaGVscC1hcmdzIChoZWxtLXVwZGF0ZSkgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tY2hlY2stbmV3
LWlucHV0IiAwIDIwIChoZWxwLWFyZ3MgKGhlbG0tY2hlY2stbmV3LWlucHV0KSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1jaGVjay1taW5pYnVmZmVy
LWlucHV0IiAwIDI3IChoZWxwLWFyZ3MgKGhlbG0tY2hlY2stbWluaWJ1ZmZlci1pbnB1dCkgY2F0
ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIiM8Y29tcGlsZWQtZnVu
Y3Rpb24gNDJGPiIgMjAgMjMgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXlt
YXAgKGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUg
a2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1i
dXR0b24pKSAobW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9u
KSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1v
dXNlLTIgLiBwdXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAu
IGJhY2t3YXJkLWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4g
Zm9yd2FyZC1idXR0b24pKSBidXR0b24tZGF0YSAjWzAgIghcMjA2BQAJP1wyMDUZAFwzMDIgclwz
MDNcMzA0AlwiXDIxNlwzMDUgXDIxMFwzMDYgKlwyNjIBXDIwNyIgW2hlbG0taW4tcGVyc2lzdGVu
dC1hY3Rpb24gaGVsbS1zdXNwZW5kLXVwZGF0ZS1mbGFnIGludGVybmFsLS1iZWZvcmUtc2F2ZS1z
ZWxlY3RlZC13aW5kb3cgbWFrZS1jbG9zdXJlICNbMCAiXDMwMVwzMDAhXDIwNyIgW1YwIGludGVy
bmFsLS1hZnRlci1zYXZlLXNlbGVjdGVkLXdpbmRvd10gMl0gaGVsbS1jaGVjay1taW5pYnVmZmVy
LWlucHV0IGhlbG0tcHJpbnQtZXJyb3ItbWVzc2FnZXNdIDRdIGNhdGVnb3J5IHQgZm9sbG93LWxp
bmsgdCBidXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rp
b24ncyBib2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFj
ZSBidXR0b24pKSAjKCJhcHBseSIgMCA1IChoZWxwLWFyZ3MgKGFwcGx5KSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygidGltZXItZXZlbnQtaGFuZGxlciIgMCAx
OSAoaGVscC1hcmdzICh0aW1lci1ldmVudC1oYW5kbGVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSldIDYgWyMoInN0cmluZy13aWR0aCIgMCAxMiAoaGVscC1hcmdz
IChzdHJpbmctd2lkdGgpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJ0cnVuY2F0ZS1zdHJpbmctdG8td2lkdGgiIDAgMjQgKGhlbHAtYXJncyAodHJ1bmNhdGUt
c3RyaW5nLXRvLXdpZHRoKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiaGVsbS1nZXQtZmlyc3QtbGluZS1kb2N1bWVudGF0aW9uIiAwIDMzIChoZWxwLWFyZ3Mg
KGhlbG0tZ2V0LWZpcnN0LWxpbmUtZG9jdW1lbnRhdGlvbikgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14LXRyYW5zZm9ybWVyLTEiIDAgMjIgKGhl
bHAtYXJncyAoaGVsbS1NLXgtdHJhbnNmb3JtZXItMSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14LXRyYW5zZm9ybWVyIiAwIDIwIChoZWxwLWFy
Z3MgKGhlbG0tTS14LXRyYW5zZm9ybWVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UiIDAgMzIgKGhl
bHAtYXJncyAoaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLXByb2Nlc3MtZmlsdGVyZWQtY2Fu
ZGlkYXRlLXRyYW5zZm9ybWVyIiAwIDQzIChoZWxwLWFyZ3MgKGhlbG0tcHJvY2Vzcy1maWx0ZXJl
ZC1jYW5kaWRhdGUtdHJhbnNmb3JtZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJoZWxtLWNvbXB1dGUtbWF0Y2hlcyIgMCAyMCAoaGVscC1hcmdzIChoZWxt
LWNvbXB1dGUtbWF0Y2hlcykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImhlbG0tLWNvbGxlY3QtbWF0Y2hlcyIgMCAyMSAoaGVscC1hcmdzIChoZWxtLS1jb2xs
ZWN0LW1hdGNoZXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJoZWxtLXVwZGF0ZSIgMCAxMSAoaGVscC1hcmdzIChoZWxtLXVwZGF0ZSkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tY2hlY2stbmV3LWlucHV0IiAw
IDIwIChoZWxwLWFyZ3MgKGhlbG0tY2hlY2stbmV3LWlucHV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1jaGVjay1taW5pYnVmZmVyLWlucHV0IiAw
IDI3IChoZWxwLWFyZ3MgKGhlbG0tY2hlY2stbWluaWJ1ZmZlci1pbnB1dCkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIiM8Y29tcGlsZWQtZnVuY3Rpb24gNDJG
PiIgMjAgMjMgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1h
cCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0
b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAo
bW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2Ut
MiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBw
dXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJk
LWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1i
dXR0b24pKSBidXR0b24tZGF0YSAjWzAgIghcMjA2BQAJP1wyMDUZAFwzMDIgclwzMDNcMzA0Alwi
XDIxNlwzMDUgXDIxMFwzMDYgKlwyNjIBXDIwNyIgW2hlbG0taW4tcGVyc2lzdGVudC1hY3Rpb24g
aGVsbS1zdXNwZW5kLXVwZGF0ZS1mbGFnIGludGVybmFsLS1iZWZvcmUtc2F2ZS1zZWxlY3RlZC13
aW5kb3cgbWFrZS1jbG9zdXJlICNbMCAiXDMwMVwzMDAhXDIwNyIgW1YwIGludGVybmFsLS1hZnRl
ci1zYXZlLXNlbGVjdGVkLXdpbmRvd10gMl0gaGVsbS1jaGVjay1taW5pYnVmZmVyLWlucHV0IGhl
bG0tcHJpbnQtZXJyb3ItbWVzc2FnZXNdIDRdIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBidXR0
b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBib2R5
IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0b24p
KSAjKCJhcHBseSIgMCA1IChoZWxwLWFyZ3MgKGFwcGx5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygidGltZXItZXZlbnQtaGFuZGxlciIgMCAxOSAoaGVscC1h
cmdzICh0aW1lci1ldmVudC1oYW5kbGVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiaGVsbS1yZWFkLWZyb20tbWluaWJ1ZmZlciIgMCAyNSAoaGVscC1hcmdz
IChoZWxtLXJlYWQtZnJvbS1taW5pYnVmZmVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSldIDYgWyMoInN1YnN0aXR1dGUtY29tbWFuZC1rZXlzIiAwIDIzIChoZWxw
LWFyZ3MgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1nZXQtZmlyc3QtbGluZS1kb2N1bWVudGF0aW9uIiAw
IDMzIChoZWxwLWFyZ3MgKGhlbG0tZ2V0LWZpcnN0LWxpbmUtZG9jdW1lbnRhdGlvbikgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14LXRyYW5zZm9y
bWVyLTEiIDAgMjIgKGhlbHAtYXJncyAoaGVsbS1NLXgtdHJhbnNmb3JtZXItMSkgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14LXRyYW5zZm9ybWVy
IiAwIDIwIChoZWxwLWFyZ3MgKGhlbG0tTS14LXRyYW5zZm9ybWVyKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1z
b3VyY2UiIDAgMzIgKGhlbHAtYXJncyAoaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2Up
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLXByb2Nl
c3MtZmlsdGVyZWQtY2FuZGlkYXRlLXRyYW5zZm9ybWVyIiAwIDQzIChoZWxwLWFyZ3MgKGhlbG0t
cHJvY2Vzcy1maWx0ZXJlZC1jYW5kaWRhdGUtdHJhbnNmb3JtZXIpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNvbXB1dGUtbWF0Y2hlcyIgMCAyMCAo
aGVscC1hcmdzIChoZWxtLWNvbXB1dGUtbWF0Y2hlcykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tLWNvbGxlY3QtbWF0Y2hlcyIgMCAyMSAoaGVscC1h
cmdzIChoZWxtLS1jb2xsZWN0LW1hdGNoZXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJoZWxtLXVwZGF0ZSIgMCAxMSAoaGVscC1hcmdzIChoZWxtLXVwZGF0
ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tY2hl
Y2stbmV3LWlucHV0IiAwIDIwIChoZWxwLWFyZ3MgKGhlbG0tY2hlY2stbmV3LWlucHV0KSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1jaGVjay1taW5p
YnVmZmVyLWlucHV0IiAwIDI3IChoZWxwLWFyZ3MgKGhlbG0tY2hlY2stbWluaWJ1ZmZlci1pbnB1
dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIiM8Y29tcGls
ZWQtZnVuY3Rpb24gNDJGPiIgMjAgMjMgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlv
biBrZXltYXAgKGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVy
LWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4g
cHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gt
YnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFj
ZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFj
a3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikp
ICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0b24tZGF0YSAjWzAgIghcMjA2BQAJP1wyMDUZAFwz
MDIgclwzMDNcMzA0AlwiXDIxNlwzMDUgXDIxMFwzMDYgKlwyNjIBXDIwNyIgW2hlbG0taW4tcGVy
c2lzdGVudC1hY3Rpb24gaGVsbS1zdXNwZW5kLXVwZGF0ZS1mbGFnIGludGVybmFsLS1iZWZvcmUt
c2F2ZS1zZWxlY3RlZC13aW5kb3cgbWFrZS1jbG9zdXJlICNbMCAiXDMwMVwzMDAhXDIwNyIgW1Yw
IGludGVybmFsLS1hZnRlci1zYXZlLXNlbGVjdGVkLXdpbmRvd10gMl0gaGVsbS1jaGVjay1taW5p
YnVmZmVyLWlucHV0IGhlbG0tcHJpbnQtZXJyb3ItbWVzc2FnZXNdIDRdIGNhdGVnb3J5IHQgZm9s
bG93LWxpbmsgdCBidXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUg
ZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0
b24gZmFjZSBidXR0b24pKSAjKCJhcHBseSIgMCA1IChoZWxwLWFyZ3MgKGFwcGx5KSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygidGltZXItZXZlbnQtaGFuZGxl
ciIgMCAxOSAoaGVscC1hcmdzICh0aW1lci1ldmVudC1oYW5kbGVyKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1yZWFkLWZyb20tbWluaWJ1ZmZlciIg
MCAyNSAoaGVscC1hcmdzIChoZWxtLXJlYWQtZnJvbS1taW5pYnVmZmVyKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1pbnRlcm5hbCIgMCAxMyAoaGVs
cC1hcmdzIChoZWxtLWludGVybmFsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSldIDExIFsjKCJoZWxtLU0teC10cmFuc2Zvcm1lci0xIiAwIDIyIChoZWxwLWFyZ3Mg
KGhlbG0tTS14LXRyYW5zZm9ybWVyLTEpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJoZWxtLU0teC10cmFuc2Zvcm1lciIgMCAyMCAoaGVscC1hcmdzIChoZWxt
LU0teC10cmFuc2Zvcm1lcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImhlbG0tYXBwbHktZnVuY3Rpb25zLWZyb20tc291cmNlIiAwIDMyIChoZWxwLWFyZ3Mg
KGhlbG0tYXBwbHktZnVuY3Rpb25zLWZyb20tc291cmNlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9u
LWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1wcm9jZXNzLWZpbHRlcmVkLWNhbmRpZGF0ZS10
cmFuc2Zvcm1lciIgMCA0MyAoaGVscC1hcmdzIChoZWxtLXByb2Nlc3MtZmlsdGVyZWQtY2FuZGlk
YXRlLXRyYW5zZm9ybWVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiaGVsbS1jb21wdXRlLW1hdGNoZXMiIDAgMjAgKGhlbHAtYXJncyAoaGVsbS1jb21wdXRl
LW1hdGNoZXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJo
ZWxtLS1jb2xsZWN0LW1hdGNoZXMiIDAgMjEgKGhlbHAtYXJncyAoaGVsbS0tY29sbGVjdC1tYXRj
aGVzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS11
cGRhdGUiIDAgMTEgKGhlbHAtYXJncyAoaGVsbS11cGRhdGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNoZWNrLW5ldy1pbnB1dCIgMCAyMCAoaGVs
cC1hcmdzIChoZWxtLWNoZWNrLW5ldy1pbnB1dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0
b24gYnV0dG9uICh0KSkpICMoImhlbG0tY2hlY2stbWluaWJ1ZmZlci1pbnB1dCIgMCAyNyAoaGVs
cC1hcmdzIChoZWxtLWNoZWNrLW1pbmlidWZmZXItaW5wdXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0aW9uIDQyRj4iIDIwIDIz
IChhY3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFwIChrZXltYXAgKHRvdWNo
c2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtleW1hcCAodG91Y2hzY3Jl
ZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKG1vZGUtbGlu
ZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNo
LWJ1dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3VzZS0yIC4gcHVzaC1idXR0
b24pICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBiYWNrd2FyZC1idXR0b24p
ICgyNyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZvcndhcmQtYnV0dG9uKSkg
YnV0dG9uLWRhdGEgI1swICIIXDIwNgUACT9cMjA1GQBcMzAyIHJcMzAzXDMwNAJcIlwyMTZcMzA1
IFwyMTBcMzA2ICpcMjYyAVwyMDciIFtoZWxtLWluLXBlcnNpc3RlbnQtYWN0aW9uIGhlbG0tc3Vz
cGVuZC11cGRhdGUtZmxhZyBpbnRlcm5hbC0tYmVmb3JlLXNhdmUtc2VsZWN0ZWQtd2luZG93IG1h
a2UtY2xvc3VyZSAjWzAgIlwzMDFcMzAwIVwyMDciIFtWMCBpbnRlcm5hbC0tYWZ0ZXItc2F2ZS1z
ZWxlY3RlZC13aW5kb3ddIDJdIGhlbG0tY2hlY2stbWluaWJ1ZmZlci1pbnB1dCBoZWxtLXByaW50
LWVycm9yLW1lc3NhZ2VzXSA0XSBjYXRlZ29yeSB0IGZvbGxvdy1saW5rIHQgYnV0dG9uIHQgaGVs
cC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9keSIgbW91c2Ut
ZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9uKSkgIygiYXBw
bHkiIDAgNSAoaGVscC1hcmdzIChhcHBseSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoInRpbWVyLWV2ZW50LWhhbmRsZXIiIDAgMTkgKGhlbHAtYXJncyAodGlt
ZXItZXZlbnQtaGFuZGxlcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImhlbG0tcmVhZC1mcm9tLW1pbmlidWZmZXIiIDAgMjUgKGhlbHAtYXJncyAoaGVsbS1y
ZWFkLWZyb20tbWluaWJ1ZmZlcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpICMoImhlbG0taW50ZXJuYWwiIDAgMTMgKGhlbHAtYXJncyAoaGVsbS1pbnRlcm5hbCkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0iIDAgNCAo
aGVscC1hcmdzIChoZWxtKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiaGVsbSIgMCA0IChoZWxwLWFyZ3MgKGhlbG0pIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKV0gMTEgWyMoIm1ha2UtY2xvc3VyZSIgMCAxMiAoaGVscC1hcmdz
IChtYWtlLWNsb3N1cmUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJoZWxtLWZ1enp5LWRlZmF1bHQtaGlnaGxpZ2h0LW1hdGNoLTEiIDAgMzYgKGhlbHAtYXJn
cyAoaGVsbS1mdXp6eS1kZWZhdWx0LWhpZ2hsaWdodC1tYXRjaC0xKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1mdXp6eS1kZWZhdWx0LWhpZ2hsaWdo
dC1tYXRjaCIgMCAzNCAoaGVscC1hcmdzIChoZWxtLWZ1enp5LWRlZmF1bHQtaGlnaGxpZ2h0LW1h
dGNoKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1m
dXp6eS1oaWdobGlnaHQtbWF0Y2hlcyIgMCAyOCAoaGVscC1hcmdzIChoZWxtLWZ1enp5LWhpZ2hs
aWdodC1tYXRjaGVzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UiIDAgMzIgKGhlbHAtYXJncyAoaGVs
bS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLXByb2Nlc3MtZmlsdGVyZWQtY2FuZGlkYXRlLXRyYW5z
Zm9ybWVyIiAwIDQzIChoZWxwLWFyZ3MgKGhlbG0tcHJvY2Vzcy1maWx0ZXJlZC1jYW5kaWRhdGUt
dHJhbnNmb3JtZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJoZWxtLWNvbXB1dGUtbWF0Y2hlcyIgMCAyMCAoaGVscC1hcmdzIChoZWxtLWNvbXB1dGUtbWF0
Y2hlcykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0t
LWNvbGxlY3QtbWF0Y2hlcyIgMCAyMSAoaGVscC1hcmdzIChoZWxtLS1jb2xsZWN0LW1hdGNoZXMp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLXVwZGF0
ZSIgMCAxMSAoaGVscC1hcmdzIChoZWxtLXVwZGF0ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tY2hlY2stbmV3LWlucHV0IiAwIDIwIChoZWxwLWFy
Z3MgKGhlbG0tY2hlY2stbmV3LWlucHV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiaGVsbS1jaGVjay1taW5pYnVmZmVyLWlucHV0IiAwIDI3IChoZWxwLWFy
Z3MgKGhlbG0tY2hlY2stbWluaWJ1ZmZlci1pbnB1dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoIiM8Y29tcGlsZWQtZnVuY3Rpb24gNDJGPiIgMjAgMjMgKGFj
dGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hzY3Jl
ZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1k
b3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtl
eW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0
dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikg
KDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3
IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0
b24tZGF0YSAjWzAgIghcMjA2BQAJP1wyMDUZAFwzMDIgclwzMDNcMzA0AlwiXDIxNlwzMDUgXDIx
MFwzMDYgKlwyNjIBXDIwNyIgW2hlbG0taW4tcGVyc2lzdGVudC1hY3Rpb24gaGVsbS1zdXNwZW5k
LXVwZGF0ZS1mbGFnIGludGVybmFsLS1iZWZvcmUtc2F2ZS1zZWxlY3RlZC13aW5kb3cgbWFrZS1j
bG9zdXJlICNbMCAiXDMwMVwzMDAhXDIwNyIgW1YwIGludGVybmFsLS1hZnRlci1zYXZlLXNlbGVj
dGVkLXdpbmRvd10gMl0gaGVsbS1jaGVjay1taW5pYnVmZmVyLWlucHV0IGhlbG0tcHJpbnQtZXJy
b3ItbWVzc2FnZXNdIDRdIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBoZWxwLWVj
aG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1mYWNl
IGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0b24pKSAjKCJhcHBseSIg
MCA1IChoZWxwLWFyZ3MgKGFwcGx5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygidGltZXItZXZlbnQtaGFuZGxlciIgMCAxOSAoaGVscC1hcmdzICh0aW1lci1l
dmVudC1oYW5kbGVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkg
IygiaGVsbS1yZWFkLWZyb20tbWluaWJ1ZmZlciIgMCAyNSAoaGVscC1hcmdzIChoZWxtLXJlYWQt
ZnJvbS1taW5pYnVmZmVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiaGVsbS1pbnRlcm5hbCIgMCAxMyAoaGVscC1hcmdzIChoZWxtLWludGVybmFsKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSldIDMgWyMoImhlbG0taW5zZXJ0
LW1hdGNoIiAwIDE3IChoZWxwLWFyZ3MgKGhlbG0taW5zZXJ0LW1hdGNoKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1yZW5kZXItc291cmNlIiAwIDE4
IChoZWxwLWFyZ3MgKGhlbG0tcmVuZGVyLXNvdXJjZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tdXBkYXRlIiAwIDExIChoZWxwLWFyZ3MgKGhlbG0t
dXBkYXRlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVs
bS1jaGVjay1uZXctaW5wdXQiIDAgMjAgKGhlbHAtYXJncyAoaGVsbS1jaGVjay1uZXctaW5wdXQp
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNoZWNr
LW1pbmlidWZmZXItaW5wdXQiIDAgMjcgKGhlbHAtYXJncyAoaGVsbS1jaGVjay1taW5pYnVmZmVy
LWlucHV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiIzxj
b21waWxlZC1mdW5jdGlvbiA0MkY+IiAyMCAyMyAoYWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5LWZ1
bmN0aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pICho
ZWFkZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNl
LTIgLiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4g
cHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsgLiBtb3Vz
ZS1mYWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5bWFw
IChiYWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dhcmQtYnV0
dG9uKSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhICNbMCAiCFwyMDYFAAk/XDIw
NRkAXDMwMiByXDMwM1wzMDQCXCJcMjE2XDMwNSBcMjEwXDMwNiAqXDI2MgFcMjA3IiBbaGVsbS1p
bi1wZXJzaXN0ZW50LWFjdGlvbiBoZWxtLXN1c3BlbmQtdXBkYXRlLWZsYWcgaW50ZXJuYWwtLWJl
Zm9yZS1zYXZlLXNlbGVjdGVkLXdpbmRvdyBtYWtlLWNsb3N1cmUgI1swICJcMzAxXDMwMCFcMjA3
IiBbVjAgaW50ZXJuYWwtLWFmdGVyLXNhdmUtc2VsZWN0ZWQtd2luZG93XSAyXSBoZWxtLWNoZWNr
LW1pbmlidWZmZXItaW5wdXQgaGVsbS1wcmludC1lcnJvci1tZXNzYWdlc10gNF0gY2F0ZWdvcnkg
dCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0IGhlbHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5
IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1vdXNlLWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNl
IGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMoImFwcGx5IiAwIDUgKGhlbHAtYXJncyAoYXBwbHkpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJ0aW1lci1ldmVudC1o
YW5kbGVyIiAwIDE5IChoZWxwLWFyZ3MgKHRpbWVyLWV2ZW50LWhhbmRsZXIpIGNhdGVnb3J5IGhl
bHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLXJlYWQtZnJvbS1taW5pYnVm
ZmVyIiAwIDI1IChoZWxwLWFyZ3MgKGhlbG0tcmVhZC1mcm9tLW1pbmlidWZmZXIpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWludGVybmFsIiAwIDEz
IChoZWxwLWFyZ3MgKGhlbG0taW50ZXJuYWwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJoZWxtIiAwIDQgKGhlbHAtYXJncyAoaGVsbSkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0iIDAgNCAoaGVscC1hcmdzICho
ZWxtKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1N
LXgtcmVhZC1leHRlbmRlZC1jb21tYW5kIiAwIDMwIChoZWxwLWFyZ3MgKGhlbG0tTS14LXJlYWQt
ZXh0ZW5kZWQtY29tbWFuZCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImhlbG0tTS14IiAwIDggKGhlbHAtYXJncyAoaGVsbS1NLXgpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJmdW5jYWxsLWludGVyYWN0aXZlbHkiIDAg
MjEgKGhlbHAtYXJncyAoZnVuY2FsbC1pbnRlcmFjdGl2ZWx5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiY29tbWFuZC1leGVjdXRlIiAwIDE1IChoZWxwLWFy
Z3MgKGNvbW1hbmQtZXhlY3V0ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9u
ICh0KSkpXSAzIFsjKCJraWxsLWJ1ZmZlciIgMCAxMSAoaGVscC1hcmdzIChraWxsLWJ1ZmZlcikg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIiM8Y29tcGlsZWQt
ZnVuY3Rpb24gMjY0PiIgMjAgMjMgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBr
ZXltYXAgKGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxp
bmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVz
aC1idXR0b24pKSAobW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0
dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkg
KG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3Rh
YiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5
IC4gZm9yd2FyZC1idXR0b24pKSBidXR0b24tZGF0YSAjWzAgIlwzMDFcMzAwIVwyMDUJAFwzMDJc
MzAwIVwyMDciIFsjPGtpbGxlZCBidWZmZXI+IGJ1ZmZlci1uYW1lIGtpbGwtYnVmZmVyXSAyXSBj
YXRlZ29yeSB0IGZvbGxvdy1saW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6
IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1s
b2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9uKSkgIygic3Vic3RpdHV0ZS1jb21tYW5kLWtleXMi
IDAgMjMgKGhlbHAtYXJncyAoc3Vic3RpdHV0ZS1jb21tYW5kLWtleXMpIGNhdGVnb3J5IGhlbHAt
ZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLU0teC10cmFuc2Zvcm1lci0xIiAw
IDIyIChoZWxwLWFyZ3MgKGhlbG0tTS14LXRyYW5zZm9ybWVyLTEpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLU0teC10cmFuc2Zvcm1lciIgMCAyMCAo
aGVscC1hcmdzIChoZWxtLU0teC10cmFuc2Zvcm1lcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tYXBwbHktZnVuY3Rpb25zLWZyb20tc291cmNlIiAw
IDMyIChoZWxwLWFyZ3MgKGhlbG0tYXBwbHktZnVuY3Rpb25zLWZyb20tc291cmNlKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1wcm9jZXNzLWZpbHRl
cmVkLWNhbmRpZGF0ZS10cmFuc2Zvcm1lciIgMCA0MyAoaGVscC1hcmdzIChoZWxtLXByb2Nlc3Mt
ZmlsdGVyZWQtY2FuZGlkYXRlLXRyYW5zZm9ybWVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1jb21wdXRlLW1hdGNoZXMiIDAgMjAgKGhlbHAtYXJn
cyAoaGVsbS1jb21wdXRlLW1hdGNoZXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJoZWxtLS1jb2xsZWN0LW1hdGNoZXMiIDAgMjEgKGhlbHAtYXJncyAoaGVs
bS0tY29sbGVjdC1tYXRjaGVzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygiaGVsbS11cGRhdGUiIDAgMTEgKGhlbHAtYXJncyAoaGVsbS11cGRhdGUpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNoZWNrLW5ldy1p
bnB1dCIgMCAyMCAoaGVscC1hcmdzIChoZWxtLWNoZWNrLW5ldy1pbnB1dCkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tY2hlY2stbWluaWJ1ZmZlci1p
bnB1dCIgMCAyNyAoaGVscC1hcmdzIChoZWxtLWNoZWNrLW1pbmlidWZmZXItaW5wdXQpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0
aW9uIDQyRj4iIDIwIDIzIChhY3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFw
IChrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtl
eW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0
dG9uKSkgKG1vZGUtbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikg
KG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3Vz
ZS0yIC4gcHVzaC1idXR0b24pICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBi
YWNrd2FyZC1idXR0b24pICgyNyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZv
cndhcmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEgI1swICIIXDIwNgUACT9cMjA1GQBcMzAyIHJcMzAz
XDMwNAJcIlwyMTZcMzA1IFwyMTBcMzA2ICpcMjYyAVwyMDciIFtoZWxtLWluLXBlcnNpc3RlbnQt
YWN0aW9uIGhlbG0tc3VzcGVuZC11cGRhdGUtZmxhZyBpbnRlcm5hbC0tYmVmb3JlLXNhdmUtc2Vs
ZWN0ZWQtd2luZG93IG1ha2UtY2xvc3VyZSAjWzAgIlwzMDFcMzAwIVwyMDciIFtWMCBpbnRlcm5h
bC0tYWZ0ZXItc2F2ZS1zZWxlY3RlZC13aW5kb3ddIDJdIGhlbG0tY2hlY2stbWluaWJ1ZmZlci1p
bnB1dCBoZWxtLXByaW50LWVycm9yLW1lc3NhZ2VzXSA0XSBjYXRlZ29yeSB0IGZvbGxvdy1saW5r
IHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9u
J3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2Ug
YnV0dG9uKSkgIygiYXBwbHkiIDAgNSAoaGVscC1hcmdzIChhcHBseSkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoInRpbWVyLWV2ZW50LWhhbmRsZXIiIDAgMTkg
KGhlbHAtYXJncyAodGltZXItZXZlbnQtaGFuZGxlcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tcmVhZC1mcm9tLW1pbmlidWZmZXIiIDAgMjUgKGhl
bHAtYXJncyAoaGVsbS1yZWFkLWZyb20tbWluaWJ1ZmZlcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpXSAzIFsjKCJidWZmZXItc3RyaW5nIiAwIDEzIChoZWxwLWFy
Z3MgKGJ1ZmZlci1zdHJpbmcpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKSAjKCJoZWxtLWZ1enp5LWRlZmF1bHQtaGlnaGxpZ2h0LW1hdGNoLTEiIDAgMzYgKGhlbHAt
YXJncyAoaGVsbS1mdXp6eS1kZWZhdWx0LWhpZ2hsaWdodC1tYXRjaC0xKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1mdXp6eS1kZWZhdWx0LWhpZ2hs
aWdodC1tYXRjaCIgMCAzNCAoaGVscC1hcmdzIChoZWxtLWZ1enp5LWRlZmF1bHQtaGlnaGxpZ2h0
LW1hdGNoKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVs
bS1mdXp6eS1oaWdobGlnaHQtbWF0Y2hlcyIgMCAyOCAoaGVscC1hcmdzIChoZWxtLWZ1enp5LWhp
Z2hsaWdodC1tYXRjaGVzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UiIDAgMzIgKGhlbHAtYXJncyAo
aGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2UpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLXByb2Nlc3MtZmlsdGVyZWQtY2FuZGlkYXRlLXRy
YW5zZm9ybWVyIiAwIDQzIChoZWxwLWFyZ3MgKGhlbG0tcHJvY2Vzcy1maWx0ZXJlZC1jYW5kaWRh
dGUtdHJhbnNmb3JtZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJoZWxtLWNvbXB1dGUtbWF0Y2hlcyIgMCAyMCAoaGVscC1hcmdzIChoZWxtLWNvbXB1dGUt
bWF0Y2hlcykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhl
bG0tLWNvbGxlY3QtbWF0Y2hlcyIgMCAyMSAoaGVscC1hcmdzIChoZWxtLS1jb2xsZWN0LW1hdGNo
ZXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLXVw
ZGF0ZSIgMCAxMSAoaGVscC1hcmdzIChoZWxtLXVwZGF0ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tY2hlY2stbmV3LWlucHV0IiAwIDIwIChoZWxw
LWFyZ3MgKGhlbG0tY2hlY2stbmV3LWlucHV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygiaGVsbS1jaGVjay1taW5pYnVmZmVyLWlucHV0IiAwIDI3IChoZWxw
LWFyZ3MgKGhlbG0tY2hlY2stbWluaWJ1ZmZlci1pbnB1dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoIiM8Y29tcGlsZWQtZnVuY3Rpb24gNDJGPiIgMjAgMjMg
KGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hz
Y3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVl
bi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5l
IGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gt
YnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRv
bikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikg
KDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBi
dXR0b24tZGF0YSAjWzAgIghcMjA2BQAJP1wyMDUZAFwzMDIgclwzMDNcMzA0AlwiXDIxNlwzMDUg
XDIxMFwzMDYgKlwyNjIBXDIwNyIgW2hlbG0taW4tcGVyc2lzdGVudC1hY3Rpb24gaGVsbS1zdXNw
ZW5kLXVwZGF0ZS1mbGFnIGludGVybmFsLS1iZWZvcmUtc2F2ZS1zZWxlY3RlZC13aW5kb3cgbWFr
ZS1jbG9zdXJlICNbMCAiXDMwMVwzMDAhXDIwNyIgW1YwIGludGVybmFsLS1hZnRlci1zYXZlLXNl
bGVjdGVkLXdpbmRvd10gMl0gaGVsbS1jaGVjay1taW5pYnVmZmVyLWlucHV0IGhlbG0tcHJpbnQt
ZXJyb3ItbWVzc2FnZXNdIDRdIGNhdGVnb3J5IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBoZWxw
LWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1m
YWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFjZSBidXR0b24pKSAjKCJhcHBs
eSIgMCA1IChoZWxwLWFyZ3MgKGFwcGx5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygidGltZXItZXZlbnQtaGFuZGxlciIgMCAxOSAoaGVscC1hcmdzICh0aW1l
ci1ldmVudC1oYW5kbGVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQp
KSkgIygiaGVsbS1yZWFkLWZyb20tbWluaWJ1ZmZlciIgMCAyNSAoaGVscC1hcmdzIChoZWxtLXJl
YWQtZnJvbS1taW5pYnVmZmVyKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygiaGVsbS1pbnRlcm5hbCIgMCAxMyAoaGVscC1hcmdzIChoZWxtLWludGVybmFsKSBj
YXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSldIDQgWyMoImluc2VydCIg
MCA2IChoZWxwLWFyZ3MgKGluc2VydCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0
dG9uICh0KSkpICMoImhlbG0taW5zZXJ0LW1hdGNoIiAwIDE3IChoZWxwLWFyZ3MgKGhlbG0taW5z
ZXJ0LW1hdGNoKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
aGVsbS1yZW5kZXItc291cmNlIiAwIDE4IChoZWxwLWFyZ3MgKGhlbG0tcmVuZGVyLXNvdXJjZSkg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tdXBkYXRl
IiAwIDExIChoZWxwLWFyZ3MgKGhlbG0tdXBkYXRlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1jaGVjay1uZXctaW5wdXQiIDAgMjAgKGhlbHAtYXJn
cyAoaGVsbS1jaGVjay1uZXctaW5wdXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAjKCJoZWxtLWNoZWNrLW1pbmlidWZmZXItaW5wdXQiIDAgMjcgKGhlbHAtYXJn
cyAoaGVsbS1jaGVjay1taW5pYnVmZmVyLWlucHV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiIzxjb21waWxlZC1mdW5jdGlvbiA0MkY+IiAyMCAyMyAoYWN0
aW9uIGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0aW9uIGtleW1hcCAoa2V5bWFwICh0b3VjaHNjcmVl
bi1kb3duIC4gcHVzaC1idXR0b24pIChoZWFkZXItbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRv
d24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChtb2RlLWxpbmUga2V5
bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0
b24pKSAoZm9sbG93LWxpbmsgLiBtb3VzZS1mYWNlKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSAo
MTMgLiBwdXNoLWJ1dHRvbikga2V5bWFwIChiYWNrdGFiIC4gYmFja3dhcmQtYnV0dG9uKSAoMjcg
a2V5bWFwICg5IC4gYmFja3dhcmQtYnV0dG9uKSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikpIGJ1dHRv
bi1kYXRhICNbMCAiCFwyMDYFAAk/XDIwNRkAXDMwMiByXDMwM1wzMDQCXCJcMjE2XDMwNSBcMjEw
XDMwNiAqXDI2MgFcMjA3IiBbaGVsbS1pbi1wZXJzaXN0ZW50LWFjdGlvbiBoZWxtLXN1c3BlbmQt
dXBkYXRlLWZsYWcgaW50ZXJuYWwtLWJlZm9yZS1zYXZlLXNlbGVjdGVkLXdpbmRvdyBtYWtlLWNs
b3N1cmUgI1swICJcMzAxXDMwMCFcMjA3IiBbVjAgaW50ZXJuYWwtLWFmdGVyLXNhdmUtc2VsZWN0
ZWQtd2luZG93XSAyXSBoZWxtLWNoZWNrLW1pbmlidWZmZXItaW5wdXQgaGVsbS1wcmludC1lcnJv
ci1tZXNzYWdlc10gNF0gY2F0ZWdvcnkgdCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0IGhlbHAtZWNo
byAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1vdXNlLWZhY2Ug
aGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMoImFwcGx5IiAw
IDUgKGhlbHAtYXJncyAoYXBwbHkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJ0aW1lci1ldmVudC1oYW5kbGVyIiAwIDE5IChoZWxwLWFyZ3MgKHRpbWVyLWV2
ZW50LWhhbmRsZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAj
KCJoZWxtLXJlYWQtZnJvbS1taW5pYnVmZmVyIiAwIDI1IChoZWxwLWFyZ3MgKGhlbG0tcmVhZC1m
cm9tLW1pbmlidWZmZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJoZWxtLWludGVybmFsIiAwIDEzIChoZWxwLWFyZ3MgKGhlbG0taW50ZXJuYWwpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtIiAwIDQgKGhlbHAt
YXJncyAoaGVsbSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
ImhlbG0iIDAgNCAoaGVscC1hcmdzIChoZWxtKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygiaGVsbS1NLXgtcmVhZC1leHRlbmRlZC1jb21tYW5kIiAwIDMwICho
ZWxwLWFyZ3MgKGhlbG0tTS14LXJlYWQtZXh0ZW5kZWQtY29tbWFuZCkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14IiAwIDggKGhlbHAtYXJncyAo
aGVsbS1NLXgpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJm
dW5jYWxsLWludGVyYWN0aXZlbHkiIDAgMjEgKGhlbHAtYXJncyAoZnVuY2FsbC1pbnRlcmFjdGl2
ZWx5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSldIDMgWyMoImNs
YXNzLXAiIDAgNyAoaGVscC1hcmdzIChjbGFzcy1wKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1nZXQtZmlyc3QtbGluZS1kb2N1bWVudGF0aW9uIiAw
IDMzIChoZWxwLWFyZ3MgKGhlbG0tZ2V0LWZpcnN0LWxpbmUtZG9jdW1lbnRhdGlvbikgY2F0ZWdv
cnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14LXRyYW5zZm9y
bWVyLTEiIDAgMjIgKGhlbHAtYXJncyAoaGVsbS1NLXgtdHJhbnNmb3JtZXItMSkgY2F0ZWdvcnkg
aGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14LXRyYW5zZm9ybWVy
IiAwIDIwIChoZWxwLWFyZ3MgKGhlbG0tTS14LXRyYW5zZm9ybWVyKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1z
b3VyY2UiIDAgMzIgKGhlbHAtYXJncyAoaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJvbS1zb3VyY2Up
IGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLXByb2Nl
c3MtZmlsdGVyZWQtY2FuZGlkYXRlLXRyYW5zZm9ybWVyIiAwIDQzIChoZWxwLWFyZ3MgKGhlbG0t
cHJvY2Vzcy1maWx0ZXJlZC1jYW5kaWRhdGUtdHJhbnNmb3JtZXIpIGNhdGVnb3J5IGhlbHAtZnVu
Y3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNvbXB1dGUtbWF0Y2hlcyIgMCAyMCAo
aGVscC1hcmdzIChoZWxtLWNvbXB1dGUtbWF0Y2hlcykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tLWNvbGxlY3QtbWF0Y2hlcyIgMCAyMSAoaGVscC1h
cmdzIChoZWxtLS1jb2xsZWN0LW1hdGNoZXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJoZWxtLXVwZGF0ZSIgMCAxMSAoaGVscC1hcmdzIChoZWxtLXVwZGF0
ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tY2hl
Y2stbmV3LWlucHV0IiAwIDIwIChoZWxwLWFyZ3MgKGhlbG0tY2hlY2stbmV3LWlucHV0KSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1jaGVjay1taW5p
YnVmZmVyLWlucHV0IiAwIDI3IChoZWxwLWFyZ3MgKGhlbG0tY2hlY2stbWluaWJ1ZmZlci1pbnB1
dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIiM8Y29tcGls
ZWQtZnVuY3Rpb24gNDJGPiIgMjAgMjMgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlv
biBrZXltYXAgKGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVy
LWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4g
cHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gt
YnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFj
ZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFj
a3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikp
ICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0b24tZGF0YSAjWzAgIghcMjA2BQAJP1wyMDUZAFwz
MDIgclwzMDNcMzA0AlwiXDIxNlwzMDUgXDIxMFwzMDYgKlwyNjIBXDIwNyIgW2hlbG0taW4tcGVy
c2lzdGVudC1hY3Rpb24gaGVsbS1zdXNwZW5kLXVwZGF0ZS1mbGFnIGludGVybmFsLS1iZWZvcmUt
c2F2ZS1zZWxlY3RlZC13aW5kb3cgbWFrZS1jbG9zdXJlICNbMCAiXDMwMVwzMDAhXDIwNyIgW1Yw
IGludGVybmFsLS1hZnRlci1zYXZlLXNlbGVjdGVkLXdpbmRvd10gMl0gaGVsbS1jaGVjay1taW5p
YnVmZmVyLWlucHV0IGhlbG0tcHJpbnQtZXJyb3ItbWVzc2FnZXNdIDRdIGNhdGVnb3J5IHQgZm9s
bG93LWxpbmsgdCBidXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUg
ZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0
b24gZmFjZSBidXR0b24pKSAjKCJhcHBseSIgMCA1IChoZWxwLWFyZ3MgKGFwcGx5KSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygidGltZXItZXZlbnQtaGFuZGxl
ciIgMCAxOSAoaGVscC1hcmdzICh0aW1lci1ldmVudC1oYW5kbGVyKSBjYXRlZ29yeSBoZWxwLWZ1
bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1yZWFkLWZyb20tbWluaWJ1ZmZlciIg
MCAyNSAoaGVscC1hcmdzIChoZWxtLXJlYWQtZnJvbS1taW5pYnVmZmVyKSBjYXRlZ29yeSBoZWxw
LWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1pbnRlcm5hbCIgMCAxMyAoaGVs
cC1hcmdzIChoZWxtLWludGVybmFsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSldIDMgWyMoImNkciIgMCAzIChoZWxwLWFyZ3MgKGNkcikgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIiM8Y29tcGlsZWQtZnVuY3Rpb24gMzU3PiIg
MjAgMjMgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1mdW5jdGlvbiBrZXltYXAgKGtleW1hcCAo
dG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAoaGVhZGVyLWxpbmUga2V5bWFwICh0b3Vj
aHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVzaC1idXR0b24pKSAobW9k
ZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAu
IHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNo
LWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1hcCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1
dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1dHRvbikpICg5IC4gZm9yd2FyZC1idXR0
b24pKSBidXR0b24tZGF0YSAjWzUxNCAiXDMwM1wyMDMIAFwzMDVcMjAyCQBcMzA2XDMwMlwyMDMa
AAI6XDIwMxoAXDMwNwEEISFcMjAyMAACOlwyMDMlAFwyMTEDIVwyMDIwAFwzMDJcMjAzLwBcMzA3
AyFcMjAyMAACXDMwMlwyMDNBAAI6XDIwM0EAXDMwNwIEISFcMjAyVwACOlwyMDNMAAEDIVwyMDJX
AFwzMDJcMjAzVgBcMzA3AyFcMjAyVwACXDMxMAJcMzAwXCJcMjA2awBcMzExAlwzMTIEDFwiXDMx
MwUhR0RcMzAwI1wzMTACXDMwMFwiXDIwNn8AXDMxMQJcMzEyBAxcIlwzMTMFIUdEXDMwMCMBQUAB
QUADQANAAQFVXDIwM1wyMzAAXDMwMT9cMjA1XDIzMwADA1dcMjA3AQFWXDIwNyIgWyNzKGhhc2gt
dGFibGUgdGVzdCBlcXVhbCBkYXRhICgicHJvZmlsZXItcmVwb3J0LXByZXZpb3VzLWVudHJ5IiAo
MC4wIDMwKSAicHJvZmlsZXItcmVwb3J0LWRlc2NyaWJlLWVudHJ5IiAoMC4wIDMwKSAicHJvZmls
ZXItcmVwb3J0LXJlbmRlci1jYWxsdHJlZSIgKDAuMCAzMSkgImZvbnQtbG9jay1wcm9maWxlci1z
dG9wLWFuZC1yZXBvcnQiICgwLjAgMzQpICJlZGlmZi1wcm9maWxlIiAoMC4wIDEzKSAiZm9udC1s
b2NrLXByb2ZpbGVyLXNvcnQiICgwLjAgMjMpICJwcm9maWxlci1yZXBvcnQiICgwLjAgMTUpICJw
cm9maWxlci1yZXBvcnQtd3JpdGUtcHJvZmlsZSIgKDAuMCAyOSkgInByb2ZpbGVyLXN0b3AiICgw
LjAgMTMpICJwcm9maWxlci1yZXBvcnQtY29sbGFwc2UtZW50cnkiICgwLjAgMzApICJmb250LWxv
Y2stcHJvZmlsZXItcmVwb3J0LW1vZGUiICgwLjAgMzApICJwcm9maWxlci1yZXBvcnQtdG9nZ2xl
LWVudHJ5IiAoMC4wIDI4KSAicHJvZmlsZXItcmVwb3J0LWNvbXBhcmUtcHJvZmlsZSIgKDAuMCAz
MSkgInByb2ZpbGVyLXJlc2V0IiAoMC4wIDE0KSAiZm9udC1sb2NrLXByb2ZpbGVyLWJ1ZmZlciIg
KDAuMCAyNSkgImZvbnQtbG9jay1wcm9maWxlci1zdGFydCIgKDAuMCAyNCkgInByb2ZpbGVyLXJl
cG9ydC1maW5kLWVudHJ5IiAoMC4wIDI2KSAicHJvZmlsZXItZmluZC1wcm9maWxlLW90aGVyLWZy
YW1lIiAoMC4wIDMzKSAiZm9udC1sb2NrLXByb2ZpbGVyLXJlZ2lvbiIgKDAuMCAyNSkgImZvbnQt
bG9jay1wcm9maWxlci1yZXBvcnQiICgwLjAgMjUpICJwcm9maWxlci1yZXBvcnQtYXNjZW5kaW5n
LXNvcnQiICgwLjAgMzApICJwcm9maWxlci1yZXBvcnQtZXhwYW5kLWVudHJ5IiAoMC4wIDI4KSAi
Zm9udC1sb2NrLXByb2ZpbGVyLXRvZ2dsZS10aW1lLWluLXBlcmNlbnQiICgwLjAgNDEpICJwcm9m
aWxlci1yZXBvcnQtcmVuZGVyLXJldmVyc2VkLWNhbGx0cmVlIiAoMC4wIDQwKSAicHJvZmlsZXIt
cmVwb3J0LWRlc2NlbmRpbmctc29ydCIgKDAuMCAzMSkgInByb2ZpbGVyLWZpbmQtcHJvZmlsZS1v
dGhlci13aW5kb3ciICgwLjAgMzQpICJwcm9maWxlci1yZXBvcnQtbmV4dC1lbnRyeSIgKDAuMCAy
NikgImhlbG0taW5mby1ncHJvZiIgKDAuMCAxNSkgInByb2ZpbGVyLXJlcG9ydC1tb2RlIiAoMC4w
IDIwKSAicHJvZmlsZXItc3RhcnQiICgwLjAgMTQpICJwcm9maWxlci1maW5kLXByb2ZpbGUiICgw
LjAgMjEpICJmb250LWxvY2stcHJvZmlsZXItdG9nZ2xlLWV4cGFuZCIgKDAuMCAzMikpKSBuaWwg
bmlsIHQgaGVsbS1wYXR0ZXJuIGNkciBjYXIgaGVsbS1iYXNlbmFtZSBnZXRoYXNoIHB1dGhhc2gg
aGVsbS1zY29yZS1jYW5kaWRhdGUtZm9yLXBhdHRlcm4gaGVsbS1zdHJpbmdpZnldIDEzICIKCihm
biBTMSBTMikiXSBjYXRlZ29yeSB0IGZvbGxvdy1saW5rIHQgYnV0dG9uIHQgaGVscC1lY2hvICJt
b3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9uJ3MgYm9keSIgbW91c2UtZmFjZSBoaWdo
bGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2UgYnV0dG9uKSkgIygiaGVsbS1mdXp6eS1t
YXRjaGluZy1kZWZhdWx0LXNvcnQtZm4tMSIgMCAzNyAoaGVscC1hcmdzIChoZWxtLWZ1enp5LW1h
dGNoaW5nLWRlZmF1bHQtc29ydC1mbi0xKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiIzxzdWJyLW5hdGl2ZS1lbGlzcCBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2
YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV8yMD4iIDIwIDczIChidXR0b24gKHQpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGhlbHAtYXJncyAoRjYxNmU2ZjZlNzk2ZDZmNzU3MzJk
NmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMjApKSkgIygiaGVsbS1hcHBseS1mdW5jdGlv
bnMtZnJvbS1zb3VyY2UiIDAgMzIgKGhlbHAtYXJncyAoaGVsbS1hcHBseS1mdW5jdGlvbnMtZnJv
bS1zb3VyY2UpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJo
ZWxtLXByb2Nlc3MtZmlsdGVyZWQtY2FuZGlkYXRlLXRyYW5zZm9ybWVyIiAwIDQzIChoZWxwLWFy
Z3MgKGhlbG0tcHJvY2Vzcy1maWx0ZXJlZC1jYW5kaWRhdGUtdHJhbnNmb3JtZXIpIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNvbXB1dGUtbWF0Y2hl
cyIgMCAyMCAoaGVscC1hcmdzIChoZWxtLWNvbXB1dGUtbWF0Y2hlcykgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tLWNvbGxlY3QtbWF0Y2hlcyIgMCAy
MSAoaGVscC1hcmdzIChoZWxtLS1jb2xsZWN0LW1hdGNoZXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rp
b24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLXVwZGF0ZSIgMCAxMSAoaGVscC1hcmdzICho
ZWxtLXVwZGF0ZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
ImhlbG0tY2hlY2stbmV3LWlucHV0IiAwIDIwIChoZWxwLWFyZ3MgKGhlbG0tY2hlY2stbmV3LWlu
cHV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1j
aGVjay1taW5pYnVmZmVyLWlucHV0IiAwIDI3IChoZWxwLWFyZ3MgKGhlbG0tY2hlY2stbWluaWJ1
ZmZlci1pbnB1dCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
IiM8Y29tcGlsZWQtZnVuY3Rpb24gNDJGPiIgMjAgMjMgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxh
eS1mdW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9u
KSAoaGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pICht
b3VzZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93
biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4g
bW91c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtl
eW1hcCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJk
LWJ1dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0b24tZGF0YSAjWzAgIghcMjA2BQAJ
P1wyMDUZAFwzMDIgclwzMDNcMzA0AlwiXDIxNlwzMDUgXDIxMFwzMDYgKlwyNjIBXDIwNyIgW2hl
bG0taW4tcGVyc2lzdGVudC1hY3Rpb24gaGVsbS1zdXNwZW5kLXVwZGF0ZS1mbGFnIGludGVybmFs
LS1iZWZvcmUtc2F2ZS1zZWxlY3RlZC13aW5kb3cgbWFrZS1jbG9zdXJlICNbMCAiXDMwMVwzMDAh
XDIwNyIgW1YwIGludGVybmFsLS1hZnRlci1zYXZlLXNlbGVjdGVkLXdpbmRvd10gMl0gaGVsbS1j
aGVjay1taW5pYnVmZmVyLWlucHV0IGhlbG0tcHJpbnQtZXJyb3ItbWVzc2FnZXNdIDRdIGNhdGVn
b3J5IHQgZm9sbG93LWxpbmsgdCBidXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlz
cGxheSB0aGUgZnVuY3Rpb24ncyBib2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2st
ZmFjZSBidXR0b24gZmFjZSBidXR0b24pKSAjKCJhcHBseSIgMCA1IChoZWxwLWFyZ3MgKGFwcGx5
KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygidGltZXItZXZl
bnQtaGFuZGxlciIgMCAxOSAoaGVscC1hcmdzICh0aW1lci1ldmVudC1oYW5kbGVyKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1yZWFkLWZyb20tbWlu
aWJ1ZmZlciIgMCAyNSAoaGVscC1hcmdzIChoZWxtLXJlYWQtZnJvbS1taW5pYnVmZmVyKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1pbnRlcm5hbCIg
MCAxMyAoaGVscC1hcmdzIChoZWxtLWludGVybmFsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSldIDMgWyMoImRpcmVjdG9yeS1maWxlLW5hbWUiIDAgMTkgKGhlbHAt
YXJncyAoZGlyZWN0b3J5LWZpbGUtbmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24g
YnV0dG9uICh0KSkpICMoImhlbG0tYmFzZW5hbWUiIDAgMTMgKGhlbHAtYXJncyAoaGVsbS1iYXNl
bmFtZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0t
c2V0LWNhc2UtZm9sZC1zZWFyY2giIDAgMjUgKGhlbHAtYXJncyAoaGVsbS1zZXQtY2FzZS1mb2xk
LXNlYXJjaCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoIiM8
Y29tcGlsZWQtZnVuY3Rpb24gOUQ0PiIgMjAgMjMgKGFjdGlvbiBoZWxwLWZucy0tZGlzcGxheS1m
dW5jdGlvbiBrZXltYXAgKGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAo
aGVhZGVyLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3Vz
ZS0yIC4gcHVzaC1idXR0b24pKSAobW9kZS1saW5lIGtleW1hcCAodG91Y2hzY3JlZW4tZG93biAu
IHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0dG9uKSkgKGZvbGxvdy1saW5rIC4gbW91
c2UtZmFjZSkgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikgKDEzIC4gcHVzaC1idXR0b24pIGtleW1h
cCAoYmFja3RhYiAuIGJhY2t3YXJkLWJ1dHRvbikgKDI3IGtleW1hcCAoOSAuIGJhY2t3YXJkLWJ1
dHRvbikpICg5IC4gZm9yd2FyZC1idXR0b24pKSBidXR0b24tZGF0YSAjWzAgIlwzMTBcMzExXDMx
MlwiXDMxM1wzMDFcMjM2XDMxNCAeH1wzMTVcMzE2XDMwNVwzMTdcMjExAjpcMjAzJgECQFwyNjIC
XDMwM2JcMjEwXDMyMDEnAFwzMjFcMzA3ITBcMjAyKwBcMjEwXDIwMjEAXDIwMzEAXDMxNnlcMjEw
XDMxN1wyMTFcMjExXDIxMVwyMTEGBlwzMDchXDIxMVwyNjIGXDIwMxIBBDpcMjAzTABcMzE2eVwz
MTVVXDIwMk4AbT9cMjAzEgEGCVwzMDRXXDIwMxIBXDMyMlwzMDYGBlwyMDNqAAYGPFwyMDNqAAYG
XDIwMm8AXDMyMyBcMzI0IERcIlwyNjIEXDMwMlwyMDNcMjExAFwzMjVcMzE1XDMyNgYGI1wyMDRc
MjExAFwzMjcEXDMyNlwzMDIGByEjXDI2MgRcMzMwBAYNXCJcMjYyAwYKXDIwM1wyNDAAAlwyMDNc
MjQwAAIGCVVcMjA0XDI0NAACXDIwNA0BA1wzMzFcMjMwXDIwNA0BXDMwMlwyMDRcMjYzAAQ6XDIw
M1wyNzMAXDMzMgRcMzA3XDMwMCNcMjAzDQFcMzMzBAYKBg4jXDIxMFwzMzRcMzM1XDMwMVwiXDIx
MVwyMDMCAQQ6XDIwM1wzMjUABEFcMjAyXDMyNgAEATxcMjAzXDM3NABcMzM2AiFcMjA0XDM3NAAB
XDMxNwE6XDIwM1wzNjcAXDIxMFwyMTFAXDIxMQMhXDI2MggBQVwyNjICXDIwMlwzNDMAXDI2NgRc
MjAyAwEBASFcMjYyBlwyMTBcMjEwBglUXDI2MgoDAkJcMjYyAlwyMTBcMzE3XDIwMjYAXDIxMFwy
NjZcMjAzXDIzN1wyMzcBXDI0NFwyNjIBA1RcMjYyBAJBXDI2MgNcMjAyEABcMjExXDIzNylcMjA3
IiBbbmlsICgobmFtZSAuICJFbWFjcyBDb21tYW5kcyIpIChpbml0ICNbMCAiXDMwMVwzMDJcMzAz
XDMwMCFcMjAzDQBcMzAwIFwyMDIkAFwzMDRcMzAwIVwyMDMjAFwzMDVcMzAwIVwyMDMjAHJcMzAw
cVwyMTBcMzA2IClcMjAyJABcMzAwXCJcMjA3IiBbI1swICJcMzAyXDMwMVwzMDBcMzAzXDIxMVwz
MDQlXDIwNyIgW2NvbW1hbmRwICM8b2JhcnJheSBuPTk4OTE5PiBoZWxtLWNvbXAtcmVhZC1nZXQt
Y2FuZGlkYXRlcyBuaWwgIiJdIDZdIGhlbG0taW5pdC1jYW5kaWRhdGVzLWluLWJ1ZmZlciBnbG9i
YWwgZnVuY3Rpb25wIGJ1ZmZlcnAgYnVmZmVyLWxpdmUtcCBidWZmZXItc3RyaW5nXSA0XSkgKGNh
bmRpZGF0ZXMgLiBoZWxtLWNhbmRpZGF0ZXMtaW4tYnVmZmVyKSAoY2xlYW51cCAuIGhlbG0tTS14
LS11bndpbmQtZm9ybXMpIChrZXltYXAga2V5bWFwIChrZXltYXAgKDEzIC4gaGVsbS1jb25maXJt
LWFuZC1leGl0LW1pbmlidWZmZXIpKSBrZXltYXAgKDI5IC4gaGVsbS1NLXgtdG9nZ2xlLXNob3J0
LWRvYykgKDIxIC4gaGVsbS1NLXgtdW5pdmVyc2FsLWFyZ3VtZW50KSBrZXltYXAgKDI3IGtleW1h
cCAoMTMgLiBoZWxtLWNyLWVtcHR5LXN0cmluZykpIChDLXJldHVybiAuIGhlbG0tY3ItZW1wdHkt
c3RyaW5nKSBrZXltYXAgKDIxIC4gaGVsbS1leGVjdXRlLXBlcnNpc3RlbnQtYWN0aW9uKSAoZjEy
IC4gI1swICJcMzAxXDMwMCFcMjA3IiBbMTEgaGVsbS1zZWxlY3QtbnRoLWFjdGlvbl0gMiBuaWwg
bmlsXSkgKGYxMSAuICNbMCAiXDMwMVwzMDAhXDIwNyIgWzEwIGhlbG0tc2VsZWN0LW50aC1hY3Rp
b25dIDIgbmlsIG5pbF0pIChmMTAgLiAjWzAgIlwzMDFcMzAwIVwyMDciIFs5IGhlbG0tc2VsZWN0
LW50aC1hY3Rpb25dIDIgbmlsIG5pbF0pIChmOSAuICNbMCAiXDMwMVwzMDAhXDIwNyIgWzggaGVs
bS1zZWxlY3QtbnRoLWFjdGlvbl0gMiBuaWwgbmlsXSkgKGY4IC4gI1swICJcMzAxXDMwMCFcMjA3
IiBbNyBoZWxtLXNlbGVjdC1udGgtYWN0aW9uXSAyIG5pbCBuaWxdKSAoZjcgLiAjWzAgIlwzMDFc
MzAwIVwyMDciIFs2IGhlbG0tc2VsZWN0LW50aC1hY3Rpb25dIDIgbmlsIG5pbF0pIChmNiAuICNb
MCAiXDMwMVwzMDAhXDIwNyIgWzUgaGVsbS1zZWxlY3QtbnRoLWFjdGlvbl0gMiBuaWwgbmlsXSkg
KGY1IC4gI1swICJcMzAxXDMwMCFcMjA3IiBbNCBoZWxtLXNlbGVjdC1udGgtYWN0aW9uXSAyIG5p
bCBuaWxdKSAoZjQgLiAjWzAgIlwzMDFcMzAwIVwyMDciIFszIGhlbG0tc2VsZWN0LW50aC1hY3Rp
b25dIDIgbmlsIG5pbF0pIChmMyAuICNbMCAiXDMwMVwzMDAhXDIwNyIgWzIgaGVsbS1zZWxlY3Qt
bnRoLWFjdGlvbl0gMiBuaWwgbmlsXSkgKGYyIC4gI1swICJcMzAxXDMwMCFcMjA3IiBbMSBoZWxt
LXNlbGVjdC1udGgtYWN0aW9uXSAyIG5pbCBuaWxdKSAobWVudS1iYXIga2V5bWFwIChoZWxwLW1l
bnUga2V5bWFwIChkZXNjcmliZSBrZXltYXAgKGRlc2NyaWJlLW1vZGUgLiBoZWxtLWhlbHApKSkp
IChoZWxwIGtleW1hcCAoMTA5IC4gaGVsbS1oZWxwKSkgKDIzIC4gaGVsbS1oZWxtLXlhbmstdGV4
dC1hdC1wb2ludC13aXRoLXN1YmtleXMpIChmMSAuICNbMCAiXDMwMVwzMDAhXDIwNyIgWzAgaGVs
bS1zZWxlY3QtbnRoLWFjdGlvbl0gMiBuaWwgbmlsXSkgKDggLiBiYWNrd2FyZC1kZWxldGUtY2hh
ci11bnRhYmlmeSkgKDIwIC4gaGVsbS10b2dnbGUtcmVzcGxpdC1hbmQtc3dhcC13aW5kb3dzKSAo
Qy10YWIgLiB1bmRlZmluZWQpICg2NzEwODg5NyAuIGhlbG0tdG9nZ2xlLXN1c3BlbmQtdXBkYXRl
KSAoMjYgLiBoZWxtLXRvZ2dsZS1mdWxsLWZyYW1lKSAoMyBrZXltYXAgKDMzNTU0NDU1IC4geWFu
dC90b2dnbGUtcmVmaWxlLXRvLXRhc2tzKSAoNTcgLiAjWzAgIlwzMDJcMzAxXDIwMwsAXDMwMFRb
XDIwMg0AXDMwMFQhXDIwNyIgWzggbmlsIGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0
LW50aF0gMiBuaWwgbmlsXSkgKDU2IC4gI1swICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wyMDINAFwz
MDBUIVwyMDciIFs3IG5pbCBoZWxtLWV4ZWN1dGUtc2VsZWN0aW9uLWFjdGlvbi1hdC1udGhdIDIg
bmlsIG5pbF0pICg1NSAuICNbMCAiXDMwMlwzMDFcMjAzCwBcMzAwVFtcMjAyDQBcMzAwVCFcMjA3
IiBbNiBuaWwgaGVsbS1leGVjdXRlLXNlbGVjdGlvbi1hY3Rpb24tYXQtbnRoXSAyIG5pbCBuaWxd
KSAoNTQgLiAjWzAgIlwzMDJcMzAxXDIwMwsAXDMwMFRbXDIwMg0AXDMwMFQhXDIwNyIgWzUgbmls
IGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0LW50aF0gMiBuaWwgbmlsXSkgKDUzIC4g
I1swICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wyMDINAFwzMDBUIVwyMDciIFs0IG5pbCBoZWxtLWV4
ZWN1dGUtc2VsZWN0aW9uLWFjdGlvbi1hdC1udGhdIDIgbmlsIG5pbF0pICg1MiAuICNbMCAiXDMw
MlwzMDFcMjAzCwBcMzAwVFtcMjAyDQBcMzAwVCFcMjA3IiBbMyBuaWwgaGVsbS1leGVjdXRlLXNl
bGVjdGlvbi1hY3Rpb24tYXQtbnRoXSAyIG5pbCBuaWxdKSAoNTEgLiAjWzAgIlwzMDJcMzAxXDIw
MwsAXDMwMFRbXDIwMg0AXDMwMFQhXDIwNyIgWzIgbmlsIGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24t
YWN0aW9uLWF0LW50aF0gMiBuaWwgbmlsXSkgKDUwIC4gI1swICJcMzAyXDMwMVwyMDMLAFwzMDBU
W1wyMDINAFwzMDBUIVwyMDciIFsxIG5pbCBoZWxtLWV4ZWN1dGUtc2VsZWN0aW9uLWFjdGlvbi1h
dC1udGhdIDIgbmlsIG5pbF0pICg0OSAuICNbMCAiXDMwMlwzMDFcMjAzCwBcMzAwVFtcMjAyDQBc
MzAwVCFcMjA3IiBbMCBuaWwgaGVsbS1leGVjdXRlLXNlbGVjdGlvbi1hY3Rpb24tYXQtbnRoXSAy
IG5pbCBuaWxdKSAoMTEwIC4gaGVsbS1oZWxtLXJ1bi1jeWNsZS1yZXN1bWUtd2l0aC1zdWJrZXlz
KSAoMTA4IC4gaGVsbS1kaXNwbGF5LWxpbmUtbnVtYmVycy1tb2RlKSAoNjIgLiBoZWxtLXRvZ2ds
ZS10cnVuY2F0ZS1saW5lKSAoMjEgLiBoZWxtLXJlZnJlc2gpICg2IC4gaGVsbS1mb2xsb3ctbW9k
ZSkgKDkgLiBoZWxtLWluc2VydC1vci1jb3B5KSAoMTEgLiBoZWxtLWtpbGwtc2VsZWN0aW9uLWFu
ZC1xdWl0KSAoMjUgLiBoZWxtLXlhbmstc2VsZWN0aW9uKSAoMzcgLiBoZWxtLWV4Y2hhbmdlLW1p
bmlidWZmZXItYW5kLWhlYWRlci1saW5lKSAoOTUgLiBoZWxtLXRvZ2dsZS1mdWxsLWZyYW1lKSAo
NDUgLiBoZWxtLXN3YXAtd2luZG93cykpICg2NzEwODk4NyAuIGhlbG0tZW5sYXJnZS13aW5kb3cp
ICg2NzEwODk4OSAuIGhlbG0tbmFycm93LXdpbmRvdykgKDE4IC4gdW5kZWZpbmVkKSAoMTkgLiB1
bmRlZmluZWQpICgyNCBrZXltYXAgKDU3IC4gI1swICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wyMDIN
AFwzMDBUIVwyMDciIFs4IG5lZ2F0aXZlIGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0
LW50aF0gMiBuaWwgbmlsXSkgKDU2IC4gI1swICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wyMDINAFwz
MDBUIVwyMDciIFs3IG5lZ2F0aXZlIGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0LW50
aF0gMiBuaWwgbmlsXSkgKDU1IC4gI1swICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wyMDINAFwzMDBU
IVwyMDciIFs2IG5lZ2F0aXZlIGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0LW50aF0g
MiBuaWwgbmlsXSkgKDU0IC4gI1swICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wyMDINAFwzMDBUIVwy
MDciIFs1IG5lZ2F0aXZlIGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0LW50aF0gMiBu
aWwgbmlsXSkgKDUzIC4gI1swICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wyMDINAFwzMDBUIVwyMDci
IFs0IG5lZ2F0aXZlIGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0LW50aF0gMiBuaWwg
bmlsXSkgKDUyIC4gI1swICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wyMDINAFwzMDBUIVwyMDciIFsz
IG5lZ2F0aXZlIGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0LW50aF0gMiBuaWwgbmls
XSkgKDUxIC4gI1swICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wyMDINAFwzMDBUIVwyMDciIFsyIG5l
Z2F0aXZlIGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0LW50aF0gMiBuaWwgbmlsXSkg
KDUwIC4gI1swICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wyMDINAFwzMDBUIVwyMDciIFsxIG5lZ2F0
aXZlIGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0LW50aF0gMiBuaWwgbmlsXSkgKDQ5
IC4gI1swICJcMzAyXDMwMVwyMDMLAFwzMDBUW1wyMDINAFwzMDBUIVwyMDciIFswIG5lZ2F0aXZl
IGhlbG0tZXhlY3V0ZS1zZWxlY3Rpb24tYWN0aW9uLWF0LW50aF0gMiBuaWwgbmlsXSkgKDIgLiBo
ZWxtLXJlc3VtZS1saXN0LWJ1ZmZlcnMtYWZ0ZXItcXVpdCkgKDk4IC4gaGVsbS1yZXN1bWUtcHJl
dmlvdXMtc2Vzc2lvbi1hZnRlci1xdWl0KSAoNiAuIGhlbG0tcXVpdC1hbmQtZmluZC1maWxlKSkg
KDEyNyAuIGhlbG0tZGVsZXRlLWNoYXItYmFja3dhcmQpICgxMSAuIGhlbG0tZGVsZXRlLW1pbmli
dWZmZXItY29udGVudHMpICg2NzEwODg5NiAuIGhlbG0tdG9nZ2xlLXZpc2libGUtbWFyay1mb3J3
YXJkKSAoMCAuIGhlbG0tdG9nZ2xlLXZpc2libGUtbWFyaykgKEMtTS11cCAuIGhlbG0tc2Nyb2xs
LW90aGVyLXdpbmRvdy1kb3duKSAoQy1NLWRvd24gLiBoZWxtLXNjcm9sbC1vdGhlci13aW5kb3cp
IChNLXByaW9yIC4gaGVsbS1zY3JvbGwtb3RoZXItd2luZG93LWRvd24pIChNLW5leHQgLiBoZWxt
LXNjcm9sbC1vdGhlci13aW5kb3cpICgxMiAuIGhlbG0tcmVjZW50ZXItdG9wLWJvdHRvbS1vdGhl
ci13aW5kb3cpIChsZWZ0IC4gaGVsbS1wcmV2aW91cy1zb3VyY2UpIChyaWdodCAuIGhlbG0tbmV4
dC1zb3VyY2UpICgxNSAuIGhlbG0tbmV4dC1zb3VyY2UpICgxMCAuIGhlbG0tZXhlY3V0ZS1wZXJz
aXN0ZW50LWFjdGlvbikgKDkgLiBoZWxtLXNlbGVjdC1hY3Rpb24pICgxMyAuIGhlbG0tbWF5YmUt
ZXhpdC1taW5pYnVmZmVyKSAoNyAuIGhlbG0ta2V5Ym9hcmQtcXVpdCkgKDIyIC4gaGVsbS1zY3Jv
bGwtZG93bikgKDI3IGtleW1hcCAoMTA0IC4gYmFja3dhcmQta2lsbC13b3JkKSAoOCAuIGJhY2t3
YXJkLWtpbGwtd29yZCkgKDEwOCAuIHlhbnQvaGVsbS15YW5rLXNlbGVjdGlvbi1vci1leGVjdXRl
LXBlcnNpc3RlbnQtYWN0aW9uKSAoMTA1IC4gaGVsbS1wcmV2aW91cy1zb3VyY2UpICgxMDcgLiBo
ZWxtLXByZXZpb3VzLWxpbmUpICgxMDYgLiBoZWxtLW5leHQtbGluZSkgKDExNCAuIHVuZGVmaW5l
ZCkgKDExMCAuIG5leHQtaGlzdG9yeS1lbGVtZW50KSAoMTEyIC4gcHJldmlvdXMtaGlzdG9yeS1l
bGVtZW50KSAoMTkgLiB1bmRlZmluZWQpICgxOCAuIHVuZGVmaW5lZCkgKDExNSAuIHVuZGVmaW5l
ZCkgKDUgLiBoZWxtLWRpc3BsYXktYWxsLXNvdXJjZXMpICgxIC4gaGVsbS1zaG93LWFsbC1jYW5k
aWRhdGVzLWluLXNvdXJjZSkgKDg1IC4gaGVsbS11bm1hcmstYWxsKSAoOTcgLiBoZWxtLW1hcmst
YWxsKSAoMTA5IC4gaGVsbS10b2dnbGUtYWxsLW1hcmtzKSAoNDEgLiBoZWxtLW5leHQtdmlzaWJs
ZS1tYXJrKSAoNDAgLiBoZWxtLXByZXYtdmlzaWJsZS1tYXJrKSAoOTEpICgzMiAuIGhlbG0tdG9n
Z2xlLXZpc2libGUtbWFyay1iYWNrd2FyZCkgKDMzNTU0NDU0IC4gaGVsbS1zY3JvbGwtb3RoZXIt
d2luZG93LWRvd24pICgyNSAuIGhlbG0tc2Nyb2xsLW90aGVyLXdpbmRvdy1kb3duKSAoMjIgLiBo
ZWxtLXNjcm9sbC1vdGhlci13aW5kb3cpICgxMiAuIGhlbG0tcmVwb3NpdGlvbi13aW5kb3ctb3Ro
ZXItd2luZG93KSAoMTExIC4gaGVsbS1uZXh0LXNvdXJjZSkgKDYyIC4gaGVsbS1lbmQtb2YtYnVm
ZmVyKSAoNjAgLiBoZWxtLWJlZ2lubmluZy1vZi1idWZmZXIpICgxMTggLiBoZWxtLXNjcm9sbC11
cCkpIChuZXh0IC4gaGVsbS1uZXh0LXBhZ2UpIChwcmlvciAuIGhlbG0tcHJldmlvdXMtcGFnZSkg
KEMtdXAgLiBoZWxtLWZvbGxvdy1hY3Rpb24tYmFja3dhcmQpIChDLWRvd24gLiBoZWxtLWZvbGxv
dy1hY3Rpb24tZm9yd2FyZCkgKDE2IC4gaGVsbS1wcmV2aW91cy1saW5lKSAoMTQgLiBoZWxtLW5l
eHQtbGluZSkgKHVwIC4gaGVsbS1wcmV2aW91cy1saW5lKSAoZG93biAuIGhlbG0tbmV4dC1saW5l
KSBrZXltYXAgKDE4IC4gaGVsbS1taW5pYnVmZmVyLWhpc3RvcnkpIChlc2NhcGUgLiBrZXlib2Fy
ZC1xdWl0KSAobWVudS1iYXIga2V5bWFwIChtaW5pYnVmICJNaW5pYnVmIiBrZXltYXAgKHByZXZp
b3VzIG1lbnUtaXRlbSAiUHJldmlvdXMgSGlzdG9yeSBJdGVtIiBwcmV2aW91cy1oaXN0b3J5LWVs
ZW1lbnQgOmhlbHAgIlB1dCBwcmV2aW91cyBtaW5pYnVmZmVyIGhpc3RvcnkgZWxlbWVudCBpbiB0
aGUgbWluaWJ1ZmZlciIpIChuZXh0IG1lbnUtaXRlbSAiTmV4dCBIaXN0b3J5IEl0ZW0iIG5leHQt
aGlzdG9yeS1lbGVtZW50IDpoZWxwICJQdXQgbmV4dCBtaW5pYnVmZmVyIGhpc3RvcnkgZWxlbWVu
dCBpbiB0aGUgbWluaWJ1ZmZlciIpIChpc2VhcmNoLWJhY2t3YXJkIG1lbnUtaXRlbSAiSXNlYXJj
aCBIaXN0b3J5IEJhY2t3YXJkIiBpc2VhcmNoLWJhY2t3YXJkIDpoZWxwICJJbmNyZW1lbnRhbGx5
IHNlYXJjaCBtaW5pYnVmZmVyIGhpc3RvcnkgYmFja3dhcmQiKSAoaXNlYXJjaC1mb3J3YXJkIG1l
bnUtaXRlbSAiSXNlYXJjaCBIaXN0b3J5IEZvcndhcmQiIGlzZWFyY2gtZm9yd2FyZCA6aGVscCAi
SW5jcmVtZW50YWxseSBzZWFyY2ggbWluaWJ1ZmZlciBoaXN0b3J5IGZvcndhcmQiKSAocmV0dXJu
IG1lbnUtaXRlbSAiRW50ZXIiIGV4aXQtbWluaWJ1ZmZlciA6a2V5LXNlcXVlbmNlICINIiA6aGVs
cCAiVGVybWluYXRlIGlucHV0IGFuZCBleGl0IG1pbmlidWZmZXIiKSAocXVpdCBtZW51LWl0ZW0g
IlF1aXQiIGFib3J0LXJlY3Vyc2l2ZS1lZGl0IDpoZWxwICJBYm9ydCBpbnB1dCBhbmQgZXhpdCBt
aW5pYnVmZmVyIikgIk1pbmlidWYiKSkgKDI0IGtleW1hcCAoZG93biAuIG1pbmlidWZmZXItY29t
cGxldGUtZGVmYXVsdHMpICh1cCAuIG1pbmlidWZmZXItY29tcGxldGUtaGlzdG9yeSkpICgxMyAu
IGV4aXQtbWluaWJ1ZmZlcikgKDEwIC4gZXhpdC1taW5pYnVmZmVyKSAoNyAuIGFib3J0LW1pbmli
dWZmZXJzKSAoQy10YWIgLiBmaWxlLWNhY2hlLW1pbmlidWZmZXItY29tcGxldGUpICg5IC4gc2Vs
Zi1pbnNlcnQtY29tbWFuZCkgKFhGODZCYWNrIC4gcHJldmlvdXMtaGlzdG9yeS1lbGVtZW50KSAo
dXAgLiBwcmV2aW91cy1saW5lLW9yLWhpc3RvcnktZWxlbWVudCkgKHByaW9yIC4gcHJldmlvdXMt
aGlzdG9yeS1lbGVtZW50KSAoWEY4NkZvcndhcmQgLiBuZXh0LWhpc3RvcnktZWxlbWVudCkgKGRv
d24gLiBuZXh0LWxpbmUtb3ItaGlzdG9yeS1lbGVtZW50KSAobmV4dCAuIG5leHQtaGlzdG9yeS1l
bGVtZW50KSAoMjcga2V5bWFwICgxMDUgLiBwYXJlZGl0LWNvbnZvbHV0ZS1zZXhwKSAoMTExIC4g
cGFyZWRpdC1mb3J3YXJkLXNsdXJwLXNleHApICg2MCAuIG1pbmlidWZmZXItYmVnaW5uaW5nLW9m
LWJ1ZmZlcikgKDExNCAuIHByZXZpb3VzLW1hdGNoaW5nLWhpc3RvcnktZWxlbWVudCkgKDExNSAu
IG5leHQtbWF0Y2hpbmctaGlzdG9yeS1lbGVtZW50KSAoMTEyIC4gcHJldmlvdXMtaGlzdG9yeS1l
bGVtZW50KSAoMTEwIC4gbmV4dC1oaXN0b3J5LWVsZW1lbnQpKSkgKGFjdGlvbiAuIGhlbG0tdHlw
ZS1jb21tYW5kLWFjdGlvbnMpIChwZXJzaXN0ZW50LWFjdGlvbiAuIGhlbG0tTS14LXBlcnNpc3Rl
bnQtYWN0aW9uKSAocGVyc2lzdGVudC1oZWxwIC4gIkRlc2NyaWJlIHRoaXMgY29tbWFuZCIpICho
ZWxwLW1lc3NhZ2UgLiBoZWxtLU0teC1oZWxwLW1lc3NhZ2UpIChyZXF1aXJlcy1wYXR0ZXJuIC4g
MCkgKGZpbHRlcmVkLWNhbmRpZGF0ZS10cmFuc2Zvcm1lciBoZWxtLU0teC10cmFuc2Zvcm1lciAj
PHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFf
MjA+IGhlbG0tZnV6enktaGlnaGxpZ2h0LW1hdGNoZXMpICh2b2xhdGlsZSAuIHQpIChtYXRjaCBp
ZGVudGl0eSkgKGZ1enp5LW1hdGNoIC4gdCkgKHJlZGlzcGxheSAuIGlkZW50aXR5KSAobm9tYXJr
IC4gdCkgKGNvZXJjZSAuIGhlbG0tc3ltYm9saWZ5KSAoaGVhZGVyLWxpbmUgLiAjKCJDLXU6IERl
c2NyaWJlIHRoaXMgY29tbWFuZCAoa2VlcGluZyBzZXNzaW9uKSIgMCAzIChmb250LWxvY2stZmFj
ZSBoZWxwLWtleS1iaW5kaW5nIGZhY2UgaGVscC1rZXktYmluZGluZykpKSAocmVzdW1lIC4gaGVs
bS1NLXgtcmVzdW1lLWZuKSAobXVsdGltYXRjaCAuIHQpIChtdXN0LW1hdGNoIC4gdCkgKGdyb3Vw
IC4gaGVsbS1jb21tYW5kKSAoZGF0YSAuICNbMCAiXDMwMlwzMDFcMzAwXDMwM1wyMTFcMzA0JVwy
MDciIFtjb21tYW5kcCAjPG9iYXJyYXkgbj05ODkxOT4gaGVsbS1jb21wLXJlYWQtZ2V0LWNhbmRp
ZGF0ZXMgbmlsICIiXSA2XSkgKGdldC1saW5lIC4gYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0
aWVzKSAoc2VhcmNoIGhlbG0tbW0tZXhhY3Qtc2VhcmNoIGhlbG0tbW0tc2VhcmNoIGhlbG0tY2Fu
ZGlkYXRlcy1pbi1idWZmZXItc2VhcmNoLWRlZmF1bHQtZm4gaGVsbS1mdXp6eS1zZWFyY2gpKSBu
aWwgMCAxNTAgKGhlbG0tbW0tZXhhY3Qtc2VhcmNoIGhlbG0tbW0tc2VhcmNoIGhlbG0tY2FuZGlk
YXRlcy1pbi1idWZmZXItc2VhcmNoLWRlZmF1bHQtZm4gaGVsbS1mdXp6eS1zZWFyY2gpIGJ1ZmZl
ci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAicHJvZiByZXAiIG1ha2UtaGFzaC10YWJsZSA6dGVz
dCBlcXVhbCBhbGxvdy1kdXBzIGhlbG0tc2V0LWNhc2UtZm9sZC1zZWFyY2ggMCAxIG5pbCAoaW52
YWxpZC1yZWdleHApIGxvb2tpbmctYXQgYXBwbHkgcG9zLWJvbCBwb3MtZW9sIGdldC10ZXh0LXBy
b3BlcnR5IG1hdGNoLXBhcnQgcHJvcGVydGl6ZSBnZXRoYXNoICIiIGhlbG0tc2VhcmNoLW1hdGNo
LXBhcnQgcHV0aGFzaCBhc3NvYy1kZWZhdWx0IGZpbHRlci1vbmUtYnktb25lIGZ1bmN0aW9ucCBj
YXNlLWZvbGQtc2VhcmNoXSAxOF0gY2F0ZWdvcnkgdCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0IGhl
bHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1vdXNl
LWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMoImhl
bG0tLXNlYXJjaC1mcm9tLWNhbmRpZGF0ZS1idWZmZXItMSIgMCAzNiAoaGVscC1hcmdzIChoZWxt
LS1zZWFyY2gtZnJvbS1jYW5kaWRhdGUtYnVmZmVyLTEpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24t
YnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLXNlYXJjaC1mcm9tLWNhbmRpZGF0ZS1idWZmZXIi
IDAgMzMgKGhlbHAtYXJncyAoaGVsbS1zZWFyY2gtZnJvbS1jYW5kaWRhdGUtYnVmZmVyKSBjYXRl
Z29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1jYW5kaWRhdGVz
LWluLWJ1ZmZlci0xIiAwIDI3IChoZWxwLWFyZ3MgKGhlbG0tY2FuZGlkYXRlcy1pbi1idWZmZXIt
MSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tY2Fu
ZGlkYXRlcy1pbi1idWZmZXIiIDAgMjUgKGhlbHAtYXJncyAoaGVsbS1jYW5kaWRhdGVzLWluLWJ1
ZmZlcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0t
YXBwbHktZnVuY3Rpb25zLWZyb20tc291cmNlIiAwIDMyIChoZWxwLWFyZ3MgKGhlbG0tYXBwbHkt
ZnVuY3Rpb25zLWZyb20tc291cmNlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0
b24gKHQpKSkgIygiaGVsbS1pbnRlcnByZXQtdmFsdWUiIDAgMjAgKGhlbHAtYXJncyAoaGVsbS1p
bnRlcnByZXQtdmFsdWUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkp
KSAjKCJoZWxtLWdldC1jYW5kaWRhdGVzIiAwIDE5IChoZWxwLWFyZ3MgKGhlbG0tZ2V0LWNhbmRp
ZGF0ZXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxt
LWdldC1jYWNoZWQtY2FuZGlkYXRlcyIgMCAyNiAoaGVscC1hcmdzIChoZWxtLWdldC1jYWNoZWQt
Y2FuZGlkYXRlcykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
ImhlbG0tY29tcHV0ZS1tYXRjaGVzIiAwIDIwIChoZWxwLWFyZ3MgKGhlbG0tY29tcHV0ZS1tYXRj
aGVzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS0t
Y29sbGVjdC1tYXRjaGVzIiAwIDIxIChoZWxwLWFyZ3MgKGhlbG0tLWNvbGxlY3QtbWF0Y2hlcykg
Y2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tdXBkYXRl
IiAwIDExIChoZWxwLWFyZ3MgKGhlbG0tdXBkYXRlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1jaGVjay1uZXctaW5wdXQiIDAgMjAgKGhlbHAtYXJn
cyAoaGVsbS1jaGVjay1uZXctaW5wdXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKV0gMyBbIygiaGVsbS1mbGV4LS1zdHlsZS1zY29yZSIgMCAyMiAoaGVscC1hcmdz
IChoZWxtLWZsZXgtLXN0eWxlLXNjb3JlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBi
dXR0b24gKHQpKSkgIygiaGVsbS1mdXp6eS1mbGV4LXN0eWxlLXNjb3JlIiAwIDI3IChoZWxwLWFy
Z3MgKGhlbG0tZnV6enktZmxleC1zdHlsZS1zY29yZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tc2NvcmUtY2FuZGlkYXRlLWZvci1wYXR0ZXJuIiAw
IDMyIChoZWxwLWFyZ3MgKGhlbG0tc2NvcmUtY2FuZGlkYXRlLWZvci1wYXR0ZXJuKSBjYXRlZ29y
eSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiIzxjb21waWxlZC1mdW5jdGlv
biAxMTA+IiAyMCAyMyAoYWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0aW9uIGtleW1hcCAo
a2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChoZWFkZXItbGluZSBrZXlt
YXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRv
bikpIChtb2RlLWxpbmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pICht
b3VzZS0yIC4gcHVzaC1idXR0b24pKSAoZm9sbG93LWxpbmsgLiBtb3VzZS1mYWNlKSAobW91c2Ut
MiAuIHB1c2gtYnV0dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5bWFwIChiYWNrdGFiIC4gYmFj
a3dhcmQtYnV0dG9uKSAoMjcga2V5bWFwICg5IC4gYmFja3dhcmQtYnV0dG9uKSkgKDkgLiBmb3J3
YXJkLWJ1dHRvbikpIGJ1dHRvbi1kYXRhICNbNTE0ICJcMzAzXDIwMwgAXDMwNVwyMDIJAFwzMDZc
MzAyXDIwMxoAAjpcMjAzGgBcMzA3AQQhIVwyMDIwAAI6XDIwMyUAXDIxMQMhXDIwMjAAXDMwMlwy
MDMvAFwzMDcDIVwyMDIwAAJcMzAyXDIwM0EAAjpcMjAzQQBcMzA3AgQhIVwyMDJXAAI6XDIwM0wA
AQMhXDIwMlcAXDMwMlwyMDNWAFwzMDcDIVwyMDJXAAJcMzEwAlwzMDBcIlwyMDZrAFwzMTECXDMx
MgQMXCJcMzEzBSFHRFwzMDAjXDMxMAJcMzAwXCJcMjA2fwBcMzExAlwzMTIEDFwiXDMxMwUhR0Rc
MzAwIwFBQAFBQANAA0ABAVVcMjAzXDIzMABcMzAxP1wyMDVcMjMzAAMDV1wyMDcBAVZcMjA3IiBb
I3MoaGFzaC10YWJsZSB0ZXN0IGVxdWFsIGRhdGEgKCJwcm9maWxlci1yZXBvcnQtcHJldmlvdXMt
ZW50cnkiICgwLjAgMzApICJwcm9maWxlci1yZXBvcnQtZGVzY3JpYmUtZW50cnkiICgwLjAgMzAp
ICJwcm9maWxlci1yZXBvcnQtcmVuZGVyLWNhbGx0cmVlIiAoMC4wIDMxKSAiZm9udC1sb2NrLXBy
b2ZpbGVyLXN0b3AtYW5kLXJlcG9ydCIgKDAuMCAzNCkgInByb2ZpbGVyLXJlcG9ydCIgKDAuMCAx
NSkgInByb2ZpbGVyLXJlcG9ydC13cml0ZS1wcm9maWxlIiAoMC4wIDI5KSAicHJvZmlsZXItcmVw
b3J0LWNvbGxhcHNlLWVudHJ5IiAoMC4wIDMwKSAiZm9udC1sb2NrLXByb2ZpbGVyLXJlcG9ydC1t
b2RlIiAoMC4wIDMwKSAicHJvZmlsZXItcmVwb3J0LXRvZ2dsZS1lbnRyeSIgKDAuMCAyOCkgInBy
b2ZpbGVyLXJlcG9ydC1jb21wYXJlLXByb2ZpbGUiICgwLjAgMzEpICJwcm9maWxlci1yZXBvcnQt
ZmluZC1lbnRyeSIgKDAuMCAyNikgImZvbnQtbG9jay1wcm9maWxlci1yZXBvcnQiICgwLjAgMjUp
ICJwcm9maWxlci1yZXBvcnQtYXNjZW5kaW5nLXNvcnQiICgwLjAgMzApICJwcm9maWxlci1yZXBv
cnQtZXhwYW5kLWVudHJ5IiAoMC4wIDI4KSAicHJvZmlsZXItcmVwb3J0LXJlbmRlci1yZXZlcnNl
ZC1jYWxsdHJlZSIgKDAuMCA0MCkgInByb2ZpbGVyLXJlcG9ydC1kZXNjZW5kaW5nLXNvcnQiICgw
LjAgMzEpICJwcm9maWxlci1yZXBvcnQtbmV4dC1lbnRyeSIgKDAuMCAyNikgInByb2ZpbGVyLXJl
cG9ydC1tb2RlIiAoMC4wIDIwKSkpIG5pbCBuaWwgdCBoZWxtLXBhdHRlcm4gY2RyIGNhciBoZWxt
LWJhc2VuYW1lIGdldGhhc2ggcHV0aGFzaCBoZWxtLXNjb3JlLWNhbmRpZGF0ZS1mb3ItcGF0dGVy
biBoZWxtLXN0cmluZ2lmeV0gMTMgIgoKKGZuIFMxIFMyKSJdIGNhdGVnb3J5IHQgZm9sbG93LWxp
bmsgdCBidXR0b24gdCBoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogRGlzcGxheSB0aGUgZnVuY3Rp
b24ncyBib2R5IiBtb3VzZS1mYWNlIGhpZ2hsaWdodCBmb250LWxvY2stZmFjZSBidXR0b24gZmFj
ZSBidXR0b24pKSAjKCJoZWxtLWZ1enp5LW1hdGNoaW5nLWRlZmF1bHQtc29ydC1mbi0xIiAwIDM3
IChoZWxwLWFyZ3MgKGhlbG0tZnV6enktbWF0Y2hpbmctZGVmYXVsdC1zb3J0LWZuLTEpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCIjPHN1YnItbmF0aXZlLWVs
aXNwIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzIw
PiIgMjAgNzMgKGJ1dHRvbiAodCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gaGVscC1h
cmdzIChGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV8y
MCkpKSAjKCJoZWxtLWFwcGx5LWZ1bmN0aW9ucy1mcm9tLXNvdXJjZSIgMCAzMiAoaGVscC1hcmdz
IChoZWxtLWFwcGx5LWZ1bmN0aW9ucy1mcm9tLXNvdXJjZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tcHJvY2Vzcy1maWx0ZXJlZC1jYW5kaWRhdGUt
dHJhbnNmb3JtZXIiIDAgNDMgKGhlbHAtYXJncyAoaGVsbS1wcm9jZXNzLWZpbHRlcmVkLWNhbmRp
ZGF0ZS10cmFuc2Zvcm1lcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0
KSkpICMoImhlbG0tY29tcHV0ZS1tYXRjaGVzIiAwIDIwIChoZWxwLWFyZ3MgKGhlbG0tY29tcHV0
ZS1tYXRjaGVzKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
aGVsbS0tY29sbGVjdC1tYXRjaGVzIiAwIDIxIChoZWxwLWFyZ3MgKGhlbG0tLWNvbGxlY3QtbWF0
Y2hlcykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0t
dXBkYXRlIiAwIDExIChoZWxwLWFyZ3MgKGhlbG0tdXBkYXRlKSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbS1jaGVjay1uZXctaW5wdXQiIDAgMjAgKGhl
bHAtYXJncyAoaGVsbS1jaGVjay1uZXctaW5wdXQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNoZWNrLW1pbmlidWZmZXItaW5wdXQiIDAgMjcgKGhl
bHAtYXJncyAoaGVsbS1jaGVjay1taW5pYnVmZmVyLWlucHV0KSBjYXRlZ29yeSBoZWxwLWZ1bmN0
aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiIzxjb21waWxlZC1mdW5jdGlvbiA0MkY+IiAyMCAy
MyAoYWN0aW9uIGhlbHAtZm5zLS1kaXNwbGF5LWZ1bmN0aW9uIGtleW1hcCAoa2V5bWFwICh0b3Vj
aHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChoZWFkZXItbGluZSBrZXltYXAgKHRvdWNoc2Ny
ZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChtb2RlLWxp
bmUga2V5bWFwICh0b3VjaHNjcmVlbi1kb3duIC4gcHVzaC1idXR0b24pIChtb3VzZS0yIC4gcHVz
aC1idXR0b24pKSAoZm9sbG93LWxpbmsgLiBtb3VzZS1mYWNlKSAobW91c2UtMiAuIHB1c2gtYnV0
dG9uKSAoMTMgLiBwdXNoLWJ1dHRvbikga2V5bWFwIChiYWNrdGFiIC4gYmFja3dhcmQtYnV0dG9u
KSAoMjcga2V5bWFwICg5IC4gYmFja3dhcmQtYnV0dG9uKSkgKDkgLiBmb3J3YXJkLWJ1dHRvbikp
IGJ1dHRvbi1kYXRhICNbMCAiCFwyMDYFAAk/XDIwNRkAXDMwMiByXDMwM1wzMDQCXCJcMjE2XDMw
NSBcMjEwXDMwNiAqXDI2MgFcMjA3IiBbaGVsbS1pbi1wZXJzaXN0ZW50LWFjdGlvbiBoZWxtLXN1
c3BlbmQtdXBkYXRlLWZsYWcgaW50ZXJuYWwtLWJlZm9yZS1zYXZlLXNlbGVjdGVkLXdpbmRvdyBt
YWtlLWNsb3N1cmUgI1swICJcMzAxXDMwMCFcMjA3IiBbVjAgaW50ZXJuYWwtLWFmdGVyLXNhdmUt
c2VsZWN0ZWQtd2luZG93XSAyXSBoZWxtLWNoZWNrLW1pbmlidWZmZXItaW5wdXQgaGVsbS1wcmlu
dC1lcnJvci1tZXNzYWdlc10gNF0gY2F0ZWdvcnkgdCBmb2xsb3ctbGluayB0IGJ1dHRvbiB0IGhl
bHAtZWNobyAibW91c2UtMiwgUkVUOiBEaXNwbGF5IHRoZSBmdW5jdGlvbidzIGJvZHkiIG1vdXNl
LWZhY2UgaGlnaGxpZ2h0IGZvbnQtbG9jay1mYWNlIGJ1dHRvbiBmYWNlIGJ1dHRvbikpICMoImFw
cGx5IiAwIDUgKGhlbHAtYXJncyAoYXBwbHkpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJ0aW1lci1ldmVudC1oYW5kbGVyIiAwIDE5IChoZWxwLWFyZ3MgKHRp
bWVyLWV2ZW50LWhhbmRsZXIpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAo
dCkpKV0gMyBbIygid2hlcmUtaXMtaW50ZXJuYWwiIDAgMTcgKGhlbHAtYXJncyAod2hlcmUtaXMt
aW50ZXJuYWwpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJz
dWJzdGl0dXRlLWNvbW1hbmQta2V5cyIgMCAyMyAoaGVscC1hcmdzIChzdWJzdGl0dXRlLWNvbW1h
bmQta2V5cykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhl
bG0tZGlzcGxheS1tb2RlLWxpbmUiIDAgMjIgKGhlbHAtYXJncyAoaGVsbS1kaXNwbGF5LW1vZGUt
bGluZSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0t
bW92ZS1zZWxlY3Rpb24tY29tbW9uIiAwIDI2IChoZWxwLWFyZ3MgKGhlbG0tbW92ZS1zZWxlY3Rp
b24tY29tbW9uKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygi
aGVsbS0tdXBkYXRlLW1vdmUtZmlyc3QtbGluZSIgMCAyOCAoaGVscC1hcmdzIChoZWxtLS11cGRh
dGUtbW92ZS1maXJzdC1saW5lKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24g
KHQpKSkgIygiaGVsbS11cGRhdGUiIDAgMTEgKGhlbHAtYXJncyAoaGVsbS11cGRhdGUpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNoZWNrLW5ldy1p
bnB1dCIgMCAyMCAoaGVscC1hcmdzIChoZWxtLWNoZWNrLW5ldy1pbnB1dCkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tY2hlY2stbWluaWJ1ZmZlci1p
bnB1dCIgMCAyNyAoaGVscC1hcmdzIChoZWxtLWNoZWNrLW1pbmlidWZmZXItaW5wdXQpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCIjPGNvbXBpbGVkLWZ1bmN0
aW9uIDQyRj4iIDIwIDIzIChhY3Rpb24gaGVscC1mbnMtLWRpc3BsYXktZnVuY3Rpb24ga2V5bWFw
IChrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikgKGhlYWRlci1saW5lIGtl
eW1hcCAodG91Y2hzY3JlZW4tZG93biAuIHB1c2gtYnV0dG9uKSAobW91c2UtMiAuIHB1c2gtYnV0
dG9uKSkgKG1vZGUtbGluZSBrZXltYXAgKHRvdWNoc2NyZWVuLWRvd24gLiBwdXNoLWJ1dHRvbikg
KG1vdXNlLTIgLiBwdXNoLWJ1dHRvbikpIChmb2xsb3ctbGluayAuIG1vdXNlLWZhY2UpIChtb3Vz
ZS0yIC4gcHVzaC1idXR0b24pICgxMyAuIHB1c2gtYnV0dG9uKSBrZXltYXAgKGJhY2t0YWIgLiBi
YWNrd2FyZC1idXR0b24pICgyNyBrZXltYXAgKDkgLiBiYWNrd2FyZC1idXR0b24pKSAoOSAuIGZv
cndhcmQtYnV0dG9uKSkgYnV0dG9uLWRhdGEgI1swICIIXDIwNgUACT9cMjA1GQBcMzAyIHJcMzAz
XDMwNAJcIlwyMTZcMzA1IFwyMTBcMzA2ICpcMjYyAVwyMDciIFtoZWxtLWluLXBlcnNpc3RlbnQt
YWN0aW9uIGhlbG0tc3VzcGVuZC11cGRhdGUtZmxhZyBpbnRlcm5hbC0tYmVmb3JlLXNhdmUtc2Vs
ZWN0ZWQtd2luZG93IG1ha2UtY2xvc3VyZSAjWzAgIlwzMDFcMzAwIVwyMDciIFtWMCBpbnRlcm5h
bC0tYWZ0ZXItc2F2ZS1zZWxlY3RlZC13aW5kb3ddIDJdIGhlbG0tY2hlY2stbWluaWJ1ZmZlci1p
bnB1dCBoZWxtLXByaW50LWVycm9yLW1lc3NhZ2VzXSA0XSBjYXRlZ29yeSB0IGZvbGxvdy1saW5r
IHQgYnV0dG9uIHQgaGVscC1lY2hvICJtb3VzZS0yLCBSRVQ6IERpc3BsYXkgdGhlIGZ1bmN0aW9u
J3MgYm9keSIgbW91c2UtZmFjZSBoaWdobGlnaHQgZm9udC1sb2NrLWZhY2UgYnV0dG9uIGZhY2Ug
YnV0dG9uKSkgIygiYXBwbHkiIDAgNSAoaGVscC1hcmdzIChhcHBseSkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoInRpbWVyLWV2ZW50LWhhbmRsZXIiIDAgMTkg
KGhlbHAtYXJncyAodGltZXItZXZlbnQtaGFuZGxlcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1i
dXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tcmVhZC1mcm9tLW1pbmlidWZmZXIiIDAgMjUgKGhl
bHAtYXJncyAoaGVsbS1yZWFkLWZyb20tbWluaWJ1ZmZlcikgY2F0ZWdvcnkgaGVscC1mdW5jdGlv
bi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0taW50ZXJuYWwiIDAgMTMgKGhlbHAtYXJncyAo
aGVsbS1pbnRlcm5hbCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImhlbG0iIDAgNCAoaGVscC1hcmdzIChoZWxtKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbSIgMCA0IChoZWxwLWFyZ3MgKGhlbG0pIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLU0teC1yZWFkLWV4dGVu
ZGVkLWNvbW1hbmQiIDAgMzAgKGhlbHAtYXJncyAoaGVsbS1NLXgtcmVhZC1leHRlbmRlZC1jb21t
YW5kKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSldIDQgWyMoImhl
bG0taGFuZGxlLXdpbm5lci1ib3JpbmctYnVmZmVycyIgMCAzMyAoaGVscC1hcmdzIChoZWxtLWhh
bmRsZS13aW5uZXItYm9yaW5nLWJ1ZmZlcnMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9u
IGJ1dHRvbiAodCkpKSAjKCJoZWxtLWxvZy1ydW4taG9vayIgMCAxNyAoaGVscC1hcmdzIChoZWxt
LWxvZy1ydW4taG9vaykgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkp
ICMoImhlbG0tY2xlYW51cCIgMCAxMiAoaGVscC1hcmdzIChoZWxtLWNsZWFudXApIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCIjPHN1YnItbmF0aXZlLWVsaXNw
IEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzkxPiIg
MjAgNzMgKGJ1dHRvbiAodCkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gaGVscC1hcmdz
IChGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV85MSkp
KSAjKCJoZWxtLWludGVybmFsIiAwIDEzIChoZWxwLWFyZ3MgKGhlbG0taW50ZXJuYWwpIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtIiAwIDQgKGhlbHAt
YXJncyAoaGVsbSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMo
ImhlbG0iIDAgNCAoaGVscC1hcmdzIChoZWxtKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygiaGVsbS1NLXgtcmVhZC1leHRlbmRlZC1jb21tYW5kIiAwIDMwICho
ZWxwLWFyZ3MgKGhlbG0tTS14LXJlYWQtZXh0ZW5kZWQtY29tbWFuZCkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhlbG0tTS14IiAwIDggKGhlbHAtYXJncyAo
aGVsbS1NLXgpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJm
dW5jYWxsLWludGVyYWN0aXZlbHkiIDAgMjEgKGhlbHAtYXJncyAoZnVuY2FsbC1pbnRlcmFjdGl2
ZWx5KSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiY29tbWFu
ZC1leGVjdXRlIiAwIDE1IChoZWxwLWFyZ3MgKGNvbW1hbmQtZXhlY3V0ZSkgY2F0ZWdvcnkgaGVs
cC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICJuaWwiICJuaWwiICJuaWwiICJuaWwiICJu
aWwiXSA3IFsjKCJzZWxlY3QtZnJhbWUtc2V0LWlucHV0LWZvY3VzIiAwIDI4IChoZWxwLWFyZ3Mg
KHNlbGVjdC1mcmFtZS1zZXQtaW5wdXQtZm9jdXMpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0
dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWZyYW1lLW9yLXdpbmRvdy1jb25maWd1cmF0aW9uIiAw
IDM0IChoZWxwLWFyZ3MgKGhlbG0tZnJhbWUtb3Itd2luZG93LWNvbmZpZ3VyYXRpb24pIGNhdGVn
b3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtLWNsZWFudXAiIDAg
MTIgKGhlbHAtYXJncyAoaGVsbS1jbGVhbnVwKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1dHRv
biBidXR0b24gKHQpKSkgIygiIzxzdWJyLW5hdGl2ZS1lbGlzcCBGNjE2ZTZmNmU3OTZkNmY3NTcz
MmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV85MT4iIDIwIDczIChidXR0b24gKHQpIGNh
dGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGhlbHAtYXJncyAoRjYxNmU2ZjZlNzk2ZDZmNzU3
MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfOTEpKSkgIygiaGVsbS1pbnRlcm5hbCIg
MCAxMyAoaGVscC1hcmdzIChoZWxtLWludGVybmFsKSBjYXRlZ29yeSBoZWxwLWZ1bmN0aW9uLWJ1
dHRvbiBidXR0b24gKHQpKSkgIygiaGVsbSIgMCA0IChoZWxwLWFyZ3MgKGhlbG0pIGNhdGVnb3J5
IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRvbiAodCkpKSAjKCJoZWxtIiAwIDQgKGhlbHAtYXJn
cyAoaGVsbSkgY2F0ZWdvcnkgaGVscC1mdW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImhl
bG0tTS14LXJlYWQtZXh0ZW5kZWQtY29tbWFuZCIgMCAzMCAoaGVscC1hcmdzIChoZWxtLU0teC1y
ZWFkLWV4dGVuZGVkLWNvbW1hbmQpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1dHRv
biAodCkpKSAjKCJoZWxtLU0teCIgMCA4IChoZWxwLWFyZ3MgKGhlbG0tTS14KSBjYXRlZ29yeSBo
ZWxwLWZ1bmN0aW9uLWJ1dHRvbiBidXR0b24gKHQpKSkgIygiZnVuY2FsbC1pbnRlcmFjdGl2ZWx5
IiAwIDIxIChoZWxwLWFyZ3MgKGZ1bmNhbGwtaW50ZXJhY3RpdmVseSkgY2F0ZWdvcnkgaGVscC1m
dW5jdGlvbi1idXR0b24gYnV0dG9uICh0KSkpICMoImNvbW1hbmQtZXhlY3V0ZSIgMCAxNSAoaGVs
cC1hcmdzIChjb21tYW5kLWV4ZWN1dGUpIGNhdGVnb3J5IGhlbHAtZnVuY3Rpb24tYnV0dG9uIGJ1
dHRvbiAodCkpKSAibmlsIiAibmlsIiAibmlsIiAibmlsIiAibmlsIl0gNiBbIkF1dG9tYXRpYyBH
QyIgIm5pbCJdIDEyNTApKSAoMjYxMTcgMTI1NzcgNzkwMzczIDcxNTAwMCkgbmlsXQo=
--=-=-=
Content-Type: text/plain


-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>

--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 08:53:09 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 28 04:53:09 2024
Received: from localhost ([127.0.0.1]:39014 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rplVV-0000Z7-BS
	for submit <at> debbugs.gnu.org; Thu, 28 Mar 2024 04:53:09 -0400
Received: from out-172.mta0.migadu.com ([2001:41d0:1004:224b::ac]:16600)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <theo@HIDDEN>) id 1rplVR-0000Y4-Ct
 for 70036 <at> debbugs.gnu.org; Thu, 28 Mar 2024 04:53:07 -0400
X-Report-Abuse: Please report any abuse attempt to abuse@HIDDEN and
 include these headers.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thornhill.no;
 s=key1; t=1711615978;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=Hgr01q93yqfEv9BNDIRIzqFx7smpbyKimILzF099i1Y=;
 b=aumW62MSbpNbNusZ1vq5XIMLg0xbtuHxjn3pfC49mtkVENLkzc4bDFVa0yDwRjxZBshpHV
 6QGsxBIVYWi2X4XhEox9n9Q6FMgAbPA8TyfNO8c2z0aovZDWlaw4tvhu5mDIrAFSKz3rYm
 FzpM1r5RxrEURFgHUhEsy7oBSiUX77bYfOcW1FuR2eg+9wqWisSmBh3ktEVbl3pqM/g6Hv
 nFqDHOGC2WuLjhXx3wQhTZ7S/IPr99c0SoMDRW+HUNFwokeHSmLWJ/bPMK32ZxDUQerqgv
 WqE6GVActW80dm/6kQQVUR2XlUDSnP49yKtapNCPbB/IeP0E93A4uT67eqogxw==
From: Theodor Thornhill <theo@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
In-Reply-To: <874jcqygpn.fsf@HIDDEN>
References: <87le63xzjt.fsf@HIDDEN> <87ttkrqvru.fsf@HIDDEN>
 <87il17xsea.fsf@HIDDEN> <86wmpmhp0a.fsf@HIDDEN>
 <874jcqygpn.fsf@HIDDEN>
Date: Thu, 28 Mar 2024 09:52:53 +0100
Message-ID: <87y1a2wxei.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Migadu-Flow: FLOW_OUT
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70036
Cc: 70036 <at> debbugs.gnu.org, felician.nemeth@HIDDEN,
 =?utf-8?B?Sm/Do28g?= =?utf-8?B?VMOhdm9yYQ==?= <joaotavora@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Theodor Thornhill <theo@HIDDEN> writes:

> Eli Zaretskii <eliz@HIDDEN> writes:
>
>>> Cc: 70036 <at> debbugs.gnu.org
>>> Date: Wed, 27 Mar 2024 22:43:25 +0100
>>> From:  Theodor Thornhill via "Bug reports for GNU Emacs,
>>>  the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN>
>>> 
>>> Felician Nemeth <felician.nemeth@HIDDEN> writes:
>>> 
>>> >> I've been studying Eglots performance and have been noticing a couple
>>> >> of things that I find very interesting. It seems like `file-truename`
>>> >> is in the hot path
>>> >
>>> > I think Eglot repeatedly calls file-truename with the same argument (or
>>> > with an argument from a small set of filenames.)
>>> 
>>> This is true, to some extent.
>>
>> Can someone explain why Eglot needs to call file-truename in the first
>> place?
>

[...]

> handler. We could store the last received diagnostics in the server
> object, and do a quick lookup from known buffers there.
>
> Theo


It seems to be there from the very early days, like in 2018. My guess is
that we simply never noticed the performance issues here due to other
stuff like json parsing etc.

CC'd Joao to get some perspective whether or not it is intentional or
needed at all.

Theo




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 07:10:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 28 03:10:48 2024
Received: from localhost ([127.0.0.1]:38911 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpjuQ-0000KX-2O
	for submit <at> debbugs.gnu.org; Thu, 28 Mar 2024 03:10:48 -0400
Received: from out-175.mta0.migadu.com ([91.218.175.175]:57343)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <theo@HIDDEN>) id 1rpjuL-0000JU-9Z
 for 70036 <at> debbugs.gnu.org; Thu, 28 Mar 2024 03:10:43 -0400
X-Report-Abuse: Please report any abuse attempt to abuse@HIDDEN and
 include these headers.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thornhill.no;
 s=key1; t=1711609834;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=abEmjJWFPetvcclYMyYRISoFipxOfAjtUlb0dxNIXa4=;
 b=xoSsxs0fT+IakAHvuyuL3xfPd9/ZSRyL3PFjGciYy/cyuEGCDVZL1to78696qsDAE1B8eQ
 4OkVnyOepzCRSBssxQPAlRRwv1KaTJaon7qDkfHHojURWKVo9GExkkY1iWxL1tHNhlVgjz
 3W9O7RJczgZaQjhmHdw9Llx6VyuN22SklBD/Rs1fdNj1SkPhdCLRbyn8OhzhcMHaBpWLvx
 89IYhRy+bhIgyFtCg0qgURQ0kVkEgTochxqkaFxFb/urBtqXe/EhNk5vZ4FoNPbKDbp2Wk
 HGzKzq85tjIdmpotR7tkGMiqDmIV1Rbm6bCroYbUKpNnCtOphXxYpjYdTeuN2g==
From: Theodor Thornhill <theo@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
In-Reply-To: <86wmpmhp0a.fsf@HIDDEN>
References: <87le63xzjt.fsf@HIDDEN> <87ttkrqvru.fsf@HIDDEN>
 <87il17xsea.fsf@HIDDEN> <86wmpmhp0a.fsf@HIDDEN>
Date: Thu, 28 Mar 2024 08:10:28 +0100
Message-ID: <874jcqygpn.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Migadu-Flow: FLOW_OUT
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70036
Cc: 70036 <at> debbugs.gnu.org, felician.nemeth@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> Cc: 70036 <at> debbugs.gnu.org
>> Date: Wed, 27 Mar 2024 22:43:25 +0100
>> From:  Theodor Thornhill via "Bug reports for GNU Emacs,
>>  the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN>
>> 
>> Felician Nemeth <felician.nemeth@HIDDEN> writes:
>> 
>> >> I've been studying Eglots performance and have been noticing a couple
>> >> of things that I find very interesting. It seems like `file-truename`
>> >> is in the hot path
>> >
>> > I think Eglot repeatedly calls file-truename with the same argument (or
>> > with an argument from a small set of filenames.)
>> 
>> This is true, to some extent.
>
> Can someone explain why Eglot needs to call file-truename in the first
> place?

I tried quickly just replacing file-truename with expand-file-name, and
from some quick testing, it seems to work, and of course remove
file-truenames slow performance in the profiles:

```
@@ -1085,7 +1089,7 @@ eglot-uri-to-path
 
 (defun eglot-path-to-uri (path)
   "Convert PATH, a file name, to LSP URI string and return it."
-  (let ((truepath (file-truename path)))
+  (let ((truepath (expand-file-name path)))
     (if (and (url-type (url-generic-parse-url path))
              ;; It might be MS Windows path which includes a drive
              ;; letter that looks like a URL scheme (bug#59338)
```

This wouldn't help for the usage in find-buffer-visiting, though. But
this one could more easily be replaced by reworking the diagnostics
handler. We could store the last received diagnostics in the server
object, and do a quick lookup from known buffers there.

Theo




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 07:04:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 28 03:04:35 2024
Received: from localhost ([127.0.0.1]:38897 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpjoQ-0008Iz-A1
	for submit <at> debbugs.gnu.org; Thu, 28 Mar 2024 03:04:35 -0400
Received: from out-176.mta1.migadu.com ([95.215.58.176]:56291)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <theo@HIDDEN>) id 1rpjoO-0008I3-4c
 for 70036 <at> debbugs.gnu.org; Thu, 28 Mar 2024 03:04:33 -0400
X-Report-Abuse: Please report any abuse attempt to abuse@HIDDEN and
 include these headers.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thornhill.no;
 s=key1; t=1711609466;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=lCB9PQCPWazdIAUEQnqTKHme6QPE0eACk3hSnqfstzE=;
 b=me2+Ea5y6jAUvc8iTyQa6B4uiT7KEEDSq+LDThZQWed1v6CVKQ0v4xhDjemViask/Qg8Lz
 vJa+9rz1S3FFtP9n3x5Lxi32lukaJSQ1yAVh7lwK9oqc3kqGDXPdWwy0VJwYAmpsd4wQ2L
 ZaOlWNif1a6FuwxsxMIpkxls/ty05/Csn63zB0zevCaXRUmrKvBMgHUDzzFwxGELgRtkbS
 J95ct7FCMjnkR6TzKCBsoKnv44HcOQmDqIcrXOvpgYekC8lt+W1pyEw786p82+1B/qKPYa
 SrVdmBhKnNTpZNGQDOZJq1XjiAoviPb3VySLBe8TSZtDVE2Yl0rwyeCyMqLh8A==
From: Theodor Thornhill <theo@HIDDEN>
To: Po Lu <luangruo@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
In-Reply-To: <87ttkr3vku.fsf@HIDDEN>
References: <87le63xzjt.fsf@HIDDEN> <861q7vihnm.fsf@HIDDEN>
 <87frwbxrs6.fsf@HIDDEN> <87zfuj40pz.fsf@HIDDEN>
 <87ttkr3vku.fsf@HIDDEN>
Date: Thu, 28 Mar 2024 08:04:22 +0100
Message-ID: <877chmygzt.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Migadu-Flow: FLOW_OUT
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70036
Cc: Eli Zaretskii <eliz@HIDDEN>, 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Po Lu <luangruo@HIDDEN> writes:

> Po Lu <luangruo@HIDDEN> writes:
>
>> Haiku supports realpath, but not wordexp.  We must reimplement virtually
>> all POSIX functions of this nature on Windows, as the versions provided
>> by system C libraries, if they exist at all, are inadequate for some
>> reason or another.  Furthermore, these functions are absent from a
>> number of other operating systems, such as OpenBSD and Android 14.0, and
>> on others (Alpine, I believe) wordexp is severely inefficient for being
>> implemented as a wrapper around /bin/sh.
>
> BTW, after reading the subject of this bug report, I don't believe there
> is a place for wordexp at all.  wordexp is no replacement for
> Fexpand_file_name, but rather a means of expanding input in the manner
> of a shell, which input might include arithmetic expressions, shell
> command substitutions, and other expressions valid as shell input.  If
> Fexpand_file_name alone will not suffice, TRT is to replicate the
> mechanics of file-truename in whole, not cutting corners with these
> admittedly tempting functions.

I agree, and believe you are right. I think Fexpand_file_name should be
enough. I'll look into it!

Thanks!




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 07:03:58 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 28 03:03:58 2024
Received: from localhost ([127.0.0.1]:38891 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpjno-0008EU-KP
	for submit <at> debbugs.gnu.org; Thu, 28 Mar 2024 03:03:58 -0400
Received: from out-176.mta1.migadu.com ([95.215.58.176]:51364)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <theo@HIDDEN>) id 1rpjnl-0008DO-5S
 for 70036 <at> debbugs.gnu.org; Thu, 28 Mar 2024 03:03:55 -0400
X-Report-Abuse: Please report any abuse attempt to abuse@HIDDEN and
 include these headers.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thornhill.no;
 s=key1; t=1711609426;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=hVrUWW2gJT6abc/q+zGDPCZsIGQQvm2njGpdFx38rjw=;
 b=W7Hh5Kfi6tyD2jK/+WWBXfsVWzkfwFiKfbcLEjZaDhCN2dmPEvQ8hxtGJnsrjHa7VBWT3w
 ULYR0kqnGHqyM6scQcT7+DXU+JdwKfPzxwg9GR7gYvKnWFXDVu1tRyisLcJWHVzFDXOxET
 bXugLnI4pmxSiizAw94HTYYRmiOj/DgOWsOWOGlb0krUiN5iBh09mrmXWX1QbbLE71cEQT
 4cgU7+qQntmmdjpqmGOstSCYHYSG81mRy1ea88+aWPb3EZtIAl6iBkHYKCYZURp7aHS5sY
 l4yEXKfjLPBeiPG85Y/YFargRh7dQ/K9eZgwXIFsxZgDj5yNfTC4gVjkHFA93w==
From: Theodor Thornhill <theo@HIDDEN>
To: Po Lu <luangruo@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
In-Reply-To: <87zfuj40pz.fsf@HIDDEN>
References: <87le63xzjt.fsf@HIDDEN> <861q7vihnm.fsf@HIDDEN>
 <87frwbxrs6.fsf@HIDDEN> <87zfuj40pz.fsf@HIDDEN>
Date: Thu, 28 Mar 2024 08:03:43 +0100
Message-ID: <87a5miyh0w.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Migadu-Flow: FLOW_OUT
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70036
Cc: Eli Zaretskii <eliz@HIDDEN>, 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Po Lu <luangruo@HIDDEN> writes:

> Theodor Thornhill <theo@HIDDEN> writes:
>
>> OK - for my education on the portability argument. Is that because of
>> Emacs support targets like haiku and old versions of windows, or
>> something else inherent in these functions?
>
> Haiku supports realpath, but not wordexp.  We must reimplement virtually
> all POSIX functions of this nature on Windows, as the versions provided
> by system C libraries, if they exist at all, are inadequate for some
> reason or another.  Furthermore, these functions are absent from a
> number of other operating systems, such as OpenBSD and Android 14.0, and
> on others (Alpine, I believe) wordexp is severely inefficient for being
> implemented as a wrapper around /bin/sh.

Thanks for the input!

Theo




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 07:03:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 28 03:03:44 2024
Received: from localhost ([127.0.0.1]:38887 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpjna-0008Cv-Mz
	for submit <at> debbugs.gnu.org; Thu, 28 Mar 2024 03:03:44 -0400
Received: from out-178.mta1.migadu.com ([2001:41d0:203:375::b2]:28873)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <theo@HIDDEN>) id 1rpjnV-0008C0-U9
 for 70036 <at> debbugs.gnu.org; Thu, 28 Mar 2024 03:03:40 -0400
X-Report-Abuse: Please report any abuse attempt to abuse@HIDDEN and
 include these headers.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thornhill.no;
 s=key1; t=1711609410;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=y6dwAIoc9FD82X3mPQJuOFejtBgFIUXEoWJoBxtIVI4=;
 b=gJIQIJFFkqxHrInQ8vq6vC9o5Dr+TXw5VksrUSvtoWPQ0Mke6a/M7QbBEX5AYV604EeQrX
 M4lvEvcrtH+h9BTzIp2JvbVwM4qNpzBfWx5WojobWYBoSrsvdEruugNIIDXPB+GqRtD89q
 5wEDMGbdQVMoXH8v2TFl4+eD8HWc1j4jXUvYAim//iq9ahsIcHjgGunoSNKGrPQpOSScUb
 7aZJYnKLhOYnWBhmB+B3MJDlJyDt+AoV+iTaxZkHU+j4L2MlqNdcIUoEo6rUsb1ksxEmZs
 RQEqFv8q4ScsxaeKsUka7kufegZf/MkW8J7VolK8cIjVVv0MVYcBSI9NOQ8GPw==
From: Theodor Thornhill <theo@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
In-Reply-To: <86ttkqho52.fsf@HIDDEN>
References: <87le63xzjt.fsf@HIDDEN> <861q7vihnm.fsf@HIDDEN>
 <87frwbxrs6.fsf@HIDDEN> <86ttkqho52.fsf@HIDDEN>
Date: Thu, 28 Mar 2024 08:03:25 +0100
Message-ID: <87cyreyh1e.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Migadu-Flow: FLOW_OUT
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70036
Cc: 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> From: Theodor Thornhill <theo@HIDDEN>
>> Cc: 70036 <at> debbugs.gnu.org
>> Date: Wed, 27 Mar 2024 22:56:41 +0100
>> 
>> Eli Zaretskii <eliz@HIDDEN> writes:
>> 
>> >> As for the patch - it now relies on wordexp to resolve the paths, and I
>> >> believe there is no real feature parity with the old variant as for now,
>> >> but I haven't seen any issues thus far. If this approach is accepted I
>> >> will of course make sure we have feature parity, unless that isn't
>> >> wanted.
>> >
>> > We cannot rely on wordexp and we cannot rely on realpath: both are not
>> > portable enough.
>> 
>> OK - for my education on the portability argument. Is that because of
>> Emacs support targets like haiku and old versions of windows, or
>> something else inherent in these functions?
>
> Platforms other than GNU/Linux are the main concern, yes.  Another
> aspect to consider is whether the function is available in Gnulib --
> if it is, we can import the Gnulib implementation and use it on
> platforms which don't provide it natively; in that case, using such a
> function is okay (but the MS-Windows port will likely need to provide
> its own implementation, because Emacs uses Unicode APIs to access and
> process file names, something Gnulib doesn't do on Windows).
>
> In this case, realpath is available in Gnulib, but wordexp isn't,
> AFAICT.  And I'm not even sure we want to use wordexp here, because
> (reading its docs) it does stuff we don't want to do in file-truename.
> Why did you need to call it here?
>

Thanks! I'll admit Fexpand-file-name likely does what we want in this
case, so I'll look into this.

>> Another much simpler way to improve Eglot performance her could be to
>> allow for the relevant functions to execute through handlers, to not
>> break other parts of Emacs. For example `find-buffer-visiting` could
>> allow to run through a simpler function that merely expands and looks up
>> the current file, considering that the LSP server likely reports on
>> files that are already existing, and likely most symlink shenanigans
>> aren't an issue here. Just thinking out loudly on this.
>
> AFAIR, find-buffer-visiting was significantly sped up recently (see
> bug#66117), so if you did your benchmarks with Emacs before commit
> b7a737ef49 on master, perhaps do it again with the latest master
> branch.

These reports are made using some commit from yesterday, so these
speedups should be included. `find-buffer-visiting` is used inside of
the `publishDiagnostics` handler, which sometimes receives file paths
for the whole project, so this really becomes a bottleneck for servers
that provide project wide diags.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 06:22:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 28 02:22:13 2024
Received: from localhost ([127.0.0.1]:38844 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpj9R-0004Y3-BL
	for submit <at> debbugs.gnu.org; Thu, 28 Mar 2024 02:22:13 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:36884)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1rpj9P-0004XK-Da
 for 70036 <at> debbugs.gnu.org; Thu, 28 Mar 2024 02:22:12 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1rpj9I-000152-HX; Thu, 28 Mar 2024 02:22:04 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=UhZXiJZWBlG+OvvBG2MmwQUR3+cI2M9HbdyQdZO2sAY=; b=A8xGDVixr/f7
 pve1gXRDX0MJ0Jv2sd50W+R6Mf7ec5i9bBQVDtXSQxo0z6QIhZ5F6BSbsN7TnXPaY+TDHG8qG+mcb
 62Ls+RzJvhjpug1FWhTkNpwpLUNStuWjkGR63ug0YtdSF9Nlhj9J6QIhgt2gOn/FtSXUlqzgL8r73
 4s0o6Nrt1RZhDonlLWHk3DKEENR0BtCGofsO2dtd2W3lell9Hi7oNFrqTZtibHvSZYTjmKMp8cTov
 CzYgQJurbF1v0rq9nylo9FXiI0eiY9Ri5lKhscFKhVeXUyCaW/qKyzAiiZa7uLK0JNJ6P58Oln89J
 OI1w0L5P4G3/rU9hvfjROA==;
Date: Thu, 28 Mar 2024 08:22:01 +0200
Message-Id: <86ttkqho52.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Theodor Thornhill <theo@HIDDEN>
In-Reply-To: <87frwbxrs6.fsf@HIDDEN> (message from Theodor Thornhill on
 Wed, 27 Mar 2024 22:56:41 +0100)
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
References: <87le63xzjt.fsf@HIDDEN> <861q7vihnm.fsf@HIDDEN>
 <87frwbxrs6.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 70036
Cc: 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Theodor Thornhill <theo@HIDDEN>
> Cc: 70036 <at> debbugs.gnu.org
> Date: Wed, 27 Mar 2024 22:56:41 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> >> As for the patch - it now relies on wordexp to resolve the paths, and I
> >> believe there is no real feature parity with the old variant as for now,
> >> but I haven't seen any issues thus far. If this approach is accepted I
> >> will of course make sure we have feature parity, unless that isn't
> >> wanted.
> >
> > We cannot rely on wordexp and we cannot rely on realpath: both are not
> > portable enough.
> 
> OK - for my education on the portability argument. Is that because of
> Emacs support targets like haiku and old versions of windows, or
> something else inherent in these functions?

Platforms other than GNU/Linux are the main concern, yes.  Another
aspect to consider is whether the function is available in Gnulib --
if it is, we can import the Gnulib implementation and use it on
platforms which don't provide it natively; in that case, using such a
function is okay (but the MS-Windows port will likely need to provide
its own implementation, because Emacs uses Unicode APIs to access and
process file names, something Gnulib doesn't do on Windows).

In this case, realpath is available in Gnulib, but wordexp isn't,
AFAICT.  And I'm not even sure we want to use wordexp here, because
(reading its docs) it does stuff we don't want to do in file-truename.
Why did you need to call it here?

> Another much simpler way to improve Eglot performance her could be to
> allow for the relevant functions to execute through handlers, to not
> break other parts of Emacs. For example `find-buffer-visiting` could
> allow to run through a simpler function that merely expands and looks up
> the current file, considering that the LSP server likely reports on
> files that are already existing, and likely most symlink shenanigans
> aren't an issue here. Just thinking out loudly on this.

AFAIR, find-buffer-visiting was significantly sped up recently (see
bug#66117), so if you did your benchmarks with Emacs before commit
b7a737ef49 on master, perhaps do it again with the latest master
branch.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 06:03:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 28 02:03:29 2024
Received: from localhost ([127.0.0.1]:38795 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpirI-00035C-2b
	for submit <at> debbugs.gnu.org; Thu, 28 Mar 2024 02:03:29 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:52610)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1rpirF-00034g-GQ
 for 70036 <at> debbugs.gnu.org; Thu, 28 Mar 2024 02:03:26 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1rpir9-0006BW-IQ; Thu, 28 Mar 2024 02:03:19 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=uGuIhyyC/pUs/UfYIe/ekutSEFajoYLD/C9qnVhzuVU=; b=sNyvBqGSLqCI
 yTetdOORc4wXbrll2yzd1+bJBfquSduLEfWWQK0OPvfu9UjjshJoEngVP0658vbajicvszIgxau60
 cKGYGl4qbN4KMHtjPp1m9EaMyEXXWNOkX/qkIBoOS81PXq9VORIixzfpfI03YDA8vid/rgpSdxDFC
 KRGos8la56G//G6gKL6Naddbk89xTn9PminMfcLm0wL5n7QgCQLsvpCEYH6K0ja30Fgzf9Ge5Utg/
 q9+fcZ9Q533Jdcb11h5PqGcCvy+Sh4Fh/o37G49H3OstoBxF8hf8vZBMHjuHn10gaPnxY18tP4uEC
 bgq/MPEmrom6yjlumc1ebQ==;
Date: Thu, 28 Mar 2024 08:03:17 +0200
Message-Id: <86wmpmhp0a.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Theodor Thornhill <theo@HIDDEN>
In-Reply-To: <87il17xsea.fsf@HIDDEN> (bug-gnu-emacs@HIDDEN)
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
References: <87le63xzjt.fsf@HIDDEN> <87ttkrqvru.fsf@HIDDEN>
 <87il17xsea.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 70036
Cc: 70036 <at> debbugs.gnu.org, felician.nemeth@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Cc: 70036 <at> debbugs.gnu.org
> Date: Wed, 27 Mar 2024 22:43:25 +0100
> From:  Theodor Thornhill via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN>
> 
> Felician Nemeth <felician.nemeth@HIDDEN> writes:
> 
> >> I've been studying Eglots performance and have been noticing a couple
> >> of things that I find very interesting. It seems like `file-truename`
> >> is in the hot path
> >
> > I think Eglot repeatedly calls file-truename with the same argument (or
> > with an argument from a small set of filenames.)
> 
> This is true, to some extent.

Can someone explain why Eglot needs to call file-truename in the first
place?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 03:05:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Mar 27 23:05:44 2024
Received: from localhost ([127.0.0.1]:38643 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpg5H-0005LW-NI
	for submit <at> debbugs.gnu.org; Wed, 27 Mar 2024 23:05:44 -0400
Received: from sonic304-20.consmr.mail.ne1.yahoo.com ([66.163.191.146]:33429)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <luangruo@HIDDEN>) id 1rpg5E-0005L6-6t
 for 70036 <at> debbugs.gnu.org; Wed, 27 Mar 2024 23:05:42 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048;
 t=1711595134; bh=rI9gYyBr04PbCYXFCkcyra1mYXu508Zg0qGaTmGL+OE=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From:Subject:Reply-To;
 b=kIihFtrJoyN9BBbhX4ObeQdMo0WGDDhDWGPXe932t79TuMi8f5eazMlaujM+ufDfzZGuwzanqsp6wllihl/OEPQRMr206QjvYmmGxfFpkxjben9TpZFvS61TT4+yyYnf7hPbSW552R8jST7K2X3MxW2P+TQH/khwPX2evpZRreg0IFEFwT8DnNKDxOY7Ru5l8VwWDFO4tx3eixH9qqDDlXlVH4jaaNSNDfog+JdXbB/pcO1ArKokf4z1ifAN9YmHvXPWLkvPYV8LGv+lLyfph15KnOyitP2a0o8I+kpeEWrOQ4cbV4hJJcdI3c3lHZdLZiZQrJrCWz6PeV0SrriEVg==
X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048;
 t=1711595134; bh=dH24HNJAch7CF2iCLQxykF0nocyAZG0NsrfbYBdK5oV=;
 h=X-Sonic-MF:From:To:Subject:Date:From:Subject;
 b=NeAnV/xB2Gg8ZZlrv9//OQSuZ0ccmUJKebc2AXuHpUcJTz/GQ9N/rgJzd7n+ckbfEO8GqilNsuymyYxtaEGS0q08earKOpzZrFq76YeYs5iZd5Tnp+Hgb3vb45AJ4j6OhfUXpH0iaJApRe7OrXwO0Vn6fuG+VqY7BVitmH5wnmw2XFzZpIXuUZYmK5iEday6edYtefqxT/RMRIA8/uFOXhycBBvh68+xA7bXOpNAIWjf1CAleJbZC57eIr9g+RUhq17eB0oXJo3DwIvNIThS9F0m5waD5CijRCi/4/GA19Z0FMnHHzScmrcCRMcP34b6B5wXsPRjAoomAkPHh0Bolg==
X-YMail-OSG: N5QuSpgVM1kxkuIiCZGFWbuE_wqdpcbVgbfGLW9WJzJDoAcuVyMUsKQD0gr1Yyg
 DEQ25FU9F0jG4S_QWWzPDZ4t1AdR0c78AKZ19buD_dvvWZnjo4I3GXuARerIc1bgAUwojrlRNBOf
 Vc.muU4aVtNUzZxRXzQlukDdydVr_nXPxGpG5Nfy5vtqrC3rhhQadyQC9ugtXlhwYQCBk_HfkEpa
 YwBlezpnorjPCSNAjAkF9AimUI9xhLk72fOL9QRhmnh0FXIAv8gB31XXVkSlTZQJk88Z1usd4Mym
 wlowQc2NlJ0D6fcyD7xEH9TqzDQ_0Jlzqos46vYUhCcwqEcvYAzmzYhYPNNJeef9EUoOJqvOxbEz
 msdjzOoF38dIcwXTLamEYwpGoWriRhOisX3WnFSyWDcCEDxfGrF68c4oUVwzby7owa5dGtKEMT7w
 BqmCQD5h3fCgY9OTBcJZQhaM6Eod3dgs2L34K2AdnzMF_ii1VTE0jKwPXajt0DDaM2LvujaCD2OY
 ROAJ8B_6YSYDYOlGBmuTmgV4wAN.94pigW12A2RpTKUrvu3_ollte32SILMSVryRTTFISm.nA8fp
 td2BX6KVee4yUahriNzD_EHd0noqEoUngYfCL6BLpy5h5Pk28xBcCb1DmryM5Zo2begbgVFt0YXa
 kniP_rUEQI7jRuUo95IBWxHkvTfiZ_3jfevl44N97DibSWVDW_ht3tgIyQRDulJ3h3xVFgire58X
 SZC2GtrBorF6DJJ5SzFQK06q2YLXBz4m.omcmuE1YuyN.cIw83Ztf1szetl.KQ72xkzMVtBYrEPb
 CZJyrsMqVtHh_RwkNagqWRMka2x8fnZLFkPmCr9J0dK289tqpfSACgCVrm2EYyn8NEAKL1sdOwOk
 Ev.E273ZVPOFiO17iegZy1LewDH9kkYSgOgUGPZ2xG_23sQCA9lez7pP7nchmBzrUq8N0lw.ot5B
 vRW.wtMf1EmPokQXX5gWOuNcREuYYgVeWpGRvS4O1g2UXeKFtA55AH_raAtZwVzATf.AGfQrXRP8
 5NKUKzfavA0EFWn6A4LeojxV4gGHiKmE_KWAp5uh6mC9cBLAcsCXtVtj_w5NudSKCjeCeNxsMOEM
 Yr3pR3w2HHyxXEdqY9xG92dU5OYGCHfvDeylFKtO8DLiNV6KstS9S_C9ZtWFjcWrqpxvAmw1eCAd
 gtHMNknPf9EAADwXMu1dZw8sFF_1FI5NPV6VFJbCKuwoeuocue8BkRxCek_AIb9t1cOc6mxKUj2T
 D5gbWkZujjj8A9rDkpYfKh4XeEL.SSjvoeB5j02gzX9ZmR6bKQHapnODtegGrGaE.RjMirnd2XZf
 mhzZ0OBC6s94U76t0fn8kC22uEX7doO370oO9arUqQ6kE4ofvbmpvugL8Kw4eYfoUQdTfpr0M.ZX
 o9ee44LK6a3IHpSBRQKehTU6Rp3z8cM.6j4GELlQv856jQ1AypJLH98dhUNT4eRmdkh.LD3CUC1X
 YQS_TWQx9ZXxHre0u9qGtc9bnFuhIu5Lfnw7sgyyAPFl1QfiA3uFUE4gXQ8EA6kPIYq1qBA36qz9
 _O_jnivftEnTRv9pJ6WRR8CF2ZYDc28jwyT4HVdjGOpTM0SMZeA_bNAntQV9Sm_3WkcT4UWr8MAS
 I8JOtzudMnDJrAFnmSSCTvWW1yPUYvg16exr5x8Ii2Ux6upDwyLv_yKaciK4KPuLJlUwGJZNCGkH
 ImoyqB7jNSuZnVG9S2IRV_PENdDrNVw4aPWIIYLSN9eJ0.37Meo1zj590ozvH83gNCVT8QOh2uV7
 piB0qAX.ML2qdOD2N5VnNhSz1Q1MXrLnMi45biIEh1Qa9h8cMKC7EkJUwJ9L_uTAALxS_7JvBFkR
 VB6BEmrLjlf5v9CpCLY0fO2qFrTpjUWJCCPF0jg4I.L5n0i9K8Ifhsg8aInc7hw.5YRxzqRatyGs
 QbSlQGkwubWVZt4ty0m9DcnstrrviHbIDvn8CxKqc1.Q_dQ.mf.W5pLXEPWHKoqN9dwT.m5N0V_r
 LpAX29243GpMJSn3dzFyvoRQ43g1YTqm4ITjC_VtXw8Sp2OW_9eW6YmtaHGI9SnDqbOXNwi1Q14K
 tukU5HSwdVBmR9AB4SpgiV9ivze2uSxaww1m4mL2Vkc1nGIRFvys5KOcW2hmn.W8rKhbR9fM1i6O
 zB_GrwHkzvzgW85HKvUYGNnBnv9Dtp4qKGc.Fm57.gvGzi0E8YB8cVHrNJKoet_fUANhuR6mUnSO
 nhgWTd3.F2.tH.M06aKT5_gyK5zkTOPt0DxiO6LQn5uKzSv08nXzsEy3yj5MWo_Q-
X-Sonic-MF: <luangruo@HIDDEN>
X-Sonic-ID: 9bba92af-7873-4922-be94-0066d3b981f8
Received: from sonic.gate.mail.ne1.yahoo.com by
 sonic304.consmr.mail.ne1.yahoo.com with HTTP; Thu, 28 Mar 2024 03:05:34 +0000
Received: by hermes--production-sg3-6dc75bc8fb-6dxcw (Yahoo Inc. Hermes SMTP
 Server) with ESMTPA ID 308f0bd10d46464ea9d5455e48927266; 
 Thu, 28 Mar 2024 03:05:30 +0000 (UTC)
From: Po Lu <luangruo@HIDDEN>
To: Theodor Thornhill <theo@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
In-Reply-To: <87zfuj40pz.fsf@HIDDEN> (Po Lu's message of "Thu, 28 Mar 2024
 09:14:00 +0800")
References: <87le63xzjt.fsf@HIDDEN> <861q7vihnm.fsf@HIDDEN>
 <87frwbxrs6.fsf@HIDDEN> <87zfuj40pz.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
Date: Thu, 28 Mar 2024 11:05:05 +0800
Message-ID: <87ttkr3vku.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Mailer: WebService/1.1.22205
 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo
Content-Length: 1028
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70036
Cc: Eli Zaretskii <eliz@HIDDEN>, 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Po Lu <luangruo@HIDDEN> writes:

> Haiku supports realpath, but not wordexp.  We must reimplement virtually
> all POSIX functions of this nature on Windows, as the versions provided
> by system C libraries, if they exist at all, are inadequate for some
> reason or another.  Furthermore, these functions are absent from a
> number of other operating systems, such as OpenBSD and Android 14.0, and
> on others (Alpine, I believe) wordexp is severely inefficient for being
> implemented as a wrapper around /bin/sh.

BTW, after reading the subject of this bug report, I don't believe there
is a place for wordexp at all.  wordexp is no replacement for
Fexpand_file_name, but rather a means of expanding input in the manner
of a shell, which input might include arithmetic expressions, shell
command substitutions, and other expressions valid as shell input.  If
Fexpand_file_name alone will not suffice, TRT is to replicate the
mechanics of file-truename in whole, not cutting corners with these
admittedly tempting functions.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 28 Mar 2024 01:14:46 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Mar 27 21:14:45 2024
Received: from localhost ([127.0.0.1]:38596 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpeLs-0003lJ-ES
	for submit <at> debbugs.gnu.org; Wed, 27 Mar 2024 21:14:45 -0400
Received: from sonic316-21.consmr.mail.ne1.yahoo.com ([66.163.187.147]:32922)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <luangruo@HIDDEN>) id 1rpeLm-0003kL-8g
 for 70036 <at> debbugs.gnu.org; Wed, 27 Mar 2024 21:14:42 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048;
 t=1711588472; bh=z/CY5bCwxbTjNm/iSViwcKxJlNb8iGeon4u8sBERP8M=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From:Subject:Reply-To;
 b=OaOlUfhY1XIK4y9V+D2RuNPLmVW7IiOVaYdLWsWsphrs/6/MiAa/LbtY6vty9ta8VzNU0q1E8xAWEINJfnfp48g3keoCx3DV/XPBU//phu9o/QA1UrFbPweGm44iRKty6jVxjGWaQeUuXcXMZ9cL05TJi8hoj3uGQy7XaFmF1qxDAlxfXw8hG3TlpWzXVcjmApYvg+bJKPzU4s6qPmQV1saJB3rxhtqi5ZrkKk7dXUxkrk2vPvmMIXa7KovVM4xyrk5S98dGXRxcr2uDwChUpLYYTiiskE/9J0uYvLRtcMVE/35bPAiXzoFDIzC6ypUxsGJC4iglXMif1Z+3kaGppw==
X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048;
 t=1711588472; bh=vyfatMqo+XoKvOAp2OmYnURD+TiT7393nFFO17t6jcy=;
 h=X-Sonic-MF:From:To:Subject:Date:From:Subject;
 b=LehGx/t5IFbdrH4lWxQ7fDqrBumxgdRjRYl67m9qm90pxpdwrGh6d8/x9ANWWE8E/Iz91u19tVbKXQ96oXmiALdSs5r7WpaluRjtMxSnTQ0l1VYBg+AZFxEJ7tERwhb19tZaFrCeLRX4pmtSs/cRgoFQEI9p20V9XkjGqTBI1UO9BC+FHmz/XRsy4E+dvYHYP8EGaiukDgzq7RWy/g50p72VWSY2jBL1mUznfs/gZt9umLMqd5MgFnWBcEhIMflJ38hGdvPOu5vHrrZ/MWkjzomNBa21ANzFQ4JkOSe01G3Cnyf2gUcvKubIZTnwzKCAooPSqhmGUH6cU8zCxfGtDA==
X-YMail-OSG: CBVzzgAVM1kGs0NR7F9RT0Mk1dmNR_X3p4uEDO5DjNDJwIyLwwaVn.newBRKdqu
 fH2mdx0wvdR1CMgeWw9svd0bc.HAE1CRTKLSpp4NNUzekSYXy0Zd.Ag2UKma33iLVYqWruApPDQi
 XvxTzDITZMBjs2JRU84r.Aer3uXVPxpZW2Dk0ECoFjLCeC4sa_UgJaKzlvlXzZAlw8IINve82Vdc
 XxULrmzTX5lTuHc662burTp_bCCNI9ii2SOUcs1wqlrsyIiGZfycu3OGSLaMzZxxCUEodgvYa3Sp
 vHnsYEFFaZFCgzIvbuQjdrMaDwXuS5ma3waBym.scnHavYmC7LIdhdW.zSlM9keLUhkcS5Z28IFI
 Z.JGT8jDRqw.kuQCDpdRpxMjSAe1Fuuol9VIFO9NO9TPRXwVKuu63rjr77AJK8D2YF_IsZdW9Y_l
 yuC5Vqrr0CrEPjFkBulrBrgdfW5rU7X1fi0c1V4zFrIgRZn4osCo06ZTNStgY2IFRbN_bTxxggf8
 V92CpHtgiLr.KJRI6TSkqqJ4wlwFvSiQKEQKWRDNDqPWjRyBaXu9lINQC8LK1eDmY9KhVjul7Qth
 KNwF506JB7lUUjfKuId7l0kguJkN.wwGasPYXUBI4WPx4Xs2uCUkKA.ZWRyn69.4a6SA2cBUC1CT
 xwfPMBXJ1tRsW8Y0Xie7Ct8EYLaFYEaY8E98PDe3HRH3c9ekutLU8wPh3dm2cSjtFf1wM_ZzaUo_
 i3_emqb4nWRUBkEhrL0HjEOoXymzqrp4QcL0vPrQXYlHc8BN7YIMS6poDX0TdIrtiy51oK.T0CUf
 3gfAU.gUI4_5j4lB404rLPUcqHYni.1x.nRYcaHm_dK_E23iPMbyzmGQR7pwUOi.Y7cPFjWpmtGz
 pXRp7a8xzq8n0KKPcUDZTZ_8N6ZjMJJIs4rDX1eqCR5UQJ.C9C_umLS3s_yK827hvVkVzo8dVz.F
 hyQeH62TqoOvxRoZyuyQRdavAmf4XMZTNLqRXZgdBHDzMtGdsp3t4SmuGlLD3wEKDi_vwHOpHBfi
 sE8HQ8zcKwdyMiGuRaZ1DX6f.19Pst2KVsn5nJgkVKMPqkZDp028E0bFJithPaco0vFHHzY7B6mE
 meOEhZKiAog2m5xv2.eof4sFHjnvIy2EWQniUSOJUhzfL.t.M_2nEDxCZUWDaC..0XbMmbEre0sa
 t8EUyxhJloyzgQZcg6dRJ_UvDfYE6OvvjJEWGLmiOt1U2GQzEZqjRfiPARG017LkEXPg4j78qq_Q
 G4aRdpx.r1DNVkc.fVXsUkMtm_zwHJkZLDCeDFeEKP7hLN0pEXqClxBVE72mfMVU8t9gb1iRUrfd
 xuuy5oMuXjqPqOjj2pocOW1MpQPHlOvMpcwSVScNt6_HgXtPvVnCYicPW1aWz4VllTzsARBF70QE
 CSLVL6O3T3fJF_wYr22lo4ppuys1NVCObF7N0NqoxlJpD6OU_fO6zAH7MS6_89GWUr5L1kiCusHw
 _ea8yvLTMLKKUIZn06vb7huvX0_ZHmXJvc8ce0plMwf5hrPJ5eF4SoPpJbnKqPCO8X7BeHw8qfxG
 QmytEW.VS.BdrpbONlk_BJk7vpSp7Zzv6jGRfSGwzGoixgIVr3.W6jJYGNrs13yZZunwnQstzdVb
 6ID50Q2puZ8eDCeUvx9.DhSroIt7fDa7_.XMr2f2FPgX15zBFKpeztxoJ1fHb26hgJKMQp1kpzBj
 foj0kDQbjP6HDgIKnnSyhC.DtrhCHSipe_3nNVbItN50wCoY.b85FU8e03UCNhdGEQFTfrwUG63g
 h03bR1Irgl7._gq8aKFeFoOgP_Xqt2S.zj3teee_ST6TwS6rsKwRdt8O7R_mOqwbXu0atSidX_9u
 vNNBH3PuFrSDbkWjLl16zNbYXNyReTAH8AcoF1Y3_0RaGuWsVYUrsgTcuuPBfRvDJENrY8.S6yZJ
 Ju2gPzSGJRmeeDOqoEgraTbbLXoaCnLigNYLNyFdCQA6PgonmGInLxkgs0182vPRokBljjGcIttW
 zcEzmvQ6PHc9PmkfEscMqMUYv1caKzABb4exdH0yU2L1JCEMPhwBbWPPXtB23CJT.01a5viwHAfB
 dBt6ViyA2pwbk.DIvvcsl0VNQDcNtOdLdmwYA0UyTBVrQcP1l8UbonCc4OXCTxGHp5jdx_ddMXxk
 Tn_WhMZmqDKVXXO0T4E30Pv.WdGbVyNNdNnq5hLUP.H1nb23y6wCzeLV2TIhOEFqTcqvEw3qSjLY
 gPId2YOtgUvJfGs1OZygbnSnTtGUb9kke3DwRC0LHlgE_Usxd358O5GndlZ_E3zw-
X-Sonic-MF: <luangruo@HIDDEN>
X-Sonic-ID: 6790214f-feee-45c7-921b-dfb3e912a7f5
Received: from sonic.gate.mail.ne1.yahoo.com by
 sonic316.consmr.mail.ne1.yahoo.com with HTTP; Thu, 28 Mar 2024 01:14:32 +0000
Received: by hermes--production-sg3-6dc75bc8fb-pl74c (Yahoo Inc. Hermes SMTP
 Server) with ESMTPA ID 089139d690e4c49945154efcaf8257a1; 
 Thu, 28 Mar 2024 01:14:26 +0000 (UTC)
From: Po Lu <luangruo@HIDDEN>
To: Theodor Thornhill <theo@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
In-Reply-To: <87frwbxrs6.fsf@HIDDEN> (Theodor Thornhill's message of
 "Wed, 27 Mar 2024 22:56:41 +0100")
References: <87le63xzjt.fsf@HIDDEN> <861q7vihnm.fsf@HIDDEN>
 <87frwbxrs6.fsf@HIDDEN>
Date: Thu, 28 Mar 2024 09:14:00 +0800
Message-ID: <87zfuj40pz.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Mailer: WebService/1.1.22205
 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo
Content-Length: 700
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70036
Cc: Eli Zaretskii <eliz@HIDDEN>, 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Theodor Thornhill <theo@HIDDEN> writes:

> OK - for my education on the portability argument. Is that because of
> Emacs support targets like haiku and old versions of windows, or
> something else inherent in these functions?

Haiku supports realpath, but not wordexp.  We must reimplement virtually
all POSIX functions of this nature on Windows, as the versions provided
by system C libraries, if they exist at all, are inadequate for some
reason or another.  Furthermore, these functions are absent from a
number of other operating systems, such as OpenBSD and Android 14.0, and
on others (Alpine, I believe) wordexp is severely inefficient for being
implemented as a wrapper around /bin/sh.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 27 Mar 2024 21:56:55 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Mar 27 17:56:55 2024
Received: from localhost ([127.0.0.1]:38473 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpbGQ-0000E5-TB
	for submit <at> debbugs.gnu.org; Wed, 27 Mar 2024 17:56:55 -0400
Received: from out-186.mta0.migadu.com ([2001:41d0:1004:224b::ba]:30095)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <theo@HIDDEN>) id 1rpbGM-0000Dq-EV
 for 70036 <at> debbugs.gnu.org; Wed, 27 Mar 2024 17:56:53 -0400
X-Report-Abuse: Please report any abuse attempt to abuse@HIDDEN and
 include these headers.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thornhill.no;
 s=key1; t=1711576603;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=DmY8VxKtKGZycLFpBXkz2Lyt0CbxZrzKHlNH1rr9XwM=;
 b=ulHb5tHwxMXBKk8hYQ1XHYLLSAr2+VGz0GOP9lVCqLSuFHkA1eLxYYqNf5k4cKy5y46U+a
 h6MsbsmurX6fGgdBW6w21hpNtwfHdA7Z/EwxjA16ddvHCotoJ0Nxb/rwrlT3aBs/6i6bVd
 +Xxqw9WrZ1cx2000NecGli43U7MNO1gUC9B6aWZ8zIEd0A48RV9xnCHaqKrkaySyTANpp2
 0T5iCT8/Fttms8wJjwkKVwIhi4d7nH06IniokZ0qWyLkmSDCnVqZckch4QfFQhcD37o8zI
 9ZBTwpG27l0/ZqCuNIJhJU+5Q7EoQHGJljJVz2AKub9VfApFV16So5JWrD41pQ==
From: Theodor Thornhill <theo@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
In-Reply-To: <861q7vihnm.fsf@HIDDEN>
References: <87le63xzjt.fsf@HIDDEN> <861q7vihnm.fsf@HIDDEN>
Date: Wed, 27 Mar 2024 22:56:41 +0100
Message-ID: <87frwbxrs6.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Migadu-Flow: FLOW_OUT
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70036
Cc: 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> Date: Wed, 27 Mar 2024 20:08:54 +0100
>> From:  Theodor Thornhill via "Bug reports for GNU Emacs,
>>  the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN>
>> 
>> During the last couple of weeks I've been studying Eglots performance
>> and have been noticing a couple of things that I find very
>> interesting. It seems like `file-truename` is in the hot path due to the
>> fact that every request to the lsp server has to create the source file
>> location, and in every response we have to parse the location the
>> relevant file. `file-truename` is used for this, and its performance
>> isn't really up to snuff for what it provides, afaict.
>> 
>> Below I've supplied some benchmarks and profile reports along with the
>> actual patch. Before we discuss the patch itself, I want to get some
>> answers to the following:
>> 
>>  - Is there a reason that this function should be supplied at the lisp
>>    level?
>
> No, we could have it implemented in C.  It just never was needed,
> until now, and the processing there is not trivial, to say the least.

Yeah, the source is complicated, but it seems most of it is to gradually
chop the path shorter and shorter.


>
>>  - Does it have to be recursive?
>
> No, it doesn't.
>

I guess making it iterable is something worth checking out anyway, so
I'll look into that a little further.

>> Firstly, I'll show some benchmarks
>> 

[...]

>> 
>> As you can see, the C implementation, though naive for now is two orders
>> of magnitude faster, and makes a noticeable difference when running an
>> lsp server in emacs.
>
> Yes, but comparing a partial implementation is not very useful, since
> the complete one could be much more expensive.
>

No doubt. The most interesting part of that benchmark is maybe to see
that the current version is very slow, not that my function is very
fast. I'd guess that even if I'd lose an order of magnitude keeping
feature parity we're better off.

>> As for the patch - it now relies on wordexp to resolve the paths, and I
>> believe there is no real feature parity with the old variant as for now,
>> but I haven't seen any issues thus far. If this approach is accepted I
>> will of course make sure we have feature parity, unless that isn't
>> wanted.
>
> We cannot rely on wordexp and we cannot rely on realpath: both are not
> portable enough.
>

OK - for my education on the portability argument. Is that because of
Emacs support targets like haiku and old versions of windows, or
something else inherent in these functions?

>> +  CHECK_STRING (filename);
>> +  char *c_filename = SSDATA (filename);
>> +
>> +  wordexp_t we;
>> +  wordexp(c_filename, &we, 0);
>> +
>> +  char *truename = realpath(we.we_wordv[0], NULL);
>> +  wordfree(&we);
>> +
>> +  if (!truename)
>> +    return result;
>> +
>> +  result = build_string(truename);
>
> You cannot pass Lisp strings to libc functions like that: you need to
> do 2 things first:
>
>   . call expand-file-name
>   . encode the file name with ENCODE_FILE
>
> This is needed because relative file names in Emacs are relative to
> the current buffer's directory, not relative to the current directory
> of the Emacs process, and because file names with non-ASCII characters
> need to be encoded to match the encoding expected by file-related APIs
> in libc.  Likewise, when you get a file name from a libc function, you
> need to decode it with DECODE_FILE, before you create a Lisp string
> from it
>
>> +  free(truename);
>
> IMO, this should be xfree, not free.  And for that to work, we need to
> call realpath with 2nd argument non-NULL, but pointing to a buffer we
> allocated with xmalloc, or maybe a stack-based buffer.  (But since we
> cannot rely on realpath, this could be a moot point.)
>
> Thanks.

Thanks for the pointers here. I'll take note of them and investigate
further.


Another much simpler way to improve Eglot performance her could be to
allow for the relevant functions to execute through handlers, to not
break other parts of Emacs. For example `find-buffer-visiting` could
allow to run through a simpler function that merely expands and looks up
the current file, considering that the LSP server likely reports on
files that are already existing, and likely most symlink shenanigans
aren't an issue here. Just thinking out loudly on this.

Theo




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 27 Mar 2024 21:43:39 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Mar 27 17:43:39 2024
Received: from localhost ([127.0.0.1]:38459 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpb3b-0007Mf-6i
	for submit <at> debbugs.gnu.org; Wed, 27 Mar 2024 17:43:39 -0400
Received: from out-170.mta0.migadu.com ([2001:41d0:1004:224b::aa]:37413)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <theo@HIDDEN>) id 1rpb3X-0007M7-Vq
 for 70036 <at> debbugs.gnu.org; Wed, 27 Mar 2024 17:43:37 -0400
X-Report-Abuse: Please report any abuse attempt to abuse@HIDDEN and
 include these headers.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thornhill.no;
 s=key1; t=1711575809;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=zZVzUW60J7luxWcrfDfeCGv95/DR3QBLZVCWlNqGtRY=;
 b=JYFMtXtKbneFAm6nG0SZ9AvrhFzaFD7HO18wzU1fefrGVpytQWxfyInfuWGV0ecpzWOuH9
 vZOn7YlF6kX3QSGy2YfuQzURj287+UAY/+5sRI5z8+HueCELSUnTiP0p6UHMEo9/69LQUU
 5bZhSfGofYGmT/byelQQp4hsB1Ywp+QTkQ45F1SuAtmFzYxpnMKgLO0L7FDRhDYspsWpVy
 TDnjL0YKNSmckHFjR5Qqo136+w+mqeByTU0VvepriAzj/6MdmbtpvcDSVduW1r4GwegAt+
 Xo60PgDrCLpE/mMZ5F2hOzQKZgZVVXgfjl+OgiEn8fidfAsbn3+0cF3w3BL52A==
From: Theodor Thornhill <theo@HIDDEN>
To: Felician Nemeth <felician.nemeth@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
In-Reply-To: <87ttkrqvru.fsf@HIDDEN>
References: <87le63xzjt.fsf@HIDDEN> <87ttkrqvru.fsf@HIDDEN>
Date: Wed, 27 Mar 2024 22:43:25 +0100
Message-ID: <87il17xsea.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Migadu-Flow: FLOW_OUT
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70036
Cc: 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Felician Nemeth <felician.nemeth@HIDDEN> writes:

>> I've been studying Eglots performance and have been noticing a couple
>> of things that I find very interesting. It seems like `file-truename`
>> is in the hot path
>
> I think Eglot repeatedly calls file-truename with the same argument (or
> with an argument from a small set of filenames.)

This is true, to some extent. For the requests, eglot calls it
directly. For some handlers it is called through the function
`find-buffer-visiting`, so I'd say it's advisable to keep the function
itself fast.

>
> I wonder whether it would make sense for Eglot to cache the result of
> file-truename.  Do you think caching would make Eglot faster than it
> currently is?  (Would it still be worth moving file-truename to the C
> level?)

I think it would be faster, yes. This was my first thought as well, but
I quickly threw the first attempts on that away due to the fact that the
processing almost solely lies in that function, and I'd suppose it would
make other parts of emacs faster too. Adding complications to eglot
would likely make the source more complicated rather than better on the
whole. But that's only my opinion. I'd like to try to replicate the
function 1 to 1 in C.

What do you think?

Theo




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 27 Mar 2024 20:12:32 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Mar 27 16:12:32 2024
Received: from localhost ([127.0.0.1]:38417 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpZdP-0008CJ-Rj
	for submit <at> debbugs.gnu.org; Wed, 27 Mar 2024 16:12:32 -0400
Received: from mail-ej1-x62c.google.com ([2a00:1450:4864:20::62c]:44398)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <felician.nemeth@HIDDEN>) id 1rpZdN-0008BO-Ki
 for 70036 <at> debbugs.gnu.org; Wed, 27 Mar 2024 16:12:30 -0400
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a44f2d894b7so24636966b.1
 for <70036 <at> debbugs.gnu.org>; Wed, 27 Mar 2024 13:12:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1711570343; x=1712175143; darn=debbugs.gnu.org;
 h=mime-version:face:user-agent:message-id:in-reply-to:date:references
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=wQddov7wCjSXNAKfS9h6lF5gdYaHRkDSnD+VfB6BiAI=;
 b=fb35BOkDchcxumuMRjPXcbJ3kJpFSjRNABOpCRfMdtOXGKmvUHCWSw19uX2Sk3V78f
 HZOOkVft0nly/ulI5yb9FvIWTQl48tcIw9EXDjK+aD7R92jFRlc1/AYxOOkE8V5To/NX
 1OdT1dCvNK/ufC3KA7+XusXpukl9iC8Csl6dphVbPy50fQ/IHD7JK4q7jQMGxqm4xqpv
 CvN7jCqKh3y1PyfXX4poo8LIQaVA1bIXlLKsQy5m5jPyI+cEuBcU6+EVjxNmwhdD/yx2
 /His8Koq6/3EE/jffwr0GpRae/kjyHW56qsie2pJjCVlk09IlwSdC3H4yD/tXP6S4yke
 Tcvg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1711570343; x=1712175143;
 h=mime-version:face:user-agent:message-id:in-reply-to:date:references
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=wQddov7wCjSXNAKfS9h6lF5gdYaHRkDSnD+VfB6BiAI=;
 b=quYhhRzgK7sxTdUWNbEI97jo7b8X/TOOvR4XpHn03kP5pOmyrEmcoqFM1VyP8rqUKZ
 kJhsesY8GvmJCTj38OmLtYSfP6ZrUf+FIoQfxGRTDDPTTYtrSJmGLK0X+AGkKUOVbzUE
 GvSaf/vrhnACzLP8RcSTFeOszCrczldudC/vAPOvL1E8HVH1CPxXKr37s4rVs0xdN1QT
 b2RsqL2PhyRWJJYAlB4kG3+bxQEY4/xQwjsE4Hwv+kMlLXOStQ9SyVWRn6WbWoRKJCpn
 RKtGs3+q/GfjKicJSvuc+aNjcaO9eXSrMI45oao3SoB124ZrxJJJ+Jj+MImAgytR7inC
 ovsQ==
X-Gm-Message-State: AOJu0YxEp5Uwe4O/m6ulT372r8bpk9moQ2AZb00Hjl/1ZszNf6/sBTRF
 Cytw88J1VgEsorMJte/7REVyz5m3sowir5slmii6Mnzr4EDTppWM3wBppLO1
X-Google-Smtp-Source: AGHT+IHoi1qAzH04UxdC2mE2aHfGGE2+AxLfsH9qbRXh6hgfvfgLhE2G3SJSFiRXdOPFCxxjVQmGaA==
X-Received: by 2002:a17:906:cf85:b0:a4d:edbd:a3fb with SMTP id
 um5-20020a170906cf8500b00a4dedbda3fbmr342997ejb.44.1711570342551; 
 Wed, 27 Mar 2024 13:12:22 -0700 (PDT)
Received: from betli.gmail.com (catv-213-222-160-137.catv.fixed.vodafone.hu.
 [213.222.160.137]) by smtp.gmail.com with ESMTPSA id
 x18-20020a170906b09200b00a47df55cf5esm4341798ejy.13.2024.03.27.13.12.21
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 27 Mar 2024 13:12:22 -0700 (PDT)
From: Felician Nemeth <felician.nemeth@HIDDEN>
To: Theodor Thornhill <theo@HIDDEN>
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
References: <87le63xzjt.fsf@HIDDEN>
Date: Wed, 27 Mar 2024 21:12:21 +0100
In-Reply-To: <87le63xzjt.fsf@HIDDEN> (Theodor Thornhill via's message of
 "Wed, 27 Mar 2024 20:08:54 +0100")
Message-ID: <87ttkrqvru.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAABGdBTUEAALGPC/xhBQAAACBj
 SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX5+fmhoaEwMDD/
 ///TMNVWAAAAAWJLR0QDEQxM8gAAAAlwSFlzAAAPEgAADxIBIZvyMwAAAAd0SU1FB+AICBUfHgLs
 gGoAAAGXSURBVCjPRdK/b5tAFAfw753gBEwM2ApMbuVIqf+Ko0qiyhOu4sj2xJBYMn/FUdX7UUUZ
 OjHgyvf+yj6IcW6Bjx53934ADEvs8bmEr8UVoTYTOyJO9KoYsVofN8kILdbeJ8Li6YpZWop4xOK0
 VdfIoXmkHn5/5D7/Ts/8THacSqnkKTcMTxgUkVzFnEIRTKwwYYSCvzfg16f0i8YApW/XG/Pm8R49
 dXjxKmRnxv3OwooQWcv4RUYem1fsNe/WU63uk7AmYxk78y32/ee2tZB4fO+WcZ7lnIGEolXW1EGw
 LfkSuQ0XTgRefgNlfNwRNV6QhBxJ8JNxTMUPyBqTd0bjaAP5G7NJRU39z80hLOZTjqB7K3tEEFSj
 aEsuQew6qBxxyhHjVUR7H7NpC9iHJZGLMCEuweqAqE1BHbfK2oRIz9EHYA/+wiFWru9smeVfuWNZ
 2+NFtX80UA1TvJNdytM4DwO4kY7bJz8Qcd0G0ceslZGkkeoBsjUHwF1+jjM3XHaXEZ7mGLfwPFO+
 RV9QLY2iEdmDo78D/gNPaXVYqd+pyQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNi0wOC0wOFQyMzoz
 MDoyOCswMjowMGy/yHYAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTYtMDgtMDhUMjM6MzA6MjgrMDI6
 MDAd4nDKAAAAAElFTkSuQmCC
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 70036
Cc: 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

> I've been studying Eglots performance and have been noticing a couple
> of things that I find very interesting. It seems like `file-truename`
> is in the hot path

I think Eglot repeatedly calls file-truename with the same argument (or
with an argument from a small set of filenames.)

I wonder whether it would make sense for Eglot to cache the result of
file-truename.  Do you think caching would make Eglot faster than it
currently is?  (Would it still be worth moving file-truename to the C
level?)




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at 70036 <at> debbugs.gnu.org:


Received: (at 70036) by debbugs.gnu.org; 27 Mar 2024 19:45:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Mar 27 15:45:01 2024
Received: from localhost ([127.0.0.1]:38406 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpZCm-0006NS-Is
	for submit <at> debbugs.gnu.org; Wed, 27 Mar 2024 15:45:01 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:55284)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1rpZCj-0006Mf-BL
 for 70036 <at> debbugs.gnu.org; Wed, 27 Mar 2024 15:44:59 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1rpZCd-0007ju-DL; Wed, 27 Mar 2024 15:44:51 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=qfTSGXNSrLrC8PkVZltd/1o/6TQCz+gybDRqAXiTDZU=; b=D4G5275VWdKw
 v08TmAUXEYn8JRaIZrOkDG4o/RjVqo+XrmFGesLwcDPTIBZic3GmTN2/ek+U4C3VkEQhjmtujklQP
 UCYoSUsdxM9X4LafDTLM4vQatZ6KAwTDBD0wOLxbTkfHSvvxwkU+VAQVDYQR0W/gcMcRmsL2p2i3I
 LNrPrJDFCptd0Sy3le8v5m5hp2ooEvCpH7bIkq8M1+XloU7nObV5zMWakYOR1tRWrGJiwCzjynhjR
 0iFGr1qO11p71+XVC82M2d+vdYRcQyYPssu+sJrpdPV8a7Fmgvy2BucptP4OS6Qs46hgkDID0mKue
 ipUWIL/d4xYUjQ6wtLW70Q==;
Date: Wed, 27 Mar 2024 21:44:29 +0200
Message-Id: <861q7vihnm.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Theodor Thornhill <theo@HIDDEN>
In-Reply-To: <87le63xzjt.fsf@HIDDEN> (bug-gnu-emacs@HIDDEN)
Subject: Re: bug#70036: 30.0.50; Move file-truename to the C level
References: <87le63xzjt.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 70036
Cc: 70036 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Date: Wed, 27 Mar 2024 20:08:54 +0100
> From:  Theodor Thornhill via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN>
> 
> During the last couple of weeks I've been studying Eglots performance
> and have been noticing a couple of things that I find very
> interesting. It seems like `file-truename` is in the hot path due to the
> fact that every request to the lsp server has to create the source file
> location, and in every response we have to parse the location the
> relevant file. `file-truename` is used for this, and its performance
> isn't really up to snuff for what it provides, afaict.
> 
> Below I've supplied some benchmarks and profile reports along with the
> actual patch. Before we discuss the patch itself, I want to get some
> answers to the following:
> 
>  - Is there a reason that this function should be supplied at the lisp
>    level?

No, we could have it implemented in C.  It just never was needed,
until now, and the processing there is not trivial, to say the least.

>  - Does it have to be recursive?

No, it doesn't.

> Firstly, I'll show some benchmarks
> 
> ```
> ;; Emacs 29 branch
> 
> (benchmark-run 10000
>   (file-truename "~/Work/some/long/path/to/parse/that/is/very/deep/deep/deep/super/duper/deep/deep.el"))
> ;; (1.810892642 1 0.051070616)
> 
> 
> ;; With new C implementation
> 
> (benchmark-run 10000
>   (file-truename "~/Work/some/long/path/to/parse/that/is/very/deep/deep/deep/super/duper/deep/deep.el"))
> ;; (0.018811035 0 0.0)
> ```
> 
> As you can see, the C implementation, though naive for now is two orders
> of magnitude faster, and makes a noticeable difference when running an
> lsp server in emacs.

Yes, but comparing a partial implementation is not very useful, since
the complete one could be much more expensive.

> As for the patch - it now relies on wordexp to resolve the paths, and I
> believe there is no real feature parity with the old variant as for now,
> but I haven't seen any issues thus far. If this approach is accepted I
> will of course make sure we have feature parity, unless that isn't
> wanted.

We cannot rely on wordexp and we cannot rely on realpath: both are not
portable enough.

> +  CHECK_STRING (filename);
> +  char *c_filename = SSDATA (filename);
> +
> +  wordexp_t we;
> +  wordexp(c_filename, &we, 0);
> +
> +  char *truename = realpath(we.we_wordv[0], NULL);
> +  wordfree(&we);
> +
> +  if (!truename)
> +    return result;
> +
> +  result = build_string(truename);

You cannot pass Lisp strings to libc functions like that: you need to
do 2 things first:

  . call expand-file-name
  . encode the file name with ENCODE_FILE

This is needed because relative file names in Emacs are relative to
the current buffer's directory, not relative to the current directory
of the Emacs process, and because file names with non-ASCII characters
need to be encoded to match the encoding expected by file-related APIs
in libc.  Likewise, when you get a file name from a libc function, you
need to decode it with DECODE_FILE, before you create a Lisp string
from it

> +  free(truename);

IMO, this should be xfree, not free.  And for that to work, we need to
call realpath with 2nd argument non-NULL, but pointing to a buffer we
allocated with xmalloc, or maybe a stack-based buffer.  (But since we
cannot rely on realpath, this could be a moot point.)

Thanks.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 27 Mar 2024 19:09:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Mar 27 15:09:23 2024
Received: from localhost ([127.0.0.1]:38370 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rpYeH-0003mY-TH
	for submit <at> debbugs.gnu.org; Wed, 27 Mar 2024 15:09:22 -0400
Received: from lists.gnu.org ([2001:470:142::17]:58026)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <theo@HIDDEN>) id 1rpYeE-0003ll-TJ
 for submit <at> debbugs.gnu.org; Wed, 27 Mar 2024 15:09:20 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <theo@HIDDEN>) id 1rpYe8-0007A3-Fj
 for bug-gnu-emacs@HIDDEN; Wed, 27 Mar 2024 15:09:12 -0400
Received: from out-186.mta0.migadu.com ([2001:41d0:1004:224b::ba])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <theo@HIDDEN>) id 1rpYe4-0007W0-Kh
 for bug-gnu-emacs@HIDDEN; Wed, 27 Mar 2024 15:09:12 -0400
X-Report-Abuse: Please report any abuse attempt to abuse@HIDDEN and
 include these headers.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thornhill.no;
 s=key1; t=1711566539;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:mime-version:mime-version:content-type:content-type;
 bh=aL2wtkRSIyKTcCZcJs7NI2R2zyipYA9+d+sDm40vk14=;
 b=itoYunPCk/0j6ZwGaNKLmoXxOeTLShtBVXYrIWn/JmSzJ+iKGKf85e2CDdJbRt4+QWGfAJ
 +Bf9HjTBQ4KVPCFYJylRelfnQ3IxR98zk2zVAFKudgplT9vpax9T7a6KXoYljDy2GhqnOZ
 nJyeBrkPP7G76/RhEVmudwgxHRCdv7w34FDSQGna+uoAibAXwuz+kOkgfyff4c7NnFaZ/6
 aykX9PPZQ9Q6utW11G3yDcnQLnhQpNCGsiiqx3lGfHG4xnd7HjQZcMhTj77XxCOwsOI2Zz
 Je0IfDGAQv4+UI21vr8wD64LiK7kTu6vUU8GtQ8Trtg0zBN5LjzwvjVtPl5rKg==
From: Theodor Thornhill <theo@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Subject: 30.0.50; Move file-truename to the C level
X-Debbugs-Cc: 
Date: Wed, 27 Mar 2024 20:08:54 +0100
Message-ID: <87le63xzjt.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Migadu-Flow: FLOW_OUT
Received-SPF: pass client-ip=2001:41d0:1004:224b::ba;
 envelope-from=theo@HIDDEN; helo=out-186.mta0.migadu.com
X-Spam_score_int: -16
X-Spam_score: -1.7
X-Spam_bar: -
X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1,
 DKIM_SIGNED=0.1, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001 autolearn=no autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.9 (/)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.1 (/)

--=-=-=
Content-Type: text/plain



Hi, all!

During the last couple of weeks I've been studying Eglots performance
and have been noticing a couple of things that I find very
interesting. It seems like `file-truename` is in the hot path due to the
fact that every request to the lsp server has to create the source file
location, and in every response we have to parse the location the
relevant file. `file-truename` is used for this, and its performance
isn't really up to snuff for what it provides, afaict.

Below I've supplied some benchmarks and profile reports along with the
actual patch. Before we discuss the patch itself, I want to get some
answers to the following:

 - Is there a reason that this function should be supplied at the lisp
   level?
 - Does it have to be recursive? It seems to eat up a lot of stack, and
   the comments in the file suggest that has been an issue before.

Firstly, I'll show some benchmarks

```
;; Emacs 29 branch

(benchmark-run 10000
  (file-truename "~/Work/some/long/path/to/parse/that/is/very/deep/deep/deep/super/duper/deep/deep.el"))
;; (1.810892642 1 0.051070616)


;; With new C implementation

(benchmark-run 10000
  (file-truename "~/Work/some/long/path/to/parse/that/is/very/deep/deep/deep/super/duper/deep/deep.el"))
;; (0.018811035 0 0.0)
```

As you can see, the C implementation, though naive for now is two orders
of magnitude faster, and makes a noticeable difference when running an
lsp server in emacs.

As for the patch - it now relies on wordexp to resolve the paths, and I
believe there is no real feature parity with the old variant as for now,
but I haven't seen any issues thus far. If this approach is accepted I
will of course make sure we have feature parity, unless that isn't
wanted.

As for the profiles - it is very clear the performance is better with my
version, as it doesn't really show up in the profiles, but in the
current state `file-truename` seems to eat up around 10-20% of the total
samplings.

And lastly - I've noticed that `redisplay_internal (C function)` shows
up as a _huge_ chunk in emacs 30, but not in emacs 29. Is this a known
issue, or something to look out for? I could open a different bug report
for this if needed.

Below are the profiles and the patch. On my system I needed to `ln -s
lisp/loadup.el .` to make it compile. Not sure if that is due to
differences between old and new `file-truename`, or something else.

Thanks,

Theo


--=-=-=
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=emacs-29-before-everything
Content-Transfer-Encoding: base64

ICAgICAgICAgIDY1ICAzMSUgLSBqc29ucnBjLS1wcm9jZXNzLWZpbHRlcgogICAgICAgICAgNjEg
IDI5JSAgLSBqc29ucnBjLWNvbm5lY3Rpb24tcmVjZWl2ZQogICAgICAgICAgNDkgIDI0JSAgIC0g
Izxjb21waWxlZCAtMHhiZjUwZDA0YmNmZDRmNGI+CiAgICAgICAgICAyOSAgMTQlICAgIC0gZWds
b3QtLWhvdmVyLWluZm8KICAgICAgICAgIDI5ICAxNCUgICAgIC0gbWFwY29uY2F0CiAgICAgICAg
ICAyOSAgMTQlICAgICAgLSBlZ2xvdC0tZm9ybWF0LW1hcmt1cAogICAgICAgICAgMTQgICA2JSAg
ICAgICAtIGdmbS12aWV3LW1vZGUKICAgICAgICAgIDEwICAgNCUgICAgICAgIC0gYnl0ZS1jb2Rl
CiAgICAgICAgICAgNCAgIDElICAgICAgICAgLSByZXF1aXJlCiAgICAgICAgICAgMSAgIDAlICAg
ICAgICAgIC0gZGVmdmFyCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAtIGRlZmluZS1rZXlt
YXAKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAtIGtleW1hcC1zZXQKICAgICAgICAgICAx
ICAgMCUgICAgICAgICAgICAgLSBrZXltYXAtLWNoZWNrCiAgICAgICAgICAgMSAgIDAlICAgICAg
ICAgICAgICAgIGtleS12YWxpZC1wCiAgICAgICAgICAgNiAgIDIlICAgICAgIC0gZm9udC1sb2Nr
LWVuc3VyZQogICAgICAgICAgIDMgICAxJSAgICAgICAgLSAjPGNvbXBpbGVkIC0weDE5ZTJkMTBh
OTU1ZGFkODc+CiAgICAgICAgICAgMyAgIDElICAgICAgICAgLSBmb250LWxvY2stZm9udGlmeS1y
ZWdpb24KICAgICAgICAgICAzICAgMSUgICAgICAgICAgLSBjLWZvbnQtbG9jay1mb250aWZ5LXJl
Z2lvbgogICAgICAgICAgIDMgICAxJSAgICAgICAgICAgLSBmb250LWxvY2stZGVmYXVsdC1mb250
aWZ5LXJlZ2lvbgogICAgICAgICAgIDMgICAxJSAgICAgICAgICAgIC0gZm9udC1sb2NrLWZvbnRp
Znkta2V5d29yZHMtcmVnaW9uCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgIC0gYy1mb250
LWxvY2stZGVjbGFyYXRpb25zCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAtIGMtZmlu
ZC1kZWNsLXNwb3RzCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAgLSAjPGNvbXBpbGVk
IC0weGU5YzljNTM2MDMzY2Y5MD4KICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAgICAgLSBj
LWZvcndhcmQtZGVjbC1vci1jYXN0LTEKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAgICAg
IC0gYy1mb3J3YXJkLXR5cGUKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAgICAgICAtIGMt
Zm9yd2FyZC1uYW1lCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgIC0gYy1mb3J3
YXJkLTw+LWFyZ2xpc3QKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgIC0gYy1m
b3J3YXJkLTw+LWFyZ2xpc3QtcmVjdXIKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAg
ICAgICAtIGMtZm9yd2FyZC10eXBlCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAg
ICAgICAgYy1mb3J3YXJkLWtleXdvcmQtY2xhdXNlCiAgICAgICAgICAgMSAgIDAlICAgICAgICAg
ICAgIC0gIzxjb21waWxlZCAweGZlNzliZmNkYjcwMTRkZj4KICAgICAgICAgICAxICAgMCUgICAg
ICAgICAgICAgICAgYy1iZWdpbm5pbmctb2YtZGVjbC0xCiAgICAgICAgICAgMyAgIDElICAgICAg
ICAtIGZvbnQtbG9jay1zZXQtZGVmYXVsdHMKICAgICAgICAgICAzICAgMSUgICAgICAgICAtIGZv
bnQtbG9jay1jb21waWxlLWtleXdvcmRzCiAgICAgICAgICAgMyAgIDElICAgICAgICAgIC0gbWFw
Y2FyCiAgICAgICAgICAgMyAgIDElICAgICAgICAgICAtIGZvbnQtbG9jay1jb21waWxlLWtleXdv
cmQKICAgICAgICAgICAzICAgMSUgICAgICAgICAgICAtIGV2YWwKICAgICAgICAgICAzICAgMSUg
ICAgICAgICAgICAgLSBsaXN0CiAgICAgICAgICAgMyAgIDElICAgICAgICAgICAgICAtIHByb2du
CiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAgLSB1bmxlc3MKICAgICAgICAgICAyICAg
MCUgICAgICAgICAgICAgICAgLSBpZgogICAgICAgICAgIDIgICAwJSAgICAgICAgICAgICAgICAg
LSBjLWZhY2UtbmFtZS1wCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAgICAgLSBmYWNl
LWxpc3QKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAgICAgICAgICBtYXBoYXNoCiAgICAg
ICAgICAgNCAgIDElICAgICAgIC0gamF2YS1tb2RlCiAgICAgICAgICAgMyAgIDElICAgICAgICAt
IGMtY29tbW9uLWluaXQKICAgICAgICAgICAyICAgMCUgICAgICAgICAtIGMtYmFzaWMtY29tbW9u
LWluaXQKICAgICAgICAgICAyICAgMCUgICAgICAgICAgLSBjLXNldC1zdHlsZQogICAgICAgICAg
IDIgICAwJSAgICAgICAgICAgLSBtYXBjCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgLSAj
PGNvbXBpbGVkIDB4MTE3MGMzOTBhNjY1MzJlMT4KICAgICAgICAgICAyICAgMCUgICAgICAgICAg
ICAgLSBjLXNldC1zdHlsZS0xCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAtIG1hcGNh
cgogICAgICAgICAgIDIgICAwJSAgICAgICAgICAgICAgICAgIzxjb21waWxlZCAweDE4OTJhMGM4
ZGEzOTdjYzg+CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgLSBjLWZvbnQtbG9jay1pbml0CiAg
ICAgICAgICAgMSAgIDAlICAgICAgICAgIC0gbWFwY2FyCiAgICAgICAgICAgMSAgIDAlICAgICAg
ICAgICAgIGMtbW9kZS1zeW1ib2wKICAgICAgICAgICAxICAgMCUgICAgICAgIC0gYy1pbml0LWxh
bmd1YWdlLXZhcnMtZm9yCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgLSBjLW1ha2Uta2V5d29y
ZHMtcmUKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICByZWdleHAtb3B0CiAgICAgICAgICAy
MCAgIDklICAgIC0gIzxjb21waWxlZCAweDEzODUwOGQ5YjExNjQ5YTY+CiAgICAgICAgICAyMCAg
IDklICAgICAtICM8Y29tcGlsZWQgMHgzNTMyZmRkODM1MDE4OWE+CiAgICAgICAgICAyMCAgIDkl
ICAgICAgLSBydW4taG9vay13aXRoLWFyZ3MKICAgICAgICAgIDIwICAgOSUgICAgICAgLSBlbGRv
Yy1kaXNwbGF5LWluLWVjaG8tYXJlYQogICAgICAgICAgMTggICA4JSAgICAgICAgLSBlbGRvYy0t
bWVzc2FnZQogICAgICAgICAgMTggICA4JSAgICAgICAgIC0gZWxkb2MtbWluaWJ1ZmZlci1tZXNz
YWdlCiAgICAgICAgICAxOCAgIDglICAgICAgICAgIC0gYXBwbHkKICAgICAgICAgIDEzICAgNiUg
ICAgICAgICAgICAgbWVzc2FnZQogICAgICAgICAgIDIgICAwJSAgICAgICAgLSBlbGRvYy0tZWNo
by1hcmVhLXN1YnN0cmluZwogICAgICAgICAgIDIgICAwJSAgICAgICAgICAgc3Vic3RpdHV0ZS1j
b21tYW5kLWtleXMKICAgICAgICAgIDEwICAgNCUgICAtIGpzb25ycGMtLWxvZy1ldmVudAogICAg
ICAgICAgIDggICAzJSAgICAtIHBwLXRvLXN0cmluZwogICAgICAgICAgIDggICAzJSAgICAgLSBw
cC1idWZmZXIKICAgICAgICAgICA1ICAgMiUgICAgICAtIGRvd24tbGlzdAogICAgICAgICAgIDUg
ICAyJSAgICAgICAgIHN5bnRheC1wcHNzCiAgICAgICAgICAgMiAgIDAlICAgICAgLSBpbmRlbnQt
c2V4cAogICAgICAgICAgIDIgICAwJSAgICAgICAtIGxpc3AtaW5kZW50LWNhbGMtbmV4dAogICAg
ICAgICAgIDEgICAwJSAgICAgICAgICBjYWxjdWxhdGUtbGlzcC1pbmRlbnQKICAgICAgICAgICAx
ICAgMCUgICAgICAgIHVwLWxpc3QKICAgICAgICAgICAxICAgMCUgICAgLSBqc29ucnBjLS1ldmVu
dHMtYnVmZmVyLXNjcm9sbGJhY2stc2l6ZQogICAgICAgICAgIDEgICAwJSAgICAgLSBhcHBseQog
ICAgICAgICAgIDEgICAwJSAgICAgICAgIzxjb21waWxlZCAtMHg0NTVlYzZlMmM2OGQ0MDc+CiAg
ICAgICAgICAgMSAgIDAlICAgLSAjPGNvbXBpbGVkIC0weDIyY2E5MjUwOGEwZTFkYz4KICAgICAg
ICAgICAxICAgMCUgICAgLSBtYXBjYXIKICAgICAgICAgICAxICAgMCUgICAgIC0gIzxjb21waWxl
ZCAweGRhNmM3OTY2MjlkYjdmNz4KICAgICAgICAgICAxICAgMCUgICAgICAtIGVnbG90LS1yYW5n
ZS1yZWdpb24KICAgICAgICAgICAxICAgMCUgICAgICAgICBlZ2xvdC0tbHNwLXBvc2l0aW9uLXRv
LXBvaW50CiAgICAgICAgICAgMiAgIDAlICAtICM8Y29tcGlsZWQgLTB4MWM3NGFmNzY0MTY4MWRl
Zj4KICAgICAgICAgICAyICAgMCUgICAtIGtpbGwtYnVmZmVyCiAgICAgICAgICAgMiAgIDAlICAg
ICAgcmVwbGFjZS1idWZmZXItaW4td2luZG93cwogICAgICAgICAgIDEgICAwJSAgICBnZW5lcmF0
ZS1uZXctYnVmZmVyCiAgICAgICAgICA2MCAgMjklIC0gY29tbWFuZC1leGVjdXRlCiAgICAgICAg
ICA2MCAgMjklICAtIGNhbGwtaW50ZXJhY3RpdmVseQogICAgICAgICAgNTkgIDI4JSAgIC0gYnl0
ZS1jb2RlCiAgICAgICAgICA1OSAgMjglICAgIC0gcmVhZC1leHRlbmRlZC1jb21tYW5kCiAgICAg
ICAgICA1OSAgMjglICAgICAtIHJlYWQtZXh0ZW5kZWQtY29tbWFuZC0xCiAgICAgICAgICA1OSAg
MjglICAgICAgLSBjb21wbGV0aW5nLXJlYWQKICAgICAgICAgIDU5ICAyOCUgICAgICAgLSBjb21w
bGV0aW5nLXJlYWQtZGVmYXVsdAogICAgICAgICAgMzggIDE4JSAgICAgICAgLSByZWFkLWZyb20t
bWluaWJ1ZmZlcgogICAgICAgICAgMTMgICA2JSAgICAgICAgIC0gY29tbWFuZC1leGVjdXRlCiAg
ICAgICAgICAgOSAgIDQlICAgICAgICAgIC0gY2FsbC1pbnRlcmFjdGl2ZWx5CiAgICAgICAgICAg
OSAgIDQlICAgICAgICAgICAtIGZ1bmNhbGwtaW50ZXJhY3RpdmVseQogICAgICAgICAgIDkgICA0
JSAgICAgICAgICAgIC0gbWluaWJ1ZmZlci1jb21wbGV0ZS1hbmQtZXhpdAogICAgICAgICAgIDkg
ICA0JSAgICAgICAgICAgICAtIGNvbXBsZXRpb24tY29tcGxldGUtYW5kLWV4aXQKICAgICAgICAg
ICA5ICAgNCUgICAgICAgICAgICAgIC0gY29tcGxldGlvbi0tY29tcGxldGUtYW5kLWV4aXQKICAg
ICAgICAgICA4ICAgMyUgICAgICAgICAgICAgICAtIHRyeS1jb21wbGV0aW9uCiAgICAgICAgICAg
OCAgIDMlICAgICAgICAgICAgICAgIC0gIzxjb21waWxlZCAweDFiZjNlM2E5NTFlODY1ZDk+CiAg
ICAgICAgICAgOCAgIDMlICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlLXdpdGgtYWN0aW9uCiAg
ICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICB0ZXN0LWNvbXBsZXRpb24KICAgICAgICAg
ICAxICAgMCUgICAgICAgICAtIHJlZGlzcGxheV9pbnRlcm5hbCAoQyBmdW5jdGlvbikKICAgICAg
ICAgICAxICAgMCUgICAgICAgICAgLSBldmFsCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAg
IGZseW1ha2UtLW1vZGUtbGluZS1jb3VudGVyCiAgICAgICAgICAgMSAgIDAlICAgLSBmdW5jYWxs
LWludGVyYWN0aXZlbHkKICAgICAgICAgICAxICAgMCUgICAgLSBleGVjdXRlLWV4dGVuZGVkLWNv
bW1hbmQKICAgICAgICAgICAxICAgMCUgICAgIC0gY29tbWFuZC1leGVjdXRlCiAgICAgICAgICAg
MSAgIDAlICAgICAgLSBjYWxsLWludGVyYWN0aXZlbHkKICAgICAgICAgICAxICAgMCUgICAgICAg
LSBmdW5jYWxsLWludGVyYWN0aXZlbHkKICAgICAgICAgICAxICAgMCUgICAgICAgICAgcHJvZmls
ZXItc3RvcAogICAgICAgICAgNTUgIDI2JSAtIHRpbWVyLWV2ZW50LWhhbmRsZXIKICAgICAgICAg
IDU1ICAyNiUgIC0gYXBwbHkKICAgICAgICAgIDUxICAyNSUgICAtICM8Y29tcGlsZWQgLTB4ZGFm
ZGZlYmVlZGU3YjYyPgogICAgICAgICAgNTEgIDI1JSAgICAtIGVsZG9jLXByaW50LWN1cnJlbnQt
c3ltYm9sLWluZm8KICAgICAgICAgIDUxICAyNSUgICAgIC0gZWxkb2MtLWludm9rZS1zdHJhdGVn
eQogICAgICAgICAgNTEgIDI1JSAgICAgIC0gZWxkb2MtZG9jdW1lbnRhdGlvbi1jb21wb3NlCiAg
ICAgICAgICA1MCAgMjQlICAgICAgIC0gZWxkb2MtLWRvY3VtZW50YXRpb24tY29tcG9zZS0xCiAg
ICAgICAgICA1MCAgMjQlICAgICAgICAtIHJ1bi1ob29rLXdyYXBwZWQKICAgICAgICAgIDUwICAy
NCUgICAgICAgICAtICM8Y29tcGlsZWQgMHhmNTVhMTcwZmY4MGRmYzk+CiAgICAgICAgICAyNSAg
MTIlICAgICAgICAgIC0gZWdsb3Qtc2lnbmF0dXJlLWVsZG9jLWZ1bmN0aW9uCiAgICAgICAgICAx
OCAgIDglICAgICAgICAgICAtIGVnbG90LS1UZXh0RG9jdW1lbnRQb3NpdGlvblBhcmFtcwogICAg
ICAgICAgMTggICA4JSAgICAgICAgICAgIC0gZWdsb3QtLVRleHREb2N1bWVudElkZW50aWZpZXIK
ICAgICAgICAgIDE4ICAgOCUgICAgICAgICAgICAgLSBlZ2xvdC0tcGF0aC10by11cmkKICAgICAg
ICAgIDE1ICAgNyUgICAgICAgICAgICAgIC0gZmlsZS10cnVlbmFtZQogICAgICAgICAgMTQgICA2
JSAgICAgICAgICAgICAgIC0gZmlsZS10cnVlbmFtZQogICAgICAgICAgMTQgICA2JSAgICAgICAg
ICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAgICAgIDExICAgNSUgICAgICAgICAgICAgICAg
IC0gZmlsZS10cnVlbmFtZQogICAgICAgICAgMTEgICA1JSAgICAgICAgICAgICAgICAgIC0gZmls
ZS10cnVlbmFtZQogICAgICAgICAgMTEgICA1JSAgICAgICAgICAgICAgICAgICAtIGZpbGUtdHJ1
ZW5hbWUKICAgICAgICAgIDEwICAgNCUgICAgICAgICAgICAgICAgICAgIC0gZmlsZS10cnVlbmFt
ZQogICAgICAgICAgMTAgICA0JSAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS10cnVlbmFtZQog
ICAgICAgICAgIDggICAzJSAgICAgICAgICAgICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAg
ICAgICAgICA4ICAgMyUgICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS10cnVlbmFtZQogICAg
ICAgICAgIDggICAzJSAgICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS10cnVlbmFtZQogICAg
ICAgICAgIDUgICAyJSAgICAgICAgICAgICAgICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAg
ICAgICAgICAzICAgMSUgICAgICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS10cnVlbmFtZQog
ICAgICAgICAgIDIgICAwJSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS10cnVlbmFt
ZQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUtdHJ1
ZW5hbWUKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgdXJsLWhleGlmeS1zdHJpbmcK
ICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgIC0gZmlsZS1sb2NhbC1uYW1lCiAgICAgICAg
ICAgMSAgIDAlICAgICAgICAgICAgICAgICBmaWxlLXJlbW90ZS1wCiAgICAgICAgICAgNyAgIDMl
ICAgICAgICAgICAtIGpzb25ycGMtYXN5bmMtcmVxdWVzdAogICAgICAgICAgIDcgICAzJSAgICAg
ICAgICAgIC0gYXBwbHkKICAgICAgICAgICA3ICAgMyUgICAgICAgICAgICAgLSBqc29ucnBjLS1h
c3luYy1yZXF1ZXN0LTEKICAgICAgICAgICA3ICAgMyUgICAgICAgICAgICAgIC0ganNvbnJwYy1j
b25uZWN0aW9uLXNlbmQKICAgICAgICAgICA3ICAgMyUgICAgICAgICAgICAgICAtIGFwcGx5CiAg
ICAgICAgICAgNyAgIDMlICAgICAgICAgICAgICAgIC0gIzxjb21waWxlZCAtMHg0YWJjOWI4NGZh
N2MyYTQ+CiAgICAgICAgICAgNiAgIDIlICAgICAgICAgICAgICAgICAtIGpzb25ycGMtLWxvZy1l
dmVudAogICAgICAgICAgIDYgICAyJSAgICAgICAgICAgICAgICAgIC0gcHAtdG8tc3RyaW5nCiAg
ICAgICAgICAgNCAgIDElICAgICAgICAgICAgICAgICAgIC0gcHAtYnVmZmVyCiAgICAgICAgICAg
MyAgIDElICAgICAgICAgICAgICAgICAgICAtIGRvd24tbGlzdAogICAgICAgICAgIDIgICAwJSAg
ICAgICAgICAgICAgICAgICAgICAgc3ludGF4LXBwc3MKICAgICAgICAgICAxICAgMCUgICAgICAg
ICAgICAgICAgICAgIC0gaW5kZW50LXNleHAKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAg
ICAgICAgICAgIGxpc3AtaW5kZW50LWNhbGMtbmV4dAogICAgICAgICAgMjUgIDEyJSAgICAgICAg
ICAtIGVnbG90LWhvdmVyLWVsZG9jLWZ1bmN0aW9uCiAgICAgICAgICAxMSAgIDUlICAgICAgICAg
ICAtIGVnbG90LS1oaWdobGlnaHQtcGlnZ3liYWNrCiAgICAgICAgICAgNyAgIDMlICAgICAgICAg
ICAgLSBlZ2xvdC0tVGV4dERvY3VtZW50UG9zaXRpb25QYXJhbXMKICAgICAgICAgICA3ICAgMyUg
ICAgICAgICAgICAgLSBlZ2xvdC0tVGV4dERvY3VtZW50SWRlbnRpZmllcgogICAgICAgICAgIDcg
ICAzJSAgICAgICAgICAgICAgLSBlZ2xvdC0tcGF0aC10by11cmkKICAgICAgICAgICA2ICAgMiUg
ICAgICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAgICAgICA1ICAgMiUgICAgICAgICAg
ICAgICAgLSBmaWxlLXRydWVuYW1lCiAgICAgICAgICAgNCAgIDElICAgICAgICAgICAgICAgICAt
IGZpbGUtdHJ1ZW5hbWUKICAgICAgICAgICA0ICAgMSUgICAgICAgICAgICAgICAgICAtIGZpbGUt
dHJ1ZW5hbWUKICAgICAgICAgICA0ICAgMSUgICAgICAgICAgICAgICAgICAgLSBmaWxlLXRydWVu
YW1lCiAgICAgICAgICAgMyAgIDElICAgICAgICAgICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUK
ICAgICAgICAgICAzICAgMSUgICAgICAgICAgICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAg
ICAgICAgICAzICAgMSUgICAgICAgICAgICAgICAgICAgICAgLSBmaWxlLXRydWVuYW1lCiAgICAg
ICAgICAgMiAgIDAlICAgICAgICAgICAgICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAg
ICAgICAyICAgMCUgICAgICAgICAgICAgICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAg
ICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLXRydWVuYW1lCiAgICAg
ICAgICAgNCAgIDElICAgICAgICAgICAgLSBqc29ucnBjLWFzeW5jLXJlcXVlc3QKICAgICAgICAg
ICA0ICAgMSUgICAgICAgICAgICAgLSBhcHBseQogICAgICAgICAgIDQgICAxJSAgICAgICAgICAg
ICAgLSBqc29ucnBjLS1hc3luYy1yZXF1ZXN0LTEKICAgICAgICAgICAyICAgMCUgICAgICAgICAg
ICAgICAtIGpzb25ycGMtY29ubmVjdGlvbi1zZW5kCiAgICAgICAgICAgMiAgIDAlICAgICAgICAg
ICAgICAgIC0gYXBwbHkKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAgICAgIC0gIzxjb21w
aWxlZCAtMHg0YWJjOWI4NGZhN2MyYTQ+CiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAg
ICAgLSBqc29ucnBjLS1sb2ctZXZlbnQKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAgICAg
ICAgLSBwcC10by1zdHJpbmcKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAg
cHAtYnVmZmVyCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgLSAjPGNvbXBpbGVkIDB4
MTU0N2YzNzNjZThlNTFiMj4KICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgLSBydW4t
d2l0aC10aW1lcgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgLSBhcHBseQogICAg
ICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgIC0gcnVuLWF0LXRpbWUKICAgICAgICAgICAx
ICAgMCUgICAgICAgICAgICAgICAgICAgICB0aW1lci1yZWxhdGl2ZS10aW1lCiAgICAgICAgICAg
MSAgIDAlICAgICAgICAgICAgICAgLSBqc29ucnBjLS1uZXh0LXJlcXVlc3QtaWQKICAgICAgICAg
ICAxICAgMCUgICAgICAgICAgICAgICAgLSBhcHBseQogICAgICAgICAgIDEgICAwJSAgICAgICAg
ICAgICAgICAgICAjPGNvbXBpbGVkIC0weGRmZjgwM2JhNDZjMDJlNT4KICAgICAgICAgIDEwICAg
NCUgICAgICAgICAgIC0gZWdsb3QtLVRleHREb2N1bWVudFBvc2l0aW9uUGFyYW1zCiAgICAgICAg
ICAxMCAgIDQlICAgICAgICAgICAgLSBlZ2xvdC0tVGV4dERvY3VtZW50SWRlbnRpZmllcgogICAg
ICAgICAgMTAgICA0JSAgICAgICAgICAgICAtIGVnbG90LS1wYXRoLXRvLXVyaQogICAgICAgICAg
IDggICAzJSAgICAgICAgICAgICAgLSBmaWxlLXRydWVuYW1lCiAgICAgICAgICAgOCAgIDMlICAg
ICAgICAgICAgICAgLSBmaWxlLXRydWVuYW1lCiAgICAgICAgICAgOCAgIDMlICAgICAgICAgICAg
ICAgIC0gZmlsZS10cnVlbmFtZQogICAgICAgICAgIDggICAzJSAgICAgICAgICAgICAgICAgLSBm
aWxlLXRydWVuYW1lCiAgICAgICAgICAgNyAgIDMlICAgICAgICAgICAgICAgICAgLSBmaWxlLXRy
dWVuYW1lCiAgICAgICAgICAgNyAgIDMlICAgICAgICAgICAgICAgICAgIC0gZmlsZS10cnVlbmFt
ZQogICAgICAgICAgIDYgICAyJSAgICAgICAgICAgICAgICAgICAgLSBmaWxlLXRydWVuYW1lCiAg
ICAgICAgICAgNCAgIDElICAgICAgICAgICAgICAgICAgICAgLSBmaWxlLXRydWVuYW1lCiAgICAg
ICAgICAgMyAgIDElICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS10cnVlbmFtZQogICAgICAg
ICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLXRydWVuYW1lCiAgICAgICAg
ICAgMiAgIDAlICAgICAgICAgICAgICAtIHVybC1oZXhpZnktc3RyaW5nCiAgICAgICAgICAgMiAg
IDAlICAgICAgICAgICAgICAgLSBtYXBjb25jYXQKICAgICAgICAgICAxICAgMCUgICAgICAgICAg
ICAgICAgICAjPGNvbXBpbGVkIDB4MWU2Y2EwY2I4NWE0NThiYz4KICAgICAgICAgICA0ICAgMSUg
ICAgICAgICAgIC0ganNvbnJwYy1hc3luYy1yZXF1ZXN0CiAgICAgICAgICAgNCAgIDElICAgICAg
ICAgICAgLSBhcHBseQogICAgICAgICAgIDQgICAxJSAgICAgICAgICAgICAtIGpzb25ycGMtLWFz
eW5jLXJlcXVlc3QtMQogICAgICAgICAgIDQgICAxJSAgICAgICAgICAgICAgLSBqc29ucnBjLWNv
bm5lY3Rpb24tc2VuZAogICAgICAgICAgIDQgICAxJSAgICAgICAgICAgICAgIC0gYXBwbHkKICAg
ICAgICAgICA0ICAgMSUgICAgICAgICAgICAgICAgLSAjPGNvbXBpbGVkIC0weDRhYmM5Yjg0ZmE3
YzJhND4KICAgICAgICAgICAzICAgMSUgICAgICAgICAgICAgICAgIC0ganNvbnJwYy0tbG9nLWV2
ZW50CiAgICAgICAgICAgMyAgIDElICAgICAgICAgICAgICAgICAgLSBwcC10by1zdHJpbmcKICAg
ICAgICAgICAyICAgMCUgICAgICAgICAgICAgICAgICAgLSBwcC1idWZmZXIKICAgICAgICAgICAy
ICAgMCUgICAgICAgICAgICAgICAgICAgIC0gaW5kZW50LXNleHAKICAgICAgICAgICAxICAgMCUg
ICAgICAgICAgICAgICAgICAgICAgIGluZGVudC1saW5lLXRvCiAgICAgICAgICAgMSAgIDAlICAg
ICAgICAgICAgICAgICAgICAgICBsaXNwLWluZGVudC1jYWxjLW5leHQKICAgICAgICAgICAxICAg
MCUgICAgICAgICAgICAgICAgICAganNvbnJwYy0tanNvbi1lbmNvZGUKICAgICAgICAgICAzICAg
MSUgICAgICM8Y29tcGlsZWQgMHgxMmM2ZDdiNTRhMWQ2ZDI2PgogICAgICAgICAgIDEgICAwJSAg
IC0gc2hvdy1wYXJlbi1mdW5jdGlvbgogICAgICAgICAgIDEgICAwJSAgICAtIHNob3ctcGFyZW4t
LWRlZmF1bHQKICAgICAgICAgICAxICAgMCUgICAgICAgc3ludGF4LXBwc3MKICAgICAgICAgIDIx
ICAxMCUgLSBlbGRvYy1wcmUtY29tbWFuZC1yZWZyZXNoLWVjaG8tYXJlYQogICAgICAgICAgMjEg
IDEwJSAgLSBlbGRvYy0tbWVzc2FnZQogICAgICAgICAgMjEgIDEwJSAgIC0gZWxkb2MtbWluaWJ1
ZmZlci1tZXNzYWdlCiAgICAgICAgICAyMSAgMTAlICAgICAgYXBwbHkKICAgICAgICAgICAzICAg
MSUgLSByZWRpc3BsYXlfaW50ZXJuYWwgKEMgZnVuY3Rpb24pCiAgICAgICAgICAgMyAgIDElICAt
IGV2YWwKICAgICAgICAgICAxICAgMCUgICAgIGZseW1ha2UtLW1vZGUtbGluZS1jb3VudGVyCiAg
ICAgICAgICAgMCAgIDAlICsgLi4uCg==
--=-=-=
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=emacs-30-before
Content-Transfer-Encoding: base64

ICAgICAgICAgMjA5ICA0MyUgLSB0aW1lci1ldmVudC1oYW5kbGVyCiAgICAgICAgIDIwOSAgNDMl
ICAtIGFwcGx5CiAgICAgICAgIDE4NyAgMzklICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIDk3OD4K
ICAgICAgICAgMTc5ICAzNyUgICAgLSBqc29ucnBjLWNvbm5lY3Rpb24tcmVjZWl2ZQogICAgICAg
ICAxMDQgIDIxJSAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIEY3Qj4KICAgICAgICAgMTA0ICAy
MSUgICAgICAtIGFwcGx5CiAgICAgICAgIDEwNCAgMjElICAgICAgIC0gZWdsb3QtaGFuZGxlLW5v
dGlmaWNhdGlvbgogICAgICAgICAxMDQgIDIxJSAgICAgICAgLSBhcHBseQogICAgICAgICAxMDQg
IDIxJSAgICAgICAgIC0gIzxjb21waWxlZC1mdW5jdGlvbiA2MDQ+CiAgICAgICAgICA5MCAgMTgl
ICAgICAgICAgIC0gZmluZC1idWZmZXItdmlzaXRpbmcKICAgICAgICAgIDczICAxNSUgICAgICAg
ICAgIC0gZmlsZS10cnVlbmFtZQogICAgICAgICAgNjEgIDEyJSAgICAgICAgICAgIC0gZmlsZS10
cnVlbmFtZQogICAgICAgICAgNTggIDEyJSAgICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAg
ICAgICAgIDUxICAxMCUgICAgICAgICAgICAgIC0gZmlsZS10cnVlbmFtZQogICAgICAgICAgNDYg
ICA5JSAgICAgICAgICAgICAgIC0gZmlsZS10cnVlbmFtZQogICAgICAgICAgNDMgICA5JSAgICAg
ICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAgICAgIDQxICAgOCUgICAgICAgICAgICAg
ICAgIC0gZmlsZS10cnVlbmFtZQogICAgICAgICAgMzYgICA3JSAgICAgICAgICAgICAgICAgIC0g
ZmlsZS10cnVlbmFtZQogICAgICAgICAgMzQgICA3JSAgICAgICAgICAgICAgICAgICAtIGZpbGUt
dHJ1ZW5hbWUKICAgICAgICAgIDI4ICAgNSUgICAgICAgICAgICAgICAgICAgIC0gZmlsZS10cnVl
bmFtZQogICAgICAgICAgMjIgICA0JSAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS10cnVlbmFt
ZQogICAgICAgICAgMTUgICAzJSAgICAgICAgICAgICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUK
ICAgICAgICAgIDEwICAgMiUgICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS10cnVlbmFtZQog
ICAgICAgICAgIDUgICAxJSAgICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS10cnVlbmFtZQog
ICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUtdHJ1ZW5hbWUK
ICAgICAgICAgICA1ICAgMSUgICAgICAgICAgICAgYWJicmV2aWF0ZS1maWxlLW5hbWUKICAgICAg
ICAgICA4ICAgMSUgICAgICAgICAgLSBlZ2xvdC11cmktdG8tcGF0aAogICAgICAgICAgIDcgICAx
JSAgICAgICAgICAgLSB1cmwtZ2VuZXJpYy1wYXJzZS11cmwKICAgICAgICAgICAyICAgMCUgICAg
ICAgICAgICAtICM8Y29tcGlsZWQtZnVuY3Rpb24gNTQ4PgogICAgICAgICAgIDIgICAwJSAgICAg
ICAgICAgICAgIGtpbGwtYnVmZmVyCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICBtYXRj
aC1zdHJpbmcKICAgICAgICAgICAxICAgMCUgICAgICAgICAgIC0gZWdsb3QtLXRyYW1waXNoLXAK
ICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAtIHByb2plY3Qtcm9vdAogICAgICAgICAgIDEg
ICAwJSAgICAgICAgICAgICAtIGFwcGx5CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAt
ICM8Y29tcGlsZWQtZnVuY3Rpb24gNUQ4PgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAg
ICAgZ2V0aGFzaAogICAgICAgICAgIDUgICAxJSAgICAgICAgICAgIGVnbG90LS1tYWtlLWRpYWcK
ICAgICAgICAgICAxICAgMCUgICAgICAgICAgICBleHBhbmQtZmlsZS1uYW1lCiAgICAgICAgICA2
NSAgMTMlICAgICAtIGpzb25ycGMtLWNvbnRpbnVlCiAgICAgICAgICA2MyAgMTMlICAgICAgLSAj
PGNvbXBpbGVkLWZ1bmN0aW9uIEE3MD4KICAgICAgICAgIDU2ICAxMSUgICAgICAgLSBlZ2xvdC0t
aG92ZXItaW5mbwogICAgICAgICAgNTYgIDExJSAgICAgICAgLSBlZ2xvdC0tZm9ybWF0LW1hcmt1
cAogICAgICAgICAgNDAgICA4JSAgICAgICAgIC0gZ2ZtLXZpZXctbW9kZQogICAgICAgICAgMTMg
ICAyJSAgICAgICAgICAtIGRlZmFsaWFzCiAgICAgICAgICAgOCAgIDElICAgICAgICAgICAtIGZp
bGUtbmFtZS1zYW5zLWV4dGVuc2lvbgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgZmls
ZS1uYW1lLXNhbnMtdmVyc2lvbnMKICAgICAgICAgICA5ICAgMSUgICAgICAgICAgLSBieXRlLWNv
ZGUKICAgICAgICAgICA4ICAgMSUgICAgICAgICAgIC0gcmVxdWlyZQogICAgICAgICAgIDIgICAw
JSAgICAgICAgICAgIC0gZGVmYWxpYXMKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAgICBm
aWxlLW5hbWUtc2Fucy1leHRlbnNpb24KICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAtIGN1
c3RvbS1kZWNsYXJlLWZhY2UKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgLSBmYWNlLXNw
ZWMtc2V0CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAtIGZhY2Utc3BlYy1yZWNhbGMK
ICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAtIGZhY2UtYXR0cmlidXRlCiAgICAgICAg
ICAgMSAgIDAlICAgICAgICAgICAgICAgICAgZmFjZS1hdHRyaWJ1dGUtcmVsYXRpdmUtcAogICAg
ICAgICAgIDEgICAwJSAgICAgICAgICAgLSBjdXN0b20tZGVjbGFyZS12YXJpYWJsZQogICAgICAg
ICAgIDEgICAwJSAgICAgICAgICAgIC0gY3VzdG9tLWluaXRpYWxpemUtcmVzZXQKICAgICAgICAg
ICAxICAgMCUgICAgICAgICAgICAgLSBldmFsCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAg
ICAtIGZ1bmNhbGwKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAtICM8Y29tcGlsZWQt
ZnVuY3Rpb24gREYzPgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAtIGV4ZWN1dGFi
bGUtZmluZAogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICBsb2NhdGUtZmlsZQog
ICAgICAgICAgIDQgICAwJSAgICAgICAgICAgIHJlcXVpcmUKICAgICAgICAgICA0ICAgMCUgICAg
ICAgICAgLSByZWFkLW9ubHktbW9kZQogICAgICAgICAgIDQgICAwJSAgICAgICAgICAgLSB2aWV3
LW1vZGUtZW50ZXIKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAtIGRlZmFsaWFzCiAgICAg
ICAgICAgMSAgIDAlICAgICAgICAgICAgICAgZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9uCiAgICAg
ICAgICAgMyAgIDAlICAgICAgICAgICAgcmVhZAogICAgICAgICAgIDMgICAwJSAgICAgICAgICAt
IGdmbS1tb2RlCiAgICAgICAgICAgMyAgIDAlICAgICAgICAgICAtIG1hcmtkb3duLW1vZGUKICAg
ICAgICAgICAyICAgMCUgICAgICAgICAgICAtIHN5bnRheC1wcm9wZXJ0aXplCiAgICAgICAgICAg
MiAgIDAlICAgICAgICAgICAgIC0gbWFya2Rvd24tc3ludGF4LXByb3BlcnRpemUKICAgICAgICAg
ICAxICAgMCUgICAgICAgICAgICAgIC0gbWFya2Rvd24tc3ludGF4LXByb3BlcnRpemUtbGlzdC1p
dGVtcwogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgIC0gbWFya2Rvd24tLWN1ci1saXN0
LWl0ZW0tYm91bmRzCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgIC0gbWFya2Rvd24t
Y3VyLWxpc3QtaXRlbS1lbmQKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgIC0gbWFy
a2Rvd24tcHJldi1saW5lLWJsYW5rCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAg
ICBsb29raW5nLWF0CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAtIG1hcmtkb3duLXN5
bnRheC1wcm9wZXJ0aXplLXByZS1ibG9ja3MKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAg
ICAgIGZvcm1hdAogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgYWRkLWhvb2sKICAgICAg
ICAgICAxICAgMCUgICAgICAgICAgLSBjdXN0b20tZGVjbGFyZS1mYWNlCiAgICAgICAgICAgMSAg
IDAlICAgICAgICAgICAtIGZhY2Utc3BlYy1zZXQKICAgICAgICAgICAxICAgMCUgICAgICAgICAg
ICAtIG1ha2UtZW1wdHktZmFjZQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgIG1ha2Ut
ZmFjZQogICAgICAgICAgMTMgICAyJSAgICAgICAgIC0gZm9udC1sb2NrLWVuc3VyZQogICAgICAg
ICAgMTMgICAyJSAgICAgICAgICAtICM8Y29tcGlsZWQtZnVuY3Rpb24gNDZEPgogICAgICAgICAg
MTMgICAyJSAgICAgICAgICAgLSBmb250LWxvY2stZm9udGlmeS1yZWdpb24KICAgICAgICAgIDEz
ICAgMiUgICAgICAgICAgICAtIGZvbnQtbG9jay1kZWZhdWx0LWZvbnRpZnktcmVnaW9uCiAgICAg
ICAgICAgOCAgIDElICAgICAgICAgICAgIC0gZm9udC1sb2NrLWZvbnRpZnkta2V5d29yZHMtcmVn
aW9uCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAtIG1hcmtkb3duLWZvbnRpZnktaW5s
aW5lLWxpbmtzCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAgLSBtYXJrZG93bi1tYXRj
aC1nZW5lcmljLWxpbmtzCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgIC0gbWFya2Rv
d24tcmFuZ2UtcHJvcGVydHktYW55CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAg
IG51bWJlci1zZXF1ZW5jZQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgIHJlLXNl
YXJjaC1mb3J3YXJkCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAtIG1hcmtkb3duLW1h
dGNoLXBhbmRvYy1tZXRhZGF0YQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgIC0gbWFy
a2Rvd24tbWF0Y2gtZ2VuZXJpYy1tZXRhZGF0YQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAg
ICAgICAgIHJlLXNlYXJjaC1mb3J3YXJkCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAt
IG1hcmtkb3duLW1hdGNoLWJvbGQKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAtIG1h
cmtkb3duLW1hdGNoLWlubGluZS1nZW5lcmljCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAg
ICAgICAgcmUtc2VhcmNoLWZvcndhcmQKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgIC0g
bWFya2Rvd24tZm9udGlmeS1zdWItc3VwZXJzY3JpcHRzCiAgICAgICAgICAgMSAgIDAlICAgICAg
ICAgICAgICAgLSBtYXJrZG93bi1zZWFyY2gtdW50aWwtY29uZGl0aW9uCiAgICAgICAgICAgMSAg
IDAlICAgICAgICAgICAgICAgIC0gYXBwbHkKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAg
ICAgICAgcmUtc2VhcmNoLWZvcndhcmQKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgIC0g
bWFya2Rvd24tZm9udGlmeS1wbGFpbi11cmlzCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAg
ICAgLSBtYXJrZG93bi1tYXRjaC1wbGFpbi11cmlzCiAgICAgICAgICAgMSAgIDAlICAgICAgICAg
ICAgICAgIC0gbWFya2Rvd24tbWF0Y2gtaW5saW5lLWdlbmVyaWMKICAgICAgICAgICAxICAgMCUg
ICAgICAgICAgICAgICAgIC0gbWFya2Rvd24tY29kZS1ibG9jay1hdC1wb3MKICAgICAgICAgICAx
ICAgMCUgICAgICAgICAgICAgICAgICAtIG1hcmtkb3duLWdldC1lbmNsb3NpbmctZmVuY2VkLWJs
b2NrLWNvbnN0cnVjdAogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgIGNsLWZp
bmQtaWYKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgIC0gbWFya2Rvd24tbWF0Y2gtY29k
ZQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgIC0gbWFya2Rvd24tc2VhcmNoLXVudGls
LWNvbmRpdGlvbgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAtIGFwcGx5CiAgICAg
ICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgIHJlLXNlYXJjaC1mb3J3YXJkCiAgICAgICAg
ICAgNSAgIDElICAgICAgICAgICAgIC0gZm9udC1sb2NrLWZvbnRpZnktc3ludGFjdGljYWxseS1y
ZWdpb24KICAgICAgICAgICA1ICAgMSUgICAgICAgICAgICAgIC0gdHJlZXNpdC1mb250LWxvY2st
Zm9udGlmeS1yZWdpb24KICAgICAgICAgICA0ICAgMCUgICAgICAgICAgICAgICAgIHRyZWVzaXQt
cGFyc2VyLXJvb3Qtbm9kZQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgdHJlZXNp
dC0tZm9udC1sb2NrLWZvbnRpZnktcmVnaW9uLTEKICAgICAgICAgICAzICAgMCUgICAgICAgICAt
IGphdmEtdHMtbW9kZQogICAgICAgICAgIDIgICAwJSAgICAgICAgICAtIHRyZWVzaXQtbWFqb3It
bW9kZS1zZXR1cAogICAgICAgICAgIDIgICAwJSAgICAgICAgICAgLSBrZXltYXAtc2V0CiAgICAg
ICAgICAgMiAgIDAlICAgICAgICAgICAgLSBrZXltYXAtLWNoZWNrCiAgICAgICAgICAgMiAgIDAl
ICAgICAgICAgICAgIC0ga2V5LXZhbGlkLXAKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAg
ICAgc3RyaW5nLW1hdGNoCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgIC0gdHJlZXNpdC1yZWFk
eS1wCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgIHRyZWVzaXQtbGFuZ3VhZ2UtYXZhaWxh
YmxlLXAKICAgICAgICAgICA3ICAgMSUgICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIDI2MD4K
ICAgICAgICAgICA2ICAgMSUgICAgICAgIC0gIzxjb21waWxlZC1mdW5jdGlvbiBBRjA+CiAgICAg
ICAgICAgNiAgIDElICAgICAgICAgLSBydW4taG9vay13aXRoLWFyZ3MKICAgICAgICAgICA1ICAg
MSUgICAgICAgICAgLSBlbGRvYy1kaXNwbGF5LWluLWVjaG8tYXJlYQogICAgICAgICAgIDMgICAw
JSAgICAgICAgICAgLSBlbGRvYy0tbWVzc2FnZQogICAgICAgICAgIDMgICAwJSAgICAgICAgICAg
IC0gZWxkb2MtbWluaWJ1ZmZlci1tZXNzYWdlCiAgICAgICAgICAgMyAgIDAlICAgICAgICAgICAg
IC0gbWVzc2FnZQogICAgICAgICAgIDMgICAwJSAgICAgICAgICAgICAgICByZWRpc3BsYXlfaW50
ZXJuYWwgKEMgZnVuY3Rpb24pCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgIC0gZWxkb2MtZGlz
cGxheS1pbi1idWZmZXIKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgZWxkb2MtLWZvcm1h
dC1kb2MtYnVmZmVyCiAgICAgICAgICAgMSAgIDAlICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9u
IEMzQz4KICAgICAgICAgICAxICAgMCUgICAgICAgLSBlZ2xvdC0tY2hlY2stb2JqZWN0CiAgICAg
ICAgICAgMSAgIDAlICAgICAgICAgIGVnbG90LS1pbnRlcmZhY2UKICAgICAgICAgICAxICAgMCUg
ICAgICAtIChzZXRmIGpzb25ycGMtLXN5bmMtcmVxdWVzdC1hbGlzdCkKICAgICAgICAgICAxICAg
MCUgICAgICAgICBnZXRoYXNoCiAgICAgICAgICAgOCAgIDElICAgICAtIGFwcGx5CiAgICAgICAg
ICAgNiAgIDElICAgICAgLSBqc29ucnBjLS1ldmVudAogICAgICAgICAgIDYgICAxJSAgICAgICAt
ICM8Y29tcGlsZWQtZnVuY3Rpb24gRkJEPgogICAgICAgICAgIDYgICAxJSAgICAgICAgLSBhcHBs
eQogICAgICAgICAgIDYgICAxJSAgICAgICAgIC0ganNvbnJwYy0tbG9nLWV2ZW50CiAgICAgICAg
ICAgMSAgIDAlICAgICAgICAgIC0ganNvbnJwYy0tc3luYy1yZXF1ZXN0LWFsaXN0CiAgICAgICAg
ICAgMSAgIDAlICAgICAgICAgICAgIGFwcGx5CiAgICAgICAgICAgMSAgIDAlICAgICAgLSBqc29u
cnBjLS1yZXBseQogICAgICAgICAgIDEgICAwJSAgICAgICAtIGpzb25ycGMtY29ubmVjdGlvbi1z
ZW5kCiAgICAgICAgICAgMSAgIDAlICAgICAgICAtIGFwcGx5CiAgICAgICAgICAgMSAgIDAlICAg
ICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIDIwMT4KICAgICAgICAgICAxICAgMCUgICAgICAg
ICAgLSBqc29ucnBjLS1qc29uLWVuY29kZQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICBq
c29uLXNlcmlhbGl6ZQogICAgICAgICAgIDEgICAwJSAgICAgLSBqc29ucnBjLWNvbnZlcnQtZnJv
bS1lbmRwb2ludAogICAgICAgICAgIDEgICAwJSAgICAgICAgY2wtdHlwZS1vZgogICAgICAgICAg
IDEgICAwJSAgICAgICBjbC0tZG8tcmVtZgogICAgICAgICAgIDQgICAwJSAgICAtICM8Y29tcGls
ZWQtZnVuY3Rpb24gMTU3PgogICAgICAgICAgIDQgICAwJSAgICAgLSBraWxsLWJ1ZmZlcgogICAg
ICAgICAgIDIgICAwJSAgICAgIC0gcmVwbGFjZS1idWZmZXItaW4td2luZG93cwogICAgICAgICAg
IDEgICAwJSAgICAgICAgIHVucmVjb3JkLXdpbmRvdy1idWZmZXIKICAgICAgICAgICAxICAgMCUg
ICAgICBnZW5lcmF0ZS1uZXctYnVmZmVyCiAgICAgICAgICAyMSAgIDQlICAgLSAjPHN1YnItbmF0
aXZlLWVsaXNwIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFt
YmRhXzEyPgogICAgICAgICAgMjEgICA0JSAgICAtIGVsZG9jLXByaW50LWN1cnJlbnQtc3ltYm9s
LWluZm8KICAgICAgICAgIDIxICAgNCUgICAgIC0gZWxkb2MtLWludm9rZS1zdHJhdGVneQogICAg
ICAgICAgMjEgICA0JSAgICAgIC0gZWxkb2MtZG9jdW1lbnRhdGlvbi1jb21wb3NlCiAgICAgICAg
ICAxMSAgIDIlICAgICAgIC0gZWdsb3QtaG92ZXItZWxkb2MtZnVuY3Rpb24KICAgICAgICAgICA1
ICAgMSUgICAgICAgIC0gZWdsb3QtLVRleHREb2N1bWVudFBvc2l0aW9uUGFyYW1zCiAgICAgICAg
ICAgNSAgIDElICAgICAgICAgLSBlZ2xvdC0tVGV4dERvY3VtZW50SWRlbnRpZmllcgogICAgICAg
ICAgIDUgICAxJSAgICAgICAgICAtIGVnbG90LXBhdGgtdG8tdXJpCiAgICAgICAgICAgNSAgIDEl
ICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAgICAgICA1ICAgMSUgICAgICAgICAgICAt
IGZpbGUtdHJ1ZW5hbWUKICAgICAgICAgICA1ICAgMSUgICAgICAgICAgICAgLSBmaWxlLXRydWVu
YW1lCiAgICAgICAgICAgNCAgIDAlICAgICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAg
ICAgICAzICAgMCUgICAgICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAgICAgICAzICAg
MCUgICAgICAgICAgICAgICAgLSBmaWxlLXRydWVuYW1lCiAgICAgICAgICAgMyAgIDAlICAgICAg
ICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAg
ICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAg
LSBmaWxlLXRydWVuYW1lCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAtIGZp
bGUtdHJ1ZW5hbWUKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAtIGZpbGUt
dHJ1ZW5hbWUKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLXRy
dWVuYW1lCiAgICAgICAgICAgNSAgIDElICAgICAgICAtIGVnbG90LS1oaWdobGlnaHQtcGlnZ3li
YWNrCiAgICAgICAgICAgNSAgIDElICAgICAgICAgLSBlZ2xvdC0tVGV4dERvY3VtZW50UG9zaXRp
b25QYXJhbXMKICAgICAgICAgICA1ICAgMSUgICAgICAgICAgLSBlZ2xvdC0tVGV4dERvY3VtZW50
SWRlbnRpZmllcgogICAgICAgICAgIDUgICAxJSAgICAgICAgICAgLSBlZ2xvdC1wYXRoLXRvLXVy
aQogICAgICAgICAgIDUgICAxJSAgICAgICAgICAgIC0gZmlsZS10cnVlbmFtZQogICAgICAgICAg
IDUgICAxJSAgICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAgICAgICA0ICAgMCUgICAg
ICAgICAgICAgIC0gZmlsZS10cnVlbmFtZQogICAgICAgICAgIDQgICAwJSAgICAgICAgICAgICAg
IC0gZmlsZS10cnVlbmFtZQogICAgICAgICAgIDMgICAwJSAgICAgICAgICAgICAgICAtIGZpbGUt
dHJ1ZW5hbWUKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAgICAgIC0gZmlsZS10cnVlbmFt
ZQogICAgICAgICAgIDIgICAwJSAgICAgICAgICAgICAgICAgIC0gZmlsZS10cnVlbmFtZQogICAg
ICAgICAgIDIgICAwJSAgICAgICAgICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAgICAg
ICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAgZmlsZS10cnVlbmFtZQogICAgICAgICAgIDEg
ICAwJSAgICAgICAgLSBqc29ucnBjLWFzeW5jLXJlcXVlc3QKICAgICAgICAgICAxICAgMCUgICAg
ICAgICAtIGpzb25ycGMtLWFzeW5jLXJlcXVlc3QtMQogICAgICAgICAgIDEgICAwJSAgICAgICAg
ICAtIGpzb25ycGMtY29ubmVjdGlvbi1zZW5kCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAt
IGFwcGx5CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9u
IDIwMT4KICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICBmb3JtYXQKICAgICAgICAgIDEw
ICAgMiUgICAgICAgLSBlZ2xvdC1zaWduYXR1cmUtZWxkb2MtZnVuY3Rpb24KICAgICAgICAgIDEw
ICAgMiUgICAgICAgIC0gZWdsb3QtLVRleHREb2N1bWVudFBvc2l0aW9uUGFyYW1zCiAgICAgICAg
ICAxMCAgIDIlICAgICAgICAgLSBlZ2xvdC0tVGV4dERvY3VtZW50SWRlbnRpZmllcgogICAgICAg
ICAgMTAgICAyJSAgICAgICAgICAtIGVnbG90LXBhdGgtdG8tdXJpCiAgICAgICAgICAxMCAgIDIl
ICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAgICAgIDEwICAgMiUgICAgICAgICAgICAt
IGZpbGUtdHJ1ZW5hbWUKICAgICAgICAgICA4ICAgMSUgICAgICAgICAgICAgLSBmaWxlLXRydWVu
YW1lCiAgICAgICAgICAgNyAgIDElICAgICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAg
ICAgICA3ICAgMSUgICAgICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAgICAgICA3ICAg
MSUgICAgICAgICAgICAgICAgLSBmaWxlLXRydWVuYW1lCiAgICAgICAgICAgNyAgIDElICAgICAg
ICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAgICAgICA3ICAgMSUgICAgICAgICAgICAg
ICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAgICAgICA2ICAgMSUgICAgICAgICAgICAgICAgICAg
LSBmaWxlLXRydWVuYW1lCiAgICAgICAgICAgNiAgIDElICAgICAgICAgICAgICAgICAgICAtIGZp
bGUtdHJ1ZW5hbWUKICAgICAgICAgICA2ICAgMSUgICAgICAgICAgICAgICAgICAgICAtIGZpbGUt
dHJ1ZW5hbWUKICAgICAgICAgICA1ICAgMSUgICAgICAgICAgICAgICAgICAgICAgLSBmaWxlLXRy
dWVuYW1lCiAgICAgICAgICAgNCAgIDAlICAgICAgICAgICAgICAgICAgICAgICAtIGZpbGUtdHJ1
ZW5hbWUKICAgICAgICAgICAzICAgMCUgICAgICAgICAgICAgICAgICAgICAgICAtIGZpbGUtdHJ1
ZW5hbWUKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAgICAgICAgICAgICAgLSBmaWxlLXRy
dWVuYW1lCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW1w
LWNvbXBsZXRpb24tZmlsZS1uYW1lLWhhbmRsZXIKICAgICAgICAgICAxICAgMCUgICAgICAgICAg
ICAgICAgICAgICAgICAgLSB0cmFtcC1jb21wbGV0aW9uLWZpbGUtbmFtZS1oYW5kbGVyCiAgICAg
ICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW1wLXJ1bi1yZWFsLWhh
bmRsZXIKICAgICAgICAgICAxICAgMCUgICAtICM8c3Vici1uYXRpdmUtZWxpc3AgRjYxNmU2ZjZl
Nzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfOT4KICAgICAgICAgICAx
ICAgMCUgICAgICBqaXQtbG9jay1jb250ZXh0LWZvbnRpZnkKICAgICAgICAgIDk0ICAxOSUgLSBy
ZWRpc3BsYXlfaW50ZXJuYWwgKEMgZnVuY3Rpb24pCiAgICAgICAgICAgOCAgIDElICAtIGV2YWwK
ICAgICAgICAgICA1ICAgMSUgICAtIGVnbG90LS1tb2RlLWxpbmUtZm9ybWF0CiAgICAgICAgICAg
MyAgIDAlICAgIC0gZWdsb3QtcHJvamVjdC1uaWNrbmFtZQogICAgICAgICAgIDEgICAwJSAgICAg
ICBnZXRoYXNoCiAgICAgICAgICAgMSAgIDAlICAgICAgIGNsLXR5cGUtb2YKICAgICAgICAgICAx
ICAgMCUgICAgICAgYXBwbHkKICAgICAgICAgICAxICAgMCUgICAgLSBlZ2xvdC0tcHJvZ3Jlc3Mt
cmVwb3J0ZXJzCiAgICAgICAgICAgMSAgIDAlICAgICAtIGFwcGx5CiAgICAgICAgICAgMSAgIDAl
ICAgICAgICAjPGNvbXBpbGVkLWZ1bmN0aW9uIENDMz4KICAgICAgICAgICAyICAgMCUgICAtIGlm
CiAgICAgICAgICAgMiAgIDAlICAgICAgZnJhbWUtcGFyYW1ldGVyCiAgICAgICAgICAgMSAgIDAl
ICAgLSBmbHltYWtlLS1tb2RlLWxpbmUtZXhjZXB0aW9uCiAgICAgICAgICAgMSAgIDAlICAgIC0g
Zmx5bWFrZS1yZXBvcnRpbmctYmFja2VuZHMKICAgICAgICAgICAxICAgMCUgICAgICAgY2FsbGVk
LWludGVyYWN0aXZlbHktcAogICAgICAgICAgODUgIDE3JSAtICM8Y29tcGlsZWQtZnVuY3Rpb24g
RkI4PgogICAgICAgICAgNzQgIDE1JSAgICBuYXRpdmUtZWxpc3AtbG9hZAogICAgICAgICAgIDcg
ICAxJSAgLSBjb21wLXJ1bi1hc3luYy13b3JrZXJzCiAgICAgICAgICAgMyAgIDAlICAgLSBtYXBj
YXIKICAgICAgICAgICAzICAgMCUgICAgICBwcmluMS10by1zdHJpbmcKICAgICAgICAgICAyICAg
MCUgICAtIGZpbGUtbmFtZS1iYXNlCiAgICAgICAgICAgMSAgIDAlICAgICAgZmlsZS1uYW1lLXNh
bnMtZXh0ZW5zaW9uCiAgICAgICAgICAgMSAgIDAlICAgLSB3cml0ZS1yZWdpb24KICAgICAgICAg
ICAxICAgMCUgICAgLSBzZWxlY3Qtc2FmZS1jb2Rpbmctc3lzdGVtCiAgICAgICAgICAgMSAgIDAl
ICAgICAtIGZpbmQtYXV0by1jb2RpbmcKICAgICAgICAgICAxICAgMCUgICAgICAgIGF1dG8tY29k
aW5nLWFsaXN0LWxvb2t1cAogICAgICAgICAgIDEgICAwJSAgICAgbWFrZS1wcm9jZXNzCiAgICAg
ICAgICAgMiAgIDAlICAgIGNvbXAtZWwtdG8tZWxuLWZpbGVuYW1lCiAgICAgICAgICAgMSAgIDAl
ICAgIGRlbGV0ZS1maWxlCiAgICAgICAgICAgMSAgIDAlICAgIGNvbXAtYWNjZXB0LWFuZC1wcm9j
ZXNzLWFzeW5jLW91dHB1dAogICAgICAgICAgNjcgIDE0JSAtIGNvbW1hbmQtZXhlY3V0ZQogICAg
ICAgICAgNjUgIDEzJSAgLSBieXRlLWNvZGUKICAgICAgICAgIDY1ICAxMyUgICAtIHJlYWQtZXh0
ZW5kZWQtY29tbWFuZAogICAgICAgICAgNjUgIDEzJSAgICAtIHJlYWQtZXh0ZW5kZWQtY29tbWFu
ZC0xCiAgICAgICAgICA2NSAgMTMlICAgICAtIGNvbXBsZXRpbmctcmVhZC1kZWZhdWx0CiAgICAg
ICAgICA2NSAgMTMlICAgICAgLSBhcHBseQogICAgICAgICAgNjUgIDEzJSAgICAgICAtIHZlcnRp
Y28tLWFkdmljZQogICAgICAgICAgNjUgIDEzJSAgICAgICAgLSBhcHBseQogICAgICAgICAgNjUg
IDEzJSAgICAgICAgIC0gIzxzdWJyLW5hdGl2ZS1lbGlzcCBjb21wbGV0aW5nLXJlYWQtZGVmYXVs
dD4KICAgICAgICAgIDE5ICAgMyUgICAgICAgICAgLSB2ZXJ0aWNvLS1leGhpYml0CiAgICAgICAg
ICAxMyAgIDIlICAgICAgICAgICAtIHZlcnRpY28tLXVwZGF0ZQogICAgICAgICAgMTMgICAyJSAg
ICAgICAgICAgIC0gdmVydGljby0tcmVjb21wdXRlCiAgICAgICAgICAxMSAgIDIlICAgICAgICAg
ICAgIC0gdmVydGljby0tZmlsdGVyLWNvbXBsZXRpb25zCiAgICAgICAgICAxMSAgIDIlICAgICAg
ICAgICAgICAtIGNvbXBsZXRpb24tYWxsLWNvbXBsZXRpb25zCiAgICAgICAgICAxMSAgIDIlICAg
ICAgICAgICAgICAgLSBjb21wbGV0aW9uLS1udGgtY29tcGxldGlvbgogICAgICAgICAgMTEgICAy
JSAgICAgICAgICAgICAgICAtIHNlcS1zb21lCiAgICAgICAgICAxMSAgIDIlICAgICAgICAgICAg
ICAgICAtIHNlcS1kbwogICAgICAgICAgMTEgICAyJSAgICAgICAgICAgICAgICAgIC0gbWFwYwog
ICAgICAgICAgMTEgICAyJSAgICAgICAgICAgICAgICAgICAtICM8Y29tcGlsZWQtZnVuY3Rpb24g
RDg4PgogICAgICAgICAgMTEgICAyJSAgICAgICAgICAgICAgICAgICAgLSAjPGNvbXBpbGVkLWZ1
bmN0aW9uIERCQj4KICAgICAgICAgIDExICAgMiUgICAgICAgICAgICAgICAgICAgICAtIG9yZGVy
bGVzcy1hbGwtY29tcGxldGlvbnMKICAgICAgICAgIDExICAgMiUgICAgICAgICAgICAgICAgICAg
ICAgLSBvcmRlcmxlc3MtLWZpbHRlcgogICAgICAgICAgMTEgICAyJSAgICAgICAgICAgICAgICAg
ICAgICAgLSAjPHN1YnItbmF0aXZlLWVsaXNwIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYy
NjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzU2PgogICAgICAgICAgMTEgICAyJSAgICAgICAgICAgICAg
ICAgICAgICAgIC0gY29tcGxldGUtd2l0aC1hY3Rpb24KICAgICAgICAgIDExICAgMiUgICAgICAg
ICAgICAgICAgICAgICAgICAgLSBhbGwtY29tcGxldGlvbnMKICAgICAgICAgICA0ICAgMCUgICAg
ICAgICAgICAgICAgICAgICAgICAgIC0gIzxjb21waWxlZC1mdW5jdGlvbiBERTY+CiAgICAgICAg
ICAgMiAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9u
IDg0RT4KICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21t
YW5kcAogICAgICAgICAgIDIgICAwJSAgICAgICAgICAgICAtIHZlcnRpY28tc29ydC1oaXN0b3J5
LWxlbmd0aC1hbHBoYQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgLSAjPHN1YnItbmF0
aXZlLWVsaXNwIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFt
YmRhXzE0PgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgIzxwcmltaXRpdmUtZnVu
Y3Rpb24gc3RyaW5nLWxlc3NwPgogICAgICAgICAgIDMgICAwJSAgICAgICAgICAgLSB2ZXJ0aWNv
LS1hcnJhbmdlLWNhbmRpZGF0ZXMKICAgICAgICAgICAzICAgMCUgICAgICAgICAgICAtIHZlcnRp
Y28tLWFmZml4YXRlCiAgICAgICAgICAgMyAgIDAlICAgICAgICAgICAgIC0gcmVhZC1leHRlbmRl
ZC1jb21tYW5kLS1hZmZpeGF0aW9uCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICM8
c3Vici1uYXRpdmUtZWxpc3AgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255
bW91c19sYW1iZGFfNjE+CiAgICAgICAgICAgMyAgIDAlICAgICAgICAgICAtIHZlcnRpY28tLWRp
c3BsYXktY2FuZGlkYXRlcwogICAgICAgICAgIDIgICAwJSAgICAgICAgICAgIC0gdmVydGljby0t
cmVzaXplLXdpbmRvdwogICAgICAgICAgIDIgICAwJSAgICAgICAgICAgICAgIHdpbmRvdy10ZXh0
LXBpeGVsLXNpemUKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgIG1vdmUtb3ZlcmxheQog
ICAgICAgICAgMTkgICAzJSAgICAgICAgICAtICM8Y29tcGlsZWQtZnVuY3Rpb24gMTJBPgogICAg
ICAgICAgMTkgICAzJSAgICAgICAgICAgICBuYXRpdmUtZWxpc3AtbG9hZAogICAgICAgICAgMTgg
ICAzJSAgICAgICAgICAgIHJlZGlzcGxheV9pbnRlcm5hbCAoQyBmdW5jdGlvbikKICAgICAgICAg
ICAyICAgMCUgIC0gZnVuY2FsbC1pbnRlcmFjdGl2ZWx5CiAgICAgICAgICAgMiAgIDAlICAgLSBm
aWxlLW5vdGlmeS1oYW5kbGUtZXZlbnQKICAgICAgICAgICAyICAgMCUgICAgLSBmaWxlLW5vdGlm
eS0tY2FsbGJhY2staW5vdGlmeQogICAgICAgICAgIDIgICAwJSAgICAgLSBmaWxlLW5vdGlmeS0t
aGFuZGxlLWV2ZW50CiAgICAgICAgICAgMiAgIDAlICAgICAgLSBmaWxlLW5vdGlmeS0tY2FsbC1o
YW5kbGVyCiAgICAgICAgICAgMiAgIDAlICAgICAgIC0gIzxjb21waWxlZC1mdW5jdGlvbiA3OUY+
CiAgICAgICAgICAgMSAgIDAlICAgICAgICAtICM8Y29tcGlsZWQtZnVuY3Rpb24gMjY2PgogICAg
ICAgICAgIDEgICAwJSAgICAgICAgIC0gIzxjb21waWxlZC1mdW5jdGlvbiAwOEY+CiAgICAgICAg
ICAgMSAgIDAlICAgICAgICAgICAgcmUtc2VhcmNoLWZvcndhcmQKICAgICAgICAgICAxICAgMCUg
ICAgICAgIC0gZWdsb3QtcGF0aC10by11cmkKICAgICAgICAgICAxICAgMCUgICAgICAgICAtIGZp
bGUtdHJ1ZW5hbWUKICAgICAgICAgICAxICAgMCUgICAgICAgICAgLSBmaWxlLXRydWVuYW1lCiAg
ICAgICAgICAgMSAgIDAlICAgICAgICAgICAtIGZpbGUtdHJ1ZW5hbWUKICAgICAgICAgICAxICAg
MCUgICAgICAgICAgICAgIGZpbGUtdHJ1ZW5hbWUKICAgICAgICAgIDExICAgMiUgLSBhcHBseQog
ICAgICAgICAgMTEgICAyJSAgICBuYXRpdmUtLWNvbXBpbGUtYXN5bmMKICAgICAgICAgICA2ICAg
MSUgLSBqc29ucnBjLS1wcm9jZXNzLWZpbHRlcgogICAgICAgICAgIDQgICAwJSAgLSBqc29ucnBj
LS1qc29uLXJlYWQKICAgICAgICAgICA0ICAgMCUgICAgIGpzb24tcGFyc2UtYnVmZmVyCiAgICAg
ICAgICAgMSAgIDAlICAtICM8Y29tcGlsZWQtZnVuY3Rpb24gNEQ2PgogICAgICAgICAgIDEgICAw
JSAgIC0gdGltZXItc2V0LXRpbWUKICAgICAgICAgICAxICAgMCUgICAgLSB0aW1lci0tdGltZS1z
ZXR0ZXIKICAgICAgICAgICAxICAgMCUgICAgICAgdGltZXJwCiAgICAgICAgICAgMSAgIDAlICAt
IGpzb25ycGMtLWV4cGVjdGVkLWJ5dGVzCiAgICAgICAgICAgMSAgIDAlICAgICBnZXRoYXNoCiAg
ICAgICAgICAgMiAgIDAlICAgaW50ZXJuYWwtZGVmYXVsdC1wcm9jZXNzLWZpbHRlcgogICAgICAg
ICAgIDEgICAwJSArIC4uLgogICAgICAgICAgIDEgICAwJSArIGVsZG9jLXByZS1jb21tYW5kLXJl
ZnJlc2gtZWNoby1hcmVhCg==
--=-=-=
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=emacs-30-new-file-truename
Content-Transfer-Encoding: base64

ICAgICAgICAgMTA1ICA0NyUgLSByZWRpc3BsYXlfaW50ZXJuYWwgKEMgZnVuY3Rpb24pCiAgICAg
ICAgICAgMiAgIDAlICAtIHJlZGlzcGxheS0tcHJlLXJlZGlzcGxheS1mdW5jdGlvbnMKICAgICAg
ICAgICAxICAgMCUgICAgIHJ1bi1ob29rLXdpdGgtYXJncwogICAgICAgICAgIDEgICAwJSAgLSBl
dmFsCiAgICAgICAgICAgMSAgIDAlICAgLSBpZgogICAgICAgICAgIDEgICAwJSAgICAgIGZyYW1l
LXBhcmFtZXRlcgogICAgICAgICAgNTUgIDI1JSAtIGNvbW1hbmQtZXhlY3V0ZQogICAgICAgICAg
NTQgIDI0JSAgLSBieXRlLWNvZGUKICAgICAgICAgIDU0ICAyNCUgICAtIHJlYWQtZXh0ZW5kZWQt
Y29tbWFuZAogICAgICAgICAgNTQgIDI0JSAgICAtIHJlYWQtZXh0ZW5kZWQtY29tbWFuZC0xCiAg
ICAgICAgICA1NCAgMjQlICAgICAtIGNvbXBsZXRpbmctcmVhZC1kZWZhdWx0CiAgICAgICAgICA1
NCAgMjQlICAgICAgLSBhcHBseQogICAgICAgICAgNTQgIDI0JSAgICAgICAtIHZlcnRpY28tLWFk
dmljZQogICAgICAgICAgNTQgIDI0JSAgICAgICAgLSBhcHBseQogICAgICAgICAgNTQgIDI0JSAg
ICAgICAgIC0gIzxzdWJyLW5hdGl2ZS1lbGlzcCBjb21wbGV0aW5nLXJlYWQtZGVmYXVsdD4KICAg
ICAgICAgIDE5ICAgOCUgICAgICAgICAgLSB2ZXJ0aWNvLS1leGhpYml0CiAgICAgICAgICAxMiAg
IDUlICAgICAgICAgICAtIHZlcnRpY28tLXVwZGF0ZQogICAgICAgICAgMTIgICA1JSAgICAgICAg
ICAgIC0gdmVydGljby0tcmVjb21wdXRlCiAgICAgICAgICAxMSAgIDUlICAgICAgICAgICAgIC0g
dmVydGljby0tZmlsdGVyLWNvbXBsZXRpb25zCiAgICAgICAgICAxMSAgIDUlICAgICAgICAgICAg
ICAtIGNvbXBsZXRpb24tYWxsLWNvbXBsZXRpb25zCiAgICAgICAgICAxMSAgIDUlICAgICAgICAg
ICAgICAgLSBjb21wbGV0aW9uLS1udGgtY29tcGxldGlvbgogICAgICAgICAgMTEgICA1JSAgICAg
ICAgICAgICAgICAtIHNlcS1zb21lCiAgICAgICAgICAxMSAgIDUlICAgICAgICAgICAgICAgICAt
IHNlcS1kbwogICAgICAgICAgMTEgICA1JSAgICAgICAgICAgICAgICAgIC0gbWFwYwogICAgICAg
ICAgMTEgICA1JSAgICAgICAgICAgICAgICAgICAtICM8Y29tcGlsZWQtZnVuY3Rpb24gMjEwPgog
ICAgICAgICAgMTEgICA1JSAgICAgICAgICAgICAgICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9u
IDI3OT4KICAgICAgICAgIDExICAgNSUgICAgICAgICAgICAgICAgICAgICAtIG9yZGVybGVzcy1h
bGwtY29tcGxldGlvbnMKICAgICAgICAgIDExICAgNSUgICAgICAgICAgICAgICAgICAgICAgLSBv
cmRlcmxlc3MtLWZpbHRlcgogICAgICAgICAgMTEgICA1JSAgICAgICAgICAgICAgICAgICAgICAg
LSAjPHN1YnItbmF0aXZlLWVsaXNwIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9h
bm9ueW1vdXNfbGFtYmRhXzU2PgogICAgICAgICAgMTEgICA1JSAgICAgICAgICAgICAgICAgICAg
ICAgIC0gY29tcGxldGUtd2l0aC1hY3Rpb24KICAgICAgICAgIDExICAgNSUgICAgICAgICAgICAg
ICAgICAgICAgICAgLSBhbGwtY29tcGxldGlvbnMKICAgICAgICAgICA4ICAgMyUgICAgICAgICAg
ICAgICAgICAgICAgICAgIC0gIzxjb21waWxlZC1mdW5jdGlvbiA5Q0I+CiAgICAgICAgICAgNCAg
IDElICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIDVDMD4K
ICAgICAgICAgICAzICAgMSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kcAog
ICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi10by1s
aXN0CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgIC0gdmVydGljby1zb3J0LWhpc3Rvcnkt
bGVuZ3RoLWFscGhhCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAtICM8c3Vici1uYXRp
dmUtZWxpc3AgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1i
ZGFfMTQ+CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAjPHByaW1pdGl2ZS1mdW5j
dGlvbiBzdHJpbmctbGVzc3A+CiAgICAgICAgICAgNSAgIDIlICAgICAgICAgICAtIHZlcnRpY28t
LWFycmFuZ2UtY2FuZGlkYXRlcwogICAgICAgICAgIDQgICAxJSAgICAgICAgICAgIC0gdmVydGlj
by0tYWZmaXhhdGUKICAgICAgICAgICA0ICAgMSUgICAgICAgICAgICAgLSByZWFkLWV4dGVuZGVk
LWNvbW1hbmQtLWFmZml4YXRpb24KICAgICAgICAgICAzICAgMSUgICAgICAgICAgICAgICAgIzxz
dWJyLW5hdGl2ZS1lbGlzcCBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnlt
b3VzX2xhbWJkYV82MT4KICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAtIHZlcnRpY28tLXdp
bmRvdy13aWR0aAogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgIGdldC1idWZmZXItd2lu
ZG93LWxpc3QKICAgICAgICAgICAxICAgMCUgICAgICAgICAgIC0gdmVydGljby0tZGlzcGxheS1j
b3VudAogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgdmVydGljby0tZm9ybWF0LWNvdW50
CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAtIHZlcnRpY28tLWRpc3BsYXktY2FuZGlkYXRl
cwogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgIC0gdmVydGljby0tcmVzaXplLXdpbmRvdwog
ICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgIHdpbmRvdy10ZXh0LXBpeGVsLXNpemUKICAg
ICAgICAgIDE4ICAgOCUgICAgICAgICAgLSByZWRpc3BsYXlfaW50ZXJuYWwgKEMgZnVuY3Rpb24p
CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgIHJlZGlzcGxheS0tcHJlLXJlZGlzcGxheS1m
dW5jdGlvbnMKICAgICAgICAgICAxICAgMCUgICAgICAgICAgLSB0aW1lci1ldmVudC1oYW5kbGVy
CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAtIGFwcGx5CiAgICAgICAgICAgMSAgIDAlICAg
ICAgICAgICAgLSBzaG93LXBhcmVuLWZ1bmN0aW9uCiAgICAgICAgICAgMSAgIDAlICAgICAgICAg
ICAgIC0gc2hvdy1wYXJlbi0tZGVmYXVsdAogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAg
ICBzaG93LXBhcmVuLS1sb2NhdGUtbmVhci1wYXJlbgogICAgICAgICAgIDEgICAwJSAgLSBmdW5j
YWxsLWludGVyYWN0aXZlbHkKICAgICAgICAgICAxICAgMCUgICAgIGV4ZWN1dGUtZXh0ZW5kZWQt
Y29tbWFuZAogICAgICAgICAgNTMgIDI0JSAtIHRpbWVyLWV2ZW50LWhhbmRsZXIKICAgICAgICAg
IDUzICAyNCUgIC0gYXBwbHkKICAgICAgICAgIDM3ICAxNiUgICAtICM8Y29tcGlsZWQtZnVuY3Rp
b24gQTM0PgogICAgICAgICAgMzYgIDE2JSAgICAtIGpzb25ycGMtY29ubmVjdGlvbi1yZWNlaXZl
CiAgICAgICAgICAzNiAgMTYlICAgICAtIGpzb25ycGMtLWNvbnRpbnVlCiAgICAgICAgICAzNCAg
MTUlICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIDFBNj4KICAgICAgICAgIDMxICAxNCUgICAg
ICAgLSBlZ2xvdC0taG92ZXItaW5mbwogICAgICAgICAgMzEgIDE0JSAgICAgICAgLSBlZ2xvdC0t
Zm9ybWF0LW1hcmt1cAogICAgICAgICAgMjAgICA5JSAgICAgICAgIC0gZ2ZtLXZpZXctbW9kZQog
ICAgICAgICAgIDUgICAyJSAgICAgICAgICAtIGJ5dGUtY29kZQogICAgICAgICAgIDQgICAxJSAg
ICAgICAgICAgICByZXF1aXJlCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAtIGN1c3RvbS1k
ZWNsYXJlLXZhcmlhYmxlCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgLSBjdXN0b20taGFu
ZGxlLWtleXdvcmQKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICBjdXN0b20tYWRkLXRv
LWdyb3VwCiAgICAgICAgICAgNCAgIDElICAgICAgICAgIC0gZ2ZtLW1vZGUKICAgICAgICAgICA0
ICAgMSUgICAgICAgICAgIC0gbWFya2Rvd24tbW9kZQogICAgICAgICAgIDQgICAxJSAgICAgICAg
ICAgIC0gc3ludGF4LXByb3BlcnRpemUKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAgLSBt
YXJrZG93bi1zeW50YXgtcHJvcGVydGl6ZQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAg
LSBtYXJrZG93bi1zeW50YXgtcHJvcGVydGl6ZS1saXN0LWl0ZW1zCiAgICAgICAgICAgMSAgIDAl
ICAgICAgICAgICAgICAgLSBtYXJrZG93bi0tY3VyLWxpc3QtaXRlbS1ib3VuZHMKICAgICAgICAg
ICAxICAgMCUgICAgICAgICAgICAgICAgICBtYXJrZG93bi1jdXItbGlzdC1pdGVtLWVuZAogICAg
ICAgICAgIDEgICAwJSAgICAgICAgICAgICAgLSBtYXJrZG93bi1zeW50YXgtcHJvcGVydGl6ZS1w
cmUtYmxvY2tzCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgLSBtYXJrZG93bi1jYWxj
dWxhdGUtbGlzdC1sZXZlbHMKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICBtYXJr
ZG93bi1zZWFyY2gtYmFja3dhcmQtYmFzZWxpbmUKICAgICAgICAgICAyICAgMCUgICAgICAgICAg
ICAgICAjPGNvbXBpbGVkLWZ1bmN0aW9uIEJBMj4KICAgICAgICAgICAzICAgMSUgICAgICAgICAg
ICByZXF1aXJlCiAgICAgICAgICAgMyAgIDElICAgICAgICAgIC0gcmVhZC1vbmx5LW1vZGUKICAg
ICAgICAgICAzICAgMSUgICAgICAgICAgICAgdmlldy1tb2RlLWVudGVyCiAgICAgICAgICAgMSAg
IDAlICAgICAgICAgIC0gY3VzdG9tLWRlY2xhcmUtZmFjZQogICAgICAgICAgIDEgICAwJSAgICAg
ICAgICAgLSBmYWNlLXNwZWMtc2V0CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgLSBtYWtl
LWVtcHR5LWZhY2UKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgLSBtYWtlLWZhY2UKICAg
ICAgICAgICAxICAgMCUgICAgICAgICAgICAgIC0gbWFrZS1mYWNlLXgtcmVzb3VyY2UtaW50ZXJu
YWwKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAtIHNldC1mYWNlLWF0dHJpYnV0ZXMt
ZnJvbS1yZXNvdXJjZXMKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgLSBzZXQtZmFj
ZS1hdHRyaWJ1dGUtZnJvbS1yZXNvdXJjZQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAg
ICAgICBpbnRlcm5hbC1mYWNlLXgtZ2V0LXJlc291cmNlCiAgICAgICAgICAgNiAgIDIlICAgICAg
ICAgLSBmb250LWxvY2stZW5zdXJlCiAgICAgICAgICAgNiAgIDIlICAgICAgICAgIC0gIzxjb21w
aWxlZC1mdW5jdGlvbiBDNUU+CiAgICAgICAgICAgNiAgIDIlICAgICAgICAgICAtIGZvbnQtbG9j
ay1mb250aWZ5LXJlZ2lvbgogICAgICAgICAgIDYgICAyJSAgICAgICAgICAgIC0gZm9udC1sb2Nr
LWRlZmF1bHQtZm9udGlmeS1yZWdpb24KICAgICAgICAgICA1ICAgMiUgICAgICAgICAgICAgLSBm
b250LWxvY2stZm9udGlmeS1rZXl3b3Jkcy1yZWdpb24KICAgICAgICAgICAxICAgMCUgICAgICAg
ICAgICAgIC0gbWFya2Rvd24tbWF0Y2gtY29kZQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAg
ICAgIC0gbWFya2Rvd24tc2VhcmNoLXVudGlsLWNvbmRpdGlvbgogICAgICAgICAgIDEgICAwJSAg
ICAgICAgICAgICAgICAtICM8Y29tcGlsZWQtZnVuY3Rpb24gRUNBPgogICAgICAgICAgIDEgICAw
JSAgICAgICAgICAgICAgICAgLSBtYXJrZG93bi1jb2RlLWJsb2NrLWF0LXBvcwogICAgICAgICAg
IDEgICAwJSAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tZ2V0LWVuY2xvc2luZy1mZW5jZWQt
YmxvY2stY29uc3RydWN0CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAtIG1hcmtkb3du
LWZvbnRpZnktcGxhaW4tdXJpcwogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgIC0gbWFy
a2Rvd24tbWF0Y2gtcGxhaW4tdXJpcwogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAt
IG1hcmtkb3duLW1hdGNoLWlubGluZS1nZW5lcmljCiAgICAgICAgICAgMSAgIDAlICAgICAgICAg
ICAgICAgICAgIG1hcmtkb3duLW1hdGNoLWlubGluZS1nZW5lcmljCiAgICAgICAgICAgMSAgIDAl
ICAgICAgICAgICAgICAtIG1hcmtkb3duLWZvbnRpZnktaW5saW5lLWxpbmtzCiAgICAgICAgICAg
MSAgIDAlICAgICAgICAgICAgICAgLSBtYXJrZG93bi1tYXRjaC1nZW5lcmljLWxpbmtzCiAgICAg
ICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgbWFya2Rvd24tZW5kLW9mLXRleHQtYmxvY2sK
ICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgIC0gbWFya2Rvd24tbWF0Y2gtYm9sZAogICAg
ICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgbWFya2Rvd24tbWF0Y2gtaW5saW5lLWdlbmVy
aWMKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgLSBmb250LWxvY2stZm9udGlmeS1zeW50
YWN0aWNhbGx5LXJlZ2lvbgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgLSB0cmVlc2l0
LWZvbnQtbG9jay1mb250aWZ5LXJlZ2lvbgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAg
ICAgdHJlZXNpdC0tZm9udC1sb2NrLWZvbnRpZnktcmVnaW9uLTEKICAgICAgICAgICAyICAgMCUg
ICAgICAgICAtIGphdmEtdHMtbW9kZQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAtIHByb2ct
bW9kZQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgLSBtYWdpdC1hdXRvLXJldmVydC1tb2Rl
LWNtaGgKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgIGFkZC1ob29rCiAgICAgICAgICAg
MSAgIDAlICAgICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIDg2Nz4KICAgICAgICAgICAxICAg
MCUgICAgICAgICAgICBraWxsLWJ1ZmZlcgogICAgICAgICAgIDEgICAwJSAgICAgICAgIC0gc3Ry
aW5nLXRyaW0KICAgICAgICAgICAxICAgMCUgICAgICAgICAgICBzdHJpbmctdHJpbS1yaWdodAog
ICAgICAgICAgIDMgICAxJSAgICAgICAtICM8Y29tcGlsZWQtZnVuY3Rpb24gMTUwPgogICAgICAg
ICAgIDMgICAxJSAgICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIEIwQz4KICAgICAgICAgICAz
ICAgMSUgICAgICAgICAtIHJ1bi1ob29rLXdpdGgtYXJncwogICAgICAgICAgIDIgICAwJSAgICAg
ICAgICAtIGVsZG9jLWRpc3BsYXktaW4tZWNoby1hcmVhCiAgICAgICAgICAgMiAgIDAlICAgICAg
ICAgICAtIGVsZG9jLS1tZXNzYWdlCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgLSBlbGRv
Yy1taW5pYnVmZmVyLW1lc3NhZ2UKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAgLSBhcHBs
eQogICAgICAgICAgIDIgICAwJSAgICAgICAgICAgICAgLSBtZXNzYWdlCiAgICAgICAgICAgMiAg
IDAlICAgICAgICAgICAgICAgICByZWRpc3BsYXlfaW50ZXJuYWwgKEMgZnVuY3Rpb24pCiAgICAg
ICAgICAgMSAgIDAlICAgICAgICAgIC0gZWxkb2MtZGlzcGxheS1pbi1idWZmZXIKICAgICAgICAg
ICAxICAgMCUgICAgICAgICAgIC0gZWxkb2MtLWZvcm1hdC1kb2MtYnVmZmVyCiAgICAgICAgICAg
MSAgIDAlICAgICAgICAgICAgLSBzcGVjaWFsLW1vZGUKICAgICAgICAgICAxICAgMCUgICAgICAg
ICAgICAgLSBnbG9iYWwtcHJldHRpZnktc3ltYm9scy1tb2RlLWNtaGgKICAgICAgICAgICAxICAg
MCUgICAgICAgICAgICAgICAgYWRkLWhvb2sKICAgICAgICAgICAyICAgMCUgICAgICAtICM8Y29t
cGlsZWQtZnVuY3Rpb24gNzUyPgogICAgICAgICAgIDEgICAwJSAgICAgICAgIG1hcGMKICAgICAg
ICAgICAxICAgMCUgICAgICAgLSBtYXBjYXIKICAgICAgICAgICAxICAgMCUgICAgICAgIC0gIzxj
b21waWxlZC1mdW5jdGlvbiA1MDU+CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgLSBlZ2xvdC1y
YW5nZS1yZWdpb24KICAgICAgICAgICAxICAgMCUgICAgICAgICAgLSBlZ2xvdC0tbHNwLXBvc2l0
aW9uLXRvLXBvaW50CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgIGVnbG90LW1vdmUtdG8t
dXRmLTE2LWxpbmVwb3MKICAgICAgICAgICAxICAgMCUgICAgICBnZW5lcmF0ZS1uZXctYnVmZmVy
CiAgICAgICAgICAxNiAgIDclICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIEYxRD4KICAgICAgICAg
IDE2ICAgNyUgICAgLSBlbGRvYy1wcmludC1jdXJyZW50LXN5bWJvbC1pbmZvCiAgICAgICAgICAx
NiAgIDclICAgICAtIGVsZG9jLS1pbnZva2Utc3RyYXRlZ3kKICAgICAgICAgIDE2ICAgNyUgICAg
ICAtIGVsZG9jLWRvY3VtZW50YXRpb24tY29tcG9zZQogICAgICAgICAgMTMgICA1JSAgICAgICAt
IGVnbG90LWhvdmVyLWVsZG9jLWZ1bmN0aW9uCiAgICAgICAgICAgNSAgIDIlICAgICAgICAtIGVn
bG90LS1oaWdobGlnaHQtcGlnZ3liYWNrCiAgICAgICAgICAgNCAgIDElICAgICAgICAgLSBqc29u
cnBjLWFzeW5jLXJlcXVlc3QKICAgICAgICAgICA0ICAgMSUgICAgICAgICAgLSBqc29ucnBjLS1h
c3luYy1yZXF1ZXN0LTEKICAgICAgICAgICA0ICAgMSUgICAgICAgICAgIC0ganNvbnJwYy1jb25u
ZWN0aW9uLXNlbmQKICAgICAgICAgICA0ICAgMSUgICAgICAgICAgICAtIGFwcGx5CiAgICAgICAg
ICAgNCAgIDElICAgICAgICAgICAgIC0gIzxjb21waWxlZC1mdW5jdGlvbiA4MzU+CiAgICAgICAg
ICAgMiAgIDAlICAgICAgICAgICAgICAtIGpzb25ycGMtLWV2ZW50CiAgICAgICAgICAgMiAgIDAl
ICAgICAgICAgICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIDFFMz4KICAgICAgICAgICAyICAg
MCUgICAgICAgICAgICAgICAgLSBhcHBseQogICAgICAgICAgIDIgICAwJSAgICAgICAgICAgICAg
ICAgICBqc29ucnBjLS1sb2ctZXZlbnQKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAg
cHJvY2Vzcy1zZW5kLXN0cmluZwogICAgICAgICAgIDEgICAwJSAgICAgICAgIC0gZWdsb3QtLVRl
eHREb2N1bWVudFBvc2l0aW9uUGFyYW1zCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgIC0gZWds
b3QtLVRleHREb2N1bWVudElkZW50aWZpZXIKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAg
ZWdsb3QtcGF0aC10by11cmkKICAgICAgICAgICA0ICAgMSUgICAgICAgIC0ganNvbnJwYy1hc3lu
Yy1yZXF1ZXN0CiAgICAgICAgICAgNCAgIDElICAgICAgICAgLSBqc29ucnBjLS1hc3luYy1yZXF1
ZXN0LTEKICAgICAgICAgICAyICAgMCUgICAgICAgICAgLSBqc29ucnBjLWNvbm5lY3Rpb24tc2Vu
ZAogICAgICAgICAgIDIgICAwJSAgICAgICAgICAgLSBhcHBseQogICAgICAgICAgIDIgICAwJSAg
ICAgICAgICAgIC0gIzxjb21waWxlZC1mdW5jdGlvbiA4MzU+CiAgICAgICAgICAgMiAgIDAlICAg
ICAgICAgICAgIC0ganNvbnJwYy0tZXZlbnQKICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAg
IC0gIzxjb21waWxlZC1mdW5jdGlvbiAyQTA+CiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAg
ICAgLSBhcHBseQogICAgICAgICAgIDIgICAwJSAgICAgICAgICAgICAgICAgIGpzb25ycGMtLWxv
Zy1ldmVudAogICAgICAgICAgIDQgICAxJSAgICAgICAgLSBlZ2xvdC0tVGV4dERvY3VtZW50UG9z
aXRpb25QYXJhbXMKICAgICAgICAgICA0ICAgMSUgICAgICAgICAtIGVnbG90LS1UZXh0RG9jdW1l
bnRJZGVudGlmaWVyCiAgICAgICAgICAgNCAgIDElICAgICAgICAgIC0gZWdsb3QtcGF0aC10by11
cmkKICAgICAgICAgICAzICAgMSUgICAgICAgICAgICAgdXJsLWdlbmVyaWMtcGFyc2UtdXJsCiAg
ICAgICAgICAgMyAgIDElICAgICAgIC0gZWdsb3Qtc2lnbmF0dXJlLWVsZG9jLWZ1bmN0aW9uCiAg
ICAgICAgICAgMiAgIDAlICAgICAgICAtIGpzb25ycGMtYXN5bmMtcmVxdWVzdAogICAgICAgICAg
IDIgICAwJSAgICAgICAgIC0ganNvbnJwYy0tYXN5bmMtcmVxdWVzdC0xCiAgICAgICAgICAgMSAg
IDAlICAgICAgICAgIC0ganNvbnJwYy1jb25uZWN0aW9uLXNlbmQKICAgICAgICAgICAxICAgMCUg
ICAgICAgICAgIC0gYXBwbHkKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAtICM8Y29tcGls
ZWQtZnVuY3Rpb24gODM1PgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAtIGpzb25ycGMt
LWpzb24tZW5jb2RlCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgIGpzb24tc2VyaWFs
aXplCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgIC0gIzxjb21waWxlZC1mdW5jdGlvbiBGRTg+
CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAtIHJ1bi13aXRoLXRpbWVyCiAgICAgICAgICAg
MSAgIDAlICAgICAgICAgICAgLSBydW4tYXQtdGltZQogICAgICAgICAgIDEgICAwJSAgICAgICAg
ICAgICAtIHRpbWVyLWFjdGl2YXRlCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgIHRp
bWVyLS1hY3RpdmF0ZQogICAgICAgICAgIDEgICAwJSAgICAgICAgLSBlZ2xvdC0tVGV4dERvY3Vt
ZW50UG9zaXRpb25QYXJhbXMKICAgICAgICAgICAxICAgMCUgICAgICAgICAtIGVnbG90LS1UZXh0
RG9jdW1lbnRJZGVudGlmaWVyCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgZWdsb3QtcGF0
aC10by11cmkKICAgICAgICAgICA2ICAgMiUgLSBlbGRvYy1wcmUtY29tbWFuZC1yZWZyZXNoLWVj
aG8tYXJlYQogICAgICAgICAgIDYgICAyJSAgLSBlbGRvYy0tbWVzc2FnZQogICAgICAgICAgIDYg
ICAyJSAgIC0gZWxkb2MtbWluaWJ1ZmZlci1tZXNzYWdlCiAgICAgICAgICAgNiAgIDIlICAgIC0g
YXBwbHkKICAgICAgICAgICA2ICAgMiUgICAgICAgbWVzc2FnZQogICAgICAgICAgIDEgICAwJSAg
IGNvcmZ1LS1hdXRvLXBvc3QtY29tbWFuZAogICAgICAgICAgIDAgICAwJSAgIC4uLgo=
--=-=-=
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=emacs-Q-30-after-everything
Content-Transfer-Encoding: base64

ICAgICAgICAgMTIyICAzOSUgLSByZWRpc3BsYXlfaW50ZXJuYWwgKEMgZnVuY3Rpb24pCiAgICAg
ICAgICAgMSAgIDAlICAgIGZpbGUtcmVtb3RlLXAKICAgICAgICAgIDk3ICAzMSUgLSBjb21tYW5k
LWV4ZWN1dGUKICAgICAgICAgIDk2ICAzMCUgIC0gYnl0ZS1jb2RlCiAgICAgICAgICA5NiAgMzAl
ICAgLSByZWFkLWV4dGVuZGVkLWNvbW1hbmQKICAgICAgICAgIDk2ICAzMCUgICAgLSByZWFkLWV4
dGVuZGVkLWNvbW1hbmQtMQogICAgICAgICAgOTYgIDMwJSAgICAgLSBjb21wbGV0aW5nLXJlYWQt
ZGVmYXVsdAogICAgICAgICAgNDYgIDE0JSAgICAgICAgcmVkaXNwbGF5X2ludGVybmFsIChDIGZ1
bmN0aW9uKQogICAgICAgICAgMTYgICA1JSAgICAgIC0gY29tbWFuZC1leGVjdXRlCiAgICAgICAg
ICAxNiAgIDUlICAgICAgIC0gZnVuY2FsbC1pbnRlcmFjdGl2ZWx5CiAgICAgICAgICAxNiAgIDUl
ICAgICAgICAtIG1pbmlidWZmZXItY29tcGxldGUKICAgICAgICAgIDE1ICAgNCUgICAgICAgICAt
IGNvbXBsZXRpb24taW4tcmVnaW9uCiAgICAgICAgICAxNSAgIDQlICAgICAgICAgIC0gY29tcGxl
dGlvbi0taW4tcmVnaW9uCiAgICAgICAgICAxNSAgIDQlICAgICAgICAgICAtICM8Y29tcGlsZWQt
ZnVuY3Rpb24gRTMxPgogICAgICAgICAgMTUgICA0JSAgICAgICAgICAgIC0gYXBwbHkKICAgICAg
ICAgIDE1ICAgNCUgICAgICAgICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIDk4Mj4KICAgICAg
ICAgIDE1ICAgNCUgICAgICAgICAgICAgIC0gY29tcGxldGlvbi0taW4tcmVnaW9uLTEKICAgICAg
ICAgIDE1ICAgNCUgICAgICAgICAgICAgICAtIGNvbXBsZXRpb24tLWRvLWNvbXBsZXRpb24KICAg
ICAgICAgIDEwICAgMyUgICAgICAgICAgICAgICAgLSBjb21wbGV0aW9uLXRyeS1jb21wbGV0aW9u
CiAgICAgICAgICAxMCAgIDMlICAgICAgICAgICAgICAgICAtIGNvbXBsZXRpb24tLW50aC1jb21w
bGV0aW9uCiAgICAgICAgICAxMCAgIDMlICAgICAgICAgICAgICAgICAgLSBzZXEtc29tZQogICAg
ICAgICAgMTAgICAzJSAgICAgICAgICAgICAgICAgICAtIHNlcS1kbwogICAgICAgICAgMTAgICAz
JSAgICAgICAgICAgICAgICAgICAgLSBtYXBjCiAgICAgICAgICAxMCAgIDMlICAgICAgICAgICAg
ICAgICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIDM3Mz4KICAgICAgICAgIDEwICAgMyUgICAg
ICAgICAgICAgICAgICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIDFCOT4KICAgICAgICAgIDEw
ICAgMyUgICAgICAgICAgICAgICAgICAgICAgIC0gY29tcGxldGlvbi1iYXNpYy10cnktY29tcGxl
dGlvbgogICAgICAgICAgMTAgICAzJSAgICAgICAgICAgICAgICAgICAgICAgIC0gIzxzdWJyLW5h
dGl2ZS1lbGlzcCBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xh
bWJkYV81Nj4KICAgICAgICAgIDEwICAgMyUgICAgICAgICAgICAgICAgICAgICAgICAgLSBjb21w
bGV0ZS13aXRoLWFjdGlvbgogICAgICAgICAgMTAgICAzJSAgICAgICAgICAgICAgICAgICAgICAg
ICAgLSB0cnktY29tcGxldGlvbgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIzxjb21waWxlZC1mdW5jdGlvbiAzMTc+CiAgICAgICAgICAgNCAgIDElICAgICAg
ICAgICAgICAgIC0gbWluaWJ1ZmZlci1jb21wbGV0aW9uLWhlbHAKICAgICAgICAgICAyICAgMCUg
ICAgICAgICAgICAgICAgIC0gY29tcGxldGlvbi1hbGwtY29tcGxldGlvbnMKICAgICAgICAgICAy
ICAgMCUgICAgICAgICAgICAgICAgICAtIGNvbXBsZXRpb24tLW50aC1jb21wbGV0aW9uCiAgICAg
ICAgICAgMiAgIDAlICAgICAgICAgICAgICAgICAgIC0gc2VxLXNvbWUKICAgICAgICAgICAyICAg
MCUgICAgICAgICAgICAgICAgICAgIC0gc2VxLWRvCiAgICAgICAgICAgMiAgIDAlICAgICAgICAg
ICAgICAgICAgICAgLSBtYXBjCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAgICAgICAg
IC0gIzxjb21waWxlZC1mdW5jdGlvbiA3RkQ+CiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAg
ICAgICAgICAgICAtICM8Y29tcGlsZWQtZnVuY3Rpb24gNzlFPgogICAgICAgICAgIDIgICAwJSAg
ICAgICAgICAgICAgICAgICAgICAgIC0gY29tcGxldGlvbi1iYXNpYy1hbGwtY29tcGxldGlvbnMK
ICAgICAgICAgICAyICAgMCUgICAgICAgICAgICAgICAgICAgICAgICAgLSBjb21wbGV0aW9uLXBj
bS0tYWxsLWNvbXBsZXRpb25zCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAgICAgICAg
ICAgICAtICM8c3Vici1uYXRpdmUtZWxpc3AgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2
NDYxX2Fub255bW91c19sYW1iZGFfNTY+CiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLSBjb21wbGV0ZS13aXRoLWFjdGlvbgogICAgICAgICAgIDIgICAwJSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFsbC1jb21wbGV0aW9ucwogICAgICAgICAgIDIgICAw
JSAgICAgICAgICAgICAgICAgLSB0ZW1wLWJ1ZmZlci13aW5kb3ctc2hvdwogICAgICAgICAgIDIg
ICAwJSAgICAgICAgICAgICAgICAgIC0gZGlzcGxheS1idWZmZXIKICAgICAgICAgICAyICAgMCUg
ICAgICAgICAgICAgICAgICAgLSBkaXNwbGF5LWJ1ZmZlci1hdC1ib3R0b20KICAgICAgICAgICAx
ICAgMCUgICAgICAgICAgICAgICAgICAgIC0gd2Fsay13aW5kb3ctdHJlZQogICAgICAgICAgIDEg
ICAwJSAgICAgICAgICAgICAgICAgICAgIC0gd2Fsay13aW5kb3ctdHJlZS0xCiAgICAgICAgICAg
MSAgIDAlICAgICAgICAgICAgICAgICAgICAgIC0gIzxjb21waWxlZC1mdW5jdGlvbiAzNjU+CiAg
ICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy1pbi1kaXJlY3Rp
b24KICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgIC0gd2luZG93LS1kaXNwbGF5
LWJ1ZmZlcgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgIC0gIzxjb21waWxl
ZC1mdW5jdGlvbiAzOEI+CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAgIC0g
cmVhZC1leHRlbmRlZC1jb21tYW5kLS1hZmZpeGF0aW9uCiAgICAgICAgICAgMSAgIDAlICAgICAg
ICAgICAgICAgICAgICAgICAgICM8c3Vici1uYXRpdmUtZWxpc3AgRjYxNmU2ZjZlNzk2ZDZmNzU3
MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfNjE+CiAgICAgICAgICAgMSAgIDAlICAg
ICAgICAgICAgICAgIC0gbWluaWJ1ZmZlci1oaWRlLWNvbXBsZXRpb25zCiAgICAgICAgICAgMSAg
IDAlICAgICAgICAgICAgICAgICAtIGJ1cnktYnVmZmVyCiAgICAgICAgICAgMSAgIDAlICAgICAg
ICAgICAgICAgICAgLSB3aW5kb3ctLWRlbGV0ZQogICAgICAgICAgIDEgICAwJSAgICAgICAgICAg
ICAgICAgICAtIGRlbGV0ZS13aW5kb3cKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAg
ICAgIC0gd2luZG93LXNpemFibGUtcAogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAg
ICAgIC0gd2luZG93LXNpemFibGUKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAg
ICAgLSB3aW5kb3ctc2l6ZS1maXhlZC1wCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAg
ICAgICAgICAgIHdpbmRvdy0tc2l6ZS1maXhlZC0xCiAgICAgICAgICAgMSAgIDAlICAgICAgICAg
ICBtaW5pYnVmZmVyLS1jb21wbGV0aW9uLXByb21wdC1lbmQKICAgICAgICAgICAxICAgMCUgICAg
ICAtIHRpbWVyLWV2ZW50LWhhbmRsZXIKICAgICAgICAgICAxICAgMCUgICAgICAgLSBhcHBseQog
ICAgICAgICAgIDEgICAwJSAgICAgICAgLSBzaG93LXBhcmVuLWZ1bmN0aW9uCiAgICAgICAgICAg
MSAgIDAlICAgICAgICAgLSBzaG93LXBhcmVuLS1kZWZhdWx0CiAgICAgICAgICAgMSAgIDAlICAg
ICAgICAgIC0gc2hvdy1wYXJlbi0tbG9jYXRlLW5lYXItcGFyZW4KICAgICAgICAgICAxICAgMCUg
ICAgICAgICAgICAgYmFjay10by1pbmRlbnRhdGlvbgogICAgICAgICAgIDEgICAwJSAgLSBmdW5j
YWxsLWludGVyYWN0aXZlbHkKICAgICAgICAgICAxICAgMCUgICAgIGV4ZWN1dGUtZXh0ZW5kZWQt
Y29tbWFuZAogICAgICAgICAgNDMgIDEzJSAtIHRpbWVyLWV2ZW50LWhhbmRsZXIKICAgICAgICAg
IDQzICAxMyUgIC0gYXBwbHkKICAgICAgICAgIDIxICAgNiUgICAtICM8Y29tcGlsZWQtZnVuY3Rp
b24gRTc4PgogICAgICAgICAgMjEgICA2JSAgICAtIGpzb25ycGMtY29ubmVjdGlvbi1yZWNlaXZl
CiAgICAgICAgICAxOSAgIDYlICAgICAtIGpzb25ycGMtLWNvbnRpbnVlCiAgICAgICAgICAxNyAg
IDUlICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIEEzNz4KICAgICAgICAgIDEwICAgMyUgICAg
ICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIEQ1Nj4KICAgICAgICAgIDEwICAgMyUgICAgICAgIC0g
Izxjb21waWxlZC1mdW5jdGlvbiBEOTI+CiAgICAgICAgICAxMCAgIDMlICAgICAgICAgLSBydW4t
aG9vay13aXRoLWFyZ3MKICAgICAgICAgICA5ICAgMiUgICAgICAgICAgLSBlbGRvYy1kaXNwbGF5
LWluLWVjaG8tYXJlYQogICAgICAgICAgIDkgICAyJSAgICAgICAgICAgLSBlbGRvYy0tbWVzc2Fn
ZQogICAgICAgICAgIDkgICAyJSAgICAgICAgICAgIC0gZWxkb2MtbWluaWJ1ZmZlci1tZXNzYWdl
CiAgICAgICAgICAgOSAgIDIlICAgICAgICAgICAgIC0gYXBwbHkKICAgICAgICAgICA5ICAgMiUg
ICAgICAgICAgICAgIC0gbWVzc2FnZQogICAgICAgICAgIDcgICAyJSAgICAgICAgICAgICAgICAg
cmVkaXNwbGF5X2ludGVybmFsIChDIGZ1bmN0aW9uKQogICAgICAgICAgIDEgICAwJSAgICAgICAg
ICAtIGVsZG9jLWRpc3BsYXktaW4tYnVmZmVyCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAt
IGVsZG9jLS1mb3JtYXQtZG9jLWJ1ZmZlcgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgIC0g
c3BlY2lhbC1tb2RlCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgYy1sZWF2ZS1jYy1t
b2RlLW1vZGUKICAgICAgICAgICA3ICAgMiUgICAgICAgLSBlZ2xvdC0taG92ZXItaW5mbwogICAg
ICAgICAgIDcgICAyJSAgICAgICAgLSBlZ2xvdC0tZm9ybWF0LW1hcmt1cAogICAgICAgICAgIDUg
ICAxJSAgICAgICAgIC0gZm9udC1sb2NrLWVuc3VyZQogICAgICAgICAgIDUgICAxJSAgICAgICAg
ICAtICM8Y29tcGlsZWQtZnVuY3Rpb24gQzVFPgogICAgICAgICAgIDUgICAxJSAgICAgICAgICAg
LSBmb250LWxvY2stZm9udGlmeS1yZWdpb24KICAgICAgICAgICA1ICAgMSUgICAgICAgICAgICAt
IGMtZm9udC1sb2NrLWZvbnRpZnktcmVnaW9uCiAgICAgICAgICAgNSAgIDElICAgICAgICAgICAg
IC0gZm9udC1sb2NrLWRlZmF1bHQtZm9udGlmeS1yZWdpb24KICAgICAgICAgICA0ICAgMSUgICAg
ICAgICAgICAgIC0gZm9udC1sb2NrLWZvbnRpZnkta2V5d29yZHMtcmVnaW9uCiAgICAgICAgICAg
MyAgIDAlICAgICAgICAgICAgICAgLSBjLWZvbnQtbG9jay1kZWNsYXJhdGlvbnMKICAgICAgICAg
ICAzICAgMCUgICAgICAgICAgICAgICAgLSBjLWZpbmQtZGVjbC1zcG90cwogICAgICAgICAgIDMg
ICAwJSAgICAgICAgICAgICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIEYxQj4KICAgICAgICAg
ICAzICAgMCUgICAgICAgICAgICAgICAgICAtIGMtZm9yd2FyZC1kZWNsLW9yLWNhc3QtMQogICAg
ICAgICAgIDIgICAwJSAgICAgICAgICAgICAgICAgICAtIGMtZm9yd2FyZC10eXBlCiAgICAgICAg
ICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAtIGMtY2hlY2stcXVhbGlmaWVkLXR5cGUKICAg
ICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAtIGMtZm9yd2FyZC1vdmVyLWNvbXBv
dW5kLWlkZW50aWZpZXIKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAgICAgICBj
LWZvcndhcmQtc3dzCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAtIGMtZm9y
d2FyZC1uYW1lCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgICAgLSBjLWZvcndh
cmQtPD4tYXJnbGlzdAogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAgICAgICAgICAtIGMt
Zm9yd2FyZC08Pi1hcmdsaXN0LXJlY3VyCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAg
ICAgICAgICAtIGMtZm9yd2FyZC1zd3MKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvb2tpbmctYXQKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgICAg
ICBsb29raW5nLWF0CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgLSBjLWZvbnQtbG9j
ay1lbmNsb3NpbmctZGVjbHMKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAgLSBjLXBh
cnNlLXN0YXRlCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAgIGMtYmVnaW5uaW5n
LW9mLW1hY3JvCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAtIGZvbnQtbG9jay1mb250
aWZ5LXN5bnRhY3RpY2FsbHktcmVnaW9uCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAg
LSBmb250LWxvY2stZGVmYXVsdC1mb250aWZ5LXN5bnRhY3RpY2FsbHkKICAgICAgICAgICAxICAg
MCUgICAgICAgICAgICAgICAgLSBjb21tZW50LW5vcm1hbGl6ZS12YXJzCiAgICAgICAgICAgMSAg
IDAlICAgICAgICAgICAgICAgICAtICM8Y29tcGlsZWQtZnVuY3Rpb24gQTg3PgogICAgICAgICAg
IDEgICAwJSAgICAgICAgICAgICAgICAgIC0ga2lsbC1idWZmZXIKICAgICAgICAgICAxICAgMCUg
ICAgICAgICAgICAgICAgICAgICByZXBsYWNlLWJ1ZmZlci1pbi13aW5kb3dzCiAgICAgICAgICAg
MiAgIDAlICAgICAgICAgLSBqYXZhLW1vZGUKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICBj
LWluaXQtbGFuZ3VhZ2UtdmFycy1mb3IKICAgICAgICAgICAxICAgMCUgICAgICAgICAgLSBjLWNv
bW1vbi1pbml0CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAtICM8c3Vici1uYXRpdmUtZWxp
c3AgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMzU+
CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgLSBjLXVubWFyay08Pi1hcm91bmQtcmVnaW9u
CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgIzxjb21waWxlZC1mdW5jdGlvbiBENkU+
CiAgICAgICAgICAgMiAgIDAlICAgICAgICAjPGNvbXBpbGVkLWZ1bmN0aW9uIDNDNj4KICAgICAg
ICAgICAxICAgMCUgICAgIC0ganNvbnJwYy0tcmVtb3ZlCiAgICAgICAgICAgMSAgIDAlICAgICAg
ICBzbG90LXZhbHVlCiAgICAgICAgICAgMSAgIDAlICAgICAtIGFwcGx5CiAgICAgICAgICAgMSAg
IDAlICAgICAgLSBqc29ucnBjLS1ldmVudAogICAgICAgICAgIDEgICAwJSAgICAgICAtICM8Y29t
cGlsZWQtZnVuY3Rpb24gMEEzPgogICAgICAgICAgIDEgICAwJSAgICAgICAgLSBhcHBseQogICAg
ICAgICAgIDEgICAwJSAgICAgICAgICAganNvbnJwYy0tbG9nLWV2ZW50CiAgICAgICAgICAxMiAg
IDMlICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIDRCQj4KICAgICAgICAgIDEyICAgMyUgICAgLSBl
bGRvYy1wcmludC1jdXJyZW50LXN5bWJvbC1pbmZvCiAgICAgICAgICAxMiAgIDMlICAgICAtIGVs
ZG9jLS1pbnZva2Utc3RyYXRlZ3kKICAgICAgICAgIDEyICAgMyUgICAgICAtIGVsZG9jLWRvY3Vt
ZW50YXRpb24tY29tcG9zZQogICAgICAgICAgMTIgICAzJSAgICAgICAtIGVnbG90LWhvdmVyLWVs
ZG9jLWZ1bmN0aW9uCiAgICAgICAgICAgNiAgIDElICAgICAgICAtIGVnbG90LS1UZXh0RG9jdW1l
bnRQb3NpdGlvblBhcmFtcwogICAgICAgICAgIDUgICAxJSAgICAgICAgIC0gZWdsb3QtLVRleHRE
b2N1bWVudElkZW50aWZpZXIKICAgICAgICAgICA1ICAgMSUgICAgICAgICAgLSBlZ2xvdC1wYXRo
LXRvLXVyaQogICAgICAgICAgIDMgICAwJSAgICAgICAgICAgICB1cmwtZ2VuZXJpYy1wYXJzZS11
cmwKICAgICAgICAgICAxICAgMCUgICAgICAgICAtIGVnbG90LS1wb3MtdG8tbHNwLXBvc2l0aW9u
CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgIC0gZWdsb3QtdXRmLTE2LWxpbmVwb3MKICAgICAg
ICAgICAxICAgMCUgICAgICAgICAgICAgZWdsb3QtLWJvbAogICAgICAgICAgIDQgICAxJSAgICAg
ICAgLSBlZ2xvdC0taGlnaGxpZ2h0LXBpZ2d5YmFjawogICAgICAgICAgIDIgICAwJSAgICAgICAg
IC0gZWdsb3QtLVRleHREb2N1bWVudFBvc2l0aW9uUGFyYW1zCiAgICAgICAgICAgMiAgIDAlICAg
ICAgICAgIC0gZWdsb3QtLVRleHREb2N1bWVudElkZW50aWZpZXIKICAgICAgICAgICAyICAgMCUg
ICAgICAgICAgIC0gZWdsb3QtcGF0aC10by11cmkKICAgICAgICAgICAyICAgMCUgICAgICAgICAg
ICAtIHVybC1nZW5lcmljLXBhcnNlLXVybAogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAt
ICM8Y29tcGlsZWQtZnVuY3Rpb24gRDQ2PgogICAgICAgICAgIDEgICAwJSAgICAgICAgICAgICAg
ICBraWxsLWJ1ZmZlcgogICAgICAgICAgIDIgICAwJSAgICAgICAgIC0ganNvbnJwYy1hc3luYy1y
ZXF1ZXN0CiAgICAgICAgICAgMiAgIDAlICAgICAgICAgIC0ganNvbnJwYy0tYXN5bmMtcmVxdWVz
dC0xCiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAtIGpzb25ycGMtY29ubmVjdGlvbi1zZW5k
CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgLSBhcHBseQogICAgICAgICAgIDEgICAwJSAg
ICAgICAgICAgICAtICM8Y29tcGlsZWQtZnVuY3Rpb24gNTEwPgogICAgICAgICAgIDEgICAwJSAg
ICAgICAgICAgICAgICBqc29ucnBjLS1ldmVudAogICAgICAgICAgIDIgICAwJSAgICAgICAgLSBq
c29ucnBjLWFzeW5jLXJlcXVlc3QKICAgICAgICAgICAyICAgMCUgICAgICAgICAtIGpzb25ycGMt
LWFzeW5jLXJlcXVlc3QtMQogICAgICAgICAgIDIgICAwJSAgICAgICAgICAtIGpzb25ycGMtY29u
bmVjdGlvbi1zZW5kCiAgICAgICAgICAgMiAgIDAlICAgICAgICAgICAtIGFwcGx5CiAgICAgICAg
ICAgMiAgIDAlICAgICAgICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIDUxMD4KICAgICAgICAg
ICAxICAgMCUgICAgICAgICAgICAgLSBqc29ucnBjLS1ldmVudAogICAgICAgICAgIDEgICAwJSAg
ICAgICAgICAgICAgLSAjPGNvbXBpbGVkLWZ1bmN0aW9uIDgyQT4KICAgICAgICAgICAxICAgMCUg
ICAgICAgICAgICAgICAtIGFwcGx5CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgICAgICAg
anNvbnJwYy0tbG9nLWV2ZW50CiAgICAgICAgICAgMSAgIDAlICAgICAgICAgICAgIC0ganNvbnJw
Yy0tanNvbi1lbmNvZGUKICAgICAgICAgICAxICAgMCUgICAgICAgICAgICAgICAganNvbi1zZXJp
YWxpemUKICAgICAgICAgICA2ICAgMSUgICAtICM8c3Vici1uYXRpdmUtZWxpc3AgRjYxNmU2ZjZl
Nzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfOT4KICAgICAgICAgICA2
ICAgMSUgICAgICBqaXQtbG9jay1jb250ZXh0LWZvbnRpZnkKICAgICAgICAgICAzICAgMCUgICAt
IHNob3ctcGFyZW4tZnVuY3Rpb24KICAgICAgICAgICAzICAgMCUgICAgLSBzaG93LXBhcmVuLS1k
ZWZhdWx0CiAgICAgICAgICAgMiAgIDAlICAgICAtIHN5bnRheC1wcHNzCiAgICAgICAgICAgMSAg
IDAlICAgICAgICBwYXJzZS1wYXJ0aWFsLXNleHAKICAgICAgICAgICAxICAgMCUgICAgICAgIHN5
bnRheC1wcm9wZXJ0aXplCiAgICAgICAgICAgMSAgIDAlICAgICAgIHNob3ctcGFyZW4tLWxvY2F0
ZS1uZWFyLXBhcmVuCiAgICAgICAgICAgMSAgIDAlICAgLSBibGluay1jdXJzb3Itc3RhcnQKICAg
ICAgICAgICAxICAgMCUgICAgICBibGluay1jdXJzb3ItLXN0YXJ0LXRpbWVyCiAgICAgICAgICA0
MCAgMTIlICAgQXV0b21hdGljIEdDCiAgICAgICAgICAgNCAgIDElIC0gZWxkb2MtcHJlLWNvbW1h
bmQtcmVmcmVzaC1lY2hvLWFyZWEKICAgICAgICAgICA0ICAgMSUgIC0gZWxkb2MtLW1lc3NhZ2UK
ICAgICAgICAgICA0ICAgMSUgICAtIGVsZG9jLW1pbmlidWZmZXItbWVzc2FnZQogICAgICAgICAg
IDQgICAxJSAgICAtIGFwcGx5CiAgICAgICAgICAgNCAgIDElICAgICAgIG1lc3NhZ2UKICAgICAg
ICAgICAyICAgMCUgLSBqc29ucnBjLS1wcm9jZXNzLWZpbHRlcgogICAgICAgICAgIDEgICAwJSAg
ICBzZWFyY2gtZm9yd2FyZC1yZWdleHAKICAgICAgICAgICAxICAgMCUgIC0gIzxjb21waWxlZC1m
dW5jdGlvbiA3OUE+CiAgICAgICAgICAgMSAgIDAlICAgICB0aW1lci1zZXQtdGltZQogICAgICAg
ICAgIDEgICAwJSAtIGppdC1sb2NrLS1hbnRpYmxpbmstcG9zdC1jb21tYW5kCiAgICAgICAgICAg
MSAgIDAlICAgIHN5bnRheC0tbGJwCiAgICAgICAgICAgMSAgIDAlIC0gdW5kby1hdXRvLS1hZGQt
Ym91bmRhcnkKICAgICAgICAgICAxICAgMCUgIC0gdW5kby1hdXRvLS1ib3VuZGFyaWVzCiAgICAg
ICAgICAgMSAgIDAlICAgICBhZGQtdG8tbGlzdAogICAgICAgICAgIDAgICAwJSAgIC4uLgo=
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
 filename=0001-Move-file-truename-to-the-C-level.patch

From 183e636eebd9f1653d0cfdacdeba77d2043954af Mon Sep 17 00:00:00 2001
From: Theodor Thornhill <theo@HIDDEN>
Date: Wed, 27 Mar 2024 19:42:56 +0100
Subject: [PATCH] Move file-truename to the C level

---
 lisp/files.el | 116 +++++---------------------------------------------
 src/fileio.c  |  27 ++++++++++++
 2 files changed, 38 insertions(+), 105 deletions(-)

diff --git a/lisp/files.el b/lisp/files.el
index 766ed573392..6b9846c2ef4 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -32,6 +32,8 @@
   (require 'pcase)
   (require 'easy-mmode)) ; For `define-minor-mode'.
 
+(declare-function file-truename "fileio.c")
+
 (defvar font-lock-keywords)
 
 (defgroup backup nil
@@ -1413,111 +1415,15 @@ files--splice-dirname-file
 	unquoted
       (let (file-name-handler-alist) (file-name-quote unquoted)))))
 
-(defun file-truename (filename &optional counter prev-dirs)
-  "Return the truename of FILENAME.
-If FILENAME is not absolute, first expands it against `default-directory'.
-The truename of a file name is found by chasing symbolic links
-both at the level of the file and at the level of the directories
-containing it, until no links are left at any level.
-
-\(fn FILENAME)"  ;; Don't document the optional arguments.
-  ;; COUNTER and PREV-DIRS are used only in recursive calls.
-  ;; COUNTER can be a cons cell whose car is the count of how many
-  ;; more links to chase before getting an error.
-  ;; PREV-DIRS can be a cons cell whose car is an alist
-  ;; of truenames we've just recently computed.
-  (cond ((or (string= filename "") (string= filename "~"))
-	 (setq filename (expand-file-name filename))
-	 (if (string= filename "")
-	     (setq filename "/")))
-	((and (string= (substring filename 0 1) "~")
-	      (string-match "~[^/]*/?" filename))
-	 (let ((first-part
-		(substring filename 0 (match-end 0)))
-	       (rest (substring filename (match-end 0))))
-	   (setq filename (concat (expand-file-name first-part) rest)))))
-
-  (or counter (setq counter (list 100)))
-  (let (done
-	;; For speed, remove the ange-ftp completion handler from the list.
-	;; We know it's not needed here.
-	;; For even more speed, do this only on the outermost call.
-	(file-name-handler-alist
-	 (if prev-dirs file-name-handler-alist
-	   (let ((tem (copy-sequence file-name-handler-alist)))
-	     (delq (rassq 'ange-ftp-completion-hook-function tem) tem)))))
-    (or prev-dirs (setq prev-dirs (list nil)))
-
-    ;; andrewi@HIDDEN - on Windows, there is an issue with
-    ;; case differences being ignored by the OS, and short "8.3 DOS"
-    ;; name aliases existing for all files.  (The short names are not
-    ;; reported by directory-files, but can be used to refer to files.)
-    ;; It seems appropriate for file-truename to resolve these issues in
-    ;; the most natural way, which on Windows is to call the function
-    ;; `w32-long-file-name' - this returns the exact name of a file as
-    ;; it is stored on disk (expanding short name aliases with the full
-    ;; name in the process).
-    (if (eq system-type 'windows-nt)
-	(unless (string-match "[[*?]" filename)
-	  ;; If filename exists, use its long name.  If it doesn't
-	  ;; exist, the recursion below on the directory of filename
-	  ;; will drill down until we find a directory that exists,
-	  ;; and use the long name of that, with the extra
-	  ;; non-existent path components concatenated.
-	  (let ((longname (w32-long-file-name filename)))
-	    (if longname
-		(setq filename longname)))))
-
-    ;; If this file directly leads to a link, process that iteratively
-    ;; so that we don't use lots of stack.
-    (while (not done)
-      (setcar counter (1- (car counter)))
-      (if (< (car counter) 0)
-	  (error "Apparent cycle of symbolic links for %s" filename))
-      (let ((handler (find-file-name-handler filename 'file-truename)))
-	;; For file name that has a special handler, call handler.
-	;; This is so that ange-ftp can save time by doing a no-op.
-	(if handler
-	    (setq filename (funcall handler 'file-truename filename)
-		  done t)
-	  (let ((dir (or (file-name-directory filename) default-directory))
-		target dirfile)
-	    ;; Get the truename of the directory.
-	    (setq dirfile (directory-file-name dir))
-	    ;; If these are equal, we have the (or a) root directory.
-	    (or (string= dir dirfile)
-		(and (file-name-case-insensitive-p dir)
-		     (string-equal-ignore-case dir dirfile))
-		;; If this is the same dir we last got the truename for,
-		;; save time--don't recalculate.
-		(if (assoc dir (car prev-dirs))
-		    (setq dir (cdr (assoc dir (car prev-dirs))))
-		  (let ((old dir)
-			(new (file-name-as-directory (file-truename dirfile counter prev-dirs))))
-		    (setcar prev-dirs (cons (cons old new) (car prev-dirs)))
-		    (setq dir new))))
-	    (if (equal ".." (file-name-nondirectory filename))
-		(setq filename
-		      (directory-file-name (file-name-directory (directory-file-name dir)))
-		      done t)
-	      (if (equal "." (file-name-nondirectory filename))
-		  (setq filename (directory-file-name dir)
-			done t)
-		;; Put it back on the file name.
-		(setq filename (concat dir (file-name-nondirectory filename)))
-		;; Is the file name the name of a link?
-		(setq target (file-symlink-p filename))
-		(if target
-		    ;; Yes => chase that link, then start all over
-		    ;; since the link may point to a directory name that uses links.
-		    ;; We can't safely use expand-file-name here
-		    ;; since target might look like foo/../bar where foo
-		    ;; is itself a link.  Instead, we handle . and .. above.
-		    (setq filename (files--splice-dirname-file dir target)
-			  done nil)
-		  ;; No, we are done!
-		  (setq done t))))))))
-    filename))
+;; (defun file-truename (filename &optional _x _y)
+;;   "Return the truename of FILENAME.
+;; If FILENAME is not absolute, first expands it against `default-directory'.
+;; The truename of a file name is found by chasing symbolic links
+;; both at the level of the file and at the level of the directories
+;; containing it, until no links are left at any level.
+
+;; \(fn FILENAME)"
+;;   (file-truename-c filename))
 
 (defun file-chase-links (filename &optional limit)
   "Chase links in FILENAME until a name that is not a link.
diff --git a/src/fileio.c b/src/fileio.c
index 12da7a9ed3a..05deedead55 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -24,6 +24,8 @@ Copyright (C) 1985-1988, 1993-2024 Free Software Foundation, Inc.
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
+#include <stdlib.h>
+#include <wordexp.h>
 
 #ifdef DARWIN_OS
 #include <sys/attr.h>
@@ -367,6 +369,30 @@ restore_point_unwind (Lisp_Object location)
   unchain_marker (XMARKER (location));
 }
 
+DEFUN ("file-truename", Ffile_truename, Sfile_truename,
+       1, 3, 0,
+       doc: /* Return the truename of FILENAME.  */)
+  (Lisp_Object filename, Lisp_Object x, Lisp_Object y)
+{
+  Lisp_Object result = filename;
+
+  CHECK_STRING (filename);
+  char *c_filename = SSDATA (filename);
+
+  wordexp_t we;
+  wordexp(c_filename, &we, 0);
+
+  char *truename = realpath(we.we_wordv[0], NULL);
+  wordfree(&we);
+
+  if (!truename)
+    return result;
+
+  result = build_string(truename);
+  free(truename);
+
+  return result;
+}
 
 DEFUN ("find-file-name-handler", Ffind_file_name_handler,
        Sfind_file_name_handler, 2, 2, 0,
@@ -6850,6 +6876,7 @@ do (file-exists-p FILENAME) and FILENAME is handled by HANDLER, then
   DEFSYM (Qstdout, "stdout");
   DEFSYM (Qstderr, "stderr");
 
+  defsubr (&Sfile_truename);
   defsubr (&Sfind_file_name_handler);
   defsubr (&Sfile_name_directory);
   defsubr (&Sfile_name_nondirectory);
-- 
2.40.1


--=-=-=--




Acknowledgement sent to Theodor Thornhill <theo@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#70036; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Sat, 30 Mar 2024 11:30:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.