From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Reuben Thomas Newsgroups: gmane.emacs.bugs Subject: Re: [Reuben Thomas] browse-url.el Opera support Date: Sat, 17 Jan 2004 16:27:17 +0100 (CET) Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Message-ID: References: Reply-To: Reuben Thomas NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463811328-1663868896-1074353232=:1565" X-Trace: sea.gmane.org 1074354313 18549 80.91.224.253 (17 Jan 2004 15:45:13 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Sat, 17 Jan 2004 15:45:13 +0000 (UTC) Cc: bug-gnu-emacs@gnu.org, Simon Josefsson Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Jan 17 16:45:08 2004 Return-path: Original-Received: from monty-python.gnu.org ([199.232.76.173]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1AhsdH-0007QT-00 for ; Sat, 17 Jan 2004 16:45:07 +0100 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.24) id 1AhsNM-0004hM-4r for geb-bug-gnu-emacs@m.gmane.org; Sat, 17 Jan 2004 10:28:40 -0500 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.24) id 1AhsN0-0004et-BT for bug-gnu-emacs@gnu.org; Sat, 17 Jan 2004 10:28:18 -0500 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.24) id 1AhsMS-0004Ut-Dm for bug-gnu-emacs@gnu.org; Sat, 17 Jan 2004 10:28:15 -0500 Original-Received: from [217.206.202.87] (helo=cognition.stroop.net) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.24) id 1AhsMQ-0004UP-UN for bug-gnu-emacs@gnu.org; Sat, 17 Jan 2004 10:27:43 -0500 Original-Received: from rrt (helo=localhost) by cognition.stroop.net with local-esmtp (Exim 3.35 #1) id 1AhsM3-0002TX-00; Sat, 17 Jan 2004 15:27:20 +0000 X-X-Sender: rrt@mnemosyne Original-To: Dave Love In-Reply-To: X-BeenThere: bug-gnu-emacs@gnu.org X-Mailman-Version: 2.1.2 Precedence: list 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.org@gnu.org Xref: main.gmane.org gmane.emacs.bugs:6606 X-Report-Spam: http://spam.gmane.org/gmane.emacs.bugs:6606 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---1463811328-1663868896-1074353232=:1565 Content-Type: TEXT/PLAIN; charset=US-ASCII > I don't understand `several kb of script' I was looking at the length of browse-url.el. I now see that a lot of it isn't just calling browsers, but the bit that is (especially the support for particular browsers) is embarrassingly long. > The current mechanism would have been junked if I'd been able to > continue maintaining browse-url. I've had a go at reworking browse-url-generic to be useful with more browsers and simpler to customise. > In most cases, I'd hope you wouldn't have to configure anything. :-) Well, browse-url already defaults to htmlview for the generic browser, which works well for me. OK, I attach a preliminary rework of browse-url.el. I've done three main things: 1. In line with what RMS said elsewhere, I've removed support for non-free browsers. Most of the code in this category was to support old versions of Netscape. Mozilla and new versions of Netscape are adequately supported by my new implementation of browse-url-generic. 2. I've removed support for other browsers that can be supported by my new browse-url-generic, e.g. MMM, Grail, Lynx-in-xterm. 3. I've rewritten browse-url-generic so that browse-url-generic-args is a string, not a list (I've not redone the other browser support code to be consistent with this; perhaps it's not worthwhile or even counterproductive). This string may contain the token __URL__; if so, the URL given is substituted for it. Otherwise, the URL is added as an extra final argument. The string is split at spaces to be passed to start-process. The reason for using a string rather than a list of args is that it's easier for users to configure. Slightly more careful parsing of the string (e.g. respecting quotes when splitting it into individual args) would solve most remaining problems with that approach. I'm also sorely tempted to remove the special support for Mosaic, as it's long and the program is obsolete, but perhaps there are enough users on older hardware who don't have alternative more modern browsers. The version of browse-url.el I attach is a modified version of that supplied with Emacs 21.3.1, and all the modifications are by me (I didn't use any of the XEmacs code I mentioned before). It's also a little under half the size of the 21.3.1 version. -- http://www.mupsych.org/~rrt/ | Floc: an egregiously good aperitif ---1463811328-1663868896-1074353232=:1565 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="browse-url.el" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="browse-url.el" Ozs7IGJyb3dzZS11cmwuZWwgLS0tIHBhc3MgYSBVUkwgdG8gYSBXV1cgYnJv d3Nlcg0KDQo7OyBDb3B5cmlnaHQgKEMpIDE5OTUsIDk2LCA5NywgOTgsIDk5 LCAyMDAwLCAyMDAxDQo7OyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLg0KDQo7OyBBdXRob3I6IERlbmlzIEhvd2UgPGRiaEBkb2MuaWMuYWMu dWs+DQo7OyBNYWludGFpbmVyOiBEYXZlIExvdmUgPGZ4QGdudS5vcmc+DQo7 OyBDcmVhdGVkOiAwMyBBcHIgMTk5NQ0KOzsgS2V5d29yZHM6IGh5cGVydGV4 dCwgaHlwZXJtZWRpYSwgbW91c2UNCg0KOzsgVGhpcyBmaWxlIGlzIHBhcnQg b2YgR05VIEVtYWNzLg0KDQo7OyBHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KOzsg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCjs7IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9w dGlvbikNCjs7IGFueSBsYXRlciB2ZXJzaW9uLg0KDQo7OyBHTlUgRW1hY3Mg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwNCjs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo7OyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlDQo7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLg0KDQo7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KOzsgYWxvbmcg d2l0aCBHTlUgRW1hY3M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90 LCB3cml0ZSB0byB0aGUNCjs7IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLA0KOzsgQm9zdG9u LCBNQSAwMjExMS0xMzA3LCBVU0EuDQoNCjs7OyBDb21tZW50YXJ5Og0KDQo7 OyBUaGlzIHBhY2thZ2UgcHJvdmlkZXMgZnVuY3Rpb25zIHdoaWNoIHJlYWQg YSBVUkwgKFVuaWZvcm0gUmVzb3VyY2UNCjs7IExvY2F0b3IpIGZyb20gdGhl IG1pbmlidWZmZXIsIGRlZmF1bHRpbmcgdG8gdGhlIFVSTCBhcm91bmQgcG9p bnQsDQo7OyBhbmQgYXNrIGEgV29ybGQtV2lkZSBXZWIgYnJvd3NlciB0byBs b2FkIGl0LiAgSXQgY2FuIGFsc28gbG9hZCB0aGUNCjs7IFVSTCBhc3NvY2lh dGVkIHdpdGggdGhlIGN1cnJlbnQgYnVmZmVyLiAgRGlmZmVyZW50IGJyb3dz ZXJzIHVzZQ0KOzsgZGlmZmVyZW50IG1ldGhvZHMgb2YgcmVtb3RlIGNvbnRy b2wgc28gdGhlcmUgaXMgb25lIGZ1bmN0aW9uIGZvcg0KOzsgZWFjaCBzdXBw b3J0ZWQgYnJvd3Nlci4gIElmIHRoZSBjaG9zZW4gYnJvd3NlciBpcyBub3Qg cnVubmluZywgaXQNCjs7IGlzIHN0YXJ0ZWQuICBDdXJyZW50bHkgdGhlcmUg aXMgc3VwcG9ydCBmb3IgdGhlIGZvbGxvd2luZyBicm93c2VycywNCjs7IHNv bWUgb2YgdGhlbSBwcm9iYWJseSBub3cgb2Jzb2xldGU6DQoNCjs7IEZ1bmN0 aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgQnJvd3NlciAgICAgRWFy bGllc3QgdmVyc2lvbg0KOzsgYnJvd3NlLXVybC1tb3NhaWMgICAgICAgICAg ICAgICAgICBYTW9zYWljL21Nb3NhaWMgPD0gMi40DQo7OyBicm93c2UtdXJs LWNjaSAgICAgICAgICAgICAgICAgICAgIFhNb3NhaWMgICAgIDIuNQ0KOzsg YnJvd3NlLXVybC13MyAgICAgICAgICAgICAgICAgICAgICB3MyAgICAgICAg ICAwDQo7OyBicm93c2UtdXJsLXczLWdudWRvaXQgICAgICAgICAgICAgIHcz IHJlbW90ZWx5DQo7OyBicm93c2UtdXJsLWx5bngtZW1hY3MgICAgICAgICAg ICAgIEx5bngJICAgICAwDQo7OyBicm93c2UtdXJsLWdlbmVyaWMgICAgICAg ICAgICAgICAgIGFyYml0cmFyeQ0KOzsgYnJvd3NlLXVybC1kZWZhdWx0LXdp bmRvd3MtYnJvd3NlciBNUy1XaW5kb3dzIGJyb3dzZXINCjs7IGJyb3dzZS11 cmwtZ25vbWUtbW96ICAgICAgICAgICAgICAgR05PTUUgaW50ZXJmYWNlIHRv IE1vemlsbGENCg0KOzsgQnJvd3NlcnMgY2FuIGNhY2hlIFdlYiBwYWdlcyBz byBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvIHRlbGwgdGhlbSB0bw0KOzsgcmVs b2FkIHRoZSBjdXJyZW50IHBhZ2UgaWYgaXQgaGFzIGNoYW5nZWQgKGUuZy4g aWYgeW91IGhhdmUgZWRpdGVkDQo7OyBpdCkuICBUaGVyZSBpcyBjdXJyZW50 bHkgbm8gcGVyZmVjdCBhdXRvbWF0aWMgc29sdXRpb24gdG8gdGhpcy4NCg0K OzsgSWYgdXNpbmcgWE1vc2FpYyBiZWZvcmUgdmVyc2lvbiAyLjUsIGNoZWNr IHRoZSBkZWZpbml0aW9uIG9mDQo7OyBicm93c2UtdXJsLXVzcjEtc2lnbmFs IGJlbG93Lg0KOzsgPFVSTDpodHRwOi8vd3d3Lm5jc2EudWl1Yy5lZHUvU0RH L1NvZnR3YXJlL1hNb3NhaWMvcmVtb3RlLWNvbnRyb2wuaHRtbD4NCg0KOzsg WE1vc2FpYyB2ZXJzaW9uIDIuNSBpbnRyb2R1Y2VkIENvbW1vbiBDbGllbnQg SW50ZXJmYWNlIGFsbG93aW5nIHlvdQ0KOzsgdG8gY29udHJvbCBtb3NhaWMg dGhyb3VnaCBVbml4IHNvY2tldHMuDQo7OyA8VVJMOmh0dHA6Ly93d3cubmNz YS51aXVjLmVkdS9TREcvU29mdHdhcmUvWE1vc2FpYy9DQ0kvY2NpLXNwZWMu aHRtbD4NCg0KOzsgV2lsbGlhbSBNLiBQZXJyeSdzIGV4Y2VsbGVudCAidzMi IFdXVyBicm93c2VyIGZvcg0KOzsgRW1hY3MgPFVSTDpmdHA6Ly9jcy5pbmRp YW5hLmVkdS9wdWIvZWxpc3AvdzMvPg0KOzsgaGFzIGEgZnVuY3Rpb24gdzMt Zm9sbG93LXVybC1hdC1wb2ludCwgYnV0IHRoYXQNCjs7IGRvZXNuJ3QgbGV0 IHlvdSBlZGl0IHRoZSBVUkwgbGlrZSBicm93c2UtdXJsLg0KOzsgVGhlIGBn bnVzZXJ2JyBwYWNrYWdlIHRoYXQgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBp dCBpbiBhbm90aGVyDQo7OyBFbWFjcyBwcm9jZXNzIGlzIGF2YWlsYWJsZSBm cm9tDQo7OyA8VVJMOmZ0cDovL2Z0cC5zcGxvZGUuY29tL3B1Yi91c2Vycy9m cmllZG1hbi9wYWNrYWdlcy8+Lg0KDQo7OyBMeW54IGlzIG5vdyBkaXN0cmli dXRlZCBieSB0aGUgRlNGLiAgU2VlIGFsc28NCjs7IDxVUkw6aHR0cDovL2x5 bnguYnJvd3Nlci5vcmcvPi4NCg0KOzsgRnJlZSBncmFwaGljYWwgYnJvd3Nl cnMgdGhhdCBjb3VsZCBiZSB1c2VkIGJ5IGBicm93c2UtdXJsLWdlbmVyaWMn DQo7OyBpbmNsdWRlIENoaW1lcmEgPFVSTDpmdHA6Ly9mdHAuY3MudW5sdi5l ZHUvcHViL2NoaW1lcmE+IGFuZA0KOzsgPFVSTDpodHRwOi8vd3d3LnVubHYu ZWR1L2NoaW1lcmEvPiwgQXJlbmENCjs7IDxVUkw6ZnRwOi8vZnRwLnlnZ2Ry YXNpbC5jb20vcHViL2Rpc3Qvd2ViL2FyZW5hPiwgR3JhaWwNCjs7IDxVUkw6 aHR0cDovL2dyYWlsLnNvdXJjZWZvcmdlLm5ldC8+LCBhbmQgQW1heWENCjs7 IDxVUkw6ZnRwOi8vZnRwLnczLm9yZy9wdWIvYW1heWE+LiAgbU1vc2FpYw0K OzsgPFVSTDpmdHA6Ly9mdHAuZW5zdC5mci9wdWIvbWJvbmUvbU1vc2FpYy8+ LA0KOzsgPFVSTDpodHRwOi8vcGVyc28uZW5zdC5mci9+ZGF1cGhpbi9tTW9z YWljLz4gKHdpdGggZGV2ZWxvcG1lbnQNCjs7IHN1cHBvcnQgZm9yIEphdmEg YXBwbGV0cyBhbmQgbXVsdGljYXN0KSBjYW4gYmUgdXNlZCBsaWtlIE1vc2Fp YyBieQ0KOzsgc2V0dGluZyBgYnJvd3NlLXVybC1tb3NhaWMtcHJvZ3JhbScg YXBwcm9wcmlhdGVseS4NCg0KOzsgSSBbRGVuaXMgSG93ZSwgbm90IERhdmUg TG92ZV0gcmVjb21tZW5kIE5lbHNvbiBNaW5hcg0KOzsgPG5lbHNvbkBzYW50 YWZlLmVkdT4ncyBleGNlbGxlbnQgaHRtbC1oZWxwZXItbW9kZS5lbCBmb3Ig ZWRpdGluZw0KOzsgSFRNTCBhbmQgdGhhbmsgTmVsc29uIGZvciBoaXMgbWFu eSB1c2VmdWwgY29tbWVudHMgb24gdGhpcyBjb2RlLg0KOzsgPFVSTDpodHRw Oi8vd3d3LnNhbnRhZmUuZWR1LyU3RW5lbHNvbi9oaG0tYmV0YS8+DQoNCjs7 IFNlZSBhbHNvIGhtLS1odG1sLW1lbnVzIDxVUkw6aHR0cDovL3d3dy50bnQu dW5pLWhhbm5vdmVyLmRlLyU3RW11ZW5rZWwvDQo7OyBzb2Z0d2FyZS9vd24v aG0tLWh0bWwtbWVudXMvPi4gIEZvciBjb21wb3NpbmcgY29ycmVjdCBIVE1M IHNlZSBhbHNvDQo7OyBQU0dNTCB0aGUgZ2VuZXJhbCBTR01MIHN0cnVjdHVy ZSBlZGl0b3IgcGFja2FnZQ0KOzsgPFVSTDpmdHA6Ly9mdHAubHlzYXRvci5s aXUuc2UvcHViL3NnbWw+OyBobS0taHRtbC1tZW51cyBjYW4gYmUgdXNlZA0K Ozsgd2l0aCB0aGlzLg0KDQo7OyBUaGlzIHBhY2thZ2UgZ2VuZXJhbGlzZXMg ZnVuY3Rpb24gaHRtbC1wcmV2aWV3ZXItcHJvY2VzcyBpbiBNYXJjDQo7OyBB bmRyZWVzc2VuJ3MgaHRtbC1tb2RlIChMQ0QgbW9kZXMvaHRtbC1tb2RlLmVs LlopLiAgU2VlIGFsc28gdGhlDQo7OyBmZmFwLmVsIHBhY2thZ2UuICBUaGUg aHVnZSBoeXBlcmJvbGUgcGFja2FnZSBhbHNvIGNvbnRhaW5zIHNpbWlsYXIN Cjs7IGZ1bmN0aW9ucy4NCg0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7OyBI ZWxwIQ0KDQo7OyBDYW4geW91IHdyaXRlIGFuZCB0ZXN0IHNvbWUgY29kZSBm b3IgdGhlIE1hY2ludG9zaCBhbmQgV2luZG93cw0KOzsgTW96aWxsYSByZW1v dGUgY29udHJvbCBBUElzPyAgKFNlZSB0aGUgVVJMIGFib3ZlKS4NCg0KOzsg RG8gYW55IG90aGVyIGJyb3dzZXJzIGhhdmUgcmVtb3RlIGNvbnRyb2w/DQoN Cjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOzsgVXNhZ2UNCg0KOzsgVG8gZGlz cGxheSB0aGUgVVJMIGF0IG9yIGJlZm9yZSBwb2ludDoNCjs7IE0teCBicm93 c2UtdXJsLWF0LXBvaW50IFJFVA0KOzsgb3IsIHNpbWlsYXJseSBidXQgd2l0 aCB0aGUgb3Bwb3J0dW5pdHkgdG8gZWRpdCB0aGUgVVJMIGV4dHJhY3RlZCBm cm9tDQo7OyB0aGUgYnVmZmVyLCB1c2U6DQo7OyBNLXggYnJvd3NlLXVybA0K DQo7OyBUbyBkaXNwbGF5IGEgVVJMIGJ5IHNoaWZ0LWNsaWNraW5nIG9uIGl0 LCBwdXQgdGhpcyBpbiB5b3VyIH4vLmVtYWNzDQo7OyBmaWxlOg0KOzsgICAg ICAoZ2xvYmFsLXNldC1rZXkgW1MtbW91c2UtMl0gJ2Jyb3dzZS11cmwtYXQt bW91c2UpDQo7OyAoTm90ZSB0aGF0IHVzaW5nIFNoaWZ0LW1vdXNlLTEgaXMg bm90IGRlc2lyYWJsZSBiZWNhdXNlDQo7OyB0aGF0IGV2ZW50IGhhcyBhIHN0 YW5kYXJkIG1lYW5pbmcgaW4gRW1hY3MuKQ0KDQo7OyBUbyBkaXNwbGF5IHRo ZSBjdXJyZW50IGJ1ZmZlciBpbiBhIHdlYiBicm93c2VyOg0KOzsgTS14IGJy b3dzZS11cmwtb2YtYnVmZmVyIFJFVA0KDQo7OyBUbyBkaXNwbGF5IHRoZSBj dXJyZW50IHJlZ2lvbiBpbiBhIHdlYiBicm93c2VyOg0KOzsgTS14IGJyb3dz ZS11cmwtb2YtcmVnaW9uIFJFVA0KDQo7OyBJbiBEaXJlZCwgdG8gZGlzcGxh eSB0aGUgZmlsZSBuYW1lZCBvbiB0aGUgY3VycmVudCBsaW5lOg0KOzsgTS14 IGJyb3dzZS11cmwtb2YtZGlyZWQtZmlsZSBSRVQNCg0KOzs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7DQo7OyBDdXN0b21pc2F0aW9uICh+Ly5lbWFjcykNCg0KOzsg VG8gc2VlIHdoYXQgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUgZm9yIGN1c3Rv bWl6YXRpb24sIHR5cGUNCjs7IGBNLXggc2V0LXZhcmlhYmxlIGJyb3dzZS11 cmwgVEFCJy4gIEJldHRlciwgdXNlDQo7OyBgTS14IGN1c3RvbWl6ZS1ncm91 cCBicm93c2UtdXJsJy4NCg0KOzsgQmluZCB0aGUgYnJvd3NlLXVybCBjb21t YW5kcyB0byBrZXlzIHdpdGggdGhlIGBDLWMgQy16JyBwcmVmaXgNCjs7IChh cyB1c2VkIGJ5IGh0bWwtaGVscGVyLW1vZGUpOg0KOzsJKGdsb2JhbC1zZXQt a2V5ICJcQy1jXEMtei4iICdicm93c2UtdXJsLWF0LXBvaW50KQ0KOzsJKGds b2JhbC1zZXQta2V5ICJcQy1jXEMtemIiICdicm93c2UtdXJsLW9mLWJ1ZmZl cikNCjs7CShnbG9iYWwtc2V0LWtleSAiXEMtY1xDLXpyIiAnYnJvd3NlLXVy bC1vZi1yZWdpb24pDQo7OwkoZ2xvYmFsLXNldC1rZXkgIlxDLWNcQy16dSIg J2Jyb3dzZS11cmwpDQo7OwkoZ2xvYmFsLXNldC1rZXkgIlxDLWNcQy16diIg J2Jyb3dzZS11cmwtb2YtZmlsZSkNCjs7CShhZGQtaG9vayAnZGlyZWQtbW9k ZS1ob29rDQo7OwkJICAobGFtYmRhICgpDQo7OwkgICAgICAgICAgICAgKGxv Y2FsLXNldC1rZXkgIlxDLWNcQy16ZiIgJ2Jyb3dzZS11cmwtb2YtZGlyZWQt ZmlsZSkpKQ0KDQo7OyBCcm93c2UgVVJMcyBpbiBtYWlsIG1lc3NhZ2VzIHVu ZGVyIFJNQUlMIGJ5IGNsaWNraW5nIG1vdXNlLTI6DQo7OwkoYWRkLWhvb2sg J3JtYWlsLW1vZGUtaG9vayAobGFtYmRhICgpIDsgcm1haWwtbW9kZSBzdGFy dHVwDQo7OwkgIChkZWZpbmUta2V5IHJtYWlsLW1vZGUtbWFwIFttb3VzZS0y XSAnYnJvd3NlLXVybC1hdC1tb3VzZSkpKQ0KOzsgQWx0ZXJuYXRpdmVseSwg YWRkIGBnb3RvLWFkZHJlc3MnIHRvIGBybWFpbC1zaG93LW1lc3NhZ2UtaG9v aycuDQoNCjs7IEdudXMgcHJvdmlkZXMgYSBzdGFuZGFyZCBmZWF0dXJlIHRv IGFjdGl2YXRlIFVSTHMgaW4gYXJ0aWNsZQ0KOzsgYnVmZmVycyBmb3IgaW52 b2NhdGlvbiBvZiBicm93c2UtdXJsLg0KDQo7OyBVc2UgdGhlIEVtYWNzIHcz IGJyb3dzZXIgd2hlbiBub3QgcnVubmluZyB1bmRlciBYMTE6DQo7Owkob3Ig KGVxIHdpbmRvdy1zeXN0ZW0gJ3gpDQo7OwkgICAgKHNldHEgYnJvd3NlLXVy bC1icm93c2VyLWZ1bmN0aW9uICdicm93c2UtdXJsLXczKSkNCg0KOzsgVG8g YWx3YXlzIHNhdmUgbW9kaWZpZWQgYnVmZmVycyBiZWZvcmUgZGlzcGxheWlu ZyB0aGUgZmlsZSBpbiBhIGJyb3dzZXI6DQo7Owkoc2V0cSBicm93c2UtdXJs LXNhdmUtZmlsZSB0KQ0KDQo7OyBUbyBpbnZva2UgZGlmZmVyZW50IGJyb3dz ZXJzIGZvciBkaWZmZXJlbnQgVVJMczoNCjs7ICAgICAgKHNldHEgYnJvd3Nl LXVybC1icm93c2VyLWZ1bmN0aW9uICcoKCJebWFpbHRvOiIgLiBicm93c2Ut dXJsLW1haWwpDQo7OwkJCQkgICAgKCIuIiAuIGJyb3dzZS11cmwtZ2VuZXJp YykpKQ0KDQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCjs7OyBDb2RlOg0KDQo7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCjs7IFZhcmlhYmxlcw0KDQooZXZhbC13 aGVuLWNvbXBpbGUgKHJlcXVpcmUgJ3RoaW5nYXRwdCkNCiAgICAgICAgICAg ICAgICAgICAocmVxdWlyZSAndGVybSkNCgkJICAgKHJlcXVpcmUgJ2RpcmVk KQ0KCQkgICAocmVxdWlyZSAndzMtYXV0byBuaWwgdCkpDQoNCihkZWZncm91 cCBicm93c2UtdXJsIG5pbA0KICAiVXNlIGEgd2ViIGJyb3dzZXIgdG8gbG9v ayBhdCBhIFVSTC4iDQogIDpwcmVmaXggImJyb3dzZS11cmwtIg0KICA6bGlu ayAnKGVtYWNzLWNvbW1lbnRhcnktbGluayAiYnJvd3NlLXVybCIpDQogIDpn cm91cCAnaHlwZXJtZWRpYSkNCg0KOzs7IyMjYXV0b2xvYWQNCihkZWZjdXN0 b20gYnJvd3NlLXVybC1icm93c2VyLWZ1bmN0aW9uDQogIChpZiAobWVtcSBz eXN0ZW0tdHlwZSAnKHdpbmRvd3MtbnQgbXMtZG9zKSkNCiAgICAgICdicm93 c2UtdXJsLWRlZmF1bHQtd2luZG93cy1icm93c2VyDQogICAgJ2Jyb3dzZS11 cmwtZ2VuZXJpYykNCiAgIipGdW5jdGlvbiB0byBkaXNwbGF5IHRoZSBjdXJy ZW50IGJ1ZmZlciBpbiBhIFdXVyBicm93c2VyLg0KVGhpcyBpcyB1c2VkIGJ5 IHRoZSBgYnJvd3NlLXVybC1hdC1wb2ludCcsIGBicm93c2UtdXJsLWF0LW1v dXNlJywgYW5kDQpgYnJvd3NlLXVybC1vZi1maWxlJyBjb21tYW5kcy4NCg0K SWYgdGhlIHZhbHVlIGlzIG5vdCBhIGZ1bmN0aW9uIGl0IHNob3VsZCBiZSBh IGxpc3Qgb2YgcGFpcnMNClwoUkVHRVhQIC4gRlVOQ1RJT04pLiAgSW4gdGhp cyBjYXNlIHRoZSBmdW5jdGlvbiBjYWxsZWQgd2lsbCBiZSB0aGUgb25lDQph c3NvY2lhdGVkIHdpdGggdGhlIGZpcnN0IFJFR0VYUCB3aGljaCBtYXRjaGVz IHRoZSBjdXJyZW50IFVSTC4gIFRoZQ0KZnVuY3Rpb24gaXMgcGFzc2VkIHRo ZSBVUkwgYW5kIGFueSBvdGhlciBhcmdzIG9mIGBicm93c2UtdXJsJy4gIFRo ZSBsYXN0DQpyZWdleHAgc2hvdWxkIHByb2JhYmx5IGJlIFwiLlwiIHRvIHNw ZWNpZnkgYSBkZWZhdWx0IGJyb3dzZXIuIg0KICA6dHlwZSAnKGNob2ljZQ0K CSAgKGZ1bmN0aW9uLWl0ZW0gOnRhZyAiRW1hY3MgVzMiIDp2YWx1ZSAgYnJv d3NlLXVybC13MykNCgkgIChmdW5jdGlvbi1pdGVtIDp0YWcgIlczIGluIGFu b3RoZXIgRW1hY3MgdmlhIGBnbnVkb2l0JyINCgkJCSA6dmFsdWUgIGJyb3dz ZS11cmwtdzMtZ251ZG9pdCkNCgkgIChmdW5jdGlvbi1pdGVtIDp0YWcgIk1v c2FpYyIgOnZhbHVlICBicm93c2UtdXJsLW1vc2FpYykNCgkgIChmdW5jdGlv bi1pdGVtIDp0YWcgIk1vc2FpYyB1c2luZyBDQ0kiIDp2YWx1ZSAgYnJvd3Nl LXVybC1jY2kpDQoJICAoZnVuY3Rpb24taXRlbSA6dGFnICJMeW54IGluIGFu IEVtYWNzIHdpbmRvdyINCgkJCSA6dmFsdWUgYnJvd3NlLXVybC1seW54LWVt YWNzKQ0KCSAgKGZ1bmN0aW9uLWl0ZW0gOnRhZyAiU3BlY2lmaWVkIGJ5IGBC cm93c2UgVXJsIEdlbmVyaWMgUHJvZ3JhbSciDQoJCQkgOnZhbHVlIGJyb3dz ZS11cmwtZ2VuZXJpYykNCgkgIChmdW5jdGlvbi1pdGVtIDp0YWcgIkRlZmF1 bHQgV2luZG93cyBicm93c2VyIg0KCQkJIDp2YWx1ZSBicm93c2UtdXJsLWRl ZmF1bHQtd2luZG93cy1icm93c2VyKQ0KCSAgKGZ1bmN0aW9uIDp0YWcgIllv dXIgb3duIGZ1bmN0aW9uIikNCgkgIChhbGlzdCA6dGFnICJSZWdleHAvZnVu Y3Rpb24gYXNzb2NpYXRpb24gbGlzdCINCgkJIDprZXktdHlwZSByZWdleHAg OnZhbHVlLXR5cGUgZnVuY3Rpb24pKQ0KICA6dmVyc2lvbiAiMjEuMSINCiAg Omdyb3VwICdicm93c2UtdXJsKQ0KDQo7OzsjIyNhdXRvbG9hZA0KKGRlZmN1 c3RvbSBicm93c2UtdXJsLW5ldy13aW5kb3ctZmxhZyBuaWwNCiAgIipJZiBu b24tbmlsLCBhbHdheXMgb3BlbiBhIG5ldyBicm93c2VyIHdpbmRvdyB3aXRo IGFwcHJvcHJpYXRlIGJyb3dzZXJzLg0KUGFzc2luZyBhbiBpbnRlcmFjdGl2 ZSBhcmd1bWVudCB0byBcXFticm93c2UtdXJsXSwgb3Igc3BlY2lmaWMgYnJv d3Nlcg0KY29tbWFuZHMgcmV2ZXJzZXMgdGhlIGVmZmVjdCBvZiB0aGlzIHZh cmlhYmxlLiAgUmVxdWlyZXMgTmV0c2NhcGUgdmVyc2lvbg0KMS4xTiBvciBs YXRlciBvciBYTW9zYWljIHZlcnNpb24gMi41IG9yIGxhdGVyIGlmIHVzaW5n IHRob3NlIGJyb3dzZXJzLiINCiAgOnR5cGUgJ2Jvb2xlYW4NCiAgOmdyb3Vw ICdicm93c2UtdXJsKQ0KDQooZGVmY3VzdG9tIGJyb3dzZS11cmwtbW9zYWlj LXByb2dyYW0gInhtb3NhaWMiDQogICJUaGUgbmFtZSBieSB3aGljaCB0byBp bnZva2UgTW9zYWljIChvciBtTW9zYWljKS4iDQogIDp0eXBlICdzdHJpbmcN CiAgOnZlcnNpb24gIjIwLjMiDQogIDpncm91cCAnYnJvd3NlLXVybCkNCg0K KGRlZmN1c3RvbSBicm93c2UtdXJsLW1vc2FpYy1hcmd1bWVudHMgbmlsDQog ICJBIGxpc3Qgb2Ygc3RyaW5ncyB0byBwYXNzIHRvIE1vc2FpYyBhcyBhcmd1 bWVudHMuIg0KICA6dHlwZSAnKHJlcGVhdCAoc3RyaW5nIDp0YWcgIkFyZ3Vt ZW50IikpDQogIDpncm91cCAnYnJvd3NlLXVybCkNCg0KKGRlZmN1c3RvbSBi cm93c2UtdXJsLWZpbGVuYW1lLWFsaXN0DQogIChcYAkJCQkJOyBCYWNrcXVv dGUgc3ludGF4IHdvbid0IHdvcmsuDQogICAoKCJeL1xcKGZ0cEBcXHxhbm9u eW1vdXNAXFwpP1xcKFteOl0rXFwpOi8qIiAuICJmdHA6Ly9cXDIvIikNCiAg ICA7OyBUaGUgYWJvdmUgbG9zZXMgdGhlIHVzZXJuYW1lIHRvIGF2b2lkIHRo ZSBicm93c2VyIHByb21wdGluZyBmb3INCiAgICA7OyBpdCBpbiBhbm9ueW1v dXMgY2FzZXMuICBJZiBpdCdzIG5vdCBhbm9ueW1vdXMgdGhlIG5leHQgcmVn ZXhwDQogICAgOzsgYXBwbGllcy4NCiAgICAoIl4vXFwoW146QF0rQFxcKT9c XChbXjpdK1xcKTovKiIgLiAiZnRwOi8vXFwxXFwyLyIpDQogICAgKCxAIChp ZiAobWVtcSBzeXN0ZW0tdHlwZSAnKHdpbmRvd3MtbnQgbXMtZG9zKSkNCgkg ICAgJygoIl5cXChbYS16QS1aXTpcXClbXFwvXSIgLiAiZmlsZTpcXDEvIikN CiAgICAgICAgICAgICAgKCJeW1xcL11bXFwvXSsiIC4gImZpbGU6Ly8iKSkp KQ0KICAgICgiXi8rIiAuICJmaWxlOi8iKSkpDQogICJBbiBhbGlzdCBvZiAo UkVHRVhQIC4gU1RSSU5HKSBwYWlycyB1c2VkIGJ5IGBicm93c2UtdXJsLW9m LWZpbGUnLg0KQW55IHN1YnN0cmluZyBvZiBhIGZpbGVuYW1lIG1hdGNoaW5n IG9uZSBvZiB0aGUgUkVHRVhQcyBpcyByZXBsYWNlZCBieQ0KdGhlIGNvcnJl c3BvbmRpbmcgU1RSSU5HIHVzaW5nIGByZXBsYWNlLW1hdGNoJywgbm90IHRy ZWF0aW5nIFNUUklORw0KbGl0ZXJhbGx5LiAgQWxsIHBhaXJzIGFyZSBhcHBs aWVkIGluIHRoZSBvcmRlciBnaXZlbi4gIFRoZSBkZWZhdWx0DQp2YWx1ZSBj b252ZXJ0cyBhbmdlLWZ0cC9FRlMtc3R5bGUgcGF0aHMgaW50byBmdHAgVVJM cyBhbmQgcHJlcGVuZHMNCmBmaWxlOicgdG8gYW55IHBhdGggYmVnaW5uaW5n IHdpdGggYC8nLg0KDQpGb3IgZXhhbXBsZSwgYWRkaW5nIHRvIHRoZSBkZWZh dWx0IGEgc3BlY2lmaWMgdHJhbnNsYXRpb24gb2YgYW4gYW5nZS1mdHANCmFk ZHJlc3MgdG8gYW4gSFRUUCBVUkw6DQoNCiAgICAoc2V0cSBicm93c2UtdXJs LWZpbGVuYW1lLWFsaXN0DQoJICAnKChcIi93ZWJtYXN0ZXJAd2Vic2VydmVy Oi9ob21lL3d3dy9odG1sL1wiIC4NCgkgICAgIFwiaHR0cDovL3d3dy5hY21l LmNvLnVrL1wiKQ0KICAgICAgICAgICAgKFwiXi9cXChmdHBAXFx8YW5vbnlt b3VzQFxcKT9cXChbXjpdK1xcKTovKlwiIC4gXCJmdHA6Ly9cXDIvXCIpDQog ICAgICAgICAgICAoXCJeL1xcKFteOkBdK0BcXCk/XFwoW146XStcXCk6Lypc IiAuIFwiZnRwOi8vXFwxXFwyL1wiKQ0KCSAgICAoXCJeLytcIiAuIFwiZmls ZTovXCIpKSkNCiINCiAgOnR5cGUgJyhyZXBlYXQgKGNvbnMgOmZvcm1hdCAi JXYiDQogICAgICAgICAgICAgICAgICAgICAgIChyZWdleHAgOnRhZyAiUmVn ZXhwIikNCiAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZyA6dGFnICJS ZXBsYWNlbWVudCIpKSkNCiAgOnZlcnNpb24gIjIwLjMiDQogIDpncm91cCAn YnJvd3NlLXVybCkNCg0KOzs7IyMjYXV0b2xvYWQNCihkZWZjdXN0b20gYnJv d3NlLXVybC1zYXZlLWZpbGUgbmlsDQogICIqSWYgbm9uLW5pbCwgc2F2ZSB0 aGUgYnVmZmVyIGJlZm9yZSBkaXNwbGF5aW5nIGl0cyBmaWxlLg0KVXNlZCBi eSB0aGUgYGJyb3dzZS11cmwtb2YtZmlsZScgY29tbWFuZC4iDQogIDp0eXBl ICdib29sZWFuDQogIDpncm91cCAnYnJvd3NlLXVybCkNCg0KKGRlZmN1c3Rv bSBicm93c2UtdXJsLW9mLWZpbGUtaG9vayBuaWwNCiAgIlJ1biBhZnRlciBg YnJvd3NlLXVybC1vZi1maWxlJyBoYXMgYXNrZWQgYSBicm93c2VyIHRvIGxv YWQgYSBmaWxlLiINCiAgOnR5cGUgJ2hvb2sNCiAgOmdyb3VwICdicm93c2Ut dXJsKQ0KDQooZGVmdmFyIGJyb3dzZS11cmwtdXNyMS1zaWduYWwNCiAgKGlm IChhbmQgKGJvdW5kcCAnZW1hY3MtbWFqb3ItdmVyc2lvbikNCgkgICAob3Ig KD4gZW1hY3MtbWFqb3ItdmVyc2lvbiAxOSkgKD49IGVtYWNzLW1pbm9yLXZl cnNpb24gMjkpKSkNCiAgICAgICdTSUdVU1IxIDsgV2h5IGRpZCBJIHRoaW5r IHRoaXMgd2FzIGluIGxvd2VyIGNhc2UgYmVmb3JlPw0KICAgIDMwKQkJCQkJ OyBDaGVjayAvdXNyL2luY2x1ZGUvc2lnbmFsLmguDQogICJUaGUgYXJndW1l bnQgdG8gYHNpZ25hbC1wcm9jZXNzJyBmb3Igc2VuZGluZyBTSUdVU1IxIHRv IFhNb3NhaWMuDQpFbWFjcyAxOS4yOSBhY2NlcHRzICdTSUdVU1IxLCBlYXJs aWVyIHZlcnNpb25zIHJlcXVpcmUgYW4gaW50ZWdlcg0Kd2hpY2ggaXMgMzAg b24gU3VuT1MgYW5kIDE2IG9uIEhQLVVYIGFuZCBTb2xhcmlzLiIpDQoNCihk ZWZjdXN0b20gYnJvd3NlLXVybC1DQ0ktcG9ydCAzMDAzDQogICJQb3J0IHRv IGFjY2VzcyBYTW9zYWljIHZpYSBDQ0kuDQpUaGlzIGNhbiBiZSBhbnkgbnVt YmVyIGJldHdlZW4gMTAyNCBhbmQgNjU1MzUgYnV0IG11c3QgY29ycmVzcG9u ZCB0bw0KdGhlIHZhbHVlIHNldCBpbiB0aGUgYnJvd3Nlci4iDQogIDp0eXBl ICdpbnRlZ2VyDQogIDpncm91cCAnYnJvd3NlLXVybCkNCg0KKGRlZmN1c3Rv bSBicm93c2UtdXJsLUNDSS1ob3N0ICJsb2NhbGhvc3QiDQogICIqSG9zdCB0 byBhY2Nlc3MgWE1vc2FpYyB2aWEgQ0NJLg0KVGhpcyBzaG91bGQgYmUgdGhl IGhvc3QgbmFtZSBvZiB0aGUgbWFjaGluZSBydW5uaW5nIFhNb3NhaWMgd2l0 aCBDQ0kNCmVuYWJsZWQuICBUaGUgcG9ydCBudW1iZXIgc2hvdWxkIGJlIHNl dCBpbiBgYnJvd3NlLXVybC1DQ0ktcG9ydCcuIg0KICA6dHlwZSAnc3RyaW5n DQogIDpncm91cCAnYnJvd3NlLXVybCkNCg0KKGRlZnZhciBicm93c2UtdXJs LXRlbXAtZmlsZS1uYW1lIG5pbCkNCihtYWtlLXZhcmlhYmxlLWJ1ZmZlci1s b2NhbCAnYnJvd3NlLXVybC10ZW1wLWZpbGUtbmFtZSkNCg0KKGRlZmN1c3Rv bSBicm93c2UtdXJsLWx5bngtZW1hY3MtYXJncyAoYW5kIChub3Qgd2luZG93 LXN5c3RlbSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnKCItc2hvd19jdXJzb3IiKSkNCiAgIkEgbGlzdCBvZiBzdHJp bmdzIGRlZmluaW5nIG9wdGlvbnMgZm9yIEx5bnggaW4gYW4gRW1hY3MgYnVm ZmVyLg0KDQpUaGUgZGVmYXVsdCBpcyBub25lIGluIGEgd2luZG93IHN5c3Rl bSwgb3RoZXJ3aXNlIGAtc2hvd19jdXJzb3InIHRvDQppbmRpY2F0ZSB0aGUg cG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgbGluayBpbiB0aGUgYWJzZW5jZSBv Zg0KaGlnaGxpZ2h0aW5nLCBhc3N1bWluZyB0aGUgbm9ybWFsIGRlZmF1bHQg Zm9yIHNob3dpbmcgdGhlIGN1cnNvci4iDQogIDp0eXBlICcocmVwZWF0IChz dHJpbmcgOnRhZyAiQXJndW1lbnQiKSkNCiAgOnZlcnNpb24gIjIwLjMiDQog IDpncm91cCAnYnJvd3NlLXVybCkNCg0KKGRlZmN1c3RvbSBicm93c2UtdXJs LWdudWRvaXQtcHJvZ3JhbSAiZ251ZG9pdCINCiAgIlRoZSBuYW1lIG9mIHRo ZSBgZ251ZG9pdCcgcHJvZ3JhbSB1c2VkIGJ5IGBicm93c2UtdXJsLXczLWdu dWRvaXQnLiINCiAgOnR5cGUgJ3N0cmluZw0KICA6Z3JvdXAgJ2Jyb3dzZS11 cmwpDQoNCihkZWZjdXN0b20gYnJvd3NlLXVybC1nbnVkb2l0LWFyZ3MgJygi LXEiKQ0KICAiKkEgbGlzdCBvZiBzdHJpbmdzIGRlZmluaW5nIG9wdGlvbnMg Zm9yIGBicm93c2UtdXJsLWdudWRvaXQtcHJvZ3JhbScuDQpUaGVzZSBtaWdo dCBzZXQgdGhlIHBvcnQsIGZvciBpbnN0YW5jZS4iDQogIDp0eXBlICcocmVw ZWF0IChzdHJpbmcgOnRhZyAiQXJndW1lbnQiKSkNCiAgOmdyb3VwICdicm93 c2UtdXJsKQ0KDQo7OzsjIyNhdXRvbG9hZA0KKGRlZmN1c3RvbSBicm93c2Ut dXJsLWdlbmVyaWMtcHJvZ3JhbSAiaHRtbHZpZXciDQogICIqVGhlIG5hbWUg b2YgdGhlIGJyb3dzZXIgcHJvZ3JhbSB1c2VkIGJ5IGBicm93c2UtdXJsLWdl bmVyaWMnLiINCiAgOnR5cGUgJyhjaG9pY2Ugc3RyaW5nIChjb25zdCA6dGFn ICJOb25lIiBuaWwpKQ0KICA6Z3JvdXAgJ2Jyb3dzZS11cmwpDQoNCihkZWZj dXN0b20gYnJvd3NlLXVybC1nZW5lcmljLWFyZ3MgIiINCiAgIipBIHN0cmlu ZyBkZWZpbmluZyBvcHRpb25zIGZvciBgYnJvd3NlLXVybC1nZW5lcmljLXBy b2dyYW0nLiINCiAgOnR5cGUgJ3N0cmluZw0KICA6Z3JvdXAgJ2Jyb3dzZS11 cmwpDQoNCihkZWZjdXN0b20gYnJvd3NlLXVybC10ZW1wLWRpciB0ZW1wb3Jh cnktZmlsZS1kaXJlY3RvcnkNCiAgIlRoZSBuYW1lIG9mIGEgZGlyZWN0b3J5 IGZvciBicm93c2UtdXJsJ3MgdGVtcG9yYXJ5IGZpbGVzLg0KU3VjaCBmaWxl cyBhcmUgZ2VuZXJhdGVkIGJ5IGZ1bmN0aW9ucyBsaWtlIGBicm93c2UtdXJs LW9mLXJlZ2lvbicuDQpZb3UgbWlnaHQgd2FudCB0byBzZXQgdGhpcyB0byBz b21ld2hlcmUgd2l0aCByZXN0cmljdGVkIHJlYWQgcGVybWlzc2lvbnMNCmZv ciBwcml2YWN5J3Mgc2FrZS4iDQogIDp0eXBlICdzdHJpbmcNCiAgOmdyb3Vw ICdicm93c2UtdXJsKQ0KDQooZGVmY3VzdG9tIGJyb3dzZS11cmwtbHlueC1p bnB1dC1maWVsZCAnYXZvaWQNCiAgIipBY3Rpb24gb24gc2VsZWN0aW5nIGFu IGV4aXN0aW5nIEx5bnggYnVmZmVyIGF0IGFuIGlucHV0IGZpZWxkLg0KV2hh dCB0byBkbyB3aGVuIHNlbmRpbmcgYSBuZXcgVVJMIHRvIGFuIGV4aXN0aW5n IEx5bnggYnVmZmVyIGluIEVtYWNzDQppZiB0aGUgTHlueCBjdXJzb3IgaXMg b24gYW4gaW5wdXQgZmllbGQgKGluIHdoaWNoIGNhc2UgdGhlIGBnJyBjb21t YW5kDQp3b3VsZCBiZSBlbnRlcmVkIGFzIGRhdGEpLiAgU3VjaCBmaWVsZHMg YXJlIHJlY29nbml6ZWQgYnkgdGhlDQp1bmRlcmxpbmVzIF9fX18uICBBbGxv d2VkIHZhbHVlczogbmlsOiBkaXNyZWdhcmQgaXQsICd3YXJuOiB3YXJuIHRo ZQ0KdXNlciBhbmQgZG9uJ3QgZW1pdCB0aGUgVVJMLCAnYXZvaWQ6IHRyeSB0 byBhdm9pZCB0aGUgZmllbGQgYnkgbW92aW5nDQpkb3duICh0aGlzICp3b24n dCogYWx3YXlzIHdvcmspLiINCiAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0 YWcgIk1vdmUgdG8gdHJ5IHRvIGF2b2lkIGZpZWxkIiA6dmFsdWUgYXZvaWQp DQogICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJEaXNyZWdhcmQiIDp2 YWx1ZSBuaWwpDQogICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJXYXJu LCBkb24ndCBlbWl0IFVSTCIgOnZhbHVlIHdhcm4pKQ0KICA6dmVyc2lvbiAi MjAuMyINCiAgOmdyb3VwICdicm93c2UtdXJsKQ0KDQooZGVmdmFyIGJyb3dz ZS11cmwtbHlueC1pbnB1dC1hdHRlbXB0cyAxMA0KICAiKkhvdyBtYW55IHRp bWVzIHRvIHRyeSB0byBtb3ZlIGRvd24gZnJvbSBhIHNlcmllcyBvZiBseW54 IGlucHV0IGZpZWxkcy4iKQ0KDQooZGVmY3VzdG9tIGJyb3dzZS11cmwtbHlu eC1pbnB1dC1kZWxheSAwLjINCiAgIkhvdyBtYW55IHNlY29uZHMgdG8gd2Fp dCBmb3IgbHlueCBiZXR3ZWVuIG1vdmVzIGRvd24gZnJvbSBhbiBpbnB1dCBm aWVsZC4iKQ0KDQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCjs7IFVSTCBpbnB1 dA0KDQooZGVmdW4gYnJvd3NlLXVybC11cmwtYXQtcG9pbnQgKCkNCiAgKGxl dCAoKHVybCAodGhpbmctYXQtcG9pbnQgJ3VybCkpKQ0KICAgIChzZXQtdGV4 dC1wcm9wZXJ0aWVzIDAgKGxlbmd0aCB1cmwpIG5pbCB1cmwpDQogICAgdXJs KSkNCg0KOzsgSGF2aW5nIHRoaXMgYXMgYSBzZXBhcmF0ZSBmdW5jdGlvbiBj YWxsZWQgYnkgdGhlIGJyb3dzZXItc3BlY2lmaWMNCjs7IGZ1bmN0aW9ucyBh bGxvd3MgdGhlbSB0byBiZSBzdGFuZC1hbG9uZSBjb21tYW5kcywgbWFraW5n IGl0IGVhc2llcg0KOzsgdG8gc3dpdGNoIGJldHdlZW4gYnJvd3NlcnMuDQoN CihkZWZ1biBicm93c2UtdXJsLWludGVyYWN0aXZlLWFyZyAocHJvbXB0KQ0K ICAiUmVhZCBhIFVSTCBmcm9tIHRoZSBtaW5pYnVmZmVyLCBwcm9tcHRpbmcg d2l0aCBQUk9NUFQuDQpEZWZhdWx0IHRvIHRoZSBVUkwgYXQgb3IgYmVmb3Jl IHBvaW50LiAgSWYgaW52b2tlZCB3aXRoIGEgbW91c2UgYnV0dG9uLA0Kc2V0 IHBvaW50IHRvIHRoZSBwb3NpdGlvbiBjbGlja2VkIGZpcnN0LiAgUmV0dXJu IGEgbGlzdCBmb3IgdXNlIGluDQpgaW50ZXJhY3RpdmUnIGNvbnRhaW5pbmcg dGhlIFVSTCBhbmQgYGJyb3dzZS11cmwtbmV3LXdpbmRvdy1mbGFnJyBvciBp dHMNCm5lZ2F0aW9uIGlmIGEgcHJlZml4IGFyZ3VtZW50IHdhcyBnaXZlbi4i DQogIChsZXQgKChldmVudCAoZWx0ICh0aGlzLWNvbW1hbmQta2V5cykgMCkp KQ0KICAgIChhbmQgKGxpc3RwIGV2ZW50KSAobW91c2Utc2V0LXBvaW50IGV2 ZW50KSkpDQogIChsaXN0IChyZWFkLXN0cmluZyBwcm9tcHQgKGJyb3dzZS11 cmwtdXJsLWF0LXBvaW50KSkNCgkobm90IChlcSAobnVsbCBicm93c2UtdXJs LW5ldy13aW5kb3ctZmxhZykNCgkJIChudWxsIGN1cnJlbnQtcHJlZml4LWFy ZykpKSkpDQoNCjs7IGludGVyYWN0aXZlLXAgbmVlZHMgdG8gYmUgY2FsbGVk IGF0IGEgZnVuY3Rpb24ncyB0b3AtbGV2ZWwsIGhlbmNlDQo7OyB0aGUgbWFj cm8uDQooZGVmbWFjcm8gYnJvd3NlLXVybC1tYXliZS1uZXctd2luZG93IChh cmcpDQogIGAoaWYgKGludGVyYWN0aXZlLXApDQogICAgICAgLGFyZw0KICAg ICBicm93c2UtdXJsLW5ldy13aW5kb3ctZmxhZykpDQoNCjs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ow0KOzsgQnJvd3NlIGN1cnJlbnQgYnVmZmVyDQoNCjs7OyMj I2F1dG9sb2FkDQooZGVmdW4gYnJvd3NlLXVybC1vZi1maWxlICgmb3B0aW9u YWwgZmlsZSkNCiAgIkFzayBhIFdXVyBicm93c2VyIHRvIGRpc3BsYXkgRklM RS4NCkRpc3BsYXkgdGhlIGN1cnJlbnQgYnVmZmVyJ3MgZmlsZSBpZiBGSUxF IGlzIG5pbCBvciBpZiBjYWxsZWQNCmludGVyYWN0aXZlbHkuICBUdXJuIHRo ZSBmaWxlbmFtZSBpbnRvIGEgVVJMIHdpdGggZnVuY3Rpb24NCmBicm93c2Ut dXJsLWZpbGUtdXJsJy4gIFBhc3MgdGhlIFVSTCB0byBhIGJyb3dzZXIgdXNp bmcgdGhlDQpgYnJvd3NlLXVybCcgZnVuY3Rpb24gdGhlbiBydW4gYGJyb3dz ZS11cmwtb2YtZmlsZS1ob29rJy4iDQogIChpbnRlcmFjdGl2ZSkNCiAgKG9y IGZpbGUNCiAgICAgIChzZXRxIGZpbGUgKGJ1ZmZlci1maWxlLW5hbWUpKQ0K ICAgICAgKGVycm9yICJDdXJyZW50IGJ1ZmZlciBoYXMgbm8gZmlsZSIpKQ0K ICAobGV0ICgoYnVmIChnZXQtZmlsZS1idWZmZXIgZmlsZSkpKQ0KICAgIChp ZiBidWYNCgkoc2F2ZS1leGN1cnNpb24NCgkgIChzZXQtYnVmZmVyIGJ1ZikN CgkgIChjb25kICgobm90IChidWZmZXItbW9kaWZpZWQtcCkpKQ0KCQkoYnJv d3NlLXVybC1zYXZlLWZpbGUgKHNhdmUtYnVmZmVyKSkNCgkJKHQgKG1lc3Nh Z2UgIiVzIG1vZGlmaWVkIHNpbmNlIGxhc3Qgc2F2ZSIgZmlsZSkpKSkpKQ0K ICAoYnJvd3NlLXVybCAoYnJvd3NlLXVybC1maWxlLXVybCBmaWxlKSkNCiAg KHJ1bi1ob29rcyAnYnJvd3NlLXVybC1vZi1maWxlLWhvb2spKQ0KDQooZGVm dW4gYnJvd3NlLXVybC1maWxlLXVybCAoZmlsZSkNCiAgIlJldHVybiB0aGUg VVJMIGNvcnJlc3BvbmRpbmcgdG8gRklMRS4NClVzZSB2YXJpYWJsZSBgYnJv d3NlLXVybC1maWxlbmFtZS1hbGlzdCcgdG8gbWFwIGZpbGVuYW1lcyB0byBV UkxzLiINCiAgOzsgVVJMLWVuY29kZSBzcGVjaWFsIGNoYXJzLCBkbyAlIGZp cnN0DQogIChsZXQgKChzIDApKQ0KICAgICh3aGlsZSAoc2V0cSBzIChzdHJp bmctbWF0Y2ggIiUiIGZpbGUgcykpDQogICAgICAoc2V0cSBmaWxlIChyZXBs YWNlLW1hdGNoICIlMjUiIHQgdCBmaWxlKQ0KCSAgICBzICgxKyBzKSkpKQ0K ICAod2hpbGUgKHN0cmluZy1tYXRjaCAiWypcIigpJyw9Oz8gXSIgZmlsZSkN CiAgICAobGV0ICgoZW5jIChmb3JtYXQgIiUlJXgiIChhcmVmIGZpbGUgKG1h dGNoLWJlZ2lubmluZyAwKSkpKSkNCiAgICAgIChzZXRxIGZpbGUgKHJlcGxh Y2UtbWF0Y2ggZW5jIHQgdCBmaWxlKSkpKQ0KICAoZG9saXN0IChtYXAgYnJv d3NlLXVybC1maWxlbmFtZS1hbGlzdCkNCiAgICAod2hlbiAoYW5kIG1hcCAo c3RyaW5nLW1hdGNoIChjYXIgbWFwKSBmaWxlKSkNCiAgICAgIChzZXRxIGZp bGUgKHJlcGxhY2UtbWF0Y2ggKGNkciBtYXApIHQgbmlsIGZpbGUpKSkpDQog IGZpbGUpDQoNCjs7OyMjI2F1dG9sb2FkDQooZGVmdW4gYnJvd3NlLXVybC1v Zi1idWZmZXIgKCZvcHRpb25hbCBidWZmZXIpDQogICJBc2sgYSBXV1cgYnJv d3NlciB0byBkaXNwbGF5IEJVRkZFUi4NCkRpc3BsYXkgdGhlIGN1cnJlbnQg YnVmZmVyIGlmIEJVRkZFUiBpcyBuaWwuICBEaXNwbGF5IG9ubHkgdGhlDQpj dXJyZW50bHkgdmlzaWJsZSBwYXJ0IG9mIEJVRkZFUiAoZnJvbSBhIHRlbXBv cmFyeSBmaWxlKSBpZiBidWZmZXIgaXMNCm5hcnJvd2VkLiINCiAgKGludGVy YWN0aXZlKQ0KICAoc2F2ZS1leGN1cnNpb24NCiAgICAoYW5kIGJ1ZmZlciAo c2V0LWJ1ZmZlciBidWZmZXIpKQ0KICAgIChsZXQgKChmaWxlLW5hbWUNCgkg ICA7OyBJZ25vcmUgcmVhbCBuYW1lIGlmIHJlc3RyaWN0ZWQNCgkgICAoYW5k ICg9ICgtIChwb2ludC1tYXgpIChwb2ludC1taW4pKSAoYnVmZmVyLXNpemUp KQ0KCQkob3IgYnVmZmVyLWZpbGUtbmFtZQ0KCQkgICAgKGFuZCAoYm91bmRw ICdkaXJlZC1kaXJlY3RvcnkpIGRpcmVkLWRpcmVjdG9yeSkpKSkpDQogICAg ICAob3IgZmlsZS1uYW1lDQoJICAocHJvZ24NCgkgICAgKG9yIGJyb3dzZS11 cmwtdGVtcC1maWxlLW5hbWUNCgkJKHNldHEgYnJvd3NlLXVybC10ZW1wLWZp bGUtbmFtZQ0KCQkgICAgICAoY29udmVydC1zdGFuZGFyZC1maWxlbmFtZQ0K CQkgICAgICAgKG1ha2UtdGVtcC1maWxlDQoJCQkoZXhwYW5kLWZpbGUtbmFt ZSAiYnVybCIgYnJvd3NlLXVybC10ZW1wLWRpcikpKSkpDQoJICAgIChzZXRx IGZpbGUtbmFtZSBicm93c2UtdXJsLXRlbXAtZmlsZS1uYW1lKQ0KCSAgICAo d3JpdGUtcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpIGZpbGUtbmFt ZSBuaWwgJ25vLW1lc3NhZ2UpKSkNCiAgICAgIChicm93c2UtdXJsLW9mLWZp bGUgZmlsZS1uYW1lKSkpKQ0KDQooZGVmdW4gYnJvd3NlLXVybC1kZWxldGUt dGVtcC1maWxlICgmb3B0aW9uYWwgdGVtcC1maWxlLW5hbWUpDQogIDs7IERl bGV0ZSBicm93c2UtdXJsLXRlbXAtZmlsZS1uYW1lIGZyb20gdGhlIGZpbGUg c3lzdGVtDQogIDs7IElmIG9wdGlvbmFsIGFyZyBURU1QLUZJTEUtTkFNRSBp cyBub24tbmlsLCBkZWxldGUgaXQgaW5zdGVhZA0KICAobGV0ICgoZmlsZS1u YW1lIChvciB0ZW1wLWZpbGUtbmFtZSBicm93c2UtdXJsLXRlbXAtZmlsZS1u YW1lKSkpDQogICAgKGlmIChhbmQgZmlsZS1uYW1lIChmaWxlLWV4aXN0cy1w IGZpbGUtbmFtZSkpDQoJKGRlbGV0ZS1maWxlIGZpbGUtbmFtZSkpKSkNCg0K KGFkZC1ob29rICdraWxsLWJ1ZmZlci1ob29rICdicm93c2UtdXJsLWRlbGV0 ZS10ZW1wLWZpbGUpDQoNCjs7OyMjI2F1dG9sb2FkDQooZGVmdW4gYnJvd3Nl LXVybC1vZi1kaXJlZC1maWxlICgpDQogICJJbiBEaXJlZCwgYXNrIGEgV1dX IGJyb3dzZXIgdG8gZGlzcGxheSB0aGUgZmlsZSBuYW1lZCBvbiB0aGlzIGxp bmUuIg0KICAoaW50ZXJhY3RpdmUpDQogIChicm93c2UtdXJsLW9mLWZpbGUg KGRpcmVkLWdldC1maWxlbmFtZSkpKQ0KDQo7OzsjIyNhdXRvbG9hZA0KKGRl ZnVuIGJyb3dzZS11cmwtb2YtcmVnaW9uIChtaW4gbWF4KQ0KICAiQXNrIGEg V1dXIGJyb3dzZXIgdG8gZGlzcGxheSB0aGUgY3VycmVudCByZWdpb24uIg0K ICAoaW50ZXJhY3RpdmUgInIiKQ0KICAoc2F2ZS1leGN1cnNpb24NCiAgICAo c2F2ZS1yZXN0cmljdGlvbg0KICAgICAgKG5hcnJvdy10by1yZWdpb24gbWlu IG1heCkNCiAgICAgIChicm93c2UtdXJsLW9mLWJ1ZmZlcikpKSkNCg0KOzs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7OyBCcm93c2VyLWluZGVwZW5kZW50IGNv bW1hbmRzDQoNCjs7IEEgZ2VuZXJpYyBjb21tYW5kIHRvIGNhbGwgdGhlIGN1 cnJlbnQgYnJvd3NlLXVybC1icm93c2VyLWZ1bmN0aW9uDQoNCjs7OyMjI2F1 dG9sb2FkDQooZGVmdW4gYnJvd3NlLXVybCAodXJsICZyZXN0IGFyZ3MpDQog ICJBc2sgYSBXV1cgYnJvd3NlciB0byBsb2FkIFVSTC4NClByb21wdHMgZm9y IGEgVVJMLCBkZWZhdWx0aW5nIHRvIHRoZSBVUkwgYXQgb3IgYmVmb3JlIHBv aW50LiAgVmFyaWFibGUNCmBicm93c2UtdXJsLWJyb3dzZXItZnVuY3Rpb24n IHNheXMgd2hpY2ggYnJvd3NlciB0byB1c2UuIg0KICAoaW50ZXJhY3RpdmUg KGJyb3dzZS11cmwtaW50ZXJhY3RpdmUtYXJnICJVUkw6ICIpKQ0KICAodW5s ZXNzIChpbnRlcmFjdGl2ZS1wKQ0KICAgIChzZXRxIGFyZ3MgKG9yIGFyZ3Mg KGxpc3QgYnJvd3NlLXVybC1uZXctd2luZG93LWZsYWcpKSkpDQogIChpZiAo ZnVuY3Rpb25wIGJyb3dzZS11cmwtYnJvd3Nlci1mdW5jdGlvbikNCiAgICAg IChhcHBseSBicm93c2UtdXJsLWJyb3dzZXItZnVuY3Rpb24gdXJsIGFyZ3Mp DQogICAgOzsgVGhlIGBmdW5jdGlvbicgY2FuIGJlIGFuIGFsaXN0OyBsb29r IGRvd24gaXQgZm9yIGZpcnN0IG1hdGNoDQogICAgOzsgYW5kIGFwcGx5IHRo ZSBmdW5jdGlvbiAod2hpY2ggbWlnaHQgYmUgYSBsYW1iZGEpLg0KICAgIChj YXRjaCAnZG9uZQ0KICAgICAgKGRvbGlzdCAoYmYgYnJvd3NlLXVybC1icm93 c2VyLWZ1bmN0aW9uKQ0KCSh3aGVuIChzdHJpbmctbWF0Y2ggKGNhciBiZikg dXJsKQ0KCSAgKGFwcGx5IChjZHIgYmYpIHVybCBhcmdzKQ0KCSAgKHRocm93 ICdkb25lIHQpKSkNCiAgICAgIChlcnJvciAiTm8gYnJvd3NlLXVybC1icm93 c2VyLWZ1bmN0aW9uIG1hdGNoaW5nIFVSTCAlcyINCgkgICAgIHVybCkpKSkN Cg0KOzs7IyMjYXV0b2xvYWQNCihkZWZ1biBicm93c2UtdXJsLWF0LXBvaW50 ICgmb3B0aW9uYWwgYXJnKQ0KICAiQXNrIGEgV1dXIGJyb3dzZXIgdG8gbG9h ZCB0aGUgVVJMIGF0IG9yIGJlZm9yZSBwb2ludC4NCkRvZXNuJ3QgbGV0IHlv dSBlZGl0IHRoZSBVUkwgbGlrZSBgYnJvd3NlLXVybCcuICBWYXJpYWJsZQ0K YGJyb3dzZS11cmwtYnJvd3Nlci1mdW5jdGlvbicgc2F5cyB3aGljaCBicm93 c2VyIHRvIHVzZS4iDQogIChpbnRlcmFjdGl2ZSAiUCIpDQogIChsZXQgKCh1 cmwgKGJyb3dzZS11cmwtdXJsLWF0LXBvaW50KSkpDQogICAgKGlmIHVybA0K CShicm93c2UtdXJsIHVybCAoaWYgYXJnDQoJCQkgICAgKG5vdCBicm93c2Ut dXJsLW5ldy13aW5kb3ctZmxhZykNCgkJCSAgYnJvd3NlLXVybC1uZXctd2lu ZG93LWZsYWcpKQ0KICAgICAgKGVycm9yICJObyBVUkwgZm91bmQiKSkpKQ0K DQo7OzsjIyNhdXRvbG9hZA0KKGRlZnVuIGJyb3dzZS11cmwtYXQtbW91c2Ug KGV2ZW50KQ0KICAiQXNrIGEgV1dXIGJyb3dzZXIgdG8gbG9hZCBhIFVSTCBj bGlja2VkIHdpdGggdGhlIG1vdXNlLg0KVGhlIFVSTCBpcyB0aGUgb25lIGFy b3VuZCBvciBiZWZvcmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBtb3VzZSBjbGlj aw0KYnV0IHBvaW50IGlzIG5vdCBjaGFuZ2VkLiAgRG9lc24ndCBsZXQgeW91 IGVkaXQgdGhlIFVSTCBsaWtlDQpgYnJvd3NlLXVybCcuICBWYXJpYWJsZSBg YnJvd3NlLXVybC1icm93c2VyLWZ1bmN0aW9uJyBzYXlzIHdoaWNoIGJyb3dz ZXINCnRvIHVzZS4iDQogIChpbnRlcmFjdGl2ZSAiZSIpDQogIChzYXZlLWV4 Y3Vyc2lvbg0KICAgIChtb3VzZS1zZXQtcG9pbnQgZXZlbnQpDQogICAgOzsg VGhpcyBoYW5kbGVzIGJyb3dzZS11cmwtbmV3LXdpbmRvdy1mbGFnIHByb3Bl cmx5DQogICAgOzsgd2hlbiBpdCBnZXRzIG5vIGFyZy4NCiAgICAoYnJvd3Nl LXVybC1hdC1wb2ludCkpKQ0KDQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCjs7 IEJyb3dzZXItc3BlY2lmaWMgY29tbWFuZHMNCg0KOzsgLS0tIERlZmF1bHQg TVMtV2luZG93cyBicm93c2VyIC0tLQ0KDQooZGVmdW4gYnJvd3NlLXVybC1k ZWZhdWx0LXdpbmRvd3MtYnJvd3NlciAodXJsICZvcHRpb25hbCBuZXctd2lu ZG93KQ0KICAoaW50ZXJhY3RpdmUgKGJyb3dzZS11cmwtaW50ZXJhY3RpdmUt YXJnICJVUkw6ICIpKQ0KICAoaWYgKGVxIHN5c3RlbS10eXBlICdtcy1kb3Mp DQogICAgICAoaWYgZG9zLXdpbmRvd3MtdmVyc2lvbg0KCSAgKHNoZWxsLWNv bW1hbmQgKGNvbmNhdCAic3RhcnQgIiAoc2hlbGwtcXVvdGUtYXJndW1lbnQg dXJsKSkpDQoJKGVycm9yICJCcm93c2luZyBVUkxzIGlzIG5vdCBzdXBwb3J0 ZWQgb24gdGhpcyBzeXN0ZW0iKSkNCiAgICAodzMyLXNoZWxsLWV4ZWN1dGUg Im9wZW4iIHVybCkpKQ0KDQo7OzsjIyNhdXRvbG9hZA0KKGRlZnVuIGJyb3dz ZS11cmwtbW9zYWljICh1cmwgJm9wdGlvbmFsIG5ldy13aW5kb3cpDQogICJB c2sgdGhlIFhNb3NhaWMgV1dXIGJyb3dzZXIgdG8gbG9hZCBVUkwuDQoNCkRl ZmF1bHQgdG8gdGhlIFVSTCBhcm91bmQgb3IgYmVmb3JlIHBvaW50LiAgVGhl IHN0cmluZ3MgaW4gdmFyaWFibGUNCmBicm93c2UtdXJsLW1vc2FpYy1hcmd1 bWVudHMnIGFyZSBhbHNvIHBhc3NlZCB0byBNb3NhaWMgYW5kIHRoZQ0KcHJv Z3JhbSBpcyBpbnZva2VkIGFjY29yZGluZyB0byB0aGUgdmFyaWFibGUNCmBi cm93c2UtdXJsLW1vc2FpYy1wcm9ncmFtJy4NCg0KV2hlbiBjYWxsZWQgaW50 ZXJhY3RpdmVseSwgaWYgdmFyaWFibGUgYGJyb3dzZS11cmwtbmV3LXdpbmRv dy1mbGFnJyBpcw0Kbm9uLW5pbCwgbG9hZCB0aGUgZG9jdW1lbnQgaW4gYSBu ZXcgTW9zYWljIHdpbmRvdywgb3RoZXJ3aXNlIHVzZSBhDQpyYW5kb20gZXhp c3Rpbmcgb25lLiAgQSBub24tbmlsIGludGVyYWN0aXZlIHByZWZpeCBhcmd1 bWVudCByZXZlcnNlcw0KdGhlIGVmZmVjdCBvZiBgYnJvd3NlLXVybC1uZXct d2luZG93LWZsYWcnLg0KDQpXaGVuIGNhbGxlZCBub24taW50ZXJhY3RpdmVs eSwgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IE5FVy1XSU5ET1cgaXMNCnVz ZWQgaW5zdGVhZCBvZiBgYnJvd3NlLXVybC1uZXctd2luZG93LWZsYWcnLiIN CiAgKGludGVyYWN0aXZlIChicm93c2UtdXJsLWludGVyYWN0aXZlLWFyZyAi TW9zYWljIFVSTDogIikpDQogIChsZXQgKChwaWRmaWxlIChleHBhbmQtZmls ZS1uYW1lICJ+Ly5tb3NhaWNwaWQiKSkNCglwaWQpDQogICAgKGlmIChmaWxl LXJlYWRhYmxlLXAgcGlkZmlsZSkNCgkoc2F2ZS1leGN1cnNpb24NCgkgIChm aW5kLWZpbGUgcGlkZmlsZSkNCgkgIChnb3RvLWNoYXIgKHBvaW50LW1pbikp DQoJICAoc2V0cSBwaWQgKHJlYWQgKGN1cnJlbnQtYnVmZmVyKSkpDQoJICAo a2lsbC1idWZmZXIgbmlsKSkpDQogICAgKGlmIChhbmQgcGlkICh6ZXJvcCAo c2lnbmFsLXByb2Nlc3MgcGlkIDApKSkgOyBNb3NhaWMgcnVubmluZw0KCShz YXZlLWV4Y3Vyc2lvbg0KCSAgKGZpbmQtZmlsZSAoZm9ybWF0ICIvdG1wL01v c2FpYy4lZCIgcGlkKSkNCgkgIChlcmFzZS1idWZmZXIpDQoJICAoaW5zZXJ0 IChpZiAoYnJvd3NlLXVybC1tYXliZS1uZXctd2luZG93IG5ldy13aW5kb3cp DQoJCSAgICAgICJuZXd3aW5cbiINCgkJICAgICJnb3RvXG4iKQ0KCQkgIHVy bCAiXG4iKQ0KCSAgKHNhdmUtYnVmZmVyKQ0KCSAgKGtpbGwtYnVmZmVyIG5p bCkNCgkgIDs7IFNlbmQgc2lnbmFsIFNJR1VTUiB0byBNb3NhaWMNCgkgICht ZXNzYWdlICJTaWduYWxsaW5nIE1vc2FpYy4uLiIpDQoJICAoc2lnbmFsLXBy b2Nlc3MgcGlkIGJyb3dzZS11cmwtdXNyMS1zaWduYWwpDQoJICA7OyBPciB5 b3UgY291bGQgdHJ5Og0KCSAgOzsgKGNhbGwtcHJvY2VzcyAia2lsbCIgbmls IDAgbmlsICItVVNSMSIgKGludC10by1zdHJpbmcgcGlkKSkNCgkgIChtZXNz YWdlICJTaWduYWxsaW5nIE1vc2FpYy4uLmRvbmUiKQ0KCSAgKQ0KICAgICAg OzsgTW9zYWljIG5vdCBydW5uaW5nIC0gc3RhcnQgaXQNCiAgICAgIChtZXNz YWdlICJTdGFydGluZyBNb3NhaWMuLi4iKQ0KICAgICAgKGFwcGx5ICdzdGFy dC1wcm9jZXNzICJ4bW9zYWljIiBuaWwgYnJvd3NlLXVybC1tb3NhaWMtcHJv Z3JhbQ0KCSAgICAgKGFwcGVuZCBicm93c2UtdXJsLW1vc2FpYy1hcmd1bWVu dHMgKGxpc3QgdXJsKSkpDQogICAgICAobWVzc2FnZSAiU3RhcnRpbmcgTW9z YWljLi4uZG9uZSIpKSkpDQoNCjs7IC0tLSBNb3NhaWMgdXNpbmcgQ0NJIC0t LQ0KDQo7OzsjIyNhdXRvbG9hZA0KKGRlZnVuIGJyb3dzZS11cmwtY2NpICh1 cmwgJm9wdGlvbmFsIG5ldy13aW5kb3cpDQogICJBc2sgdGhlIFhNb3NhaWMg V1dXIGJyb3dzZXIgdG8gbG9hZCBVUkwuDQpEZWZhdWx0IHRvIHRoZSBVUkwg YXJvdW5kIG9yIGJlZm9yZSBwb2ludC4NCg0KVGhpcyBmdW5jdGlvbiBvbmx5 IHdvcmtzIGZvciBYTW9zYWljIHZlcnNpb24gMi41IG9yIGxhdGVyLiAgWW91 IG11c3QNCnNlbGVjdCBgQ0NJJyBmcm9tIFhNb3NhaWMncyBGaWxlIG1lbnUs IHNldCB0aGUgQ0NJIFBvcnQgQWRkcmVzcyB0byB0aGUNCnZhbHVlIG9mIHZh cmlhYmxlIGBicm93c2UtdXJsLUNDSS1wb3J0JywgYW5kIGVuYWJsZSBgQWNj ZXB0IHJlcXVlc3RzJy4NCg0KV2hlbiBjYWxsZWQgaW50ZXJhY3RpdmVseSwg aWYgdmFyaWFibGUgYGJyb3dzZS11cmwtbmV3LXdpbmRvdy1mbGFnJyBpcw0K bm9uLW5pbCwgbG9hZCB0aGUgZG9jdW1lbnQgaW4gYSBuZXcgYnJvd3NlciB3 aW5kb3csIG90aGVyd2lzZSB1c2UgYQ0KcmFuZG9tIGV4aXN0aW5nIG9uZS4g IEEgbm9uLW5pbCBpbnRlcmFjdGl2ZSBwcmVmaXggYXJndW1lbnQgcmV2ZXJz ZXMNCnRoZSBlZmZlY3Qgb2YgYGJyb3dzZS11cmwtbmV3LXdpbmRvdy1mbGFn Jy4NCg0KV2hlbiBjYWxsZWQgbm9uLWludGVyYWN0aXZlbHksIG9wdGlvbmFs IHNlY29uZCBhcmd1bWVudCBORVctV0lORE9XIGlzDQp1c2VkIGluc3RlYWQg b2YgYGJyb3dzZS11cmwtbmV3LXdpbmRvdy1mbGFnJy4iDQogIChpbnRlcmFj dGl2ZSAoYnJvd3NlLXVybC1pbnRlcmFjdGl2ZS1hcmcgIk1vc2FpYyBVUkw6 ICIpKQ0KICAob3Blbi1uZXR3b3JrLXN0cmVhbSAiYnJvd3NlLXVybCIgIiAq YnJvd3NlLXVybCoiDQoJCSAgICAgICBicm93c2UtdXJsLUNDSS1ob3N0IGJy b3dzZS11cmwtQ0NJLXBvcnQpDQogIDs7IFRvZG86IHN0YXJ0IGJyb3dzZXIg aWYgZmFpbHMNCiAgKHByb2Nlc3Mtc2VuZC1zdHJpbmcgImJyb3dzZS11cmwi DQoJCSAgICAgICAoY29uY2F0ICJnZXQgdXJsICgiIHVybCAiKSBvdXRwdXQg Ig0KCQkJICAgICAgIChpZiAoYnJvd3NlLXVybC1tYXliZS1uZXctd2luZG93 IG5ldy13aW5kb3cpDQoJCQkJICAgIm5ldyINCgkJCQkgImN1cnJlbnQiKQ0K CQkJICAgICAgICJcclxuIikpDQogIChwcm9jZXNzLXNlbmQtc3RyaW5nICJi cm93c2UtdXJsIiAiZGlzY29ubmVjdFxyXG4iKQ0KICAoZGVsZXRlLXByb2Nl c3MgImJyb3dzZS11cmwiKSkNCg0KOzsgLS0tIFczIC0tLQ0KDQo7OzsjIyNh dXRvbG9hZA0KKGRlZnVuIGJyb3dzZS11cmwtdzMgKHVybCAmb3B0aW9uYWwg bmV3LXdpbmRvdykNCiAgIkFzayB0aGUgdzMgV1dXIGJyb3dzZXIgdG8gbG9h ZCBVUkwuDQpEZWZhdWx0IHRvIHRoZSBVUkwgYXJvdW5kIG9yIGJlZm9yZSBw b2ludC4NCg0KV2hlbiBjYWxsZWQgaW50ZXJhY3RpdmVseSwgaWYgdmFyaWFi bGUgYGJyb3dzZS11cmwtbmV3LXdpbmRvdy1mbGFnJyBpcw0Kbm9uLW5pbCwg bG9hZCB0aGUgZG9jdW1lbnQgaW4gYSBuZXcgd2luZG93LiAgQSBub24tbmls IGludGVyYWN0aXZlDQpwcmVmaXggYXJndW1lbnQgcmV2ZXJzZXMgdGhlIGVm ZmVjdCBvZiBgYnJvd3NlLXVybC1uZXctd2luZG93LWZsYWcnLg0KDQpXaGVu IGNhbGxlZCBub24taW50ZXJhY3RpdmVseSwgb3B0aW9uYWwgc2Vjb25kIGFy Z3VtZW50IE5FVy1XSU5ET1cgaXMNCnVzZWQgaW5zdGVhZCBvZiBgYnJvd3Nl LXVybC1uZXctd2luZG93LWZsYWcnLiINCiAgKGludGVyYWN0aXZlIChicm93 c2UtdXJsLWludGVyYWN0aXZlLWFyZyAiVzMgVVJMOiAiKSkNCiAgKHJlcXVp cmUgJ3czKQkJCQk7IHczLWZldGNoLW90aGVyLXdpbmRvdyBub3QgYXV0b2xv YWRlZA0KICAoaWYgKGJyb3dzZS11cmwtbWF5YmUtbmV3LXdpbmRvdyBuZXct d2luZG93KQ0KICAgICAgKHczLWZldGNoLW90aGVyLXdpbmRvdyB1cmwpDQog ICAgKHczLWZldGNoIHVybCkpKQ0KDQo7OzsjIyNhdXRvbG9hZA0KKGRlZnVu IGJyb3dzZS11cmwtdzMtZ251ZG9pdCAodXJsICZvcHRpb25hbCBuZXctd2lu ZG93KQ0KICA7OyBuZXctd2luZG93IGlnbm9yZWQNCiAgIkFzayBhbm90aGVy IEVtYWNzIHJ1bm5pbmcgZ251c2VydiB0byBsb2FkIHRoZSBVUkwgdXNpbmcg dGhlIFczIGJyb3dzZXIuDQpUaGUgYGJyb3dzZS11cmwtZ251ZG9pdC1wcm9n cmFtJyBwcm9ncmFtIGlzIHVzZWQgd2l0aCBvcHRpb25zIGdpdmVuIGJ5DQpg YnJvd3NlLXVybC1nbnVkb2l0LWFyZ3MnLiAgRGVmYXVsdCB0byB0aGUgVVJM IGFyb3VuZCBvciBiZWZvcmUgcG9pbnQuIg0KICAoaW50ZXJhY3RpdmUgKGJy b3dzZS11cmwtaW50ZXJhY3RpdmUtYXJnICJXMyBVUkw6ICIpKQ0KICAgIChh cHBseSAnc3RhcnQtcHJvY2VzcyAoY29uY2F0ICJnbnVkb2l0OiIgdXJsKSBu aWwNCgkgICBicm93c2UtdXJsLWdudWRvaXQtcHJvZ3JhbQ0KCSAgIChhcHBl bmQgYnJvd3NlLXVybC1nbnVkb2l0LWFyZ3MNCgkJICAgKGxpc3QgKGNvbmNh dCAiKHczLWZldGNoIFwiIiB1cmwgIlwiKSIpDQoJCQkgIihyYWlzZS1mcmFt ZSkiKSkpKQ0KDQo7OyAtLS0gTHlueCBpbiBhbiBFbWFjcyAidGVybSIgd2lu ZG93IC0tLQ0KDQo7OzsjIyNhdXRvbG9hZA0KKGRlZnVuIGJyb3dzZS11cmwt bHlueC1lbWFjcyAodXJsICZvcHRpb25hbCBuZXctYnVmZmVyKQ0KICAiQXNr IHRoZSBMeW54IFdXVyBicm93c2VyIHRvIGxvYWQgVVJMLg0KRGVmYXVsdCB0 byB0aGUgVVJMIGFyb3VuZCBvciBiZWZvcmUgcG9pbnQuICBXaXRoIGEgcHJl Zml4IGFyZ3VtZW50LCBydW4NCmEgbmV3IEx5bnggcHJvY2VzcyBpbiBhIG5l dyBidWZmZXIuDQoNCldoZW4gY2FsbGVkIGludGVyYWN0aXZlbHksIGlmIHZh cmlhYmxlIGBicm93c2UtdXJsLW5ldy13aW5kb3ctZmxhZycgaXMNCm5vbi1u aWwsIGxvYWQgdGhlIGRvY3VtZW50IGluIGEgbmV3IGx5bnggaW4gYSBuZXcg dGVybSB3aW5kb3csDQpvdGhlcndpc2UgdXNlIGFueSBleGlzdGluZyBvbmUu ICBBIG5vbi1uaWwgaW50ZXJhY3RpdmUgcHJlZml4IGFyZ3VtZW50DQpyZXZl cnNlcyB0aGUgZWZmZWN0IG9mIGBicm93c2UtdXJsLW5ldy13aW5kb3ctZmxh ZycuDQoNCldoZW4gY2FsbGVkIG5vbi1pbnRlcmFjdGl2ZWx5LCBvcHRpb25h bCBzZWNvbmQgYXJndW1lbnQgTkVXLVdJTkRPVyBpcw0KdXNlZCBpbnN0ZWFk IG9mIGBicm93c2UtdXJsLW5ldy13aW5kb3ctZmxhZycuIg0KICAoaW50ZXJh Y3RpdmUgKGJyb3dzZS11cmwtaW50ZXJhY3RpdmUtYXJnICJMeW54IFVSTDog IikpDQogIChsZXQqICgoc3lzdGVtLXVzZXMtdGVybWluZm8gdCkgICAgICAg OyBMeW54IHVzZXMgdGVybWluZm8NCgkgOzsgKHRlcm0tdGVybS1uYW1lICJ2 dDEwMCIpIDsgPz8NCgkgKGJ1ZiAoZ2V0LWJ1ZmZlciAiKmx5bngqIikpDQoJ IChwcm9jIChhbmQgYnVmIChnZXQtYnVmZmVyLXByb2Nlc3MgYnVmKSkpDQoJ IChuIGJyb3dzZS11cmwtbHlueC1pbnB1dC1hdHRlbXB0cykpDQogICAgKGlm IChhbmQgKGJyb3dzZS11cmwtbWF5YmUtbmV3LXdpbmRvdyBuZXctYnVmZmVy KSBidWYpDQoJOzsgUmVuYW1lIGF3YXkgdGhlIE9MRCBidWZmZXIuIFRoaXMg aXNuJ3QgdmVyeSBwb2xpdGUsIGJ1dA0KCTs7IHRlcm0gaW5zaXN0cyBvbiB3 b3JraW5nIGluIGEgYnVmZmVyIG5hbWVkICpseW54KiBhbmQgd291bGQNCgk7 OyBjaG9rZSBvbiAqbHlueCo8MT4NCgkocHJvZ24gKHNldC1idWZmZXIgYnVm KQ0KCSAgICAgICAocmVuYW1lLXVuaXF1ZWx5KSkpDQogICAgKGlmIChvciAo YnJvd3NlLXVybC1tYXliZS1uZXctd2luZG93IG5ldy1idWZmZXIpDQoJICAg IChub3QgYnVmKQ0KCSAgICAobm90IHByb2MpDQoJICAgIChub3QgKG1lbXEg KHByb2Nlc3Mtc3RhdHVzIHByb2MpICcocnVuIHN0b3ApKSkpDQoJOzsgc3Rh cnQgYSBuZXcgbHlueA0KCShwcm9nbg0KICAgICAgICAgIChzZXRxIGJ1Zg0K ICAgICAgICAgICAgICAgIChhcHBseSAjJ21ha2UtdGVybQ0KICAgICAgICAg ICAgICAgICAgICAgICBgKCJseW54IiAibHlueCIgbmlsICxAYnJvd3NlLXVy bC1seW54LWVtYWNzLWFyZ3MNCgkJCSAsdXJsKSkpDQogICAgICAgICAgKHN3 aXRjaC10by1idWZmZXIgYnVmKQ0KICAgICAgICAgICh0ZXJtLWNoYXItbW9k ZSkNCiAgICAgICAgICAoc2V0LXByb2Nlc3Mtc2VudGluZWwNCiAgICAgICAg ICAgKGdldC1idWZmZXItcHJvY2VzcyBidWYpDQogICAgICAgICAgIDs7IERv bid0IGxlYXZlIGFyb3VuZCBhIGRlYWQgb25lIChlc3BlY2lhbGx5IGJlY2F1 c2Ugb2YgaXRzDQogICAgICAgICAgIDs7IG11bmdlZCBrZXltYXAuKQ0KICAg ICAgICAgICAobGFtYmRhIChwcm9jZXNzIGV2ZW50KQ0KICAgICAgICAgICAg IChpZiAobm90IChtZW1xIChwcm9jZXNzLXN0YXR1cyBwcm9jZXNzKSAnKHJ1 biBzdG9wKSkpDQogICAgICAgICAgICAgICAgIChsZXQgKChidWYgKHByb2Nl c3MtYnVmZmVyIHByb2Nlc3MpKSkNCiAgICAgICAgICAgICAgICAgICAoaWYg YnVmIChraWxsLWJ1ZmZlciBidWYpKSkpKSkpDQogICAgICA7OyBzZW5kIHRo ZSB1cmwgdG8gbHlueCBpbiB0aGUgb2xkIGJ1ZmZlcg0KICAgICAgKGxldCAo KHdpbiAoZ2V0LWJ1ZmZlci13aW5kb3cgYnVmIHQpKSkNCgkoaWYgd2luDQoJ ICAgIChzZWxlY3Qtd2luZG93IHdpbikNCgkgIChzd2l0Y2gtdG8tYnVmZmVy IGJ1ZikpKQ0KICAgICAgKGlmIChlcSAoZm9sbG93aW5nLWNoYXIpID9fKQ0K CSAgKGNvbmQgKChlcSBicm93c2UtdXJsLWx5bngtaW5wdXQtZmllbGQgJ3dh cm4pDQoJCSAoZXJyb3IgIlBsZWFzZSBtb3ZlIG91dCBvZiB0aGUgaW5wdXQg ZmllbGQgZmlyc3QiKSkNCgkJKChlcSBicm93c2UtdXJsLWx5bngtaW5wdXQt ZmllbGQgJ2F2b2lkKQ0KCQkgKHdoaWxlIChhbmQgKGVxIChmb2xsb3dpbmct Y2hhcikgP18pICg+IG4gMCkpDQoJCSAgICh0ZXJtLXNlbmQtZG93bikgOyBk b3duIGFycm93DQoJCSAgIChzaXQtZm9yIGJyb3dzZS11cmwtbHlueC1pbnB1 dC1kZWxheSkpDQoJCSAoaWYgKGVxIChmb2xsb3dpbmctY2hhcikgP18pDQoJ CSAgICAgKGVycm9yICJDYW5ub3QgbW92ZSBvdXQgb2YgdGhlIGlucHV0IGZp ZWxkLCBzb3JyeSIpKSkpKQ0KICAgICAgKHRlcm0tc2VuZC1zdHJpbmcgcHJv YyAoY29uY2F0ICJnIiA7IGdvdG8NCgkJCQkgICAgICJcQy11IiA7IGtpbGwg ZGVmYXVsdCB1cmwNCgkJCQkgICAgIHVybA0KCQkJCSAgICAgIlxyIikpKSkp DQoNCjs7IC0tLSBtYWlsdG8gLS0tDQoNCjs7OyMjI2F1dG9sb2FkDQooZGVm dW4gYnJvd3NlLXVybC1tYWlsICh1cmwgJm9wdGlvbmFsIG5ldy13aW5kb3cp DQogICJPcGVuIGEgbmV3IG1haWwgbWVzc2FnZSBidWZmZXIgd2l0aGluIEVt YWNzLg0KRGVmYXVsdCB0byB1c2luZyB0aGUgbWFpbHRvOiBVUkwgYXJvdW5k IG9yIGJlZm9yZSBwb2ludCBhcyB0aGUNCnJlY2lwaWVudCdzIGFkZHJlc3Mu ICBTdXBwbHlpbmcgYSBub24tbmlsIGludGVyYWN0aXZlIHByZWZpeCBhcmd1 bWVudA0Kd2lsbCBjYXVzZSB0aGUgbWFpbCB0byBiZSBjb21wb3NlZCBpbiBh bm90aGVyIHdpbmRvdyByYXRoZXIgdGhhbiB0aGUNCmN1cnJlbnQgb25lLg0K DQpXaGVuIGNhbGxlZCBpbnRlcmFjdGl2ZWx5LCBpZiB2YXJpYWJsZSBgYnJv d3NlLXVybC1uZXctd2luZG93LWZsYWcnIGlzDQpub24tbmlsIHVzZSBgY29t cG9zZS1tYWlsLW90aGVyLXdpbmRvdycsIG90aGVyd2lzZSBgY29tcG9zZS1t YWlsJy4gIEENCm5vbi1uaWwgaW50ZXJhY3RpdmUgcHJlZml4IGFyZ3VtZW50 IHJldmVyc2VzIHRoZSBlZmZlY3Qgb2YNCmBicm93c2UtdXJsLW5ldy13aW5k b3ctZmxhZycuDQoNCldoZW4gY2FsbGVkIG5vbi1pbnRlcmFjdGl2ZWx5LCBv cHRpb25hbCBzZWNvbmQgYXJndW1lbnQgTkVXLVdJTkRPVyBpcw0KdXNlZCBp bnN0ZWFkIG9mIGBicm93c2UtdXJsLW5ldy13aW5kb3ctZmxhZycuIg0KICAo aW50ZXJhY3RpdmUgKGJyb3dzZS11cmwtaW50ZXJhY3RpdmUtYXJnICJNYWls dG8gVVJMOiAiKSkNCiAgKHNhdmUtZXhjdXJzaW9uDQogICAgKGxldCAoKHRv IChpZiAoc3RyaW5nLW1hdGNoICJebWFpbHRvOiIgdXJsKQ0KCQkgIChzdWJz dHJpbmcgdXJsIDcpDQoJCXVybCkpKQ0KICAgICAgKGlmIChicm93c2UtdXJs LW1heWJlLW5ldy13aW5kb3cgbmV3LXdpbmRvdykNCgkgIChjb21wb3NlLW1h aWwtb3RoZXItd2luZG93IHRvIG5pbCBuaWwgbmlsDQoJCQkJICAgICAobGlz dCAnaW5zZXJ0LWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKSkNCgkoY29tcG9z ZS1tYWlsIHRvIG5pbCBuaWwgbmlsIG5pbA0KCQkgICAgICAobGlzdCAnaW5z ZXJ0LWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKSkpKSkpDQoNCjs7IC0tLSBS YW5kb20gYnJvd3NlciAtLS0NCg0KOzs7IyMjYXV0b2xvYWQNCihkZWZ1biBi cm93c2UtdXJsLWdlbmVyaWMgKHVybCAmb3B0aW9uYWwgbmV3LXdpbmRvdykN CiAgOzsgbmV3LXdpbmRvdyBpZ25vcmVkDQogICJBc2sgdGhlIFdXVyBicm93 c2VyIGRlZmluZWQgYnkgYGJyb3dzZS11cmwtZ2VuZXJpYy1wcm9ncmFtJyB0 byBsb2FkDQpVUkwuICBEZWZhdWx0IHRvIHRoZSBVUkwgYXJvdW5kIG9yIGJl Zm9yZSBwb2ludC4gIFRoZSBhcmd1bWVudHMgcGFzc2VkDQphcmUgZGVmaW5l ZCBieSB0aGUgc3RyaW5nIGBicm93c2UtdXJsLWdlbmVyaWMnLCBpbiB3aGlj aCB0aGUgVVJMIGlzDQpzdWJzdGl0dXRlZCBmb3IgYF9fVVJMX18nIGlmIGl0 IGV4aXN0cywgb3IgYWRkZWQgYXMgYSBmaW5hbCBhcmd1bWVudA0KaWYgbm90 LiINCiAgKGludGVyYWN0aXZlIChicm93c2UtdXJsLWludGVyYWN0aXZlLWFy ZyAiVVJMOiAiKSkNCiAgKGlmIChub3QgYnJvd3NlLXVybC1nZW5lcmljLXBy b2dyYW0pDQogICAgICAoZXJyb3IgIk5vIGJyb3dzZXIgZGVmaW5lZCAoYGJy b3dzZS11cmwtZ2VuZXJpYy1wcm9ncmFtJykiKSkNCiAgKGxldCAoKGFyZ3MN CiAgICAgICAgIChpZiAoc3RyaW5nLW1hdGNoICJfX1VSTF9fIiBicm93c2Ut dXJsLWdlbmVyaWMtYXJncykNCiAgICAgICAgICAgICAocmVwbGFjZS1tYXRj aCB1cmwgdCB0IGJyb3dzZS11cmwtZ2VuZXJpYy1hcmdzKQ0KICAgICAgICAg ICAgIChjb25jYXQgYnJvd3NlLXVybC1nZW5lcmljLWFyZ3MgIiIgdXJsKSkp KQ0KICAgIChhcHBseSAnc3RhcnQtcHJvY2VzcyAoY29uY2F0IGJyb3dzZS11 cmwtZ2VuZXJpYy1wcm9ncmFtICIgIiB1cmwpIG5pbA0KICAgICAgICAgICBi cm93c2UtdXJsLWdlbmVyaWMtcHJvZ3JhbQ0KICAgICAgICAgICAoc3BsaXQt c3RyaW5nIGFyZ3MgIiAiKSkpKQ0KDQo7IFZhbHVlcyBmb3IgYnJvd3NlLXVy bC1nZW5lcmljLWFyZ3MNCjsNCjsgVGhlc2UgY291bGQgYmUgcHV0IGluIGEg bGlzdCBpbmRleGVkIGJ5IGJyb3dzZXIgbmFtZSB0byBhbGxvdyBjb21tb24N CjsgYnJvd3NlcnMgdG8gYmUgY2hvc2VuIGZyb20gYSBsaXN0IGFuZCB0aGUg bWV0aG9kIG9mIHN0YXJ0aW5nIHRoZSBVUkwNCjsgKHNhbWUgd2luZG93LCBu ZXcgd2luZG93LCBuZXcgdGFiKSB0byBiZSBhbiBvcHRpb24uDQo7DQo7IEJy b3dzZXIgICAgICAgICAgICBTYW1lIHdpbmRvdyAgICAgICAgICAgICAgICAg ICBOZXcgd2luZG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5l dyB0YWINCjsNCjsgT3BlcmEgICAgICAgICAgICAgICIiICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC1yZW1vdGUgb3BlblVSTChfX1VSTF9fLG5ldy13 aW5kb3cpICAgICAgLXJlbW90ZSBvcGVuVVJMKF9fVVJMX18sbmV3LXBhZ2Up DQo7IEtvbnF1ZXJvciAgICAgICAgICA/PyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgID8/DQo7IE1vemlsbGEgICAgICAgICAgICAtcmVtb3RlIG9wZW5VUkwo X19VUkxfXykgICAgICAtcmVtb3RlIG9wZW5VUkwoX19VUkxfXyxuZXctd2lu ZG93KSAgICAgIC1yZW1vdGUgb3BlblVSTChfX1VSTF9fLG5ldy10YWIpDQo7 IGdub21lLW1vei1yZW1vdGUgICAtLXJhaXNlIF9fVVJMX18gICAgICAgICAg ICAgICAtLXJhaXNlIC0tbmV3d2luIF9fVVJMX18gICAgICAgICAgICAgICAg IC0tcmFpc2UgLS1yZW1vdGU9b3BlblVSTChfX1VSTF9fLG5ldy10YWIpDQo7 IGx5bngteHRlcm0gICAgICAgICBuL2EgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeHRlcm0gLWUgbHlueCBfX1VSTF9fICAgICAgICAgICAgICAgICAg ICBuL2ENCg0KKHByb3ZpZGUgJ2Jyb3dzZS11cmwpDQoNCjs7OyBicm93c2Ut dXJsLmVsIGVuZHMgaGVyZQ0K ---1463811328-1663868896-1074353232=:1565 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Bug-gnu-emacs mailing list Bug-gnu-emacs@gnu.org http://mail.gnu.org/mailman/listinfo/bug-gnu-emacs ---1463811328-1663868896-1074353232=:1565--