EVACUATED object entered! (when doing FFI)

Francis Girard francis.girard@free.fr
Fri, 25 Oct 2002 04:41:19 +0200


--------------Boundary-00=_VGNIN4WZRPT1XCD68RP6
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

Good morning again,

Thank you for answering.

I am using ghc 5.04.1 I compiled myself on a linux box (Mandrake 8.2) .

I'm sending you the source code. Compiled it with the following commands :

ghc -ffi -c GetFNamesBckp.hs -o GetFNamesBckp.o

gcc -I/opt/installed/ghc-5.04.1/lib/ghc-5.04.1/include -c cGetFNamesBckp.c -o 
cGetFNamesBckp.o

ghc -no-hs-main GetFNamesBckp_stub.o GetFNamesBckp.o cGetFNamesBckp.o

If you comment out the "foreign export" command on line 11 in 
GetFNamesBckp.hs and do :

ghc --make Main.hs

Then the executable works ! That's why I thought it had to do with FFI and 
memory allocation.

Thank you

Francis Girard
Le Conquet
France

Le 24 Octobre 2002 09:28, Simon Peyton-Jones a écrit :
> It's certainly a bug of some kind.  Please say what version of GHC you
> are using.  If it's the latest one (5.04.1), please send us the source
> code.
>
> Thanks
>
> Simon
>
> | -----Original Message-----
> | From: Francis Girard [mailto:francis.girard@free.fr]
> | Sent: 24 October 2002 04:02
> | To: glasgow-haskell-users@haskell.org
> | Subject: EVACUATED object entered! (when doing FFI)
> |
> | Good morning,
> |
> | I wrote a very small program, and it executed ok.
> | I wanted to export a function in "C", and therefore wrote a "C"
>
> wrapper
>
> | function over it to invoke peekCString and peekArray on the input;
>
> newCString
>
> | and newArray on the output.
> |
> | I then did a small "C" driver program. Everything compiled and linked
> | correctly.
> |
> | But at execution the program prints :
> |
> | EVACUATED object entered!
> |
> | as soon as "startupHaskell" is invoked (i.e. even before I call my
>
> foreign
>
> | exported function !)
> |
> | What is the meaning of this message ?
> |
> | Thank you
> |
> | Francis Girard
> | Le Conquet
> | France
> |
> |
> | _______________________________________________
> | Glasgow-haskell-users mailing list
> | Glasgow-haskell-users@haskell.org
> | http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

--------------Boundary-00=_VGNIN4WZRPT1XCD68RP6
Content-Type: text/x-java;
  charset="iso-8859-1";
  name="GetFNamesBckp.hs"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="GetFNamesBckp.hs"

