Re: Using Vine in 3-way interactions (was Re: Question on redirectors/whenMoreResolved in the 3-way case, in the middle vat)

"Mark S. Miller" <[email protected]> Sun, 1 Mar 2015 13:56:17 -0800
Newsgroups gmane.comp.lang.e.general
Message-ID <CABHxS9gPLwxyOXGLciZENBVuWHQs5F7Q+xwJ4TqRAheCpBa44w@mail.gmail.com>
--===============0436489619222666480==
Content-Type: multipart/alternative; boundary=001a1134c7bccc2aed0510412b1e

--001a1134c7bccc2aed0510412b1e
Content-Type: text/plain; charset=UTF-8

No, the 2-vat interactions never use, or engage in any way with, vines,
promise3Desc or far3Desc.


On Sun, Mar 1, 2015 at 9:37 AM, Robert Withers <[email protected]>
wrote:

> I have a question about elib. Do you use promise3Desc and far3Desc for
> 2-vat interactions such that a vine is always in play in any interaction?
>
> - Robert
>
>
> Rob Withers <[email protected]> wrote:
>
> Mark, your instincts were right on, it seems.  I have an issue with my use
> of the Vine and on reflection it makes perfect sense. I am bending the send
> from Carol to Alice over to Bob, so as it is a 3-way interaction, I need a
> Vine.  In analyzing ELib code, you have 9 references to the Vine's
> constructor, while I only have 7 (minus an extra unused constructor I
> have).  It is going to require some digging to unearth what I am missing,
> but the direction is clear.  The place it blows up is in my
> ProxyResolver.resolve() method, as the WeakReference has lost the ref.
> However, this is not where the reference is maintained.  I suspect it may
> be a lack of an IdentityManager.
>
> I republished my code to: https://github.com/tooantuh/pauwau.  The tests
> pass, though there is an issue with the RefTests and
> TestPauwau2VatException, as well as this issue affecting
> TestPauwau3VatFollowOnSend.  Additionally, the presentation tests need to
> be run one at a time as stopping and starting the Introducers can step on
> each other.
>
> thank you,
> Robert
>
> On 2/22/2015 8:02 PM, Mark S. Miller wrote:
>
> Have you looked at the Vine? Search for "Vine" at
> http://erights.org/elib/distrib/captp/index.html
> and in the source code of https://code.google.com/p/caja-captp/
>
>  I don't quite understand your question, so I'm not sure if this is even
> relevant to the answer. Is it?
>
>
>
> On Sun, Feb 22, 2015 at 5:51 PM, Rob Withers <[email protected]>
> wrote:
>
>>  I found some more info: it looks as if the Ref in Alice's ProxyResolver
>> is being GCed, before resolution from Bob.  This is specific to my
>> machinery, but knowing how Elib maintains a reference to the Ref, in this
>> case, may help make mine better. How does Elib handle this?
>>
>> Thank you,
>> - Robert
>>
>>
>> On 2/22/2015 6:19 PM, Rob Withers wrote:
>>
>> I am stuck, both conceptually, as well as understanding code I wrote a
>> long while ago.  I was hoping to gain a little insight from the list of the
>> insides of resolution redirection in the 3-way case.  The recent change I
>> have made results from my thinking I finally understand the ordering that
>> MirandaMethods ensure.  I made changes such that a whenMoreResolved
>> directly follows the message that generates is by adding to the front of
>> the msg queue.
>>
>> In the 3-way case, Carol is sending a message to Alice, passing Bob.
>> Alice receives the message and executes, which sends a message to Bob, then
>> returns the result to Carol.  In Alice's vat, the DelayedRedirector is
>> resolved to the RemotePromise of the call to Bob, the return of Alice's
>> computation and I think it sends whenMoreResolved to the proxy of the new
>> promise resolver of the send to Bob.  What little tracing I have I am
>> posting below, as well as the DelayedRedirector value() and the
>> ProxyResolver resolve() code, at the bottom.  However, this is my question,
>> what should the redirector do in Alice's Vat to propagate the resolution
>> from Bob, back to Carol?
>>
>> Thank you,
>> - Robert
>>
>>
>> // There are 3 messages sent to Bob, from Alice:
>> //     1) getTheAnswer, which returns 42,
>> //     2) *hashCode, again 42* and
>> //     3) *whenMoreResolved*, to forward to the redirector back in Alice.
>>
>> 0 [main] INFO cc.ganymede.pauwau.presentation.AbstractPauwauTest  - 3
>> Introducers starting
>> 549 [main] INFO cc.ganymede.pauwau.presentation.AbstractPauwauTest  - 3
>> Introducers on the air
>> 4553 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: DeliverMessage(receiverId: 0 answerId: -1 resolverId: -1
>> action: lookupSwiss args:
>> [497273074681788564315291637588644948944089734358])
>> 4952 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: DeliverMessage(receiverId: 0 answerId: -1 resolverId:
>> null action: lookupSwiss args:
>> [497273074681788564315291637588644948944089734358])
>> 4958 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: DeliverOnlyMessage(receiverId: 1 action: value args:
>> [NearRefImpl(hash: 109537538, receiver: TestObject)])
>> 4998 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: DeliverOnlyMessage(receiverId: 1 action: value args:
>> [FarRefImpl(hash: 68783569)])
>> 5353 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: DeliverMessage(receiverId: 0 answerId: -1 resolverId: -1
>> action: lookupSwiss args:
>> [-686254831702855955980329529540587585277617841038])
>> 5593 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: DeliverMessage(receiverId: 0 answerId: -1 resolverId:
>> null action: lookupSwiss args:
>> [-686254831702855955980329529540587585277617841038])
>> 5593 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: DeliverOnlyMessage(receiverId: 1 action: value args:
>> [NearRefImpl(hash: 1530099003, receiver: TestObject)])
>> 6201 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: DeliverMessage(receiverId: -1 answerId: -2 resolverId: -2
>> action: redirectForTheAnswer args: [RemotePromiseRefImpl(hash: 1034568234)])
>> 6203 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: DeliverMessage(receiverId: 0 answerId: -2 resolverId: -2
>> action: provideFor args:
>> [-568687285196004884954480990488973591228663758441,
>> RemotePromiseRefImpl(hash: 1034568234),
>> -676914875674370369045480105305401075435688776666])
>> 6239 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: DeliverMessage(receiverId: -2 answerId: -3 resolverId: -3
>> action: hashCode args: [])
>> 6255 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: DeliverMessage(receiverId: 0 answerId: -2 resolverId:
>> null action: provideFor args:
>> [-568687285196004884954480990488973591228663758441, NearRefImpl(hash:
>> 1530099003, receiver: TestObject),
>> -676914875674370369045480105305401075435688776666])
>> 6259 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: DeliverOnlyMessage(receiverId: 2 action: value args:
>> [NearRefImpl(hash: 1323165787, receiver:
>> cc.ganymede.pauwau.presentation.lib.vat.Vine@4842def1)])
>> 6403 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: DeliverMessage(receiverId: 0 answerId: -1 resolverId: -1
>> action: acceptFrom args:
>> [HouseAtreides:10003/-687934017861573292334955567350102524989066643525,
>> -676914875674370369045480105305401075435688776666,
>> cc.ganymede.pauwau.presentation.lib.vat.Vine@6a8400ff])
>> 6410 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: DeliverMessage(receiverId: -1 answerId: -2 resolverId:
>> null action: redirectForTheAnswer args: [RemotePromiseRefImpl(hash:
>> 598908224)])
>> 6411 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: DeliverMessage(receiverId: -2 answerId: -3 resolverId:
>> null action: hashCode args: [])
>> 6411 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: DeliverMessage(receiverId: -1 answerId: -2 resolverId: -2
>> action: getTheAnswer args: [])
>> 6412 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: DeliverMessage(receiverId: -2 answerId: -3 resolverId: -3
>> action: hashCode args: [])
>> 6412 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: DeliverOnlyMessage(receiverId: -2 action: whenMoreResolved
>> args: [RedirectorProxy: FarRefImpl(hash: 177595052)])
>> 6766 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: DeliverMessage(receiverId: 0 answerId: -1 resolverId:
>> null action: acceptFrom args:
>> [HouseAtreides:10003/-687934017861573292334955567350102524989066643525,
>> -676914875674370369045480105305401075435688776666, FarRefImpl(hash:
>> 690984748)])
>> 6767 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: DeliverMessage(receiverId: -1 answerId: -2 resolverId:
>> null action: getTheAnswer args: [])
>> 6767 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: DeliverMessage(receiverId: -2 answerId: -3 resolverId:
>> null action: hashCode args: [])
>> 6767 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: DeliverOnlyMessage(receiverId: -2 action:
>> whenMoreResolved args: [NearRefImpl(hash: 363771261, receiver:
>> RedirectorProxy: FarRefImpl(hash: 196981675))])
>> 6768 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: DeliverOnlyMessage(receiverId: 2 action: value args:
>> [NearRefImpl(hash: 1530099003, receiver: TestObject)])
>> 6769 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: DeliverOnlyMessage(receiverId: 3 action: value args:
>> [NearRefImpl(hash: 790206055, receiver: 42)])
>> *6770 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal
>> - sending message: DeliverOnlyMessage(receiverId: 4 action: value args:
>> [NearRefImpl(hash: 878991039, receiver: 42)])*
>> *6771 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal
>> - sending message: DeliverOnlyMessage(receiverId: 5 action: value args:
>> [NearRefImpl(hash: 790206055, receiver: 42)])*
>> 6805 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: DeliverOnlyMessage(receiverId: 2 action: value args:
>> [FarRefImpl(hash: 1332394016)])
>> 6805 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: DeliverOnlyMessage(receiverId: 3 action: value args:
>> [42])
>> *6805 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: DeliverOnlyMessage(receiverId: 4 action: value args:
>> [42])*
>> *6805 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: DeliverOnlyMessage(receiverId: 5 action: value args:
>> [42])*
>> 6806 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: DeliverOnlyMessage(receiverId: 3 action: value args: [42])
>> 19932 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: GCAnswerMessage(answerId: -1)
>> 19934 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: GCAnswerMessage(answerId: -2)
>> 19934 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: GCAnswerMessage(answerId: -3)
>> 19984 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal
>> - receiving message: GCAnswerMessage(answerId: -1)
>> 19984 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal
>> - receiving message: GCAnswerMessage(answerId: -2)
>> 19985 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal
>> - receiving message: GCAnswerMessage(answerId: -3)
>> 29679 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: GCAnswerMessage(answerId: -1)
>> 29680 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: DeliverOnlyMessage(receiverId: 1 action: value args:
>> [FarRefImpl(hash: 734824022)])
>> 29680 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: DeliverOnlyMessage(receiverId: 2 action: value args:
>> [FarRefImpl(hash: 1223086084)])
>> 29680 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: DeliverOnlyMessage(receiverId: 3 action: value args:
>> [42])
>> 29681 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: GCAnswerMessage(answerId: -1)
>> 29681 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: GCAnswerMessage(answerId: -2)
>> 29682 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> sending message: GCAnswerMessage(answerId: -2)
>> 29722 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal
>> - receiving message: GCAnswerMessage(answerId: -1)
>> 29722 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal
>> - receiving message: GCAnswerMessage(answerId: -2)
>> 29726 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: GCAnswerMessage(answerId: -1)
>> 29726 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
>> receiving message: GCAnswerMessage(answerId: -2)
>>
>>
>>
>> *// DelayedRedirector code:*
>>     public void value(Object obj) throws NotResolvedException {
>>         if(resolver == null)
>>             return;
>>
>>         if(resolver.isFresh()) {
>>             resolver.resolve(obj);
>>             resolver = null;
>>             return;
>>         }
>>
>>         if(RefUtil.isLocal(obj)) {
>>             resolver.resolve(obj);
>>             resolver = null;
>>             return;
>>         }
>>
>>         Ref ref = (Ref)RefUtil.wrap(obj, resolver.handler.getVat());
>>         boolean isLocalToResolverScope = false;
>>         try {
>>             isLocalToResolverScope =
>> RefUtil.isLocalToScope(resolver.handler.scope, ref);
>>             if(isLocalToResolverScope) {
>>                 resolver.resolve(obj);
>>                 resolver = null;
>>                 return;
>>             }
>>         } catch (Exception e) {
>>             reactToLostClient(e);
>>         }
>>
>>         Pair<PromiseRefImpl, Resolver> pair =
>> RefUtil.promise(ref.getVat());
>>         Redirector redirector = new Redirector((ProxyResolver)
>> pair.second());
>>         resolver.getProxy().whenResolved(redirector);
>>         resolver.resolve(pair.first());
>>         resolver = null;
>>     }
>>
>>
>> *// ProxyResolver code:*
>>     public void resolve(final Object result) throws NotResolvedException {
>>         handler.scope.getVat().sendRunnable(new Runnable() {
>>             public void run() {
>>                 if(ref == null)
>>                     return;
>>                 if(ref.get() == null)
>>                     return;
>>                 if(Exception.class.isAssignableFrom(result.getClass())) {
>>                 }
>>                 Ref newRef = RefUtil.wrap(result, handler.scope.getVat());
>>                 try {
>>                     if (newRef == null)
>>                             ref.get().getRefImpl().becomeContext(null);
>>                     else
>>
>> ref.get().getRefImpl().becomeContext(newRef.getRefImpl());
>>                     if(RefUtil.isResolved(newRef.getRefImpl())) {
>>                         handler = null;
>>                         ref = null;
>>                     }
>>                 } catch (NotResolvedException e) {
>>                     // TODO Auto-generated catch block
>>                     e.printStackTrace();
>>                 }
>>             }});
>>     }
>>
>>
>>
>> _______________________________________________
>> e-lang mailing list
>> [email protected]
>> http://www.eros-os.org/mailman/listinfo/e-lang
>>
>>
>
>
>  --
>     Cheers,
>     --MarkM
>
>
> _______________________________________________
> e-lang mailing [email protected]://www.eros-os.org/mailman/listinfo/e-lang
>
>
>
> _______________________________________________
> e-lang mailing list
> [email protected]
> http://www.eros-os.org/mailman/listinfo/e-lang
>
>


