Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Remote Application Platform (RAP) » SessionSingletonBase encapsulated
SessionSingletonBase encapsulated [message #40393] Tue, 24 July 2007 09:24 Go to next message
Eclipse UserFriend
Originally posted by: pfischer06.fast-mail.org

Hello,

I try to use rap and rcp parallel created from the same ui-code. With
factory-interfaces this works until now. But I want to have an
ApplicationContext as singleton. On rap-side I have to use the abstract
SessionSingletonBase. But this can not be encapsulated to an interface
so I dont know how to have the same static getInstance() acces to a
singleton object on rap and rcp.

Has anyone solved this problem?

Thanks and regards,
Peter
Re: SessionSingletonBase encapsulated [message #40547 is a reply to message #40393] Tue, 24 July 2007 15:51 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: fappel.innoopract.com

Hi,

just a sketch how it could be done, don't say that thats the one-and-only
way...

The Idea is not to use a classical Singleton approach with only one class. I
combine it with a kind of factory that is used in the singleton to get the
singleton implementation of choice. To do this I use to Interfaces:

public interface IMySingleton {

}

public interface IMySingletonFactory {
IMySingleton getInstance();
}

One for the actual singleton type and one for the factory that creates the
instance. The singleton class itself has the expected getInstance() plus a
register method with which the appropriate factory could be registered. This
must be done before the first call to getInstance() of course:

public class MySingleton implements IMySingleton {


private static IMySingletonFactory factory;

public static void register( final IMySingletonFactory factory ) {
MySingleton.factory = factory;
}

public static IMySingleton getInstance() {
return factory.getInstance();
}
}

At last you need the implementations. This can be done somehow like the
following. As there is not much to do for the factory one can also combine
the implementation of the factory and the interface type in one class as
shown with the 'real singleton':

class MySessionSingletonFactoryImpl implements IMySingletonFactory{

public IMySingleton getInstance() {
return MySessionSingletonImpl.getInstance();
}

}
class MySessionSingletonImpl
extends SessionSingletonBase
implements IMySingleton
{
public static IMySingleton getInstance() {
return ( IMySingleton )getInstance( MySessionSingletonImpl.class );
}
}

class MyRealSingleton
implements IMySingleton, IMySingletonFactory
{
public IMySingleton getInstance() {
[...]
}

Hope that helps!

Ciao
Frank


"Peter Fischer" <pfischer06@fast-mail.org> schrieb im Newsbeitrag
news:f84gfj$85o$1@build.eclipse.org...
> Hello,
>
> I try to use rap and rcp parallel created from the same ui-code. With
> factory-interfaces this works until now. But I want to have an
> ApplicationContext as singleton. On rap-side I have to use the abstract
> SessionSingletonBase. But this can not be encapsulated to an interface so
> I dont know how to have the same static getInstance() acces to a singleton
> object on rap and rcp.
>
> Has anyone solved this problem?
>
> Thanks and regards,
> Peter
Re: SessionSingletonBase encapsulated [message #40578 is a reply to message #40547] Wed, 25 July 2007 09:39 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: pfischer06.fast-mail.org

Hello Frank,

Frank Appel wrote:
> [a good example]

Thank you very much for your example. It's working fine and I learned
much. :)

The MySingleton class has to implement the needed interface-methods. But
I let them throw an Exception to be sure not to use the MySingleton class.

regards,
Peter
Re: SessionSingletonBase encapsulated [message #107034 is a reply to message #40547] Tue, 30 September 2008 10:59 Go to previous messageGo to next message
rollo is currently offline rolloFriend
Messages: 117
Registered: July 2009
Senior Member
Hi Frank,

how can i you your example for this class?

public abstract class MyComposite extends Composite{

protected MyComposite(Composite parent, int style) {
super(parent, style);
createLayout();
init();
}

protected abstract void createLayout();

protected abstract void init();
}

I don't get it on my own! Please help me.

Roland

Frank Appel schrieb:
> Hi,
>
> just a sketch how it could be done, don't say that thats the one-and-only
> way...
>
> The Idea is not to use a classical Singleton approach with only one class. I
> combine it with a kind of factory that is used in the singleton to get the
> singleton implementation of choice. To do this I use to Interfaces:
>
> public interface IMySingleton {
>
> }
>
> public interface IMySingletonFactory {
> IMySingleton getInstance();
> }
>
> One for the actual singleton type and one for the factory that creates the
> instance. The singleton class itself has the expected getInstance() plus a
> register method with which the appropriate factory could be registered. This
> must be done before the first call to getInstance() of course:
>
> public class MySingleton implements IMySingleton {
>
>
> private static IMySingletonFactory factory;
>
> public static void register( final IMySingletonFactory factory ) {
> MySingleton.factory = factory;
> }
>
> public static IMySingleton getInstance() {
> return factory.getInstance();
> }
> }
>
> At last you need the implementations. This can be done somehow like the
> following. As there is not much to do for the factory one can also combine
> the implementation of the factory and the interface type in one class as
> shown with the 'real singleton':
>
> class MySessionSingletonFactoryImpl implements IMySingletonFactory{
>
> public IMySingleton getInstance() {
> return MySessionSingletonImpl.getInstance();
> }
>
> }
> class MySessionSingletonImpl
> extends SessionSingletonBase
> implements IMySingleton
> {
> public static IMySingleton getInstance() {
> return ( IMySingleton )getInstance( MySessionSingletonImpl.class );
> }
> }
>
> class MyRealSingleton
> implements IMySingleton, IMySingletonFactory
> {
> public IMySingleton getInstance() {
> [...]
> }
>
> Hope that helps!
>
> Ciao
> Frank
>
>
> "Peter Fischer" <pfischer06@fast-mail.org> schrieb im Newsbeitrag
> news:f84gfj$85o$1@build.eclipse.org...
>> Hello,
>>
>> I try to use rap and rcp parallel created from the same ui-code. With
>> factory-interfaces this works until now. But I want to have an
>> ApplicationContext as singleton. On rap-side I have to use the abstract
>> SessionSingletonBase. But this can not be encapsulated to an interface so
>> I dont know how to have the same static getInstance() acces to a singleton
>> object on rap and rcp.
>>
>> Has anyone solved this problem?
>>
>> Thanks and regards,
>> Peter
>
>

> Hi,
>
> just a sketch how it could be done, don't say that thats the one-and-only
> way...
>
> The Idea is not to use a classical Singleton approach with only one class. I
> combine it with a kind of factory that is used in the singleton to get the
> singleton implementation of choice. To do this I use to Interfaces:
>
> public interface IMySingleton {
>
> }
>
> public interface IMySingletonFactory {
> IMySingleton getInstance();
> }
>
> One for the actual singleton type and one for the factory that creates the
> instance. The singleton class itself has the expected getInstance() plus a
> register method with which the appropriate factory could be registered. This
> must be done before the first call to getInstance() of course:
>
> public class MySingleton implements IMySingleton {
>
>
> private static IMySingletonFactory factory;
>
> public static void register( final IMySingletonFactory factory ) {
> MySingleton.factory = factory;
> }
>
> public static IMySingleton getInstance() {
> return factory.getInstance();
> }
> }
>
> At last you need the implementations. This can be done somehow like the
> following. As there is not much to do for the factory one can also combine
> the implementation of the factory and the interface type in one class as
> shown with the 'real singleton':
>
> class MySessionSingletonFactoryImpl implements IMySingletonFactory{
>
> public IMySingleton getInstance() {
> return MySessionSingletonImpl.getInstance();
> }
>
> }
> class MySessionSingletonImpl
> extends SessionSingletonBase
> implements IMySingleton
> {
> public static IMySingleton getInstance() {
> return ( IMySingleton )getInstance( MySessionSingletonImpl.class );
> }
> }
>
> class MyRealSingleton
> implements IMySingleton, IMySingletonFactory
> {
> public IMySingleton getInstance() {
> [...]
> }
>
> Hope that helps!
>
> Ciao
> Frank
>
>
> "Peter Fischer" <pfischer06@fast-mail.org> schrieb im Newsbeitrag
> news:f84gfj$85o$1@build.eclipse.org...
>> Hello,
>>
>> I try to use rap and rcp parallel created from the same ui-code. With
>> factory-interfaces this works until now. But I want to have an
>> ApplicationContext as singleton. On rap-side I have to use the abstract
>> SessionSingletonBase. But this can not be encapsulated to an interface so
>> I dont know how to have the same static getInstance() acces to a singleton
>> object on rap and rcp.
>>
>> Has anyone solved this problem?
>>
>> Thanks and regards,
>> Peter
>
>
Re: SessionSingletonBase encapsulated [message #107054 is a reply to message #107034] Tue, 30 September 2008 12:17 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: benjamin.wolff.web.de

hi,

the question is, why do you want a composite to be a session-singleton? RAP
handles the session related stuff when using GUI stuff.

do you maybe just want to encapsulate session unique data/handlers/etc.?!

greets
-ben



Roland Siebert schrieb:
> Hi Frank,
>
> how can i you your example for this class?
>
> public abstract class MyComposite extends Composite{
>
> protected MyComposite(Composite parent, int style) {
> super(parent, style);
> createLayout();
> init();
> }
>
> protected abstract void createLayout();
>
> protected abstract void init();
> }
>
> I don't get it on my own! Please help me.
>
> Roland
>
> Frank Appel schrieb:
>> Hi,
>>
>> just a sketch how it could be done, don't say that thats the
>> one-and-only way...
>>
>> The Idea is not to use a classical Singleton approach with only one
>> class. I combine it with a kind of factory that is used in the
>> singleton to get the singleton implementation of choice. To do this I
>> use to Interfaces:
>>
>> public interface IMySingleton {
>>
>> }
>>
>> public interface IMySingletonFactory {
>> IMySingleton getInstance();
>> }
>>
>> One for the actual singleton type and one for the factory that creates
>> the instance. The singleton class itself has the expected
>> getInstance() plus a register method with which the appropriate
>> factory could be registered. This must be done before the first call
>> to getInstance() of course:
>>
>> public class MySingleton implements IMySingleton {
>>
>>
>> private static IMySingletonFactory factory;
>>
>> public static void register( final IMySingletonFactory factory ) {
>> MySingleton.factory = factory;
>> }
>>
>> public static IMySingleton getInstance() {
>> return factory.getInstance();
>> }
>> }
>>
>> At last you need the implementations. This can be done somehow like
>> the following. As there is not much to do for the factory one can also
>> combine the implementation of the factory and the interface type in
>> one class as shown with the 'real singleton':
>>
>> class MySessionSingletonFactoryImpl implements IMySingletonFactory{
>>
>> public IMySingleton getInstance() {
>> return MySessionSingletonImpl.getInstance();
>> }
>>
>> }
>> class MySessionSingletonImpl
>> extends SessionSingletonBase
>> implements IMySingleton
>> {
>> public static IMySingleton getInstance() {
>> return ( IMySingleton )getInstance( MySessionSingletonImpl.class );
>> }
>> }
>>
>> class MyRealSingleton
>> implements IMySingleton, IMySingletonFactory
>> {
>> public IMySingleton getInstance() {
>> [...]
>> }
>>
>> Hope that helps!
>>
>> Ciao
>> Frank
>>
>>
>> "Peter Fischer" <pfischer06@fast-mail.org> schrieb im Newsbeitrag
>> news:f84gfj$85o$1@build.eclipse.org...
>>> Hello,
>>>
>>> I try to use rap and rcp parallel created from the same ui-code. With
>>> factory-interfaces this works until now. But I want to have an
>>> ApplicationContext as singleton. On rap-side I have to use the
>>> abstract SessionSingletonBase. But this can not be encapsulated to an
>>> interface so I dont know how to have the same static getInstance()
>>> acces to a singleton object on rap and rcp.
>>>
>>> Has anyone solved this problem?
>>>
>>> Thanks and regards,
>>> Peter
>>
>>
>
>> Hi,
>>
>> just a sketch how it could be done, don't say that thats the
>> one-and-only way...
>>
>> The Idea is not to use a classical Singleton approach with only one
>> class. I combine it with a kind of factory that is used in the
>> singleton to get the singleton implementation of choice. To do this I
>> use to Interfaces:
>>
>> public interface IMySingleton {
>>
>> }
>>
>> public interface IMySingletonFactory {
>> IMySingleton getInstance();
>> }
>>
>> One for the actual singleton type and one for the factory that creates
>> the instance. The singleton class itself has the expected
>> getInstance() plus a register method with which the appropriate
>> factory could be registered. This must be done before the first call
>> to getInstance() of course:
>>
>> public class MySingleton implements IMySingleton {
>>
>>
>> private static IMySingletonFactory factory;
>>
>> public static void register( final IMySingletonFactory factory ) {
>> MySingleton.factory = factory;
>> }
>>
>> public static IMySingleton getInstance() {
>> return factory.getInstance();
>> }
>> }
>>
>> At last you need the implementations. This can be done somehow like
>> the following. As there is not much to do for the factory one can also
>> combine the implementation of the factory and the interface type in
>> one class as shown with the 'real singleton':
>>
>> class MySessionSingletonFactoryImpl implements IMySingletonFactory{
>>
>> public IMySingleton getInstance() {
>> return MySessionSingletonImpl.getInstance();
>> }
>>
>> }
>> class MySessionSingletonImpl
>> extends SessionSingletonBase
>> implements IMySingleton
>> {
>> public static IMySingleton getInstance() {
>> return ( IMySingleton )getInstance( MySessionSingletonImpl.class );
>> }
>> }
>>
>> class MyRealSingleton
>> implements IMySingleton, IMySingletonFactory
>> {
>> public IMySingleton getInstance() {
>> [...]
>> }
>>
>> Hope that helps!
>>
>> Ciao
>> Frank
>>
>>
>> "Peter Fischer" <pfischer06@fast-mail.org> schrieb im Newsbeitrag
>> news:f84gfj$85o$1@build.eclipse.org...
>>> Hello,
>>>
>>> I try to use rap and rcp parallel created from the same ui-code. With
>>> factory-interfaces this works until now. But I want to have an
>>> ApplicationContext as singleton. On rap-side I have to use the
>>> abstract SessionSingletonBase. But this can not be encapsulated to an
>>> interface so I dont know how to have the same static getInstance()
>>> acces to a singleton object on rap and rcp.
>>>
>>> Has anyone solved this problem?
>>>
>>> Thanks and regards,
>>> Peter
>>
>>
Re: SessionSingletonBase encapsulated [message #107122 is a reply to message #107054] Tue, 30 September 2008 13:56 Go to previous messageGo to next message
rollo is currently offline rolloFriend
Messages: 117
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------040202000206090402020902
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

I don't know how I explain what I want, cause my english is not so good.

I have put an exapmle project in the attachment, that shows what I want.
Hope this will help.

Roland

Ben W. schrieb:
> hi,
>
> the question is, why do you want a composite to be a session-singleton?
> RAP handles the session related stuff when using GUI stuff.
>
> do you maybe just want to encapsulate session unique data/handlers/etc.?!
>
> greets
> -ben

--------------040202000206090402020902
Content-Type: application/zip;
name="test.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="test.zip"

UEsDBBQACAAIAEB+PjkAAAAAAAAAAAAAAAAPAAAAdGVzdC8uY2xhc3NwYXRo lZDBSgMxEIbP
9imW3DtrC4KH3RaRFVqwlnbrtaTJsB2NkzhJin17XbBUBIXe5h+++fiZavrx 5ooDSiTPtRrB
tSqQjbfEXa027cPwVk0ng8o4HWPQaT8ZXJ0DcpJj8Upsa2U8q6Jf1spLB2gc hYjwYhM4ndns
v4wwXzXb+6dFezdbNKvyN0ecUFg7sLjLHWT6vkSBddJstdjnx/YYsJyP181w BDeqvLRPsAjG
C4LgeyZBu3S5I47/mKKYk6kf/wZ9TiGnE7sj7tmq/PG7T1BLBwjz3KuIzQAA AG8BAABQSwME
FAAIAAgAQH4+OQAAAAAAAAAAAAAAAA0AAAB0ZXN0Ly5wcm9qZWN0vZJBawIx EIXP9VfI3k3q
zUNcoUpvloL6A9JkXCObSUiy4s93djdKVxEKBW/vTd7jI5mIxdnW4xOEaBzO iyl7L8aAymmD
1bzYbT8ns2JRjoQP7ggqrSCqYHyicDl6EygtlAliEryTNFLOWsBUCn5VNMzt 2Gr+2/w0ptYb
D4pMdkuqSdTtIANcqBio2vgI7KgTUy6QkCfZ5SHc4FSQoWpaauwtH3jB7wl/ QXoNbC3R7Ome
Hy8jbtQBrPw3Lw/yExMqNQH6aK8fwN91Uxn86g5bbhd6kh9sA+8rV0m429YH H+gCUEsHCPDk
H5vhAAAAfQIAAFBLAwQUAAgACABAfj45AAAAAAAAAAAAAAAAKQAAAHRlc3Qv LnNldHRpbmdz
L29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzlY49C8IwGIT3/oqAe+gHfhU6 iYODINQ/UNtr
iSR5wyX199tBZ+ty3PA83G2u4lWLoMqjKqq62tX5Xp3O7V2VeX7I0FsTInQg RhC+R9QvMBrx
TZEJJ/0lnkPSvRBLuGAsuJQBE7xOHSekm+3SKHRNobc/RRes6ZaxFXCgPCyc 7mIE02WAT2Y0
YANSuFKGn92fapSZn4NvUEsHCITm8F6WAAAARAEAAFBLAwQUAAgACABAfj45 AAAAAAAAAAAA
AAAAGQAAAHRlc3QvTUVUQS1JTkYvTUFOSUZFU1QuTUZdjkFLAzEQhe8L+Q+h ZzO0i1629KCw
hwqVYsV7TKfr2GyyJpNQ/72BLaF6HL5v3ns77eiEkdU7hkjedXIFS9E8JXe0 qHZXWmFb0Yse
sZNvBcq9TYMiV9HhZ/zwlsyscFHWkdxgkUvEhkPCqt623vQ+Gqas2Yf5Heot mlf8ThRQzWYn
fRgAjaUpIgQ9QaKaclWP/QVN4lLTu0zBuxEdd/K5PfRqBQ+i2Y6TD6z22pz1 UCK/dNYXiBhy
mbzO88TNooV7WC7uRPNXgE/m6b8lml9QSwcIaV/qh88AAABZAQAAUEsDBBQA CAAIAEB+PjkA
AAAAAAAAAAAAAAAdAAAAdGVzdC9iaW4vdGVzdC9BY3RpdmF0b3IuY2xhc3Ol kttSE0EQhv8h
hyVxCRgEjYgISkiCulJexrJEYqxUpSgKJLfWsEyWwc3u1uws8lgeLrC88AF8 KMueJXIIFl54
s9Pd0/393T3789f3HwDW8MTCGENJi1g7666WR1yHykKWoRoqzxGuL6NYOIl0 Ij/xZOCs78Va
cVfvdrbSAENhq7v7trP5vtNiKHcP+RF3fB54zo5WMvCaDBMbYRBrHuge9xMx jgJD1ggy5KMh
Y6p7uQOqyr+QgdQvGTK1eo8qNsJ9UUQGUzZsTDBMdmUgNpPBnlDv+J4vjHjo cr/HlTT+MJjV
BzJmyFEDihSXa10zVxh70ukrPhAfQ/XBeZ0E+76gNrU41k0jV3xz7IpIS+rc wh2G6fO5zm5M
N3dt3MJMAQz3bBRxg8FyTzEMS/+Wov5iHUaGtGhjATOk7AndEn2e+IQo1+pX N1OmjM6Ae6Il
YlfJiKIMr2pXV1/vXnzDwz53haNEHCaKjBFCs0gzrNiooc5QkZcv2yoc/Hnu 7b8I/ac0bSHi
+oBm30kT2tK8XOls5qcGj0VqMEM/7RgqyCFPnpV647R32jzZOYrRv0HfEnnP 6WQm2jjB5Oc0
9SZ9i3QCM8hiFmWy7NMkTKcIZp6TMmbJzpJ3O0W1KWKqio3VE1QaXzF3ziul Tc0T4T4K9ISG
OXuaPWQaa55uTTsL19EZgY3Cg1F6lbJXiF67ll7AEh4Oh3+UTkUqXzD36YyW T6PPUophFChv
eVixRhFza5XHG99QHS1qXliWhQZFzbJW06zHvwFQSwcItHnCnkMCAABPBAAA UEsDBBQACAAI
AEB+PjkAAAAAAAAAAAAAAAAfAAAAdGVzdC9iaW4vdGVzdC9BcHBsaWNhdGlv bi5jbGFzc5VS
224TMRA902yzZbttSqHQcm0plRJuFs9BSBEXKVKAcmmBR8frpi7ubuR1WuWf eOGpFUh8AB+F
mN0EGuWl4sEz8sycc2Y8/vX7+08Aj7EVYoaw5HXuRavft0ZJb7I0RMDRA3kk hZVpT7zpHmjl
Q1QJW5nrCa2s6edauGMvrNnTaqisFu0XqXfD7cyknlB9YlLjnxIq9cYuIXiW JTpCBfMxQswR
ah2T6teDw652H2TXasJyJ1PS7kpnivs4GPh9kxe56RabhDnltPR6p12KtCNc wkqIy4S1yR4H
Rmxb6fcyd7jTjnEFVwkLI+Rzk/etHBI2643OJCbnuY5N0tM+F+OiZog1wvp0 Gx8z96WrU7Xf
So5MnrkIq5gvOrkR4yZuEVZGUq00eTc4qya8rZ+r2JkaQ57JimndZoNfIUz+ DrRxLjlXyxGU
8PC/lAjR+2zglH5pig0tTbzGo+LLYAO8ED6z/MVm2PO+2V7gm2BP7GfvnSD6 VqZjttUyGGOh
tGUBFlFjz/S4OAZ/4uoK++VT/g4/sPr5BNde3X9wiutf/zEtlhU1BIyLGVkw ro9QY8aA/W2O
Eeer3OqdssXNkuHuH1BLBwgNMaL5vwEAABgDAABQSwMEFAAIAAgAQH4+OQAA AAAAAAAAAAAA
AC8AAAB0ZXN0L2Jpbi90ZXN0L0FwcGxpY2F0aW9uV29ya2JlbmNoQWR2aXNv ci5jbGFzc51S
32sTQRD+JkmT9Jq2MaZVa6vRB0ks9vBJMCqUGOEgSDAlxSfZXNbr6rl77O3F f0ufCgr+Af5R
4t7lSDXUCH2Z2Zmd+eabHz9/ffsB4DFaFRQILcNj4x5HUSh8ZoSSp0p/nHDp nx1PZyJWuoIS
4VDpwOV+KKKYu4lw2UW8u5xA2Br234yG/d6JN+6/814SGoMPbMbckMnAHRkt ZNAlbPaUjA2T
ZszChFexTqinZI4iruOI+0bMOKH8TEhhXhCK7c6YUOqpKXdQxFYNDjYI2wMh +evk04TrEzYJ
eVpM+SwcMy1SO3eWzJmICfcH/2vXEtv3NWeGL35OhZyqz4vuwvZgxTS8pTTb 5HsRJJrrbmdV
3uXVuhXsEh78k/RfwQ52cDMdyy3C0yuTtEN2/IVNeHJFIMJBwI1nlydYOP8d XizWmxKa7c5l
d+GMVKJ9/kqke2utWNVRmox7sLdhD5qwhzWUra5Yq4Cq9VJ6I1bWrMe1mqxe e3iOza9ZyLaV
5cy5gbqVtXkArqGRAV5HM09+bsEKVq9/x87bw3Pc+LIEUM8AdudBOUD62sPt rO4+DnKoRzmP
YqO6DNL8g0VxweJOFnX3N1BLBwjqSu9zwgEAALgDAABQSwMEFAAIAAgAQH4+ OQAAAAAAAAAA
AAAAADUAAAB0ZXN0L2Jpbi90ZXN0L0FwcGxpY2F0aW9uV29ya2JlbmNoV2lu ZG93QWR2aXNv
ci5jbGFzc51S227TQBA9m3tdtyUpSUuBXigEJylZ+oAQBFUKlRCRolKRKhW8 bZzFWTBey940
El/Br/BCFZD4AD4KsY6jthQEKH7YufjMmdmd8/3Hl28AdnE/iwRBWfFQ0abv u8JmSkjvWAbv
etyzB8fC68tRs38iQhlkkSLYlYFDue0KP+R0KCg7r6J/LiPIPBGeUHsEj632 X8pbl+r3pfdG
OMOAB41KlyC1L/vcQBJzJtLIECy1hccPhu97PDhiPZcTFNrSZm6XBSKKp8mU GoiQwGr/3y0b
BIZ91png4YwjEyz4AY/TL3zuESStStcAwbKJqyhq63B1uYzgkVWZsWMWKwTr F2vDkaJOwPyB
sEN6KIWnDJRwLXq/NYK01WpVuvO4gfUsbhI8mKmtiQ1sEiyGXLX0lgVzO+KD fvbtX3f9+yiN
uPctE9u4HRN0BhGzdJ8y/RAp63WMKJu4GyHyU0RHMTUMo+XnUCGYe85dV26+ bB5G4JqJHdwj
yGnwkVCRAIpW+y07YdRlnkM7KhCeMxGU0ZHDwObPRAQq/1MY9YgEW3qBSURf Qntah/rM6mhP
xwltM9XaKXKfJv8NfRqT7IJGLmJee6UYBVPnMPEWsaQ5CK4gP+UaaXSEotXP WtK1ryi9ypOP
ebJzitUxridQS46xFZs72hSsMaoJnDdd07RAQdMsY1WLbQNFlHXrOlYuDEGn Q6RRPRuiPuGg
PwFQSwcIEm591xcCAAAhBAAAUEsDBBQACAAIAEB+PjkAAAAAAAAAAAAAAAAb AAAAdGVzdC9i
aW4vdGVzdC9Db250ZW50LmNsYXNzjVRdUxNXGH5OssnCsnyWpI21QgQlCeDi F6XG+lEUjQa0
hqYGe7Mkx3SdsIu7h1puO53pb+hlr3prZ9qkU2a8daY/pD+j7fsuIXGCoDe7 57znfZ/neZ/z
8fe/f70CcB5PdEQETCUDZS17rpKu0qEJjISR1d1lb2vbCxwlBfqVvbniNWrS F5gqen7dktWG
sx1IK3ihrBdOrS5VYK0fJOUF4lcd11HXBGYyR+Z3CPKFbFlAW/Zq0kAUAyZ0 9PVhUECv7gsz
MIxRHSMCg6G6R7LuBMrfNTGGDwT6/HDO8ojvmf2dbTVst26VlO+49fwbkQeb z2RV5ZlvuOi4
cm1na1P6pLxBbY4VvardKNu+w/N2UFPfOoHAUPFNo7jDbdun0XGGdBsUiAVq l+FEgSDZG4Gz
72NNtqxjQiD9TtMNnMJAPwROm4ghrmNaYKK3qmHvejvKuuM7tVu2sg1M4Sy7 PUNWZwqFjY1s
mXGyJnKYJbMDqYphCWcLJDJvt7K/6ktbsWMC45l9p9Z9KTspBiyc17FArvcs mriAi8ROzazZ
W5Lrs4d30KC+LptYxKcCA08dt0ZUBSW3BB4fbWL3PB4GzB5Xxch5HZ+9xcCe LANLyLOBV489
6V0lBfZiCddMXMcNapsMXpffqx5rD0SGm/GFiWXcoptKuSXZIM8czxWYPpYu bIG3Ju6FNguM
HtoWPoihh+l3IrGOeybuo0iXjVY4GLCG7JP3qF3CmokHB9vM/Rr4EiUdj+i1 6e3axDq+It3y
+Y7dCI44cxuU8LT9IGlueG7GDvsnYJS8Hb8qVxy+emb78p7jRKTpSEXpIRSI 8H2hkUZjenjo
20+zEq3y+mBu9mQLxpiZ+xNDv1EggnH6DoWLQ1Q4DBMjSNBscr8ASXwIhKOP kCI4Hp3Ax1Sp
4SQ+aRN8Q2QRrsrt4VRlNtrC5B9I535Heg9TFV3XtBbONJHp5RwntAQmiIU5 k/sYHc7JNqfA
HObbTD8QL1cu5Bh9tolzLVxanXuN1B6WKhwbudHCldU5Xmric47MNXGzy3wi NCgV9jFKnUxQ
HzP0tYiv2/lCR8UCbmOF2AfpgbmDu4QS4cvb1vMTzXT6W8RXqFyJv1qMRRe1 X5FKxRPahbX5
JlaJ/uHPiM2//FETCS0R++W/f8TLjpwk7RgIOolp2sczNJqiZmdCKTlqlqA7 UiyUSbwIR1/j
MSEkSRaLilK0EmJu/A9QSwcIn3wTao8DAAAVBwAAUEsDBBQACAAIAEB+PjkA AAAAAAAAAAAA
AAAYAAAAdGVzdC9iaW4vdGVzdC9EYXRhLmNsYXNzbZDPSsNAEMa/TdLEpOkf a61evSUVDJ6V
XpSeQj1Uct/UpW5JU0i3PlcFRfDgA/hQ4mQbU1BZdndm9ptvf8zn1/sHgEuc OjAYXCXWKrrl
ijuwGLoL/sSjjOfz6C5diJlisHK+FAy9eP80VYXM51cM9rXMpRoxHAd/n8OE mm9WD8KDiaYP
Bz6DGYSJC4a2jwZshk4sczHZLFNR3PM00x+tZjxLeCHLvCpa6lGuGZpxjUu/ O3OhJhquH4T/
4TnrH4E3XW2KmRjL0swt+y9KPc4IxaRxMBglD0UmxQ4O6HQpG1PdoNsbvtE+ f0XrmTIDHTrb
upPGRmqXVpeywU6NQ/QAHZWujNYR+pVnpHOgMXxBa1vb2broaxt/J6hsaLw1 0KgCsn/BeLra
1T17ELsGsWuQge45+QZQSwcIeQ/uLTQBAAAIAgAAUEsDBBQACAAIAEB+PjkA AAAAAAAAAAAA
AAAZAAAAdGVzdC9iaW4vdGVzdC9Nb2RlbC5jbGFzc21TXVMSYRR+XgF3WdYP EDANLc0UECW1
rEQp86O0BZ3RbLCrBXZ0nRVqWSrv+xN115W3dgNTzjhdd9sv6Lr/kJ13wUIE Zt73fLznnOc8
5+yPP9/OAExhU0Abg2RpJSueKuY1Q4CTocvWt01N21RNrWAxtM/rBd1KMjjC kR0G5xK9FeEm
ySwWLQkOeGS4IDMEwsqB+laNG2phL75lmXphLxHZEdDJ0GM7ypZuxBdNUz1S 9BKFdqCbh7YL
8DG47crLqqWK8DO4uDolwQsPf9gr4xr6CISazzdV2sgeaDkrEdkVcb0eNy1i oC7O8OgbMm5i
iEHULc1UraLJEAxHlP+g1ur2hAe3cFvACIPvqlfGKMao8YL2nojxX2RoRCEg 0khizcq7GJcR
wwSDsKdZafVQa46v8yUhzBtmuCPTjKYJMjW8tK8beR6gNCUmejnguzLuYZZy 76ultI2NZrVL
OBS9oKXLh1nN3FazBtX0KcWcauyops71utFp7eslBln5vwsJsho0I6JaaTE6 7s7TpBg8yr+x
kTF4Of3R64sSw62yzDfEJilaJGpWCpZ5xDDSotUrFk7TsowVrBIOirVpoqW1 qX3V4vkzrAtY
Y+huHpuM53y52rU3ZdUgKrxXgmmbcrUpSFvFspnTVnXel2SzNcnzYYjgOMB/ bSTRWtMpkPYT
TvoDuahPrEI6RUemSqMZP4U34+upIlBB8GVN67+khS60CgbTxwhNfMUww3d4 U9FThDOxCqJV
TFYQJ8cMw6fzX1+ojAP36RyFm06RQLjRCQkheBCFjAekraMbGbqz8JEO+jQ4 7BweYo7uTrxA
AvMEfh1dWECS2nlEdpksNd9jkhgW8aTe4Dt60U53JFrBUmbOdTbrdCSPEehz DUynYoT+6Ue4
YicfHGwg4Px8/pud2BxxmEHiCQjAT1IIvRgkeQz9DbAidVhcWoBCJf3UTook znLazrTxF1BL
BwjjJD9I0wIAANUEAABQSwMEFAAIAAgAQH4+OQAAAAAAAAAAAAAAAB8AAAB0 ZXN0L2Jpbi90
ZXN0L015Q29tcG9zaXRlLmNsYXNzjZDLSgMxGIVPpmmnnY7tWK8LFxbBSwsO rituCkJhdKHS
fToNNTLtDJPU0sdyo+DCB/ChxD+jiLixWYSc8x++5OT94/UNwBl2XTgMgZHa hFfLfjrNUq2M
dMEZ2mk+CWWcqEzLUC9MuFDjiTQ6/IkxVM7VTJkLhqPj6N94b3AyZOD9dCw9 lFDzUUbFA0Pd
h481GlkYw+EqLItqRmomr+fTkczvxCih97SiNBbJUOTK6m+Tm3ul7exvzR4V yEQuZ3TpwQp3
MpS1WVokGzB4t+k8j+WlskbwC3v6IB4Fb1OxEuxywG1T0i6pG3Kt73e6ey+o drrP8J6KVIP2
RjGrUrqGOjw0Se1/5RFgveD5aGGDaPa0iS04nNv/I82wXZB2PgFQSwcIW2cy xR8BAADhAQAA
UEsDBBQACAAIAEB+PjkAAAAAAAAAAAAAAAAgAAAAdGVzdC9iaW4vdGVzdC9O YXZpZ2F0aW9u
JDEuY2xhc3OVVNtSE0EQPWMCS+II4SLeUG4BA0SWACoaxEsIGt2AAvLi07IZ w1Jhl9odoPwF
/8YqjZQPFk8++FGWPRvCpsLFcqu2ZqZn+vSZ093z+8+PnwAy2NBwiaFTCl/q y+a+XTal7TrJ
jIYoQ2Lb3Df1iumU9ZXNbWFJDa0MM65X1oVVsXd9oW9/NC2h79viQHi+XlgT FTpGCLkt8hIl
w/alcITH0Cq3bD85RbGMpmBZ2py3HVsuMPSkTu2ObTBEc25JxMBwhUNDWxwR dHDEkGCIpNSB
DsN2xPLezqbw1s3NimDoMlzLrGyYnq3Wx8aoIsHQ3RwkmSESCb+JPMNsyjj/ ss13ze8LRxLd
Nlxn0CzXoZvLOG6iT8Mtoh7EXBVlksT7xHEbd4h9WUiG0ZQRKr0mPdspZ8eM ZvGzGgYYeACT
q6MPIalhmARouhHHCEYZ2kzLEn6g+9BpaY1GLGKu4FIcYxgPPTMM/WckpWYp UloqWeWW5riH
ydBtmiFzllujnP6B1A/sEkng6+ueEAQ0hWkNFLLvonMcM5glJchwkgOGkdTY hwvhC1LsUIgH
mNPwkGHgX2c5HuExZZKMi6Y0VXGemZT5uvrKsWaNYwHPNDxliIc6cTzHC1KI 8PIOlQBD8lih
0LEubINFqbvIkcdSqO4Mw+C5SannM45+vOIo4DVDzPKEKVUbhD3WGJVaqEWo +qW0/XfJU/+6
Ac5JczdAkwRr7p5niSVbdWBHyHdSaUmWvGNVXJ9qvijkllviWMM6tap6EYLW OC9POXdnl/yk
COjzgkPvTK5i+r7wqY6ot+hvAUsk1JNBj90l+mOIk/UyzeZorSzx8Ylv4OPf 0f4lONOpbMGO
8h5EF804zZW1Gz2B/Sp6j1E+U5QIjfPjX8G7rh3ixhH6DzGoloe4WxsmqtAj 01XcP0K2iifF
9C+013Zy6SpehnF7KSIwjA4kkaYGnsIoskgFHAZqcY45qNkbGMQijQSKWCaE CFYCpLd4R2OU
ymYV7wPeLOBP319QSwcIqbKSU/cCAAD3BQAAUEsDBBQACAAIAEB+PjkAAAAA AAAAAAAAAAAe
AAAAdGVzdC9iaW4vdGVzdC9OYXZpZ2F0aW9uLmNsYXNzjVT9U9tGEH0HxiKq AiRNaFooXwEi
22kUkpbSOqVNnCZ1qpC0ECcm/TrsKxERFiMJGP6rdqbYM2Wm/b1/VKe7J8eO Dbh4xjrt3Xt7
b5/27p9///wLwAKkgT6B4VhFsbMi97xNGXtBzUBKYERPPj4oBNs7QeTFSsCM Q6VKntpXocC8
G4Sbjqr43k6knK1fZUU5e3otctZauLxAilkCEx34aD929r3qpooTNOEGtoOq 8gUsN9mZI5o2
KkEtVrVYYChZKCQxLaXveDUvXha4Zp+avCU/X8yUSEyB0proxwUL5zFEtbte Ta3sbm+ocE1u
+CT0ohtUpF+SocdxczIVv/IigQtul1WsYkeGWt/VM4igMqP4gDOKImVl/WTl WeRnSgY+FJg9
i+smxjHJBY6dg8C0hQGkDVwVuKLlM6jp4tMw2POqzJjBHDPmBfrtTIkz2BYy yJIhkYq74AKO
3eP7F7vgWvx1gdHW9q7cUH578xzmeEfHwk0sUO/Rjh0IgYWe+92Tkeog5JMS blv4GJ9QE5GZ
a7oNp+xM70Zkxz61YGDQwGfc861mNLGEOV6+Y+EcTM6/bOFLfCUwSIKLtZ1d +piXbXdL7knH
l7VN58nGlqrEuvx71D1dzTO7YOIu7rPtXwtcso81V1LEQwvfgLplTFarq8qn hLRWeEX5VdX1
IjKaDVrqadBpPC3tW4HJbk98eRDsxs7D0Kvel7E08QiPWegKmWkXi+vrrO0p vjfwncB4L0ct
rLJF5/U35aScjyyTlYqKotmbAjPHK+886pkS2/7cwjuw2kxqlMkTPOu8Pt6A b+kWOg7+n0vp
Df02HaNT92rfSOZqsBtW1AOPT/hwG3mDW4KutmKNPC/4MopUhGmqqZ+u4RT6 +IDSWx+3nR6p
v/RIBdOYJiTdVvQcpqhILOYZ2dx4AyO/a+BFepo0Au8S/BI9gakERtFlQL+N 4j1Kwm9X8D6h
U/gAY820f9Ms819njzBezjUwcYip7B+YOsJMuYHZOq4lUY6ij+q4keWwjluH WCTKEs1+fog8
T9I/X8cXCfxuOdtAoY4HFC4e4VHZMFKpBtw6nrSlz1PFIEkWCWJJNh9eTGAZ k1TvNF4giy26
Jris0URmq6zXSVkjg1jDs2Yx84RhVDqbO0SpvU9alz+i89A6cV6g3OTM0cir Ayz/ty7K8FuU
dbw8gbLYTRl6i/IDfjyBUuqmtITR/yf9/Bm/6C8r6KbQv/8AUEsHCPp3ISeZ AwAAvAcAAFBL
AwQUAAgACABAfj45AAAAAAAAAAAAAAAAHwAAAHRlc3QvYmluL3Rlc3QvUGVy c3BlY3RpdmUu
Y2xhc3N9Uk1v00AQfRundki2tE0/gLbQJkDrJAiLcxASQkSKZD6kIB9629gr dytjR/am0J/F
CYUDP4AfhZi1IzUigoNnvDNv3syb3V+/f/wE8AIDBzWGbS0L7X2UeTGToVbX 0kGdolfiWniJ
SGPvw/SKEg5shm6Wx54MEzUrpDdX3nilbCRCneU3DPZLlSr9isFyewFD/U0W ySYstDgcNBi2
fJXK9/PPU5l/EtNEMrT9LBRJIHJlzstgXV+qwuT+nm/IsBvmUmg5pj5KJL64 yeaa4cT11+YT
sazSw17Qwi72HewxHP4bx3GAewybsdRvI0WKXlMrhj2359+uZKJzlcZDQ/iA 4xBHBChWCwJV
qEqFe1E1fsjxyOAahBuprzJq4NSIJHEm3eV4jCcMOyKKJlqkkUiyVAZKfmHo u+utL8aj9aBZ
t50st3H8v2UwNOWKuvY6FyEm2TwP5UgZHdsrF/DcgNEB3TB9G/SWauTpbsne oZNHnpHf6H9H
81uZ5mTtMmhjkyyvALiLLfJEj51l8YwQFvnuYIE2w7uBtcD9Ggb1BY7JtU8s mz9boGPjlvmg
HKJJI7SIkWOfbIeYTafTim3Zyfw9xVk57hHO4Zaj90qm/h9QSwcIfP07Z84B AAAZAwAAUEsD
BBQACAAIAEB+PjkAAAAAAAAAAAAAAAAcAAAAdGVzdC9iaW4vdGVzdC9SZWdp c3RyeS5jbGFz
c41UbW/SUBR+bstrKQJzzE0353RuwGR1zrkpZInRGD+gJrLg/FhYw0pKIaVd 4r/y5cOCJv4A
f5Tx3Esto/TD+MC9Pfec5zzPc0/75+/P3wD2cJSExJB1jZGrfTS65sh1viQR Y8j39Atds3S7
q31o94yOyyD39SFDriFOPNe0tHf6sMaQbppdW3c9x2A4mD2tN6YwTdcx7W6t EQauHRNGqt6x
TNt0j6lNqdxiiL0anBlJZBkKU8S3+uicUBWoyKnIQ2FI1EVZGgwLKuJIcIam bbz3+m3DOdHb
FrFaaAw6utXSHZM/+0G5a5CordI8xfI8R4Zq/fRFBPeo8pPTWgYruJPEbfJ2 xhAVRayGuvpQ
kV0l84zTn+tBwon+S8sif0rluSs5DMeufxGOmALDYdiO0BZBu8W1PlSxhW0y deiRqUcR8q4p
WB60e7OKgyPFs6fkilHGCypVFbvc44Rj9AcXdNHZaR0ZxlP2VDzhwxPvWIbu KJCRo4lzz80R
n56Zl4H3bQ48p2O8MfnUZP8f7PL22KC5k+lNYhDDR2uSniSkaE0hDYUiGYpo FOO/zC+ony9x
4wcK30TiTfpXxGGK1gQWRRRUWsQS7SZwtwTIU9oxnv8dhcoYyxK+BhgJcaKK enWShTXcFUjr
uBcgbQikTZEBxAgpjJG/wuE+HvgCXpNMHlN5750xNmV8CitYpMyiqF6a5PoM +K6EMiGlUcGO
j/jcV5OZqHkkzQMu07pyRVImkKQFzlZ9KWmCGeMxQxhklZxdCzRJ/LPhl+7T yovjlUvsh8vW
ESPbpr3jZP+BuOlnIvPwH1BLBwg0XNocYQIAAEQFAABQSwMEFAAIAAgAQH4+ OQAAAAAAAAAA
AAAAAB4AAAB0ZXN0L2Jpbi90ZXN0L1RyZWVPYmplY3QuY2xhc3NtUl1v0lAY fk5hhXYdRWBD
3dzQOSm4SLzW7Ma4KzKXbCHxsrATdpauXcrB36WJ08QLf4A/yvie05N2Qm/O F8/X+5Q/f3/9
BvAWgxosBl/yhRxdppx/mt7wmayhytC8Cb+EoyiM56PslaEah7ecoTUufrqQ qYjn7xjqUTIL
pUhiBvsuTHlM+EfjXPhcPxHOfi9iIU8YtoN1mcGETD4kV9xFBQ0PLnyGSjCY OCA1DxuwKe1Y
xPxseTvl6WU4jXQg8o4mYSrU3TxW5bVY/JchG4My9Eusy8Io18ceasq1Nufy TI/fCQZlBWwS
YJx34Cy4PDc1dIK1HjLtAw91OASeF+A2qa+3VpdJZuQS7aWHJ3hKX4hoH6+E VPNOwmi5li0f
2L1IlumMnwpVjF908UZh0SPNCv0dKrBUw3Sy1Mx6p3y01wnhYpNWj26n9G7R 7g5/Ymv4+h7N
bxrborWhlRxUCe8Qo023nQyNDrYBfVIuTGvuGM3PhFFMP9ccHt+jWwi3SBLY orVBwj6tTS3e
y2i5uG/E1UkNYdGZ2jI2I20LbAy/o/k1F88IbS3oZQAjyLBbSu6ukrul5D08 M+QTU5qthtsv
5nL16y5x9h6UZefz2PoTKOMenpcE2V8NclAa5EXJFD9wuEo+LCUf4ZUhHxuy xVaZ/QdMK2f2
9S34B1BLBwh/gq5s+gEAAHAEAABQSwMEFAAIAAgAQH4+OQAAAAAAAAAAAAAA AB4AAAB0ZXN0
L2Jpbi90ZXN0L1RyZWVQYXJlbnQuY2xhc3OFkvtuElEQxr/DtcDa5a5t1dY7 Fy3Wa5WmiSEx
Ma6XSAOx/WuBE9hmWZLdQxN9GJ+gf2iiNNHoA/hQxjmHlSJgDMnuzvDNb76Z c37++voDwBaq
UQQYdME9UdlzOX9tutwRUYSmk69ah7wtGJbaPcvukIAhZxyaR2ZlKCy78sR1 zXeG5YkqQ6xu
dR1TDF3OUFik2TFmsNVdKovsWI4ldonrF9mm063UhWs53WqxwRCqDTo8jiDO aIghHoXOkFmA
j2MZKSlJMwQLxUYMDFkNYURoIMNy+Mthv8XdPbNlk8O0MWibdsN0LRn7yZDo WR5DyphZCtkM
OWZflc15pOWYnU5N7ocaFuaGLDaks4sa1rFBzkg7M+sf3b4c8rKGK7hK2/S4 GDf/G+obkosJ
t8c9U3MtGRIu7w+OuHIl2xc1lGT7yDhPgi4XtcmZZgvFgzmKrNvUUMFtGt+z 3nO112cyfUfD
XdxjiIqB2j+deOFgwUgLcsqDN7RprvR8TzLWM71TY9RwnyFeHwzdNn9qyUPS T9ewKenYoIMO
0pUmoDxtekcpCmCJIiavDD0TlHlBqgC9U6XyCbTSNyy/PUHyCzKflDxHz2UF ilNhAkloyFOU
HxfhLM4B6msFq4RkWMN5H/2cNFKllz4jUx7hQrNcGuHSLFgnN0l5TafA+gSs 4xquK/CNf4IL
zTJbAM4SOEff+f+Ay7jpg9/44LwEj3DrO4KG32OrWf44w1+hmlXqsjbFz/v8 BP3u44HiP8S2
z99WMdX7/A8Ih46DxxNuRP27rnjaWOnzGB4p1ePfUEsHCJM/+FdWAgAAqgQA AFBLAwQUAAgA
CABAfj45AAAAAAAAAAAAAAAAGAAAAHRlc3QvYmluL3Rlc3QvVmlldy5jbGFz c41TbU8TQRB+
Fq5cexQQEAGpYkGgpciJIirgC5ZgmhQ0wTSBRJOlbOqS6x2524P4s/wgTSTx B/jZ32OcvWvO
BtDw4WbnZp+ZfebZ2Z+/v/8AsIQNE10MGSUCZdekODVhMOQ8v2GLuiOPA2GH 0j7mfrz7nhyG
rsomw1D1iJ9w2+Fuw95VvnQbawx9Zc8NFHdVjTuhSCPDYOjSDD3r0pXqJUN3 oVijaNk7FBa6
0Z+FhV6Ggap0xU7YPBD+B37gCH2AV+dOjftS/7eDhvosA4beakKYTh2s+4Ir ocnR+cr3HIbZ
QrWzieBU2afysCFUYJe95rEXSCXWijUTtxjyF5EO/+KFyn7ry8Nq5FoYQX+G zHgWtzHBYLlh
s+w5YdMlNqxi4Q4mTdy9otalU7O4hzxJHggVF2eY/jfZGBIxnSaVorZ3+Ils cCU918IUZrSC
swxz1+m4UqzpHOJaZJj8T9+bXHELBZR09QUGs1Cp7O/H2YtZ2HhIt520oNEM I4WOmXh3cCTq
MfFHDNmIuL4d4ZKaS5jRZlKbRRoOGjCKkxDXaIHEbyQXc1XKpdvTKW6iGc1L 9YKMBDDrMTeG
/monV9pKU5tbXj2km7Z2vdCviy2pZzGjx29Rd4w8aLDpPTGMI4UeWk3660Ka okwPONksRWxa
Ga2p+Rb6vkaQAbI9UTCDG2SzMQCDGIoKDuNmO/kXFU3R+ukcI3stjG4vpL5h rLRwhtw5pvZK
3S3c33nQ3jzDHLmFPdM0jBbmz0B/SxHm8aoxbiSoZe13wJ78ZTVPxEFemnj1 RXyGkSM2c/QO
VjCKDYxhmxr+iImI+XLMrs1ceyt4StzTqOEZnlPVHN5gFWskygY9mHW8gEH7 LxN5SlHH9F2U
Jt8hDUukeRWhXv8BUEsHCFCwgiKcAgAAzAQAAFBLAwQUAAgACABAfj45AAAA AAAAAAAAAAAA
JwAAAHRlc3QvYmluL3Rlc3QvVmlld0NvbnRlbnRQcm92aWRlci5jbGFzc4WT 30/TUBTHv5eN
FbbKmAxEfjsQyiarKE9ifFk0WTKVBLIHfCrtlZWUdmm78bf4P/AwX2ZiotFX /yjjuW3tlq7o
Q3vOzrnfT7/n3rtfv79+B3CIIwlTDMs+93y1bfKbhmP73PZPXKdvGtyVkGWY v9L6mmpp9qX6
/uKK676EHMOR416qXLfMrsfVq4+aztU+Abjrqc1T3+3pfs/lxgRvhqH+D+WZ y3lCw5B7adqm
/4oho+y3GbINx+B5ZHBPxizyDMWWafN3vesL7p5pFxZnuN9ydM1qa64pfkfF rN8xPYaV1l3T
HjPIpt3t+Y0ODcsNhqbSuttsO4jHreT2pFSEbdZnqPwfxzDjWEZT2BBzTKCo b/ObqC8Zptd1
PBqucMn91xa/pnFoxj0lxcOHyVoeDOsyNrAaEhod0zJcbtOedzWK9IlZKp9E +W4adrIkYZsO
JdhlcZ5hNY8KHsvYwi7DgrLfitshnOaa1sXXJeyPi8NuHgpqwucThrJCkyTg pC50NG9kfzHN
6bnAPJVxgMPgLp0z5E+dnqvzN6a4IMspd6IuMOSaBJjCNCT624iHLh7VCpSp FBnF6eoXyJ8p
mcIcvXNBUUKR3nK4APMoUaRjxUIkbtKTFbWksBAIq2EzEoqsjMWgz7CEB6QQ 2TJlGYoPY0+1
oJ6CnRvzw2I/K1iNhC9otYDmqrUh1gYJdSlQL4UrYlM5bJIBsQlbeBRx3lIU q0q1n6h8QqH2
A5UhdgZshJwjz6BpJAIWaYYRuhSjS9iL0BuxxZMIXSa0EqKVIaqDzDdkkvQ1 oq8TeXOMXo7p
5dj4Aeopxkd09TZzm0BvE3qHsLt3GP+Lfhbonv8BUEsHCAM5RwF7AgAAcgUA AFBLAwQUAAgA
CABAfj45AAAAAAAAAAAAAAAAJQAAAHRlc3QvYmluL3Rlc3QvVmlld0xhYmVs UHJvdmlkZXIu
Y2xhc3NtUE1Lw0AQfRtrU2u1WrV+HjxpVXARxEvFiyAIQQVL75s4xi1pI5u1 9WfpRcGDePZH
iZM0SNXuYd7M8N6bmf38ensHcIANF45A3VJiZVvTwFM+RVcm7usbMi4KAtux CSUFkb5PSHZu
VUCyz0QyifxFFige6562JwITjZ22QOE0vqEyJjBVwSSKAlVP9+jioeuTaSk/ IoGaFwcqaiuj
0zpvFuydTgRWvPFLNQXckGyLHq3AVsPrqL6SkeqF8tLvUGCbOyOta2t0L2y6 mOfxmV/LEA2J
ZcxhoYJFLA0dL1SXpy82xuj5pNjvpPv+myZQYu15V4UsPhy7zugHJgMrQ6Pu 73SQyEzFDuXr
+MEEdKbT8+v/Lt5PPbEJ3gLpSyN/KNcuZ5JRpJ3dV5SeOXFQ5ljMmkVMc6wM CYwzjAKzqObi
Y0aHsbT3gbkX1J7+6KcyfX3IyfVpVsdyNnYFq7nTUe7kiL8esyMezo+H8+Ox llXr31BLBwj+
xsVlcAEAAJMCAABQSwMEFAAIAAgAQH4+OQAAAAAAAAAAAAAAABUAAAB0ZXN0 L2J1aWxkLnBy
b3BlcnRpZXMrzi8tSk7V01OwVSguStbnyi8tKSgtAfOTMvP0uYCEXmZeck5p SmoxUKwgpzQd
KFKRm6MTw6WACnxdQxx1Pf3c9DGl9LgAUEsHCJtnMYZGAAAAaAAAAFBLAwQU AAgACABAfj45
AAAAAAAAAAAAAAAADwAAAHRlc3QvcGx1Z2luLnhtbKWSP2/DIBDFd38KdHvp v6WDsZUlc1S1
3Sk5uScRQIDd9NsXu27Aij1UZeO9x939TtTt+aTZgD6QNQLu+R0wNMoeyXQC Xl/2N0/QNlXd
otLkAuboI3+YHKf7jkxTVYyxGs8RzeiPt5/jLJkowPqOzzW4l473xNFE/zXZ 0Mz5Omu5QjpK
yxAERAyR75zTpGRMXWARctLLE0b0Aj5Qa7t06bjy/tL3NjeetCT8ojR/IEtU Li3IoYo0YMj1
C3UxlUkTC3jeHdghJ2CTfTN0oSsaFXSF+k+8gfCz4Bqvm9O+JXN9TFhZwnCV 9ilpvXzXyY2+
L4HG8DVJlUjn7/gNUEsHCExRTcT7AAAA2QIAAFBLAwQUAAgACABAfj45AAAA AAAAAAAAAAAA
HAAAAHRlc3Qvc3JjL3Rlc3QvQWN0aXZhdG9yLmphdmGtVNtu1DAQfU6+YlRe siuafECE1NIF
FIRQBfQZuc4ka+q1LV+2Raj/zjjOZpuwiIJ4iBKNz5k5ZzwTw/gd6xE8Ol/n udgZbT1o25fI
pTAOy28d41hadDpY+mh2BN+g41YYr219ihJEaWTohSovb523jPub5noIzODa 9aLsLNvhvbZ3
5eugWolXWnl8iFqq9TqHNXzZIlAGsWdUDrhkzgEnkNXSgafDWOpcKJCiQ+Df uUSiVbkJt1Lw
kXA5JaDcqFqKLJTBjzzPqmood8jYbPJsTOM88/TqhGISPnsrVA/XH27eNR+/ Nht4BWexgWf1
MYfbMostCEVMxZES2agAD5mOiszYmYy4ZDkbPZNHUhg4QWKsmqRMzGJForPH WDPRCqXV+Xu2
Z63mqyFy4RCfeTUvSJj1xZ8uZjUXs9eihcScwYYrinC6IqvvHbx54Gi80LHR WeaCQVsm3gFJ
HciSNuqn3wpX/1dz2vyjNyL+jbXJggpS1k+8Up4nVpOzZO0T+mBVmuZf5gYS 5sIOoN9hquWk
HuerR7/BjgXp08BkY6Zp7k5JYQpE3HRop1WHjp5YPh10QtJi+iHSiz2qgX9Y HYuSZOxpl5jf
Hk0YRp0fYml1x8OZu2Xdk/YWv6FochEqxi2NNWa+xRz31updGpJiWuiXiTX0 5jH/CVBLBwjK
lYHs9wEAACQFAABQSwMEFAAIAAgAQH4+OQAAAAAAAAAAAAAAAB4AAAB0ZXN0 L3NyYy90ZXN0
L0FwcGxpY2F0aW9uLmphdmF1kL1uAjEQhGv8FNsFUGQeAFEgJQUdioJSG99y t8qebdnrAIp4
9/iCExAhjX/kb3bGE4x9Ny2CYJK5UtQHHwV8bDVappBQx71oph3ao2XUq2cn 8bj25Ap+h06F
3lPToiT9RCmwOd7lMuk1G9n52G9W/xEmBCZrhLzTbz6+b9HZbtl8UPKxhJ1N pwqm8NpRAssm
ldWXdJ4TGGYwKaCVBH4H0iFcDXtIgAe0eTgPE4xrgKqatlmwKYroc9t9KwPn lpw+9KwLPVMh
b8ukarm8jIXyC8YeXTG96gk+lRpVzXC1EY3gZjWelJfRqLYETd0XcClGn9mK jCfzwt8WAabu
C3C4v85zS571ESVH99dk6ZqXfNGMfwI9/hoM8pM6qS9QSwcIBamM0B0BAAA0 AgAAUEsDBBQA
CAAIAEB+PjkAAAAAAAAAAAAAAAAuAAAAdGVzdC9zcmMvdGVzdC9BcHBsaWNh dGlvbldvcmti
ZW5jaEFkdmlzb3IuamF2YZVRQW7CMBA8x69YcaJRZR4Q9YAoh9yigsqxMs4m rEhty3ZIpYq/
1yYhQEuldk+Wd2d2ZtYIuRc1gkfnM8bo3WjrQduao2zIOOQtcWFMQ1J40orn G233W1RytyFV
6m6hVUV1a9Fmf0CP4Hl5IKf/h+kXjkg2S1MGKax35KA7D4Ho+yAtiuAK/A6h OyHPrUcQqgRn
UFJF6CJHHDJo45+nAwKVUAWO+E2KPIlm4OBhesZMuw3yQDbCOZhftH63B/jh UZUOfjQ+GUuM
pUOQCM4HsISKVFiz8pZUDcXyZVUsF+v8dfmWP8MTTOKF+JXGSUgAQg1a7qc0 pHC/Of39liDH
50PQCkNZ9K1VoLC76/qW/YoiOzEco+de7eCyRp/38fbQ4mIvL6dxc5IMO28D yVhyZEf2BVBL
BwjgUAZ1MgEAAL4CAABQSwMEFAAIAAgAQH4+OQAAAAAAAAAAAAAAADQAAAB0 ZXN0L3NyYy90
ZXN0L0FwcGxpY2F0aW9uV29ya2JlbmNoV2luZG93QWR2aXNvci5qYXZhjZJP awIxEMXv+RSD
pyglLrQ36cH2UqFQqQXPMTvuDqZJyGTd0uJ3b/xTFdHqOwXmvd+DmQRtFrpC SMhpIAR9Bh8T
+FgpNJYCo+I2qSrqUJNhNfbksu+MrSGlQ7BkdCLv1Gjq42KGztRTcqVvn72b U9VEjLekT8LD
cknsc1L0ez0BPdjTGFKNQI4SaQtM3wjalZBZqKN2BsHPQUP7x4N2A1QZ0heh meVGMFYzw/BQ
f74d8CuhKxkujH+EgKwd9CpOXt4QmP2zm7GwEzcBozyaDTaj1bb3uHzpqYQQ cQt+C+jkMeim
ZniECtOpQe5K1zp4FWMabW8wySeQDlvY/BT5UBR3cF8U3Yu5Sb3me/uko5xr y/ivc5J0aviV
HF4xf1CyKDsvaK2H9+G4s9/WSvwCUEsHCPk7AGgvAQAA9AIAAFBLAwQUAAgA CABAfj45AAAA
AAAAAAAAAAAAGgAAAHRlc3Qvc3JjL3Rlc3QvQ29udGVudC5qYXZhjVLbahsx EH1eg/9hyJMM
Rh9QEyi4SQi4NtSGPsu7440SebWVZu2akn/v6LJrO2loYNGKmTNnzplRq8oX VSMQepqNR+OR
3rfWEVhXSyyNbj1KfyS5/rmZfZg06mQ7kg9OV98UqY+BR13VSF7OLee9Jvw/ dKO299ZU6D4F
fSTcRxtttzW6hNIo72FuG8KGAH/zr/Lw/TQI+DMeFfy1Th8UIQzdgC76BkDi y0xiqIdWOQ5M
QTO/p5PBCQTOwnctOtFnU2YWEj+w1p7cSbp4YdBNmVhvpkBP2kfYa+z6dXVA x1PFKNESloQV
HKyuuJ9+LyP3HrTDLTR4PLsa9PA65XK1vEuSBrz0SIu4zLBHEWr7pYpQcv+4 WKTidCPXYTon
F6rzrKLM0iHPlQWIjUNcbZ/ZAtj4y2Lz1kCH4xZ2uqlySAy6prlE8p6Xao8i tSv0DkSqY6Od
MZmyyFzZ+1uuoH++WK2z+4gOzjf8PsS/GyVj14Nao2Gktk2UcOn//Jiis0tL 5we269WQ000N
DXfL8nfWgbgay5eMDrJC1LOu3moeQUhFAxOJvzplvIiMkwgqHFLnmkjW+xmC YXBZ/OtfUEsH
CGTYUxq8AQAADwQAAFBLAwQUAAgACABAfj45AAAAAAAAAAAAAAAAFwAAAHRl c3Qvc3JjL3Rl
c3QvRGF0YS5qYXZhdY0xDoMwDEXn+BQeYekFULfOXTiBSa3UKg1RbFgq7g5p KWJoR/u/p5fI
PygwGqs1AGnsevHoe1LFCxnhCxy4lGUiY2wtSwwY6cnN+//BC1gdtnqVnN1F T+XC81eYYVc2
OrBd162qS8dltjHHH/Q0yA11Y48h/F+aYQFQSwcISx6Eu3oAAADcAAAAUEsD BBQACAAIAEB+
PjkAAAAAAAAAAAAAAAAYAAAAdGVzdC9zcmMvdGVzdC9Nb2RlbC5qYXZhfZDP TsMwDIfPzVNY
PSWXSsCNAhICbvw78AJe620dWVoSB5jQ3p04qcbEYVJaVf5+tr9mwu4dVwRM gVulhu00eoYN
fmITebDNrfe4exwynOLCDh10FkOAp7EnC/TN5PoAb57oFT05hh+lqjmZM9qk UlWFOJHXtR9H
rk2bCofJV/fIeAM2fcI1OPqCf0jnvPAG+15LQuq6Fumz2pzC56fxxYzTWY4e tBDo5XWZhYq7
4Co1360HWybI/74sNtSxlnSzIn7GLWlTxu1VOodr+AtDyj049jt9VJMBZU9W OCKd7EsmqSuv
TvebNhSlYakzbugjog1Zw5iMKk8cvSvtoiM++ZmBi9a2WXGvfgFQSwcICyc+ oAoBAAABAgAA
UEsDBBQACAAIAEB+PjkAAAAAAAAAAAAAAAAeAAAAdGVzdC9zcmMvdGVzdC9N eUNvbXBvc2l0
ZS5qYXZhXY5BCsIwEEXXDeQOs6wguUCXrj1EmgxlMCYhM7UW8e62UWsRZvXf +/zJ1l3sgCDI
0mmlFV1zKgKpDAZdoMxoeBIzkR9Q2JzSwpkEq5zHPpAD27MU6wRcsMxwnjcL 8C4YPcOWPLRq
lsslCTpBv7fbXy/bglGOQFGAZQ54gLXZ8JixtF/6Jt0KKJJ88ho81/92M9uP t0Qeqv2/Vnta
Lc0XUEsHCCQp+MOfAAAAFgEAAFBLAwQUAAgACABAfj45AAAAAAAAAAAAAAAA HQAAAHRlc3Qv
c3JjL3Rlc3QvTmF2aWdhdGlvbi5qYXZhjVRNaxsxED1vIP9BzUkLQfRuCgU3 LQanKY1pD6UH
eTXZKlVWizS7rin+7x197Eccm2bB0lrz3sybGc22svota2AIHheXF5cX+qm1 Dpl1tYDK6NaD
eHyQFYheww6cF6t7MFChts3yl2xqUGvtERpwi1eQj7k3PTT4GuLGAXyL76fR fofi/vvmvNHI
ve1QfHJafZAozwN3WtWAXiwt2b1G+D80iIvFa7ut0RWrjPSefZa9rmVIlsEf qpDy7HY/emV/
A6Fone4l/ZvyYzhP9RkgmuaHt1aBYU9hnR8vbUPxkFVpX6RISdukik9aWukI d800kTzuDZRB
XlH4rgXHB2uyhECH6PH9XQ+O6gkxtEXqLCjWW63IkcYX/succzFlyN6xBnaz 7HOwGGWGEx4w
Z/XF2Z5iOh6IwXp8Xp4ir+UWzAvq89MZkXTN+NTkoJAne/jFkmfxsQn8VNBV 03bII3aiziBS
qXPDFCWeHTWe+zM0NdbcH4H5yWFj0A+tIH6Rrwil8hVq8u72IVt+lc+vkm56 QgHuto/kkNm0
ESemFgg3DTE5n0BlrF8wjSp4+ePtz3AS5m8oNj36gfHs8g1VtDNmVDfqE5UD utkbuc3QkX2I
e1wPUw9Sy8PEx2ChmMPkc/pMiI+r9fqaTW/oOkhrOVzwwz9QSwcICez+xfEB AAAbBQAAUEsD
BBQACAAIAEB+PjkAAAAAAAAAAAAAAAAeAAAAdGVzdC9zcmMvdGVzdC9QZXJz cGVjdGl2ZS5q
YXZhdY7BasMwEETPNvgf9uiAEfQceii0AUOhgYTcN9LGLFUkIa3ThJJ/r+Wa Ikp7kASaN48J
qN9xIBBKsm7qpuZz8FHAx0GRthwSqZFVv52gV7z5MVP/MRRTIC18oQ1q8fE2 G8N4tKxBW0wJ
CgYmjaUzOUnwRxc+c7la2hfPBnQkFOodC6P9XtMWy8DOzyo3qyqfnUR2A5Dh yfg0teFxgdRA
8vLz3a7WGV+iVEYHTny01J7QJvqNbfhKppU4LkmRojE7QWfQekcHpo82X6p/ 7mBWdVAsV/u3
bQcPp66YOhvvTX3/AlBLBwizSK8D4gAAAKMBAABQSwMEFAAIAAgAQH4+OQAA AAAAAAAAAAAA
ABsAAAB0ZXN0L3NyYy90ZXN0L1JlZ2lzdHJ5LmphdmF9kcFugzAQRM8g8Q+r nECK+IGkUXvr
parUHMrVmBUxMWCt11RVlX+vDbQlKcrVM/tmdm2EPIsagdHyLomTWLWmJ4ZG DCJ3rHT+LOzp
RZjdijQ9J7FxpVYSpBbWwhvWyjJ9wleQIkM9o2SswLJg7/JD+yOT6uotvJaN 1w7QCgMP0OEH
zGm3jjQbg6LHozOG0Np3QZ032HTjOnlCecZqk4W4qcqctS8OUECNnE48UFUW ekURITvqIC2y
EJ4Hi9d8SHSZal9x1jr7kSet02teO15klTH0qgIaj4P01+cHCH3ZzKxQyLhQ aDu+3iW67j9z
wSFs+wHv7XZDWewU5qVGQelymNQgGH+/eTZ78fINUEsHCNO5gjAMAQAATAIA AFBLAwQUAAgA
CABAfj45AAAAAAAAAAAAAAAAHQAAAHRlc3Qvc3JjL3Rlc3QvVHJlZU9iamVj dC5qYXZhjVJL
DsIgEF23p5ilJsYLNC7dGTXRuJ/iWFGkDUzdGO8uFaqgNXEFPHifeaFBccaK gMlykee5UGgt
bA3RqjyRYLjlWWPkFZlgw0bqCjReqPhCVS2QZa2jm05ljYY0Q/NcnEHWtKWS InIYHaRGFYuP
O9OMj9JOuyPMesv7f/wJJFCf7Kesx/pnDo9miSyDXEW8dLyRlzPErdEDAd+v F0EtZQx7XGu5
B0vsawujffUYTeIBl7lv+LOkQKxemkmKIVZIzrXfpITX9CknfBZ3O99LxlLR DlX7WVKrlKfd
H1BLBwiImGaF3AAAAHcCAABQSwMEFAAIAAgAQH4+OQAAAAAAAAAAAAAAAB0A AAB0ZXN0L3Ny
Yy90ZXN0L1RyZWVQYXJlbnQuamF2YZWQPW+DMBCGZ/gVNzoL6k4bqcpaqZHa rcpwwBWcGoPs
M/1S/nuJ7QRCo0od8d37PC/XY/mGNQGT5TxNZdt3hmGPA2aOpcrujcHPB+mH pUJr4dkQbdGQ
ZqAPJl2Fp8diTyXDd5omSW/kgEzwKjUqOCNup701lI1U1UjJfcAVSpYztAjR JzZS16CxpdWI
TpLEup6M8A/58fuEgTvQ9H7dJfzqYSYaOlkBVtXmmI6u2U94aBSeBNm4LsJg EmeWOBbmRtrr
HkNtN9B/VCHxl007pX7ZJuzLDmriTeSJyL+YG7JOcTzbbHIuYeUXidXu4soZ d/7CIqRDN0Ps
jI7AZaei6xShhgbtsk7MLYSwhpsASQ4/UEsHCLvpijEQAQAAnQIAAFBLAwQU AAgACABAfj45
AAAAAAAAAAAAAAAAFwAAAHRlc3Qvc3JjL3Rlc3QvVmlldy5qYXZhnZJRa8Iw EMef7ac4fKrg
IuxVhA2dQxAdKNtzbG9dWE1KctGN4XffpS1mbJaNQWkuud/9888llcxeZYFA 6GicJGpfGUtg
bCEwK1XlULgjic3TdtyVK+W78STurcpnkuRfuGUddpJHlRdITkwN550ivEh6 JSppSTwqPD5w
wO4rvytVBlkpnYOwDvhGqPNmEiD4SJJeizmSxMOz0rKEDVmlC1jMYAL90Iw+ 6/Vu1ge0bBjP
RQejcsgsSsKgNzWarCnTs1VgT6hpwBv1eo10PDEUMZyAZn8xlw7GXBEBof1+ akq/147Z65Bs
pIVDaksiXRfzt5IHVfCxjAYdw2avmEsbpSFfq1itV3d1deS/7PDdYycZrv5M 15MgPl8sl0OI
EVmPzT8osVToHzuBrB0bp+3qRZst+ZvHH9h/DIaWnrqfAWvPTeZd2tz2aATb 9WwNt57MVYEa
LT+SHPZIL4Zh8rukljsln1BLBwgFjXSoYwEAAHUDAABQSwMEFAAIAAgAQH4+ OQAAAAAAAAAA
AAAAACYAAAB0ZXN0L3NyYy90ZXN0L1ZpZXdDb250ZW50UHJvdmlkZXIuamF2 Yb2QMW/CMBCF
5yDxH250JRR1Z4w6MBWJqkvF4NiXYGpsy3bCUPHfa8eBBpJIVYdOlt+9e/fd Gco+aY3g0fn1
crFciJPR1oO2dY5MCuMwP1aUYd4KPKN1+WbnbcN8Y5EXWnlUfmt1Kzja9W+6 3yziH/reu7cj
ZJI6B1F4yIGQIvEUFAfzlCuYYoCvGL1cZKYppWDQasFBKNP44kBVjZxUQlEJ iQPaFaT/a3lE
FsAl30Tzg6zw3MlPMT67jAZw4Yx2SCbqKeFjDzX6l34rchduqA1ias0shl1V NBcHIXmokL6+
nk6O1m3nuE9lsb0PFRWQ7h8u4TxVDHUF8XjJ27uuswkZllJO/jOlA4kktwbV SDlDl/a+rTK/
d0RMwiPjdmi7Z7yW+qR8OGoCE89Xquf9iLfUWiJVcKDuv3CHo8a4FZUOe8zL N1BLBwhCtkTi
RAEAAN8DAABQSwMEFAAIAAgAQH4+OQAAAAAAAAAAAAAAACQAAAB0ZXN0L3Ny Yy90ZXN0L1Zp
ZXdMYWJlbFByb3ZpZGVyLmphdmFtjsEOgjAQRM8l8R96hEt/gC8wMWoi8V7K WIsFmm0BE8O/
W5CDRA+bbHZm3o6T6iE1eIAP+S7ZJaZxHQXekRZQ1jgPUd+kghgMRpAXB1nC nqkbTAXK/wb8
GIQm6e5GebFvIn9BKyu959fI2TA4ngFt5fn2+pojzPWlNYpfAplWc41QRHd6 Kmuo+LOss9nH
GCOEnlqepgUBHzlbdBEzR9kgzWIHNn1Dl2Yzc1l+ofOs3La3ds1Pb1BLBwg2 H8+YtgAAADMB
AABQSwMEFAAIAAgAQH4+OQAAAAAAAAAAAAAAABAAAAB0ZXN0L3Rlc3QubGF1 bmNonVdtj9o4
EP7eX4Gifrw1rXrSnU6lvaiwvUq7gFh2v5xOkeMMwaxjp36BRVX/+41DGlI2 ZE2REMHMPJ7X
Z4b3H58KMdiCNlzJUfSWvIkGIJnKuMxH0f3y+urP6OOHV+8FdZKtPym54rnT 1KL0wO5LGEVK
5wSY4KUBomlJHCcHYbKI5zfVE+gIIVKlBFAZW6t56iwMHmE/imhZgswI1bmJ BlsqHEJa7SAa
nldxVhVoAouzrNFZUWGClB6o4Bm10KFpUEPmJ4oIZ/EHWjYK52XRVfYIR6P+ nc6mk/96rGJ4
pg9RDbWHVdI3ilVJaLRef9sp/WhKyiARin0fkgIsRUfpkJTC5VyaYTtVZQaE KQ1DC8b2WJjB
ijphEx+/xFiq7fM0cWnPaFUKiYAtiEbt957buGTCZTArvW9UBGe37VkGqcsr 38ihuCZyy7WS
BUj7QDWnqYCOWusMdht3k9m6slGOzBezz4v4NokXn+9vJ9PlXYN4pczg9Td0 PAdLlPk+uNq1
Dnb+gGq2Ph75b3goxfFICjzATBt0tnkQKv8VS+9m94tPk2QeL/9J0OqHL+PJ ojH2tCSwe30d
peC7XVCDBWXXc622PMMu/oXbHzpDNP4hzHOJiYrLcuQTMbgaK5NzItXd2tlM 7eQoPD+efGrm
SbXaGdC3Kju2+ZfpcrKYxjcXg2HZ6P1cYZE3WGsQQl0MJHiqqd5XNdgCu1vG 03G8GF+Op/Kb
nzprdn19ph/PIJSq1c5v8XWxDRjlrQA7pcUx0p4rw1q1BWRBF1wiL881bLly wdPgDJ4zcEul
o2Kuuiir00ffAPUobDTekXc9l5u12iUGBDALWaKk2IfS+KHRk9TJrE1HbW/g q+NSPXkW+7sm
1L/qz9+eT90XRfTO9spUjMlUUVCZmV7JH4atrUVYyDl6uO/V8F0dBBmEVntD vr75o5Grwv3c
Hz8AUy79OvMMEn0lPMU3c0G2+dgo+aJlmxXO4N6LOzU6pQos3pTuyQas7Y4J xYm/hto24zkh
f+nKimJ943IG/Ymu97mV0kW/4GmsSYq9EoS95bALwIanUoPxnXlBadbkFGJG M/TC0btzsqFb
+hR0c+WXdtLyojv5PwluVBrmOcZpBRpdeSG3dbtLi/PNb/Knwj2sh9swwyQH b2fIxeMD6GHV
jTXQQEo+LrWnTOn31k6bhx3/VT68+h9QSwcIiE5BuX0DAADpDAAAUEsBAhQA FAAIAAgAQH4+
OfPcq4jNAAAAbwEAAA8AAAAAAAAAAAAAAAAAAAAAAHRlc3QvLmNsYXNzcGF0 aFBLAQIUABQA
CAAIAEB+Pjnw5B+b4QAAAH0CAAANAAAAAAAAAAAAAAAAAAoBAAB0ZXN0Ly5w cm9qZWN0UEsB
AhQAFAAIAAgAQH4+OYTm8F6WAAAARAEAACkAAAAAAAAAAAAAAAAAJgIAAHRl c3QvLnNldHRp
bmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzUEsBAhQAFAAIAAgAQH4+ OWlf6ofPAAAA
WQEAABkAAAAAAAAAAAAAAAAAEwMAAHRlc3QvTUVUQS1JTkYvTUFOSUZFU1Qu TUZQSwECFAAU
AAgACABAfj45tHnCnkMCAABPBAAAHQAAAAAAAAAAAAAAAAApBAAAdGVzdC9i aW4vdGVzdC9B
Y3RpdmF0b3IuY2xhc3NQSwECFAAUAAgACABAfj45DTGi+b8BAAAYAwAAHwAA AAAAAAAAAAAA
AAC3BgAAdGVzdC9iaW4vdGVzdC9BcHBsaWNhdGlvbi5jbGFzc1BLAQIUABQA CAAIAEB+Pjnq
Su9zwgEAALgDAAAvAAAAAAAAAAAAAAAAAMMIAAB0ZXN0L2Jpbi90ZXN0L0Fw cGxpY2F0aW9u
V29ya2JlbmNoQWR2aXNvci5jbGFzc1BLAQIUABQACAAIAEB+PjkSbn3XFwIA ACEEAAA1AAAA
AAAAAAAAAAAAAOIKAAB0ZXN0L2Jpbi90ZXN0L0FwcGxpY2F0aW9uV29ya2Jl bmNoV2luZG93
QWR2aXNvci5jbGFzc1BLAQIUABQACAAIAEB+PjmffBNqjwMAABUHAAAbAAAA AAAAAAAAAAAA
AFwNAAB0ZXN0L2Jpbi90ZXN0L0NvbnRlbnQuY2xhc3NQSwECFAAUAAgACABA fj45eQ/uLTQB
AAAIAgAAGAAAAAAAAAAAAAAAAAA0EQAAdGVzdC9iaW4vdGVzdC9EYXRhLmNs YXNzUEsBAhQA
FAAIAAgAQH4+OeMkP0jTAgAA1QQAABkAAAAAAAAAAAAAAAAArhIAAHRlc3Qv YmluL3Rlc3Qv
TW9kZWwuY2xhc3NQSwECFAAUAAgACABAfj45W2cyxR8BAADhAQAAHwAAAAAA AAAAAAAAAADI
FQAAdGVzdC9iaW4vdGVzdC9NeUNvbXBvc2l0ZS5jbGFzc1BLAQIUABQACAAI AEB+PjmpspJT
9wIAAPcFAAAgAAAAAAAAAAAAAAAAADQXAAB0ZXN0L2Jpbi90ZXN0L05hdmln YXRpb24kMS5j
bGFzc1BLAQIUABQACAAIAEB+Pjn6dyEnmQMAALwHAAAeAAAAAAAAAAAAAAAA AHkaAAB0ZXN0
L2Jpbi90ZXN0L05hdmlnYXRpb24uY2xhc3NQSwECFAAUAAgACABAfj45fP07 Z84BAAAZAwAA
HwAAAAAAAAAAAAAAAABeHgAAdGVzdC9iaW4vdGVzdC9QZXJzcGVjdGl2ZS5j bGFzc1BLAQIU
ABQACAAIAEB+Pjk0XNocYQIAAEQFAAAcAAAAAAAAAAAAAAAAAHkgAAB0ZXN0 L2Jpbi90ZXN0
L1JlZ2lzdHJ5LmNsYXNzUEsBAhQAFAAIAAgAQH4+OX+Crmz6AQAAcAQAAB4A AAAAAAAAAAAA
AAAAJCMAAHRlc3QvYmluL3Rlc3QvVHJlZU9iamVjdC5jbGFzc1BLAQIUABQA CAAIAEB+PjmT
P/hXVgIAAKoEAAAeAAAAAAAAAAAAAAAAAGolAAB0ZXN0L2Jpbi90ZXN0L1Ry ZWVQYXJlbnQu
Y2xhc3NQSwECFAAUAAgACABAfj45ULCCIpwCAADMBAAAGAAAAAAAAAAAAAAA AAAMKAAAdGVz
dC9iaW4vdGVzdC9WaWV3LmNsYXNzUEsBAhQAFAAIAAgAQH4+OQM5RwF7AgAA cgUAACcAAAAA
AAAAAAAAAAAA7ioAAHRlc3QvYmluL3Rlc3QvVmlld0NvbnRlbnRQcm92aWRl ci5jbGFzc1BL
AQIUABQACAAIAEB+Pjn+xsVlcAEAAJMCAAAlAAAAAAAAAAAAAAAAAL4tAAB0 ZXN0L2Jpbi90
ZXN0L1ZpZXdMYWJlbFByb3ZpZGVyLmNsYXNzUEsBAhQAFAAIAAgAQH4+OZtn MYZGAAAAaAAA
ABUAAAAAAAAAAAAAAAAAgS8AAHRlc3QvYnVpbGQucHJvcGVydGllc1BLAQIU ABQACAAIAEB+
PjlMUU3E+wAAANkCAAAPAAAAAAAAAAAAAAAAAAowAAB0ZXN0L3BsdWdpbi54 bWxQSwECFAAU
AAgACABAfj45ypWB7PcBAAAkBQAAHAAAAAAAAAAAAAAAAABCMQAAdGVzdC9z cmMvdGVzdC9B
Y3RpdmF0b3IuamF2YVBLAQIUABQACAAIAEB+PjkFqYzQHQEAADQCAAAeAAAA AAAAAAAAAAAA
AIMzAAB0ZXN0L3NyYy90ZXN0L0FwcGxpY2F0aW9uLmphdmFQSwECFAAUAAgA CABAfj454FAG
dTIBAAC+AgAALgAAAAAAAAAAAAAAAADsNAAAdGVzdC9zcmMvdGVzdC9BcHBs aWNhdGlvbldv
cmtiZW5jaEFkdmlzb3IuamF2YVBLAQIUABQACAAIAEB+Pjn5OwBoLwEAAPQC AAA0AAAAAAAA
AAAAAAAAAHo2AAB0ZXN0L3NyYy90ZXN0L0FwcGxpY2F0aW9uV29ya2JlbmNo V2luZG93QWR2
aXNvci5qYXZhUEsBAhQAFAAIAAgAQH4+OWTYUxq8AQAADwQAABoAAAAAAAAA AAAAAAAACzgA
AHRlc3Qvc3JjL3Rlc3QvQ29udGVudC5qYXZhUEsBAhQAFAAIAAgAQH4+OUse hLt6AAAA3AAA
ABcAAAAAAAAAAAAAAAAADzoAAHRlc3Qvc3JjL3Rlc3QvRGF0YS5qYXZhUEsB AhQAFAAIAAgA
QH4+OQsnPqAKAQAAAQIAABgAAAAAAAAAAAAAAAAAzjoAAHRlc3Qvc3JjL3Rl c3QvTW9kZWwu
amF2YVBLAQIUABQACAAIAEB+PjkkKfjDnwAAABYBAAAeAAAAAAAAAAAAAAAA AB48AAB0ZXN0
L3NyYy90ZXN0L015Q29tcG9zaXRlLmphdmFQSwECFAAUAAgACABAfj45Cez+ xfEBAAAbBQAA
HQAAAAAAAAAAAAAAAAAJPQAAdGVzdC9zcmMvdGVzdC9OYXZpZ2F0aW9uLmph dmFQSwECFAAU
AAgACABAfj45s0ivA+IAAACjAQAAHgAAAAAAAAAAAAAAAABFPwAAdGVzdC9z cmMvdGVzdC9Q
ZXJzcGVjdGl2ZS5qYXZhUEsBAhQAFAAIAAgAQH4+OdO5gjAMAQAATAIAABsA AAAAAAAAAAAA
AAAAc0AAAHRlc3Qvc3JjL3Rlc3QvUmVnaXN0cnkuamF2YVBLAQIUABQACAAI AEB+PjmImGaF
3AAAAHcCAAAdAAAAAAAAAAAAAAAAAMhBAAB0ZXN0L3NyYy90ZXN0L1RyZWVP YmplY3QuamF2
YVBLAQIUABQACAAIAEB+Pjm76YoxEAEAAJ0CAAAdAAAAAAAAAAAAAAAAAO9C AAB0ZXN0L3Ny
Yy90ZXN0L1RyZWVQYXJlbnQuamF2YVBLAQIUABQACAAIAEB+PjkFjXSoYwEA AHUDAAAXAAAA
AAAAAAAAAAAAAEpEAAB0ZXN0L3NyYy90ZXN0L1ZpZXcuamF2YVBLAQIUABQA CAAIAEB+PjlC
tkTiRAEAAN8DAAAmAAAAAAAAAAAAAAAAAPJFAAB0ZXN0L3NyYy90ZXN0L1Zp ZXdDb250ZW50
UHJvdmlkZXIuamF2YVBLAQIUABQACAAIAEB+Pjk2H8+YtgAAADMBAAAkAAAA AAAAAAAAAAAA
AIpHAAB0ZXN0L3NyYy90ZXN0L1ZpZXdMYWJlbFByb3ZpZGVyLmphdmFQSwEC FAAUAAgACABA
fj45iE5BuX0DAADpDAAAEAAAAAAAAAAAAAAAAACSSAAAdGVzdC90ZXN0Lmxh dW5jaFBLBQYA
AAAAKAAoANoLAABNTAAAAAA=
--------------040202000206090402020902--
Re: SessionSingletonBase encapsulated [message #107165 is a reply to message #107122] Tue, 30 September 2008 14:16 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: benjamin.wolff.web.de

on the first view it seems that you want to work with a static registry object,
but static in this context means the same object for every session, as we already
concluded. so either you remove the static attributes from the register class and
work with local objects or you:

- remove everything static from the register class
- extend the register class from SessionSingletonBase and implement the methods
- replace Register.blabla() calls with Register.getInstance().blabla() calls

Thus you'll only work with one object throughout the session, as if you would use
one static object in a single-user application.

The documentation of SessionSingletonBase should give you some hints.


greets
-ben

Roland Siebert schrieb:
> Hi,
>
> I don't know how I explain what I want, cause my english is not so good.
>
> I have put an exapmle project in the attachment, that shows what I want.
> Hope this will help.
>
> Roland
>
> Ben W. schrieb:
>> hi,
>>
>> the question is, why do you want a composite to be a
>> session-singleton? RAP handles the session related stuff when using
>> GUI stuff.
>>
>> do you maybe just want to encapsulate session unique data/handlers/etc.?!
>>
>> greets
>> -ben
Re: SessionSingletonBase encapsulated [message #107178 is a reply to message #107165] Tue, 30 September 2008 14:20 Go to previous message
rollo is currently offline rolloFriend
Messages: 117
Registered: July 2009
Senior Member
Ok. Thank you very much. I will have a look at this.

Roland

Ben W. schrieb:
> on the first view it seems that you want to work with a static registry
> object, but static in this context means the same object for every
> session, as we already concluded. so either you remove the static
> attributes from the register class and work with local objects or you:
>
> - remove everything static from the register class
> - extend the register class from SessionSingletonBase and implement the
> methods
> - replace Register.blabla() calls with Register.getInstance().blabla()
> calls
>
> Thus you'll only work with one object throughout the session, as if you
> would use one static object in a single-user application.
>
> The documentation of SessionSingletonBase should give you some hints.
>
>
> greets
> -ben
>
> Roland Siebert schrieb:
>> Hi,
>>
>> I don't know how I explain what I want, cause my english is not so good.
>>
>> I have put an exapmle project in the attachment, that shows what I want.
>> Hope this will help.
>>
>> Roland
>>
>> Ben W. schrieb:
>>> hi,
>>>
>>> the question is, why do you want a composite to be a
>>> session-singleton? RAP handles the session related stuff when using
>>> GUI stuff.
>>>
>>> do you maybe just want to encapsulate session unique
>>> data/handlers/etc.?!
>>>
>>> greets
>>> -ben
Previous Topic:pack() in JavaScript - how?
Next Topic:Databinding support in RAP
Goto Forum:
  


Current Time: Sat Apr 20 02:06:20 GMT 2024

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

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

Back to the top