LS0gR2V0Rk5hbWVzQmNrcC5ocwoKbW9kdWxlIEdldEZOYW1lc0Jja3Agd2hlcmUKCmltcG9ydCBE
aXJlY3RvcnkKaW1wb3J0IExpc3QKCmltcG9ydCBGb3JlaWduCmltcG9ydCBGb3JlaWduLkMKCmZv
cmVpZ24gZXhwb3J0IGNjYWxsIGdldEZOYW1lc1RvWmlwQyA6OiBJbnQgLT4gKFB0ciBDU3RyaW5n
KSAtPiBJTyAoUHRyIENTdHJpbmcpCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIEZ1bmN0aW9uIGdl
dEZOYW1lc1RvWmlwCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZ2V0Rk5hbWVzVG9aaXBDIDo6IEludCAt
PiAoUHRyIENTdHJpbmcpIC0+IElPIChQdHIgQ1N0cmluZykKZ2V0Rk5hbWVzVG9aaXBDIG5MZW4g
dkZzIAogID0gZG8gY2ZzIDwtIHBlZWtBcnJheSBuTGVuIHZGcwogICAgICAgaGZzIDwtIHBlZWtD
U3RyaW5nQXJyIGNmcwogICAgICAgaHpzIDwtIGdldEZOYW1lc1RvWmlwIGhmcwogICAgICAgY3pz
IDwtIGNyZWF0ZUNTdHJpbmdBcnIgaHpzCiAgICAgICB2WnMgPC0gbmV3QXJyYXkgY3pzCiAgICAg
ICByZXR1cm4gdlpzCiAgICAgICB3aGVyZQogICAgICAgcGVla0NTdHJpbmdBcnIgOjogW0NTdHJp
bmddIC0+IElPIFtTdHJpbmddCiAgICAgICBwZWVrQ1N0cmluZ0FyciBbXSA9IHJldHVybiBbXQog
ICAgICAgcGVla0NTdHJpbmdBcnIgKGNmOmNmcykgPSBkbyBoZiA8LSBwZWVrQ1N0cmluZyBjZgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZnMgPC0gcGVla0NTdHJpbmdBcnIg
Y2ZzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoaGYgOiBoZnMp
CiAgICAgICBjcmVhdGVDU3RyaW5nQXJyIDo6IFtTdHJpbmddIC0+IElPIFtDU3RyaW5nXQogICAg
ICAgY3JlYXRlQ1N0cmluZ0FyciBbXSA9IGRvIHNlbnRpbmVsIDwtIG5ld0NTdHJpbmcgIi8vIgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbc2VudGluZWxdCiAgICAgICBj
cmVhdGVDU3RyaW5nQXJyIChoZjpoZnMpID0gZG8gY2YgPC0gbmV3Q1N0cmluZyBoZgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmcyA8LSBjcmVhdGVDU3RyaW5nQXJyIGhm
cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoY2YgOiBjZnMp
CgpnZXRGTmFtZXNUb1ppcCA6OiBbRmlsZVBhdGhdIC0+IElPIFtGaWxlUGF0aF0KZ2V0Rk5hbWVz
VG9aaXAgKGY6ZnMpIAogID0gZG8gaXNBRmlsZSA8LSBkb2VzRmlsZUV4aXN0IGYKICAgICAgIGlz
QURpciA8LSBkb2VzRGlyZWN0b3J5RXhpc3QgZgogICAgICAgaWYgKGlzQUZpbGUpCiAgICAgICAg
IHRoZW4gZG8gbGwgPC0gZ2V0Rk5hbWVzVG9aaXAgZnMKICAgICAgICAgICAgICAgICBpZiAoaXNG
aWxlVG9aaXAgZikgdGhlbiByZXR1cm4gKFtmXSArKyBsbCkgZWxzZSByZXR1cm4gbGwKICAgICAg
ICAgZWxzZSBpZiAoaXNBRGlyKSAmJiAoaXNEaXJUb1ppcCBmKQogICAgICAgICAgIHRoZW4gZG8g
c3ViZGlyIDwtIGdldERpcmVjdG9yeUNvbnRlbnRzIGYKICAgICAgICAgICAgICAgICAgIGxldCBz
dWJmcyA9IFtqb2luRGlyU3ViRGlyIGYgc2YgfCBzZiA8LSBzdWJkaXIsIHNmIC89ICIuIiwgc2Yg
Lz0gIi4uIl0KICAgICAgICAgICAgICAgICAgIGwxIDwtIGdldEZOYW1lc1RvWmlwIHN1YmZzCiAg
ICAgICAgICAgICAgICAgICBsMiA8LSBnZXRGTmFtZXNUb1ppcCBmcwogICAgICAgICAgICAgICAg
ICAgcmV0dXJuIChsMSArKyBsMikKICAgICAgICAgICBlbHNlIGdldEZOYW1lc1RvWmlwIGZzCmdl
dEZOYW1lc1RvWmlwIFtdID0gcmV0dXJuIFtdCgpqb2luRGlyU3ViRGlyIDo6IEZpbGVQYXRoIC0+
IEZpbGVQYXRoIC0+IEZpbGVQYXRoCmpvaW5EaXJTdWJEaXIgZCBzZAogIHwgKGxhc3QgZCkgPT0g
Jy8nID0gZCArKyBzZAogIHwgb3RoZXJ3aXNlICAgICAgID0gKGQgKysgIi8iKSArKyBzZAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gRnVuY3Rpb24g
Z2xvYkZpbGVQYXR0ZXJuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZ2xvYkZpbGVQYXR0ZXJuIDo6IFN0
cmluZyAtPiBTdHJpbmcgLT4gQm9vbApnbG9iRmlsZVBhdHRlcm4gW10gKCcqJzpjc1BhdHRlcm4p
ID0gZ2xvYkZpbGVQYXR0ZXJuIFtdIGNzUGF0dGVybgpnbG9iRmlsZVBhdHRlcm4gW10gW10gPSBU
cnVlCmdsb2JGaWxlUGF0dGVybiAoXzpfKSBbXSA9IEZhbHNlCmdsb2JGaWxlUGF0dGVybiBbXSAo
XzpfKSA9IEZhbHNlCmdsb2JGaWxlUGF0dGVybiAoY1RvTWF0Y2g6Y3NUb01hdGNoKSAoJyonOmNz
UGF0dGVybikKICB8IGdsb2JGaWxlUGF0dGVybiBjc1RvTWF0Y2ggY3NQYXR0ZXJuID0gVHJ1ZQog
IHwgb3RoZXJ3aXNlICAgICAgICAgICAgICAgICAgID0gZ2xvYkZpbGVQYXR0ZXJuIGNzVG9NYXRj
aCAoJyonOmNzUGF0dGVybikKZ2xvYkZpbGVQYXR0ZXJuIChjVG9NYXRjaDpjc1RvTWF0Y2gpIChj
UGF0dGVybjpjc1BhdHRlcm4pCiAgfCBjVG9NYXRjaCA9PSBjUGF0dGVybiAgICAgICAgPSBnbG9i
RmlsZVBhdHRlcm4gY3NUb01hdGNoIGNzUGF0dGVybgogIHwgb3RoZXJ3aXNlICAgICAgICAgICAg
ICAgICAgID0gRmFsc2UKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gRnVuY3Rpb24gZ2xvYkZpbGVQ
YXR0ZXJuVgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmdsb2JGaWxlUGF0dGVyblYgOjogU3RyaW5nIC0+
IFtTdHJpbmddIC0+IEJvb2wKZ2xvYkZpbGVQYXR0ZXJuViBjc1RvTWF0Y2ggW10gPSBGYWxzZQpn
bG9iRmlsZVBhdHRlcm5WIGNzVG9NYXRjaCAocDpwcykKICB8IGdsb2JGaWxlUGF0dGVybiBjc1Rv
TWF0Y2ggcCA9IFRydWUKICB8IG90aGVyd2lzZSAgICAgICAgICAgICAgICAgICA9IGdsb2JGaWxl
UGF0dGVyblYgY3NUb01hdGNoIHBzCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIEZ1bmN0aW9uIGlz
RmlsZVRvWmlwIGFuZCBpc0RpclRvWmlwCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KaXNGaWxlVG9aaXAg
OjogRmlsZVBhdGggLT4gQm9vbAppc0ZpbGVUb1ppcCBmID0gIGlzRmlsZVRvWmlwQUkgZiBnZXRB
ZGRSZWdWZWMgZ2V0SWduUmVnVmVjCgppc0ZpbGVUb1ppcEFJIDo6IEZpbGVQYXRoIC0+IFtGaWxl
UGF0aF0gLT4gW0ZpbGVQYXRoXSAtPiBCb29sCmlzRmlsZVRvWmlwQUkgZiB2QWRkIHZJZ24gPSAo
Z2xvYkZpbGVQYXR0ZXJuViBmIHZBZGQpICYmIG5vdCAoZ2xvYkZpbGVQYXR0ZXJuViBmIHZJZ24p
CiAgCmlzRGlyVG9aaXAgOjogRmlsZVBhdGggLT4gQm9vbAppc0RpclRvWmlwIGYgPSBpc0ZpbGVU
b1ppcEFJIGYgKGdldEFkZFJlZ1ZlYyArKyAoZ2V0QmFzZURpclZSIGdldEFkZFJlZ1ZlYykpIChn
ZXRJZ25SZWdWZWMpCgpnZXRCYXNlRGlyIDo6IEZpbGVQYXRoIC0+IEZpbGVQYXRoIApnZXRCYXNl
RGlyICIvIiA9IFtdCmdldEJhc2VEaXIgZiA9IChyZXYgLiBnZXRGcm9tU2xhc2ggLiByZXYpIGYK
ICB3aGVyZSByZXYgOjogRmlsZVBhdGggLT4gRmlsZVBhdGgKICAgICAgICByZXYgW10gPSBbXQog
ICAgICAgIHJldiAoYzpjcykgPSAocmV2IGNzKSArKyBbY10KICAgICAgICBnZXRGcm9tU2xhc2gg
OjogRmlsZVBhdGggLT4gRmlsZVBhdGgKICAgICAgICBnZXRGcm9tU2xhc2ggW10gPSBbXQogICAg
ICAgIGdldEZyb21TbGFzaCAiLyIgPSAiLyIKICAgICAgICBnZXRGcm9tU2xhc2ggKCcvJzpjcykg
PSBjcwogICAgICAgIGdldEZyb21TbGFzaCAoXzpjcykgPSBnZXRGcm9tU2xhc2ggY3MKCmdldEJh
c2VEaXJSIDo6IEZpbGVQYXRoIC0+IFtGaWxlUGF0aF0KZ2V0QmFzZURpclIgW10gPSBbXQpnZXRC
YXNlRGlyUiBmID0gZ2V0QmFzZURpclIoZ2V0QmFzZURpciBmKSArKyBbZ2V0QmFzZURpciBmXQoK
Z2V0QmFzZURpclYgOjogW0ZpbGVQYXRoXSAtPiBbRmlsZVBhdGhdCmdldEJhc2VEaXJWID0gZWxp
bUR1cCAuIG1hcCBnZXRCYXNlRGlyCgpnZXRCYXNlRGlyVlIgOjogW0ZpbGVQYXRoXSAtPiBbRmls
ZVBhdGhdCmdldEJhc2VEaXJWUiA9IGVsaW1FbXAgLiBlbGltRHVwIC4gZm9sZHIgKCsrKSBbXSAu
IG1hcCBnZXRCYXNlRGlyUgogICAgICAgICAgICAgICB3aGVyZSBlbGltRW1wIDo6IFtGaWxlUGF0
aF0gLT4gW0ZpbGVQYXRoXQogICAgICAgICAgICAgICAgICAgICBlbGltRW1wIFtdID0gW10KICAg
ICAgICAgICAgICAgICAgICAgZWxpbUVtcCAoIiI6ZnMpID0gZWxpbUVtcCBmcwogICAgICAgICAg
ICAgICAgICAgICBlbGltRW1wIGZzID0gZnMKCmVsaW1EdXAgOjogT3JkIGEgPT4gW2FdIC0+IFth
XQplbGltRHVwID0gZm9sZHIgKCsrKSBbXSAuICBtYXAgKHRha2UgMSkgLiBncm91cCAuIHNvcnQK
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gRnVuY3Rpb25zIGdldEFkZFJlZ1ZlYyBhbmQgZ2V0SWdu
UmVnVmVjCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZ2V0QWRkUmVnVmVjIDo6IFtTdHJpbmddCmdldEFk
ZFJlZ1ZlYwogID0gIFsiL2hvbWUvZnJhbmNpcy9mcmFuY2lzX2NhbC4qIiwKICAgICAgIi9ob21l
L2ZyYW5jaXMvZnJhbmNpc19jYWwudmNzIiwKICAgICAgIi9ob21lL2ZyYW5jaXMvTWFpbC8qIiwK
ICAgICAgIi9ob21lL2ZyYW5jaXMvLmFzcGVsbC5mci4qIiwKICAgICAgIi9ob21lL2ZyYW5jaXMv
LmJhc2hfaGlzdG9yeSIsCiAgICAgICIvaG9tZS9mcmFuY2lzLy5seXgvKiIsCiAgICAgICIvaG9t
ZS9mcmFuY2lzLy5iYXNoX2xvZ291dCIsCiAgICAgICIvaG9tZS9mcmFuY2lzLy5iYXNoX3Byb2Zp
bGUiLAogICAgICAiL2hvbWUvZnJhbmNpcy8uYmFzaHJjIiwKICAgICAgIi9ob21lL2ZyYW5jaXMv
LmplZGl0LyoiLAogICAgICAiL2hvbWUvZnJhbmNpcy8ubWVudS8qIiwKICAgICAgIi9ob21lL2Zy
YW5jaXMvLnhlbWFjcy8qIiwKICAgICAgIi9ob21lL2ZyYW5jaXMvUEVSU09OTkVMLyoiXQoKZ2V0
SWduUmVnVmVjIDo6IFtTdHJpbmddCmdldElnblJlZ1ZlYyAKICA9ICBbIioubyIsCiAgICAgICIq
LnNvIiwKICAgICAgIiouYSIsCiAgICAgICIqLmhpIiwKICAgICAgIioucHljIiwKICAgICAgIiov
RlQtQk9VTE9UKiIsCiAgICAgICIqfiJdCgo=