-- 
    Cheers,
    --MarkM

--001a1134c7bccc2aed0510412b1e
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">No, the 2-vat interactions never use, or engage in any way=
 with, vines, promise3Desc or far3Desc.<div><br></div></div><div class=3D"g=
mail_extra"><br><div class=3D"gmail_quote">On Sun, Mar 1, 2015 at 9:37 AM, =
Robert Withers <span dir=3D"ltr">&lt;<a href=3D"mailto:robert.w.withers@gma=
il.com" target=3D"_blank">[email protected]</a>&gt;</span> wrote:<=
br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left=
:1px #ccc solid;padding-left:1ex">I have a question about elib. Do you use =
promise3Desc and far3Desc for 2-vat interactions such that a vine is always=
 in play in any interaction?<br><br>- Robert<div class=3D"HOEnZb"><div clas=
s=3D"h5"><br><br>Rob Withers &lt;<a href=3D"mailto:[email protected]=
om" target=3D"_blank">[email protected]</a>&gt; wrote:<br><br>
    Mark, your instincts were right on, it seems.=C2=A0 I have an issue wit=
h
    my use of the Vine and on reflection it makes perfect sense. I am
    bending the send from Carol to Alice over to Bob, so as it is a
    3-way interaction, I need a Vine.=C2=A0 In analyzing ELib code, you hav=
