From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brad Knotwell Subject: M4 support take#2 Date: Sat, 7 Apr 2018 03:33:33 +0000 (UTC) Message-ID: <2126634397.65862.1523072013134@mail.yahoo.com> References: <2126634397.65862.1523072013134.ref@mail.yahoo.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_65861_14094255.1523072013134" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:54484) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f4ebm-0002mu-PX for emacs-orgmode@gnu.org; Fri, 06 Apr 2018 23:33:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f4ebh-0005vC-UZ for emacs-orgmode@gnu.org; Fri, 06 Apr 2018 23:33:42 -0400 Received: from sonic310-23.consmr.mail.ne1.yahoo.com ([66.163.186.204]:44993) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f4ebh-0005sG-KX for emacs-orgmode@gnu.org; Fri, 06 Apr 2018 23:33:37 -0400 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: emacs-orgmode@gnu.org ------=_Part_65861_14094255.1523072013134 Content-Type: multipart/alternative; boundary="----=_Part_65860_1047513854.1523072013093" ------=_Part_65860_1047513854.1523072013093 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Given the code review from earlier, I've added a second file with the reque= sted changes.=C2=A0 I also added the ability to transparently run the chang= equote builtin on startup as well as the list delimiters.=C2=A0 I looked at= doing a test-ob-m4.el but the examples didn't make it all clear how to pro= ceed. I've attached the updated file. As an aside, some of the ugliness comes from needing to do default values i= f one of the custom attributes (e.g. :list-start) is unset.=C2=A0 I would'v= e thought something like the following would work: =C2=A0 =C2=A0(defvar org-babel-default-header-args:m4 '((:list-start . "[")= (:list-end . "]"))) but that didn't appear to do anything (the elisp tracing facility didn't sh= ow those at all unless they were passed in explicitly via the #+begin_src s= tatement). Thx. --Brad ------=_Part_65860_1047513854.1523072013093 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit
Given the code review from earlier, I've added a second file with the requested changes.  I also added the ability to transparently run the changequote builtin on startup as well as the list delimiters.  I looked at doing a test-ob-m4.el but the examples didn't make it all clear how to proceed.

I've attached the updated file.

