From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Theodor Thornhill via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#70036: 30.0.50; Move file-truename to the C level Date: Wed, 27 Mar 2024 20:08:54 +0100 Message-ID: <87le63xzjt.fsf@thornhill.no> Reply-To: Theodor Thornhill Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="8078"; mail-complaints-to="usenet@ciao.gmane.io" To: 70036@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Mar 27 20:10:35 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rpYfS-0001tX-So for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 27 Mar 2024 20:10:35 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rpYfD-0007Kb-1L; Wed, 27 Mar 2024 15:10:19 -0400 Original-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 ) id 1rpYfB-0007Jr-G9 for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2024 15:10:17 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rpYew-0007g0-CE for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2024 15:10:16 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rpYew-0003qC-IH for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2024 15:10:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Theodor Thornhill Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 27 Mar 2024 19:10:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 70036 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.171156656314549 (code B ref -1); Wed, 27 Mar 2024 19:10:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 27 Mar 2024 19:09:23 +0000 Original-Received: from localhost ([127.0.0.1]:38370 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rpYeH-0003mY-TH for submit@debbugs.gnu.org; Wed, 27 Mar 2024 15:09:22 -0400 Original-Received: from lists.gnu.org ([2001:470:142::17]:58026) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rpYeE-0003ll-TJ for submit@debbugs.gnu.org; Wed, 27 Mar 2024 15:09:20 -0400 Original-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 ) id 1rpYe8-0007A3-Fj for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2024 15:09:12 -0400 Original-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 ) id 1rpYe4-0007W0-Kh for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2024 15:09:12 -0400 X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com 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== X-Migadu-Flow: FLOW_OUT Received-SPF: pass client-ip=2001:41d0:1004:224b::ba; envelope-from=theo@thornhill.no; 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-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:282152 Archived-At: --=-=-= 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 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@harlequin.co.uk - 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 #include #include +#include +#include #ifdef DARWIN_OS #include @@ -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 --=-=-=--