Home » Modeling » EMF » CDO: Reflective Feature Delegation required - but how to invoke not generated code?
| | | | |
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423322 is a reply to message #423319] |
Sat, 27 September 2008 14:58 |
Ed Merks Messages: 33216 Registered: July 2009 |
Senior Member |
|
|
Ralf,
The code produced by EMF 2.5 should work fine with EMF 2.4. So you
might want to set up a little development environment with the M2 builds
of Eclipse and EMF, use that for doing code generation (just link in the
project from your main development workspace), and then doing the rest
of your development with 2.4...
The alternatives aren't so pretty. I would involve specializing
eGet/eSet directly, which would get pretty messy hence the reason for
adding the new pattern. It was done at the request of Sandro for the
JCRM component of EMFT but it applies very nicely for SDO as well (I think).
Ralf Buschermoehle wrote:
> Hi Ed,
>
> thanks for your (fast!) feedback, please find my reply inline:
>
> Ed Merks wrote:
>
>> It sounds like you specialized some of the getters and setters and
>> using reflective delegation bypasses that.
>
> Exactly.
>
>> In EMF 2.5 we added a new pattern called "Dynamic". With this
>> pattern, the reflective methods like eGet still call your generated
>> method like getX() and then that calls the dymamic reflective method
>> like eDynamicGet. It effectively produces the same behavior as
>> "Refective" delegating but does so by delegating through your
>> generated accessors allowing you to specialize those as you could
>> when you used "None"...
>
> That should solve the problem. :) But since 2.5 will be available with
> the next Eclipse Release 3.5 I assume it will take some more time and
> I don't want to run into other problems right now (the editors work
> fine now ;).
>
> Any suggestions for a good starting point for a "workaround"?
>
> Greetings,
>
> Ralf
>
>> Ralf Buschermoehle wrote:
>>> Hello,
>>>
>>> we previously did not use the Feature Delegation ('none') and
>>> implemented directly the code into the corresponding implementation
>>> classes - if required.
>>>
>>> I now played a little bit around with CDO (simply great) and would
>>> like to use it to "distribute" our models. But when I change the
>>> feature delegation our implementation is not longer working ...
>>> since it's no longer called.
>>>
>>> How can I use CDO (or Feature Delegation 'Reflective') and use our
>>> implementation?
>>>
>>>
>>> Greetings,
>>>
>>> Ralf
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
| | |
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423349 is a reply to message #423343] |
Mon, 29 September 2008 11:49 |
Ed Merks Messages: 33216 Registered: July 2009 |
Senior Member |
|
|
This is a multi-part message in MIME format.
--------------090101040207090400010205
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Ralf,
Comments below.
Ralf Buschermoehle wrote:
> Hi Ed,
>
> Ed Merks wrote:
>> The code produced by EMF 2.5 should work fine with EMF 2.4. So you
>> might want to set up a little development environment with the M2
>> builds of Eclipse and EMF, use that for doing code generation (just
>> link in the project from your main development workspace), and then
>> doing the rest of your development with 2.4...
>
> Ok, the current EMF 2.5M2 points to integration build
>
> http://www.eclipse.org/modeling/download.php?file=/eclipse/d ownloads/drops/I20080903-1200/eclipse-SDK-I20080903-1200-lin ux-gtk.tar.gz
>
>
> where the link is invalid(?) I tried to 'dropin'
>
> http://www.eclipse.org/modeling/download.php?file=/modeling/ emf/emf/downloads/drops/2.5.0/S200809231800/emf-sdo-xsd-SDK- 2.5.0M2.zip
>
>
> in
>
> http://download.eclipse.org/eclipse/downloads/drops/S-3.5M2- 200809180100/index.php
>
>
> But it does not show up under plugins ... ? (All Windows Platform).
>
> Do I need exactly this integration build or is the milestone ok but I
> am too stupid to get it running?
Unfortunately the builds we use are sometimes renamed. EMF requires
only the platform, and you can get their builds here:
http://download.eclipse.org/eclipse/downloads/
The 3.5M2 build should work well.
>
> Greetings,
>
> Ralf
--------------090101040207090400010205
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Ralf,<br>
<br>
Comments below.<br>
<br>
Ralf Buschermoehle wrote:
<blockquote cite="mid:gbqaj1$9e1$1@build.eclipse.org" type="cite">Hi
Ed,
<br>
<br>
Ed Merks wrote:
<br>
<blockquote type="cite">The code produced by EMF 2.5 should work fine
with EMF 2.4. So you might want to set up a little development
environment with the M2 builds of Eclipse and EMF, use that for doing
code generation (just link in the project from your main development
workspace), and then doing the rest of your development with 2.4...
<br>
</blockquote>
<br>
Ok, the current EMF 2.5M2 points to integration build
<br>
<br>
<a class="moz-txt-link-freetext" href=" http://www.eclipse.org/modeling/download.php?file=/eclipse/d ownloads/drops/I20080903-1200/eclipse-SDK-I20080903-1200-lin ux-gtk.tar.gz"> http://www.eclipse.org/modeling/download.php?file=/eclipse/d ownloads/drops/I20080903-1200/eclipse-SDK-I20080903-1200-lin ux-gtk.tar.gz</a>
<br>
<br>
where the link is invalid(?) I tried to 'dropin'
<br>
<br>
<a class="moz-txt-link-freetext" href=" http://www.eclipse.org/modeling/download.php?file=/modeling/ emf/emf/downloads/drops/2.5.0/S200809231800/emf-sdo-xsd-SDK- 2.5.0M2.zip"> http://www.eclipse.org/modeling/download.php?file=/modeling/ emf/emf/downloads/drops/2.5.0/S200809231800/emf-sdo-xsd-SDK- 2.5.0M2.zip</a>
<br>
<br>
in
<br>
<br>
<a class="moz-txt-link-freetext" href=" http://download.eclipse.org/eclipse/downloads/drops/S-3.5M2- 200809180100/index.php"> http://download.eclipse.org/eclipse/downloads/drops/S-3.5M2- 200809180100/index.php</a>
<br>
<br>
But it does not show up under plugins ... ? (All Windows Platform).
<br>
<br>
Do I need exactly this integration build or is the milestone ok but I
am too stupid to get it running?
<br>
</blockquote>
Unfortunately the builds we use are sometimes renamed. EMF requires
only the platform, and you can get their builds here:<br>
<blockquote><a href="http://download.eclipse.org/eclipse/downloads/">http://download.eclipse.org/eclipse/downloads/</a><br>
</blockquote>
The 3.5M2 build should work well.<br>
<blockquote cite="mid:gbqaj1$9e1$1@build.eclipse.org" type="cite"><br>
Greetings,
<br>
<br>
Ralf
<br>
</blockquote>
</body>
</html>
--------------090101040207090400010205--
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
|
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423352 is a reply to message #423320] |
Mon, 29 September 2008 12:10 |
|
This is a multi-part message in MIME format.
--------------020404090303060006090907
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Ralf Buschermoehle schrieb:
> Hi Eike,
>
> thanks for your answer!
>
> I followed the doc:
> http://wiki.eclipse.org/Preparing_EMF_Models_for_CDO and section
> "Migrate your GenModel Manually" advised me to
> "The Feature Delegation property must be set to Reflective". When I do
> this our implementation (specialized setters) are not called any more.
I have added this to the end of the wiki page:
*Important note:* If you want to modify the behaviour of generated
getters and setters (or have already done so in existing models) you
might want to try /dynamic feature delegation/ (introduced in EMF 2.5).
With this pattern, the reflective methods like eGet still call your
generated method like getX() and then that calls the dymamic reflective
method like eDynamicGet. It effectively produces the same behavior as
"Refective" delegating but does so by delegating through your generated
accessors allowing you to specialize those as you could when you used
"None"...
(Although I have not tested it yet)
Cheers
/Eike
>
> Greetings,
>
> Ralf
>
> Eike Stepper wrote:
>> Hi Ralf,
>>
>> I even didn't know about "dynamic" feature delegation. I'm curious
>> whether this solves your problem.
>>
>> Just in case that not, I'd need some more info about problem you're
>> experiencing. What exactly does not work with your models?
>> Have you followed the docs:
>> http://wiki.eclipse.org/Preparing_EMF_Models_for_CDO ?
>>
>> Cheers
>> /Eike
>>
>>
>>
>> Ralf Buschermoehle schrieb:
>>> Hello,
>>>
>>> we previously did not use the Feature Delegation ('none') and
>>> implemented directly the code into the corresponding implementation
>>> classes - if required.
>>>
>>> I now played a little bit around with CDO (simply great) and would
>>> like to use it to "distribute" our models. But when I change the
>>> feature delegation our implementation is not longer working ...
>>> since it's no longer called.
>>>
>>> How can I use CDO (or Feature Delegation 'Reflective') and use our
>>> implementation?
>>>
>>>
>>> Greetings,
>>>
>>> Ralf
--------------020404090303060006090907
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Ralf Buschermoehle schrieb:
<blockquote cite="mid:gblg18$h3o$1@build.eclipse.org" type="cite">Hi
Eike,
<br>
<br>
thanks for your answer!
<br>
<br>
I followed the doc:
<a class="moz-txt-link-freetext" href="http://wiki.eclipse.org/Preparing_EMF_Models_for_CDO">http://wiki.eclipse.org/Preparing_EMF_Models_for_CDO</a> and section
"Migrate your GenModel Manually" advised me to
<br>
"The Feature Delegation property must be set to Reflective". When I do
this our implementation (specialized setters) are not called any more.
<br>
</blockquote>
I have added this to the end of the wiki page:<br>
<br>
<b>Important note:</b> If you want to modify the behaviour of generated
getters and setters (or have already done so in existing models) you
might want to try <i>dynamic feature delegation</i> (introduced in EMF
2.5). With this pattern, the reflective methods like eGet still call
your generated method like getX() and then that calls the dymamic
reflective method like eDynamicGet. It effectively produces the same
behavior as "Refective" delegating but does so by delegating through
your generated accessors allowing you to specialize those as you could
when you used "None"...
<br>
<br>
(Although I have not tested it yet)<br>
<br>
Cheers<br>
/Eike<br>
<br>
<blockquote cite="mid:gblg18$h3o$1@build.eclipse.org" type="cite"><br>
Greetings,
<br>
<br>
Ralf
<br>
<br>
Eike Stepper wrote:
<br>
<blockquote type="cite">Hi Ralf,
<br>
<br>
I even didn't know about "dynamic" feature delegation. I'm curious
whether this solves your problem.
<br>
<br>
Just in case that not, I'd need some more info about problem you're
experiencing. What exactly does not work with your models?
<br>
Have you followed the docs:
<a class="moz-txt-link-freetext" href="http://wiki.eclipse.org/Preparing_EMF_Models_for_CDO">http://wiki.eclipse.org/Preparing_EMF_Models_for_CDO</a> ?
<br>
<br>
Cheers
<br>
/Eike
<br>
<br>
<br>
<br>
Ralf Buschermoehle schrieb:
<br>
<blockquote type="cite">Hello,
<br>
<br>
we previously did not use the Feature Delegation ('none') and
implemented directly the code into the corresponding implementation
classes - if required.
<br>
<br>
I now played a little bit around with CDO (simply great) and would like
to use it to "distribute" our models. But when I change the feature
delegation our implementation is not longer working ... since it's no
longer called.
<br>
<br>
How can I use CDO (or Feature Delegation 'Reflective') and use our
implementation?
<br>
<br>
<br>
Greetings,
<br>
<br>
Ralf
<br>
</blockquote>
</blockquote>
</blockquote>
</body>
</html>
--------------020404090303060006090907--
Cheers
/Eike
----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
|
|
|
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423359 is a reply to message #423349] |
Mon, 29 September 2008 13:50 |
Ralf Buschermoehle Messages: 27 Registered: July 2009 |
Junior Member |
|
|
Hi Ed,
Thanks for the fast reply :) ... please see my comments below ...
Ed Merks wrote:
>>> The code produced by EMF 2.5 should work fine with EMF 2.4. So you
>>> might want to set up a little development environment with the M2
>>> builds of Eclipse and EMF, use that for doing code generation (just
>>> link in the project from your main development workspace), and then
>>> doing the rest of your development with 2.4...
>>
>> Ok, the current EMF 2.5M2 points to integration build
>> http://www.eclipse.org/modeling/download.php?file=/eclipse/d ownloads/drops/I20080903-1200/eclipse-SDK-I20080903-1200-lin ux-gtk.tar.gz
>> where the link is invalid(?) I tried to 'dropin'
>> http://www.eclipse.org/modeling/download.php?file=/modeling/ emf/emf/downloads/drops/2.5.0/S200809231800/emf-sdo-xsd-SDK- 2.5.0M2.zip
>> in http://download.eclipse.org/eclipse/downloads/drops/S-3.5M2- 200809180100/index.php
>>
>> But it does not show up under plugins ... ? (All Windows Platform).
>>
>> Do I need exactly this integration build or is the milestone ok but I
>> am too stupid to get it running?
> Unfortunately the builds we use are sometimes renamed. EMF requires
> only the platform, and you can get their builds here:
>
> http://download.eclipse.org/eclipse/downloads/
>
> The 3.5M2 build should work well.
Seems that the dropin mechanism gets confused when also zips are part of
the folder (but it does not complain in the log - well - now it works :)).
After changing the 'Delegation Feature' to 'Dynamic' I got several
"org.eclipse.emf.ecore.xmi.IllegalValueException: Value 'Boolean' is not
legal. (platform:/resource/rmofReflective/reflectiveRMOF.rmof, 3, 25)"
Pointing to e.g., "java.lang.ArrayIndexOutOfBoundsException: 3".
The classes range from really simple <clazz name="Boolean"/>
to really complex ones - thus I wasn't able to determine an error pattern.
The corresponding ecore file says something like
<eClassifiers xsi:type="ecore:EClass" name="Class"
eSuperTypes="#//Classifier">
<eStructuralFeatures .../>
...
</eClassifiers>
Inheriting from something defining the name attribute
<eClassifiers xsi:type="ecore:EClass" name="NamedElement"
abstract="true" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
...
</eClassifiers>
Nevertheless it was fine in EMF 2.4?
Greetings,
Ralf
|
|
|
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423377 is a reply to message #423359] |
Mon, 29 September 2008 16:13 |
Ed Merks Messages: 33216 Registered: July 2009 |
Senior Member |
|
|
Ralf ,
Comments below.
Ralf Buschermoehle wrote:
> Hi Ed,
>
> Thanks for the fast reply :) ... please see my comments below ...
>
> Ed Merks wrote:
>
>>>> The code produced by EMF 2.5 should work fine with EMF 2.4. So you
>>>> might want to set up a little development environment with the M2
>>>> builds of Eclipse and EMF, use that for doing code generation (just
>>>> link in the project from your main development workspace), and then
>>>> doing the rest of your development with 2.4...
>>>
>>> Ok, the current EMF 2.5M2 points to integration build
>>> http://www.eclipse.org/modeling/download.php?file=/eclipse/d ownloads/drops/I20080903-1200/eclipse-SDK-I20080903-1200-lin ux-gtk.tar.gz
>>> where the link is invalid(?) I tried to 'dropin'
>>> http://www.eclipse.org/modeling/download.php?file=/modeling/ emf/emf/downloads/drops/2.5.0/S200809231800/emf-sdo-xsd-SDK- 2.5.0M2.zip
>>> in
>>> http://download.eclipse.org/eclipse/downloads/drops/S-3.5M2- 200809180100/index.php
>>>
>>> But it does not show up under plugins ... ? (All Windows Platform).
>>>
>>> Do I need exactly this integration build or is the milestone ok but
>>> I am too stupid to get it running?
>> Unfortunately the builds we use are sometimes renamed. EMF requires
>> only the platform, and you can get their builds here:
>>
>> http://download.eclipse.org/eclipse/downloads/
>>
>> The 3.5M2 build should work well.
>
> Seems that the dropin mechanism gets confused when also zips are part
> of the folder (but it does not complain in the log - well - now it
> works :)).
>
> After changing the 'Delegation Feature' to 'Dynamic' I got several
> "org.eclipse.emf.ecore.xmi.IllegalValueException: Value 'Boolean' is
> not legal. (platform:/resource/rmofReflective/reflectiveRMOF.rmof, 3,
> 25)"
> Pointing to e.g., "java.lang.ArrayIndexOutOfBoundsException: 3".
It's possible there's a bug. It's not like lots of people have tried
using it.
>
> The classes range from really simple <clazz name="Boolean"/>
> to really complex ones - thus I wasn't able to determine an error
> pattern.
>
> The corresponding ecore file says something like
>
> <eClassifiers xsi:type="ecore:EClass" name="Class"
> eSuperTypes="#//Classifier">
> <eStructuralFeatures .../>
> ...
> </eClassifiers>
You're extending Ecore? You know you're advised not to do that, right?
>
> Inheriting from something defining the name attribute
>
> <eClassifiers xsi:type="ecore:EClass" name="NamedElement"
> abstract="true" eSuperTypes="#//Element">
> <eStructuralFeatures xsi:type="ecore:EAttribute" name="name"
> eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
> ...
> </eClassifiers>
>
> Nevertheless it was fine in EMF 2.4?
I never tried it when extending a base model that already contained
features. The generated eStaticFeatureCount method is generated to
return 0 which wouldn't be right if you extend a generated base
class... You didn't have this problem with just the reflective
delegating? (I would have guessed it would have the same problem.)
>
> Greetings,
>
> Ralf
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
| |
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423385 is a reply to message #423382] |
Mon, 29 September 2008 17:06 |
Ed Merks Messages: 33216 Registered: July 2009 |
Senior Member |
|
|
Ralf,
Comments below.
Ralf Buschermoehle wrote:
> Hi Ed,
>
> see my comments below.
>
> Ed Merks wrote:
>
>>> After changing the 'Delegation Feature' to 'Dynamic' I got several
>>> "org.eclipse.emf.ecore.xmi.IllegalValueException: Value 'Boolean' is
>>> not legal. (platform:/resource/rmofReflective/reflectiveRMOF.rmof,
>>> 3, 25)"
>>> Pointing to e.g., "java.lang.ArrayIndexOutOfBoundsException: 3".
>> It's possible there's a bug. It's not like lots of people have tried
>> using it.
>>>
>>> The classes range from really simple <clazz name="Boolean"/>
>>> to really complex ones - thus I wasn't able to determine an error
>>> pattern.
>>>
>>> The corresponding ecore file says something like
>>>
>>> <eClassifiers xsi:type="ecore:EClass" name="Class"
>>> eSuperTypes="#//Classifier">
>>> <eStructuralFeatures .../>
>>> ...
>>> </eClassifiers>
>> You're extending Ecore? You know you're advised not to do that, right?
>
> No, we are not extending Ecore. Why do you assume this? Because we
> have an eClassifier "Class"? Think of something similar like the UML2
> Project.
Oh, sorry. Just very similar names. :-P
>
>>> Inheriting from something defining the name attribute
>>>
>>> <eClassifiers xsi:type="ecore:EClass" name="NamedElement"
>>> abstract="true" eSuperTypes="#//Element">
>>> <eStructuralFeatures xsi:type="ecore:EAttribute" name="name"
>>> eType="ecore:EDataType
>>> http://www.eclipse.org/emf/2002/Ecore#//EString"/>
>>> ...
>>> </eClassifiers>
>>>
>>> Nevertheless it was fine in EMF 2.4?
>> I never tried it when extending a base model that already contained
>> features. The generated eStaticFeatureCount method is generated to
>> return 0 which wouldn't be right if you extend a generated base class...
>
> We did not extend any generators ...
So you're not extending a model that's fully generated...
>
>> You didn't have this problem with just the reflective delegating? (I
>> would have guessed it would have the same problem.)
>
> No. In 2.4 this works fine. Again: Everything is "just" plain EMF ...
> but I admit we have several modeling languages with dependencies
> (which should/does not bother EMF). But regarding EMF these are
> different modeling languages (with no relation/dependency at all).
If I could reproduce the problem, I'd be happy to have a look at how to
fix it. You can send me exported projects along with instructions
privately. I'll delete it all when I'm done...
>
> Greetings,
>
> Ralf
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
| |
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423422 is a reply to message #423418] |
Tue, 30 September 2008 10:13 |
Ed Merks Messages: 33216 Registered: July 2009 |
Senior Member |
|
|
This is a multi-part message in MIME format.
--------------030403070401060802080300
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Ralf,
Yep, it's a bug in the template guard for generating the
eStaticFeatureCount method:
### Eclipse Workspace Patch 1.0
#P org.eclipse.emf.codegen.ecore
Index: templates/model/Class.javajet
============================================================ =======
RCS file:
/cvsroot/modeling/org.eclipse.emf/org.eclipse.emf/plugins/or g.eclipse.emf.codegen.ecore/templates/model/Class.javajet,v
retrieving revision 1.77
diff -u -r1.77 Class.javajet
--- templates/model/Class.javajet 7 Aug 2008 11:10:35 -0000 1.77
+++ templates/model/Class.javajet 30 Sep 2008 10:10:19 -0000
@@ -363,7 +363,7 @@
<%}%>
<%@ include file="Class/reflectiveDelegation.override.javajetinc"
fail="alternative" %>
<%@ start %>
-<%if (isImplementation && (genModel.getFeatureDelegation() ==
GenDelegationKind.REFLECTIVE_LITERAL || genModel.isDynamicDelegation())
&& (genClass.getClassExtendsGenClass() == null ||
(genClass.getClassExtendsGenClass().getGenModel().getFeature Delegation()
!= GenDelegationKind.REFLECTIVE_LITERAL &&
genClass.getClassExtendsGenClass().getGenModel().isDynamicDe legation())))
{%>
+<%if (isImplementation && (genModel.getFeatureDelegation() ==
GenDelegationKind.REFLECTIVE_LITERAL || genModel.isDynamicDelegation())
&& (genClass.getClassExtendsGenClass() == null ||
(genClass.getClassExtendsGenClass().getGenModel().getFeature Delegation()
!= GenDelegationKind.REFLECTIVE_LITERAL &&
*!*genClass.getClassExtendsGenClass().getGenModel().isDynami cDelegation())))
{%>
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
(Note the missing ! on the guard.) Please open a bugzilla and I'll
commit the fix for it today which so it should be in today's I-build...
As a workaround, delete the eStaticFeatureCount method from non-root
model Impl classes.
Ralf Buschermoehle wrote:
> Hi Ed,
>
> see my comments below.
>
> Ed Merks wrote:
>
>>>> You didn't have this problem with just the reflective delegating?
>>>> (I would have guessed it would have the same problem.)
>>>
>>> No. In 2.4 this works fine. Again: Everything is "just" plain EMF
>>> ... but I admit we have several modeling languages with dependencies
>>> (which should/does not bother EMF). But regarding EMF these are
>>> different modeling languages (with no relation/dependency at all).
>> If I could reproduce the problem, I'd be happy to have a look at how
>> to fix it.
>
> Thanks for the offer :)
>
>> You can send me exported projects along with instructions privately.
>> I'll delete it all when I'm done...
>
> No problem. I stripped the problem model down to a simple error (see
> attached .zip - simply generate 'everything'). The editor kann create
> packages with Feature Delegation 'none' but not with 'Dynamic'. It
> seems to be a problem if a class inherits from an abstract class with
> at least an attribute.
>
> I also attached a simple extension of the library model, where i can't
> set the price in the generated editor of the new abstract class
> 'literature'.
>
> Greetings,
>
> Ralf
--------------030403070401060802080300
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Ralf,<br>
<br>
Yep, it's a bug in the template guard for generating the
eStaticFeatureCount method:<br>
<br>
### Eclipse Workspace Patch 1.0<br>
#P org.eclipse.emf.codegen.ecore<br>
Index: templates/model/Class.javajet<br>
============================================================ ======= <br>
RCS file:
/cvsroot/modeling/org.eclipse.emf/org.eclipse.emf/plugins/or g.eclipse.emf.codegen.ecore/templates/model/Class.javajet,v <br>
retrieving revision 1.77<br>
diff -u -r1.77 Class.javajet<br>
--- templates/model/Class.javajet 7 Aug 2008 11:10:35 -0000 1.77<br>
+++ templates/model/Class.javajet 30 Sep 2008 10:10:19 -0000<br>
@@ -363,7 +363,7 @@<br>
<%}%><br>
<%@ include file="Class/reflectiveDelegation.override.javajetinc"
fail="alternative" %><br>
<%@ start %><br>
-<%if (isImplementation && (genModel.getFeatureDelegation()
== GenDelegationKind.REFLECTIVE_LITERAL ||
genModel.isDynamicDelegation()) &&
(genClass.getClassExtendsGenClass() == null ||
(genClass.getClassExtendsGenClass().getGenModel().getFeature Delegation()
!= GenDelegationKind.REFLECTIVE_LITERAL &&
genClass.getClassExtendsGenClass().getGenModel().isDynamicDe legation())))
{%><br>
+<%if (isImplementation && (genModel.getFeatureDelegation()
== GenDelegationKind.REFLECTIVE_LITERAL ||
genModel.isDynamicDelegation()) &&
(genClass.getClassExtendsGenClass() == null ||
(genClass.getClassExtendsGenClass().getGenModel().getFeature Delegation()
!= GenDelegationKind.REFLECTIVE_LITERAL && <font
color="#ff0000"><b>!</b></font> genClass.getClassExtendsGenClass().getGenModel().isDynamicDe legation())))
{%><br>
/**<br>
* <!-- begin-user-doc --><br>
* <!-- end-user-doc --><br>
<br>
<br>
(Note the missing ! on the guard.) Please open a bugzilla and I'll
commit the fix for it today which so it should be in today's I-build...<br>
<br>
As a workaround, delete the eStaticFeatureCount method from non-root
model Impl classes.<br>
<br>
<br>
Ralf Buschermoehle wrote:
<blockquote cite="mid:gbsrj4$828$1@build.eclipse.org" type="cite">Hi
Ed,
<br>
<br>
see my comments below.
<br>
<br>
Ed Merks wrote:
<br>
<br>
<blockquote type="cite">
<blockquote type="cite">
<blockquote type="cite">You didn't have this problem with just
the reflective delegating? (I would have guessed it would have the
same problem.)
<br>
</blockquote>
<br>
No. In 2.4 this works fine. Again: Everything is "just" plain EMF ...
but I admit we have several modeling languages with dependencies (which
should/does not bother EMF). But regarding EMF these are different
modeling languages (with no relation/dependency at all).
<br>
</blockquote>
If I could reproduce the problem, I'd be happy to have a look at how to
fix it. </blockquote>
<br>
Thanks for the offer :)
<br>
<br>
<blockquote type="cite">You can send me exported projects along with
instructions privately. I'll delete it all when I'm done...
<br>
</blockquote>
<br>
No problem. I stripped the problem model down to a simple error (see
attached .zip - simply generate 'everything'). The editor kann create
packages with Feature Delegation 'none' but not with 'Dynamic'. It
seems to be a problem if a class inherits from an abstract class with
at least an attribute.
<br>
<br>
I also attached a simple extension of the library model, where i can't
set the price in the generated editor of the new abstract class
'literature'.
<br>
<br>
Greetings,
<br>
<br>
Ralf
<br>
</blockquote>
</body>
</html>
--------------030403070401060802080300--
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
|
Previously "Re: CDO: Reflective Feature Delegation required - but how to invoke not generated c [message #423423 is a reply to message #423422] |
Tue, 30 September 2008 12:13 |
Ralf Buschermoehle Messages: 27 Registered: July 2009 |
Junior Member |
|
|
This is a multi-part message in MIME format.
--------------070402060800000709000402
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Ed,
see comments below.
Ed Merks wrote:
> Yep, it's a bug in the template guard for generating the
> eStaticFeatureCount method:
[...]
> (Note the missing ! on the guard.) Please open a bugzilla and I'll
> commit the fix for it today which so it should be in today's I-build...
Done.
> As a workaround, delete the eStaticFeatureCount method from non-root
> model Impl classes.
Hm, just tried but still get errors (see modified, attached file). The
log says ...
!SESSION 2008-09-30 14:03:24.281
-----------------------------------------------
eclipse.buildId=I20080918-0100
java.version=1.6.0_07
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
Framework arguments: -product org.eclipse.sdk.ide
Command-line arguments: -product org.eclipse.sdk.ide -data
C:\Users\lobe\workspaceM2/../runtime-EclipseApplication -dev
file:C:/Users/lobe/workspaceM2/.metadata/.plugins/org.eclips e.pde.core/Eclipse
Application/dev.properties -os win32 -ws win32 -arch x86
!ENTRY org.eclipse.emf.ecore 2 0 2008-09-30 14:03:30.000
!MESSAGE Both 'testEMF2_5M2' and 'library' register a package for
'http://www.eclipse.org/emf/teneo/samples/emf/sample/Library'
!ENTRY org.eclipse.emf.ecore 2 0 2008-09-30 14:03:30.000
!MESSAGE Both 'testEMF2_5M2' and 'library' register an extension parser
for 'library'
!ENTRY org.eclipse.jface 4 2 2008-09-30 14:03:55.171
!MESSAGE Problems occurred when invoking code from plug-in:
"org.eclipse.jface".
!STACK 0
java.lang.ArrayIndexOutOfBoundsException: 0
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl$EPropertiesHolde rBaseImpl.dynamicGet(BasicEObjectImpl.java:155)
at
org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.ja va:1953)
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicGet(Basi cEObjectImpl.java:1045)
at rmof.impl.NamedElementImpl.getName(NamedElementImpl.java:67)
at rmof.provider.PackageItemProvider.getText(PackageItemProvide r.java:81)
at
org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider .getText(AdapterFactoryLabelProvider.java:374)
at
org.eclipse.jface.viewers.WrappedViewerLabelProvider.getText (WrappedViewerLabelProvider.java:108)
at
org.eclipse.jface.viewers.WrappedViewerLabelProvider.update( WrappedViewerLabelProvider.java:164)
at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn. java:145)
at
org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Ab stractTreeViewer.java:932)
at
org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeR unnable.run(AbstractTreeViewer.java:102)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.runtime.Platform.run(Platform.java:880)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
at
org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Ab stractTreeViewer.java:1012)
at
org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRun nable.run(StructuredViewer.java:466)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.runtime.Platform.run(Platform.java:880)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
at
org.eclipse.jface.viewers.StructuredViewer.updateItem(Struct uredViewer.java:2041)
at
org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem( AbstractTreeViewer.java:827)
at
org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractT reeViewer.java:802)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:70)
at
org.eclipse.jface.viewers.AbstractTreeViewer.createChildren( AbstractTreeViewer.java:776)
at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeView er.java:634)
at
org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand( AbstractTreeViewer.java:1578)
at
org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToW idget(AbstractTreeViewer.java:2456)
at
org.eclipse.jface.viewers.StructuredViewer.setSelectionToWid get(StructuredViewer.java:1680)
at
org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToW idget(AbstractTreeViewer.java:2864)
at
org.eclipse.jface.viewers.StructuredViewer.setSelection(Stru cturedViewer.java:1636)
at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer .java:1104)
at rmof.presentation.RmofEditor$5.run(RmofEditor.java:766)
at rmof.presentation.RmofEditor.setSelectionToViewer(RmofEditor .java:770)
at rmof.presentation.RmofEditor$4$1.run(RmofEditor.java:718)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3825)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3449)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:370)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
!ENTRY org.eclipse.jface 4 2 2008-09-30 14:03:55.703
!MESSAGE Problems occurred when invoking code from plug-in:
"org.eclipse.jface".
!STACK 0
java.lang.ArrayIndexOutOfBoundsException: 0
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl$EPropertiesHolde rBaseImpl.dynamicGet(BasicEObjectImpl.java:155)
at
org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.ja va:1953)
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicGet(Basi cEObjectImpl.java:1045)
at rmof.impl.NamedElementImpl.getName(NamedElementImpl.java:67)
at rmof.provider.PackageItemProvider.getText(PackageItemProvide r.java:81)
at
org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator.ge tText(AdapterFactoryItemDelegator.java:90)
at rmof.presentation.RmofEditor.setStatusLineManager(RmofEditor .java:1709)
at rmof.presentation.RmofEditor.setSelection(RmofEditor.java:16 88)
at rmof.presentation.RmofEditor$6.selectionChanged(RmofEditor.j ava:879)
at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:162)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.runtime.Platform.run(Platform.java:880)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer .java:160)
at
org.eclipse.jface.viewers.StructuredViewer.updateSelection(S tructuredViewer.java:2062)
at
org.eclipse.jface.viewers.StructuredViewer.setSelection(Stru cturedViewer.java:1638)
at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer .java:1104)
at rmof.presentation.RmofEditor$5.run(RmofEditor.java:766)
at rmof.presentation.RmofEditor.setSelectionToViewer(RmofEditor .java:770)
at rmof.presentation.RmofEditor$4$1.run(RmofEditor.java:718)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3825)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3449)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:370)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
If this is fixed with the Guard Negotiation in the Integration build
today I would not need a workaround ... ?
Greetings,
Ralf
--------------070402060800000709000402
Content-Type: application/octet-stream;
name="EMF2-5M2TestLibraryModified.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="EMF2-5M2TestLibraryModified.zip"
UEsDBBQACAAIAJdwPjkAAAAAAAAAAAAAAAAXAAAARU1GMi01TTJUZXN0Ly5j bGFzc3BhdGid
kE9PAjEQxc+a+B02vTMrF+NhV2LMmkAiGFi9ktJOlpE6LdOWwLcH/xCNCRy8 zZv85r2XqQbb
d1dsUCJ5rlUfrlWBbLwl7mr10j72btXg7uqyMk7HGHRaHsTFj0JOsitWxLZW UYwqPpZfY3ma
NJ6PpJcO0DgKEeHNJnA6s1ke0mE0beYPk3F7Pxw30/IvR5xQWDuwuMgdZPq+ RIFZ0my12Nen
dhewHOmNnjW9Ptz8o1KwCMYLguA6k6B9drkjjuesfE4hp6PbgvgTrsrfL9wD UEsHCPSlsdLQ
AAAAeAEAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAFQAAAEVNRjItNU0y VGVzdC8ucHJv
amVjdL2SzWoCMRSF1xZ8B5m9iRUKXcQZ0NbdSEH7AGlyHSOTH5KM+PhNYqZl EMGFuLvn3Hvy
3YSQ6izbyQmsE1otilc0KyagmOZCNYvie7eevhdVOX4hxuojMP8BjllhfJgO 7ogoKqH8rNfz
6Vs934HzBCcr9piWEpQvCe6r6OaDXBJ4oH460fKtARZVlqsQpYonJ+O0bRCw VhgH6Mg9YtqG
gp5oCoD9XyEkqG26yHZZ46FB8BXlLq7hgGqqxD5ceflc7JYdQNKHQLPTP3ng +c5Cnr6I2699
6ccF0tytTFz5q+0aoTZXgb6OxL+/MPxiv1BLBwg8J1T27QAAAKECAABQSwME FAAIAAgAl3A+
OQAAAAAAAAAAAAAAACEAAABFTUYyLTVNMlRlc3QvTUVUQS1JTkYvTUFOSUZF U1QuTUZVkMtO
wzAQRfeR8g/ZsCMWjQQLV10ACgtEUEURW+Q6kzDCjzC2o6ZfTx6VCSt7dO7c OzOVMNiA8/kH
kENreLZhN2nyEEytIK8uNMIiolehgWdXnQotmqmI5DDoo1UoF0VZPRWft1Xx PtpsHZpWgR+d
dp7CX8s6fBX/qIRze+G/eMZWWlNbmqLJ9lgD/Qt/sVIoPAs/2y3TRfgGPwEJ 6vIEMkyK0vRI
1mgwnmfPoheHMt+wuzQpT50ln++F/BbtuAVp21ynyfwy1J2Kxeij0uTinC9B PLPUMpAKOwdM
WgJGwXjUMLWtGehm/I+CbY8Oj6jQD3xHAHN+HPxeeuznnfbTZQeeKXEe0uQX UEsHCDbkwnEJ
AQAAvgEAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAIQAAAEVNRjItNU0y VGVzdC9iaW4v
cm1vZi9Nb2RlbC5jbGFzc42PQWoCQRBFf6nJ6BjBC2Qp6MYGwZWSnVlNSMAT tG3ZtPZMS09P
DufCA+RQIeUkK1dZFPyC+r/++/q+XAEsMMrQIeSxDAf1FvbsM/QI46P+1Mrr yqr33ZFNyvBI
eA7RKjbenWtWXB5Eh8hq83tCGFpOH9qctOWaMJnOinuDCWUZKtUk59WmcHVa EQZbZyudmsiE
5X8866Jt+/dp9SIZ+TY00fCr8xKStxzzG4KUJnRlHgSWBCxDX7aBbB3kooat evoBUEsHCNEs
eg/CAAAADwEAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAKAAAAEVNRjIt NU0yVGVzdC9i
aW4vcm1vZi9OYW1lZEVsZW1lbnQuY2xhc3Nlj7sKwkAQRe/GRzQqGNDSPmlc sLWOlWgRsF/j
JCTsJrKJfpyFH+BHiRNEFCwGhjuHy5nH83YHsMLEhSPgW1OlcqcMnSJNhsrG RVdgWqirklqV
mdwfC0o47QssKptJSnR+rkmSSXmvLMnojQi4GTVtlcAsCLffirixeZmtGag/ wDz4v4cHAS+u
LjahTa4Z8n+9li3PEgIdnh7/4LCoiwFa4SE8TgRGbY7xC1BLBwiwaRcmqgAA AOYAAABQSwME
FAAIAAgAl3A+OQAAAAAAAAAAAAAAACMAAABFTUYyLTVNMlRlc3QvYmluL3Jt b2YvUGFja2Fn
ZS5jbGFzczv1b9c+BgYGIwZOdgYmRgaeotz8NP2AxOTsxPRUdgYWRgaBrMSy RP2cxLx0ff+k
rNTkEnYGNkYGQbA6v8Tc1BTXnNTc1LwSRgau4PzSouRUt8ycVKBBUDP0QNqB GhgZmIGYlQEE
GBnYgSQTAwcAUEsHCBiljvZuAAAAfQAAAFBLAwQUAAgACACXcD45AAAAAAAA AAAAAAAAJwAA
AEVNRjItNU0yVGVzdC9iaW4vcm1vZi9SbW9mRmFjdG9yeS5jbGFzc2VRXUsC QRQ9Y+bq+rWp
fWjlsxK00GsRhCgIZpHi+ziNy9quI9Ma9LOil+ihH9CPiu5sWlYLc++cM/ee OXvn/eP1DcAJ
6hYSDI4O1cS9odDhIlL60UKS2Cl/4G7AZ557NZ5KEVlIMdSV9lwpAn9+L10Z TmivtHTby06G
jOz2B8OLfqvNUOr9VT5lSJ9R98yPzhk2Gs0RQ7KlbqWNPIoWCgzVuMcP58F6 Y5dwDg62qN50
M1Qazf/yGTCUc7CQZij2/JnsL8Kx1EM+DqTxowQPRlz7Bi/JvNCSR/Kaizvu EXZWukuGLGe/
Si7JZ8BQWBXEmI4LnoyMiW+JX9Z+ZOyBWmghO7651lmzfWxGTcOlidDapFU1 v0BPlKSYgU1M
ltARZfNZL8g9o/RE2wQqFG3KQA0plLEds+YFd7Ab5z2SM7mGfTpjOIgrDj8B UEsHCI0PcHFJ
AQAABgIAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAMAAAAEVNRjItNU0y VGVzdC9iaW4v
cm1vZi9SbW9mUGFja2FnZSRMaXRlcmFscy5jbGFzc31TXU/TYBR+XmDrOl5k A0SHioBTNz+o
35BgTJZRDbErhC3cNl15txS71nSd/0u90gt/gL/BWy+99s54TilBl7Am7XlO zznPefrk7fc/
X78BeIJtDVMClXgQ9YxDehy43ju3r6qWn6jYDYYaZgRKJ+4H1wjcsG/sd0+U lwjM2Y2WueuY
ltky7Y7AqhXFfUN5gf9+qAw16BGOYmWYzcAdDncEFv8bcBxOBTYuGmskSex3 R4miUe2g0Xzb
eEPtudb+rmkJzKfRcbJCewLRoeqpWIUeExVeUj30k1cC07X6kcBMMzpWOspY 1LBA3zlug8QS
Lgvoas9udxp2kyQsWONNO7NEcEXiKiqkrK8S2x2oYzNQAxWSU2u1+mRvdAhc k8ghz0Q3JFZx
U2BpjMjhRKB6Mdu5Zcy4LqGhwIy3JKosrUiMmWRuuCOhn66sSdS5oUANLTIk 4PJ9ieJp+aHE
JgyB8lnZyViGE+WcG890jyVmIckfyw+VPRp0Vdxxu4FiQyPPDY7c2Oc8e1ls R6PYU699Tkr/
mL3JR1FA7oWhilP/WEbh7LjmBe2appOdQ4UdJVRhH9KoZ3kxiySIIk1jDpco zlMWUORr+xNK
X7As8BkrKbzOcC2FGwxvp/Auw3spfMDw0UeanaL/ClhJt/ykLb+wjN9YF4J6 dGzhB56mXXw/
S5/P8YJiEay+jK28/hdQSwcIzMDMkQsCAACgAwAAUEsDBBQACAAIAJdwPjkA AAAAAAAAAAAA
AAAnAAAARU1GMi01TTJUZXN0L2Jpbi9ybW9mL1Jtb2ZQYWNrYWdlLmNsYXNz fVTbbtNAED1L
L05Cem8poVwKFGgp1FDubYUUpQ6KSNwqSSverI07DS6OXTkOEp+FeEE88AF8 FGJ265TEqETK
zpzZObMzZzf59fvHTwCb2DFwSWA66oTHZp2Xfel+km0yMMrRE/lZmr4M2uZe 64Tc2MC4wM0w
apvk+t5pl0zqHLMfRmRaCVNgjOxizRKYrf7lN+LIC9rbAhOlMOjGMogPpd+j DC4LjKrDBQyy
G85BvZLBpMDixzg+3TJNUzemlg19jEBOpe3XrXLlg0CWKnajWbRL+rj0EOo4 1cquY1WtmmU3
BURlhMeGwNzQhuOctbw0HC1bxeZB3XJKewd2UxEFt7lfLL0vvuPkicTrkxf6 eIjGetT2dq2q
orPSUxo4TpLb4E7OIilSZocVDrz4rcDI6tohq1QKjyiHu7hnYEWgoIf1Oqf+ 4MQVxnncxwPO
V2yB+dW1f3XJsgBreUxjhhuqegHZvU6LoqZs+aSEDF3pH8rIUzgJTrUptmWH jiyfOhRw5WWu
fMFTKPmy22X151MkRwGBlYuZxZgfSqsXq7vLMfv8UWUY1FgBX2Cm7zrJbve/ Jet0TBEFrio5
yVQlRFm6cRh9ScmTRNXRjbAXuVT21OjTA9JtqCctkK8EAUV6TOoa2Orfx0Dm StWLKZI+N5fp
u/zr4evk7xgmUICBDPtZ9TCQY5wfwGp/KrXP98V+AbOYO4/PM15I4SsDeJHx 1RQupPKvpfaX
BvB1xjdS+TeH8tUUt7DMkdscWWerPsZ33PmG1a866SGvObbADsa53LqOqr+Y R3is7QZMbZ8k
+GliN/FM2+d4oTkv9foKr3VFgTf83R7P/gFQSwcIQA0a/HUCAADPBAAAUEsD BBQACAAIAJdw
PjkAAAAAAAAAAAAAAAAqAAAARU1GMi01TTJUZXN0L2Jpbi9ybW9mL2ltcGwv TW9kZWxJbXBs
LmNsYXNzvZbfUxtVFMe/N1lIE7ZpbSm0hSKhtM0viC1Wq8EKpinGhh8SCoo/ cFku6babXWZ3
gzK+OXb0oTOO4/jgX+CMw0PbhzL44PTZP8rx3JtLmglB64uZSe7de+8553N+ 3JP986/f/wBw
DWYEIYbTXs3dzFm1LTs3625wu0SzCDSGy65XzXHTtrZ8nuO1TZq7Hm+cLM6v 3+dm0DjbzRCT
SqQ8Q/ek5VjBTYZwMrXMoBVoOYYwenREcIzhRNly+Fy9ts69JWPd5gynyq5p 2MuGZ4lntagF
9yyf4Uy5A2CeQeeVwAgss2AbPh0bTqbKnYGL8kQ+itM4E0EvwzmpcJF+Fgzz gVHlo2Ur4J5h
+zr60M/QNTt/q1hmGPpnjRQ7xXCbG0Hd4wW37gTS7RJDT5UHSj/hXeqAZ7q1 muvk6oFFAS1b
fkAaoxWr6khlDNdfRmayER5lKX9T+vmqjmEkKNLSkbW1henCnemZYoVh5CiX Fvkm97hj8nwM
DBd1jOISOcFv7ThGzTJnODk2nSwdJV4JvLpJ2IatYpFfXU2V7xvbRs42nGqu US/5CK4wJP7V
KYY4Lznb3PP5Iq+52xSMR8kjTJccyp1j2Kok84cRlXrHDazNndycGCyT0uY6 hXuG5eSPjPKR
EiJEGR3nMRDBGEOyM5n0p4kn/OpBFjkdr+EqhXbd8C3zwL3t5OFg/S+OhDGh I4kUwzE3uMe9
orPBcOUlY031utlId+kWA6Oq12p+lcr96n8mYThOd8l8MGtsHdx/LouuP1nq WEoC/aaOPCYZ
Ih73XVvEka2SI4J1aWdL6qgIHX1UuIcUpJZ7cBlFHbdFU+oybW54EbzP0CuP yuwVXNums0Qp
zn6g4w6oL3QbGxvTNnW6cyprbWfzqVVBN6fjPRSIx+FfLht2XTa6Qxikjt91 fIGpJUupZSG5
pONDLIqdkl852FkVCB/p+BjkY8Tyi7WtYEd2G2ntUx13Qe02VnHrnslvWyKG 8WbHHBeGqWuW
HId7sn9xPwJaOdneDQn4oB8iQYUepm8X/WFEoYn+TU9RepqgkdHYld5D7AlN QtDpN0YjMEZH
x3GcZnrjEOI4QaOGk3hFKRhXCrSnOPW4Kd8t195skdWasmdxTslmlWwovNsm Od0iGVKSTFxU
ehqUaxekhhvEJM7E0+GnGNK0Zxh5jsvtHHdatMWb2ui2KI6HRKXRmBn8DeIz ghef0+lnSD9H
NjO2j/EwHqczg2N7uCZMhKWJOI2gnPViBRcpq8JUuqFOmRKz13Fdms/gDQpL SM5u4C2SfVsG
JdQbp326BQrpa4WUGGggnW1HepweGLywh3faQUwC4RThagtIogmSkOaZnL2L KQmSoGhPtYBo
tE8Fr0B+oB2hd0KBZNpB9kE9Q0yyzzGzj1IIK0/SA9k9zD5pop2nRAAeoQWU uDop2abkf0Uv
LzsSc7hhook50cScwDwWCPMArp9W6U4pOI92hAujCu5CRzjC2UPlBU2fvAff EM23JPEQQ/iO
Mve9JOlr6GuSjCqSA/tRmtP9VPbryn5W2b902P4Kwy+IhH+Fpu0Kjk922xL2 I3H8RC3h5xb7
2ab9bIt9ep3rPTHFRG1/Jiv8c6xB3FV6g8EXWO+O/g1QSwcIwpRHRL4EAAAU CgAAUEsDBBQA
CAAIAJdwPjkAAAAAAAAAAAAAAAAxAAAARU1GMi01TTJUZXN0L2Jpbi9ybW9m L2ltcGwvTmFt
ZWRFbGVtZW50SW1wbC5jbGFzc5WU208bRxTGv8ELG5sNIdwSYpJiQolxKG6T XtKaptyW1K0h
aQxW5Re0mMFd4lvtNS1qn6qqr33uXxCpykOgkpH6UPUpkfpHVf1mvHaNgUq1 tDuzM+d853fO
nPFff//+B4B7yJjoEbhRLZb34m6xUohvOEW5axdkUZa8JBdMGAIz5Wo+LnMF t1KTcVnc47xc
lU0H+/HOvsz5tn0CV7VWp4zA5Y2ldXvbXrXXlrZSmwJDqX3nwIkXnFI+nvaq bimfELi0wAAl
13soEIjOZgSMlfKuDILuFkxcEriScktyo17ckdVNZ6cglVA55xQyTtVV3/5i 34KWCSGAIQuD
CFHK+8qtCUykLk6UBJZMe47n5lYKTo3Wk9HZ1PmJ29oiEcR13DAxLjCudZ/y 9cTJPXPycjrl
erLqFGoWwpjwK7C6bafsdXuDFbj138oCZl56ClFghBhnyqVCT1qIYEpg+JT2 9rb6FJi6KMKS
R4mduicTIdZ22sKbmBHol6uHJafo5h5JHthSNHmROwHqOa/O3Nakw1EmstlO wGY7JExEBQa7
uZlXrZXXaPRsWrMZxTRn4S3MdzClFdPi/2E6C6Q6yizJb5rBDanzvBZNnkuv KO5buIlbqove
s/A23hEI7jXVk6sCIkm5qqyVCweUE1n2r2LZPKzw8zL7KPds3an4HWlIncEY MziHSwX7xMIs
YirYkoUFfEw5smacQl2evi6+F7tcbpVqStWIJpVGAI8srMJWO8laurWTDeEO PreQwrra+brO
nuyqfQskq0QeW/gUzC2ULterObnmKv7R7ssyr7x5YZKlkqzqlpU1E+zrwe6L wERaV8GIMNEA
n14+E+pK8y8oyHcQqgT9/JrlqH694jdYR5z0YIDvEEdgBgZP5IpeBeeDbbf7 HJVjb+wEV7vd
5mka125W0wjDGNECoxjzBeZ9AeMY1162/fv02oMOX8P3Fao1fN8HOh9gIBY4 xhuG0cDtP3Gn
W2WlQ2WgrcIz91WWqa1oQ1rlbgN3u/NIsU7rWmWsaemrqFmcVVQZsE19ve+o Z3CMhH/VNtfx
72841sC9l7HwxM0TvKtAAzrMAEcgQ9EvMY6sDhVrirRDRfA+PtBJRJj4hxok go84CyChC9Qz
YnCfLeyDfM8dpTvtg0ycApljqRp4eBQLz51g8ajNMsaiAruMukePPMvt4jb2 NdNkU6/NNN1m
mmYZV8jUIlFF4ZXwSSrcUbxTPkn4FMkxrCbICda6OWqMVKf9AVm+Zb6HHccw 1eaY8jla0U3O
eZf86D/70Zf96InO6Az+GkPqWF7BNJ5jPPAco1xUKw189gtMLhjGC0W38aLr xH5g/B9Z8Z86
qJbbVMsdVP0wRwYXRQ8f1VtPdId9gae6hwR7JI2tvuA/UEsHCEoKZNQQBAAA HQgAAFBLAwQU
AAgACACXcD45AAAAAAAAAAAAAAAALAAAAEVNRjItNU0yVGVzdC9iaW4vcm1v Zi9pbXBsL1Bh
Y2thZ2VJbXBsLmNsYXNzfVHLTsJAFD0DhQJWQRQRVNTEBbigiS4xJoSgITaE iGE/lAFH+yBt
8bvUjYkLP8CPMl5KVWKMi7nPc869ufP+8foG4AQVFTGGgme7Y13aU0vvcfOe T0SHYhUKQ/mn
1eW2GLUtYQsnWPSTDFrYj1gMyTPpyOCcIV6tDRiUljsSGcSxokFFiiFrSEd0 Z/ZQeDd8aBEj
b7gmtwbck/M8KirBrfQZisafizVorOgHPJBmy+I+AQ+qNcP1JrowLTn1hS7s McWuJ/R2iGik
sYGCik2GUih5TSZSPDJkIDxu+Rq2UGRQe83WVfOyzVD5X5Mh03dnniku5Hzn 3NKG9Tv+wGnL
juMIL0QLX8UugX5PZ0h9zcch6G70EvQ1MSjzi1GWpuyUPCOfOH5B5ilsa2Qz 5IEKQfexSpG2
AGENWfIKcliPBOqRgPKM/OM3PxnWqktcJeLGsB3aEsrhHEb328FeMv0JUEsH CMVKYPxfAQAA
OgIAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAMAAAAEVNRjItNU0yVGVz dC9iaW4vcm1v
Zi9pbXBsL1Jtb2ZGYWN0b3J5SW1wbC5jbGFzc41VXVsbVRB+TwjZfCy0BkKl YI2UShJaom1t
tanSAMFGQkDACGqtSzgkSze7cbPB9tLf4L/wCrmAp/I82isv/FE+zjnZfBAS 9GI3Z87OvPPx
zkz+/uf3PwDcxUsFHoZxu2LtJ/VK1Uhu0GlZKzqW/SpLsgIvw4xll5K8aOjV Gk/yyj6dLZs3
9DPnlH0MVyVWBwyDVzd1h2E0Fs91f0zR10VrjwcQwpACta+zzLpWfKGV+PQG L+k1x36lYhhX
GPzZ/OZWOr+YYYjn/qdpyo+3GK6VHaf6KJlMypjEa07qhyiUERWjiDCEStzJ tPK4H8sdaIda
0tDMUnLTsXWzlOrrtJlgANcwruBthlhvzapRL+lmMiOEdXkWqV1nSPSBvmiQ CpKTSRXv4AbD
gGGVGCKdsa7tHvCik4oXgmCIqngPUwy+x4KWz8ggFi8omGYYaVtkXhZ51dEt k+FKTjd5vl7Z
5faWtmtwhnDOKmpGQbN1IbuXw06Zn2M93IvsAG8DR3I9/JHO0KZDhK1qVYkc xACi1CVOWa8x
TOT6tipZ+oo21xwKZj7Wj5ZFQ6vV+rPmVipEo3FfwT2GyctwVHyEB1Qh6hIp 6/s6t7NLsqRZ
UeuPVXyCR5RSIzC3EWlImqPg3qSE8mMVn4L4CDWUV2ksDKprU1XKKQVPGKba hcsaBi9pRtou
1SvcdFp1VLBALd7drgt13djjth8UY2irzKNFEXZ0Jog0lkVffN7VOc0uL4iK ZFV8gRUGhfLN
axXeGOkLygJsVUUea8SIVq1yc4/hTs/Z6RMfDeiXxPVMVK9FTcuJatFDzdD3 GtHKIgsfmyq2
RDh+x2pYBzGPZfLJJRkMNy5vAgU7lG27n1wuRC8FsS2azl9tXD2nUuZ6KhLI 9zQ47W+SpQbE
MwExWGnQGMn10KGWHaZaikZutca5LdnZHlzFPkruTmqpT8X+a+1RiHrnWm6Z BgmoLSzxqs2L
1HdE1vhG3XT0Ci/oNZ1GMG0SCZroKirqWAdpbRtac2VYKqr4UQx5eymHLyZD zjatul3ky7pY
HKNdczwn8BnUrGlyWzLFawoOic7L8yS6mgueGplmkJ5B+pNTEKDHT1KApJ/h oRMwfYxg+Opr
hD14g8GVxF8YShytHGMscYKJM7CdU7x7JDVH6K/gJqHdovN1+IQt7edbCON9 +hJHBAlM4jZJ
wBihD5PODGIkRchvnL4CszIOz5aCmwqB0v51w7lHv8LJYOIUt3+jg0f6CdIv 8ABePJS4akMJ
dzBHvwxJfOAC/EK3Qvfp7Gt8yPArHRGVOpD3Y/RMUE4Pj+iVOjrD/M4Z0jvh xVNkyOQpwwly
4XV6nWDjFF/9SfqNXMPkHXhCuaUp4AWKY6mVI/lzYxGnAr4mf7MywoFJr5cE 2npugAukLgyC
Z9imon6Tmz3qSjNP5Kx1QAddaD9J3+I7WSFajBfxnhHe84t422S50wfvB2gS bxdFF++uy4Cf
6rP3BuU2mk/e73YQ4HeRAjgg+wG8kAUwXN2K/CLag8l77zHMbrSKRPPIx5bv GhwZIw026vjJ
F/gXUEsHCDbpmheLBAAAnAkAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAA MAAAAEVNRjIt
NU0yVGVzdC9iaW4vcm1vZi9pbXBsL1Jtb2ZQYWNrYWdlSW1wbC5jbGFzc6VX +XNUVRb+brqT
fkluYmgiiCBCDLG7Vdph3IYOKIZEW5qICQaNC750bsLD3nz92lHcV9zXGZRZ cFeYcQkowUCV
Yqm/qD9rlc5vVjk1pVX6F0x5zu3X3Y+mO8EylffeXc4595zvfOfk5ov/H/4I wCocCaBBYJGd
zk5ErXQuFR2i0SYzebM5qeI0D8AvcGbWnoyqZMrK5VVUpSdonLVVUb7/GOEm gQ5ty2NGIJgx
02q8P6XSKuP096XMfF5gaaK21eJ+TKAtV9QvKbSms+MqVZoZVj6esRw1LiBG BZqtfJ+tTD1v
K25ZZsrawXOjlw6hhbUCvlB4RMDfR5aaITBfohVS4KSElVGDhfSYsjebYyl2 OZFNmqkR07Z4
7i429WozBk4RWLjNcXKro9GoDpdfK7X/zTgVSwJY7AViwEw6Wft2idOwlFxV 8cHhzesG+/r5
mGqhWAt8WCaxAMsFzg8ltpu3mtGUmZmMDju2lZmM1YOtpB8e4cjOkAjA4NEK iebi6EyJluIo
LNEGyaOzJNoZAb+zzSJUFyfqMoEy4ufwBTpD4UR1kmPN+AP+GMCqumwpEaV7 SE1aeYfhOA/n
U3YqaITrxVatGmul0y6UuAh/Il5MKqe/zLXzakA2l13CXCDGmHfwaI3EWnQI nJzUjHKF+rIZ
h+ibZ4lLJNaxxCKrzLMaUn0S61mqacJWagf51u5sU8cURtuwQ8ONZk4TLIDL qSxmd5W4SuEO
eupJYFmoboClWuqsUtrKE4Hu+prrHMJurOAownoQmwK4UmDJbKdIXIUhgQWc DcK9kHQKtpka
IAQLtiJqrahxVjKbTmcz0YJjUSNJUGrpsM0YCeBqgeVzCktswTVU03QiJSsU D3syf+XYdpV0
YgFQb1g2V4gCLWSjjLBBk43cawTmlYZb3d38rKANqQllq0xS0cE31T+4LEaU oAM81V9VXJWe
IDAuoTBBPYsBdjfimbxjajtd9Z3yGtkmYWG7gCxSu9RMlzN4s1KIlVMSaWSo sbnKHvy6QrOr
x8MjbCEncYvXQhkIA+SFn+NmsYLErfizQCBfZC1nt0ZVa5PURnawbCvL5jfZ asK6jdfvlLiL
1w29fvVQnGl8j8S9TNJ2TdJCjtr97Tmli/V+iTiuYPo9KPEQHiZemePjVSe7 rAqPBvAIkUPn
yVtWBh4jbL0rbPoJiSfxFJGMu0UJ8vE5EPOcetyCC8Do6OgJZO0ZiQ1IcK9/ TuJ5/IUc1DJl
unfXs+GRorrchRcDeIFSPbe0xG78rVhU/UVf6Q9SfYKuNx2T8xAz8A9iAV8W 2PE9Ei/hZUqW
hs1Dtr11oas0rVlxsSYsZdcA9PiVePy4PIy6PyfQOQN4ldDWLHGRMfA60dqd BPAmgaS3dY8x
sFegUQ85/n9J3IAbefS2xHW4wsC7RGf3UqQ5OyWxHwdKCHm6ypd1Eap0qBNB aG4jvw/D+iBW
juBAP5A4iGkKtNg3hlQ+W7A50DW/4a+97WpFS+r0d7FlWI8GLL7edVbdeFay aUpgPJNRtnac
279RuoRgOXnmo6cRTWjg6xbdqBv4sqW/LfrbwhdMPW9zv+3620q7J6GDtOfR LExf/mn0vY/g
fi3WqZUb6B2HH4txsl7lZ0FZTenjgTMiwYUHsOgQTo+Ig+jiVze/eiK+gwjx K1IxupQ8BV1f
msn/doQwH1Gcgim6m36FLlyqD5JFszgb59C3GStJpnjkHrLCe4MHENyNeQdw bnDhDC5owFE0
TlVmn0DsRkdl/hZajkBcewirj0Js8FOUkWn00nMxPZdGpsiiz+PdGI0VejGJ S7CdLlFpXI4c
ErDL3vUiiH7t3QA9BnydSwYCuIx2qIu7vrLP7Gtj5AN0TZUBaNKLd3gCbXQD FdwpXeU1bqDz
WXkGGynVMxjmOK+tNvWgx9T8sqnravrRXa38ZE0/rq+p3FOtvKumMnWNGkH0 HBPE1mpTL9UM
wqRUFE2tcv0wKGHJozi1Wn+vR98o668tc/Uxl6sxciW0G/79ET9zM+KbxiRz lmGm8c2RiF+v
dEcijXrQw1s9tJXdX2ZJl66tw/Q+QnX1EZXExzidSBfCp/SPwWdYjc897sRc dwa0vjBocV3J
LyGJSCy0j06JlPyKRIL2NBz9vo2Kaxp3cO5mcLcAxX/fDB5owBbtc3Bn8FG/ j3x+nObTeJrW
np3BX+lfu78Lvz+40+fz8y8J/FMrdAdfCb7mKylQZME3gm/5Kgb20fNvEXxH +BqCb9B6Sfu9
LdqP97dUULiAYge+JhS+odG3lLbvsAj/ISS+p3T9QLX8XyTxP+TxIx7AT3gF P1OafvEgs68a
mQYc0nn9EDO6/wiC8zIcbmr+FVBLBwh2+JFO3gYAADEQAABQSwMEFAAIAAgA l3A+OQAAAAAA
AAAAAAAAADUAAABFTUYyLTVNMlRlc3QvYmluL3Jtb2YvdXRpbC9SbW9mQWRh cHRlckZhY3Rv
cnkkMS5jbGFzc5VVXU8TQRQ9A7WFukoFBFG+qdAWZUFE1FaQEIjGggYMD74N 22lZ3A+yu9Xw
rzRRTHzwB/ijjHeGSQNlW6BNd+/cueecO3fuTP/++/0HwBOspdDBMBq4ftWs R7Zj7pC1VuFH
kQg2uRX5wXF2IYUEQ//5mN2vdmQdMCSjAzvMzhNHuR1JkSJLtmdHKwwTufah +T2GxLpfEd1g
uGngBpJpdOKWgRRuM3TmZEBP2fbEdt3dF8FHvu8Iht6yb3Fnjwe2HGtnQqbH MN5WMbtA6WUs
Hopt7orKhiNc4UUMJZ3oWW8xX/aDmiksxz4KhSncqmn5rut7pudHdvXY1NTF NAZwL4VBhuF2
2gaGcJ9hyAoEj87p6ziGfO6qmlRkf/9QWJR7X0zqVE25yA/c+sxrVJxlvT7t uNbSxg1MyMT7
TxPXFI2cb59nZuiWylu0qQ7DktZVw2upThuYkaq9p6qKoKFpnGWltVZElded aJ2EGd7kLsgI
yw+EufFeVexaaTwy8PjM4jVFI5GxS6QYFi/P5pB/4abDvZqpXWk6DQsG8igw zMR3ZizmqYE+
9DNMXtjt2PBlAyMYpSPTtEmxwS8NTCHLkN7164ElNm155gYvdvmcRFMT7No1 j0f1gKJWy3EX
SumKu7BCRezZ8CzHD22vtiWiA79CHfDW80Sw7vAwFCHGKcFOuuVYJiPvELK6 6ZdCF/ml9Rwd
9AXShdmf9PgF4zuNOtAjfWqGEe4dMmQZZEvvHfQqP1VUs5ToLWO7Cj+QPsHd bw2OpMJsK/zA
aYzGS+sBhmmeyWLHM401M+20ZJpUTLQT8UwPm5n2WjLlFBP1WDzTbDPTp5ZM c1T3NWIyNdO0
rnayMHuC+WYepnhonjB99L8Ug1lshxnBUhzmWTvMFHVADOZFSwwSKCqrhFfq vYJV5R2g52vV
H0wh6PMfUEsHCDjIPy+6AgAAYgcAAFBLAwQUAAgACACXcD45AAAAAAAAAAAA AAAAMwAAAEVN
RjItNU0yVGVzdC9iaW4vcm1vZi91dGlsL1Jtb2ZBZGFwdGVyRmFjdG9yeS5j bGFzc41VWW8S
URT+LlBGYBSsttUu2mqrLNVx38DWimCqiAtNE32bTm/p6CxkGGz6A/wFPvnk m08+uBs1MfXJ
xB+lnrmM2BZEQnKXc8/5zne+Offy4+fnrwBO4bqEAMOoY9orSsPVDeUereaW 1ZrLnaKqubaz
LiHEcNZ2qgrXDL1W5wo3VxTNNk3bUizb1VfWFd2sGcrWsHkyMcimvcyNO6r2 SK1yhv6SyOQl
8W1ZhpjwqazprrbKMFjaSqZpJ7dIRa9aqttwCGe2o1Ou1J2lTzA7Q2jhnG7p 7gxDMJlaZAjl
iUMUQcRlxCBL2M1woJsqkyejSGCP572XYSJZ6uacTS1GQKXJkLDDW+2T0Ydw BMMYlTDCkNgu
i4wxhKlmPl+uLMyV8wWGeEm3eLlhLnFnQV0yhJq2phqLqqN7e98Yclf1OpHv TohhZ8WlVLfU
mh+X0Ov+YdF2FtZrZBpIlh6qj1XFUK2qcnvpIdfcbOqBhCMMY9uV5prtcKXQ 9IphCkkZKaRJ
aJ431DoxGk+m2r6PHyU8sjFM47iEY9SP3fxkKDhBXVPlbqHVWIf+Df630cK2 YOcJ11YXCaI5
XHW5LxTD3eR/2qnsTTr1U3vqzn0XxTlckHCeYW+n9pVxEZcYdizbf+7C6XYK W3SmzG2FSMgx
TPVEiBRxVYd0ZOi5Vob9TZ3KqsmXCwY3ueW28FIdPkNnLUiDJo7/eVoQ/U3z Le9NaBl9X7/s
ljlasRuOxou618BD7W1+3FOHHqF5y+KOaB5exwTdvyA9fgGIS0irkHctyRoR 1ijtmPcI0LiT
LCadM5rH0h+xK/0Fifu06H+PgTcY+o7IG+x/i6HX5BDEARqHBWSGgm4Q/E16 JKYxiGMYpbY9
SCdyEwzjRAQ41LT8omMmiROGw5j0U68TnQDN6QzleoG+0MvMN0w9w0hmA1Of cJThEzIMfw6D
9GvxGKTsQJaKyVFhM8RjFknMCQ6DTVSfg7c6Sf8FTLDpQzAyymhzGmd8Gnmf Rjz9DgNe6g84
u4HsKyGXlyssmK9uwo63sOO4TNk9wFlc8QGnxZ6i2XaMtU0aBXwMRqz/H/mk Y+TVHiKfdozM
9xD5vENkANfEWECR5iidJYQO+A1QSwcIdv6S/0MDAAB0BwAAUEsDBBQACAAI AJdwPjkAAAAA
AAAAAAAAAAArAAAARU1GMi01TTJUZXN0L2Jpbi9ybW9mL3V0aWwvUm1vZlN3 aXRjaC5jbGFz
c6VWW1MbZRh+viSwJGzLoS0FoQdqa0OAplpsFSLSpmkbDekhsWpbWpfwJSzk ZLJUe8U/0Gsv
vNUZxwusM3XqhdO7znjj73HG0/N9uwQCCYzKDLvfvofnfd7Dvptf//r5FwBv oGbAJ3C4Vqrk
o2uOXYze4Snzme3klg0EBHpXrMdWtGiVC9Gbiysy5wiYpcqSLN6ycqtWQQr0 p7Sz8vNkMwKd
MbtsO7MC/vDYXYFAnC4h+NFtwkBXEAIHTHSgM4ge9BnoZaCdKCb60SkQlMl0 Jns5HU8I9KTs
skyvlRZlLWstFnXwSs4q3rVqtnr2hAFn2a4LDKRaZTWjFE1OT6qbjsMtPWLZ 7Mws3Q5kHDKb
t6qedddSxTUQuBBOVWqFqMwV7WpdRmUpz3OlJqMJt2gzY6mddSRgMGMXypaz ViPY6X0RyKIb
JzBq4KTAsT2NTZzCq2yCjBetOitxMjzWDl1bzITYkDMmXsFrArfbMnFt/0um IWdZJjbn58Q+
CAJX/icFXapxTBqYEBjZC8rEOUTJT8YrZcfidNUERttXywugwF83+fZc4EwW pKOh7Lwta8mr
euSTqqBvqoJeFJgKJ/99zVSIt0y8jWmBgwyRyKxVOfWcVfbzTAuGuUqpVCm7 s5tI2XUFEcOs
gXcIoOG1SmlMvIs5AcOuJ0pV54lmfE8xvmIijmGB7iWZt9aKTtyqS4WSMHEN 12lHIgJHwsnW
46ya7E3c8b0byBBye0K9qWaGNDi/QxTbG1G9oGf2LzQnw8BNgT79oqetklxK FGVJlh2V/20T
d5AhnRwT364UOBtO7XJp1TcDH3BDalNvjyngD018hI+ZtQJubM5THubm2mwJ d5/Tqa3m1dZV
YAsmHuIR663AtFS94akto9bvoJlrmlKRpKjclOOhFilyi9RknbOgdm0L1K6q S558DjZnI9BR
csmZ27lxitgEgcGWBdWqzoq3KQ7tLJBW9zXnqmWhTGWtlpPXbLWYe7Z29zlF WSAcy07vZj+7
W4RRFtjPLyNZq+8TT108G/oa5NMq74L3vshPCD2F+RLBpzj4I8wfKAzgEK/9 vIN7JYAoQjiP
Xi6Kw5SYriOOYID3o02SQd6HXMnfdBCG1ggukGH4MMKzD8c0gTuk51OWkfHn OC4w/gynN/js
17E7tV9Mxxtw7bx46nQWYeq3Ipte5IDa/I04YzrOb0RUecwxTESAqX6DHhXz vMDEM0xt8HhJ
ID35HKz/V+iOUHr5W/RHJv3PcdWHFxif8Li5dTnOMgLXGfUGo77Pb9k8+aRZ oZtcSCnNOeLG
bHCeo21Sc53T7H3qC4j36O3Xebg5znl5uLoUdaqWB+Af/ANHDcTShk6G27iR 5LxKUnzJUwef
14e/0+E+h/unQIf5f5H/CxMvkE5HJp/h1nRgKPASIZ2pOm9QldWqu5uqdmb3 tNmDXSp92qrR
LH8PAfdJcoG5PGTGjzCFT3AJOXZ1ietZslp5WhSoXaF0ldciHqOEJ6joGj7Q /Vtv1HCd/pau
4bpXw1FqFunr51MPUSWjx/ibIU9Uv/oEeLIc7ZZhU7bSsDva6NK6V3UXY4Uy 11OdVhqyIW3R
NfKn6oRqxO/w6XOW5+7Nh3uugiy5gBtNWtWZ3KBUNcQnds75+rY59zXy9bEe uaY593lMhdrC
DfTSPuhftEUvtEHnWm6gl/dB/7otut0GPb5rF7RH/74tergluo+zo65VD//T fwBQSwcIVhuj
GwgFAAAhDAAAUEsDBBQACAAIAJdwPjkAAAAAAAAAAAAAAAAdAAAARU1GMi01 TTJUZXN0L2J1
aWxkLnByb3BlcnRpZXN1jrEKwjAURfdA/uGBHWuSVgQtKjhU6KCTo4tNQo2k TUgaqX9v6iKF
+rZ7DjwORgvYcWPfTjWP/oDHSSd7REklCqiD0oJYZ6x0vZI+fUFGMsgZ21C2 pSsGbFPkebHO
QJtaQjlYSDDCqFYdUR3XQUgPeyDpDSOYXmuE1HRGnMvrcVldTnPO6tDE10Or /8tfLkbPu/OE
m9YqLYlxQrqxBiNvguOSkLi84xQjE3ob+i+I7RF8AFBLBwisvnB7swAAACYB AABQSwMEFAAI
AAgAl3A+OQAAAAAAAAAAAAAAAB0AAABFTUYyLTVNMlRlc3QvbW9kZWwvcm1v Zi5lY29yZZVT
XWvCMBR9F/wPIXvWqHsZxSr7qCDMIVNhrzHe1rA2KUm6un+/mxqLhQ1mHlKa e8/JuefeTOen
IidfYKzUKqbj4YgSUEIfpMpiutsuBg90Puv3piC0gShZc/HJMyCnQkYtaoKo fo/gQjJlIwzG
9OhcGTFW1/VQF9lQm4x9rJb0kmK7KfV9kzEZjcaY9roRRyj4QCrruBLQYW+U dMAgcllaaBig
SD3LhCU+jRLFC0w2hU4DibK792ULZz7SbEMIALs2kMpTAM08agrPObdWphJL Jqg9ct8l0gZT
muDlqjfcD0kOBShHCd9bZ7hwMXWmgjOb59vgr3CV4fkCOH7hF9pH54zcV66t wu+U5LoG86Qr
dcB+Ybe215gX7rg/IP+y546xBJVgryk7F8quK7259jAdKGpTlWC8EBtTvKVj CruZd6UPkN9m
3jukYMDPTuAoz9qQsyrL1sDBOIyFX8FK1NsWIrRyXCqvO7TwD6PwoPNC8OgH UEsHCG53y1hz
AQAAXAMAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAIAAAAEVNRjItNU0y VGVzdC9tb2Rl
bC9ybW9mLmdlbm1vZGVstVRda9swFH0v9D8YjT3Wygwbw8QpI45HYQmh7WBv Q5GvHVF9TZLz
8e8n+SONu4TBYH4wjnXOufece+Pp/UHwaAfGMiUz9CGeoAgkVSWTdYa+Pxd3 n9H97PZmWoMU
qgSefgW5DA/RQbD0REw88fYm8pfXkzb1hxnaOqdTjPf7faxEHStT4x/LB9RD gCoDIxBQzrSF
FgiiwslkkuBFgI20h1b+zh16RVFLyJkB6pQ5ZggvlkVy93GZPIN12BraV2hx a97UTD7kGQqo
nz2qF1kR4bt+FKpCERNaGQcmQH3hUxO+gXg4i+HMQAXENQZy4FAT1yaXHyUR jKKIKqE5I5LC
N9gFd5/CMKjSR8PqrSsY8NJmqCLcApoFvWnllVndeZxVjEOK5ynOFW0ESGff JxMiS39/Auf8
QC3magM4B/vilMbGe+i6m+KRUqvtU14T+kJqsJE2ULHD4LpkVitLNhzWRu1Y CaYgfazONOAX
KGj25Ay9lnmHu7479Tkn1npxJlpY56vjtkdjJl5wCKYQ/neJMLpy0OllOqGi m4uNqPFPMN8y
Xo71ekSG2l/p4otzhm0aB9HVEtgPFk79/s9CvxrCWcWgXJ1XnOLXiC6EdjWm fnIXk75K6v5n
l71qozQY5/djpaT3SYNrA3LYl1EWZyv0NopHqMDT6Jso2tJY98t63X77Ytjp 8E3Df3zU/Nvf
UEsHCDjmjP4NAgAAEgUAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAHgAA AEVNRjItNU0y
VGVzdC9wbHVnaW4ucHJvcGVydGllc1WLOwoCMRQA+0Du8MAtJT8R1qB2FhZa eIPVPGMg8YW4
btbb66KN5cwwnM1gfaH8KsHf+i2fUP7xpJq9s5Dj04e7yIUylj7gYz6AFhqM Uq1UK7lQoFpr
jF1qiHRG2I0ZGs44+57HLiFs4JToCgdyGD+h0BAcll+qtQocu5QjCiqeszdQ SwcIsJi1IIIA
AACeAAAAUEsDBBQACAAIAJdwPjkAAAAAAAAAAAAAAAAXAAAARU1GMi01TTJU ZXN0L3BsdWdp
bi54bWxVT8FOhDAQvZPwD2OzR2kLGxMkFE6aeDAxRs8GYZZtLG1T2A3+vYXi 6vYwnTfz5s2b
sp4HBWd0ozRakJRyAqhb00ndC/L+9pjkpK7iqKyxVdKO+Mfde+7S8s2bJIkj KFtjv53sj1O1
IPYf+sLuqSvAqlMvNfVLb8+Q0hQyznPG79meA8+LLCvuUlDmE+FhtrCLoyQJ K8JgUAIocZ5Q
Lz7AGqknQYzr6WaR4nDwuXFIe9Tomgm7D9u0X02PpFrnF4mt8ovDOzkpyHGa bMEYc4M5rCGo
kWtqq5pxFGTtv/rwsm24ZnkHz6ZDJciwfEHOF1dEWLBTsss94Vp2OfcHUEsH CJuVQTT9AAAA
oQEAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAIAAAAEVNRjItNU0yVGVz dC9zcmMvcm1v
Zi9Nb2RlbC5qYXZhjVNNb9QwFDwnUv7Do1TadkXsO4RoOfRQCQSquFde5yVr 6tiR7QCrqv8d
f8RsKrQrLpE/3ps3npnQ7bYqYQsN19PRiOHg2rSnrw/i4fV9dx0WtConxp/Y gGBG3X+oyqoU
46SNA20GglyKySLBsSdcj6NWZHZCkrvPwrpLxci1QXL3df8DeSqkmd6buoY9 DkLVs0VTd5pD
XSeqn8DgZNCicswJrUD34A4Io+5Qgo5gsGlwbJt9+yUcNnTfNtQfbMgJHVX3 D3a6ndKc7x6z
11LqX0IN0CNzs58KzCDYeQoPwu596phlagFopGifd1KopygVifPfDui+JQEt BGJ5E0m9NNQ3
LS5kpIZOJ0Y7i0l58uA/S3MAjeg3t6kovj8tB1RomOeX3Zv3UnAQyqHpGUeI jYC/nVfBwuIA
PFdlER0oPMgD+vcqG6X9yeSMWecs7ekRWV3g2nsi1Oit8Sb1aFD5YdLHgCTQ oGnYxkpfleQM
wMcJYS3cgv6yNJ4NRJEdC4v7JQnIVPBsTfiV5JeYgrBq4wlKZOZdgvUgnqVB JuUR7EHPsvNc
fOASdwYdWm7EFNMYagnJtGmmdiZz4WpnotRnlP5v4svIy2F5zHAhNcXf2Kxh P145M+PVcr2K
UhGzVMTfulmb1MIq4De38U9+AUpTzKryD1BLBwi8guzM8wEAAHUEAABQSwME FAAIAAgAl3A+
OQAAAAAAAAAAAAAAACcAAABFTUYyLTVNMlRlc3Qvc3JjL3Jtb2YvTmFtZWRF bGVtZW50Lmph
dmGdk09vnDAQxc8g8R2mSaT9o4LvDV1tDznk0lZJ75WBgXVjbDo2SaMo373G hl22zaZKL8h4
PG8e72fYep3EsIa81N0jiWZnN+GdHW/4zYvr6mJYsCTueHnHGwRqdX2ZxEks 2k6TBU1NhqUU
ncEM29qtNWF29aX4gaX1B9k08V2aQoGNUGlvkNJKl5CmYfonIOwIDSrLrdAK dA12h9DqCiVo
LwaLHNtNXmw+8xYruJLYuuM5KzY5c4VFdpiCqvprRqh2Yd43p11rKfWDUA3U yG3vpgMnBNN3
w4dh9SF09DK0AORSbJ62Uqg7n0LmfYw2zhu0wzsMHoeF9/ScM9cz5jsJ5aw7 GNoaDJlmN+7x
NYQ8iU3iy1U4G9LghbHES/vxzFKPZ6HUoELizvWEqy+kKEEoi1TzEmGuB/jL uogMjJjgKYkj
jylyWjfowlDG53/PZY8TjHn+h9iBW0ui6C1mof8k52gCMCyuR8DI1YBgPmIf 30wbhFELC6VE
Tu+DgjvvcBFyKR/B7HQvKzfWXRnyjjlUaEoSnb9Pw9ksmxyyycWJ2zKUtuRz OBHDSx5HdY/0
3ASEy1tXVM1qVvoX7e++b+oIzAl/9oKw2jOP/oAeeepRmAaj4nLlf8AD2lu0 L3F946V+K/JX
Mu448XZ0M1hR+PA/Ye+/92Qw91pUcMwkDAoRPQNjR79IEv8GUEsHCCEXXWII AgAAKQUAAFBL
AwQUAAgACACXcD45AAAAAAAAAAAAAAAAIgAAAEVNRjItNU0yVGVzdC9zcmMv cm1vZi9QYWNr
YWdlLmphdmFlUMFKxDAUvAfyD29xYbWQ5gMsRQ972IuKf5Am02y0SUqaBUX8 d2vTKuIlTIZ5
M2+erCrOqKJGx/E9OXvObfnLv8RC7k9m/w0kZ6PSr8qCko/9LWecOT/GlCkm W0MPbpxQw/cz
jgn18bF7gc6LkDO5Ze6EoA7WBXGZkISJmoQo+feUMCZMCFllFwPFnvIZ5KPB QHGxo0MD3zZd
+1SWaWTXNnKmDvWvP4L55/5T6G5CqVA/z89qc2WRV3h9U2RLaoEWAUllmO0Q l25wmlzISL3S
oHWU8Jbn7IkelIc5DvBzFfrg7JOk3EScfQFQSwcIWEVmQeoAAACAAQAAUEsD BBQACAAIAJdw
PjkAAAAAAAAAAAAAAAAmAAAARU1GMi01TTJUZXN0L3NyYy9ybW9mL1Jtb2ZG YWN0b3J5Lmph
dmG9k11OwzAMx59bqXcw0iRgUtsDUCYQGlIfmNDYBdLU7QJtUiUZMCHuTpqk Yp8PA8RLZSeO
/f/ZbjoeRyGMIaOiW0tWL/XE+en2gT0c5eWoN9Io7Ah9ITWCbEV1FYVRyNpO SA1C1gnShnUK
E2wrYwuJyfSeUC3k2kamQ8mzOIYCa8bjlUIZl4JCHLvyiyVCVkz8sywtJlAJ Cdoct6LEJrFR
uYZOildWogICVCLR5h71UpQ2HAldAhc8JoXS0uQC2hClQFS7mawW5OW+khuF jjKZm8+jw3Y3
NXKUpmQ59GRVNIwC4xplRShC/8IjAL5rk1/B0Ar4iMLAtiLwvIrxukEtuMmg NOEmgRdauSeJ
iz3at+A4SLCjN7CCgy2B+expcTu7m8K14zUTbZKNiLz3GWf64tLO8Vv9HPVK 8n4GHN9AFM9o
Wm20u26fZ9hOfOOy1NjnvwWRtt6p5Q7wW04f6/fHez9hfOj36b8I94sd4LNB HszaR7H6NRv+
abXq+n8ZSyjW5oKpv1pAT3VKrSNLO8ysRr3herpPSNONvY3CL1BLBwiSBvr8 nQEAAOUEAABQ
SwMEFAAIAAgAl3A+OQAAAAAAAAAAAAAAACYAAABFTUYyLTVNMlRlc3Qvc3Jj L3Jtb2YvUm1v
ZlBhY2thZ2UuamF2Yc1Y227jNhB9tgH/wzRdILtpbbV9bLxBjERZGE28gZ0A fRNkaeyokSWD
pIEGi/x7SUqUqLsUX9AXQyJpzcyZMxeOcXEx6MMFjJ1w+0a89Qu7it6N7IJc /DR1P4kHY9Df
2s6rvUYgm3B1OegP+t5mGxIGIVmP0PG9LcURblb8OSQ4MieMEW+5Y3jZdPLG tyltPPUYiW88
N8cVEgwclDoaytifhkNY4toLhjuKZOiGDgyHkeFPLwjj5VUsYGwsr2AVEmB8 eRO66I/kqSkD
JwyY7QUUbMdBSkNC04PIbAiX/6DDKLAQCG4JUgxYJH3nR6IAxr53hbbzAo6w +texwd/zWyu0
2Y4ghCtoOorBblPYsQM3+qNrc63Y2xbTE2ND6SIhwcAtAnJNMXLzaM5/7myH heQt2pGAwKsX
uF/PYkKcRTtrDJDYDF1Fl93S9xzwAoZkZTsI4lsxxoD/Mi6ZgvIq/Bj0e9JX vdghim2BvcFR
tFzpw161Nb2caj2pW2/BuRmsAWeTBxO+wpkw9kwSploLuhVWPM+nR1RnYfHv C4VeGNv+aRiG
UEz+RPRup+ORMVtYj3Pzbvp3HXCUH/WRhQEnAGU2D0fBZpaqe3j9MvyazhZP k9mNcK5Ej+cM
f6SdmIp3L/DY5y8l2mvRDJ6bBPn5j2vfC161L8440q7p44ZHuvgkjHFzJRch Xh0bfOX9PIrh
fY1O4rJUeOmhnM0/r5Hp//v8pRJPHrkg4uPWMu/NB3P2xLH8rQQsla10oAQM PKUKSSKfShDO
wVYl4bDOh+uQuDzn16huWXGklxnAU+gSieAnZWTncGNsX1lFFW3Pyz17IMd2 N+jOnDw9z03r
5vuz9Mzv+9BYI4hkcFIKj8ZdTWJb2savDYx9nNz8NflmViDyP+VqrHTC0hLu 7sVb3Z8nZKwy
K8/VOib/UhqirZn8IPqThMfy7YgsTqS15bD8QwODH77fmvccpT+68TeWRDUO x/2qSFa8IY3b
YvA9yk7hfWmHZcUkWOydfFNnnpDCkRHlyVY3ZY5cYX4zyN0FpJekslmu6iW4 smfY1z4idapT
qaKmjfJ01tWt5G50j4NCg3HZHimxliTeasRUE5Mgd3zAcpplBNfjpZRNol6c 6tCGpRfpPLRW
9NkO+JYwUXXMxbJ/GvplSlMByHi3BeeS7mA/OGSSKdSO00ChJbgCEHKvBQxx gekYc9WFogQd
rRejOm3oaaKwTteCNhVA6iYU4rKpRqcTpgRwK/1YDfKraJDCn20GDuE1DqMN dUVO6p0aOx0K
x49Jrrhjx/MgYbz2WrC8Vu9bXHkBl+p7jEvwq+ZoQl1tktZLRmm9mllabq92 mJY7q0/T0q3K
cVovnad1H1ekg7F7BYIYgsUAljW+MViHHUfUu6rOrHYTiQ+OJAqgxaipVJcf TCQDn1FF/9EF
14YboaLUAeArtTAt+OUzjEpbMw3BXkRqOxA4KHuyM4HuQ4EmzqSjgQyCuc5h L9zaXD8Pipl+
A+16BW3CS11EM2hlGowPBFWna+qxIy2t5MXLatHqQpV/F7/vYBgazIP+f1BL BwgQ/eE3jAQA
AGAbAABQSwMEFAAIAAgAl3A+OQAAAAAAAAAAAAAAACkAAABFTUYyLTVNMlRl c3Qvc3JjL3Jt
b2YvaW1wbC9Nb2RlbEltcGwuamF2YcVWXU/bMBR9TqX+B29DIkU02TNEhap0 UzU2ELDtEbnO
bevh2JHtlFUT/322k+arLeyBlZckdu71PT7nXCfh0VG3g45QRES6knS+0IN8 HDYn3OTBJD6w
D2G3k2LygOeAZCJmAU1SdtrtdDvmQUiNfuElDjJNWTASjAHRVPD6eyHnARBG UwUBJLOAiCQR
POBC09kq+GZvlGCbNVpg+i+prtj4kir9XDAQISEYjxhW6vSFqAnXIDlm46vp L7ODl5e1JARF
9KRFyPYMB7qs0wbvmP0qYmCnzbkbc7nO6Xfx4VrCd/0+msKc8n6mQPZjQVC/ n8s55MjigwS4
dsQiMUN6ASixBZBwqNFhBMkgmg5c1SicDqLQTBwG1fLA483FozS/35n1ZkZw 8Uj5HM0A60yC
QlhCVRzikzwnY3kSQhGjgz/njPKHyk35xi2NH+agi90qZPGtBw7bUxSa7MKx 6yWjMK08ez4H
DhKbwmvnZlNGCSLWBKgsg+C3NptTqKZghboIRH+6Hc/R7T3Ht7ebLa+FyHOQ vFQKbYpCXAHy
e66ap7IUpN8zSntPVu3/Uv/8aglS0hgaWPJGQXBrLUPcYI1KgtGWo5oVg0tq jIyZCr5eXYwv
3wIv5XoN9lNuvpHIuG5h/vifod1maWpsr35iyU0fKP99xskCyAPE73sWb+4/ 1++RM3zB4ADV
rN4C7W8J78HFiuOEks+g/boSToD7++vh6Mvw8/j2+BmZ6lFaZpBf9+m2nI2N Mx/BhJsoBTeQ
iCX4reMYCXN4yTGPj53qxVkzuTjeslKi5mrdTI9UkwXyy/hi3iNYAXqGwxMX VarhN07t6GzQ
a0jXC6ZYUVJAr6A6JJZbS265muvwoLXfKqm2tzJ/r9oUjIO1WYvsqRAMMEfG 74ItoZqw37e7
VQqvy3uD5F08Wpg1iCW0EtIb9/8WhpeCxubk2uS3oJ7D4w/Mstdis0FjQIxg xQdm4x2O4yFj
vl/9xkVn5ZeyeRiVGE/rklUiFercNtVpZO3V1Tnn37lqs74Hkndwk4OpCu6d k3X3wkRtmPF1
O/ldkx6qxkmqV7ubOge0hZonFIblP1O38xdQSwcI1fEUOi4DAADPDAAAUEsD BBQACAAIAJdw
PjkAAAAAAAAAAAAAAAAwAAAARU1GMi01TTJUZXN0L3NyYy9ybW9mL2ltcGwv TmFtZWRFbGVt
ZW50SW1wbC5qYXZhxZVdT9swFIavW6n/4aAhtSCa3EPWFa3ZVInBtJbdVk5y WjycOHOcMoT4
7/NXvsoQ00TZTRt/nvd9zrHtHx8P+nAMQczze0E3N3Ji2363w3QezpND/eEP +jmJb8kGQaR8
7dE0Z2eD/qCvPriQwMXGw5jRvEAP07X65gK98CMjRfHyPL2bF15FPzCW852d TbhLkmISMkwx
k2fdoW/q56uVZpb5lb2D8Rgi3NBsXBYoxgmPYTy2Vs8z0CHNdkRSngFfg7xB SHmCDLgRAsMA
00kQTUxwcNEDP5oEvhoYek0YzJKnQYLc/i/VvmvOGL+j2QbWSGQpsAAisBGB yaldUzK7CCBg
dPIwZTS7bYh3OGhQ7zYodR9oqfrDSHsMfLXYJbXaMfDzJq3TDWYoiIpbJbeM GI2BRIUURHmP
deJgNxzgL6m8FtDKVWOiOx8eBv2eSUbPQUhwTUomYUtYiRXxofNYORkd7XgZ ApFS0KiU6Nm9
ns1s7/l86KFpgdiK4zpbJEybiwSFaykwvVxwqayqCih0rcSwphlhsFCaVDov z7+Eq3AWfjq/
vljCe8hKZqu3sf7PcrvKulp2M6Owad69osxRjI6UhN7j3mRMr7YoBE2wI8ke dsCFwWQalSqB
quYzaB1V74JKtSsrPE1wtgovwi/h5bLRvT+GttJd/pqqawsd2dEjnN1nJKXx Z5SjtviO5tVK
N0/+wl01U4oS7e+eE+W8bjlV1eucOuMZ3umm810ZXbyu0SrIG5ajdWyvJ0Cd OKruInfrzmcn
EHHOkGSg7mDOtth06JdoeZ9XSIo7KuMbGNVLXX8vJgXCC5BOzcyqnOoi0xw0 iHrEHFfPyGxJ
rKXVkt4coCkZXDzF58iqzH7X1/grwqoKtDp8dYizNswGoWO36LLrrPoPyK6z YhfaHhh1np0X
AFlFTdQ3B1MdMJwXTwrq9Q/bzotsn2T40LrpD1zfKRx0Jnv4s1RX2aie+ex5 tUb+gPQRfH/3
aR70fwNQSwcI+WM1VO0CAAByCwAAUEsDBBQACAAIAJdwPjkAAAAAAAAAAAAA AAArAAAARU1G
Mi01TTJUZXN0L3NyYy9ybW9mL2ltcGwvUGFja2FnZUltcGwuamF2YbWS72qD MBTFPyv4DndQ
6B8weYCJtBQZZWMt2xNocmuzqQlJHBuj774YtWs3tn3aF0mu8ZzfOYYuFlEI C0iYVG9alAeb
9nt6OfDDyYZPugWNQpWz57xE0LXcE1Gr6joKo9AtpLYgdUmQVUIZJFjv3Vpq JNm6yo35+1yn
RrJt8YTMbnrl4bw3e3CPXe/uteiY4CqOocBSNHFrUMdcMojjPs2qgU4Va2xs boVsQO7BHhBq
ybEC6b1gmmCdJkU6qCe0SBPqRlPyaYAN/y6fqLE09VnWssQGdW6Rj5W1RSUY sK4FGDy6fICv
1skauM9r5FlP6V+cmE0fffgI3qMw8LGD33IHPzMHX/gCDxgoLa0rAvk53mzu /QLTKtSzues8
OHa9/wvBcvuCWguOFzT9zQF87H4e85uRSqNtdQNnl4LcCetUK0N2q/Xt6iY7 EUfhESg9ixaF
H1BLBwiyoa7rUwEAAP8CAABQSwMEFAAIAAgAl3A+OQAAAAAAAAAAAAAAAC8A AABFTUYyLTVN
MlRlc3Qvc3JjL3Jtb2YvaW1wbC9SbW9mRmFjdG9yeUltcGwuamF2YbVVyW7b MBA9y4D/YWIE
iJzC0j1OghiOWhhtFqS5FzQ1ktlqA0VlQZF/LzdZlOwgPcQXistw5s28x1F4 ejoewSmc07J6
5SzdiEuzDvsbevN4FR+rSTgeVYT+ISkCz8skYHmVzcej8UhOSi6g5GmANGNV jQHmiZyXHINo
mZG6nn9kdbf+jVR8aHZvAHwcVoELoq+EipK/rv4LaZU1KSuCSC3u9dy9o1O+ KWPM5v29BznY
OHtOXMBhW/Wj2QzWKAPMmhr5LC4pzGaGgUUBCjrmWAgiWFlAmYDYIOQqNJyv L22s83B9GXTu
sIh3nV2lWCAnAuOWv2adMQpUUQIOcFUgwBchvdTgVq0D07OHv+ORp9PxZJgl Rxmj1jBjTEiT
CUisYT+ZwFx4twDe++l4g3w8nZBnM6qVf9qDyAom/KlG6gkL2fNcC4nXXV6A 7yynrdaCBwm0
lh6C1e3Px8XtMgpSFG2R/MlGiOosDENFuR6MnCbTOeiILAF/EOnoAoomyyw4 z+MoGl4M8Mz1
2Zsa9UCJoBvwoxeKlRYGtrPWj6PcDmtWpn5nOd+6szELfB4KwddWb0qxuxwT qc9CVrug2CrT
Un0wbnfgmXTrpkK+F+snQri6e0LOWYwdHNuqgOqK+Ka/AepPC+2Zaa7MppKL nrCEIV9d+9OW
MEpqBKdLBPeL5ffFt+gMLDsmhj01ue65dXN3Hf0Y3NGdqr1hH+WZUZvY8PJZ E7/KMkxJtuBp
o57oVlr+5FHyarrEyQS+QJfILcklELk1OQFWQ1EKIPBEMhYbe53jpNPZ4aix dOgXZysxrJcp
s13qdmZ/YL/kY1cFcI5srWwRW7vDqsumoLnq82aQ64XGbbq/Ab3d7UPO7b/p 8Hgd7YGUhLNs
gVtIvnM0VU2zp+TPwhljxZFuge59xteuze4/w8lmfybuc8O2t26TeIMwHHSp 8egfUEsHCJ0J
8pjGAgAAZAkAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAALwAAAEVNRjIt NU0yVGVzdC9z
cmMvcm1vZi9pbXBsL1Jtb2ZQYWNrYWdlSW1wbC5qYXZhzVhtb9s2EP5sA/kP 17RA7UKW269N
m1V1lE5YYme2U/SbQUu0zVWWDJFO6hb57zu+SKJkOenWNSsQBCZ1PD48Pvfw yP6LF0dteAFv
wnSzy9hyJU51u1/tUJ3PguiZ/NE/am9I+JksKWTrdOGy9SY+OWoftfFHmglI s6VLw5htOHXp
eoG/04y6vidExuZbQU8eshzEhPMHra40hgftxnRBM5qE9GGMciWF46C2LLXW yzSi8Um1b0jW
NPJjuqaJqH0a479zEoo02zV8KVdw1O7nO/Gk14M5XbKkt+U060VpCL2e3hUv AYlQTUQESxNI
FyBWFNYSFbyZnxqPb/rzU7d0R5No39m7JU1oRgSN8j3dzmMWQiiDDxY8GQeg XwR64WAHpwRT
sYdvR+2WWk7rvvW0DqNr1eC1FL7WJmM32AGaH5BYYTddbyHZxnrTHgOByYL/ Z3K15/dNPcgo
mnMgyJqEC4IZcB9fHMgQJheYKxHcMrHSXr69i1ny+YEcdMdqaLaDvZ47mO/U nCZY2muuH9fj
AG5IvKWuicjmdJgK+lqNwCkyGgq4JeghhVCtx/YFjMMNI6qLy4wItZeFzjhY U7FKo3wJT1nC
BMh/ne6dA7crFq6AxDyFDc0WabbmerS0YCRmXyspZqZ0MBIYKLHNEq76raDl JsbNAtKE4gQI
O9phAqEZd3+QFZzS790Ka0RdcJ7S4WSGobdMnuq4PEi+mi50uirbW3yLMewY tw5YsufSYDiZ
esOB30V+tu5+enpoIsA8TWMqqc8DXBnuzlukRcxpc5KU5MefJIlKElC9zdVc AaQLdjPDGJVO
epz8QJIdpDgo47DdIIM005B7Ed1IEXUBJko69WjdiwcUk8ma4QpwAXzBEDOm TkhiZO9SzZYT
Gn1ib3W0yOnHMZ6IgkKUynEIBofiD4qLx5mnlp8IQ0abWS/XwRKMR4P/iMm0 jHcOWmBvhlio
QSN1Q0Mt8oUJTuNFmd+jRcVARxtPkMpsMhaOXGQ5q4qi9rIiNxSSVMCOClwt Tews1HLDslJb
dFQXLOPCiIhmjZq6HKmCQ8sJ5SD0lFhckLwAcZsiyeiGvza7TwXpaUVN539h ZLhmAYKvaod2
aRDku4T7Y8Bgw5rJAc6UYifF+Oe8aa41qmMmSxzUSO0J95YrqSeJomEZ+yC5 SUNL1koq3DKE
K0NKFgupuZLDBWyxIkIF3SA1kqYib0H+L8StSZp0xEz6DVLkCVYchVYV6qVR HDJrEAxd7xi9
sAsYrYVa2VDGO7mGdI3yQ8ey7u4pr5srnrukIv9qD3HNIrtajFr9PozmgiC3 kDfmmLO5aZ2d
rXphhhtsQ39bwSYtup3vBJiDKqoFpEh9tt/2D/gHnL2GhN7uHxv50i15FtmW lgHRwlyohCJ+
RATJeS/Nqmt3D/Ck9BkULCmysPDb4O8eUpU+L0n22UKHdQpLIhZK7Kj4IUme S4mCcEWSpSJf
fZZFRulXWrg0DKsa/eSTUyeCqSVxF+0LTZ4HBtd+0f042IrLYx3fTDZqIDul eXcfsOLpBNkW
ojGJz5EI24zipsoPnZc/u0ypBzvPmOoSKleLR0ak7rg1PNZt43HQFLf2AtHM RIrv7XZh27Vg
/hLbbBXCch1Ws74I61NXIje/A6PFnUeqnsuyeWAU8t66Wd8mmwsgq/Kp1Z15 3bzcEqz4Iima
pqTLyw9Z4WIFwsp6BZNZlYmqjPvRSuPgft2kLIID54hdD5jg5AXBiT7KypA1 nmXqZUVdyCNT
oi4MKaVd43OGhqKbnaF36Z/N/Av/0h9OFR9a5nshd519Lw5Uxs1mspmfNvUX jMp8V97gD+9D
YVt9cKhYXo7O/IsKoiIlO9YwB5ThbGY8Tx6d1IFVyh8gdipvZuad4d6ngOLm UvLf8Ly4F2iy
/6o8v6e+qde+JmY1vlejWeW8VWtZ1SvXhzeWh4aEuotf4Q2GfVFV49XYPw8+ Wd+wjOzsF8wm
p8RuQ9UdFKONF+7i80TeDNOtfLJUWnTAzIsiUG8X0oCrVyadpHvJoY8TaTqV pniMkCjqyCuU
u1cxHSg5rfTPE/8E0AukG7lLuPv6o40Tw4weTJo1JrfV54a679juPHYgmMy8 95Pp2BtMHXiC
rWA49cfn3sBX3z74Q3/sTVEj8lJ+NrjwJjo79fylwDSXXw6oV6i8pjVHL0uW 8tOxxI0w5Bul
A6/UXxNsiQxBDicB6pRufhxdeNPgQuMc/O4NP/jee9mUH6+HE386LdvBmTK7 HgZ/XpuuM38c
fPR1/2iMLf+suHmUca1stKOfy4pLhQmpaR9rv/82nLWJq9qoFCSfT7V+cDYz V6nFDaWUAzmH
i0I036nj/AGg2LuXDvRe1ZD+k12TzdHl1WgSTM0Gjf3J6OKjj1k/+hT4k/2N /f4NLUUBEyvd
ZiEtz6Ox6bGFRB88d9Dv126nR+2/AVBLBwhePJb1IQcAABcbAABQSwMEFAAI AAgAl3A+OQAA
AAAAAAAAAAAAADIAAABFTUYyLTVNMlRlc3Qvc3JjL3Jtb2YvdXRpbC9SbW9m QWRhcHRlckZh
Y3RvcnkuamF2Ye1Xy07jMBRdp1L/wSMhEZCafkBLxQgxEouBEbBg6yY3rYck jmx3OhXqv8/1
K3XSBwWGHZs2dex7zz3nPtzh+Xm/R87JOOX1SrDZXE3s72F7wSye3GQn+mHY 79U0faYzIKLk
ebJQrBj1e/0eK2suFOFilkBasFpCAmWepLwseZVUXLF8lXzPaK1AjI7cfqu/ mNl/5AncVHgv
P2iquFjd4NIhA5ByAcn13fQ3pCrcaOL7yTMoRu21W1pCdl1ACZXqvLrHj1+W H2Nq6Dn+NhiQ
KcxYNVhIEIOMp2QwsHw/zoGMpxOHmjjY4+F0QnIuiMLXpUaRmN03itSC/2EZ SEIrQt0pFDGD
SSqAKnh6etIa4m9SgprzzNgBms5JWlApCc+7Vg0+qLJtdJcSYCs2+2YGFQj0 l/nEWEwLljof
endbCAJ/FbqQZFsf8tLvRYaryBGSIlrILETiMi6xr/dyGe0PJOrgjQzgCJlU qDo6kooqxB7E
aH2HYm4QXhmejQCswqNVCp5UL0huo/sEzJblbX7jM0NjxHISh9jJxQWpFkXh Xkftd2HICdzc
Pjx+v726Humda/xYtwO/B7UQlSTLOSYW6ORk0odK8JHWNYKj0wKa3FWruiGH myI7hpNHbVhX
s6ky1IZXRDjnNteVWIBPcxaa1ziAOXhOxlPpkwjr3wANlbPHOlXxmjIWzX9h YofKl3d/QAis
8o3iU84L0LilE/wHF49oMr5z+M1XkAQuLpQ/lNyngcOvaWzUDo95ehCwa46d k3Hs153nBK50
6cdnyQzUtXOHWdkBsPHmDOW0kGa1k2y6D8glU9i31JwqgiZgZupOcUPiwaYn P7Nd6KJ5MNDG
rggnNka7SC50eBUsd230ddrSOPIq+zGQUgnhoInDH22tGyItE+FGZy0+M6Rb 1l/366Uzbd93
ikMu3Z73eTMjNjafB52YHW93kUFOF4W6Qk8+YQ+6cXt2OVrvHwNN23e17noU FVgKLi8/mo81
FbQk1mTY7rAYjHffTHxhh8PoVVTHtaBGNhO4p8hf0xw2R6uDEVRFknH7sOkc 7kRT/DvZJbqQ
wlCQ703PtteN05fLglXP2xc0MoZyYhaIWxkPcWV9evQUcgm0bxrp0Uokty1q qW8uFd61JCtw
DMwqvFuaJJcja5EpHEXoKF8UWji3g5o9epbosYTjhNnJtGRoO6W6o1B8UnNn DBlYLenq+Cml
TwYsetGbu13I2Gs3j3YS7Ow2rQzQBO3o7u+X13ckrax7/tJ0W9Pmrv4WObud /HOVtE1f62ie
vlTcVtEQ8zYN24PyYwpqeJ5mHeD/1ObDJB3JR3ei72dkTYbD7T9W/d4/UEsH CMSIyR3sAwAA
KxEAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAKgAAAEVNRjItNU0yVGVz dC9zcmMvcm1v
Zi91dGlsL1Jtb2ZTd2l0Y2guamF2Ye1YS0/jSBA+O1L+Q612JBxEnD2TkB0E 1gotMKMhB26j
jl2Je/BL7vagaMR/n+qHkzZ5sjugOXAA2d31/Orr6nIGx8fdDhzDKCrKRcXn iRyb90F7QS9+
uIo/qIdBt1Oy6IHNEaqsmAW15Omw2+l2eFYWlYRv7DvTi8E1F9LdKap5gFHK S4EBZjN6LioM
wouUCTHcJ/Vp+g2jljnt/aaIMR22125ZhnGYYoa5fLb1hf59NtFrU4MGgT/6 fZjinOf9WmDV
j4sI+n2DxiRBGE3Hd49cRsloMB3DrKhA0mqmnB8J4HmCFZcsjxASjhWromQR aOUrCaIuVQBC
q0QsTeHHx5TnD/BnXBijvs2uB8uVwiw8aSOyIBffiwfUJqhaMY4jJvD+/l6V it4gQ5kUsY4M
WZRApECFYraK80SbEpJVkudzIDeJ3mSRrFnaVjDetQLLYyirIkKMlVpdaoGN GWv5OqfSA4O8
yPt5TclWKOpUAhf0JOsqx9hE8phwipMbWKyQdS80BsGqMpjH63X5KBDXqmp2 5phTTBLjhrD1
NOWRzVFJ22JOxvCj2/E0Czxb6ojgw9hgBmVj1dtFEm97nN6zcDwdj0eISkKY /FBBJIXmpGBc
uyxdBXhRIdkRVBUqgTD4PwftV4dqsFuh5vc0aB6fge+GCmdnoCput732npth gFe3d5Pz24tw
qCSJ5OqvlScdE7GZ6TsobslX5Gi5JgwRwSHiELiEBcc0Vsxj0i7/X9yMPx3K jFdCrvG/IT9M
FxTUxsxUbwj21WECz7uGcrpsIBp6G8xScCUQoO62fu/E1Rq+F+CQAizPrFsD jacGUz+dwNaq
qPOylKNCFLlknJzQeaKT456W5gRtqqPRnqPUD3xGzffqckM99anyMBVojanb eGTUx4B3dYnV
ZFFSLzmDlt1wteUbSzYO/eg5mgEXYVbKBSXwt9n0YpwxAvuCcPVdAE6b/SYV 1ww59f/aksE7
Lf8TLXkuDQ6WIDtoae4N8F3xhoAqkFbjvj2/CS+/htfhTXg7ObVSnjtwQe6+ nIHvbvZW3g2z
vEmDwxkoZ66w71qyTNSHqNForpulhS3ss6q2FLbceu1pc5afzy/+Pf8nXOan h4zmJrMjwVeV
m7uxNzcr5zcGDkppDZQXaf8qQG4+XYbXSzj0zG1PFoGgX/dmr6XMvPCaoVu1 U2h65w4zG/rL
F9se2jMpnSasSrKoJuDVfAxsbRA7GmE21vUCW7DRgFaODmkjk4SGYfpYMXo0 FRb5sl0pcIZG
zCypSNaH7EdOzxRrxnPqEVvGwi2dqmQVy5rMlCZ9KVBn3jheum3tFWDSk/3q 62jnF2FvbR7q
7R+h1k5Vq4MVG2appgCvwRd7yt6Z8hKA3oQjTctuXQBvTQ/dOd/JcTg8b0IN c5+Zq/CtGWEj
/T04cQLTWlVaeTB50SApNUYU/OKRLX5H1myC8EW8OeA73Rk9mul7L1OeYDBY /dTS7fwEUEsH
CDQi6PRVBAAAoxUAAFBLAQIUABQACAAIAJdwPjn0pbHS0AAAAHgBAAAXAAAA AAAAAAAAAAAA
AAAAAABFTUYyLTVNMlRlc3QvLmNsYXNzcGF0aFBLAQIUABQACAAIAJdwPjk8 J1T27QAAAKEC
AAAVAAAAAAAAAAAAAAAAABUBAABFTUYyLTVNMlRlc3QvLnByb2plY3RQSwEC FAAUAAgACACX
cD45NuTCcQkBAAC+AQAAIQAAAAAAAAAAAAAAAABFAgAARU1GMi01TTJUZXN0 L01FVEEtSU5G
L01BTklGRVNULk1GUEsBAhQAFAAIAAgAl3A+OdEseg/CAAAADwEAACEAAAAA AAAAAAAAAAAA
nQMAAEVNRjItNU0yVGVzdC9iaW4vcm1vZi9Nb2RlbC5jbGFzc1BLAQIUABQA CAAIAJdwPjmw
aRcmqgAAAOYAAAAoAAAAAAAAAAAAAAAAAK4EAABFTUYyLTVNMlRlc3QvYmlu L3Jtb2YvTmFt
ZWRFbGVtZW50LmNsYXNzUEsBAhQAFAAIAAgAl3A+ORiljvZuAAAAfQAAACMA AAAAAAAAAAAA
AAAArgUAAEVNRjItNU0yVGVzdC9iaW4vcm1vZi9QYWNrYWdlLmNsYXNzUEsB AhQAFAAIAAgA
l3A+OY0PcHFJAQAABgIAACcAAAAAAAAAAAAAAAAAbQYAAEVNRjItNU0yVGVz dC9iaW4vcm1v
Zi9SbW9mRmFjdG9yeS5jbGFzc1BLAQIUABQACAAIAJdwPjnMwMyRCwIAAKAD AAAwAAAAAAAA
AAAAAAAAAAsIAABFTUYyLTVNMlRlc3QvYmluL3Jtb2YvUm1vZlBhY2thZ2Uk TGl0ZXJhbHMu
Y2xhc3NQSwECFAAUAAgACACXcD45QA0a/HUCAADPBAAAJwAAAAAAAAAAAAAA AAB0CgAARU1G
Mi01TTJUZXN0L2Jpbi9ybW9mL1Jtb2ZQYWNrYWdlLmNsYXNzUEsBAhQAFAAI AAgAl3A+OcKU
R0S+BAAAFAoAACoAAAAAAAAAAAAAAAAAPg0AAEVNRjItNU0yVGVzdC9iaW4v cm1vZi9pbXBs
L01vZGVsSW1wbC5jbGFzc1BLAQIUABQACAAIAJdwPjlKCmTUEAQAAB0IAAAx AAAAAAAAAAAA
AAAAAFQSAABFTUYyLTVNMlRlc3QvYmluL3Jtb2YvaW1wbC9OYW1lZEVsZW1l bnRJbXBsLmNs
YXNzUEsBAhQAFAAIAAgAl3A+OcVKYPxfAQAAOgIAACwAAAAAAAAAAAAAAAAA wxYAAEVNRjIt
NU0yVGVzdC9iaW4vcm1vZi9pbXBsL1BhY2thZ2VJbXBsLmNsYXNzUEsBAhQA FAAIAAgAl3A+
OTbpmheLBAAAnAkAADAAAAAAAAAAAAAAAAAAfBgAAEVNRjItNU0yVGVzdC9i aW4vcm1vZi9p
bXBsL1Jtb2ZGYWN0b3J5SW1wbC5jbGFzc1BLAQIUABQACAAIAJdwPjl2+JFO 3gYAADEQAAAw
AAAAAAAAAAAAAAAAAGUdAABFTUYyLTVNMlRlc3QvYmluL3Jtb2YvaW1wbC9S bW9mUGFja2Fn
ZUltcGwuY2xhc3NQSwECFAAUAAgACACXcD45OMg/L7oCAABiBwAANQAAAAAA AAAAAAAAAACh
JAAARU1GMi01TTJUZXN0L2Jpbi9ybW9mL3V0aWwvUm1vZkFkYXB0ZXJGYWN0 b3J5JDEuY2xh
c3NQSwECFAAUAAgACACXcD45dv6S/0MDAAB0BwAAMwAAAAAAAAAAAAAAAAC+ JwAARU1GMi01
TTJUZXN0L2Jpbi9ybW9mL3V0aWwvUm1vZkFkYXB0ZXJGYWN0b3J5LmNsYXNz UEsBAhQAFAAI
AAgAl3A+OVYboxsIBQAAIQwAACsAAAAAAAAAAAAAAAAAYisAAEVNRjItNU0y VGVzdC9iaW4v
cm1vZi91dGlsL1Jtb2ZTd2l0Y2guY2xhc3NQSwECFAAUAAgACACXcD45rL5w e7MAAAAmAQAA
HQAAAAAAAAAAAAAAAADDMAAARU1GMi01TTJUZXN0L2J1aWxkLnByb3BlcnRp ZXNQSwECFAAU
AAgACACXcD45bnfLWHMBAABcAwAAHQAAAAAAAAAAAAAAAADBMQAARU1GMi01 TTJUZXN0L21v
ZGVsL3Jtb2YuZWNvcmVQSwECFAAUAAgACACXcD45OOaM/g0CAAASBQAAIAAA AAAAAAAAAAAA
AAB/MwAARU1GMi01TTJUZXN0L21vZGVsL3Jtb2YuZ2VubW9kZWxQSwECFAAU AAgACACXcD45
sJi1IIIAAACeAAAAHgAAAAAAAAAAAAAAAADaNQAARU1GMi01TTJUZXN0L3Bs dWdpbi5wcm9w
ZXJ0aWVzUEsBAhQAFAAIAAgAl3A+OZuVQTT9AAAAoQEAABcAAAAAAAAAAAAA AAAAqDYAAEVN
RjItNU0yVGVzdC9wbHVnaW4ueG1sUEsBAhQAFAAIAAgAl3A+ObyC7MzzAQAA dQQAACAAAAAA
AAAAAAAAAAAA6jcAAEVNRjItNU0yVGVzdC9zcmMvcm1vZi9Nb2RlbC5qYXZh UEsBAhQAFAAI
AAgAl3A+OSEXXWIIAgAAKQUAACcAAAAAAAAAAAAAAAAAKzoAAEVNRjItNU0y VGVzdC9zcmMv
cm1vZi9OYW1lZEVsZW1lbnQuamF2YVBLAQIUABQACAAIAJdwPjlYRWZB6gAA AIABAAAiAAAA
AAAAAAAAAAAAAIg8AABFTUYyLTVNMlRlc3Qvc3JjL3Jtb2YvUGFja2FnZS5q YXZhUEsBAhQA
FAAIAAgAl3A+OZIG+vydAQAA5QQAACYAAAAAAAAAAAAAAAAAwj0AAEVNRjIt NU0yVGVzdC9z
cmMvcm1vZi9SbW9mRmFjdG9yeS5qYXZhUEsBAhQAFAAIAAgAl3A+ORD94TeM BAAAYBsAACYA
AAAAAAAAAAAAAAAAsz8AAEVNRjItNU0yVGVzdC9zcmMvcm1vZi9SbW9mUGFj a2FnZS5qYXZh
UEsBAhQAFAAIAAgAl3A+OdXxFDouAwAAzwwAACkAAAAAAAAAAAAAAAAAk0QA AEVNRjItNU0y
VGVzdC9zcmMvcm1vZi9pbXBsL01vZGVsSW1wbC5qYXZhUEsBAhQAFAAIAAgA l3A+OfljNVTt
AgAAcgsAADAAAAAAAAAAAAAAAAAAGEgAAEVNRjItNU0yVGVzdC9zcmMvcm1v Zi9pbXBsL05h
bWVkRWxlbWVudEltcGwuamF2YVBLAQIUABQACAAIAJdwPjmyoa7rUwEAAP8C AAArAAAAAAAA
AAAAAAAAAGNLAABFTUYyLTVNMlRlc3Qvc3JjL3Jtb2YvaW1wbC9QYWNrYWdl SW1wbC5qYXZh
UEsBAhQAFAAIAAgAl3A+OZ0J8pjGAgAAZAkAAC8AAAAAAAAAAAAAAAAAD00A AEVNRjItNU0y
VGVzdC9zcmMvcm1vZi9pbXBsL1Jtb2ZGYWN0b3J5SW1wbC5qYXZhUEsBAhQA FAAIAAgAl3A+
OV48lvUhBwAAFxsAAC8AAAAAAAAAAAAAAAAAMlAAAEVNRjItNU0yVGVzdC9z cmMvcm1vZi9p
bXBsL1Jtb2ZQYWNrYWdlSW1wbC5qYXZhUEsBAhQAFAAIAAgAl3A+OcSIyR3s AwAAKxEAADIA
AAAAAAAAAAAAAAAAsFcAAEVNRjItNU0yVGVzdC9zcmMvcm1vZi91dGlsL1Jt b2ZBZGFwdGVy
RmFjdG9yeS5qYXZhUEsBAhQAFAAIAAgAl3A+OTQi6PRVBAAAoxUAACoAAAAA AAAAAAAAAAAA
/FsAAEVNRjItNU0yVGVzdC9zcmMvcm1vZi91dGlsL1Jtb2ZTd2l0Y2guamF2 YVBLBQYAAAAA
IgAiAE8LAACpYAAAAAA=
--------------070402060800000709000402--
|
|
|
Re: Previously "Re: CDO: Reflective Feature Delegation required - but how to invoke not generat [message #423424 is a reply to message #423423] |
Tue, 30 September 2008 12:52 |
Ed Merks Messages: 33216 Registered: July 2009 |
Senior Member |
|
|
This is a multi-part message in MIME format.
--------------030706040904050707040707
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Ralf,
I was able to get the following to work in the generated RmofExample
Resource resource =
resourceSet.createResource(URI.createURI("http:///My.rmof"));
rmof.Package root = RmofFactory.eINSTANCE.createPackage();
root.setName("foo");
root.setQualifiedName("a.b.foo");
resource.getContents().add(root);
resource.save(System.out, null)
I've attached the generated result.
Ralf Buschermoehle wrote:
> Ed,
>
> see comments below.
>
> Ed Merks wrote:
>
>> Yep, it's a bug in the template guard for generating the
>> eStaticFeatureCount method:
>
> [...]
>
>> (Note the missing ! on the guard.) Please open a bugzilla and I'll
>> commit the fix for it today which so it should be in today's I-build...
>
> Done.
>
>> As a workaround, delete the eStaticFeatureCount method from non-root
>> model Impl classes.
>
> Hm, just tried but still get errors (see modified, attached file). The
> log says ...
>
> !SESSION 2008-09-30 14:03:24.281
> -----------------------------------------------
> eclipse.buildId=I20080918-0100
> java.version=1.6.0_07
> java.vendor=Sun Microsystems Inc.
> BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
> Framework arguments: -product org.eclipse.sdk.ide
> Command-line arguments: -product org.eclipse.sdk.ide -data
> C:\Users\lobe\workspaceM2/../runtime-EclipseApplication -dev
> file:C:/Users/lobe/workspaceM2/.metadata/.plugins/org.eclips e.pde.core/Eclipse
> Application/dev.properties -os win32 -ws win32 -arch x86
>
> !ENTRY org.eclipse.emf.ecore 2 0 2008-09-30 14:03:30.000
> !MESSAGE Both 'testEMF2_5M2' and 'library' register a package for
> 'http://www.eclipse.org/emf/teneo/samples/emf/sample/Library'
>
> !ENTRY org.eclipse.emf.ecore 2 0 2008-09-30 14:03:30.000
> !MESSAGE Both 'testEMF2_5M2' and 'library' register an extension
> parser for 'library'
>
> !ENTRY org.eclipse.jface 4 2 2008-09-30 14:03:55.171
> !MESSAGE Problems occurred when invoking code from plug-in:
> "org.eclipse.jface".
> !STACK 0
> java.lang.ArrayIndexOutOfBoundsException: 0
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl$EPropertiesHolde rBaseImpl.dynamicGet(BasicEObjectImpl.java:155)
>
> at
> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.ja va:1953)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicGet(Basi cEObjectImpl.java:1045)
>
> at rmof.impl.NamedElementImpl.getName(NamedElementImpl.java:67)
> at
> rmof.provider.PackageItemProvider.getText(PackageItemProvide r.java:81)
> at
> org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider .getText(AdapterFactoryLabelProvider.java:374)
>
> at
> org.eclipse.jface.viewers.WrappedViewerLabelProvider.getText (WrappedViewerLabelProvider.java:108)
>
> at
> org.eclipse.jface.viewers.WrappedViewerLabelProvider.update( WrappedViewerLabelProvider.java:164)
>
> at
> org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn. java:145)
> at
> org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Ab stractTreeViewer.java:932)
>
> at
> org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeR unnable.run(AbstractTreeViewer.java:102)
>
> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
> at
> org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Ab stractTreeViewer.java:1012)
>
> at
> org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRun nable.run(StructuredViewer.java:466)
>
> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
> at
> org.eclipse.jface.viewers.StructuredViewer.updateItem(Struct uredViewer.java:2041)
>
> at
> org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem( AbstractTreeViewer.java:827)
>
> at
> org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractT reeViewer.java:802)
>
> at
> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:70)
> at
> org.eclipse.jface.viewers.AbstractTreeViewer.createChildren( AbstractTreeViewer.java:776)
>
> at
> org.eclipse.jface.viewers.TreeViewer.createChildren(TreeView er.java:634)
> at
> org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand( AbstractTreeViewer.java:1578)
>
> at
> org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToW idget(AbstractTreeViewer.java:2456)
>
> at
> org.eclipse.jface.viewers.StructuredViewer.setSelectionToWid get(StructuredViewer.java:1680)
>
> at
> org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToW idget(AbstractTreeViewer.java:2864)
>
> at
> org.eclipse.jface.viewers.StructuredViewer.setSelection(Stru cturedViewer.java:1636)
>
> at
> org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer .java:1104)
> at rmof.presentation.RmofEditor$5.run(RmofEditor.java:766)
> at
> rmof.presentation.RmofEditor.setSelectionToViewer(RmofEditor .java:770)
> at rmof.presentation.RmofEditor$4$1.run(RmofEditor.java:718)
> at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
> at
> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
>
> at
> org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3825)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3449)
> at
> org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
> at
> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>
> at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
>
> at
> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
> at
> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
>
> at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:370)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
> at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
> at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
>
> !ENTRY org.eclipse.jface 4 2 2008-09-30 14:03:55.703
> !MESSAGE Problems occurred when invoking code from plug-in:
> "org.eclipse.jface".
> !STACK 0
> java.lang.ArrayIndexOutOfBoundsException: 0
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl$EPropertiesHolde rBaseImpl.dynamicGet(BasicEObjectImpl.java:155)
>
> at
> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.ja va:1953)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicGet(Basi cEObjectImpl.java:1045)
>
> at rmof.impl.NamedElementImpl.getName(NamedElementImpl.java:67)
> at
> rmof.provider.PackageItemProvider.getText(PackageItemProvide r.java:81)
> at
> org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator.ge tText(AdapterFactoryItemDelegator.java:90)
>
> at
> rmof.presentation.RmofEditor.setStatusLineManager(RmofEditor .java:1709)
> at rmof.presentation.RmofEditor.setSelection(RmofEditor.java:16 88)
> at
> rmof.presentation.RmofEditor$6.selectionChanged(RmofEditor.j ava:879)
> at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:162)
> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
> at
> org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer .java:160)
> at
> org.eclipse.jface.viewers.StructuredViewer.updateSelection(S tructuredViewer.java:2062)
>
> at
> org.eclipse.jface.viewers.StructuredViewer.setSelection(Stru cturedViewer.java:1638)
>
> at
> org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer .java:1104)
> at rmof.presentation.RmofEditor$5.run(RmofEditor.java:766)
> at
> rmof.presentation.RmofEditor.setSelectionToViewer(RmofEditor .java:770)
> at rmof.presentation.RmofEditor$4$1.run(RmofEditor.java:718)
> at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
> at
> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
>
> at
> org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3825)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3449)
> at
> org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
> at
> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>
> at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
>
> at
> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
> at
> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
>
> at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:370)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
> at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
> at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
>
>
> If this is fixed with the Guard Negotiation in the Integration build
> today I would not need a workaround ... ?
>
> Greetings,
>
> Ralf
--------------030706040904050707040707
Content-Type: application/zip;
name="rmof.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="rmof.zip"
UEsDBBQACAAIAHFGPjkAAAAAAAAAAAAAAAAXAAAARU1GMi01TTJUZXN0Ly5j bGFzc3BhdGid
jz0LwjAURWcF/0PIbqqbQ2sRqaBDlVJnqcmjjcaXmA/Rf29Vii46uL17OZzL i9PrSZELWCc1
JnTMRpQAci0k1gndlovhhKbTQT/mqnLOVL5pQ++dAL29kaNEkVBnOSWP8nVG 30musSO1rRlw
JY0DdhCeqSogb9p1tiqy3Xydl7NlnhV/2IwAxrUFZuEcpAWxUaGW6H6pdPAm +M62l/iE4+jz
+ztQSwcI1Ryc0qUAAAAzAQAAUEsDBBQACAAIAHFGPjkAAAAAAAAAAAAAAAAV AAAARU1GMi01
TTJUZXN0Ly5wcm9qZWN0vZLNagIxFIXXFnwHmb2JFQpdxBnQ1t1IQfsAaXId I5Mfkoz4+E1i
pmUQwYW4u+fce/LdhJDqLNvJCawTWi2KVzQrJqCY5kI1i+J7t56+F1U5fiHG 6iMw/wGOWWF8
mA7uiCgqofys1/PpWz3fgfMEJyv2mJYSlC8J7qvo5oNcEnigfjrR8q0BFlWW qxCliicn47Rt
ELBWGAfoyD1i2oaCnmgKgP1fISSobbrIdlnjoUHwFeUuruGAaqrEPlx5+Vzs lh1A0odAs9M/
eeD5zkKevojbr33pxwXS3K1MXPmr7RqhNleBvo7Ev78w/GK/UEsHCDwnVPbt AAAAoQIAAFBL
AwQUAAgACABxRj45AAAAAAAAAAAAAAAAIQAAAEVNRjItNU0yVGVzdC9NRVRB LUlORi9NQU5J
RkVTVC5NRlWQvU7EMBCE+0h5hzR0xIJIND5dAeiuIigCRIt8ziasbm2HtR2R e3ryg0Ko7NXM
zjfaUllswIf8HdijszK7FTdp8hBtTZCXv+oqFqv0rAzI7Kqj2KKdhlV5HczJ EerFcSiPxcdd
WbyNMTuPtiUIY9I+cPxb2cI3+EdS3lcqfMpMbLy2djyh2fVYA/+DPzmtCC8q zHFLuzQ5fHeO
Q14pfVbtWIqNa67TZH4Fmo7WIQakNHmBr4gM+RIqM8etAE3YeRDaMQiONqCB aW2rgWnG/2jY
9ejxhIRhkHsGmPlryXsdsJ8rVtOhBpmRugxp8gNQSwcICmbQoO4AAACNAQAA UEsDBBQACAAI
AHFGPjkAAAAAAAAAAAAAAAAjAAAARU1GMi01TTJUZXN0L2Jpbi9ybW9mL0Vs ZW1lbnQuY2xh
c3M79W/XPgYGBkMGTnYGJkYGnqLc/DR915zU3NS8EnYGFkYGgazEskT9nMS8 dH3/pKzUZKAo
GyODbH5Run5qck5mQXGqfmpuGpCdX5Sq7wpRwsjAFZxfWpSc6paZkwo0FGqe HsgooGZGBmYg
ZmUAAUYGdiDJxMABAFBLBwgnY3+AdwAAAIkAAABQSwMEFAAIAAgAcUY+OQAA AAAAAAAAAAAA
ACEAAABFTUYyLTVNMlRlc3QvYmluL3Jtb2YvTW9kZWwuY2xhc3ONjzFuAjEQ Rf8AycISJC6Q
EgkaLAoqUDpSbZRInMCYwTJ418jrzeEoOEAOFWXYpKJKMdIfaf6f/76+L1cA C4wydAh5LMNB
vYU9+ww9wvioP7XyurLqfXdkkzI8Ep5DtIqNd+eaFZcH0SGy2vyeEIaW04c2 J225Jkyms+Le
YEJZhko1yXm1KVydVoTB1tlKpyYyYfkfz7po2/59Wr1IRr4NTTT86ryE5C3H /IYgpQldmQeB
JQHL0JdtIFsHuahhq55+AFBLBwhZzyIfwgAAAA8BAABQSwMEFAAIAAgAcUY+ OQAAAAAAAAAA
AAAAACgAAABFTUYyLTVNMlRlc3QvYmluL3Jtb2YvTmFtZWRFbGVtZW50LmNs YXNzO/Vv1z4G
BgZDBn52BiZGBsGi3Pw0fb/E3NQU15zU3NS8EnYGFkYGgazEskT9nMS8dH3/ pKzUZKAoGyMD
D1gxVB0jA3t6aglIJyODiIamD0JHcElRZl66NVBBMUyBqAamvGYY0B6gEYGl iTmZaZmpKRCl
AsUYQlzB+aVFyalumTlAjiCyY/VApgJdxsjADMSsQI+xAF3PzsDBAPIFJwMX mOaG8nlAfKA6
XiDJxMAHAFBLBwhQSYL7rwAAAAsBAABQSwMEFAAIAAgAcUY+OQAAAAAAAAAA AAAAACMAAABF
TUYyLTVNMlRlc3QvYmluL3Jtb2YvUGFja2FnZS5jbGFzczv1b9c+BgYGQwZO dgYmRgaeotz8
NP2AxOTsxPRUdgYWRgaBrMSyRP2cxLx0ff+krNTkEnYGNkYGQbA6v8Tc1BTX nNTc1LwSRgau
4PzSouRUt8ycVKBBUDP0QNqBGhgZmIGYlQEEGBnYgSQTAwcAUEsHCCthFaBu AAAAfQAAAFBL
AwQUAAgACABxRj45AAAAAAAAAAAAAAAAJwAAAEVNRjItNU0yVGVzdC9iaW4v cm1vZi9SbW9m
RmFjdG9yeS5jbGFzc2VRXU/CMBQ9RWQwvibgB6g8Q0xcfNaYGAIJCaIRwnup ZRlulNRh4s8y
vhgf/AH+KOPtBEVd0nt7Tu89Pbt9/3h9A3CCuoUEg6NDNXFvKHS4iJR+tJAk dsofuBvwmede
jadSRBZSDHWlPVeKwJ/fS1eGE9orLd32spMhI7v9wfCi32ozlHp/lU8Z0mfU PfOjc4aNRnPE
kGypW2kjj6KFAkM17vHDebDe2CWcg4MtqjfdDJVG8798BgzlHCykGYo9fyb7 i3As9ZCPA2n8
KMGDEde+wUsyL7Tkkbzm4o57hJ2V7pIhy9mvkkvyGTAUVgUxpuOCJyNj4lvi l7UfGXugFlrI
jm+uddZsH5tR03BpIrQ2aVXNL9ATJSlmYBOTJXRE2XzWC3LPKD3RNoEKRZsy UEMKZWzHrHnB
HezGeY/kTK5hn84YDuKKw09QSwcIYp7iU0gBAAAGAgAAUEsDBBQACAAIAHFG PjkAAAAAAAAA
AAAAAAAwAAAARU1GMi01TTJUZXN0L2Jpbi9ybW9mL1Jtb2ZQYWNrYWdlJExp dGVyYWxzLmNs
YXNzfVPbbtNAED3bm3PZkt4oBOiVAg2UmnArpaXFTV0U4bj3vlpOuolcHAc5 Dh/B3wBP8MAH
8FGIGcelEKm15D1ndmbO7M5of/3+8RNAEdsa+gTyYbNV1w9o2XNrH9yGWrC8 SIWu39YwIDBy
5n5ydd8NGvpu9UzVIgHNtMyKaR8JTFutsKGrmu99bCtdNevEW6HSzZLvtttr AsO2UTG3nb8J
4//ZjsOmwPxlMkYUhV61EymSmupJ3T82rPJOmba6ItqeUXpvvCM2WNndNi2B XIyOkzgOryh0
oOoqVEGNC6XWyR940YZA/2LhRGCg1DpVaYzjuoYJ6khvwyQmcUMgrcr24ZFh l+gIY1Zv0FqW
BPISt3BbINNQkemrpgqonbOLhavbmAbdXmIQQ6wxIzHLGjnSsN2mOk2EOGpe QutGLUjcw32B
iZ4ohw2BhctrXvScFRclUkiz4kOJR6w41au433F9r+6pU97lnMcSmW6OLvHk /L5JHzjgqUS2
e8znEi84IEUBFeqyz+4VCdl1r0q8Bo1k9NztJCrtK69wMU2WeyMxjGvUMMsL lN1pVlV45FZ9
xVNq1Vz/xA09tpPNzGGrE9bUjsfGyD8TXOaXICDLQaDCeDJ8jNT5axkSVKuf HpaGPM+KWJ6n
ESP1MMZMgtlkXyZIByQkNeQwQjhK1mdC/uyvGPuOmwLfcCem00znYnqX6YOY FpguxXSZaTGm
z5i+jOkrputfSLEPG7TOUzWIGWRFAZOiiDmxiiVRwoqoYEscoyImsRlH8/82 Xg1sEWbAdx1H
aSj9B1BLBwgNUhbKUwIAAE0EAABQSwMEFAAIAAgAcUY+OQAAAAAAAAAAAAAA ACcAAABFTUYy
LTVNMlRlc3QvYmluL3Jtb2YvUm1vZlBhY2thZ2UuY2xhc3N9VFtT00AU/lYu aWvLHbEiiIoK
okS8C3iJJXUytgV6YXzLbMu2BtOESVNn/FmOL44P/gB/lOPZNMV2HcxM9uz3 neues8mv3z9+
AthCTsMFhqmg7Tf1Mi0HvPGJt4SGUWJP+Geuu9xr6fv1E9EINYwzLPtBSxcN 1zntCF20m7T3
A6GbsSfDmCgZRZNhpvDXvxIGjtfaYcjkfK8Tci884m5XJHCRYVQmZ9BEqWLX ylYCEwwLH8Pw
dFvX9agwuWxGaRhS0uygbOatDwxJYZUqVaOUi9Kph6B0mlkwi2apysCsETow GOZjys6bRrVW
Nu3cfk0aZGTVe3aslcaMYXaItO3eyZYU9rBmFKy8RVRPvzisH0okA1PHtQMj 9954R8aZeNcP
vnCG1bDzfY1S+Vhxf88syMAjDJMRsO3YtkJn6DGKU2KXRug54SuGkbX1IxpD zj8WKazhroZ1
hmzUTad96g621CKcxgbukb30ZphbW/+38Unq82YaU5imggqOJ0rddl0EVV53 hZyU3+DuEQ8c
iWMy1RKh6Yq28CjoCgU955rlXN7p0GQnyb7E2+L4zGlOYWwJGFbPj2WEdC3r 3VDelCXV+7DL
XafpiONeGFnf2RVPEChSu1yG6f7WjrWd/6Ysi6YIhNeQKSfIVXYtzxuhH3xR ehmzZJeq+N2g
IfKO7NPUQJ835QfGkLY8TwRRY0RHg9Ef3oDlasEJRcBdKi7R39K3TLOndwzT yEJDgvZJeT2R
IpwewBnCk4qehkv7LGYwe8bPEZ5X8KUBvED4sqLPKvorA3iR8FUFLyn+y4r/ NcV+ZQBfJ3xD
8b855J+kU67iFjG3idkgKR/tO+58w/2vkZFOa4oksItxKudBxMof5hYeRvJR LB/jSSSfxvJZ
zD+P5QtsR3KHIskYL6P1FV5HGRje0Pt2PPkHUEsHCAfWiju2AgAArQUAAFBL AwQUAAgACABx
Rj45AAAAAAAAAAAAAAAALAAAAEVNRjItNU0yVGVzdC9iaW4vcm1vZi9pbXBs L0VsZW1lbnRJ
bXBsLmNsYXNzfVHLSsNAFD2Txqat0db3WyuIqIhFdKe4KREK8YGK+2m86mge Mkn9KhfqRnDh
B/hR4m0cpYi4mPsYzjlz7p33j9c3AJuoO7AExnSUXDZUdBc2vJAiirMW1w5s geVEXzUoCNVd
Sg2KLrlONBnsUfuGAoMtCri5jFEQKO6qWGV7AoWV1XMBu5lcUAUF9LtwUBKo +iqmw07UJn0m
2yEJDPtJIMNzqVW3N5d2dq1SgQn/T5M7/CydZjJTQTOUKQPrK6v+36a9HLFT xgjGHIwKTOWS
JxyOZXArr2jJVxlpGaYuxjEh4Hi+d+AdngnM/68pMGJc7JPMOpqaSae7Ax69 JVA5TTo6oH3V
nafW437jRt5LnqAVx6RzJUodzDPotzOB0rc3exEszKePv7AAu7tN7srcbXEW nPvWXlB54sKC
y7HCGagzdBEDXLlfIAyiytlGDUNGYMMI2M8YfvzhF/O7tR6u/cOdxJThrhuu VXj4xdzuYVqG
aWE6jzOYzR3yBjGHhWL5E1BLBwgatsetgQEAAJwCAABQSwMEFAAIAAgAcUY+ OQAAAAAAAAAA
AAAAACoAAABFTUYyLTVNMlRlc3QvYmluL3Jtb2YvaW1wbC9Nb2RlbEltcGwu Y2xhc3O9Vl1T
G1UYfk6ykAJrWgulpXxIKNB8QaRYrQarMQSMhA8JHzZ+4LIcwtbNLu5uUMY7 x4698MZxvPAX
OOP0gvaiDF44XPujHN9zsgQmBK03ZiY552ze93me9+O8yZ9//f4HgAlshhBg 6HQq9nbKqOya
qXl7i5t52oWgMIzaTjnFddPYdXmKV7Zpbzu8Zplb3HzIda9m28rQLkGkP0Pr lGEZ3n2GYDS2
xqBk6XE7guhQEcIlhssFw+IL1comd1a0TZMzXC3YumauaY4hzv5DxdsxXIZr hSYC0wwqL3qa
Z+hZU3PJbDAaKzQXnJMW6TZ04loIXQw9EnCZPpY0/QutzIcLhscdzXRVdOM6 Q8v84nSuwDDw
z4iUO1/DDNe8qsOzdtXyZNh5ho4y93x8kjfSRJ5uVyq2lap6BiW0YLgeIbYV jbIlwRjuvojP
VC09PlP6vozzFRWDiFCmZSAbG0uZ7FxmNldkGLoopGW+zR1u6TzdDoZbKoYx QkHw6X1Lqxj6
LKfAMtH8Re5Fz6nqJFsz/VykS6VY4aG2p6VMzSqnav2SDuE2Q+Rfg2II87y1 xx2XL/OKvUfJ
+CF6AXXeotpZmum3ZPq8RB/esj1jez+1IBZDp7LZVnZHM6z0hVm+0EOkKKHi JnpDGGOINlcm
46nLE3F1IImUilcxQand1FxDPwlvL3o+Wf9LIEFMqogixnDJ9na4k7O2GG6/ YK6pX7dr5c5P
MzDqeqXilqndJ/6zEnLlssmuR/NNW0dIfVvFWyDTkMNd2xR5YyUSLrSt7O+K mcGLAqObGvUc
QGytA6OYVpETQ6hFN7nmhDDL0CVNZbWytmmSLakStnkVH2COBpq2tZUxabL1 +FVqsE3HSkLd
vIoM3iM9Fv9qTTOrcrCdk0FwfNVyhUwlmo+tCc+iiiV8KL7Ju8WTb0pCwrqK j/CAIjbcXGXX
25fTRbJ9rGIFqzR6i3bV0fmMIWZmuD4hxwUxTcm8ZXFHzivuhvA5w5XG6UeC T+YfItTYQXq3
0A9EGxQxr+nURqdJWhmtLfFDtD+lTQAqfbbTCoyR6Theop1aM0IYl2lVcAUv +wDjPoDyDFcP
6v6t8tkbZ3yVuu8N9Pi+Sd83EHzS4Jk54xnwPZm4mHTqk8/6JcI90iRswvHg MwwoynMMHWO0
UcfcGbRwHY1uh6/jG1Kl0Jro+w3iNYTTV2f8OeLHSCbGjjAexEE80Td2iDun FGHKLLCKLqzj
Fh5IqngNzqcSu9dwV9In8DqlJSB39/CmrAr1vi/kS19IpLcm5EajkIN4b1// IaYa6XWi55TX
8hn6SJ0+IkmZ3N3HO5I+gndpJ+ipuX36R3QWaJM+faKR/ghZBrFJHmPmCO8H sP403ps8ROG0
dW5S0gGHBHlUpCqB7FGhv8Yd7EtxgzWKurjJurhJLGCRUJi4Nb6kHToLucO+ pP6mkkjEIZZP
NXTLTv+WNHxHHo8wgO+pNo8lf3cNr84/7PMzce8aWJM+68h5VvoH9AtCwV+h KE8Ee+m0hWsl
+ZHYf6Kr/vMZ1mSdNemzBvCJ9PsUn0FcO/rzgQ1orW1/A1BLBwiZtsljlAQA AM8JAABQSwME
FAAIAAgAcUY+OQAAAAAAAAAAAAAAADEAAABFTUYyLTVNMlRlc3QvYmluL3Jt b2YvaW1wbC9O
YW1lZEVsZW1lbnRJbXBsLmNsYXNzlZXvT1tVGMe/h95RWi6wwQAZZfxwc+UO WxEVtGyjo2V2
FjZWQK0/8FIO3Z3tLeuPmflCo3GZb41GM98aQzSLAUwg8YXxlSb+UcbnOb2U cikmNum958fz
fM/nec55zv37n99+BzCONS+aBM4V84WNsJXfzIUXzLxcj+dkXtrlBA14oQl0 H84fmWoWOKOm
6r0E2hai8/HVeCw+F11OLgl0Ju+ZD8xwzrSz4VS5aNnZiEDv4nI0mZhLxGOr LvOW6UzOsq3y
VQFPcHRFQJstrEsfBNp1eNHCrdM6fGgR6Ehatlyo5Ndkcclcy0lerJAxcytm 0eK+M9g8rQT9
8KBbRxdaSbR81yoJBJInx06UukyVzbKVmc2ZJbIeCo4mC8VsWBLhZkmGZX6D 2oWiDMeVRcSH
fgx4ERDoU7p36HHbzHxoZuWFpFWWRTNX0nEeg06WYqvxZHw+vkBhn/9vZQFv VpYZUeAsYRxL
KS/9rI4LuCjQdUR7VWVYYOSkFaJlklirlGXET7m9pCOIUYFWGXtom3krc0PS pkaDiZPcCaCS
KVcotjlp0ltG0ul6wFtr92SmHPHiMm2cm5viKh3E1R08HtboCjOFdbyA8Tqm FDPN/B+m40B8
try2/Ki6+GlK72LFzFkbllznIU7oyzpe4YQOuBJ69PCSc8nlTEOk7BrSpEpl bzDRMEEc6LSO
IQxz66qOCW55MKPjVbwm4NuohpKICYgEsRdlqZB7QMIiTWXDgS893FTrqPT0 UHoaBM3iCR1j
eJ5bb+iY5JYH8zrmcIOECHzFzFXk0cp1/KmY5LJdYn0tmGA1D1I6bmORZxKl 1MFM2g8Db+p4
C2/zzH1KRcm1xQdIaRZ5R8cSlgX8qUKlmJFzFhdut7smQ+xNdZmwbVlUlSFL XnxA6XbXGwVy
UHHaMAXqof8pNCHAdwhdfgG+QejdSk8/PUlUXYkC/POJX9FG/44d6jThDD3b SQK4CA1hcgmg
U82A+l019wl6s8ApYx9nD139ynCSTKeUm141Qg96lcAz6HMEQo6Atotz2zX/ ZjUWrfPVHF/B
x8XxnSJFnms3PLsY0bQ9PPcHDLfKzTqV9poKnQZH5TppM61fqVzeQ8gdR4oy t6RUeqqWjgq3
XqTUcAQTDagoppdOonq3IdVkAypWaUQliWrjBKoph4rKyNH7hPQ0ehv9Pyub YVR/vD57BYw9
RLbpcWXb6A8M7OPaIXGn8izQrt3HAEoYQUWta1QVa+satGPXlaKBWcQUlYE4 tfgsUq05LI+p
z0dr3GEZdbEMGWOUsT28vuM0bu4Y/WP7SB6m4DwdauBTQvqMDsTnFM4XJPOI lntMF+eXCm+o
ukgNb7yGN44F3CIlwWXsQH1MfQYOOVCXXFCDxi7aFNMuOqpI+7jjJvqKiL7G IL6h1b8lje/o
0/KENvX7uo0K1YhCDpHgm8Dh+MXhsB2OrIvjGmH8hU7erj/h1bbQ59lCNw3y yB5WnsBLA5r2
lDCrdleO2HXwSL0dx5F+6trsHyiOHzGDLdzFT3Xsdo3ddtib6Ciz73t4Xx09 QV+RVZjNvn8B
UEsHCJipMMuPBAAAdAkAAFBLAwQUAAgACABxRj45AAAAAAAAAAAAAAAALAAA AEVNRjItNU0y
VGVzdC9iaW4vcm1vZi9pbXBsL1BhY2thZ2VJbXBsLmNsYXNzfVFdSwJBFD2j q6u2pVlmWkpB
kPbgEj0agYiFtIhk+D5uo03th+yu/a7qJeihH9CPiq7rVhLRw9zPc8693Hn/ eH0DcIyqihhD
wbPdsS7tqaX3uXnPJ6JLsQqFofzT6nFb3HQsYQsnWPSTDFrYj1gMyVPpyOCM IV6rDxmUtnsj
MohjRYOKFEPWkI7ozeyR8K75yCJG3nBNbg25J+d5VFSCW+kzFI0/F2vSWDEI eCDNtsV9Au7V
6obrTXRhWnLqC13YY4pdT+idENFMYwMFFZsMpVDyikykeGDIQHjc8jVsocig 9lvty9ZFh6H6
vyZDZuDOPFOcy/nOuaUNG3f8gdOWXccRXogWvopdAv2ezpD6mo990N3oJehr YlDmF6MsTdkJ
eUY+cfSCzFPY1shmyAMVglaxSpG2AGENWfIKcliPBBqRgPKM/OM3PxnWDpe4 SsSNYTu0JZTD
OYzut4NKMv0JUEsHCOZWYTVfAQAAOgIAAFBLAwQUAAgACABxRj45AAAAAAAA AAAAAAAAMAAA
AEVNRjItNU0yVGVzdC9iaW4vcm1vZi9pbXBsL1Jtb2ZGYWN0b3J5SW1wbC5j bGFzc41VW1cb
VRT+DpdMEgZaA6FSsEakkgTLaFtbbSotl2AjaUDAtGi1DsNhGDqZiZMJ2n/g b/EJ+wCrspb2
yQd/lMt9zgxJCAn6MJOzz+z97du3d/7+5/c/AHyMnxT0MIx5FXdXsypVW1un 07Ju+K73skCy
gj6GadczNW7YVrXGNV7ZpbPr8UA/f0Y5wnBZYrXAMPRZjuUzjKQzxfaPOfq6 6O7wGAYwqEDt
6iy/phsvdJNPrXPTqvneSxVDuMQQLZQ2NudLi3mGTPF/muaieIvhyp7vV+9p miZjEq9ZqT9A
oQyrGEGSYcDkfr6Rx+10cV8/0DVbd0xtw/csx8x1dXqaYAxXMKbgbYZ0Z82q XTctR8sLYU2e
RWpXGbJdoM8b5OLkZELFO7jG0Gu7JkOyNdbV7X1u+LlMOQ6GlIr3MMkQuS/a MkcG6UxZwRTD
cNMi/7PBq77lOgyXipbDS/XKNvc29W2bMySKrqHbZd2zhBxeDvl7/EzXE52a HeNN4GSxgz9K
pRcpYoW/Z9UYxotdqUloEcPjuk/OH6S7tWHR1mu17l0KKzNAo3BLwU2GiYtw VNzGJ1QRYoWU
rV2Le4UlWcKCqO1dFZ/iM4bBILCQeDQUp9QPb3JCOafiPj4nkgXKj2kMbKrj qaqUcwoeMEw2
C1WwbW7q9rxn1ivc8Rt1UzBPlG6n50Ldsne4F8Uiudnc4ylDhJ2ajuMh8oIH y21MOWV1WVTk
kYoCvmRQKN+SXuHBCJ9TFmBFFY9Roo7o1Sp3dhhudJyVLvHRQK5Rr6dTVi3l uH5KTx3otrUT
RCuLLHysq9gQ4UR9N7COYw409xEum8Fw7WISKHhK2Tb5FPZCcCmOJ4J00Wpw 9ZxKWeyoSCDf
0aA0v8kuBRDPBER/JWhjsthBhyg7RLUURG5Q48xWbKXHjgqO3XAHNdQn0/+1 5ijEvdY13DCN
E1BTWOJVjxvEO2rW2Hrd8a0KL1s1i4Z53qEm6IJVVNTRlqY1bWitmaBF5aIq hrq5hBPnkyFn
G27dM/iyJRbFSNsczwp8BrXgONyTneI1BXVq58V5UrtOFzoRmWaQnn76U1MQ oydKUowkHz10
AqZeIZ64/BqJHrxB/0r2LwxmD1deYTR7hPETsK1jvHsoNYdp9b9PVtfpfBUR YUv7+DoS+IC+
ZJBEFhP4kCRglPSGSGcaaZKS5DdDX0E4tGLDCG7Rr8Dtzx5j5jc6BNBx+gXu oA93JZQaKBHw
DQkwCy0E+IVuhe6jmdf4iOFXOiIlcUBJiyCAcUrjziG97h2eYG7rBA+3EgvH WCKTLxiOsJJY
pdcRvjrG5p+NGBLkHTRZE5ingBcojqVGWuQvjEWcvkZZpkHbLYxqgXSEVvwE T6h4W8WZw7bc
StSE1Ra8eIgXJekbfCvxaAGex3tGeN+fx3tKlltd8J7jB4mnYzvEuxmWPUpF Md7AbKJF5P12
S9WjIVIMFt33Yl9m/SLUteUXQQMm7/teodKOVpFoPfL5Ub491GSMNMBEwoNI 7F9QSwcIw+ph
L2wEAAB0CQAAUEsDBBQACAAIAHFGPjkAAAAAAAAAAAAAAAAwAAAARU1GMi01 TTJUZXN0L2Jp
bi9ybW9mL2ltcGwvUm1vZlBhY2thZ2VJbXBsLmNsYXNzpVdpcBPXHf89S7bW 9jPgNQQoR8Dg
2hIBJTTpgU0KMSYIZAM2R3AOspafzRIdzmqVEnqH3CEJuUNIydlCmwtIMHFO kh5p06/NTKbN
ZNrO9ENnmk/tTNsvnf7/TytpEZJNpx7v23f8z9//2KeP//PWewAuw29CqBGY 66QyI1E7NZaM
9tNsi5W4yRpVMVqHEBRozzijUZVI2mNZFVWpEZpnHJWn7zmHuE5ghpblEyPQ pJIqpdJuT3fS
ymYFFsYrC8yfdwqYaSulhnvO5Woay8srrBtTmWGVLKwMOxtL264aFhCDAvV2 tttRll435Y9s
K2nv57XRRZpp40qBQEd4h0CwmyTVQ2CmhESTwPS4nVZ9udSQcrZZQ0lywYxn ElZyh+XYvPY2
67q0GANzBWbvcd2xVdFoVLvPwwrtVD3mYUEI8/3ArLcSbsa5VWIhLiZTVaxv YNvavu4eVlNO
1NmAABZLzEarwBUd8b3WLVY0aaVHowOuY6dHO6thWeAP72DPlkqEYPDsyxL1 +VmHREN+FpFo
zM8ukZiGJp6tkJjOWATdPTbhOy9eNUcoYEEGgvDrCMfLw99Zj8vx1RCuqJpH hRRa2q9G7azL
wHwNX6c4lXAJV/OynLWzkbStkuhEF2XIqHJ7ill4eQXwppJL6Atcyeg382yN xFo0C8xK6Nzy
iLozaZfyNMsU3RLrmGKuXcy4ClTrJa5mqroRR6n9ZNs0d486p2Qa2PR8/gss 6qhqZ6FiphN9
n69oKBZlO7t5QYlQXdZal0AZyrmKQNyMrSFsEZg/mV6JfgwIXMS2EqC5hJtz rOR6gibnKMqZ
tgq6EplUKpOO5lybekecYkbKtmNnCFSHi6cklrgGu6hsSSNFoSMW9oV089Be lXA7Q7iWEJvK
RYEF5fhszVG4Rmw1nAeKI1AMh0GLXm43As2F6W7vNDspqP1qRDkqnVBk2FB1 w4pklAukwNcA
yqqq1BYERiRGsUeghQPgHcTSWdfSclqrG+UXslfiJpBfMp/ThX66mMGdNOmY OS2RwRj1No/Z
h29rx+TssfAOluBIZP0SikAYyFFfYb+Z7FsS+0BYhLL5qHH0K5SzFvltie8w bSPTZrc4asTe
x/vfk/g+7xt6f3t/jNP8hxK3cRJP00mcG6OOf+uY0lV6u0QMGzk975S4C3dT 3lnDw2WavawL
DzLHvRKbsDGEgwSnjpiXWwYeINO9BRMekngID1OScZsoQD48BWI+redteAAM Dg5OEbUQHqUc
1sb5s9/A42Szf4fNfFIijl7+GjwlcQRPE4kWVqyLpdWU+aiowI/i2RCeoZyY mlriOTzv9b+8
UwJLqmfyOsu1OGCdBl6kdOF7Axv+E4ljOE5R1fj6svJ4VYxL3W9SALlDOBWQ P38nFjsvYIPe
3wW0YPbiZxLXodfAy3SHudnfnUJ4tZBhHmwGTlCGeYsQThGC+lh3KgNvCNTq KYsdl9iNG3n2
psT12GjgLSoK73alM/8diXfxXgE+X2/6bVX4Sn3uQuCbWsj/B3B1hEsq2NGz Eh/gQ3I03336
VTaTc9jR1f/DZcHxuKIFdvoeNwzo2Xqb74kzyy5MK1g0BTCWTitHG66yIXxE F+PJbyMUpcI9
B4vJ+gA9tXSvq+G7HV3na/hmp98N3rtRvxv4VqvX07z3dP1uotMZaCYpJq3C 9Oa/2sDraDmp
yWZp5hoatyKI+bhI7/Izu8iW1mYAHRFzzil86QwWRcRpLOGhjYd2HsKRwGks 42F5SXKrNi5G
RreSYWG04FLMoavfAnxMO39FOzZqjTIvH1E6B1FfhpWe7kMkic/6TqHlMJpP 4SvmnAl8owZn
UXuitPoA4jBmlNbH0PA2xK4zWH0WYlOQ3I2M45v0XEVPT+RE0cKFBCywFzOR Qhd96dbAoetd
DhvoYxTH/qJ1XWTNBm2d4E+GZ12U3mxdbeQNLCkJrdObB3yu1XquCf56VGBu K2c+WJGZWrXH
vNrDpYWZJ9BHqTKBbQzLYLmox3yiWoqirptEVLCaqKMVRV1f0aX2cuZjFV26 oSJzuJz5REVm
anIVnAifg4dVLmqiohMJDHuiVnp2GJQq6izmlfN/6OM3ivxri+VyxCuXXjJl 2WEET0aCXBmR
wDhsLptIUE/aIow3bab0JKgntfqoPRKp05MwH4WJ5uZSTUWoXoHfkepPqLw/ JWN+j4vxB6qe
z6huPscq/BHd+BPlyp99hvYWDV1XMFQM0MhnX5CS5QVDl0dMdxy36HE/Ffw4 vpvPix/Qj8hx
HJjAHTXYyfEtbN3jbXENmPeZ9wcD5MuDet1mPmI+VlyP4wnaOzyBH5H+F0Qw aD4SCAT5nwh+
rAl+WiJ4qQIBaTVfMV8LlDSEzZPm64GShtP0nBHmhAjUmCdpv8D99k7ty/s7 S0BeRZ0R+DsB
+Q8C8p+UC//CXPybf7BjpRDoEUFsF3VQIoQ7hYFjooFES+riTfiLmIG/iWYf wF94ANfg53r8
BX6pWyv9KsWv8Ou6+v8CUEsHCEQfxE1QBwAAkREAAFBLAwQUAAgACABxRj45 AAAAAAAAAAAA
AAAANQAAAEVNRjItNU0yVGVzdC9iaW4vcm1vZi91dGlsL1Jtb2ZBZGFwdGVy RmFjdG9yeSQx
LmNsYXNzlVRtUxJRFH6uEihuSmqapflGClhuZGYFaUaYNqhNNPahD811ueDa sussS43/qmbK
ZvrQD+hHNZ29bIi4oMCw3D17npd7ztn75++v3wCSeB1CF8Ntu2wV1aqjG+pb Wq0X+JEj7A2u
OZZ9HE2GEGAYPpuT/6I72gFD0DnQK9H7xJFrR5KizLRu6s4qw3SsfWp8jyGQ sQqiFwx9Cq4g
GEY3rioIoZ+hO+YmDOR0U+xUy/vCfsf3DcEwmLM0buxxW3fvvWDAtccw1VYx miR7fRqviKwh
ysJ0GFY8j14gFc9ZdkkVmqEfVYQqykVVs8ply1RNy9GLx6pHmApjBDdCGGUY b6eoYAw3qaaa
LbjzX9VLYYjHLitHVbX2D4VGjvvPGmaIuBva4WVRqO8q7e2qMdrR1qYUTLvG x2rGG3nq7od8
NLzyvuHaJ14Sp+X1Ah15mFMw31A8j6Iu33+WmaHXVd6mcTIYlj1deduR6l0F 91zVwZqqJKhr
Ko2stNeCKPKq4WRImGEzdk5GaJYt1OyubF1HNh4oWGqcnBpF3cjkBVIMM+cG +5B/5qrBzZLq
JYXptVtRMIRhhqWLzfvinypQQafCvP/E+WKeKZjA7VOLp8Phm/5cwSyi9G43 9dQ3OaMgjgRD
OG9VbU1s6O7hMHr+xVx00TQzeb1kcqdqU9Zazu/kS1+yaatU84GsqRlWRTdL 28I5sAo0MFum
KeyMwSsVUcEUGeym45hFIu5hR6s++oXQQ/FeWj1GF32BcGLhB11+QvlGd10Y cGPyCSNcDhFa
KbR2o9cwKOPURY8lTf9ubk/iO8InuP61zhGUmF2JH6nleHh3dQvj9Jy5vfFn mmxmyrdkmpFM
1DZ/pjvNTO9bMsUkE/XUn2mhmelDS6ZFyUTT6s+UbGb62JLpIXVwnSq+7DHN eX0LJhZO8KiZ
h0keek4YlXrsg3nSDjOBlB8m3Q4zi1U/zFo7TBzrfpgXLTEI4KVcZbEh/19h U0ZH6Lolp5NJ
BH3+AVBLBwhkV3/e8gIAAIkIAABQSwMEFAAIAAgAcUY+OQAAAAAAAAAAAAAA ADMAAABFTUYy
LTVNMlRlc3QvYmluL3Jtb2YvdXRpbC9SbW9mQWRhcHRlckZhY3RvcnkuY2xh c3ONVdtOE1EU
XafUji2jrQjFCyggalsug/dLkVttDbHWC4REfRqGQxmcSzMdNCR+gV+gP+CT D4q3qInBJxM/
yrjndKjQjrVpMmfPPnuvtfeafU5//f76HcA53JIQYuhzTHtV2XB1Q3lA1uyK WnG5U1A113Y2
JYQZLtlOWeGaoVeqXOHmqqLZpmlbimW7+uqmopsVQ9mbNk8uBtm0V7hxT9We qGXO0FUUTB6J
78sydIqYhWe6q60xJIt7i6n5KSy6oJct1d1wCGc6MGiy2LpKv8DsFKFFJnVL d6cYOlLpJYZw
jmqIoQNxGZ2QJRxiONFKleFzMSRw2IvuZhhMFVsFZ9NLUVBrMiTs96wjMvYh EsUx9Ek4zpBo
lEVGPyLUM58vLSzOlnJ5hnhRt3hpw1zmzqK6bAg1bU01llRH9959Z9hd06tU fOuCiFKv+i8F
21ncrFBqT6q4rj5VFUO1ysrd5XWuudn0IwmnGfobleWa7XAlX4vqxDDOykgh TcLynKFWqYKB
VLrpe/hZIiLbiRGMSRil+WsVJ2McCk1Jmbv5+iAN/Rv872BFbFGdJ1RTXwwH NIerLveFYbif
+s/4lLxFp/lppg6esxgu4YqEywzdQeMq4yquMexfsXdm/0JzCXt0JuamRiRQ L6fbKogUcVWH
dGRou1eqvaZT3uAmt9w6VDrgCwTLwHC0BlFSTb7SiOPD+1+t7u6que94V0Nj rK9G3R1bsDcc
jRd0b/57m6d93BON7qJ5y+KOmClexSAdww66A0MQZ5GssHc6yRsV3piw6S6g 5wHyPKZ9Rmt/
5jMOZr4h8ZCMro/o2ULvT0S3cPQ9et+J1BP0PCYgRynpNsEX6a4YQ5ImuQ8T OEk7cg0MA1QI
yB7CKZ/IIoQQrZkRQn6NfeE3Iz8w/ArHR7Yx/AVnGL4gw7Cz2UG/OmuSuIBJ auQGtTFNrDN0
KucEY7KG6jN61gT9ATD6nccFnzvnc8czH9Dj8X3CxW1cf1sniIiyzV2A8Tpg nIhvCMApoq4B
jop3ymaNGM93yRCqyzDTRuaLwMzZNjJfBmbOtZH5OjAz10bmVkBmCDfFM48C rTHaSwgF8QdQ
SwcIKTnHPzADAACYBwAAUEsDBBQACAAIAHFGPjkAAAAAAAAAAAAAAAArAAAA RU1GMi01TTJU
ZXN0L2Jpbi9ybW9mL3V0aWwvUm1vZlN3aXRjaC5jbGFzc6VVa3MTVRh+ThIa mq70wv1aQGrT
0DYoeGtLKZSA0RAKqVUQgW16mi4k2ZhsuP0Ax8+OjCPf+IIzzjhWHOvUcRw+ OMOMH/xJjs85
u9kmbdKMmpnsnn0vz3s97/vn37/+DuB1PAojILCjXLAX41XHysev8pS5bznZ pTBCAj13zHtm
PG8Wc/HL83dk1hEwCvaCzM+Y2btmTgr0pbSy0vNo4wIdE1bRciYFgtGhOYHQ NFUiCKLLQBhb
OyHwioEt6OhEN3rD6KGh9SgG+tAh0CmT6czs2fR0QqA7ZRVlulqYl+VZcz6v jdtZMz9nli31
7RFDzpJVEdiVahbVuGI0KD0s1RT3N9WYmJ0dn6Ta1gXbJQicjKbsci4us3mr VJFxWVjk2S7L
eMJN0vhQan3eCNCZsXJF06mWaepYWwRa7cIhHA6jX+DgpsIGjuAoky6n82aF kR+ODrVC1xLj
ERbgmIG9GBC40tITV/a/RBpxlmSi1i/9bRAEzv1PF3SqYhgO47jAgc2gDIxg lP7JabvomOym
ssCR1tnyDCjwEwZvyxvswZx0NJS1aMly8rxu8aRK6CmV0Df5jib/fc6UibcN vIN3BbbRRCJT
LbHL2Zus50ATD7N2oWAX3V5NpKyKghjH6TAmCKDhNUtxDEzijEDYqiQKJeeh 9vi68visgXPY
J9C1IBfNat6ZNitSoZw3kMAFytERgZ3RZPN2VkX2Ou7Q5gWkCVkfUE+q0UMK nFhHmtgcUV3I
gfaJZmeEkebM0hc7kZcFWXRU6DMGruAq/coyZo8ucDSaqhdsVqgwZgV6tVTa LMiFOsw5Ax/h
Y0anMOuZAoMecD21Ofr1mrPeGFTANwx8ipues/7grTlbm7pN4W6z2bXUJTW0 Fdi8gSwWWD4F
pqlqYKTWhJpfaSPb0PQiyYaStfC2NaaNo6gsK2woNaCbYRUbkrO9SW44bktu XLd8+LX1sqXg
+m3Uu81+ZbkJt76Imtphe+NoT9NSNGj6GdXU3sbkaFokY1fLWXnBUmuje21X jKpoBaITs2Mb
A5/cSOLgptvcxIxF7UOe1HLkjuSzk1/X+BZ898Z+QeQ5jJfofI5tP8H4kcQg tvPZhxCfcT5P
IMIh1YOT2EGK4SpiJ3bxvbuBskeb3It9CGA/zwEc0OauEjOgJGPHV3FQ4PgK Xl32LXVo/dMa
fZcr56Gr02sYJH/NjuHZCak949uJaju/EVF5PUUzQwIM7Bm6lc24wPAKTi7z +JZAemQVYwLf
oCtG6tS36IuNBFcxHcALKEqdb4eYNOA9Wk3Sagr9SNPWZeZkBmdwSfscc236 Pk/hIjWEPinv
A9Q6Qv33ibnbj3HKi8PlfaA956D3I0qpiMRfPG3h98r+7zT2D3B/Qa0JjPFv 8v/V8AtcSsdG
VnB5LLQ39BIRHZo6L5OV0awPa6xWYte02Cd1Ym1VbmkVcwNLn9byOMdogRs4 jJus2i0M4za3
ksmtsMBMSGZsERnkyFnCPO7ylEcRBTzi83PY+BIlPEYFT+DgKar4HvewjAc6 /yV0qQz5+V8h
3qLO/4qX/wFyckQO0m43LNxhrqdwlHbypF1kxl1aDqO0WSStSD2X9oS6Nm0E abemq6p4yq2L
V0UX9zPyXDR1cjHU6anPFWo/+DUu665VvaI6IiDW34kv6u5EwI8vwDwsNdyJ gH/3uCl8dKcN
+tct0fMt0LkufPRqG/RnLdGLLdC5P3z0e23Qf26JXmqBfm7DVGqN/kdL9MGm 6AHc188HHv7D
fwBQSwcI3BEfAiYFAAAJDQAAUEsDBBQACAAIAHFGPjkAAAAAAAAAAAAAAAAd AAAARU1GMi01
TTJUZXN0L2J1aWxkLnByb3BlcnRpZXN1jrEKwjAURfdA/uGBHWuSVgQtKjhU 6KCTo4tNQo2k
TUgaqX9v6iKF+rZ7DjwORgvYcWPfTjWP/oDHSSd7REklCqiD0oJYZ6x0vZI+ fUFGMsgZ21C2
pSsGbFPkebHOQJtaQjlYSDDCqFYdUR3XQUgPeyDpDSOYXmuE1HRGnMvrcVld TnPO6tDE10Or
/8tfLkbPu/OEm9YqLYlxQrqxBiNvguOSkLi84xQjE3ob+i+I7RF8AFBLBwis vnB7swAAACYB
AABQSwMEFAAIAAgAcUY+OQAAAAAAAAAAAAAAAB0AAABFTUYyLTVNMlRlc3Qv bW9kZWwvcm1v
Zi5lY29yZa1UXUvDMBR9F/YfQnzess0XKe3EjwkDJ+I28DWmtzXYJjVJ7fz3 3nRdWXWCFfOQ
QnLOycm5Nw0vtnlG3sFYqVVEJ6MxJaCEjqVKI7pZ3w7P6cVscBKC0AaC+QMX rzwFss1l0LKm
yBqcEBwopmyAmxF9ca4IGKuqaqTzdKRNyp6WC7qH2C6kOqsR0/F4grC7lXiB nA+lso4rAR31
2kmHDCKThYVaAfLEq0zZ3MMoUTxHsMl10ogou3lctHTmd+ppBA3BPhhI5LYh zTwrhOuMWysT
iVcm6D1wHwXKNqHUm/uj5hnkoBwl/Nk6w4WLqDMlUNZb6R7n+Cc5AquyALNG to3oKWN74Gx3
zRBWiBOuNDy7BY5fOHLepXNGPpeuDcrPlGS6AnOlSxVjS+BR60PODXfcL5Bf VcA7QyfYTk0C
f7b2VvLM5xbfH/G4U/bjX82G7LBevSvYvJbvxeqUtn9nLHUMWb9KP0ICBvxb ajSKnTfULIui
TXJ4JEr0215EaOW4VN53t6+/BoULnT8GLn0CUEsHCOwy5nWOAQAAbAQAAFBL AwQUAAgACABx
Rj45AAAAAAAAAAAAAAAAIAAAAEVNRjItNU0yVGVzdC9tb2RlbC9ybW9mLmdl bm1vZGVstVRd
a9swFH0v9D8YjT3Wygwbw8QpI45HYQmh7WBvQ5GvHVF9TZLz8e8n+SONu4TB YH4wjnXOufec
e+Pp/UHwaAfGMiUz9CGeoAgkVSWTdYa+Pxd3n9H97PZmWoMUqgSefgW5DA/R QbD0REw88fYm
8pfXkzb1hxnaOqdTjPf7faxEHStT4x/LB9RDgCoDIxBQzrSFFgiiwslkkuBF gI20h1b+zh16
RVFLyJkB6pQ5ZggvlkVy93GZPIN12BraV2hxa97UTD7kGQqonz2qF1kR4bt+ FKpCERNaGQcm
QH3hUxO+gXg4i+HMQAXENQZy4FAT1yaXHyURjKKIKqE5I5LCN9gFd5/CMKjS R8PqrSsY8NJm
qCLcApoFvWnllVndeZxVjEOK5ynOFW0ESGffJxMiS39/Auf8QC3magM4B/vi lMbGe+i6m+KR
UqvtU14T+kJqsJE2ULHD4LpkVitLNhzWRu1YCaYgfazONOAXKGj25Ay9lnmH u7479Tkn1npx
JlpY56vjtkdjJl5wCKYQ/neJMLpy0OllOqGim4uNqPFPMN8yXo71ekSG2l/p 4otzhm0aB9HV
EtgPFk79/s9CvxrCWcWgXJ1XnOLXiC6EdjWmfnIXk75K6v5nl71qozQY5/dj paT3SYNrA3LY
l1EWZyv0NopHqMDT6Jso2tJY98t63X77Ytjp8E3Df3zU/NvfUEsHCDjmjP4N AgAAEgUAAFBL
AwQUAAgACABxRj45AAAAAAAAAAAAAAAAHgAAAEVNRjItNU0yVGVzdC9wbHVn aW4ucHJvcGVy
dGllc1WLOwoCMRQA+0Du8MAtJT8R1qB2FhZaeIPVPGMg8YW4btbb66KN5cww nM1gfaH8KsHf
+i2fUP7xpJq9s5Dj04e7yIUylj7gYz6AFhqMUq1UK7lQoFprjF1qiHRG2I0Z Gs44+57HLiFs
4JToCgdyGD+h0BAcll+qtQocu5QjCiqeszdQSwcIsJi1IIIAAACeAAAAUEsD BBQACAAIAHFG
PjkAAAAAAAAAAAAAAAAXAAAARU1GMi01TTJUZXN0L3BsdWdpbi54bWxVT8FO hDAQvZPwD2Oz
R2kLGxMkFE6aeDAxRs8GYZZtLG1T2A3+vYXi6vYwnTfz5s2bsp4HBWd0ozRa kJRyAqhb00nd
C/L+9pjkpK7iqKyxVdKO+Mfde+7S8s2bJIkjKFtjv53sj1O1IPYf+sLuqSvA qlMvNfVLb8+Q
0hQyznPG79meA8+LLCvuUlDmE+FhtrCLoyQJK8JgUAIocZ5QLz7AGqknQYzr 6WaR4nDwuXFI
e9Tomgm7D9u0X02PpFrnF4mt8ovDOzkpyHGabMEYc4M5rCGokWtqq5pxFGTt v/rwsm24ZnkH
z6ZDJciwfEHOF1dEWLBTsss94Vp2OfcHUEsHCJuVQTT9AAAAoQEAAFBLAwQU AAgACABxRj45
AAAAAAAAAAAAAAAAIgAAAEVNRjItNU0yVGVzdC9zcmMvcm1vZi9FbGVtZW50 LmphdmFlUEFO
xDAMvFfqH8yy0kKlNA+gVHDYAycQP0jTaTbQJpXrSiDE3ylNF4S4WPZ4NOOx Loo8o4IqG8d3
9u4kdZr1X2AF9w/t/rvReTYa+2ociIfY3eRZnvlhjCwU2ZWwvR8nlBi6pY+M 8vjYvMDKStRn
xwulqIHzQc0TWLXRklLJ/Z4YI2NCECM+BoodyQk0xBY9xVWMDhWGumrqY49h IVa6qSu9QIfy
Vx+h/af+E+duQgpQPi/lKSW6dJBN8eo60ZKraSZhY+V2Jzxjl1YOAWwE7fkt c9N7Sz4IuDMW
tEkR3mS5ZaLtE/SRZ5+k9XmfZ19QSwcIisZUkvAAAACJAQAAUEsDBBQACAAI AHFGPjkAAAAA
AAAAAAAAAAAgAAAARU1GMi01TTJUZXN0L3NyYy9ybW9mL01vZGVsLmphdmGN U01v1DAUPCdS
/sOjVNp2Rew7hGg59FAJBKq4V17nJWvq2JHtAKuq/x1/xGwqtCsukT/emzee mdDttiphCw3X
09GI4eDatKevD+Lh9X13HRa0KifGn9iAYEbdf6jKqhTjpI0DbQaCXIrJIsGx J1yPo1ZkdkKS
u8/CukvFyLVBcvd1/wN5KqSZ3pu6hj0OQtWzRVN3mkNdJ6qfwOBk0KJyzAmt QPfgDgij7lCC
jmCwaXBsm337JRw2dN821B9syAkdVfcPdrqd0pzvHrPXUupfQg3QI3OznwrM INh5Cg/C7n3q
mGVqAWikaJ93UqinKBWJ898O6L4lAS0EYnkTSb001DctLmSkhk4nRjuLSXny 4D9LcwCN6De3
qSi+Py0HVGiY55fdm/dScBDKoekZR4iNgL+dV8HC4gA8V2URHSg8yAP69yob pf3J5IxZ5yzt
6RFZXeDaeyLU6K3xJvVoUPlh0seAJNCgadjGSl+V5AzAxwlhLdyC/rI0ng1E kR0Li/slCchU
8GxN+JXkl5iCsGrjCUpk5l2C9SCepUEm5RHsQc+y81x84BJ3Bh1absQU0xhq Ccm0aaZ2JnPh
amei1GeU/m/iy8jLYXnMcCE1xd/YrGE/Xjkz49VyvYpSEbNUxN+6WZvUwirg N7fxT34BSlPM
qvIPUEsHCLyC7MzzAQAAdQQAAFBLAwQUAAgACABxRj45AAAAAAAAAAAAAAAA JwAAAEVNRjIt
NU0yVGVzdC9zcmMvcm1vZi9OYW1lZEVsZW1lbnQuamF2Yc1Vy27bMBA8y4D/ YZsE8AOVeG9V
wz30kEvRJr0HlLSS2VCkykfSIMi/lyItW3bsOE6QIjBgUFzu7HBmVyLT6XAA U0hz2dwpVi3M
LDyTzQ2/eXZenLULMhw0NL+mFYKqZfl5OGh/pIP6EMeQYcVEbDWquJA5xHGA /QoKG4UahaGG
SQGyBLNAqGWBHGT2G3MDoxTrWZrNvtMaC/jGsXbHU5LNUuICo2RdBUXxqEaI NqHeL4ddSs7l
LRMVlEiNddWBKgRtm0Yqg8WnkGF5SAFIOZvdzzkT1/56ieexpHFaoWmfoeXY Ljynh5S4nGem
/7SUs5JhscJZ7cAuxJR01FLSrK841xjkTy7c34/gR0evqzeehLNBX5ppo2hu vpwYZfEkhCoU
qKjToXPWZpzlwIRBVdIcoY8H+Nc40XXnCtwPB5E3PnJYF+jkFdo7ekO5xc7e vqNrI4Eao1hm
DSYhf2/nRJ2l7eJ82TJIRWtqv8RKvh42MC1GBnKOVH0MCO68awCFlPM70Atp eeHKuiZUnjGF
AnWuWOM7tD2bJB1D0rHY039taK68Dntk2MVxie4tPdXBwvGlC4pq0gsdcvvK 53UZwXOFfyxT
WKw8j7ZMj7zrUagGS8TxxA/12tpLNLt8PXJMjrX8CY0bqmi9ZNNSEXj7ErFX 990rzI1kBWx6
EgptS3Sw+7fH/O3mYMcL5R1PxNNst2dj4/X5kiHZBHjttGyhvX5snvd5+O+T dIRJj1U5OFy7
TO1P2QMQsvEhGg7+AVBLBwhM0snYPQIAALoIAABQSwMEFAAIAAgAcUY+OQAA AAAAAAAAAAAA
ACIAAABFTUYyLTVNMlRlc3Qvc3JjL3Jtb2YvUGFja2FnZS5qYXZhZY/dSsQw EIXvA3mHERfW
LWTzAIaiF3vhjYhvkJ/TbNcmKWkWFPHd7W5aRWQgnBxmvjMjm4YzakjZNH7k 3h9LW//yr3E1
N09ucxGSs1HbN+1BOaTunrNLyRV1IwQZ+D6K84QsXLIkRMU+UsaYMSEWXfoU KXVUjqCQHAZK
5gRbaKsQWmXal5qhpGmVnK3t/peP6P7Rf/Z8mFA327/Oz4K59SiLvNvVtmtq lR4RWRe49b6z
GXpLfSzInbagZZTwXubsiZ51gDsMCPMp9MnZF0m5NnH2DVBLBwg50T3V0wAA AFcBAABQSwME
FAAIAAgAcUY+OQAAAAAAAAAAAAAAACYAAABFTUYyLTVNMlRlc3Qvc3JjL3Jt b2YvUm1vZkZh
Y3RvcnkuamF2Yb2TXU7DMAzHn1updzDSJGBS2wNQJhAaUh+Y0NgF0tTtAm1S JRkwIe5OmqRi
nw8DxEtlJ479/9luOh5HIYwho6JbS1Yv9cT56faBPRzl5ag30ijsCH0hNYJs RXUVhVHI2k5I
DULWCdKGdQoTbCtjC4nJ9J5QLeTaRqZDybM4hgJrxuOVQhmXgkIcu/KLJUJW TPyzLC0mUAkJ
2hy3osQmsVG5hk6KV1aiAgJUItHmHvVSlDYcCV0CFzwmhdLS5ALaEKVAVLuZ rBbk5b6SG4WO
Mpmbz6PDdjc1cpSmZDn0ZFU0jALjGmVFKEL/wiMAvmuTX8HQCviIwsC2IvC8 ivG6QS24yaA0
4SaBF1q5J4mLPdq34DhIsKM3sIKDLYH57GlxO7ubwrXjNRNtko2IvPcZZ/ri 0s7xW/0c9Ury
fgYc30AUz2habbS7bp9n2E5847LU2Oe/BZG23qnlDvBbTh/r98d7P2F86Pfp vwj3ix3gs0Ee
zNpHsfo1G/5pter6fxlLKNbmgqm/WkBPdUqtI0s7zKxGveF6uk9I0429jcIv UEsHCJIG+vyd
AQAA5QQAAFBLAwQUAAgACABxRj45AAAAAAAAAAAAAAAAJgAAAEVNRjItNU0y VGVzdC9zcmMv
cm1vZi9SbW9mUGFja2FnZS5qYXZh1Vldb9s2FH22Af8HLiuQNputdntb3CBG ogzGEje1E2Bv
gixdOVpkySBpYEGR/z6SoiRKoj4c2W73YkgiTZ577j3k5aVxdjboozM0dqLN C/ZXT/Qifjfy
H8THd1P3HX8wBv2N7TzbK0B4HXnng/6g7683EaYowqsROIG/ITCCtceeIwwj c0Ip9pdbCudN
Pa8Cm5DGXvfx9I395uABhtABgdFIjP1pOERLWPnhcEsAD93IQcNhbPjDE6Dx 8kJOMDaWF8iL
MKLs8zpyIRiJXlOKnCikth8SZDsOEBJhknUEaqNo+Q84lCAaIQwbDARCGs++ DeKpEBoH/gXY
zhNyuNW/jg32XmzywKZbDCjyUFNXCLfrUosduvEfXZuhoi8byHqMjQSLoARC t0zIJYHYzaM5
+7mxHRrhl7hFEIKe/dD9fCID4iRuWUEI2KbgJuGyXQa+g/yQAvZsBxAfS3KM 4F/KZiYo8Sr6
Nuj3hK960iFJtIX2Gkbx50of9qqt6RWg9QS23oLFZrhCMJvcmegzOuHGnoiA qUZBNtyKx/n0
gHAWFhufA3qidPOHYRgcmPiJw7sdxgNztrDu5+bN9O864gjrGgCNQhYAhNpM jjyaaQZ3//hy
8TWdLR4msyvuXMEeWzOCkdJjyt/90KfvP2jQK2pGvpuK/PTbZeCHz8qIZgBr JnI+GhrD+kK+
jw32/HoaC7erpakYizNq2ws2/rwCKv/y/kMldUykyLw178zZAyPso4YRtsws AXMfEoq3Dlue
7CBZp0ji2tMiBXtiIA8YXUbYZUu8Fr51Y04eHuemdfXlsdKY1u6dMSG5RR+L j+jwni5O3tbd
6v8afM6Xv2sr8/wnDVnJZqQSxWlgOyafiW+X0td2suMfw9856JYlF3J9FPyi jYIaw75u7cD3
fObmH8jEr4+T2+nNlH1qMFbnxfb6LYf3EVWcN7mo5SqDf+uicUU9Qt5pGngw YSszttW0fG2Q
8/3k6q/Jnzw0dIz8oEKWoFMJa4T9fxRvalZJtrWy7iRdNXSPKNrE1KJc68Ss X5Jbi/aOH0NS
yYq3Awo2na2tXMUfGsR69+XavGUs/b5bdMuZiBLX8ljK12t27pSnXxT4hB7D +8IOy5JBsOic
P2bOPGIIx0YUAzjeSFVT5sAAh6R45BdeEmDzsSp3Uc3RoKtRWACpw1HKxUfF 6JWtlVEaF2aQ
eoI470SHmplWptLHYUaT5ZT4UeG2ICmfd+/AFP+W7k3VjCW5fcrc4QkrIMtN XM9XAjZdBHmv
HU4nWfmwSK0VD3sYftPcISW6mE18B8o1EJrJz1lyAC8Uxu+2MCRlm3L+fZzV IJc4laiVrS2W
gDRN70aH2AJLmc1xqFC23xIRoq0FDTL92VGi1WmMhh3lUETUsCHHUWgd1hKa CiJVE0oCbcog
s2uOlHArG6yGeS+u5rNnmyIHswwM4oakTptmY8ndx754fNvMFYVeeSnBjVde S5bX4r4Gzw/Z
rIFP2QxB1WUOh6tc54hhxR0Kf6q60Cm01d7oFPqqVzpZU+WdjsBjpIB2q5ln tzO3CQn8JkYS
qDuWSbL2UBOv90+dLZpDWL5O2u6Upu5/JX4kQcmqltVI06uFUTkx7sTbG4rN e6VQU29ux2Mp
mWgis1h2zlGqS6N34bWhpJVIcQ/0aS3MMiZ9hbrS1lxe+waDm8te3830Ugms mgRtWtlJVm3r
u3vVUr7E205Gao23SUFZpTdHZSH/7MRbmxLbXjlTq2y7ltma+EqKbTm2cmnq GxS3Uynu0OLL
8sFyQa5sdSlXfOW/r8gwFJoH/f8AUEsHCOvExFNGBQAAKyQAAFBLAwQUAAgA CABxRj45AAAA
AAAAAAAAAAAAKwAAAEVNRjItNU0yVGVzdC9zcmMvcm1vZi9pbXBsL0VsZW1l bnRJbXBsLmph
dmHFkl1LwzAUhq9T6H84wmAf0MR7S5mMCoPpRP0DaXrWRdsmpKkosv9umn10 m6hX4k04OSTv
+5w3YZNJGMAEYqH0u5HF2ibbPTtt+OZgng+6goWB5uKFFwimUisqK11ehUEY uEIZC8oUFEUp
dYMUq5WrlUGazkreNL+f69RousyeUdj5mbK3S0ussLZXp90Ht9xvqfwNtp/s Ioogw0LWUdug
iXIlIIq2U17X0Ll5OW6lqkGtwK4RKpVjCcozwDDGKomzZOcbsyyJmWsNaW+A df5VPtb7MHUf
4rTAGg23mO+jbLNSCuBZYw13dqKLCXZmXQCAb9bpu14fSs99OAofYUD81OSn scn3yOQMj3g+
oo2yzhbzY6jR2PuRptVoRmMXOdl0sf8JwXT5isbIHE9p/IcCfOzeTvjNnsqg bU0NR3+CLqR1
qmVD00V6m949/QexdK+0w71B7hBxptranlFfHtA2wNhR5mHwCVBLBwgTxPRg ZwEAAK8DAABQ
SwMEFAAIAAgAcUY+OQAAAAAAAAAAAAAAACkAAABFTUYyLTVNMlRlc3Qvc3Jj L3Jtb2YvaW1w
bC9Nb2RlbEltcGwuamF2YcVWXU/bMBR9TqX+B29DIkU02TNEhap0UzU2ELDt EbnObevh2JHt
lFUT/322k+arLeyBlZckdu71PT7nXCfh0VG3g45QRES6knS+0IN8HDYn3OTB JD6wD2G3k2Ly
gOeAZCJmAU1SdtrtdDvmQUiNfuElDjJNWTASjAHRVPD6eyHnARBGUwUBJLOA iCQRPOBC09kq
+GZvlGCbNVpg+i+prtj4kir9XDAQISEYjxhW6vSFqAnXIDlm46vpL7ODl5e1 JARF9KRFyPYM
B7qs0wbvmP0qYmCnzbkbc7nO6Xfx4VrCd/0+msKc8n6mQPZjQVC/n8s55Mji gwS4dsQiMUN6
ASixBZBwqNFhBMkgmg5c1SicDqLQTBwG1fLA483FozS/35n1ZkZw8Uj5HM0A 60yCQlhCVRzi
kzwnY3kSQhGjgz/njPKHyk35xi2NH+agi90qZPGtBw7bUxSa7MKx6yWjMK08 ez4HDhKbwmvn
ZlNGCSLWBKgsg+C3NptTqKZghboIRH+6Hc/R7T3Ht7ebLa+FyHOQvFQKbYpC XAHye66ap7IU
pN8zSntPVu3/Uv/8aglS0hgaWPJGQXBrLUPcYI1KgtGWo5oVg0tqjIyZCr5e XYwv3wIv5XoN
9lNuvpHIuG5h/vifod1maWpsr35iyU0fKP99xskCyAPE73sWb+4/1++RM3zB 4ADVrN4C7W8J
78HFiuOEks+g/boSToD7++vh6Mvw8/j2+BmZ6lFaZpBf9+m2nI2NMx/BhJso BTeQiCX4reMY
CXN4yTGPj53qxVkzuTjeslKi5mrdTI9UkwXyy/hi3iNYAXqGwxMXVarhN07t 6GzQa0jXC6ZY
UVJAr6A6JJZbS265muvwoLXfKqm2tzJ/r9oUjIO1WYvsqRAMMEfG74ItoZqw 37e7VQqvy3uD
5F08Wpg1iCW0EtIb9/8WhpeCxubk2uS3oJ7D4w/Mstdis0FjQIxgxQdm4x2O 4yFjvl/9xkVn
5ZeyeRiVGE/rklUiFercNtVpZO3V1Tnn37lqs74Hkndwk4OpCu6dk3X3wkRt mPF1O/ldkx6q
xkmqV7ubOge0hZonFIblP1O38xdQSwcI1fEUOi4DAADPDAAAUEsDBBQACAAI AHFGPjkAAAAA
AAAAAAAAAAAwAAAARU1GMi01TTJUZXN0L3NyYy9ybW9mL2ltcGwvTmFtZWRF bGVtZW50SW1w
bC5qYXZhxVbfb9owEH4Gif/hqlWCViV5LxkDjXRCYu066F6RkxzUq4kzx6Gr Kv73Oc4PklBU
ugJ9gfjiO3/3fefLmefnjTqcg+Xy4EnQ+b3sJmuzbNDG06F3Gj+YjXpA3Acy RxALPjPoImCd
Rr1RVw9cSOBibqDLaBCigYuZeuYCDfsrI2FY3Kedr8kCPZvhAn3ZKb/6qX5+ JAdpNzMDe9Ju
g4Nz6rejEEXb4y602wnwvg8xHB2OSMp94DOQ9wgL7iED7vxGV0LTwkXXcrr6 cEhPt0yna5nq
RdNYH4O+t3mIFST/ExV3xhnjj9SfwwyJjASGQASuQaB3mfhELHECsBjtPvcY 9R/W/JV4GCrD
pznK2AYx1PhBQ1tZpnJ+a5zbiDA6o+jlAXMLvBTaMjOwlhms9e/N0UdBVEpZ FUQOoy4QJ5SC
KFrdWGGoIgD8KxWNIRRtOT/l/fDcqNe0zrWUXw9nJGISloRFmInZTNPOSGqd VWhqApFSUCeS
aCSxthZNbbvU8ateiFg4JzUWmNBrLjwU6UoRUwsEl6rQFL9hXIYuzKhPGIwV JlUp1/3v9tQe
2Ff9u9EEPoMfseQCvTH1kq4pBy8pewA2KkfvhZbbu/5oeDW0B9MdCPrvDMoY y6iqpas4jQuy
FkYBitaZglBbHQxG72aJQlAPS5CStgk41oTpRYZKoOo3PhTapDGiUkVloREz OJjaI/u7fT05
LO60C6Qirm9kEWMreXuGgyefLKj7DWWriLsEd6r1v9ghsWynFBEmvwfWKM11 yakq4TTTNHEf
H+NlmneW6Hi/iWaHHFnRaqN5h7TlS75b7lWfj5K7TMNa95L9bQWwDzo2EByx TyUE3SRjFcba
U/UVT0eh4eACHM4ZEh/UYMTZEteGeCicPAUZX+Ejle49tHLX1F5zSYjwyhW6 1DuzisxbUGen
AGU6N0JVal/HXBXqX38bDJ16Ie083TzNo4uiqxbHm5Kkaqmy+RVPFnsUIGuJ WU/Ij+gUWX2H
LBuXcIeTVvkX3NBsFJgoeX2AOHd+WJXnAGqUpqnDSbFlfHtFkYSCdZpHVyLr RzgMN+7K/ntT
ZbJNRlv4UhibTlLbJZyUNhv4R9EdtvKde2hvWyfuIq7qx78AcIt/AWrFeWv7 TMh/oQxWYJrV
sbxR/wdQSwcILXCSR18DAAC4EAAAUEsDBBQACAAIAHFGPjkAAAAAAAAAAAAA AAArAAAARU1G
Mi01TTJUZXN0L3NyYy9ybW9mL2ltcGwvUGFja2FnZUltcGwuamF2YbWS30rD MBTGr1PoOxxh
sD/Q5gEsZWMMGYoOfYI2OeuiTROSVBTZu5um6+wUvfOmnJw03/l9X0IXiziC BWRM6XcjqoPL
+zW9bITmZMsnXUHjSBfspagQjFT7VEhdX8dRHPlCGQfKVCmyWmiLKcq9r5XB dLOuC2vH/4XD
j/6z69XCHh2IrpIESqxEk7QWTcIVgyTp6VYNdDNRYuMKJ1QDag/ugCAVxxpU +YzMwTRDmWdl
flLPaJln1Lem6dcAbPhP+UwPIegv88sKGzSFQz5E0Ja1YMA6V3CasfVUgG/O y1q4LyTyTU8Z
Ns7Mtrd+OgQfcUSCbfKXb/I7M/nGRwIg0UY5HwTyMd5sHuYR22o0s7nPnBy7 3P+FYPnwisYI
jhc0/UsAfOouj4XFQGXQtaaB0aNI74TzqrVNd6v17epmcyY+AqUjY3H0CVBL BwjYrUXORwEA
AM0CAABQSwMEFAAIAAgAcUY+OQAAAAAAAAAAAAAAAC8AAABFTUYyLTVNMlRl c3Qvc3JjL3Jt
b2YvaW1wbC9SbW9mRmFjdG9yeUltcGwuamF2YbVVyW7bMBA9y4D/YWIEiJzC 0j1OghiOWhht
FqS5FzQ1ktlqA0VlQZF/LzdZlOwgPcQXistw5s28x1F4ejoewSmc07J65Szd iEuzDvsbevN4
FR+rSTgeVYT+ISkCz8skYHmVzcej8UhOSi6g5GmANGNVjQHmiZyXHINomZG6 nn9kdbf+jVR8
aHZvAHwcVoELoq+EipK/rv4LaZU1KSuCSC3u9dy9o1O+KWPM5v29BznYOHtO XMBhW/Wj2QzW
KAPMmhr5LC4pzGaGgUUBCjrmWAgiWFlAmYDYIOQqNJyvL22s83B9GXTusIh3 nV2lWCAnAuOW
v2adMQpUUQIOcFUgwBchvdTgVq0D07OHv+ORp9PxZJglRxmj1jBjTEiTCUis YT+ZwFx4twDe
++l4g3w8nZBnM6qVf9qDyAom/KlG6gkL2fNcC4nXXV6A7yynrdaCBwm0lh6C 1e3Px8XtMgpS
FG2R/MlGiOosDENFuR6MnCbTOeiILAF/EOnoAoomyyw4z+MoGl4M8Mz12Zsa 9UCJoBvwoxeK
lRYGtrPWj6PcDmtWpn5nOd+6szELfB4KwddWb0qxuxwTqc9CVrug2CrTUn0w bnfgmXTrpkK+
F+snQri6e0LOWYwdHNuqgOqK+Ka/AepPC+2Zaa7MppKLnrCEIV9d+9OWMEpq BKdLBPeL5ffF
t+gMLDsmhj01ue65dXN3Hf0Y3NGdqr1hH+WZUZvY8PJZE7/KMkxJtuBpo57o Vlr+5FHyarrE
yQS+QJfILcklELk1OQFWQ1EKIPBEMhYbe53jpNPZ4aixdOgXZysxrJcps13q dmZ/YL/kY1cF
cI5srWwRW7vDqsumoLnq82aQ64XGbbq/Ab3d7UPO7b/p8Hgd7YGUhLNsgVtI vnM0VU2zp+TP
whljxZFuge59xteuze4/w8lmfybuc8O2t26TeIMwHHSp8egfUEsHCJ0J8pjG AgAAZAkAAFBL
AwQUAAgACABxRj45AAAAAAAAAAAAAAAALwAAAEVNRjItNU0yVGVzdC9zcmMv cm1vZi9pbXBs
L1Jtb2ZQYWNrYWdlSW1wbC5qYXZhzVhtc9o4EP5MZvIftmlnCh1j2q9Nm6tL nJ7nEkiBdPqN
MbYAXY3NWSIp7eS/3+rFtmwM5C4t7Uwmg+TV6tnV7qNddV68OD6CF/AmSJbr lM7m/EyNO+UJ
OfnMC5+JH53jo6UffPFnBNJFMrXpYhmdHh8dH+GPJOWQpDObBBFdMmKTxRR/ JymxXYfzlE5W
nJzuk+xGPmN7pa4Vhr1yAzIlKYkDsh+jsCRX7FXMkra6EVmQmJ+WZ6+SkESV uZ6/IGG9+AD/
XfgBT9J1zZfCruOjTnY+T9ptmJAZjdsrRtJ2mATQbquzcmIQuOVGPqdJDMkU +JzAQqCCN5Mz
rfFNZ3JmF+pIHG4qezcjMUl9TsLspFeTiAYQiCMBA57wDpCvHLUwMF1WgCnJ w/fjo4Y0p7HL
nsZ2dI0KvIbE11im9BYnQEUNELW3Hr2FeBWpUzzE5rFx5r8GgU7MX7O5DLhd W3dTguIMfAzZ
mHEfk3JXsFqQIkzGMX1DuKN8rrR8fxfR+MseWrAHcmm6ho2Ze5is5Z7aWUpr Rmk3Aw9u/WhF
bO2R5Vkv4eS1XIFbpCTgcOejhgQCaY+pCyiDW+rLKSbSMVBapirdYUH4PAkz E57SmHIQ/5qt
ewvu5jSYgx+xBJYknSbpgqnVQoL6Ef1Wym+9pYWeQEfxVRozOW84LRPRaqaQ xAQ3QNjhGrMX
xZj9yKhghDz0KIwVVbZ7SnrDMbreEHmq/LI3+Cqk1GxJqmmwFfqwqdVaYHCu TbzecOT0um4L
47Nx/9PTQwUCTJIkIiL0mYeW4em8xbCIGKlPkiL48acfh0UQEHXM5VwBDBec pjpiZDqpdeKD
H68hwUUpg9USI0hFGsZeSJaCwW2AoeRttVrN4p1JRbKmaAEawKYUMWPqBH6E 0TuTu2UBjTpx
tryaZ+HH0J+IgkCYiHUIBpfiD4LG484jQ0+ILiP1US/soDH6o0Z/SEVaRmsL JXA2RSxEoxG8
oaDm+UI5I9G0yO/+tCSgvI3XV2k34QtLGFnsKr2otMz9WwJxwmFNOFpLYjML Fd3QtOAW5dUp
TRnXJKKiRm5drJTOIcWGYhFqio1YEHEB/C7BICNL9lqfPuF+WzFqMvkbPcNU FCD4MncolRpB
dkp4PhoMDoydLGBUMnacr3/O6vZaIDumoupCjlSa8GyZpHo/lmFY+N6Lb5PA oLUiFO4owhUu
9adTwbkihnPYfO5z6XSNVFOa9LwB+UeQWx01KY/p9OsmGCdY7uRclbOXQrFN rIYwVLGl+cKs
nhQXKmZDGm9mHNLSzA9NQ7q1wbx2xnj2jPDsq7nE1ka2FBk1Oh3oT7iPsYVx o685MzaNu7NR
rQrxgE3ob0vYhESr+UCAGai8WsAQqe72x+YFv0fZa4jJ3ea1kZlu0DNPV6Rw iCLmnCVk4Ic+
97O4F2Jl2+0tcVLo9PIoybMw11ujb0dQFTqv/PSLgQ7rFBqHNBDYkfEDP34u KAqCuR/PZPBV
d5mmhHwjuUodYWWhn3xzqkTQtaQ4RVVUZymgIZWK/QMjMvu7CqzNNuAw2PIO u4pvLAYVkM1C
vLUJWGbOEOM/QGE/usDQXKUEw0x8aL782YXTXoM+rjALREHygy17dSDL8jDK 2KlsQqmNOzAi
+ZhRwWN0dodBkz/a5IjG2lNs47Rz2ZYB87cIYKPpEHYYw6oRxqeWQK5/e/re ax6oUylalK6+
jXb2KKpzry82jSqzUuNnPcps5WN1HYoLSpfPWaknugms9mhRG2Iyy5JclsyP req2ntdtQkPY
cmebtZd2TlZ8naqyoXBZbd0gn9Dk40eo24GpDkohV323UijUsOleuldub5Rd yLXPTKUFPefK
PR8byxoN/T2nxuamFgtK68ZjMfz/qz/eOJfehYdTmR6hqfpCVcJ97XT/cj7k suUHpZLkVf/c
vSxhy2mgaSyzQAqOx1rz8OCJ5Bmt2pZkSkTnrd+Rdj715J1pkXM6t/K+TyXY 75pbO+rXam+j
fVbJsbI3y3lm1NJGd8JU5YDlfx7MYopdY4dKv8qu4HrgXnifjW/YJjQ3GyKd x3y9JPKNAb1N
UpZ/HorOP1mJ93DJf1vEnDAE+TYlBJh8RVTEUJ/Z6h4T8iMhj/eXH4ZN0Sfb ZlmswJdya/fK
cvm6pSMxGCvjqlNALZAsxSFj8KiPppl4SqhBZykpE4Tezw7U8ESPTyzwhmPn /XA0cLojC57g
yOuN3MGF03Xltw9uzx04I6SSrLUbdy+d4TDv2Yota4nJmMs3Nycfh0DvX5Bj ffltgXwXzbos
XaDQeCY+nQjcCEO8mlvwSv7VwRbIEGRv6CHHquGn/qUz8i4Vzu6fTu+D67wX Q/Hxpjd0R6Ni
7J1LsZue9/FGT527A++Tq+b7Axy55w+yqlKD7zbvH1P4t7KzEj+lHLLUQ3Xe zuvQ0eMTpfcH
BW751pLcnu0nR4/cTe9V3JI1hbUFGT3kbUl2UifZ01t+di8taL+qIP0vpyaG /avr/tAb6QMa
uMP+5ScX+bj/2XOHmwf78AMt6Bo5K1mlASkqhYGeMSlelQT30OlU3oWOj/4F UEsHCInmlmZ6
BwAAJB8AAFBLAwQUAAgACABxRj45AAAAAAAAAAAAAAAAMgAAAEVNRjItNU0y VGVzdC9zcmMv
cm1vZi91dGlsL1Jtb2ZBZGFwdGVyRmFjdG9yeS5qYXZh7VdLb9s4ED7bgP8D FygQJYDlH2DH
SBGkQA6bLNoccqWlkc2tJAokXa9R+L/vkBzalPyIkzS3XCyKGs7j++ZBj66u Bn12xSaZbNZK
zBdm6t9H7Q23+eU+/2IXo0G/4dlPPgemKlmkSyPK8aA/6IuqkcowqeYpZKVo NKRQFWkmq0rW
aS2NKNbp15w3BtT4TPEH+xBO/swTKFQGK994ZqRa3+PWKQWQSQXp3ePsX8hM LOjiuyuhgtqM
27t/yxzKzt4DryA/LP4df/7xqDkDo4D8X8Mhm8Fc1MOlBjXMZcaGQ8/C0wLY ZDalWBgFMxnN
pqyQihn8XFkvUid9b1ij5C+Rg2a8ZpxOIbU5TDMF3MDz87NlFt9ZBWYhc6cH eLZgWcm1ZrLo
anX+QZ3ve3ejAfZi81/mUINCe3lIl+WsFBnZsNJtehj8Z9CEZvussd+Dfs9h 1SNAMvQWcu8i
ozxM/eejWPaOB9Lr+NtzDvcQSYO5gIa04QZ9j2L0tmMydx7eOpwdAaLGo3UG AdRASOGj+wCf
Pcr7+CaXDsaeKFgS+86ur1m9LEv63Gt/i0NO4f7hx9PXh9u7sZXc4M+mHfh3 MEtVa7ZaYGKB
TU6hQ6gMl7xp0Dk+K2Gbu2bdbMGRrvTOweTJKrY17qoMuZE1U2Tc57pRSwhp LmL11g8Q5B7R
eKFDEmFXcI7GzPljnap4iRnvzR9B4gDLN4+/QCms8h3jMylLsH5rIvybVE+o Mnkk/90jSgKK
C+mPKQ9pQP5bGLdsx8cCPOgwtczOySQJ+2Q5hVtb+sllOgdzR+YwKzsO7KyR ooKX2u12ks32
Ab0SBvuWWXDDUAXMXd0Z6UA82fT0R7YLWzQ/nGsTKsKpj9FvsmsbXg2rQ4Kh Tlsc9wLLYQxk
XAPNmISebYa38Pn4SYaOJ5cOZQ/zy4biiZbELydNxoJvsxtyxM2X0JJOmSSZ t1lzszxxvyeN
OInXm8ih4MvS3KKlUBmnGfMyhwxtjs+b7XyhpkLNkCusOSqA9yZ+wxWvmFcZ 91WsOmc9dK3Q
QeKp96JX5/W6LW0u8ABRuCWSbwQruRGVX5pLv9i1KDqx7TIH0WW2YuNQEO/d cPD3movfN6Wo
f7bujGwC1ZTWkxGuNxdnzzjKmmOzzg5upqVvgCt7L6rxJqdFiUNmXuN91mW2 HnuNwuCgQ0PF
srRskQR3MnZS2aGHw0r4ubcSqDvjtl9xXJkFKcOw1yu+Pn8G2pMRdIHp7c2R oHnpStMmvdtY
WmRbWA5MjLcz2Wp6lk63wT5JPUpqjNjrmD04Nz6W3jBbLLO0/uR0n9Pt37vX 0NmdyR/LpB/f
lke3+mRxn0UHzOs4bF953segdS/AbAP8k9y8G6Rzh0/nbnYckQ0bjfb/iw/6 /wNQSwcIrD+p
khAEAAB0EwAAUEsDBBQACAAIAHFGPjkAAAAAAAAAAAAAAAAqAAAARU1GMi01 TTJUZXN0L3Ny
Yy9ybW9mL3V0aWwvUm1vZlN3aXRjaC5qYXZh7VhbT9tKEH52pPyHOTqVcBBx zjMJaRFYR+hA
WpU88FZt7Em8xTfZ66Ko4r+f2YuTNXFIoDTqAw/Aendmduabb2dnGRwfdztw DKMgy5cFX0Ri
rL8HzQk1+eEq/CAHg24nZ8E9WyAUSTb3KsHjYbfT7fAkzwoB39kPpia9a14K eyUrFh4GMc9L
9DCZ0zgr0PMvYlaWw11Sn2ffMWiYU7v7MSaYimFz9iYLMX4yN2EJhu3iX+nX Fx2T2mBQ4/JX
vw8zXPC0X5VY9MMsgH5fYzSNEEaz8e0DF0E0GszGMM8KEDSbyM2PSuBphAUX LA0QIo4FK4Jo
6SnlKwFllUsHSqUSsDiGn59int7D32Gmjbom5h6sZjI98aiMiIy2+JHdozJB OQxxHLAS7+7u
ZALpCxIUURYqz5AFEQQSasjmaz9PlKlSsELwdAG0TaQWWSAqFjcV9O5KgaUh 5EUWIIZSrcqV
QGvESr5KiRDAIM3SflpRsAWWVSyAlzQSVZFiqD15iDj5yTUsRshsXyoMvHVm MA038/KpRNzI
ql5ZYEo+CQxrGlezmAcmRiltkjkdw89ux1EscEyqA4IPQ40Z5LVV5zmSONv9 dJ644yh/HEJU
EMK0DyVEkGtWCHprm6VrBy8KJDslZYVSUGr8n4L21q5q7NaouT0FmsPn4Nqu wtkZyIybZae5
Zkfo4dXkdno+ufCHUpJILn8acdIxKduZ/gzFDfmyFA3XSk1EsIg4BC5gyTEO JfOYMNO/ipve
T7ky50UpNvhfkx9mS3KqNTJZG7xdeZjC06ohN10VEAW9cWYluBbwUNVgt3di aw3fE7BPAlZn
1s6BwlOBqUYnsDUr8rys5CgRWSoYp03oPNHJsU9LfYLa8qi1FyjUgM+p+F5d tuRTnSoH4xKN
MXlHj7T6GPC2yrGYLnOqJWfQsOuvl1xtyfihho6l6fHST3KxpAA+6kUnxDkj sC8IV9cG4LRe
r0OxzdCm7j9bInin5atoyVOhcTAEeYaW+t4A1xavCSgdaRRu/9q/8SfTU7Pu mC4L0Pw9A9dM
9dYbaRI50zrkM5B2jZxrVA3V1Cmp5er7ZKW3hV5G1WBt8qnmHtvDmJzf+Jff ngZj942Q2h8U
lr24MzZb2LUt7RWljc6Lld8Koi/nF/+d/+uvwFGNVn2bm7bomwTGXtgJjJFz awN749FA9MXa
r1J8KyRvPl/61ysc1YPFlCVCT33uhE1J6Wbrd7pu1E6hvnieMdNSnL+a2tps 6KkUYZGTRfl8
WD8ugG10sUcjTMYmVaMBjY/2qb7TiN4Q9MbTetRMZ+mqyktYhlpMT0kfNt8m D5zG5GXCUyqt
W7rpLQU+ZwVL6pikJj2w6EJr7crt2+BNAVJPofVz8tmHdW+jgezt7jntQ1QX xayl5awB/x3M
UCUA3vnxapgOwpJGoW7cqIfmi6m/70x5CUAH4UjdBTR6ikPTQ92p7+TYH56D UEN3OrpJOjQj
jKd/BidOYFbJTMsddFz0PhMKI3J++cCWfyJr2iB8EW/2+PeX1ZTWj9qdTHmE wWD9H8xu539Q
SwcITpTC9ogEAAAQGQAAUEsDBBQACAAIAHFGPjkAAAAAAAAAAAAAAAAdAAAA RU1GMi01TTJU
ZXN0LnRlc3RzLy5jbGFzc3BhdGidkEFLAzEQhc8V+h+W3DtrBcHDrkVkhRZa pV17lTQZtqPp
JJ0kYv+91VoUoR68zRu+ee8x1eht44pXlEieazWEc1UgG2+Ju1o9tneDKzW6 7p9VxukYg07r
veh9K+Qku+KF2NYqilHFx/IwlqdJ4/lIeukAjaMQEZ5tAqczm/U+HSbz5un2 ftbejGfNvPzN
EScU1g4srnIHmb4uUWCRNFstdjltdwHLycWiGQzh8h+FgkUwXhAEt5kE7YPL HXH8y8rnFHI6
uq2IP+Gq/PnAd1BLBwhjc8zAzgAAAHYBAABQSwMEFAAIAAgAcUY+OQAAAAAA AAAAAAAAABsA
AABFTUYyLTVNMlRlc3QudGVzdHMvLnByb2plY3S9Uk1rAjEUPFvwP8jeTaxQ 6CHugrbeVgra
H5AmzzWy+SDJij+/Scy2LCJ4EC/hzbyZzMsjpDrLdnIC64RWi+IVzYoJKKa5 UM2i+N6tp+9F
VY5fiLH6CMx/gGNWGB/UgR0RRSWUn/V6Pn2r5ztwHvlwOIJTIyqYlhKULwnu q8jm61wCeIB+
OtHyrQEWUYarYKWKJyaHatsgYK0wDtCRe8S0DQU90WQA+z9CcFDbdDHbZYyH BMFXKXflGg6o
pkrsw5uXz43dsgNI+pDQzPQrD3m+s5DVF3B725d+HCDpbnniyF9t1wi1uTL0 dUz8+wvDj/YL
UEsHCC6xpvjxAAAApwIAAFBLAwQUAAgACABxRj45AAAAAAAAAAAAAAAAJwAA AEVNRjItNU0y
VGVzdC50ZXN0cy9NRVRBLUlORi9NQU5JRkVTVC5NRn2RP0/DMBDF90j5DlnY iEUrweCqA6Aw
IIIqiliR61zCgf+Usx01/fTESRVSCbFYtt673707l8JgDc7nb0AOreHZgl2l yV0wlYK8PKmT
uJykZ6GBZxd7FRo08TEp207vrEI5OoryYfl+XS5fewzz/eFWDk2jwPe8tafw WziPMAtxr4Rz
G+E/eMZmXlNZigHItlgBnUV4slIoPAo/4MaMk/gC3wEJquIAMkRHYVokazQY z7NH0YptkS/Y
TZoUh70ln2+E/BJNPwtpW48zpMmJko9QnllqGEiFewdMWgJGwXjUcJkmZztY tehwhwp9x9cE
MLSIpjkAdN3fI+Wg8d+Kz2Dwb+Y076302A6r2MRv6XimxLFLkx9QSwcIxfyE uxUBAAD7AQAA
UEsDBBQACAAIAHFGPjkAAAAAAAAAAAAAAAAzAAAARU1GMi01TTJUZXN0LnRl c3RzL2Jpbi9y
bW9mL3Rlc3RzL0VsZW1lbnRUZXN0LmNsYXNzbZHLTsJAFIb/gdJKqdwUvK1M NIGS0LgzwbAh
4qZxA2E/4IBF2ia9qI+licbEhQ/gQxlPh0pATZOZc6bnfPOd9vPr/QPAGQ41 ZBjqgetPrUiE
UWhdLoQrvGhIiQaFYX8ee05kTQPuigc/uLOSNz0eCgZt6jxGcUBR0ZaEtLfD oF441NVlqDXs
Ob/n1oJ7M2sQBY436zRHDErPvxE6sigY0LCVB8O2gRxUhpLteOI6dsciGPLx gvBV25/wxYgH
TpKnh0p064TkZ/8vTxKKR85J9x8DBj0UUf9Hv9LY9E8E9dlaQbnR/D2hPvDj YCL6TuJSXru4
ndymHNNAWfrEZJFMRVGWYpqU1jxlV8jQAxTM1ht0k73CeKY0gyKtRdl6Qo1H 0HGKEmX1ZTnK
qAAyqmJH4ndRS6HdFKqarQ2eLk/bxLPWWOqKpUrFhFXHXsqyaGe058wXGE8r lCoPzyXGWBak
GPoVsurgG1BLBwixDeCLZgEAAF0CAABQSwMEFAAIAAgAcUY+OQAAAAAAAAAA AAAAADEAAABF
TUYyLTVNMlRlc3QudGVzdHMvYmluL3Jtb2YvdGVzdHMvTW9kZWxUZXN0LmNs YXNzbZJdU9NA
FIbfhTahaWgRSsEvFD8gTZWA4o11mHHKxzhTq0ORC7la6lKDbcJsUsF/pY7f F/4Af5Tj2W0s
LdOb5OzZc57znjf58/fXbwBreGRijKEgO+GRF4sojrzn4RvR3qPQRIph/rgb +LF3JHlHnIby
naduqjwSDOaRfxZ3JUV2TffrzgpDqsP9gKHoHNSO+XvutXnQ8hqx9INWpbRP 91UqtJDFpAmb
Ya43IhZE8zV/txsEQtrIIc8wLrsEKzgDrGqbR5FG5Wt+IOrdzqGQe/ywTVqm a2GTt/e59NU5
Saa4bEUMMyMEMRhPfJq/wTDrjNJrYRxzNgqYzYDhso00DCLGb30iFmujnFMe BGSYUjNioBWJ
ePu/d3ln0Dy1k9UauM45pWFz09T86oRscXTt1llTnMR+GEQmlmjD83H9mwwc uCZKDFOatEuP
bd6MQ/nBRhn3GDLiWb2x97Re3VKKLxZVsgRYseFhkSHblILHQquxyI81Gwu4 wTARCy43w1P6
VFYj7Mqm2PaV87m+KStKGhapZ5z+PHJIGUmRgQxMTFAmQ6d1ejOVnWY/YH2i aAxT9LToDSxR
zzIuUWT3qjCNGU2jz5MQdqhS1Wbd8ncUXfYV8+eYnB6+SpgFQq5pVLFXjiu4 CujoGq5rgbRZ
At1IoIZbHuL1ZD0mXmWAZfRZhl5SsW7q1RXLS1ZMu18w/7GPMnRyc2C7dIJJ 4RZuU9UdHTPc
1ZgKZVTVpPsZyz9xn+EbVi8qe0GolwPIyT7ywQjkeoI0XDaC9ZoEHQyZ32Mx PNSV6/8AUEsH
CAPejqxVAgAAVQQAAFBLAwQUAAgACABxRj45AAAAAAAAAAAAAAAAOAAAAEVN RjItNU0yVGVz
dC50ZXN0cy9iaW4vcm1vZi90ZXN0cy9OYW1lZEVsZW1lbnRUZXN0LmNsYXNz fZBLT8JAFIXP
lNJCrfJQUEEWLkgEExvdYtiorBo2EPYFBhxD26QMxp+lidHEhXHtjzLevgyB xE4yc+fMOd/c
6ffPxyeASzR0KAz1wPVnluRLubT6jsundwvuck8OSdGhMlTXDGtnDNq18ITs MlTO7Afn0bEW
jje3BjIQ3rzTGjGoN/6UG8ggbyILjaFgC4/3V+6YB0NnvOAMZdufOIuRE4hw n4iqvBdLhob9
T2sdsnmkhYityxmMOZc98SRXAQ/7a8WodUgnD4Z9EweoMOiz1LsXO1OTjkOG 0laYoZgyU6dB
uJqJIkp0+8BfBRPeE+FrKputX4T9qqfkzyD8MlTR76FZp10XCg1Aa5+/I/dC lQKDZiNSa+Ss
Y4eqauyCid2IomEPBWKoYQsJ64pWRmuu/YryF6rPfzQt0psRyYw9Mal4S/mj JN9M8tn2G443
wywKK1FVj6qTX1BLBwgiQphxVwEAAFsCAABQSwMEFAAIAAgAcUY+OQAAAAAA AAAAAAAAADMA
AABFTUYyLTVNMlRlc3QudGVzdHMvYmluL3Jtb2YvdGVzdHMvUGFja2FnZVRl c3QuY2xhc3Nt
kttPE0EYxc9A222XLZRy1aKICi5FKWC9LiExhRqTpjFQefFpKENdbHfJ7lTx v1Jj8PJgfPaP
Mn6zHevSdB/meuY353w7v//8+AlgE08NjDDMBh3/pCRFKMPSS958y1uiQRMD CYZCbK/OO+J4
ry06wpNKwJDocNcjgP26dsrf8VKbe63SgQxcr+WsHtJ+xT8WJjIYM2AyzJ12 PVcS7Vx23ZJC
7Hc9TwQWLGQZRoMuwabtGKvS5mEYoSZqrifq3c6RCBr8qC0Y8jW/yduHPHDV XC8meNAKGaaG
GGJIbbt0/w7DjD3Mr4lRzFjIY4o48o1LnPna8NoQLOFROZSLIReZLSGrLqUM SJGzV3sUfd7J
gOGahetYZDBO/snGeyJdX8fAEoMVP8eQDIV8dUaFslVFzL3zpjiTru+FBlYo 838j/Z0MbBQN
rJKLCLVPTZU3pR98sLCGuwwZ8aJ+0HhWr+ypLIMiZ4wA6xZKKDBkm4HgUmg7 JqXYtLCF+2Ql
jOWdtC8nUV7TUvBg13/vqdrrcsSfk6NojyxcVfeYB343aIqqq35oLlb1dZUQ SyQdhfpS9LKS
1FIZaVamnqnVPPuG9CcajWCcWpN6oEDKBUzQyOqpkMMk9Uz9b03YIaXSpopr XzE9SFgmwkpE
mO2pqJ/TPuZxhRgJ5V+ztrSbdPELFn7hxsc+LRWtb8S8pDUpgZu4Rarb0ZjR jYrk0IpSZYuf
cec77jFcYGPQnEOo7Rgy20eWhyDLGpkqsiGsKgV9fqlUESu3S/Ee6HjLOl6y eIGHg9lYdHgk
Gj2ORk/+AlBLBwhbju3nWgIAAHMEAABQSwMEFAAIAAgAcUY+OQAAAAAAAAAA AAAAADQAAABF
TUYyLTVNMlRlc3QudGVzdHMvYmluL3Jtb2YvdGVzdHMvUm1vZkFsbFRlc3Rz LmNsYXNzdVFd
LwNBFD2j1epaHy1KfdZnisSSiAcViUi82HhohYinwaip7W4yO4ufxRMh8QP8 KHFn24iwNpO9
986999xz7nx8vr4D2MBCFl0Mo6oVXDtahDp0auTued6xCbJIM5SakS+1c614 S9wH6tYxqXok
tWBIt7j0GYqVc7fJ77jjcb/h1LWSfqO6fEL5/eBKWGDI2bDQy9AdthvHKstu Em7VQh8Gsugn
Uu28Fg86knGyFvm+UDYGkWdIqYgmb1aSYZLRayKMPF1lGHClL46i1oVQx/zC I0IFN7jk3glX
0sSdyzRXjZBhKEFdD0YZLLOscrwqI7JkYxwTDJkdSbN3GUYqyWuZSGQX75QW kEKJRusbSaNL
7j9PQyLSPnUb5n9mELN6EKlLcSCNjPzPxjVTjVmim4L5UsihGxmKsxRtkWVk e17MsU+fyO9C
gf4WWWCSqqYwRJ7drsMwRsjmzPN2MLYJ0+TsN7CzQvEZY4crj79wFskufeOY O4uwQT5tsIOz
S7emNrOy+oyp30wcYr0eIxTbVZjGTKwog3Ksj2Eu7pn/AlBLBwglamRAnwEA AO4CAABQSwME
FAAIAAgAcUY+OQAAAAAAAAAAAAAAADMAAABFTUYyLTVNMlRlc3QudGVzdHMv YmluL3Jtb2Yv
dGVzdHMvUm1vZkV4YW1wbGUuY2xhc3OdVwl8FFcZ/79swmw2A4UApaG0LJS2 yebYCmIh4SgN
iV3dJJAEKNDaTnZfkoHdnXV2libYWtRWba1aTwSttV6xXgVqE5Yoar2rVsWz 3vet9VY8iv83
u2E3m00TJT923rz3ve997//9v2Mee+rUaQDPwDkNZQIX2nGrP+jIlJMKdnPY NmTEkzGpoVxg
/j7jgBGMGYmBYFffPhlxBOZsMBOms0nAU1u3U6C81YpKHzyo1FGBOQIXhM2E 7EzH+6Tda/TF
pEB12IoYsZ2Gbar33GS5M2imBC4Klz69hRJxw0zQvNq94bwVPY5tJgZa6nZq WCCwxrIHgjIS
M5MpGZTxfo4tWwZtmbLSdkQGTaoKdufeeqQT4rsP81FZhUW4UMNigcAMKgp2 61iCiwSWDkhn
YrbdiDiWPdwtB8yUYw8LbKitC89S46rc5lUTu1uqsBTLNFwssO7/1aHjElxK WGlj25AjEynT
SvRaOakOIymwgBa6eKYdMxbkVIsXfgER0LBSYG3pg4fiZhbM6ztCRXfPYrpC YXo5rtRwhcDc
Sfp11KKOdEmmyZ51teFiSrVMnambOqU8Vq+jAY0kFG+3zYjsNwZkHvn6aZFv y8nmgfYiKLBk
0HGSzcFg0GWg+mly5SsZGWs0rCb73RXFypwGHc/EWoFKGers6d3S2dqmyF0s RFOvVkCsE7hy
lgZVohkbNLRMCrie4ZQj4zo2QgWbpdBbnMXFtILbGAYOg0Eacd7mGoHNbQlH 2n7DH6NGv9Xv
7zdj0p80nMGU37L9O7pDKb8zaDj+QeOA9EcsSiccCu+XfhWJzT5ci60aWgUW ljhDRxvaBbSk
mooxKhfXlgpKL65jApjAtWO4SWHjw3MQ1vBcgeXFcESseNxKZJlCC3V0oJPw RnikIzlBPpY6
Z4qfi/S4ZNmmYzu6BeZltU2wViBcO+P+WcdwSyV6wVy0o5AsucBQZNk1iSC5 BZrXi9069mAv
YyVrXo4RVEMauxsm2OTFjXR/v2VV4SYYGm4W0AsFdPS5rklJp9OISy+ifDGa +ppyW/p1DCiB
+RTYnjZiZr8po0qyCib2a9g3LU2n3FZHDHGBKoZfa5ZAzOCXl4i7QjzbwiQk r2zh+RqYf1bM
KKzDBhV7jGi0iGgT6WGPsj2t4wBuYZ1IkdECtbXng6Mr7TDZ5KKjKNnV7fRh GC/QcLCA6aGu
tqGITDpMljpudatYMkt+YtxrGxFWwxcS9wn5dsaWD7fhkKp57Wr0Yh0vwR2s jmZKLbrVcY9a
eKmOl+HlVEjQtvSlrFhaOdsZFFhUWzeV2ypY7tbxChUHOWoofSSl4vQrdbwK r856IE/ojpkJ
vWf2jNbwGubGYsOuTZuxqLS9eB3ZFbaMqIz6fbgXh9TPG3Ucxpt4eSOZlAk6 rbGU06ZcNqez
Rak4quPNCiavY2UXFWHu0/FW3M9Jk6nNYOiobqCweoVy86TXA3iHhrcz3Kau 6ngn3kWeJOSQ
Uwx7zjgNIwKXTJOtszKVeBDv0/BeMq20nHvmVtMYSFgpx4yYBrn0fnyA5uer RWAaN0zdS1Qe
xEM6juE4NRxg3EbJBYHQVGdPMnOG7Jg/g5g9jEc0fEjgitnt0DGKsSz5euQB aZvOsMvzkBcZ
AfggMK7jw/jIRPjktwpsfHqSFthVqrAo/35Ux8dUiGmDRqqTrvTiUWa1bbbF fjLuj5GTlCUp
P6mi+1Ps0/J6utMJx4zL80FOMhj2AHPMwhK9JW9o55s+gYbZhg6ludlrnw/M 2QcdDbIti4fN
m5z8Va+RNzpf/gsSFmWEyf8sluX9buqZFy7MU1z3pG1KrJgxSxBbOdHmL5+B ZgK+aIF7Z+1d
gWXh6R3TotqQ7+r4nqpYFS6JFE1/oOOHKjv4SL0OmUoRGjX9Yx0/wU9zBWmQ ycSWRKl6UorI
VZ+f4z4NvyA2k1d8+BV+o+HXkxsvlwc6fovfERGGXlp29TNKZpXUWK+fFCjz u9nxjyox/qko
H57vYqbLh6qKJKKsrqp5KEHPioi6K9HoyfbhrtPnF3w8NalNLFehRELarTEj lZIpDf8UuPTp
+1GSd6Ij1fAfgeD/+BVCtHIjfg+QdlD/PBzxw5C/Gt+CfDJXoCIwBu9xDsqY N+AuA5ehir96
VoDPuXxWYh4uyG4u249yvkNsHsf83WMEpz6DhQIZ1BCp5eNYwcnLMljlwS6u BDjZdAJXZfAs
TgROH0X3Cayv3jyKLfXVzz6JUAZdZeg4gZ4MrhfobKy+IYPnlaGxOpKBLEND BqzSjRkkyrCr
gVtFBo4HI3i0o2EUQyM45dk4gofGcdvuwLLVY7i9s3EULzqCuXzceRJ3jaAy 4FnNc5rL62vK
yzO4x4PmCuoZx727q187htfXlI/iDaM4QotqKtzTMniLQLM2gkCNlsHbBDPe u5vnnMB7auaM
4oPN3hpvBicEjsBX460+eRKnlNhpgaPnzoxgRV77x4u1j+ITd5SJZYHTD5zb fpygX8M253Y2
QsfEIrGEKTPrhruxkr9N8GI1FmINFrOFXcbxSqzjR9x6BPid0sjxGmzi72Zq 2YIwI3YHWnEj
tkLyM8FGOzVfh0MIsfPpwj1sdg9T4hj73XHsxRn2pE/iZpyFITzoEz7cRAv6 RQ0GxFXEYC26
xCY2mooKB0kCuhufxmf45hVX47P4HMkQpgWP4fO0egdt+gK+SJYdIjkex5c4 dxcewZfxFY4O
s384g69y9RjuxNfwdcqM4wZ3bwWtuBjfwDdJvrNYgG/hCZ5Qw/s+jm+79GMl y7H2fu4r55Nk
WV8/iu/wEcjg+4IFcQsHP1KO+xkpNIJVjTm3PdzRoDxRfxK/pC+qfz+KP9AX 9FhjzmFP5Nm/
lCYAt/CoIcI+zI/cgwR0mNe81YXB74ZSh2si3NGf8Rea1oAl+Cvnyvj3N1fb 3/EPV5+Hn6Bn
8a85lfg3O+Wn+FzKEd//C1BLBwj38W5YnwgAAPwRAABQSwMEFAAIAAgAcUY+ OQ
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
|
Re: Previously "Re: CDO: Reflective Feature Delegation required - but how to invoke not generat [message #423425 is a reply to message #423424] |
Tue, 30 September 2008 13:12 |
Ralf Buschermoehle Messages: 27 Registered: July 2009 |
Junior Member |
|
|
Ed,
you generated the code with the fixed generator template guard?
Greetings,
Ralf
Ed Merks wrote:
> Ralf,
>
> I was able to get the following to work in the generated RmofExample
>
> Resource resource =
> resourceSet.createResource(URI.createURI("http:///My.rmof"));
> rmof.Package root = RmofFactory.eINSTANCE.createPackage();
> root.setName("foo");
> root.setQualifiedName("a.b.foo");
> resource.getContents().add(root);
> resource.save(System.out, null)
>
> I've attached the generated result.
>
>
> Ralf Buschermoehle wrote:
>> Ed,
>>
>> see comments below.
>>
>> Ed Merks wrote:
>>
>>> Yep, it's a bug in the template guard for generating the
>>> eStaticFeatureCount method:
>>
>> [...]
>>
>>> (Note the missing ! on the guard.) Please open a bugzilla and I'll
>>> commit the fix for it today which so it should be in today's I-build...
>>
>> Done.
>>
>>> As a workaround, delete the eStaticFeatureCount method from non-root
>>> model Impl classes.
>>
>> Hm, just tried but still get errors (see modified, attached file). The
>> log says ...
>>
>> !SESSION 2008-09-30 14:03:24.281
>> -----------------------------------------------
>> eclipse.buildId=I20080918-0100
>> java.version=1.6.0_07
>> java.vendor=Sun Microsystems Inc.
>> BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
>> Framework arguments: -product org.eclipse.sdk.ide
>> Command-line arguments: -product org.eclipse.sdk.ide -data
>> C:\Users\lobe\workspaceM2/../runtime-EclipseApplication -dev
>> file:C:/Users/lobe/workspaceM2/.metadata/.plugins/org.eclips e.pde.core/Eclipse
>> Application/dev.properties -os win32 -ws win32 -arch x86
>>
>> !ENTRY org.eclipse.emf.ecore 2 0 2008-09-30 14:03:30.000
>> !MESSAGE Both 'testEMF2_5M2' and 'library' register a package for
>> 'http://www.eclipse.org/emf/teneo/samples/emf/sample/Library'
>>
>> !ENTRY org.eclipse.emf.ecore 2 0 2008-09-30 14:03:30.000
>> !MESSAGE Both 'testEMF2_5M2' and 'library' register an extension
>> parser for 'library'
>>
>> !ENTRY org.eclipse.jface 4 2 2008-09-30 14:03:55.171
>> !MESSAGE Problems occurred when invoking code from plug-in:
>> "org.eclipse.jface".
>> !STACK 0
>> java.lang.ArrayIndexOutOfBoundsException: 0
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl$EPropertiesHolde rBaseImpl.dynamicGet(BasicEObjectImpl.java:155)
>>
>> at
>> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.ja va:1953)
>>
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicGet(Basi cEObjectImpl.java:1045)
>>
>> at rmof.impl.NamedElementImpl.getName(NamedElementImpl.java:67)
>> at
>> rmof.provider.PackageItemProvider.getText(PackageItemProvide r.java:81)
>> at
>> org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider .getText(AdapterFactoryLabelProvider.java:374)
>>
>> at
>> org.eclipse.jface.viewers.WrappedViewerLabelProvider.getText (WrappedViewerLabelProvider.java:108)
>>
>> at
>> org.eclipse.jface.viewers.WrappedViewerLabelProvider.update( WrappedViewerLabelProvider.java:164)
>>
>> at
>> org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn. java:145)
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Ab stractTreeViewer.java:932)
>>
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeR unnable.run(AbstractTreeViewer.java:102)
>>
>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
>> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
>> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Ab stractTreeViewer.java:1012)
>>
>> at
>> org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRun nable.run(StructuredViewer.java:466)
>>
>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
>> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
>> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
>> at
>> org.eclipse.jface.viewers.StructuredViewer.updateItem(Struct uredViewer.java:2041)
>>
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem( AbstractTreeViewer.java:827)
>>
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractT reeViewer.java:802)
>>
>> at
>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:70)
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer.createChildren( AbstractTreeViewer.java:776)
>>
>> at
>> org.eclipse.jface.viewers.TreeViewer.createChildren(TreeView er.java:634)
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand( AbstractTreeViewer.java:1578)
>>
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToW idget(AbstractTreeViewer.java:2456)
>>
>> at
>> org.eclipse.jface.viewers.StructuredViewer.setSelectionToWid get(StructuredViewer.java:1680)
>>
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToW idget(AbstractTreeViewer.java:2864)
>>
>> at
>> org.eclipse.jface.viewers.StructuredViewer.setSelection(Stru cturedViewer.java:1636)
>>
>> at
>> org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer .java:1104)
>> at rmof.presentation.RmofEditor$5.run(RmofEditor.java:766)
>> at
>> rmof.presentation.RmofEditor.setSelectionToViewer(RmofEditor .java:770)
>> at rmof.presentation.RmofEditor$4$1.run(RmofEditor.java:718)
>> at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
>> at
>> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
>>
>> at
>> org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3825)
>> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3449)
>> at
>> org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
>> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
>> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
>> at
>> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>>
>> at
>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
>>
>> at
>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>> at
>> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
>>
>> at
>> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:370)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>> at java.lang.reflect.Method.invoke(Unknown Source)
>> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
>> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
>> at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
>> at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
>>
>> !ENTRY org.eclipse.jface 4 2 2008-09-30 14:03:55.703
>> !MESSAGE Problems occurred when invoking code from plug-in:
>> "org.eclipse.jface".
>> !STACK 0
>> java.lang.ArrayIndexOutOfBoundsException: 0
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl$EPropertiesHolde rBaseImpl.dynamicGet(BasicEObjectImpl.java:155)
>>
>> at
>> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.ja va:1953)
>>
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicGet(Basi cEObjectImpl.java:1045)
>>
>> at rmof.impl.NamedElementImpl.getName(NamedElementImpl.java:67)
>> at
>> rmof.provider.PackageItemProvider.getText(PackageItemProvide r.java:81)
>> at
>> org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator.ge tText(AdapterFactoryItemDelegator.java:90)
>>
>> at
>> rmof.presentation.RmofEditor.setStatusLineManager(RmofEditor .java:1709)
>> at rmof.presentation.RmofEditor.setSelection(RmofEditor.java:16 88)
>> at
>> rmof.presentation.RmofEditor$6.selectionChanged(RmofEditor.j ava:879)
>> at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:162)
>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
>> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
>> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
>> at
>> org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer .java:160)
>> at
>> org.eclipse.jface.viewers.StructuredViewer.updateSelection(S tructuredViewer.java:2062)
>>
>> at
>> org.eclipse.jface.viewers.StructuredViewer.setSelection(Stru cturedViewer.java:1638)
>>
>> at
>> org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer .java:1104)
>> at rmof.presentation.RmofEditor$5.run(RmofEditor.java:766)
>> at
>> rmof.presentation.RmofEditor.setSelectionToViewer(RmofEditor .java:770)
>> at rmof.presentation.RmofEditor$4$1.run(RmofEditor.java:718)
>> at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
>> at
>> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
>>
>> at
>> org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3825)
>> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3449)
>> at
>> org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
>> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
>> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
>> at
>> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>>
>> at
>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
>>
>> at
>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>> at
>> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
>>
>> at
>> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:370)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>> at java.lang.reflect.Method.invoke(Unknown Source)
>> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
>> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
>> at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
>> at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
>>
>>
>> If this is fixed with the Guard Negotiation in the Integration build
>> today I would not need a workaround ... ?
>>
>> Greetings,
>>
>> Ralf
|
|
|
Re: Previously "Re: CDO: Reflective Feature Delegation required - but how to invoke not generat [message #423428 is a reply to message #423425] |
Tue, 30 September 2008 13:53 |
Ed Merks Messages: 33216 Registered: July 2009 |
Senior Member |
|
|
Ralf,
Yes.
Ralf Buschermoehle wrote:
> Ed,
>
> you generated the code with the fixed generator template guard?
>
> Greetings,
>
> Ralf
>
> Ed Merks wrote:
>> Ralf,
>>
>> I was able to get the following to work in the generated RmofExample
>>
>> Resource resource =
>> resourceSet.createResource(URI.createURI("http:///My.rmof"));
>> rmof.Package root =
>> RmofFactory.eINSTANCE.createPackage();
>> root.setName("foo");
>> root.setQualifiedName("a.b.foo");
>> resource.getContents().add(root);
>> resource.save(System.out, null)
>>
>> I've attached the generated result.
>>
>>
>> Ralf Buschermoehle wrote:
>>> Ed,
>>>
>>> see comments below.
>>>
>>> Ed Merks wrote:
>>>
>>>> Yep, it's a bug in the template guard for generating the
>>>> eStaticFeatureCount method:
>>>
>>> [...]
>>>
>>>> (Note the missing ! on the guard.) Please open a bugzilla and I'll
>>>> commit the fix for it today which so it should be in today's
>>>> I-build...
>>>
>>> Done.
>>>
>>>> As a workaround, delete the eStaticFeatureCount method from
>>>> non-root model Impl classes.
>>>
>>> Hm, just tried but still get errors (see modified, attached file).
>>> The log says ...
>>>
>>> !SESSION 2008-09-30 14:03:24.281
>>> -----------------------------------------------
>>> eclipse.buildId=I20080918-0100
>>> java.version=1.6.0_07
>>> java.vendor=Sun Microsystems Inc.
>>> BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
>>> Framework arguments: -product org.eclipse.sdk.ide
>>> Command-line arguments: -product org.eclipse.sdk.ide -data
>>> C:\Users\lobe\workspaceM2/../runtime-EclipseApplication -dev
>>> file:C:/Users/lobe/workspaceM2/.metadata/.plugins/org.eclips e.pde.core/Eclipse
>>> Application/dev.properties -os win32 -ws win32 -arch x86
>>>
>>> !ENTRY org.eclipse.emf.ecore 2 0 2008-09-30 14:03:30.000
>>> !MESSAGE Both 'testEMF2_5M2' and 'library' register a package for
>>> 'http://www.eclipse.org/emf/teneo/samples/emf/sample/Library'
>>>
>>> !ENTRY org.eclipse.emf.ecore 2 0 2008-09-30 14:03:30.000
>>> !MESSAGE Both 'testEMF2_5M2' and 'library' register an extension
>>> parser for 'library'
>>>
>>> !ENTRY org.eclipse.jface 4 2 2008-09-30 14:03:55.171
>>> !MESSAGE Problems occurred when invoking code from plug-in:
>>> "org.eclipse.jface".
>>> !STACK 0
>>> java.lang.ArrayIndexOutOfBoundsException: 0
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl$EPropertiesHolde rBaseImpl.dynamicGet(BasicEObjectImpl.java:155)
>>>
>>> at
>>> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.ja va:1953)
>>>
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicGet(Basi cEObjectImpl.java:1045)
>>>
>>> at rmof.impl.NamedElementImpl.getName(NamedElementImpl.java:67)
>>> at
>>> rmof.provider.PackageItemProvider.getText(PackageItemProvide r.java:81)
>>> at
>>> org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider .getText(AdapterFactoryLabelProvider.java:374)
>>>
>>> at
>>> org.eclipse.jface.viewers.WrappedViewerLabelProvider.getText (WrappedViewerLabelProvider.java:108)
>>>
>>> at
>>> org.eclipse.jface.viewers.WrappedViewerLabelProvider.update( WrappedViewerLabelProvider.java:164)
>>>
>>> at
>>> org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn. java:145)
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Ab stractTreeViewer.java:932)
>>>
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeR unnable.run(AbstractTreeViewer.java:102)
>>>
>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
>>> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
>>> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Ab stractTreeViewer.java:1012)
>>>
>>> at
>>> org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRun nable.run(StructuredViewer.java:466)
>>>
>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
>>> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
>>> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
>>> at
>>> org.eclipse.jface.viewers.StructuredViewer.updateItem(Struct uredViewer.java:2041)
>>>
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem( AbstractTreeViewer.java:827)
>>>
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractT reeViewer.java:802)
>>>
>>> at
>>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:70)
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer.createChildren( AbstractTreeViewer.java:776)
>>>
>>> at
>>> org.eclipse.jface.viewers.TreeViewer.createChildren(TreeView er.java:634)
>>>
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand( AbstractTreeViewer.java:1578)
>>>
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToW idget(AbstractTreeViewer.java:2456)
>>>
>>> at
>>> org.eclipse.jface.viewers.StructuredViewer.setSelectionToWid get(StructuredViewer.java:1680)
>>>
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToW idget(AbstractTreeViewer.java:2864)
>>>
>>> at
>>> org.eclipse.jface.viewers.StructuredViewer.setSelection(Stru cturedViewer.java:1636)
>>>
>>> at
>>> org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer .java:1104)
>>> at rmof.presentation.RmofEditor$5.run(RmofEditor.java:766)
>>> at
>>> rmof.presentation.RmofEditor.setSelectionToViewer(RmofEditor .java:770)
>>> at rmof.presentation.RmofEditor$4$1.run(RmofEditor.java:718)
>>> at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
>>> at
>>> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
>>>
>>> at
>>> org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3825)
>>> at
>>> org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3449)
>>> at
>>> org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
>>> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
>>> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
>>> at
>>> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>>>
>>> at
>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
>>>
>>> at
>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>> at
>>> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
>>>
>>> at
>>> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
>>>
>>> at
>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
>>>
>>> at
>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
>>>
>>> at
>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:370)
>>>
>>> at
>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
>>>
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>> at java.lang.reflect.Method.invoke(Unknown Source)
>>> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
>>> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
>>> at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
>>> at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
>>>
>>> !ENTRY org.eclipse.jface 4 2 2008-09-30 14:03:55.703
>>> !MESSAGE Problems occurred when invoking code from plug-in:
>>> "org.eclipse.jface".
>>> !STACK 0
>>> java.lang.ArrayIndexOutOfBoundsException: 0
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl$EPropertiesHolde rBaseImpl.dynamicGet(BasicEObjectImpl.java:155)
>>>
>>> at
>>> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.ja va:1953)
>>>
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicGet(Basi cEObjectImpl.java:1045)
>>>
>>> at rmof.impl.NamedElementImpl.getName(NamedElementImpl.java:67)
>>> at
>>> rmof.provider.PackageItemProvider.getText(PackageItemProvide r.java:81)
>>> at
>>> org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator.ge tText(AdapterFactoryItemDelegator.java:90)
>>>
>>> at
>>> rmof.presentation.RmofEditor.setStatusLineManager(RmofEditor .java:1709)
>>> at rmof.presentation.RmofEditor.setSelection(RmofEditor.java:16 88)
>>> at
>>> rmof.presentation.RmofEditor$6.selectionChanged(RmofEditor.j ava:879)
>>> at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:162)
>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
>>> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
>>> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
>>> at
>>> org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer .java:160)
>>> at
>>> org.eclipse.jface.viewers.StructuredViewer.updateSelection(S tructuredViewer.java:2062)
>>>
>>> at
>>> org.eclipse.jface.viewers.StructuredViewer.setSelection(Stru cturedViewer.java:1638)
>>>
>>> at
>>> org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer .java:1104)
>>> at rmof.presentation.RmofEditor$5.run(RmofEditor.java:766)
>>> at
>>> rmof.presentation.RmofEditor.setSelectionToViewer(RmofEditor .java:770)
>>> at rmof.presentation.RmofEditor$4$1.run(RmofEditor.java:718)
>>> at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
>>> at
>>> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
>>>
>>> at
>>> org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3825)
>>> at
>>> org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3449)
>>> at
>>> org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
>>> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
>>> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
>>> at
>>> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>>>
>>> at
>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
>>>
>>> at
>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>> at
>>> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
>>>
>>> at
>>> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
>>>
>>> at
>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
>>>
>>> at
>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
>>>
>>> at
>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:370)
>>>
>>> at
>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
>>>
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>> at java.lang.reflect.Method.invoke(Unknown Source)
>>> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
>>> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
>>> at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
>>> at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
>>>
>>>
>>> If this is fixed with the Guard Negotiation in the Integration build
>>> today I would not need a workaround ... ?
>>>
>>> Greetings,
>>>
>>> Ralf
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
|
Goto Forum:
Current Time: Sun Sep 22 22:58:10 GMT 2024
Powered by FUDForum. Page generated in 0.06666 seconds
|