As an aside, some of the ugliness comes from needing to do default values if one of the custom attributes (e.g. :list-start) is unset.  I would've thought something like the following would work:

   (defvar org-babel-default-header-args:m4 '((:list-start . "[") (:list-end . "]")))

but that didn't appear to do anything (the elisp tracing facility didn't show those at all unless they were passed in explicitly via the #+begin_src statement).

Thx.

--Brad
------=_Part_65860_1047513854.1523072013093-- ------=_Part_65861_14094255.1523072013134 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ob-m4.el" Content-ID: <631d6b71-adfd-13b1-65b4-3401b90a3d80@yahoo.com> Ozs7IG9iLW00LmVsIC0tLSBCYWJlbCBGdW5jdGlvbnMgZm9yIG00IHNjcmlwdHMgICAgLSotIGxl eGljYWwtYmluZGluZzogdDsgLSotCgo7OyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KCjs7IEF1dGhvcjogQnJhZCBLbm90d2VsbAo7OyBLZXl3 b3JkczogbGl0ZXJhdGUgcHJvZ3JhbW1pbmcsIHJlcHJvZHVjaWJsZSByZXNlYXJjaAo7OyBWZXJz aW9uOiAwLjEuMAoKOzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEVtYWNzLgoKOzsgR05VIEVt YWNzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKOzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KCjs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAo7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCjs7IEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgo7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7OyBhbG9uZyB3aXRoIEdO VSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCgo7 OzsgQ29tbWVudGFyeToKCjs7IFByb3ZpZGVzIGEgd2F5IHRvIGV2YWx1YXRlIG00IHNjcmlwdHMg aW4gT3JnIG1vZGUuCgo7OzsgVXNhZ2U6Cgo7OyBBZGQgdG8geW91ciBFbWFjcyBjb25maWc6Cgo7 OyAob3JnLWJhYmVsLWRvLWxvYWQtbGFuZ3VhZ2VzCjs7ICAnb3JnLWJhYmVsLWxvYWQtbGFuZ3Vh Z2VzCjs7ICAnKChtNCAuIHQpKSkKCjs7IEluIGFkZGl0aW9uIHRvIHRoZSBub3JtYWwgaGVhZGVy IGFyZ3VtZW50cywgb2ItbTQgYWxzbyBwcm92aWRlcwo7OyBzaXggc3BlY2lmaWMgb3B0aW9uczoK OzsgIDpjbWQtbGluZSAtLSBhbGxvd3MgYSB1c2VyIHRvIGFwcGVuZCBhcmd1bWVudHMgdG8gdGhl IGNhbGwKOzsgIDpwcmVmaXgtYnVpbGRpbnMgLS0gY2FsbHMgd2l0aCB0aGUgLVAgb3B0aW9uIHRv IGF1dG9tYXRpY2FsbHkKOzsgICAgICAgcHJlZml4IGFsbCBidWlsdC1pbiBtYWNyb3Mgd2l0aCAn bTRfJwo7OyAgOnF1b3RlLzp1bnF1b3RlIC0tIHNldCB0aGUgbTQgcXVvdGluZyBjaGFyYWN0ZXJz IHRvIGEgbm9uLWRlZmF1bHQgdmFsdWUKOzsgIDpsaXN0LXN0YXJ0LzpsaXN0LWVuZCAtLSBkZWZh dWx0ICJbIiBhbmQgIl0iIGJ1dCBjYW4gYmUgc2V0IHRvIHNvbWV0aGluZyBlbHNlIChlLmcuICIo IiBhbmQgIikiKQo7OyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHlvdSB3YW50IHRvIHVz ZSAiWyIgYW5kICJdIiBhcyBxdW90ZSBjaGFyYWN0ZXJzCjs7Cjs7Cjs7IE5vdGU6ICBpdCBpcyBh IGJhZCBpZGVhIHRvIGV4cGxpY2l0bHkgcGFzcyB0aGUgIi1QIiBvcHRpb24gaW4gOmNtZC1saW5l IHRvIGVuYWJsZSBwcmVmaXhpbmcKOzsgYXMgYW55IGFyZ3VtZW50cyBzcGVjaWZpZWQgdmlhIHZh ciBOQU1FPXZhbHVlIHdpbGwgYmUgcHJlZml4ZWQgaW5jb3JyZWN0bHkuCjs7Cjs7IEV4cGxhaW5p bmcgdGhpcyB3aXRoIGEgYml0IG1vcmUgZGV0YWlsLCBhbGwgOnZhciBOQU1FPXZhbHVlIGFyZ3Vt ZW50cyBhcmUKOzsgcHJlcGVuZGVkIHRvIHRoZSBib2R5IGFzIGRlZmluaXRpb25zOgo7OyAgICAg ZGVmaW5lKE5BTUUsdmFsdWUpCjs7ICAgICAgICAgICAgb3IKOzsgICAgIG00X2RlZmluZShOQU1F LHZhbHVlKSBpZmYgOnByZWZpeC1idWlsdGlucyBpcyBzZXQKOzsKOzsgTm90ZTogIHRoZSA6cHJl Zml4LWJ1aWx0aW4gb3B0aW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIFBvc2l4IGNvbXBsaWFudCBt NCBpbXBsZW1lbnRhdGlvbnMuCjs7ICAgICAgICBUaGlzIGlzIGZpbmUgZm9yIHR3byByZWFzb25z Ogo7OyAgICAgICAgICAgKiBhIFBvc2l4IGNvbXBsaWFudCB1dGlsaXR5IGlzIGNvcnJlY3QgYnkg ZGVmYXVsdCBhcyB0aGUgLVAgb3B0aW9uIGlzIG9taXR0ZWQKOzsgICAgICAgICAgICogR05VJ3Mg bTQgaW1wbGVtZW50YXRpb24gaXMgKGVzc2VudGlhbGx5KSBzdGFuZGFyZCBhdCB0aGlzIHBvaW50 CihyZXF1aXJlICdvYikKCihkZWZ2YXIgb3JnLWJhYmVsLW00LWNvbW1hbmQgIm00IgogICJOYW1l IG9mIHRoZSBtNCBleGVjdXRhYmxlIGNvbW1hbmQuIikKCihkZWZ2YXIgb3JnLWJhYmVsLXRhbmds ZS1sYW5nLWV4dHMpCihhZGQtdG8tbGlzdCAnb3JnLWJhYmVsLXRhbmdsZS1sYW5nLWV4dHMgJygi bTQiIC4gIm00IikpCgooZGVmY29uc3Qgb3JnLWJhYmVsLWhlYWRlci1hcmdzOm00CiAgJygoOmNt ZC1saW5lIC4gOmFueSkKICAgICg6cXVvdGUgLiA6YW55KQogICAgKDp1bnF1b3RlIC4gOmFueSkK ICAgICg6bGlzdC1zdGFydCAuIDphbnkpCiAgICAoOmxpc3QtZW5kIC4gOmFueSkKICAgICg6cHJl Zml4LWJ1aWx0aW5zKSkKICAiTTQgc3BlY2lmaWMgaGVhZGVyIGFyZ3VtZW50cy4iKQoKKGRlZnZh ciBvcmctYmFiZWwtZGVmYXVsdC1oZWFkZXItYXJnczptNCAnKCkKICAiRGVmYXVsdCBhcmd1bWVu dHMgZm9yIGV2YWx1YXRpbmcgYSBtNCBzb3VyY2UgYmxvY2suIikKCjs7IHBhc3NlZC1pbiBtYWNy byBkZWZpbml0aW9ucyBhcmUgY29uc3RydWN0ZWQgYXMgYSBzaW5nbGUgc3RyaW5nIHRoYXQgaXMK OzsgcHJlcGVuZGVkIHRvIHRoZSBzY3JpcHQgYm9keS4KOzsKOzsgOnByZWZpeC1idWlsdGlucyBp cyBuZWNlc3NhcnkgZm9yIHRoZSAtUCBvcHRpb24gdG8gd29yawoKKGRlZnVuIG9yZy1iYWJlbC0t bTQtcHJlZml4IChwYXJhbXMpCiAgIlByZWZpeCBtNF8gaWYgOnByZWZpeC1idWlsdGlucyBpcyBz ZXQiCiAgKGlmIChhc3NxIDpwcmVmaXgtYnVpbHRpbnMgcGFyYW1zKSAibTRfIiAiIikpCgooZGVm dW4gb3JnLWJhYmVsLS1tNC1jaGFuZ2VxdW90ZSAocGFyYW1zKQogICJEZWNsYXJlIHF1b3Rpbmcg YmVoYXZpb3IgaWYgc3RhcnQtcXVvdGUgYW5kIGVuZC1xdW90ZSBhcmUgc2V0LiAgT3RoZXJ3aXNl LCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLiIKICAobGV0ICgocHJlZml4IChvcmctYmFiZWwtLW00 LXByZWZpeCBwYXJhbXMpKQoJKHN0YXJ0LXF1b3RlIChjZHIgKGFzc3EgOnF1b3RlIHBhcmFtcykp KQoJKGVuZC1xdW90ZSAoY2RyIChhc3NxIDp1bnF1b3RlIHBhcmFtcykpKSkKICAgIChpZiAoYW5k IHN0YXJ0LXF1b3RlIGVuZC1xdW90ZSkgKGZvcm1hdCAiJXNjaGFuZ2VxdW90ZSglcywlcyklc2Ru bFxuIiBwcmVmaXggc3RhcnQtcXVvdGUgZW5kLXF1b3RlIHByZWZpeCkgIiIpKSkKCihkZWZ1biBv cmctYmFiZWwtLXZhcmlhYmxlLWFzc2lnbm1lbnQ6bTRfZ2VuZXJpYyAocGFyYW1zIHZhcm5hbWUg dmFsdWVzKQogICJCdWlsZCB0aGUgc2ltcGxlIG1hY3JvIGRlZmluaXRpb25zIHByZXBlbmRlZCB0 byB0aGUgc2NyaXB0IGJvZHkuIgogIChsZXQgKChwcmVmaXggKG9yZy1iYWJlbC0tbTQtcHJlZml4 IHBhcmFtcykpKQoJKGZvcm1hdCAiJXNkZWZpbmUoJXMsJXMpJXNkbmxcbiIgcHJlZml4IHZhcm5h bWUgdmFsdWVzIHByZWZpeCkpKQoKKGRlZnVuIG9yZy1iYWJlbC0tdmFyaWFibGUtYXNzaWdubWVu dDptNF9saXN0IChwYXJhbXMgdmFybmFtZSB2YWx1ZXMpCiAgIkJ1aWxkIHRoZSBjb21wbGV4IG1h Y3JvIGRlZmluaXRpb25zIHByZXBlbmRlZCB0byB0aGUgc2NyaXB0IGJvZHkuIgogIChsZXQgKChw cmVmaXggKG9yZy1iYWJlbC0tbTQtcHJlZml4IHBhcmFtcykpCgkobGlzdC1zdGFydCAob3IgKGNk ciAoYXNzcSA6bGlzdC1zdGFydCBwYXJhbXMpKSAiWyIpKQoJKGxpc3QtZW5kIChvciAoY2RyIChh c3NxIDpsaXN0LWVuZCBwYXJhbXMpKSAiXSIpKSkKICAgIChmb3JtYXQgIiVzZGVmaW5lKCVzLCVz JXMlcyklc2RubFxuIiBwcmVmaXggdmFybmFtZSBsaXN0LXN0YXJ0CgkgICAgKG1hcGNvbmNhdAoJ ICAgICAobGFtYmRhICh2YWx1ZSkKCSAgICAgICA7OyB2YWx1ZSBjb3VsZCBiZSBhIG51bWVyaWMg dGFibGUgZW50cnkgYXMgd2VsbCBhcyBhIHN0cmluZwoJICAgICAgIChpZiAoPSAobGVuZ3RoIHZh bHVlKSAxKSAoZm9ybWF0ICIlcyIgKGNhciB2YWx1ZSkpCgkJIChjb25jYXQgbGlzdC1zdGFydCAo bWFwY29uY2F0IChsYW1iZGEgKHgpIChmb3JtYXQgIiVzIiB4KSkgdmFsdWUgIiwiKQoJCQkgbGlz dC1lbmQpKSkgdmFsdWVzICIsIikgbGlzdC1lbmQgcHJlZml4KSkpCgooZGVmdW4gb3JnLWJhYmVs LS12YXJpYWJsZS1hc3NpZ25tZW50czptNCAocGFyYW1zIHZhcm5hbWVzIHZhbHVlcykKICAiSW50 ZXJuYWwgaGVscGVyIHRoYXQgY29udmVydHMgcGFyYW1ldGVycyB0byBtNCBkZWZpbml0aW9ucy4i CiAgKHBjYXNlIHZhbHVlcwogICAgKGAoLF8gLiAsXykgKG9yZy1iYWJlbC0tdmFyaWFibGUtYXNz aWdubWVudDptNF9saXN0IHBhcmFtcyB2YXJuYW1lcyB2YWx1ZXMpKQogICAgKF8gKG9yZy1iYWJl bC0tdmFyaWFibGUtYXNzaWdubWVudDptNF9nZW5lcmljIHBhcmFtcyB2YXJuYW1lcyB2YWx1ZXMp KSkpCgooZGVmdW4gb3JnLWJhYmVsLXZhcmlhYmxlLWFzc2lnbm1lbnRzOm00IChwYXJhbXMpCiAg IkludGVyZmFjZSBmdW5jdGlvbiB0aGF0IGNvbnZlcnRzIHBhcmFtZXRlcnMgdG8gbTQgZGVmaW5p dGlvbnMuIgogIChjb25jYXQgKG9yZy1iYWJlbC0tbTQtY2hhbmdlcXVvdGUgcGFyYW1zKQoJICAo YXBwbHkgIydjb25jYXQgKG1hcGNhciAobGFtYmRhIChwYWlyKSAob3JnLWJhYmVsLS12YXJpYWJs ZS1hc3NpZ25tZW50czptNAoJCQkJCQkgIHBhcmFtcyAoY2FyIHBhaXIpIChjZHIgcGFpcikpKQoJ CQkJICAob3JnLWJhYmVsLS1nZXQtdmFycyBwYXJhbXMpKSkpKQoKOzsgUmVxdWlyZWQgdG8gbWFr ZSB0YW5nbGluZyB3b3JrCjs7IFRoZSBmaW5hbCAiXG4iIGlzIG5lZWRlZCBhcyBHTlUgbTQgZXJy b3JzIG91dCBpZiBhIGZpbGUgZG9lc24ndCBlbmQgaW4gYSBuZXdsaW5lLgooZGVmdW4gb3JnLWJh YmVsLWV4cGFuZC1ib2R5Om00IChib2R5IHBhcmFtcykKICAiRXhwYW5kIEJPRFkgYWNjb3JkaW5n IHRvIFBBUkFNUywgcmV0dXJuIHRoZSBleHBhbmRlZCBib2R5LiIKICAoY29uY2F0IChvcmctYmFi ZWwtdmFyaWFibGUtYXNzaWdubWVudHM6bTQgcGFyYW1zKSBib2R5ICJcbiIpKQoKKGRlZnVuIG9y Zy1iYWJlbC1leGVjdXRlOm00IChib2R5IHBhcmFtcykKICAiRXhlY3V0ZSBhIGJsb2NrIG9mIG00 IGNvZGUgd2l0aCBPcmcgQmFiZWwuCkJPRFkgaXMgdGhlIHNvdXJjZSBpbnNpZGUgYSBtNCBzb3Vy Y2UgYmxvY2sgYW5kIFBBUkFNUyBpcyBhbgphc3NvY2lhdGlvbiBsaXN0IG92ZXIgdGhlIHNvdXJj ZSBibG9jayBjb25maWd1cmF0aW9ucy4gIFRoaXMKZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGBvcmct YmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2snLiIKICAobWVzc2FnZSAiZXhlY3V0aW5nIG00IHNvdXJj ZSBjb2RlIGJsb2NrIikKICAobGV0KiAoKHJlc3VsdC1wYXJhbXMgKGNkciAoYXNzcSA6cmVzdWx0 LXBhcmFtcyBwYXJhbXMpKSkKICAgICAgICAgKGNtZC1saW5lIChjZHIgKGFzc3EgOmNtZC1saW5l IHBhcmFtcykpKQoJIChwcmVmaXgtYnVpbHRpbnMgKGFzc3EgOnByZWZpeC1idWlsdGlucyBwYXJh bXMpKQoJIChjb2RlLWZpbGUgKGxldCAoKGZpbGUgKG9yZy1iYWJlbC10ZW1wLWZpbGUgIm00LSIp KSkKICAgICAgICAgICAgICAgICAgICAgICh3aXRoLXRlbXAtZmlsZSBmaWxlCgkJCShpbnNlcnQg KG9yZy1iYWJlbC1leHBhbmQtYm9keTptNCBib2R5IHBhcmFtcykgZmlsZSkpIGZpbGUpKQoJIChz dGRpbiAobGV0ICgoc3RkaW4gKGNkciAoYXNzcSA6c3RkaW4gcGFyYW1zKSkpKQoJCSAgICh3aGVu IHN0ZGluCgkJICAgICAobGV0ICgodG1wIChvcmctYmFiZWwtdGVtcC1maWxlICJtNC1zdGRpbi0i KSkKCQkJICAgKHJlcyAob3JnLWJhYmVsLXJlZi1yZXNvbHZlIHN0ZGluKSkpCgkJICAgICAgICh3 aXRoLXRlbXAtZmlsZSB0bXAKCQkJIChpbnNlcnQgcmVzKSkKCQkgICAgICAgdG1wKSkpKQogICAg ICAgICAoY21kIChtYXBjb25jYXQgIydpZGVudGl0eQoJCQkgKHJlbXEgbmlsCgkJCSAgICAgICAo bGlzdCBvcmctYmFiZWwtbTQtY29tbWFuZAoJCQkJICAgICBjbWQtbGluZSAoaWYgcHJlZml4LWJ1 aWx0aW5zICItUCIpICI8IiBjb2RlLWZpbGUpKQoJCQkgIiAiKSkpCiAgICAob3JnLWJhYmVsLXJl YXNzZW1ibGUtdGFibGUKICAgICAobGV0ICgocmVzdWx0cwogICAgICAgICAgICAoY29uZAogICAg ICAgICAgICAgKHN0ZGluICh3aXRoLXRlbXAtYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAo Y2FsbC1wcm9jZXNzLXNoZWxsLWNvbW1hbmQgY21kIHN0ZGluIChjdXJyZW50LWJ1ZmZlcikpCiAg ICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN0cmluZykpKQogICAgICAgICAgICAgKHQgKG9y Zy1iYWJlbC1ldmFsIGNtZCAiIikpKSkpCiAgICAgICAod2hlbiByZXN1bHRzCiAgICAgICAgIChv cmctYmFiZWwtcmVzdWx0LWNvbmQgcmVzdWx0LXBhcmFtcwoJICAgcmVzdWx0cwoJICAgKGxldCAo KHRtcCAob3JnLWJhYmVsLXRlbXAtZmlsZSAibTQtcmVzdWx0cy0iKSkpCgkgICAgICh3aXRoLXRl bXAtZmlsZSB0bXAgKGluc2VydCByZXN1bHRzKSkKCSAgICAgKG9yZy1iYWJlbC1pbXBvcnQtZWxp c3AtZnJvbS1maWxlIHRtcCkpKSkpCiAgICAgKG9yZy1iYWJlbC1waWNrLW5hbWUKICAgICAgKGNk ciAoYXNzcSA6Y29sbmFtZS1uYW1lcyBwYXJhbXMpKSAoY2RyIChhc3NxIDpjb2xuYW1lcyBwYXJh bXMpKSkKICAgICAob3JnLWJhYmVsLXBpY2stbmFtZQogICAgICAoY2RyIChhc3NxIDpyb3duYW1l LW5hbWVzIHBhcmFtcykpIChjZHIgKGFzc3EgOnJvd25hbWVzIHBhcmFtcykpKSkpKQoKKHByb3Zp ZGUgJ29iLW00KQo7Ozsgb2ItbTQuZWwgZW5kcyBoZXJlCg== ------=_Part_65861_14094255.1523072013134--