e
    9 references to the Vine&#39;s constructor, while I only have 7 (minus
    an extra unused constructor I have).=C2=A0 It is going to require some
    digging to unearth what I am missing, but the direction is clear.=C2=A0
    The place it blows up is in my ProxyResolver.resolve() method, as
    the WeakReference has lost the ref.=C2=A0 However, this is not where th=
e
    reference is maintained.=C2=A0 I suspect it may be a lack of an
    IdentityManager.<br>
    <br>
    I republished my code to: <a href=3D"https://github.com/tooantuh/pauwau=
" target=3D"_blank">https://github.com/tooantuh/pauwau</a>.=C2=A0 The
    tests pass, though there is an issue with the RefTests and
    TestPauwau2VatException, as well as this issue affecting
    TestPauwau3VatFollowOnSend.=C2=A0 Additionally, the presentation tests
    need to be run one at a time as stopping and starting the
    Introducers can step on each other.<br>
    <br>
    thank you,<br>
    Robert<br>
    <br>
    <div>On 2/22/2015 8:02 PM, Mark S. Miller
      wrote:<br>
    </div>
    <blockquote type=3D"cite">
      <div dir=3D"ltr">Have you looked at the Vine? Search for &quot;Vine&q=
uot; at=C2=A0<a href=3D"http://erights.org/elib/distrib/captp/index.html" t=
arget=3D"_blank">http://erights.org/elib/distrib/captp/index.html</a>
        <div>and in the source code of=C2=A0<a href=3D"https://code.google.=
