From mboxrd@z Thu Jan 1 00:00:00 1970 From: "numbchild@gmail.com" Subject: Re: Add ob-sclang.el for sclang Org-mode babel support in contrib/ Date: Sat, 17 Jun 2017 07:25:39 +0800 Message-ID: References: <87ink4z27l.fsf@nicolasgoaziou.fr> <87y3suis4y.fsf@nicolasgoaziou.fr> <87wp8dpgsf.fsf@bzg.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a11444ab0449ea105521c1cda" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:54427) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dM0d7-0003mf-8e for emacs-orgmode@gnu.org; Fri, 16 Jun 2017 19:26:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dM0d5-0005Wb-5L for emacs-orgmode@gnu.org; Fri, 16 Jun 2017 19:26:17 -0400 In-Reply-To: <87wp8dpgsf.fsf@bzg.fr> 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: Bastien Guerry Cc: Org-mode , Nicolas Goaziou --001a11444ab0449ea105521c1cda Content-Type: multipart/alternative; boundary="001a11444ab0449e9c05521c1cd8" --001a11444ab0449e9c05521c1cd8 Content-Type: text/plain; charset="UTF-8" I regenerated commit and patch by following changelog formats. ``` >From 9f0b5051bda5ae458242e37923ad18e3189663d9 Mon Sep 17 00:00:00 2001 From: stardiviner Date: Thu, 8 Jun 2017 18:24:53 +0800 Subject: [PATCH] ob-sclang.el: add ob-sclang for sclang Org-mode babel support * ob-sclang.el (org-babel-execute:sclang): support evaluating sclang code in Org-mode Babel. Support sclang evaluation in Org-mode Babel. TINYCHANGE --- contrib/lisp/ob-sclang.el | 102 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 contrib/lisp/ob-sclang.el diff --git a/contrib/lisp/ob-sclang.el b/contrib/lisp/ob-sclang.el new file mode 100644 index 000000000..763799533 --- /dev/null +++ b/contrib/lisp/ob-sclang.el @@ -0,0 +1,102 @@ +;;; ob-sclang.el --- SCLang support for Org-mode Babel -*- lexical-binding: t; -*- +;;; -*- coding: utf-8 -*- + +;; Copyright (C) 2011-2017 Free Software Foundation, Inc. + +;; Authors: stardiviner +;; Package-Version: 0.1 +;; Keywords: babel sclang + +;; This file is not part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Commentary: + +;; `ob-sclang' requires `sclang-interp' from SuperCollider. +;; Usually SuperCollider dependencies for Emacs are at /usr/share/emacs/site-lisp/SuperCollider/ +;; You can install SuperCollider following this article: +;; https://github.com/supercollider/supercollider#building-the-source-code + +;; Usage: + +;; Support to evaluate sclang Org-mode src block with function `sclang-eval-string'. + +;; For example: + +;; #+BEGIN_SRC sclang :results none +;; "Hello World".postln; +;; #+END_SRC +;; +;; *NOTE* Temporary output to org-babel result output is not supported. +;; Because `sclang-eval-string' will send output to Sclang Post Buffer. +;; And command line `sclang' execute will not automatically stop after finished execution. +;; +;; #+BEGIN_SRC sclang :results none +;; // modulate a sine frequency and a noise amplitude with another sine +;; // whose frequency depends on the horizontal mouse pointer position +;; { +;; var x = SinOsc.ar(MouseX.kr(1, 100)); +;; SinOsc.ar(300 * x + 800, 0, 0.1) +;; + +;; PinkNoise.ar(0.1 * x + 0.1) +;; }.play; +;; #+END_SRC + + +;;; Code: +;;; ---------------------------------------------------------------------------- +(require 'org) +(require 'ob) + +(require 'sclang-interp) + +(defgroup ob-sclang nil + "org-mode blocks for SuperCollider SCLang." + :group 'org) + +;;;###autoload +(defun org-babel-execute:sclang (body params) + "Org-mode Babel sclang hook for evaluate `BODY' with `PARAMS'." + (unless (or (equal (buffer-name) sclang-post-buffer) + (sclang-get-process)) + (sclang-start)) + + ;; (let* ((db (or (cdr (assoc :db params)) + ;; ob-mongo:default-db)) + ;; (cmd (mapconcat 'identity (list "mongo" "--quiet" db) " "))) + ;; (org-babel-eval cmd body)) + + (sclang-eval-string body t) + + ;; (let ((cmd "sclang -r -s -D")) + ;; (org-babel-eval cmd body)) + ) + +(defvar org-babel-default-header-args:sclang nil) + +(setq org-babel-default-header-args:sclang + '((:session . "*SCLang:Workspace*") + (:output . "none")) ; TODO: temporary can't find way to let sclang output to stdout for org-babel. + ) + +;;;###autoload +(with-eval-after-load "org" + (add-to-list 'org-src-lang-modes '("sclang" . sclang))) + +;;; ---------------------------------------------------------------------------- + +(provide 'ob-sclang) + +;;; ob-sclang.el ends here -- 2.13.1 ``` [stardiviner] GPG key ID: 47C32433 IRC(freeenode): stardiviner Twitter: @numbchild Key fingerprint = 9BAA 92BC CDDD B9EF 3B36 CB99 B8C4 B8E5 47C3 2433 Blog: http://stardiviner.github.io/ On Thu, Jun 15, 2017 at 8:38 PM, Bastien Guerry wrote: > "numbchild@gmail.com" writes: > > > Here is the patch > > The patch needs to have a proper changelog. You can read > http://orgmode.org/worg/org-contribute.html#patches carefully > for details. > > Thanks! > > -- > Bastien > --001a11444ab0449e9c05521c1cd8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I regenerated commit and patch by following ch= angelog formats.

