Home » Eclipse Projects » GEF » Contribution: RectilinearHandleRouter and supporting classes
Contribution: RectilinearHandleRouter and supporting classes [message #86353] |
Wed, 02 July 2003 15:06  |
Eclipse User |
|
|
|
This is a multi-part message in MIME format.
--------------050106050107040006060705
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
This is the first marginally usable version of RectilinearHandleRouter
and supporting classes. It is still rather buggy, and it is being
submitted now for initial feedback and in case anyone wishes to help
with fixing the remaining bugs and making it good enough for inclusion
in GEF...
Feature Summary:
----------------
1. RectilinearHandleRouter is a subclass of RectilinearRouter, which
does the rectilinear connection routing (described in my 6/26/2003 post).
2. RectilinearHandleRouter adds the (still buggy) rectilinear handles.
3. There are 3 types of handles: corner handles, vertical segment
handles and horizontal segment handles. Corner handles can be moved in
any direction, vertical segment handles can be moved horizontally, and
horizontal segment handles can be moved vertically.
4. Moving a handle affects the locations of other handles, so that the
handles all stay at the appropriate part of their connector segment.
5. New handles are spawned when an initial vertical or horizontal
segment handle or an initial corner handle is moved (initial = next to
either end of the connection, not at the end itself).
6. Redundant handle elimination: if you move the handles so that the
connection contains two line segments which are on top of each other,
the redundant part is eliminated.
7. When an IFigure is moved, all Connections attached to it have their
layout regenerated by the RectilinearHandleRouter, which updates the
handle locations accordingly. (This is different from the approach
taken by the BendpointRouter, in which the locations of the bendpoints
have an effect on the new points of a connection when one of the
IFigure's it is attached to is moved.)
To Build and Run:
-----------------
1. Unzip the zip file.
2. File->Import... , choose "Existing Project Into Workspace" and browse
to where you unzipped the zip file.
3. Run->Run As->Run-time Workbench
4. Make a folder in the navigator, and in that folder make a new file
with the extension ".routertest", e.g. "foo.routertest".
5. Double-click the file to open it. You will see 5 boxes connected by
Connections which have been routed by the RectilinearHandleRouter.
Click on one of the connections to select it. You will see the
rectilinear handles, which can be dragged to be moved.
The Contribution:
-----------------
There are a lot of classes in this zip file. Luckily, less than half of
them are actually intended to be included in GEF (once everything
works). These are the classes which are intended to be contributed,
once they fully work:
com.intalio.draw2d.RectilinearRouter
com.intalio.draw2d.RelativeConnectionAnchor
com.intalio.gef.RectilinearHandleConnection
com.intalio.gef.RectilinearHandleRouter
com.intalio.gef.editpolicies.RectilinearConnectionHandlesEdi tPolicy
com.intalio.gef.handles.RectilinearConnectionCornerHandle
com.intalio.gef.handles.RectilinearConnectionHandle
com.intalio.gef.handles.RectilinearConnectionHSegmentHandle
com.intalio.gef.handles.RectilinearConnectionVSegmentHandle
com.intalio.gef.handles.RectilinearHandleTracker
com.intalio.gef.model.commands.RectilinearMoveHandleCommand
Everything else is just test or debug code...
Known Bugs and Limitations:
---------------------------
1. The connectors still do not handle being inside a
FreeformGraphicalRootEditPart that has been scrolled. This is the issue
which Gunnar found (see his 6/27/2003 post). You can see this if you
run the project and scroll the editor. Randy: since the handles use
AbsoluteBendpoint, I'm not sure if I can use the approach that
BendpointRouter uses in which the bendpoints are relative to the source
and destination of the connector, which is affected by the IFigure.
Basically, I'm not sure if I should be using AbsoluteBendpoint for the
handles and then adjusting them in response to something, or whether the
handles need to be completely refactored. If someone with more GEF
experience than me could look at this and give any suggestions (or
code!) this would be an enormous help.
2. The handles are not updated on mouse release of the drag. Instead,
you currently need to click somewhere else, and then click on the handle
to make them be updated. I wasn't sure of the GEF way to immediately
respond at the end of the mouse drag.
3. Redundant handle elimination is theoretically configurable by an int
which specifies the difference between two handles within which they can
be considered similar enough to apply the redundant handle elimination
to (basically, an error tolerance). Currently, for values greater than
0 this results in connectors which have a non-rectilinear segment (as a
handle is not adjusted accordingly after the handle elimination). So
this means that the user must currently make the lines exactly line up
for the handle elimination to be applied.
Anyway, I hope that this will prove useful to someone and be included in
GEF once the remaining issues with it are resolved. Any feedback is
greatly appreciated.
Thanks,
Peter Armstrong
P.S. I will be offline (on holiday) from July 4-13, so if you have any
questions please ask them quickly :-)
--------------050106050107040006060705
Content-Type: application/x-zip-compressed;
name="rectilinear-handle-router-001.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="rectilinear-handle-router-001.zip"
UEsDBBQAAAAIABRs4S7TNparugAAADECAAAkAAAAcmVjdGlsaW5lYXItaGFu ZGxlLXJvdXRl
ci8uY2xhc3NwYXRopZG9CsJAEIR7wXc4rveinUViEImgRQTRWpLLmpxedsP9 iL69UQzaKXGr
3YH5dmDC+FprdgFjFWHEJ2LMGaCkQmEZ8f1uOZryeDYchFJn1jaZq9qDtfMW AJ25sbPCIuLW
SM4e4nMN6kwhD351BGRKAVKrxoKQZEAYsOSNBNsT4tU/33Mi91d6j07V8AUh CTvEJ+FUOKEz
j7JqmxDrbXJYbNLdfJUm256ZSjh+cZJ3jXedOX91Fwaf3d8BUEsDBBQAAAAI AFVr4S6X52MJ
HAEAAIoDAAAiAAAAcmVjdGlsaW5lYXItaGFuZGxlLXJvdXRlci8ucHJvamVj dL1Ty07DMBA8
g8Q/VLkngRsHN5UK4gZCKnyA62xdR35pbVd8PrbzgCgC5YC4eWZnd5zxhuw+ lNxcAJ0welvc
VbfFBjQzrdB8W7y/PZX3xa65uSYWTQfMP4JjKKyP6sheEU0VNBgLQgoNFMsz 1a2E0oPzpZWB
C03qLEpqZpQC7RtSj6fEDqNdAhNqDPIKmBTWQcUMQnU0xpN6LP+uRXAmIAO3 uiFoLxSskHM4
rVAFMRNNIH8kOQYh24MF1g/I8CEmErPLzJDr94Fd6/ubdvRCcwPgV7KxgyIP KVI34HpOkHrh
ssrXtlA9Uy1O8UH3/2t7YGdQ9E9MB2aMPPr5EHekV/dgYf+at/clF5N7Fv3U MHsevegZz8lx
2oX5v/QJUEsDBAoAAAAAAIaC4S4AAAAAAAAAAAAAAAAeAAAAcmVjdGlsaW5l YXItaGFuZGxl
LXJvdXRlci9iaW4vUEsDBAoAAAAAAGds4S4AAAAAAAAAAAAAAAAgAAAAcmVj dGlsaW5lYXIt
aGFuZGxlLXJvdXRlci9pY29ucy9QSwMEFAAAAAgA+YjRLpDb86B4AgAA1wMA ACoAAAByZWN0
aWxpbmVhci1oYW5kbGUtcm91dGVyL2ljb25zL3NhbXBsZS5naWZz93SzsEwU YBBg+M7A4Grn
eGbDtT9f/t+c9+f8rjvfnv/f2Xz71MpnL5688XAIvHTqdrbL3MroefNrzyzt ObFy3s6u3B3b
pj2vSpu1dubZqpwJEeYTXU2SS6LmBdjn+jklr5pwNd69Z8Wsg/LcXoH2ZUHu GVXZswI9kneu
ufz8ydtI9+Yor8YIr8rjG/4e2XE/1qerIXfLmsWHly3a4GpU421T7mFVFOzS kBg4McK3auu6
kxGe3TE+E6L9WhsK1ztZR96+/tLLtibMoyvKp+/po48eVm2BzhMyk7qK87qj /KbGBc+NCZge
HzwnMqAjJqSlrKh7wZxt587cfP7sTXLkwquXHz198jrAozsxYlFs2IxQv+kp seuTY9YmRa9I
iFqUnrAsJW5zWNCs5ISlmemrliz99ujR+0ePXoRHrs8v3OPusyi/4nZxzd2o +CWFpSsrWt9X
tX8sb3pTWv+itP5ZSd3j4tqH5c1PZy16M2nGBc+gGZUdX8rbPlR3fq3q+Fze 8ra85VVhzdWO
qT/rOu/nVRzqmPl3xrK/hrY14Ulznj57/f//f4ZRMHBA8ScLIwNDA4MOiAPK EwwcWxgYOWU8
Niw42MxR7dOwYcEhVj5lvmcKCQqHeuXtojwCAjZ4MziwnjhwUulpJ58AB0eV SMCxfjEN55Y3
BR8bFnQwJvzK2XloCYegnIEGz5HmdH8Zy+IXcwyDj/vNtqlky3og9Ix7mmbI qojOpCcnAsxr
LnR4Lk7jnW1Y/mVPpXHBMUZR2YwrHonObhwMOhz/HAuV2liFVH1qPBpSPA+q aUgZfGhQZO5T
8OKrinyYcJhbwXOOwp0zlcUODAzWAFBLAwQUAAAACAC9c+Eu628d2VgBAACW AwAAJAAAAHJl
Y3RpbGluZWFyLWhhbmRsZS1yb3V0ZXIvcGx1Z2luLnhtbI1Ty27CMBC8I/EP lu84tKceEjig
vm4Vgg8wzhK2cux07VT072s7hUBUHj5Y8mZndjzj5PN9rdk3kENrCv4gppyB UbZEUxV8vXqZ
PPH5bDzKG91WaMYjxhiWBVe2Fmi81GhFBVvhwfm0TZagPGo0IOlNmlLD0rYe iCeokTUUfBX6
2NW+o6CpiJJSTWnp3IXJkXH9/pE08iA3AXJqjccaZukUCxo3JOnnT0ZE0o7E pySedU15dobJ
Cb5aJHA9BdaNJc86OwpuqRKgNDYOohreK39MyrO7kMoSiDDGtqTA3Qlq8UR1 r7OrwN6DiUIO
TGE1Nvg25BBQorfkeD+zq5wA2Vlwz+kza114Iszv4HqSx4UquhJ3lzlZNzoY httB01F2CJoS
Swxp0BQoPOGmDSoWN97Eom8dktxAvpJsdqik7q47vMylX+A/aO9s1ll7SO14 2xRbnnUph8Mv
UEsDBAoAAAAAABJr4S4AAAAAAAAAAAAAAAAeAAAAcmVjdGlsaW5lYXItaGFu ZGxlLXJvdXRl
ci9zcmMvUEsDBAoAAAAAAE5q4S4AAAAAAAAAAAAAAAAjAAAAcmVjdGlsaW5l YXItaGFuZGxl
LXJvdXRlci9zcmMvbWFpbi9QSwMECgAAAAAAbWzhLgAAAAAAAAAAAAAAACcA AAByZWN0aWxp
bmVhci1oYW5kbGUtcm91dGVyL3NyYy9tYWluL2NvbS9QSwMECgAAAAAAQGrh LgAAAAAAAAAA
AAAAAC8AAAByZWN0aWxpbmVhci1oYW5kbGUtcm91dGVyL3NyYy9tYWluL2Nv bS9pbnRhbGlv
L1BLAwQKAAAAAABCauEuAAAAAAAAAAAAAAAANgAAAHJlY3RpbGluZWFyLWhh bmRsZS1yb3V0
ZXIvc3JjL21haW4vY29tL2ludGFsaW8vZHJhdzJkL1BLAwQUAAAACABFkN4u VPI3NLEZAAD/
iwAATAAAAHJlY3RpbGluZWFyLWhhbmRsZS1yb3V0ZXIvc3JjL21haW4vY29t L2ludGFsaW8v
ZHJhdzJkL1JlY3RpbGluZWFyUm91dGVyLmphdmHtPWlz20aW31OV/9DJ1iZk TFNHZi8rzkZx
bK+qPJJL0m52JuVKgWCLxAgEOAAoCsn4v887uhvdQAMEKVpxdqdrJhaB16/f 3a9PHHy13/Lp
J+Ir8SJdllk0mxdiEA7F8eHh4Qj/+7U4S4ogjtIR/BGORZBMRVrMZZaPqdpp HAuqlotM5jK7
k9OxuJ5HuVhm6SwLFlQDKoggDNPFMkjKKJmJRVDILArinJAEmYQnU4C5C6I4 mMRSrJKpzKge
AC5ykd7QjxfpYpEm4u1qEkeheBOFMsmluDsaHxKi9TwK56alSOZQCUiZRnmR RZNVEaXJiAiC
h1VbQUGV50WxfHZwsF6vxzKMo2Uux2k2O4jlLIgPwmX89O7ocDwvFjFCK5kl jDfN8mf0BIsr
sKciSqICWBXRYhnLhYS3SAeC77UcfPrJMghvg5kUwP44YirG0yxYH09PPv3k 00+AgDQrxF+A
8zHIIh6fgWwDIP7E8+5/ZMhvzDsQhhEMYx2fTkCwQVhcpitAddIFCrJKACVw 3hPsNAnnaTfO
s1fRbJXJTpiZTBeyyMrx2xREsgXoGzCafuCXQHCQzGJpS8vWwUzejF+/fPWD nKxmBHOgnA5r
RnGUyCBjEZJhJsKVK5h1Clae4Y/BUECj83TKP5X/gO8ZROLX7+CP227hvger hGrroAQPCQpw
hjSaMjLybqFEC9TkYrFCpwKPTvM8QocpUjFNxTfRt39dReFtXH5zEH1LbrWO gLQVu9MiuEVP
Z6/V7Yo4TW9FHN1KERXQfHwrMToALzNoAur8IsfGvc4KFMcqlzerWEDdCIJM ugYPBo+jH8ss
WgRZKZarbIkSAmggbSJFvpqEcZDngHxS1iX9vUymS9QwS3eko8Z0mosc8BWO NOfAVywJcVRU
tH0XrIDVTLyVqKBTCFFFliYzfIeOyPGJaPAoWd4XQENeV/OvUBvKwYH+93oO IRWiV8bCgxgS
pkkOtga8Y8xcIYOoDJmHEIdIMSjvOA0pxmDUDDQyYhlYi+HVHYGCoSk1i/ux gKgtS0ILYTk1
uAGTnKVZ9As8J4+kwO+QKcT5jxT5xLlQ/76s3qlX4l79a726Uu+u1KurlxVq 9ddXXyFdgokH
/SbgW3PdG2jqB6AIZR9FuhRyOpPDMSkCcUBHVIAAgZ0cQ28obiIUJSI8F8/F 4UlrYzLIi721
9RLaOmpvKwcb2B9jV9DYcXtja7lHxn6Etr5ub4s09rSHKDn7CNMskVlP9aFM /7Cp6R7MxvJm
y5aR6X+xW+Y/hE+rm5ifpEWRLmr8a3w9dI1S+Ne+tGyQhqLFEcgWpKBY/m2D QvZmeGfn1y8v
zy4uoc1/P4GgAUgQQQ39fZtgpvImWMWFmAVLcXotIIcUg6PDw38eij9fXPyR +8UcurN4il0K
5acTWaylTKzIaTDqNFf1dcDTRGL/R930FOJqusK8s3j6NBrLMYFiWgoxlbrC z2cpdDIA+7nB
OJE3KdBfrLIEEf3HIVA8yySAQd+dJlbHIAbRDSKZIg6E30ZnP7x8dfrfb65/ fn36FiPUYYsh
gfawewWy/3/JC0X0M7C8USy/pOjD2O+yWMTz5yijYd0e1/LLjJM5pDJK2pue pivMtn5GzK8C
k47XiTgVd0G8kqSAkQDOfg7TOA4g77uUUxAipAtXcoYDD6Y1W0nIeSIYuE1M CmGQzWW8BLnh
oAsyFsSWc12BWS3IjjOPTGOmvIGFAEqWWZZmBleRxjC+AIWNRB6h3qCxjOsD /izisZdJFNep
wCwpp/+KFUSCe2A6LpsCiu4gKWHNGEKu55CtztN46pXRC8ybslUIma5I5LqZ kzUa4QyuAQf5
t0rTsKBhgNNYLnRivaz0JsgU7HdNuikVgSiWSciqQUTEPdd472PpUqLlKse4 uZGZRBGTF6Io
72EAIEo2jRyyuAQy2TtJbjeRlEdGMMKW00pbgCgPFlKAFxn9hqWQcQSmwPmk SrRzIy3xXfYx
kOEqDQ1jJovLhohd5SnK/SbUKvYrWfzmMl8GOLFSGMvZiR6DrqJrH8LHgSTE DJ/0US+GaEcV
MNS5+OFCPIVu6R5Gd7OcRpJeL/lWHEIaUWCYnK5CDBw4hsLUyUangla+yeOK Pip/rVSOzt6v
l2v2bgaZv5ezwmh7T6d6uMp6Nvd0fkf9PTPidfXXwdLv29xx45NOZ/59a5bD AfOwCy8G06Zc
rBcvljz65mMbQglqlxQdLH297wYdW/3kg1M0x4t2xeZnViV7YMx/NmmD36ad dLCVbW3ae+CZ
7Ytx7IzSoPNkvK66Lf6VUKgtV/VObkXvO20ADZlo22Jy1J4F1BOlBiNPmD5k stSgUpOmD5ow
JUyV7iNOA3CMmxem49aj8CBRU3n8CAYDEpJinu6jBAFrIuMViTRDSi5+k6UL AsjTVRbqsb2a
eGw2h111msQlC6wKcBUCJTye1aWpRwJt4NNWxdmNFbVsIMUXLj/hRG56AyHr e8A74FDHsWsN
OiNxgrPheAjUUg5HFbPQbpp8WYi/rHIUObPXSdQJVtKQoO08dbTLAqVZoGS1 mIDFgKcYA5nQ
XDDGxFVGYtdhdiGDJGd+11a6FhjawhTXzICNRAITIDycqC3mC0rfgDlyZRW9 g0rQtvEBZSC1
5RI0FBH1k1TRq9SDgvNwnD99ikAkFdu7iSQ0JpoxL4JbGqeltCa3Avmw7LGq 4zrUjG2UVbjI
m/Z9DiPkZ+I6RR5JNwZNyqE5XYJ0I3B5TGx1WFLoKSoZVNCDZSQmtGvyBBoZ z1ItNxKFhcW1
2oZ2cHAbxpgfI2VN0lUwDRWhlqPbXW4FnkvZHax4WPpPvDjUCTnsCLtc3aIG CHQCrl6+GudB
OfgcjJVrDMnUAPiZ+Fw8oVpm/I2lvpynxKd+PMcKY1DilfV0MDzpqA/qAvh6 /WvrqVM/uhED
t8nn4IKg4L/9rYaKnzs8Y+FO18L43mZPWwE3oX48d5hE8i7WiXTpMuZDNJiK Nkn+ihVDulKd
Iff5jgyFtM4OhIAdo3RcHNDKOfSK8O6FA+dQNnLocc2CFlgdMb1Jw3ordSm+ Uatag/qLS6lG
voR2MLTlxS3ZcvW0VBe7aan+wtdSherggHuYJIxXEDIVA3p9USXNr84ur65V 56hCCquEEu0s
KGu0//RO4XkLfVVTD5c8WzRlD6Ia+cCFwlIT9agbovW10mzzdU3A3XLB7qQm lTen2wqFW+wW
yg/QUKtIaiRvYKr1datIjNZ+Mn+NY5nMoHt9Ko7e+RwihgxBKbIwYaQVQ8PK sTqxXJhQgpUP
m5CTLJrO5AvodKNpUMiLBIMPzouyXdt0jO9HFuJx2XSuGrLrddpApiorVAa1 g4yyxdWC9WVz
r3l+Io7g/4Yv9bgpRjCOCXbd+Yu5DG8ZH3Ho6shQ+NO7X5va8wtj6NFzU5Ye IJ84hu+b3J8l
0JnnNP1/NQ+W0kc4Rl8HUmVkAx/Xo1oo95idT16kxEeRF7S0T3l5CO8vL6Sl l7yAPPrzFGOT
be0/GQu2ne6qzAu5GFMkC9NlOTC2PRKHIxcbPanbfj0DaLOUb563CaWRBziN NgLMO2Cqadh2
1iBknMsHIwXK3FRE/9kQmduQiQI12zkcdRBUe+cLMKOWZjx6qNmAWzGYTq9g 0KA6H9x9uDQT
4i9oWV29crAMPdaG29CoLQqKxtDwsVvZQyLm5jRzFvHiUiS+Eb468ObJE6+F AOfACnuiq9zo
3dDVnI/upQ7mKk9XTNs1GWScyUV6J0/j2AOClXNTmcnS773TPWqQpVrH6Q7S 0cUr8eLi8vzl
pXh7cXZ+fSUuzt/8qapkTe0xPGQiSZo8NQsHakOEwqsrNpZtdZDo0LoGYUyO 5HnfpbiVclmp
nB86QiEU0Kq8O51OJasIoBmj2+crXKjJgXk/xLXGIF4HZY7WygNhZ+wNZZKm sQT53b+JsCsp
8Z82+zpi+1L6rPIUv3ERRuzlo0UUB9nAZQQzBUVp9G58PxRffOFWx2KqVoBV LXRmrHni1iu7
my3tZsu+zZb1Zst6sxizPxswzzBQIyqGDZlg8ejK9TRd2jQfvasBW0HV+tPT TkNzDRuRybRu
IcpptEUPBxpxkVKcGNhpw/thp9uqSS/a3Rrk+WohczPbZ5wZBqc/sR+OaF5m JJxfBtl4PBb6
3bvGZLbCZiHmPbY002M1xZMy5MlLe1rGihW6Ps7zJamNoV+EsPqJzWEB2r0L 4vao4Iv4jl7x
0ZPn4tg3LwCY2+3Osp2GzlVdj8rFJp3r1ZlsRZtNUKC4cs0CqWajaVEa3Psm wKyDpg7XUS4b
eg0I+ibKcjeWGYAJo5PQp0zrENl+aGmoW0dRrPi/LDURjPToybfGMwjG9ziD M6ki2IOlV35E
0uugpVN6f+orvZKlV24rPWsXhV4v1Yxgc2onRcTuHtFLg442P1WbnsQsuoPq k7JtL8p2+qCm
O/VRg/Do4+Pgrl3DqmdVGm7V7x+DYj4OJvkggF4KIGDUs+UmnheZDNSCIMVr tcm/rZswGWS/
jNDI3tRTc116AiyIY2q7A1fVkSXpGjSM9JCsSofiVpnq+OsORDo6GP3K6WH4 4TFQ4XQi9ekn
SBLyPJolQqJNKKGpJUGHK7HkQxlmEVz067I8CSTTSbRF71rSn/c2ibRK5mjd 0VofStrTWUzw
DAUcu/VPnYmKX4GIO5kVURjEbm0sNj9UpT6k1KWaGrEaHNnNl1DfbR1S2QPo 8+uZoRrDA11z
POGR4nGlvVDmyKJOzD0R42bavXJW5VVMT5/ATtPIPBWsDTBMF5jR4Xq7d0Gv EQLUawvS2zM6
i0wWMC86+qHNEqKBznG6pg48pbXEOS88t/W6O7C6MXZsXl6gB3qdo3rcuepn wfmWz0Z17Mi1
LxVedo2Ol2pow5jdaRVzXE/kEzPPrLQPLH9Ps4LuohuQgRtO5PQ17TjCIDEc 0Pajr+ytKHYd
u5WZby7VAPiWayDxg2Bj2vQtL0B2sxlkHU1pYguddwPoXNL5kxqsKzoURCbj 6/QqC2lqkRbT
2FD4XFm1SDeZjVh3LgYIlE0Mz81Zjpb1Smf2mTVmzwa/rxPJbnddLn2z5w1a PfKwDNZaiLXt
Y8Ma2nYrlq6Qcsi/IF8YVFw4YgkDiNrnz9z2tcVXQZgbxb4BdDEuh/Ugq1up q6OhAm97/PBH
79OXz5qyOTjgTTU4jxAkpVhU+x2tMoHE7PbEg9Pb0FX9KRaPIID9VilgaW21 zgi36mOvpVVw
J/yX3HAnCq48baEPoWcB+m84VDypfP2AxvaY75gtLHiYq4kFyw6y2lxN8czx xIvDSjwqKjN3
D3eP9voK10bhf4ulQt4Og6XZ9Gb4PjLpZxT60NozkN0qAYBwjncYuEA1XHU8 XsPaGD+6Wdgu
mNQb93tzu7c9MJj4w9b2wWSzVttJ8IaWrsjit7LNLvEQIn/D4LOZ7M049hp8 PtrIgeWBEfKx
g0/dzvuRz/HooYmM1/H87vghYk+/0IflI3J8f9TE8qHyHl9bJvSUHHqYQz1w 8cSeIl1+EHfp
QLF15OED9//3Qk//ZPCRY0/dstrp30+88Q+R+o9nPki82WII86GiyfYkPGzs huWDR5Ado0bv
fnrXCLKPHOujjUKPHUEaprvlTIo/qwjptOY6zW6FjHDRDA+dnaijSMFyKRP2 /yUKOu/H8sM7
8w1zSFgebfakLR5j2WO+tTsRv2HGtj917ikG78/b6qxt6W3+PvWRva2n0T/E 2/YxQ7pHD9uu
e+/jVXvPS/anlA8wCtrdf/C8TSrwnGXNkxo62XLS7pH7rQdF7m3mLrFs14lt k7zuoxPb93h8
B3f7ICP6PSjuQ0SH/U2yP6zvahkPPrLH7RQm95jKbG3s+/Wyx+rIHqHv6u9N zTdYPlQGuw9/
s3HozQTV267dy8jzDrvVrU1G9n27+JswiKWwL9vF59WekEwM8Aac9Mag4/2Z npt+zbF9cxFL
DVfVYpTbTdbrLS1I3u1u6G4ndI2HYaotSTO+VKJCnT22FLwXNPo2dVjN6N3C 7vVBtGcPZ4Ke
iwzcj2ZVGvM9DHTPQGoTn39JS0ni/Meacas5G43oW0REy02DIaNrWXvS+F76 8WHNRTSd1t3E
rlqvafmDTVTJRPE8kqbKN6u0tTCu9iyMq92FcbVRGL8+kNk987o7qzr8dXDM f37wzZOdWxcr
EGvbJAH6N03iK2vLJEF6N0wqotq3bD7Spknv9QMciegKhOphY8NkJRXPdslK EI3Nkmq/Yz3M
WUL+TN0X8sUXtkA/a7ktRHM1CcLbdZBN87fNCxewtG0V5aseLG5s4jW1J/42 PTvRbTL0oeJa
bd8mbsbUuZ0ci9roTNvJ7ZZ8zeJ3Perb4LHUshTflmUC84Ycz15HFFdtp6P6 p9Nzq2umzN1k
/J0HvNtlHsXTTJp+mk9y2BcaGYzV62Ual3Qvb6QPl+digJd78aEG9JnKiPOh 5yQF12e7IMTK
4xQVGqBREUhOOIiYe+UoeTFscIoCv2XIF6ilAm9NipysoqwI98aBnQVmNaJO Ku4ksNa4otIb
/w0GNfenkx22nD3Bg+Xp2D999CVYF+O3UHmGV1HRFlc8tp3hORm149VFbXst 0ggC5MsGLDIF
f13BkKA+N8NRG/EzMbgj9oWS8WA4jhSY98Ikqmo9X0M9KQaMcTwP8nN5zx2s 61oEgFu3FaKh
qpEQeM2J6zvEEbRlazgWPt3LLUQJ34kJptK8ecsqEH5ZyuPKPga4nQoHUnii WO+por/0eMoX
tXyCf/JkY9+PRccbD4aukc+ZOs2XagRB04Rw+nGkrv1Gp7C8QJ3wtbJ+z7Vl Gg9d0Y5uQ9Md
iAmvYjwTdF8h3Vj3TN/kbtAheIHZgTr21oG+IovvHwTDw/kUrmgQkqbodjZj GOlG1ET5AGhb
gCji0iCLEmgBP3ZAn1uQIMoIXIKuVdT9Ih8X49vp51E+FuIq1TzzBYP42GBc JbHMOaYafEBf
F9uQ6MyBETlt3lBnn8Jm/1eoOSgsGUWuv5qjsjH1NnUFF+oLZZGHlzCsV+fW QJA5DNbp1kM8
fWhwU4/Ah6657elI1PojPGeNtwUOEux/sR8ewhO67w8jqYjsKxwGbIHmdkaL NsWIunOebCaF
RqM8fxpmaQ59GH0Sp8a3KJCs3M8l3vuJbS/kNAoSvkV0Gt1FU9DbHDwYTLf1 RsBlo2OMnCsC
7XzYuJ3WJ+siX2UZE1th0ZXavgPRcFwn5Fe9CoV8O/wcHPxXEN9oP+Dtn+pH TWJ8DSzhBb2O
KxTYbUyo5rGwv42j3yXwtHH2EJc37Es0LSa5GpB7ryTIqSM+S+w8jYFKP1AF xhn1/Ggk5sfw
/69pYWWO5p5JfQDTTHrkmk11mTrdvOlcSZ5SKFR3VqKBYhxxr0mz/36bpaH2 6nwpQ/yCHM38
KSHzqWCmYuxHMj9quRCE5K1eOBks9mTzozGdX5wf06i3esnoo+LLHCxPH2S0 74lVpTRNQiuA
rTzxvyf/bYFRhOA2HaCj1NtyUKrTdJ24wFjua43i8SllWyft0DYJOJ3pr+Hs ukESVp5NQU0C
2tDZ0C4BbSRvnKswaqnOcXoU0yDxxP/eIcqvmHtWzL2tmJbpjIY5dArGaxzt gqlrxj9B0ySh
yzj8JLQah6Wbnt7Mx/XVbKj6hdecmW/NDTiW8KFqdSe0jc3tLnHEOz8etgSB Poeaj/1jYjt+
NK6VsWMIH+ytA3ztAhzXATYGGywHBxzoeCjViDw4h+CIEcHUt218yDZ4CBZv 6LGI6IpCWO4d
oQjmrdPg7FpodMeY1JiaXd6Cheg9Zo/8ukWKuuCHMSo50Ue+MItvP/yApfQw 1O3E9Zp1prr9
D4s/zNnFZYW/nQa8tB83weJnZRMxds0mK5sE4dmdaIWthmH5+hYsfrPa1Hi7 WW1i+h9m9fsz
K/dRO7PNoFqLituG1fZrLbz5QsPoO0xlNzPZ3USU3Zds9+UWdr9a8uC8rWPA slvnYNfcvoPY
1uiRA+SkLRJh2S0a2TW3j0hbBtJ2l93NXXd31X+Y1O/JpGpBtPrZN733DNat 7L7HWL2RnreN
3euAkIMDUquxqlqPkT3V012CP6KXrQ0rXzjpAd8Cu/OQv42YflMAPtL2NBXQ TlifqQE/YQ+Y
InD023bh00baT3rAt8DuPnfQam+95hK81tcuye3mFNpJ6zPH4Cdt+7kG+pxv XIrJKoqnND1u
r23KdW1OtqpqLTnXp4IHSrcjTe1IJJ074l5Ld52WVkRDNLIoycVNNDsiyuCP Y54mT8EgebeX
9ZVXPSFO8NVMp0Ga8kqvB/zYTlnb4S3JPIzSxpy6Rjdr+z5KJXcNim2N7F/u zaw22FteCX9O
P+g2bXrgXSZFRDb8cQs8uqSNu/qYjI2h81My9M5CaW17cjFXGNswVfBNfI1w dnaDyzo4m85r
jfThKsSgdgxoBeqfGd+3SPxVX8Ay6HABSP51BR03WAzuQOWbK2ntbYSIUKy4 LWg9l/hCb72O
7LUggy3QX86BBKBCxp8hA8nkgFLxHIE0AE7LrMCtCri82sCoPkwgDOqB4+ZB gQtWIJREEcap
xwIZH+FfSR0juQW+iTK1EJ+Px+M61DV/mDWTN3TF2UEm11lUyP9shvYoN3Ze KXJkq71t102r
7rG839TSsdXSUb+Wjvu0pMBbnbmFSdt0O4Kl3qyjrmelmGO+zWdsB/Fuvif2 RodK7f4GRag/
tNAaLqtNNbiEqBax9FYajSe3V+tNAN2B9NbQqe+AtVS7fYjUvt4n5BnY7uBG 9DdV6keElLYh
Qmn58ehA4LrPyGLI6nXhf38HUEsDBBQAAAAIANxR2y7g1tB6kwUAAFQUAABa AAAAcmVjdGls
aW5lYXItaGFuZGxlLXJvdXRlci9zcmMvbWFpbi9jb20vaW50YWxpby9kcmF3 MmQvUmVjdGls
aW5lYXJSb3V0ZXJTY3JvbGxhYmxlVGVzdC5qYXZhrVhNb9s4EL0HyH/g5rJy kciJjN1Diy6a
TdoiQLowmtwWe6ClsUSUJgWSstdd5L/vDCnJViR/JC0Pisx5Q848km+ojN/8 3HZ6wt6wG12u
jcgLx6J0xJLLy8tzek7YnXJcCn2OL2nMuMqYdgUYG3u3aymZd7PMgAWzhCxm j4WwrDQ6N3zh
PdCB8TTVi5KrtVA5W3AHRnBp/SDcAPZkiFlyIflMAqtUBsb7IXBhmZ77Hzd6 sdCKTauZFCm7
FykoC2x5FV/6gVaFSIt2JgEWnTCUTFhnxKxyQqtzHxB2bubizjsXzpVvx+PV ahVDKkVpIdYm
H0vIuRynpbxYXl3GhVtIQtecqTCuNvat76HWJeyCCSUcpsrEopSwALRSHAT/ qW18elLy9BvP
gWH6sQhRxJnhqyR7d3pyeoIBaOMYJtUmGKzxjZbaYDbWceXsu33QTyKvDOyF 3B2Buac9swJ6
Pqytg8Ve9BddWfi4RO4Ow+5xsUGBOYz8omkhjsJPtVznWt1Cqo1fvoNoKRQg owrSg/CviOEq
l3AEbw+p0VJOudoPy0EvwJl1fCtwx9lDEbTwqRa7OLYrF69EloOzOKotJV8f Bj4UIKXffONa
Z7w2pJJbS4cwHHDr2FyH005cCOKOm6+6wrMf44FyBC2AL4Vcsxm3gBqkCO5H PLulJG7ZLSxB
6hKliX2uRAYXf0yDBC3A/Nr2bdbEeiW4VmmBxxe9F/osaFqYjyQjdThhPfzF BVOaff74ic0r
5QfA8+XWBK0oIhqsBjTp+dECQyiLrWz8pR28ZcIx1D9NzrZOXeLWWm7tmhBb GO68FjdSrnqC
u6B5BoerjamuZBaGnQHhMCiRodZ6foVKZUV7ga0E6qJqMoswFIrCDzeU42gT +wdeOYppCrg2
7Bql2RmtcrKRAAVdDuH1ljLsXZLcR1ry/9AJW9gY1N6wLxyjwp1Y6Kzt+1By X0ZMHmiil8Y4
Di/1tJaUNWVLLTIsJ0JFD7iEKv/7H+8zaiak5vcls/75nilYhZ5o9G6D8dbY gnsQ3yH6nQoi
PvoI3HJq2PER/nXR2QEezrZde7LI5MrWEfZskZ9o5I9Xm1irD8yWTWptXyfM WqYZVkpoWAhd
HZg3tzRc+YsBPTsZlwSgcogSbSPvsm3HJDoAW25bewQxE/6EmHrmqJvyM/nE HZzB1Zbvlq2T
mMdRWH9i2cxxSpX5Ohh1q2FsIBt0u9epLwURTeSFk9jx5Iy66e04134kjqFu sH4CH/ewT+R9
ztll/Bs+XjBL8upZrg6znRzJdnIE2zNZwaDfAN1JfUk9nu7kFXQnL6Y7eQXd yfF0T46ke3IE
3WtUEL0a9BwgfEKET15C+OQVhE9eTPjkFYRPhgnv392wqqpGT/rWDuuE9FKp K5PC9mHiyRDu
EQsTuO1dwK924za3z6iJpXMnjUZDvptQa/UM4npM1snRWSeDWSe9rJPBrCe9 rJMfyDo5OutQ
2niWhTXqV73GlOw2TYZNxP5OS9INg9LCq1ieg+kH8tyY7DN2gqkv6fT16/++ b3piz+qcV9J1
1hHvkPg1HP0S7i/CElzj1RYZ3r47URNzxNUDY4Hk2bXKCM5dWiC8C6bWYK0E KDuzPoXXp4aR
+hYX7pB1chs03qhAZZYNfMDFD66abZDt53YNbmDbqdQXx4bC5kY09396SYdu WsSB2SP6T8N2
XgMeO7FP3bOIUsswfdfdrCHWcLul0VDdgL6Fos3XMesG/bTX/wZ/fnu9+63G nh8dZGrA7k2B
GlGBuxdo37ZFaSd9/UD96h6YI5Be7p2GWvs9zTKQjiO+9MdJzOdgQKUQUbTP veoMymfdzXZD
UxSFHyM/fVDSrrJRm/uKTsXcRnMC1u8jen80XFkseJiqj40+wl1xHgKNC//h MBo6edj19D9Q
SwMEFAAAAAgAm1HbLgTeRaJxBQAAuRMAAFAAAAByZWN0aWxpbmVhci1oYW5k bGUtcm91dGVy
L3NyYy9tYWluL2NvbS9pbnRhbGlvL2RyYXcyZC9SZWN0aWxpbmVhclJvdXRl clRlc3QuamF2
Ya1XTW/bOBC9B8h/4OaycpHIiYzdQ4su2k3aIkCyMJrcFnugpbFElCIFkrLX XeS/7wwp2VYk
fyQtD7JMvhm+eSSHo/Gbn9tOT9gbdq2rlRF54ViUjlhyeXl5Ts8Ju1WOS6HP 8SWNGVcZ064A
Y2Nv9lFK5s0sM2DBLCCL2WMhLKuMzg0vvQUaMJ6muqy4WgmVs5I7MIJL651w A9iTIWbBheQz
CaxWGRhvh8DSMj33f651WWrFpvVMipTdiRSUBba4ii+9o2Uh0mI9kwCLRkgl E9YZMaud0Orc
E8LOzVzceePCuerteLxcLmNIpagsxNrkYwk5l+O0kheLq8u4cKUkdKOZCn61 sW99D7WuYBdM
KOEwVCbKSkIJOEo8CP5T2/j0pOLpN54Dw/BjEVjEmeHLJHt3enJ6ggS0cQyD WgcYRuNrLbXB
aKzjytl3+6CfRV4b2Au5PQJzR3tmCfR8WFkH5V70va4tfFqgdodhd7jYoMAc Rt5rWoij8FMt
V7lWN5Bq45fvIFoKBaiogvQg/CtiuMolHKFbDroEZ1bxjcCtZA+5XsOnWuwS zy5dvBRZDs6i
V1tJvjoMfChASr+rxk0C8Yc+ldxaf7qYTY2W4YA5sI7NdTjPFK0gdbj5qms8 3TEeGUc2BfCF
kCvvbcYtYKZR3uTshqK5YTewAKkrTD7sSy0yuPhjGpJMCebXdd9GdevPeshT Ki3wlKKLUp+t
Z6S0kDq5Ys0EFxdMafbl02c2r5V3gWfIrQhaEx9yhwDvkVDrcINamPvWueEv 7eAtE45hktNk
bZvoJe6fxdbWCMyCq/Mmg3kBg/PbkNgMumsGU13LLLidAeGQlcgwoXqJhUpl TfuCLQUmP9WG
FiEVYuHdDQU52nD/wGtHnKaAy8M+Yv51RqucxijLhOQb6PVW85HW+j+EYgtb g9obds+RC+7F
Qmfrvg8V9zeEyYM49NIOjsNLM5mlpJmyhRYZ3hRCRQ+4cir/+x9vM2onpOZ3 JrP++Z4pWIae
aPRug/GjsQX3IL5D9DvddfjoI3CvqWHDR/jXRWeD0Z9tG/TyHJNL2/DqjUXe /cgfq9ZBk0wZ
3mfQBhS6OsTQK9GiGwmzpI08fBvQo8pM+Akue8NRl8azHIU7KIOrLdutsQ4v jyNmf+LdlOOU
KvOXTdS9cmID2aDZnU59vo1oIp/EoitaLnyMuuHtOFfeE0eqG6yfwPMetom8 zTm7jH/Dxwtm
SV49y9VhtZMj1U6OUHsmaxi0G5A7aSrB4+VOXiF38mK5k1fInRwv9+RIuSdH yL3CU62Xg5YD
gk9I8MlLBJ+8QvDJiwWfvELwybDg/QIJbzXV5pP+aEd1QvrcrWuTwvZh4skQ 7hGvCHDbu4Bf
7cZtSryo5dIp/KLRkO2GapM9Q3I9Jurk6KiTwaiTXtTJYNSTXtTJD0SdHB21 v4linmVhjbb9
dIeS3UOT4SFSf+dI0qVBYWEplOdg+kSeDyb7BjtkmoKZPjH97/u2J/aqznkt XWcdsYbDijj6
JVQSwhJcY22JCm9XMdTEHHGNY7wgefZRZQTnLi0Q3gVTa7FWAlSdWZ/C61Or SFNPhRquCW6D
xtoGVGbZwFdS/ODq2Qa5/qZtwC1sO5SmhGslbAuauf/pBR26aREHZo/oc347 rgGLndin7lnE
VMswfNfdrIFrqDPJG2Y3oE+RaPMJyrqkn/baX+Pfb683v9HY86NOpgbs3hCo kRS4e4H27fpS
2ilfn6hf3QNzBNGrvdNQW3/bsgyk44iv/HES8zkYUClExPa5VRNB9ay73W44 FEXhz8hPHzJp
N7NRm/sbnS5zG80J2LyP6P3RcGXxwsNQPTf6IHbFeSAaF76YHw2dPOx6+h9Q SwMEFAAAAAgA
VG/aLlZCkd4YBAAAfw0AAFMAAAByZWN0aWxpbmVhci1oYW5kbGUtcm91dGVy L3NyYy9tYWlu
L2NvbS9pbnRhbGlvL2RyYXcyZC9SZWxhdGl2ZUNvbm5lY3Rpb25BbmNob3Iu amF2YcVX32vk
NhB+D+R/GOiLN914N9e3C4VLA1cOUhpy91ZK0cqztqgtGUlex5T8752R/Gv3 dreXElrBHStr
ZvR9n2ZGyurqbcflBVzBvak7q/LCQyIX8G69Xi/5/x/gk/aiVGZJP2QKQmdg fIHWpcHtriwh
uDmw6NDuMEvhS6Ec1NbkVlTBgxxASGmqWuhO6Rwq4dEqUboQRFikLxnZ7IQq xaZEaHSGNviR
YeXAbMPk3lSV0fDYbEol4UFJ1A5hd5OuQ6C2ULIYd1LoyImgZMp5qzaNV0Yv AyD6OO0lfHAu
vK/fr1Zt26YoS1U7TI3NVyXmolzJurze3azTwlclW/ea6RjXWPc+fOGxL9g1 KK08UQVV1SVW
SKuMg83fdKwuL2oh/xQ5AtFPVUSRZla077Lby4vLCwJgrAciNRKMq+ndhgQS 0hMhjZLh3WlZ
GHt7zunTR5U3Fs/afJYiaPzRIm6NrR5EhxazR6HP++VoKvS2Sx8NEflGU4tS OcL+Cp8nYit0
XmIQaNXXwhOWdEY7PJQjpI2GU2pR+hnKxtLIcMJkHaLlFEnDpmPX52vLayEH BXT9jJJbUQFN
jjrMe4HBtBptOmbdB9F43u0RqTTgjqrDW6NzXuMciKUhS+HcaSL47FFn7jSV vygcjagIjyuq
aoSIN9mgb5FIrQORmwUzaKkpYCjSM/KNwYgimz5TbdpoA63yBTeRmubgTZAg UB+ESAfvVfxR
W7WjPgKZabiM/3h+YnThJP8L7N1bYu9OY7+3yJYCNLan8QUEwseWSf9i1kVJ mOkYLu5EJJzK
5qZjlkWzD7Xg7h1JsNWQjb7odzlXJUofBuqRxEMfM51R93LuZTv8tk7pAqK+ /vthoG4K1P2r
QMMJxEI5xSLpzWnsBVwORxYJjdMIazEUDg/X1GiT4LW4nT73eQo/wpiw41I3 LHXzpZdjadHL
sR1OhTJES3R0F8UjqgzdxZO1Q3xN5/9uCPYLh0l6CRbHNdwZlcFRhx7enixq C0mPmpLQsx+V
4JmbYs+bh0XfWD3T7eVA9HQfTA/inJo/Y0zqMaH6B8fJJI9FM5bPGMjilnDT 9lDzNQRJfJNw
TeTaEKPYPmguhcNFCvG1RNdRYTLqy/RUmToNd5Lh1dC/fw5rTdMlsBUSl0Dv kNB3cLvlLsQ7
ZuSnSNh5QJqW/ATL0T8NWMONmSy+qv6JDG9+QG0Jh9Qm93hCr1L0eGoFZIz1 oQ+TxC8jlr3k
6Lc9Qu1bzv4rt3+CPCkwxqJSakjg7lXU06PC/f9wThzFobbzExgfVGCpi5Hx r9z+KLXo50+G
XvUumffCGLMmU77c9l9wsw7Mw6bP8P3YPKnQ0lZlvlgeWnVs1U1WBfKfJ/NN Z6io92lHKuAX
Q53QlI3HpJ7b9udRT/nz8jdQSwMECgAAAAAAQ2rhLgAAAAAAAAAAAAAAADMA AAByZWN0aWxp
bmVhci1oYW5kbGUtcm91dGVyL3NyYy9tYWluL2NvbS9pbnRhbGlvL2dlZi9Q SwMECgAAAAAA
RmrhLgAAAAAAAAAAAAAAAEAAAAByZWN0aWxpbmVhci1oYW5kbGUtcm91dGVy L3NyYy9tYWlu
L2NvbS9pbnRhbGlvL2dlZi9lZGl0cG9saWNpZXMvUEsDBBQAAAAIANBh4S45 IatASxAAAIVS
AABrAAAAcmVjdGlsaW5lYXItaGFuZGxlLXJvdXRlci9zcmMvbWFpbi9jb20v aW50YWxpby9n
ZWYvZWRpdHBvbGljaWVzL1JlY3RpbGluZWFyQ29ubmVjdGlvbkhhbmRsZXNF ZGl0UG9saWN5
LmphdmHtHGtv2zjye4H+B14PtytvHLm2A9yhvRw2m6bbAN2kl/S6wH4pZIm2 1cqiTo8o3sd/
vxk+JEoiJdtN93qHJYrUFmeGw5nhcGZIefLNw7bHj8g35Jwl2zRcrXPi+CMy e/r06Rj/zsll
nHtRyMbwwXeJFweE5WuaZi5HO4siwtEyktKMpnc0cMnbdZiRJGWr1NtwDEAg nu+zTeLF2zBe
kY2X0zT0oowT8VIKTwKAufPCyFtElBRxQFOOB4CbjLAl/3LONhsWkzfFIgp9 8jr0aZxRcjd1
n3JC5Tr019VIIc0ACVgJwixPw0WRhywec4bgYT2Wl3PkdZ4nzyaTsixd6kdh klGXpatJRFde
NPGT6Phu+tRd55sIoaXMYkGXpdkz/gRbU2DHJIzDHKZKwk0S0Q2FXuQDwR+0 TR4/Sjz/o7ei
BKbvhoILd0WXLg3CPGEgMZDI88ePHj8CVliakw8gAxekErlnaeptX4OYnhs6 5fOqB6RSSShI
vXIWuGeLjEVFTr+jcZAwGPt5HzTILaY+SqEXbEXZhubp1n0zSLEJ2pyIDo7S qEe/ALm88dIe
2Bv674L2EQNRb8CgMvdcfLBD6kpwb2kkWHgFOBHNOCfYubUTWAtQjX+BbMdI BfeZW6mlnk+F
1DaW7y9evqCLYvXcCnGDo0dhTL1UcGDSZxtJca8h12jnLI1p2p7OXiRe3dIV Lq5PIvLucCIC
5W0KS5CmdswNC2hUW41G4Ad2R5U4lSk9fjSR7pm7VD/yMvibUvCe6G8rXKIY Au+TEwAqNtz3
eTn3mggEIBlZUModD0kZLFZwgzHxwPPC9FOShRvwh+BzmUAMGCAttpyAxuYN YqbCi5ZhxJ0h
+vqg8NFrJynYuZ9zvwobQhHBxsD3izIEo6w857deka9ZSt5QIEbOwMPnKYtX 2Id+TLh3MV2z
ttvLBjCh0fscLD0j9uVFfkGpIqyQLDbYxYBzECdbxeHPIBapHlf1T8SHJA3v QPIkQw/uk2UY
o1ePc/Kvq5uL8+vvry5/unhBTsnx9Ll5EEkXRbwBbYPsfW74Un07j/fD9buL 9+fXN1cXN+9f
nV29eH0Boz7deVAQfPgzQ6MkmbD3gxh4dX1z+dP11duz1+9vL77/4eLqbc3M 7hK4oynQ/kRW
3l3cvL08NzEyMzJyDaOmYRDQmCxTtumzF+AUrPsuhOhELKUM/OyyoqQWXvXg 24zSQ33/n8XS
bgM4o5p6SvMijQnucDo/io+O1FgOpMCkOYKNPC4KIhsH5FRPSUxLUkUGzuh5 DdXdQ0G19edT
4nQhRmRF81fMSgkpNDFHOlEQZP4yXBUpbeBXGz7hG1wGFAAJgXlP1gCeTLKP YcIFB4YEjKIt
gsdQ4huDF4x9runt1xCUZgn1IXQzcSuEJxFRVkUUaSMtwbk5aJ8hXw3w398l g24GPgZkfswf
Hx01pI8tXAIm+QuZkVNY1dANbNM7MFWn4S1GTSxsNTOguMGN1tGEOyahLids vxEaQWyNo7Mg
IE6GS8A6NBc22Bu9g+HlRJUOYDYw2TZ9bJMJ39fgX+YtqRS++FuiilgCwTmZ wr4F8hQLELXl
eJmJFm4zlIf2Uelt4b+YIOdxsVmA1OpFMnJd1zaDGLYQ4wyOzDNAZeGs3XvU FmK790JlyrF1
cbApVZl7sVl12AxSBrSITdNk7fofnK1Xe7PVsrfmV3RBrhcEjjQ5jYAGKd1h JAJ+2Sk+6P7e
6JQ1vwt6lkGXIyPkyuUqTypCEglFughEBtuN5axiaTfztk5zfk92i2ueaUOR J2CFahhNHmiD
8jFsieDYYP2AtbeD/o6jaQOQBXxAD9zFTKu8QSdwvfgAbKvOt9sEfQ8SwYWD X5223jVWObjG
7i2k0vGqwyQ20aXGgW/IpILXyJnWJ7rgOKD3GmeX+L3DGjbTtkYTDfWWFanf nVYT17iR0cSy
gamm/E/5mvnaiPCN1wuMOA37elLhop2ILzaXhRxqsu/J6IwKwdaDQ9K13+dD nN7xfJ5GmvBQ
QFLd55BHwUxBQDe1/p3aQkwT5yRg8n8C9lC0MgqkZ0XONhhWYm4DNuWMrJPG Vm9aSw/9Ku5K
yzDFgCzcUJV1QfeGQo6DtaY+WrBDRBS3NBHPLegqjGO0dlCLp/xxkHqrESR3 P/LR4iF6EEvb
J5enBR2RjJEwxznELO8jh9DEW3mQKQYFX4XIJfID7Cg5eEBuQ0ucuL+mNNv2 UYStGecWMCQG
jBZ8j++f+7iPYFZgzQ9CiMQrOTZuUVpCzCuHMjCAMXLIOIf4g6A/YEKJMHFY ZWNySUpWRAFs
NR8p9n+MWWmIIlRrrkw0uEGdPLHZLLadKAzgF0ngaSW67CWkPoYgud24XK9o qdIFOyQ27mzH
0v2McdyxvmZtA/1mfgxTFsMqN5g5Bw6QlWEOduLooH2r3PdgaRsS7WdgIktc Y/k6ZcVqvQsF
e6Z8CDVbsvusXzFoAZG3BXvp1Ta2BeSJH3tgArr0iijn3Ou1jwEGRKzWSpT0 ZjGCviIZVhT2
CFc7+FZZYOEuw93FulM5IFEbtpwrENkr8O1Gtpq0jJHtjQDzYr45wtaJezpE cmAtAYGdGP2q
ig1zjLh8MPwK+9vEwyOaCqAfODWOpfpbhRoEae3OzTCusfq0uNCF/2Bf7cYI srbq3lz88313
YXb3bMluF1RTiUyNcPg2coOZrhKH2bOu+n5WrWi/E9sW99LPtAWpy7KZhu5E dJwew7/FXQls
cQtL3KdZ5qVbfeO3xBS+WL1MFVEqcjyiaa8LkTggGfFJHkLKwGRBkSwirmjQ RpWxOIIjV5Hc
vhSJDSuy7jJc++1qeyeyZmUsahk1I5bVzCNkHpOVFGtZPOCyLNY7FgY9+3yV RGlxmJ6uaI8H
soJxk2h7MzY6BBHqnzaMxGKMTdupvzSjMTwtxbiuNWFxHsujsBpzl7DBGip0 lx+v7WW3FOww
aNTiZFSDW4o1LOH8SmZfsrRL5QXYYk94dkDkZNiRTcHBTqGOTRovMXe6haD2 cFG0SBwgB57K
PYgE9gjPvqD52/KHHadfRYSNBag+ekHQPXToi2puqfDedaF2L5+MR0sdj5zI A5PP6ImzDp1D
XXE37amlaffGSf7Fe+LJ5EcIKyGETGm0lQFqqvQ2V2c44JypB243CFPJ8YL6 Xq0oTkiKPi3Q
d+N5S1UAgB4tFBiTRYGSh2eUnzx6wYdCRLs6OWFO8sCbkwI6S9AErNElBhoj xF1Jy0xSloD6
OZLbFCU8Ows+kFNpoEdElpt4xHLNSTrNTaa5PeHO1NH/s6qKicU9Sbkp+Cdj 40gSxdjVpVAx
L4eBL01eOzd9yAILpJJ89dSpcfsw34gDIwt2+9jIROFKHNjYKBwNU5gNMjEb JDHIxSCJ+SAX
80ESg1zMP2twY+LpZL9p9ZLabXptUpOJcLqwKaBv8EjM4mN1J0+eqHI6XdRF gsd64FbdewNh
6N2K3q2hF92mwD+Vds4PBruA2MD7HE/RvYRYpUT/Ul2LQA9uRlJU8bAgMXKo QSGnDuf4SJm8
Cx5twi9ImPFmu5GfV2BOjXOkVI+T7hsEdcqZQ976oeQQkvrsSp619k5hN/Lz CsypcY6Uydnl
ZM5pVQOlHh2g1GquvVLXOVZK7WdW4M12Iz/XJa5waokMiL2yuF6p63ajlLqL ycx2Iz/X7V7h
1HZpV6phpT9cyjOZnFXRB9mC/2FpEMb8Pl8zlCR5ydS9Bw9vTJXMRM1b5vye NFiYDIFDUfTz
8N6OuKZXxzvkXhvRRK4ZTYPt0jgr8OyEnxX5NIbR8LRKXLSGpyWLvwbnbCQG LhBc7x2S43GX
CKq0yGxkOEDp96rSIzuV9RxVK8amz2Fz1E3KqcCPahuykx7yL7oLcirwo9rn WEk/VI75Xza4
7f+CwQ1v8k2zGFDd4L6s761NU573O8Dh3UH38E4FXhucnfRuWb1qfaVZeSbB j47Dhn5F3pLS
BN8VwUQP+8TZuXa9rCIkjaMu2kIiSEPMGPEaWKc0ILAvqwKBPmgb1pdnI31Z sogb/TX1P2r5
enUO8snza2X+C8YiiocrnYpQLf6wuiB72aoA9E3Eb13j4JXbYvPGdFtSXk/U LEFO19HFC0Ht
dER+/bXz1JF0MWnqLfHsaSQZL3Y270v/n9lJ3xStpmIoJX8Z1tJ0Gcos/nFK /mq4PfrVV8Rp
W9LMaF+Vec1H/fb145rGVrHi3iIPbsZ6ZUhsGLIIxe+hVvRKXraKWU42lNeu +P31en036Tte
JrcwL889MA1ReKqoZWsvoaM/Dpz2Os+wFz4f+BhK7wPS0vjE2M8hzkABVwoy KYeIKIlPsCbH
b6kvElxG7RpG8waOXHHfcVBAqFdZDdOsGZ6env6DqCOtIZGSEnwjFviaC1GO eAQ9i4ov8bak
mmtVe2zVBNU7Aigt4Searw6ctGcXxhnkwkqwUxRqyQvBmC7zPrG0WJFyUlVd uCajfCAErKWX
BkAGHa02zhtZN5qOMSoakxg/xeLTHP+c6EzhUYzmen5pygaoGLTmPG0XnGAg E1zn6jhCZM1q
7EkbZjIp5O3COy8q8Eh7gS4HK926+FBBUgY1vrkyYZmFVLzhjr5lOhXCrI3Q 1GtNuAVW64yf
u2m9WvbNDx56eBW1tT7mDBW3yUS4a5Ra5PG3RqItfz9OvX9UohmaL+/HXH7c tNv1SYi1p+49
WtqUJwlYc4APx+IBBt2d4mTMhXsQtW/IzExx/uAUTx6Qotkqd1SJ7dWFQaUo 3u4lbzwFmkvG
91aKgZqcqZXigFIOoDiglL0otlacXJqdhSM8O38jAyTeYUnv7XiFRm/XxvTe k2F7scN3evvH
6udzahES7scAcRZFjubtxhK5EQqv1Z1bES7jfVvDjt8fvnayxz9i14eMXcPs nXT18vUlY7qW
YUbZfVd1XFETbwIAVph/LYG1t2xZbEvkTHFw/2WOzxIE1/lkSxqtuwAKLluH y/w2F696qi28
yePvGTfXoDtFxQYBW0LiOvZuhcWtW2KTCXgEbjEnBMKzv9liVnEoWNGE8GUu XhZsLmIe9kp0
vPvAgDf0AK0XSTjwWRxccjckU/ImCDYY0PD+REfVBhhcCobHhjB4F6ipCaqz k3z2SXFz3YVf
TVEYbu6NMjOhtIi2Jj+UFmhvctotZkHzksrdgz+qfoKHv/M8AW6bozZyn6kw SEFWJ1W/MF0R
7k5vR+1hM2sQ2y5axGYxT2y7magR0qhpbMb3f3dJ5DStdcVK8bzkCxKqbXlg O2CJDKMZlwm2
/qVieWviE0IudaM8UBUIuZ4w4ebvPIgrI3ooZrw1nsh67mv50wydIL1zTfD3 DkLUuCoNx4Fw
LRG1i2nb1/T4ZIwAgjgCnBxPO1OeatGkiEaqH58x5ikZ/80v9ZZKh9xMr9x+ Oj29KlEHqM1S
k4VstXvbIzf7yhQ/S5HrS9IaaRlgpHo6gV4y7T6atUqa2pQbqZwAHy6FGQNB orW+tFsUBlRd
QJYFDqqD9FA6oAZyCDV7qr0fNUsuOyBFSfleUFaVi30LF0ZKVUVg36LFIdT6 pbg7Nc3V71l0
/qO0MVzaSPJdShuA8NvjR/8BUEsDBBQAAAAIAPxZ3i4JrwwmsQMAAE8KAABA AAAAcmVjdGls
aW5lYXItaGFuZGxlLXJvdXRlci9zcmMvbWFpbi9jb20vaW50YWxpby9nZWYv R0VGRGVidWcu
amF2Ya1WX3PTOBB/z0y+w04ewKGJknI8EY6htKWEK9C7loebTh9ke2MLZMkj yckFpt/9VrLj
1iRQZshOJrH3//52V8rkyX6p34MncKzLtRFZ7iBKhvB0Op2O/PcfMFeOS6FH 9JAw4CoF7XI0
lgWzIykhmFkwaNEsMWVwlQsLpdGZ4UWwIAPgSaKLkqu1UBkU3KERXNrghBsk Tko6Sy4kjyVC
pVI0wY4UCwt6EV6OdVFoBRdVLEUC5yJBZRGWh2waHK1ykeRtJIGWjCiVVFhn RFw5odUoJETM
u1jcBePcufL5ZLJarRgmUpQWmTbZRGLG5SQp5Xh5OGW5K6TXbjBTtV9t7PPA 8dQFbAxCCUel
gihKiQWS1Ofh1fdKk36v5MkXniFQ+UzUWbAMF7N+r9+j6No4+ExlMwJCsiNj +PqckJntEM4J
dU5l3TclMFpgUsNXT1N2FFstK4evUaWlppCzn2lnqAt0Zs0uvGoTut+bNBP4 96f58V/wCE7m
/1z9Cyenrz+dnc0/nMH706u3H08uIWq6S8NiHTWRS61wPBYMmZ+NNaRaPa5b qRBTONfZs3eA
LgGrg8Jjssy0TmGhDVglyhKdHTKo55U+Ol4KXVm5BqUd9c1RWZgGj05DjMRK ZEUseoCz0zfj
ca5XuEQzAuG8g1ZO6jnKsh7jkG0YX1qROsFmnBOdImvH6RWvXE6pXSChD0c0 9s5olXmZb249
84nk1vrgJxhXGXwjKVGNoSeaSk47ebm2DgumK8dKQ5VIBbQ3YZ/0JQ2tyqLh hqPjz5g41jp4
VXK/uMQO4o9BTLulbcd6JSgOgZJQvIBSsJ7UD0221g97AkstUrB8HTW+yPVw k7qn7WwjUmF3
wYazWvnWD8z3BV94E6gsLioJKTraa1rvmLyF/LeGdKvSuNx7oVtBKchDJcfl r1a8s8W+nchp
QzKxRDojQ1RRt7jduK3aJTG7KvsB4M6dj/DT0qPB9WBTrieftxVfEf4Mtsw/ Rx2FBURB4SVM
O549+eWOQulkP53Rz4va2xgO6e3gYMvC01ZOIXKGLtQRiSEcwGAEnTw93XZf H3CzyWN4383t
j5GhoRjcDB4eBd8/Ah3oeM2b8y1MQjPRot1z2gt/7O/adVvf0l7sj6fa1PqT zLc9uA+3VrD7
lS2/vgluO3Dvao5XYhJV5vLd/fEuvdK1uNmB215QaS/DHyPTqvwuOvccfQ/P 5toliSWAAjKi
4XU2gK5C+uNCqFiWc/sB/3N0YuzGzTJVi3dCR5//AVBLAwQKAAAAAABIauEu AAAAAAAAAAAA
AAAAOwAAAHJlY3RpbGluZWFyLWhhbmRsZS1yb3V0ZXIvc3JjL21haW4vY29t L2ludGFsaW8v
Z2VmL2hhbmRsZXMvUEsDBBQAAAAIAIZh4S5SOHu0swIAAPkGAABhAAAAcmVj dGlsaW5lYXIt
aGFuZGxlLXJvdXRlci9zcmMvbWFpbi9jb20vaW50YWxpby9nZWYvaGFuZGxl cy9SZWN0aWxp
bmVhckNvbm5lY3Rpb25Db3JuZXJIYW5kbGUuamF2Ya1TTU8bMRC9I+U/jNTL BgVvaG9wgaZI
RUIqAk69Od5h16rXXo29CVHV/96xnU2WkpQLFkIb+735ePOmPP3YMzmBU1i4 bkO6bgIUagqf
5/P5LP7/Arc2SKPdjD+UAGkrcKFB8iLRro2BRPNA6JFWWAl4arSHjlxNsk0M JoBUyrWdtBtt
a2hlQNLS+BREEvJNxZiV1EYuDUJvK6TEY2DrwT2nHwvXts7Cfb80WsGdVmg9 wupczFOgdaNV
s8uk0TOJS6m0D6SXfdDOzlJBfLnPJUMiNyF0F2W5Xq8FKqM7j8JRXRqspSlV Z85W53PRhNZE
9FYzm+M68hfpJp7Xgp2Btjpwq6DbzmCL/BrriPAPPeXkpJPql6wRuH2hcxWi xmfRcMsG/eXk
ZHLCVTgKwJ3tuowQbsWiioXdVDrcSwqXR7HfSNZPxLmQjoMeG55qtejJszgp c7l1WnKH9mme
uTJ4dnnWypHlsfOwJduJyzHaoiS+T9UxqujYZn3Lc9ukYOT6gBUsN4n/sOd8 RVt1jlV4iAia
Ch5MACUtLNlsjn3Kg2EvbNgdlDvPjr6SfWg40z0yDa7ZfIGcreNblDg7Txnp /TjdXr9F6uF7
aoxJfPAlcDFH4BkIv6NCEZxViof9Rch7wlpYXL+fDNY6NEmGWq/Qglvz0yxq uwu4f0zSAK9S
ln2Ix5pUWsmRpHyBL3lphvi7cDmUcUxwJHbXV52Mi5/ypxj5663Fhq1uRmLt +SnzvobX4KH0
t0GHMGX+2A7sXfWKQ+UlBbcB+UTJUi3TOK/h1vcdUrFVOz9fjl4x5CUoXm2E eLz9eXN9dzdA
/xya/5XHo8ss/uOmTyoZZ7SnxfRfWcgFpvCcRyg4wBt3Shh6smMtc74tWGT6 WNUhzD5GPAe0
ntYYfkQJi+kM+Ps26lhMR/Lw319QSwMEFAAAAAgAkGHhLnTYqSeAAwAARg0A AFsAAAByZWN0
aWxpbmVhci1oYW5kbGUtcm91dGVyL3NyYy9tYWluL2NvbS9pbnRhbGlvL2dl Zi9oYW5kbGVz
L1JlY3RpbGluZWFyQ29ubmVjdGlvbkhhbmRsZS5qYXZhvVbfT9swEH5H4n84 wUvLSlrYGwgJ
xjYNCQkEvCM3ORIzx45st6Wa+N93tpM0adPSIYYfqja+X9933106PPjYs7sD B3CpirnmaWah
F/fheDQaDdznV7iSlgmuBvQljoDJBJTNUJvIu10IAd7NgEaDeopJBA8ZN1Bo lWqWew9yABbH
Ki+YnHOZQs4sas6E8UGYRnqSkM2UccHGAmEiE9TejwxzA+rJ/7hUea4k3E7G gsdwzWOUBmF6
FI18oFnG46zOxNGQE5WScGM1H08sV3LgC6KHi1zMeufM2uJkOJzNZhHGghcG I6XTocCUiWFc
iMPp0SjKbC6cdcmZDHGVNif+iTttwg6BS24JKvC8EJgj3bo6nPmHnuHuTsHi 3yxFIPgRD1VE
KT5FGUEWaE53d3Z3qAqlLRCyGmWi2ew4ib6hTApFftcqZgTpdJMxQZcYOyDd Zi7twuZHwu0t
03a97XfN0gdN9eOavA0cjcC//BMPbFgK2YsvFswYwBdqPGlAOTFOeeKZcfp5 mkjvTgzZOTyp
UmmZRvqcF+j05oPduTSCS2R6OWk5AOdsYjMKcIskVLggrVqtZOruXEeCUNmY nrLYlnVtiEo1
W+qDgZWLPxSSToDpjoOKsEoyqJmkUsqJCZxFlc8wfCE+LHlh0uX/GLc69lbe 9+bzeRYi6k7D
aQ+8VLG9OoE8uTVvAOemDrOB7dUy+ZQ2E7g0jz51Z2GXGp0VA4mzjc2ccZv5 ylM+xZKoQaW3
Oly4rME5+wUzjgFO80jUjef+ztcV1lg7fh1QhAGu0cF5wdwqDvw4+/Cti8Jm F5f9QzPscluC
cVX6atBlksNMbOCtt663gzIUHUeWr6JfTYY7TenCWXA6bV9XvJ5BI02/6Ui7 xv7k6URjr990
DqDPoBJGdWGwWpk9J4jlPdprZB2UUfr9tv+NK7Tny30z5WuXJM8Nra51+/Ki XD+B3f3Yy7ex
cXv9teNab66GOXQE6JyTO7QTLVcF8//mGM71p+dsy9plIf1cudy9ljbLyh7f 7OU92s/lbON0
b5u4Duf/cv07cVPFEzcKgbk14731PDSkt+WbqiWdzT7dABo+JIDFr24VtN59 a2FUUtgaQ2hl
Y829F03VjgaORphFgpX1u9iv20H0m+uZ/o1Hgsk0uhk/k8++Vff011qmq6sp lBduYWHWwfFe
+Rbe34MvK2P3+hdQSwMEFAAAAAgAiGHhLs2CxQDbAgAARAcAAGMAAAByZWN0 aWxpbmVhci1o
YW5kbGUtcm91dGVyL3NyYy9tYWluL2NvbS9pbnRhbGlvL2dlZi9oYW5kbGVz L1JlY3RpbGlu
ZWFyQ29ubmVjdGlvbkhTZWdtZW50SGFuZGxlLmphdmGtVE1v2zAMvQfIfyCw i1Okdrrd2ku7
LFgDdG3RBAO2m2KztjBZMig5aTb0v4+S8uGszdBDdQgUiY98fHxydvK+q9+D ExibZk2yrBwk
+QA+jkajof/9BFPthJJmyJs8BaELMK5CsmmAXSkFAWaB0CItsUhhXkkLDZmS RB0QDACR56Zu
hF5LXUItHJIUyoYkgpBPCo5ZCqnEQiG0ukAKOA6sLZjH8Gds6tpouG8XSuZw I3PUFmF5lo5C
olUl82pXSaJlEFMppHUkF62TRg8DIT7c1xIugCvnmvMsW61WKeZKNhZTQ2Wm sBQqyxt1ujwb
pZWrlY/eaKZjXkP2PJz4dSjYKUgtHbcKsm4U1si3nocPf9eV9XuNyH+JEoHb T2VkkZb4mFbc
skJ70e/1e8zCkAPubNelD+FWNOae2KSQ7l6Quzga+4VEOSeuhXQ8aFbxVItx S5bFCZWzjdOC
O6QN84zM4NHEWVeG5G/jmYPF0mvlBy/YWkxNSY2CuLnA1FBIljRsu7bmOa6B TOuwgMU65HrY
Yz6jLhrDijz4CBqkPCQHudCwYOMZ9mzIdXd784OnFdDfJw/z6fjqhr1DURc2 DtN2wTpdorPJ
12+T23l8DpeidXwH98h14Iqd68jo0t/5+UTb5kpY2+W3F/96Ftu+DrowjBc+ OeZ/DBAF/OMF
9sFRZL/YnoT8zJitxtVbysFKuip0X8olajArjTTcpdsOKV4GPcFEtfJdRtav kLnozIEP8Cm+
Op9/l26fShkGGEp3V5eN8F+OUD/Exd1Lj24/C1VHrj0+VN5zOAzeUn+ZdJsm i5vN0N6gX7JB
8nqNaldNXl6+wGvgp7c9tW2DlMTYzfVF5xZdfFHJwfNKZ9Ofk9tt4PNrXri0 ePS7kP7HWR/y
YKLOk08G/wpExjGEJ96Jgldw3T4JXUu6q2qstwlOI/xQ322ifRa/kpdaD0p0 d17CZDAE3k+9
jsmgI9DzX1BLAwQUAAAACAD8YuEuoy4YRd0CAABCBwAAYwAAAHJlY3RpbGlu ZWFyLWhhbmRs
ZS1yb3V0ZXIvc3JjL21haW4vY29tL2ludGFsaW8vZ2VmL2hhbmRsZXMvUmVj dGlsaW5lYXJD
b25uZWN0aW9uVlNlZ21lbnRIYW5kbGUuamF2Ya1UwW4aMRC9I/EPI/WyRGQh 7S25JE1Rg5SG
KKBKzc3sTnateu3V2AtBVf69YxvYpQlVDvEBGXvezJs3zzs6+djV78EJXJt6 Q7IoHSTZAD6P
x+Oh//0CU+2EkmbImywFoXMwrkSyaYBdKQUBZoHQIq0wT2FRSgs1mYJEFRAM AJFlpqqF3khd
QCUckhTKhiSCkE9yjlkJqcRSITQ6Rwo4DqwsmKfw59pUldFw3yyVzOBWZqgt wuosHYdE61Jm
5b6SRMsgppJL60guGyeNHgZCfNjWEi6AS+fq89FovV6nmClZW0wNFSOFhVCj rFanq7NxWrpK
+eitZjrmNWTPw4lfh4KdgtTScasgq1phhXzrefjwD12jfq8W2W9RIHD7qYws 0gKf0pJbVmgv
+r1+j1kYcsCd7bv0IdyKxswTm+TS3QtyF0djv5EoFsS1kI4HzUuean7dkGVx QuXR1mnBHdKG
eUZm8GTirFdITmaslcXCK+XHLthYTExJjYK4tcDTUEiV1Gy6puIpboBM4zCH 5SZkemgxX1Hn
tWE9HnwEDVIekYNMaFiy7Qw7NuSa3d3+4lkF9M3sYfo4u1tc3bJ3KOrCxmHa LlinJTqffP8x
uVvEx3ApGldyK/fIdeCKfevI6MLf+elE02ZKWNvl10r/cx7bvgmqMIwXPjvm fwQQA+GPl9cH
R4n9YnMS8iNjrhrX7ykHa+nK0H0hV6jBrDXScJ9uN6J4GfQEE9XK9hlZv5xl 6cyBD/A5vjmf
f5+uTaUMAwyl+6vLWvjvRqgf4uLutUN3H4WyI1eLD5VbDofBO+qvk+7SjOJm O7R36Jdskbze
otpVk5eXL/Aa+OntTm1TIyUxdnt90blFF99TcvC40vn0cTLZBb685YVLi0e/ Cul/nPUpCybq
PPhk8K9AZBxDeOKdKHgD1+2T0DWku6rGetvgNMIP9d0larP4lbzWelCgm3kJ k8EQeD/1OiaD
jkAvfwFQSwMEFAAAAAgAEWLhLhyiRcv5AwAANBEAAFgAAAByZWN0aWxpbmVh ci1oYW5kbGUt
cm91dGVyL3NyYy9tYWluL2NvbS9pbnRhbGlvL2dlZi9oYW5kbGVzL1JlY3Rp bGluZWFySGFu
ZGxlVHJhY2tlci5qYXZh7VdRb9s2EH4PkP9wyF6cIJXd7q1BgXietgRw7dQ2 8tAXg5bOEjeJ
FEjKajbsv/dIypbtSGmXpRgKlAgCmrw7fnf87o7qX7zsOD2BCxjJ4kHxJDXQ i87hzWAwuLT/
f4ZbYVjG5SVNogCYiEGaFJUOnNowy8CpaVCoUW0wDmCRcg2FkoliudMgBWBR JPOCiQcuEsiZ
QcVZpp0RppBWYpLZMJ6xVYZQihiV0yPBXINcux8jmedSwF25yngEYx6h0Aib 18HAGapSHqW7
kzhqUiIoMddG8VVpuBSXDhAtNmcx45RTY4q3/X5VVQFGGS80BlIl/QwTlvWj Inu1eT0IUpNn
VrqOmfB2pdJv3YodhwF7BVxwQ64Cz4sMc6Rdi8OKv+jon54ULPqTJQjkfsA9 iiDBdZCSyxnq
q9OT0xNCIZUB8mznZaxY9SYOyBuBkcV21SpmLTUyYczNHVOmW9ZImek9jV9Q xIUkXAtFOFG1
a+rKBMSbgm6SlEulZYegPWKeEnViL+Xd69d0ntkzMy6QqRvnfX2opeWGx44Z ChG0vY0IcjSp
jHVNoEgh8dMSxdlSaEolPIkL0i+IubRtHgq0vOz2ENbSczjm6zUqunpPNAfI 6WsoNcZQcZM6
wUewZ7KkBPC5ds1KQqngDmkJhpQWRkmR2D17+T4n1lwQ16KMad0dBPxkCKp+ CvrfZJaGj6cd
F5TWllqCQiYMGAkURmH4+gFyCiklNaNdJUjXOxhsFft+UgOsI+5xzil/SHMW fli+n96Hy9F0
Nglny5vh5NdxCO9qCzTO2kXO3KX/e6AURv6XtCkCGhOblP8B9M10dvtxOlkM x8t5+Pv7cLJ4
0oFO8ec6s0FF4F7ElftwtrgdfaUjHcLdbjR0e4RNSUM7lAqNDCyj/Yr02OSo TtNOnu9OgeuC
2V6EVLRoZupeclzLQFaWvnWv8VE8NsGpMX1y+352IAwrtOE07vj4WDVydcqJ b6fS5v+xnCss
rvXZSSRjbIe0ix3f2Dh0RaHX3F2Ly9uQXDZSVAW8c3trvsbWuPfWp6s/yKBD er6tGXbosqCT
d8a9vfOrPQE03mbP2zzaW5DBnrO6t75HCHgHvcab8+1B1BXMbzwpFfa2iv88 izp1J3A3qW3B
8PdLB7OdkZYiQvfUYrOF9/83I/d6WmcIfBvcKbWWkS8o38x9YJ5DyIaHB8yq kQusvobxdrRQ
3I5jittx8KAI5rcfw8mRxJfL+Lcn3qOC/4N2h8r33z3twi7adTTdb0+6+m33 g2qHyiMXlu+X
aMPxuItqBy/tJwl2relTqv37b7jS9mrMgn79RN3ZfsGTLxOWU4s+DvzuFVi/ S4/lW+J01hWk
swYw/X0GUEsDBAoAAAAAAEtq4S4AAAAAAAAAAAAAAAA5AAAAcmVjdGlsaW5l YXItaGFuZGxl
LXJvdXRlci9zcmMvbWFpbi9jb20vaW50YWxpby9nZWYvbW9kZWwvUEsDBAoA AAAAAEpq4S4A
AAAAAAAAAAAAAABCAAAAcmVjdGlsaW5lYXItaGFuZGxlLXJvdXRlci9zcmMv bWFpbi9jb20v
aW50YWxpby9nZWYvbW9kZWwvY29tbWFuZHMvUEsDBBQAAAAIAEFm4S44NwW3 TgMAAIEKAABj
AAAAcmVjdGlsaW5lYXItaGFuZGxlLXJvdXRlci9zcmMvbWFpbi9jb20vaW50 YWxpby9nZWYv
bW9kZWwvY29tbWFuZHMvUmVjdGlsaW5lYXJNb3ZlSGFuZGxlQ29tbWFuZC5q YXZhrVbbTtww
EH1H4h9G9KELAmd7eaiKKoHoVWoFAvpceZPZxK3jiWwnW1T13zu2N9nlli0C CyGvfeZ45viM
d7O9px3bW7AHJ9RcWVVWHib5LrycTqf74f8r+GK81Ir2eZILkKYA8hVaJ2LY sdYQwxxYdGg7
LARcVspBY6m0so4RHAAyz6lupLlSpoRaerRKahdJpEVeKRjTSaXlTCO0pkAb 4xhYO6B5/HBC
dU0GztqZVjl8VTkah9C9ENNItKhUXg0nKXQcxKkUynmrZq1XZPZjQry4Okv6 GFx537zNssVi
ITDXqnEoyJaZxlLqLG/0QfdiKipf64BeamYSL1n3Nq6EcV2wA1BGeS4VVN1o rJF3Qx4B/qQj
295qZP5LlghcvlApC1HiXNRUoBa8WnPt7nB7a3uLkyHrgQscig3IHiNO0mQd e5P104eP73HW
lof3Is4x90org9J+ZjKNLJgJa2Qicbb03hruG3XYY2MG4NomkDuoqQvWCTao IiK6Qt5kuHlS
8umRbH1FFs6Q/QTHbClvyZRhLwiX/JRr6dx4NvjbI+sD/ec/zMAjVRLGHrsf x/KBGcYOoNAq
fVCWJo1VHXfGaPgPu0HV2/mw25cXC9xyxPK5KOOctKZFyOYnzaKDU8QBuIXy 3EkzNhR4AhaP
uGVZIkvcRVG3Hhra3kc618iF4TuZxwWC6YA6cogbvfYMf2Peepzs3lQl3U5H Kui/xPTKh8EW
QSuGrcPVTu9R4eTVZEeZTZcbGXbWGcbkFlzoaYfWqgKPe4nOk0KTOUuND2G6 CPKdRvUm0/8O
LNGHE9FOdkV45ZpzLPjxlMafEfeim6x4NnGtn5lll6fvT6MTZLPsN+DMXIL8 vcto301Ba+0Z
LS4g+a9unQdDHn6GSe+YBHzuQFMuU3O0fuBTxnmURXAYv7AYIxqLnaLWRQpu //4lYL9WAaDs
wOX2wSmT48C3fEDIrDKMX3jJt6/ZoPAmfbkNtKllFvKKp/M5yxQbZ2Acjgqp XIscOvs/vc9X
RqPGT4Dbrk/rj7y5c/StNVHgh75ccGQfHHx3mWPBweX3b1/XZZnPhnfyXi0u lt58uBCNDL93
8hXs0ZLEm3fjta8KHztqldU1rcZEgndrUSvF+O8fUEsDBBQAAAAIAKBc4S4R H5iUCQYAABIY
AABTAAAAcmVjdGlsaW5lYXItaGFuZGxlLXJvdXRlci9zcmMvbWFpbi9jb20v aW50YWxpby9n
ZWYvUmVjdGlsaW5lYXJIYW5kbGVDb25uZWN0aW9uLmphdmHFWFlv2zgQfg+Q /0DkyU4c2W3f
6g223h67BQok6PFUFAEtjSXuUqSWpOy6i/73naEOS9Fht2hRoWhkiXN983Fm qPnlj73Oz9gl
e66zvRFx4tgknLLHi8ViRv8/Ya+V41LoGd6EAeMqYtolYGzgxVZSMi9mmQEL ZgtRwN4nwrLM
6Njw1EugAONhqNOMq71QMUu5AyO4tF4JN4BPIlyz5ULytQSWqwiMl8OFqWV6 438812mqFbvL
11KE7I0IQVlg20fBwivaJSJMaksCLAqhK5Gwzoh17oRWM+8QPjzY4s4LJ85l T+fz3W4XQChF
ZiHQJp5LiLmch5m83j5aBIlLJa0uMVOFXm3sU/+ErjZg10wo4TBUJtJMQgr4 lvyg5T/0mp+f
ZTz8h8fAMPxAFF4EMWyW52fnZ2hdG8f+xrADBEIGK2P4/g0is+x5WT6v3yAQ NSiR4bvHUbBa
Wy1zB3+AijKN5pZjq++03EuhACFTEBIAo8tj0Ck4s0e5Y5rbS2vH5yWvV6xr GlnBHUu4Rdap
nEu5Z6neei4YWkGrucEFKpJQEv0Zz12iDbsDJCRbISed0Sqmd4R8QchQcmvZ 24OOv7yKhmX4
7BAv2+fUf6gLr8Jxui7Z6w1TWl1/AYN0Iv7rzcaCK3muAFCT02yNHM4yKSCi XzEuoLUKdsi9
CD7X6nAT8TIqlKF9iBjGMW7Zasm8uMmM2OIORXHH7m3Gd+rWG17O5+9vX9wi qXeEIO0ijBm4
Qkh2fE/WI+333O+Ug55wnMlhxoxG4rDckgvk6rrikB3yZK012WH3egvGiAhW uOuwiojwLepC
Pcs+gyvFappT9B3ODto7iN0fnOu18R7972ScnCJMfJ58tNYHOkKNIU+GdN97 tWZZelQlJsd6
yJEDmBIkJNLCaI4+CGUd8MjXUV/lQ50jY1Tcm6jnBsg09xz6Fp+LbTAiMZlW PKfL5hmYyXR5
eNJAm91483Um6nVf+1x+Cy43qh/kgWw0ZI9HyJ6Zn2zhCIalCdzdxV0bydK5 Nil6gXpXloef
hFLGqekXbozZ6Y96q0XEbB3ikI+F+hYAZeRImuMQVFzBWsQE1sSqlHhRqkk2 0bmMqK6W5SYC
xTba+NJ2CiAztsHhBopRaSewW3V59Cust9Guiipy6nagrPazbKQIj4COPRZr Cg6MYW4MzkHs
rtjnNJDxKPKviDHlY1HstYxWUA3okIze+MmS3lJlKwWxC6G6cYIVSyf+z8dP pKoVaFyvmAbG
O46DbvWkUa4oKxPqkgKJt1jin99IVyBBxS7B31dXLb10oW9e0wQXfhSfmuq+ juD3IYuoJlPA
Uod+hqzH4kbR3Bid9i8aaHgNXHJv4tAcX6GuKug2DRDBw7IWIvUU5tNz00Ty BNys+AK4cAi3
2ubEd4aH3ZwQDSqDEzGd9mBL158vX72AdR4Hlu8nF6gXiiPKRkupd34o0Q9w vWiqask3OtZo
gxrL39HcjQxInfzd1blrpqiJ5sMcEZj1s2ZAZT6OZa4r0Z/BTsLYOisockih aBrzAaLSesvU
nk7WWfB5hvLBfijLh12eHUnNS+Vnf4wMT4r+1peVTmEukxEO972hwohdFagY E7Ggz1qt6ASr
IwywI5W8qvZDPrbb6WAkN4MKxiBeUX1XPQwodxqoqAr0hGG9gpuvvUSv1vEW 0ComXXm+bqPR
IDhKTvD1CfMFx0K5Aex0IVRh8tDheZPJwRBpfj8cx9gH7OI74RIWcv/1Igi6 g8R3m+mHx8Mf
t+t73wzQOhaNQGHLefO0EtZpLUNpoGOnOelI0INPT8ILJ2OxxVnLn5oPQPvP WSGydw0eN9KS
6khs9q1iXfG3o3zGrK6V5T6jFmR3nvFmvYribkjfKQw4JcL+NHQl2/WZSj9J tzLT7qiXl5dt
oQt2VcZ0xS6mrV46nx/rpnSVgXZ36rTJCbQ5KXw7ZfpPvvNziv+MUmvr+5wy YwvfJ5WuLBj4
NxemubObx8lf50Y79WWy3x0++PRv/eYXoRGgq5Pmr0S5bMvF++92ptY3+AXt m7Gu2nUTbMK/
kG6XvQbe1H4fAI///gdQSwMEFAAAAAgAlWbhLkTYhxxNBAAAgQ4AAE8AAABy ZWN0aWxpbmVh
ci1oYW5kbGUtcm91dGVyL3NyYy9tYWluL2NvbS9pbnRhbGlvL2dlZi9SZWN0 aWxpbmVhckhh
bmRsZVJvdXRlci5qYXZhxVbdb9s2EH8PkP/hhj3MLlzJbd8aBEjmYViAATGc vhXDQEtniRhF
aiRlz2jzv/eOlGzZsZViTVHCMCTxvu93H+mrlz2XF/AKZqbeWlmUHkbZGN5O p9MJ/7+DO+2F
kmZCD1kCQudgfInWJYHtVikIbA4sOrRrzBP4UEoHtTWFFVXgIAYQWWaqWuit 1AVUwqOVQrkg
RFikLznRrIVUYqkQGp2jDXxEWDkwq/AyM1VlNMybpZIZ/Ckz1A5h/SaZBkGb UmblTpNER0xk
Si6dt3LZeGn0JBhEH/e6hA/Mpff1+zTdbDYJZkrWDhNji1RhIVSa1er1+s00 KX2lmLqNmY5y
jXXvwxc+hwF7DVJLT66CrGqFFdIt28HkL3rSy4taZP+IAoHcT2S0IilwdXV5 cXlB2o31QB7t
vMut2LzNE/JCY8Y2XQ2RFWgq9HabzA3J7svsq2uJFyxQSY3CLkxDKQz0aYu1 3u0flA2FkSZk
BZ6wtlmlS/zPI+GC8GSCHNfUwQBGRiV0Q0G2xMIAW6HwDcGKcPNE297hiOEb 0fjSWJgja7sl
uHlrdMF3HNSItUwJ585aHi1zJ4z/RGLoRNf5UM3ASomic0vnMqNqcPSOXFjg sGCUALtGNrqW
MBMalpxb7STVBuY7efRM5SKIxZWmUTmTWawM12JHlMaH2so1KYOlMQpJ4N+Z UUpQlhedjIeo
3YWEHVs+s8jcAjRuzsXiicoYvzPUo3EXIT7nzYFr8LbBq0j7eMq4ILDtEl2C J4AyBDXCQ20J
2UDpNtSAKOz0YWcu3DjE4fqIJv/MGMPRIOX4dBDWRuYQ2fe0nNKDKMgVjH4a 0VcCh/NCZziM
4vEBNx8qDEpEVMTSr/bXj4CKWuYRw4B0sGVG0R8NGZCF3tEXSEyJQ98mmbvw +IiCvWSqAv39
Gq0lUN92iVnEKh499ayT3dQ5ITG0Ive7NdWvVH51eBsdKzrtMZ9+mEjoMSOf va69BtY3P6Or
F+gBqN6tgNyenQM7FYVFal9U+wz6CVQml6ttwHY0AZyhtzC4okSaq90VzzfX lc2Z3tHrGTx8
j7sF3NSCZzdj8LCgqPW21gwgnKdtvfOqDdVzgH8mIJ8/H0aaTbu+Bt3QAnJ8 923FE0PfL5n9
44vWSQjMx7+6vBFv+2Xc1kUf1Ik3t9aK7Yhbb0v36bGPv50YkecPlOY27ofJ mBmr0bZXR02D
CXuMUd543NfRlvUhxdH9V5ZLmn64/+2e9iNHe0VpNrSYrcK0R64NoKaN/Kwx zHvKSoFkuWhb
fBlC65K+vDltoE1FK912EmgwlzxFCZbbIMaxnNyEnXACtLbB3S8VuS0JQtp4 +LeRHvsCHW8Q
ZFrcImlawEp6llKESZ0kyUCNLwKMaFb+/2G/k3WycM8Pe7ixP075YT/oFo1n qrtXgq3pg5vJ
2aA/YNwGf0TMu5YZzf4u69xQzx0KcJeFzrivX7q6u33Q6fcFUEsDBAoAAAAA AI5z4S4AAAAA
AAAAAAAAAAA4AAAAcmVjdGlsaW5lYXItaGFuZGxlLXJvdXRlci9zcmMvbWFp bi9jb20vaW50
YWxpby9nZWYvdGVzdC9QSwMEFAAAAAgANmXeLp+e6/e8AwAAAgsAAFMAAABy ZWN0aWxpbmVh
ci1oYW5kbGUtcm91dGVyL3NyYy9tYWluL2NvbS9pbnRhbGlvL2dlZi90ZXN0 L1Rlc3RDb25u
ZWN0aW9uRWRpdFBhcnQuamF2Ya1WTW/bRhC9G/B/GCCHUoayKgrkUiFAEllJ jKay4fjSk7Ei
R9TGq112dylVKPzfO7MURZGiJQcoYciUdubNe/NFFjJ9kjlCaldCmSC1siLH hQjow/jy4vJC
rQrrAvyQaynmKI0Xd84W6MJ2spQmx+kaDVues/umfECDrmNaBqUFnx0Gsy4X mGpVeBSZk5vf
MnHzWeWlw/Epmzurt7k115haJ4Oypt+a5U0zFchcpduXbZBsCumCFx/nPjiZ hok1BlNGjv50
dsabIyj04sDRZIWlRLcI7EG6VbhnJ60MSvdVmkxjAzR+0akV+QCh8a2wfIfD 6Orq8gKu4KPW
EJbcEhmCMnSvPBS7PqHbufSYwRLlWuktWBONv6LWFr5MPwP+I1eFRnjzLqIt bGkykAGWIRS/
j0a7HG3UkxI+fhoMo3e/DsErk1KAwDEk+JXUGh34QGlWJo9gMXUUT1ZBtc1V KjVkSuZOroCV
W7dnUDi7Vhlx3aiwZG4CYGYNgl1EtFMiS9Y434I0JHERTS19uNrGD+koA0Nw EYtsKuZEEA0H
DRbmDJ3qkr5S6JtKGWX3R+lJBU1YDM9HkFnzS4AnYzcRbrPEGK3CLBwu0Mk5 aSLU1KEMyCkK
REFqVhTBat0LygFXgsGHEa5KLf/2MkPOwrQqztu3pdHqCeGaB+t6SHRUuoRU mohGTjE9tgye
8svad46Cz0eXF0U5p7aCVEvv4YG4HU8OsWUaHl4eLgKjS7GmFS0ZD/0bBf7l 7mXTqoP5uoIP
HvEVI13HelNldT8SNDvJoAZjSXxDDRWIIklfW5VBnwuTgd01GsE9/l0qRw5c kznuht83NspQ
FbVuRjFpzvhqDsTkdjabTh5ubmePn6az67vbm9nD98f722/TYdvH4AZeN/fJ YDCuk9dlTN2x
smuekNrdAwmA/0fBWQGnVmZFmy2fa/a7jot1obKqNVWmXQ1fUu+I5mzcHCVJ u0f/pMHRgxxD
vKFoQmZZf/MlvDhabI75ZNjP6HxYh1yCV0RuBB4GO5WkogWaLJShRdrzaAcV /7WIfw+ONvIe
At7vjGjGQg0xk6t2ktUC+vSKfS8//jH9S1D3Se2TGnrQissXrUKHfvlpP0ut IM9dxS6mopLc
43qIzomllidORJG3Az9r3rejny8Z3fdwe+5bUZNqkfOz5cSDXvzsSvviZLHk 52Jnt1VvUM1W
O1pqu3csaJsfpugEzYM9sYPppK6zlbr+rTJ2sYTH8CAd5bZ5uUsY8OiVr1kN fDkMpTum1hSF
/v4DUEsDBBQAAAAIANFk3i5q8fkg8gQAAHYSAABQAAAAcmVjdGlsaW5lYXIt aGFuZGxlLXJv
dXRlci9zcmMvbWFpbi9jb20vaW50YWxpby9nZWYvdGVzdC9UZXN0Q29ubmVj dGlvbk1vZGVs
LmphdmG1V01v4zYQvQfIfxikhyquVy4K7KVBgGY32W3QNlmsjQI9BbRE20wo UiApO0bR/94h
qS/KkuwFNj5YNjV8895wOBzmJHkhawqJzGImDOFMxmu6ig3V5ur87PyMZblU Bp7JlsRLSoSO
vyiZU2X2HzdErOmfTBsqqLo6bjovcmvQsSwM4/GNUmRvofpeluP1G6nWMU04 yzWNU0V2v6Tx
ByrSXKIAZzebTM7PYAI3nIPZWHEpBSbwN9OQl4rx55JomsKGki3je5DCGf9O OZfw+e4T0FeS
5ZzCD+8d2koWIgViYGNM/utsVlLYsRcWa/ctqJm9/3kKmokEHRjrg4DOCOdU gTZEGSbWDsyR
RX/EO+VyzRLCIWVkrUgGNGVGqppBruSWpch1x8zGcosBHqSgIFcObUxkYTUu 90AESlw5U4lf
qrLRU3yVgkA4h4U2njkSxKjiZCNhaaETXuBfdH3vlWF0nwuNKjBXnHv7ClIp fjTwIuTOwe02
1HnzmLmiK6rIEjUhaqIoMdSGyCAFwq0iB1bpXmEM7EpY8KmD86G1Y8MMbRTu /OK8e1cIzl4o
3No8uZ0iHZZsICHCoeEkFx5ZGI3xtdrLibF9Pzs/y4slZwkknGgNC+T2UQpB E8Ok+AtJcfgX
DfFT2qEQg4+5UbjQ8OHu4fbL4/3D4umPu3/gGi6WVZpeuDx1ExXb2iBY7AdE 9KjZk5aFSujV
uBFm1JqaFpY0yA0F2S0DT7U7XZvg1oC5g8ZIq4wJTDpBMlw6qzYEKVVUXBal fYC1cAy+ActT
PsAq49cT4eiyirH96AILSnR51Yy0VGKIBd1BXUxqu//8o6Zdzp7AV2oKJbTf gzZmmAEtvMzF
WS6fkY+Oq1mzgLILNUqqS5AOGSvnorMYo6TmGFDilBxSqknAbzmxlaJ51U9v K1kKOqDnGDfz
ArZhNA85e8atXKJGl+WnWjXw6RIPMfHpF4W5zPxowKVKPCRSvm4iN87AJ9kg A5+0XQZ+tMPA
I1kGi2qvHTD4fHoMQpfrOhh9GdOpAUddDog+cFmq73dpBlVWZzkk7jC3O9Ge xn2bvffYd8ls
O4Vqm/ZaRfb4uuyWBbdwJE37W4+ofxh4ILF2Hw8D8cuu8jYBRTO5pd+HwyhW D406to7JiqnO
3KhxUpZanJJPm9FHV8RA8vRwEFfjb8ILOsC1x5sDd2DN5J6kKdEmcC80zrbd UF1SBsqp08ec
eV2yItsrMTzpX6dQD/oWKqDcqcJ2oaNymjduHRs9ooLjGoUVnPvvUWlf3Uqe LM0vfI+0USV+
lhfzJipcFSXCd4ZcJsSVFNt/YYdKXzEXbE6dpLB92Jy6cvM9JlsWYx8WY68j DBfRBeKETuEC
fvJg+LywTZ8dOFjZbuwQ522yIChOxpBk01fN2QqidqG/vvZojYX9+AIcqqim xGWRvxd50RTI
I1T6qnxJpX51OpVqSkXlsTAncUnpG4YlZfrbIuPZvFFkGjb9wbGPgx1nj3Db Mlc3Mx225vU2
G22lqmY6Kit/2NF123c8fXU3SEd5mbDNP8ZrETT5Q7zCq8AAL9/qdOLSvWZ4 76Wb9UFcxrqr
1k3ku7juSB/rssZcf8LKm9Jlged4oXKpqY7jdqvl74P1rcqtFV4wb/Aav89k oaG5RbXumuEq
PeCkam2Y/dNZnxLUvRrYVuVsI/2PAbkiAMC98D9QSwMEFAAAAAgAimjhLi+Z 23yJAgAA7QYA
AFIAAAByZWN0aWxpbmVhci1oYW5kbGUtcm91dGVyL3NyYy9tYWluL2NvbS9p bnRhbGlvL2dl
Zi90ZXN0L1Rlc3RDb25zdHJhaW50Q29tbWFuZC5qYXZhjVRNb9swDL0HyH8g sMPSInWGAb0s
2GFouw9gK4p190GRGEeLLBqSnKwb9t9HynYbt2kTH2zZfHx8j6JcK71WJYKm qrA+KWepKHFZ
JIxpPh6NR7aqKSSgUBaona0jFiao7VvDMKowhbvi0lbooyU/Pwp+Q1zoOOh3 1En50uF+uAhl
4ZXyJhYX7SKLnp2ejkdwCh+cg7QSdwbBel7bCHVnmZcLFdHACtXGujsgn8Gf 0TmCT1cfAX+r
qnYIr84z25Iab0AlWKVUv5vNOhlbu7ZFzHePaXb+ZgrRes0FktRQECvlHAaI SYVkfZnJaukC
11NtUUel1cqBsaoMqgI0NlG4V1AH2ljDWrc2rURbAXBNHoGWme0lk414XNyB 8mxxmaHEt9Bj
4pRDBjzTZS7GtMpZIHopmggWQq1dw69c+kvrjLv7q4nsgocll5cQGPKvE6w9 bTPddoW5WstZ
B1xiUAv2xKw6oEooLeJtNsqJo0zW+15yD2QnhHya6drWyrfnFUoXrtrNOTtr vLNrhEsZrcsp
y7F6BVr5zMZJuT3UpMj9Fe9dYiHx2XhUNwtnNWinYoQfrO2CfExBcelu4lis qIjQv//lVL66
zA1ZgaBuEk5O+qBc5Myt/YPwHqqfFRt0PNBJvkxO5gPUDcUh6CtplfjADYB9 PO7EPW45+RlU
LsUIefaQf3J8HqsPaGgo/QDLcXL21tqF3x9/CIPqu5gw7Meugl5ceOjr0aXz TwrqQdlWPe9E
fYDlmxifyLBc8yq/gc2PAZ8c1KJrE7O2iAPU2cb9D/epwG6gXlTIf7ED29lN 5qHtbEfzaU+D
3cixbnvYdm0+DD046DTP96W2/M+mdiofxYdt72QzhuX9B1BLAwQUAAAACABj Z94ueW4R0BkE
AABgDwAATAAAAHJlY3RpbGluZWFyLWhhbmRsZS1yb3V0ZXIvc3JjL21haW4v Y29tL2ludGFs
aW8vZ2VmL3Rlc3QvVGVzdENvbnRyaWJ1dG9yLmphdmG1l1Fv2zYQx98D5Dvc OmBVAkceBvQl
QbA5sZt6jeMgcTHsqaAlWmZNkwJJ2S2GfvfekZIsxXXnwbMS2DR1/N/vjkdS ylmyYBmHRC9j
oRyTQscZn8WOW3d1ekJ/Yplr40CbLOaJFLnl8acZS3jMEie0ioc9/321h+WI q2LEFDo0+5hP
tJY3zOw/4l/1C1Hhoq7dbTNIhdPmkRm32+YvbRZTrpJ5ELzVyjqm3G7VHOXi USGdeETC4KKG
weHOiGmBfTsFHP/suB+GucF2kPiP5tu0pyfd8/PTEziHnpTg5lQNKQehsC0s 5GWJYHPKLE9h
ztlKyC+glTd+x6XUcDd4C/wzW+aSw89vvNpMFyoF5mDuXH7Z7ZZoa7EQsfWf irvum187YIVK
0IEjHwzskknJDSCgcUJlXizXWJ7ojwWnUmciYRJSwTLDlhDirAlyo1ciRda1 cHNiiwEetOKg
Z17tR0EWFOP0CzCFIc68qcYPU9nYDt5KQaGc10KbQI6AXJFTp2FK0oks8Ce6 HobIMLufCotR
4OLy7ukWpFq9drBQeu3l1nPuvQXN3PAZN2yKMaFqYjhznFKEc5cySRF5sSru GeaAZoLEO14u
pJb6dhNSFgZhci4uCiXFgkPfsPVv/Q7iiGQOCVNeDQf59OjCWcwvxV4OjOl+ 9/QkL6ZSJJBI
Zi1MkK1R2EAFqVILeywC+AcF8cqNWFHMjSUJtNpXvLVGg3GoY7rO4dbniupp Sd4u8rDN1Q7i
yrJbOgrgL5CjswqELlvkHLuuQs/X77l94q4wyvqyCbsSGJ4J66pipBsZ4mPh YTrKwq1h4A/j
BaDcpnBNgyqwcMSsqnGcR+rZ4jfa8YTcVEMz7kIraiz/UqUDzxiiykrGYb8V Z8kQlR6vrwPD
7+HrsoLeOKhVGrkJmYEIF8rFn2zF+jo5q8McYZHrFFLcE5gJFdibWmdQaI/i aMbemr2VFinY
gLXiJBI1C4d24FagmNXoZTVRuN5wY7bJSV1qdG2P9ANbNo3jpsy1b15vZod+ 1zXVhCpNfwrZ
99xtpO1pRd2IEDCftEUkHBdow+oMp7BZDGfe9tLrX71U3yDEmNE7qadMBuJ3 uPngBh217T3R
rkMx7g/uB5NBZ3vIpoiqytx9WJUqZ81s0fX/on546I8PBSWNI2M+DQ7HJI0j Y95+mBxKiRLH
hhw//n0wJWocGfOx93z4GvIiRwZ9xnV6O/nYu78/lHajdGTkt8OH/qGwpHFk zJvx+P2o9/T+
UNRK50e4RZ7iI1Sv7midUuUJ//V7J3D9mMUnmt7JouabHyzDd+sgbhtgG08y xdfQ6I5elUfd
L9T5qslSKsb4tJzjA+ZE3xld5NHuLI5uPvb6/eFkOH547nh/Ww91u+IpX0qj F2+nW1GhEP5/
A1BLAwQUAAAACADRZN4u6R8lAtMGAACDHgAASQAAAHJlY3RpbGluZWFyLWhh bmRsZS1yb3V0
ZXIvc3JjL21haW4vY29tL2ludGFsaW8vZ2VmL3Rlc3QvVGVzdEVkaXRQYXJ0 LmphdmHdWVtP
3DgUfkfiP1jtQzOUBhiJl2WRlgXaRWIpmqK+Ik/imXHJ2FnbGTpd8d/3HDsX 5zrDllarjdRR
iM/5zu07x06a0uiBzhmJ5DLkwtCEy3DOZqFh2pzs7uzu8GUqlSFf6IqGU0aF Dm+VTJky6/MF
FXN2uWICJTfJXXNtmGCqIZoZnoS45huTah6yKOGpZmGs6OM4Ds9lItW5FNpQ YfTJsKgQLDJc
ijMRLaQaFL56z+eZYoMyE0CDEBK2heycySUzah1e8CUTGpzYTvxWcj+NQ6Kl O93iWL0qBZcx
N7dU9UCjrJWQCY/W/TIfFE0XPKLJZrgbGbPNUhP2V+YY1iPAACIFCB2eTbVR NDLP8EE5dB1e
AAUrU6W8T/Y8u3t2/WBvb3eH7JGzJCFmgV0RM8IF3HNN0rxV4HZKNYvJgtEV T9ZECiv8B0sS
ST5cvifsK12mCSOvjy3aTGYiJtSQhTHpLwcHuauP/IGH2v4KZg6OD/eJ5iIC AwZtUKKXNEmY
IsB5ZbiYW7AUiQL2qDOayDnmhMSczhVdEsybVKUHqZIrHoOvj9ws0LeQkBsp GJEzizYUZIYx
TteECghxZkUl/KhCRu/DUkwEwFkskHGeg4NMoFEjyRShoySDP8H0lYsMsvsl 0xAF1MWaxyUS
S/HGkAchHy3c44JZaw4zVWzGFJ1CTIAaKUYNwxRBJ8Q0wYgsWBH3DHKAlUDw fQvnUovP+j3E
LFy64rx7l4mEPzBygfy42Ad3eLQgERUWDZRsemRmNOQXY88VQ1w/2N1Jsyn0 FIkSqjW5A98K
2sI6XOwreqBJL7udGMdoYJAYTbrH6T7xG478jSxGxYMDcmWHZYQFziBehcEu 6IqRFVVroBM8
h5mqbRG54IYDjRIZURwb2mYQSy4AXodh6GAB0UBUSEF9z3MD54hPTsnhSWl9 b4/cgfLMDsw3
aAMnsQ5talAiVXyFJZywBBBXrDm0yb1TOTp5nvzY98HdQLl+04z9mxHz2hHN zf1gVOBVQUgD
TgAP8m2E1OWxHCS/GpsIUcXfkDjBHpvrweik0i1lQ83MJ/6NBTgsxse9Mr9D h84Vjh27bwb1
3TOcJhnzdRulfPu2TCJedmsqmUFOqxW80HcrETQJsUfGhzjTWo+PDg97Pb/O zQSFPV8yCLCR
kPB/wr9kRObM2LtgNPpuZZvXypd5/mQ0qiWjoGVZtW46VkD75DA8hh/flYKr zwU5qqfNZEpU
2cuXnr6D/w3alycDzvQQ+VeSx6RLxee/JUGSVKeNoM6jaiH8MDm7/ePq/Oz6 /ubjxeX95OP1
5X6bdFjNsmHLIeigR6OXzAZsPYrpxWeuM5pszkRT3M9C2UtQ+kFCzj02+1Uv j5WwoX1jW6A4
EnsI5aAhqjl6sG/2LXC9cVpz0VqBG9iYitaja9gL7YhRFKdBvWB4tmjUEBCK UddYUZurt/E1
43Vaexx0vLS06+i2bFvEzeqErUyttp+Mwl0VNSGxsIrpLxRv6LJeBj4jAYqG cDxFmrzCtL8a
1RDxarLJg3giLNGsjVRMv5dB4yKFQ04/1ieZqcibXduhAlmGYe+ogvT1wj63 vctmhsa2J4mO
NvbKX0nVZhhEwfUZruHK6SmZQTCsFYLOoOZhhXFSXx5sWRrH3YwOsIdeJgcx 2y4Lvlx/HnrC
95WfkwDFlnLFflQOtjn0Fd50MLuVrXL0o4tkQNNPkpXVTRkvrNZa89S1ceoP NmV+dOjz4Mdk
s6Oht8xmh2Yrm6Yh40XbXHpuLocnUZ7LHvsveBqrsIOP0y9wV6avlb325x/S g0F4HrOXT8xG
F4J7ZO+bGexWsZmcSGnKSnsXZvYzZ4/Q1D2rBcyEzaHCat0nF7Qf51E1ttta BHD0yZKkNbtq
MuU5sx1ba6Z5ingecgRq+/HUYo6nOESaSc4zeKt2fVsoIqPd+0TxlWYOY1l4 y2Grz9yMb71D
dwyO/E2kgw+8ejZAH5sA39Vh6uRs9LDDqhu9NLZczzPgqtpd9xzMRXjH1JIL CqjlkcR+v3Nw
Rx3nktJC48sEXk/fa3C8hcHxII1o8a07Xx5kkJtWP4ZBzXH5/2OQi/AnMmgb gz+ZQVEiNStP
MR1MMtLK5Z/i32jY8Pici/I70gsMpfzLPuH5TS3+PCikonM1VyqF/4uB9vTO iweaB6hrEVbx
VLGUQbQ+3Ha5X3dg0OuWeuFF2X+VrPtokhYbsvvaGATef+6MKiP1Lyd+xzuY vPUKEa8ba5r2
cOApJxJe7WPuPmTi17/Uvt5f5E/GQQN31BFB3oRt0+PtTY97TY+7TeM0qfz+ tQJqH33KCnTN
J/cev0lleMLk4j4hQegfUEsDBBQAAAAIAHpi3i6o/pNcjQMAAEgLAABQAAAA cmVjdGlsaW5l
YXItaGFuZGxlLXJvdXRlci9zcmMvbWFpbi9jb20vaW50YWxpby9nZWYvdGVz dC9UZXN0R3Jh
cGhpY2FsRWRpdG9yLmphdmGtVk2P2zYQvS+w/2GQHCovHLkokEsXBerGu6mB bhF0gxQ90tRI
nprmCCRlZVP0v3dI2Y78IaOFayxsrTnvzXvDGZq10itVIWhe52SDMsR5hWUe 0If725vbG1rX
7AKwq3LUhmqPuWaHuUPPjdPo8/mTcit09xdiGxtojfn8g+NKgP6JLQUegBRO td8V+SNVjcN3
ym6UPx8Ydc6wVI0JDwWFGa8V2eHQ907VS9LKfCJsh/TGQBSyWrng80eHWLJb 76G/MadcH2R5
mKChvMPvcREz5Fei59363NbNAO3XoGcKOBgTdc2ltg+fNdaB2KY9nNzd3d7A HUyNgbCMm10g
kJVn8lBvO0AeF8pjAUtUGzIvwDYF/4zGMLx/eAT8rNa1QXj9NrGV3NgCVIBl CPX3k8lWRksr
yn16txgmb78dgyerJUGIORT4tTIGHfggYslWiaxm6T7Jp7qkhqtYNihIVU6t AZP1vYLa8YYK
0dpSWEZtOcCvbBG4TGyXTDbR4+IFlBWLZQpleXO7GD+WpQKs0CUuiemUi0C0 MWlgWERqbRr5
V1LPO2dS3T8bLy5kdlL6uAQF228CrCy3ia5dYsrWcdYOS3RqIZ6EVTtUAWOJ gkhQJjpKZDvf
0otpJyL5ONF1pY3fDSuMVXjoNufNm8YaWiHM4pDNxiKH9BK0solNQKk83AQv 9Y3et8A8rk9u
b+pmYUiDNsp7+CjajlpcpEYNHo6//0sI5LXFn0Fmo11MfHnszXRmsYWTSc/i zo5G9wegjxQM
Zq/O8L/aRf4dRyI+dGMRX3fwo0ccGLg4U69JhirrTeAY+jM72vFMDlxumGLx D5FAp3igjka6
0XHr4WSMj0oTGbLEc2Q/0WRbtv/k99K5ldyT/DZ8waNDNDtx7jigDtJDe/MD wL6lCsPJei52
3nHs6OBTA8Q9fZLGN9nouq30z2qDUy+nIbdYnFroNm/BbFCOo5PwvnCHoXEW SmU8XqOp4Jgk
O/6B3Es711gDGKAdeCf0CkVTn/0LDTHqqmQVB+5uEdn2NnEx62m4mO5gV8kg PyMXXgYtf22J
bdz/0goXJ0+zLdNFaHDwBiZvGHhwljQ1unw4tne6HK3Bpvv44ezw9nBdXJzm /uUpTfTF61U2
Os+yW39UWgr0sj8a9iT9xQOOLOvfKUdbyqo7ZhzHcyUmeNbybH5S7hN5WpAh 2ek+MJ/+8vv0
j+feGSR//wBQSwMEFAAAAAgAk2XeLhUDSzY8AgAAaQcAAFgAAAByZWN0aWxp bmVhci1oYW5k
bGUtcm91dGVyL3NyYy9tYWluL2NvbS9pbnRhbGlvL2dlZi90ZXN0L1Rlc3RH cmFwaGljYWxO
b2RlRWRpdFBvbGljeS5qYXZhzVRNbxMxEL1Hyn8YqQdolG4QUi/kAmpD4VKh 0j/geCe7Jl6P
sb0NFeK/M2NvWglpqy0CgQ+Wd2fmzXvPH17pvWoQNHWVcUlZQ1WDuyphTOv5 bD4znaeQgEJT
obbGR8xxzu+Uq2N1URbr0UysTfJkjTYYq6ugfGu0stdU44YjnyRyP14d8GvP VLhPQJXwgpxD
nQy5mxKYUHmDulQ9lsxnq8ViPoMFvLMWUiv6awTjeG0i+MEUXm5VxBpaVHfG 3gO5nPwBrSW4
2rwH/KY6bxFOzjPajnpXg0rQpuTfrFYDn4PZmyrm2WFanb9aQjROc4MkPRTE TlmLAWJSIRnX
ZDBPvCHcT5WmlhoxDmqjmqA6EF8pPDDwge5MzVwPJrXCrQK4JodAu4z2lMhe NG7vQTmWuMup
xFM45sQlh2pwDJexOKcwZ4LopGki2Aq0tj1/cuuPRRm7+6WPrIJ9z+0lBDW5 Fwn2jg4Z7tBi
7lYwfcAdBrVlTYyq87aLRYkpKCuKMthR9449kJ0Q8GWGK9bKv3GG4sKmbM7Z We+s2SNcBnV4
fblkOka3oJXLaFyU7aE+RfZXtA+FlcRX85nvt3yGQVsVI9wyt5FDzpSFS4Sx +HcG5FGOpowF
vI2Iv3WjThpMDwf/M/VB43BTX/56H06P3USMLPgoJQ6z6KEEpoPBcO1Oj2pk BEx9cOB6a9fl
7w+5g39H7K0K/PmHxD4N9s/EPj6Dx2exEBx5JKeJfibo/yCe5AmYLn+i+mmo z9HP009QSwME
FAAAAAgAo2TeLqwTI38VAgAAqQQAAFUAAAByZWN0aWxpbmVhci1oYW5kbGUt cm91dGVyL3Ny
Yy9tYWluL2NvbS9pbnRhbGlvL2dlZi90ZXN0L1Rlc3RHcmFwaGljYWxQYXJ0 RmFjdG9yeS5q
YXZhjZLPbtQwEMbvK+07DOJAu9pmEVIvVBwQ3RYOFA59gYkzSabr2JbtNF0h 3p2xkw3Lny1Y
UeTY49/3feM4VDtsCJTtCjYRNduiobqIFOLVcrFccOesj2B9U5DS7ALl/W3F 8Sv6VPOPihtU
0fp9hm1Wq+UCVvBea4htUq0I2MicA7jJikxLDFRBS/jIeg/W5OKPpLWF2+0N 0BN2ThO8vMy0
2vamAozQxujebjaTi4F3XIT8NhQ3l6/XENgoEYhJAyF0qDV5CFFssmkyzFlp g+jhKKptwwo1
VIyNxw5IUlk/O3DePnIlXgeObfJWANxZQ2DrTHsuZJ8ylntAIxHrXGrl5Q81 YS1bFRjBZZbU
jM7FIJkkGi2UCa10L58i/WlMJt196IOkkEvM8mkLKmteRdgZO2Tc0FJWG5nO U00eS8kkVOUJ
I6UWRbGAOiXKsEPuWnqQbiLB1xk3tjatnXaYurAdL+fiojeadwTXHoc312ux w6oFhSbT5FBu
j+1jkP6m7NPBIu1vlgvXl5oVKI0hwL14u/Xo2nRXRz8dcHLbkYkBfvsf4ZuA ZEycw+4U/fB5
Nq/zByuhnuIavpQPpGThs2TX5wdOGnMxHSbvwPRaX/0s4RrOxpPSjNRdRZIt +f8Tl8YxiYZc
eG/dbO/8CP0dSAd6RuFOFv9b5e8SvwaZj70Yc57kFoHGfJOzE0xPsfdmPjUV SYE8PwBQSwME
FAAAAAgA0WTeLu1id+O3AgAA3wYAAEYAAAByZWN0aWxpbmVhci1oYW5kbGUt cm91dGVyL3Ny
Yy9tYWluL2NvbS9pbnRhbGlvL2dlZi90ZXN0L1Rlc3RNb2RlbC5qYXZhnVNb b9owFH5H4j8c
0YeFloa2Wl/G9sBauiGtQVrZXpFxTsDFsSPbKasm/vuOnVAupRctQiHJOee7 2S4YX7AZAtd5
LJRjUuh4hlns0Lpes9FsiLzQxsE9e2Bx6YSMfyN32oRas9E9Pm424Bj6UoKb e5gUQSh6FhaK
Gpsep8xiCnNkD0I+glah+TtKqeHb4AbwD8sLiXB0GdAyXaoUmIO5c8Wnbhe5 FIXFpViI2Ia7
Qte9POuAFYoTgfMcDGzOpEQD1jHjhJoFsEKTL+JjFanUM8GZhFSwmWE5YCrI zpOCwugHkZLW
pXBzry0GSLRC0FlAe81k6T1OH4EpspiFVk03s+6xHSqloAguYFFPpZwEovKk TsPUQ3NZ0itR
DytnlO59ackFrUqg9yVItfrgYKH0MsAt5xjYKszCYIaGTckToXKDzKGPyJEE Jr2jALb2nVEG
fiU8eCfAVdH6by8r9CkMqsU5PS2VFAuEa8OWF9cdkiP4HDhTAY2GQjy6dJby 9d7rwdjXu81G
UU6l4MAlsxbGpO2WpEj4S2W6SLejaiYUrZ1f0GEyHA/7PybJr9uvg5+T0c0k GV0P7uALXPbe
PXI1SpLB1Xg4Svzgx3qw2uEwUSTAho3uv9b6npRF7bU2f1XNBKJwWQNE7d6m 7vONvAhBPWc9
+vv8kgUqnpzsgPvL8ybEUaXi2WqynULUqg5VC06Ijm7n7W0VG6UxS9OBxByV i/yH7a7V2vL7
hW8F+bL8K60UJSO0qkzwp/ctK3tN0b78zVBs0SUsx6i1mYGjPeevDd/p0nCM op0E23U+WIXT
d5F4FuEhmDGa3O+0egX6is+1uWjtj76HLa7xh6ooXbQhe8vPmJkZurcZDm6L Q1AHPZ3/h6eK
ce1rVLrnxtZgq+pxtXfs6jNJojyP3T18Bl1p1ObA1gD0+wdQSwMEFAAAAAgA 0WTeLvgpRxII
BAAAJg4AAEoAAAByZWN0aWxpbmVhci1oYW5kbGUtcm91dGVyL3NyYy9tYWlu L2NvbS9pbnRh
bGlvL2dlZi90ZXN0L1Rlc3ROb2RlTW9kZWwuamF2Yb1X32/bNhB+D5D/4eA9 VEldeSjQlwV9
GJp0K9C1BRL0daCps8yEIgWSspcN/d97R8qWpUhOuwYVEEMSj9993/0SUwt5 J0oEaatcmSC0
snmJqzygDxenJ6cnqqqtC3ArNiJfojA+/+RsjS7cv1kLU+J75QMadBePm143 NRsMLJugdP4Z
ZbDu0KF1ZY5Sq9pjXjixfVkQL1thcPf5parQeGXNxTeZf7KkLGIvzs9PT+Ac ftcawppVFwjK
0L3yULehoNul8FjAGsVG6XuwJhr/iVpb+OPqLeA/oqo1wi+vItrKNqYAEWAd Qv3bYtHy2Ko7
lfv4azAsXv06B6+MJAeBfQjwldAaHfggXFCmjGA1kyV/IjnVtlRSaCiUKJ2o AAtFgdozqJ3d
qIK4blVYM7cc4IM1CHYV0Y6JbFjj8h6EIYmraGrpx+1s/JyWCjAEF7HIJjEn gmjYabCwZGip
G3ok1++SMorubeNJBRVRdM9LUFjzLMCdsdsIt11j9JYwa4crdGJJmghVOhQB OUSBKAjNiiLY
TveKYsCZYPB5hEuh5XfTDDkKVyk5L140Rqs7hEsulss50VFyDVKYiEabYnhs EzzFl7W3G3Ne
X5ye1M1SKwlSC+/hhrh9ICp/0Z+G/8iErtqpDatYKUMJvA6OUgzV31osUV/0 TWKF8pqVIqS6
Plze1zuZePUvxlpmg+CoyxTSXiqEQD1ElEd7DnTbph5eg8HtuFXGJXK2R0/d wtc5cJtzFLxt
nOSaMobcESUfcyEb55iG4WTvNi36KlKPs4SIcYOuipFJhNJq9vK4e+qUEsOP uU8Yj7pvE9xL
bdZmUb3nJJ7tMs1Xm1iCS4ttCr8M4FoAIhCtsh6Gw9A4M6iRCYRg080owqzP egbP9/yew+xs
NgG9saoAT9TaMsxSXard81Bw+zpq7lcuXyvlsF9m2Wy3ZTYH02g9P8Ce4JQo lAekJkLWJzAl
7ZraJ+v6SfHzQBZ3GEu6Tp12TA6bdlIi1oT/zmXZkhiX4TunoxJEUYx/f7Px 19Cv0v0YyKeB
9JSGSMBhZTf4NByOYo3Q2M+4yGQkIW1vkGE9h4/LW7IGq4v9PXX6Z6EbnOAz gpigIsZ+80R4
2gHD+Y0D7k03pKaS3RuEj8LexMH1OGx/wB1LZjtH35m6CRnPjA48fcrU4MWw VXoCuKauNFKh
h+zBxkEnUaYaSXxx10qKOXhqpqmdxwR8bML/VNCP1Q8psJHEd0solH/iNKS2 +lkp6Pg/WRaS
gJ+RiMMzxlvCosOrAdzwWYLOp+kIvjtc2DhDnnk6lLYOYS08yOi1yDsc6lY+ iPD5+cA22aWT
f3d+oX9c6LmLIb16eIB5MPaGksfmnlwrXXzvoEtfsrS1i9WXr1BLAwQUAAAA CACzZN4uPCd3
RE0CAADXBAAATAAAAHJlY3RpbGluZWFyLWhhbmRsZS1yb3V0ZXIvc3JjL21h aW4vY29tL2lu
dGFsaW8vZ2VmL3Rlc3QvVGVzdE91dGxpbmVQYWdlLmphdmGNU01v2zAMvQfI fyDQw9oglYcB
vTSXFW239bL0UOwuy4yjRpYEiUpWDPvvI+WkH2s7TDAMSSQf3yOpqM1G9wgm DMp60s4G1eNK
EWZaTCfTiR1iSAQh9QqNszFjtV93lm51oh8Wd5gW7/oVqyK7ZXUZPKGnZSFn Pd5yzreDTEio
UvFkB1Q3F52OpFuHlUszm00nMIML54DWQrpDsJ73NkPcK+FtqzN2sEa9te4B gq/O39C5AF+v
vwD+1EN0CEdnFW0Viu9AE6yJ4nnT7Jns7MaqXP8eqTn7OIdsveEEJDk05EE7 hwkysUDr+woW
A1eR8+kxqQu9NdpBZ3Wf9ADIZQvpkUFMYWs75rqztBZuCuB78AhhVdH+JbKI xvYBtGeJq+oa
+JcOPnnOpg48w1Us9hmZW2mEJKUArUAbV/jIqW9GZVzd+5JZBc9ATS8m6IL/ QLDxYVfhdmus
2UbMmHCFSRolqCahJpQSEVPQThRVsIPuFddAOiHg8wo3llbu3mcoVbgem3N6 WryzG4SrpHef
ruZMx5o1GO0rGgfV8oRCmesr2veBSuzNdBJL66wB43TOcMfcng0m05T8GV7P LEfzsiJiYEuG
pwmFX6NxHFJZM/jMs89d39ZHcrhtxs2ewV+5j18+rH3oyQFcVi4R0/HesHi6 bxq4W14t4aJQ
OO3Rcz+Ia2CCz5SKkbnLVNox4Le8p1d0M+L/PMajHqkemMe93mrltO/VpdTy 5G2Vy/YeDcGz
uOoNejy90PeOjoHnLXTPJMhKSCV58MW5xaMw/v4AUEsDBBQAAAAIACJl3i6+ QnhCbQQAAEQM
AABMAAAAcmVjdGlsaW5lYXItaGFuZGxlLXJvdXRlci9zcmMvbWFpbi9jb20v aW50YWxpby9n
ZWYvdGVzdC9UZXN0VG9wRWRpdFBhcnQuamF2Ya1W32/bNhB+D5D/4Yo+TAkc eRjQlwYBFiRu
GyCJh8wtlqeAlk4WG4pUScpuMPR/3x0py5YdGcNWwbBl8fjdfR/vh2qRPYsF QmaqVGov
|
|
| | |
Re: Contribution: RectilinearHandleRouter and supporting classes [message #86476 is a reply to message #86442] |
Thu, 03 July 2003 17:34   |
Eclipse User |
|
|
|
Javier Pedrido wrote:
> Peter Armstrong wrote:
>
>> 7. When an IFigure is moved, all Connections attached to it have their
>> layout regenerated by the RectilinearHandleRouter, which updates the
>> handle locations accordingly. (This is different from the approach
>> taken by the BendpointRouter, in which the locations of the bendpoints
>> have an effect on the new points of a connection when one of the
>> IFigure's it is attached to is moved.)
>
>
> This behavior isn’t very useful if you have a very complicated model and
> you had to hand place most of the connection handles to keep it neat.
> IMHO, it would be better to leave the connection handles fixed and spawn
> new handles (where the anchors were) in order to deal with the figure
> movement.
It seems to me that both behaviors have their own pros/cons.
If you move an IFigure and leave all the existing handles where they are
and merely add new ones, you run the risk of having an overly
complicated connector layout: If a connector connects two IFigures A
and B, and you move the IFigure B, instead of the connector now going
from A to B via the most direct rectilinear way, it would instead go
from A to where B used to be, and then from where B used to be to where
B now is.
On the other hand, if you have invested a lot of work in setting the
layout of the connector by moving specific handles, you could
justifiably be unhappy if it is reset when you move one of its IFigures.
Ideally, which behavior to use would be determined by a boolean flag
which configured the way that automatic routing is done after a move. I
don't have the time to add this today, and I will be offline from
tomorrow until July 14th (holiday). If you wanted to add this
configurable behavior, the best place to start looking would probably be
in the execute() method of RectilinearMoveHandleCommand.
Any contribution is very welcome.
> Thanks for contributing this router,
> Javier
You're welcome. I'm really glad it's getting some interest. When I get
back on the 14th I'll start fixing any remaining bugs... (go Andreas :-)
Thanks,
Peter
|
|
|
Re: Contribution: RectilinearHandleRouter and supporting classes [message #92344 is a reply to message #86353] |
Thu, 04 September 2003 05:08  |
Eclipse User |
|
|
|
Originally posted by: stephane.fournier.sysde.eads.net
I'm looking for such a router. I would like to try it, but the link does
not exist anymore. Could you tell me where can I download your router
please?
Stephane.
Peter Armstrong wrote:
> This is the first marginally usable version of RectilinearHandleRouter
> and supporting classes. It is still rather buggy, and it is being
> submitted now for initial feedback and in case anyone wishes to help
> with fixing the remaining bugs and making it good enough for inclusion
> in GEF...
> Feature Summary:
> ----------------
> 1. RectilinearHandleRouter is a subclass of RectilinearRouter, which
> does the rectilinear connection routing (described in my 6/26/2003 post).
> 2. RectilinearHandleRouter adds the (still buggy) rectilinear handles.
> 3. There are 3 types of handles: corner handles, vertical segment
> handles and horizontal segment handles. Corner handles can be moved in
> any direction, vertical segment handles can be moved horizontally, and
> horizontal segment handles can be moved vertically.
> 4. Moving a handle affects the locations of other handles, so that the
> handles all stay at the appropriate part of their connector segment.
> 5. New handles are spawned when an initial vertical or horizontal
> segment handle or an initial corner handle is moved (initial = next to
> either end of the connection, not at the end itself).
> 6. Redundant handle elimination: if you move the handles so that the
> connection contains two line segments which are on top of each other,
> the redundant part is eliminated.
> 7. When an IFigure is moved, all Connections attached to it have their
> layout regenerated by the RectilinearHandleRouter, which updates the
> handle locations accordingly. (This is different from the approach
> taken by the BendpointRouter, in which the locations of the bendpoints
> have an effect on the new points of a connection when one of the
> IFigure's it is attached to is moved.)
> To Build and Run:
> -----------------
> 1. Unzip the zip file.
> 2. File->Import... , choose "Existing Project Into Workspace" and browse
> to where you unzipped the zip file.
> 3. Run->Run As->Run-time Workbench
> 4. Make a folder in the navigator, and in that folder make a new file
> with the extension ".routertest", e.g. "foo.routertest".
> 5. Double-click the file to open it. You will see 5 boxes connected by
> Connections which have been routed by the RectilinearHandleRouter.
> Click on one of the connections to select it. You will see the
> rectilinear handles, which can be dragged to be moved.
> The Contribution:
> -----------------
> There are a lot of classes in this zip file. Luckily, less than half of
> them are actually intended to be included in GEF (once everything
> works). These are the classes which are intended to be contributed,
> once they fully work:
> com.intalio.draw2d.RectilinearRouter
> com.intalio.draw2d.RelativeConnectionAnchor
> com.intalio.gef.RectilinearHandleConnection
> com.intalio.gef.RectilinearHandleRouter
> com.intalio.gef.editpolicies.RectilinearConnectionHandlesEdi tPolicy
> com.intalio.gef.handles.RectilinearConnectionCornerHandle
> com.intalio.gef.handles.RectilinearConnectionHandle
> com.intalio.gef.handles.RectilinearConnectionHSegmentHandle
> com.intalio.gef.handles.RectilinearConnectionVSegmentHandle
> com.intalio.gef.handles.RectilinearHandleTracker
> com.intalio.gef.model.commands.RectilinearMoveHandleCommand
> Everything else is just test or debug code...
> Known Bugs and Limitations:
> ---------------------------
> 1. The connectors still do not handle being inside a
> FreeformGraphicalRootEditPart that has been scrolled. This is the issue
> which Gunnar found (see his 6/27/2003 post). You can see this if you
> run the project and scroll the editor. Randy: since the handles use
> AbsoluteBendpoint, I'm not sure if I can use the approach that
> BendpointRouter uses in which the bendpoints are relative to the source
> and destination of the connector, which is affected by the IFigure.
> Basically, I'm not sure if I should be using AbsoluteBendpoint for the
> handles and then adjusting them in response to something, or whether the
> handles need to be completely refactored. If someone with more GEF
> experience than me could look at this and give any suggestions (or
> code!) this would be an enormous help.
> 2. The handles are not updated on mouse release of the drag. Instead,
> you currently need to click somewhere else, and then click on the handle
> to make them be updated. I wasn't sure of the GEF way to immediately
> respond at the end of the mouse drag.
> 3. Redundant handle elimination is theoretically configurable by an int
> which specifies the difference between two handles within which they can
> be considered similar enough to apply the redundant handle elimination
> to (basically, an error tolerance). Currently, for values greater than
> 0 this results in connectors which have a non-rectilinear segment (as a
> handle is not adjusted accordingly after the handle elimination). So
> this means that the user must currently make the lines exactly line up
> for the handle elimination to be applied.
> Anyway, I hope that this will prove useful to someone and be included in
> GEF once the remaining issues with it are resolved. Any feedback is
> greatly appreciated.
> Thanks,
> Peter Armstrong
> P.S. I will be offline (on holiday) from July 4-13, so if you have any
> questions please ask them quickly :-)
|
|
|
Goto Forum:
Current Time: Wed Jul 16 10:15:08 EDT 2025
Powered by FUDForum. Page generated in 0.09832 seconds
|