com/p/caja-captp/" target=3D"_blank">https://code.google.com/p/caja-captp/<=
/a></div>
        <div><br>
        </div>
        <div>I don&#39;t quite understand your question, so I&#39;m not sur=
e if
          this is even relevant to the answer. Is it?</div>
        <div><br>
        </div>
        <div><br>
        </div>
      </div>
      <div class=3D"gmail_extra"><br>
        <div class=3D"gmail_quote">On Sun, Feb 22, 2015 at 5:51 PM, Rob
          Withers <span dir=3D"ltr">&lt;<a href=3D"mailto:robert.w.withers@=
gmail.com" target=3D"_blank">[email protected]</a>&gt;</span>
          wrote:<br>
          <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;bord=
er-left:1px #ccc solid;padding-left:1ex">
            <div bgcolor=3D"#FFFFFF" text=3D"#000000"> I found some more
              info: it looks as if the Ref in Alice&#39;s ProxyResolver is
              being GCed, before resolution from Bob.=C2=A0 This is specifi=
c
              to my machinery, but knowing how Elib maintains a
              reference to the Ref, in this case, may help make mine
              better. How does Elib handle this?<br>
              <br>
              Thank you,<br>
              - Robert
              <div>
                <div><br>
                  <br>
                  <div>On 2/22/2015 6:19 PM, Rob Withers wrote:<br>
                  </div>
                  <blockquote type=3D"cite"> I am stuck, both
                    conceptually, as well as understanding code I wrote
                    a long while ago.=C2=A0 I was hoping to gain a little
                    insight from the list of the insides of resolution
                    redirection in the 3-way case.=C2=A0 The recent change =
