Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » DTP » Status of the Ecore ODA Driver?
Status of the Ecore ODA Driver? [message #52485] Thu, 22 January 2009 17:02 Go to next message
Victor Roldan Betancort is currently offline Victor Roldan Betancort
Messages: 524
Registered: July 2009
Senior Member
Hi everyone,

recently I discovered the interesting proposal to provider an Ecore
data-source driver, which would allow (among other things, I guess) to
generate documentation in BIRT from models! This is quite cool stuff
guys! I wonder why there isn't much hype around :P

Might I ask you guys about the status of this proposal?

As I've see roughly in the proposal documentation, I was supposed to be
included in Ganymede, but the bugzilla is now planned for Ganymede. Is
it stable? Has anyone had good experiences in developing tools using
this driver? What about generating documentation from, let's say, Ecore
models persisted in a CDO repository?

(distributed-model documentation generation!!! :D)

Looking forward for your comments.

Víctor.
Re: Status of the Ecore ODA Driver? [message #52514 is a reply to message #52485] Thu, 22 January 2009 22:52 Go to previous messageGo to next message
Tim Myer is currently offline Tim Myer
Messages: 81
Registered: July 2009
Member
Hello Víctor,

Thanks very much for your interest in the Ecore ODA Driver. The
proposal page (http://wiki.eclipse.org/Ecore_ODA_Driver-Proposal) links
to a detailed getting started guide, which you may find useful
( http://timezra.blogspot.com/2008/04/oda-ecore-getting-starte d-guide.html).

Linda has recently taken steps towards including the enablement plug-ins
in the DTP 1.6.2 nightly build with the goal that they will graduate
from the incubator in time for Galileo.

As far as the CDO repository question goes, I have not tried but would
also find this use case very interesting. I am not familiar enough with
how CDO models are accessed, but if they are available through a URL,
then I would imagine one could use the existing plug-ins to try this out.

Thanks again for the questions, and please do not hesitate to post any
more questions, comments or concerns.

-----Tim-----


Víctor Roldán Betancort wrote:
> Hi everyone,
>
> recently I discovered the interesting proposal to provider an Ecore
> data-source driver, which would allow (among other things, I guess) to
> generate documentation in BIRT from models! This is quite cool stuff
> guys! I wonder why there isn't much hype around :P
>
> Might I ask you guys about the status of this proposal?
>
> As I've see roughly in the proposal documentation, I was supposed to be
> included in Ganymede, but the bugzilla is now planned for Ganymede. Is
> it stable? Has anyone had good experiences in developing tools using
> this driver? What about generating documentation from, let's say, Ecore
> models persisted in a CDO repository?
>
> (distributed-model documentation generation!!! :D)
>
> Looking forward for your comments.
>
> Víctor.
Re: Status of the Ecore ODA Driver? [message #52542 is a reply to message #52514] Fri, 23 January 2009 03:12 Go to previous messageGo to next message
Linda Chan
Messages: 845
Registered: July 2009
Senior Member
Victor,

The oda.ecore plugins are now being built as part of the DTP 1.7 daily
build.
Since it is still in incubation, its plugins are available in separate
download packages.
You can find the link to its download packages in the DTP Incubating
Component section on the download page:
http://www.eclipse.org/datatools/downloads.php

Give it a try, and please let us know how it works for you. Feedback from
you and the community will be one of the factors to determine whether it is
ready to "hatch" in Galileo.

Linda
Re: Status of the Ecore ODA Driver? [message #52568 is a reply to message #52514] Fri, 23 January 2009 10:20 Go to previous messageGo to next message
Victor Roldan Betancort is currently offline Victor Roldan Betancort
Messages: 524
Registered: July 2009
Senior Member
Tim,

thank you for your feedback. Please see some inlined comments below:

Tim Myer escribió:
> Hello Víctor,
>
> Thanks very much for your interest in the Ecore ODA Driver. The
> proposal page (http://wiki.eclipse.org/Ecore_ODA_Driver-Proposal) links
> to a detailed getting started guide, which you may find useful
> ( http://timezra.blogspot.com/2008/04/oda-ecore-getting-starte d-guide.html).

Thanks! I've already take a look at that yesterday, and that's why I
asked, since the release plan is said to be for Ganymede (take a look at
the Status paragraph).

>
> Linda has recently taken steps towards including the enablement plug-ins
> in the DTP 1.6.2 nightly build with the goal that they will graduate
> from the incubator in time for Galileo.

Our product is aligned with Galileo, so I think it's a good idea for us
to develop with the incubation driver, expecting it to become graduate
for Galileo :D


> As far as the CDO repository question goes, I have not tried but would
> also find this use case very interesting. I am not familiar enough with
> how CDO models are accessed, but if they are available through a URL,
> then I would imagine one could use the existing plug-ins to try this out.

As long as the driver retrieves the Resource through EMF ResourceSet (is
there any other way? :P), then it should work :D CDO uses it's own
implementation of EMF Resource (CDOResource, which is also an EObject!),
and behaves exactly the same way, but has some additional features. So
it's a matter of providing the URI to the connection wizard and the rest
is magic ;)

>
> Thanks again for the questions, and please do not hesitate to post any
> more questions, comments or concerns.

Thanks for your kind support, Tim!

Best regards,
Víctor.

> -----Tim-----
>
>
> Víctor Roldán Betancort wrote:
>> Hi everyone,
>>
>> recently I discovered the interesting proposal to provider an Ecore
>> data-source driver, which would allow (among other things, I guess) to
>> generate documentation in BIRT from models! This is quite cool stuff
>> guys! I wonder why there isn't much hype around :P
>>
>> Might I ask you guys about the status of this proposal?
>>
>> As I've see roughly in the proposal documentation, I was supposed to
>> be included in Ganymede, but the bugzilla is now planned for Ganymede.
>> Is it stable? Has anyone had good experiences in developing tools
>> using this driver? What about generating documentation from, let's
>> say, Ecore models persisted in a CDO repository?
>>
>> (distributed-model documentation generation!!! :D)
>>
>> Looking forward for your comments.
>>
>> Víctor.
Re: Status of the Ecore ODA Driver? [message #52595 is a reply to message #52542] Fri, 23 January 2009 10:26 Go to previous messageGo to next message
Victor Roldan Betancort is currently offline Victor Roldan Betancort
Messages: 524
Registered: July 2009
Senior Member
Linda,

> Give it a try, and please let us know how it works for you. Feedback from
> you and the community will be one of the factors to determine whether it is
> ready to "hatch" in Galileo.

The documentation generation is a critical part from our new project. We
were initially considering to develop our own generator, using model
transformation and OpenOffice API. Using BIRT and Ecore ODA Driver seems
a more attractive and kind of effort-less :) So we will definitively try
it out, expect us frequenting this newsgroup, kindly asking for help :P
Our product uses both XMIResources and CDOResource, so it would be an
interesting experiment to make BIRT and EMF community become even closer.

Thanks for the support!

Víctor.
Re: Status of the Ecore ODA Driver? [message #52620 is a reply to message #52568] Fri, 23 January 2009 22:37 Go to previous messageGo to next message
Tim Myer is currently offline Tim Myer
Messages: 81
Registered: July 2009
Member
Hi Víctor,

Thanks for the correction on the WIKI page. The status section has now
been updated.
Also thank you for the clarification on CDO Resources. I might try out
a CDO model URI this weekend. If you get to it before me, your feedback
and experience would be much appreciated!

----Tim----

Víctor Roldán Betancort wrote:
> Tim,
>
> thank you for your feedback. Please see some inlined comments below:
>
> Tim Myer escribió:
>> Hello Víctor,
>>
>> Thanks very much for your interest in the Ecore ODA Driver. The
>> proposal page (http://wiki.eclipse.org/Ecore_ODA_Driver-Proposal)
>> links to a detailed getting started guide, which you may find useful
>> ( http://timezra.blogspot.com/2008/04/oda-ecore-getting-starte d-guide.html).
>>
>
> Thanks! I've already take a look at that yesterday, and that's why I
> asked, since the release plan is said to be for Ganymede (take a look at
> the Status paragraph).
>
>>
>> Linda has recently taken steps towards including the enablement
>> plug-ins in the DTP 1.6.2 nightly build with the goal that they will
>> graduate from the incubator in time for Galileo.
>
> Our product is aligned with Galileo, so I think it's a good idea for us
> to develop with the incubation driver, expecting it to become graduate
> for Galileo :D
>
>
>> As far as the CDO repository question goes, I have not tried but would
>> also find this use case very interesting. I am not familiar enough
>> with how CDO models are accessed, but if they are available through a
>> URL, then I would imagine one could use the existing plug-ins to try
>> this out.
>
> As long as the driver retrieves the Resource through EMF ResourceSet (is
> there any other way? :P), then it should work :D CDO uses it's own
> implementation of EMF Resource (CDOResource, which is also an EObject!),
> and behaves exactly the same way, but has some additional features. So
> it's a matter of providing the URI to the connection wizard and the rest
> is magic ;)
>
>>
>> Thanks again for the questions, and please do not hesitate to post any
>> more questions, comments or concerns.
>
> Thanks for your kind support, Tim!
>
> Best regards,
> Víctor.
>
>> -----Tim-----
>>
>>
>> Víctor Roldán Betancort wrote:
>>> Hi everyone,
>>>
>>> recently I discovered the interesting proposal to provider an Ecore
>>> data-source driver, which would allow (among other things, I guess)
>>> to generate documentation in BIRT from models! This is quite cool
>>> stuff guys! I wonder why there isn't much hype around :P
>>>
>>> Might I ask you guys about the status of this proposal?
>>>
>>> As I've see roughly in the proposal documentation, I was supposed to
>>> be included in Ganymede, but the bugzilla is now planned for
>>> Ganymede. Is it stable? Has anyone had good experiences in developing
>>> tools using this driver? What about generating documentation from,
>>> let's say, Ecore models persisted in a CDO repository?
>>>
>>> (distributed-model documentation generation!!! :D)
>>>
>>> Looking forward for your comments.
>>>
>>> Víctor.
Re: Status of the Ecore ODA Driver? [message #52647 is a reply to message #52514] Mon, 26 January 2009 18:18 Go to previous messageGo to next message
Eclipse User
Originally posted by: an.ma.web.de

Hello Tim,

as far as I can see, the driver's support for multi-valued attributes
and references is rather limited (see [1]). Values of arrays and
collections are converted to strings and concatenated with '\n'
inbetween. References such as Writer::books::title are resolved and the
resulting values are again converted and concatenated.

Unfortunately, this makes it difficult (or even impossible) to deal with
n:m references. For example, let's assume you have the following model:

class Writer {
name : String
books : Book[0..*]
}

class Book {
// No back-reference to Writer here.
title : String
}

Now you want to create a report as follows:

Charles Dickens
The Pickwick Papers
David Copperfield

James Cooper
The Deerslayer
The Last of the Mohicans

Since Book has no reference to its Writer(s) and Writer::books::title
will yield "The Pickick Papers\nDavid Copperfield" and "The
Deerslayer\nThe Last of the Mohicans", you have no unique key to join a
Writer and a Book data set to create the above report. You would have
the same problem, if a Book would have a reference to one _or more_ Writers.

Why not provide an additional type of data source, which treats
references like a table join? For example,
JointDataSource(Writer::books) would yield rows with attributes from
both, the Books and the corresponding referenced Writers:

Charles Dickens, The Pickwick Papers
Charles Dickens, David Copperfield
James Cooper, The Deerslayer
James Cooper, The Last of the Mohicans

We even could get by without any join at all, if we could feed object
references from one data source into another. Unfortunately, a result
set can only contain base types such as integers or strings. However, an
Ecore data source could provide an implicit column with the URI (as
returned by EcoreUtil.getURI) of the current object. A second data
source could use this URI and a feature name to obtain the object,
resolve the feature's references, and yield rows containing the
attributes of the resolved objects.

What do you think?

[1]
http://timezra.blogspot.com/2008/07/oda-ecore-getting-starte d-guide-part.html
--
Andreas
Re: Status of the Ecore ODA Driver? [message #52674 is a reply to message #52647] Wed, 28 January 2009 17:15 Go to previous messageGo to next message
Tim Myer is currently offline Tim Myer
Messages: 81
Registered: July 2009
Member
Hi Andreas,

Your use case is certainly interesting. I will take a look at this with
Jeff. You might speed the plow by opening the request in Bugzilla (and
by submitting a patch if you are really ambitious).
Thanks for the feedback.

------Tim-------


Andreas Mayer wrote:
> Hello Tim,
>
> as far as I can see, the driver's support for multi-valued attributes
> and references is rather limited (see [1]). Values of arrays and
> collections are converted to strings and concatenated with '\n'
> inbetween. References such as Writer::books::title are resolved and the
> resulting values are again converted and concatenated.
>
> Unfortunately, this makes it difficult (or even impossible) to deal with
> n:m references. For example, let's assume you have the following model:
>
> class Writer {
> name : String
> books : Book[0..*]
> }
>
> class Book {
> // No back-reference to Writer here.
> title : String
> }
>
> Now you want to create a report as follows:
>
> Charles Dickens
> The Pickwick Papers
> David Copperfield
>
> James Cooper
> The Deerslayer
> The Last of the Mohicans
>
> Since Book has no reference to its Writer(s) and Writer::books::title
> will yield "The Pickick Papers\nDavid Copperfield" and "The
> Deerslayer\nThe Last of the Mohicans", you have no unique key to join a
> Writer and a Book data set to create the above report. You would have
> the same problem, if a Book would have a reference to one _or more_
> Writers.
>
> Why not provide an additional type of data source, which treats
> references like a table join? For example,
> JointDataSource(Writer::books) would yield rows with attributes from
> both, the Books and the corresponding referenced Writers:
>
> Charles Dickens, The Pickwick Papers
> Charles Dickens, David Copperfield
> James Cooper, The Deerslayer
> James Cooper, The Last of the Mohicans
>
> We even could get by without any join at all, if we could feed object
> references from one data source into another. Unfortunately, a result
> set can only contain base types such as integers or strings. However, an
> Ecore data source could provide an implicit column with the URI (as
> returned by EcoreUtil.getURI) of the current object. A second data
> source could use this URI and a feature name to obtain the object,
> resolve the feature's references, and yield rows containing the
> attributes of the resolved objects.
>
> What do you think?
>
> [1]
> http://timezra.blogspot.com/2008/07/oda-ecore-getting-starte d-guide-part.html
>
Re: Status of the Ecore ODA Driver? [message #52729 is a reply to message #52674] Fri, 13 February 2009 19:29 Go to previous messageGo to next message
Eclipse User
Originally posted by: an.ma.web.de

Tim Myer wrote:

> Your use case is certainly interesting. I will take a look at this with
> Jeff. You might speed the plow by opening the request in Bugzilla (and
> by submitting a patch if you are really ambitious).

It took me a while, but I've found some time to dive into this
ODA/OCL/EMF-thing. As a result, I've screwed together a prototype of a
driver with the following features:

* Each data set has two implicit columns named "type*" and "uri*". The
type column provides the fully-qualified name of the type, which can be
used to handle sub-types, for example, Order and PriorityOrder. The URI
column will give you the URI of the object for the current row. It can
be used to reference the object as input for other data sets.

* References are converted to a string of one ([0..1] reference) or
multiple ([0..*] reference) object URIs. These can also be used as input
for other data sets.

* Each data set has an implicit parameter, which accepts a string
containing one or more URIs. The corresponding objects will be used as
the input for the data set's query. If no argument is provided for the
parameter, then the resource's contents (Resource.getContents()) are
used instead.

* Instead of a SELECT with FROM clauses, which iterate over each element
in a model, and an OCL condition, which is checked for each model
element, I am using OCL queries to fetch the objects for data sets. This
way you can use OCL to navigate through the model and exploit the
relations in your model to limit the query result. For example,

self.books->select(b | b.year < 1990).writers->asSet()

will start at the model root and give you all writers of books written
before 1990.


So far, I am quite content with this approach. You can navigate through
a model any way you want without providing bi-directional references in
the model or using joined data sets.

However, there is still the issue of attributes that are collections or
arrays of primitive types. BIRT doesn't support such types. Currently, I
can only think of using another data set to iterate over the elements of
such a collection. Unfortunately, unlike EObjects collections don't have
an URI. So how to feed them into a data set?

You could convert a collection into a string representation and have the
data set parse that. However, I don't like to convert doubles to strings
and back. What about rounding errors, NaNs and all that stuff?

You also could reference collections with the URI of the owning EObject
plus the name of the corresponding attribute. However, as far as I can
see, you cannot do that in OCL and therefore have to use two different
ways to address data. That's ugly.

The code for the driver is currently a mess. As soon as I am able to cut
some more time, I am going to finish the code and am willing to share it
here.
--
Andreas
Re: Status of the Ecore ODA Driver? [message #53926 is a reply to message #52729] Wed, 18 March 2009 13:58 Go to previous messageGo to next message
Eclipse User
Originally posted by: an.ma.web.de

This is a multi-part message in MIME format.
--------------070904020500030808050903
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hello,

I've finally managed to revise the code for my implementation of an
Ecore driver. The plugins [1] and the Eclipse projects [2] for my
implementation are available under the EPL license. I've also attached
an example report, which shows how to list the classes and their
structural features in an Ecore metamodel.

Some things are a bit different than in Tim's driver, which is already
a part of DTP. Maybe some of these ideas here can be merged into that
driver.

* To create a data source you have to specify a resource URI for the
model and a list of Ecore packages, which are used in the model. The
packages are mainly used to fill the selection dialogs for the
context and result types of OCL querys.

If you test the connection successfully (button "Test Connection"),
the model is scanned and any package found in the model is
automatically added to the list. The scan is not perfect but will do
it in most cases.

* To create a data set you have to specify an OCL query, a context
type for the query and the type of the query's result.

In contrast to OCL conditions (Include it or not?), OCL queries can
be used to navigate references (Get me all attributes of _this_
class.) and return values, which are no EObjects (for example, a
list of Enums).

The result type specifies the columns in the result set. I couldn't
find a way to get this information from the OCL query itself, so you
have to specify it manually. By default the result set for EObjects
will contain a column for each feature of the result type itself and
each feature of its subtypes. In addition there are two synthetic
columns named *self and *type, which contain a reference (as URI) to
the row's EObject and its qualified type name.

The driver supports all primitive Ecore types such as boolean,
string, integer or enum. These types are mapped to appropriate ODA
scalar types. In addition, there is a special types for references,
which is mapped to a string of object URIs.

* A data set will usually run its query on the root objects of the
model. However, each data set has an implicit parameter named
*input. You simply pass one or more references (for example,
row["*self"] or the value of any other reference column) to use
other input objects for the query.

Recently, Linda Chan announced some enhancements in the ODA interfaces
[3]. As far as I can see, this could simplify the handling of
references. Instead of converting the into URIs and back, referenced
objects could be passed directly from a result sets to the next data
set.

[1] Driver feature and plugins
< http://www.inova-eng.de/dtp-ecore/de.inova.datatools.oda.eco re-0.5.0.zip>

[2] Eclipse plugin and feature projects for the driver
< http://www.inova-eng.de/dtp-ecore/de.inova.datatools.oda.eco re-0.5.0.zip>

[3] ODA API Changes in Galileo
<http://wiki.eclipse.org/Galileo_DTP_ODA_API_Changes_Spec>
--
Andreas

--------------070904020500030808050903
Content-Type: application/octet-stream;
name="EcoreExampleReport.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="EcoreExampleReport.zip"

UEsDBBQACAAIADuEcToAAAAAAAAAAAAAAAAdAAAARWNvcmUgRXhhbXBsZSBS ZXBvcnQvLnBy
b2plY3RVjjsOwjAQRGuQuIPlHgwdheM0CQfgcwCzWSEj/7R2UI5PEgLI3b6Z 2dHIenCWvZCS
Cb7ih92eM/QQOuMfFb9dT9sjr9VmLSOFJ0JuMAGZmMf0qK6k1w5VC4GQtYN2 0SI7YwyUpZit
KQPBOfRZSfG9JnUpTDOIgu69sd0lIny8Er3OPeHy9odfRbnwDVBLBwg9hBeD jAAAAOAAAABQ
SwMEFAAIAAgAO4RxOgAAAAAAAAAAAAAAACAAAABFY29yZSBFeGFtcGxlIFJl cG9ydC9lY29y
ZS5lY29yZe0dy27jtnZfoP8guN2ONTPdXASTFknsFL5NJoM4SQsUXTAy7Wgq S64eSXy//vIl
kTRpiZKoxxSZzcQ0eXh43jw8pD/98roNnGcYJ34Unk4+TN9PHBh60coPN6eT +7vLd/+Z/PLz
9999gl4Uw5P5F+D9DTbQed36J8Woj2jU99856B8CFiYn6MvTyVOa7k5c9+Xl ZRptN9Mo3rh/
XC8meZdE7vLyE+nx8f37D6jb1dJ7glvwzg+TFIQelKATTKTB0Av8XQIJBLhd Yygf3TnuNnFC
sEWdyRgGJUzubxfm45MvMVz7rzmMnzGQT/AiAEnir31EAget5STd7/JpTubk y3zq+Vmaxv5j
liJgcJntYHyH+iankx9cd75M48xLsxgElxCg/xl8PMNZGEYpSBGBEyeJstgz XjMDgYCsYAr8
IHH+hvvTiYcgpTHwwxTh9gyCDAG8QG1+ksIwvYsB+hP9MXFzFFwRhwIvBWUN AYQlUyL4M7T4
O7HLDKQANzhGa8K0Oo+iAIKQ42eEyi1cwxhiGcpFoUAOTz9xgugFxudRFq6Q +E9y0jk5unjm
HNeJ4z2BcAPBY4C+WYMgQU3PUYAohBsQNuhzmhMyb1jB2H+GK/aRYo9oK0hQ A5kqGKMRquto
BYN5ALeYm/3K0+8wCC6jeAtXSzIF0rRO5IkuoL1MocmRoWsrUowsEyfb7QpZ endEmOiUdxH9
/xrs5mEa75FoRSGCEm4FyUGzR8Ez/BJHrz5mLpW4tvIviYeImfQFx10RaD1a DrzZ7aLETzXQ
JM63XQAmFCRCZ0Lum8ev0Ev7I2+cN9TDz45ZYJ8Ui8BB9GwPFohV8Rp4cJGc PeJvvdQ5S6+j
JL0J4WLm3If+Pxlk5P2MFpGwphu0AILc0t+EjPifows/9rIAxHx9Drc4uSqR xTrcswmdZ37y
NUIIsgnPwpVmniqDVQxJcueWFFPcrO35OU5m+AXEaKYUS0Bu/7YwZzaXJdoi oM9RPY79Bubk
uECSmrbHfyHGENr5NGHPgYXUB0VaUqxpn4WFCGMhRz/1qGcLAYO1VlCr/hK6 YAjWZvsOWruk
RiEEYPZoqMBUjZFzWzmeUJmbTjNnxkxSFiYwTWmUTFytIC5N3M6vMCTRBIdz 6HsShB1aUwJX
i2QJ0wc/8R/9wE/3hScSgu9yAPcY+WoAeufgagjdkgdc3g0Dirx/jZjnMHYr YKB4hMJASnjg
XZruvoKgkHzDFQma0mD/xUHqNmKtFnJbM9YTgIxoIf+OVfxrhOqCK+23zZAg aGO6RrUQdaAw
28HKygMng4WV7LztL6yZg7eVBmuO+2ImplV1as3xb49tR5kYjViZppAUsWrq 6hVY9l0+Ct8Q
Nb26ssaG0cSrElKar/gt+GxlIlTuGZk+iXvWjZ6VRBlNiDn5RjCfT8me4Z3s auh8+oIdhWG8
MEIsT4Y/FjtwkkBrkL7KYfeTu4pYRlYQlv+CZyAlQuskLzgvreeAmm7kKTkJ YlbTIFxLDh3Y
25a7sdUr55/OeB1nQ4XxEpgi2EdHsFxcH+jsIvWIEJ3Fm4zsDSS6CNC6o8sK rkEWpA+YOcfU
12bUZUkNc4v5poVj1kI19mClJpKk5W2lYqaI1UHIy4BIIUTrIFdyxIYRrjRG F9HaCXZ4+YLR
wWCzA3mkuSDw/4cZYS+MELf03PZcIU4i7KzSaB5mWw19CtL1G/bR2A7jhMOd KBZPRnkro0P9
iA+f+GAwDICkYWJ7WRQX9ne80wn+z5IX6/nIUMTyfN9mGcHB2OEP2lTTWMip kVGUGNs4rSFA
cYnKWLQTnF9mO8VGBrUL+WwXRynySa1Qyda95cSdyXZDOWY+QiZCzVDEXHpd eGDf24ruJfAQ
u/bGBYOK4fJiRCxZDFjUX2ahbNWp0Nkv42jL2HlkB1KKixAK8cFFo2tgaR/s 6GUzx4fM4TOM
07x40BoaXdEsNx2lW8YuXE6xdzCo7i36NlTWYjvBFKzIptlRW7lcszJZKWvB kfBDKh8WDk94
c3nxWTfFtxb5L5abmh0HCxRpHHRwIK5cZWtHEqTooloSRlEGThIvXVSAd7D/ aMufStWrdoWa
MYsES92+i6IwdbJbeKDctL6ANZaNZIeGOI9xrLq5dCBig1npoQEsLPE6YNxO VAEhxRem2dr5
lZ+kJZladcQBWY6ncE2CgrxopBbOdzGEi5RF8MOhfhFHSSIUIH0rJP8VHj3A KvOcndTv9oOM
FgRzix3YJsOlL2HnawzhS4vwVWfPl9Bi0XH/4kbOCTqdt7Uj5nVkSlSE/xzo MJ/mb+XT+qPH
+M7n6BbuEKmQY3yI/JWNIEqNkw9LfdTQpIv0BoEscn3Mpy9tNqH1ECpFxngz ymAI5G2f+Hr1
4K7GZkqsrnk7ErV4JMoClrr8eKuks8W6tp6Jn2mPssjsM34awRE/08cPmJda Zo87ugDRd/Hl
i60EVLOjSdF86K3KSA4mmyUuMGEGOtPQIEMZPJozlsMcqkkCtzjYaBiOsPFu kTVuuwixrqS2
w9RYY134RHrbQ5mrtnGwwixZNb5FgpzYPHsYC8C6qxESCWMnTSiEeYa7k5YX B+WMXNHaRWQv
XBwUol87dBNWOOJ3dHJ6OEtkDgOeFhUeJPgN7isdYyNrLqjiaG41e0pe2GJV 2OA1prJWDFH4
1sY+UEmtTJG3vFZKtx0Gfnw0l8uIgta8RWrHxmludh2c8+VojCmxhYTTX81U QW0S/Vt+TaP8
IZLCOh8U2/dSnm9rQ8H1Zcz2Ry1wYzo9Gk9VGJXRYKSh/Vg2jt/YXRCe9BoR c8n6xvPYy6Bn
AZqr0HY8quQWR33Xk3jRqyJMcsjn+yIIETYQ5HNCO5DoqovNRBQjCbUpnz34 lIykHr8plHlc
PIpibx702kGngoIf2uK7BaHF0qgReawY/pP5Henf8DssuifUZ0A5nm/XK7s/ S1Q4IbbXYMXb
KWKXp4i8Bp+FNef+ZgY9f4t3BMp7A6eTrygKn25B+jQVOpqEMy6hNaU7oTlB wM0Q7935Kwo+
VnB1jWiFEToW3DyChCk4o1bVO+8/rBiGJXGMHZrh92g3OBdZRbO843hp5jMM O6YZcx46gj3K
JWgjpNGjWlbYHY3yl6aPiVaAnO70fGiaKdvFwxH0/Pyg94la7NgFIfc4/tFJ Gv5ixGK2T0v3
YJZIcxbHYH+UPn/+NWIKPcHXcz8E8b4HMpnp4aASRSXdUANR137U7+IJ6D2j h79wG8MEHtrt
GXGl6D0gay74YqtYg7v2w5oZOGIZCe3wiqekSzMmzXywCaMk9T20Il/v7BGt i3gc0XrqRdtt
FLKpD8bntBMfBZHfTKyNYZSR3K0GsRX9ary2jyHYsYCQSYyUbDYwwXJmmukY 7dyPltFbRXWl
n44qk/mC1Hg2pWBx3jjTrS6Av8pQexXqgw721Jftfq/BzggvAoaiJYzsEi32 GzxNcfuRju8A
wyACeolck2/Ga/Uoft3qK6GOkc27HJZajI9mFo/07cfg4Qy9jnC+4eHXYJmP 7umCcytGojV4
pkg69ikXLdSzH8HiFTIVAb9YRXPEP97Z849CcUI5XvKvctWc5SrCT7No4AcR f2tlhHpF0OtW
LjBpjBhwNSipKAvNdAp37UepjoVPfA9YFSaVK9pvwrGetsODPU3kD00Yx1wx GzItxtqPt3LQ
5Ip2c8zwcPvILZ+iWI9WQr4Zr2Wh+HWrHYQ6RrZlOSy1GB/NrAvp2495yd8U K6ed9GDYGEVN
ubjXnlRKjbb2B1yrLDPbJBaka1QWgqgylhJQSy9UtnyCSRFj6WWbulkQafAQ KR1Z1OQajaqn
3vr+xXDMZqUokTcUpfDdPF1xr1aqHS9f6e3HlfG8fOH1b+f3hugteKEzml7M ya+nGlT+2q0V
u1IrJEfCaPEmJ0dM/oaj1g0e1Zfl7dVRl91c1RdON1sTNSXda49Ck08uw4ld /0VN/wdQSwcI
OQtvYI8LAAAhgwAAUEsDBBQACAAIADuEcToAAAAAAAAAAAAAAAAkAAAARWNv cmUgRXhhbXBs
ZSBSZXBvcnQvZWNvcmUucnB0ZGVzaWdu7X1tk9u2sub3/Aodbu3mnr01kmd8 fDz2apRyMs5e
10lsV8bJ/ZBK3aIl2GZFQyoUNZ65tT9+CZIiCRIEGmhgxBe46sTHEtjofhqP iJdG9/K7+9vt
7I7E+yAKr7zz+RNvRsJ1tAnCz1ferx9+PLv0vlt9s4zJLoqTWdo43F95X5Jk 93Kx+Pr165ys
t8FuT+ZR/HnxMYiTxcWTJ88WG7IPPodeJfjp/GJ+/tybBZu0E2/1zSz9s9zF 0Y7EycMs9G/J
lbeOiZ+QzfcP3up1LnX2/ZtfPsyuM2Eknv2WS5tdzKm4+OLpxX+lvb14cvHk Yvb9IdhuZv9r
m/yf/Nu7/Jvzy7Mnz58+WS0Xx874fR/CINl7qyCUNQzWUfhjsCXeapGQ2902 1Xi/+Lj1wz//
K8do/jn4JBPyMdgEP/kP0SF5FwckTPwkNctbbZO49eTGT/yzfXSI12Sff5R9 HG38s9pXM3Kf
kJCC8+b6ytuQeRBGd/6ctkiiaLufp+1TV0Ux8QoVXtN/zH6ONmSbe+W5V4nP utgG++Ssofgu
Du5Si6/Tv0j8Pv8uIPvGo9nj5P6MNaXVgopcxSS34Nc4WC6yT/iN7/ztgawW udqv7/0UejL7
JUN8kRmWm7dc5A3b+iyECkHV3fnrP/3P5O0+1XcPULiDKeT2EyXKRW6PjtLL BeOf2tBYNMZG
MZAW7ZFUDC6S8EcWSeDDKvvshiTH4fXD1t/v04GRDa1LyNBaR9vDbfgfQZhw h9M+iQ/r5BB3
wc2V9jb9/97K/5g+7K+TJrdkMjbBPuX3A1zIciHQEmPBhnzyD9vkNzpKUFZA BVmzhLzabl8l
SRx8PKQ/nChb4KKsWvNDlP5+B+Ft+jOOtwcqzKpF/5ekL9tgfXNIG3142Blw k5JEq7a9S7/M
3rZ4o2CirFrzC/lE4nS6ZsBFMFFWrbkpHve3P6YTwVQM3io1kXatM0enk/Mo DKPECItggixa
YupVdOL3kOGf7J78Xr+5LnHF2QMUZM8SU6+dU79z3ufLH5wRACH2LDD1yjz1 +9L0y7Ivb0pT
P2Gn/u2iXb/34/QfCYmRtsBlWbMnCPeJn472bF2PsgYs6XFsoR+Zs0cmzbpN dKgYMwkizKJF
6WD/5K+xpgCkWLMhxHpCJsCa5v97T7atbWwl1aUS7OmepOMWp7tMQqfunduy rFFHrf31F7L5
mST+tZ/4vG1P3k5p+m4+bBO62dphmgQ7nvm7aB/khxDnMuR4j4dKG608CXT/ mP7eeKuPUbQl
fusgpiVANHzwMFzow6CyWyuGIrUgCD+fGImn+kio7fYOAIt/4LBQ2SseABrP cGgob1oMAJJ/
4iCB7xMMAIvnOCzgK/UBYHGJw0J9tT8ATF4gMRnT78b5EwwY8P34IUCBmIEq bOgPAQnEJFT9
SGAIgGDmogqnCUOAAjMVHdU04xwzDQUeaAwBBszUc1RzrXPMxHOUM61zzPRz XG8QzKRT7Uxn
AGhcIGadSidCQ8ACMe1UPlEaAh6IyafqadQQ4EBMPcFHWWIcerIxjph4Qs7D xBj0YywgZpyg
g7UhYICYboIO6KxjID6q6zzg46h0k12qoLeWyjs1XZrxb9WUcwoDNx8KiINw d1C+8RCmi8I7
8hYhQdlDXA2uSynyuTziJHNJ7nfpBD+7U1aoXzu681bffksv4BybwLoP9u92 tHt/661Sxymf
Q/vbbfT17WGr+Xiwf0PdJn9Y8wRb9TxadfSqeI878HUv+9SHvvaFIeVXtWT0 C+ccRuMnFA6+
8YfeIuxRV51M//gI3/OW8JfOM00ctYs8gLyi9agvAEs+kE5xzRzxy7yAulo2 Bj9I59kGgwtk
zsBfsRiDR6SzfhOxDTJX6EsahQ+Up8SVD/RvPzR9gLhHMQYfSDfUTcZyyHyB lzgKn0i39k3E
kkh9Me33gzyOBR/DInYB4m7qKByguW5GXIVl8Z/2ykEesmMqXEfoBTdZhYUL 4UOFhG7AXGAe
hQN0F9KG1goTXyjII6NwUVFC7HWvio8CeN1lsqH12cQXZ+qHRgX8hpdmbl0G jD5DR56J3TDx
WZDuuhiXwoBxATIbwhjcII+1MxBnJ3ICLoXDGI7W5CF+hsL7wG7QEWbcFSc5 ZdZcJ2PzXPA8
oZ0zYxSO0Fwja6fnYD2gm+NjFJEWmqvjEDnudZ4fx1jXXA9rJUNhYum0sqmM YtajuRLWyuHC
QK6VBMY05MKVj2YIXqPPvw4kfvhA7pNU6XSUzfOJRfApSCfaZ/Qjsk7+bT37 f7P1PFpv3+z/
FYSbd5/+7XXW7O9/71JweX+7bQb6bYpE/Flw1t5bLf/2+w/Xrz68+n0JrCJw S0NjX+b5/HMh
eUWBl7nkzsICZcLxxToKw9Sg4C5IHmii87LSQC4n60BcnyDP0r/IWi78jb9L X0FUUp4Kn4Kw
LOoMrFI7lovjP+gXeWcvr/Nc59WCJofu+HUZzntNPgVhRoQywfqxTRC+OyS0 y9Wb9N3V+rDR
2i8PVSonHb+jrimDdeuftVoeWUlDK5sfccTWh/IPVCn6A9L9bbu7mKyDDLqz Woflh632+7W/
JfW2+QdtzQ7brf8x2KYjYPU2+/9bUilW+/II4qITxcobKXqvBCCnLKJRWLwm VaMidPEmVdvP
ObIq++Z8x5EQFaHDRfRu89NKrYVMr9qY4phWuaNjqJYNuEP9qO4vx8Df/WxD aEmIMpXVlUct
8FhelHHCAl6UbX7IEnpxXJG3yL/mCJLRpkWdKtiXSx5lAklI9BTEIR0eqXAJ wyf26UOQlWxo
vt1KTlRp1dpI179svAC7pQvozOi19z8TjmrH71OryLatUv4x94lPUXyb9pm+ 0iAW3wT/zTig
/jHfVoH8Cg+OVeWXUmbYohAbsw2n0YU+jej+0VR5xIX79FziquX4xDYF8akZ gQ9n1FMEo2Cz
O6bbsTCqA/DTc6pDMccqtimYVeyNCjiv/uF4pcsrLuT9YBZXNccttimYW5yY QzjBnjmC6RKs
G/d+sKxbP0c1timYau92VVwjnGP/dBzT5RgH8H6Qi6OYYxXbFMyqetQknFXP Hat0WcUBvB+s
4ijmWMU2BbOKFwQLZ9elY5cuuwTA94NlAgUd29imcLZprb5eOJZps6yvyy63 3jLFqvqNYjin
6E1oRyodUnHw7gOlOGo5QrFNgYTSOto6RwRdTJtP/TzYcqdaZtiE2nY/x4Rg TJlUvd50dzvu
ZinGpHFQIJeLxtAjFw/vHtCKp5YjFNsURii986tzF4Whx6d+nl65oytDbCoz rShQycVb6FGp
iXUPeNRUyZGIbQojkd7h77mLqdDjUT+Pft25ryE24Q59z11MhR6r+n3k6857 TbNMb8/PxVRo
squXm31ul88Qm5o5yhQY5eIn9BjVAXkPWNWhmWMW2xTErEbiOTivLjAhFBO+ IMwH/PSs4uvl
OMU2VedUnrxOgVeYUIoJJ7DoBr1n3GJ0c/ximyrxq8oNqUAvTFCFo1cb8/6w q6WaIxfbFEiu
Mu2nAqsQ0RSTJlUT6z6wqamToxHbFESjUPW9hImfmDCFwn69i0L3/kESp0jH q8AcFy6hxRwW
6NNTh9XHcYdtCuNOnldZgTuYEInLfnMnSuzSh8G6B/Rh9BkxfRrtmulo2193 pc+tMuSuvlku
2umvV3/8sVou6qm2GxYzicCP2dXj4M5PyDXNuBu/z78LaD7uBszp4+S+Q3DZ ImPwOkpn5PdJ
tbpt87p84C5LXkzWUUzmr8vYs7tmSuMjkEINoPrlOKurV2w021UuCNfbw4bc HD5SelShDVIl
8yTP6sp1podf0jzmZzRZ+tmeJLXP6x/PUkeTkP4YvrmmKd3nQRjd+fMyxfo8 bTzP8dvkyZ+9
YtyV0e+zn9L+vVmwufKePvMAI3adsScjI2+UKlYXyKXRkeCt1l/88DPJf4EV c/1XP6dQMUZr
JNStYFOnIuyACnoUS34K0mW+vzVmEECeRbuy/OZIW6QyrOmPqotdNwIqyKIl x5+hDzoVPlhb
oKLsWVPkoEynMnp12Rh7FITZs6i4fYj3DlCQPUvwJpxM9+Aapbj4cWtab6Ov JP4+OoS4H1qY
GGtW3PrhA0p/mQBrmudbiwjNZQKsaR7F6dsV+X4GyLCmf0z+OgRYAyBCrFmQ xH66qiBhgjIB
JMWaDYcw+As5A5eLsKh9urxL0GshmBh7Vux2Jt4BMDHWrLiLtukcGekJiBBr FujVLKyrL5Vg
T3et4n+M7jIJmsX7yoeOWvvrL1XZLN7mCG8/pdx35DwAwY5nfq1guAw53uOh 4nYMT4Z6VVfR
AMIDIa1R3A2Eyo6OGApgJUq7SEiLBMOQAO4IDQAQaeleESCgrSQxCP0giLSe bjcKKhtSYih6
MR6kZW5FSKhsaA0AC2GdYQkWitthA0BDWAJYgobCVtoAkHiBQGIkENCksLoY yLf0xAD045Vx
jphdwrcHxUjQ+NPPJD41EojpJWSLUYxBT0YDYmIJ2awUY9CPnwTEVBK46ylG oScjATGXhG6e
DgIHxEwSvAU7CCAQ00jYPu4gUEBMH+H7wYNAAjF9hO8pi5Hox8ThAjGJhO5L i3Hox4i4QEwl
QbvbYhB6MXu4QEwiQbvk1jEQ75d37rJzVLqJDvE6Veo1DV6c/UyDbbs048fV lvk+DAQpFhAH
4e6gfCKax7q/RUhQ9hBXg+tSivxljDhOWJL7XUz2NCT1qH5tz9hbffstDYY9 NoF1H+zf7Wj3
/tYr4mzV1Pe36WKTBvfrPR7s31C3yR/WPEZSPRRSHb0q3uMOfP243PrgR0T3 Kr+rJAwQLlSN
HmQqnD/hz55E6KOikk3/AAmXh5bwl25OGDvxgrpBN6TatDdOwQbpPgnquE3s Ab3g7zH8Bkm3
ZfDHeyLoUXHrjzoJsoS/dDvIxKGi2AOoePsx+EB58qt3mCn0AvaewBj8IN0L wx+jCn2Audkw
BvylO3CIw1sh8JNFXH5erHtWLMJb4/LIGKY68qNp7LG0CHTE3Rfl/WnZUBeO Olvoa652dW7b
1HHXuq0ziuGuubyl/8UArvP8KBaw8pN+1Cm/CHPd61GjGOeaS1jdK1l13LWv dY0CeM21q/ZN
sjry+tfRRgG95pJV7wJcHXfNK3SjAF1zfap/b48FXvv23yjA11yc6l83ZMDX v7Q4ism7PCQF
F44iwl77quUYhr08BgYR/yKMS9C6HjqGPRl5yA0i3EYIudatVtOQC19ymuEM jT7TCUT88IHc
J6nSglG2rOfNKyNHaHI9Eufp9bzV8m+//3D96sOr35ffpa1ndySmMSRX3vn8 iTcj4TrapJhc
eb9++PHs0vtu9c2ynaNvlj4Y7l/mkq+8L0mye7lYfP36dU7W22C3J/Mo/rwo 86ct1lEYknWK
WpA80IRsRS5Ar5CTddAp5mMQJ4uY7KL0r6zlwt/4u4TEVFIW0pRFdyx/yw1Z pXYsF8d/0C+K
xIPXeeq2qoRRDl2ZJfP4OS/5YdEmCN8dEtrl6k1YJjSsPmy05uWXZBOHFoFM 3Myh7ZJagqSh
+GS7qslCoYlCdRPsCrJ0Vt5I0XslAJlsyW263OE1qRoVsQQ3qdp+zpFVlXaz /R1HQlSEVRWR
Tc1PK7UWMr1qY4pjWuWOjqFaNuAO9aO6VQLOWXGKf7xrf+VRCzyWF10JPblt mJyg7Rbmcu7W
w6DgiXcRRX4mnOydg/XpE+9ylBpx9l17RGIj2hRyWCNSWE+4Dh0X7tOziauW 4xPbVJlPZWgi
nFaIij5TrkciQr1f7Gpq50jGNgWSrIg+hRMLUehn0rxige4Dl1iNHH/YprDC 3kwIMZxEruaP
Fou4cJ+eSly1HJ/YpkA+sQHhcEZhKgH1nFGWKwF1YN4HWnEVc8Rim8KI1Yrx h1Pr+XipZZVX
XZD3gFldqjlusU1h3GLubsB5del4pcUrHtw94BRPLccntimMT6pEeuGIpEWk vjHIUQdLHXq7
Cs4bGs6nS5wJ7+XVQD49aWrKOMawTUGMqV+NU2AOIgCixrrJUYeD9ukpxFHK UYltCqJSfttR
gUSI0IcJv34YmE/PHkYdxxu2KYg3+aVVBd642AYt4jA4n544jDqOOGxTEHHK m8cK3HHhCzrU
aSJ9evY0NXIEYpuCCFRdIVdgECJ2YcIMakF9egq1VHIcYpuCOFRLBqBAIkS4 woRJ1Mb69Cxq
6+RoxDYF0eiY20GBQ4i4hAlzqAH06QnUUMixh20KZE+VoEOBQYgIhEkzqAV2 H1jUUsoxiW0K
Y1It24oCkzAhCBM+D+Kg3QMqtZVyVGKbgqhUJc+BE+nChSTo8KgF9elZ1FLJ cYhtCuJQkQpJ
gUCYyIQJB8OxQJ+ePqw+jjtsUxh3EsU40gtMLobLfnPH8iUiFuse0CeZSCxp o10zdVD7665U
R1U2o9U3y0U7Vdnqjz9Wy0U9LVrDYm7Zwzi48xNyTa8ax+/z7wLCrYFI7jsE ly3yfEVRmJD7
hDLrbXaA3uZ1+cBdlmiK0JKN89flZbLl4q6ZgOoIpVAHqIY50j1WMAjX28OG 3Bw+UpL8SHya
Um8PUDRPy6WuXGeCviXNPHdG09ud7UlS+7z+8Sx1NwnpT+Kba5qEbx6E0Z0/ L5PizdPG8xzD
TZ6uyytG3y/kE4lJuCazn9L+vVmwufKe/tMDjNt1xqGMkgYqHubS8kSLiLKD 1Y8qVIzRLJWM
Ffn9MfWMsqwRECm2bbjVyePNsUImx5odqFKKdUOggh7FEt1qhF0GAeRZtEuv xh9ri1SGNf1R
hfLqRkAF2bMEW+qMsUZBmD2LMIXDGGuAguxZ8i/ygHSITII93d/tshUj0gUQ KfZsKKdL+LEE
FmXPGrwRJ9MdUa6rbgBMjDUrtIpf1fWXCbCmeR6ZjdBcJsCa5rq1mOrKA2RY 01+7plHdAIgQ
ixbso+0deR9H9wHBvc7goqxZo1/pqG4ISIo1GzSrBtUNkIuwqL126R3WAogY e1bo17BhrACJ
sWaFdjWYug0QIdYs0KusUldfKsGe7lolShjdZRI0S4yUDx219tdfqmIAvA1E 3p5juUPPeQCC
Hc/8Wg0rGXK8x0PFLUueDPVSSKIBhAdCWmFHAAR013MIOEgrtEpxgOycDgEJ aenUbiRU9l7F
UAArKNlFQlrNFIYEcO92AIBIq4yKAAFt+opB6AdBpAU/u1FQ2ToWQ9GL8SCt wilAQnHreQBo
SMtiCtBQ2LYeABLiwpgSKCD73kPAADHFBO+fDwEHxAxTbQ9+CGAgppmjwQAx wYQfBYiBCIAF
gC0jgZhgQo4TxBj0YzIlr1zfjQHkYEKMQT8IgZhQAk84xCj0ZCQgZpPQg5JB 4ICYR6odtwwB
DXm58240wMc1gwACMZ+EnfkMAgXEbBJ+djQIJBBTSfj5kxiJfkyjLhATSugZ lhiHnowIxHQS
dBImBqEXc6kLxHQSdKJmHQPx2VrniRxHpZvoEK9TpV7TywCzrKJ9l2b82ypl mW8DQf8FxEVl
egk+rWfpDbK3CAnKHuJqcF1KkU/ZEUePS3K/Sydy9IrHUf3aaYK3+vZbernk 2ATWfbB/V9SN
94p7K2rq+9t06U2vzOk9HuzfULfJH9Y8clY9QFYdvSre4w58/Xsu9cGPuC2j /K6SMEA4+zAa
9KBwVo08pxZCr33FZwzIS+ea6JNxAPZaV5PGgL50fos/jRfBj7pRZfrFK5zj WsJfOq82FgMA
dYPudTDT3jgFG6QzfFQAgtgDehfXxvAbpDzhLQ6tEHfl6tCj7tw96uTfEv7S zXEzYRZCH2Bv
C47BD9LNeXyAh9AHmPuNY8BfHlqCCCsRIq91H3MUkGuuebVvgTKwa18lHQX0 mkte3OVVBn/c
NdhROEFz9YvHfrqQay559a8K13FHXDhWPhqToS983dlCX3PBq3PFuY671hXp MSyu5EFQ+gFQ
IsB1nh/FHoL6+U0OuOaF8jrmunfSRzHONVexuvfg67hr36UfBfCay1bc9X0W flQigDE4QR7K
hgxjE+Gvn7pgFNBrLmH1kiXUcddMtzAK0DUXr/o5HljgtTNFjAJ8zUWrfmoK Bnz9BBejWEHJ
QxL56Oum1Khjr52WYxTDXnPpqpUJhIlL00olMoa9GnnIZQfkOglMGMi1MqCY hly4pNEMZ2v0
mU4g4ocP5D5JlRaMsmU9G/nR3CxlOYnzpOXeavm333+4fvXh1e/L79LWszsS 0xjCK+98/sSb
kXAdbVJMrrxfP/x4dul9t/pm2c58PksfDPcvc8lX3pck2b1cLL5+/Ton622w 25N5FH9elPmo
F+soDMk6RS1IHmiC6yLDulfIyTroFPMxiJNFTHZR+lfWcuFv/F1CYiopC2nN ovuWv+WGrFI7
lovjP+gXRTr36zwV9vsypDWHrqw9cPycl1K+aBOE7w4J7XL1JizTxFcfNlrz svaz5RiKQFZu
PYZ2RS1BKQZ8CRPVEgzQ8gu6ZUsEtQ8qb6TovRKATLaEBozxmlSNipiam1Rt P+fIqipm0P6O
IyEqwmqLyNbmp5VaC5letTHFMa1yR8dQLRtwh/pR3aqswayIZjnmZbryqAUe y4uuMgncNkyl
hXYLc5VM6mGw8HImiEpAEy6lxcH69OVMOEqNuKaJRSJVQc0KZYEcj3R41IK6 BzRq6eRYxDZV
YdGtYtH7p45H+jy67VfVe55WjktsUxCX2LsGcDL9A1Gq7tl02cSF+/R04qrl +MQ2VeZTeWkE
TqtnCFpN+CUlQr1f7Gpq50jGNgWSrLgXBCfWP93kT4tXLNB94BKrkeMP2xTE H/ZyF5xEzxFv
pwnX9ubCfXoqcdVyfGKbwvjUuqgH59Sl45QWp7og7wGvulRz3GKbwrjFXMCE 8+qF45UWr3hw
94BTPLUcn9imMD7l12rhRKLxfI5JGkxigO4BhRh9HHfYpjDuVHejFfiDiIOY NH9aYPeAQy2d
HI/YpjAeNe64K5AJEQzRdzJFiV0+8UHvAan4ijlmsU1hzFImFCIqou+Essqm vpHIcQfLnXoW
CgUCYSIhnkyXQBy0T88ijlKOSmxTEJXyxCIKJELEPUz4eJaB+fTsYdRxvGGb gnhD/6PEG0RY
w5TjhRicT08cRh1HHLYpiDhlkh8F7iCiGSZMnSbSp2dPUyNHILYpiEBVtiYF BiFiFybMoBbU
p6dQSyXHIbYpkENsyi0FJiGiFSbNJC7gfeATVzHHKrYpiFW1RGpwQl0gghYm TKg21qfnUlsn
RyO2KYhGx7x4ChxyCRx0ONQA+vQEaijk2MM2BbKnSm6owCCXukGPQS2w+8Ci llKOSWxTGJNq
mSoVmIQJU5jwKSsH7R5Qqa2UoxLbFESlKvGoApEQ4QoTfiW1oD49i1oqOQ6x TUEcKtLIKhAI
k6JhwgFzLNCnpw+rj+MO2xTGnUQx2PQCE65w2W/uWI7eZrHuAX2SicSbNto1 0662v+5KE1tl
gl19s1y00zyv/vhjtVzUU0o3LGYSWB+zgsfBnZ+Qa5oUI36ffxfQvNMNmNPH yX2H4LJFmVyP
3CeUWW+zsJQ2r8sH7rIkvWQdxWT+uoziXy7umsl7j1AKdYBqmCPdYwWDcL09 bMjN4SMlyY/E
p+nI9wBF85TG6sp1Jjdf0qzdZzQ1+NmeJLXP6x/PUneTkP4kvrmmCcznQRjd +fMyofg8bTzP
MdzkqY69YvRl19tnP6V9e7Ngc+X944UHGLPrjD8ZHXnjVDEvfi4tT1Dvf0wf 9tfqJXeqn1OY
EKOZ/esWsInYEFZABVmzhLzabquc2ihb4KKsWvNDlXMSbw9UmFWLikv1N4e0 Ef09xZulJNGq
be/SLzXL1zeNgomyak357sJbAxNl1Zqb4nF/W70ckVapibRrnTk6nZxH9QxR KFtggixaYupV
dOL3kOGf7J78Xr+5LnHF2QMUZM8SU6+dU79z3vvrP9NFM84IgBB7Fph6ZZ76 fWn6ZdmXN6Wp
n7BT/3bRrqvaPzhb4LKs2ROE+8RPR3uRug5hDVjS49iSbxaZskcmzbpN1f6X AZMgwixalA72
T/4aawpAijUbQqwnZAKsaa5XR7OuulSCPd21ClIyusskaBaULB86au2vv1Sl 33jbnryd0vJM
gfMABDue+bUa9TLkeI+HShutPAnqZW9FwwcPg7RodjcMKru1YiiAtVHtIiGt YN2NhNpu7wCw
kNaTFmOhslc8ADSkRZ7FaChvWgwAEmkRZjEk8H2CAWAhrIItxwK+Uh8AFsLy 1HIs1Ff7A8Dk
BRKTMf1u0Gh0fTDg+/FDgAIxA1XY0B8CEohJqPqRwBAAwcxFFU4ThgAFZio6 qmnGOWYaCjzQ
GAIMmKnnqOZa55iJ5yhnWueY6ee43iCYSafamc4A0LhAzDqVToSGgAVi2ql8 ojQEPBCTT9XT
qCHAgZh6go+yxDj0ZGMcMfGEnIeJMejHWEDMOEEHa0PAADHdBB3QWcdAfFTX ecDHUekmOsTr
VKnX9DbE7Gd6h6dLM/51nXJOYeDmQwFxEO4Oyjce8it0bxESlD3E1eC6lCKf yyNOMpfkfpdO
8Okdl6P6taM7b/Xtt/R2zbEJrPtg/25Hu/e3XnFxR019f7uNvtI7g3qPB/s3 1G3yhzVPsFXP
o1VHr4r3uANf97JPfehrXxhSflVLRr9wzmE0fkLh4Bt/6C3CHnXVyfSPj/A9 bwl/6TzTxFG7
yAPIK1qP+gKw5APpFNfMEb/MC6irZWPwg3SebTC4QOYM/BWLMXhEOus3Edsg c4W+pFH4QHlK
XPlA//ZD0weIexRj8IF0Q91kLIfMF3iJo/CJdGvfRCyJ1BfTfj/I41jwMSxi FyDupo7CAZrr
ZsRVWBb/aa8c5CE7psJ1hF5wk1VYuBA+VEjoBswF5lE4QHchbWitMPGFgjwy ChcVJcRe96r4
KIDXXSYbWp9NfHGmfmhUwG94aebWZcDoM3TkmdgNE58F6a6LcSkMGBcgsyGM wQ3yWDsDcXYi
J+BSOIzhaE0e4mcovA/sBh1hxl1xklNmzXUyNs8FzxPaOTNG4QjNNbJ2eg7W A7o5PkYRaaG5
Og6R417n+XGMdc31sFYyFCaWTiubyihmPZorYa0cLgzkWklgTEMuXPlohuA1 +vzrQOKHD+Q+
SZUWjLJlPYX80dwszzyJ80zz3mr5t99/uH714dXvy+/S1rO7dKqeOvHKO58/ 8WYkXEebFJMr
79cPP55det+tvlm209XP0gfD/ctc8pX3JUl2LxeLr1+/zsl6G+z2ZB7Fnxdl EvHFOgpDsk5R
C5IHmpW8SIvvFXKyDjrFfAziZBGTXZT+lbVc+Bt/l75SqKQsDDeLSFz+lhuy Su1YLo7/oF8U
Ofiv8/zl1QIlh64sGHH8nFcHoGgThO8OCe1y9SYsc/tXHzZa80otsDU0iuBb bhGNdp1oQf0M
fN0Z1boZ0JoZurVmBAUrKm+k6L0SgEy2hEZV8ZpUjYpQxJtUbT/nyKqqQNH+ jiMhKkKBi2jc
5qeVWguZXrUxxTGtckfHUC0bcIf6Ud2qFsVsQ2jtiDI11ZVHLfBYXnTVtuC2 YcpjtFuYKz9T
Be/CK9C4krY6xWdaSJ++/kxLpRGXoLFHITYGW6GQE6KO07Pp8ogL9+m5xFXL 8YltCuJTM6Ie
zihMfdsJVxXsAPz0nOpQzLGKbQpmFXtDAs4rRLnbqfOKC3k/mMVVzXGLbQrm FieGEE4wVw5X
m2DduPeDZd36OaqxTcFUe7er4hThHMOUzZ04xziA94NcHMUcq9imYFbVoyDh rHruWKXLKg7g
/WAVRzHHKrYpmFW8oFY4uy4du3TZJQC+HywTKOjYxjaFs01r9fXCsUybZX1d drn1lilW1W8I
wzlFbzY7UumQioN3HyjFUcsRim0KJJTW0dY5Iuhi2nzq58GWO9UywybUtvs5 JgRjyqTq9aa7
23E3SzEmLYMCuVw0hh65eHj3gFY8tRyh2KYwQumdX527KAw9PvXz9ModXRli U5k5RYFKLt5C
j0pNrHvAo6ZKjkRsUxiJ9A5/z11MhR6P+nn06859DbEJd+h77mIq9FjV7yNf d95rmmV6e34u
pkKTXb3c7HO7fIbY1Mw5psAoFz+hx6gOyHvAqg7NHLPYpiBmNRLJwXl1gQmh mPAFYT7gp2cV
Xy/HKbapOqfyZHQKvMKEUkw4gUU36D3jFqOb4xfbVIlfVa5HBXphgiocvdqY 94ddLdUcudim
QHKVaTwVWIWIppg0qZpY94FNTZ0cjdimIBqFqu8lTPzEhCkU9utdFLr3D5I4 RXpdBea4cAkt
5rBAn546rD6OO2xTGHfyPMkK3MGESFz2mztRYpc+DNY9oA+jz4jp02jXTEfb /rorfW6VIXf1
zXLRTn+9+uOP1XJRT7XdsJhJ7H3Mlh4Hd35CrmnG3fh9/l1A83E3YE4fJ/cd gssWGYPXUToj
v0+q1W2b1+UDd1nyYrKOYjJ/Xezk3jUTGh9hFPYP1S5HuafKBeF6e9iQm8NH So4qsEGqZJ7i
WV25zmTvS5rF/IymSj/bk6T2ef3jWepmEtKfwjfXNKH7PAijO39eJlifp43n OX6bPPWzV4y6
DM3gU0Di2U+pAt4s2Fx5L556gAG7zsiTcZE3SBWLBeTS6FDwavl7FRP3V7+l MCFGyx3ULWCz
piKsgAqyZkkzVyXCFrgoq9aw+QGR9kCFWbUIX+e3aZaSRKu21e8TII2CibJq DaIkZ9MamCir
1hiobNm0Sk2kXevM0enkPKpnOUDZAhNk0RJTr6ITv4cM/2T35PcaU+mcsQco yJ4lPwVJ+rLY
It0CkWLPBlOvzlO/N3VriDNGAITYs8DUa//U73zTL/y+vO1N/Qyf+vcXWWCZ sQUuy5o9uFrF
dWvAkh7HlnzHy5Q9MmnWbdIuncszCSLMokW6pWhZUwBSrNkQYj0hE2BN8306 h/W3wX/nRy8I
C6CCrFmiV+q1boJUgj3dtWqmMrrLJGjWPC0fOmrtr79U1Ql5m9C8fevyeIfz AAQ7nvlVqVtp
cXne46HStjdPgnopbNHwwcMgLezeDYPK3rkYCmD5XrtISCurdyOhtvc+ACyk pc7FWKjs3A8A
DWkdcjEayltIA4BEWidcDAl8x2MAWAgLtcuxgO85DAALYQV1ORbq+xYDwOQF EpMx/W7QtNz6
YMBPR4YABWIGqnC8MgQkEJNQ9QOaIQCCmYsqnO0MAQrMVBR6ODQEHDCT0FFN t84xc0/gEdUQ
YMBMO0c15zzHTDpHOeM8x0w5R/UmvcDMN9VO6YaABmLKqXTGNwQsEJNO5TPC IeCBmHOqni8O
AQ7EvBN8OCnGoScHBIiJJ+SEU4xBP8YCYsapclQqhqInwwEx7QQdtopB6Md4 QEw4QYe21jEQ
H992HvpyVLqJDvE6Veo1vbQ0+5lesevSjH+brpxfGbibVEAchLuD8p2k/Ibr W4QEZQ9xNbgu
pchXeIjT7SW536WLHXoV7ah+7TjXW337Lb0Ed2wC6z7Yv9vR7v2tV9yvU1Pf 326jr/RKr97j
wf4NdZv8Yc2oBtUYBdXRq+I97sDXvY5XH/raV/qU31OS0S+cjhqNqVEIhsAH QoiwR11GNP3j
I5z2WcJfugQxEX4h8gDyEuWjvgAs+UC67jET9iHzAury5xj8IF12GQw4kTkD fwlqDB6RrgJN
xLvIXKEvaRQ+UJ4SVz7Qv9vT9AHiltAYfCBd/ZqM75H5Ai9xFD6RHviYiC+S +mLa7wd5bBM+
rknsAsTt8VE4QHPdjLiszuI/7ZWDPIzLVAiX0AtusgoLIcOHjwndgEkxMAoH 6C6kdTMaMOhr
p0UYBfS6a2dDy7SJr9HkAXq44Dwh9ro5KEYBvO7q2NDSeOLrYnkcorEYRKEb 3JIYGATZ5Q4z
89CJT0DlkZcd8ONyozAuQKZZGYUbNNfEqJQudSfgcsOM4VRTHmkKcAEF05gb dIQZd8VJDvg1
V8XYBDo8T2gn4xmFIzRXx9p5f1gP6CYPGkWQi+bqOESOe53nxzHWNdfDmCxL deBR2ZpGMeI1
18VayaGYOFKt7FKjmHZqroW1cloxkGslxTINudB6zfDTRp9/HUj88IHcJ5Tg 3aNsWa9ucjQ3
K4FC4rwIirda/u33H65ffXj1+/K7tPXsLl0rpU688s7nT7wZCdfRJsXkyvv1 w49nl953q2+W
7Uoqs/TBcP8yl3zlfUmS3cvF4uvXr3Oy3ga7PZlH8edFWedisY7CkKxT1ILk gRbOKCq2eIWc
rINOMR+DOFnEZBelf2UtF/7G36XvdCopC0HPonGXv+WGrFI7lovjP+gXRXmY 67zERrVCzKEr
axkdP+eVqCnaBOG7Q0K7XL0Jy7Iz1YeN1rwqQGx5pyLwnFvfqVXbSVRHGl8S TbWkE7Sck24Z
NEEtpcobKXqvBCCTLaERhbwmVaMiDPcmVdvPObKqiiO1v+NIiIow+CISvflp pdZCpldtTHFM
q9zRMVTLBtyhflS3KpM02xBa1qhM1XflUQs8lhddZZe4bZjKTe0W5iqjVYHr 8OJoiELsEy7I
2UL69KXRWiqNuDqaPQqx9w8UagwiSgw+my6PuHCfnktctRyf2KYgPjVvk8AZ hSi23veCt5aL
dnZgfnpadSjmiMU2BROLvSAEpxamCrujFhf1fpCLq5qjF9sUTC9OFC2cYyOu 1/4IHOuGvh9E
69bPsY1tCmbbu10VMQqnGaa0u6MZB/N+8IujmCMW2xRMrHpIKpxYzx2x6gIU icXBvB/E4ijm
iMU2BROLF2QMJ9ilI1hdgCLBBNj3g2gCBR3h2KZwwmmtxF44otUFqBKtr0sw t/YyRaz6lXk4
rehVf8crTV5xIO8DqzhqOU6xTYGc0jryOkcEY0yeUv088HKnXWYIhdqLP8dE Z0ycV73eiXfb
8GZZxiQsUeCXi9VgBKjwiwd5D5jFU8txim0K41SVhkaBUC5CgxGgQqgW3j1g U0snRyW2KYxK
ekfE5y4UgxGgQqZ+HhC702FDhCozRSmwyUVcMAJU2NSEuwdUaqrkeMQ2hfFI L8Ti3MVYMAJU
qNTPAAsXXWGIULjQinMXW8EIUCFWvwMrXFSFaaLpbai7mApGgBLBermT7rbQ DRGqmW8RTqoL
F1DBCFAhVQfqPSBWh2aOXGxTELkaeTQVqIUJrJjw9Xw+4KdnFV8vxym2qTqn 3mb5CRV4hQms
mHD6mG7Qe8YtRjfHL7apEr+qVLcK9MLEVTh6tTHvD7taqjlysU2B5CqzGCuw ChFcMWlSNbHu
A5uaOjkasU1BNApV30uYiIoJUyjs17sodO8fJHHYtOIKBEIEUUyYP1y4T88j rlqOT2xTEJ+K
ZPEKRBpxCIVNJrFAn55CrD6OO2xTGHfyrP8K3MFESVz2mzuWz5tYrHtAH0af EdOn0a6ZXL39
dVcy+Crf++qb5aJdzGH1xx+r5aJeOKJhMVOm4lj7Iw7u/IRc0/zx8fv8u4BW l2jAnD5O7jsE
ly0yBq+jdIV7n1S7RW1elw/cZan4yTqKyfx1tnsbfApIvFzcNXP0H7EUKgFV MYe6zxoG4Xp7
2JCbw0dKkypwSKppXrpAXbnOIiZLWp3jjJYAOduTpByzxb+Pg3ifPGyZyg3Z B8UYy2t+eLNg
c+X9ozGymvVRPqWj50f/Ntg+eCvvNxJv/ND3OqukcB6mTPdW5092Ce8pWsTl gSlrUVd0HUf7
feJ/PFuT7TbX95lE349RvCHx91GSRLcpr6PYW/2PH7I/UKXrEm6oMt5qH22D jc7z/xlski+p
9Xzju5/+iXxKMNrT5/V1p0/rav5L8PkLSvVMgL7u2eO6yn+IdhjV08f1FU8f FqsNo0rOkn86
ljiWyB6fIEuyaW1OkaeQN99/EgoUrdq35SrK9Fb84/gK3qVTVPpKPuzqygS3 uy05u/X3CYnP
aJOit5vsi9nP2Rfv089zLS8kSibR7mc//hyE3urJ/OJZ0FlYsPngNh29ek9+ zDir92xM4YQ+
SvH7FEUpHpyZE53S5n7kTI15XWfT4DDJK8t9SW630up0tIvm9LyQUi/2ls3t zqJPq5B8naVr
WPJvfy8mfPTDbA3ASOJNA2mD5vyPa386xloj6Dj6mgNu+THa1McqnVAWZmQT 53RVkSH4QjLG
NnnRK29VPNXpMd565mN0CDd0ZV8ssngLGcXyiPS/Xq1WkcSN5H6XTtXpBkHx fPWBtyps+yX6
+rt3lOj9QeflxzYwnZQKfBotFpmjwVabMYVIXSoOFXlBSAugNGuFmIKFlTtQ YNg6DyahqUse
KDicpEAmEWqJHyhM9Uv0JvGp5A4UmPolTpPAVHIHCgzv8p1JgNryhwqUpZ+e gf/m1LOLmoOl
kjpIUKxMcQY9v7H5/h7Fy5vJzWYMmprUIYJiZToz7LlMmdvFGB6FxCGCYWVW N+wpndX53Dgm
c1ZeQsN++zQvNBuDhRU8QGgat1JNAcOIHToseYyIFWio6AHDU0XQmEbnKHmQ 4JQXfMyhUogc
4lFBaHSAhMMcFEWwsCkUMnFDhCEP+jQGAxV3Mhg6Q+ayL3mHk3saBqeBZQuQ P8mDt4pRfAhi
sk4yRP392oL9G5L4wZYjrjxJP28GGwix+xJ8/rKlx/m/HLbc+FQoml2IRNnC mYaZBPuzPIxS
PE67BGVRiHnESZD420CILiOo5eeE7JPX6YeFs1VOjDOBIgbnDQQu7FYrfZH8 eevHf3orb02n
MTNv9u8zteFYKlYGlqxFPhX8JOSnxfqaSDF6rMCO/7hYLX979dOvr8/e/ciS u/x0uUgb6YZ4
ZJ9/joNNzj5oIMvXIv7pyZP/KbV0nQVd5PKb8U6QPuZPXzy7fFr70x2vU1ma dwrQ6Jm36GiV
op03acamsLLIdptHST0RNMuaZoFfedtmbCS3PW+I0M+8VbbyntEX3f6l1O2M zAXnUgXbgBoE
svdcai+N9cmCe0RuL5sLI35mP6XCoL+ZZe+tiw10Wf59EG7S17vodcEIAr46 RLZk/b7NZztB
uDsoWVIKFU6BYo0tmVYPsp89tjHgNcE8oBmaxZVlwCn57BMawsWVaCWsC6K7 0vqNK1DF1dkD
xhBXCRPjSrUWOgaxQWWVwJV3OuDVQtG4ci2Gp0HsGDj4KuFuXMlWQ+Agtgzc AcpH8lzx9sPs
IFYN3BXwc26uXIuhfBA7Bg4+/BCZK9diuCDEjoGDr35czZX/CCGJELuG7oxH fBW4dwADPjyM
kivVWmglxIZBA/9oSwA3/8eEg3JlWw4RhdgzZCcohJxypVoLQ4XYMGTgH226 7+b6ddiBobNc
iVbCaSG6DxnwR1tZuWVVHfZHX1O5BRXXDY81uXGzmjrsaqHMXME2w5shlgwY fqVwaa5YeyHU
ECvGAv1bQEwpV7TdMG2INSNwATTsmyvZaig4xJZBOwAYWs4VaSfcHKL9kEMY QusDHRqpCNF5
wIMbFCLPFWc+bB6i9ZChhoThc8WZD82HaD1gqPNYt1kRiKiFeROMKnX3MWDS /UYJGquGLnZd
XOA3Tm3J414vgeGM2WOoCw5ciRoDtny2oUi007wIARGufTmCK9z0hQluJ6o/ HvlDisOufLCB
V8wmjTfyg9K8e+EXF4HUYGkoug3CP8s5XnY75Ix+pOtejmv9+DNJvkdfPeH2 pvyCyDKgQ35+
ID8n+WjpbiOK1F8uUus7vjpea7joummVtarC/LuuhJRNq2sNT0Uiy/bd1xqq A+PT3WqQXVWo
ZzCt9J1Fn2b5pkwm5RJ14aEU6y49gC49oEONp3jvYf3FDz+TvLKMzUli1Y/b OHB3H3oB/E9B
kk5mpVc0ucK18C86dG5I3UBrCnXm2xcKVIA+68T93rgoyx5EWX6wvq3G9uXA X5Hi6lOq9SMc
yjZ7cw4og10fYezXenLArx7j18ZBnZ+7Xls+cL12ExhvtY2+0gpd6WLZLtpV P+ZRp0fnn2l5
yMGgfuuHD3bxpj248e0iCWQPGAM6q9xme+VZdOIGtreKyV+HwDrgx14c4t4q if1wH5DQciqb
shuHubc6hMFftndy8z4c2hTtPUkS+2cWVT8O9RT13e5RpuBVP24K7q3uoq2f BLZH+rEXN85d
rKn8ARdrOoLoxDLZ6+UzlejEBiIKCWC54mopWC8hyVAhusyfP2HyxAISxXLF C5PHSq153pVQ
lvvkMRrrUiVUNO/zGLJ0KcpP2/l4FaQqy+PaKUIWlai7t1F2AIynY58RR3px nymhfCHL4ct9
vIISEv/GFdEVCpYdKAWfAhIrx4Jx+zEVH8YVjgg3ZuTYiCPjdgSJLTNxtNrq WCd6mBWgGUnM
CDEYl8aVb2k85FMITN5ebi/gmYWJ+HGZjeh5NLcT7LDLhFj1KjY+jtvTo8bM QWzFTie5ffTf
ufj8w9y+FOJkTOQkhtg7YQdjcxxze1NysYm8xxCbJ+xkI7nsuF0qedpYijuI 9RN297sdJnkb
ty8lP1f9Owcj/tjKB83tS8nB+GRmEHsn7GAz+dG4fSo52lzaNIj9U3b4iV/N 7p1s1cG4Wx3c
nh71pgfE1sk696RLZLc+tujaPqyb3KIpE2LX0cg849ye4C42kHscYutUnVtc 5z0FeY9dO7ci
/lhJUc/tCO5Yt8Vh07WINPjcXuB+RabGh9g4VaeedNPK7VjZdG0vtqvcXlUu xLKrT7kWcosg
m67FlyXgdqZ2Ux1fqgBi8URdjC59wO0KfkXeRDkEiLXOvfrlFbjd6bk4CwJ1 btb/Y6+EA7c3
ZS9jyzpAbJ6skxFlIrjdKHgXWToCYuVUI2axlyyYHh4lqQTEtomSdE/iwN8G /617xZnbE9ip
9d4dVXVlZHLMXjDldvE4l04h1k2UrNqXWLldPM7FVoh1E3UnvoYCpK92oZb8 dp97jYP76Mfl
OdnlV7PDyUx5DpEBVamOMArRQxHlpMe49yuokNFuSq/My9v2pKyH6DZ4ddP5 qeymc72sh6wE
SNa+u6xHdVZ2srIeT2WX3OtlPSp9G2U9nj7HlPUoxbqyHqCr17gjVlfTw6xP XE2PTtTz+4bq
2aUykXDQj904zEvMb61nO6x15HB39Wt6AbyrX3NCN7j6NYAHjOHt6te4EioT dYAroXIi4P9F
HmwPd9qFg5peudhF+0DvjpTS5Yq8Gwd5LWr+EX5YmL4c+K46k/QBY1C7ukGu bpBM5yEvjHTP
i13dILDSOdCubhDoAWN4u7pBj4/4PtrekfdxdB/o3cJSwb3el0PfVW1yVZsg eg8bbVe1yVVt
gus/5AWQq9r02Ii7qk2yB8xB7ao2iRo/TtWm5yrVkixWbXoOiYWE6NKLqk3P L7WqNj1XLb1U
q9qEKzV0aarUUCtwHXsT4fGrNl3qVLCqQQkJb+aK4AWBfgk+f9mm/0t+OWxJ H8vn0H/4SRSn
06v9WdqFuWsnjY4+RWFykzxs6UQu8bfB2t79loTsk9fph0XosOkKPf28csIW CXP1wU5SH8zI
EWer436MN1cfrN4LeA7r6oO5+mA4W3t5bTITYjdhmKsPNn4Hu/pgE3ByH/Lc u/pgRyHW3f1u
5+qDafYxDAe7+mDafQzDwTd9SLjs6oOVQuw73NUH0+1jCA529cE0+xiCc119 MK0+BuDaPqyb
3KIpE2LX0a4+mG4fA3DuSZfDbi3sCklp2jhVp7pCUnp9DMC1vdjXcJsauRDL rnaFpLT6GIBr
XSGpsbvYFZKajnvfIgOMme70XJxFCzo36/9xhaQm7GRXSEq9k/77FXvvg+nh UbKMQGybKEld
qSGFPgbgTldqCN5H/915qlJDM/cbD+6jH1dwZJc1h1tlKJ1c/Xnrx3+e0Y+M eKx9K9CPP5Pk
+6Ijb+WtMxJ4s3+fxSbHpSt21N3KeLEjnoJtZeodLxcfo006sFKBZBfF6af/ H1BLBwh+7xBm
4jkAAIm8BABQSwECFAAUAAgACAA7hHE6PYQXg4wAAADgAAAAHQAAAAAAAAAA AAAAAAAAAAAA
RWNvcmUgRXhhbXBsZSBSZXBvcnQvLnByb2plY3RQSwECFAAUAAgACAA7hHE6 OQtvYI8LAAAh
gwAAIAAAAAAAAAAAAAAAAADXAAAARWNvcmUgRXhhbXBsZSBSZXBvcnQvZWNv cmUuZWNvcmVQ
SwECFAAUAAgACAA7hHE6fu8QZuI5AACJvAQAJAAAAAAAAAAAAAAAAAC0DAAA RWNvcmUgRXhh
bXBsZSBSZXBvcnQvZWNvcmUucnB0ZGVzaWduUEsFBgAAAAADAAMA6wAAAOhG AAAAAA==
--------------070904020500030808050903--
Re: Status of the Ecore ODA Driver? [message #499375 is a reply to message #53926] Sat, 21 November 2009 15:32 Go to previous messageGo to next message
Joel Rosi-Schwartz is currently offline Joel Rosi-Schwartz
Messages: 624
Registered: July 2009
Location: London. England
Senior Member
Hi,

I am curious as to if Andrea's ODA driver has been introduced into the core Ecore ODA Driver.

Thanks,
Joel
Re: Status of the Ecore ODA Driver? [message #500954 is a reply to message #499375] Mon, 30 November 2009 13:12 Go to previous messageGo to next message
Andreas Mayer is currently offline Andreas Mayer
Messages: 32
Registered: July 2009
Member
> I am curious as to if Andrea's ODA driver has been introduced into the
> core Ecore ODA Driver.

No it was not and as far as I know, there are no plans to do so.
--
Andreas
Re: Status of the Ecore ODA Driver? [message #500959 is a reply to message #500954] Mon, 30 November 2009 13:26 Go to previous messageGo to next message
Joel Rosi-Schwartz is currently offline Joel Rosi-Schwartz
Messages: 624
Registered: July 2009
Location: London. England
Senior Member
Hi Andreas,

I have been trying to ascertain (without much success) if the ODA Ecore Driver is being actively supported. Do you happen to know the status? Have you kept your version up to date with Galileo? This is a critical issue for me to resolve for the ORMF project so any assistance or advice you can provide would be greatly appreciated.

All the best,
Joel
Re: Status of the Ecore ODA Driver? [message #500997 is a reply to message #500959] Mon, 30 November 2009 16:12 Go to previous messageGo to next message
Andreas Mayer is currently offline Andreas Mayer
Messages: 32
Registered: July 2009
Member
Joel Rosi-Schwartz wrote:

> I have been trying to ascertain (without much success) if the ODA Ecore
> Driver is being actively supported. Do you happen to know the status?

Sorry, but I don't know the status of the driver in incubation.

> Have you kept your version up to date with Galileo?

Yes, I have updated my driver and the current version works with (and
requires) DTP 1.7 and BIRT 2.5.1. But the driver is still rather
experimental.

For example, the people at Actuate have implemented support for the Java
Object type (see [1, 2]). This has been a great help, since it allows
for simple navigation in the model via the JavaScript expressions.
Unfortunately, there is now an issue with BIRT's caching mechanism (see
[3]). As a workaround you can add a script to the respective data source
to force BIRT to cache in memory instead of on disk in order to avoid
the serialization. It's not nice, but it works.

There is also no public repository for the sources, yet.

> This is a critical
> issue for me to resolve for the http://www.eclipse.org/ormf/ project so
> any assistance or advice you can provide would be greatly appreciated.

Hmm. As a start, I could provide you with the sources of the driver, so
you can see for yourself.

[1] http://wiki.eclipse.org/Galileo_DTP_ODA_API_Changes_Spec

[2] https://bugs.eclipse.org/bugs/show_bug.cgi?id=178897

[3] http://www.eclipse.org/forums/index.php?t=tree&th=156043
--
Andreas
Re: Status of the Ecore ODA Driver? [message #501382 is a reply to message #500997] Wed, 02 December 2009 02:14 Go to previous messageGo to next message
Linda Chan
Messages: 845
Registered: July 2009
Senior Member
Joel Rosi-Schwartz wrote:

> I have been trying to ascertain (without much success) if the ODA Ecore
> Driver is being actively supported. Do you happen to know the status?

The oda.ecore driver has been inactive, and is still in incubation. We need new contributors to revive the project.

Andreas Mayer wrote:
> As a start, I could provide you with the sources of the driver, so you can see for yourself.

Andreas, can you please package and post your source contribution in a Bugzilla entry? Per the Eclipse IP process, this will be the first step to allow us to review and accept any source contribution to a DTP component.
Thanks much for all your contribution thus far.

Linda
DTP Incubation project lead
Re: Status of the Ecore ODA Driver? [message #501781 is a reply to message #501382] Thu, 03 December 2009 18:44 Go to previous messageGo to next message
Andreas Mayer is currently offline Andreas Mayer
Messages: 32
Registered: July 2009
Member
Linda Chan wrote:

> Andreas, can you please package and post your source contribution in a
> Bugzilla entry?

I've attached the sources and an example report to [1]. I also described
the issue concerning BIRT's caching there. In my opinion this is a
knock-out criterion for my driver implementation. But maybe there is
someone resourceful, who can help here. :-)

[1] https://bugs.eclipse.org/132958

Have a nice day
Andreas
Re: Status of the Ecore ODA Driver? [message #594314 is a reply to message #52485] Thu, 22 January 2009 22:52 Go to previous messageGo to next message
Tim Myer is currently offline Tim Myer
Messages: 81
Registered: July 2009
Member
Hello Víctor,

Thanks very much for your interest in the Ecore ODA Driver. The
proposal page (http://wiki.eclipse.org/Ecore_ODA_Driver-Proposal) links
to a detailed getting started guide, which you may find useful
( http://timezra.blogspot.com/2008/04/oda-ecore-getting-starte d-guide.html).

Linda has recently taken steps towards including the enablement plug-ins
in the DTP 1.6.2 nightly build with the goal that they will graduate
from the incubator in time for Galileo.

As far as the CDO repository question goes, I have not tried but would
also find this use case very interesting. I am not familiar enough with
how CDO models are accessed, but if they are available through a URL,
then I would imagine one could use the existing plug-ins to try this out.

Thanks again for the questions, and please do not hesitate to post any
more questions, comments or concerns.

-----Tim-----


Víctor Roldán Betancort wrote:
> Hi everyone,
>
> recently I discovered the interesting proposal to provider an Ecore
> data-source driver, which would allow (among other things, I guess) to
> generate documentation in BIRT from models! This is quite cool stuff
> guys! I wonder why there isn't much hype around :P
>
> Might I ask you guys about the status of this proposal?
>
> As I've see roughly in the proposal documentation, I was supposed to be
> included in Ganymede, but the bugzilla is now planned for Ganymede. Is
> it stable? Has anyone had good experiences in developing tools using
> this driver? What about generating documentation from, let's say, Ecore
> models persisted in a CDO repository?
>
> (distributed-model documentation generation!!! :D)
>
> Looking forward for your comments.
>
> Víctor.
Re: Status of the Ecore ODA Driver? [message #594320 is a reply to message #52514] Fri, 23 January 2009 03:12 Go to previous messageGo to next message
Linda Chan
Messages: 845
Registered: July 2009
Senior Member
Victor,

The oda.ecore plugins are now being built as part of the DTP 1.7 daily
build.
Since it is still in incubation, its plugins are available in separate
download packages.
You can find the link to its download packages in the DTP Incubating
Component section on the download page:
http://www.eclipse.org/datatools/downloads.php

Give it a try, and please let us know how it works for you. Feedback from
you and the community will be one of the factors to determine whether it is
ready to "hatch" in Galileo.

Linda
Re: Status of the Ecore ODA Driver? [message #594327 is a reply to message #52514] Fri, 23 January 2009 10:20 Go to previous messageGo to next message
Victor Roldan Betancort is currently offline Victor Roldan Betancort
Messages: 524
Registered: July 2009
Senior Member
Tim,

thank you for your feedback. Please see some inlined comments below:

Tim Myer escribió:
> Hello Víctor,
>
> Thanks very much for your interest in the Ecore ODA Driver. The
> proposal page (http://wiki.eclipse.org/Ecore_ODA_Driver-Proposal) links
> to a detailed getting started guide, which you may find useful
> ( http://timezra.blogspot.com/2008/04/oda-ecore-getting-starte d-guide.html).

Thanks! I've already take a look at that yesterday, and that's why I
asked, since the release plan is said to be for Ganymede (take a look at
the Status paragraph).

>
> Linda has recently taken steps towards including the enablement plug-ins
> in the DTP 1.6.2 nightly build with the goal that they will graduate
> from the incubator in time for Galileo.

Our product is aligned with Galileo, so I think it's a good idea for us
to develop with the incubation driver, expecting it to become graduate
for Galileo :D


> As far as the CDO repository question goes, I have not tried but would
> also find this use case very interesting. I am not familiar enough with
> how CDO models are accessed, but if they are available through a URL,
> then I would imagine one could use the existing plug-ins to try this out.

As long as the driver retrieves the Resource through EMF ResourceSet (is
there any other way? :P), then it should work :D CDO uses it's own
implementation of EMF Resource (CDOResource, which is also an EObject!),
and behaves exactly the same way, but has some additional features. So
it's a matter of providing the URI to the connection wizard and the rest
is magic ;)

>
> Thanks again for the questions, and please do not hesitate to post any
> more questions, comments or concerns.

Thanks for your kind support, Tim!

Best regards,
Víctor.

> -----Tim-----
>
>
> Víctor Roldán Betancort wrote:
>> Hi everyone,
>>
>> recently I discovered the interesting proposal to provider an Ecore
>> data-source driver, which would allow (among other things, I guess) to
>> generate documentation in BIRT from models! This is quite cool stuff
>> guys! I wonder why there isn't much hype around :P
>>
>> Might I ask you guys about the status of this proposal?
>>
>> As I've see roughly in the proposal documentation, I was supposed to
>> be included in Ganymede, but the bugzilla is now planned for Ganymede.
>> Is it stable? Has anyone had good experiences in developing tools
>> using this driver? What about generating documentation from, let's
>> say, Ecore models persisted in a CDO repository?
>>
>> (distributed-model documentation generation!!! :D)
>>
>> Looking forward for your comments.
>>
>> Víctor.
Re: Status of the Ecore ODA Driver? [message #594335 is a reply to message #52542] Fri, 23 January 2009 10:26 Go to previous messageGo to next message
Victor Roldan Betancort is currently offline Victor Roldan Betancort
Messages: 524
Registered: July 2009
Senior Member
Linda,

> Give it a try, and please let us know how it works for you. Feedback from
> you and the community will be one of the factors to determine whether it is
> ready to "hatch" in Galileo.

The documentation generation is a critical part from our new project. We
were initially considering to develop our own generator, using model
transformation and OpenOffice API. Using BIRT and Ecore ODA Driver seems
a more attractive and kind of effort-less :) So we will definitively try
it out, expect us frequenting this newsgroup, kindly asking for help :P
Our product uses both XMIResources and CDOResource, so it would be an
interesting experiment to make BIRT and EMF community become even closer.

Thanks for the support!

Víctor.
Re: Status of the Ecore ODA Driver? [message #594346 is a reply to message #52568] Fri, 23 January 2009 22:37 Go to previous messageGo to next message
Tim Myer is currently offline Tim Myer
Messages: 81
Registered: July 2009
Member
Hi Víctor,

Thanks for the correction on the WIKI page. The status section has now
been updated.
Also thank you for the clarification on CDO Resources. I might try out
a CDO model URI this weekend. If you get to it before me, your feedback
and experience would be much appreciated!

----Tim----

Víctor Roldán Betancort wrote:
> Tim,
>
> thank you for your feedback. Please see some inlined comments below:
>
> Tim Myer escribió:
>> Hello Víctor,
>>
>> Thanks very much for your interest in the Ecore ODA Driver. The
>> proposal page (http://wiki.eclipse.org/Ecore_ODA_Driver-Proposal)
>> links to a detailed getting started guide, which you may find useful
>> ( http://timezra.blogspot.com/2008/04/oda-ecore-getting-starte d-guide.html).
>>
>
> Thanks! I've already take a look at that yesterday, and that's why I
> asked, since the release plan is said to be for Ganymede (take a look at
> the Status paragraph).
>
>>
>> Linda has recently taken steps towards including the enablement
>> plug-ins in the DTP 1.6.2 nightly build with the goal that they will
>> graduate from the incubator in time for Galileo.
>
> Our product is aligned with Galileo, so I think it's a good idea for us
> to develop with the incubation driver, expecting it to become graduate
> for Galileo :D
>
>
>> As far as the CDO repository question goes, I have not tried but would
>> also find this use case very interesting. I am not familiar enough
>> with how CDO models are accessed, but if they are available through a
>> URL, then I would imagine one could use the existing plug-ins to try
>> this out.
>
> As long as the driver retrieves the Resource through EMF ResourceSet (is
> there any other way? :P), then it should work :D CDO uses it's own
> implementation of EMF Resource (CDOResource, which is also an EObject!),
> and behaves exactly the same way, but has some additional features. So
> it's a matter of providing the URI to the connection wizard and the rest
> is magic ;)
>
>>
>> Thanks again for the questions, and please do not hesitate to post any
>> more questions, comments or concerns.
>
> Thanks for your kind support, Tim!
>
> Best regards,
> Víctor.
>
>> -----Tim-----
>>
>>
>> Víctor Roldán Betancort wrote:
>>> Hi everyone,
>>>
>>> recently I discovered the interesting proposal to provider an Ecore
>>> data-source driver, which would allow (among other things, I guess)
>>> to generate documentation in BIRT from models! This is quite cool
>>> stuff guys! I wonder why there isn't much hype around :P
>>>
>>> Might I ask you guys about the status of this proposal?
>>>
>>> As I've see roughly in the proposal documentation, I was supposed to
>>> be included in Ganymede, but the bugzilla is now planned for
>>> Ganymede. Is it stable? Has anyone had good experiences in developing
>>> tools using this driver? What about generating documentation from,
>>> let's say, Ecore models persisted in a CDO repository?
>>>
>>> (distributed-model documentation generation!!! :D)
>>>
>>> Looking forward for your comments.
>>>
>>> Víctor.
Re: Status of the Ecore ODA Driver? [message #594356 is a reply to message #52514] Mon, 26 January 2009 18:18 Go to previous messageGo to next message
Andreas Mayer is currently offline Andreas Mayer
Messages: 32
Registered: July 2009
Member
Hello Tim,

as far as I can see, the driver's support for multi-valued attributes
and references is rather limited (see [1]). Values of arrays and
collections are converted to strings and concatenated with '\n'
inbetween. References such as Writer::books::title are resolved and the
resulting values are again converted and concatenated.

Unfortunately, this makes it difficult (or even impossible) to deal with
n:m references. For example, let's assume you have the following model:

class Writer {
name : String
books : Book[0..*]
}

class Book {
// No back-reference to Writer here.
title : String
}

Now you want to create a report as follows:

Charles Dickens
The Pickwick Papers
David Copperfield

James Cooper
The Deerslayer
The Last of the Mohicans

Since Book has no reference to its Writer(s) and Writer::books::title
will yield "The Pickick Papers\nDavid Copperfield" and "The
Deerslayer\nThe Last of the Mohicans", you have no unique key to join a
Writer and a Book data set to create the above report. You would have
the same problem, if a Book would have a reference to one _or more_ Writers.

Why not provide an additional type of data source, which treats
references like a table join? For example,
JointDataSource(Writer::books) would yield rows with attributes from
both, the Books and the corresponding referenced Writers:

Charles Dickens, The Pickwick Papers
Charles Dickens, David Copperfield
James Cooper, The Deerslayer
James Cooper, The Last of the Mohicans

We even could get by without any join at all, if we could feed object
references from one data source into another. Unfortunately, a result
set can only contain base types such as integers or strings. However, an
Ecore data source could provide an implicit column with the URI (as
returned by EcoreUtil.getURI) of the current object. A second data
source could use this URI and a feature name to obtain the object,
resolve the feature's references, and yield rows containing the
attributes of the resolved objects.

What do you think?

[1]
http://timezra.blogspot.com/2008/07/oda-ecore-getting-starte d-guide-part.html
--
Andreas
Re: Status of the Ecore ODA Driver? [message #594367 is a reply to message #52647] Wed, 28 January 2009 17:15 Go to previous messageGo to next message
Tim Myer is currently offline Tim Myer
Messages: 81
Registered: July 2009
Member
Hi Andreas,

Your use case is certainly interesting. I will take a look at this with
Jeff. You might speed the plow by opening the request in Bugzilla (and
by submitting a patch if you are really ambitious).
Thanks for the feedback.

------Tim-------


Andreas Mayer wrote:
> Hello Tim,
>
> as far as I can see, the driver's support for multi-valued attributes
> and references is rather limited (see [1]). Values of arrays and
> collections are converted to strings and concatenated with '\n'
> inbetween. References such as Writer::books::title are resolved and the
> resulting values are again converted and concatenated.
>
> Unfortunately, this makes it difficult (or even impossible) to deal with
> n:m references. For example, let's assume you have the following model:
>
> class Writer {
> name : String
> books : Book[0..*]
> }
>
> class Book {
> // No back-reference to Writer here.
> title : String
> }
>
> Now you want to create a report as follows:
>
> Charles Dickens
> The Pickwick Papers
> David Copperfield
>
> James Cooper
> The Deerslayer
> The Last of the Mohicans
>
> Since Book has no reference to its Writer(s) and Writer::books::title
> will yield "The Pickick Papers\nDavid Copperfield" and "The
> Deerslayer\nThe Last of the Mohicans", you have no unique key to join a
> Writer and a Book data set to create the above report. You would have
> the same problem, if a Book would have a reference to one _or more_
> Writers.
>
> Why not provide an additional type of data source, which treats
> references like a table join? For example,
> JointDataSource(Writer::books) would yield rows with attributes from
> both, the Books and the corresponding referenced Writers:
>
> Charles Dickens, The Pickwick Papers
> Charles Dickens, David Copperfield
> James Cooper, The Deerslayer
> James Cooper, The Last of the Mohicans
>
> We even could get by without any join at all, if we could feed object
> references from one data source into another. Unfortunately, a result
> set can only contain base types such as integers or strings. However, an
> Ecore data source could provide an implicit column with the URI (as
> returned by EcoreUtil.getURI) of the current object. A second data
> source could use this URI and a feature name to obtain the object,
> resolve the feature's references, and yield rows containing the
> attributes of the resolved objects.
>
> What do you think?
>
> [1]
> http://timezra.blogspot.com/2008/07/oda-ecore-getting-starte d-guide-part.html
>
Re: Status of the Ecore ODA Driver? [message #594392 is a reply to message #52674] Fri, 13 February 2009 19:29 Go to previous messageGo to next message
Andreas Mayer is currently offline Andreas Mayer
Messages: 32
Registered: July 2009
Member
Tim Myer wrote:

> Your use case is certainly interesting. I will take a look at this with
> Jeff. You might speed the plow by opening the request in Bugzilla (and
> by submitting a patch if you are really ambitious).

It took me a while, but I've found some time to dive into this
ODA/OCL/EMF-thing. As a result, I've screwed together a prototype of a
driver with the following features:

* Each data set has two implicit columns named "type*" and "uri*". The
type column provides the fully-qualified name of the type, which can be
used to handle sub-types, for example, Order and PriorityOrder. The URI
column will give you the URI of the object for the current row. It can
be used to reference the object as input for other data sets.

* References are converted to a string of one ([0..1] reference) or
multiple ([0..*] reference) object URIs. These can also be used as input
for other data sets.

* Each data set has an implicit parameter, which accepts a string
containing one or more URIs. The corresponding objects will be used as
the input for the data set's query. If no argument is provided for the
parameter, then the resource's contents (Resource.getContents()) are
used instead.

* Instead of a SELECT with FROM clauses, which iterate over each element
in a model, and an OCL condition, which is checked for each model
element, I am using OCL queries to fetch the objects for data sets. This
way you can use OCL to navigate through the model and exploit the
relations in your model to limit the query result. For example,

self.books->select(b | b.year < 1990).writers->asSet()

will start at the model root and give you all writers of books written
before 1990.


So far, I am quite content with this approach. You can navigate through
a model any way you want without providing bi-directional references in
the model or using joined data sets.

However, there is still the issue of attributes that are collections or
arrays of primitive types. BIRT doesn't support such types. Currently, I
can only think of using another data set to iterate over the elements of
such a collection. Unfortunately, unlike EObjects collections don't have
an URI. So how to feed them into a data set?

You could convert a collection into a string representation and have the
data set parse that. However, I don't like to convert doubles to strings
and back. What about rounding errors, NaNs and all that stuff?

You also could reference collections with the URI of the owning EObject
plus the name of the corresponding attribute. However, as far as I can
see, you cannot do that in OCL and therefore have to use two different
ways to address data. That's ugly.

The code for the driver is currently a mess. As soon as I am able to cut
some more time, I am going to finish the code and am willing to share it
here.
--
Andreas
Re: Status of the Ecore ODA Driver? [message #594814 is a reply to message #52729] Wed, 18 March 2009 13:58 Go to previous messageGo to next message
Andreas Mayer is currently offline Andreas Mayer
Messages: 32
Registered: July 2009
Member
This is a multi-part message in MIME format.
--------------070904020500030808050903
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hello,

I've finally managed to revise the code for my implementation of an
Ecore driver. The plugins [1] and the Eclipse projects [2] for my
implementation are available under the EPL license. I've also attached
an example report, which shows how to list the classes and their
structural features in an Ecore metamodel.

Some things are a bit different than in Tim's driver, which is already
a part of DTP. Maybe some of these ideas here can be merged into that
driver.

* To create a data source you have to specify a resource URI for the
model and a list of Ecore packages, which are used in the model. The
packages are mainly used to fill the selection dialogs for the
context and result types of OCL querys.

If you test the connection successfully (button "Test Connection"),
the model is scanned and any package found in the model is
automatically added to the list. The scan is not perfect but will do
it in most cases.

* To create a data set you have to specify an OCL query, a context
type for the query and the type of the query's result.

In contrast to OCL conditions (Include it or not?), OCL queries can
be used to navigate references (Get me all attributes of _this_
class.) and return values, which are no EObjects (for example, a
list of Enums).

The result type specifies the columns in the result set. I couldn't
find a way to get this information from the OCL query itself, so you
have to specify it manually. By default the result set for EObjects
will contain a column for each feature of the result type itself and
each feature of its subtypes. In addition there are two synthetic
columns named *self and *type, which contain a reference (as URI) to
the row's EObject and its qualified type name.

The driver supports all primitive Ecore types such as boolean,
string, integer or enum. These types are mapped to appropriate ODA
scalar types. In addition, there is a special types for references,
which is mapped to a string of object URIs.

* A data set will usually run its query on the root objects of the
model. However, each data set has an implicit parameter named
*input. You simply pass one or more references (for example,
row["*self"] or the value of any other reference column) to use
other input objects for the query.

Recently, Linda Chan announced some enhancements in the ODA interfaces
[3]. As far as I can see, this could simplify the handling of
references. Instead of converting the into URIs and back, referenced
objects could be passed directly from a result sets to the next data
set.

[1] Driver feature and plugins
< http://www.inova-eng.de/dtp-ecore/de.inova.datatools.oda.eco re-0.5.0.zip>

[2] Eclipse plugin and feature projects for the driver
< http://www.inova-eng.de/dtp-ecore/de.inova.datatools.oda.eco re-0.5.0.zip>

[3] ODA API Changes in Galileo
<http://wiki.eclipse.org/Galileo_DTP_ODA_API_Changes_Spec>
--
Andreas

--------------070904020500030808050903
Content-Type: application/octet-stream;
name="EcoreExampleReport.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="EcoreExampleReport.zip"

UEsDBBQACAAIADuEcToAAAAAAAAAAAAAAAAdAAAARWNvcmUgRXhhbXBsZSBS ZXBvcnQvLnBy
b2plY3RVjjsOwjAQRGuQuIPlHgwdheM0CQfgcwCzWSEj/7R2UI5PEgLI3b6Z 2dHIenCWvZCS
Cb7ih92eM/QQOuMfFb9dT9sjr9VmLSOFJ0JuMAGZmMf0qK6k1w5VC4GQtYN2 0SI7YwyUpZit
KQPBOfRZSfG9JnUpTDOIgu69sd0lIny8Er3OPeHy9odfRbnwDVBLBwg9hBeD jAAAAOAAAABQ
SwMEFAAIAAgAO4RxOgAAAAAAAAAAAAAAACAAAABFY29yZSBFeGFtcGxlIFJl cG9ydC9lY29y
ZS5lY29yZe0dy27jtnZfoP8guN2ONTPdXASTFknsFL5NJoM4SQsUXTAy7Wgq S64eSXy//vIl
kTRpiZKoxxSZzcQ0eXh43jw8pD/98roNnGcYJ34Unk4+TN9PHBh60coPN6eT +7vLd/+Z/PLz
9999gl4Uw5P5F+D9DTbQed36J8Woj2jU99856B8CFiYn6MvTyVOa7k5c9+Xl ZRptN9Mo3rh/
XC8meZdE7vLyE+nx8f37D6jb1dJ7glvwzg+TFIQelKATTKTB0Av8XQIJBLhd Yygf3TnuNnFC
sEWdyRgGJUzubxfm45MvMVz7rzmMnzGQT/AiAEnir31EAget5STd7/JpTubk y3zq+Vmaxv5j
liJgcJntYHyH+iankx9cd75M48xLsxgElxCg/xl8PMNZGEYpSBGBEyeJstgz XjMDgYCsYAr8
IHH+hvvTiYcgpTHwwxTh9gyCDAG8QG1+ksIwvYsB+hP9MXFzFFwRhwIvBWUN AYQlUyL4M7T4
O7HLDKQANzhGa8K0Oo+iAIKQ42eEyi1cwxhiGcpFoUAOTz9xgugFxudRFq6Q +E9y0jk5unjm
HNeJ4z2BcAPBY4C+WYMgQU3PUYAohBsQNuhzmhMyb1jB2H+GK/aRYo9oK0hQ A5kqGKMRquto
BYN5ALeYm/3K0+8wCC6jeAtXSzIF0rRO5IkuoL1MocmRoWsrUowsEyfb7QpZ endEmOiUdxH9
/xrs5mEa75FoRSGCEm4FyUGzR8Ez/BJHrz5mLpW4tvIviYeImfQFx10RaD1a DrzZ7aLETzXQ
JM63XQAmFCRCZ0Lum8ev0Ev7I2+cN9TDz45ZYJ8Ui8BB9GwPFohV8Rp4cJGc PeJvvdQ5S6+j
JL0J4WLm3If+Pxlk5P2MFpGwphu0AILc0t+EjPifows/9rIAxHx9Drc4uSqR xTrcswmdZ37y
NUIIsgnPwpVmniqDVQxJcueWFFPcrO35OU5m+AXEaKYUS0Bu/7YwZzaXJdoi oM9RPY79Bubk
uECSmrbHfyHGENr5NGHPgYXUB0VaUqxpn4WFCGMhRz/1qGcLAYO1VlCr/hK6 YAjWZvsOWruk
RiEEYPZoqMBUjZFzWzmeUJmbTjNnxkxSFiYwTWmUTFytIC5N3M6vMCTRBIdz 6HsShB1aUwJX
i2QJ0wc/8R/9wE/3hScSgu9yAPcY+WoAeufgagjdkgdc3g0Dirx/jZjnMHYr YKB4hMJASnjg
XZruvoKgkHzDFQma0mD/xUHqNmKtFnJbM9YTgIxoIf+OVfxrhOqCK+23zZAg aGO6RrUQdaAw
28HKygMng4WV7LztL6yZg7eVBmuO+2ImplV1as3xb49tR5kYjViZppAUsWrq 6hVY9l0+Ct8Q
Nb26ssaG0cSrElKar/gt+GxlIlTuGZk+iXvWjZ6VRBlNiDn5RjCfT8me4Z3s auh8+oIdhWG8
MEIsT4Y/FjtwkkBrkL7KYfeTu4pYRlYQlv+CZyAlQuskLzgvreeAmm7kKTkJ YlbTIFxLDh3Y
25a7sdUr55/OeB1nQ4XxEpgi2EdHsFxcH+jsIvWIEJ3Fm4zsDSS6CNC6o8sK rkEWpA+YOcfU
12bUZUkNc4v5poVj1kI19mClJpKk5W2lYqaI1UHIy4BIIUTrIFdyxIYRrjRG F9HaCXZ4+YLR
wWCzA3mkuSDw/4cZYS+MELf03PZcIU4i7KzSaB5mWw19CtL1G/bR2A7jhMOd KBZPRnkro0P9
iA+f+GAwDICkYWJ7WRQX9ne80wn+z5IX6/nIUMTyfN9mGcHB2OEP2lTTWMip kVGUGNs4rSFA
cYnKWLQTnF9mO8VGBrUL+WwXRynySa1Qyda95cSdyXZDOWY+QiZCzVDEXHpd eGDf24ruJfAQ
u/bGBYOK4fJiRCxZDFjUX2ahbNWp0Nkv42jL2HlkB1KKixAK8cFFo2tgaR/s 6GUzx4fM4TOM
07x40BoaXdEsNx2lW8YuXE6xdzCo7i36NlTWYjvBFKzIptlRW7lcszJZKWvB kfBDKh8WDk94
c3nxWTfFtxb5L5abmh0HCxRpHHRwIK5cZWtHEqTooloSRlEGThIvXVSAd7D/ aMufStWrdoWa
MYsES92+i6IwdbJbeKDctL6ANZaNZIeGOI9xrLq5dCBig1npoQEsLPE6YNxO VAEhxRem2dr5
lZ+kJZladcQBWY6ncE2CgrxopBbOdzGEi5RF8MOhfhFHSSIUIH0rJP8VHj3A KvOcndTv9oOM
FgRzix3YJsOlL2HnawzhS4vwVWfPl9Bi0XH/4kbOCTqdt7Uj5nVkSlSE/xzo MJ/mb+XT+qPH
+M7n6BbuEKmQY3yI/JWNIEqNkw9LfdTQpIv0BoEscn3Mpy9tNqH1ECpFxngz ymAI5G2f+Hr1
4K7GZkqsrnk7ErV4JMoClrr8eKuks8W6tp6Jn2mPssjsM34awRE/08cPmJda Zo87ugDRd/Hl
i60EVLOjSdF86K3KSA4mmyUuMGEGOtPQIEMZPJozlsMcqkkCtzjYaBiOsPFu kTVuuwixrqS2
w9RYY134RHrbQ5mrtnGwwixZNb5FgpzYPHsYC8C6qxESCWMnTSiEeYa7k5YX B+WMXNHaRWQv
XBwUol87dBNWOOJ3dHJ6OEtkDgOeFhUeJPgN7isdYyNrLqjiaG41e0pe2GJV 2OA1prJWDFH4
1sY+UEmtTJG3vFZKtx0Gfnw0l8uIgta8RWrHxmludh2c8+VojCmxhYTTX81U QW0S/Vt+TaP8
IZLCOh8U2/dSnm9rQ8H1Zcz2Ry1wYzo9Gk9VGJXRYKSh/Vg2jt/YXRCe9BoR c8n6xvPYy6Bn
AZqr0HY8quQWR33Xk3jRqyJMcsjn+yIIETYQ5HNCO5DoqovNRBQjCbUpnz34 lIykHr8plHlc
PIpibx702kGngoIf2uK7BaHF0qgReawY/pP5Henf8DssuifUZ0A5nm/XK7s/ S1Q4IbbXYMXb
KWKXp4i8Bp+FNef+ZgY9f4t3BMp7A6eTrygKn25B+jQVOpqEMy6hNaU7oTlB wM0Q7935Kwo+
VnB1jWiFEToW3DyChCk4o1bVO+8/rBiGJXGMHZrh92g3OBdZRbO843hp5jMM O6YZcx46gj3K
JWgjpNGjWlbYHY3yl6aPiVaAnO70fGiaKdvFwxH0/Pyg94la7NgFIfc4/tFJ Gv5ixGK2T0v3
YJZIcxbHYH+UPn/+NWIKPcHXcz8E8b4HMpnp4aASRSXdUANR137U7+IJ6D2j h79wG8MEHtrt
GXGl6D0gay74YqtYg7v2w5oZOGIZCe3wiqekSzMmzXywCaMk9T20Il/v7BGt i3gc0XrqRdtt
FLKpD8bntBMfBZHfTKyNYZSR3K0GsRX9ary2jyHYsYCQSYyUbDYwwXJmmukY 7dyPltFbRXWl
n44qk/mC1Hg2pWBx3jjTrS6Av8pQexXqgw721Jftfq/BzggvAoaiJYzsEi32 GzxNcfuRju8A
wyACeolck2/Ga/Uoft3qK6GOkc27HJZajI9mFo/07cfg4Qy9jnC+4eHXYJmP 7umCcytGojV4
pkg69ikXLdSzH8HiFTIVAb9YRXPEP97Z849CcUI5XvKvctWc5SrCT7No4AcR f2tlhHpF0OtW
LjBpjBhwNSipKAvNdAp37UepjoVPfA9YFSaVK9pvwrGetsODPU3kD00Yx1wx GzItxtqPt3LQ
5Ip2c8zwcPvILZ+iWI9WQr4Zr2Wh+HWrHYQ6RrZlOSy1GB/NrAvp2495yd8U K6ed9GDYGEVN
ubjXnlRKjbb2B1yrLDPbJBaka1QWgqgylhJQSy9UtnyCSRFj6WWbulkQafAQ KR1Z1OQajaqn
3vr+xXDMZqUokTcUpfDdPF1xr1aqHS9f6e3HlfG8fOH1b+f3hugteKEzml7M ya+nGlT+2q0V
u1IrJEfCaPEmJ0dM/oaj1g0e1Zfl7dVRl91c1RdON1sTNSXda49Ck08uw4ld /0VN/wdQSwcI
OQtvYI8LAAAhgwAAUEsDBBQACAAIADuEcToAAAAAAAAAAAAAAAAkAAAARWNv cmUgRXhhbXBs
ZSBSZXBvcnQvZWNvcmUucnB0ZGVzaWdu7X1tk9u2sub3/Aodbu3mnr01kmd8 fDz2apRyMs5e
10lsV8bJ/ZBK3aIl2GZFQyoUNZ65tT9+CZIiCRIEGmhgxBe46sTHEtjofhqP iJdG9/K7+9vt
7I7E+yAKr7zz+RNvRsJ1tAnCz1ferx9+PLv0vlt9s4zJLoqTWdo43F95X5Jk 93Kx+Pr165ys
t8FuT+ZR/HnxMYiTxcWTJ88WG7IPPodeJfjp/GJ+/tybBZu0E2/1zSz9s9zF 0Y7EycMs9G/J
lbeOiZ+QzfcP3up1LnX2/ZtfPsyuM2Eknv2WS5tdzKm4+OLpxX+lvb14cvHk Yvb9IdhuZv9r
m/yf/Nu7/Jvzy7Mnz58+WS0Xx874fR/CINl7qyCUNQzWUfhjsCXeapGQ2902 1Xi/+Lj1wz//
K8do/jn4JBPyMdgEP/kP0SF5FwckTPwkNctbbZO49eTGT/yzfXSI12Sff5R9 HG38s9pXM3Kf
kJCC8+b6ytuQeRBGd/6ctkiiaLufp+1TV0Ux8QoVXtN/zH6ONmSbe+W5V4nP utgG++Ssofgu
Du5Si6/Tv0j8Pv8uIPvGo9nj5P6MNaXVgopcxSS34Nc4WC6yT/iN7/ztgawW udqv7/0UejL7
JUN8kRmWm7dc5A3b+iyECkHV3fnrP/3P5O0+1XcPULiDKeT2EyXKRW6PjtLL BeOf2tBYNMZG
MZAW7ZFUDC6S8EcWSeDDKvvshiTH4fXD1t/v04GRDa1LyNBaR9vDbfgfQZhw h9M+iQ/r5BB3
wc2V9jb9/97K/5g+7K+TJrdkMjbBPuX3A1zIciHQEmPBhnzyD9vkNzpKUFZA BVmzhLzabl8l
SRx8PKQ/nChb4KKsWvNDlP5+B+Ft+jOOtwcqzKpF/5ekL9tgfXNIG3142Blw k5JEq7a9S7/M
3rZ4o2CirFrzC/lE4nS6ZsBFMFFWrbkpHve3P6YTwVQM3io1kXatM0enk/Mo DKPECItggixa
YupVdOL3kOGf7J78Xr+5LnHF2QMUZM8SU6+dU79z3ufLH5wRACH2LDD1yjz1 +9L0y7Ivb0pT
P2Gn/u2iXb/34/QfCYmRtsBlWbMnCPeJn472bF2PsgYs6XFsoR+Zs0cmzbpN dKgYMwkizKJF
6WD/5K+xpgCkWLMhxHpCJsCa5v97T7atbWwl1aUS7OmepOMWp7tMQqfunduy rFFHrf31F7L5
mST+tZ/4vG1P3k5p+m4+bBO62dphmgQ7nvm7aB/khxDnMuR4j4dKG608CXT/ mP7eeKuPUbQl
fusgpiVANHzwMFzow6CyWyuGIrUgCD+fGImn+kio7fYOAIt/4LBQ2SseABrP cGgob1oMAJJ/
4iCB7xMMAIvnOCzgK/UBYHGJw0J9tT8ATF4gMRnT78b5EwwY8P34IUCBmIEq bOgPAQnEJFT9
SGAIgGDmogqnCUOAAjMVHdU04xwzDQUeaAwBBszUc1RzrXPMxHOUM61zzPRz XG8QzKRT7Uxn
AGhcIGadSidCQ8ACMe1UPlEaAh6IyafqadQQ4EBMPcFHWWIcerIxjph4Qs7D xBj0YywgZpyg
g7UhYICYboIO6KxjID6q6zzg46h0k12qoLeWyjs1XZrxb9WUcwoDNx8KiINw d1C+8RCmi8I7
8hYhQdlDXA2uSynyuTziJHNJ7nfpBD+7U1aoXzu681bffksv4BybwLoP9u92 tHt/661Sxymf
Q/vbbfT17WGr+Xiwf0PdJn9Y8wRb9TxadfSqeI878HUv+9SHvvaFIeVXtWT0 C+ccRuMnFA6+
8YfeIuxRV51M//gI3/OW8JfOM00ctYs8gLyi9agvAEs+kE5xzRzxy7yAulo2 Bj9I59kGgwtk
zsBfsRiDR6SzfhOxDTJX6EsahQ+Up8SVD/RvPzR9gLhHMQYfSDfUTcZyyHyB lzgKn0i39k3E
kkh9Me33gzyOBR/DInYB4m7qKByguW5GXIVl8Z/2ykEesmMqXEfoBTdZhYUL 4UOFhG7AXGAe
hQN0F9KG1goTXyjII6NwUVFC7HWvio8CeN1lsqH12cQXZ+qHRgX8hpdmbl0G jD5DR56J3TDx
WZDuuhiXwoBxATIbwhjcII+1MxBnJ3ICLoXDGI7W5CF+hsL7wG7QEWbcFSc5 ZdZcJ2PzXPA8
oZ0zYxSO0Fwja6fnYD2gm+NjFJEWmqvjEDnudZ4fx1jXXA9rJUNhYum0sqmM YtajuRLWyuHC
QK6VBMY05MKVj2YIXqPPvw4kfvhA7pNU6XSUzfOJRfApSCfaZ/Qjsk7+bT37 f7P1PFpv3+z/
FYSbd5/+7XXW7O9/71JweX+7bQb6bYpE/Flw1t5bLf/2+w/Xrz68+n0JrCJw S0NjX+b5/HMh
eUWBl7nkzsICZcLxxToKw9Sg4C5IHmii87LSQC4n60BcnyDP0r/IWi78jb9L X0FUUp4Kn4Kw
LOoMrFI7lovjP+gXeWcvr/Nc59WCJofu+HUZzntNPgVhRoQywfqxTRC+OyS0 y9Wb9N3V+rDR
2i8PVSonHb+jrimDdeuftVoeWUlDK5sfccTWh/IPVCn6A9L9bbu7mKyDDLqz Woflh632+7W/
JfW2+QdtzQ7brf8x2KYjYPU2+/9bUilW+/II4qITxcobKXqvBCCnLKJRWLwm VaMidPEmVdvP
ObIq++Z8x5EQFaHDRfRu89NKrYVMr9qY4phWuaNjqJYNuEP9qO4vx8Df/WxD aEmIMpXVlUct
8FhelHHCAl6UbX7IEnpxXJG3yL/mCJLRpkWdKtiXSx5lAklI9BTEIR0eqXAJ wyf26UOQlWxo
vt1KTlRp1dpI179svAC7pQvozOi19z8TjmrH71OryLatUv4x94lPUXyb9pm+ 0iAW3wT/zTig
/jHfVoH8Cg+OVeWXUmbYohAbsw2n0YU+jej+0VR5xIX79FziquX4xDYF8akZ gQ9n1FMEo2Cz
O6bbsTCqA/DTc6pDMccqtimYVeyNCjiv/uF4pcsrLuT9YBZXNccttimYW5yY QzjBnjmC6RKs
G/d+sKxbP0c1timYau92VVwjnGP/dBzT5RgH8H6Qi6OYYxXbFMyqetQknFXP Hat0WcUBvB+s
4ijmWMU2BbOKFwQLZ9elY5cuuwTA94NlAgUd29imcLZprb5eOJZps6yvyy63 3jLFqvqNYjin
6E1oRyodUnHw7gOlOGo5QrFNgYTSOto6RwRdTJtP/TzYcqdaZtiE2nY/x4Rg TJlUvd50dzvu
ZinGpHFQIJeLxtAjFw/vHtCKp5YjFNsURii986tzF4Whx6d+nl65oytDbCoz rShQycVb6FGp
iXUPeNRUyZGIbQojkd7h77mLqdDjUT+Pft25ryE24Q59z11MhR6r+n3k6857 TbNMb8/PxVRo
squXm31ul88Qm5o5yhQY5eIn9BjVAXkPWNWhmWMW2xTErEbiOTivLjAhFBO+ IMwH/PSs4uvl
OMU2VedUnrxOgVeYUIoJJ7DoBr1n3GJ0c/ximyrxq8oNqUAvTFCFo1cb8/6w q6WaIxfbFEiu
Mu2nAqsQ0RSTJlUT6z6wqamToxHbFESjUPW9hImfmDCFwn69i0L3/kESp0jH q8AcFy6hxRwW
6NNTh9XHcYdtCuNOnldZgTuYEInLfnMnSuzSh8G6B/Rh9BkxfRrtmulo2193 pc+tMuSuvlku
2umvV3/8sVou6qm2GxYzicCP2dXj4M5PyDXNuBu/z78LaD7uBszp4+S+Q3DZ ImPwOkpn5PdJ
tbpt87p84C5LXkzWUUzmr8vYs7tmSuMjkEINoPrlOKurV2w021UuCNfbw4bc HD5SelShDVIl
8yTP6sp1podf0jzmZzRZ+tmeJLXP6x/PUkeTkP4YvrmmKd3nQRjd+fMyxfo8 bTzP8dvkyZ+9
YtyV0e+zn9L+vVmwufKePvMAI3adsScjI2+UKlYXyKXRkeCt1l/88DPJf4EV c/1XP6dQMUZr
JNStYFOnIuyACnoUS34K0mW+vzVmEECeRbuy/OZIW6QyrOmPqotdNwIqyKIl x5+hDzoVPlhb
oKLsWVPkoEynMnp12Rh7FITZs6i4fYj3DlCQPUvwJpxM9+Aapbj4cWtab6Ov JP4+OoS4H1qY
GGtW3PrhA0p/mQBrmudbiwjNZQKsaR7F6dsV+X4GyLCmf0z+OgRYAyBCrFmQ xH66qiBhgjIB
JMWaDYcw+As5A5eLsKh9urxL0GshmBh7Vux2Jt4BMDHWrLiLtukcGekJiBBr FujVLKyrL5Vg
T3et4n+M7jIJmsX7yoeOWvvrL1XZLN7mCG8/pdx35DwAwY5nfq1guAw53uOh 4nYMT4Z6VVfR
AMIDIa1R3A2Eyo6OGApgJUq7SEiLBMOQAO4IDQAQaeleESCgrSQxCP0giLSe bjcKKhtSYih6
MR6kZW5FSKhsaA0AC2GdYQkWitthA0BDWAJYgobCVtoAkHiBQGIkENCksLoY yLf0xAD045Vx
jphdwrcHxUjQ+NPPJD41EojpJWSLUYxBT0YDYmIJ2awUY9CPnwTEVBK46ylG oScjATGXhG6e
DgIHxEwSvAU7CCAQ00jYPu4gUEBMH+H7wYNAAjF9hO8pi5Hox8ThAjGJhO5L i3Hox4i4QEwl
QbvbYhB6MXu4QEwiQbvk1jEQ75d37rJzVLqJDvE6Veo1DV6c/UyDbbs048fV lvk+DAQpFhAH
4e6gfCKax7q/RUhQ9hBXg+tSivxljDhOWJL7XUz2NCT1qH5tz9hbffstDYY9 NoF1H+zf7Wj3
/tYr4mzV1Pe36WKTBvfrPR7s31C3yR/WPEZSPRRSHb0q3uMOfP243PrgR0T3 Kr+rJAwQLlSN
HmQqnD/hz55E6KOikk3/AAmXh5bwl25OGDvxgrpBN6TatDdOwQbpPgnquE3s Ab3g7zH8Bkm3
ZfDHeyLoUXHrjzoJsoS/dDvIxKGi2AOoePsx+EB58qt3mCn0AvaewBj8IN0L wx+jCn2Audkw
BvylO3CIw1sh8JNFXH5erHtWLMJb4/LIGKY68qNp7LG0CHTE3Rfl/WnZUBeO Olvoa652dW7b
1HHXuq0ziuGuubyl/8UArvP8KBaw8pN+1Cm/CHPd61GjGOeaS1jdK1l13LWv dY0CeM21q/ZN
sjry+tfRRgG95pJV7wJcHXfNK3SjAF1zfap/b48FXvv23yjA11yc6l83ZMDX v7Q4ism7PCQF
F44iwl77quUYhr08BgYR/yKMS9C6HjqGPRl5yA0i3EYIudatVtOQC19ymuEM jT7TCUT88IHc
J6nSglG2rOfNKyNHaHI9Eufp9bzV8m+//3D96sOr35ffpa1ndySmMSRX3vn8 iTcj4TrapJhc
eb9++PHs0vtu9c2ynaNvlj4Y7l/mkq+8L0mye7lYfP36dU7W22C3J/Mo/rwo 86ct1lEYknWK
WpA80IRsRS5Ar5CTddAp5mMQJ4uY7KL0r6zlwt/4u4TEVFIW0pRFdyx/yw1Z pXYsF8d/0C+K
xIPXeeq2qoRRDl2ZJfP4OS/5YdEmCN8dEtrl6k1YJjSsPmy05uWXZBOHFoFM 3Myh7ZJagqSh
+GS7qslCoYlCdRPsCrJ0Vt5I0XslAJlsyW263OE1qRoVsQQ3qdp+zpFVlXaz /R1HQlSEVRWR
Tc1PK7UWMr1qY4pjWuWOjqFaNuAO9aO6VQLOWXGKf7xrf+VRCzyWF10JPblt mJyg7Rbmcu7W
w6DgiXcRRX4mnOydg/XpE+9ylBpx9l17RGIj2hRyWCNSWE+4Dh0X7tOziauW 4xPbVJlPZWgi
nFaIij5TrkciQr1f7Gpq50jGNgWSrIg+hRMLUehn0rxige4Dl1iNHH/YprDC 3kwIMZxEruaP
Fou4cJ+eSly1HJ/YpkA+sQHhcEZhKgH1nFGWKwF1YN4HWnEVc8Rim8KI1Yrx h1Pr+XipZZVX
XZD3gFldqjlusU1h3GLubsB5del4pcUrHtw94BRPLccntimMT6pEeuGIpEWk vjHIUQdLHXq7
Cs4bGs6nS5wJ7+XVQD49aWrKOMawTUGMqV+NU2AOIgCixrrJUYeD9ukpxFHK UYltCqJSfttR
gUSI0IcJv34YmE/PHkYdxxu2KYg3+aVVBd642AYt4jA4n544jDqOOGxTEHHK m8cK3HHhCzrU
aSJ9evY0NXIEYpuCCFRdIVdgECJ2YcIMakF9egq1VHIcYpuCOFRLBqBAIkS4 woRJ1Mb69Cxq
6+RoxDYF0eiY20GBQ4i4hAlzqAH06QnUUMixh20KZE+VoEOBQYgIhEkzqAV2 H1jUUsoxiW0K
Y1It24oCkzAhCBM+D+Kg3QMqtZVyVGKbgqhUJc+BE+nChSTo8KgF9elZ1FLJ cYhtCuJQkQpJ
gUCYyIQJB8OxQJ+ePqw+jjtsUxh3EsU40gtMLobLfnPH8iUiFuse0CeZSCxp o10zdVD7665U
R1U2o9U3y0U7Vdnqjz9Wy0U9LVrDYm7Zwzi48xNyTa8ax+/z7wLCrYFI7jsE ly3yfEVRmJD7
hDLrbXaA3uZ1+cBdlmiK0JKN89flZbLl4q6ZgOoIpVAHqIY50j1WMAjX28OG 3Bw+UpL8SHya
Um8PUDRPy6WuXGeCviXNPHdG09ud7UlS+7z+8Sx1NwnpT+Kba5qEbx6E0Z0/ L5PizdPG8xzD
TZ6uyytG3y/kE4lJuCazn9L+vVmwufKe/tMDjNt1xqGMkgYqHubS8kSLiLKD 1Y8qVIzRLJWM
Ffn9MfWMsqwRECm2bbjVyePNsUImx5odqFKKdUOggh7FEt1qhF0GAeRZtEuv xh9ri1SGNf1R
hfLqRkAF2bMEW+qMsUZBmD2LMIXDGGuAguxZ8i/ygHSITII93d/tshUj0gUQ KfZsKKdL+LEE
FmXPGrwRJ9MdUa6rbgBMjDUrtIpf1fWXCbCmeR6ZjdBcJsCa5rq1mOrKA2RY 01+7plHdAIgQ
ixbso+0deR9H9wHBvc7goqxZo1/pqG4ISIo1GzSrBtUNkIuwqL126R3WAogY e1bo17BhrACJ
sWaFdjWYug0QIdYs0KusUldfKsGe7lolShjdZRI0S4yUDx219tdfqmIAvA1E 3p5juUPPeQCC
Hc/8Wg0rGXK8x0PFLUueDPVSSKIBhAdCWmFHAAR013MIOEgrtEpxgOycDgEJ aenUbiRU9l7F
UAArKNlFQlrNFIYEcO92AIBIq4yKAAFt+opB6AdBpAU/u1FQ2ToWQ9GL8SCt wilAQnHreQBo
SMtiCtBQ2LYeABLiwpgSKCD73kPAADHFBO+fDwEHxAxTbQ9+CGAgppmjwQAx wYQfBYiBCIAF
gC0jgZhgQo4TxBj0YzIlr1zfjQHkYEKMQT8IgZhQAk84xCj0ZCQgZpPQg5JB 4ICYR6odtwwB
DXm58240wMc1gwACMZ+EnfkMAgXEbBJ+djQIJBBTSfj5kxiJfkyjLhATSugZ lhiHnowIxHQS
dBImBqEXc6kLxHQSdKJmHQPx2VrniRxHpZvoEK9TpV7TywCzrKJ9l2b82ypl mW8DQf8FxEVl
egk+rWfpDbK3CAnKHuJqcF1KkU/ZEUePS3K/Sydy9IrHUf3aaYK3+vZbernk 2ATWfbB/V9SN
94p7K2rq+9t06U2vzOk9HuzfULfJH9Y8clY9QFYdvSre4w58/Xsu9cGPuC2j /K6SMEA4+zAa
9KBwVo08pxZCr33FZwzIS+ea6JNxAPZaV5PGgL50fos/jRfBj7pRZfrFK5zj WsJfOq82FgMA
dYPudTDT3jgFG6QzfFQAgtgDehfXxvAbpDzhLQ6tEHfl6tCj7tw96uTfEv7S zXEzYRZCH2Bv
C47BD9LNeXyAh9AHmPuNY8BfHlqCCCsRIq91H3MUkGuuebVvgTKwa18lHQX0 mkte3OVVBn/c
NdhROEFz9YvHfrqQay559a8K13FHXDhWPhqToS983dlCX3PBq3PFuY671hXp MSyu5EFQ+gFQ
IsB1nh/FHoL6+U0OuOaF8jrmunfSRzHONVexuvfg67hr36UfBfCay1bc9X0W flQigDE4QR7K
hgxjE+Gvn7pgFNBrLmH1kiXUcddMtzAK0DUXr/o5HljgtTNFjAJ8zUWrfmoK Bnz9BBejWEHJ
QxL56Oum1Khjr52WYxTDXnPpqpUJhIlL00olMoa9GnnIZQfkOglMGMi1MqCY hly4pNEMZ2v0
mU4g4ocP5D5JlRaMsmU9G/nR3CxlOYnzpOXeavm333+4fvXh1e/L79LWszsS 0xjCK+98/sSb
kXAdbVJMrrxfP/x4dul9t/pm2c58PksfDPcvc8lX3pck2b1cLL5+/Ton622w 25N5FH9elPmo
F+soDMk6RS1IHmiC6yLDulfIyTroFPMxiJNFTHZR+lfWcuFv/F1CYiopC2nN ovuWv+WGrFI7
lovjP+gXRTr36zwV9vsypDWHrqw9cPycl1K+aBOE7w4J7XL1JizTxFcfNlrz svaz5RiKQFZu
PYZ2RS1BKQZ8CRPVEgzQ8gu6ZUsEtQ8qb6TovRKATLaEBozxmlSNipiam1Rt P+fIqipm0P6O
IyEqwmqLyNbmp5VaC5letTHFMa1yR8dQLRtwh/pR3aqswayIZjnmZbryqAUe y4uuMgncNkyl
hXYLc5VM6mGw8HImiEpAEy6lxcH69OVMOEqNuKaJRSJVQc0KZYEcj3R41IK6 BzRq6eRYxDZV
YdGtYtH7p45H+jy67VfVe55WjktsUxCX2LsGcDL9A1Gq7tl02cSF+/R04qrl +MQ2VeZTeWkE
TqtnCFpN+CUlQr1f7Gpq50jGNgWSrLgXBCfWP93kT4tXLNB94BKrkeMP2xTE H/ZyF5xEzxFv
pwnX9ubCfXoqcdVyfGKbwvjUuqgH59Sl45QWp7og7wGvulRz3GKbwrjFXMCE 8+qF45UWr3hw
94BTPLUcn9imMD7l12rhRKLxfI5JGkxigO4BhRh9HHfYpjDuVHejFfiDiIOY NH9aYPeAQy2d
HI/YpjAeNe64K5AJEQzRdzJFiV0+8UHvAan4ijlmsU1hzFImFCIqou+Essqm vpHIcQfLnXoW
CgUCYSIhnkyXQBy0T88ijlKOSmxTEJXyxCIKJELEPUz4eJaB+fTsYdRxvGGb gnhD/6PEG0RY
w5TjhRicT08cRh1HHLYpiDhlkh8F7iCiGSZMnSbSp2dPUyNHILYpiEBVtiYF BiFiFybMoBbU
p6dQSyXHIbYpkENsyi0FJiGiFSbNJC7gfeATVzHHKrYpiFW1RGpwQl0gghYm TKg21qfnUlsn
RyO2KYhGx7x4ChxyCRx0ONQA+vQEaijk2MM2BbKnSm6owCCXukGPQS2w+8Ci llKOSWxTGJNq
mSoVmIQJU5jwKSsH7R5Qqa2UoxLbFESlKvGoApEQ4QoTfiW1oD49i1oqOQ6x TUEcKtLIKhAI
k6JhwgFzLNCnpw+rj+MO2xTGnUQx2PQCE65w2W/uWI7eZrHuAX2SicSbNto1 0662v+5KE1tl
gl19s1y00zyv/vhjtVzUU0o3LGYSWB+zgsfBnZ+Qa5oUI36ffxfQvNMNmNPH yX2H4LJFmVyP
3CeUWW+zsJQ2r8sH7rIkvWQdxWT+uoziXy7umsl7j1AKdYBqmCPdYwWDcL09 bMjN4SMlyY/E
p+nI9wBF85TG6sp1Jjdf0qzdZzQ1+NmeJLXP6x/PUneTkP4kvrmmCcznQRjd +fMyofg8bTzP
MdzkqY69YvRl19tnP6V9e7Ngc+X944UHGLPrjD8ZHXnjVDEvfi4tT1Dvf0wf 9tfqJXeqn1OY
EKOZ/esWsInYEFZABVmzhLzabquc2ihb4KKsWvNDlXMSbw9UmFWLikv1N4e0 Ef09xZulJNGq
be/SLzXL1zeNgomyak357sJbAxNl1Zqb4nF/W70ckVapibRrnTk6nZxH9QxR KFtggixaYupV
dOL3kOGf7J78Xr+5LnHF2QMUZM8SU6+dU79z3vvrP9NFM84IgBB7Fph6ZZ76 fWn6ZdmXN6Wp
n7BT/3bRrqvaPzhb4LKs2ROE+8RPR3uRug5hDVjS49iSbxaZskcmzbpN1f6X AZMgwixalA72
T/4aawpAijUbQqwnZAKsaa5XR7OuulSCPd21ClIyusskaBaULB86au2vv1Sl 33jbnryd0vJM
gfMABDue+bUa9TLkeI+HShutPAnqZW9FwwcPg7RodjcMKru1YiiAtVHtIiGt YN2NhNpu7wCw
kNaTFmOhslc8ADSkRZ7FaChvWgwAEmkRZjEk8H2CAWAhrIItxwK+Uh8AFsLy 1HIs1Ff7A8Dk
BRKTMf1u0Gh0fTDg+/FDgAIxA1XY0B8CEohJqPqRwBAAwcxFFU4ThgAFZio6 qmnGOWYaCjzQ
GAIMmKnnqOZa55iJ5yhnWueY6ee43iCYSafamc4A0LhAzDqVToSGgAVi2ql8 ojQEPBCTT9XT
qCHAgZh6go+yxDj0ZGMcMfGEnIeJMejHWEDMOEEHa0PAADHdBB3QWcdAfFTX ecDHUekmOsTr
VKnX9DbE7Gd6h6dLM/51nXJOYeDmQwFxEO4Oyjce8it0bxESlD3E1eC6lCKf yyNOMpfkfpdO
8Okdl6P6taM7b/Xtt/R2zbEJrPtg/25Hu/e3XnFxR019f7uNvtI7g3qPB/s3 1G3yhzVPsFXP
o1VHr4r3uANf97JPfehrXxhSflVLRr9wzmE0fkLh4Bt/6C3CHnXVyfSPj/A9 bwl/6TzTxFG7
yAPIK1qP+gKw5APpFNfMEb/MC6irZWPwg3SebTC4QOYM/BWLMXhEOus3Edsg c4W+pFH4QHlK
XPlA//ZD0weIexRj8IF0Q91kLIfMF3iJo/CJdGvfRCyJ1BfTfj/I41jwMSxi FyDupo7CAZrr
ZsRVWBb/aa8c5CE7psJ1hF5wk1VYuBA+VEjoBswF5lE4QHchbWitMPGFgjwy ChcVJcRe96r4
KIDXXSYbWp9NfHGmfmhUwG94aebWZcDoM3TkmdgNE58F6a6LcSkMGBcgsyGM wQ3yWDsDcXYi
J+BSOIzhaE0e4mcovA/sBh1hxl1xklNmzXUyNs8FzxPaOTNG4QjNNbJ2eg7W A7o5PkYRaaG5
Og6R417n+XGMdc31sFYyFCaWTiubyihmPZorYa0cLgzkWklgTEMuXPlohuA1 +vzrQOKHD+Q+
SZUWjLJlPYX80dwszzyJ80zz3mr5t99/uH714dXvy+/S1rO7dKqeOvHKO58/ 8WYkXEebFJMr
79cPP55det+tvlm209XP0gfD/ctc8pX3JUl2LxeLr1+/zsl6G+z2ZB7Fnxdl EvHFOgpDsk5R
C5IHmpW8SIvvFXKyDjrFfAziZBGTXZT+lbVc+Bt/l75SqKQsDDeLSFz+lhuy Su1YLo7/oF8U
Ofiv8/zl1QIlh64sGHH8nFcHoGgThO8OCe1y9SYsc/tXHzZa80otsDU0iuBb bhGNdp1oQf0M
fN0Z1boZ0JoZurVmBAUrKm+k6L0SgEy2hEZV8ZpUjYpQxJtUbT/nyKqqQNH+ jiMhKkKBi2jc
5qeVWguZXrUxxTGtckfHUC0bcIf6Ud2qFsVsQ2jtiDI11ZVHLfBYXnTVtuC2 YcpjtFuYKz9T
Be/CK9C4krY6xWdaSJ++/kxLpRGXoLFHITYGW6GQE6KO07Pp8ogL9+m5xFXL 8YltCuJTM6Ie
zihMfdsJVxXsAPz0nOpQzLGKbQpmFXtDAs4rRLnbqfOKC3k/mMVVzXGLbQrm FieGEE4wVw5X
m2DduPeDZd36OaqxTcFUe7er4hThHMOUzZ04xziA94NcHMUcq9imYFbVoyDh rHruWKXLKg7g
/WAVRzHHKrYpmFW8oFY4uy4du3TZJQC+HywTKOjYxjaFs01r9fXCsUybZX1d drn1lilW1W8I
wzlFbzY7UumQioN3HyjFUcsRim0KJJTW0dY5Iuhi2nzq58GWO9UywybUtvs5 JgRjyqTq9aa7
23E3SzEmLYMCuVw0hh65eHj3gFY8tRyh2KYwQumdX527KAw9PvXz9ModXRli U5k5RYFKLt5C
j0pNrHvAo6ZKjkRsUxiJ9A5/z11MhR6P+nn06859DbEJd+h77mIq9FjV7yNf d95rmmV6e34u
pkKTXb3c7HO7fIbY1Mw5psAoFz+hx6gOyHvAqg7NHLPYpiBmNRLJwXl1gQmh mPAFYT7gp2cV
Xy/HKbapOqfyZHQKvMKEUkw4gUU36D3jFqOb4xfbVIlfVa5HBXphgiocvdqY 94ddLdUcudim
QHKVaTwVWIWIppg0qZpY94FNTZ0cjdimIBqFqu8lTPzEhCkU9utdFLr3D5I4 RXpdBea4cAkt
5rBAn546rD6OO2xTGHfyPMkK3MGESFz2mztRYpc+DNY9oA+jz4jp02jXTEfb /rorfW6VIXf1
zXLRTn+9+uOP1XJRT7XdsJhJ7H3Mlh4Hd35CrmnG3fh9/l1A83E3YE4fJ/cd gssWGYPXUToj
v0+q1W2b1+UDd1nyYrKOYjJ/Xezk3jUTGh9hFPYP1S5HuafKBeF6e9iQm8NH So4qsEGqZJ7i
WV25zmTvS5rF/IymSj/bk6T2ef3jWepmEtKfwjfXNKH7PAijO39eJlifp43n OX6bPPWzV4y6
DM3gU0Di2U+pAt4s2Fx5L556gAG7zsiTcZE3SBWLBeTS6FDwavl7FRP3V7+l MCFGyx3ULWCz
piKsgAqyZkkzVyXCFrgoq9aw+QGR9kCFWbUIX+e3aZaSRKu21e8TII2CibJq DaIkZ9MamCir
1hiobNm0Sk2kXevM0enkPKpnOUDZAhNk0RJTr6ITv4cM/2T35PcaU+mcsQco yJ4lPwVJ+rLY
It0CkWLPBlOvzlO/N3VriDNGAITYs8DUa//U73zTL/y+vO1N/Qyf+vcXWWCZ sQUuy5o9uFrF
dWvAkh7HlnzHy5Q9MmnWbdIuncszCSLMokW6pWhZUwBSrNkQYj0hE2BN8306 h/W3wX/nRy8I
C6CCrFmiV+q1boJUgj3dtWqmMrrLJGjWPC0fOmrtr79U1Ql5m9C8fevyeIfz AAQ7nvlVqVtp
cXne46HStjdPgnopbNHwwcMgLezeDYPK3rkYCmD5XrtISCurdyOhtvc+ACyk pc7FWKjs3A8A
DWkdcjEayltIA4BEWidcDAl8x2MAWAgLtcuxgO85DAALYQV1ORbq+xYDwOQF EpMx/W7QtNz6
YMBPR4YABWIGqnC8MgQkEJNQ9QOaIQCCmYsqnO0MAQrMVBR6ODQEHDCT0FFN t84xc0/gEdUQ
YMBMO0c15zzHTDpHOeM8x0w5R/UmvcDMN9VO6YaABmLKqXTGNwQsEJNO5TPC IeCBmHOqni8O
AQ7EvBN8OCnGoScHBIiJJ+SEU4xBP8YCYsapclQqhqInwwEx7QQdtopB6Md4 QEw4QYe21jEQ
H992HvpyVLqJDvE6Veo1vbQ0+5lesevSjH+brpxfGbibVEAchLuD8p2k/Ibr W4QEZQ9xNbgu
pchXeIjT7SW536WLHXoV7ah+7TjXW337Lb0Ed2wC6z7Yv9vR7v2tV9yvU1Pf 326jr/RKr97j
wf4NdZv8Yc2oBtUYBdXRq+I97sDXvY5XH/raV/qU31OS0S+cjhqNqVEIhsAH QoiwR11GNP3j
I5z2WcJfugQxEX4h8gDyEuWjvgAs+UC67jET9iHzAury5xj8IF12GQw4kTkD fwlqDB6RrgJN
xLvIXKEvaRQ+UJ4SVz7Qv9vT9AHiltAYfCBd/ZqM75H5Ai9xFD6RHviYiC+S +mLa7wd5bBM+
rknsAsTt8VE4QHPdjLiszuI/7ZWDPIzLVAiX0AtusgoLIcOHjwndgEkxMAoH 6C6kdTMaMOhr
p0UYBfS6a2dDy7SJr9HkAXq44Dwh9ro5KEYBvO7q2NDSeOLrYnkcorEYRKEb 3JIYGATZ5Q4z
89CJT0DlkZcd8ONyozAuQKZZGYUbNNfEqJQudSfgcsOM4VRTHmkKcAEF05gb dIQZd8VJDvg1
V8XYBDo8T2gn4xmFIzRXx9p5f1gP6CYPGkWQi+bqOESOe53nxzHWNdfDmCxL deBR2ZpGMeI1
18VayaGYOFKt7FKjmHZqroW1cloxkGslxTINudB6zfDTRp9/HUj88IHcJ5Tg 3aNsWa9ucjQ3
K4FC4rwIirda/u33H65ffXj1+/K7tPXsLl0rpU688s7nT7wZCdfRJsXkyvv1 w49nl953q2+W
7Uoqs/TBcP8yl3zlfUmS3cvF4uvXr3Oy3ga7PZlH8edFWedisY7CkKxT1ILk gRbOKCq2eIWc
rINOMR+DOFnEZBelf2UtF/7G36XvdCopC0HPonGXv+WGrFI7lovjP+gXRXmY 67zERrVCzKEr
axkdP+eVqCnaBOG7Q0K7XL0Jy7Iz1YeN1rwqQGx5pyLwnFvfqVXbSVRHGl8S TbWkE7Sck24Z
NEEtpcobKXqvBCCTLaERhbwmVaMiDPcmVdvPObKqiiO1v+NIiIow+CISvflp pdZCpldtTHFM
q9zRMVTLBtyhflS3KpM02xBa1qhM1XflUQs8lhddZZe4bZjKTe0W5iqjVYHr 8OJoiELsEy7I
2UL69KXRWiqNuDqaPQqx9w8UagwiSgw+my6PuHCfnktctRyf2KYgPjVvk8AZ hSi23veCt5aL
dnZgfnpadSjmiMU2BROLvSAEpxamCrujFhf1fpCLq5qjF9sUTC9OFC2cYyOu 1/4IHOuGvh9E
69bPsY1tCmbbu10VMQqnGaa0u6MZB/N+8IujmCMW2xRMrHpIKpxYzx2x6gIU icXBvB/E4ijm
iMU2BROLF2QMJ9ilI1hdgCLBBNj3g2gCBR3h2KZwwmmtxF44otUFqBKtr0sw t/YyRaz6lXk4
rehVf8crTV5xIO8DqzhqOU6xTYGc0jryOkcEY0yeUv088HKnXWYIhdqLP8dE Z0ycV73eiXfb
8GZZxiQsUeCXi9VgBKjwiwd5D5jFU8txim0K41SVhkaBUC5CgxGgQqgW3j1g U0snRyW2KYxK
ekfE5y4UgxGgQqZ+HhC702FDhCozRSmwyUVcMAJU2NSEuwdUaqrkeMQ2hfFI L8Ti3MVYMAJU
qNTPAAsXXWGIULjQinMXW8EIUCFWvwMrXFSFaaLpbai7mApGgBLBermT7rbQ DRGqmW8RTqoL
F1DBCFAhVQfqPSBWh2aOXGxTELkaeTQVqIUJrJjw9Xw+4KdnFV8vxym2qTqn 3mb5CRV4hQms
mHD6mG7Qe8YtRjfHL7apEr+qVLcK9MLEVTh6tTHvD7taqjlysU2B5CqzGCuw ChFcMWlSNbHu
A5uaOjkasU1BNApV30uYiIoJUyjs17sodO8fJHHYtOIKBEIEUUyYP1y4T88j rlqOT2xTEJ+K
ZPEKRBpxCIVNJrFAn55CrD6OO2xTGHfyrP8K3MFESVz2mzuWz5tYrHtAH0af EdOn0a6ZXL39
dVcy+Crf++qb5aJdzGH1xx+r5aJeOKJhMVOm4lj7Iw7u/IRc0/zx8fv8u4BW l2jAnD5O7jsE
ly0yBq+jdIV7n1S7RW1elw/cZan4yTqKyfx1tnsbfApIvFzcNXP0H7EUKgFV MYe6zxoG4Xp7
2JCbw0dKkypwSKppXrpAXbnOIiZLWp3jjJYAOduTpByzxb+Pg3ifPGyZyg3Z B8UYy2t+eLNg
c+X9ozGymvVRPqWj50f/Ntg+eCvvNxJv/ND3OqukcB6mTPdW5092Ce8pWsTl gSlrUVd0HUf7
feJ/PFuT7TbX95lE349RvCHx91GSRLcpr6PYW/2PH7I/UKXrEm6oMt5qH22D jc7z/xlski+p
9Xzju5/+iXxKMNrT5/V1p0/rav5L8PkLSvVMgL7u2eO6yn+IdhjV08f1FU8f FqsNo0rOkn86
ljiWyB6fIEuyaW1OkaeQN99/EgoUrdq35SrK9Fb84/gK3qVTVPpKPuzqygS3 uy05u/X3CYnP
aJOit5vsi9nP2Rfv089zLS8kSibR7mc//hyE3urJ/OJZ0FlYsPngNh29ek9+ zDir92xM4YQ+
SvH7FEUpHpyZE53S5n7kTI15XWfT4DDJK8t9SW630up0tIvm9LyQUi/2ls3t zqJPq5B8naVr
WPJvfy8mfPTDbA3ASOJNA2mD5vyPa386xloj6Dj6mgNu+THa1McqnVAWZmQT 53RVkSH4QjLG
NnnRK29VPNXpMd565mN0CDd0ZV8ssngLGcXyiPS/Xq1WkcSN5H6XTtXpBkHx fPWBtyps+yX6
+rt3lOj9QeflxzYwnZQKfBotFpmjwVabMYVIXSoOFXlBSAugNGuFmIKFlTtQ YNg6DyahqUse
KDicpEAmEWqJHyhM9Uv0JvGp5A4UmPolTpPAVHIHCgzv8p1JgNryhwqUpZ+e gf/m1LOLmoOl
kjpIUKxMcQY9v7H5/h7Fy5vJzWYMmprUIYJiZToz7LlMmdvFGB6FxCGCYWVW N+wpndX53Dgm
c1ZeQsN++zQvNBuDhRU8QGgat1JNAcOIHToseYyIFWio6AHDU0XQmEbnKHmQ 4JQXfMyhUogc
4lFBaHSAhMMcFEWwsCkUMnFDhCEP+jQGAxV3Mhg6Q+ayL3mHk3saBqeBZQuQ P8mDt4pRfAhi
sk4yRP392oL9G5L4wZYjrjxJP28GGwix+xJ8/rKlx/m/HLbc+FQoml2IRNnC mYaZBPuzPIxS
PE67BGVRiHnESZD420CILiOo5eeE7JPX6YeFs1VOjDOBIgbnDQQu7FYrfZH8 eevHf3orb02n
MTNv9u8zteFYKlYGlqxFPhX8JOSnxfqaSDF6rMCO/7hYLX979dOvr8/e/ciS u/x0uUgb6YZ4
ZJ9/joNNzj5oIMvXIv7pyZP/KbV0nQVd5PKb8U6QPuZPXzy7fFr70x2vU1ma dwrQ6Jm36GiV
op03acamsLLIdptHST0RNMuaZoFfedtmbCS3PW+I0M+8VbbyntEX3f6l1O2M zAXnUgXbgBoE
svdcai+N9cmCe0RuL5sLI35mP6XCoL+ZZe+tiw10Wf59EG7S17vodcEIAr46 RLZk/b7NZztB
uDsoWVIKFU6BYo0tmVYPsp89tjHgNcE8oBmaxZVlwCn57BMawsWVaCWsC6K7 0vqNK1DF1dkD
xhBXCRPjSrUWOgaxQWWVwJV3OuDVQtG4ci2Gp0HsGDj4KuFuXMlWQ+Agtgzc AcpH8lzx9sPs
IFYN3BXwc26uXIuhfBA7Bg4+/BCZK9diuCDEjoGDr35czZX/CCGJELuG7oxH fBW4dwADPjyM
kivVWmglxIZBA/9oSwA3/8eEg3JlWw4RhdgzZCcohJxypVoLQ4XYMGTgH226 7+b6ddiBobNc
iVbCaSG6DxnwR1tZuWVVHfZHX1O5BRXXDY81uXGzmjrsaqHMXME2w5shlgwY fqVwaa5YeyHU
ECvGAv1bQEwpV7TdMG2INSNwATTsmyvZaig4xJZBOwAYWs4VaSfcHKL9kEMY QusDHRqpCNF5
wIMbFCLPFWc+bB6i9ZChhoThc8WZD82HaD1gqPNYt1kRiKiFeROMKnX3MWDS /UYJGquGLnZd
XOA3Tm3J414vgeGM2WOoCw5ciRoDtny2oUi007wIARGufTmCK9z0hQluJ6o/ HvlDisOufLCB
V8wmjTfyg9K8e+EXF4HUYGkoug3CP8s5XnY75Ix+pOtejmv9+DNJvkdfPeH2 pvyCyDKgQ35+
ID8n+WjpbiOK1F8uUus7vjpea7joummVtarC/LuuhJRNq2sNT0Uiy/bd1xqq A+PT3WqQXVWo
ZzCt9J1Fn2b5pkwm5RJ14aEU6y49gC49oEONp3jvYf3FDz+TvLKMzUli1Y/b OHB3H3oB/E9B
kk5mpVc0ucK18C86dG5I3UBrCnXm2xcKVIA+68T93rgoyx5EWX6wvq3G9uXA X5Hi6lOq9SMc
yjZ7cw4og10fYezXenLArx7j18ZBnZ+7Xls+cL12ExhvtY2+0gpd6WLZLtpV P+ZRp0fnn2l5
yMGgfuuHD3bxpj248e0iCWQPGAM6q9xme+VZdOIGtreKyV+HwDrgx14c4t4q if1wH5DQciqb
shuHubc6hMFftndy8z4c2hTtPUkS+2cWVT8O9RT13e5RpuBVP24K7q3uoq2f BLZH+rEXN85d
rKn8ARdrOoLoxDLZ6+UzlejEBiIKCWC54mopWC8hyVAhusyfP2HyxAISxXLF C5PHSq153pVQ
lvvkMRrrUiVUNO/zGLJ0KcpP2/l4FaQqy+PaKUIWlai7t1F2AIynY58RR3px nymhfCHL4ct9
vIISEv/GFdEVCpYdKAWfAhIrx4Jx+zEVH8YVjgg3ZuTYiCPjdgSJLTNxtNrq WCd6mBWgGUnM
CDEYl8aVb2k85FMITN5ebi/gmYWJ+HGZjeh5NLcT7LDLhFj1KjY+jtvTo8bM QWzFTie5ffTf
ufj8w9y+FOJkTOQkhtg7YQdjcxxze1NysYm8xxCbJ+xkI7nsuF0qedpYijuI 9RN297sdJnkb
ty8lP1f9Owcj/tjKB83tS8nB+GRmEHsn7GAz+dG4fSo52lzaNIj9U3b4iV/N 7p1s1cG4Wx3c
nh71pgfE1sk696RLZLc+tujaPqyb3KIpE2LX0cg849ye4C42kHscYutUnVtc 5z0FeY9dO7ci
/lhJUc/tCO5Yt8Vh07WINPjcXuB+RabGh9g4VaeedNPK7VjZdG0vtqvcXlUu xLKrT7kWcosg
m67FlyXgdqZ2Ux1fqgBi8URdjC59wO0KfkXeRDkEiLXOvfrlFbjd6bk4CwJ1 btb/Y6+EA7c3
ZS9jyzpAbJ6skxFlIrjdKHgXWToCYuVUI2axlyyYHh4lqQTEtomSdE/iwN8G /617xZnbE9ip
9d4dVXVlZHLMXjDldvE4l04h1k2UrNqXWLldPM7FVoh1E3UnvoYCpK92oZb8 dp97jYP76Mfl
OdnlV7PDyUx5DpEBVamOMArRQxHlpMe49yuokNFuSq/My9v2pKyH6DZ4ddP5 qeymc72sh6wE
SNa+u6xHdVZ2srIeT2WX3OtlPSp9G2U9nj7HlPUoxbqyHqCr17gjVlfTw6xP XE2PTtTz+4bq
2aUykXDQj904zEvMb61nO6x15HB39Wt6AbyrX3NCN7j6NYAHjOHt6te4EioT dYAroXIi4P9F
HmwPd9qFg5peudhF+0DvjpTS5Yq8Gwd5LWr+EX5YmL4c+K46k/QBY1C7ukGu bpBM5yEvjHTP
i13dILDSOdCubhDoAWN4u7pBj4/4PtrekfdxdB/o3cJSwb3el0PfVW1yVZsg eg8bbVe1yVVt
gus/5AWQq9r02Ii7qk2yB8xB7ao2iRo/TtWm5yrVkixWbXoOiYWE6NKLqk3P L7WqNj1XLb1U
q9qEKzV0aarUUCtwHXsT4fGrNl3qVLCqQQkJb+aK4AWBfgk+f9mm/0t+OWxJ H8vn0H/4SRSn
06v9WdqFuWsnjY4+RWFykzxs6UQu8bfB2t79loTsk9fph0XosOkKPf28csIW CXP1wU5SH8zI
EWer436MN1cfrN4LeA7r6oO5+mA4W3t5bTITYjdhmKsPNn4Hu/pgE3ByH/Lc u/pgRyHW3f1u
5+qDafYxDAe7+mDafQzDwTd9SLjs6oOVQuw73NUH0+1jCA529cE0+xiCc119 MK0+BuDaPqyb
3KIpE2LX0a4+mG4fA3DuSZfDbi3sCklp2jhVp7pCUnp9DMC1vdjXcJsauRDL rnaFpLT6GIBr
XSGpsbvYFZKajnvfIgOMme70XJxFCzo36/9xhaQm7GRXSEq9k/77FXvvg+nh UbKMQGybKEld
qSGFPgbgTldqCN5H/915qlJDM/cbD+6jH1dwZJc1h1tlKJ1c/Xnrx3+e0Y+M eKx9K9CPP5Pk
+6Ijb+WtMxJ4s3+fxSbHpSt21N3KeLEjnoJtZeodLxcfo006sFKBZBfF6af/ H1BLBwh+7xBm
4jkAAIm8BABQSwECFAAUAAgACAA7hHE6PYQXg4wAAADgAAAAHQAAAAAAAAAA AAAAAAAAAAAA
RWNvcmUgRXhhbXBsZSBSZXBvcnQvLnByb2plY3RQSwECFAAUAAgACAA7hHE6 OQtvYI8LAAAh
gwAAIAAAAAAAAAAAAAAAAADXAAAARWNvcmUgRXhhbXBsZSBSZXBvcnQvZWNv cmUuZWNvcmVQ
SwECFAAUAAgACAA7hHE6fu8QZuI5AACJvAQAJAAAAAAAAAAAAAAAAAC0DAAA RWNvcmUgRXhh
bXBsZSBSZXBvcnQvZWNvcmUucnB0ZGVzaWduUEsFBgAAAAADAAMA6wAAAOhG AAAAAA==
--------------070904020500030808050903--
Re: Status of the Ecore ODA Driver? [message #596821 is a reply to message #53926] Sat, 21 November 2009 15:32 Go to previous messageGo to next message
Joel Rosi-Schwartz is currently offline Joel Rosi-Schwartz
Messages: 624
Registered: July 2009
Location: London. England
Senior Member
Hi,

I am curious as to if Andrea's ODA driver has been introduced into the core Ecore ODA Driver.

Thanks,
Joel
Re: Status of the Ecore ODA Driver? [message #596870 is a reply to message #596821] Mon, 30 November 2009 13:12 Go to previous messageGo to next message
Andreas Mayer is currently offline Andreas Mayer
Messages: 32
Registered: July 2009
Member
> I am curious as to if Andrea's ODA driver has been introduced into the
> core Ecore ODA Driver.

No it was not and as far as I know, there are no plans to do so.
--
Andreas
Re: Status of the Ecore ODA Driver? [message #596877 is a reply to message #596870] Mon, 30 November 2009 13:26 Go to previous messageGo to next message
Joel Rosi-Schwartz is currently offline Joel Rosi-Schwartz
Messages: 624
Registered: July 2009
Location: London. England
Senior Member
Hi Andreas,

I have been trying to ascertain (without much success) if the ODA Ecore Driver is being actively supported. Do you happen to know the status? Have you kept your version up to date with Galileo? This is a critical issue for me to resolve for the http://www.eclipse.org/ormf/ project so any assistance or advice you can provide would be greatly appreciated.

All the best,
Joel
Re: Status of the Ecore ODA Driver? [message #596884 is a reply to message #500959] Mon, 30 November 2009 16:12 Go to previous messageGo to next message
Andreas Mayer is currently offline Andreas Mayer
Messages: 32
Registered: July 2009
Member
Joel Rosi-Schwartz wrote:

> I have been trying to ascertain (without much success) if the ODA Ecore
> Driver is being actively supported. Do you happen to know the status?

Sorry, but I don't know the status of the driver in incubation.

> Have you kept your version up to date with Galileo?

Yes, I have updated my driver and the current version works with (and
requires) DTP 1.7 and BIRT 2.5.1. But the driver is still rather
experimental.

For example, the people at Actuate have implemented support for the Java
Object type (see [1, 2]). This has been a great help, since it allows
for simple navigation in the model via the JavaScript expressions.
Unfortunately, there is now an issue with BIRT's caching mechanism (see
[3]). As a workaround you can add a script to the respective data source
to force BIRT to cache in memory instead of on disk in order to avoid
the serialization. It's not nice, but it works.

There is also no public repository for the sources, yet.

> This is a critical
> issue for me to resolve for the http://www.eclipse.org/ormf/ project so
> any assistance or advice you can provide would be greatly appreciated.

Hmm. As a start, I could provide you with the sources of the driver, so
you can see for yourself.

[1] http://wiki.eclipse.org/Galileo_DTP_ODA_API_Changes_Spec

[2] https://bugs.eclipse.org/bugs/show_bug.cgi?id=178897

[3] http://www.eclipse.org/forums/index.php?t=tree&th=156043
--
Andreas
Re: Status of the Ecore ODA Driver? [message #596904 is a reply to message #500997] Wed, 02 December 2009 02:14 Go to previous messageGo to next message
Linda Chan
Messages: 845
Registered: July 2009
Senior Member
Joel Rosi-Schwartz wrote:

> I have been trying to ascertain (without much success) if the ODA Ecore
> Driver is being actively supported. Do you happen to know the status?

The oda.ecore driver has been inactive, and is still in incubation. We need new contributors to revive the project.

Andreas Mayer wrote:
> As a start, I could provide you with the sources of the driver, so you can see for yourself.

Andreas, can you please package and post your source contribution in a Bugzilla entry? Per the Eclipse IP process, this will be the first step to allow us to review and accept any source contribution to a DTP component.
Thanks much for all your contribution thus far.

Linda
DTP Incubation project lead
Re: Status of the Ecore ODA Driver? [message #596912 is a reply to message #596904] Thu, 03 December 2009 18:44 Go to previous message
Andreas Mayer is currently offline Andreas Mayer
Messages: 32
Registered: July 2009
Member
Linda Chan wrote:

> Andreas, can you please package and post your source contribution in a
> Bugzilla entry?

I've attached the sources and an example report to [1]. I also described
the issue concerning BIRT's caching there. In my opinion this is a
knock-out criterion for my driver implementation. But maybe there is
someone resourceful, who can help here. :-)

[1] https://bugs.eclipse.org/132958

Have a nice day
Andreas
Previous Topic:Can DTP/ODA be used outside Eclipse
Next Topic:extending SQL Builder
Goto Forum:
  


Current Time: Wed Oct 01 10:36:45 GMT 2014

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

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