--------------Boundary-00=_VGNIN4WZRPT1XCD68RP6
Content-Type: text/x-java;
  charset="iso-8859-1";
  name="Main.hs"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Main.hs"

LS0gTWFpbi5ocwoKbW9kdWxlIE1haW4gd2hlcmUKCmltcG9ydCBHZXRGTmFtZXNCY2twCgptYWlu
IDo6IElPICgpCm1haW4gPSBkbyBwdXRTdHJMbiAiQ29tcHV0aW5nIHdoaWNoIGZpbGVzIHRvIHpp
cCAuLi4iCiAgICAgICAgICB2Rk5hbWVzIDwtIGdldEZOYW1lc1RvWmlwIFsiLyJdCiAgICAgICAg
ICBwdXRTdHJMbiAiKioqKioqKioqKioqKioqKioqKiBSRVNVTFRTIgogICAgICAgICAgcHJpbnRW
ZWMgdkZOYW1lcwogICAgICAgICAgcmV0dXJuICgpCgpwcmludFZlYyA6OiBbU3RyaW5nXSAtPiBJ
TygpCnByaW50VmVjIFtdID0gcmV0dXJuICgpCnByaW50VmVjIChhOmFzKSA9IGRvIHB1dFN0ckxu
IGEKICAgICAgICAgICAgICAgICAgICAgcHJpbnRWZWMgYXMKCgo=