I
                    have made results from my thinking I finally
                    understand the ordering that MirandaMethods ensure.=C2=
=A0
                    I made changes such that a whenMoreResolved directly
                    follows the message that generates is by adding to
                    the front of the msg queue.=C2=A0 <br>
                    <br>
                    In the 3-way case, Carol is sending a message to
                    Alice, passing Bob.=C2=A0 Alice receives the message an=
d
                    executes, which sends a message to Bob, then returns
                    the result to Carol.=C2=A0 In Alice&#39;s vat, the
                    DelayedRedirector is resolved to the RemotePromise
                    of the call to Bob, the return of Alice&#39;s
                    computation and I think it sends whenMoreResolved to
                    the proxy of the new promise resolver of the send to
                    Bob.=C2=A0 What little tracing I have I am posting belo=
w,
                    as well as the DelayedRedirector value() and the
                    ProxyResolver resolve() code, at the bottom.=C2=A0
                    However, this is my question, what should the
                    redirector do in Alice&#39;s Vat to propagate the
                    resolution from Bob, back to Carol?<br>
                    <br>
                    Thank you,<br>
                    - Robert<br>
                    <br>
                    <br>
                    // There are 3 messages sent to Bob, from Alice:<br>
                    // =C2=A0=C2=A0=C2=A0 1) getTheAnswer, which returns 42=
, <br>
                    // =C2=A0=C2=A0=C2=A0 2) <b>hashCode, again 42</b> and =
<br>
                    //=C2=A0=C2=A0 =C2=A0 3) <b>whenMoreResolved</b>, to fo=
rward to
                    the redirector back in Alice.<br>
                    <br>
                    0 [main] INFO
                    cc.ganymede.pauwau.presentation.AbstractPauwauTest=C2=
=A0
                    - 3 Introducers starting<br>
                    549 [main] INFO
                    cc.ganymede.pauwau.presentation.AbstractPauwauTest=C2=
