From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Lennart Borgman Newsgroups: gmane.emacs.bugs Subject: bug#3467: 23.0.94; let + make-local-variable => let value made global Date: Sat, 13 Jun 2009 00:24:43 +0200 Message-ID: References: Reply-To: Lennart Borgman , 3467@emacsbugs.donarmstrong.com NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001485f631e4dd267d046c2e2ceb X-Trace: ger.gmane.org 1244846258 8344 80.91.229.12 (12 Jun 2009 22:37:38 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 12 Jun 2009 22:37:38 +0000 (UTC) Cc: 3467@emacsbugs.donarmstrong.com To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Jun 13 00:37:34 2009 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1MFFNM-0005ND-OK for geb-bug-gnu-emacs@m.gmane.org; Sat, 13 Jun 2009 00:37:33 +0200 Original-Received: from localhost ([127.0.0.1]:42243 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MFFNM-0000c5-7H for geb-bug-gnu-emacs@m.gmane.org; Fri, 12 Jun 2009 18:37:32 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MFFNH-0000YL-7B for bug-gnu-emacs@gnu.org; Fri, 12 Jun 2009 18:37:27 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MFFNC-0000OL-L5 for bug-gnu-emacs@gnu.org; Fri, 12 Jun 2009 18:37:26 -0400 Original-Received: from [199.232.76.173] (port=52092 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MFFNC-0000O4-D9 for bug-gnu-emacs@gnu.org; Fri, 12 Jun 2009 18:37:22 -0400 Original-Received: from rzlab.ucr.edu ([138.23.92.77]:55426) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1MFFNB-0003or-Q1 for bug-gnu-emacs@gnu.org; Fri, 12 Jun 2009 18:37:22 -0400 Original-Received: from rzlab.ucr.edu (rzlab.ucr.edu [127.0.0.1]) by rzlab.ucr.edu (8.14.3/8.14.3/Debian-5) with ESMTP id n5CMbJkb001125; Fri, 12 Jun 2009 15:37:20 -0700 Original-Received: (from debbugs@localhost) by rzlab.ucr.edu (8.14.3/8.14.3/Submit) id n5CMU3vL032303; Fri, 12 Jun 2009 15:30:03 -0700 X-Loop: owner@emacsbugs.donarmstrong.com Resent-From: Lennart Borgman Resent-To: bug-submit-list@donarmstrong.com Resent-CC: Emacs Bugs Resent-Date: Fri, 12 Jun 2009 22:30:03 +0000 Resent-Message-ID: Resent-Sender: owner@emacsbugs.donarmstrong.com X-Emacs-PR-Message: followup 3467 X-Emacs-PR-Package: emacs X-Emacs-PR-Keywords: Original-Received: via spool by 3467-submit@emacsbugs.donarmstrong.com id=B3467.124484549531546 (code B ref 3467); Fri, 12 Jun 2009 22:30:03 +0000 Original-Received: (at 3467) by emacsbugs.donarmstrong.com; 12 Jun 2009 22:24:55 +0000 X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. Original-Received: from mail-bw0-f205.google.com (mail-bw0-f205.google.com [209.85.218.205]) by rzlab.ucr.edu (8.14.3/8.14.3/Debian-5) with ESMTP id n5CMOnKU031541 for <3467@emacsbugs.donarmstrong.com>; Fri, 12 Jun 2009 15:24:51 -0700 Original-Received: by bwz1 with SMTP id 1so2787058bwz.1 for <3467@emacsbugs.donarmstrong.com>; Fri, 12 Jun 2009 15:24:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=E7xvEKyhSfpmp/nefdnzEnoV4aPAuzJMleS+1EXYr9k=; b=HCXlI/FaahXLVIhWNgNh7jtfwhmSyI1VJIEJOBz1bRmmbouwoLENF6O+81PyjdsXRt MXn3yuhg9/3xrroCWIqrNVLV6+KvvZg5d1hSiOnsZ3HGety1I5U6Ljrvg3tY5QlS9T3G aqzlfAD5PVQJP1LGF1neNdskZbWfroCBKeE8s= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=ojBI96YW+N0lBwNQ0bDmUQIIH6VT1zNSqvlwLy5z0+QNgyJzupePbhwxNwGRtc+jl6 HexFKAC6sIOFSBdqVQ0KgGFt/FgnL5I+4boble480d0gaNgjN3zAIGwZkyo4VjUhmZaM 8TSMnQIzXhkDi1EpV+QZOXBYAU0RCfVhY4oB8= Original-Received: by 10.239.179.141 with SMTP id d13mr340327hbg.124.1244845483828; Fri, 12 Jun 2009 15:24:43 -0700 (PDT) In-Reply-To: X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) Resent-Date: Fri, 12 Jun 2009 18:37:26 -0400 X-BeenThere: bug-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 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: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:28671 Archived-At: --001485f631e4dd267d046c2e2ceb Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On Sun, Jun 7, 2009 at 3:11 AM, Lennart Borgman wrote: > Rethinking. Everything is wrong in my solution and suggestion. Coming back. Ok, here is what I believe is a reasonable solution. The first problem is that the semantics of let, make-variable-buffer-local etc are not clearly defined. I suggest the following semantics (instead of the one I proposed before): - When (let ...) shadows a variable it is exactly this variable (ie default or buffer local version) that should be revived after (let ...). - No buffer local variables should be deleted or created by the reviving of the shadowed variables after the (let ...) clause. - More exactly: if the variable is buffer local in the current buffer before (let ..) it is the buffer local variable in that buffer that should be revived. If it does not exist after (let..) nothing should be done. - And if a shadowed variable have been made buffer local during the let binding then it is still the default value that should be revived. The buffer local value should in this case not be changed after the (let ..) clause. I think with this semantics everything will be nearly as fast as before and there will be no such surprises as shown in this bug. What do others think? I have made a patch for this with some comments and questions. I have included this in my patched version of Emacs+EmacsW32 and have been using it myself for a couple of days without any problems. However please review this carefully and especially what I have called /* Case 1 in specbind */ in unbind_to. --001485f631e4dd267d046c2e2ceb Content-Type: application/octet-stream; name="eval-bug3467.diff" Content-Disposition: attachment; filename="eval-bug3467.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fvvgt02c0 SW5kZXg6IGV2YWwuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9zb3VyY2VzL2VtYWNzL2VtYWNz L3NyYy9ldmFsLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjMxMA0KZGlmZiAtdSAtYiAtcjEu MzEwIGV2YWwuYw0KLS0tIGV2YWwuYwkyNCBNYXIgMjAwOSAxNjozNzoyNSAtMDAwMAkxLjMxMA0K KysrIGV2YWwuYwkxMiBKdW4gMjAwOSAyMToyNToxMyAtMDAwMA0KQEAgLTMxLDYgKzMxLDggQEAN CiAjaW5jbHVkZSAieHRlcm0uaCINCiAjZW5kaWYNCiANCisjaW5jbHVkZSA8c3RkaW8uaD4JCS8q IEZvciBmcHJpbnRmLiAgKi8NCisNCiAvKiBUaGlzIGRlZmluaXRpb24gaXMgZHVwbGljYXRlZCBp biBhbGxvYy5jIGFuZCBrZXlib2FyZC5jICovDQogLyogUHV0dGluZyBpdCBpbiBsaXNwLmggbWFr ZXMgY2MgYm9tYiBvdXQhICovDQogDQpAQCAtMzI5NSw2ICszMjk3LDcgQEANCiAgIHZhbGNvbnRl bnRzID0gU1lNQk9MX1ZBTFVFIChzeW1ib2wpOw0KICAgaWYgKCFNSVNDUCAodmFsY29udGVudHMp ICYmICFTWU1CT0xfQ09OU1RBTlRfUCAoc3ltYm9sKSkNCiAgICAgew0KKyAgICAgIC8qIENhc2Ug MSAqLw0KICAgICAgIHNwZWNwZGxfcHRyLT5zeW1ib2wgPSBzeW1ib2w7DQogICAgICAgc3BlY3Bk bF9wdHItPm9sZF92YWx1ZSA9IHZhbGNvbnRlbnRzOw0KICAgICAgIHNwZWNwZGxfcHRyLT5mdW5j ID0gTlVMTDsNCkBAIC0zMzA0LDcgKzMzMDcsNyBAQA0KICAgZWxzZQ0KICAgICB7DQogICAgICAg TGlzcF9PYmplY3Qgb3ZhbHVlID0gZmluZF9zeW1ib2xfdmFsdWUgKHN5bWJvbCk7DQotICAgICAg c3BlY3BkbF9wdHItPmZ1bmMgPSAwOw0KKyAgICAgIHNwZWNwZGxfcHRyLT5mdW5jID0gMDsgLyog Rml4LW1lOiBBcmUgTlVMTCA9PT0gMD8gKi8NCiAgICAgICBzcGVjcGRsX3B0ci0+b2xkX3ZhbHVl ID0gb3ZhbHVlOw0KIA0KICAgICAgIHZhbGNvbnRlbnRzID0gWFNZTUJPTCAoc3ltYm9sKS0+dmFs dWU7DQpAQCAtMzMxOSwxMSArMzMyMiwxNCBAQA0KIAkgIC8qIEZvciBhIGxvY2FsIHZhcmlhYmxl LCByZWNvcmQgYm90aCB0aGUgc3ltYm9sIGFuZCB3aGljaA0KIAkgICAgIGJ1ZmZlcidzIG9yIGZy YW1lJ3MgdmFsdWUgd2UgYXJlIHNhdmluZy4gICovDQogCSAgaWYgKCFOSUxQIChGbG9jYWxfdmFy aWFibGVfcCAoc3ltYm9sLCBRbmlsKSkpDQorICAgICAgICAgICAgLyogQ2FzZSAyICovDQogCSAg ICB3aGVyZSA9IGN1cnJlbnRfYnVmZmVyOw0KIAkgIGVsc2UgaWYgKEJVRkZFUl9MT0NBTF9WQUxV RVAgKHZhbGNvbnRlbnRzKQ0KIAkJICAgJiYgWEJVRkZFUl9MT0NBTF9WQUxVRSAodmFsY29udGVu dHMpLT5mb3VuZF9mb3JfZnJhbWUpDQorICAgICAgICAgICAgLyogQ2FzZSAzICovDQogCSAgICB3 aGVyZSA9IFhCVUZGRVJfTE9DQUxfVkFMVUUgKHZhbGNvbnRlbnRzKS0+ZnJhbWU7DQogCSAgZWxz ZQ0KKyAgICAgICAgICAgIC8qIENhc2UgNCAqLw0KIAkgICAgd2hlcmUgPSBRbmlsOw0KIA0KIAkg IC8qIFdlJ3JlIG5vdCB1c2luZyB0aGUgYHVudXNlZCcgc2xvdCBpbiB0aGUgc3BlY2JpbmRpbmcN CkBAIC0zMzk3LDYgKzM0MDMsNyBAQA0KICAgICAgIHRoaXNfYmluZGluZyA9ICotLXNwZWNwZGxf cHRyOw0KIA0KICAgICAgIGlmICh0aGlzX2JpbmRpbmcuZnVuYyAhPSAwKQ0KKyAgICAgICAgLyog RnJvbSByZWNvcmRfdW53aW5kX3Byb3RlY3QgKi8NCiAJKCp0aGlzX2JpbmRpbmcuZnVuYykgKHRo aXNfYmluZGluZy5vbGRfdmFsdWUpOw0KICAgICAgIC8qIElmIHRoZSBzeW1ib2wgaXMgYSBsaXN0 LCBpdCBpcyByZWFsbHkgKFNZTUJPTCBXSEVSRQ0KIAkgLiBDVVJSRU5ULUJVRkZFUikgd2hlcmUg V0hFUkUgaXMgZWl0aGVyIG5pbCwgYSBidWZmZXIsIG9yIGENCkBAIC0zNDEzLDIxICszNDIwLDcy IEBADQogCSAgd2hlcmUgPSBYQ0FSIChYQ0RSICh0aGlzX2JpbmRpbmcuc3ltYm9sKSk7DQogDQog CSAgaWYgKE5JTFAgKHdoZXJlKSkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAvKiBD YXNlIDQgaW4gc3BlY2JpbmQgKi8NCisgICAgICAgICAgICAgIC8qIFdlIHNob3VsZCByZXNldCBk ZWZhdWx0IHZhbHVlLiAgKE5vdGU6IFRoZSBkZWZhdWx0DQorICAgICAgICAgICAgICAgICB2YWx1 ZSBpcyBlaXRoZXIgbGV0IGJvdW5kIG9yIGdsb2JhbC4pICovDQogCSAgICBGc2V0X2RlZmF1bHQg KHN5bWJvbCwgdGhpc19iaW5kaW5nLm9sZF92YWx1ZSk7DQorICAgICAgICAgICAgICAvL3ByaW50 ZiAoInVuYmluZF90bzogRnNldF9kZWZhdWx0IHdoZXJlPW5pbCAlc1xuIiwgU0RBVEEgKFNZTUJP TF9OQU1FIChzeW1ib2wpKSk7DQorICAgICAgICAgICAgfQ0KIAkgIGVsc2UgaWYgKEJVRkZFUlAg KHdoZXJlKSkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAvKiBDYXNlIDIgaW4gc3Bl Y2JpbmQgKi8NCisgICAgICAgICAgICAgIC8qIFdlIHNob3VsZCByZXNldCBidWZmZXIgbG9jYWwg YmluZGluZywgYnV0IG9ubHkgaWYgaXQNCisgICAgICAgICAgICAgICAgIGlzIGJ1ZmZlciBsb2Nh bCBub3cgb3Igd2lsbCBiZSB3aGVuIHNldC4gKi8NCisgICAgICAgICAgICAgIGlmICghTklMUCAo RmxvY2FsX3ZhcmlhYmxlX3AgKHN5bWJvbCwgd2hlcmUpKSB8fA0KKyAgICAgICAgICAgICAgICAg ICFOSUxQIChGbG9jYWxfdmFyaWFibGVfaWZfc2V0X3AgKHN5bWJvbCwgd2hlcmUpKSkNCisgICAg ICAgICAgICAgICAgew0KIAkgICAgc2V0X2ludGVybmFsIChzeW1ib2wsIHRoaXNfYmluZGluZy5v bGRfdmFsdWUsIFhCVUZGRVIgKHdoZXJlKSwgMSk7DQorICAgICAgICAgICAgICAgICAgLy9wcmlu dGYgKCJ1bmJpbmRfdG86IHNldF9pbnRlcm5hbCBpbiBidWZmZXIgJXNcbiIsIFNEQVRBIChTWU1C T0xfTkFNRSAoc3ltYm9sKSkpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0K IAkgIGVsc2UNCisgICAgICAgICAgICAgIC8qIENhc2UgMyBpbiBzcGVjYmluZCAqLw0KKyAgICAg ICAgICAgICAgLyogRml4LW1lOiBUaGlzIGlzIHRoZSBmcmFtZSBsb2NhbCBjYXNlLiAgSSBiZWxp ZXZlIGl0DQorICAgICAgICAgICAgICAgICBpcyBicm9rZW4sIGJ1dCBJIGRvIG5vdCBrbm93IGlm IGl0IGlzIHdvcnRoIGZpeGluZyBpdA0KKyAgICAgICAgICAgICAgICAgc2luY2UgZnJhbWUgbG9j YWwgdmFyaWFibGUgYXJlIG9ic29sZXRlLCBvcj8NCisNCisgICAgICAgICAgICAgICAgIE5vdGU6 IEkgZG8gbm90IHVuZGVyc3RhbmQgTlVMTCBidWYgYXJnIGhlcmUsIGJ1dCBJDQorICAgICAgICAg ICAgICAgICBhc3N1bWUgdGhhdCBOVUxMID09PSAwIGhlcmUgYmVjYXVzZSBzZXRfaW50ZXJuYWwN CisgICAgICAgICAgICAgICAgIGNoZWNrcyBmb3IgMCBhbmQgZG9lcyB0aGluZ3MgbGlrZSBidWYt PnZhbHVlLiAqLw0KIAkgICAgc2V0X2ludGVybmFsIChzeW1ib2wsIHRoaXNfYmluZGluZy5vbGRf dmFsdWUsIE5VTEwsIDEpOw0KIAl9DQogICAgICAgZWxzZQ0KIAl7DQorICAgICAgICAgIC8qIENh c2UgMSBpbiBzcGVjYmluZCAqLw0KIAkgIC8qIElmIHZhcmlhYmxlIGhhcyBhIHRyaXZpYWwgdmFs dWUgKG5vIGZvcndhcmRpbmcpLCB3ZSBjYW4NCiAJICAgICBqdXN0IHNldCBpdC4gIE5vIG5lZWQg dG8gY2hlY2sgZm9yIGNvbnN0YW50IHN5bWJvbHMgaGVyZSwNCiAJICAgICBzaW5jZSB0aGF0IHdh cyBhbHJlYWR5IGRvbmUgYnkgc3BlY2JpbmQuICAqLw0KIAkgIGlmICghTUlTQ1AgKFNZTUJPTF9W QUxVRSAodGhpc19iaW5kaW5nLnN5bWJvbCkpKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAg ICAgIC8qIEZpeC1tZTogSSBkbyBub3QgdW5kZXJzdGFuZCB0aGlzIGNhc2UuICBJIGFzc3VtZSB0 aGF0DQorICAgICAgICAgICAgICAgICBpZiB3ZSBhcmUgaGVyZSB0aGUgdmFyaWFibGUgaGFkIG5v IGJ1ZmZlciBsb2NhbA0KKyAgICAgICAgICAgICAgICAgYmluZGluZyBpbiBzcGVjYmluZCBzbyB0 aGF0IHdlIHNob3VsZCBzZXQgdGhlIGRlZmF1bHQNCisgICAgICAgICAgICAgICAgIHZhbHVlLiAg Q2FuIFNFVF9TWU1CT0xfVkFMVUUgYmUgdXNlZCBldmVuIGlmIHRoZQ0KKyAgICAgICAgICAgICAg ICAgdmFyaWFibGUgbm93IGhhdmUgYSBidWZmZXIgbG9jYWwgdmFsdWU/ICBEb2Vzbid0IGl0DQor ICAgICAgICAgICAgICAgICBlcmFzZSBhIGJ1ZmZlciBsb2NhbCBiaW5kaW5nIHRoYXQgaGFzIGJl ZW4gZG9uZSBhZnRlcg0KKyAgICAgICAgICAgICAgICAgc3BlY2JpbmQ/ICBDYW4gRnNldF9kZWZh dWx0IGJlIHVzZWQgaW4gdGhhdCBjYXNlPw0KKyAgICAgICAgICAgICAgICAgSG93IGNhbiB3ZSB0 ZXN0IGlmIG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsIGhhcw0KKyAgICAgICAgICAgICAgICAg YmVlbiBkb25lPyAqLw0KIAkgICAgU0VUX1NZTUJPTF9WQUxVRSAodGhpc19iaW5kaW5nLnN5bWJv bCwgdGhpc19iaW5kaW5nLm9sZF92YWx1ZSk7DQorICAgICAgICAgICAgICAvL3ByaW50ZiAoInVu YmluZF90bzogU0VUX1NZTUJPTF9WQUxVRSAlc1xuIiwgU0RBVEEgKFNZTUJPTF9OQU1FICh0aGlz X2JpbmRpbmcuc3ltYm9sKSkpOw0KKyAgICAgICAgICAgIH0NCiAJICBlbHNlDQorICAgICAgICAg ICAgLyogRml4LW1lOiBJIGRvIG5vdCB1bmRlcnN0YW5kIHdoeSBzZXRfaW50ZXJuYWwgd2VyZSB1 c2VkDQorICAgICAgICAgICAgICAgaGVyZS4gIENvdWxkIHRoZSB2YXJpYWJsZSBoYXZlIGhhZCBh IGJ1ZmZlciBsb2NhbA0KKyAgICAgICAgICAgICAgIGJpbmRpbmcgaW4gc3BlY2JpbmQgaWYgd2Ug YXJlIGhlcmU/ICBTaG91bGQgbm90IGp1c3QNCisgICAgICAgICAgICAgICBGc2V0X2RlZmF1bHQg YmUgY2FsbGVkIGhlcmU/ICovDQorICAgICAgICAgICAgaWYgKDApIC8vKE5JTFAgKEZsb2NhbF92 YXJpYWJsZV9wICh0aGlzX2JpbmRpbmcuc3ltYm9sLCBRbmlsKSkpDQorICAgICAgICAgICAgICB7 DQogCSAgICBzZXRfaW50ZXJuYWwgKHRoaXNfYmluZGluZy5zeW1ib2wsIHRoaXNfYmluZGluZy5v bGRfdmFsdWUsIDAsIDEpOw0KKyAgICAgICAgICAgICAgICAvL3ByaW50ZiAoInVuYmluZF90bzog c2V0X2ludGVybmFsIDAgJXNcbiIsIFNEQVRBIChTWU1CT0xfTkFNRSAodGhpc19iaW5kaW5nLnN5 bWJvbCkpKTsNCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICBlbHNlDQorICAgICAgICAg ICAgICB7DQorICAgICAgICAgICAgICAgIC8qIFNldCB0aGUgZGVmYXVsdCB2YWx1ZSBzaW5jZSB3 ZSBoYWQgbm8gYnVmZmVyIGxvY2FsIGJpbmRpbmcgYmVmb3JlLiAqLw0KKyAgICAgICAgICAgICAg ICBGc2V0X2RlZmF1bHQgKHRoaXNfYmluZGluZy5zeW1ib2wsIHRoaXNfYmluZGluZy5vbGRfdmFs dWUpOw0KKyAgICAgICAgICAgICAgICAvL3ByaW50ZiAoInVuYmluZF90bzogRnNldF9kZWZhdWx0 IG5vIG5lZWQgJXNcbiIsIFNEQVRBIChTWU1CT0xfTkFNRSAodGhpc19iaW5kaW5nLnN5bWJvbCkp KTsNCisgICAgICAgICAgICAgIH0NCiAJfQ0KICAgICB9DQogDQo= --001485f631e4dd267d046c2e2ceb--