--------------Boundary-00=_VGNIN4WZRPT1XCD68RP6
Content-Type: text/x-c++;
  charset="iso-8859-1";
  name="cGetFNamesBckp.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="cGetFNamesBckp.c"

Ly8gY0dldEZOYW1lc0Jja3AuYwoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlICJHZXRGTmFt
ZXNCY2twX3N0dWIuaCIKCmV4dGVybiB2b2lkIF9fc3RnaW5pdF9HZXRGTmFtZXNCY2twKHZvaWQp
OwoKaW50IG1haW4oIGludCBhcmdjLCBjaGFyKiogYXJndikKewogIGNoYXIqIHZzQmFzZURpciA9
IE5VTEw7CiAgY2hhcioqIHZzQmFzZURpcnMgPSBOVUxMOwogIGNoYXIqKiB2c05hbWVzVG9aaXAg
PSBOVUxMOwogIGNoYXIqKiBpdCA9IE5VTEw7CiAgCiAgZnByaW50Ziggc3RkZXJyLCAiY291Y291
MFxuIiApOwogIHN0YXJ0dXBIYXNrZWxsKGFyZ2MsIGFyZ3YsIF9fc3RnaW5pdF9HZXRGTmFtZXNC
Y2twKTsKICAKICAvKiBJIGRpZCB1Z2x5IGV4cGxpY2l0IG1hbGxvY3MgaGVyZSBiZWNhdXNlIEkg
d2FzIGFmZnJhaWQKICAgICB0byBnaXZlIG1lbW9yeSBvbiB0aGUgQyBzdGFjayB0byBIYXNrZWxs
LiBJIHRob3VnaHQgdGhlCiAgICAgcHJvYmxlbSB3YXMgY29taW5nIGZyb20gZGFuZ2xpbmcgcG9p
bnRlcnMgc29tZXdoZXJlICovCiAgdnNCYXNlRGlycyA9IChjaGFyKiopIG1hbGxvYyhzaXplb2Yo
Y2hhciopKTsKICB2c0Jhc2VEaXIgPSAoIGNoYXIqICkgbWFsbG9jKCBzdHJsZW4oIi8iKSArIDEg
KTsKICBzdHJjcHkoIHZzQmFzZURpciwgIi8iICk7CiAgdnNCYXNlRGlyc1swXSA9IHZzQmFzZURp
cjsgCiAgCiAgZnByaW50Ziggc3RkZXJyLCAiY291Y291MVxuIiApOwogIHZzTmFtZXNUb1ppcCA9
IGdldEZOYW1lc1RvWmlwQygxLCB2c0Jhc2VEaXJzKTsKICBmcHJpbnRmKCBzdGRlcnIsICJjb3Vj
b3UyXG4iICk7CiAgZm9yKCBpdCA9IHZzTmFtZXNUb1ppcDsgc3RyY21wKCppdCwgIi8vIikgIT0g
MDsgaXQrKyApCiAgICBwcmludGYoIiVzXG4iLCAqaXQpOwogIGZwcmludGYoIHN0ZGVyciwgImNv
dWNvdTNcbiIgKTsKICBzaHV0ZG93bkhhc2tlbGwoKTsKICBmcHJpbnRmKCBzdGRlcnIsICJjb3Vj
b3U0XG4iICk7CiAgcmV0dXJuIDA7Cn0K

--------------Boundary-00=_VGNIN4WZRPT1XCD68RP6--