From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Julian Graham Newsgroups: gmane.lisp.guile.devel Subject: Re: r6rs libraries, round three Date: Thu, 1 Oct 2009 00:32:06 -0400 Message-ID: <2bc5f8210909302132w258d3f09tf1259bdfd6b1ca9e@mail.gmail.com> References: <2bc5f8210909261310q7a32ff83x8ebceb44a78d55c5@mail.gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001636c5ba2f44dc0c0474d82173 X-Trace: ger.gmane.org 1254371556 4067 80.91.229.12 (1 Oct 2009 04:32:36 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 1 Oct 2009 04:32:36 +0000 (UTC) To: guile-devel Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Thu Oct 01 06:32:29 2009 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1MtDL5-0004wF-2z for guile-devel@m.gmane.org; Thu, 01 Oct 2009 06:32:28 +0200 Original-Received: from localhost ([127.0.0.1]:36968 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MtDL4-0007qv-8i for guile-devel@m.gmane.org; Thu, 01 Oct 2009 00:32:22 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MtDKw-0007pn-Ca for guile-devel@gnu.org; Thu, 01 Oct 2009 00:32:14 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MtDKr-0007pb-2H for guile-devel@gnu.org; Thu, 01 Oct 2009 00:32:13 -0400 Original-Received: from [199.232.76.173] (port=41775 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MtDKq-0007pY-Tx for guile-devel@gnu.org; Thu, 01 Oct 2009 00:32:08 -0400 Original-Received: from mail-ew0-f208.google.com ([209.85.219.208]:55403) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MtDKq-00007a-4g for guile-devel@gnu.org; Thu, 01 Oct 2009 00:32:08 -0400 Original-Received: by ewy4 with SMTP id 4so5083955ewy.31 for ; Wed, 30 Sep 2009 21:32:06 -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:content-type; bh=ezx2sGBnsGmChl50C+s7ZTHqHAZTS8tL1TZisQmCnUA=; b=WL1LCPWE5qsfFvGrDSFsfPDNEjnL/bgya/LTqVlYovKuDRQfo40sC05t5BTtcKdfTH HyNZnXXUpuU4LDvkhquQImw0fD+K52y8G/hsMl5mBHjRAe06Ctl9SqSFBKeONiRhRD2k fcqMvDgxCmToeV0MWfICKrXJihlx6WeqyVmBg= 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 :content-type; b=GNYBCXAg+vwLi0dPDj8kEGas7tGRfRngb5l6e05BnGF/AezajYs63nuwi7euogu7La 6ZhPBAn+LMLp8o6lxpW5leSY8qvw011YSgQuiIELH9vMupCeFyl283qfNI8OFzkLnViE elwLK39ZhSXRidxUFidqB/Vk/E2aT6VPTLum0= Original-Received: by 10.211.131.34 with SMTP id i34mr763252ebn.35.1254371526761; Wed, 30 Sep 2009 21:32:06 -0700 (PDT) In-Reply-To: <2bc5f8210909261310q7a32ff83x8ebceb44a78d55c5@mail.gmail.com> X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:9423 Archived-At: --001636c5ba2f44dc0c0474d82173 Content-Type: text/plain; charset=ISO-8859-1 Hi Guilers, Okay, after poking around in the manual and the code, it looks like `load-module' does what I need. Find attached two patches that, combined, add full support for R6RS-style version information to Guile's module system. I've done a bit of testing and believe that this code does the Right Thing in a variety of situations -- e.g., it always attempts to select the "highest" version number but can recover from situations in which paths corresponding to higher-numbered versions don't contain actual module implementations. Questions, comments? If it seems like this code is on the right track, I'll add documentation to the appropriate locations. boot-9.scm is getting a little bit crowded, though -- I don't suppose it makes sense to move some of the module handling code to an auxiliary file? Regards, Julian --001636c5ba2f44dc0c0474d82173 Content-Type: text/x-diff; charset=US-ASCII; name="0001-Initial-support-for-version-information-in-Guile-s.patch" Content-Disposition: attachment; filename="0001-Initial-support-for-version-information-in-Guile-s.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g0904tde1 RnJvbSBhMWQ0OWMwMGNkNmNjMTQ0YmY1MjY0ODFlNWJhN2RhNmFlZmEwODIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdWxpYW4gR3JhaGFtIDxqdWxpYW4uZ3JhaGFtQGF5YS55YWxl LmVkdT4KRGF0ZTogU2F0LCAyNiBTZXAgMjAwOSAxNDo1Mjo1NiAtMDQwMApTdWJqZWN0OiBbUEFU Q0hdIEluaXRpYWwgc3VwcG9ydCBmb3IgdmVyc2lvbiBpbmZvcm1hdGlvbiBpbiBHdWlsZSdzIGBt b2R1bGUnIGZvcm0uCgoqIG1vZHVsZS9pY2UtOS9ib290LTkuc2NtIChtb2R1bGUtdmVyc2lvbiwg c2V0LW1vZHVsZS12ZXJzaW9uISwgdmVyc2lvbi1tYXRjaGVzPyk6Ck5ldyBmdW5jdGlvbnMuCiog bW9kdWxlL2ljZS05L2Jvb3QtOS5zY20gKG1vZHVsZS10eXBlLCBtYWtlLW1vZHVsZSwgcmVzb2x2 ZS1tb2R1bGUsIHRyeS1sb2FkLW1vZHVsZSwgcHJvY2Vzcy1kZWZpbmUtbW9kdWxlLCBtYWtlLWF1 dG9sb2FkLWludGVyZmFjZSwgY29tcGlsZS1pbnRlcmZhY2Utc3BlYyk6CkFkZCBhd2FyZW5lc3Mg YW5kIGNoZWNraW5nIG9mIHZlcnNpb24gaW5mb3JtYXRpb24uCi0tLQogbW9kdWxlL2ljZS05L2Jv b3QtOS5zY20gfCAgIDQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LQogMSBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9tb2R1bGUvaWNlLTkvYm9vdC05LnNjbSBiL21vZHVsZS9pY2UtOS9ib290LTku c2NtCmluZGV4IGExNTM3ZDEuLmI0OWY3OTkgMTAwNjQ0Ci0tLSBhL21vZHVsZS9pY2UtOS9ib290 LTkuc2NtCisrKyBiL21vZHVsZS9pY2UtOS9ib290LTkuc2NtCkBAIC0xMzMyLDggKzEzMzIsOCBA QAogKGRlZmluZSBtb2R1bGUtdHlwZQogICAobWFrZS1yZWNvcmQtdHlwZSAnbW9kdWxlCiAJCSAg ICAnKG9iYXJyYXkgdXNlcyBiaW5kZXIgZXZhbC1jbG9zdXJlIHRyYW5zZm9ybWVyIG5hbWUga2lu ZAotCQkgICAgICBkdXBsaWNhdGVzLWhhbmRsZXJzIGltcG9ydC1vYmFycmF5Ci0JCSAgICAgIG9i c2VydmVycyB3ZWFrLW9ic2VydmVycykKKwkJICAgICAgZHVwbGljYXRlcy1oYW5kbGVycyBpbXBv cnQtb2JhcnJheSBvYnNlcnZlcnMgCisJCSAgICAgIHdlYWstb2JzZXJ2ZXJzIHZlcnNpb24pCiAJ CSAgICAlcHJpbnQtbW9kdWxlKSkKIAogOzsgbWFrZS1tb2R1bGUgJm9wdCBzaXplIHVzZXMgYmlu ZGVyCkBAIC0xMzc0LDEzICsxMzc0LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjZiAjZiAjZgogCQkJCQkgIChtYWtlLWhhc2gtdGFibGUgJWRlZmF1bHQt aW1wb3J0LXNpemUpCiAJCQkJCSAgJygpCi0JCQkJCSAgKG1ha2Utd2Vhay1rZXktaGFzaC10YWJs ZSAzMSkpKSkKKwkJCQkJICAobWFrZS13ZWFrLWtleS1oYXNoLXRhYmxlIDMxKSAjZikpKQogCiAJ ICA7OyBXZSBjYW4ndCBwYXNzIHRoaXMgYXMgYW4gYXJndW1lbnQgdG8gbW9kdWxlLWNvbnN0cnVj dG9yLAogCSAgOzsgYmVjYXVzZSB3ZSBuZWVkIGl0IHRvIGNsb3NlIG92ZXIgYSBwb2ludGVyIHRv IHRoZSBtb2R1bGUKIAkgIDs7IGl0c2VsZi4KIAkgIChzZXQtbW9kdWxlLWV2YWwtY2xvc3VyZSEg bW9kdWxlIChzdGFuZGFyZC1ldmFsLWNsb3N1cmUgbW9kdWxlKSkKLQogCSAgbW9kdWxlKSkpKQog CiAoZGVmaW5lIG1vZHVsZS1jb25zdHJ1Y3RvciAocmVjb3JkLWNvbnN0cnVjdG9yIG1vZHVsZS10 eXBlKSkKQEAgLTEzOTYsNiArMTM5NSw4IEBACiAKIChkZWZpbmUgbW9kdWxlLXRyYW5zZm9ybWVy IChyZWNvcmQtYWNjZXNzb3IgbW9kdWxlLXR5cGUgJ3RyYW5zZm9ybWVyKSkKIChkZWZpbmUgc2V0 LW1vZHVsZS10cmFuc2Zvcm1lciEgKHJlY29yZC1tb2RpZmllciBtb2R1bGUtdHlwZSAndHJhbnNm b3JtZXIpKQorKGRlZmluZSBtb2R1bGUtdmVyc2lvbiAocmVjb3JkLWFjY2Vzc29yIG1vZHVsZS10 eXBlICd2ZXJzaW9uKSkKKyhkZWZpbmUgc2V0LW1vZHVsZS12ZXJzaW9uISAocmVjb3JkLW1vZGlm aWVyIG1vZHVsZS10eXBlICd2ZXJzaW9uKSkKIDs7IChkZWZpbmUgbW9kdWxlLW5hbWUgKHJlY29y ZC1hY2Nlc3NvciBtb2R1bGUtdHlwZSAnbmFtZSkpIHdhaXQgdW50aWwgbW9kcyBhcmUgYm9vdGVk CiAoZGVmaW5lIHNldC1tb2R1bGUtbmFtZSEgKHJlY29yZC1tb2RpZmllciBtb2R1bGUtdHlwZSAn bmFtZSkpCiAoZGVmaW5lIG1vZHVsZS1raW5kIChyZWNvcmQtYWNjZXNzb3IgbW9kdWxlLXR5cGUg J2tpbmQpKQpAQCAtMjAwOCwyNCArMjAwOSwzMiBAQAogICAgICAgOzsgSW1wb3J0IHRoZSBkZWZh dWx0IHNldCBvZiBiaW5kaW5ncyAoZnJvbSB0aGUgU0NNIG1vZHVsZSkgaW4gTU9EVUxFLgogICAg ICAgKG1vZHVsZS11c2UhIG1vZHVsZSB0aGUtc2NtLW1vZHVsZSkpKQogCis7OyBUZW1wb3Jhcnkg a2x1ZGdlIGJlZm9yZSBpbXBsZW1lbnRpbmcgZnVsbCB2ZXJzaW9uIG1hdGNoaW5nLgorKGRlZmlu ZSB2ZXJzaW9uLW1hdGNoZXM/IGVxdWFsPykKKwogOzsgTk9URTogVGhpcyBiaW5kaW5nIGlzIHVz ZWQgaW4gbGliZ3VpbGUvbW9kdWxlcy5jLgogOzsKIChkZWZpbmUgcmVzb2x2ZS1tb2R1bGUKICAg KGxldCAoKHRoZS1yb290LW1vZHVsZSB0aGUtcm9vdC1tb2R1bGUpKQotICAgIChsYW1iZGEgKG5h bWUgLiBtYXliZS1hdXRvbG9hZCkKKyAgICAobGFtYmRhIChuYW1lIC4gYXJncykgICAgICAKICAg ICAgIChpZiAoZXF1YWw/IG5hbWUgJyhndWlsZSkpCiAgICAgICAgICAgdGhlLXJvb3QtbW9kdWxl CiAgICAgICAgICAgKGxldCAoKGZ1bGwtbmFtZSAoYXBwZW5kICcoJWFwcCBtb2R1bGVzKSBuYW1l KSkpCi0gICAgICAgICAgICAobGV0ICgoYWxyZWFkeSAobmVzdGVkLXJlZiB0aGUtcm9vdC1tb2R1 bGUgZnVsbC1uYW1lKSkKLSAgICAgICAgICAgICAgICAgIChhdXRvbG9hZCAob3IgKG51bGw/IG1h eWJlLWF1dG9sb2FkKSAoY2FyIG1heWJlLWF1dG9sb2FkKSkpKQorICAgICAgICAgICAgKGxldCog KChhbHJlYWR5IChuZXN0ZWQtcmVmIHRoZS1yb290LW1vZHVsZSBmdWxsLW5hbWUpKQorCQkgICAo bnVtYXJncyAobGVuZ3RoIGFyZ3MpKQorCQkgICAoYXV0b2xvYWQgKG9yICg9IG51bWFyZ3MgMCkg KGNhciBhcmdzKSkpCisJCSAgICh2ZXJzaW9uIChhbmQgKD4gbnVtYXJncyAxKSAoY2FkciBhcmdz KSkpKQogICAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICAgKChhbmQgYWxyZWFkeSAo bW9kdWxlPyBhbHJlYWR5KQogICAgICAgICAgICAgICAgICAgICAgKG9yIChub3QgYXV0b2xvYWQp IChtb2R1bGUtcHVibGljLWludGVyZmFjZSBhbHJlYWR5KSkpCiAgICAgICAgICAgICAgICAgOzsg QSBoaXQsIGEgcGFscGFibGUgaGl0LgorCQkoYW5kIHZlcnNpb24gCisJCSAgICAgKG5vdCAodmVy c2lvbi1tYXRjaGVzPyB2ZXJzaW9uIChtb2R1bGUtdmVyc2lvbiBhbHJlYWR5KSkpCisJCSAgICAg KGVycm9yICJpbmNvbXBhdGlibGUgbW9kdWxlIHZlcnNpb24gYWxyZWFkeSBsb2FkZWQiIG5hbWUp KQogICAgICAgICAgICAgICAgIGFscmVhZHkpCiAgICAgICAgICAgICAgICAoYXV0b2xvYWQKICAg ICAgICAgICAgICAgICA7OyBUcnkgdG8gYXV0b2xvYWQgdGhlIG1vZHVsZSwgYW5kIHJlY3Vyc2Uu Ci0gICAgICAgICAgICAgICAgKHRyeS1sb2FkLW1vZHVsZSBuYW1lKQorICAgICAgICAgICAgICAg ICh0cnktbG9hZC1tb2R1bGUgbmFtZSB2ZXJzaW9uKQogICAgICAgICAgICAgICAgIChyZXNvbHZl LW1vZHVsZSBuYW1lICNmKSkKICAgICAgICAgICAgICAgIChlbHNlCiAgICAgICAgICAgICAgICAg OzsgQSBtb2R1bGUgaXMgbm90IGJvdW5kIChidXQgbWF5YmUgc29tZXRoaW5nIGVsc2UgaXMpLApA QCAtMjA3MSw3ICsyMDgwLDcgQEAKIAogOzsgKGRlZmluZS1zcGVjaWFsLXZhbHVlICcoJWFwcCBt b2R1bGVzIG5ldy13cykgKGxhbWJkYSAoKSAobWFrZS1zY20tbW9kdWxlKSkpCiAKLShkZWZpbmUg KHRyeS1sb2FkLW1vZHVsZSBuYW1lKQorKGRlZmluZSAodHJ5LWxvYWQtbW9kdWxlIG5hbWUgdmVy c2lvbikKICAgKHRyeS1tb2R1bGUtYXV0b2xvYWQgbmFtZSkpCiAKIChkZWZpbmUgKHB1cmlmeS1t b2R1bGUhIG1vZHVsZSkKQEAgLTIxMzIsNyArMjE0MSw4IEBACiAJCSAgICAgIChsZXQgKChwcmVm aXggKGdldC1rZXl3b3JkLWFyZyBhcmdzICM6cHJlZml4ICNmKSkpCiAJCQkoYW5kIHByZWZpeCAo c3ltYm9sLXByZWZpeC1wcm9jIHByZWZpeCkpKQogCQkgICAgICBpZGVudGl0eSkpCi0gICAgICAg ICAobW9kdWxlIChyZXNvbHZlLW1vZHVsZSBuYW1lKSkKKwkgKHZlcnNpb24gKGdldC1rZXl3b3Jk LWFyZyBhcmdzICM6dmVyc2lvbiAjZikpCisgICAgICAgICAobW9kdWxlIChyZXNvbHZlLW1vZHVs ZSBuYW1lICN0IHZlcnNpb24pKQogICAgICAgICAgKHB1YmxpYy1pIChhbmQgbW9kdWxlIChtb2R1 bGUtcHVibGljLWludGVyZmFjZSBtb2R1bGUpKSkpCiAgICAgKGFuZCAob3IgKG5vdCBtb2R1bGUp IChub3QgcHVibGljLWkpKQogICAgICAgICAgKGVycm9yICJubyBjb2RlIGZvciBtb2R1bGUiIG5h bWUpKQpAQCAtMjI1Myw2ICsyMjYzLDEyIEBACiAgICAgICAgICAgICAgKHB1cmlmeS1tb2R1bGUh IG1vZHVsZSkKICAgICAgICAgICAgICAobG9vcCAoY2RyIGt3cykgcmV2ZXJzZWQtaW50ZXJmYWNl cyBleHBvcnRzIHJlLWV4cG9ydHMKICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMgYXV0 b2xvYWRzKSkKKwkgICAgKCgjOnZlcnNpb24pCisgICAgICAgICAgICAgKG9yIChwYWlyPyAoY2Ry IGt3cykpCisgICAgICAgICAgICAgICAgICh1bnJlY29nbml6ZWQga3dzKSkKKwkgICAgIChzZXQt bW9kdWxlLXZlcnNpb24hIG1vZHVsZSAoY2FkciBrd3MpKQorCSAgICAgKGxvb3AgKGNkZHIga3dz KSByZXZlcnNlZC1pbnRlcmZhY2VzIGV4cG9ydHMgcmUtZXhwb3J0cworCQkgICByZXBsYWNlbWVu dHMgYXV0b2xvYWRzKSkKICAgICAgICAgICAgICgoIzpkdXBsaWNhdGVzKQogICAgICAgICAgICAg IChpZiAobm90IChwYWlyPyAoY2RyIGt3cykpKQogICAgICAgICAgICAgICAgICAodW5yZWNvZ25p emVkIGt3cykpCkBAIC0yMzE2LDcgKzIzMzIsOCBAQAogCQkJICAoc2V0LWNhciEgYXV0b2xvYWQg aSkpKQogCQkgICAgKG1vZHVsZS1sb2NhbC12YXJpYWJsZSBpIHN5bSkpKSkpKQogICAgIChtb2R1 bGUtY29uc3RydWN0b3IgKG1ha2UtaGFzaC10YWJsZSAwKSAnKCkgYiAjZiAjZiBuYW1lICdhdXRv bG9hZCAjZgotICAgICAgICAgICAgICAgICAgICAgICAgKG1ha2UtaGFzaC10YWJsZSAwKSAnKCkg KG1ha2Utd2Vhay12YWx1ZS1oYXNoLXRhYmxlIDMxKSkpKQorICAgICAgICAgICAgICAgICAgICAg ICAgKG1ha2UtaGFzaC10YWJsZSAwKSAnKCkgKG1ha2Utd2Vhay12YWx1ZS1oYXNoLXRhYmxlIDMx KQorCQkJI2YpKSkKIAogKGRlZmluZSAobW9kdWxlLWF1dG9sb2FkISBtb2R1bGUgLiBhcmdzKQog ICAiSGF2ZSBAdmFye21vZHVsZX0gYXV0b21hdGljYWxseSBsb2FkIHRoZSBtb2R1bGUgbmFtZWQg QHZhcntuYW1lfSB3aGVuIG9uZQpAQCAtMjkyMSw3ICsyOTM4LDggQEAgbW9kdWxlICcoaWNlLTkg cSkgJyhtYWtlLXEgcS1sZW5ndGgpKX0uIgogICAgICcoKDpzZWxlY3QgIzpzZWxlY3QgI3QpCiAg ICAgICAoOmhpZGUgICAjOmhpZGUJI3QpCiAgICAgICAoOnByZWZpeCAjOnByZWZpeCAjdCkKLSAg ICAgICg6cmVuYW1lciAjOnJlbmFtZXIgI2YpKSkKKyAgICAgICg6cmVuYW1lciAjOnJlbmFtZXIg I2YpCisgICAgICAoOnZlcnNpb24gIzp2ZXJzaW9uICNmKSkpCiAgIChpZiAobm90IChwYWlyPyAo Y2FyIHNwZWMpKSkKICAgICAgIGAoJyxzcGVjKQogICAgICAgYCgnLChjYXIgc3BlYykKLS0gCjEu Ni4wLjQKCg== --001636c5ba2f44dc0c0474d82173 Content-Type: text/x-diff; charset=US-ASCII; name="0002-Complete-support-for-version-information-in-Guile-s.patch" Content-Disposition: attachment; filename="0002-Complete-support-for-version-information-in-Guile-s.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g09055rz2 RnJvbSAwYzQ0NDYyYTMzMWYzYjNiMmNlNjQxZmQwODNlMTFkYWNjNTU5NzBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdWxpYW4gR3JhaGFtIDxqdWxpYW4uZ3JhaGFtQGF5YS55YWxl LmVkdT4KRGF0ZTogVGh1LCAxIE9jdCAyMDA5IDAwOjE2OjU1IC0wNDAwClN1YmplY3Q6IFtQQVRD SF0gQ29tcGxldGUgc3VwcG9ydCBmb3IgdmVyc2lvbiBpbmZvcm1hdGlvbiBpbiBHdWlsZSdzIGBt b2R1bGUnIGZvcm0uCgoqIG1vZHVsZS9pY2UtOS9ib290LTkuc2NtIChmaW5kLXZlcnNpb25lZC1t b2R1bGUpOiBOZXcgZnVuY3Rpb24uCiogbW9kdWxlL2ljZS05L2Jvb3QtOS5zY20gKHZlcnNpb24t bWF0Y2hlcz8pOiBJbXBsZW1lbnQgZnVsbCBSNlJTCnZlcnNpb24tbWF0Y2hpbmcgc3ludGF4Lgoq IG1vZHVsZS9pY2UtOS9ib290LTkuc2NtICh0cnktbG9hZC1tb2R1bGUsIHRyeS1tb2R1bGUtYXV0 b2xvYWQpOgpDaGVjayBmb3IgdmVyc2lvbiBhcmd1bWVudCBhbmQgdXNlIGBmaW5kLXZlcnNpb25l ZC1tb2R1bGUnIGlmCnByZXNlbnQuCi0tLQogbW9kdWxlL2ljZS05L2Jvb3QtOS5zY20gfCAgMTAy ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiAxIGZpbGVz IGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv bW9kdWxlL2ljZS05L2Jvb3QtOS5zY20gYi9tb2R1bGUvaWNlLTkvYm9vdC05LnNjbQppbmRleCBi NDlmNzk5Li5mZDBkZWE2IDEwMDY0NAotLS0gYS9tb2R1bGUvaWNlLTkvYm9vdC05LnNjbQorKysg Yi9tb2R1bGUvaWNlLTkvYm9vdC05LnNjbQpAQCAtMjAwOSw4ICsyMDA5LDk0IEBACiAgICAgICA7 OyBJbXBvcnQgdGhlIGRlZmF1bHQgc2V0IG9mIGJpbmRpbmdzIChmcm9tIHRoZSBTQ00gbW9kdWxl KSBpbiBNT0RVTEUuCiAgICAgICAobW9kdWxlLXVzZSEgbW9kdWxlIHRoZS1zY20tbW9kdWxlKSkp CiAKLTs7IFRlbXBvcmFyeSBrbHVkZ2UgYmVmb3JlIGltcGxlbWVudGluZyBmdWxsIHZlcnNpb24g bWF0Y2hpbmcuCi0oZGVmaW5lIHZlcnNpb24tbWF0Y2hlcz8gZXF1YWw/KQorKGRlZmluZSAodmVy c2lvbi1tYXRjaGVzPyB2ZXJzaW9uLXJlZiB0YXJnZXQpCisgIChkZWZpbmUgKGFueSBwcmVjIGxz dCkKKyAgICAoYW5kIChub3QgKG51bGw/IGxzdCkpIChvciAocHJlYyAoY2FyIGxzdCkpIChhbnkg cHJlYyAoY2RyIGxzdCkpKSkpCisgIChkZWZpbmUgKGV2ZXJ5IHByZWMgbHN0KSAKKyAgICAob3Ig KG51bGw/IGxzdCkgKGFuZCAocHJlYyAoY2FyIGxzdCkpIChldmVyeSBwcmVjIChjZHIgbHN0KSkp KSkKKyAgKGRlZmluZSAoc3ViLXZlcnNpb25zLW1hdGNoPyB2LXJlZnMgdCkKKyAgICAoZGVmaW5l IChzdWItdmVyc2lvbi1tYXRjaGVzPyB2LXJlZiB0KQorICAgICAgKGRlZmluZSAoY3VycmllZC1z dWItdmVyc2lvbi1tYXRjaGVzPyB2KSAoc3ViLXZlcnNpb24tbWF0Y2hlcz8gdiB0KSkKKyAgICAg IChjb25kICgobnVtYmVyPyB2LXJlZikgKGVxdj8gdi1yZWYgdCkpCisJICAgICgobGlzdD8gdi1y ZWYpCisJICAgICAobGV0ICgoY3YgKGNhciB2LXJlZikpKQorCSAgICAgICAoY29uZCAoKGVxPyBj diAnPj0pICg+PSB0IChjYWRyIHYtcmVmKSkpCisJCSAgICAgKChlcT8gY3YgJzw9KSAoPD0gdCAo Y2FkciB2LXJlZikpKQorCQkgICAgICgoZXE/IGN2ICdhbmQpIAorCQkgICAgICAoZXZlcnkgY3Vy cmllZC1zdWItdmVyc2lvbi1tYXRjaGVzPyAoY2RyIHYtcmVmKSkpCisJCSAgICAgKChlcT8gY3Yg J29yKQorCQkgICAgICAoYW55IGN1cnJpZWQtc3ViLXZlcnNpb24tbWF0Y2hlcz8gKGNkciB2LXJl ZikpKQorCQkgICAgICgoZXE/IGN2ICdub3QpIChub3QgKHN1Yi12ZXJzaW9uLW1hdGNoZXM/IChj YWRyIHYtcmVmKSB0KSkpCisJCSAgICAgKGVsc2UgKGVycm9yICJJbmNvbXBhdGlibGUgc3ViLXZl cnNpb24gcmVmZXJlbmNlIiBjdikpKSkpCisJICAgIChlbHNlIChlcnJvciAiSW5jb21wYXRpYmxl IHN1Yi12ZXJzaW9uIHJlZmVyZW5jZSIgdi1yZWYpKSkpCisgICAgKG9yIChudWxsPyB2LXJlZnMp CisJKGFuZCAobm90IChudWxsPyB0KSkKKwkgICAgIChzdWItdmVyc2lvbi1tYXRjaGVzPyAoY2Fy IHYtcmVmcykgKGNhciB0KSkKKwkgICAgIChzdWItdmVyc2lvbnMtbWF0Y2g/IChjZHIgdi1yZWZz KSAoY2RyIHQpKSkpKQorICAoZGVmaW5lIChjdXJyaWVkLXZlcnNpb24tbWF0Y2hlcz8gdikgKHZl cnNpb24tbWF0Y2hlcz8gdiB0YXJnZXQpKQorICAob3IgKG51bGw/IHZlcnNpb24tcmVmKQorICAg ICAgKGxldCAoKGN2IChjYXIgdmVyc2lvbi1yZWYpKSkKKwkoY29uZCAoKGVxPyBjdiAnYW5kKSAo ZXZlcnkgY3VycmllZC12ZXJzaW9uLW1hdGNoZXM/IChjZHIgdmVyc2lvbi1yZWYpKSkKKwkgICAg ICAoKGVxPyBjdiAnb3IpIChhbnkgY3VycmllZC12ZXJzaW9uLW1hdGNoZXM/IChjZHIgdmVyc2lv bi1yZWYpKSkKKwkgICAgICAoKGVxPyBjdiAnbm90KSAobm90IHZlcnNpb24tbWF0Y2hlcz8gKGNh ZHIgdmVyc2lvbi1yZWYpIHRhcmdldCkpCisJICAgICAgKGVsc2UgKHN1Yi12ZXJzaW9ucy1tYXRj aD8gdmVyc2lvbi1yZWYgdGFyZ2V0KSkpKSkpCisKKyhkZWZpbmUgKGZpbmQtdmVyc2lvbmVkLW1v ZHVsZSBkaXItaGludCBuYW1lIHZlcnNpb24tcmVmIHJvb3RzKQorICAoZGVmaW5lIChzdWJkaXIt cGFpci1sZXNzIHBhaXIxIHBhaXIyKQorICAgIChkZWZpbmUgKG51bWxpc3QtbGVzcyBsc3QxIGxz dDIpCisgICAgICAob3IgKG51bGw/IGxzdDIpIAorCSAgKGFuZCAobm90IChudWxsPyBsc3QxKSkK KwkgICAgICAgKGNvbmQgKCg+IChjYXIgbHN0MSkgKGNhciBsc3QyKSkgI3QpCisJCSAgICAgKCg8 IChjYXIgbHN0MSkgKGNhciBsc3QyKSkgI2YpCisJCSAgICAgKGVsc2UgKG51bWxpc3QtbGVzcyAo Y2RyIGxzdDEpIChjZHIgbHN0MikpKSkpKSkKKyAgICAobnVtbGlzdC1sZXNzIChjYXIgcGFpcjEp IChjYXIgcGFpcjIpKSkKKworICAoZGVmaW5lIChtYXRjaC12ZXJzaW9uLXJlY3Vyc2l2ZSByb290 LXBhaXJzIGxlYWYtcGFpcnMpCisgICAgKGRlZmluZSAoZmlsdGVyLXN1YmRpcnMgcm9vdC1wYWly cyByZXQpCisgICAgICAoZGVmaW5lIChmaWx0ZXItc3ViZGlyIHJvb3QtcGFpciBkc3RybSBzdWJk aXItcGFpcnMpCisJKGxldCAoKGVudHJ5IChyZWFkZGlyIGRzdHJtKSkpCisJICAoaWYgKGVvZi1v YmplY3Q/IGVudHJ5KQorCSAgICAgIHN1YmRpci1wYWlycworCSAgICAgIChsZXQqICgoc3ViZGly IChzdHJpbmctYXBwZW5kIChjZHIgcm9vdC1wYWlyKSAiLyIgZW50cnkpKQorCQkgICAgIChudW0g KHN0cmluZy0+bnVtYmVyIGVudHJ5KSkKKwkJICAgICAobnVtIChhbmQgbnVtIChhcHBlbmQgKGNh ciByb290LXBhaXIpIChsaXN0IG51bSkpKSkpCisJCShpZiAoYW5kIG51bSAoZXE/IChzdGF0OnR5 cGUgKHN0YXQgc3ViZGlyKSkgJ2RpcmVjdG9yeSkpCisJCSAgICAoZmlsdGVyLXN1YmRpciAKKwkJ ICAgICByb290LXBhaXIgZHN0cm0gKGNvbnMgKGNvbnMgbnVtIHN1YmRpcikgc3ViZGlyLXBhaXJz KSkKKwkJICAgIChmaWx0ZXItc3ViZGlyIHJvb3QtcGFpciBkc3RybSBzdWJkaXItcGFpcnMpKSkp KSkKKyAgICAgIAorICAgICAgKG9yIChhbmQgKG51bGw/IHJvb3QtcGFpcnMpIHJldCkKKwkgIChs ZXQqICgocnAgKGNhciByb290LXBhaXJzKSkKKwkJIChkc3RybSAoZmFsc2UtaWYtZXhjZXB0aW9u IChvcGVuZGlyIChjZHIgcnApKSkpKQorCSAgICAoaWYgZHN0cm0KKwkJKGxldCAoKHN1YmRpci1w YWlycyAoZmlsdGVyLXN1YmRpciBycCBkc3RybSAnKCkpKSkKKwkJICAoY2xvc2VkaXIgZHN0cm0p CisJCSAgKGZpbHRlci1zdWJkaXJzIChjZHIgcm9vdC1wYWlycykgCisJCQkJICAob3IgKGFuZCAo bnVsbD8gc3ViZGlyLXBhaXJzKSByZXQpCisJCQkJICAgICAgKGFwcGVuZCByZXQgc3ViZGlyLXBh aXJzKSkpKQorCQkoZmlsdGVyLXN1YmRpcnMgKGNkciByb290LXBhaXJzKSByZXQpKSkpKQorCisg ICAgKGRlZmluZSAobWF0Y2gtdmVyc2lvbi1hbmQtZmlsZSBwYWlyKQorICAgICAgKGFuZCAodmVy c2lvbi1tYXRjaGVzPyB2ZXJzaW9uLXJlZiAoY2FyIHBhaXIpKQorCSAgIChsZXQgKChmaWxlbmFt ZXMgCQkJICAgICAKKwkJICAoZmlsdGVyIGZpbGUtZXhpc3RzPworCQkJICAobWFwIChsYW1iZGEg KGV4dCkKKwkJCQkgKHN0cmluZy1hcHBlbmQgKGNkciBwYWlyKSAiLyIgbmFtZSBleHQpKQorCQkJ ICAgICAgICVsb2FkLWV4dGVuc2lvbnMpKSkpCisJICAgICAoYW5kIChub3QgKG51bGw/IGZpbGVu YW1lcykpCisJCSAgKGNvbnMgKGNhciBwYWlyKSAoY2FyIGZpbGVuYW1lcykpKSkpKQorICAgIAor ICAgIChvciAoYW5kIChudWxsPyByb290LXBhaXJzKSBsZWFmLXBhaXJzKQorCShsZXQgKChtYXRj aGluZy1zdWJkaXItcGFpcnMgKGZpbHRlci1zdWJkaXJzIHJvb3QtcGFpcnMgJygpKSkpCisJICAo bWF0Y2gtdmVyc2lvbi1yZWN1cnNpdmUKKwkgICBtYXRjaGluZy1zdWJkaXItcGFpcnMKKwkgICAo YXBwZW5kIGxlYWYtcGFpcnMgKGZpbHRlciBwYWlyPyAobWFwIG1hdGNoLXZlcnNpb24tYW5kLWZp bGUgCisJCQkJCQkgbWF0Y2hpbmctc3ViZGlyLXBhaXJzKSkpKSkpKQorICAKKyAgKGRlZmluZSAo bWFrZS1yb290LXBhaXIgcm9vdCkgKGNvbnMgJygpIChzdHJpbmctYXBwZW5kIHJvb3QgIi8iIGRp ci1oaW50KSkpCisgIChsZXQgKChtYXRjaGVzIChtYXRjaC12ZXJzaW9uLXJlY3Vyc2l2ZSAobWFw IG1ha2Utcm9vdC1wYWlyIHJvb3RzKSAnKCkpKSkKKyAgICAoYW5kIChudWxsPyBtYXRjaGVzKSAo ZXJyb3IgIk5vIG1hdGNoaW5nIG1vZHVsZXMgZm91bmQuIikpCisgICAgKGNkYXIgKHNvcnQgbWF0 Y2hlcyBzdWJkaXItcGFpci1sZXNzKSkpKQogCiA7OyBOT1RFOiBUaGlzIGJpbmRpbmcgaXMgdXNl ZCBpbiBsaWJndWlsZS9tb2R1bGVzLmMuCiA7OwpAQCAtMjA4MSw3ICsyMTY3LDcgQEAKIDs7IChk ZWZpbmUtc3BlY2lhbC12YWx1ZSAnKCVhcHAgbW9kdWxlcyBuZXctd3MpIChsYW1iZGEgKCkgKG1h a2Utc2NtLW1vZHVsZSkpKQogCiAoZGVmaW5lICh0cnktbG9hZC1tb2R1bGUgbmFtZSB2ZXJzaW9u KQotICAodHJ5LW1vZHVsZS1hdXRvbG9hZCBuYW1lKSkKKyAgKHRyeS1tb2R1bGUtYXV0b2xvYWQg bmFtZSB2ZXJzaW9uKSkKIAogKGRlZmluZSAocHVyaWZ5LW1vZHVsZSEgbW9kdWxlKQogICAiUmVt b3ZlcyBiaW5kaW5ncyBpbiBNT0RVTEUgd2hpY2ggYXJlIGluaGVyaXRlZCBmcm9tIHRoZSAoZ3Vp bGUpIG1vZHVsZS4iCkBAIC0yMzYzLDkgKzI0NDksMTAgQEAgbW9kdWxlICcoaWNlLTkgcSkgJyht YWtlLXEgcS1sZW5ndGgpKX0uIgogOzsgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSAibW9k dWxlcy5jIi4gIElmIHlvdSBjaGFuZ2UgaXQsIGJlCiA7OyBzdXJlIHRvIHVwZGF0ZSAibW9kdWxl cy5jIiBhcyB3ZWxsLgogCi0oZGVmaW5lICh0cnktbW9kdWxlLWF1dG9sb2FkIG1vZHVsZS1uYW1l KQorKGRlZmluZSAodHJ5LW1vZHVsZS1hdXRvbG9hZCBtb2R1bGUtbmFtZSAuIGFyZ3MpCiAgIChs ZXQqICgocmV2ZXJzZS1uYW1lIChyZXZlcnNlIG1vZHVsZS1uYW1lKSkKIAkgKG5hbWUgKHN5bWJv bC0+c3RyaW5nIChjYXIgcmV2ZXJzZS1uYW1lKSkpCisJICh2ZXJzaW9uIChhbmQgKG5vdCAobnVs bD8gYXJncykpIChjYXIgYXJncykpKQogCSAoZGlyLWhpbnQtbW9kdWxlLW5hbWUgKHJldmVyc2Ug KGNkciByZXZlcnNlLW5hbWUpKSkKIAkgKGRpci1oaW50IChhcHBseSBzdHJpbmctYXBwZW5kCiAJ CQkgIChtYXAgKGxhbWJkYSAoZWx0KQpAQCAtMjM4MSw4ICsyNDY4LDExIEBAIG1vZHVsZSAnKGlj ZS05IHEpICcobWFrZS1xIHEtbGVuZ3RoKSl9LiIKICAgICAgICAgICAgICAgICAobGFtYmRhICgp CiAgICAgICAgICAgICAgICAgICAoc2F2ZS1tb2R1bGUtZXhjdXJzaW9uCiAgICAgICAgICAgICAg ICAgICAgKGxhbWJkYSAoKSAKLSAgICAgICAgICAgICAgICAgICAgIChwcmltaXRpdmUtbG9hZC1w YXRoIChpbi12aWNpbml0eSBkaXItaGludCBuYW1lKSAjZikKLSAgICAgICAgICAgICAgICAgICAg IChzZXQhIGRpZGl0ICN0KSkpKSkpCisJCSAgICAgKGlmIHZlcnNpb24KKwkJCSAobG9hZCAoZmlu ZC12ZXJzaW9uZWQtbW9kdWxlCisJCQkJZGlyLWhpbnQgbmFtZSB2ZXJzaW9uICVsb2FkLXBhdGgp KQorCQkJIChwcmltaXRpdmUtbG9hZC1wYXRoIChpbi12aWNpbml0eSBkaXItaGludCBuYW1lKSAj ZikpCisJCSAgICAgKHNldCEgZGlkaXQgI3QpKSkpKSkKIAkgICAgKGxhbWJkYSAoKSAoc2V0LWF1 dG9sb2FkZWQhIGRpci1oaW50IG5hbWUgZGlkaXQpKSkKIAkgICBkaWRpdCkpKSkKIAotLSAKMS42 LjAuNAoK --001636c5ba2f44dc0c0474d82173--