=A0
                    - 3 Introducers on the air<br>
                    4553 [main] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: DeliverMessage(receiverId: 0
                    answerId: -1 resolverId: -1 action: lookupSwiss
                    args:
                    [497273074681788564315291637588644948944089734358])<br>
                    4952 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: DeliverMessage(receiverId: 0
                    answerId: -1 resolverId: null action: lookupSwiss
                    args:
                    [497273074681788564315291637588644948944089734358])<br>
                    4958 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: DeliverOnlyMessage(receiverId: 1
                    action: value args: [NearRefImpl(hash: 109537538,
                    receiver: TestObject)])<br>
                    4998 [third-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: DeliverOnlyMessage(receiverId: 1
                    action: value args: [FarRefImpl(hash: 68783569)])<br>
                    5353 [main] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: DeliverMessage(receiverId: 0
                    answerId: -1 resolverId: -1 action: lookupSwiss
                    args:
                    [-686254831702855955980329529540587585277617841038])<br=
>
                    5593 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: DeliverMessage(receiverId: 0
                    answerId: -1 resolverId: null action: lookupSwiss
                    args:
                    [-686254831702855955980329529540587585277617841038])<br=
>
                    5593 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: DeliverOnlyMessage(receiverId: 1
                    action: value args: [NearRefImpl(hash: 1530099003,
                    receiver: TestObject)])<br>
                    6201 [main] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: DeliverMessage(receiverId: -1
                    answerId: -2 resolverId: -2 action:
                    redirectForTheAnswer args:
                    [RemotePromiseRefImpl(hash: 1034568234)])<br>
                    6203 [main] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: DeliverMessage(receiverId: 0
                    answerId: -2 resolverId: -2 action: provideFor args:
                    [-568687285196004884954480990488973591228663758441,
                    RemotePromiseRefImpl(hash: 1034568234),
                    -676914875674370369045480105305401075435688776666])<br>
                    6239 [main] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: DeliverMessage(receiverId: -2
                    answerId: -3 resolverId: -3 action: hashCode args:
                    [])<br>
                    6255 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: DeliverMessage(receiverId: 0
                    answerId: -2 resolverId: null action: provideFor
                    args:
                    [-568687285196004884954480990488973591228663758441,
                    NearRefImpl(hash: 1530099003, receiver: TestObject),
                    -676914875674370369045480105305401075435688776666])<br>
                    6259 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: DeliverOnlyMessage(receiverId: 2
                    action: value args: [NearRefImpl(hash: 1323165787,
                    receiver:
                    cc.ganymede.pauwau.presentation.lib.vat.Vine@4842def1)]=
)<br>
                    6403 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: DeliverMessage(receiverId: 0
                    answerId: -1 resolverId: -1 action: acceptFrom args:
                    [HouseAtreides:10003/-687934017861573292334955567350102=
524989066643525,

                    -676914875674370369045480105305401075435688776666,
                    cc.ganymede.pauwau.presentation.lib.vat.Vine@6a8400ff])=
<br>
                    6410 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: DeliverMessage(receiverId: -1
                    answerId: -2 resolverId: null action:
                    redirectForTheAnswer args:
                    [RemotePromiseRefImpl(hash: 598908224)])<br>
                    6411 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: DeliverMessage(receiverId: -2
                    answerId: -3 resolverId: null action: hashCode args:
                    [])<br>
                    6411 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: DeliverMessage(receiverId: -1
                    answerId: -2 resolverId: -2 action: getTheAnswer
                    args: [])<br>
                    6412 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: DeliverMessage(receiverId: -2
                    answerId: -3 resolverId: -3 action: hashCode args:
                    [])<br>
                    6412 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: DeliverOnlyMessage(receiverId: -2
                    action: whenMoreResolved args: [RedirectorProxy:
                    FarRefImpl(hash: 177595052)])<br>
                    6766 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: DeliverMessage(receiverId: 0
                    answerId: -1 resolverId: null action: acceptFrom
                    args:
                    [HouseAtreides:10003/-687934017861573292334955567350102=
524989066643525,
                    -676914875674370369045480105305401075435688776666,
                    FarRefImpl(hash: 690984748)])<br>
                    6767 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: DeliverMessage(receiverId: -1
                    answerId: -2 resolverId: null action: getTheAnswer
                    args: [])<br>
                    6767 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: DeliverMessage(receiverId: -2
                    answerId: -3 resolverId: null action: hashCode args:
                    [])<br>
                    6767 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: DeliverOnlyMessage(receiverId: -2
                    action: whenMoreResolved args: [NearRefImpl(hash:
                    363771261, receiver: RedirectorProxy:
                    FarRefImpl(hash: 196981675))])<br>
                    6768 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: DeliverOnlyMessage(receiverId: 2
                    action: value args: [NearRefImpl(hash: 1530099003,
                    receiver: TestObject)])<br>
                    6769 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: DeliverOnlyMessage(receiverId: 3
                    action: value args: [NearRefImpl(hash: 790206055,
                    receiver: 42)])<br>
                    <b>6770 [second-vat] DEBUG
                      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 =
-
                      sending message: DeliverOnlyMessage(receiverId: 4
                      action: value args: [NearRefImpl(hash: 878991039,
                      receiver: 42)])</b><b><br>
                    </b><b>6771 [second-vat] DEBUG
                      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 =
-
                      sending message: DeliverOnlyMessage(receiverId: 5
                      action: value args: [NearRefImpl(hash: 790206055,
                      receiver: 42)])</b><b><br>
                    </b>6805 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: DeliverOnlyMessage(receiverId: 2
                    action: value args: [FarRefImpl(hash: 1332394016)])<br>
                    6805 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: DeliverOnlyMessage(receiverId: 3
                    action: value args: [42])<br>
                    <b>6805 [first-vat] DEBUG
                      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 =
-
                      receiving message: DeliverOnlyMessage(receiverId:
                      4 action: value args: [42])</b><b><br>
                    </b><b>6805 [first-vat] DEBUG
                      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 =
-
                      receiving message: DeliverOnlyMessage(receiverId:
                      5 action: value args: [42])</b><b><br>
                    </b>6806 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: DeliverOnlyMessage(receiverId: 3
                    action: value args: [42])<br>
                    19932 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: GCAnswerMessage(answerId: -1)<br>
                    19934 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: GCAnswerMessage(answerId: -2)<br>
                    19934 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: GCAnswerMessage(answerId: -3)<br>
                    19984 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: GCAnswerMessage(answerId: -1)<br>
                    19984 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: GCAnswerMessage(answerId: -2)<br>
                    19985 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: GCAnswerMessage(answerId: -3)<br>
                    29679 [third-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: GCAnswerMessage(answerId: -1)<br>
                    29680 [third-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: DeliverOnlyMessage(receiverId: 1
                    action: value args: [FarRefImpl(hash: 734824022)])<br>
                    29680 [third-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: DeliverOnlyMessage(receiverId: 2
                    action: value args: [FarRefImpl(hash: 1223086084)])<br>
                    29680 [third-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: DeliverOnlyMessage(receiverId: 3
                    action: value args: [42])<br>
                    29681 [third-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: GCAnswerMessage(answerId: -1)<br>
                    29681 [third-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: GCAnswerMessage(answerId: -2)<br>
                    29682 [third-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    sending message: GCAnswerMessage(answerId: -2)<br>
                    29722 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: GCAnswerMessage(answerId: -1)<br>
                    29722 [second-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: GCAnswerMessage(answerId: -2)<br>
                    29726 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: GCAnswerMessage(answerId: -1)<br>
                    29726 [first-vat] DEBUG
                    cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 -
                    receiving message: GCAnswerMessage(answerId: -2)<br>
                    <br>
                    <br>
                    <br>
                    <b>// DelayedRedirector code:</b><br>
                    =C2=A0=C2=A0=C2=A0 public void value(Object obj) throws
                    NotResolvedException {<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 if(resolver =3D=
=3D null)<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 return;<br>
                    <br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 if(resolver.isFre=
sh()) {<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 resolver.resolve(obj);<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 resolver =3D null;<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 return;<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 }<br>
                    <br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 if(RefUtil.isLoca=
l(obj)) {<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 resolver.resolve(obj);<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 resolver =3D null;<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 return;<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 }<br>
                    <br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Ref ref =3D (Ref)=
RefUtil.wrap(obj,
                    resolver.handler.getVat());<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 boolean isLocalTo=
ResolverScope =3D false;<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 try {<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 isLocalToResolverScope =3D
                    RefUtil.isLocalToScope(resolver.handler.scope, ref);<br=
>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 if(isLocalToResolverScope) {<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 =C2=A0=C2=A0=C2=A0 resolver.resolve(obj);<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 =C2=A0=C2=A0=C2=A0 resolver =3D null;<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 =C2=A0=C2=A0=C2=A0 return;<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 }<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 } catch (Exceptio=
n e) {<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 reactToLostClient(e);<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 }<br>
                    <br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Pair&lt;PromiseRe=
fImpl, Resolver&gt; pair =3D
                    RefUtil.promise(ref.getVat());<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Redirector redire=
ctor =3D new
                    Redirector((ProxyResolver) pair.second());<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0
                    resolver.getProxy().whenResolved(redirector);<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver.resolve(=
pair.first());<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver =3D null=
;<br>
                    =C2=A0=C2=A0=C2=A0 }<br>
                    <br>
                    <br>
                    <b>// ProxyResolver code:</b><br>
                    =C2=A0=C2=A0=C2=A0 public void resolve(final Object res=
ult) throws
                    NotResolvedException {<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 handler.scope.get=
Vat().sendRunnable(new
                    Runnable() {<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 public void run() {<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 =C2=A0=C2=A0=C2=A0 if(ref =3D=3D null)<br>
                    =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 return;<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 =C2=A0=C2=A0=C2=A0 if(ref.get() =3D=3D null)<br>
                    =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 return;<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 =C2=A0=C2=A0=C2=A0
                    if(Exception.class.isAssignableFrom(result.getClass()))
                    {<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 =C2=A0=C2=A0=C2=A0 }<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 =C2=A0=C2=A0=C2=A0 Ref newRef =3D RefUtil.wrap(result,
                    handler.scope.getVat());<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 =C2=A0=C2=A0=C2=A0 try {<br>
                    =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 if (newRef =3D=3D null)<br>
                    =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=C2=A0=
=C2=A0
                    ref.get().getRefImpl().becomeContext(null);<br>
                    =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 else<br>
                    =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
                    ref.get().getRefImpl().becomeContext(newRef.getRefImpl(=
));<br>
                    =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
                    if(RefUtil.isResolved(newRef.getRefImpl())) {<br>
                    =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 handler =3D nu=
ll;<br>
                    =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 ref =3D null;<=
br>
                    =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 }<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 =C2=A0=C2=A0=C2=A0 } catch (NotResolvedException e) {<br>
                    =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 // TODO Auto-generated catch
                    block<br>
                    =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 e.printStackTrace();<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 =C2=A0=C2=A0=C2=A0 }<br>
                    =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 }});<br>
                    =C2=A0=C2=A0=C2=A0 }<br>
                    <br>
                  </blockquote>
                  <br>
                </div>
              </div>
            </div>
            <br>
            _______________________________________________<br>
            e-lang mailing list<br>
            <a href=3D"mailto:[email protected]" target=3D"_blank">e-=
[email protected]</a><br>
            <a href=3D"http://www.eros-os.org/mailman/listinfo/e-lang" targ=
et=3D"_blank">http://www.eros-os.org/mailman/listinfo/e-lang</a><br>
            <br>
          </blockquote>
        </div>
        <br>
        <br clear=3D"all">
        <div><br>
        </div>
        -- <br>
        <div>=C2=A0 =C2=A0 Cheers,<br>
          =C2=A0 =C2=A0 --MarkM</div>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      <pre>_______________________________________________
e-lang mailing list
<a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]=
os-os.org</a>
<a href=3D"http://www.eros-os.org/mailman/listinfo/e-lang" target=3D"_blank=
">http://www.eros-os.org/mailman/listinfo/e-lang</a>
</pre>
    </blockquote>
    <br>
  </div></div><br>_______________________________________________<br>
e-lang mailing list<br>
<a href=3D"mailto:[email protected]">[email protected]</a><br>
<a href=3D"http://www.eros-os.org/mailman/listinfo/e-lang" target=3D"_blank=
">http://www.eros-os.org/mailman/listinfo/e-lang</a><br>
<br></blockquote></div><br><br clear=3D"all"><div><br></div>-- <br><div cla=
ss=3D"gmail_signature">=C2=A0 =C2=A0 Cheers,<br>=C2=A0 =C2=A0 --MarkM</div>
</div>

--001a1134c7bccc2aed0510412b1e--

--===============0436489619222666480==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
e-lang mailing list
[email protected]
http://www.eros-os.org/mailman/listinfo/e-lang

--===============0436489619222666480==--