Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » Epsilon » [Eugenia] Question on how to define a typed relation?
[Eugenia] Question on how to define a typed relation? [message #11804] Wed, 11 February 2009 13:36 Go to next message
Michael Moser is currently offline Michael MoserFriend
Messages: 914
Registered: July 2009
Senior Member
I have a question re. the use of .emf files and Eugenia to create proper
GMF input files. I first will try to describe my very trivial example:

My diagram has processes and artifacts (think of it as
datasets/files/documents, etc.) and relations pointing from processes to
artifacts, called ArtifactRelation. These ArtifactRelations are "rich"
(i.e. they have additional attributes, like a name, later there will be
further fields, etc. and a (relationship-)type - an enumeration), so I
modeled them as an additional type that holds all these attributes
including the reference to the target-artifact. A Process contains a
collection (i.e. [0..n]) of such relations to Artifacts:
-------------
....
@gmf.node(label = "name", label.icon="true")
class Artifact {
id attr String name;
...
}
@gmf.node(label = "name", label.icon="true")
class Process {
id attr String name;
...
val ArtifactRelation[*] artifactRelations;
...
}
@gmf.link(target="artifact", label="name", target.decoration="arrow",
style="dash", width="2")
class ArtifactRelation {
attr String name;
...
attr ArtifactRelationType relationType = "0";
ref Artifact artifact;
}
enum ArtifactRelationType {
CREATES = 0;
READS = 1;
UPDATES = 2;
DELETES = 3;
}
....
-------------

Now my question: I would like to visualize such relations as connections
(dashed arrows) from the containing Process to the referenced Artifact.
How do I specify such a "transitive" relations in .emf files? The
problem I have here is, that not Process contains the reference to
Artifact, but only to the ArtifactRelationType and only the latter
contains the reference to the target-Artifact. How do I specify that
using these @gmf.link(...)-annotations in .emf files? Is that possible
at all?

This is different from the filesystem example shown at
http://epsilonlabs.wiki.sourceforge.net/EuGENia, where Shortcut-s
directly contains the target-File, and Sync-s which contains both, the
source and the target. In my case, source and target of a link are
spread over two different objects. How do I tell Eugenia to generate a
"connection" from that (and also a tool to generate such connections or
relations)? I guess this should be a pretty standard task, but I
couldn't yet figure out, how to do that.

Hope I could make myself clear...
Michael
Re: [Eugenia] Question on how to define a typed relation? [message #11840 is a reply to message #11804] Wed, 11 February 2009 13:46 Go to previous messageGo to next message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
Hi Michael,

You can use opposite references to get both the source and the target of
the link in your ArtifactRelation class without changing the semantics
of your metamodel. See the changed lines below (marked with ->).

-------------
....
@gmf.node(label = "name", label.icon="true")
class Artifact {
id attr String name;
...
}
@gmf.node(label = "name", label.icon="true")
class Process {
id attr String name;
...
-> val ArtifactRelation[*]#process artifactRelations;
...
}
->@gmf.link(target="artifact", source="process", label="name",
target.decoration="arrow", style="dash", width="2")
class ArtifactRelation {
attr String name;
...
attr ArtifactRelationType relationType = "0";
ref Artifact artifact;
-> ref Process#artifactRelations process;
}
enum ArtifactRelationType {
CREATES = 0;
READS = 1;
UPDATES = 2;
DELETES = 3;
}
....
-------------

Cheers,
Dimitris

Michael Moser wrote:
> I have a question re. the use of .emf files and Eugenia to create proper
> GMF input files. I first will try to describe my very trivial example:
>
> My diagram has processes and artifacts (think of it as
> datasets/files/documents, etc.) and relations pointing from processes to
> artifacts, called ArtifactRelation. These ArtifactRelations are "rich"
> (i.e. they have additional attributes, like a name, later there will be
> further fields, etc. and a (relationship-)type - an enumeration), so I
> modeled them as an additional type that holds all these attributes
> including the reference to the target-artifact. A Process contains a
> collection (i.e. [0..n]) of such relations to Artifacts:
> -------------
> ...
> @gmf.node(label = "name", label.icon="true")
> class Artifact {
> id attr String name;
> ...
> }
> @gmf.node(label = "name", label.icon="true")
> class Process {
> id attr String name;
> ...
> val ArtifactRelation[*] artifactRelations;
> ...
> }
> @gmf.link(target="artifact", label="name", target.decoration="arrow",
> style="dash", width="2")
> class ArtifactRelation {
> attr String name;
> ...
> attr ArtifactRelationType relationType = "0";
> ref Artifact artifact;
> }
> enum ArtifactRelationType {
> CREATES = 0;
> READS = 1;
> UPDATES = 2;
> DELETES = 3;
> }
> ...
> -------------
>
> Now my question: I would like to visualize such relations as connections
> (dashed arrows) from the containing Process to the referenced Artifact.
> How do I specify such a "transitive" relations in .emf files? The
> problem I have here is, that not Process contains the reference to
> Artifact, but only to the ArtifactRelationType and only the latter
> contains the reference to the target-Artifact. How do I specify that
> using these @gmf.link(...)-annotations in .emf files? Is that possible
> at all?
>
> This is different from the filesystem example shown at
> http://epsilonlabs.wiki.sourceforge.net/EuGENia, where Shortcut-s
> directly contains the target-File, and Sync-s which contains both, the
> source and the target. In my case, source and target of a link are
> spread over two different objects. How do I tell Eugenia to generate a
> "connection" from that (and also a tool to generate such connections or
> relations)? I guess this should be a pretty standard task, but I
> couldn't yet figure out, how to do that.
>
> Hope I could make myself clear...
> Michael
>
Re: [Eugenia] Question on how to define a typed relation? [message #11873 is a reply to message #11840] Wed, 11 February 2009 20:06 Go to previous messageGo to next message
Michael Moser is currently offline Michael MoserFriend
Messages: 914
Registered: July 2009
Senior Member
Dimitris Kolovos wrote:
> Hi Michael,
>
> You can use opposite references to get both the source and the target
> of the link in your ArtifactRelation class without changing the
> semantics of your metamodel. See the changed lines below (marked with
> ->).

Thanks - that helped. Have I overlooked that feature somewhere or has it
not been documented so far? I saw no description or example for this
....#... notation before.

However, even with that extension this paid only for half the rent:
Eugenia did not create the corresponding CreationTools for these
relations and it also did not create the required Figure Descriptors nor
Connections in the .gmfgraph file and consequently also no LinkMappings
for these connections in the gmfmap file. I.e. out of the box it created
me an editor, that allowed to create nodes only, but none of the
connections between them.

So, that leaves me with the question: would it have been supposed to
create those, too (i.e. ran I into some bug) or is it *not* meant to do
that? Or in other words, is Eugenia's goal to generate only a first
"draft" of the .gmf* files and the user is then supposed to continue
from there and refine these generated files or is the idea and goal
really, that one can eventually indeed express the *entire* graphical
editor in the .emf file?

I would assume the first option, because, if one spins that concept
further, you would have to provide essentially ALL features of GMF to be
expressible as @gmf...-annotations in the .emf. file.
I guess it can't really be the ultimate goal to duplicate all that
effort or is it? Although, I have to admit I would find it very
attractive to have such an extremely compact description not only of the
data stuctures but also the entire graphical editor to edit such
structures in a single, compact file...

Michael
Re: [Eugenia] Question on how to define a typed relation? [message #11902 is a reply to message #11873] Wed, 11 February 2009 20:41 Go to previous messageGo to next message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------030807010708040608090302
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi Michael,

Michael Moser wrote:
> Dimitris Kolovos wrote:
>> Hi Michael,
>>
>> You can use opposite references to get both the source and the target
>> of the link in your ArtifactRelation class without changing the
>> semantics of your metamodel. See the changed lines below (marked with
>> ->).
>
> Thanks - that helped. Have I overlooked that feature somewhere or has it
> not been documented so far? I saw no description or example for this
> ...#... notation before.
>

This is Emfatic syntax for denoting opposite references. You can find a
reference of the Emfatic syntax under the Eclipse Help (EMFT
Emfatic->Reference->Language Reference)

> However, even with that extension this paid only for half the rent:
> Eugenia did not create the corresponding CreationTools for these
> relations and it also did not create the required Figure Descriptors nor
> Connections in the .gmfgraph file and consequently also no LinkMappings
> for these connections in the gmfmap file. I.e. out of the box it created
> me an editor, that allowed to create nodes only, but none of the
> connections between them.
>
> So, that leaves me with the question: would it have been supposed to
> create those, too (i.e. ran I into some bug) or is it *not* meant to do
> that? Or in other words, is Eugenia's goal to generate only a first
> "draft" of the .gmf* files and the user is then supposed to continue
> from there and refine these generated files or is the idea and goal
> really, that one can eventually indeed express the *entire* graphical
> editor in the .emf file?
>
> I would assume the first option, because, if one spins that concept
> further, you would have to provide essentially ALL features of GMF to be
> expressible as @gmf...-annotations in the .emf. file.
> I guess it can't really be the ultimate goal to duplicate all that
> effort or is it? Although, I have to admit I would find it very
> attractive to have such an extremely compact description not only of the
> data stuctures but also the entire graphical editor to edit such
> structures in a single, compact file...

Of course the aim of Eugenia is not to provide support for all the
features that GMF provides - but we are doing our best to support a good
subset.

Regarding your example, with the following complete metamodel:

@namespace(uri="processlanguage", prefix="processlanguage")
package processlanguage;

@gmf.diagram
class Model {
val Artifact[*] artifacts;
val Process[*] processes;
val ArtifactRelation[*] relations;
}

@gmf.node(label = "name", label.icon="true")
class Artifact {
attr String name;
}

@gmf.node(label = "name", label.icon="true")
class Process {
attr String name;
val ArtifactRelation[*]#process artifactRelations;
}

@gmf.link(target="artifact", source="process", label="name",
target.decoration="arrow", style="dash", width="2")
class ArtifactRelation {
attr String name;
attr ArtifactRelationType relationType = "0";
ref Artifact artifact;
ref Process#artifactRelations process;
}

enum ArtifactRelationType {
CREATES = 0;
READS = 1;
UPDATES = 2;
DELETES = 3;
}

I get the editor in the attached screenshot.

The workaround that makes this possible is the val ArtifactRelation[*]
relations; in Model. I'll investigate if we can eliminate this
artificial bit by supporting phantom links (in addition to phantom nodes
which are already supported).

>
> Michael
>

Cheers,
Dimitris

--------------030807010708040608090302
Content-Type: image/png;
name="ProcessLanguage.png"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="ProcessLanguage.png"

iVBORw0KGgoAAAANSUhEUgAAAmUAAAEXCAIAAABj76QnAAAACXBIWXMAAA7D AAAOwwHHb6hk
AAAgAElEQVR42uydCUAUR9bHa1DQIIgygOLK4cmgaHRjVDTKoIIYk3WjbnYT jSZG10UlKHjg
EUPwwgOi0cgajUmMibv5NK5ZjQgqYAQUTTSRU2EFTLgHRBG5Zvqr6prp6TkZ kGMY3i9krK6u
qq6uru5/v9fVXYLSYgniUV5enp2TgwAAAFqIwYMG2draGpISrj+AMXfdrpo9 1XPKNGgmoHkk
X77Y1EskYPKk3LiBcnL0dwnu+vPyzOnQYh2UH85dMLHTX63rduV31he8puJw cZUUDjzQPGgX
wvyUcAmxlz8QTmDsiy/SS89ghLR2Bnr9mfGyLw4zDAMt1kGhRxBz/ocY0zj9 1bquoLRYQjvr
yJemlD+Fngq0DLbPCWjg16uXQTUB7m5dsyfQ64/fDB9oH9Mj+nysaZz+tOt2 pZ1V5DmlqEoG
RxdoKYqq5PdeuGvh38zky7psC6BTGZpqVia9/kz38wGr0iTBRxb/XoiO7ein P+26cn9svYyp
kyo7bMVpX615er8WAz0AaKJwEvf+oHHe2dfjGn2IBXRSVNUy+hNvran8lsdB U3VI1Zw+7cKF
i616+n969HM9a/++6J0WydUV39w5jREXPlZ/ZumzTL1r3osOyD3t2+NPF+Dw A00FdzDczXAg
+2Y8GJpgYo5VdAB8/fH1nar5zFLr9Qfr6PRll6ENOyL4KOPfmJhLrXf6bwgJ 1hq/PTyiRXLh
riu3L+tU5bKBEcgUPXj+T/vw74iYqjcnCV0HeuR+P918JkgmQLh58iANjJm7 TH8kK5nE4Y9V
EyQTULUt1cWSf/3hsOhBrj8XDk7x9b8EjWYM7I78mAbWBL2nP1J5G+QzJTbW uB7N6FdTdfsS
/18vRXxnLOmvUjOZIuLYHwMX/LyP9lf8i7ts5pmXu71yTmeRFZc/O4Tmhkyx 0ViT/389lr+P
As4+8R3cWL10F9KmGEk1jLiG9O4M97mRr/njwK+no7gYtU5FyXso7TdanH0L JBPg9FI9hn/9
4eslvf58v9/31RW6HwyVXVyzC63bNc1OY0365xaj/VHUz3WLhjVWJ92FtClG Ug0DTv/Vq4g6
7vnoYy5G1wPpadOmXLzYKpLZJOVrnlVK9ZJRu7TVM2ZSjZdKLqZav/7GChy4 kzVdINX9dF7K
NDC4xzN16isyUt8/sDftbSfE1DX6xgotpOzSocNo7top1u3VHXTui9FgHA2F +xztXvzOV6ej
k+Q+bPjDSK/sXxNAMgGt9qXa9eedX/Z9/nyg7YgVdBFff/S9c8LIy9RIkX7N P+rnp1grDXhj
hRZSenHNbrR259R2kyud+2J0qql5+uup9dSp3pcuxbXs6a/rCWXLQvSyTqYu YPVSAR0se/LE
l+Qfxe2YTLEW6RE8KZLJUK0UdVO3hArz3nIehW1Zg2RAXoj2otpOjdq7AgbW sOeUecEk3Ma6
PnDmP/B5Qk8S/qmCI/EqPXdF9x9K/+AxOTv1CkgmoEUvFdcfzO0bicgC/Xwj cdSLE7m1ehWE
If9pppAUZAQ4v2Ko9rCF0H/bU66Y9q6APoICV+g6/fEq/bWeMkV8+XLHczLp 9MdKpczpb4/9
9ttvd3ytlBdnNlm91IzRNB0q4k5M+VM0Dc///mVskyljlq+9vLBsyp9+QOiH r/Zvv/U2Om29
IUyeb9HJx162cSeOoleCva1pOTi8CMmYvOuHA344jn5gvj9AV8nX5vVDAUeP 4wVS1B+UMfu3
X3a5It8iu4o1ahNGjz3KbWgQv564VuHDe6PH10JW+H+Cl/2ict8YL1RZdMPV IPb3fW0VHjnw
T7vCtJZMWuDAInRWbaeCvR+plaOZC6fXqKEW1Fq77PKXBpZPaiVvrkWbA46q 75S8bf2iUkYm
jt11XN4mejpQf7+l3DnDnS04sk7ayDl+v0La331ydgZIJuilpl6aSRX9Z7/F zRExVft9b34q
ncCt1XItllxa5/zKfhoOOLsGp1DGvHc2/+1855kfI/Tx/oM/PXkHffHcC8vl +Q7efPq2w6V1
2I4Mnyqk5eDwGqxT+f/dtezj/ehjdPYBXSVfm++Oli0j5ZKi3JUxB3/Kd/5C vkV2FXv9+aLH
H5dxG3Ln1xPXaucUIZJcXuf0KnnmF/DfBzun2KksPs/uJ8Oka6vwdNErryzX WjJpgQdr0C61
nQqfWqJWjmYunF6jhnpY9d5yzdMfRxoi8d7eXnFxHczJ1JX6zTT0UsCJZUDd GNxl5XrJPlWo
w3d/GlfDjCN/sv/20eGBCP3vyyX/YeqlZb8cuTDs4qM5vRB6GPfvI4UzL56Z dhTNDPK2wnn/
9Ojwn9hseNXRy+WLUIOMdQsTG5YhYRmOcR6x6Mw0GZq5UtyN84jitccze118 dHglqrq+ftWp
9MNiLkaSETmA1kG+6s8OGZFj62mtUMaVMSG/XFyNjvJrddkxqO/P/qIPbz7q hxen/Tf35ths
/uJFZ1oxe80KH59ViEu+qYgJGvmAawESw7C7oLpTmuVo5lJvN1xDbyuNa4N6 ayu21Xj5OKWi
ARFa6Km+U+yqt/G+f9lAA0d/KX9RswKN0KhYUv5X0dB/6KTsuz+CZIJeqvYf Ab3UfH/yqxG/
VfXv3x/F/HY6/dif5r5F12pmubz7FdGN6ifurEIdw2WWXdp9wTe3OtwOobLL IbsL1uSezYhA
a3ZMEeK8C6ufLGSz4VURl8qCeW5P1rBlyK/zK8FnMxDJYsttD8fvz3DKrX6y g+ic8+fpT17h
YiSX1zvROshXve1wef0fGVorXC2rtZdy16IIfq0ujdzh+N9XRTerqt3xout/ 06vGXecv5jrT
iok0K7z/lTxccpUiZsfzv3AtQGLoLqjulGY5mrnU2w3XUL9iGnRAdSEWT46P 70h3zKx9KVMf
H2vW+AVRPeY2c2a6Cxtv4zyFQXWSX29/88nlbz5RrF/u/qovPgXqqM/wYdyp 6bPkA8PfOOMj
RcpVijD/t47vfnzDt481ibQY7DtleUreJGd5DN6iog5k1dWickmRslbIffz1 HWS7arVauLrX
GwEfjAmYsv/+nOveSCop4y8+jJNXQLPCb5zxoCXTSvK2jjQrz4XVytHMpdlu C71FvVTb+uGv
6q1tePm8BtRyFOiqh7yAWvtr8PDyp2oPzOnDjF5T/m6YZEqdBk/KzgbJBJSI Jq1Pv51MLEtW
LAcPJuMD8e27f/p+fPuO12pmiUFn17AGHbJ3DiB68EvMfoJifYDvAt5naYka 8YzRJlUuYPrz
7PNM4cjpAX+6nvGKszwGb1FRB7IqtlBSVqisFXJ/u2on2a5arYLXOgcsG2O1 LOD7B+FVU/Ct
cCF/seyyzgoHnH3VnVcr3tb1oVaOZi7NdgueMkX389u9+w9qPf1XBiwzScnU Pt6ne9MNCBn7
xQNWGxgZK8Ay9PHapIWOyitr3B0Za8uijGvTY9x+qHyVNaHOfEmensrkq3jZ lb+84TbytYqU
f3XqxsWordKVXa1WpEtUfhSACr+3WT6OrBrIX/zBmS0h/YqhFdYfY1g56jXU GB6lc0+bVE/d
R0Frk2qjOuEwd7bwH/jTc8bSa4khXTCnvMF5wEvZOVdBMsG+pBzo9hNi32Hj xJL+Yitzvy/x
dX3JjFUvRcbI5AUx+BRiDapPbjx+W6kFkssxOJ6kyfjC9YJP7pMdQhK5fjdr iclX8bJzvyr1
Y1RSLneyU8Yw2gtRy65WK3LmPKnaTqziHlZklTd/EduXpIT0zw2ssP4YA8tR r6FOc3HfgSg9
p3/gCn8DO4CX16SEhHa7Y27SqFozzh/L/6uu76I19fcnv6qvJ2s1swxBf/4l mwQqsmLiEVNv
PWLIX9/7HxtTJ7n83YQvHkgZKY4nibGpM/Q5a3ZVWR6buK/dv/MqpLwYRWJF FuWfVJGSbMil
rwWXBm+RXwe8ihdTJ81InLA+XapRK/K7Pl3CCGfmLPlrZkW26mIZLVyjwqoV k9L9VW6Lxmju
lOaOa+bS0m7qra22p8r6GFC+nqPA2ynNgNY/fp/r+tJi/MfvfHW6M6r9ZZc3 PHKemJ2TU15e
DvrRCfVSjRW1L2A78o6vFbYps7OzcRr8yz0ewms1s/igV/+bTgLEQMKXftsR PsuXX2NjmLJL
66w/x0GZfPAMvv679bVlA8V5bOK+Qz/JK2F4MYrEyiwKZIqUZEOivkIuDd4i vw54FS+GwVpl
HXKZ0agV+Q25XMaIFuZ+vzyzMF11sVhRuFqFVSsmo/ur3BaN0bJTGjuumUtL u+mCf/q/t/wf
+I9/+jNNYfLkl9rl9P/7onf0/OmyL9Xtxbq6rrNfnX/pv8fpDR2+0aP+EHy7 VydD1XVdkYZ9
6fzm6fRZvdbh0F+WTSTXSltn/+RSMRuDlr19ZltvWTw1VsyR2+CIY+GTFE7G v5yuk/JiSHZn
vBWS2Lqv8N+eYf/eFxC/wAFl/iROcTrjLPtL1vVJvRLZjCHL3eoqCxXF2vLq wK6SIl4d0J+/
qHC2RkitVtZoYkRsODGycCDbz1ko5C/a3EknhWtUWIYUG2Vv0GTs/nJbZ9NM 1NwpzXK05NJo
Ny3mna16a8vrYED5yprr3inNgO67LXqGyDzflXchz3e5c8bAp5gULJkuf5iI chLBygT78mp0
5Pyg/9uDxl/qfxxfdriLz8JB83H4eORfXvjjN+puvaDv1w+yImPrli9fTsoU irenfGnDxqDl
Z3LCRbI4xfM80Sv/+WJAT8VD+eXfMwwvhmR3lj/8s+0r+mSs6yf7r1dieyvj S5vrY3Nc0PKM
L3tafcJmvL9dxJQVKooV8urArmIQrw5o/7XHYtyv1Wpli1b/58KAAWTTy/+T u0MkHMFftPv1
Ailco8Jank3yts6mWa25U5rlaMml0W56n0bSkz1g2VKaCge407+po3onTZr4 44/GfvoLzp2N
LnSccE/SwI/tFvv2gqB/40D8ua9VOuXMefj3WORfa32+aJ/6VsZfPoE8/yF+ zpgvAHnHdqaN
XfeyqC1yGU/5LYFrry7OJcnwjVnThnwPj50miYZfemmCWoKIbfPp9Qez7v4n +H4dW5Y7B8hH
duLrT/DG4+1TdUnchggUtN3bzpjbN5Moe+VC97bI1dJcvZpkzKe//PmlWqxU Zvb5njc0U9/P
OMt5cQG17vaL7wT5axto2V//b0HL5eKnoex9N2aBXSvWqt3IfSitF3qinGT4 Mntnsi+RnutP
wKsr9/veDKgbw7simbXbC4ncS5lG14oZX/YeF6iwHE9nLzSsiZqXqxWZOHFC YmKS0Z7+xL7M
EXr+/hjmiAaMBXtLckPm/vAaSGZnsC8nTPDUk/j2Lz8f6PbTitoXRj3/R2i6 zkNSkjH6meTv
X8LhAYyH0mryTKa+5ziUcx0MzU5gX+q7/jw/cvRhNBo1/XkY0KHx9ByfnHzN 2E5/+v4ldETA
6HhYw9zsMY6EWNVEJjFLO6BVMKENAC2SOZ6c/snXjOj0p/YlHBrAGKmuJ1fS 5O6Kl+1yUkA4
QS6BTsX4ceNo4Nr19hdO7eN9AMB4qFd8e/uKhbpwAiahl3D9ARpn3Fj56X89 pd1O/6786xEA
dAiUwgl0QCbXpYBeAs2GGyzW9sCbIQAAAABgmH1JCffpDc0BdHQqKyutra3N zAy9EXz48GGv
XuQjRz+cu/DyzOnQgK1KSGwFNAJgCnoJAKYBFsva2tr6+nqpVKr87KdM+dSB LlpZWfXo0aOu
jnxtsKykHIFjEAAA0Eugs4HF0tzcvGvXrlgy+ULI/8RzdXU1p5eKtdByAACA XgKdCSyTWCwZ
+ez0DKeUmkZkTU0N3+6EpjMGbp/wVYsZ9UYMNAsAegkALQ9WPs6yVDMuuTQC gYBaoqgxA/NB
yaOSiqpbuSTsYltt29PSobeVk0NPaOfWY/Ky61z4XnQAVlCQTAD0EgBaHplM pmYsJmZVjh9s
pZmyoaFBj31ZXlWT80BiYd61n5318IGWlt3Nq2vqKx5VF5c/KSx7NMhJaGvV HVq75d0Dqm+4
WfQQOg4c+/PXvn+cB5IJgF4CQKsZmlQs8e+17CosmTgGW5acNKqMA1LNW1FV k5VbOrC/8A+/
T5H896ceY16Qjbxx5He3hIulXtPs59r9gte6udr3BslsaRpkXfD9zrkf79bW 1s+e6oH1Ekf+
YfDY61/5jXsrupHMkvjNw+ZE8SI+uiKZ79beu8SrlVHUBwC9BAC+fSlguZr5 kIvHkjluUA++
HakrjMGW5YB+QvteVpIzPwkXIMmxn6yHM1gs/+8fm+cf3+b/V1wOSfOCqJ8y T9nFNX94+WPF
UtStukXDNCqH0+xE63ZPszOJpt4T+fHqoPda2L6Ukj+/CUNZW5MRjlxh0ZW8 IGQz4pZB+Zee
ygwTCzmh2hcv4Rbbh8zjwy5OTZeECalwfpVZ/JZIU1D3ocB2ricAegl0YuOS WpYYzyHWyfce
48D1nCdUMjW9r/yYQskTc/MuvW0sG6Qy4ZgXsFji32qpDFuWf/lnGP61wGt7 WhZJHhWUVTkK
eyhN1Pd++G3XVKKFZZfW7rpYSsMqm5FvS33zJD1ai9NzgY4jmcGrAlqwwFrG rF7GXLp2r6a2
/kl1nesfbG0TZ9NVrgvimlaWsO/QQzdKw1B76pCk6O7SaTNoDYTisGI4NUEv AcCYlBKTdPcR
XZwwtCdeHD/YCtuXVDLHDrTUmosLl1RU9e/TG4sljqofklzvXH+t9AnKq/B9 7tbrr3ez7Nal
sroOK59tT0ucsq+tJVeEUguFfUUfXy/ZyQg1NqNdLzXG8XaU0bobQoK3h0cE rVzRUgXWN5g1
SJHXmCFIwOCmTto8eMzO+3TVxXUDRgX/1EStcpqB+B5R/5PpW72ESJKwSfQ6 ifD/9m4YWeYS
7P0R2398g4+GA9G+fQ+GopWrDuEEL97sM3EVuwW5f1WjfJ5mj5iKhu5LYLfC NyiV6VehfXOi
DqEoxLOMAdBLAGgzycQyiSWTiiWNxDKZ8r9q/KtdjHiR5Y+qsV4+d20Uc71U MM4+o3+CjJ32
7vHT+i5mgjUPJ5/65tc5b47c1TOx/FEpLyNDzEe6KCnIDHB6lWEyvnjuj8vk qw/+9PQdB0Ua
yaV1Tq+wztv3zj5Yg3bN/Hg/+pg5eBAtYwNnH+ycaqeSZudUY72UyiUzcHnL 6KUU6yWT+HN2
P/ueXS687BW8ub7k84bqGkl+ofNLr/3vS2/Fs2bBwIXazM1Dc0SHuAUifkQc 9/E8ovviPcL6
nn/d7cdiCdHFYT9kFr9cvG/O0CuSUjdWR7/OLPXTVrNDWU7pktIwScLmoYhN THytfTYlEMFT
K58ve0KvsLto81D71zk1VavPncDAU/4I/LGglwDQHmJJfz2HWKu9Q0LFUoc/ VhmurqnHybFY
dptZVnsOdXU2a0Cyns+Zd+vapZuF2akvfo3Y9PfgrZ/u+ocAp1SRy/2vOO2n C++dzd8pZJBw
4dPqhdSkuLRu96WyNezFnim7tCvGN/9puJCN3/XL2jVnAxBaGz5VKHHOoAH1 NJeeDzdaxZRL
5qr3WkAy62UCbF+Oe35QT8su6dHI3GokjjS3Qv0d2NVT53Eprx8QD3o7Xj2/ 8vklEbabWW+J
7O5cOhQVdYgbBuQ/NXCV09KVk/qsJMZlsRiL1jfoVCA7DEfoMc3/UpFEq14u neZBjsWdS4rE
CInmF28lmqdevljFxCSSiYUWoayv7PfFZwYi9frMmwanLeglALSbZNI3LLlF NYHU//zSsrv5
07oGbFliscS/tlYW5l3NsFJ2M+9qY2mOLUsslvi3pq4Bp1RmlCEUcDZ/xxQh v8iyyyGur8g1
NODsGnZALlP6y4X9H+/fz40NCvBdMF1eT5miwmUaaYKnTDHip5pUMlcGLHvG cuqkZlIZc/NO
ztRxQ4lZX1+NBKxJKcD3IwL2FyH22Eobmete6DVvr/3NzPl+ckNTZZQNK2CZ Xwvt++z9Md3p
mfdeo3ytuL340aEbpYFO6ukl8ZfgpAW9BIC2RyqVymQyOj4WqX7iR+1zP7r0 0ranZU1NbZ7o
GnInV2pzMwHWxZ49zHHgQdmTD7r9+MEictV+WlOHUzJ8A1OGVN/9zPjC9YJP 7pMdxC65vH43
q4YyxGriJzcev+2uvGJejpHn5Qph1NMY9zeIsFgGrvB/9io2yARYCEcPHyhj x8qi+kpi+wvk
DcwGBNQbIG10rnusT5NvZM57eerSOcTQlD9ofPBmutM3ZMzqVq95d09mfVSM Xp6Khp7PIk8i
JakXo9zmhwmRcqBQ2YMo5BSoVOERXGLWH3vcKX2Vevk8LSQO3t/ml85jI7Ju rFrqlIlL0KgP
nLaglwDQDvTs2fPJkyd8+1JNcOj31nHAwsJCqxY59LYqKq+y6WqBo9yLcq8s XzD5k2OZfVzP
V9kEz82NODlshnUl1rPH1TV9ba2UGalxqKIYOOzW15aNKs7bj5yDGVYsbUf6 LH/1WvpCkTtR
ypAB+QvvO8sUSi4P2I5QT/OIr51GJ5bvLf9Hi+i5jBF8//HLODDhb5/hOx9U I+GtFCg0k/xK
pY1O3mvvtHQlVqb5YYnH+wjtSQx5gigSosBvL4qGETUkLlkhXj61eRibgLhz ibbN+Pa4qA/r
KVjq74+cVMxWZWlkvA9xvaqVr5J664/EiuXMUOIr9lKvT+bQQxNFhwwzUoF2 QnDubDSdfRfm
8wJMgMrKyurqakdHR0MS379/v3fv3r169SorKU+5cWPypJf4a+/klvW0tmxA XconjJn89eEr
85YIE28+P7PwX7eH/21U2u1zjl0F0kePq0e48jykZZdDItGa7VP4j64kcetd /yx3x6Ll3+cG
od3yNBlf2LzIvocR8H3ODm87unggpXLcdXkAq6NaGqNr8I8P/pO6Yd9b9o9G E2+9Tr5uP7ku
hZvyFze7/ul/fz04acr8xUigkEn5QB/WMYvQ5eOHRy77Ebo9AHoJAM3Ry65d uxYUFGD7UiqV
NjQ0aLV4zMzMLC0tBw8eXFNTw+nlpJcm8tM8laHM3NLeNlZuOZmJCxZOPPbl HVf3hDph8Nx0
bF/6PFdWUVklcrV/rnPPub4/igxFDfBfakjibSn1TdXL2wcmTvvb35Q2pUDA H5d18V//HrUi
Ebo90DaAPxYwKerr6wUCQd++fRE7GpaC1ZELc/E0fVVVFZdXTVm7CxCWw5wH kpt9XWwSku4I
zGQMM9mi9Kf/CGvqHlRVMXhtdwFMaoJW/OPvrdcKWA6j903QtXZMYBL0eQD0 EgDaGs1LfjcB
M8zZ9qv4srFD6ssfVVfX1Ft2N7ftaflzjvQtsR3MmIlZjsWylTcBogiAXgKA kemlDvmbT9+k
62fDxQztB5NlAgDoJQCAXgIAAIBeAoAewYQ2AAAA9BIAQC4BAAC9BIBn5tr1 69AIrQv76ppW
Um7cgOYBjBb61hPoJQDIeXnmdGiEVuVKbIURNn5ZSTkcGsCo7cuKiop79+7R r7GYUoNaWlra
2Ni4uro6ODhA9+pYwHWz9RG0wTbO7ZusNX5m4BU4AEDH08ucnJyCgoLBgwd7 eHhggTGlBsXy
j28C/ve//xUVFY0cORJ6WIejeY5BbB6B3BoPPsvU58W8Fx2AdRQkE+hgellW Voa1ZNKkSSbZ
oJYsjo6Ot27dys/Pd3Z2hk7W4dD/hTbAyGlgBDKNsVsWPYSuAz1AMoEOppfZ 2dlDhgwx+ZYd
OHAglkzQSxNg1473167f0oyMP//0TUner4JH95meA/r+YeiocYsMzHj75r8K H/xqVpnD9Bzk
6Djgec8lnbPlo6KidK3y9/fXqZdSM81pMbFe4l8smacivOcExzW+bUn85n0o UD7vtHYyvxZO
CiLzk8x3a5HdlSRs/qFPmDHMT8LWJNDpm2FzlFNaf3s3zEtoSLO0UfW4htJd pSYcIMP2qx30
sry8/IUXXjD5U93GxqayshLExgRgUJed4R+sC/nQ8Cwlxam3E0/0G+rn95qv ubl5rVSW8Wvq
hVMbXpg8385+mJ6MD3Kvp/90ur/o5Rl/nta1m2W9rDbzVuq5/6z949g3HPuN 7oSNr1UX9ego
pp4x48+L+c4v+z5/PtB2xAq6eCfr2QYWKS+smTeDWnT6rawfLk19OcwYGl1e kzvs1GYKCcE7
vhkFBraI3j2b6BraUE0/QI1VrB30sr6+Hl9B4CoMdBRkAmZL2IL3N4euDwk1 MMtPV7/2m73G
umcfgVnX767kzH3JdYynk8eIYee/2+03O1xPxrSfz0yfE2ht7dRFIJAKBN0R GvdS32EkY4Tj
bO16mX7rgOH7Mmz0io7V+A0NDdzH8ekHmOrq6hq5wkgF3KyYt28kIgv0843E US9O5Na2kJFT
dHep04wWtJm+Rm+GCY2gyRU1kahGC8VhYURRjKV6bX2A2kkvAaBjYcYIGEHX D7fMC/1gc8ja
xu9rf7121Hnoyz2s+8sY2dmEnO3bMrps6vLqS67drf/gNHTG7Zv/GjXmb1oz /pL0udOQGd2t
B0hlAplAYIbwdZ9ohIW1k9PQ6bdvfjNqzJtaM740ySCH4NUfszpc4+Pba8T7 VGFtbW2jbpt6
KbYv5en3W9wcEVO13/fmp9IJ3FodhsWDoWjlKjI7mYpRQn16lI+u3HX6ek7U IRSF7d5DxMiN
ojM84+xy16VikStt6d6P2ID/t4lTL02ce0jh2ESZx/vcGMNtiNpMyox7f0zn 3KFkQmniCk3Y
JHqdRChdo+obVdhGNByI9nGlFb94s8/EVfK9YP2Tyuzy8hux3hRlKhd1V+/N 34ZOQoml80S0
Ab/pfzcQfaRYi9uBtiFrvKqVg5RNp9FiqtVTZiRTfAeqV2n+AzZMDxBSOYiS +XZa2gqhB+f3
rVRWTLVjzA+TgF4CgEH2pRnTYNHjhdAPzUI3h4asa8TKvJFaOX/hMHzBPpeY hwRdsOAKGHT2
x9wZE11F7h7Hjv08aowOqzSzfN5bIpnM7EJSroypl7GzkCEp8/KEgW6iYceP 3Vjpl4EAACAA
SURBVNaekcEV1P5SFhENOmsk+XiRAMlkHa7xpVKptbW1ipctM1N/ljqpQMo+ wPz+5Fcjfqvq
378/ivntdPqxP819i67Vnu1QllO6pDSMve5/nVnqJ48WzZOUzuMunXdmBJ7y R+ylNnAakl9z
JQn75gy9Iil14+WlpQXiK/hFReA4ooF9dyReOJdofrFIi0knr4YkYfNHU9Ml xI4i2433COt7
/nW3H4slrDb/kFn8crHmRnXuFC5tKGITszq9KSF9Fdp3UbV8qhCq1tuhOaJD NET0W8XIU8+u
Uj2Ufsp/2I3MeSIR6xR9s7j0fB9u7Y0+6Yo21CwnkN90ai3Gr56yzVHWV/Zf a1apKDD91F1O
FFUOYrxEu1fZCR/cu0jDH8vWx9jtywRvb6+4OLhYA+2OgGGkZg0CGWPV48UP tshCN32wXv+z
zK7Mcz26n0vMCduShswsZIwgbFsqYsyZzVKf560Q06BnU5aWPWOScj7cksF0 6dqlAUm7SLsg
gdlGgXh0b6lZvS5JQcwj7asYhsyvzP6LdwMx0o6ol+Xl5XTebxyuqal58uSJ /iyiSevTbycT
y5IVy8GDB+PI3377zT99f0DdGLxWe7al0zzYy6TQY5r/6zcy/Zw0DCmFHaNu eN25hE4Fuiny
XiqS+ClKk2gLaMI36eTJ7lzC9ush5WibqYGrnJaunNRnJTG2isW4Vt9oblTX TvFqiIhObyU7
pV6+mJhwasal6vNLlV3WXz2E3owU3szC1vONVZEvliL7YtXK6yxn3jR9LaY0 Lnl7ZOfkr6so
hAw9iHpQdAzj1cuEhAT66+XlZfyndPwawU5R7vl3XUBaTBJG0BUJzM3MkIyp 7dF93IdbzD54
P2x9yGadoidD1Q8fTRvdH72PRcps67aMkE3uXVAX79HCx48LGUbnw3tsSz6u LJnyx/7M+1Sn
ieeQMZN6j7J/8uh3gVTH2SqTIplEe4ECASNDrGIKiEdTqq6X9n1U7qRLiyXG 1vhYLJ8+fVpf
X8+w4ADWTv1ZDnT7Cf+OiFGKJf3FVuZ+35v4XzESN3aJdLJXWLPHh/GtltbY RV0P5DTGqoQR
8zfza6F9HzVrr3lojoVp0jNUvdXDq8bsnXQzcwzKOulHzHovnZVXLUcSf6nJ DdVoUS12EM2M
9BIVGhovFuNf41dKjPce0BTTNjDrGWmDVGoua8DiU9u9m3volrd2hn+gK/nA gS65ubnVstoJ
z9vLupCrPLYRvZ7vU9eAbv36+6CBrroyDhjkej+voLpeNtmj78SR9jg7/ntp pCO+r/05rXDQ
YB0ZpQ2IKdf+J5MIsJSSsETASEhKVfgCaYRiiSkpKfldQUFBAV5s9PnlitoX sB15x9cK25TZ
2dmIfYcNh3EMjsdrdfhjH5TSy2zqxSi3vryrspv8pqLsgfZRucIRU9Gc81la 8xoAazOJNMtc
uvJmlsI26vNVJvndlCBBonl3Ty7NKkYaGxX2HarYBfWq8moo98cijfJ11UTX LuuvHu5Kbi9+
FDRxUha1EVXXlukux8CGUmvzxotSPYh62kp3xzBS+/JuRAQWyzesrE6IxY4R EUODg432Qire
zTC7WfsSRMWE7UsZti7NZaiqi+A5pr4amXUTILR564KwTRvXhWzT0ivEcz7/ LNLRZYh5D9up
Hv0Fm2UTRtpLGdTw5Pd7GVfffme1zu7k9Zcjn0f0dxrQ1dKWIa5UmQz/CBrK y4ty0pLeXhSk
Uy+lEl0WK7sDiKl/Kqj+FUn/rJkEyyS2Mo1TLDE///xzU7NcjY6cH/R/e9D4 S/2PY5mkzlhs
ay4cNB+Hj0f+RSzWZl8uzfqmjzBK7oQUIUkR9V7O+Pa4iLPCl55iL7UTRYf4 RpLQK/DU5mFC
e/W8+qHjfV68ORm9WaypsEKvsMTjfdgy2YEwIiEK/PaiaBhJSbyaQrysulGE lFVd6u+PnHSU
Rga8ENerWvm4Ptprol0wG6seaboxkci//wgSFIpV1rqVPqBtWPyWejkoXmdz qVSP3+b0lSOh
7qI0DiI/ht9W3MEldip7gPBRZjtGGHuCCM6djb7CThoQ7tO7bU6AM2fOzJo1 S6cblrUssVgW
jhnjePPmiaoqcXw8jtTimM37bIbrSeQXHR1NllbHMbvFNDLTY/WePXtIxAC8 tJhdjfyOKDym
ecpIXib1ZHpTyWMa8cfq2VOglSgrK7OwsKBvIAgUmJmZcWEunqavqKiws7Mr KylPuXGDftaH
C3DsCv9w85b5lhbuT+qynuvmVlOb9cH7X2K7UUqeCdaHrN+O09g52PK/h5ed XXDlytfjJ0xy
cnQUdO+Bap/eyniQlZby98ULPzt89J13dd4C3r/3++Wr347znODo2MfczJqR Vf2aWXgvLend
RfOOHv3XO4u0PHlJT/hw8lTtA1+JD9ZMeP9qXEGZXVG5bXVN95eXfNOOR2fP L6TZJ9elcC3M
tTZuwJbaygdrZy0I+jcNr7v/yYiYKmxZ7hywnMYci/zrh7vOqPQZfOCM4jV8 E0N1AHAHRbVj
GJF9meDtTbRHIZY4jH/fwJKJ7wZDQxMQ0jb8J9pjHXP+PCtZ3mtmykVsD5pJ zD4Sudgjjjkv
pprmumYQThC/xlURSQRwxme56zJdT87NZc4rVJIkG/DZPxSp5EWvyFGP2S2G U6Jz2JfE1GNq
a7K2bP7i/W0LujBmXRip/i/+DB7cb/DgNXEXz6YkJcnYB5NOrm6LF6387LM9 Nbejw3c+1jXI
dsCQP7w7ZNXlSzhjItF0mZmT6+BFi4KOfhbZcPv89t0VG9aEarEvZZU6zcun xeWPelY8tm53
sWwzpDKzz/e8QcMBr67c73szoG4MF2O8D6FMiayv7CeT0T3zTWu3jEgvsRxi +xJLIxZILJON
25esoTeTipZ4xRE/13Pxu8UDlJF5Oal+R/4pFzWS4B85eWgAL9Ll3fPMu0Qi UfQeV8FirlCP
+N27B3mgxd6CPay9KX/3SzMG6BwIpPgi+/7mzxkz8w83frk59C+bty768P3G v/jjPe0VtZh3
3lm9o7jKLv/K9h2bN6zX+SrnlKkaGd8N2hFeaZ+btGPn++vXqUq1TIoY3ZP8 PMmtqBpaVW3Z
ScQSs3XPaaXvJz6e3vHwI7X5F9mX8YGWwu2t0uK3TGFHVDuGcT2/JKIYF+cY EYFl8g1WLLGt
OdTQt0r8RAP0J4jOvI+maV2j6l9lYZ9Mykf00PWaMXBadApkyCx047EQVt52 7QztYvacmYB8
UaB5pa0PCd0RHmpXeLXpGT/cvvMD4W9JGvav7ErMON35xlU+vuez6N+d89iJ ybNKOFEBk7Mv
OYYGB4u9vYkbNj6+MbFMxSaj2AWL2IHF0R5xOJCnXOcyyCPa+0D8u6yukQSr 484jF6SMZB+A
zs1dhw3HnZ+tEJPnj/Ko84MOCLwRkUSsknFIsDMnL/6cq1oMu2HA9DFjBOvW h9Lw2nWhH37w
4eYtb275cNEHm5v2UVm+ZDavJhvWadncMJ9w/bmGde7D98O5C/ono27BR6eA qUJHJxjr9wpC
Q8WhoYa8T3LyHwJ2DA7xkqrfRop35x6Z4Sof2aFIoBKJrUSikkzcGoHcIasY 76OWdbeLC1KP
gT7USeDEkiJFMjPGTCaAhukY6BdLADAc4xofy6fx7/uwQ2HXGbFbFMbHtsNt YCuMj9VkR/gH
SNCwft02vo0C80U3StuMj22qfQkAHdy+1D4aFgCMwhyJiNyv9XQCTMm+PHFn wxsjtkMDAhwd
+XvrZHgrHEGgVW4kgQ5N8yaa5kPeBbc17JOcpbHBDr6Rh1OZxcOVyyimJMLH Xn+ucBSimUZX
PAB6CQDGQ8XDh9AIrUzvNttSMyaa5lNge+Hud93Q7AsIGfAJ66CgoIyCUjSc iFzp7ehIHAPH
GvQSAEyXe/fuQSO0LuxQibahGRNNc2RJkrBY/m2Fz78OxGb1S3ITTmgsh5+f e/TtUh9iFZbk
ocOHgzLgYINeAoDpAqNCWpsrsRVttq1mTDSNWDcstSyxWBal1lPJHDr7bL/y 6fods6M83cNZ
wUxLzvDz9IumekldtSSkcNcqY7ANGhOiEhNEfLjQS0AvAcD4ycoA+7K1sWuz LemZaJqOmOX/
0vgTdzYgW8SJJY7hJBPNvnDizgV9w38cXNBRLJj9sFzOmoWiqVqG+7qnMsxw VhOPpDGLHbgY
lHZEcJSmifYrYSLs6ZPL2FEh0ElALwHA6HFwgDEWrcxvbTdCT89E01Qg+b8U LIdkmM/sC1gg
qWT29TBn7cvaRu1LZD/KD50pSctb4u65GBWwcnk7GsWEDJevDIouKC0t4GKw vgbRNJEERSlB
fov8oJuAXgIAALQdzZhoGtFPciKvrH5JVDLprwHPL6kmZoQfRYcXLUZULw1F ObKWGqXRcPCM
FfhUPwAAJkgzJprmwAKJbUpqWRomlgoLM9Ldczh/2fdMmtzUjHTvZ68WIzc8 lySnyZUyWHAk
DY4c2JcAAABtSTMmmubTr3w6mn2B/BqOvU8Eo7ocEhPswA7SJUN5iJDyYoKC 5HlSj8gH8tJE
sXDsjBbj/R6eCQDfw2t7nuV7eJ7jVWb5SPtcea0c/s4Fgzafecz2JTql87Lv sraRSWYl8Zv2
olVbYCJiws6fiZ608ffwmg183wdQXliM/Ht4ANCOxIW+OHu/crjsdwFDvENv GCCWKKmsgkwo
j2XSbSPCkqmZzHAFBa1tV0AsATVALwFAnbRD02duWl1bfKjmYQ3h4cPh017B kfw0w5eqW5zx
X2dhm1JEF4TirVfzbc9nls/QKB2v2mKyTbd1W+imjaE0vH1r6IZNodCdANBL ADBZalED6j4K
B7r3Rd0Vka7iv3EJrn6yTDPXxSi3+XwhtHdetjIlc4YzQvnn3u+9knyIbV9S 2QIRZzUSG/S1
gySpwnmLTVQ7z5Vs7r1Xs52/fu1gFDqITt/bIkYJG4fMIWmXncre6mWkBueO 7Rv2RO5dE7x6
44awbVtDdu85uHqt/6YNO6FHAaCXAGCi1CFUU6Rnff7d8j9qxvo7q7y/Kew7 FOWTQFQgulpR
vgVJsOYd5yxOSfze2GlZFVvlzzjjR2wZced9T5JSRIUzEl09jWWZ9cdmHpvj Rjy9RGLPZWLR
Nb422751M2Nmzsi67tq9d83qwLXrVyMzJmL3P9esfm/Dxg5pUMNEYADoJQA0 Qg35X/nt9XMf
f6SWwEZoE7ddTMPeG+LlsVH5pVuQ0vSTFN1FiAyl8z89k9U3oYfPsjnU4sRr 71yMOngw6qAi
9bJp89BFdHqVXAlFC8q2YR29yNmq/oET7AKJcVkmNsIWC9/x/u7IyKKSXDMz M4aR7tm9TyAQ
yBimQ0+qDWIJtL9edunSRSaT4fMKWh8wTmof13J6ee7Tz2e+p30GqIcPHyYe O8EtTvPPKpIg
ESeYpfkH947diop026Cse1apr5w6aiIUbyEWaubx3rZ2qrmMg5D1W1avXo3P 68iIjwtL0iN2
Hd6zZ4+ZoEthUV7H7QZgXwJqtINo2djYGP7icMelurra0tISeliHtC/ralkj s4aI5d/fINqp
8UfFUmlcIiSe5zbb7VimQvw2vZT13QyR3O6kcamxB936yvVUOGKaf2BKpiKx 3bFMHINeOyfP
n3nMbmN8qVJKN+FFLMbzs79jVdkI2bjhQ3wTXFiY9dGuTzdtDMPyycgEkbv3 dFBn7LPYlzt2
jICTCOzLlsHJyenBgwe9e/c27ZYtLCx0dHSEHtZx7ctzx87PXPAaqqnRYlmi 7mpiSRAtKL96
zNaOdmzu/UscJq5U1rg8fW+LCEmKFCZj8jG73raKxFhaRcoYtPdqhViUmR/l OSSKGJSrTsUO
cSMlE5essb5fgiVzx9aNGzZtw2EsmWvXBGzYuK2z2ZfkC7TIsImmKWlHBB4Z jc0uzaZaovbp
vFbh2TaEcyd7tnod2412+F4B5tq1a9jKHDx4sLm5uem1aX19fX5+fkFBwcSJ E8Ht3Ma0yPcK
vvz7MGdXh5kLZmjdxEPUS4tYGk4nfquyY32voNnGZV3dXAuLk+vX3zFUYdDh DJdZKoJJ5ipB
IThKHuh3xnAd4vI2KfGzboiblqwNNL09Lizt+L2C8ePH37t3LzY2ls5RZ2Lg mwBnZ2e8jyCW
HZSFn6b/Z8P4bw6e1pXgz9uvNbNo+gGgvclboZVN0b5MTp6LxdLX905MzFwc 9vQ82ajmFGQc
9ozwRMHy2abVsfeJiCBilBHk0rqfCnvWDZGPATIRrPqbLu02PnYIS0dpppKS kpSUFCsrK2wy
mqRNDLSYIupHtKC8bAE0b4egSWKZkJCQlLSCimVdXYCv7/6YmBHx8SMmTDig zzFbejva3TMC
ORSwk2f6IGyx5bmjJUvYCb4iUUxJCAoPj0bsjF+RkcR0Q6y/lKIw5dK4uMOp JS5HfXFqkpdn
Yqap5XJorQ2ZNvA+iUFgpezWrVtlZWViYuLYsWNhIA8AdBL7Uv8vTUkH+HBi yYapZM7FIpqU
hHT5ZuVyidAoPxSOBXMUFqsMlxKGCVG6SRHyCynBqxWez8UM1jI2M5lfujRi 1O1gD0TnoCZ6
Fo5SY4KQuj92uFqukNbaEOglgLBAisViLJZUMrGVCZIJAJ3BvtT/S8FySO1L LJBYJrFYWlgQ
+9LC4qRe+5JM6rUkMlJuxQX5hYwiv6Ow/pTqrhb3oJBkiQnhzUrNymKE9hk0 1XKhVtsQ6CWA
2KeSWCapZF67dg3LJzyeBACTty8NTOxFuJOcPBfLJHXGYlvT01PvkB9iXcrt NWrE3cbmXSOk
HXGI9ithIuzlw20Moxm5mrch0EuAJ5mTJ0++efOmq6sriKXp0VvYCxqhlano cPZlk/D0PBkf
PwJbmdiybEQsWblELiGKJTKXdHhyHkIujW3EvR91gJbkReL8JJ/DmTTu+eJR l1S/xnMZtDfN
2xDoJaAAy+TYseT1m+rq6pSUlNGjR9vY2ECzAEAnty85Jkw4kJS0Av82asCd 8UV+Jcpnf0SP
fH0jqbPUvp97pIdDJBlVo5pr+KyYow6Kt6FQUIzqjNNkYI7P8LQ8mlf5Xodm Lm6rLbshE6d9
3r80AVJTU3Nycrp06YLl08HBARrESHiW9y/h42etTUgssS9N+/1LxA7/MfDl S6DDXFjY9y/B
qdhMPDw8nJ2dpVIptjJLSkqgQQDA9OzL5mUEsTRVQC+bz+jRowcNGoQlMzk5 OT8/HxoEAEwJ
8DcAoJctbGW6ubkh9nEmtAYAgH0JmDAw3udZEYlEdiwIvrEOAAAA9iWgByqW t27dSklJyczM
hAYBDCLtiEAQHFtqQCqB4EgatFdbA/5YAPSytRAKyYQTWVlZqamp0BqdGQOn P0xLXnL4sHv0
bVXBLI0NphoqD5BUqYxhA/a5vEBLAP5YAPSytXB2dvb09OzSpUtOTg62NaFB Oifc9IeNihuZ
mGKxp4ZgKiDzRfjY41RBLvC6UseyLxO8vaH1TBJ4ftmSODg4jB07NiUlJT8/ /7nnnhOJRNAm
nQ06SQX+9fJq9FtobTExBdAkoqKidK3y9/dv0g1T4/NF8z/QaqrzRqrQ4WeT Br1secmcNGlS
amrqoEGDoDU6G4ZPf9hmE1MATUWrLurRUXVCQ+PFYnFoKIqLazxxkOLmRn5M TfXY8WaTBvsS
4GNjYzNx4kQcwFZmQUEBtjjhY7MmTxOnP2zDiSmAJtLQ0MB9/olhGEQm56oz MO/diAgslm9Y
WZ0Qix0jIoYGBxu6VfJduuSSCGSiemkis0mDXrYW9fX1WVlZ1dXVV65cgVmm TZsmT3/YdhNT
AM05czmlxNTW1lZWVhpyw0QtSyyWhWPGvHHz5omqKrG3N45s3DGL2MfZQS6z Sjm3POtfl98e
cZ5avvudjVLeQskNVS6CLqstKm+8lM5/tqS22W7HB/SyteDP/0WnzATJNFWa Ov1h205MATQN
qVRqbW3Nj+FeEtM1XzQd4MOJJQ7LJZN1zCYg5KXLNxvp68B5DErwvVCs3C0f QRSH3lOR0BF8
mB1iVdzvwbHkETf/Fip2VES/M75sJpIHdw3PZJVF3oND+VYUhc9CbbRd0EtA F5aWlpxkxsfH
wyzTJkyTpj9sw4kpgOboZXl5eUNDAzYxcbimpubJkyd0la75orEc4hsmLI1Y ILFMYrF0pPZl
fHwj9qWa/VXKueWVznbcPYKiC0pLCzTd78GRkeyAMHlZfiEhLkFLPARLSKmM DzFaVRb522W3
Qgv3TU6b5dJG2wW9BPRL5uTJk5OTk6uqqqifBzBhDJz+kFx0+NCHO4i7JMmH 9UREKH/VU2kk
1rYINAcslk+fPsVnK8OCA1g7DblhQnFxjhERWCapMxbbmkMNGfLzTGjcG7F9 hP3GBVnlo7qo
/S6qOS8stcR2OyAwDqXV6datG7Ysx48fb2NjU11dbcizEKDjMmHCAeqGhabo oJSUlPyuoKCg
AC8afs4ODQ7GNiW1LJsw2EcT1udwhv2oExkb5t7Pnhcj94sibAAuSaYx2OYT HEkjv+SLFcMX
l8QEZRSkqS7yh5JF5tE5leSFt9l2wb4EGsXc3NzOzg6LZWJiIr5dxfIJs0yb KtjOSEpCBg3x
AIySn3/++Znyh4aSl0nw3zNh7xMSE0z978StSSw0dfc7VjllDJvIHoXERDs4 cJnsR/EX+cNu
gjKOCgSRXOGlBW203Q4OzBfddshkspSUlOLiYjoUCCSzNYD5oo2ZTjJfdIK3 t1ere2KfgVLF
O77QIw2/sMB80W0MvmqPHTu2T58+2MTEhibMMg0ApuljMGaxBJ7lGg5N0PaS 6ejoiCUT25q1
tbXQJgAAtCn008TQDk0Hnl+2j2TeunXLysqqW7du0CAAAABgXwI6GT169JAh QxA7a2Z+fj40
CACYDDARGNiXQMtTWFiYz4LY6cCgQQDABICBY2BfAi2Po6PjsGHDqJWZm5sL DQIAYF8CoJeA
doYMGTJ69Ggc+OWXX7jPVAIA0AntyzsnNkDrGTPgj21/qCcWm5gPHz6UyWQw +RcAdHT7shmS
mZCQYGvgRNMUMmtIRqPzf9C5RZr/VTrVSa2Rrnmt2/idzlbZXOPTWYNeGotk du/e3c7ODotl
WVkZDkCbAECnsi9tCy58d7fbbHQBIYP0Mi15yeHDh6Nvl/rwVaNUOd84G+iH UxmqlbpEiP9R
+KbOa61en1YW1GZuztDprMGUMRYcHBywWObn5ycmJmJbExoEADqufdnULJKs JCyWK/7mg39x
2JBLfEHGYc/Fnu5YMLWupy9ZstNqOrTgvpH5c/Ka86WVNn7ps2mbY+cyYFIP N5YO7EvjAluZ
Xbp0waopk8lGjx4NvlnTRNXHBfNvdWb7krhhWcsSi2VqUT3+PfCv2NlDz5b3 m67PMUumHPeM
QA4F6CixMBF/CmgUiWLIJJXh0YiddiuSneINcZM+K7scfyLoEpejvjg1yatH aei81khjymjO
6lXZCq9MUh+F5cefj5o1BP3cfX2XaJwL2mexbrXNGQDopdFZmZMmTcIm5m+/ /VZfXz927FiQ
zA6HQZ8P5XxcTXVwAR3BvlSbVlrXRNN3TmywRYgTSxyjlEx04c6JCyPe2K5P LhEik41jwRyl
mPA5ROmQRMgvpASvVrglucne5F1u1G2ViaDDUWpMENLmw1ROai2XGHtchNqU 0Yrpz4erbOX2
rBBFmaQ+bGy4r8p81GSqat88HMNoOxeUs1iHt8XmQC87HDY2NnSW6eLi4lu3 br3wwgvQJh1J
LBMSUJNGbRAHV3JJBAK9NDH7Uv8vBcsh7ipYGrFAUsn06GvO2pe1eu1LMtfW kshIuWUV5Bcy
ipto2jCvRlBMCG9qaG4i6Gj993ZsEclpi4c74O2rThm9yE/7VjQrrjYf9SyS bJYuI4+bxbpt
Ngd62UElUywWp6SkDB48GFqjgxEaGo8PXmgoMvCj29TBpd31xLmL+H4zNkrN G2avjKDLaotw
WIwWVhS9+mUlUcmkv0K3CXr7DLYu5Yah3LAq8WtsO2lHHPgWYfMqa++z6LAA C+YspO7LlGtt
i2xFK228Oe2Ar89IsbS0xFddLJyVlZV01kxoE+PnbkQEFss3rKzwLw7rSxrp 60DnFcMnfAgr
aJEZLiEMw8wqoB4khimJyfA4ksZeCVi/GSEVeQTHlsq9YWwiv+jw2FKUdoZm KolhJ/dVWwSM
HSyQ2KaklmUjYkmtJuUgHjKhc3RyngEbUUwMXZIXiVSmhpZPBG3IMJ7hnoeX JKfZa0wZrWsr
6oKrMR+1QTLdtpsD+7LjkpqaWlZWFh8fP3HiRCyi0CDGCXHDspYlFsvCMWPe uHnzRFWV2Nsb
R2r3qqnZfaU815OaB6m0QNNvFqzmngoJcQla4iFYQkplfIjRqrIIdADK+02f jS7g30YtxTO+
yK/EXlUUfCOpN5K49z0cWC+FmtDNijnqoJj2FXc/dlCo6kTQw9PyaF59g2Ac XIh0LV6sNmU0
itW+FfX6aMxHrZyqWq9d26ab0wnMF23s0MkysZWJxRIks1HaZb7oBKyLCHFi SSMdqWTGxyPN
CRE1Xw7T+t4YDXMj/fiJHfIWabuosX5b5fVObbHd6STzRTebOyc26BrgA7Tz hQXmi+4QmJub
Y5nE1/Tq6mpsZWLhhDYxNogchoZiacQCiWVSRSyxfdmk2YM1PUiafjOk4Z4i v8Gxpdj8LIkJ
yihIU10shUPUMQCxNHLAH9sxJNPT0zMlJaW4uBjrpY2NDbSJ0UmmlxeKi3OM iMAySZ2x2NYc
2iSlVAimugcJIXW/GbY01dxT9igkJtrBgctkP4q/CMN9AKAlAH9sh0Emk5WV lTk4OOAAVs3e
veF4aaFd/LF8Ery9yfjY+Hiv5oiliQP+WKCjXljAH9uxwBd9KpbY0ExMTCwp KYE2MUZYxyz+
hZYAAFO7CEMTdDjV7Natm1Qqxar5+++/Q4MYG3Q0rKEfKwAAAPQSaD1Gkye/ GQAAGxRJREFU
jx7t5uaGJfPmzZv5+fnQIEYnmeCJBQDQS8BIEIlEWDIRO2smOGYBAADaABgf 24El09LSsqCg
ACbLBAAAAL0E9OHMggOZmZlUQaFNAAAAQC8B7VRVVWVnZ0ul0qdPn44ePRoa BAAAoDWA55cd
Hisrq7Fjx9JZpm/dugUNAgAAAHoJaMfBwWH8+PHm5uZYMq9duyaTyaBNAAAA QC8BLdjZ2U2c
OBFL5uPHj2tqaqBBAAAAWhZ4fmk62NjYUMm0tLSk85ngMDSL4fxw7gI0QuvC fnoTAEAvAaOQ
TPxLp5im83+BZBpOi3w/FtDDFfb7sQAAegkYC+YsVDVBMg0nK+MeNEIrA+8K A6CXgDGBLcvJ
kycnJydjyfzxxx/Hjx8Ps0wbgoMDTHzVyvzGQBsAHRcY72OadOvWDVuWNjY2 jx8/hhGzAAAA
oJeATszNzbFk2traenh4mJnBgQYAAAC9BHRL5qRJkxwcHOrr6xMTEysrK6FN AAAAmgc8v+wU
5OTklJWVYckcO3YsfJ/dQNI+Vw6XHf6OQa+aSBI2DplzkIb3Xq1YAB/0BQDQ S6BjIRKJnj59
Sr/+gyUTW5zQJvqJC31x9n7lcNnvAoZ4h95oXCwv+twr2yYkS5nH7Hofaz3J lMRv2otWbREL
uQAcMwBoZcAfaxh5n80QrIlvqWQaxK8RzPgsr1X3YPTo0c7OzlKpNCUlBabM bMSyPDR95qbV
tcWHKrP2Ff+yMy9h/fBpr+BI/p9mrjsX0XcrOd0SLShrE/tSKN5qTGK5dVso F96+NRT6EgD2
JaCpdztFueffdXn3PNPknN57SMDvSKvXks5egq3MoqIiMDH1UIsaUPdRONC9 L+quiHQV/41L
cPWTZZq5LiKfVUJthqDba6yLdl9S2QIRaw5Oc3tt9koSRXy29hoxIn6uZd9l bWP1EBusnmwS
nCbb+evXDkahg+j0vZXoI87Q1L8hkdJdvOxU9lavlhfZHds37IncuyZ49cYN Ydu2huzec3D1
Wv9NG3ZCjwJAL4EWQLybYXazetsmm8OSKRQK6ayZZWVl8CxTO3UI1RTpWZ9/ t/yPBhUkid/7
2tCrFeVUq45nls9AKOq1fBxTRn2q8ZKVGjFbRtzZGzstq2KrUB4zAse874nY cljhjERXT2PF
pjJp6Ia29D03xy2prIJIqdu5zLIWtn63b93MmJkzsq67du9dszpw7frVyIyJ 2P3PNavf27Bx
C/QpAPTSVMj7bIZrpsfqPXv2rI5jdg/AS4ujEbX6iNWozR5kIanFODMb5ToD xc096Z25DsfR
ItUKUW6Fy9sO+0rFMiMj4+7du9RJC8dfDfK5+pqH3OK5jz9SS2AjtInbLj94 3hvidcvlnYvo
9CpWl4QePssuFkmwjPmfnqmmVGoxOFfUwYNRBxXLy6bNQ1w5rKd3G5bAi03e kL2zf+AEu0Bi
XJa1cM8L3/H+7sjIopJcMzMzhpHu2b1PIBDIGEYAnQkAvTRF9qCZxNQjinhy bi5z3kWuo2sG
8XWN2oOcdu78bIX43XfPx2VSfyz67KRiletijzjmvJgmUxbC2wqb16Wd9hZf zvDvrVu3qqur
RSIYx6lC7eNaTi/Pffr5zPf8tSZ7+PBh4rET3OI0FHtHIm6hZ4msT5Vnpl5s gTKF4i0V5VtQ
5vHetnaq5T8zIeu3rF69WiaTRUZ8XFiSHrHrML4rNBN0KSzKg+4EmAww3kdp K85kBS0vJxVF
L3YVsBALcc+5eHVblK7kG5rq9mpOqt+RFXKVFa844peak6eyFTRA5Neue4s1 kj7OzMrKyszM
pJG//vorfAmI2JZ1tayRWUPE8u9vEO3U+KNiyTcuR0xDs/fGS+RL7PjYUhz3 2jm2dSWpsQfd
+hokpsIR0/wDUzLlSrnJ7limUFkOW/LG+FKNLI1uiBS1EddPND/7O/+sIkkL N9rGDR9i47Kw
MOujXZ9u2hiG5ZORCSJ37wFnLAD2pWlLp4arNE8plq6c9dmEp47RmfexRhrX XlJPLDYxsWSa
m5sPGjQIX+/u37+PA2BfYkU8d+z8zAWvIW2TiT5E3dXEkmiW17Z7aOMQu9fo onzkzsrTm9x6
2yLiHb23RYQkRYYZgslYbkkudrwPLkakjCEli0WZ+VGeQ6L2JWU5y7M0uiGh eNWp2CFuvREd
79MKY2qxZO7YunHDpm04jCVz7ZqADRu3weUEAL00WVwGeaDFClepXB7Pv8tP 4THIRWFE4uuY
rkKivQ/Ev8uqbvyBxdGr484rRdeoJLN79+6pqamOjo540dXVNSUlBfSy8nED K5Yz6KNMDbHs
pSmWnGSWl21TU6mtZRVb+Ytb1MOaMfLXUVQ9AqoxykV5FgM2hDSr19Ks36Qs H8QSAL00dcS7
mbg1AlfBYrLADdVRCOG761YLvAX0DRA/zqU6QORHfLiZR45wheQemeEqoMMd SCFiY91dBweH
KVOm4EBJSUlRUZGVlVVhYSGVz07Lwk/T/7Nh/DcHT+tK8Oft1+BEAYDOhuDc 2egr7KTn4T69
oTk6Ibdu3cIaiQ3N+Pj4mpqa3r17d+vWbdy4cR10d8rKyiwsLOhoJoECMzMz LszF0/QVFRV2
dnZlJeUpN254jh8H/aFV2fkzeT15cl3K2BdfpDG42WnYzsEW2gcw3gtLSTmC 8T6Am5tbQ0MD
FstevXqZm5tj/cCS8+jRI2gZAAAAPqCXnR1LS0t3d3cfHx9HR0dsmWFTTCqV 3r59G1oGAACA
Dzy/7Fxg8/HevXuVlZXV1dW60ggEgocPH545c8ZoBd7GxsbV1RU+6QcAAOgl 0Crk5OQUFBQM
HjzYw8MDq04H3Qus9Fjv//e//xUVFY0cObIFS+4t7AWdpLVv2KAJANBLwNgp KyvDAjNp0qSO
viOWLI6Ojrdu3crPz4fv+QEA0DbA88vOQnZ29pAhQ0xpjwYOHIitTDiyAACA XgItSXl5ee/e
JvXKkI2NTWVlJRxZAABAL4GWpL6+3tzcHNoBAAAA9BIAAAAAQC8BAAAAoP2A 8bGACjt2jFi/
/g60Q1uQdkTgkRFTEuFj31iqJehwKrN4eFMKL40NdvCN5EVoLwEnC0chjVQB AACwLwFVEhIS
uN8WgMwUuiaeCwoEMz5r5hQt8Wuan7ftuXNig0Fymbzk8GH36Nul6gIWHFuq DJBUqYxhYsnl
pQTFlDAKSmIyjsaWNkluVaoBAADoJcAjKWlFXd1c/PtsxSjUzeXd8/J5ROMP LEZHchl2qpem
6SMO6Z2Zu+Pec5QWZBz2XOypIZgK7H0isNmHUwW5tMB3jOz7uUfmlTQnI1sN ODcAAPyxAEdy
8lwslr6+d2Ji5uKwp+dJY6iVeDfD7G7KzNztjW3Bhe/udpuNLiDkpVcub0e7 e0YghwJ09Hap
jw+KDQ7Pc0dLlrAu1EgUUxKCwsOjUWQkjoiMJM5UxDpmKQrnahoXdzi1xOWo L05N8moqHKu7
sxDfTxtE0nHGrkrhvKJINViHrTIju3HWkevn7uu7hF8fAAC9BEwabAxRyxKL ZV1dgK/v/piY
EfHxIyZMOODl5aXF9uOZe6vjWBOSTKyd6bF6z549fn5+0dF4hesMFDf3pHfm OmbmOZrBVZC5
mqRQz0tzL45WxK3ImUHTz0C5BlukxoEkKwmL5Yq/+Rz4V2y/rCSh24RG5BKh UX4oHAvmKKyK
GS4lDBOieKBYGouQX0gJXq14vriYYRbTzDhNbGnEqNvBHiiVYeTCGY5SY4IQ 72FkpK+D8gEm
UTR7nDM82q+EibCXFzIqRL56uErht2eFKIoi1WBjw33d2W0R3TySxswi5efh GIarD5ihAOgl
YNLs2DEC/3JiyYapZBLHbFISUh/+Qy0+Tjt3frZCTEVtD5pJ15BYEZY69NlJ eYY4RGNc0O7d
Gnnj17gu9ohjzstld8bF3PNxqxXpO9A9B7UssVimFtVTyZw99Gx5v+la7jmI XEYuiYyUW3RB
fiGjyO8oImN6TFLeEJ6gmBBcBooJGc7pXQROEM1PH8QZmiRnctri4Q54s5Gs yarY8CI/7YVr
1lexLftRfkHRBaWzSLJZYFMCoJdA5wHLIbUvsUBimcRiaWFB7EsLi5Pa7UsV cxCbQEc4c3Gm
uPHNaebNy0n1O/JPmpU88XyXaGnHasM7JzbYIsSJJY5RSia6cOfEhRFvbNew LuWGodygK/Fr
bCNpRxz4pmGTKmjvs+iwAAvmLKTuOpVL7LMUDgCdBRjvAyAsilg12SeXI6hY 4jCO0SmWJ+fm
0lGXcaubtKFnyWvMYDnEduTsobVYID36ko8o4V/WvqzF8epiSa015SAebLCh 6GRDRv+696Me
z5K8SHk+3zNpCjUVBMfqGc8z3PPwkuQ0YhvifxQyLTiSpqtwdcFVbouYxoq0 AAD2JdAZ8fQ8
GR8/AluZ2LL09NT7CqbHIOooxaYhQqKmbUYjr8sgj2jvA/HvKh6DYkE9P6gj 3nPgn35ZSVgm
qWWJf3U9vzzji/xK7FXFyDeSekHJQFYPh0gy5kZN8WbFHHUQCORLQTHs0NXU IwJ5FDYbfYan
5dG8WgbfOLgQpVy8WJmFuGuHo1jthatXw94nJCaYpqD5SgvglAE6G4JzZ6Ov WIzFoXCf3tAc
JsyZM2dmzZqlPw11zOpywypQDvghY3vQXPKckR3vs051+M7qI0dSF9NIxRNN F2151cf74PSK
EhQDgrj8je5UWVmZhYUFVQSBAjMzMy7MxdP0FRUVdnZ2ZSXlKTduvDxz+rO3 850TG8j42KG1
mmYlEBJL5r+cXJcy9sUXaQxudhq2c7CF9gGMFnyJAL0EvVSnY33fxwj1kg78 0THMB/QS9BLo
wHoJzy8BFeBjeM8IlUkQSwAwPUAvAaCFAU8sAIBeAgAAAADoJQAAAAAAoJcA AAAAAHoJAAAA
AKCXAAAAAAB6CQAAAACglwAAAAAAegkAAAAAoJcAAAAAAIBeAgAAAADoJQAA AACAXgIAAAAA
6CUAAAAAgF4CAAAAAOglYIR06dJFJpNBOwAAAIBeAvqwsbGprKw0pT2qrq62 tLSEIwsAAOgl
0JI4OTk9ePDAlPaosLDQ0dERjiwAAKCXQEvi6uqKDbKMjIz6+vqOvi94F3Jy cgoKCoYNGwZH
FgCAtqErNEHnYfz48ffu3YuNje3okmlubu7s7Ix3x8wMbvgAAAC9BFqBISzQ DgAAAE0Fbs8B
AAAAAPQSAAAAAEAvAQAAAAD0EgAAAABALwEAAAAA9BIAAAAAQC8BAAAAAPQS AAAAAADQSwAA
AAAAvQQAAAAA0EsAAAAAAL0EAAAAANBLAAAAAAC9BAAAAADQSwAAAAAAvQQA AAAAAPQSAAAA
AEAvAQAAAAD0EgAAAABALwEAAAAA9BIAAAAAQC8BAAAAAPQSAAAAAADQSwAA AAAAvQQAAAAA
0EsAAAAAAL0EAAAAANBLAAAAAAC9BAAAAADQSwAAAAAAvQQAAAAAAPQSAAAA AEAvAQAAAAD0
EgAAAABALwEAAADAuOkKTQAAQLtTWVnZ1CwMw0C7GS0NDQ1GWzdzc3PQSwAg Z4KVlZWZmaGO
k65d4RQwCsrLy6Ojo4cMGdKoCuIEd+/enTlzplQqxYHu3btD6xnbrQ8+js7O zkZbQ4lE0tTO
Zt3DBvQSMEGwWNbW1tbX1+PrKaNAJpPxzwG8iGW1R48edXV10GLGwKVLl3x9 fQcNGmRIYpwM
p8eBt99+G+54jNCy/OKLL1xcXEyps/35T7NBLwHTBIslNjTxlRRLJuI57hge 1dXVoJdGhYHX
L5oyLi6OugfwvRE0nVHRrVs3k+xsoJeAaYJlEl9JqUxyv/xFjpqaGmgu44Hv BqAsWLr22KFd
mi4EOIJGrpcCgaBjdTatPU2ts8H4WMAEwaKIJROfD5w1iRRuWG6Rns/YEoXm Mh5qVcGXMHoh
U4s3mf21sbHR+msCCIwYzc6mq6epdTbQS8A0zRROF/kiqpnSmEfxdULqeCx5 730a+cme9+tU
UTvWUhZZY0jbFa1VwvX/97//rfnbUuW3y+53FL3k9yjcx2gk7nV6OhvoJWDK XM18SAPcaXwt
u4qvnZoOQMAY7Mvlq7fQmMhtjdzyA8aJmRGj1ZmBexqNx31PV2eD55eAydqX iVnklT786znE
Gt9U4sjrOU+oZI4b1EOP0Qm0F0+fPsW/G7fup4vbNgXQGD3U19fzHex6aO1j 3YJP7JrxmMAY
dh9vgquG8T+/1OxauL/Rvhe0cRcOa2YBvQRMloluNlQyk+89xpJJxRKDxVLT WwsYA3Twzvur
l2zZc5gKJw4bksUYLtAt2KOaYUMbye53IL3UHClGex3tgVrHkYE/FjBBuGE+ E4b2pDFYMjmx
hPYxWuoVhAS+zV3C6jWAhjJ+jP/5pVqn4sQS9z1dnQ3sS8BkJZOeGFgyk+4+ opFjB1pqfasE
MJ6jxoXXvbdw58df4kD4vi9wWFeWDv0GbXZ2ttZfeC24jTsb7Wm01+m5OIBe AiZ7JnD93nOI
NbYvxw+2YlSBhjJyqGTqEUtOWujDs2e0hwy/vDajBF3ZX3rpJbwLmr8tVX5L tYAhu89PY/z+
2Kb2NNBLwPTtSwoVy5a9vgBtcyHTnwBGOBsnHUsvDelpoJeAaUJfR+OeVfA/ 8aP2uR8ArssA
YCCgl4AJ0rNnzydPnmi9klKZpN9bxwELCwtoLiPht99+wwfOwJQ0kJeXB4/6 jA18UKytrU2v
s4FeAiZIYWGho6Njjx6Nj4O9f/9+v379oMWMgb/85S/Hjh2ztbU1JLFEInnz zTfNzc1v3br1
+++/Q+sZFc7Ozn5+fhUVFabU2ZAM9BIwUePy3r172L6USqUNDQ1a/a5mZmaW lpaDBw+Gr3Ub
CTY2NgEBAU3NJRaLW7tiP5y7AEenSTx+VJ149ZqRV3LQwKEGpuzdyy7l+k9j X3xRRS+bMb85
vAgFtCrNmAa9vlaK/3rbCPFfo4mrHlVDIwONQq+VbUnKjRststGWKqctS26v DRmCUi+tra0N
n5Ue8/DhQ3j2A7QqVlZWTe2T0GgAALS6XjY6Kz3SmJj+ueeegxYEWo9m9Ekz eMQAACaNfR/i
OiotlqiF21Qvke5Z6ZGOielBL4HWpql9srsF6KVJUBob7OAbyQYPpzKLh2tL EI5CInzs27hi
kvjNw+ZEKZY+uiKZ79YmG92HAsPEwmcrJvNr4aQg1ajIxNJ5omevoEEla+5F s/YLqyOWSfyH
A/xwW+ul1lnpE7Mq6Uc4NSem79WrF5zXQKui2SevZj6c6Gaj9bN2uE92t7CE Ruv4pB1xiPYr
YSLsqXAeSdOmmE2QXqqsLSWxS09l0ks8udzHS55RxpqhGVqzGFCOaJ6kdB5R t+N9bowpfkvU
cges9Uo2KslU0Us6Kz3ivc1Np3dIuvto/GArLhk3MT28KQy0Nmp9kj9Fl+bH t2AAmqkYlwUZ
QX6zqKzZ+0S01IclcFERLVpPYd+hh26UhiFhG7ePUBwW1qk7SHu5ZFX0ks4a yC3SaxNivyWm
mbOhoQH0Emht1Pokf4ouzW6J+yS0mElcDkf5IYfw2BIVU1DpoQ2KwWt0xduz 5qnAg04Ddji1
xOWob2QkikQxJSEonDM05VlYXy9rd/q5+/ou4aIMtPOK7i51mqHqjSQeWjts 6j0YilauOrT3
x3Snb+T+W/+T6Vu9ELECp7rNmRtEE991+npO1CEUhRQ2a1PsS5SwSfQ6Kdv/ 28Spl5pejrwo
HVUV8p3PipimoNEs+N8H5zcLVx3Cgb0/8s3QpmzIWJ5f8m/qNcWSfpCTPzF9 k8YuAsAzGppc
h7yWXYUU0z6r9UloKNMQTJ+IEhTsIPDlVLA0NpznoQ2PHRWiUEu1+IhRt4M9 UCrDDKfCGY5S
Y/BFm8qkIouvO5tA7uudhVCkb14q24/YQkr1+2wPzREdoiFycccXbKHcG6nw 0AbiNFlO6ZLS
MEnC5o+mpkvChPJVHmTVnAdXJKXFNObOjMBT/qh5zyYzz7/u9mOxRETE5kaf 9OaWo6uqYSNS
911UjWla4SItzbIS4X0PQxKs9F9nlvrJ1TKhKRviq2ObKaVO+xJfgDix9Bxi zb8MqY22APsS
aBv7kvsSrFQqxQE63whevJ7zhD+fJXwS1rQkk2EiqOTFYtMwOpKgWBvkt4i9 1pbe1ohH0Sgm
RG4gDl+MiyiNjVa53N7mEmA7Nii6oHQWEeVZhj8gXaphw/EHAS09FUh+p3mQ q/+dS4eiog5x
w4P8p86bhhPMaJkhQvZOS1dO6rPS/9u7YcViXIdmFqOzqkg9JlDcNBNTS7PI 913oMc3/9RuZ
fk5ssjvPuiFugwmbzvfd2nojsNSfX3Kz7NIpA6nXS/Oj1TQ96CXQBmalWpfD YbXJn+Hj6abM
cM/DkcklIS7qjlKlCuqKbzMyjw/jm0dqa9Udj5dabLtCrzBiq2V+LbTvQ7yp z1ygZlVVY1qy
WbB2Otnr2nTzNtdn4iri+N3aekfaTJfXi5uYnvq+6G2+2oVJAACtPw26mleD E0s6+TOIpelR
GhssOJImX0hLXhLk4kAswSXJaRqrNePJs0/fM/LV2DgNji1Rs8qUCYh16t6v Jd5IcetD7aGy
B1EqijZi6tKVN7MUxlafrzJbsJlIgZsSJEg07+7JpVnFZc8ovhpVbYHKazTL oQeltLzUi1Fu
fYUt2Uqi+cWSzG/9284fq3WWXaR4UAQT7QLtYl/y+yQnljD5s2m7YlOPcPdL 2HwkTxN5ceSJ
5nAUq5GWxqPhvNwk8/C0vEgPh0gy9EeeJSQm2IFNQHOUFjxbfUUzvj0u6qNw IC49pWoCJh7v
I2QlmTzsFCENrykZZDtRdKgxA0v50BRvwt8fTUNCceC3F0XDyHaJS9at9IEh 5eizVtWqikQa
Mc/cLMSBTBczw0RIUqRr08aJ4NzZ6CsWY3Eo3Kd3SUmJhYUF38uKL0NULPme MalU2qdPn9u3
b3t4eMC5DbTi3VzXrpp9kj4jUJvSkuuT/fs5N3Urdg62ZSXlKTduvDxzOrR5 qxISS+asmFyX
wn0RlPs6KD4KxlnnH85dgO/HtmXJz7KhNn1+qXWWXb5lieD5JdC2aPZJTVcH 2JcAALTFHTx/
Qc8suwgm2gXaA+iTAPD/7d3RCYAgFAVQd2igFmmcpsuNoo8+KwgyCX3EOQso IjyUp5dw9bI8
ZTcJ2qWJij25rZ5g8pkul7FUG8Z5alMvS1J20zVoN3KCNv84XL7dk3UDLTlb 7e6VKeCsFEvO
jn4fgAZu+30gPh/aAcCzHc8/QnO7uGGkAAAAAElFTkSuQmCC
--------------030807010708040608090302--
Re: [Eugenia] Question on how to define a typed relation? [message #12464 is a reply to message #11902] Wed, 11 February 2009 21:32 Go to previous message
Michael Moser is currently offline Michael MoserFriend
Messages: 914
Registered: July 2009
Senior Member
Dimitris Kolovos wrote:
> ...
> Regarding your example, with the following complete metamodel:
> ...
> I get the editor in the attached screenshot.
>
> The workaround that makes this possible is the val ArtifactRelation[*]
> relations; in Model. I'll investigate if we can eliminate this
> artificial bit by supporting phantom links (in addition to phantom
> nodes which are already supported).

Ah - with that reference to the ArtifactRelation's in the top level
element I do indeed get a complete and fully functional editor!
BRILLIANT!

That's indeed what had been missing. I had not seen any necessity to
have such a reference to the relations in my top element. Would indeed
be cool, if that could be handled automatically. Or at least yield an
error msg. or warning that gave a hint into the right direction. Right
now, the only warning/error that one gets is:
----------------------
The feature 'entries' of 'Tool Group Connections' with 0 values must
have at least 1 values tutorials_eugenia.gmfgen
tutorials_eugenia/model Unknown EMF Problem
----------------------
That of course did give me the slightest clue, as to what I should fix,
so I had added the tool, the figures and their mappings by hand.

Very good now! But expect to get more questions in the future! ;-)
Thanks,
Michael
Re: [Eugenia] Question on how to define a typed relation? [message #565075 is a reply to message #11804] Wed, 11 February 2009 13:46 Go to previous message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
Hi Michael,

You can use opposite references to get both the source and the target of
the link in your ArtifactRelation class without changing the semantics
of your metamodel. See the changed lines below (marked with ->).

-------------
....
@gmf.node(label = "name", label.icon="true")
class Artifact {
id attr String name;
...
}
@gmf.node(label = "name", label.icon="true")
class Process {
id attr String name;
...
-> val ArtifactRelation[*]#process artifactRelations;
...
}
->@gmf.link(target="artifact", source="process", label="name",
target.decoration="arrow", style="dash", width="2")
class ArtifactRelation {
attr String name;
...
attr ArtifactRelationType relationType = "0";
ref Artifact artifact;
-> ref Process#artifactRelations process;
}
enum ArtifactRelationType {
CREATES = 0;
READS = 1;
UPDATES = 2;
DELETES = 3;
}
....
-------------

Cheers,
Dimitris

Michael Moser wrote:
> I have a question re. the use of .emf files and Eugenia to create proper
> GMF input files. I first will try to describe my very trivial example:
>
> My diagram has processes and artifacts (think of it as
> datasets/files/documents, etc.) and relations pointing from processes to
> artifacts, called ArtifactRelation. These ArtifactRelations are "rich"
> (i.e. they have additional attributes, like a name, later there will be
> further fields, etc. and a (relationship-)type - an enumeration), so I
> modeled them as an additional type that holds all these attributes
> including the reference to the target-artifact. A Process contains a
> collection (i.e. [0..n]) of such relations to Artifacts:
> -------------
> ...
> @gmf.node(label = "name", label.icon="true")
> class Artifact {
> id attr String name;
> ...
> }
> @gmf.node(label = "name", label.icon="true")
> class Process {
> id attr String name;
> ...
> val ArtifactRelation[*] artifactRelations;
> ...
> }
> @gmf.link(target="artifact", label="name", target.decoration="arrow",
> style="dash", width="2")
> class ArtifactRelation {
> attr String name;
> ...
> attr ArtifactRelationType relationType = "0";
> ref Artifact artifact;
> }
> enum ArtifactRelationType {
> CREATES = 0;
> READS = 1;
> UPDATES = 2;
> DELETES = 3;
> }
> ...
> -------------
>
> Now my question: I would like to visualize such relations as connections
> (dashed arrows) from the containing Process to the referenced Artifact.
> How do I specify such a "transitive" relations in .emf files? The
> problem I have here is, that not Process contains the reference to
> Artifact, but only to the ArtifactRelationType and only the latter
> contains the reference to the target-Artifact. How do I specify that
> using these @gmf.link(...)-annotations in .emf files? Is that possible
> at all?
>
> This is different from the filesystem example shown at
> http://epsilonlabs.wiki.sourceforge.net/EuGENia, where Shortcut-s
> directly contains the target-File, and Sync-s which contains both, the
> source and the target. In my case, source and target of a link are
> spread over two different objects. How do I tell Eugenia to generate a
> "connection" from that (and also a tool to generate such connections or
> relations)? I guess this should be a pretty standard task, but I
> couldn't yet figure out, how to do that.
>
> Hope I could make myself clear...
> Michael
>
Re: [Eugenia] Question on how to define a typed relation? [message #565095 is a reply to message #11840] Wed, 11 February 2009 20:06 Go to previous message
Michael Moser is currently offline Michael MoserFriend
Messages: 914
Registered: July 2009
Senior Member
Dimitris Kolovos wrote:
> Hi Michael,
>
> You can use opposite references to get both the source and the target
> of the link in your ArtifactRelation class without changing the
> semantics of your metamodel. See the changed lines below (marked with
> ->).

Thanks - that helped. Have I overlooked that feature somewhere or has it
not been documented so far? I saw no description or example for this
....#... notation before.

However, even with that extension this paid only for half the rent:
Eugenia did not create the corresponding CreationTools for these
relations and it also did not create the required Figure Descriptors nor
Connections in the .gmfgraph file and consequently also no LinkMappings
for these connections in the gmfmap file. I.e. out of the box it created
me an editor, that allowed to create nodes only, but none of the
connections between them.

So, that leaves me with the question: would it have been supposed to
create those, too (i.e. ran I into some bug) or is it *not* meant to do
that? Or in other words, is Eugenia's goal to generate only a first
"draft" of the .gmf* files and the user is then supposed to continue
from there and refine these generated files or is the idea and goal
really, that one can eventually indeed express the *entire* graphical
editor in the .emf file?

I would assume the first option, because, if one spins that concept
further, you would have to provide essentially ALL features of GMF to be
expressible as @gmf...-annotations in the .emf. file.
I guess it can't really be the ultimate goal to duplicate all that
effort or is it? Although, I have to admit I would find it very
attractive to have such an extremely compact description not only of the
data stuctures but also the entire graphical editor to edit such
structures in a single, compact file...

Michael
Re: [Eugenia] Question on how to define a typed relation? [message #565110 is a reply to message #11873] Wed, 11 February 2009 20:41 Go to previous message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------030807010708040608090302
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi Michael,

Michael Moser wrote:
> Dimitris Kolovos wrote:
>> Hi Michael,
>>
>> You can use opposite references to get both the source and the target
>> of the link in your ArtifactRelation class without changing the
>> semantics of your metamodel. See the changed lines below (marked with
>> ->).
>
> Thanks - that helped. Have I overlooked that feature somewhere or has it
> not been documented so far? I saw no description or example for this
> ...#... notation before.
>

This is Emfatic syntax for denoting opposite references. You can find a
reference of the Emfatic syntax under the Eclipse Help (EMFT
Emfatic->Reference->Language Reference)

> However, even with that extension this paid only for half the rent:
> Eugenia did not create the corresponding CreationTools for these
> relations and it also did not create the required Figure Descriptors nor
> Connections in the .gmfgraph file and consequently also no LinkMappings
> for these connections in the gmfmap file. I.e. out of the box it created
> me an editor, that allowed to create nodes only, but none of the
> connections between them.
>
> So, that leaves me with the question: would it have been supposed to
> create those, too (i.e. ran I into some bug) or is it *not* meant to do
> that? Or in other words, is Eugenia's goal to generate only a first
> "draft" of the .gmf* files and the user is then supposed to continue
> from there and refine these generated files or is the idea and goal
> really, that one can eventually indeed express the *entire* graphical
> editor in the .emf file?
>
> I would assume the first option, because, if one spins that concept
> further, you would have to provide essentially ALL features of GMF to be
> expressible as @gmf...-annotations in the .emf. file.
> I guess it can't really be the ultimate goal to duplicate all that
> effort or is it? Although, I have to admit I would find it very
> attractive to have such an extremely compact description not only of the
> data stuctures but also the entire graphical editor to edit such
> structures in a single, compact file...

Of course the aim of Eugenia is not to provide support for all the
features that GMF provides - but we are doing our best to support a good
subset.

Regarding your example, with the following complete metamodel:

@namespace(uri="processlanguage", prefix="processlanguage")
package processlanguage;

@gmf.diagram
class Model {
val Artifact[*] artifacts;
val Process[*] processes;
val ArtifactRelation[*] relations;
}

@gmf.node(label = "name", label.icon="true")
class Artifact {
attr String name;
}

@gmf.node(label = "name", label.icon="true")
class Process {
attr String name;
val ArtifactRelation[*]#process artifactRelations;
}

@gmf.link(target="artifact", source="process", label="name",
target.decoration="arrow", style="dash", width="2")
class ArtifactRelation {
attr String name;
attr ArtifactRelationType relationType = "0";
ref Artifact artifact;
ref Process#artifactRelations process;
}

enum ArtifactRelationType {
CREATES = 0;
READS = 1;
UPDATES = 2;
DELETES = 3;
}

I get the editor in the attached screenshot.

The workaround that makes this possible is the val ArtifactRelation[*]
relations; in Model. I'll investigate if we can eliminate this
artificial bit by supporting phantom links (in addition to phantom nodes
which are already supported).

>
> Michael
>

Cheers,
Dimitris

--------------030807010708040608090302
Content-Type: image/png;
name="ProcessLanguage.png"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="ProcessLanguage.png"

iVBORw0KGgoAAAANSUhEUgAAAmUAAAEXCAIAAABj76QnAAAACXBIWXMAAA7D AAAOwwHHb6hk
AAAgAElEQVR42uydCUAUR9bHa1DQIIgygOLK4cmgaHRjVDTKoIIYk3WjbnYT jSZG10UlKHjg
EUPwwgOi0cgajUmMibv5NK5ZjQgqYAQUTTSRU2EFTLgHRBG5Zvqr6prp6TkZ kGMY3i9krK6u
qq6uru5/v9fVXYLSYgniUV5enp2TgwAAAFqIwYMG2draGpISrj+AMXfdrpo9 1XPKNGgmoHkk
X77Y1EskYPKk3LiBcnL0dwnu+vPyzOnQYh2UH85dMLHTX63rduV31he8puJw cZUUDjzQPGgX
wvyUcAmxlz8QTmDsiy/SS89ghLR2Bnr9mfGyLw4zDAMt1kGhRxBz/ocY0zj9 1bquoLRYQjvr
yJemlD+Fngq0DLbPCWjg16uXQTUB7m5dsyfQ64/fDB9oH9Mj+nysaZz+tOt2 pZ1V5DmlqEoG
RxdoKYqq5PdeuGvh38zky7psC6BTGZpqVia9/kz38wGr0iTBRxb/XoiO7ein P+26cn9svYyp
kyo7bMVpX615er8WAz0AaKJwEvf+oHHe2dfjGn2IBXRSVNUy+hNvran8lsdB U3VI1Zw+7cKF
i616+n969HM9a/++6J0WydUV39w5jREXPlZ/ZumzTL1r3osOyD3t2+NPF+Dw A00FdzDczXAg
+2Y8GJpgYo5VdAB8/fH1nar5zFLr9Qfr6PRll6ENOyL4KOPfmJhLrXf6bwgJ 1hq/PTyiRXLh
riu3L+tU5bKBEcgUPXj+T/vw74iYqjcnCV0HeuR+P918JkgmQLh58iANjJm7 TH8kK5nE4Y9V
EyQTULUt1cWSf/3hsOhBrj8XDk7x9b8EjWYM7I78mAbWBL2nP1J5G+QzJTbW uB7N6FdTdfsS
/18vRXxnLOmvUjOZIuLYHwMX/LyP9lf8i7ts5pmXu71yTmeRFZc/O4Tmhkyx 0ViT/389lr+P
As4+8R3cWL10F9KmGEk1jLiG9O4M97mRr/njwK+no7gYtU5FyXso7TdanH0L JBPg9FI9hn/9
4eslvf58v9/31RW6HwyVXVyzC63bNc1OY0365xaj/VHUz3WLhjVWJ92FtClG Ug0DTv/Vq4g6
7vnoYy5G1wPpadOmXLzYKpLZJOVrnlVK9ZJRu7TVM2ZSjZdKLqZav/7GChy4 kzVdINX9dF7K
NDC4xzN16isyUt8/sDftbSfE1DX6xgotpOzSocNo7top1u3VHXTui9FgHA2F +xztXvzOV6ej
k+Q+bPjDSK/sXxNAMgGt9qXa9eedX/Z9/nyg7YgVdBFff/S9c8LIy9RIkX7N P+rnp1grDXhj
hRZSenHNbrR259R2kyud+2J0qql5+uup9dSp3pcuxbXs6a/rCWXLQvSyTqYu YPVSAR0se/LE
l+Qfxe2YTLEW6RE8KZLJUK0UdVO3hArz3nIehW1Zg2RAXoj2otpOjdq7AgbW sOeUecEk3Ma6
PnDmP/B5Qk8S/qmCI/EqPXdF9x9K/+AxOTv1CkgmoEUvFdcfzO0bicgC/Xwj cdSLE7m1ehWE
If9pppAUZAQ4v2Ko9rCF0H/bU66Y9q6APoICV+g6/fEq/bWeMkV8+XLHczLp 9MdKpczpb4/9
9ttvd3ytlBdnNlm91IzRNB0q4k5M+VM0Dc///mVskyljlq+9vLBsyp9+QOiH r/Zvv/U2Om29
IUyeb9HJx162cSeOoleCva1pOTi8CMmYvOuHA344jn5gvj9AV8nX5vVDAUeP 4wVS1B+UMfu3
X3a5It8iu4o1ahNGjz3KbWgQv564VuHDe6PH10JW+H+Cl/2ict8YL1RZdMPV IPb3fW0VHjnw
T7vCtJZMWuDAInRWbaeCvR+plaOZC6fXqKEW1Fq77PKXBpZPaiVvrkWbA46q 75S8bf2iUkYm
jt11XN4mejpQf7+l3DnDnS04sk7ayDl+v0La331ydgZIJuilpl6aSRX9Z7/F zRExVft9b34q
ncCt1XItllxa5/zKfhoOOLsGp1DGvHc2/+1855kfI/Tx/oM/PXkHffHcC8vl +Q7efPq2w6V1
2I4Mnyqk5eDwGqxT+f/dtezj/ehjdPYBXSVfm++Oli0j5ZKi3JUxB3/Kd/5C vkV2FXv9+aLH
H5dxG3Ln1xPXaucUIZJcXuf0KnnmF/DfBzun2KksPs/uJ8Oka6vwdNErryzX WjJpgQdr0C61
nQqfWqJWjmYunF6jhnpY9d5yzdMfRxoi8d7eXnFxHczJ1JX6zTT0UsCJZUDd GNxl5XrJPlWo
w3d/GlfDjCN/sv/20eGBCP3vyyX/YeqlZb8cuTDs4qM5vRB6GPfvI4UzL56Z dhTNDPK2wnn/
9Ojwn9hseNXRy+WLUIOMdQsTG5YhYRmOcR6x6Mw0GZq5UtyN84jitccze118 dHglqrq+ftWp
9MNiLkaSETmA1kG+6s8OGZFj62mtUMaVMSG/XFyNjvJrddkxqO/P/qIPbz7q hxen/Tf35ths
/uJFZ1oxe80KH59ViEu+qYgJGvmAawESw7C7oLpTmuVo5lJvN1xDbyuNa4N6 ayu21Xj5OKWi
ARFa6Km+U+yqt/G+f9lAA0d/KX9RswKN0KhYUv5X0dB/6KTsuz+CZIJeqvYf Ab3UfH/yqxG/
VfXv3x/F/HY6/dif5r5F12pmubz7FdGN6ifurEIdw2WWXdp9wTe3OtwOobLL IbsL1uSezYhA
a3ZMEeK8C6ufLGSz4VURl8qCeW5P1rBlyK/zK8FnMxDJYsttD8fvz3DKrX6y g+ic8+fpT17h
YiSX1zvROshXve1wef0fGVorXC2rtZdy16IIfq0ujdzh+N9XRTerqt3xout/ 06vGXecv5jrT
iok0K7z/lTxccpUiZsfzv3AtQGLoLqjulGY5mrnU2w3XUL9iGnRAdSEWT46P 70h3zKx9KVMf
H2vW+AVRPeY2c2a6Cxtv4zyFQXWSX29/88nlbz5RrF/u/qovPgXqqM/wYdyp 6bPkA8PfOOMj
RcpVijD/t47vfnzDt481ibQY7DtleUreJGd5DN6iog5k1dWickmRslbIffz1 HWS7arVauLrX
GwEfjAmYsv/+nOveSCop4y8+jJNXQLPCb5zxoCXTSvK2jjQrz4XVytHMpdlu C71FvVTb+uGv
6q1tePm8BtRyFOiqh7yAWvtr8PDyp2oPzOnDjF5T/m6YZEqdBk/KzgbJBJSI Jq1Pv51MLEtW
LAcPJuMD8e27f/p+fPuO12pmiUFn17AGHbJ3DiB68EvMfoJifYDvAt5naYka 8YzRJlUuYPrz
7PNM4cjpAX+6nvGKszwGb1FRB7IqtlBSVqisFXJ/u2on2a5arYLXOgcsG2O1 LOD7B+FVU/Ct
cCF/seyyzgoHnH3VnVcr3tb1oVaOZi7NdgueMkX389u9+w9qPf1XBiwzScnU Pt6ne9MNCBn7
xQNWGxgZK8Ay9PHapIWOyitr3B0Za8uijGvTY9x+qHyVNaHOfEmensrkq3jZ lb+84TbytYqU
f3XqxsWordKVXa1WpEtUfhSACr+3WT6OrBrIX/zBmS0h/YqhFdYfY1g56jXU GB6lc0+bVE/d
R0Frk2qjOuEwd7bwH/jTc8bSa4khXTCnvMF5wEvZOVdBMsG+pBzo9hNi32Hj xJL+Yitzvy/x
dX3JjFUvRcbI5AUx+BRiDapPbjx+W6kFkssxOJ6kyfjC9YJP7pMdQhK5fjdr iclX8bJzvyr1
Y1RSLneyU8Yw2gtRy65WK3LmPKnaTqziHlZklTd/EduXpIT0zw2ssP4YA8tR r6FOc3HfgSg9
p3/gCn8DO4CX16SEhHa7Y27SqFozzh/L/6uu76I19fcnv6qvJ2s1swxBf/4l mwQqsmLiEVNv
PWLIX9/7HxtTJ7n83YQvHkgZKY4nibGpM/Q5a3ZVWR6buK/dv/MqpLwYRWJF FuWfVJGSbMil
rwWXBm+RXwe8ihdTJ81InLA+XapRK/K7Pl3CCGfmLPlrZkW26mIZLVyjwqoV k9L9VW6Lxmju
lOaOa+bS0m7qra22p8r6GFC+nqPA2ynNgNY/fp/r+tJi/MfvfHW6M6r9ZZc3 PHKemJ2TU15e
DvrRCfVSjRW1L2A78o6vFbYps7OzcRr8yz0ewms1s/igV/+bTgLEQMKXftsR PsuXX2NjmLJL
66w/x0GZfPAMvv679bVlA8V5bOK+Qz/JK2F4MYrEyiwKZIqUZEOivkIuDd4i vw54FS+GwVpl
HXKZ0agV+Q25XMaIFuZ+vzyzMF11sVhRuFqFVSsmo/ur3BaN0bJTGjuumUtL u+mCf/q/t/wf
+I9/+jNNYfLkl9rl9P/7onf0/OmyL9Xtxbq6rrNfnX/pv8fpDR2+0aP+EHy7 VydD1XVdkYZ9
6fzm6fRZvdbh0F+WTSTXSltn/+RSMRuDlr19ZltvWTw1VsyR2+CIY+GTFE7G v5yuk/JiSHZn
vBWS2Lqv8N+eYf/eFxC/wAFl/iROcTrjLPtL1vVJvRLZjCHL3eoqCxXF2vLq wK6SIl4d0J+/
qHC2RkitVtZoYkRsODGycCDbz1ko5C/a3EknhWtUWIYUG2Vv0GTs/nJbZ9NM 1NwpzXK05NJo
Ny3mna16a8vrYED5yprr3inNgO67LXqGyDzflXchz3e5c8bAp5gULJkuf5iI chLBygT78mp0
5Pyg/9uDxl/qfxxfdriLz8JB83H4eORfXvjjN+puvaDv1w+yImPrli9fTsoU irenfGnDxqDl
Z3LCRbI4xfM80Sv/+WJAT8VD+eXfMwwvhmR3lj/8s+0r+mSs6yf7r1dieyvj S5vrY3Nc0PKM
L3tafcJmvL9dxJQVKooV8urArmIQrw5o/7XHYtyv1Wpli1b/58KAAWTTy/+T u0MkHMFftPv1
Ailco8Jank3yts6mWa25U5rlaMml0W56n0bSkz1g2VKaCge407+po3onTZr4 44/GfvoLzp2N
LnSccE/SwI/tFvv2gqB/40D8ua9VOuXMefj3WORfa32+aJ/6VsZfPoE8/yF+ zpgvAHnHdqaN
XfeyqC1yGU/5LYFrry7OJcnwjVnThnwPj50miYZfemmCWoKIbfPp9Qez7v4n +H4dW5Y7B8hH
duLrT/DG4+1TdUnchggUtN3bzpjbN5Moe+VC97bI1dJcvZpkzKe//PmlWqxU Zvb5njc0U9/P
OMt5cQG17vaL7wT5axto2V//b0HL5eKnoex9N2aBXSvWqt3IfSitF3qinGT4 Mntnsi+RnutP
wKsr9/veDKgbw7simbXbC4ncS5lG14oZX/YeF6iwHE9nLzSsiZqXqxWZOHFC YmKS0Z7+xL7M
EXr+/hjmiAaMBXtLckPm/vAaSGZnsC8nTPDUk/j2Lz8f6PbTitoXRj3/R2i6 zkNSkjH6meTv
X8LhAYyH0mryTKa+5ziUcx0MzU5gX+q7/jw/cvRhNBo1/XkY0KHx9ByfnHzN 2E5/+v4ldETA
6HhYw9zsMY6EWNVEJjFLO6BVMKENAC2SOZ6c/snXjOj0p/YlHBrAGKmuJ1fS 5O6Kl+1yUkA4
QS6BTsX4ceNo4Nr19hdO7eN9AMB4qFd8e/uKhbpwAiahl3D9ARpn3Fj56X89 pd1O/6786xEA
dAiUwgl0QCbXpYBeAs2GGyzW9sCbIQAAAABgmH1JCffpDc0BdHQqKyutra3N zAy9EXz48GGv
XuQjRz+cu/DyzOnQgK1KSGwFNAJgCnoJAKYBFsva2tr6+nqpVKr87KdM+dSB LlpZWfXo0aOu
jnxtsKykHIFjEAAA0Eugs4HF0tzcvGvXrlgy+ULI/8RzdXU1p5eKtdByAACA XgKdCSyTWCwZ
+ez0DKeUmkZkTU0N3+6EpjMGbp/wVYsZ9UYMNAsAegkALQ9WPs6yVDMuuTQC gYBaoqgxA/NB
yaOSiqpbuSTsYltt29PSobeVk0NPaOfWY/Ky61z4XnQAVlCQTAD0EgBaHplM pmYsJmZVjh9s
pZmyoaFBj31ZXlWT80BiYd61n5318IGWlt3Nq2vqKx5VF5c/KSx7NMhJaGvV HVq75d0Dqm+4
WfQQOg4c+/PXvn+cB5IJgF4CQKsZmlQs8e+17CosmTgGW5acNKqMA1LNW1FV k5VbOrC/8A+/
T5H896ceY16Qjbxx5He3hIulXtPs59r9gte6udr3BslsaRpkXfD9zrkf79bW 1s+e6oH1Ekf+
YfDY61/5jXsrupHMkvjNw+ZE8SI+uiKZ79beu8SrlVHUBwC9BAC+fSlguZr5 kIvHkjluUA++
HakrjMGW5YB+QvteVpIzPwkXIMmxn6yHM1gs/+8fm+cf3+b/V1wOSfOCqJ8y T9nFNX94+WPF
UtStukXDNCqH0+xE63ZPszOJpt4T+fHqoPda2L6Ukj+/CUNZW5MRjlxh0ZW8 IGQz4pZB+Zee
ygwTCzmh2hcv4Rbbh8zjwy5OTZeECalwfpVZ/JZIU1D3ocB2ricAegl0YuOS WpYYzyHWyfce
48D1nCdUMjW9r/yYQskTc/MuvW0sG6Qy4ZgXsFji32qpDFuWf/lnGP61wGt7 WhZJHhWUVTkK
eyhN1Pd++G3XVKKFZZfW7rpYSsMqm5FvS33zJD1ai9NzgY4jmcGrAlqwwFrG rF7GXLp2r6a2
/kl1nesfbG0TZ9NVrgvimlaWsO/QQzdKw1B76pCk6O7SaTNoDYTisGI4NUEv AcCYlBKTdPcR
XZwwtCdeHD/YCtuXVDLHDrTUmosLl1RU9e/TG4sljqofklzvXH+t9AnKq/B9 7tbrr3ez7Nal
sroOK59tT0ucsq+tJVeEUguFfUUfXy/ZyQg1NqNdLzXG8XaU0bobQoK3h0cE rVzRUgXWN5g1
SJHXmCFIwOCmTto8eMzO+3TVxXUDRgX/1EStcpqB+B5R/5PpW72ESJKwSfQ6 ifD/9m4YWeYS
7P0R2398g4+GA9G+fQ+GopWrDuEEL97sM3EVuwW5f1WjfJ5mj5iKhu5LYLfC NyiV6VehfXOi
DqEoxLOMAdBLAGgzycQyiSWTiiWNxDKZ8r9q/KtdjHiR5Y+qsV4+d20Uc71U MM4+o3+CjJ32
7vHT+i5mgjUPJ5/65tc5b47c1TOx/FEpLyNDzEe6KCnIDHB6lWEyvnjuj8vk qw/+9PQdB0Ua
yaV1Tq+wztv3zj5Yg3bN/Hg/+pg5eBAtYwNnH+ycaqeSZudUY72UyiUzcHnL 6KUU6yWT+HN2
P/ueXS687BW8ub7k84bqGkl+ofNLr/3vS2/Fs2bBwIXazM1Dc0SHuAUifkQc 9/E8ovviPcL6
nn/d7cdiCdHFYT9kFr9cvG/O0CuSUjdWR7/OLPXTVrNDWU7pktIwScLmoYhN THytfTYlEMFT
K58ve0KvsLto81D71zk1VavPncDAU/4I/LGglwDQHmJJfz2HWKu9Q0LFUoc/ VhmurqnHybFY
dptZVnsOdXU2a0Cyns+Zd+vapZuF2akvfo3Y9PfgrZ/u+ocAp1SRy/2vOO2n C++dzd8pZJBw
4dPqhdSkuLRu96WyNezFnim7tCvGN/9puJCN3/XL2jVnAxBaGz5VKHHOoAH1 NJeeDzdaxZRL
5qr3WkAy62UCbF+Oe35QT8su6dHI3GokjjS3Qv0d2NVT53Eprx8QD3o7Xj2/ 8vklEbabWW+J
7O5cOhQVdYgbBuQ/NXCV09KVk/qsJMZlsRiL1jfoVCA7DEfoMc3/UpFEq14u neZBjsWdS4rE
CInmF28lmqdevljFxCSSiYUWoayv7PfFZwYi9frMmwanLeglALSbZNI3LLlF NYHU//zSsrv5
07oGbFliscS/tlYW5l3NsFJ2M+9qY2mOLUsslvi3pq4Bp1RmlCEUcDZ/xxQh v8iyyyGur8g1
NODsGnZALlP6y4X9H+/fz40NCvBdMF1eT5miwmUaaYKnTDHip5pUMlcGLHvG cuqkZlIZc/NO
ztRxQ4lZX1+NBKxJKcD3IwL2FyH22Eobmete6DVvr/3NzPl+ckNTZZQNK2CZ Xwvt++z9Md3p
mfdeo3ytuL340aEbpYFO6ukl8ZfgpAW9BIC2RyqVymQyOj4WqX7iR+1zP7r0 0ranZU1NbZ7o
GnInV2pzMwHWxZ49zHHgQdmTD7r9+MEictV+WlOHUzJ8A1OGVN/9zPjC9YJP 7pMdxC65vH43
q4YyxGriJzcev+2uvGJejpHn5Qph1NMY9zeIsFgGrvB/9io2yARYCEcPHyhj x8qi+kpi+wvk
DcwGBNQbIG10rnusT5NvZM57eerSOcTQlD9ofPBmutM3ZMzqVq95d09mfVSM Xp6Khp7PIk8i
JakXo9zmhwmRcqBQ2YMo5BSoVOERXGLWH3vcKX2Vevk8LSQO3t/ml85jI7Ju rFrqlIlL0KgP
nLaglwDQDvTs2fPJkyd8+1JNcOj31nHAwsJCqxY59LYqKq+y6WqBo9yLcq8s XzD5k2OZfVzP
V9kEz82NODlshnUl1rPH1TV9ba2UGalxqKIYOOzW15aNKs7bj5yDGVYsbUf6 LH/1WvpCkTtR
ypAB+QvvO8sUSi4P2I5QT/OIr51GJ5bvLf9Hi+i5jBF8//HLODDhb5/hOx9U I+GtFCg0k/xK
pY1O3mvvtHQlVqb5YYnH+wjtSQx5gigSosBvL4qGETUkLlkhXj61eRibgLhz ibbN+Pa4qA/r
KVjq74+cVMxWZWlkvA9xvaqVr5J664/EiuXMUOIr9lKvT+bQQxNFhwwzUoF2 QnDubDSdfRfm
8wJMgMrKyurqakdHR0MS379/v3fv3r169SorKU+5cWPypJf4a+/klvW0tmxA XconjJn89eEr
85YIE28+P7PwX7eH/21U2u1zjl0F0kePq0e48jykZZdDItGa7VP4j64kcetd /yx3x6Ll3+cG
od3yNBlf2LzIvocR8H3ODm87unggpXLcdXkAq6NaGqNr8I8P/pO6Yd9b9o9G E2+9Tr5uP7ku
hZvyFze7/ul/fz04acr8xUigkEn5QB/WMYvQ5eOHRy77Ebo9AHoJAM3Ry65d uxYUFGD7UiqV
NjQ0aLV4zMzMLC0tBw8eXFNTw+nlpJcm8tM8laHM3NLeNlZuOZmJCxZOPPbl HVf3hDph8Nx0
bF/6PFdWUVklcrV/rnPPub4/igxFDfBfakjibSn1TdXL2wcmTvvb35Q2pUDA H5d18V//HrUi
Ebo90DaAPxYwKerr6wUCQd++fRE7GpaC1ZELc/E0fVVVFZdXTVm7CxCWw5wH kpt9XWwSku4I
zGQMM9mi9Kf/CGvqHlRVMXhtdwFMaoJW/OPvrdcKWA6j903QtXZMYBL0eQD0 EgDaGs1LfjcB
M8zZ9qv4srFD6ssfVVfX1Ft2N7ftaflzjvQtsR3MmIlZjsWylTcBogiAXgKA kemlDvmbT9+k
62fDxQztB5NlAgDoJQCAXgIAAIBeAoAewYQ2AAAA9BIAQC4BAAC9BIBn5tr1 69AIrQv76ppW
Um7cgOYBjBb61hPoJQDIeXnmdGiEVuVKbIURNn5ZSTkcGsCo7cuKiop79+7R r7GYUoNaWlra
2Ni4uro6ODhA9+pYwHWz9RG0wTbO7ZusNX5m4BU4AEDH08ucnJyCgoLBgwd7 eHhggTGlBsXy
j28C/ve//xUVFY0cORJ6WIejeY5BbB6B3BoPPsvU58W8Fx2AdRQkE+hgellW Voa1ZNKkSSbZ
oJYsjo6Ot27dys/Pd3Z2hk7W4dD/hTbAyGlgBDKNsVsWPYSuAz1AMoEOppfZ 2dlDhgwx+ZYd
OHAglkzQSxNg1473167f0oyMP//0TUner4JH95meA/r+YeiocYsMzHj75r8K H/xqVpnD9Bzk
6Djgec8lnbPlo6KidK3y9/fXqZdSM81pMbFe4l8smacivOcExzW+bUn85n0o UD7vtHYyvxZO
CiLzk8x3a5HdlSRs/qFPmDHMT8LWJNDpm2FzlFNaf3s3zEtoSLO0UfW4htJd pSYcIMP2qx30
sry8/IUXXjD5U93GxqayshLExgRgUJed4R+sC/nQ8Cwlxam3E0/0G+rn95qv ubl5rVSW8Wvq
hVMbXpg8385+mJ6MD3Kvp/90ur/o5Rl/nta1m2W9rDbzVuq5/6z949g3HPuN 7oSNr1UX9ego
pp4x48+L+c4v+z5/PtB2xAq6eCfr2QYWKS+smTeDWnT6rawfLk19OcwYGl1e kzvs1GYKCcE7
vhkFBraI3j2b6BraUE0/QI1VrB30sr6+Hl9B4CoMdBRkAmZL2IL3N4euDwk1 MMtPV7/2m73G
umcfgVnX767kzH3JdYynk8eIYee/2+03O1xPxrSfz0yfE2ht7dRFIJAKBN0R GvdS32EkY4Tj
bO16mX7rgOH7Mmz0io7V+A0NDdzH8ekHmOrq6hq5wkgF3KyYt28kIgv0843E US9O5Na2kJFT
dHep04wWtJm+Rm+GCY2gyRU1kahGC8VhYURRjKV6bX2A2kkvAaBjYcYIGEHX D7fMC/1gc8ja
xu9rf7121Hnoyz2s+8sY2dmEnO3bMrps6vLqS67drf/gNHTG7Zv/GjXmb1oz /pL0udOQGd2t
B0hlAplAYIbwdZ9ohIW1k9PQ6bdvfjNqzJtaM740ySCH4NUfszpc4+Pba8T7 VGFtbW2jbpt6
KbYv5en3W9wcEVO13/fmp9IJ3FodhsWDoWjlKjI7mYpRQn16lI+u3HX6ek7U IRSF7d5DxMiN
ojM84+xy16VikStt6d6P2ID/t4lTL02ce0jh2ESZx/vcGMNtiNpMyox7f0zn 3KFkQmniCk3Y
JHqdRChdo+obVdhGNByI9nGlFb94s8/EVfK9YP2Tyuzy8hux3hRlKhd1V+/N 34ZOQoml80S0
Ab/pfzcQfaRYi9uBtiFrvKqVg5RNp9FiqtVTZiRTfAeqV2n+AzZMDxBSOYiS +XZa2gqhB+f3
rVRWTLVjzA+TgF4CgEH2pRnTYNHjhdAPzUI3h4asa8TKvJFaOX/hMHzBPpeY hwRdsOAKGHT2
x9wZE11F7h7Hjv08aowOqzSzfN5bIpnM7EJSroypl7GzkCEp8/KEgW6iYceP 3Vjpl4EAACAA
SURBVNaekcEV1P5SFhENOmsk+XiRAMlkHa7xpVKptbW1ipctM1N/ljqpQMo+ wPz+5Fcjfqvq
378/ivntdPqxP819i67Vnu1QllO6pDSMve5/nVnqJ48WzZOUzuMunXdmBJ7y R+ylNnAakl9z
JQn75gy9Iil14+WlpQXiK/hFReA4ooF9dyReOJdofrFIi0knr4YkYfNHU9Ml xI4i2433COt7
/nW3H4slrDb/kFn8crHmRnXuFC5tKGITszq9KSF9Fdp3UbV8qhCq1tuhOaJD NET0W8XIU8+u
Uj2Ufsp/2I3MeSIR6xR9s7j0fB9u7Y0+6Yo21CwnkN90ai3Gr56yzVHWV/Zf a1apKDD91F1O
FFUOYrxEu1fZCR/cu0jDH8vWx9jtywRvb6+4OLhYA+2OgGGkZg0CGWPV48UP tshCN32wXv+z
zK7Mcz26n0vMCduShswsZIwgbFsqYsyZzVKf560Q06BnU5aWPWOScj7cksF0 6dqlAUm7SLsg
gdlGgXh0b6lZvS5JQcwj7asYhsyvzP6LdwMx0o6ol+Xl5XTebxyuqal58uSJ /iyiSevTbycT
y5IVy8GDB+PI3377zT99f0DdGLxWe7al0zzYy6TQY5r/6zcy/Zw0DCmFHaNu eN25hE4Fuiny
XiqS+ClKk2gLaMI36eTJ7lzC9ush5WibqYGrnJaunNRnJTG2isW4Vt9oblTX TvFqiIhObyU7
pV6+mJhwasal6vNLlV3WXz2E3owU3szC1vONVZEvliL7YtXK6yxn3jR9LaY0 Lnl7ZOfkr6so
hAw9iHpQdAzj1cuEhAT66+XlZfyndPwawU5R7vl3XUBaTBJG0BUJzM3MkIyp 7dF93IdbzD54
P2x9yGadoidD1Q8fTRvdH72PRcps67aMkE3uXVAX79HCx48LGUbnw3tsSz6u LJnyx/7M+1Sn
ieeQMZN6j7J/8uh3gVTH2SqTIplEe4ECASNDrGIKiEdTqq6X9n1U7qRLiyXG 1vhYLJ8+fVpf
X8+w4ADWTv1ZDnT7Cf+OiFGKJf3FVuZ+35v4XzESN3aJdLJXWLPHh/GtltbY RV0P5DTGqoQR
8zfza6F9HzVrr3lojoVp0jNUvdXDq8bsnXQzcwzKOulHzHovnZVXLUcSf6nJ DdVoUS12EM2M
9BIVGhovFuNf41dKjPce0BTTNjDrGWmDVGoua8DiU9u9m3volrd2hn+gK/nA gS65ubnVstoJ
z9vLupCrPLYRvZ7vU9eAbv36+6CBrroyDhjkej+voLpeNtmj78SR9jg7/ntp pCO+r/05rXDQ
YB0ZpQ2IKdf+J5MIsJSSsETASEhKVfgCaYRiiSkpKfldQUFBAV5s9PnlitoX sB15x9cK25TZ
2dmIfYcNh3EMjsdrdfhjH5TSy2zqxSi3vryrspv8pqLsgfZRucIRU9Gc81la 8xoAazOJNMtc
uvJmlsI26vNVJvndlCBBonl3Ty7NKkYaGxX2HarYBfWq8moo98cijfJ11UTX LuuvHu5Kbi9+
FDRxUha1EVXXlukux8CGUmvzxotSPYh62kp3xzBS+/JuRAQWyzesrE6IxY4R EUODg432Qire
zTC7WfsSRMWE7UsZti7NZaiqi+A5pr4amXUTILR564KwTRvXhWzT0ivEcz7/ LNLRZYh5D9up
Hv0Fm2UTRtpLGdTw5Pd7GVfffme1zu7k9Zcjn0f0dxrQ1dKWIa5UmQz/CBrK y4ty0pLeXhSk
Uy+lEl0WK7sDiKl/Kqj+FUn/rJkEyyS2Mo1TLDE///xzU7NcjY6cH/R/e9D4 S/2PY5mkzlhs
ay4cNB+Hj0f+RSzWZl8uzfqmjzBK7oQUIUkR9V7O+Pa4iLPCl55iL7UTRYf4 RpLQK/DU5mFC
e/W8+qHjfV68ORm9WaypsEKvsMTjfdgy2YEwIiEK/PaiaBhJSbyaQrysulGE lFVd6u+PnHSU
Rga8ENerWvm4Ptprol0wG6seaboxkci//wgSFIpV1rqVPqBtWPyWejkoXmdz qVSP3+b0lSOh
7qI0DiI/ht9W3MEldip7gPBRZjtGGHuCCM6djb7CThoQ7tO7bU6AM2fOzJo1 S6cblrUssVgW
jhnjePPmiaoqcXw8jtTimM37bIbrSeQXHR1NllbHMbvFNDLTY/WePXtIxAC8 tJhdjfyOKDym
ecpIXib1ZHpTyWMa8cfq2VOglSgrK7OwsKBvIAgUmJmZcWEunqavqKiws7Mr KylPuXGDftaH
C3DsCv9w85b5lhbuT+qynuvmVlOb9cH7X2K7UUqeCdaHrN+O09g52PK/h5ed XXDlytfjJ0xy
cnQUdO+Bap/eyniQlZby98ULPzt89J13dd4C3r/3++Wr347znODo2MfczJqR Vf2aWXgvLend
RfOOHv3XO4u0PHlJT/hw8lTtA1+JD9ZMeP9qXEGZXVG5bXVN95eXfNOOR2fP L6TZJ9elcC3M
tTZuwJbaygdrZy0I+jcNr7v/yYiYKmxZ7hywnMYci/zrh7vOqPQZfOCM4jV8 E0N1AHAHRbVj
GJF9meDtTbRHIZY4jH/fwJKJ7wZDQxMQ0jb8J9pjHXP+PCtZ3mtmykVsD5pJ zD4Sudgjjjkv
pprmumYQThC/xlURSQRwxme56zJdT87NZc4rVJIkG/DZPxSp5EWvyFGP2S2G U6Jz2JfE1GNq
a7K2bP7i/W0LujBmXRip/i/+DB7cb/DgNXEXz6YkJcnYB5NOrm6LF6387LM9 Nbejw3c+1jXI
dsCQP7w7ZNXlSzhjItF0mZmT6+BFi4KOfhbZcPv89t0VG9aEarEvZZU6zcun xeWPelY8tm53
sWwzpDKzz/e8QcMBr67c73szoG4MF2O8D6FMiayv7CeT0T3zTWu3jEgvsRxi +xJLIxZILJON
25esoTeTipZ4xRE/13Pxu8UDlJF5Oal+R/4pFzWS4B85eWgAL9Ll3fPMu0Qi UfQeV8FirlCP
+N27B3mgxd6CPay9KX/3SzMG6BwIpPgi+/7mzxkz8w83frk59C+bty768P3G v/jjPe0VtZh3
3lm9o7jKLv/K9h2bN6zX+SrnlKkaGd8N2hFeaZ+btGPn++vXqUq1TIoY3ZP8 PMmtqBpaVW3Z
ScQSs3XPaaXvJz6e3vHwI7X5F9mX8YGWwu2t0uK3TGFHVDuGcT2/JKIYF+cY EYFl8g1WLLGt
OdTQt0r8RAP0J4jOvI+maV2j6l9lYZ9Mykf00PWaMXBadApkyCx047EQVt52 7QztYvacmYB8
UaB5pa0PCd0RHmpXeLXpGT/cvvMD4W9JGvav7ErMON35xlU+vuez6N+d89iJ ybNKOFEBk7Mv
OYYGB4u9vYkbNj6+MbFMxSaj2AWL2IHF0R5xOJCnXOcyyCPa+0D8u6yukQSr 484jF6SMZB+A
zs1dhw3HnZ+tEJPnj/Ko84MOCLwRkUSsknFIsDMnL/6cq1oMu2HA9DFjBOvW h9Lw2nWhH37w
4eYtb275cNEHm5v2UVm+ZDavJhvWadncMJ9w/bmGde7D98O5C/ono27BR6eA qUJHJxjr9wpC
Q8WhoYa8T3LyHwJ2DA7xkqrfRop35x6Z4Sof2aFIoBKJrUSikkzcGoHcIasY 76OWdbeLC1KP
gT7USeDEkiJFMjPGTCaAhukY6BdLADAc4xofy6fx7/uwQ2HXGbFbFMbHtsNt YCuMj9VkR/gH
SNCwft02vo0C80U3StuMj22qfQkAHdy+1D4aFgCMwhyJiNyv9XQCTMm+PHFn wxsjtkMDAhwd
+XvrZHgrHEGgVW4kgQ5N8yaa5kPeBbc17JOcpbHBDr6Rh1OZxcOVyyimJMLH Xn+ucBSimUZX
PAB6CQDGQ8XDh9AIrUzvNttSMyaa5lNge+Hud93Q7AsIGfAJ66CgoIyCUjSc iFzp7ehIHAPH
GvQSAEyXe/fuQSO0LuxQibahGRNNc2RJkrBY/m2Fz78OxGb1S3ITTmgsh5+f e/TtUh9iFZbk
ocOHgzLgYINeAoDpAqNCWpsrsRVttq1mTDSNWDcstSyxWBal1lPJHDr7bL/y 6fods6M83cNZ
wUxLzvDz9IumekldtSSkcNcqY7ANGhOiEhNEfLjQS0AvAcD4ycoA+7K1sWuz LemZaJqOmOX/
0vgTdzYgW8SJJY7hJBPNvnDizgV9w38cXNBRLJj9sFzOmoWiqVqG+7qnMsxw VhOPpDGLHbgY
lHZEcJSmifYrYSLs6ZPL2FEh0ElALwHA6HFwgDEWrcxvbTdCT89E01Qg+b8U LIdkmM/sC1gg
qWT29TBn7cvaRu1LZD/KD50pSctb4u65GBWwcnk7GsWEDJevDIouKC0t4GKw vgbRNJEERSlB
fov8oJuAXgIAALQdzZhoGtFPciKvrH5JVDLprwHPL6kmZoQfRYcXLUZULw1F ObKWGqXRcPCM
FfhUPwAAJkgzJprmwAKJbUpqWRomlgoLM9Ldczh/2fdMmtzUjHTvZ68WIzc8 lySnyZUyWHAk
DY4c2JcAAABtSTMmmubTr3w6mn2B/BqOvU8Eo7ocEhPswA7SJUN5iJDyYoKC 5HlSj8gH8tJE
sXDsjBbj/R6eCQDfw2t7nuV7eJ7jVWb5SPtcea0c/s4Fgzafecz2JTql87Lv sraRSWYl8Zv2
olVbYCJiws6fiZ608ffwmg183wdQXliM/Ht4ANCOxIW+OHu/crjsdwFDvENv GCCWKKmsgkwo
j2XSbSPCkqmZzHAFBa1tV0AsATVALwFAnbRD02duWl1bfKjmYQ3h4cPh017B kfw0w5eqW5zx
X2dhm1JEF4TirVfzbc9nls/QKB2v2mKyTbd1W+imjaE0vH1r6IZNodCdANBL ADBZalED6j4K
B7r3Rd0Vka7iv3EJrn6yTDPXxSi3+XwhtHdetjIlc4YzQvnn3u+9knyIbV9S 2QIRZzUSG/S1
gySpwnmLTVQ7z5Vs7r1Xs52/fu1gFDqITt/bIkYJG4fMIWmXncre6mWkBueO 7Rv2RO5dE7x6
44awbVtDdu85uHqt/6YNO6FHAaCXAGCi1CFUU6Rnff7d8j9qxvo7q7y/Kew7 FOWTQFQgulpR
vgVJsOYd5yxOSfze2GlZFVvlzzjjR2wZced9T5JSRIUzEl09jWWZ9cdmHpvj Rjy9RGLPZWLR
Nb422751M2Nmzsi67tq9d83qwLXrVyMzJmL3P9esfm/Dxg5pUMNEYADoJQA0 Qg35X/nt9XMf
f6SWwEZoE7ddTMPeG+LlsVH5pVuQ0vSTFN1FiAyl8z89k9U3oYfPsjnU4sRr 71yMOngw6qAi
9bJp89BFdHqVXAlFC8q2YR29yNmq/oET7AKJcVkmNsIWC9/x/u7IyKKSXDMz M4aR7tm9TyAQ
yBimQ0+qDWIJtL9edunSRSaT4fMKWh8wTmof13J6ee7Tz2e+p30GqIcPHyYe O8EtTvPPKpIg
ESeYpfkH947diop026Cse1apr5w6aiIUbyEWaubx3rZ2qrmMg5D1W1avXo3P 68iIjwtL0iN2
Hd6zZ4+ZoEthUV7H7QZgXwJqtINo2djYGP7icMelurra0tISeliHtC/ralkj s4aI5d/fINqp
8UfFUmlcIiSe5zbb7VimQvw2vZT13QyR3O6kcamxB936yvVUOGKaf2BKpiKx 3bFMHINeOyfP
n3nMbmN8qVJKN+FFLMbzs79jVdkI2bjhQ3wTXFiY9dGuTzdtDMPyycgEkbv3 dFBn7LPYlzt2
jICTCOzLlsHJyenBgwe9e/c27ZYtLCx0dHSEHtZx7ctzx87PXPAaqqnRYlmi 7mpiSRAtKL96
zNaOdmzu/UscJq5U1rg8fW+LCEmKFCZj8jG73raKxFhaRcoYtPdqhViUmR/l OSSKGJSrTsUO
cSMlE5essb5fgiVzx9aNGzZtw2EsmWvXBGzYuK2z2ZfkC7TIsImmKWlHBB4Z jc0uzaZaovbp
vFbh2TaEcyd7tnod2412+F4B5tq1a9jKHDx4sLm5uem1aX19fX5+fkFBwcSJ E8Ht3Ma0yPcK
vvz7MGdXh5kLZmjdxEPUS4tYGk4nfquyY32voNnGZV3dXAuLk+vX3zFUYdDh DJdZKoJJ5ipB
IThKHuh3xnAd4vI2KfGzboiblqwNNL09Lizt+L2C8ePH37t3LzY2ls5RZ2Lg mwBnZ2e8jyCW
HZSFn6b/Z8P4bw6e1pXgz9uvNbNo+gGgvclboZVN0b5MTp6LxdLX905MzFwc 9vQ82ajmFGQc
9ozwRMHy2abVsfeJiCBilBHk0rqfCnvWDZGPATIRrPqbLu02PnYIS0dpppKS kpSUFCsrK2wy
mqRNDLSYIupHtKC8bAE0b4egSWKZkJCQlLSCimVdXYCv7/6YmBHx8SMmTDig zzFbejva3TMC
ORSwk2f6IGyx5bmjJUvYCb4iUUxJCAoPj0bsjF+RkcR0Q6y/lKIw5dK4uMOp JS5HfXFqkpdn
Yqap5XJorQ2ZNvA+iUFgpezWrVtlZWViYuLYsWNhIA8AdBL7Uv8vTUkH+HBi yYapZM7FIpqU
hHT5ZuVyidAoPxSOBXMUFqsMlxKGCVG6SRHyCynBqxWez8UM1jI2M5lfujRi 1O1gD0TnoCZ6
Fo5SY4KQuj92uFqukNbaEOglgLBAisViLJZUMrGVCZIJAJ3BvtT/S8FySO1L LJBYJrFYWlgQ
+9LC4qRe+5JM6rUkMlJuxQX5hYwiv6Ow/pTqrhb3oJBkiQnhzUrNymKE9hk0 1XKhVtsQ6CWA
2KeSWCapZF67dg3LJzyeBACTty8NTOxFuJOcPBfLJHXGYlvT01PvkB9iXcrt NWrE3cbmXSOk
HXGI9ithIuzlw20Moxm5mrch0EuAJ5mTJ0++efOmq6sriKXp0VvYCxqhlano cPZlk/D0PBkf
PwJbmdiybEQsWblELiGKJTKXdHhyHkIujW3EvR91gJbkReL8JJ/DmTTu+eJR l1S/xnMZtDfN
2xDoJaAAy+TYseT1m+rq6pSUlNGjR9vY2ECzAEAnty85Jkw4kJS0Av82asCd 8UV+Jcpnf0SP
fH0jqbPUvp97pIdDJBlVo5pr+KyYow6Kt6FQUIzqjNNkYI7P8LQ8mlf5Xodm Lm6rLbshE6d9
3r80AVJTU3Nycrp06YLl08HBARrESHiW9y/h42etTUgssS9N+/1LxA7/MfDl S6DDXFjY9y/B
qdhMPDw8nJ2dpVIptjJLSkqgQQDA9OzL5mUEsTRVQC+bz+jRowcNGoQlMzk5 OT8/HxoEAEwJ
8DcAoJctbGW6ubkh9nEmtAYAgH0JmDAw3udZEYlEdiwIvrEOAAAA9iWgByqW t27dSklJyczM
hAYBDCLtiEAQHFtqQCqB4EgatFdbA/5YAPSytRAKyYQTWVlZqamp0BqdGQOn P0xLXnL4sHv0
bVXBLI0NphoqD5BUqYxhA/a5vEBLAP5YAPSytXB2dvb09OzSpUtOTg62NaFB Oifc9IeNihuZ
mGKxp4ZgKiDzRfjY41RBLvC6UseyLxO8vaH1TBJ4ftmSODg4jB07NiUlJT8/ /7nnnhOJRNAm
nQ06SQX+9fJq9FtobTExBdAkoqKidK3y9/dv0g1T4/NF8z/QaqrzRqrQ4WeT Br1secmcNGlS
amrqoEGDoDU6G4ZPf9hmE1MATUWrLurRUXVCQ+PFYnFoKIqLazxxkOLmRn5M TfXY8WaTBvsS
4GNjYzNx4kQcwFZmQUEBtjjhY7MmTxOnP2zDiSmAJtLQ0MB9/olhGEQm56oz MO/diAgslm9Y
WZ0Qix0jIoYGBxu6VfJduuSSCGSiemkis0mDXrYW9fX1WVlZ1dXVV65cgVmm TZsmT3/YdhNT
AM05czmlxNTW1lZWVhpyw0QtSyyWhWPGvHHz5omqKrG3N45s3DGL2MfZQS6z Sjm3POtfl98e
cZ5avvudjVLeQskNVS6CLqstKm+8lM5/tqS22W7HB/SyteDP/0WnzATJNFWa Ov1h205MATQN
qVRqbW3Nj+FeEtM1XzQd4MOJJQ7LJZN1zCYg5KXLNxvp68B5DErwvVCs3C0f QRSH3lOR0BF8
mB1iVdzvwbHkETf/Fip2VES/M75sJpIHdw3PZJVF3oND+VYUhc9CbbRd0EtA F5aWlpxkxsfH
wyzTJkyTpj9sw4kpgOboZXl5eUNDAzYxcbimpubJkyd0la75orEc4hsmLI1Y ILFMYrF0pPZl
fHwj9qWa/VXKueWVznbcPYKiC0pLCzTd78GRkeyAMHlZfiEhLkFLPARLSKmM DzFaVRb522W3
Qgv3TU6b5dJG2wW9BPRL5uTJk5OTk6uqqqifBzBhDJz+kFx0+NCHO4i7JMmH 9UREKH/VU2kk
1rYINAcslk+fPsVnK8OCA1g7DblhQnFxjhERWCapMxbbmkMNGfLzTGjcG7F9 hP3GBVnlo7qo
/S6qOS8stcR2OyAwDqXV6datG7Ysx48fb2NjU11dbcizEKDjMmHCAeqGhabo oJSUlPyuoKCg
AC8afs4ODQ7GNiW1LJsw2EcT1udwhv2oExkb5t7Pnhcj94sibAAuSaYx2OYT HEkjv+SLFcMX
l8QEZRSkqS7yh5JF5tE5leSFt9l2wb4EGsXc3NzOzg6LZWJiIr5dxfIJs0yb KtjOSEpCBg3x
AIySn3/++Znyh4aSl0nw3zNh7xMSE0z978StSSw0dfc7VjllDJvIHoXERDs4 cJnsR/EX+cNu
gjKOCgSRXOGlBW203Q4OzBfddshkspSUlOLiYjoUCCSzNYD5oo2ZTjJfdIK3 t1ere2KfgVLF
O77QIw2/sMB80W0MvmqPHTu2T58+2MTEhibMMg0ApuljMGaxBJ7lGg5N0PaS 6ejoiCUT25q1
tbXQJgAAtCn008TQDk0Hnl+2j2TeunXLysqqW7du0CAAAABgXwI6GT169JAh QxA7a2Z+fj40
CACYDDARGNiXQMtTWFiYz4LY6cCgQQDABICBY2BfAi2Po6PjsGHDqJWZm5sL DQIAYF8CoJeA
doYMGTJ69Ggc+OWXX7jPVAIA0AntyzsnNkDrGTPgj21/qCcWm5gPHz6UyWQw +RcAdHT7shmS
mZCQYGvgRNMUMmtIRqPzf9C5RZr/VTrVSa2Rrnmt2/idzlbZXOPTWYNeGotk du/e3c7ODotl
WVkZDkCbAECnsi9tCy58d7fbbHQBIYP0Mi15yeHDh6Nvl/rwVaNUOd84G+iH UxmqlbpEiP9R
+KbOa61en1YW1GZuztDprMGUMRYcHBywWObn5ycmJmJbExoEADqufdnULJKs JCyWK/7mg39x
2JBLfEHGYc/Fnu5YMLWupy9ZstNqOrTgvpH5c/Ka86WVNn7ps2mbY+cyYFIP N5YO7EvjAluZ
Xbp0waopk8lGjx4NvlnTRNXHBfNvdWb7krhhWcsSi2VqUT3+PfCv2NlDz5b3 m67PMUumHPeM
QA4F6CixMBF/CmgUiWLIJJXh0YiddiuSneINcZM+K7scfyLoEpejvjg1yatH aei81khjymjO
6lXZCq9MUh+F5cefj5o1BP3cfX2XaJwL2mexbrXNGQDopdFZmZMmTcIm5m+/ /VZfXz927FiQ
zA6HQZ8P5XxcTXVwAR3BvlSbVlrXRNN3TmywRYgTSxyjlEx04c6JCyPe2K5P LhEik41jwRyl
mPA5ROmQRMgvpASvVrglucne5F1u1G2ViaDDUWpMENLmw1ROai2XGHtchNqU 0Yrpz4erbOX2
rBBFmaQ+bGy4r8p81GSqat88HMNoOxeUs1iHt8XmQC87HDY2NnSW6eLi4lu3 br3wwgvQJh1J
LBMSUJNGbRAHV3JJBAK9NDH7Uv8vBcsh7ipYGrFAUsn06GvO2pe1eu1LMtfW kshIuWUV5Bcy
ipto2jCvRlBMCG9qaG4i6Gj993ZsEclpi4c74O2rThm9yE/7VjQrrjYf9SyS bJYuI4+bxbpt
Ngd62UElUywWp6SkDB48GFqjgxEaGo8PXmgoMvCj29TBpd31xLmL+H4zNkrN G2avjKDLaotw
WIwWVhS9+mUlUcmkv0K3CXr7DLYu5Yah3LAq8WtsO2lHHPgWYfMqa++z6LAA C+YspO7LlGtt
i2xFK228Oe2Ar89IsbS0xFddLJyVlZV01kxoE+PnbkQEFss3rKzwLw7rSxrp 60DnFcMnfAgr
aJEZLiEMw8wqoB4khimJyfA4ksZeCVi/GSEVeQTHlsq9YWwiv+jw2FKUdoZm KolhJ/dVWwSM
HSyQ2KaklmUjYkmtJuUgHjKhc3RyngEbUUwMXZIXiVSmhpZPBG3IMJ7hnoeX JKfZa0wZrWsr
6oKrMR+1QTLdtpsD+7LjkpqaWlZWFh8fP3HiRCyi0CDGCXHDspYlFsvCMWPe uHnzRFWV2Nsb
R2r3qqnZfaU815OaB6m0QNNvFqzmngoJcQla4iFYQkplfIjRqrIIdADK+02f jS7g30YtxTO+
yK/EXlUUfCOpN5K49z0cWC+FmtDNijnqoJj2FXc/dlCo6kTQw9PyaF59g2Ac XIh0LV6sNmU0
itW+FfX6aMxHrZyqWq9d26ab0wnMF23s0MkysZWJxRIks1HaZb7oBKyLCHFi SSMdqWTGxyPN
CRE1Xw7T+t4YDXMj/fiJHfIWabuosX5b5fVObbHd6STzRTebOyc26BrgA7Tz hQXmi+4QmJub
Y5nE1/Tq6mpsZWLhhDYxNogchoZiacQCiWVSRSyxfdmk2YM1PUiafjOk4Z4i v8Gxpdj8LIkJ
yihIU10shUPUMQCxNHLAH9sxJNPT0zMlJaW4uBjrpY2NDbSJ0UmmlxeKi3OM iMAySZ2x2NYc
2iSlVAimugcJIXW/GbY01dxT9igkJtrBgctkP4q/CMN9AKAlAH9sh0Emk5WV lTk4OOAAVs3e
veF4aaFd/LF8Ery9yfjY+Hiv5oiliQP+WKCjXljAH9uxwBd9KpbY0ExMTCwp KYE2MUZYxyz+
hZYAAFO7CEMTdDjV7Natm1Qqxar5+++/Q4MYG3Q0rKEfKwAAAPQSaD1Gkye/ GQAAGxRJREFU
jx7t5uaGJfPmzZv5+fnQIEYnmeCJBQDQS8BIEIlEWDIRO2smOGYBAADaABgf 24El09LSsqCg
ACbLBAAAAL0E9OHMggOZmZlUQaFNAAAAQC8B7VRVVWVnZ0ul0qdPn44ePRoa BAAAoDWA55cd
Hisrq7Fjx9JZpm/dugUNAgAAAHoJaMfBwWH8+PHm5uZYMq9duyaTyaBNAAAA QC8BLdjZ2U2c
OBFL5uPHj2tqaqBBAAAAWhZ4fmk62NjYUMm0tLSk85ngMDSL4fxw7gI0QuvC fnoTAEAvAaOQ
TPxLp5im83+BZBpOi3w/FtDDFfb7sQAAegkYC+YsVDVBMg0nK+MeNEIrA+8K A6CXgDGBLcvJ
kycnJydjyfzxxx/Hjx8Ps0wbgoMDTHzVyvzGQBsAHRcY72OadOvWDVuWNjY2 jx8/hhGzAAAA
oJeATszNzbFk2traenh4mJnBgQYAAAC9BHRL5qRJkxwcHOrr6xMTEysrK6FN AAAAmgc8v+wU
5OTklJWVYckcO3YsfJ/dQNI+Vw6XHf6OQa+aSBI2DplzkIb3Xq1YAB/0BQDQ S6BjIRKJnj59
Sr/+gyUTW5zQJvqJC31x9n7lcNnvAoZ4h95oXCwv+twr2yYkS5nH7Hofaz3J lMRv2otWbREL
uQAcMwBoZcAfaxh5n80QrIlvqWQaxK8RzPgsr1X3YPTo0c7OzlKpNCUlBabM bMSyPDR95qbV
tcWHKrP2Ff+yMy9h/fBpr+BI/p9mrjsX0XcrOd0SLShrE/tSKN5qTGK5dVso F96+NRT6EgD2
JaCpdztFueffdXn3PNPknN57SMDvSKvXks5egq3MoqIiMDH1UIsaUPdRONC9 L+quiHQV/41L
cPWTZZq5LiKfVUJthqDba6yLdl9S2QIRaw5Oc3tt9koSRXy29hoxIn6uZd9l bWP1EBusnmwS
nCbb+evXDkahg+j0vZXoI87Q1L8hkdJdvOxU9lavlhfZHds37IncuyZ49cYN Ydu2huzec3D1
Wv9NG3ZCjwJAL4EWQLybYXazetsmm8OSKRQK6ayZZWVl8CxTO3UI1RTpWZ9/ t/yPBhUkid/7
2tCrFeVUq45nls9AKOq1fBxTRn2q8ZKVGjFbRtzZGzstq2KrUB4zAse874nY cljhjERXT2PF
pjJp6Ia29D03xy2prIJIqdu5zLIWtn63b93MmJkzsq67du9dszpw7frVyIyJ 2P3PNavf27Bx
C/QpAPTSVMj7bIZrpsfqPXv2rI5jdg/AS4ujEbX6iNWozR5kIanFODMb5ToD xc096Z25DsfR
ItUKUW6Fy9sO+0rFMiMj4+7du9RJC8dfDfK5+pqH3OK5jz9SS2AjtInbLj94 3hvidcvlnYvo
9CpWl4QePssuFkmwjPmfnqmmVGoxOFfUwYNRBxXLy6bNQ1w5rKd3G5bAi03e kL2zf+AEu0Bi
XJa1cM8L3/H+7sjIopJcMzMzhpHu2b1PIBDIGEYAnQkAvTRF9qCZxNQjinhy bi5z3kWuo2sG
8XWN2oOcdu78bIX43XfPx2VSfyz67KRiletijzjmvJgmUxbC2wqb16Wd9hZf zvDvrVu3qqur
RSIYx6lC7eNaTi/Pffr5zPf8tSZ7+PBh4rET3OI0FHtHIm6hZ4msT5Vnpl5s gTKF4i0V5VtQ
5vHetnaq5T8zIeu3rF69WiaTRUZ8XFiSHrHrML4rNBN0KSzKg+4EmAww3kdp K85kBS0vJxVF
L3YVsBALcc+5eHVblK7kG5rq9mpOqt+RFXKVFa844peak6eyFTRA5Neue4s1 kj7OzMrKyszM
pJG//vorfAmI2JZ1tayRWUPE8u9vEO3U+KNiyTcuR0xDs/fGS+RL7PjYUhz3 2jm2dSWpsQfd
+hokpsIR0/wDUzLlSrnJ7limUFkOW/LG+FKNLI1uiBS1EddPND/7O/+sIkkL N9rGDR9i47Kw
MOujXZ9u2hiG5ZORCSJ37wFnLAD2pWlLp4arNE8plq6c9dmEp47RmfexRhrX XlJPLDYxsWSa
m5sPGjQIX+/u37+PA2BfYkU8d+z8zAWvIW2TiT5E3dXEkmiW17Z7aOMQu9fo onzkzsrTm9x6
2yLiHb23RYQkRYYZgslYbkkudrwPLkakjCEli0WZ+VGeQ6L2JWU5y7M0uiGh eNWp2CFuvREd
79MKY2qxZO7YunHDpm04jCVz7ZqADRu3weUEAL00WVwGeaDFClepXB7Pv8tP 4THIRWFE4uuY
rkKivQ/Ev8uqbvyBxdGr484rRdeoJLN79+6pqamOjo540dXVNSUlBfSy8nED K5Yz6KNMDbHs
pSmWnGSWl21TU6mtZRVb+Ytb1MOaMfLXUVQ9AqoxykV5FgM2hDSr19Ks36Qs H8QSAL00dcS7
mbg1AlfBYrLADdVRCOG761YLvAX0DRA/zqU6QORHfLiZR45wheQemeEqoMMd SCFiY91dBweH
KVOm4EBJSUlRUZGVlVVhYSGVz07Lwk/T/7Nh/DcHT+tK8Oft1+BEAYDOhuDc 2egr7KTn4T69
oTk6Ibdu3cIaiQ3N+Pj4mpqa3r17d+vWbdy4cR10d8rKyiwsLOhoJoECMzMz LszF0/QVFRV2
dnZlJeUpN254jh8H/aFV2fkzeT15cl3K2BdfpDG42WnYzsEW2gcw3gtLSTmC 8T6Am5tbQ0MD
FstevXqZm5tj/cCS8+jRI2gZAAAAPqCXnR1LS0t3d3cfHx9HR0dsmWFTTCqV 3r59G1oGAACA
Dzy/7Fxg8/HevXuVlZXV1dW60ggEgocPH545c8ZoBd7GxsbV1RU+6QcAAOgl 0Crk5OQUFBQM
HjzYw8MDq04H3Qus9Fjv//e//xUVFY0cObIFS+4t7AWdpLVv2KAJANBLwNgp KyvDAjNp0qSO
viOWLI6Ojrdu3crPz4fv+QEA0DbA88vOQnZ29pAhQ0xpjwYOHIitTDiyAACA XgItSXl5ee/e
JvXKkI2NTWVlJRxZAABAL4GWpL6+3tzcHNoBAAAA9BIAAAAAQC8BAAAAoP2A 8bGACjt2jFi/
/g60Q1uQdkTgkRFTEuFj31iqJehwKrN4eFMKL40NdvCN5EVoLwEnC0chjVQB AACwLwFVEhIS
uN8WgMwUuiaeCwoEMz5r5hQt8Wuan7ftuXNig0Fymbzk8GH36Nul6gIWHFuq DJBUqYxhYsnl
pQTFlDAKSmIyjsaWNkluVaoBAADoJcAjKWlFXd1c/PtsxSjUzeXd8/J5ROMP LEZHchl2qpem
6SMO6Z2Zu+Pec5QWZBz2XOypIZgK7H0isNmHUwW5tMB3jOz7uUfmlTQnI1sN ODcAAPyxAEdy
8lwslr6+d2Ji5uKwp+dJY6iVeDfD7G7KzNztjW3Bhe/udpuNLiDkpVcub0e7 e0YghwJ09Hap
jw+KDQ7Pc0dLlrAu1EgUUxKCwsOjUWQkjoiMJM5UxDpmKQrnahoXdzi1xOWo L05N8moqHKu7
sxDfTxtE0nHGrkrhvKJINViHrTIju3HWkevn7uu7hF8fAAC9BEwabAxRyxKL ZV1dgK/v/piY
EfHxIyZMOODl5aXF9uOZe6vjWBOSTKyd6bF6z549fn5+0dF4hesMFDf3pHfm OmbmOZrBVZC5
mqRQz0tzL45WxK3ImUHTz0C5BlukxoEkKwmL5Yq/+Rz4V2y/rCSh24RG5BKh UX4oHAvmKKyK
GS4lDBOieKBYGouQX0gJXq14vriYYRbTzDhNbGnEqNvBHiiVYeTCGY5SY4IQ 72FkpK+D8gEm
UTR7nDM82q+EibCXFzIqRL56uErht2eFKIoi1WBjw33d2W0R3TySxswi5efh GIarD5ihAOgl
YNLs2DEC/3JiyYapZBLHbFISUh/+Qy0+Tjt3frZCTEVtD5pJ15BYEZY69NlJ eYY4RGNc0O7d
Gnnj17gu9ohjzstld8bF3PNxqxXpO9A9B7UssVimFtVTyZw99Gx5v+la7jmI XEYuiYyUW3RB
fiGjyO8oImN6TFLeEJ6gmBBcBooJGc7pXQROEM1PH8QZmiRnctri4Q54s5Gs yarY8CI/7YVr
1lexLftRfkHRBaWzSLJZYFMCoJdA5wHLIbUvsUBimcRiaWFB7EsLi5Pa7UsV cxCbQEc4c3Gm
uPHNaebNy0n1O/JPmpU88XyXaGnHasM7JzbYIsSJJY5RSia6cOfEhRFvbNew LuWGodygK/Fr
bCNpRxz4pmGTKmjvs+iwAAvmLKTuOpVL7LMUDgCdBRjvAyAsilg12SeXI6hY 4jCO0SmWJ+fm
0lGXcaubtKFnyWvMYDnEduTsobVYID36ko8o4V/WvqzF8epiSa015SAebLCh 6GRDRv+696Me
z5K8SHk+3zNpCjUVBMfqGc8z3PPwkuQ0YhvifxQyLTiSpqtwdcFVbouYxoq0 AAD2JdAZ8fQ8
GR8/AluZ2LL09NT7CqbHIOooxaYhQqKmbUYjr8sgj2jvA/HvKh6DYkE9P6gj 3nPgn35ZSVgm
qWWJf3U9vzzji/xK7FXFyDeSekHJQFYPh0gy5kZN8WbFHHUQCORLQTHs0NXU IwJ5FDYbfYan
5dG8WgbfOLgQpVy8WJmFuGuHo1jthatXw94nJCaYpqD5SgvglAE6G4JzZ6Ov WIzFoXCf3tAc
JsyZM2dmzZqlPw11zOpywypQDvghY3vQXPKckR3vs051+M7qI0dSF9NIxRNN F2151cf74PSK
EhQDgrj8je5UWVmZhYUFVQSBAjMzMy7MxdP0FRUVdnZ2ZSXlKTduvDxz+rO3 850TG8j42KG1
mmYlEBJL5r+cXJcy9sUXaQxudhq2c7CF9gGMFnyJAL0EvVSnY33fxwj1kg78 0THMB/QS9BLo
wHoJzy8BFeBjeM8IlUkQSwAwPUAvAaCFAU8sAIBeAgAAAADoJQAAAAAAoJcA AAAAAHoJAAAA
AKCXAAAAAAB6CQAAAACglwAAAAAAegkAAAAAoJcAAAAAAIBeAgAAAADoJQAA AACAXgIAAAAA
6CUAAAAAgF4CAAAAAOglYIR06dJFJpNBOwAAAIBeAvqwsbGprKw0pT2qrq62 tLSEIwsAAOgl
0JI4OTk9ePDAlPaosLDQ0dERjiwAAKCXQEvi6uqKDbKMjIz6+vqOvi94F3Jy cgoKCoYNGwZH
FgCAtqErNEHnYfz48ffu3YuNje3okmlubu7s7Ix3x8wMbvgAAAC9BFqBISzQ DgAAAE0Fbs8B
AAAAAPQSAAAAAEAvAQAAAAD0EgAAAABALwEAAAAA9BIAAAAAQC8BAAAAAPQS AAAAAADQSwAA
AAAAvQQAAAAA0EsAAAAAAL0EAAAAANBLAAAAAAC9BAAAAADQSwAAAAAAvQQA AAAAAPQSAAAA
AEAvAQAAAAD0EgAAAABALwEAAAAA9BIAAAAAQC8BAAAAAPQSAAAAAADQSwAA AAAAvQQAAAAA
0EsAAAAAAL0EAAAAANBLAAAAAAC9BAAAAADQSwAAAAAAvQQAAAAAAPQSAAAA AEAvAQAAAAD0
EgAAAABALwEAAADAuOkKTQAAQLtTWVnZ1CwMw0C7GS0NDQ1GWzdzc3PQSwAg Z4KVlZWZmaGO
k65d4RQwCsrLy6Ojo4cMGdKoCuIEd+/enTlzplQqxYHu3btD6xnbrQ8+js7O zkZbQ4lE0tTO
Zt3DBvQSMEGwWNbW1tbX1+PrKaNAJpPxzwG8iGW1R48edXV10GLGwKVLl3x9 fQcNGmRIYpwM
p8eBt99+G+54jNCy/OKLL1xcXEyps/35T7NBLwHTBIslNjTxlRRLJuI57hge 1dXVoJdGhYHX
L5oyLi6OugfwvRE0nVHRrVs3k+xsoJeAaYJlEl9JqUxyv/xFjpqaGmgu44Hv BqAsWLr22KFd
mi4EOIJGrpcCgaBjdTatPU2ts8H4WMAEwaKIJROfD5w1iRRuWG6Rns/YEoXm Mh5qVcGXMHoh
U4s3mf21sbHR+msCCIwYzc6mq6epdTbQS8A0zRROF/kiqpnSmEfxdULqeCx5 730a+cme9+tU
UTvWUhZZY0jbFa1VwvX/97//rfnbUuW3y+53FL3k9yjcx2gk7nV6OhvoJWDK XM18SAPcaXwt
u4qvnZoOQMAY7Mvlq7fQmMhtjdzyA8aJmRGj1ZmBexqNx31PV2eD55eAydqX iVnklT786znE
Gt9U4sjrOU+oZI4b1EOP0Qm0F0+fPsW/G7fup4vbNgXQGD3U19fzHex6aO1j 3YJP7JrxmMAY
dh9vgquG8T+/1OxauL/Rvhe0cRcOa2YBvQRMloluNlQyk+89xpJJxRKDxVLT WwsYA3Twzvur
l2zZc5gKJw4bksUYLtAt2KOaYUMbye53IL3UHClGex3tgVrHkYE/FjBBuGE+ E4b2pDFYMjmx
hPYxWuoVhAS+zV3C6jWAhjJ+jP/5pVqn4sQS9z1dnQ3sS8BkJZOeGFgyk+4+ opFjB1pqfasE
MJ6jxoXXvbdw58df4kD4vi9wWFeWDv0GbXZ2ttZfeC24jTsb7Wm01+m5OIBe AiZ7JnD93nOI
NbYvxw+2YlSBhjJyqGTqEUtOWujDs2e0hwy/vDajBF3ZX3rpJbwLmr8tVX5L tYAhu89PY/z+
2Kb2NNBLwPTtSwoVy5a9vgBtcyHTnwBGOBsnHUsvDelpoJeAaUJfR+OeVfA/ 8aP2uR8ArssA
YCCgl4AJ0rNnzydPnmi9klKZpN9bxwELCwtoLiPht99+wwfOwJQ0kJeXB4/6 jA18UKytrU2v
s4FeAiZIYWGho6Njjx6Nj4O9f/9+v379oMWMgb/85S/Hjh2ztbU1JLFEInnz zTfNzc1v3br1
+++/Q+sZFc7Ozn5+fhUVFabU2ZAM9BIwUePy3r172L6USqUNDQ1a/a5mZmaW lpaDBw+Gr3Ub
CTY2NgEBAU3NJRaLW7tiP5y7AEenSTx+VJ149ZqRV3LQwKEGpuzdyy7l+k9j X3xRRS+bMb85
vAgFtCrNmAa9vlaK/3rbCPFfo4mrHlVDIwONQq+VbUnKjRststGWKqctS26v DRmCUi+tra0N
n5Ue8/DhQ3j2A7QqVlZWTe2T0GgAALS6XjY6Kz3SmJj+ueeegxYEWo9m9Ekz eMQAACaNfR/i
OiotlqiF21Qvke5Z6ZGOielBL4HWpql9srsF6KVJUBob7OAbyQYPpzKLh2tL EI5CInzs27hi
kvjNw+ZEKZY+uiKZ79YmG92HAsPEwmcrJvNr4aQg1ajIxNJ5omevoEEla+5F s/YLqyOWSfyH
A/xwW+ul1lnpE7Mq6Uc4NSem79WrF5zXQKui2SevZj6c6Gaj9bN2uE92t7CE Ruv4pB1xiPYr
YSLsqXAeSdOmmE2QXqqsLSWxS09l0ks8udzHS55RxpqhGVqzGFCOaJ6kdB5R t+N9bowpfkvU
cges9Uo2KslU0Us6Kz3ivc1Np3dIuvto/GArLhk3MT28KQy0Nmp9kj9Fl+bH t2AAmqkYlwUZ
QX6zqKzZ+0S01IclcFERLVpPYd+hh26UhiFhG7ePUBwW1qk7SHu5ZFX0ks4a yC3SaxNivyWm
mbOhoQH0Emht1Pokf4ouzW6J+yS0mElcDkf5IYfw2BIVU1DpoQ2KwWt0xduz 5qnAg04Ddji1
xOWob2QkikQxJSEonDM05VlYXy9rd/q5+/ou4aIMtPOK7i51mqHqjSQeWjts 6j0YilauOrT3
x3Snb+T+W/+T6Vu9ELECp7rNmRtEE991+npO1CEUhRQ2a1PsS5SwSfQ6Kdv/ 28Spl5pejrwo
HVUV8p3PipimoNEs+N8H5zcLVx3Cgb0/8s3QpmzIWJ5f8m/qNcWSfpCTPzF9 k8YuAsAzGppc
h7yWXYUU0z6r9UloKNMQTJ+IEhTsIPDlVLA0NpznoQ2PHRWiUEu1+IhRt4M9 UCrDDKfCGY5S
Y/BFm8qkIouvO5tA7uudhVCkb14q24/YQkr1+2wPzREdoiFycccXbKHcG6nw 0AbiNFlO6ZLS
MEnC5o+mpkvChPJVHmTVnAdXJKXFNObOjMBT/qh5zyYzz7/u9mOxRETE5kaf 9OaWo6uqYSNS
911UjWla4SItzbIS4X0PQxKs9F9nlvrJ1TKhKRviq2ObKaVO+xJfgDix9Bxi zb8MqY22APsS
aBv7kvsSrFQqxQE63whevJ7zhD+fJXwS1rQkk2EiqOTFYtMwOpKgWBvkt4i9 1pbe1ohH0Sgm
RG4gDl+MiyiNjVa53N7mEmA7Nii6oHQWEeVZhj8gXaphw/EHAS09FUh+p3mQ q/+dS4eiog5x
w4P8p86bhhPMaJkhQvZOS1dO6rPS/9u7YcViXIdmFqOzqkg9JlDcNBNTS7PI 913oMc3/9RuZ
fk5ssjvPuiFugwmbzvfd2nojsNSfX3Kz7NIpA6nXS/Oj1TQ96CXQBmalWpfD YbXJn+Hj6abM
cM/DkcklIS7qjlKlCuqKbzMyjw/jm0dqa9Udj5dabLtCrzBiq2V+LbTvQ7yp z1ygZlVVY1qy
WbB2Otnr2nTzNtdn4iri+N3aekfaTJfXi5uYnvq+6G2+2oVJAACtPw26mleD E0s6+TOIpelR
GhssOJImX0hLXhLk4kAswSXJaRqrNePJs0/fM/LV2DgNji1Rs8qUCYh16t6v Jd5IcetD7aGy
B1EqijZi6tKVN7MUxlafrzJbsJlIgZsSJEg07+7JpVnFZc8ovhpVbYHKazTL oQeltLzUi1Fu
fYUt2Uqi+cWSzG/9284fq3WWXaR4UAQT7QLtYl/y+yQnljD5s2m7YlOPcPdL 2HwkTxN5ceSJ
5nAUq5GWxqPhvNwk8/C0vEgPh0gy9EeeJSQm2IFNQHOUFjxbfUUzvj0u6qNw IC49pWoCJh7v
I2QlmTzsFCENrykZZDtRdKgxA0v50BRvwt8fTUNCceC3F0XDyHaJS9at9IEh 5eizVtWqikQa
Mc/cLMSBTBczw0RIUqRr08aJ4NzZ6CsWY3Eo3Kd3SUmJhYUF38uKL0NULPme MalU2qdPn9u3
b3t4eMC5DbTi3VzXrpp9kj4jUJvSkuuT/fs5N3Urdg62ZSXlKTduvDxzOrR5 qxISS+asmFyX
wn0RlPs6KD4KxlnnH85dgO/HtmXJz7KhNn1+qXWWXb5lieD5JdC2aPZJTVcH 2JcAALTFHTx/
Qc8suwgm2gXaA+iTAPD/7d3RCYAgFAVQd2igFmmcpsuNoo8+KwgyCX3EOQso IjyUp5dw9bI8
ZTcJ2qWJij25rZ5g8pkul7FUG8Z5alMvS1J20zVoN3KCNv84XL7dk3UDLTlb 7e6VKeCsFEvO
jn4fgAZu+30gPh/aAcCzHc8/QnO7uGGkAAAAAElFTkSuQmCC
--------------030807010708040608090302--
Re: [Eugenia] Question on how to define a typed relation? [message #565139 is a reply to message #11902] Wed, 11 February 2009 21:32 Go to previous message
Michael Moser is currently offline Michael MoserFriend
Messages: 914
Registered: July 2009
Senior Member
Dimitris Kolovos wrote:
> ...
> Regarding your example, with the following complete metamodel:
> ...
> I get the editor in the attached screenshot.
>
> The workaround that makes this possible is the val ArtifactRelation[*]
> relations; in Model. I'll investigate if we can eliminate this
> artificial bit by supporting phantom links (in addition to phantom
> nodes which are already supported).

Ah - with that reference to the ArtifactRelation's in the top level
element I do indeed get a complete and fully functional editor!
BRILLIANT!

That's indeed what had been missing. I had not seen any necessity to
have such a reference to the relations in my top element. Would indeed
be cool, if that could be handled automatically. Or at least yield an
error msg. or warning that gave a hint into the right direction. Right
now, the only warning/error that one gets is:
----------------------
The feature 'entries' of 'Tool Group Connections' with 0 values must
have at least 1 values tutorials_eugenia.gmfgen
tutorials_eugenia/model Unknown EMF Problem
----------------------
That of course did give me the slightest clue, as to what I should fix,
so I had added the tool, the figures and their mappings by hand.

Very good now! But expect to get more questions in the future! ;-)
Thanks,
Michael
Previous Topic:[Eugenia] Question on how to define a typed relation?
Next Topic:up-to-date list of supported annotations?
Goto Forum:
  


Current Time: Fri Apr 19 22:14:22 GMT 2024

Powered by FUDForum. Page generated in 0.05055 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top