Hi
As you may (skinkie) or not (hi koos) know, i am developing a video
compositing engine on top of clutter and gstreamer.
Attached is a preview (work in progress) of a simple animation wrapper
in python, with an effect example. It wraps the depth, opacity and
position behaviours. It features a "wait_for_completion" handler
(allow or not an animation to be fired before completion) and offers
some default parameters (overridable) that lets try them out fast.
It's far from complete, and it lacks a plugin architecture (on our
roadmap) but i'm very curious about what you guys may think of such an
approach.
I'd be glad to know:
* what language you will/want to develop your glSMIL player(s) in ?
* what you think of this preliminary proposal (it's not that elegant
nor scalable, yet i implemented a bunch of effects quite easily with
such wrappers)
* the thing with SMIL is that it's not taking 3D effects into account
(AFAIK). How to keep both worlds in the same rendering and compositing
engine ?
* for the SMIL effects, there are a lot of cropping-based effects, i
don't know how well clutter would perform by re-clipping incrementally
a texture using a timeline...
On my side, i am very interested in SMIL support as well, yet not only
for playback but rather for "recording"/animation archival purposes.
Please let me know when/if you join forces !
Cheers
Florent
------=_Part_3275_4603839.1207243135931
Content-Type: text/x-python; name=effects.py
Content-Transfer-Encoding: base64
X-Attachment-Id: f_felkw74g0
Content-Disposition: attachment; filename=effects.py
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgppbXBvcnQgY2x1
dHRlcgoKY2xhc3MgQW5pbWF0ZWRFZmZlY3RUZW1wbGF0ZToKICAgICMgaW4gbXM6CiAgICBERUZB
VUxUX0RVUkFUSU9OID0gMzAwMAogICAgREVGQVVMVF9GUFMgPSAzMAoKICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBkdXJhdGlvbj1Ob25lLCBhbHBoYXR5cGU9Tm9uZSwgbG9vcGVkPUZhbHNlKToKICAg
ICAgICBpZiBkdXJhdGlvbiBpcyBOb25lOiAKICAgICAgICAgICAgc2VsZi5kdXJhdGlvbiA9IHNl
bGYuREVGQVVMVF9EVVJBVElPTgogICAgICAgIGVsc2UgOiBzZWxmLmR1cmF0aW9uID0gZHVyYXRp
b24KCiAgICAgICAgc2VsZi50aW1lbGluZSA9IGNsdXR0ZXIuVGltZWxpbmUoZnBzPXNlbGYuREVG
QVVMVF9GUFMsIGR1cmF0aW9uPXNlbGYuZHVyYXRpb24pCgogICAgICAgIGlmIGxvb3BlZCAhPSBG
YWxzZTogc2VsZi50aW1lbGluZS5zZXRfbG9vcChUcnVlKQoKICAgICAgICBpZiBhbHBoYXR5cGUg
aXMgTm9uZTogc2VsZi5hbHBoYSA9IGNsdXR0ZXIuQWxwaGEoc2VsZi50aW1lbGluZSwgY2x1dHRl
ci5yYW1wX2luY19mdW5jKQogICAgICAgIGVsaWYgYWxwaGF0eXBlIGlzICJyYW1wX2luYyI6IHNl
bGYuYWxwaGEgPSBjbHV0dGVyLkFscGhhKHNlbGYudGltZWxpbmUsIGNsdXR0ZXIucmFtcF9pbmNf
ZnVuYykKICAgICAgICBlbGlmIGFscGhhdHlwZSBpcyAicmFtcF9kZWMiOiBzZWxmLmFscGhhID0g
Y2x1dHRlci5BbHBoYShzZWxmLnRpbWVsaW5lLCBjbHV0dGVyLnJhbXBfZGVjX2Z1bmMpCiAgICAg
ICAgZWxpZiBhbHBoYXR5cGUgaXMgInNpbmVfaW5jIjogc2VsZi5hbHBoYSA9IGNsdXR0ZXIuQWxw
aGEoc2VsZi50aW1lbGluZSwgY2x1dHRlci5zaW5lX2luY19mdW5jKQogICAgICAgIGVsaWYgYWxw
aGF0eXBlIGlzICJzaW5lX2RlYyI6IHNlbGYuYWxwaGEgPSBjbHV0dGVyLkFscGhhKHNlbGYudGlt
ZWxpbmUsIGNsdXR0ZXIuc2luZV9kZWNfZnVuYykKICAgICAgICAjIFRPRE86IGNoYW5nZXIgcGFy
IGRpY3QgZXQgY2x1dHRlci5BbHBoYS5zZXRfZnVuYyBldCAuc2V0X3RpbWVsaW5lLCBjb21wbMOp
dGVyIGwnaW1wbMOpbWVudGF0aW9uCgpjbGFzcyBFZmZlY3Q6CiAgICBkZWYgX19pbml0X18oc2Vs
ZiwgZHVyYXRpb24sIGFscGhhdHlwZSwgYWN0b3IsIGxvb3BlZCwgd2FpdF9mb3JfY29tcGxldGlv
bik6CiAgICAgICAgc2VsZi5hY3RvciA9IGFjdG9yCiAgICAgICAgc2VsZi5sb29wZWQgPSBsb29w
ZWQKICAgICAgICBzZWxmLmVmZmVjdF9pc19hcHBsaWVkID0gRmFsc2UKICAgICAgICBzZWxmLmF1
dG9yZW1vdmVfYWN0aXZlID0gRmFsc2UKICAgICAgICBzZWxmLndhaXRfZm9yX2NvbXBsZXRpb24g
PSB3YWl0X2Zvcl9jb21wbGV0aW9uCiAgICAgICAgc2VsZi50ZW1wbGF0ZSA9IEFuaW1hdGVkRWZm
ZWN0VGVtcGxhdGUoZHVyYXRpb249ZHVyYXRpb24sIGFscGhhdHlwZT1hbHBoYXR5cGUsIGxvb3Bl
ZD1sb29wZWQpCiAgICAgICAgI3NlbGYuZWZmZWN0ID0gY2x1dHRlci5CZWhhdmlvdXIoKQoKICAg
IGRlZiBvbl9jb21wbGV0aW9uX2NiKHNlbGYsIHRpbWVsaW5lKToKICAgICAgICBzZWxmLmVmZmVj
dC5yZW1vdmUoc2VsZi5hY3RvcikKICAgICAgICBzZWxmLnRlbXBsYXRlLnRpbWVsaW5lLmRpc2Nv
bm5lY3RfYnlfZnVuYyhzZWxmLm9uX2NvbXBsZXRpb25fY2IpCiAgICAgICAgc2VsZi5lZmZlY3Rf
aXNfYXBwbGllZCA9IEZhbHNlCiAgICAgICAgc2VsZi5hdXRvcmVtb3ZlX2FjdGl2ZSA9IEZhbHNl
CgogICAgZGVmIHJ1bihzZWxmLCBzdGFnZSwgYWN0b3IpOgogICAgICAgICMgRmlyc3QgY2FsbCwg
YWN0aXZhdGUgZWZmZWN0IGF1dG8tcmVtb3ZhbCBhZnRlciBjb21wbGV0aW9uCiAgICAgICAgaWYg
c2VsZi5sb29wZWQgaXMgRmFsc2UgYW5kIHNlbGYuYXV0b3JlbW92ZV9hY3RpdmUgaXMgRmFsc2U6
CiAgICAgICAgICAgIHNlbGYudGVtcGxhdGUudGltZWxpbmUuY29ubmVjdCgnY29tcGxldGVkJywg
c2VsZi5vbl9jb21wbGV0aW9uX2NiKQogICAgICAgICAgICBzZWxmLmF1dG9yZW1vdmVfYWN0aXZl
ID0gVHJ1ZQogICAgICAgICMgQXBwbHkgZWZmZWN0IGFuZCBydW4gaXQKICAgICAgICBpZiBzZWxm
LnRlbXBsYXRlLnRpbWVsaW5lLmlzX3BsYXlpbmcoKSBpcyBGYWxzZSBhbmQgc2VsZi5lZmZlY3Rf
aXNfYXBwbGllZCBpcyBGYWxzZToKICAgICAgICAgICAgc2VsZi5lZmZlY3QuYXBwbHkoc2VsZi5h
Y3RvcikKICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZS50aW1lbGluZS5zdGFydCgpCiAgICAgICAg
ICAgIHNlbGYuZWZmZWN0X2lzX2FwcGxpZWQgPSBUcnVlCiAgICAgICAgIyBDYXNlIHdoZXJlIGFu
IGVmZmVjdCBub3QgY29tcGxldGVkIGlzIGNhbGxlZCBhZ2FpbgogICAgICAgIGVsaWYgc2VsZi50
ZW1wbGF0ZS50aW1lbGluZS5pc19wbGF5aW5nKCkgaXMgVHJ1ZToKICAgICAgICAgICAgaWYgc2Vs
Zi53YWl0X2Zvcl9jb21wbGV0aW9uIGlzIFRydWU6CiAgICAgICAgICAgICAgICBwcmludCAiV2Fp
dCBmb3IgdGhlIGVmZmVjdCB0byBmaW5pc2ggYmVmb3JlIGlzc3VpbmcgYSBuZXcgY2FsbCIKICAg
ICAgICAgICAgZWxzZSA6IAogICAgICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZS50aW1lbGluZS5y
ZXdpbmQoKQogICAgICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZS50aW1lbGluZS5zdGFydCgpCgpj
bGFzcyBPcGFjaXR5RWZmZWN0KEVmZmVjdCk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgZHVyYXRp
b24sIGFscGhhdHlwZSwgYWN0b3IsIGxvb3BlZD1GYWxzZSwgd2FpdF9mb3JfY29tcGxldGlvbj1G
YWxzZSwgb3BhY2l0eV9zdGFydD0wLCBvcGFjaXR5X2VuZD0yNTUpOgogICAgICAgIEVmZmVjdC5f
X2luaXRfXyhzZWxmLCBkdXJhdGlvbj1kdXJhdGlvbiwgYWxwaGF0eXBlPWFscGhhdHlwZSwgYWN0
b3I9YWN0b3IsIGxvb3BlZD1sb29wZWQsIHdhaXRfZm9yX2NvbXBsZXRpb249d2FpdF9mb3JfY29t
cGxldGlvbikKICAgICAgICBzZWxmLm9wYWNpdHlfc3RhcnQgPSBvcGFjaXR5X3N0YXJ0CiAgICAg
ICAgc2VsZi5vcGFjaXR5X2VuZCA9IG9wYWNpdHlfZW5kCiAgICAgICAgc2VsZi5lZmZlY3QgPSBj
bHV0dGVyLkJlaGF2aW91ck9wYWNpdHkoYWxwaGEgPSBzZWxmLnRlbXBsYXRlLmFscGhhLCBvcGFj
aXR5X3N0YXJ0PXNlbGYub3BhY2l0eV9zdGFydCwgb3BhY2l0eV9lbmQ9c2VsZi5vcGFjaXR5X2Vu
ZCkKCmNsYXNzIFJvdGF0ZUVmZmVjdChFZmZlY3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGR1
cmF0aW9uLCBhbHBoYXR5cGUsIGFjdG9yLCBsb29wZWQ9RmFsc2UsIHdhaXRfZm9yX2NvbXBsZXRp
b249RmFsc2UsIGF4aXM9Tm9uZSwgYW5nbGVfc3RhcnQ9Tm9uZSwgYW5nbGVfZW5kPU5vbmUsIGRp
cmVjdGlvbj1jbHV0dGVyLlJPVEFURV9DVyk6CiAgICAgICAgRWZmZWN0Ll9faW5pdF9fKHNlbGYs
IGR1cmF0aW9uPWR1cmF0aW9uLCBhbHBoYXR5cGU9YWxwaGF0eXBlLCBhY3Rvcj1hY3RvciwgbG9v
cGVkPWxvb3BlZCwgd2FpdF9mb3JfY29tcGxldGlvbj13YWl0X2Zvcl9jb21wbGV0aW9uKSAKICAg
ICAgICBzZWxmLmFuZ2xlX3N0YXJ0ID0gYW5nbGVfc3RhcnQKICAgICAgICBzZWxmLmFuZ2xlX2Vu
ZCA9IGFuZ2xlX2VuZAogICAgICAgIHNlbGYueF9jZW50ZXIgPSBzZWxmLnlfY2VudGVyID0gc2Vs
Zi56X2NlbnRlciA9IDAKICAgICAgICBpZiBheGlzIGlzIE5vbmUgb3IgYXhpcyBpcyAieSI6CiAg
ICAgICAgICAgIHNlbGYuYXhpcyA9IGNsdXR0ZXIuWV9BWElTCiAgICAgICAgICAgIHNlbGYueF9j
ZW50ZXIgPSBzZWxmLmFjdG9yLmdldF93aWR0aCgpLzIKICAgICAgICBlbGlmIGF4aXMgaXMgIngi
OgogICAgICAgICAgICBzZWxmLmF4aXMgPSBjbHV0dGVyLlhfQVhJUwogICAgICAgICAgICBzZWxm
LnlfY2VudGVyID0gc2VsZi5hY3Rvci5nZXRfaGVpZ2h0KCkvMgogICAgICAgIGVsaWYgYXhpcyBp
cyAieiI6CiAgICAgICAgICAgIHNlbGYuYXhpcyA9IGNsdXR0ZXIuWl9BWElTCiAgICAgICAgICAg
IHNlbGYueF9jZW50ZXIgPSBzZWxmLmFjdG9yLmdldF93aWR0aCgpLzIKICAgICAgICAgICAgc2Vs
Zi55X2NlbnRlciA9IHNlbGYuYWN0b3IuZ2V0X2hlaWdodCgpLzIKICAgICAgICBzZWxmLmVmZmVj
dCA9IGNsdXR0ZXIuQmVoYXZpb3VyUm90YXRlKGFscGhhID0gc2VsZi50ZW1wbGF0ZS5hbHBoYSwg
YXhpcz1zZWxmLmF4aXMsIGRpcmVjdGlvbj1kaXJlY3Rpb24sIGFuZ2xlX3N0YXJ0PXNlbGYuYW5n
bGVfc3RhcnQsIGFuZ2xlX2VuZD1zZWxmLmFuZ2xlX2VuZCkKICAgICAgICBzZWxmLmVmZmVjdC5z
ZXRfY2VudGVyKHNlbGYueF9jZW50ZXIsIHNlbGYueV9jZW50ZXIsIHNlbGYuel9jZW50ZXIpCgpj
bGFzcyBEZXB0aEVmZmVjdChFZmZlY3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGR1cmF0aW9u
LCBhbHBoYXR5cGUsIGFjdG9yLCBsb29wZWQ9RmFsc2UsIHdhaXRfZm9yX2NvbXBsZXRpb249RmFs
c2UsIGRlcHRoX3N0YXJ0PTAsIGRlcHRoX2VuZD0xMDApOgogICAgICAgIEVmZmVjdC5fX2luaXRf
XyhzZWxmLCBkdXJhdGlvbj1kdXJhdGlvbiwgYWxwaGF0eXBlPWFscGhhdHlwZSwgYWN0b3I9YWN0
b3IsIGxvb3BlZD1sb29wZWQsIHdhaXRfZm9yX2NvbXBsZXRpb249d2FpdF9mb3JfY29tcGxldGlv
bikgCiAgICAgICAgc2VsZi5kZXB0aF9zdGFydCA9IGRlcHRoX3N0YXJ0CiAgICAgICAgc2VsZi5k
ZXB0aF9lbmQgPSBkZXB0aF9lbmQKICAgICAgICBzZWxmLmVmZmVjdCA9IGNsdXR0ZXIuQmVoYXZp
b3VyRGVwdGgoYWxwaGEgPSBzZWxmLnRlbXBsYXRlLmFscGhhLCBkZXB0aF9zdGFydCA9IHNlbGYu
ZGVwdGhfc3RhcnQsIGRlcHRoX2VuZCA9IHNlbGYuZGVwdGhfZW5kKQoKY2xhc3MgTW92ZUVmZmVj
dChFZmZlY3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGR1cmF0aW9uLCBhbHBoYXR5cGUsIGFj
dG9yLCBsb29wZWQ9RmFsc2UsIHdhaXRfZm9yX2NvbXBsZXRpb249RmFsc2UsIHhfbW92ZV9vZmZz
ZXQ9MCwgeV9tb3ZlX29mZnNldD0wKToKICAgICAgICBFZmZlY3QuX19pbml0X18oc2VsZiwgZHVy
YXRpb249ZHVyYXRpb24sIGFscGhhdHlwZT1hbHBoYXR5cGUsIGFjdG9yPWFjdG9yLCBsb29wZWQ9
bG9vcGVkLCB3YWl0X2Zvcl9jb21wbGV0aW9uPXdhaXRfZm9yX2NvbXBsZXRpb24pIAoKICAgICAg
ICBzZWxmLmtub3RzID0gKCBcCiAgICAgICAgICAgICAgICAoICAgc2VsZi5hY3Rvci5nZXRfeCgp
LCAgIHNlbGYuYWN0b3IuZ2V0X3koKSApLCAgIFwKICAgICAgICAgICAgICAgICggc2VsZi5hY3Rv
ci5nZXRfeCgpK3hfbW92ZV9vZmZzZXQsIHNlbGYuYWN0b3IuZ2V0X3koKSt5X21vdmVfb2Zmc2V0
ICksICAgXAogICAgICAgICkKICAgICAgICAKICAgICAgICBzZWxmLmVmZmVjdCA9IGNsdXR0ZXIu
QmVoYXZpb3VyUGF0aChhbHBoYT1zZWxmLnRlbXBsYXRlLmFscGhhLCBrbm90cz1zZWxmLmtub3Rz
KQo=
------=_Part_3275_4603839.1207243135931
Content-Type: text/x-python; name=moves.py
Content-Transfer-Encoding: base64
X-Attachment-Id: f_felladfj1
Content-Disposition: attachment; filename=moves.py
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCiMgQXV0aG9yOiBm
bG9yZW50LnRoaWVyeUB1YmljYXN0LmV1CiMgTEdQTCB0ZXJtcwoKaW1wb3J0IGNsdXR0ZXIKZnJv
bSBlZmZlY3RzIGltcG9ydCBNb3ZlRWZmZWN0CgpjbGFzcyBMaW5lYXJITW92ZU91dChNb3ZlRWZm
ZWN0KToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkdXJhdGlvbiwgYWN0b3IsIGxvb3BlZCk6CiAg
ICAgICAgTW92ZUVmZmVjdC5fX2luaXRfXyhzZWxmLCBkdXJhdGlvbj1kdXJhdGlvbiwgYWxwaGF0
eXBlPSJyYW1wX2luYyIsIGFjdG9yPWFjdG9yLCBsb29wZWQ9bG9vcGVkLCB4X21vdmVfb2Zmc2V0
PTQwMCkKCmNsYXNzIExpbmVhclZNb3ZlT3V0KE1vdmVFZmZlY3QpOgogICAgZGVmIF9faW5pdF9f
KHNlbGYsIGR1cmF0aW9uLCBhY3RvciwgbG9vcGVkKToKICAgICAgICBNb3ZlRWZmZWN0Ll9faW5p
dF9fKHNlbGYsIGR1cmF0aW9uPWR1cmF0aW9uLCBhbHBoYXR5cGU9InJhbXBfaW5jIiwgYWN0b3I9
YWN0b3IsIGxvb3BlZD1sb29wZWQsIHlfbW92ZV9vZmZzZXQ9NDAwKQoKY2xhc3MgTGluZWFySE1v
dmVJbihNb3ZlRWZmZWN0KToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkdXJhdGlvbiwgYWN0b3Is
IGxvb3BlZCwgbW92ZV9vZmZzZXQpOgogICAgICAgIGFjdG9yLnNldF9wb3NpdGlvbihhY3Rvci5n
ZXRfeCgpLW1vdmVfb2Zmc2V0LGFjdG9yLmdldF95KCkpCiAgICAgICAgTW92ZUVmZmVjdC5fX2lu
aXRfXyhzZWxmLCBkdXJhdGlvbj1kdXJhdGlvbiwgYWxwaGF0eXBlPSJyYW1wX2luYyIsIGFjdG9y
PWFjdG9yLCBsb29wZWQ9bG9vcGVkLCB4X21vdmVfb2Zmc2V0PW1vdmVfb2Zmc2V0KQoKY2xhc3Mg
U2luZVZNb3ZlSW4oTW92ZUVmZmVjdCk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgZHVyYXRpb24s
IGFjdG9yLCBsb29wZWQsIG1vdmVfb2Zmc2V0KToKICAgICAgICBhY3Rvci5zZXRfcG9zaXRpb24o
YWN0b3IuZ2V0X3goKSxhY3Rvci5nZXRfeSgpLW1vdmVfb2Zmc2V0KQogICAgICAgIE1vdmVFZmZl
Y3QuX19pbml0X18oc2VsZiwgZHVyYXRpb249ZHVyYXRpb24sIGFscGhhdHlwZT0ic2luZV9pbmMi
LCBhY3Rvcj1hY3RvciwgbG9vcGVkPWxvb3BlZCwgeV9tb3ZlX29mZnNldD1tb3ZlX29mZnNldCkK
CmNsYXNzIFNpbmVNb3ZlVG8oTW92ZUVmZmVjdCk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgZHVy
YXRpb24sIGFjdG9yLCBsb29wZWQsIHhfbW92ZV9vZmZzZXQsIHlfbW92ZV9vZmZzZXQpOgogICAg
ICAgIE1vdmVFZmZlY3QuX19pbml0X18oc2VsZiwgZHVyYXRpb249ZHVyYXRpb24sIGFscGhhdHlw
ZT0ic2luZV9pbmMiLCBhY3Rvcj1hY3RvciwgbG9vcGVkPWxvb3BlZCwgeF9tb3ZlX29mZnNldD14
X21vdmVfb2Zmc2V0LCB5X21vdmVfb2Zmc2V0PXlfbW92ZV9vZmZzZXQpCgppZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgogICAgc3RhZ2UgPSBjbHV0dGVyLlN0YWdlKCkKICAgIHN0YWdlLnNldF9j
b2xvcihjbHV0dGVyLkNvbG9yKDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4ZmYpKQogICAgc3RhZ2Uuc2V0
X3NpemUoNjQwLDQ4MCkKCiAgICB0ZXN0X2FjdG9yID0gY2x1dHRlci5sYWJlbF9uZXdfd2l0aF90
ZXh0KCJTYW5zIDIyIiwgIlRlc3QgYWN0b3IiKQogICAgdGVzdF9hY3Rvci5zZXRfcG9zaXRpb24o
MjAwLDIwMCkKICAgICN0ZXN0X21vdmUgPSBMaW5lYXJITW92ZU91dChkdXJhdGlvbj01MDAsIGFj
dG9yPXRlc3RfYWN0b3IsIGxvb3BlZD1GYWxzZSkKICAgIHRlc3RfbW92ZSA9IFNpbmVWTW92ZUlu
KGR1cmF0aW9uPTUwMCwgYWN0b3I9dGVzdF9hY3RvciwgbG9vcGVkPUZhbHNlLCBtb3ZlX29mZnNl
dD00MDApCgogICAgI3Rlc3RfbW92ZSA9IFNpbmVNb3ZlVG8oZHVyYXRpb249NTAwLCBhY3Rvcj10
ZXN0X2FjdG9yLCBsb29wZWQ9RmFsc2UsIHhfbW92ZV9vZmZzZXQ9MTAwLCB5X21vdmVfb2Zmc2V0
PTUwKQoKICAgIHN0YWdlLmNvbm5lY3QoJ2tleS1wcmVzcy1ldmVudCcsIHRlc3RfbW92ZS5ydW4p
CgogICAgc3RhZ2UuYWRkKHRlc3RfYWN0b3IpCiAgICBzdGFnZS5zaG93X2FsbCgpCiAgICBjbHV0
dGVyLm1haW4oKQoK
------=_Part_3275_4603839.1207243135931--
-- To unsubscribe send a mail to clutter+unsubscribe_at_o-hand.comReceived on Thu Apr 03 2008 - 13:18:55 EDT
This archive was generated by hypermail 2.2.0 : Thu Apr 03 2008 - 14:00:22 EDT