[CM] gnuplot (was: Pest Question?)
Torsten Anders
t.anders@nici.kun.nl
Fri, 14 Jun 2002 17:14:47 +0200
--------------Boundary-00=_NOBP0ODH2BFCBB6J5H4S
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Subject:
Attached is a somewhat evolved version of my interface to gnuplot. I also=
=20
added examples and explaination.
I just found out: there exists a more elaborated lisp->gnuplot as a part =
of=20
CLLIB (which is now part of CLOCC) at http://clocc.sourceforge.net=20
Anyway, I assume my attempt is more easy to use, partly because it is so=20
tiny. But I also simplify matters: the user does not need to know the det=
ails=20
of gnuplot (e.g. specifying a 'z' coordinate always results in a 3D plot)=
=2E=20
Although, therefore some gnuplot features can not be used (e.g. certain l=
ine=20
styles need more parameter and therefore can no be used).
On Thursday 13 June 2002 18:33, you wrote:
> also cm should have a SHELL call defined
> for all lisps, ill check
Sure the definition of SHELL should go somewhere else. I only placed it i=
n=20
the file for easy testing (I wrote the core of this years ago, didn't che=
ck=20
whether CM2 also includes such a function...).
> > BTW, there is a gnuplot port for the Mac + Win too.
> please send me urls to these!
main gnuplot site:
http://www.gnuplot.info/
at sourceforge:
http://sourceforge.net/projects/gnuplot/
port for Macintosh:
http://homepage.mac.com/gnuplot/
port for dos and windows (probably not the only one...):
http://archives.math.utk.edu/software/multi-platform/gnuplot/msdos/
front end (surely not the only one):
http://www.flash.net/~dmishee/xgfe/xgfe.html
emacs mode (!?!):
http://feff.phys.washington.edu/~ravel/software/gnuplot-mode/Welcome.html
--------------Boundary-00=_NOBP0ODH2BFCBB6J5H4S
Content-Type: text/plain;
charset="iso-8859-1";
name="gnuplot.lisp"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="gnuplot.lisp"
Ozs7Cjs7OyBUaGUgZnVuY3Rpb24gJ3Bsb3QnIGlzIGFuIGludGVyZmFjZSB0byBnbnVwbG90Lgo7
OzsgVmVyeSBsaXR0bGUgZXJyb3IgY2hlY2tpbmcgKHdvdWxkIGNvc3QgcGVyZm9ybWFuY2UsIGVz
cC4gZm9yIGxhcmdlIGxpc3RzKQo7OzsKOzs7IE5vIHBlcmZvcm1hbmNlIGVuaGFuY2VtZW50LCBi
dXQgc2VlbXMgdG8gYmUgT0suCjs7OyAodGFrZSAxLTEuNSBzZWMgZm9yIDIwMDAgcG9pbnRzIHRv
IGNvbXB1dGUsIHNjYWxlcyBsaW5lYXIsCjs7OyBtZXNzdXJlZCBvbiBhIENlbGVyb24gMzMzIHJ1
bm5pbmcgQ01VIGluIFN1U0UgNy4zKQo7OzsKOzs7IGNvcHlyaWdodCAyMDAyIGJ5IFRvcnN0ZW4g
QW5kZXJzCjs7OyBhbmRlcnNAdW5pLXdlaW1hci5kZQo7OzsKCiN8IDsgdGVzdHMgLyBkb2MKCihw
bG90ICcoMCA1IDMgNCkpCQkJOyBzaW1wbGUgcGxvdCAKKHBsb3QgJygxIDIgMyA0KSA6c3R5bGUg
ImltcHVsc2VzIikJOyBsaW5lIHN0eWxlIAoocGxvdCAnKDEgMiAzIDQpIDp4ICcoMC4xIDAuNSAy
IDIuMSkpCTsgeCBhbmQgeSBnaXZlbgoocGxvdCAnKDEgMiAzIDQpCQkJOyAzRCBwbG90CiAgICAg
IDp4ICcoMC4xIDAuNSAyIDIuMSkKICAgICAgOnogJygwLjUgMyAyIC0xKQogICAgICA6c3R5bGUg
ImxpbmVzIikKKHBsb3QgJygoMSA1IDMpICg0IDYgMCkpKQkJOyBtdWx0aXBsZSBwbG90cwoocGxv
dCAnKCgxIDUgMykgKDQgNiAwKSkJCTsgbXVsdGlwbGUgbGluZSBzdHlsZXMKICAgICAgOnN0eWxl
ICcoInBvaW50cyIgImxpbmVzcG9pbnRzIikpIAoocGxvdCAnKCgxIDUgMykgKDQgNiAwKSkJCTsg
bXVsdGlwbGUgM0QgcGxvdHMKICAgICAgOnggJygoMSAyIDEuNSkgKDEgNyA2KSkKICAgICAgOnog
JygoMCAxIDQpICgwIDMgMikpKQoocGxvdCAnKDAgNSAzIDQpCQkJOyBhZGRpdGlvbmFsIHNldHRp
bmdzIChvdXQgdG8gcHMgZmlsZSkKICAgICAgOnNldCAnKCJ0aXRsZSAndGVzdCciCgkgICAgICJv
dXRwdXQgJy9ob21lL3RvL3Bsb3QucHMnIgoJICAgICAidGVybWluYWwgcG9zdHNjcmlwdCIpKQoK
LS0+IGFsbCBkb2MgZm9sbG93aW5nIGlzIHF1b3RlZCBmcm9tIGRvYyBvZiBnbnVwbG90LCBzZWUg
dGhhdCBmb3IgKG11Y2gpIG1vcmUgaW5mbyA8LS0KCjs7IHNvbWUgc3R5bGVzIChhbGwgc3R5bGVz
IHVzaW5nIDIgKDJEKSBvciAzICgzRCkgcGFyYW1ldGVycykgY2FuIGJlIHVzZWQpCiJsaW5lcyIg
VGhlIGBsaW5lc2Agc3R5bGUgY29ubmVjdHMgYWRqYWNlbnQgcG9pbnRzIHdpdGggc3RyYWlnaHQg
bGluZSBzZWdtZW50cy4KInBvaW50cyIgVGhlIGBwb2ludHNgIHN0eWxlIGRpc3BsYXlzIGEgc21h
bGwgc3ltYm9sIGF0IGVhY2ggcG9pbnQuICg6c2V0ICJwb2ludHNpemUgPG51bWJlcj4iIG1heSBi
ZSB1c2VkIHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgcG9pbnRzKQoibGluZXNwb2ludHMiIFRo
ZSBgbGluZXNwb2ludHNgIHN0eWxlIGRvZXMgYm90aCBgbGluZXNgIGFuZCAgYHBvaW50c2AsIHRo
YXQgaXMsIGl0IGRyYXdzIGEgc21hbGwgc3ltYm9sIGF0IGVhY2ggcG9pbnQgYW5kIHRoZW4gY29u
bmVjdHMgYWRqYWNlbnQgcG9pbnRzIHdpdGggc3RyYWlnaHQgbGluZSBzZWdtZW50cy4gYGxpbmVz
cG9pbnRzYCBtYXkgYmUgYWJicmV2aWF0ZWQgYGxwYC4gKDpzZXQgInBvaW50c2l6ZSA8bnVtYmVy
PiIgbWF5IGJlIHVzZWQgdG8gY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBwb2ludHMpLiAKImltcHVs
c2VzIiAgVGhlIGBpbXB1bHNlc2Agc3R5bGUgZGlzcGxheXMgYSB2ZXJ0aWNhbCBsaW5lIGZyb20g
dGhlIHggYXhpcyAobm90IHRoZSBncmFwaCBib3JkZXIpLCBvciBmcm9tIHRoZSBncmlkIGJhc2Ug
aW4gYSAzRCBwbG90LCB0byBlYWNoIHBvaW50LgoiZG90cyIgVGhlIGBkb3RzYCBzdHlsZSBwbG90
cyBhIHRpbnkgZG90IGF0IGVhY2ggcG9pbnQgLS0gdGhpcyBpcyB1c2VmdWwgZm9yIHNjYXR0ZXIg
cGxvdHMgd2l0aCBtYW55IHBvaW50cy4KInN0ZXBzIiBUaGUgYHN0ZXBzYCBzdHlsZSBpcyBvbmx5
IHJlbGV2YW50IHRvIDItZCBwbG90dGluZy4gIEl0IGNvbm5lY3RzIGNvbnNlY3V0aXZlIHBvaW50
cyB3aXRoIHR3byBsaW5lIHNlZ21lbnRzOiB0aGUgZmlyc3QgZnJvbSAoeDEseTEpIHRvICh4Mix5
MSkgYW5kIHRoZQogc2Vjb25kIGZyb20gKHgyLHkxKSB0byAoeDIseTIpLgoiYm94ZXMiIFRoZSBg
Ym94ZXNgIHN0eWxlIGlzIG9ubHkgcmVsZXZhbnQgdG8gMi1kIHBsb3R0aW5nLiAgSXQgZHJhd3Mg
YSBib3ggY2VudGVyZWQgYWJvdXQgdGhlIGdpdmVuIHggY29vcmRpbmF0ZSBmcm9tIHRoZSB4IGF4
aXMgKG5vdCB0aGUgZ3JhcGggYm9yZGVyKSB0byB0aGUgZ2l2ZW4geSBjb29yZGluYXRlLgoKOzsg
YWRkaXRpb25hbCBzdHlsZSBzZXR0aW5ncwoocGxvdCAnKDEgMiAzIDQpIDpzdHlsZSAibGluZXNw
b2ludHMgbGluZXR5cGUgMSBsaW5ld2lkdGggMS41IHBvaW50dHlwZSAzIHBvaW50c2l6ZSAzIikK
Ozsgc2FtZSB3aXRoIHNob3J0IGhhbmRzCihwbG90ICcoMSAyIDMgNCkgOnN0eWxlICJsaW5lc3Ag
bHQgMSBsdyAxLjUgcHQgMyBwcyAzIikKCjs7IHRpdGxlIGZvciBncmFwaHMKKHBsb3QgJygxIDIg
MyA0KSA6dGl0bGUgInRlc3QiKQoocGxvdCAnKCgxIDIgMyA0KSAoMiAzIDQgNSkpIDp0aXRsZSAn
KCJ0ZXN0MSIgInRlc3QyIikpCgo7OyBmdXJ0aGVyIHNldHRpbmdzClRoZSBgc2V0YCBjb21tYW5k
IG9mIGdudXBsb3QgY2FuIGJlIHVzZWQgdG8gc2V0cyBfbG90c18gb2Ygb3B0aW9ucy4KCjs7IG91
dHB1dCB0eXBlCiJ0ZXJtaW5hbCA8dmFsPiIgc2V0cyB3aGF0IGtpbmQgb2Ygb3V0cHV0IHRvIGdl
bmVyYXRlLCBtYW55IGZvcm1hdHMgYXJlIHN1cHBvcnRlZCwgZS5nLjoKeDExIFgxMSBXaW5kb3cg
U3lzdGVtIAphaWZtICBBZG9iZSBJbGx1c3RyYXRvciAzLjAgRm9ybWF0CmNvcmVsICBFUFMgZm9y
bWF0IGZvciBDb3JlbERSQVcKZmlnICBGSUcgMy4xIGdyYXBoaWNzIGxhbmd1YWdlOiBjYW4gYmUg
ZWRpdGVkIGJ5IHhmaWcgZ3JhcGhpY3MgZWRpdG9yCm1pZiAgRnJhbWUgbWFrZXIgTUlGIDMuMDAg
Zm9ybWF0CnBvc3RzY3JpcHQgIFBvc3RTY3JpcHQgZ3JhcGhpY3MgbGFuZ3VhZ2UKbGF0ZXggIExh
VGVYIHBpY3R1cmUgZW52aXJvbm1lbnQKW2Z1cnRoZXIgc3BlY2lhbCBUZXgvTGFUZVggZW52aXJv
bm1lbnRzXQpbbWFueSBzcGVjaWFsIHByaW50ZXIgZm9ybWF0c10KCjs7IG91dHB1dCBmaWxlCiJv
dXRwdXQgJzxmaWxlbmFtZT4nIiBvdXRwdXQgZmlsZQoKKHBsb3QgJygwIDUgMyA0KQkJICAgCiAg
ICAgIDpzZXQgJygib3V0cHV0ICcvaG9tZS90by9wbG90LnBzJyIKCSAgICAgInRlcm1pbmFsIHBv
c3RzY3JpcHQiKSkKCjs7IHRpdGxlCiJ0aXRsZSAnPHRpdGxlPiciIHRpdGxlIG9mIHdob2xlIHBs
b3QgCgoocGxvdCAnKDAgNSAzIDQpIDpzZXQgJygidGl0bGUgJ3Rlc3QnIikpCgo7OyB2aWV3CiJ2
aWV3IDxyb3RfeD4geyx7PHJvdF96Pn17LHs8c2NhbGU+fXssPHNjYWxlX3o+fX19IiBzZXRzIHRo
ZSB2aWV3aW5nIGFuZ2xlIGZvciAzRCBwbG90cywgd2hlcmUgPHJvdF94PiBhbmQgPHJvdF96PiBj
b250cm9sIHRoZSByb3RhdGlvbiBhbmdsZXMgKGluIGRlZ3JlZXMpLiA8cm90X3g+IGlzIGJvdW5k
ZWQgdG8gdGhlIFswOjE4MF0gcmFuZ2Ugd2l0aCBhIGRlZmF1bHQgb2YgNjAgZGVncmVlcywgd2hp
bGUgPHJvdF96PiBpcyBib3VuZGVkIHRvIHRoZSBbMDozNjBdIHJhbmdlIHdpdGggYSBkZWZhdWx0
IG9mIDMwIGRlZ3JlZXMuIDxzY2FsZT4gY29udHJvbHMgdGhlIHNjYWxpbmcgb2YgdGhlIGVudGly
ZSBgc3Bsb3RgLCB3aGlsZSA8c2NhbGVfej4gc2NhbGVzIHRoZSB6IGF4aXMgb25seS4gIEJvdGgg
c2NhbGVzIGRlZmF1bHQgdG8gMS4wLgoKKHBsb3QgJygwIDEgNSkgOnggJygwIDEgMikgOnogJygw
IDUgMSkgOnNldCAnKCJ2aWV3IDEyMCwgMzAsIDEsIDEiKSkKCnwjCgoKKGRlZnVuIHBsb3QgKHkg
JmtleSB4IHogKHN0eWxlICJsaW5lc3BvaW50cyIpIHNldCB0aXRsZQoJICAgICAgIChkYXRhLWZp
bGUgIi90bXAvZ251cGxvdF9kYXRlbiIpCgkgICAgICAgKGNvbW1hbmQtZmlsZSAiL3RtcC9nbnVw
bG90X2NvbW1hbmQiKSkKICAiR2VuZXJhdGVzIHNjcmlwdCBhbmQgZGF0YSBmaWxlIGZvciBnbnVw
bG90IGFuZCBjYWxscyBnbnVwbG90IHdpdGggdGhlc2UgZmlsZXMuCkNvb3JkaW5hdGVzIChpLmUu
IHgsIHksIGFuZCB6KSBtYXkgYmUgZWl0aGVyIGEgbGlzdCBvZiBudW1iZXJzIChmb3IgYSBzaW5n
bGUgcGxvdCkgb3IgYSBsaXN0IG9mIGxpc3RzIChmb3IgbXVsdGlwbGUgcGxvdHMpIC0tIHRoZSBu
ZXN0aW5nIG9mIGFsbCBsaXN0cyBzaG91bGQgYmUgdGhlIHNhbWUuIFNwZWNpZnlpbmcgeiByZXN1
bHRzIGluIGEgM0QgcGxvdC4gc3R5bGUgKHNldHMgdGhlIGxpbmVzIHN0eWxlKSBleHBlY3RzIGVp
dGhlciBhIHNpbmdsZSBzdHJpbmcgZm9yIGFsbCBvciBhIGxpc3Qgb2Ygc3R5bGVzIHdpdGggYSBu
ZXcgdmFsdWUgZm9yIGV2ZXJ5IHBsb3QuIHNldCBleHBlY3RzIGEgbGlzdCBvZiBzdHJpbmdzIGRl
c2NyaWJpbmcgYXJiaXRyYXJ5IGFkZGl0aW9uYWwgc2V0dGluZ3MgdG8gZ251cGxvdCAod2l0aG91
dCB0aGUgbGVhZGluZyAnc2V0JykuCmRhdGEtZmlsZSBnaXZlcyB0aGUgYmVnaW5uaW5nIG9mIHRo
ZSBkYXRhIGZpbGUgbmFtZXMgKGV2ZXJ5IHBsb3QgaXMgd3JpdHRlbiB0byBhbiBvd24gZGF0YSBm
aWxlKS4gY29tbWFuZC1maWxlIGlzIHRoZSBuYW1lIG9mIHRoZSBjb21tYW5kIGZpbGUuIgogIChs
ZXQqICgocGxvdC1jbWQgKGlmIHogInNwbG90IiAicGxvdCIpKSA7IDJEIG9yIDNEID8KCSAoZGF0
YS1maWxlcyAgIDsgd3JpdGUtc3RyaW5nLXRvLWZpbGUgcmV0dXJucyBmaWxlbmFtZQoJICAobG9v
cCBmb3IgZCBpbiAoY29tYmluZS1jb29yZGluYXRlcyB4IHkgeikKCQlmb3IgaSBmcm9tIDEKCQlj
b2xsZWN0ICh3cml0ZS1zdHJpbmctdG8tZmlsZQoJCQkgKG1ha2UtbGluZXMgZCkKCQkJIChmb3Jt
YXQgbmlsICJ+YX5hIiBkYXRhLWZpbGUgaSkpKSkKCSAobCAobGVuZ3RoIGRhdGEtZmlsZXMpKQoJ
ICh0aXRsZXMgKGlmIHRpdGxlCgkJICAgICAobGlzdGlmeSB0aXRsZSBsKQoJCSAgIChsb29wIGZv
ciBpIGZyb20gMSB0byBsCgkJCSBjb2xsZWN0IChmb3JtYXQgTklMICJkYXRhfkEiIGkpKSkpCgkg
KHN0eWxlcyAobGlzdGlmeSBzdHlsZSBsKSkKCSAocGxvdHMJICAgICAgIDsgc3RyaW5ncyBmb3Ig
ZXZlcnkgcGxvdAoJICAobWFwY2FyICMnKGxhbWJkYSAoZGF0YSB0aXRsZSBzdHlsZSkKCQkgICAg
ICAoZm9ybWF0IE5JTCAiICd+QScgdGl0bGUgJ35BJyB3aXRoIH5BIgoJCQkgICAgICBkYXRhIHRp
dGxlIHN0eWxlKSkKCQkgIGRhdGEtZmlsZXMgdGl0bGVzIHN0eWxlcykpCgkgKHNldHRpbmdzIChm
b3JtYXQgTklMICJ+e3NldCB+YX4lfn0iIHNldCkpKQogICAgKHdyaXRlLXN0cmluZy10by1maWxl
CiAgICAgKGZvcm1hdCBuaWwgIn5hfmEgfmEgfnssIH5hfn0gOyBwYXVzZSAtMSAnSGl0IHJldHVy
biB0byBjb250aW51ZScgfiUiCgkgICAgIHNldHRpbmdzIHBsb3QtY21kCgkgICAgIChmaXJzdCBw
bG90cykgKHJlc3QgcGxvdHMpKSA7IHRvIHB1dCBjb21tYXRhIGF0IGNvcnJlY3QgcG9zaXRpb24K
ICAgICBjb21tYW5kLWZpbGUpKQogIChzaGVsbCAoZm9ybWF0IG5pbCAieHRlcm0gLWUgZ251cGxv
dCB+YSAmIiBjb21tYW5kLWZpbGUpKSkKCgo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7
Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owo7OzsgdXRpbHMKOzs7Cgoo
ZGVmdW4gbWFrZS1saW5lcyAoZGF0YSkKICAiV3JpdGVzIGVhY2ggc3VibGlzdCBvZiBkYXRhIGlu
IGFuIG93biBsaW5lIgogIChmb3JtYXQgTklMICJ+e357fiw3RiB+fX4lfn0iIGRhdGEpKQoKOyAo
bWFrZS1saW5lcyAnKCgwIDEpICgwLjIgMikgKDEgMykgKDUgNCkpKQoKKGRlZnVuIGNvbWJpbmUt
Y29vcmRpbmF0ZXMgKHggeSB6KQogICJDb21iaW5lcyB0aGUgbGlzdHMgb2YgeCAoYW5kIHBvc3Np
Ymx5IHkgYW5kIHopIGNvb3JkaW5hdGVzIGludG8gYSBsaXN0IG9mIHRoZSBmb3JtICgoKHgxIHkx
IHoxKSAuLi4pIFsoPGNvb3JzIGZvciBzZWNvbmQgcGxvdD4pIC4uLl0pLiBCb3RoIHggb3IgeiBt
YXkgYmUgTklMLiIKICAod2hlbiAoYW5kIHogKG9yIChub3QgeCkgKG5vdCB5KSkpCiAgICAoZXJy
b3IgInogY2FuIG5vdCBiZSBnaXZlbiB3aXRob3V0IHggb3IgeS4iKSkKICAoZmxldCAoKHByZXBh
cmUgKHggeSB6KSAocmVtb3ZlIE5JTCAobGlzdCB4IHkgeikpKSkKICAoaWYgKGxpc3RwIChmaXJz
dCB5KSkJCQk7IGNoZWNrcyBvbmx5IGZpcnN0IGVsZW1lbnQgISEKICAgICAgKGFwcGx5ICMnbWFw
Y2FyICMnKGxhbWJkYSAoeHggJm9wdGlvbmFsIHl5IHp6KQoJCQkgIDsocHJpbnQgKGxpc3QgeHgg
eXkgenopKQoJCQkgIChtYXQtdHJhbnMgKHByZXBhcmUgeHggeXkgenopKSkKCSAgICAgKHByZXBh
cmUgeCB5IHopKQogICAgKGxpc3QgKG1hdC10cmFucyAocHJlcGFyZSB4IHkgeikpKSkpKQoKOyAo
Y29tYmluZS1jb29yZGluYXRlcyAnKDEgMiAzKSBOSUwgTklMKQo7IChjb21iaW5lLWNvb3JkaW5h
dGVzICcoMSAyIDMpICcoYSBiIGMpIE5JTCkKOyAoY29tYmluZS1jb29yZGluYXRlcyAnKCgxIDIg
MykgKDUgNiA3KSkgJygoYSBiIGMpICh4IHkgeikpIE5JTCkKCihkZWZ1biB3cml0ZS1zdHJpbmct
dG8tZmlsZSAoc3RyaW5nIG91dC1maWxlKQogICJXcml0ZXMgKG9yIG92ZXJ3cml0ZXMpIHN0cmlu
ZyBpbnRvIG91dC1maWxlIGFuZCByZXR1cm5zIG91dC1maWxlLiIKICAod2l0aC1vcGVuLWZpbGUg
KG91dC1zdHJlYW0gb3V0LWZpbGUKCQkgICA6ZGlyZWN0aW9uIDpvdXRwdXQKCQkgICA6aWYtZXhp
c3RzIDpzdXBlcnNlZGUpCiAgICAgKGZvcm1hdCBvdXQtc3RyZWFtIHN0cmluZykpCiAgb3V0LWZp
bGUpCgo7OyBpZGVhIGZvciBtYXQtdHJhbnMgZGVzY2VuZHMgdG8gUGF0Y2hXb3JrIChidXQgbm90
IGNvZGUpCihkZWZ1biBtYXQtdHJhbnMgKGluLWxpc3QpCiAgIlRyYW5zZm9ybXMgYSBsaXN0IG9m
IGZvcm0gKChhMSBhMiBhMykgKGIxIGIyIGIzKSAoYzEgYzIgYzMpIC4uLikgaW50byAoKGExIGIx
IGMxIC4uLikgKGEyIGIyIGMyIC4uLikgKGEzIGIzIGMzIC4uLikpLiIKICAoYXBwbHkgIydtYXBj
YXIgIycobGFtYmRhICgmcmVzdCBhbGwpIGFsbCkgCgkgaW4tbGlzdCkpCgooZGVmdW4gbGlzdGlm
eSAoeCBsKQogIChpZiAobGlzdHAgeCkJCiAgICAgIHgKICAgIChtYWtlLWxpc3QgbCA6aW5pdGlh
bC1lbGVtZW50IHgpKSkKCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7
Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7OyBxdW90ZSAoc2hvdWxkIGJlIGRlZmlu
ZWQgZWxzZXdoZXJlIGZvciBbaG9wZWZ1bGx5XSBldmVyeSBwbGF0Zm9ybSkKCjs7OyBtb2RpZmll
ZCB2ZXJzaW9uIG9mICdzaGVsbCcgaW4gQ00xIGJ5IEhlaW5yaWNoIFRhdWJlCjs7OyBmb3Igc3Vw
cG9ydCBvZiBvdGhlciBMaXNwIHBsYXRmb3JtcyBzZWUgImltcGwubGlzcCIgCiMrQ01VCihkZWZ1
biBzaGVsbCAoc3RyaW5nICZrZXkgKHdhaXQgVCkgKG91dHB1dCBUKSkKICAiJ0V2YWx1YXRlcycg
c3RyaW5nIGluIC9iaW4vc2ggYW5kIG91dHB1dHMgcmVzdWx0IG9uICpzdGFuZGFyZC1vdXRwdXQq
LiBTdGFydCBhIGNoaWxkIHByb2Nlc3MgYW5kIGRvZXMgbm90IHdhaXQgdW50aWwgcHJvY2VzcyBp
cyBmaW5pc2hlZC4gVGhlcmVmb3JlIG91dHB1dCBvZiBwcm9jZXNzIG1heSBiZSBtaXhlZCBpbiBv
dXRwdXRzIG9mIG90aGVyIHByb2dyYW1tLi4uIgogICh1bndpbmQtcHJvdGVjdCAKICAgICAgKGxl
dCogKChwcm9jZXNzICAoZXh0OnJ1bi1wcm9ncmFtICIvYmluL3NoIiAobGlzdCAiLWMiIHN0cmlu
ZykKCQkJCQk6b3V0cHV0IG91dHB1dAoJCQkJCTp3YWl0IHdhaXQpKSkKCShleHQ6cHJvY2Vzcy1j
bG9zZSBwcm9jZXNzKQoJcHJvY2VzcykpKQo=
--------------Boundary-00=_NOBP0ODH2BFCBB6J5H4S--