```
From 9f0b5051bda5ae458242e37923ad18e3189663d9 Mon Sep 17 00:00= :00 2001
From: stardiviner <numbchild@gmail.com>
Date: Thu, 8 Jun 2017 18:24:53 +0800
Subject: [PATCH] ob-sclang.el: add ob-sclang for sclang Org-mode babel s= upport

* ob-sclang.el (org-babel-execute:sclang): support = evaluating sclang
=C2=A0 code in Org-mode Babel.

Sup= port sclang evaluation in Org-mode Babel.

TINYCHANGE
---
=C2=A0contrib/lisp/ob-sclang.el | 102 ++++++++++++++++++++++++++= ++++++++++++++++++++
=C2=A01 file changed, 102 insertions(+)
= =C2=A0create mode 100644 contrib/lisp/ob-sclang.el

diff = --git a/contrib/lisp/ob-sclang.el b/contrib/lisp/ob-sclang.el
<= div class=3D"gmail_default">new fil= e mode 100644
index 000000000..763799533
--- /dev/null
++= + b/contrib/lisp/ob-sclang.el
@@ -0,0 +1,102 @@
+;;; ob-sclang.= el --- SCLang support for Org-mode Babel -*- lexical-binding: t; -*-=
= +;;; -*- coding: utf-8 -*-
+
+;; Copyright (C) 2011-2017 Free S= oftware Foundation, Inc.
+
<= font face=3D"trebuchet ms, sans-serif">+;; Authors: stardiviner <numbchild@gmail.com>
+;; Packa= ge-Version: 0.1
+;; Keywords: babel sclang
+
+;; This fil= e is not part of GNU Emacs.
+
+;; GNU Emacs is free software: y= ou can redistribute it and/or modify
+;; it under the terms of the GN= U General Public License as published by
+;; the Free Software Founda= tion, either version 3 of the License, or
+;; (at your option) any la= ter version.
+
+;; GNU Emacs is distributed in the hope that it= will be useful,
+;; but WITHOUT ANY WARRANTY; without even the impli= ed warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOS= E.=C2=A0 See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public Li= cense
+;; along with GNU Emacs.=C2=A0 If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; `ob-sclang' requires `sclang-inte= rp' from SuperCollider.
+;; Usually SuperCollider dependencies fo= r Emacs are at /usr/share/emacs/site-lisp/SuperCollider/
+;; You can = install SuperCollider following this article:
+;; https://gi= thub.com/supercollider/supercollider#building-the-source-code
+
+;; Usage:
+
+;; Support to evaluate sclang Org-mode src b= lock with function `sclang-eval-string'.
+
+;; For example:=
+
+;; #+BEGIN_SRC sclang :results none
+;; "Hello = World".postln;
+;; #+END_SRC
+;;
+;; *NOTE* Temporar= y output to org-babel result output is not supported.
+;; Because `sc= lang-eval-string' will send output to Sclang Post Buffer.
<= div class=3D"gmail_default">+;; And= command line `sclang' execute will not automatically stop after finish= ed execution.
+;;
+;; #+BEGIN_SRC sclang :results none
+;= ; // modulate a sine frequency and a noise amplitude with another sine
+;; {
+;; var x =3D SinOsc.ar(MouseX.kr(1, 100));
+;; SinO= sc.ar(300 * x + 800, 0, 0.1)
+;; +
+;; PinkNoise.ar(0.1 * x + 0= .1)
+;; }.play;
+;; #+END_SRC
+
+
+;;; Cod= e:
+;;; -------------------------------------------------------------= ---------------
+(require 'org)
+(require 'ob)
+<= /font>
+(require 'sclang-interp)
+
+(defgroup ob-sclang nil<= /font>
+ =C2=A0"org-mode blocks for SuperCollider SCLang."<= /div>
+= =C2=A0:group 'org)
+
+;;;###autoload
+(defun org-bab= el-execute:sclang (body params)
+ =C2=A0"Org-mode Babel sclang h= ook for evaluate `BODY' with `PARAMS'."
+ =C2=A0(unless = (or (equal (buffer-name) sclang-post-buffer)
+ =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0(sclang-get-process))
+ =C2=A0 =C2=A0(scla= ng-start))
+ =C2=A0
+ =C2=A0;; (let* ((db (or (cdr (assoc :db p= arams))
+ =C2=A0;; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0ob-mongo:default-db))
+ =C2=A0;; =C2=A0 =C2=A0 =C2=A0 =C2=A0(cm= d (mapconcat 'identity (list "mongo" "--quiet" db) = " ")))
+ =C2=A0;; =C2=A0 (org-babel-eval cmd body))<= /div>
+= =C2=A0
+ =C2=A0(sclang-eval-string body t)
+
+ =C2=A0;; = (let ((cmd "sclang -r -s -D"))
+ =C2=A0;; =C2=A0 (org-babel= -eval cmd body))
+ =C2=A0)
<= font face=3D"trebuchet ms, sans-serif">+
+(defvar org-babel-default-h= eader-args:sclang nil)
+
+(setq org-babel-default-header-args:= sclang
+ =C2=A0 =C2=A0 =C2=A0'((:session . "*SCLang:Workspac= e*")
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0(:output . "none")) = ; TODO: temporary can't find way to let sclang output to stdout for org= -babel.
+ =C2=A0 =C2=A0 =C2=A0)
+
+;;;###autoload<= /div>
+= (with-eval-after-load "org"
+ =C2=A0(add-to-list 'org-s= rc-lang-modes '("sclang" . sclang)))
+
+;;; ---= -------------------------------------------------------------------------
+
+(provide 'ob-sclang)
+
+;;; ob-sclang.el ends= here
--=C2=A0
2.13.1
```

[stardiviner]=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 <Hack this world!>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 GPG key ID= : 47C32433
IRC(freeenode): stardiviner =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 Twitter:=C2=A0 @numbchild
Key fingerprint =3D 9BAA 92BC CDDD B9EF= 3B36=C2=A0 CB99 B8C4 B8E5 47C3 2433
Blog: http://stardiviner.github.io/
<= /div>

On Thu, Jun 15, 2017 at 8:38 PM, Bastien Gue= rry <= bzg@gnu.org> wrote:
"<= a href=3D"mailto:numbchild@gmail.com">numbchild@gmail.com" <numbchild@gmail.com> writes:

> Here is the patch

The patch needs to have a proper changelog.=C2=A0 You can read
http://orgmode.org/worg/org-contribute.html#= patches carefully
for details.

Thanks!

--
=C2=A0Bastien

--001a11444ab0449e9c05521c1cd8-- --001a11444ab0449ea105521c1cda Content-Type: text/x-patch; charset="US-ASCII"; name="0001-ob-sclang.el-add-ob-sclang-for-sclang-Org-mode-babel.patch" Content-Disposition: attachment; filename="0001-ob-sclang.el-add-ob-sclang-for-sclang-Org-mode-babel.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j40heqdr0 RnJvbSA5ZjBiNTA1MWJkYTVhZTQ1ODI0MmUzNzkyM2FkMThlMzE4OTY2M2Q5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzdGFyZGl2aW5lciA8bnVtYmNoaWxkQGdtYWlsLmNvbT4KRGF0 ZTogVGh1LCA4IEp1biAyMDE3IDE4OjI0OjUzICswODAwClN1YmplY3Q6IFtQQVRDSF0gb2Itc2Ns YW5nLmVsOiBhZGQgb2Itc2NsYW5nIGZvciBzY2xhbmcgT3JnLW1vZGUgYmFiZWwgc3VwcG9ydAoK KiBvYi1zY2xhbmcuZWwgKG9yZy1iYWJlbC1leGVjdXRlOnNjbGFuZyk6IHN1cHBvcnQgZXZhbHVh dGluZyBzY2xhbmcKICBjb2RlIGluIE9yZy1tb2RlIEJhYmVsLgoKU3VwcG9ydCBzY2xhbmcgZXZh bHVhdGlvbiBpbiBPcmctbW9kZSBCYWJlbC4KClRJTllDSEFOR0UKLS0tCiBjb250cmliL2xpc3Av b2Itc2NsYW5nLmVsIHwgMTAyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxMDIgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGNvbnRyaWIvbGlzcC9vYi1zY2xhbmcuZWwKCmRpZmYgLS1naXQgYS9jb250cmliL2xp c3Avb2Itc2NsYW5nLmVsIGIvY29udHJpYi9saXNwL29iLXNjbGFuZy5lbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjc2Mzc5OTUzMwotLS0gL2Rldi9udWxsCisrKyBiL2Nv bnRyaWIvbGlzcC9vYi1zY2xhbmcuZWwKQEAgLTAsMCArMSwxMDIgQEAKKzs7OyBvYi1zY2xhbmcu ZWwgLS0tIFNDTGFuZyBzdXBwb3J0IGZvciBPcmctbW9kZSBCYWJlbCAtKi0gbGV4aWNhbC1iaW5k aW5nOiB0OyAtKi0KKzs7OyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKworOzsgQ29weXJpZ2h0IChD KSAyMDExLTIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKzs7IEF1dGhvcnM6 IHN0YXJkaXZpbmVyIDxudW1iY2hpbGRAZ21haWwuY29tPgorOzsgUGFja2FnZS1WZXJzaW9uOiAw LjEKKzs7IEtleXdvcmRzOiBiYWJlbCBzY2xhbmcKKworOzsgVGhpcyBmaWxlIGlzIG5vdCBwYXJ0 IG9mIEdOVSBFbWFjcy4KKworOzsgR05VIEVtYWNzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorOzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworOzsgR05VIEVtYWNz IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCis7OzsgQ29tbWVudGFyeToKKwor OzsgYG9iLXNjbGFuZycgcmVxdWlyZXMgYHNjbGFuZy1pbnRlcnAnIGZyb20gU3VwZXJDb2xsaWRl ci4KKzs7IFVzdWFsbHkgU3VwZXJDb2xsaWRlciBkZXBlbmRlbmNpZXMgZm9yIEVtYWNzIGFyZSBh dCAvdXNyL3NoYXJlL2VtYWNzL3NpdGUtbGlzcC9TdXBlckNvbGxpZGVyLworOzsgWW91IGNhbiBp bnN0YWxsIFN1cGVyQ29sbGlkZXIgZm9sbG93aW5nIHRoaXMgYXJ0aWNsZToKKzs7IGh0dHBzOi8v Z2l0aHViLmNvbS9zdXBlcmNvbGxpZGVyL3N1cGVyY29sbGlkZXIjYnVpbGRpbmctdGhlLXNvdXJj ZS1jb2RlCisKKzs7IFVzYWdlOgorCis7OyBTdXBwb3J0IHRvIGV2YWx1YXRlIHNjbGFuZyBPcmct bW9kZSBzcmMgYmxvY2sgd2l0aCBmdW5jdGlvbiBgc2NsYW5nLWV2YWwtc3RyaW5nJy4KKworOzsg Rm9yIGV4YW1wbGU6CisKKzs7ICMrQkVHSU5fU1JDIHNjbGFuZyA6cmVzdWx0cyBub25lCis7OyAi SGVsbG8gV29ybGQiLnBvc3RsbjsKKzs7ICMrRU5EX1NSQworOzsKKzs7ICpOT1RFKiBUZW1wb3Jh cnkgb3V0cHV0IHRvIG9yZy1iYWJlbCByZXN1bHQgb3V0cHV0IGlzIG5vdCBzdXBwb3J0ZWQuCis7 OyBCZWNhdXNlIGBzY2xhbmctZXZhbC1zdHJpbmcnIHdpbGwgc2VuZCBvdXRwdXQgdG8gU2NsYW5n IFBvc3QgQnVmZmVyLgorOzsgQW5kIGNvbW1hbmQgbGluZSBgc2NsYW5nJyBleGVjdXRlIHdpbGwg bm90IGF1dG9tYXRpY2FsbHkgc3RvcCBhZnRlciBmaW5pc2hlZCBleGVjdXRpb24uCis7OworOzsg IytCRUdJTl9TUkMgc2NsYW5nIDpyZXN1bHRzIG5vbmUKKzs7IC8vIG1vZHVsYXRlIGEgc2luZSBm cmVxdWVuY3kgYW5kIGEgbm9pc2UgYW1wbGl0dWRlIHdpdGggYW5vdGhlciBzaW5lCis7OyAvLyB3 aG9zZSBmcmVxdWVuY3kgZGVwZW5kcyBvbiB0aGUgaG9yaXpvbnRhbCBtb3VzZSBwb2ludGVyIHBv c2l0aW9uCis7OyB7Cis7OyB2YXIgeCA9IFNpbk9zYy5hcihNb3VzZVgua3IoMSwgMTAwKSk7Cis7 OyBTaW5Pc2MuYXIoMzAwICogeCArIDgwMCwgMCwgMC4xKQorOzsgKworOzsgUGlua05vaXNlLmFy KDAuMSAqIHggKyAwLjEpCis7OyB9LnBsYXk7Cis7OyAjK0VORF9TUkMKKworCis7OzsgQ29kZToK Kzs7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisocmVxdWlyZSAnb3JnKQorKHJlcXVpcmUgJ29iKQor CisocmVxdWlyZSAnc2NsYW5nLWludGVycCkKKworKGRlZmdyb3VwIG9iLXNjbGFuZyBuaWwKKyAg Im9yZy1tb2RlIGJsb2NrcyBmb3IgU3VwZXJDb2xsaWRlciBTQ0xhbmcuIgorICA6Z3JvdXAgJ29y ZykKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBvcmctYmFiZWwtZXhlY3V0ZTpzY2xhbmcgKGJv ZHkgcGFyYW1zKQorICAiT3JnLW1vZGUgQmFiZWwgc2NsYW5nIGhvb2sgZm9yIGV2YWx1YXRlIGBC T0RZJyB3aXRoIGBQQVJBTVMnLiIKKyAgKHVubGVzcyAob3IgKGVxdWFsIChidWZmZXItbmFtZSkg c2NsYW5nLXBvc3QtYnVmZmVyKQorICAgICAgICAgICAgICAoc2NsYW5nLWdldC1wcm9jZXNzKSkK KyAgICAoc2NsYW5nLXN0YXJ0KSkKKyAgCisgIDs7IChsZXQqICgoZGIgKG9yIChjZHIgKGFzc29j IDpkYiBwYXJhbXMpKQorICA7OyAgICAgICAgICAgICAgICBvYi1tb25nbzpkZWZhdWx0LWRiKSkK KyAgOzsgICAgICAgIChjbWQgKG1hcGNvbmNhdCAnaWRlbnRpdHkgKGxpc3QgIm1vbmdvIiAiLS1x dWlldCIgZGIpICIgIikpKQorICA7OyAgIChvcmctYmFiZWwtZXZhbCBjbWQgYm9keSkpCisgIAor ICAoc2NsYW5nLWV2YWwtc3RyaW5nIGJvZHkgdCkKKworICA7OyAobGV0ICgoY21kICJzY2xhbmcg LXIgLXMgLUQiKSkKKyAgOzsgICAob3JnLWJhYmVsLWV2YWwgY21kIGJvZHkpKQorICApCisKKyhk ZWZ2YXIgb3JnLWJhYmVsLWRlZmF1bHQtaGVhZGVyLWFyZ3M6c2NsYW5nIG5pbCkKKworKHNldHEg b3JnLWJhYmVsLWRlZmF1bHQtaGVhZGVyLWFyZ3M6c2NsYW5nCisgICAgICAnKCg6c2Vzc2lvbiAu ICIqU0NMYW5nOldvcmtzcGFjZSoiKQorICAgICAgICAoOm91dHB1dCAuICJub25lIikpIDsgVE9E TzogdGVtcG9yYXJ5IGNhbid0IGZpbmQgd2F5IHRvIGxldCBzY2xhbmcgb3V0cHV0IHRvIHN0ZG91 dCBmb3Igb3JnLWJhYmVsLgorICAgICAgKQorCis7OzsjIyNhdXRvbG9hZAorKHdpdGgtZXZhbC1h ZnRlci1sb2FkICJvcmciCisgIChhZGQtdG8tbGlzdCAnb3JnLXNyYy1sYW5nLW1vZGVzICcoInNj bGFuZyIgLiBzY2xhbmcpKSkKKworOzs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKHByb3ZpZGUg J29iLXNjbGFuZykKKworOzs7IG9iLXNjbGFuZy5lbCBlbmRzIGhlcmUKLS0gCjIuMTMuMQoK --001a11444ab0449ea105521c1cda--