Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Remote Application Platform (RAP) » Custom widgets and Themes
Custom widgets and Themes [message #74817] Wed, 20 February 2008 00:24 Go to next message
Anand Narasimhan is currently offline Anand Narasimhan
Messages: 104
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------060200000905030703080802
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

I am trying to write a custom widget to put a logo and text in a
Composite. I created a widget ApplicationHeader that extends composite
and created two labels (one for the logo and one for the text). I
created the LCA class, themes file and javascript files as explained in
the help documentation. I have also registered extensions for resources
and themablewidget.

The custom widget shows the logo and the text. Now I am trying to set
the background image (with gradient fill) for the composite and also
custom theme keys for the font for the title text. I have a few
questions. Basically I do not understand how all these different pieces
glue together. I looked at the various widgets defined in RAP and also
some examples posted in the newgroup. I still don't understand how all
these work together.

1. The background image for my custom widget and the gradient fill does
not show. I have defined the backgroundImage and backgroundRepeat
properties in the javascript files and also provided the apply method.
I have the background image file in resources directory under the plugin
directory.

2. How can I define custom theme keys for the title label widget. I
don't want to use the generic widget.font key. I want to define
somehting like applicationheader.title.font. How can I do that.

Thanks
Anand

--
____________________________________________________________ _____________________

Anand Narasimhan
anandn@cisco.com

--------------060200000905030703080802
Content-Type: application/x-zip-compressed;
name="sample.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="sample.zip"

UEsDBBQACAAIAASrUzgAAAAAAAAAAAAAAAAeAAAAZXhhbXBsZXMucnd0LmN1 c3RvbS8uY2xh
c3NwYXRonZA9C8IwGIRnBf9DyG6qm0NrEamgQ5VSZ6nJS5sa39R8iP57q1J0 KuJ2dzwcx4Xx
7azIFYyVGiM6ZRNKALkWEsuI7vPVeEbj+WgYclVY2xSuas3g4wCduZOTRBFR azglz/Atg5/I
2vaBXGMHalMy4Eo2FlgtHFOFR161M9kmSw7LbZov1mmS/dHWCGBcG2AGLl4a EDvlS4m9w7R3
jXdd21HiCw6D75seUEsHCLv7ulGoAAAAXAEAAFBLAwQUAAgACAAEq1M4AAAA AAAAAAAAAAAA
HAAAAGV4YW1wbGVzLnJ3dC5jdXN0b20vLnByb2plY3S9ks9OAyEQxs828R2a vQv11gPdJmp6
05hUHwBhXGn4lwHaPn4BWc1mY+LBeJvvm/n4ERi2PRu9PAIG5eymuyWrbglW OKnssOleX3Y3
627bXy+YR3cAER8gCFQ+5unsXjHLDfRw5sZrCARPkYgUojOM1k4ZEc4YsLFn dKyK284LVdCJ
ektKy70HUVST9znKraxOozocCAitfABykBnsMBf8yGsA8PsKOcFxSIUdmqZT g9EZ5VdcL4E8
cqveIcS7/8XuxQcY/ifQ5oxPnnkxIbTpTzHDP+s0KPtUm4Veh34KTL7HzjJj XYhfuzDdtAtQ
SwcICBbvWO0AAACoAgAAUEsDBBQACAAIAASrUzgAAAAAAAAAAAAAAAAoAAAA ZXhhbXBsZXMu
cnd0LmN1c3RvbS9NRVRBLUlORi9NQU5JRkVTVC5NRm2OT0sDMRBH74F8h9Cz GWrxtKUHlR4E
K8WC9zFO19j8M5msrZ/exchSxePwfm94Gwx2T4X1E+ViY+jUJcyluKnhxZHe /NAJLib0gJ46
dVsLR6+2rvbahgnuTv45OmvaiI7ok6MC+YPBfBtLVWzoHfH4dMW50qSed5yV XBu2A3LM/76D
CUvxSO/VZtJN7FTMPZBxNhWCjAmqlWLdbn2Pn6cdY+ZOtYg7n2JmvUVzwH6U 33DAIxTKw9i6
HFrbaraAK5jPLqT4PYBX5vR3JcUXUEsHCE7L99rOAAAAZAEAAFBLAwQUAAgA CAAEq1M4AAAA
AAAAAAAAAAAAOwAAAGV4YW1wbGVzLnJ3dC5jdXN0b20vYmluL2V4YW1wbGVz L3J3dC9jdXN0
b20vQWN0aXZhdG9yLmNsYXNzpZJdTxNBFIbfgbZL61K0SLUiVlCgLdqVeFlj RCqmSUOICLdm
WKbL4HZ3MzsL/Cw/LjBe+AP8UcYz2/IhmnLhze45Z8487/mYn7++/wCwiqcW xhjmxAnvR76I
HXWsHTeJddh31lwtj7gOlYUMw1KoPEe4voxi4STSifzEk4GzthdrxV2909lK Awz5re7O287m
h06bodQ95Efc8XngOdtaycBrMUyuh0GseaB3uZ+ICeQZps/0m6TfHOgz5KIh stodWR8xcy9k
IPVLhvFafZchsx7uiwLGcdOGjUmGqa4MxGbS3xPqPd/zhSktdLm/y5U0/jCY 0QcyZshSeUoz
LNa6pusw9qTTU7wvjkP10XmdBPu+oCa0ONEtI1d4c+KKSEvqy8Jdauei6/MT U809G7cxkwfD
fRsF3GCw3AGGYeF6KaqPGo8Mad5GFTOk7AndFj2e+ISYr9WvHVSJLnT63BNt EbtKRhRleFX7
e0/17uWFH/a4Kxwl4jBRZFwhtArU0rKNGuoMFfnn4YYK+2dv490/hP5TmoYS cX1Ao9hOEzak
WWTxvOemwWOeChynBz+GCrLIkWel3gStgRZBdpZi9FToWyTvOf2ZiTZOMfU5 Tb1F3wL9gRlk
UEaJLHuQhOkUwcx2KaNMdoa8OylqgyLmVqGxcopK4ytmL3jFtKg5IjxAnjZq mOVB9pBprDk6
NeVUR9EZgY3Cw6v0JcpeJnptJD2PBTwaNv847YpUvmD20zktl0afpRTDyFPe 4vDGKkXMqVWa
aHzD0tVLrUvDstCgqBnWSpr15DdQSwcIi5Vzu1QCAACLBAAAUEsDBBQACAAI AASrUzgAAAAA
AAAAAAAAAAA9AAAAZXhhbXBsZXMucnd0LmN1c3RvbS9iaW4vZXhhbXBsZXMv cnd0L2N1c3Rv
bS9BcHBsaWNhdGlvbi5jbGFzc4VSXU/bMBQ9LqFhaYDCBox9sW6a1A5p1p47 Tar2IVWqGPsA
xKPrmGLmxlHiwPqvtifQJu0H7EdNu0mqUfFSRb5Hdu459/j6/vn78zeAl3ji o8awo76JcWJU
xtMLx2WeOTvmvSQxWgqnbezDY2ieiXPBjYhH/MPwTEnno87wzKYjrqTRSaZK ttEnSk6kUbz/
LnbpZN/q2DHUX+lYu9cMC+3OIYP3xkYqwAIaIXwsMawOdKz28vFQpV/E0CiG 9YGVwhyKVBf7
6aHnTnXG0BrMcdxlWJKpEk4d9BmetjuDWZ8ZcS50NFIu4291lhgx6Qa4jQ0f dxi2Z1NzzfeN
cCc2HR/0Q2xijWG5Up4yfdxl4HP8HNn061DF8rQXnevMpgG20ChK3g/xAA8Z NirNXhx9yq+z
GT625zof3PArrsvym3W7HWqHH1XMoo/zxBmCzzZPpXqvi/43Z+70ohgItEBv SmuR5qlGSK9J
8RbtOCEjXHx+ieBH+TukWC8PG1imGFYJWMEqIcljbUreI9Ea4foVDcLuL2wd X2L7CveOdr//
V1qhnCJ6xG7SVyhuVqypokf4CDulkcclr/UPUEsHCLPsOEe4AQAA+wIAAFBL AwQUAAgACAAE
q1M4AAAAAAAAAAAAAAAATQAAAGV4YW1wbGVzLnJ3dC5jdXN0b20vYmluL2V4 YW1wbGVzL3J3
dC9jdXN0b20vQXBwbGljYXRpb25BY3Rpb25CYXJBZHZpc29yLmNsYXNznVTt ThNRED23hX6u
grXiBwhFoECLrCiIWkRLE5ImxWhAiP673V7Khe0u2d0CPpZGIWriA/hQxrlb aKFELPzZnTs7
c87Mmdn7+8+PXwBmUAgjwKCLA17bNYWrO/uebtRdz67p+d1dUxrck7aVN9Rz iTv5yp50bSeM
Loas7VR1YZhy1xV6Xeq8Fa+3JzDExIH0Gm6G+VJ7rv/BPc5bpqPtfBotbtjO TllYxlbDn2MI
LUhLeosMsxPnME7xF5sFFGxrU1brjnByk+sMXQW7ImIIIq4hjAhDT0la4k29 VhbOGi+bgiFR
sg1urnNHqvOxs8vbki7DTOmSSlHJMaNZggK4bNUM8RrfEY1PVMLoucZbMm1I q2LvU6NR3MLt
MPoovBOlNdzBXWry3fviGkO6o+nkYsTRr2EA92kshiO4Rzp97KC6Kw4/CoYh Dd0Ixcga1vAA
IwwRR1Sl6yltx85yb29yQxyDn0jr70Bo3y+EMP5bK4m/KU1zRVh1mgpD5iIK FbXCLV71dy2M
yTb1z0SfCo4gy9CdXpamiOAhjYEoaUcnoKsdfcQwPlHa5ntcN7lV1Vc9R1rV 3HnP5HocjzEb
xhOSoqMqNczhKUOQVyp0B1zUGu0jkZTr6lT0RI3IVIHPFAINIVw7EWi8Q31o cKpL5WpfuH/J
pH6lVbvuGEIpxZC64LebVuowaEXLEk7B5K4r3DDyDHNX2j2G3nYXhmkJg3SH MgTUTpIVJJvu
FHpG6bRI/gC9Q5nsEWKfyQpAo2fM996knCSukdXXiMJ19AC+1YsbhNGFBEU1 sN4StopKZr4g
mT3EvW8YzGS+YvAQqRbydb+eQcQxRJmpU+jJJnoSoxjz0dMYP0bfppPKHPiJ iQ+JTGLqCNMr
2anvmAlgqsEy32Lpo8pBKHGM0HmMmNLoJyzFlmrgNNkG8BwviEWjnnJY8BV5 6SMt4pWvBcNr
ukaWQtG/UEsHCODLhBjQAgAAkgYAAFBLAwQUAAgACAAEq1M4AAAAAAAAAAAA AAAATQAAAGV4
YW1wbGVzLnJ3dC5jdXN0b20vYmluL2V4YW1wbGVzL3J3dC9jdXN0b20vQXBw bGljYXRpb25X
b3JrYmVuY2hBZHZpc29yLmNsYXNznVNdaxNBFD2TpEm6Tb9iWrW2tr4lLWbo gwhGhRIjLAQJ
pqT0SSabcTs62VlmZ1N/lj4VFPwB/ihxdrOmGkrQvty798495565d/bHz6/f ARzjoIQcAeWf
2DiUPKL60lAvjowa05MwlMJjRqjgTOmPQx54FyejiYiULqFAcKS0T7knRRhx GgvKruvpPIBg
rdd52+912qfuoPPOfUVQ7X5gE0YlC3zaN1oEfotgta2CyLDADJiMeRnLBPu/ tTWttuZUWzPk
Ogq5Z8SEExSfi0CYlwT5emNAUGirEXeQx1oFDlYI1rsi4G/i8ZDrUzaUPOmt PCYHTIskzpIF
cyEiguPufw7Dyt71NGeGz07ORDBSl7O7y3p3wazcOZgdwXvhx5rrVmMR7uZu rRK2CZ786x3+
wjrYwr1kaPcJnt1as12B481igqe3JCLY87lx7WoFk9PT3vXa3RFBrd646RE5 fRVrj78WyVYP
FmyumYDxCPbl2J+BYAdLKFpfslEOZZslyQuytmIz1Hpi/dLhFVa/pCXr1hbT 5Ao2rK1MC7CJ
akp4B7UM/MKS5axf/oat86Mr3P08R7CREmxPizKC5GsHD9K+u9jLqB5nOvLV 8jxJ7Q8V+ZmK
h2nV/i9QSwcIrESXpdYBAAD0AwAAUEsDBBQACAAIAASrUzgAAAAAAAAAAAAA AABTAAAAZXhh
bXBsZXMucnd0LmN1c3RvbS9iaW4vZXhhbXBsZXMvcnd0L2N1c3RvbS9BcHBs aWNhdGlvbldv
cmtiZW5jaFdpbmRvd0Fkdmlzb3IuY2xhc3OdV/t7E1Uafk/akjQdEIqyLngp qJCmJQMLXgva
2BaJtuWSUizi4pBM08FkJs5MKCAqou56v98v6+7qXr2iNLXyPP7q8+zfsz/v s++ZmSZpmjZA
n6edOXPO937v937f+c7pf/738y8AtuNiGCGB2/VTWqGY1x3VnnbVTMlxrYKa LBbzRkZzDcs8
bNmPH9fNzNRhw8xa08nsScOx7DBaBbZbdk7VM3mj6OhqyVC1qpXa2Exg1d6h 5ODQwWNjB1Mj
x1KDAp3DJ7STmprXzJyadm3DzPUJrBywTMfVTHdcy5f0CNoFbprnmSDPhM8z MaVrWd0es42C
wOr0WHLsUPrYcGp0yIOPQBGIk2Mi4Jg4Mall9ISWkQwTaVdzS86wYeojmqnl dJJbmdUntVLe
HdZOWyVXoGe4LkLDdHXb1PKkK1eo0rO/mKRX+GwE1OFGmk4b2ZzuOrXa7vUM aBqtDaS3mdeU
r6lcLbUqkvyAVShajuHqAhsXmDskMO+Zorq2lafNqqJt5WzdcQ7qOfJgKpf0 Ob9S3b/ARII4
FQV94it2Gabh3itwT6werrY0UnW1QVqTRq5kU4nucYHWASurR9GCGxRcj9+2 g7lXcB3WCVwj
fY2WCscplXY8r8vqsTJaflyzDTkOPra6U4YjcGfDNDQtbZmOTIWShLm6WATW ZWxdc/WkV2/3
a3ZlEzy2vD4Vg1pllrOo99AXRoxl2CT8eqsotiAuNe8R2HkVDMcblFFTK4Fr fZUq+rm66TJ7
m2JL1nF6Ss/n6S+MbQLdl71Fo1DxOxnfDoGWWPe4rKzbFazEKjlzp4K7cDdz 7+huuqhl2IgE
wrEUf7rH5YI+Bbuw218wotk5wyTLtpg/fR+SYfQL3LgsZwX3Y0CgnQjzLeaW pcMMGouEFxhS
sAcPCKzlVH2pCdwdW7Y+lqlSiZ1S8CASlUz4XSloFk4HhjEaxgi1uioPCvZh P3n72PsX9qo9
S0dfWVVX+o0amszkQQVrca0MZ0zBIZnj6ysyD2qutseyq8XV5sh0CNzcpMZk p7ScQPB9Rd2U
ahxR8AiOMo2VVMg0LkpAvSR9Hfg9HgvjGN02WapAw3GBCB2kfaIbY0ur4FOV NZhVoGNSQPFK
9JRRMM7oWfbD2BG5OVcWbb0aSRgGG2s9Zs7WilNGht3e4kaKYgqPyx2zW8Zd UGDCkn1fd1Ns
9IaWT9NBwxpeiMMalgBPKLAlPQmQnrKmR3SzxG4gp1wFpdqpAcvKB1NU4xRO k74TqJF2T3td
PpaSLeBJga1XdNy24BwQxRk8LSN7RmDL5RRhyu8Xzyq4BqvDeI5mSzWe6unM I/PU6QheYEbG
rGIXA+qSn6M4jz9K5y8KPLicc7+6F1+QFn9JHfH5vaxgDTojeJVSGjzFHDVv 5axEzpiM4nW8
GcYb7FENzwX25pOaa3G/voW3ebCSQqrA3TqoOxnbKLry3OqPLfa8sC69G5bK a4JVsvlSh8Ai
fRfvh/Gefy+7TCsFH+BDgQ6/g3iT8nhYvCEqReet6ZM5/ljBJ/iUW8kJwlm+ Wn3D7vEI/kQB
Bzxpug77+ZBwf1bwF/zVhxszXFmG1zXShLstmq0RrvdKRGJnkUkL6HY1D1Pg nwr+JVvehlIx
S40adj15hn2l4Gt8w3NNy2b9O9u2WOpKrpv+Ufidgu9xgVduyjCgy+VBrQrc 2ryePXXSXux7
DCnh5qZ3soSUGBsZaQv/dYlgPdqwgqMwRyFvHK0Zd/CXp7r3zt3qPbkrvCfP CO/J+6T3/I33
PUJb3jX5dz1HD/B7iM+OeM8sNsTFDG684C2+mX9XeRT6SGAbne5CF0fr/OUk uAnw3m7BrQQT
uA2bA9DdtJOr2i9hywRxu7+vQErmwFANVHsFqp1QvR7UViQCqM/pXJJIxi9B nZjF9hnsjF/E
zjb+lHGH/1rGPT3yrYx742UMjshY9sZ7e+bwUAgzOBCfRboa1WY6AkbJfB8p 7Oe3A7wNpul6
nP8pTjDOR9CPox7FLt95hWKSaw6TWi9FlXGH+P4wdgRkk94YWCtZzGFCYA6P snuXkam6j3pR
TzIXOc+F4psELgS/zsNNM3a5VpVwwz2XMDWxpqVrjfjvLE7MIR9CT8sciv7D 4WN1ZA4nQ6i6
Wk+5gQJhTKbc4rcio3+C4to1CVAD122IB7kMyTtSQOJrFkwrn/1MwJmJns6z s3hqBuc4Oj9B
zc91Rjqfb2mdxR9m8FLnKz/htZHeMt4ZlVNby/jIW/JZGZ9XWcUpAfAkq+ss NuApMjlLv+dY
P8+gG8/S83ncged4xj/vsYz7/is56A9y0M2C/gJfEjVBMf+Gv3tVd6gi3w6v lBgX0/+Pev1f
IeirNfq3BfAh2VwCgKMElHObZG39itYL8rmGsV/ES2X8W474e6CMb6vo64gE vMPd+S6Fe5/j
D4j8YY2nTZVM/+BZ/fh/UEsHCCmUDzohBwAApRAAAFBLAwQUAAgACAAEq1M4 AAAAAAAAAAAA
AAAAPQAAAGV4YW1wbGVzLnJ3dC5jdXN0b20vYmluL2V4YW1wbGVzL3J3dC9j dXN0b20vUGVy
c3BlY3RpdmUuY2xhc3OFUk1v2kAQfQsEE+I0iZO0aaBJoB8xUGH1TFWpqoqE 5H5IVBxyW+yV
s5Gxkb0Q8rN6quihP6A/quqsTRUk1Pbgfd6dN2/mze7PX99/AHiFjoECw7lY 8Mk0FKmT3CrH
m6UqnjifRZJOhafkXBgoMezf8Dl3Qh4FzqfxDQUMlBmacRI4wgvlNBXOTDqD tbQ+91Sc3DGU
X8tIqjcMRbs1Yii9i31RRRE7JgxUGPZcGYmPs8lYJF/4OBQMlht7PBzxROr9 6rCkrmXK0HD/
026P4dBLBFdiQGUlD11+F88U+bTdjXZ5IPJwrzXawSGODRwxnP6dZ+IhHjHs BkK99yUZfEul
GI7slns/oaFKZBT0tOBjE6eoESFdTxjJVOam7Ku88BMTZ5pXIV5fLoRfwQXD yR+vXfLazb12
51Lc6pSmiad4xnDAfX+oeOTzMI7EiKIMbXuznatBf/NQ30g5XE2o/q8BMVTF mmNrU4sYw3iW
eKIvtbf9tUvpajIaoEdA3xa9vgIhXT+t27RzCBnhVvsbql+zsElrOTusYpdW MyfgAfYISR4H
q+QF8YqEzc4SFsOHTnGJkwI6pSXqBNZ5sWS+XKJRxr3yGRUH6RqkpxWPSa0G C3XCBg1XV7zI
VVcV9d9zvMjaruESdmahlSm2fwNQSwcIiqtUaOwBAABTAwAAUEsDBBQACAAI AASrUzgAAAAA
AAAAAAAAAABKAAAAZXhhbXBsZXMucnd0LmN1c3RvbS9iaW4vZXhhbXBsZXMv cnd0L2N1c3Rv
bS9WaWV3JFZpZXdDb250ZW50UHJvdmlkZXIuY2xhc3OFUl1vEkEUPbd8LFC0 SLFWFIstWkor
q0nfanwhGkmINYGQEJ+W3RGGLLtkdgF/lj4YExP9Af4o453tplEKMZuZuXs/ zj33zPz6/f0n
gBdoGtginIlP1nTmisBUy9C050HoT82+FMua3lq+FwovfK/8hXSEMpAkFCbW wjJdyxuZl8OJ
sEMDacK5r0amsF05C4Q5+WjZwlwwgFCB2e6Gam6HcyWcFTxCOhzLoPacUO5s InLBWS+lJ8NX
hEp9c9pJn5Bs+Y7IgnArDwOZHBLYySOLAiFR1wk7HemJd/PpUKieNXQFodjx bcvtW0rq/9iZ
1LQIzY3d1qnDRPPSm83D1pjFEQ6hXe9slqUfnRedVTnXeDRzWhAO/w9HyPiu 09Y09Gw3oDju
iWUcNxwZzPyAB94eifC1K6Y8Ds99XF/D4cNNn4HqP++BL1p6owwOWe5LT2RQ Y6O39DN4Skj1
xkpwq/TMUtyGkOv6c2WLN1IrntX8mxqKVWx7nlAt1woCERg4I+xvugfC7pqb QJWfQIJXClQo
6JfALz7JK4sce7fZOscWf0CucfoV+cY33P7Cf1u4w3uac4AHKPKej+wcdlHi k3AXezFCO8ak
1cJKVNi4CsaF2rqH/ShOuI9y1Jy4STki+hCFGPY08q+Brf7Fh675VPAoLnzL DTVoKf0DB4NE
8XF3kCwedQep4pPu5xWsowhr7yr/mmIJx0yH2FuP8k94CESKEdN6BvwBUEsH CNtGewsmAgAA
PAQAAFBLAwQUAAgACAAEq1M4AAAAAAAAAAAAAAAASAAAAGV4YW1wbGVzLnJ3 dC5jdXN0b20v
YmluL2V4YW1wbGVzL3J3dC9jdXN0b20vVmlldyRWaWV3TGFiZWxQcm92aWRl ci5jbGFzc41U
WVPTUBg9ty0NLYEWVBQERUUoZYlsbkUeRHTihGWmiI9Mml7a1DRhblLgZ+mD Cz74A/xRjt8N
GShdxOnk9iY553znW25+//n5C8Ai1hXEGPL81KwfOdzXxEmgWQ0/8Oravs1P JuVimCXu7Arv
2C5zoSDBMO2JisYtxz7yuVY7NC2uHROQC19rAScZ5ruD9T2z5PArFIZkULX9 yScMo0Y3WwVC
rdmuHawzjOe6w2b2GRIbXpmnwNCvQkFvGnFkVKSQZYjnJCBj2C7fbtRLXIR2 GIYMzzKdfVPY
8j56mJC2GOa6RmuvFdnsr/Bgw3MadXePnwZUuZxRM49NzTHdirZTqnErKOgz Tc+KgbDdSiFN
hu+oGMEog0Ia5+ypDuwOZMrMK9VkHm1ohh7bLfNTBqYzDFy40+tmhZJc7Wyv uYM+ZV0R5lHV
tqiBkhaafajiESYZekkyElvp6PZarSnkFEwzjDQjG7a265jBoSfqH3QVM8gz qBTqoyc+lbhr
VeUgXBUnin7xutCHOSwomG/XvQSp0EBzlyHdYtUUvBxaoqZPdJBuRhR6scSQ 1bfeHey8fn+w
aWxubW7vFfuwgqcKVhnG/sWWlXvWUq6ok9eWiyFd9BrC4m9tOaQpOYMLUobK o7suFxuO6fvc
V7BGA9VtdBkG24YXE9TVOF09YNmsPDr0wUjQlYLsdx/tVhCjH5DOz36Fmv+O gS90F8MgrUnC
ANMYolUN92ncwE36Z7iF4UjhDaHjEp2f/Ybbn1vY+ZA9cY6I2HJ3F2Ph+yTG cY8YDPdDt22K
D1oVF/5bkYY5UjSiLLM/8PgMs3SsFs+wHMOl9kCot0QVWqYsl8IYw+ecixjZ KEYMz0PeC7wM
a0IHEQW8Av4CUEsHCECEJAqTAgAAkwUAAFBLAwQUAAgACAAEq1M4AAAAAAAA AAAAAAAANgAA
AGV4YW1wbGVzLnJ3dC5jdXN0b20vYmluL2V4YW1wbGVzL3J3dC9jdXN0b20v Vmlldy5jbGFz
c41STW8TMRB9TtIkDSkhKZS2FEopglJQLA6cipBQUEWlCFUq2ruzGYKrzTqy vQl/ixMSB34A
PwoxdgIEaBGHnU+/ec/j/frt8xcAT7FfQ0lgkz6o8SQjJ+3My7Rw3oxlomlW Q0Vgx9iRpDTT
E0ey0HKirI/dUw4ESievBDr9czVVMlP5SJ55q/PRkcBaz+TOq9wnKiuojtUl pi4zdedM3SnP
EqgGR1bgYX+Z8PydSknOe06+VYOMkpgwQfW5zrV/IVA+eJQIVHpmSA2Uca2J JtYEWn2d05ti
PCAbgUGnSVWWKKtDvihW/HvtBLb7l62BqdqpJeUpXJlv5a3JBB4c/KbUMWim hyPyTvbMeGKc
9nQUhFV5ZZTzrvb/AyBQd+SPDfMLNM5MYVM61kHnatDSDYsWaJ7kOdleppwj V8MdgSeXqb8f
TBDNEk6tmeph2PL6BdUa9gQO/zmnrwaU/ZrS/quGPfB78M9VwhZWUOWsFrM6 fw1c4bjMNX4f
tlc5k+wF+5XDT2h9jEfbbKux2EKHbXN+AOu4zl7gBjYW4GfxPNf+BL6MwI15 cwEM0U1sRr6t
n/yPY/2CEa+XuH+MKGE72lvYYd/h6Db3djm+y/4e8B1QSwcI/w3Bbc8BAABa AwAAUEsDBBQA
CAAIAASrUzgAAAAAAAAAAAAAAAByAAAAZXhhbXBsZXMucnd0LmN1c3RvbS9i aW4vZXhhbXBs
ZXMvcnd0L2N1c3RvbS9pbnRlcm5hbC93aWRnZXRzL2FwcGxpY2F0aW9uaGVh ZGVya2l0L0Fw
cGxpY2F0aW9uSGVhZGVyLmFwcGVhcmFuY2VzLmpzrVFNa8MwDL0X+h+MTxs0 8T1jh3ULpdCW
MfoHtETxzFI7yDJdGf3vs+t9pYPtsncwsvz8pCfBMCAQ2Aa9uBav04mIUErM 68VyI7b1+n51
s61jJr/kU8Iw9KYBNs4WTwgtkqw+Pid4PvRYiS7YJnEuPAOjv/zGSCDkQFac ZRMeoXnW5IJt
lzvQUUkSehcodqloz6oJnt1O7U2rkb3KLcz1gqA1aLnUppOz32QfMNrmk24K ioMcs49f1/fw
OPtjAgUb7vF/58D4cut6R9WoYK5XnuqVnSPMns4tXP30MJ18Lrje3I3Xm/hv UEsHCLMyh7Ln
AAAADgIAAFBLAwQUAAgACAAEq1M4AAAAAAAAAAAAAAAAbQAAAGV4YW1wbGVz LnJ3dC5jdXN0
b20vYmluL2V4YW1wbGVzL3J3dC9jdXN0b20vaW50ZXJuYWwvd2lkZ2V0cy9h cHBsaWNhdGlv
bmhlYWRlcmtpdC9BcHBsaWNhdGlvbkhlYWRlci50aGVtZS54bWxNjssKwjAQ RfdC/2HM2vSF
YoVWd64FC67TdloDaRImqfj5xhYfswgDk3PuLU/PUcEDyUmjK5bFKQPUremk HiomneFFsTvw
jJ2O0SpalWvOob7jiKJRCJaMRfISHfSG4Hqr4UJmIHSuEQScL5B/A2GFMGVr VPiqxYgVE9Yq
2Qofsu8oOqTYS68wDjIcyEy6YwsFHbqWpPVzy/P3DIvtHT6TIDWENPgTw2L+ iXoxKV+x7X4D
WZqHJz+wJLQrk0/PF1BLBwgCcAIlvwAAABUBAABQSwMEFAAIAAgABKtTOAAA AAAAAAAAAAAA
AGwAAABleGFtcGxlcy5yd3QuY3VzdG9tL2Jpbi9leGFtcGxlcy9yd3QvY3Vz dG9tL2ludGVy
bmFsL3dpZGdldHMvYXBwbGljYXRpb25oZWFkZXJraXQvQXBwbGljYXRpb25I ZWFkZXJMQ0Eu
Y2xhc3OtU1tT00AYPQu9QA13CuK13LQUaOTmrejYARlxCjJTLc9LWMtqmnSS lIL/yhdkfHB8
9kc5fpuEwtTW8mAesrvffnvO+c5+++v39x8AlpCLo4thV5zwStUUru7UPd2o uZ5d0aXlCcfi
pl6Xh2XhuTqvVk1pcE/a1pHgh8L5LD09fxl84wcLG/k4IgzztlPWhWHKqit8 WFN+FMapYQo9
f+B6Dje8fR+YDjDE1qUlvZcM3em5EkNkwz4UCXSjV0MUMYaBgrTEbq1yIJz3 /MAUDMMF2+Bm
iTtSrcNgxDuSLsNe4f8WlGPorzrCFc6xKHGzJohjOl24WqFLPBe4QV25uVIc QwyLrbRcpP7F
lsAIknGMMqTbG7hhW55jm6TsgydNDf0YY5hpLyjMzylrY0GQIdVJP8MQb5bH oLf0tm09hNLj
0GyTe5yhzxEWBTeOuFVWJiZenxiiqrLdOO4zjHzix1yXtr79rrGjHJnUMKVq 1OqO9ETjeAi3
Kd2q7VK/zOJhHA8Yptpb97a4ryAcDWnMESCpDgJbNhW31flSC52xc0rJvIYF 1bnxw0Cdct7f
pZu6DgbDaFDdNj0MyU35xXe1B0tXWipLh7PBFWRDodkWLTWLFQ2rWGPotUR9 P2yAZLrg222S
m3rRc6RVpg5Rdj/R8FTZPeArLnqnptgyeVldWNGuOYbYkuq1TbR6K1mFiUnQ U4b6YjSL+v84
rXQaGY3RzDf0fKVJFxJhEjCAG/TXggQa+2ikl0fx4PBeCJqY/4nBnYVzDF8i 9Ps743TuJnox
4SOlguwQSc3GaVfJiVLGLTrJcLuBvuZjEWOzrJQPNhZsNsBYCMZwhyC6cJdi EVrday011Sw1
TSLmSGrm2lKn/8lzjpmdhTNkmnmWCWGFeFY78iwi6/PoLXgqFInQmLyoZ2Z3 cfjRGZZp+viS
coxggHX6v6D1SwziFUaR96kzAUCDOtmgHgxLTFCeEtFN0Wc+5vM/UEsHCGw+ oQXgAgAAqQYA
AFBLAwQUAAgACAAEq1M4AAAAAAAAAAAAAAAAcQAAAGV4YW1wbGVzLnJ3dC5j dXN0b20vYmlu
L2V4YW1wbGVzL3J3dC9jdXN0b20vaW50ZXJuYWwvd2lkZ2V0cy9hcHBsaWNh dGlvbmhlYWRl
cmtpdC9BcHBsaWNhdGlvbkhlYWRlclJlc291cmNlLmNsYXNztZPfbxJBEMe/ C5QrFNuKrRZ/
1GqrAhauPJi00jQxpEYaLEnRPvi20A0sHndk97D1f/JBfdDEB/8A/yjj3HEF vGLSaHy4mdu5
/czMd2fvx89v3wGUYBqIMDTEGe/1LaFNdeqarYF2nZ4pbVcom1vmqTxpC1eb vN+3ZIu70rE7
gp8I9Va65rNx8IUfPBLaGaiWMBBjWOzyd9y0uN02682uaLkG4gzrjmqbomXJ vhZ+RRUw2qye
4wzxXWlLd48hms0dM8QqzolIIoq5FAzMMizUpC0OB72mUK940yIiXXNa3Drm SnrrIBhzO1Iz
vK79B41lhiRhlQ5XWrgMS9lcbay44Sppt8uzuEbbqo16YXv7yU6hxJAgpuZ4 iRgyvyEVi2s9
/FRO4gYyBlZIaWhDCjexzDDvlR4DDHN+3mGjs7jDsDVN87nUC6qKXT3UU+97 QVrsUXOXmNVL
bvO2UBtHoi01HWjAlxO4h3UD9xme/n2WFDbwgME43j9qVOuHDLv/0hIJlHr/ bDh1/2q9oXOT
+qBRk03F1Xva0PAzPJfe7Vn94+yL3lAYUlXbFsofg9AGCgz5y7dHow01SCdG XdEzQ7+nQZ6u
OtkErUzyjPxM/iuSn+glghTZuB9M4ArZ1HAD5rFAnn4/XA3gQgBH0+mPIXRx Ao2O0CUsB+hW
gMbT7Auuh+mVCTo+om+NCpdGhW+P0SR5kNQI1qYWX8XdAC8GeOwz1sKlcxNs bMQ+xKOA3QzY
SPRDiCxNkJERmb1IxsLkzhQyQp14No/HvjZGyjap88wvUEsHCDwWH4dPAgAA ZgUAAFBLAwQU
AAgACAAEq1M4AAAAAAAAAAAAAAAASwAAAGV4YW1wbGVzLnJ3dC5jdXN0b20v YmluL2V4YW1w
bGVzL3J3dC9jdXN0b20vd2lkZ2V0cy9BcHBsaWNhdGlvbkhlYWRlci5jbGFz c5VV3VMbVRT/
bTYQCNsAkaLW0hJpbQjQ9aP1C6RUsCWYUjA0CH60m+SaLN1kM7sbPupDdawf 49foqDO++OJL
H9UZAzMy45Pjg+Ojf4H/gD7qi+M5dwNhhFJ8yL17z/mdc37n49788s8PPwJ4 BFYIAQVDYtUo
VSzh6s6Kp+eqrmeX9BUzXxCeq5+vVCwzZ3imXZ4URl44IQQVxGynoIucZVZc obtktQUft0sV
2zU9oaCzKPHjdtkTZW/GKJOsL3VXw2EFrZZdsFNGVlgKjt/RQgIIfcitZudM zxJ1i7C349A8
YpZNb1TBqfgBQif7MwqC43ZehKGiXUMbtDAoFQ1R3KNAyznC8IRfCAVqnPHt KbMspqulrHDm
jKxFWUZTds6wMoZj8rkuDHpF01Wgp/5XtSm/5orhUAEVNLneGntSkgq6CD65 u74n4/0HSLOV
UjqmoQnNClpc4SVLRoGbs7tEBceoFM2cq0vIcH+GTR/UEEJLGCfwUAgnFfTs 2yENx9HL4LiG
fiSoPxQxY7qmX5X4Yn+GSzyoYYhL3GwZa3bVY5Gu4WEpckTeMVaoAKZPtPdu PP205FAoOBxP
LRnLhm4Z5YKe9hyzXKgn8riGsJ/IkxqewhkFITYTq1xsz7eO7jYO4Zk9boDP W7/omPlUPYUR
nOMRGiNv8eQixxzBsxrGcURBW8lwCmZ53sx7RZY/p+ECyzVfPinMQtFjxaSG JCval4Xj0WxY
6YqRIxqse15DinWdRdsxb9AgbGu5ftMaLmOGrhMl5VPas8eNbjGESqMq9Dhw VdpDmKMbuE+m
E4ZnhJFGhvOcp1DxZHJxMZnkXNNY0LDI9Doa9JLlPA0rK1/W8AorI1t5+SqO e1XDNRh8s7eI
c5z/dPJydknkJF28wXRVXOVlmo5j2Oul2dUgGpOmQl56ju2H5uCEjciJ2PHA hdN21cmJCybP
Sfeuq3uauSJGXFSqZxABvnD0FeDbI/fW+h6WexMh6b2h9RCdZsmK7doSA0c3 EElsoOM7Ce6i
NSJVo+TuHBmP4TCden04unEvIL/uI70iv+7HEbJU8ACO1t3rtLOuKfE9er7d duwbJKVDzQfU
HSp8jevGgtAB2mNkHBtYR5/cf0YoeBtBdR2nEusYoN/pBuNucgTqegvmiNcV 4pEhd/MyULfv
bJt5jP6ZHpX8HsOZPUKepZBPyP0AIa9RSINCZilkjkLm7xDyaQxTqAC/835I pUaWQdL9vYmR
hWZ1A6OpAbWG87xM8HKRl6kEsbmU2MSJhUR0dgMv1PyyMKdNpBc6xxCdVdVg cANXLg12RGp4
cbClhpcYM7iOVzehkmGWWjzdgAe34F0EHyJYjjmw0OcwsU3E5zBEHPKSw1BU SA5n2VkoOhus
u+JycTjeZbkacWvokeDQDmwPx2yU8gaO0XqdZs1CO0okK9NM2SStoA8u9cuj 97OKKSxjBivU
31W63K+jiJtYo+t5E2/iFt7Cx7R+hrfxJd7BV3gXX+M93Mb7qOED/IQP8Ss+ wm/4BL8T6k98
jr/whWxXwm9EvV1h/EH/Fa9Rm6bwDQoUJUC/T2HS+KokXZK8r/8LUEsHCHh0 3HSdBAAA5ggA
AFBLAwQUAAgACAAEq1M4AAAAAAAAAAAAAAAASAAAAGV4YW1wbGVzLnJ3dC5j dXN0b20vYmlu
L2V4YW1wbGVzL3J3dC9jdXN0b20vd2lkZ2V0cy9BcHBsaWNhdGlvbkhlYWRl ci5qc+1VTW/b
MAy9B8h/EHxyUle9Zxi2NjuswIIW6+4FYzO2UFly9eEkKPLfJ8t2/ZEsze7V IbHIx0dKfKZf
d3TJQWua4IYJDAPcQV5w1FRtDY2tNjKnW5akaDS9LQrOYjBMip8ICaogIm/T CXELdwZFsiCv
O2oZ5bCX1tAliBL0L7+Jalz9WyhZoDIM9aIlqNbNfN5tyJysoCiYSImRRLis JRJt9hzb8D1Z
Q/ySKmlFcq2wQDC0H3/TbTrgb48bpK1WnGH8siDBk1EuYxANvcJyDmuOC2KU xZHTFcn3LvTZ
P9yNMo2pTIY5dlyd89ADfl5JfSX142GgnVgK7WCxK3hjRVyJMZz1SjcZ03QN GkNQqc1RGD37
MnJrNE7LCApE7DQPna6vs1rYbcgwd475GtV50f55+PGw7FsG3u9mX2DDM3QU rpqclMAtkrcS
1IEsrVKu/Np2Cix50kAfFZZMWn0Kq9BYJRrgUXU9RYy7dZ9Dir1b9txRlXU2 koqjJqxCr1JF
vlZDgEnqDXQFwv0p6gbIvWucv/B+P9pw4Ax0P/y2MpwNG+7YhoRVaWMZe19T G81Ygh41ojp8
xOzPfp5bZ3Lb4P6HvT04dcIWGJvQK/TZv9ajXkRevRE5SnJ6dpzkGPfzuJWV AL+9vydPFcdj
M13CYD1kcx+AwCoeBuSqibwiwSyYkUVNoDCXJX7A8a+TnJ4eFwrywlO0E6m5 0wvrbqIGhTfz
Yjo5VObp5C9QSwcICUMqhSkCAABaBwAAUEsDBBQACAAIAASrUzgAAAAAAAAA AAAAAABCAAAA
ZXhhbXBsZXMucnd0LmN1c3RvbS9iaW4vcmVzb3VyY2VzL3J3dC93aWRnZXRz L2hlYWRlckJn
R3JhZGllbnQuZ2lmAfAFD/pHSUY4OWEACAEA9wAAAAAA/////f3++/v8+/z9 +fr7+Pn69vf4
8vX28PP07/P07fHy6u/w6O3u5evs4+nq1+Dh3eXm2+Pkz9vc0dzd1d/g1N7f 093ercHCsMPE
scTFt8nKtcfIs8XGxdPUW4OEXoWGYIeIY4mKZYuMbZGSeJmae5ucgqGiiaan j6uskq2un7e4
orm6obi5ori5qr/ANGdoOGlqOWprO2xtO2tsPW1uQG9wQnFyRXN0S3d4TXl6 T3t8Un1+M2Zm
NGdnNWhoN2ppNmhnNmhoOGppOGlpOmxrOmtrPG1tPm5uP29vQXBwQnFxRHNz RHJyRnV1R3Z2
SHZ1Snh3S3l5SXZ2THp5Snd3THl5TXp6T3t7UX19UHx8Un59UHt7Un19U35+ VYCAV4KBVX9/
V4GBWYODWIKCWoODW4SEXYaGXYWFX4eHY4qKYomJZYyMZIuLZo2Nao+PaY6O bJGRa5CQb5OT
bpGRcZSUdJeXc5aWc5WVd5mZe52deJmZeZqafZ2dgKCgfp6efp2dgqGhgJ+f hqWlhKOjg6Ki
h6ami6ioiKWljKmpkaysjqmplbCwlK+vk66ukq2tlrCwnba2nLW1m7S0mrOz mbKynre3pby8
o7q6pbu7qb+/qL6+r8PDrsLCtcjItMfHs8bGsMPDtsjIucvLvc7Ou8zMv8/P vc3NxdTUw9LS
wtHRwdDQyNbWx9XVxdPTz9zczdray9jYytfXz9vbzdnZ1eDg097e0t3d2OLi 3ebm3OXl2+Tk
2uPj2OHh3+jo4enp3+fn5u3t5ezs5Ovr4+rq4ejo7fLy7PHx6u/v6e7u7/Pz 9fj48/b28vX1
8fT09ff3/f7+/P39+vv7+Pn5XIaFYIiHYYmIaI6NapCPdZiXepybfZ6dgKCf haSjiqinka6t
kKyrj6uqoLi3pr28rcLBrMHAq8C/uszLwNDPw9LRzdrZy9jX0t7d1+Lh2uTj 4urp4Ojn5+7t
6/Hw7/Tz6/Dv8PTz9/r5+vz79/n4/f79/v7+////AAAAAAAAAAAAAAAAIfkE AQAA+wAsAAAA
AAAIAQAACP8AA+gbqA8aQWgCEArIJ4AAgWgOCQwYcG/ivXvSCmjUaMAARwPT DNibRhIfvgPL
UKJc9qwls5cvEchsRpOms5sJnNVLoGCesp/GggZdYOyY0WPyktJjwABZ02RQ oTZoEC+YVavC
sjoQ5mCY12HEiD1496tsMV9n4cHzBawtsFxwI+SKoEvXrru7JLjjxQuXX7+9 2kEYXKtwrQoV
LCi2YOsCu1sXblGg8IryhFmYYWmGpY4WrVigY62TRVoWq9OnW6luhao1Kg+u XKWanU6VbVWr
cq9CZ6q3KVKkTgkXXqp4qXOjko/awJy5KFGeoHP4RB0UqA7XNWjPwD1UKE6c OnX/woCBXLnz
5cy9eKGp/ab3m8bJv0Q/06VMmPKz2N/CRYsW4oizwoCWRGJgJJIkKMkklDBI CSWVRFgJJBRW
CAkjjDSioSOOqKDCN48oogg4iqRgYjjhLLJIIiyyeMgh3sCIwowoIGKIIYPk OEg33RDiYyFA
nnBCIIH4YSQ3fggiyB9MArJNH33oIaUJJmijDR9Y8lHClnvk4WU2YNoh5h1k 3oHHHXXgUcea
a87h5hwkkEAHCXHUGYcccmDzxp5wvAHHn9e4IagbbBTKxghttKHGomqIIMIa kFojaTUhpGFp
GiCAcMam1KCBhhmgflBGGWOQSsYYYJABhhisfuHqF2HEzRqGF7N64QUPPGzR RRa8aqEFFztg
ESwWxF5hrA5UWKGsFVJIkUMUUVQhrbRTPDEFFE84oa22OHTrLQ5MhMtEE+Q2 scQNS6S7hBLs
KmHDuzYkIe+8SNRbw733HnHEDPzyWwQNABchgxFGyGCwwTHEMAQQRMRABBFA RCzExBT/8EMQ
P/gAAww+dNyDDz2ELPLIJJds8skop6zyyiy37PLLMMcs88w012zzzTjnrPPO PPfs889ABy30
0EQXbfTRSCet9NJMN+3001BHLfXOAQEAO1BLBwgtezo29QUAAPAFAABQSwME FAAIAAgABKtT
OAAAAAAAAAAAAAAAADYAAABleGFtcGxlcy5yd3QuY3VzdG9tL2Jpbi9yZXNv dXJjZXMvcnd0
L3dpZGdldHMvbG9nby5naWYBdwiI90dJRjg5YSQALwD3AAD///XVq2vL1dXV 3M/n17X5+frz
7NTVnEnpx4mBlrySqcSKocWqu9b+/v7e5fHBzOSFm8Lz8+3DxLrQ2ulaeanZ 4d7Z4e27x9nj
2sby9fmLo8mxvdKtvtiptLTZ3u66vdD48dfvxn7i6PPa2dbozZjM1+be4uHp 1Kj19/pkga7E
yMvl4ueVq8ns8PZ9mcPGvLDSy9a7yeLN1en///LT2ubmuHXM2u3a1t5zjLN7 lL2itNTx49jC
k1Wqtcz///vH0OaZsNL2+Pu6yMfg3OPf39uywt3Gz9/4+vyiss3X3eyYqLrg 5/H+9Mnl6vKy
wc/S19ZyjK/V3evl6vTz8fTi49KescDz2Zlzjr3x27rX39y6taX29ff0y5iu vs6nwN/c4+3O
sYHm7PTo5erzsWPg3NPb1Lzo5dP8/P3e2uHv8vjN1ePjrGmJoL22wt6rxOO8 wdS0xN+yvtra
4vDk6O3V3dvDzN6crtGwwNvJ0ufS3O7k6eTFxdXw8/jV2+21xdK6x+DX0dvt 6u+4xN+IncOm
uNPJ0uLHvKi8ytXo7PNsh6////i7wbnq7vbv7eqxvLfw7vHBy96Qpsju8eq8 yd7d4ujU3/Cs
uM/u6+/q7eX8+e23x9SpucXy8Ot4kbnt6tTL1tv19+3r7vTp7Pbo7PTf5O7T 3Ono7vXc4NDO
2Oh8lbbBytywwNfc4vHQ2OrX2NZNbqFGaZ2rvM2rt8/X4O3r6Oz49/nz8vX7 +/vn7fXb5vWo
t9e2yOHet4DW29/T2uvkv5PgzKbGyK7ez7Hq38ftsWX5rGL8+vb9/f305MOj rsvM1OLM0+ie
stD999z9+Ofo6/Xr7/Wvs6SLn66csKyesrPn5N7Zo1Ho49jnqV7Z3+rMxdGF oMp4kqrCztvG
y9v55Jnc5PDn5uKzw9LwuXnQ2s6yw9zr79u0w9q4xdrOtpDE0NJ+mL/y8POo ucj6/P7a4sv2
+fCoutmBl8Cqt9jZ18/Jupq80Ojs6uuvp5Xq7fTq7fZ2j7DwwYzR2tv5+vz/ //8h+QQAAAAA
ACwAAAAAJAAvAAAI/wD/CRzoQxGAgwgTJlTkw8fAhxAHKgL1SRyLixhZKNCo oKOCSH70AHAY
EeKMQy7iTTB1q+UtY8YyZXLWrBkTJmWCSWMBimTJfwBiaTDlLgO0OUj1hKt2 zcywYVgIWJn6
LRiEGT4h+qCjAUQQcya+fKFEyYQJImTIYMBA4MQJEiRChIjmRNHPGdscwAMl 6UspNTTIliWC
di2BtnDldtKTVaAPPUCOzIkgqRu6VQwulKLRq5crevTKlBEGjAQCBDV4sAEQ 0ccnOHzeRSkk
RMMCP+tYEOrRRYUQCS8M1UsHJkAAawdWt9YERwSqCeiYKZgx8VAkJYZeaN/O XXs6EHYf+v/Q
VG5JCVSrFvQj6QMAiBFy4oNz4GDJEhEimkj5tQbLDPHkiVBCCRwsUIFPDbwn Bzjz1YefCFJI
EUY446yBTHj/+OBHOU1MUEJ6Bz5kwAjgfDHLLBZYINYXDogQBi5ccLGGAext iEspE5xjYFYj
OmCEJbIEKSQ6NDQRCj8hEMNLJo5tyMgsUfyhQYgD9XgffhG+aAoj0EAzzhhj YEOAXRoWwYgF
s0wyJY+uLFHIBnDGuYEq2YzSRDFj1BAAGP/5IM4dYaCoJpUCeeKKCA4kcWKK Yi2BSAs7YEGJ
Ch3g0+efUkSR5poPGSpCFHXUYcSoo9KwRAt8ZJCBGNpocSkHIkz/EAU6Oz5k hitSlKKKKpBA
EmodapDSgqoooLCCqxk6wcESzxUxCKH/mPFEGE3c10QTYYySRqoZFBtEEBm8 0Key5qESxyBZ
ZCUtLoUECaQsqiBCLApBFOBPARKMC6sMJcQBQboPUfEEly0UvK2q3X57hD8M 55ssB1K0Yu6/
WQkMjcF8cOttEAsz7I/DPigrhS+ttEFxwE9gjLC39nrM8CJ9dsHBM334Igi6 WZ2SsjKyWOLz
zxdkk0bHL8fMgT5JJHEzwAPpzEcLiCCSTygXF5xBEC7740jMDIjigQcmMy3Q KQJkQEohhSij
tjJqZJMPCllvnWEXDEiRBNgnDzRA2V+Q/+o3DXNkQLTWXIvQSh9xyCP2P3tv PHjWHncQMyEO
LNPKPDnQkVXjalgCZw9IqJIG5AxLnmEshMjxwzI6dKL5Q+QIEESxtBfbMuTU 9BmLDpU88IMO
V7yeoSKxP066y7mfrkMeMTygSw7T+TCDE5twI00V2GevPfabCOC9ANP0KQAQ eQgSwx92LKBA
O6nogMr7qAwo/4BqqHFBArDMoP8MAISHSSK5KAIc/gCHSkyCAQ44QhpEwUAR sEIOaFpUEiDQ
ifyVBAAK2EUM7jDAGKBCDg5gxeG+ljRfkCx+MuBAAiigjsY4BhMp2EU87lAE 8z3gAXiwnC++
5oE+1ExiDEhACv+U8xMfmCAFGtBBPDhwhzYI4g/N810O8fADSMQhEhBIRCIi 0IAuerGLBMFE
KlKwjkjY4YwLgMAg1shGCCQgATh4BRQ4sYU62rEWBTiDeACABAr48RWJ2Icg BQmFQhZSCVUY
ASgecYlHONIWW8hjRAoAvEjk4BVO4IQmOdGITnqyEfeghRjEQAtaPIIdW/BH AyKCBw3k4AqW
fEUKcOCNIdjylrhcwQpI+QhbFOAYJcmAG4CggW2wYBA46IQLgACIZt4AEDeI pi13eYkp1EKP
JSlAHbbhBnvYoBI22IUXXEABGJizmdBEwxDEEIgpFGCVPznGCpLhAg2wgBkM YMYCOpFUgld8
wJwwgOY6H7EFbP5EIGcYwgcgYE98ImGfKUiENgKKhhVcYgu3gOdBH7KFFdxg Dx+Iwxs+0IMP
7OEGQ7iEL4G50YM24BYFiKlMC3ALlrb0oAEBADtQSwcI2htElHwIAAB3CAAA UEsDBBQACAAI
AASrUzgAAAAAAAAAAAAAAAAkAAAAZXhhbXBsZXMucnd0LmN1c3RvbS9idWls ZC5wcm9wZXJ0
aWVzK84vLUpO1dNTsFUoLkrW5+XKLy0pKC0BCyRl5gEFgKReZl5yTmlKajFQ sCCnNB0oUpGb
oxPDy6WACnxdQxx1Pf3c9LHI6fFyAQBQSwcInY8uNEoAAABtAAAAUEsDBBQA CAAIAASrUzgA
AAAAAAAAAAAAAAAuAAAAZXhhbXBsZXMucnd0LmN1c3RvbS9leGFtcGxlcy5y d3QuY3VzdG9t
LmxhdW5jaJ1XXY/aOBR976+Ioj52zFTdh6oqbaPCdCvNAGKYeVmtkBNfghnH Tv0RQFX/+14H
JmSnAUyfGDznXN/P48vHz5tCRBVow5Xsx2/JdRyBzBTjMu/HD7Obq/dxZCyV jAoloR9LFX/+
9OqjoE5my69KLnjuNLXIjuy2RIDSOYFM8NIA0bQkjpMdmEyTyW39F+gYTaRK CaAysVbz1FmI
nmDbj2lZgmSE6tzEUUWFQ5NWO4h7xynOqgJdyBLGGs6CChNEeqSCM2qhg2mQ IfMXRDRn8R+0
bAjHsRhq9gQHp/4ZjUfDf094leGZ3mU11J+sRt+qrC5Cw3r9c630kylpBnOh sl89UoClGCjt
kVK4nEvTa5eqZEAypaEHG1qUAgzRa0syZzBNJxxmsKBO2LlP5xz7RNvfq8al PcKqCXMBFYiG
9teJ27jMhGMwLn2oVAQXux0og9Tldahk12tDWXGtZAHSPlLNaYrB/x5EZ+7b dlfM7hsdcWQy
HX+bJnfzZPrt4W44mt03Fq+UiV7/xMBzsESZX9HVunWw9gdUZ8vDkf+Gh1Ic jqTAAyy8wWD/
xLv78cP063A+SWZ/z9HTx++D4bRx8GVX4AD7VkrBD7ygBnvKLidaVZzhIP/B 7Y+daRk8g3ku
sThJWfZ98qOrgTI5J1LdL51lai374TXx+rMXn1SrtQF9p9hh0r+PZsPpKLm9 2Bi2it5OFDZ2
Y6visL7YjuCppnpbt13L1v0sGQ2S6eByeyq//d8wjW9ujozgEQulak3w2+vr 99cXO4FZrgTY
ES0OmfZyGTaeLUMWdMElSvNEQ8WVC34QjthzBu6odFRM2kGekVc/AfvnsaG8 I++OE3YjOk+d
ZG0hWdGKbp5z82UvgB/2n2+8xxS1eulFuChwsn0tUaTzTuhzcLWKeQK+zyYE KS22rn+nz4Nh
U2owPu4AyyuVBqC0k5YXp++GH45LtfHaHITbpSsIurS2JCvA+MPhGnKOZb6A carELwmY4QVo
FFY4nb1nfJA3Xi7PAmo3+bl7/fDUlfN7Q8olO9eQXQSS4oSev4dBoYJAFzmz WuACFIa6yC4u
R2cxRjkdcLk7Xa39Dr1QujifRAT6hygI2DzqneACNTKl2+55OaG9uBlnmMDg 1QxFebAzult7
Ew00cPs6LLgvxbZjh+0ModfxM+bTq/8AUEsHCBzjKJ9xAwAAFA0AAFBLAwQU AAgACAAEq1M4
AAAAAAAAAAAAAAAAIgAAAGV4YW1wbGVzLnJ3dC5jdXN0b20vaWNvbnMvbG9n by5naWYBdwiI
90dJRjg5YSQALwD3AAD///XVq2vL1dXV3M/n17X5+frz7NTVnEnpx4mBlryS qcSKocWqu9b+
/v7e5fHBzOSFm8Lz8+3DxLrQ2ulaeanZ4d7Z4e27x9nj2sby9fmLo8mxvdKt vtiptLTZ3u66
vdD48dfvxn7i6PPa2dbozZjM1+be4uHp1Kj19/pkga7EyMvl4ueVq8ns8PZ9 mcPGvLDSy9a7
yeLN1en///LT2ubmuHXM2u3a1t5zjLN7lL2itNTx49jCk1Wqtcz///vH0OaZ sNL2+Pu6yMfg
3OPf39uywt3Gz9/4+vyiss3X3eyYqLrg5/H+9Mnl6vKywc/S19ZyjK/V3evl 6vTz8fTi49Ke
scDz2Zlzjr3x27rX39y6taX29ff0y5iuvs6nwN/c4+3OsYHm7PTo5erzsWPg 3NPb1Lzo5dP8
/P3e2uHv8vjN1ePjrGmJoL22wt6rxOO8wdS0xN+yvtra4vDk6O3V3dvDzN6c rtGwwNvJ0ufS
3O7k6eTFxdXw8/jV2+21xdK6x+DX0dvt6u+4xN+IncOmuNPJ0uLHvKi8ytXo 7PNsh6////i7
wbnq7vbv7eqxvLfw7vHBy96Qpsju8eq8yd7d4ujU3/CsuM/u6+/q7eX8+e23 x9SpucXy8Ot4
kbnt6tTL1tv19+3r7vTp7Pbo7PTf5O7T3Ono7vXc4NDO2Oh8lbbBytywwNfc 4vHQ2OrX2NZN
bqFGaZ2rvM2rt8/X4O3r6Oz49/nz8vX7+/vn7fXb5vWot9e2yOHet4DW29/T 2uvkv5PgzKbG
yK7ez7Hq38ftsWX5rGL8+vb9/f305MOjrsvM1OLM0+iestD999z9+Ofo6/Xr 7/Wvs6SLn66c
sKyesrPn5N7Zo1Ho49jnqV7Z3+rMxdGFoMp4kqrCztvGy9v55Jnc5PDn5uKz w9LwuXnQ2s6y
w9zr79u0w9q4xdrOtpDE0NJ+mL/y8POoucj6/P7a4sv2+fCoutmBl8Cqt9jZ 18/Jupq80Ojs
6uuvp5Xq7fTq7fZ2j7DwwYzR2tv5+vz///8h+QQAAAAAACwAAAAAJAAvAAAI /wD/CRzoQxGA
gwgTJlTkw8fAhxAHKgL1SRyLixhZKNCooKOCSH70AHAYEeKMQy7iTTB1q+Ut Y8YyZXLWrBkT
JmWCSWMBimTJfwBiaTDlLgO0OUj1hKt2zcywYVgIWJn6LRiEGT4h+qCjAUQQ cya+fKFEyYQJ
ImTIYMBA4MQJEiRChIjmRNHPGdscwAMl6UspNTTIliWCdi2BtnDldtKTVaAP PUCOzIkgqRu6
VQwulKLRq5crevTKlBEGjAQCBDV4sAEQ0ccnOHzeRSkkRMMCP+tYEOrRRYUQ CS8M1UsHJkAA
awdWt9YERwSqCeiYKZgx8VAkJYZeaN/OXXs6EHYf+v/QVG5JCVSrFvQj6QMA iBFy4oNz4GDJ
EhEimkj5tQbLDPHkiVBCCRwsUIFPDbwnBzjz1YefCFJIEUY446yBTHj/+OBH OU1MUEJ6Bz5k
wAjgfDHLLBZYINYXDogQBi5ccLGGAextiEspE5xjYFYjOmCEJbIEKSQ6NDQR Cj8hEMNLJo5t
yMgsUfyhQYgD9XgffhG+aAoj0EAzzhhjYEOAXRoWwYgFs0wyJY+uLFHIBnDG uYEq2YzSRDFj
1BAAGP/5IM4dYaCoJpUCeeKKCA4kcWKKYi2BSAs7YEGJCh3g0+efUkSR5poP GSpCFHXUYcSo
o9KwRAt8ZJCBGNpocSkHIkz/EAU6Oz5khitSlKKKKpBAEmodapDSgqoooLCC qxk6wcESzxUx
CKH/mPFEGE3c10QTYYySRqoZFBtEEBm80Key5qESxyBZZCUtLoUECaQsqiBC LApBFOBPARKM
C6sMJcQBQboPUfEEly0UvK2q3X57hD8M55ssB1K0Yu6/WQkMjcF8cOttEAsz 7I/DPigrhS+t
tEFxwE9gjLC39nrM8CJ9dsHBM334Igi6WZ2SsjKyWOLzzxdkk0bHL8fMgT5J JHEzwAPpzEcL
iCCSTygXF5xBEC7740jMDIjigQcmMy3QKQJkQEohhSijtjJqZJMPCllvnWEX DEiRBNgnDzRA
2V+Q/+o3DXNkQLTWXIvQSh9xyCP2P3tvPHjWHncQMyEOLNPKPDnQkVXjalgC Zw9IqJIG5AxL
nmEshMjxwzI6dKL5Q+QIEESxtBfbMuTU9BmLDpU88IMOV7yeoSKxP066y7mf rkMeMTygSw7T
+TCDE5twI00V2GevPfabCOC9ANP0KQAQeQgSwx92LKBAO6nogMr7qAwo/4Bq qHFBArDMoP8M
AISHSSK5KAIc/gCHSkyCAQ44QhpEwUARsEIOaFpUEiDQifyVBAAK2EUM7jDA GKBCDg5gxeG+
ljRfkCx+MuBAAiigjsY4BhMp2EU87lAE8z3gAXiwnC++5oE+1ExiDEhACv+U 8xMfmCAFGtBB
PDhwhzYI4g/N810O8fADSMQhEhBIRCIi0IAuerGLBMFEKlKwjkjY4YwLgMAg 1shGCCQgATh4
BRQ4sYU62rEWBTiDeACABAr48RWJ2IcgBQmFQhZSCVUYASgecYlHONIWW8hj RAoAvEjk4BVO
4IQmOdGITnqyEfeghRjEQAtaPIIdW/BHAyKCBw3k4AqWfEUKcOCNIdjylrhc wQpI+QhbFOAY
JcmAG4CggW2wYBA46IQLgACIZt4AEDeIpi13eYkp1EKPJSlAHbbhBnvYoBI2 2IUXXEABGJiz
mdBEwxDEEIgpFGCVPznGCpLhAg2wgBkMYMYCOpFUgld8wJwwgOY6H7EFbP5E IGcYwgcgYE98
ImGfKUiENgKKhhVcYgu3gOdBH7KFFdxgDx+Iwxs+0IMP7OEGQ7iEL4G50YM2 4BYFiKlMC3AL
lrb0oAEBADtQSwcI2htElHwIAAB3CAAAUEsDBBQACAAIAASrUzgAAAAAAAAA AAAAAABHAAAA
ZXhhbXBsZXMucnd0LmN1c3RvbS9qcy9leGFtcGxlcy9yd3QvY3VzdG9tL3dp ZGdldHMvQXBw
bGljYXRpb25IZWFkZXIuanPtVU1v2zAMvQfIfxB8clJXvWcYtjY7rMCCFuvu BWMztlBZcvXh
JCjy3yfLdv2RLM3u1SGxyMdHSnymX3d0yUFrmuCGCQwD3EFecNRUbQ2NrTYy p1uWpGg0vS0K
zmIwTIqfCAmqICJv0wlxC3cGRbIgrztqGeWwl9bQJYgS9C+/iWpc/VsoWaAy DPWiJajWzXze
bcicrKAomEiJkUS4rCUSbfYc2/A9WUP8kippRXKtsEAwtB9/02064G+PG6St Vpxh/LIgwZNR
LmMQDb3Ccg5rjgtilMWR0xXJ9y702T/cjTKNqUyGOXZcnfPQA35eSX0l9eNh oJ1YCu1gsSt4
Y0VciTGc9Uo3GdN0DRpDUKnNURg9+zJyazROywgKROw0D52ur7Na2G3IMHeO +RrVedH+efjx
sOxbBt7vZl9gwzN0FK6anJTALZK3EtSBLK1SrvzadgosedJAHxWWTFp9CqvQ WCUa4FF1PUWM
u3WfQ4q9W/bcUZV1NpKKoyasQq9SRb5WQ4BJ6g10BcL9KeoGyL1rnL/wfj/a cOAMdD/8tjKc
DRvu2IaEVWljGXtfUxvNWIIeNaI6fMTsz36eW2dy2+D+h709OHXCFhib0Cv0 2b/Wo15EXr0R
OUpyenac5Bj387iVlQC/vb8nTxXHYzNdwmA9ZHMfgMAqHgbkqom8IsEsmJFF TaAwlyV+wPGv
k5yeHhcK8sJTtBOpudML626iBoU382I6OVTm6eQvUEsHCAlDKoUpAgAAWgcA AFBLAwQUAAgA
CAAEq1M4AAAAAAAAAAAAAAAAQQAAAGV4YW1wbGVzLnJ3dC5jdXN0b20vanMv cmVzb3VyY2Vz
L3J3dC93aWRnZXRzL2hlYWRlckJnR3JhZGllbnQuZ2lmAfAFD/pHSUY4OWEA CAEA9wAAAAAA
/////f3++/v8+/z9+fr7+Pn69vf48vX28PP07/P07fHy6u/w6O3u5evs4+nq 1+Dh3eXm2+Pk
z9vc0dzd1d/g1N7f093ercHCsMPEscTFt8nKtcfIs8XGxdPUW4OEXoWGYIeI Y4mKZYuMbZGS
eJmae5ucgqGiiaanj6uskq2un7e4orm6obi5ori5qr/ANGdoOGlqOWprO2xt O2tsPW1uQG9w
QnFyRXN0S3d4TXl6T3t8Un1+M2ZmNGdnNWhoN2ppNmhnNmhoOGppOGlpOmxr OmtrPG1tPm5u
P29vQXBwQnFxRHNzRHJyRnV1R3Z2SHZ1Snh3S3l5SXZ2THp5Snd3THl5TXp6 T3t7UX19UHx8
Un59UHt7Un19U35+VYCAV4KBVX9/V4GBWYODWIKCWoODW4SEXYaGXYWFX4eH Y4qKYomJZYyM
ZIuLZo2Nao+PaY6ObJGRa5CQb5OTbpGRcZSUdJeXc5aWc5WVd5mZe52deJmZ eZqafZ2dgKCg
fp6efp2dgqGhgJ+fhqWlhKOjg6Kih6ami6ioiKWljKmpkaysjqmplbCwlK+v k66ukq2tlrCw
nba2nLW1m7S0mrOzmbKynre3pby8o7q6pbu7qb+/qL6+r8PDrsLCtcjItMfH s8bGsMPDtsjI
ucvLvc7Ou8zMv8/Pvc3NxdTUw9LSwtHRwdDQyNbWx9XVxdPTz9zczdray9jY ytfXz9vbzdnZ
1eDg097e0t3d2OLi3ebm3OXl2+Tk2uPj2OHh3+jo4enp3+fn5u3t5ezs5Ovr 4+rq4ejo7fLy
7PHx6u/v6e7u7/Pz9fj48/b28vX18fT09ff3/f7+/P39+vv7+Pn5XIaFYIiH YYmIaI6NapCP
dZiXepybfZ6dgKCfhaSjiqinka6tkKyrj6uqoLi3pr28rcLBrMHAq8C/uszL wNDPw9LRzdrZ
y9jX0t7d1+Lh2uTj4urp4Ojn5+7t6/Hw7/Tz6/Dv8PTz9/r5+vz79/n4/f79 /v7+////AAAA
AAAAAAAAAAAAIfkEAQAA+wAsAAAAAAAIAQAACP8AA+gbqA8aQWgCEArIJ4AA gWgOCQwYcG/i
vXvSCmjUaMAARwPTDNibRhIfvgPLUKJc9qwls5cvEchsRpOms5sJnNVLoGCe sp/GggZdYOyY
0WPyktJjwABZ02RQoTZoEC+YVavCsjoQ5mCY12HEiD1496tsMV9n4cHzBawt sFxwI+SKoEvX
rru7JLjjxQuXX7+92kEYXKtwrQoVLCi2YOsCu1sXblGg8IryhFmYYWmGpY4W rVigY62TRVoW
q9OnW6luhao1Kg+uXKWanU6VbVWrcq9CZ6q3KVKkTgkXXqp4qXOjko/awJy5 KFGeoHP4RB0U
qA7XNWjPwD1UKE6cOnX/woCBXLnz5cy9eKGp/ab3m8bJv0Q/06VMmPKz2N/C RYsW4oizwoCW
RGJgJJIkKMkklDBICSWVRFgJJBRWCAkjjDSioSOOqKDCN48oogg4iqRgYjjh LLJIIiyyeMgh
3sCIwowoIGKIIYPkOEg33RDiYyFAnnBCIIH4YSQ3fggiyB9MArJNH33oIaUJ JmijDR9Y8lHC
lnvk4WU2YNoh5h1k3oHHHXXgUceaa87h5hwkkEAHCXHUGYcccmDzxp5wvAHH n9e4IagbbBTK
xghttKHGomqIIMIakFojaTUhpGFpGiCAcMam1KCBhhmgflBGGWOQSsYYYJAB hhisfuHqF2HE
zRqGF7N64QUPPGzRRRa8aqEFFztgESwWxF5hrA5UWKGsFVJIkUMUUVQhrbRT PDEFFE84oa22
OHTrLQ5MhMtEE+Q2scQNS6S7hBLsKmHDuzYkIe+8SNRbw733HnHEDPzyWwQN ABchgxFGyGCw
wTHEMAQQRMRABBFARCzExBT/8EMQP/gAAww+dNyDDz2ELPLIJJds8skop6zy yiy37PLLMMcs
88w012zzzTjnrPPOPPfs889ABy300EQXbfTRSCet9NJMN+3001BHLfXOAQEA O1BLBwgtezo2
9QUAAPAFAABQSwMEFAAIAAgABKtTOAAAAAAAAAAAAAAAADUAAABleGFtcGxl cy5yd3QuY3Vz
dG9tL2pzL3Jlc291cmNlcy9yd3Qvd2lkZ2V0cy9sb2dvLmdpZgF3CIj3R0lG ODlhJAAvAPcA
AP//9dWra8vV1dXcz+fXtfn5+vPs1NWcSenHiYGWvJKpxIqhxaq71v7+/t7l 8cHM5IWbwvPz
7cPEutDa6Vp5qdnh3tnh7bvH2ePaxvL1+YujybG90q2+2Km0tNne7rq90Pjx 1+/GfuLo89rZ
1ujNmMzX5t7i4enUqPX3+mSBrsTIy+Xi55Wryezw9n2Zw8a8sNLL1rvJ4s3V 6f//8tPa5ua4
dcza7drW3nOMs3uUvaK01PHj2MKTVaq1zP//+8fQ5pmw0vb4+7rIx+Dc49/f 27LC3cbP3/j6
/KKyzdfd7JiouuDn8f70yeXq8rLBz9LX1nKMr9Xd6+Xq9PPx9OLj0p6xwPPZ mXOOvfHbutff
3Lq1pfb19/TLmK6+zqfA39zj7c6xgebs9Ojl6vOxY+Dc09vUvOjl0/z8/d7a 4e/y+M3V4+Os
aYmgvbbC3qvE47zB1LTE37K+2tri8OTo7dXd28PM3pyu0bDA28nS59Lc7uTp 5MXF1fDz+NXb
7bXF0rrH4NfR2+3q77jE34idw6a408nS4se8qLzK1ejs82yHr///+LvBueru 9u/t6rG8t/Du
8cHL3pCmyO7x6rzJ3t3i6NTf8Ky4z+7r7+rt5fz57bfH1Km5xfLw63iRue3q 1MvW2/X37evu
9Ons9ujs9N/k7tPc6eju9dzg0M7Y6HyVtsHK3LDA19zi8dDY6tfY1k1uoUZp nau8zau3z9fg
7evo7Pj3+fPy9fv7++ft9dvm9ai317bI4d63gNbb39Pa6+S/k+DMpsbIrt7P serfx+2xZfms
Yvz69v39/fTkw6Ouy8zU4szT6J6y0P333P345+jr9evv9a+zpIufrpywrJ6y s+fk3tmjUejj
2OepXtnf6szF0YWgyniSqsLO28bL2/nkmdzk8Ofm4rPD0vC5edDazrLD3Ovv 27TD2rjF2s62
kMTQ0n6Yv/Lw86i5yPr8/triy/b58Ki62YGXwKq32NnXz8m6mrzQ6Ozq66+n lert9Ort9naP
sPDBjNHa2/n6/P///yH5BAAAAAAALAAAAAAkAC8AAAj/AP8JHOhDEYCDCBMm VOTDx8CHEAcq
AvVJHIuLGFko0Kigo4JIfvQAcBgR4oxDLuJNMHWr5S1jxjJlctasGRMmZYJJ YwGKZMl/AGJp
MOUuA7Q5SPWEq3bNzLBhWAhYmfotGIQZPiH6oKMBRBBzJr58oUTJhAkiZMhg wEDgxAkSJEKE
iOZE0c8Z2xzAAyXpSyk1NMiWJYJ2LYG2cOV20pNVoA89QI7MiSCpG7pVDC6U otGrlyt69MqU
EQaMBAIENXiwARDRxyc4fN5FKSREwwI/61gQ6tFFhRAJLwzVSwcmQABrB1a3 1gRHBKoJ6Jgp
mDHxUCQlhl5o385dezoQdh/6/9BUbkkJVKsW9CPpAwCIEXLig3PgYMkSESKa SPm1BssM8eSJ
UEIJHCxQgU8NvCcHOPPVh58IUkgRRjjjrIFMeP/44Ec5TUxQQnoHPmTACOB8 McssFlgg1hcO
iBAGLlxwsYYB7G2ISykTnGNgViM6YIQlsgQpJDo0NBEKPyEQw0smjm3IyCxR /KFBiAP1eB9+
Eb5oCiPQQDPOGGNgQ4BdGhbBiAWzTDIlj64sUcgGcMa5gSrZjNJEMWPUEAAY //kgzh1hoKgm
lQJ54ooIDiRxYopiLYFICztgQYkKHeDT559SRJHmmg8ZKkIUddRhxKij0rBE C3xkkIEY2mhx
KQciTP8QBTo7PmSGK1KUoooqkEASah1qkNKCqiigsIKrGTrBwRLPFTEIof+Y 8UQYTdzXRBNh
jJJGqhkUG0QQGbzQp7LmoRLHIFlkJS0uhQQJpCyqIEIsCkEU4E8BEowLqwwl xAFBug9R8QSX
LRS8rardfnuEPwznmywHUrRi7r9ZCQyNwXxw620QCzPsj8M+KCuFL620QXHA T2CMsLf2eszw
In12wcEzffgiCLpZnZKyMrJY4vPPF2STRscvx8yBPkkkcTPAA+nMRwuIIJJP KBcXnEEQLvvj
SMwMiOKBByYzLdApAmRASiGFKKO2Mmpkkw8KWW+dYRcMSJEE2CcPNEDZX5D/ 6jcNc2RAtNZc
i9BKH3HII/Y/e288eNYedxAzIQ4s08o8OdCRVeNqWAJnD0iokgbkDEueYSyE yPHDMjp0ovlD
5AgQRLG0F9sy5NT0GYsOlTzwgw5XvJ6hIrE/TrrLuZ+uQx4xPKBLDtP5MIMT m3AjTRXYZ689
9psI4L0A0/QpABB5CBLDH3YsoEA7qeiAyvuoDCj/gGqocUECsMyg/wwAhIdJ IrkoAhz+AIdK
TIIBDjhCGkTBQBGwQg5oWlQSINCJ/JUEAArYRQzuMMAYoEIODmDF4b6WNF+Q LH4y4EACKKCO
xjgGEynYRTzuUATzPeABeLCcL77mgT7UTGIMSEAK/5TzEx+YIAUa0EE8OHCH NgjiD83zXQ7x
8ANIxCESEEhEIiLQgC56sYsEwUQqUrCOSNjhjAuAwCDWyEYIJCABOHgFFDix hTrasRYFOIN4
AIAECvjxFYnYhyAFCYVCFlIJVRgBKB5xiUc40hZbyGNECgC8SOTgFU7ghCY5 0YhOerIR96CF
GMRAC1o8gh1b8EcDIoIHDeTgCpZ8RQpw4I0h2PKWuFzBCkj5CFsU4BglyYAb gKCBbbBgEDjo
hAuAAIhm3gAQN4imLXd5iSnUQo8lKUAdtuEGe9igEjbYhRdcQAEYmLOZ0ETD EMQQiCkUYJU/
OcYKkuECDbCAGQxgxgI6kVSCV3zAnDCA5jofsQVs/kQgZxjCByBgT3wiYZ8p SIQ2AoqGFVxi
C7eA50EfsoUV3GAPH4jDGz7Qgw/s4QZDuIQvgbnRgzbgFgWIqUwLcAuWtvSg AQEAO1BLBwja
G0SUfAgAAHcIAABQSwMEFAAIAAgABKtTOAAAAAAAAAAAAAAAAB4AAABleGFt cGxlcy5yd3Qu
Y3VzdG9tL3BsdWdpbi54bWytlDtvgzAQx/dI+Q7Ie5w+lg4QlKXqGEV9zK45 EavGWLZJ6Lev
waFcGmioUk/4fK/f/07EaV3IaA/GilIl5JbekAgULzOh8oS8PD8uHki6ms/i FLgU2kLve0/v
wpOWVS6U/5rPoiiKoXagGpf2Go4uhXIJKU1Oj3moYZpWgoJy5rN9JqsuIO6N KIc/XDJrEwI1
K7QES83BUV5ZVxZ0rbUUnDlfl5wGaWZYAQ5MQvYCDj9eRXY5X9/Ysu8sGL2l w139Cd+ja6+k
Bu7EHiyqgcynrSqPkZDtehNtehcyWaHxoDENUCdYA2S+XoRmJJi+uQ9hv56P 7hfWAe8xyHYn
EF1zvxLruNoGbFkZfjLczjaZxCcHo5ikB5Hl4Cxl/WLugGVgPoTD2/rUGrfH Opisq/0/dG4H
BbB3CW+hMVQptDoZsSM7g5g4wRBPhrYGibUIamFBQuCQHP6vtvz+rX0BUEsH CJhYTdBdAQAA
JAUAAFBLAwQUAAgACAAEq1M4AAAAAAAAAAAAAAAAOgAAAGV4YW1wbGVzLnJ3 dC5jdXN0b20v
c3JjL2V4YW1wbGVzL3J3dC9jdXN0b20vQWN0aXZhdG9yLmphdmGtVNtuEzEQ fd5I+YdReUki
uvsBK6QWAmgRQhXQ58r1zm5MvbblSxKE+HfG693c2ghaISVKNJ5z5pyZsQ3j D6xFwC3rjESX
243PeXBed+V0Mp2IzmjrQds2Ry6FcZj/aBjH3KLTwdKfqiP8Eh23wnhtyycx QeRGhlao/Pre
ecu4v61u+sBxvnatyBvLOtxo+5C/DaqW+E4rj1vf6ykWi+kEFvB9hUAsYs2o JnDJnANOeVZL
B54OY7lLoUCKBoH/5BIjrphOTLiXgg+Q6x0FFUBVU+REH/yKZbOi6EuOrNWS YgOT88zTTyMU
k/DNW6FauPl8+7H6clct4Q1cPNHbi/KQ1a2YxRqEIirFMVLbKAtH7r1MMzYt i/DYjGzoBrkn
5YFTVh8s9gp38Nk82sl+p+IDeKa0uvzE1qzWfJ5CVw7xH+f3iiRaP/vb8Oan mtZa1JCwR4n9
FCOApmj1xsH7LUfjhe4nkWUuGLR5Ao6psR1Z0kf99ivhyv/vUpsXmyToszzu rKggZXnompgO
TY8WB49f0Qer0v4/3ikYsq5sn3Y2q3i02vv1a9EvsWFB+mGVsoFsv5dnNDEF Ir4UUO+eCmjo
G1Wkg0ZIutO+j7RijSoRjFfOoiQxa7qDzK8O7RhG0+ij6eKPx0dGT2ufcXry mEW/J6HZcMNj
meMWiOPED1Z3aXlmu9fgdYINbaLPH1BLBwgnVgYoDAIAAH8FAABQSwMEFAAI AAgABKtTOAAA
AAAAAAAAAAAAADwAAABleGFtcGxlcy5yd3QuY3VzdG9tL3NyYy9leGFtcGxl cy9yd3QvY3Vz
dG9tL0FwcGxpY2F0aW9uLmphdmFtkEFuAjEMRdfkFN4VUBUOgLpAahfsUFXU dciYGQtPEsVO
AVXcvYEOBalsksh+/9s/yfmdaxHw4PrEKDbv1foiGvu5MdSnmBVibi16piR4 6TNt0R89o12+
Bc3HVaSg80e0VHpPTYsq9pUksTs+5ArZFTvdxtyvl3XwbDo1MIWPjgQ8O6ln rJMiCzhmcJLQ
q0DcgnYILiUm75RieJIaBX05v88OLjRAg5o2RbGpihxL212UiUtLwR56tpWe mVQ21WkYubjZ
Ap1/p8dQh95lhm9jRoNmiAc+o1NcL8eT2h2NruVmuF/gFtT+sgMynswr/6+7 CM17CZ8x7zYY
fDe+Oj1DwP39jn/IovkiibkucHHMqCWHq6xWTuZkfgBQSwcIlUa6bhoBAAD4 AQAAUEsDBBQA
CAAIAASrUzgAAAAAAAAAAAAAAABMAAAAZXhhbXBsZXMucnd0LmN1c3RvbS9z cmMvZXhhbXBs
ZXMvcnd0L2N1c3RvbS9BcHBsaWNhdGlvbkFjdGlvbkJhckFkdmlzb3IuamF2 YZVUwY7aMBA9
k68Y7aFNETUfgPZAV0VCKodWW+2xMs4ALokdeRzSVbX/3rGdLAGWRb1lMjNv 3jw/u5ZqL7cI
+EdWdYkkXOuFasjbapZluqqt82DdVqAqdU0ofm+kQiGV19aI5QpNs5KGEdzs ZvWt4kaL5ZN1
+zUatZvHngdryEvj6XbDkzaFba/VJQokEuyCQ+ue/6v4gtvV7routZJx5VT5 Rbp5cdBkr+49
7Fm+NvH2G71tXNArm47HGYzhwaH0SBOQRUEgTQGFptoScpBow8Y68DuEivVO JSkDa+kI7CbA
oFQ7aPuFoI3iCc5Ms7pZMxdQpSSC+ZHY+S7sGY+GSVwk/mbZqEN5pz9/a1FQ r5+fGGc0oqZG
lw/+zrLRC+NPp91cgs+QRGWfgLcgy9LyRAwaEII15TNoA5XcY9cxiaJw2kBD GLE4qEJV0G2j
y5LF8ztbkIDHnSZAQzycOC19rOm1lg7NRw8OVTyXIoK9icOSOH0IvM6NxEJq 33sqlFmPirHg
YHUx5J2fu707t6QUD+7MccqQV3W41eTRxUwl4EcXa7NluchCaufJB10EJzV8 //nQVGcuWbJt
TlDbIF74kRgAa6RKdmEhGOq4D9zD6SX6/nP5KJJWeUeeD3TUE8yPrf1Bn8kR RA0PCbsmHz4/
0e38M2kxTHAHhjgseQ8GWxhk87sPC87fTa6+PGL1a7H89jXS7GYIvnt5DxsT fRAzFzu8ZP8A
UEsHCNV+k1UkAgAAZwUAAFBLAwQUAAgACAAEq1M4AAAAAAAAAAAAAAAATAAA AGV4YW1wbGVz
LnJ3dC5jdXN0b20vc3JjL2V4YW1wbGVzL3J3dC9jdXN0b20vQXBwbGljYXRp b25Xb3JrYmVu
Y2hBZHZpc29yLmphdmGVUc1uwjAMPjdPYXFiaAoPUO2ANg69oYHGcQqpWyxK EiUunTTx7ktp
+ds6afMpiv39+LNTeqdKBPxQe1dhkL5hqevAdp8KQXtnPYP1pURdkQsoa5LK uYq0YrJGZmvr
dxs0ersmk9vm2ZqCytqjT/+AvoBn+YGC/R+mE7wgxXQyETCB1ZYCNOchUF0f tEfFGIC3CM0J
eW49gjI5BIeaCsLQcrRDDn37x3RAoByKyNF+kyEmVfUcMk5Phas30R7oSoUA s6vX7+vFlBlN
HuBH41OIxHk6RIsQOII1FGSizJI9mRIW89flYv68yt7m79kLPMFo4GDyxvIo BgKxemvDofWh
DDfHv58W9OX5EK1DXx659gYMNoMh3LPfUKQnhmMbQee2X7pEzrq0O+jiul6W j1vlJOk17/NJ
RXIUR/EFUEsHCOjUiSA8AQAA3AIAAFBLAwQUAAgACAAEq1M4AAAAAAAAAAAA AAAAUgAAAGV4
YW1wbGVzLnJ3dC5jdXN0b20vc3JjL2V4YW1wbGVzL3J3dC9jdXN0b20vQXBw bGljYXRpb25X
b3JrYmVuY2hXaW5kb3dBZHZpc29yLmphdmG1WG1v2zYQ/h4g/+Hg9YNcuHJW YECBNkM8J0Uz
JE5Qu+jHgpHOMluJFEjKrlvsv+9IynqzbKcYJgQII97rw7uHp4xfnp/BS1is uIZIZnlhUEGu
ZKJYBvTOrJDeiyWPURjOUuBiKVXGDJcCmIitbK44Gqa2zpJRLEbQGCk0IJcw 5TqSMN9qg5ke
wa2IQoBHqTVqTTa0M1JotLKGonBGdgFkhTbOPbkEbRSPTLoFI11YKY9QkCJL FGJG4cETmg2i
cLtkUjlb1n5PECO3oTBCnlOglHQVE8QSNQjpXK9xW5rZguLJymjrP+brIk1w RAYo1riIaEk2
WJrKDUjyr5yYzcsmtUvIWdpws5KFAZ1jxJc8go3ixlDYrKANxX94cPuxsxac FfdMZb51QcHr
i4s3h+S97CRNdwkoJHDWGLvd8fnZ+VnOom8sQcDvLMtT1KHamDAi9GX21u7z LJfKwpSEGKU8
1xh+XbIIQzIlC0WL24z0r1FHivCU6m2vjiar88+Lw5sEUr7ikfbmniH3KLkw h+U2PE7Q6HAq
hVEyPS04X2F6QKzgIctzqjp3PuEksr/+YmoSr7k+lHFH6bbSmtqmSgqFz1T8 LNW3JxTR6jMX
sdz8onpH+1TIhCkqwdLQiy8Uzx6V/L49rZCyLdU2hVspPlvHCt+55WkV10/U reFjufiICeXZ
rNWeUq5OeVJD8wGJr5RTHL/0rVVh6+mPC+6YT/Mf6EiDgEWmmIgcaTHY7MCl 1rZZ10165Vua
mk9YxRlpaZ6tmCgbLy+eKA6IUqY1NILqPy5KiWgi1tC/fX72k8zSQ3y8ZoZI 2JCxCJacEIM5
sadI4MPN5Prm45fFx9v7L7fXcOk17DPoA2zl0LEnM3gLMB7Di9nD7NXsbv7q 9xennc0Xk8Wn
+Ze729mN89hyt88lzPVGOCdLhb7jAu+ZIBZQA3c6TWd1qUCMS1akpiqcptje McNqd9pNsUax
Qp1wR6hkEMgpoildlFJzgx2ZdjFC3v7zEkThuOWQb10lXvr3or4s7UOlqZC0 6NIEgRt4F8kY
/zxZN+/GTg7k01eMTLgzVhm9ypm9bP097zhltzUug/VletJRUB/vYb5quBl6 +Z+1mi5yVEFD
ooTrnz4wDscNVzR9FEocyKPD3BA5VLuvm9n00PbRPLx7COwpNWDbc9Gw0ZMq 6Uvx6m+2ZrGM
hnVyGvHXyf43n2V1HEQlRgdH78FhB7+rhzUqRaNgC8615DH0GndGQDdMNSBq Na5tDoKq7utg
B8eeaKjRzGleIYIJXo+g/Dkqfs9UwoUOuoIuMitQ+mwpDqsGfHY9UxYEXlcg aFsiEvVd7C6X
xrmV3BPWoh5UT10l/+jAw3nEJJ2mHYajHUkBoz0INjSUoqMvG7E9IEhozh02 /LW4jZKpMwt9
KI9Ngb5IKiyvmWHvpapK4X+vboqpRP4hRxH8Qun2a/5swUt5Qca+86zIfNXA kyzsVUxDflQo
ZdF08wENBDHXOY00EDgFeqlbpjLGRTkoDOuN3roJq7d+7fqJlq6kve04MKrA YzQ57slY4dGE
/2uxV/Vb1w+FfOvnqDlF7XjRje7Bm4uLEfxxcTE8rDhfyc09ioJ4M1iyVONx 0amU6bNECcy5
2aYY0CdJOHtwI8rRC6fRZKTi2si2JNDn6Ylm3r+0fBXRhzeWxVCyUffYyjmh QbIdPjhKsj6K
kl33xiHfwSObTPj+brJoglUPQqV251Mg8AKjzkQ5gsFC5kD4OzIfjGqL9vFI z25GsCvbRtW1
vyCJxqvlpbuzCQipbB90JIO2jwGng9HjVCYyTPhy0MzKaYLd8qvLhpeS49xG sA+FK2G3V6n3
Cy24oZoaTN0ETbC5C3VwtLDmRC/uXxrlTEvkWRVVSdba/4MEG98YB+vkMAvv FUiRkzN8NmfX
IX9yigejLmt6F/zRcI/GsBcxX0LQmR38ZD1sl4EfwVoV1h4MWBzbEnXdv3h4 HDVK/ug0MUX7
FVr2X9C6MxuI0c+/UEsHCIiPxcHaBQAAXBMAAFBLAwQUAAgACAAEq1M4AAAA AAAAAAAAAAAA
PAAAAGV4YW1wbGVzLnJ3dC5jdXN0b20vc3JjL2V4YW1wbGVzL3J3dC9jdXN0 b20vUGVyc3Bl
Y3RpdmUuamF2YXWPzWrDMBCEz9ZT7NEJRmnPoYfSJhDIoZCQuyJv7KWyJKRV fih598qp25jS
XoTlmW8045V+Vw0CnlXnDUYZTix1iuy6uRDUeRcYXGgkakM+okwkV2+ZWKuL Szz/14IhetRM
R1wqzS5cctxsOhUwhRdnD9SkgBG4RfB3K5hbqoRtSxG0UTFC/+EsB9onxjoT waWm7ck+y5vU
kJXnzsh8nQmf9ob0gI5KAPXzOrQc4Y9y8CFEMbBHRzXogIpxZYlJma+t5Wj3 UHSSuaLY5HK2
AawpRz1nEJ6+hzTIi5/f5WSe3YMSx8qOIu0NlgdlIv5yLemMdckh9cJdUXW9 YWVrZZzFHeGp
7A+5eq3gllLBqK5cL5bbCh7lw6HKEUVx79q/dhVX8QlQSwcIQnwVHCQBAAAJ AgAAUEsDBBQA
CAAIAASrUzgAAAAAAAAAAAAAAAA1AAAAZXhhbXBsZXMucnd0LmN1c3RvbS9z cmMvZXhhbXBs
ZXMvcnd0L2N1c3RvbS9WaWV3LmphdmGVVcFy2jAQPcNX7HCpyVDzAUwupbSl QwpTSHLodDLC
XkBBllxJxknT/HtXsgBDIJOcguS3b1dv921ylqzZEgEfWJYLNLEubZwUxqqs 12zyLFfagtLL
GBPBc4Px/YIlGG84lqhNPJxaXSS20Jj2lbQo7USrDU9R994QPGNzgSM2R/GO qPfifZIbf3gD
+hWgIWWmt7Oz35aa5Sue0LsyUvQsrOTpEq2J+4q+G25PIwtO2q4Y6erZzDnQ RDC7UDq7Hp5D
5Exb/6wJ/aCe5sVc8AQSwYwBd0+9p8al1cGB4KnZCChjmaU/Cy6ZAOo1l0sY foZLaJ0YGC9i
i1I0cs03zCLUtIdNULbZ6F5cNBtwAbMVQlJNDeShoaEubkCjyZU0nBiAXhgQ rgA1v8fEGrAK
7Ao9lSOPYWghYRJKagQ9ihtbR3MJLGW5pS6TRGBILfFIWWh45RbkuZj5yE3s qjO4i87YI8wR
DFJFlm8wJIek0NrVz2VekPQLf+mq6XguSsSXUmkEboHJFJgo2aMBs1KlhxqW 7UWIBF870cwa
RlR9x73b0wSx27E7dZuNffOOXAfuVZjRjYHz3nQN3nZ4o3haVd9fMbnENNr2 qwNj/3hQIh06
wO5CYukv2p7ouXnElnLqnMHo5ecq/tdvIAcMQp1RIKU5pWMV0whtoURh6ijm CVpjia0OtGal
8n9WGrEFzz2fxSfaC3OwJnYjfni7F8vlPLGO6kKF6afK+0oUmZwR57Z2mpIO iejGIMWHwzdQ
gIcSpt070sN7e0/pj2/krLCvkh7THXLsN0dM2Ful13OUySpqu2N99VQ3FZmL J6Xqn+Ph1de7
8afvd4PR4GrwY9autWPvdO49zcifQszpfw4NP7NQciHIEoLMUHg/Jxrd3tia iDrgTMMleY4J
/rcyO7dbH9Snrgp1+8tNu1Yi2m3Y2mx1u42GE9XYR9orl0ALPb66Hs2G8M// /nY37f8cj0bh
eBOOPR8YSrr0c1nbbVHF36lY23VwbNAeuS9y0Se8G7VfRB4M4y7u8PZllPdm RD1z4Cm932MO
GjIhm7hpdkIvFK1vWoR/CjR2u9cqtg/G7yYS85TilOqLiw1G73ZDCUvctaAd 70G+hOf/UEsH
CNlwFf5GAwAAcQgAAFBLAwQUAAgACAAEq1M4AAAAAAAAAAAAAAAAcgAAAGV4 YW1wbGVzLnJ3
dC5jdXN0b20vc3JjL2V4YW1wbGVzL3J3dC9jdXN0b20vaW50ZXJuYWwvd2lk Z2V0cy9hcHBs
aWNhdGlvbmhlYWRlcmtpdC9BcHBsaWNhdGlvbkhlYWRlci5hcHBlYXJhbmNl cy5qc61RTWvD
MAy9F/ofjE8bNPE9Y4d1C6XQljH6B7RE8cxSO8gyXRn977PrfaWD7bJ3MLL8 /KQnwTAgENgG
vbgWr9OJiFBKzOvFciO29fp+dbOtYya/5FPCMPSmATbOFk8ILZKsPj4neD70 WIku2CZxLjwD
o7/8xkgg5EBWnGUTHqF51uSCbZc70FFJEnoXKHapaM+qCZ7dTu1Nq5G9yi3M 9YKgNWi51KaT
s99kHzDa5pNuCoqDHLOPX9f38Dj7YwIFG+7xf+fA+HLrekfVqGCuV57qlZ0j zJ7OLVz99DCd
fC643tyN15v4b1BLBwizMoey5wAAAA4CAABQSwMEFAAIAAgABKtTOAAAAAAA AAAAAAAAAG0A
AABleGFtcGxlcy5yd3QuY3VzdG9tL3NyYy9leGFtcGxlcy9yd3QvY3VzdG9t L2ludGVybmFs
L3dpZGdldHMvYXBwbGljYXRpb25oZWFkZXJraXQvQXBwbGljYXRpb25IZWFk ZXIudGhlbWUu
eG1sTY7LCsIwEEX3Qv9hzNr0hWKFVneuBQuu03ZaA2kSJqn4+cYWH7MIA5Nz 7i1Pz1HBA8lJ
oyuWxSkD1K3ppB4qJp3hRbE78IydjtEqWpVrzqG+44iiUQiWjEXyEh30huB6 q+FCZiB0rhEE
nC+QfwNhhTBla1T4qsWIFRPWKtkKH7LvKDqk2EuvMA4yHMhMumMLBR26lqT1 c8vz9wyL7R0+
kyA1hDT4E8Ni/ol6MSlfse1+A1mahyc/sCS0K5NPzxdQSwcIAnACJb8AAAAV AQAAUEsDBBQA
CAAIAASrUzgAAAAAAAAAAAAAAABrAAAAZXhhbXBsZXMucnd0LmN1c3RvbS9z cmMvZXhhbXBs
ZXMvcnd0L2N1c3RvbS9pbnRlcm5hbC93aWRnZXRzL2FwcGxpY2F0aW9uaGVh ZGVya2l0L0Fw
cGxpY2F0aW9uSGVhZGVyTENBLmphdmHFVdtu2zAMfTfgfxDaFyfA5A8ICtRI VyzFsD4UW59Z
mXW0KpIgKXG7Yf8++pY6cRokaLoZBmxT5CF5eCRbEE9QIMNnWFiFnrsycLH0 wSy41AGdBsVL
mRcYPAdrlRQQpNFzhBzdkwyTOIojubDGBfYTVsCl4bPbz88CbeXXXzau4CiU tB7rNEo+ongR
Cnn24IMDEe7rRF+n2eSAoKnRwRlF3t+DVIdE3NzdO0k97fb15Nt12hTSL34X QZ139srLl5qX
OjAdj+OIjdklLMPcOMYyDTpn38CBl4s56Go1jSO7fKBoJhR4zwZQ1B7lDqhz WtymKY5+Ewhd
6Zgl2uhPNzSB3IhRY62Se8RjiD+3Dj26Ff4AtUSf7CdonSdtXi5vV+iczLH5 bDtbGZmzLdwm
npV9mLaX6hrQwGBguWDJwG3UIk5eoTZlwrfqGMCO2tA/1QjfQ+2s5ZQM08qQ 5WBJe+eO0lxB
gCOp7XO5htjD4rvrH0rDkQjRTUm5xSmVsQm72RILc2dKz3onyj/USlmdFl1h H6eUt5i+kt4a
j6dmuoM9nunu/GRl87hYWzhBNG/XxiUtZI/YJoDnbeoPp26mZZCg5K96Xqdm cAv9v0r20Jm8
Kd/eeDSWTS/J2VG/u7M+Vpquh9HbRDUCBSL9/bTA/eXs2oZ34UXhtYJi/06k +y9QSwcIbZls
lP4BAADTCAAAUEsDBBQACAAIAASrUzgAAAAAAAAAAAAAAABwAAAAZXhhbXBs ZXMucnd0LmN1
c3RvbS9zcmMvZXhhbXBsZXMvcnd0L2N1c3RvbS9pbnRlcm5hbC93aWRnZXRz L2FwcGxpY2F0
aW9uaGVhZGVya2l0L0FwcGxpY2F0aW9uSGVhZGVyUmVzb3VyY2UuamF2Yb2U UWvbMBDH3w3+
DkfaBydgiT4MWvKyUgpLyRyIYe8X5+potSVzktuOse8+KXabEie0g2bCD7L9 193vf8epweIB
SwJ6xrqpyAp+cqJorTO1UNoRa6zEk1qX5KzApqlUgU4ZvSFcEz8oN42jOFJ1 Y9iB4VJQUanG
0jYOkzUtFz7qbNlvp/8i/o7as7FYUqmsZ1k0IbXdppSTSRzBBL5i6zaGAa41 6jVkyGhVvUEd
/so4atqVZ4aiQmvhemfg29bASyZQwX1N2ll4TR9Hv30Qv+QEEm10eoePuDbF uPsakluijxg5
8+W72SBbcsnradltesDcsdIlDIU9Q1hMrmUNyWiWL9LLyy9X6cVoPPV8Es6z RZZm8zy9OO/0
f0KRPg1+bkK1jrHfhOJ2EhiID/AfbYPYtkmEIuxCJuPx9DSeOoT3O7KvHFja vYeVjF6mSfr0
spsm2Q+RHJgXP+1/6mI/P8cM740ZDE8c6OXeIfHjdpnPFtkJWqbs7XN3IR0z sDKmItQwVB4A
v8fK0kkw7/K5WjHyr/c5B9IDoI7bt5z++QtQSwcIKCN5W58BAAC1BQAAUEsD BBQACAAIAASr
UzgAAAAAAAAAAAAAAABKAAAAZXhhbXBsZXMucnd0LmN1c3RvbS9zcmMvZXhh bXBsZXMvcnd0
L2N1c3RvbS93aWRnZXRzL0FwcGxpY2F0aW9uSGVhZGVyLmphdmGtV+9v2zYQ /R4g/wPXfqhS
ZErSbcCApEFTN1kCGEkRuyv2qaAk2iYqiwJJ2fXW/e97POqnJTvtUCGxZfH4 ePfu3ZE6eXl4
wF6y6UIaFqtlXlihWa7VXPMlwzO7EHiezWQiMit5ymQ2U3rJrVQZ41nibHMt heV6Q0hW80Qw
I2ItLFMzNpImVmyyMVYszTG7y+KQsffKGGEMMAyBFEY4WwsvCKRyYFkYS8tj SWaslrFNN8wq
ciuVscgwkc+1EEu4xyJh10JkNApITVgOf8CJYxrQIhYyh6MIuvaJJUoYlila eiU2JcyGaTlf
WOPWT+SqSOfiGADwNSli3AKDp6laM4X1NZm5uFxQVUCEtJZ2oQrLTC5iOZMx W2tpLdzmBQa0
/NuTO8ydQyAUukYq35BT7NXp6e+77L3tVZpWAWgBclYiodGTw4PDg5zHn/lc MPGFL/NUmFCv
bRiDfbUM1zKZC2vOnZ1c5ko7uuahiFOZGxEaWE4+Ts93DiLwfCFjE94tscRu u5RvQEv4h5bJ
O275NxmO6Xa3ael7OIK0lZF2z/KV6ZhHIn3a7CN9EyknL31KrqiCaBkGxYLm LBFaZnPG8xxq
9XldCBQI5MENS8RMZiJh0YYkS+kjpMLwSKbSbiB6yJTrxDSZv8gvr7IBSKdW Iw3yC+lwlqq5
gsiZlTYVTu1M5c4aNWyK6Gd6XBcIb2FYV0pcC05BtNYhScssTgtUeA0WK5Wy iGuHQ3gkfwSf
ihUHUrthBKn8LJxnc0QtMypSlvElhGfjoybEN74UINrMeXfPNTdyueBZKdi8 iOAUi1NuDLtq
PLz1QYgviCExrM764cE/mIkLqWrbb0ed80ykIS3hrNHYVhzJrHFK+5E3fw9r EkDbluRD5FdC
6o+C/6mjf7eFbQ/Xrvsb8AMH0A2LGLnmLBNrcOmEEtddtKRmLlfoKxJmORLq 0kq5NnZDufdg
K54WAlo0sZaRU6uzj8SCr6TSfkaeC6QA+GE1q54NNU6hXYIsobC8kCQClZUe VQZOonDUNtqH
CsjXBjBWibhER7k4oTu2RvNYONBSihFwSIg+ZNONmfqw2zdqwEiwqJCpdWV2 IZaXkbRricb8
8Hhxgp8vXMhWoZidx4FdcGgWMIWhAbjuParxZGYr1559fYZCEJpbpY+YXSta XOkyamVEP5wu
+TUhIXM0+rT5XFCBYZdzFT3EIHmKtNZYXX5sBReyCc2MXF5hj13KOPoQLiSd sJlW2FwLhEHm
woRNLk7yy17G30BL2JsrSUFPvieWiVpLbDSRoPVLk1ICbaHWaNtXEPPMbb1A yIo0Peot62lo
MQL00gFEHVeV0cwzAuZIwPP7h083D6MPk60h38mf43/STk3VA3yr6TWZoGkK PspjJwzvUul0
2XPcRfQGlaE3Om+GcVhC7ZfA1cC/Q5X/KGyh/QmnvwO8MHUnc99apf16faM9 Qme3avX1bkcM
h9loYgdrt9s9MejHXy4a9Prn3mAnLqeIVLqDA+1Gw3EPRFmKxc+k0uqCbE3s hrdSMsER1tKB
JaBPP70fWN3ow9reW57vsPlTGokK9Vbsp9de5W1rOtIE7UdaJJqv9wuj4op2 jv/FlZ9JXNHt
E+TQDhZMLB1waEKfnWYbc6FPsS8H3vJ8l01Fj3fmx9EzogojTtAKqvIwbvt5 gqetswCF363X
XtjNybR0l72m5tc8D345ZjP0YdEPLVxyPZcZupJdYN7pLoNbQQf/QYuV0Bbh pBOc6116Bo3o
XQM87DJDNkpn/YSj+ihC5J6wMXQ9oPIyWLoP3MZ87CgPR9f30+vHJ+uix0r1 PsDmiftsmHQP
A4c8vr6Zttcoqa2/zvDXRiSgVvh3mXu5BfLZrz2risna5rddAXiuyCma2qNr +/WgOoGXV9NT
aaD56SOuf7covRlfTXvLdGc7z97i5W6uVZElwT5LtPJ30uRIdnDkfvj3yJFK lSaaRw/jh8dP
b8cfro96bH5XWrA/f09WXp1ud4tOdPt531V/Z96NneW3r7qeLNAfUn67Ih2s xqaJdquvg+GT
4dLCvnb082Qqb+7G424qfQ6HM9nt6EP5GbbstYCOWm87B5NmqHek+N6C6QFs 1Ux//NsqZfTX
1f23VUpDr7/bR+6gt7s4xlaIv/8AUEsHCGLUgDdDBgAA5BMAAFBLAQIUABQA CAAIAASrUzi7
+7pRqAAAAFwBAAAeAAAAAAAAAAAAAAAAAAAAAABleGFtcGxlcy5yd3QuY3Vz dG9tLy5jbGFz
c3BhdGhQSwECFAAUAAgACAAEq1M4CBbvWO0AAACoAgAAHAAAAAAAAAAAAAAA AAD0AAAAZXhh
bXBsZXMucnd0LmN1c3RvbS8ucHJvamVjdFBLAQIUABQACAAIAASrUzhOy/fa zgAAAGQBAAAo
AAAAAAAAAAAAAAAAACsCAABleGFtcGxlcy5yd3QuY3VzdG9tL01FVEEtSU5G L01BTklGRVNU
Lk1GUEsBAhQAFAAIAAgABKtTOIuVc7tUAgAAiwQAADsAAAAAAAAAAAAAAAAA TwMAAGV4YW1w
bGVzLnJ3dC5jdXN0b20vYmluL2V4YW1wbGVzL3J3dC9jdXN0b20vQWN0aXZh dG9yLmNsYXNz
UEsBAhQAFAAIAAgABKtTOLPsOEe4AQAA+wIAAD0AAAAAAAAAAAAAAAAADAYA AGV4YW1wbGVz
LnJ3dC5jdXN0b20vYmluL2V4YW1wbGVzL3J3dC9jdXN0b20vQXBwbGljYXRp b24uY2xhc3NQ
SwECFAAUAAgACAAEq1M44MuEGNACAACSBgAATQAAAAAAAAAAAAAAAAAvCAAA ZXhhbXBsZXMu
cnd0LmN1c3RvbS9iaW4vZXhhbXBsZXMvcnd0L2N1c3RvbS9BcHBsaWNhdGlv bkFjdGlvbkJh
ckFkdmlzb3IuY2xhc3NQSwECFAAUAAgACAAEq1M4rESXpdYBAAD0AwAATQAA AAAAAAAAAAAA
AAB6CwAAZXhhbXBsZXMucnd0LmN1c3RvbS9iaW4vZXhhbXBsZXMvcnd0L2N1 c3RvbS9BcHBs
aWNhdGlvbldvcmtiZW5jaEFkdmlzb3IuY2xhc3NQSwECFAAUAAgACAAEq1M4 KZQPOiEHAACl
EAAAUwAAAAAAAAAAAAAAAADLDQAAZXhhbXBsZXMucnd0LmN1c3RvbS9iaW4v ZXhhbXBsZXMv
cnd0L2N1c3RvbS9BcHBsaWNhdGlvbldvcmtiZW5jaFdpbmRvd0Fkdmlzb3Iu Y2xhc3NQSwEC
FAAUAAgACAAEq1M4iqtUaOwBAABTAwAAPQAAAAAAAAAAAAAAAABtFQAAZXhh bXBsZXMucnd0
LmN1c3RvbS9iaW4vZXhhbXBsZXMvcnd0L2N1c3RvbS9QZXJzcGVjdGl2ZS5j bGFzc1BLAQIU
ABQACAAIAASrUzjbRnsLJgIAADwEAABKAAAAAAAAAAAAAAAAAMQXAABleGFt cGxlcy5yd3Qu
Y3VzdG9tL2Jpbi9leGFtcGxlcy9yd3QvY3VzdG9tL1ZpZXckVmlld0NvbnRl bnRQcm92aWRl
ci5jbGFzc1BLAQIUABQACAAIAASrUzhAhCQKkwIAAJMFAABIAAAAAAAAAAAA AAAAAGIaAABl
eGFtcGxlcy5yd3QuY3VzdG9tL2Jpbi9leGFtcGxlcy9yd3QvY3VzdG9tL1Zp ZXckVmlld0xh
YmVsUHJvdmlkZXIuY2xhc3NQSwECFAAUAAgACAAEq1M4/w3Bbc8BAABaAwAA NgAAAAAAAAAA
AAAAAABrHQAAZXhhbXBsZXMucnd0LmN1c3RvbS9iaW4vZXhhbXBsZXMvcnd0 L2N1c3RvbS9W
aWV3LmNsYXNzUEsBAhQAFAAIAAgABKtTOLMyh7LnAAAADgIAAHIAAAAAAAAA AAAAAAAAnh8A
AGV4YW1wbGVzLnJ3dC5jdXN0b20vYmluL2V4YW1wbGVzL3J3dC9jdXN0b20v aW50ZXJuYWwv
d2lkZ2V0cy9hcHBsaWNhdGlvbmhlYWRlcmtpdC9BcHBsaWNhdGlvbkhlYWRl ci5hcHBlYXJh
bmNlcy5qc1BLAQIUABQACAAIAASrUzgCcAIlvwAAABUBAABtAAAAAAAAAAAA AAAAACUhAABl
eGFtcGxlcy5yd3QuY3VzdG9tL2Jpbi9leGFtcGxlcy9yd3QvY3VzdG9tL2lu dGVybmFsL3dp
ZGdldHMvYXBwbGljYXRpb25oZWFkZXJraXQvQXBwbGljYXRpb25IZWFkZXIu dGhlbWUueG1s
UEsBAhQAFAAIAAgABKtTOGw+oQXgAgAAqQYAAGwAAAAAAAAAAAAAAAAAfyIA AGV4YW1wbGVz
LnJ3dC5jdXN0b20vYmluL2V4YW1wbGVzL3J3dC9jdXN0b20vaW50ZXJuYWwv d2lkZ2V0cy9h
cHBsaWNhdGlvbmhlYWRlcmtpdC9BcHBsaWNhdGlvbkhlYWRlckxDQS5jbGFz c1BLAQIUABQA
CAAIAASrUzg8Fh+HTwIAAGYFAABxAAAAAAAAAAAAAAAAAPklAABleGFtcGxl cy5yd3QuY3Vz
dG9tL2Jpbi9leGFtcGxlcy9yd3QvY3VzdG9tL2ludGVybmFsL3dpZGdldHMv YXBwbGljYXRp
b25oZWFkZXJraXQvQXBwbGljYXRpb25IZWFkZXJSZXNvdXJjZS5jbGFzc1BL AQIUABQACAAI
AASrUzh4dNx0nQQAAOYIAABLAAAAAAAAAAAAAAAAAOcoAABleGFtcGxlcy5y d3QuY3VzdG9t
L2Jpbi9leGFtcGxlcy9yd3QvY3VzdG9tL3dpZGdldHMvQXBwbGljYXRpb25I ZWFkZXIuY2xh
c3NQSwECFAAUAAgACAAEq1M4CUMqhSkCAABaBwAASAAAAAAAAAAAAAAAAAD9 LQAAZXhhbXBs
ZXMucnd0LmN1c3RvbS9iaW4vZXhhbXBsZXMvcnd0L2N1c3RvbS93aWRnZXRz L0FwcGxpY2F0
aW9uSGVhZGVyLmpzUEsBAhQAFAAIAAgABKtTOC17Ojb1BQAA8AUAAEIAAAAA AAAAAAAAAAAA
nDAAAGV4YW1wbGVzLnJ3dC5jdXN0b20vYmluL3Jlc291cmNlcy9yd3Qvd2lk Z2V0cy9oZWFk
ZXJCZ0dyYWRpZW50LmdpZlBLAQIUABQACAAIAASrUzjaG0SUfAgAAHcIAAA2 AAAAAAAAAAAA
AAAAAAE3AABleGFtcGxlcy5yd3QuY3VzdG9tL2Jpbi9yZXNvdXJjZXMvcnd0 L3dpZGdldHMv
bG9nby5naWZQSwECFAAUAAgACAAEq1M4nY8uNEoAAABtAAAAJAAAAAAAAAAA AAAAAADhPwAA
ZXhhbXBsZXMucnd0LmN1c3RvbS9idWlsZC5wcm9wZXJ0aWVzUEsBAhQAFAAI AAgABKtTOBzj
KJ9xAwAAFA0AAC4AAAAAAAAAAAAAAAAAfUAAAGV4YW1wbGVzLnJ3dC5jdXN0 b20vZXhhbXBs
ZXMucnd0LmN1c3RvbS5sYXVuY2hQSwECFAAUAAgACAAEq1M42htElHwIAAB3 CAAAIgAAAAAA
AAAAAAAAAABKRAAAZXhhbXBsZXMucnd0LmN1c3RvbS9pY29ucy9sb2dvLmdp ZlBLAQIUABQA
CAAIAASrUzgJQyqFKQIAAFoHAABHAAAAAAAAAAAAAAAAABZNAABleGFtcGxl cy5yd3QuY3Vz
dG9tL2pzL2V4YW1wbGVzL3J3dC9jdXN0b20vd2lkZ2V0cy9BcHBsaWNhdGlv bkhlYWRlci5q
c1BLAQIUABQACAAIAASrUzgtezo29QUAAPAFAABBAAAAAAAAAAAAAAAAALRP AABleGFtcGxl
cy5yd3QuY3VzdG9tL2pzL3Jlc291cmNlcy9yd3Qvd2lkZ2V0cy9oZWFkZXJC Z0dyYWRpZW50
LmdpZlBLAQIUABQACAAIAASrUzjaG0SUfAgAAHcIAAA1AAAAAAAAAAAAAAAA ABhWAABleGFt
cGxlcy5yd3QuY3VzdG9tL2pzL3Jlc291cmNlcy9yd3Qvd2lkZ2V0cy9sb2dv LmdpZlBLAQIU
ABQACAAIAASrUziYWE3QXQEAACQFAAAeAAAAAAAAAAAAAAAAAPdeAABleGFt cGxlcy5yd3Qu
Y3VzdG9tL3BsdWdpbi54bWxQSwECFAAUAAgACAAEq1M4J1YGKAwCAAB/BQAA OgAAAAAAAAAA
AAAAAACgYAAAZXhhbXBsZXMucnd0LmN1c3RvbS9zcmMvZXhhbXBsZXMvcnd0 L2N1c3RvbS9B
Y3RpdmF0b3IuamF2YVBLAQIUABQACAAIAASrUziVRrpuGgEAAPgBAAA8AAAA AAAAAAAAAAAA
ABRjAABleGFtcGxlcy5yd3QuY3VzdG9tL3NyYy9leGFtcGxlcy9yd3QvY3Vz dG9tL0FwcGxp
Y2F0aW9uLmphdmFQSwECFAAUAAgACAAEq1M41X6TVSQCAABnBQAATAAAAAAA AAAAAAAAAACY
ZAAAZXhhbXBsZXMucnd0LmN1c3RvbS9zcmMvZXhhbXBsZXMvcnd0L2N1c3Rv bS9BcHBsaWNh
dGlvbkFjdGlvbkJhckFkdmlzb3IuamF2YVBLAQIUABQACAAIAASrUzjo1Ikg PAEAANwCAABM
AAAAAAAAAAAAAAAAADZnAABleGFtcGxlcy5yd3QuY3VzdG9tL3NyYy9leGFt cGxlcy9yd3Qv
Y3VzdG9tL0FwcGxpY2F0aW9uV29ya2JlbmNoQWR2aXNvci5qYXZhUEsBAhQA FAAIAAgABKtT
OIiPxcHaBQAAXBMAAFIAAAAAAAAAAAAAAAAA7GgAAGV4YW1wbGVzLnJ3dC5j dXN0b20vc3Jj
L2V4YW1wbGVzL3J3dC9jdXN0b20vQXBwbGljYXRpb25Xb3JrYmVuY2hXaW5k b3dBZHZpc29y
LmphdmFQSwECFAAUAAgACAAEq1M4QnwVHCQBAAAJAgAAPAAAAAAAAAAAAAAA AABGbwAAZXhh
bXBsZXMucnd0LmN1c3RvbS9zcmMvZXhhbXBsZXMvcnd0L2N1c3RvbS9QZXJz cGVjdGl2ZS5q
YXZhUEsBAhQAFAAIAAgABKtTONlwFf5GAwAAcQgAADUAAAAAAAAAAAAAAAAA 1HAAAGV4YW1w
bGVzLnJ3dC5jdXN0b20vc3JjL2V4YW1wbGVzL3J3dC9jdXN0b20vVmlldy5q YXZhUEsBAhQA
FAAIAAgABKtTOLMyh7LnAAAADgIAAHIAAAAAAAAAAAAAAAAAfXQAAGV4YW1w bGVzLnJ3dC5j
dXN0b20vc3JjL2V4YW1wbGVzL3J3dC9jdXN0b20vaW50ZXJuYWwvd2lkZ2V0 cy9hcHBsaWNh
dGlvbmhlYWRlcmtpdC9BcHBsaWNhdGlvbkhlYWRlci5hcHBlYXJhbmNlcy5q c1BLAQIUABQA
CAAIAASrUzgCcAIlvwAAABUBAABtAAAAAAAAAAAAAAAAAAR2AABleGFtcGxl cy5yd3QuY3Vz
dG9tL3NyYy9leGFtcGxlcy9yd3QvY3VzdG9tL2ludGVybmFsL3dpZGdldHMv YXBwbGljYXRp
b25oZWFkZXJraXQvQXBwbGljYXRpb25IZWFkZXIudGhlbWUueG1sUEsBAhQA FAAIAAgABKtT
OG2ZbJT+AQAA0wgAAGsAAAAAAAAAAAAAAAAAXncAAGV4YW1wbGVzLnJ3dC5j dXN0b20vc3Jj
L2V4YW1wbGVzL3J3dC9jdXN0b20vaW50ZXJuYWwvd2lkZ2V0cy9hcHBsaWNh dGlvbmhlYWRl
cmtpdC9BcHBsaWNhdGlvbkhlYWRlckxDQS5qYXZhUEsBAhQAFAAIAAgABKtT OCgjeVufAQAA
tQUAAHAAAAAAAAAAAAAAAAAA9XkAAGV4YW1wbGVzLnJ3dC5jdXN0b20vc3Jj L2V4YW1wbGVz
L3J3dC9jdXN0b20vaW50ZXJuYWwvd2lkZ2V0cy9hcHBsaWNhdGlvbmhlYWRl cmtpdC9BcHBs
aWNhdGlvbkhlYWRlclJlc291cmNlLmphdmFQSwECFAAUAAgACAAEq1M4YtSA N0MGAADkEwAA
SgAAAAAAAAAAAAAAAAAyfAAAZXhhbXBsZXMucnd0LmN1c3RvbS9zcmMvZXhh bXBsZXMvcnd0
L2N1c3RvbS93aWRnZXRzL0FwcGxpY2F0aW9uSGVhZGVyLmphdmFQSwUGAAAA ACcAJwC5EQAA
7YIAAAAA
--------------060200000905030703080802--
Re: Custom widgets and Themes [message #74857 is a reply to message #74817] Wed, 20 February 2008 03:15 Go to previous messageGo to next message
Eclipse User
Originally posted by: fappel.innoopract.com

Hi,

I had a short look at your demo. You are mixing up two approaches to
create custom widgets. Either you use composition like you're doing in
the ApplicationHeader class, or you write a custom widget from scratch
that is completely build on a clientside javascript representation. The
widget instance itself works as stateholder on serverside.

Note that only the second approach currently allows individual theming
out of the box. But we are currently working on a enhancement of the
current theming mechanism that will allow to define style-class like
entries in the theme properties definitions. With that in place you will
also be able to style widgets created with composition.

By the way I didn't find the gradient fill in your code. Rendering
Gradients is currently not supported with RAP - so I was wondering if
some unsupported API sneeked into...


Ciao
Frank

-----Ursprüngliche Nachricht-----
Von: Anand Narasimhan [mailto:anandn@cisco.com]
Bereitgestellt: Mittwoch, 20. Februar 2008 06:25
Bereitgestellt in: eclipse.technology.rap
Unterhaltung: Custom widgets and Themes
Betreff: Custom widgets and Themes


Hi,

I am trying to write a custom widget to put a logo and text in a
Composite. I created a widget ApplicationHeader that extends composite
and created two labels (one for the logo and one for the text). I
created the LCA class, themes file and javascript files as explained in
the help documentation. I have also registered extensions for resources
and themablewidget.

The custom widget shows the logo and the text. Now I am trying to set
the background image (with gradient fill) for the composite and also
custom theme keys for the font for the title text. I have a few
questions. Basically I do not understand how all these different pieces
glue together. I looked at the various widgets defined in RAP and also
some examples posted in the newgroup. I still don't understand how all
these work together.

1. The background image for my custom widget and the gradient fill does
not show. I have defined the backgroundImage and backgroundRepeat
properties in the javascript files and also provided the apply method.
I have the background image file in resources directory under the plugin
directory.

2. How can I define custom theme keys for the title label widget. I
don't want to use the generic widget.font key. I want to define
somehting like applicationheader.title.font. How can I do that.

Thanks
Anand

--
____________________________________________________________ ____________
_________

Anand Narasimhan
anandn@cisco.com
Re: Custom widgets and Themes [message #74958 is a reply to message #74857] Wed, 20 February 2008 04:32 Go to previous messageGo to next message
Anand Narasimhan is currently offline Anand Narasimhan
Messages: 104
Registered: July 2009
Senior Member
Frank,

Thanks for the reply.

The reason I am doing this is to get gradient fill (since it is not
currently supported by RAP).

I got most of it to work. The LCA class was not getting invoked because
of package naming. Now I am able to see the logo, title and able to
change the title's font and foreground using theme file. But can't get
gradient to work.

I tried to copy the javascript code from qooxdoo It is is in
ApplicationHeader.js (in my plugin that I attached earler).

/**
* Mapping to native style property background-repeat.
*/
backgroundRepeat: {
check: "String",
nullable: true,
apply: "_applyBackgroundRepeat",
themeable: true
}
},

_applyBackgroundRepeat: function(value, old){
value ? this.setStyleProperty("backgroundRepeat", value) :
this.removeStyleProperty("backgroundRepeat");
}

I was trying to set the backgroundImage on my widget (which extends
composite) and set backgroundRepeat to "repeat-y".


I can't figure out what the targetPath should be in my theme xml file.
If I provide a "default" for image, I get an exception saying my image
file was not found. I have my image in
resource/widgets/applicationheader. If I specify this as the "default",
I get exception. Also, I don't understand where the image gets copied.
I looked into the target path. I don't see the image. I see it in
resource/Themes/Default/widgets/applicationheader directory.



One of the thing that I am trying to do is to let applications to
provide content for the application header. So I am creating an empty
composite in ApplicationHeader, which applications can use to add
content to the header. If I write my custom widget from scratch, will I
still be able to do this? How would I do that. Basically, I want a
method getHeaderContent() in ApplicationHeader that returns an empty
composite.

Anand

Frank Appel wrote:
> Hi,
>
> I had a short look at your demo. You are mixing up two approaches to
> create custom widgets. Either you use composition like you're doing in
> the ApplicationHeader class, or you write a custom widget from scratch
> that is completely build on a clientside javascript representation. The
> widget instance itself works as stateholder on serverside.
>
> Note that only the second approach currently allows individual theming
> out of the box. But we are currently working on a enhancement of the
> current theming mechanism that will allow to define style-class like
> entries in the theme properties definitions. With that in place you will
> also be able to style widgets created with composition.
>
> By the way I didn't find the gradient fill in your code. Rendering
> Gradients is currently not supported with RAP - so I was wondering if
> some unsupported API sneeked into...
>
>
> Ciao
> Frank
>
> -----Ursprüngliche Nachricht-----
> Von: Anand Narasimhan [mailto:anandn@cisco.com]
> Bereitgestellt: Mittwoch, 20. Februar 2008 06:25
> Bereitgestellt in: eclipse.technology.rap
> Unterhaltung: Custom widgets and Themes
> Betreff: Custom widgets and Themes
>
>
> Hi,
>
> I am trying to write a custom widget to put a logo and text in a
> Composite. I created a widget ApplicationHeader that extends composite
> and created two labels (one for the logo and one for the text). I
> created the LCA class, themes file and javascript files as explained in
> the help documentation. I have also registered extensions for resources
> and themablewidget.
>
> The custom widget shows the logo and the text. Now I am trying to set
> the background image (with gradient fill) for the composite and also
> custom theme keys for the font for the title text. I have a few
> questions. Basically I do not understand how all these different pieces
> glue together. I looked at the various widgets defined in RAP and also
> some examples posted in the newgroup. I still don't understand how all
> these work together.
>
> 1. The background image for my custom widget and the gradient fill does
> not show. I have defined the backgroundImage and backgroundRepeat
> properties in the javascript files and also provided the apply method.
> I have the background image file in resources directory under the plugin
> directory.
>
> 2. How can I define custom theme keys for the title label widget. I
> don't want to use the generic widget.font key. I want to define
> somehting like applicationheader.title.font. How can I do that.
>
> Thanks
> Anand
>
> --
> ____________________________________________________________ ____________
> _________
>
> Anand Narasimhan
> anandn@cisco.com
>


--
____________________________________________________________ _____________________

Anand Narasimhan
anandn@cisco.com
Re: Custom widgets and Themes [message #75281 is a reply to message #74857] Sat, 23 February 2008 02:50 Go to previous messageGo to next message
Anand Narasimhan is currently offline Anand Narasimhan
Messages: 104
Registered: July 2009
Senior Member
Hi,

If, in my <Widget>.theme.xml I have define the following, I get
IllegalArgumentException saying the image file is not found.

<image name="applicationheader.bgimage"
description="Background image for application header"
targetPath="applicationheader/headerBgGradient.gif"
default="resource/widgets/applicationheader/headerBgGradient.gif "/>


I looked at the registerThemeableWidgetImages method, it is trying to
load the image using the ThemeManager's class loader.

ClassLoader classLoader = ThemeManager.class.getClassLoader();

What is the purpose of the "default" attribute in the themes xml file?
If the theme manager is trying to load the image, will it find the
image, since the ThemeManager's class loader is being used, will the
resource defined in my plugin be visible to the theme manager's class
loader?


java.lang.IllegalArgumentException: Resource
'resource/widgets/applicationheader/headerBgGradient.gif' not found for
theme 'RAP Default Theme'
at
org.eclipse.rwt.internal.theme.ThemeManager.registerThemeabl eWidgetImages(ThemeManager.java:764)
at
org.eclipse.rwt.internal.theme.ThemeManager.registerThemeFil es(ThemeManager.java:678)
at
org.eclipse.rwt.internal.theme.ThemeManager.registerResource s(ThemeManager.java:329)
at
org.eclipse.swt.internal.widgets.displaykit.DisplayLCA.write Libraries(DisplayLCA.java:218)
at
org.eclipse.rwt.internal.lifecycle.DisplayUtil.writeLibrarie s(DisplayUtil.java:66)
at
org.eclipse.rwt.internal.service.LifeCycleServiceHandlerConf igurer.getLibraries(LifeCycleServiceHandlerConfigurer.java:2 02)
at
org.eclipse.rwt.internal.service.LifeCycleServiceHandlerConf igurer.getTemplateOfStartupPage(LifeCycleServiceHandlerConfi gurer.java:60)
at
org.eclipse.rwt.internal.service.BrowserSurvey.load(BrowserS urvey.java:123)
at
org.eclipse.rwt.internal.service.BrowserSurvey.renderScript( BrowserSurvey.java:90)
at
org.eclipse.rwt.internal.service.BrowserSurvey.sendBrowserSu rvey(BrowserSurvey.java:51)
at
org.eclipse.rwt.internal.service.LifeCycleServiceHandler.int ernalService(LifeCycleServiceHandler.java:180)
at
org.eclipse.rwt.internal.service.LifeCycleServiceHandler.acc ess$1(LifeCycleServiceHandler.java:168)
at
org.eclipse.rwt.internal.service.LifeCycleServiceHandler$Lif eCycleServiceHandlerSync.doService(LifeCycleServiceHandler.j ava:133)
at
org.eclipse.rwt.internal.lifecycle.RWTLifeCycleServiceHandle rSync.serviceInternal(RWTLifeCycleServiceHandlerSync.java:45 )
at
org.eclipse.rwt.internal.lifecycle.RWTLifeCycleServiceHandle rSync.service(RWTLifeCycleServiceHandlerSync.java:34)
at
org.eclipse.rwt.internal.service.LifeCycleServiceHandler.ser vice(LifeCycleServiceHandler.java:140)
at
org.eclipse.rwt.internal.service.ServiceManager$HandlerDispa tcher.service(ServiceManager.java:100)
at org.eclipse.rwt.internal.engine.RWTDelegate.doPost(RWTDelega te.java:61)
at
org.eclipse.ui.internal.servlet.RequestHandler.service(Reque stHandler.java:52)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at
org.eclipse.equinox.http.servlet.internal.ServletRegistratio n.handleRequest(ServletRegistration.java:90)
at
org.eclipse.equinox.http.servlet.internal.ProxyServlet.proce ssAlias(ProxyServlet.java:111)
at
org.eclipse.equinox.http.servlet.internal.ProxyServlet.servi ce(ProxyServlet.java:59)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at
org.eclipse.equinox.http.jetty.internal.HttpServerManager$In ternalHttpServiceServlet.service(HttpServerManager.java:270)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder .java:428)
at
org.mortbay.jetty.servlet.ServletHandler.dispatch(ServletHan dler.java:677)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandl er.java:568)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
at org.mortbay.http.HttpServer.service(HttpServer.java:909)
at org.mortbay.http.HttpConnection.service(HttpConnection.java: 820)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.ja va:986)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:8 37)
at
org.mortbay.http.SocketListener.handleConnection(SocketListe ner.java:245)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:3 57)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:5 34)

Thanks
Anand


Frank Appel wrote:
> Hi,
>
> I had a short look at your demo. You are mixing up two approaches to
> create custom widgets. Either you use composition like you're doing in
> the ApplicationHeader class, or you write a custom widget from scratch
> that is completely build on a clientside javascript representation. The
> widget instance itself works as stateholder on serverside.
>
> Note that only the second approach currently allows individual theming
> out of the box. But we are currently working on a enhancement of the
> current theming mechanism that will allow to define style-class like
> entries in the theme properties definitions. With that in place you will
> also be able to style widgets created with composition.
>
> By the way I didn't find the gradient fill in your code. Rendering
> Gradients is currently not supported with RAP - so I was wondering if
> some unsupported API sneeked into...
>
>
> Ciao
> Frank
>
> -----Ursprüngliche Nachricht-----
> Von: Anand Narasimhan [mailto:anandn@cisco.com]
> Bereitgestellt: Mittwoch, 20. Februar 2008 06:25
> Bereitgestellt in: eclipse.technology.rap
> Unterhaltung: Custom widgets and Themes
> Betreff: Custom widgets and Themes
>
>
> Hi,
>
> I am trying to write a custom widget to put a logo and text in a
> Composite. I created a widget ApplicationHeader that extends composite
> and created two labels (one for the logo and one for the text). I
> created the LCA class, themes file and javascript files as explained in
> the help documentation. I have also registered extensions for resources
> and themablewidget.
>
> The custom widget shows the logo and the text. Now I am trying to set
> the background image (with gradient fill) for the composite and also
> custom theme keys for the font for the title text. I have a few
> questions. Basically I do not understand how all these different pieces
> glue together. I looked at the various widgets defined in RAP and also
> some examples posted in the newgroup. I still don't understand how all
> these work together.
>
> 1. The background image for my custom widget and the gradient fill does
> not show. I have defined the backgroundImage and backgroundRepeat
> properties in the javascript files and also provided the apply method.
> I have the background image file in resources directory under the plugin
> directory.
>
> 2. How can I define custom theme keys for the title label widget. I
> don't want to use the generic widget.font key. I want to define
> somehting like applicationheader.title.font. How can I do that.
>
> Thanks
> Anand
>
> --
> ____________________________________________________________ ____________
> _________
>
> Anand Narasimhan
> anandn@cisco.com
>


--
____________________________________________________________ _____________________

Anand Narasimhan
anandn@cisco.com
Re: Custom widgets and Themes [message #75331 is a reply to message #75281] Mon, 25 February 2008 05:17 Go to previous messageGo to next message
Eclipse User
Originally posted by: rsternberg.innoopract.com

Hi Anand,

you're right, this is a bug in the ThemeManager. Thanks for pointing this
out. I filed https://bugs.eclipse.org/bugs/show_bug.cgi?id=220162.
This will be fixed with high priority, probably today or tomorrow.

Best,
Ralf

Anand Narasimhan wrote:
> Hi,
>
> If, in my <Widget>.theme.xml I have define the following, I get
> IllegalArgumentException saying the image file is not found.
>
> <image name="applicationheader.bgimage"
> description="Background image for application header"
> targetPath="applicationheader/headerBgGradient.gif"
> default="resource/widgets/applicationheader/headerBgGradient.gif "/>
>
>
> I looked at the registerThemeableWidgetImages method, it is trying to
> load the image using the ThemeManager's class loader.
>
> ClassLoader classLoader = ThemeManager.class.getClassLoader();
>
> What is the purpose of the "default" attribute in the themes xml file?
> If the theme manager is trying to load the image, will it find the
> image, since the ThemeManager's class loader is being used, will the
> resource defined in my plugin be visible to the theme manager's class
> loader?
>
>
> java.lang.IllegalArgumentException: Resource
> 'resource/widgets/applicationheader/headerBgGradient.gif' not found for
> theme 'RAP Default Theme'
> at
>
org.eclipse.rwt.internal.theme.ThemeManager.registerThemeabl eWidgetImages(ThemeManager.java:764)
> at
>
org.eclipse.rwt.internal.theme.ThemeManager.registerThemeFil es(ThemeManager.java:678)
> at
>
org.eclipse.rwt.internal.theme.ThemeManager.registerResource s(ThemeManager.java:329)
> at
>
org.eclipse.swt.internal.widgets.displaykit.DisplayLCA.write Libraries(DisplayLCA.java:218)
> at
>
org.eclipse.rwt.internal.lifecycle.DisplayUtil.writeLibrarie s(DisplayUtil.java:66)
> at
>
org.eclipse.rwt.internal.service.LifeCycleServiceHandlerConf igurer.getLibraries(LifeCycleServiceHandlerConfigurer.java:2 02)
> at
>
org.eclipse.rwt.internal.service.LifeCycleServiceHandlerConf igurer.getTemplateOfStartupPage(LifeCycleServiceHandlerConfi gurer.java:60)
> at
>
org.eclipse.rwt.internal.service.BrowserSurvey.load(BrowserS urvey.java:123)
> at
>
org.eclipse.rwt.internal.service.BrowserSurvey.renderScript( BrowserSurvey.java:90)
> at
>
org.eclipse.rwt.internal.service.BrowserSurvey.sendBrowserSu rvey(BrowserSurvey.java:51)
> at
>
org.eclipse.rwt.internal.service.LifeCycleServiceHandler.int ernalService(LifeCycleServiceHandler.java:180)
> at
> org.eclipse.rwt.internal.service.LifeCycleServiceHandler.acc ess$
(LifeCycleServiceHandler.java:168)
> at
>
org.eclipse.rwt.internal.service.LifeCycleServiceHandler$Lif eCycleServiceHandlerSync.doService(LifeCycleServiceHandler.j ava:133)
> at
>
org.eclipse.rwt.internal.lifecycle.RWTLifeCycleServiceHandle rSync.serviceInternal(RWTLifeCycleServiceHandlerSync.java:45 )
> at
>
org.eclipse.rwt.internal.lifecycle.RWTLifeCycleServiceHandle rSync.service(RWTLifeCycleServiceHandlerSync.java:34)
> at
>
org.eclipse.rwt.internal.service.LifeCycleServiceHandler.ser vice(LifeCycleServiceHandler.java:140)
> at
>
org.eclipse.rwt.internal.service.ServiceManager$HandlerDispa tcher.service(ServiceManager.java:100)
> at org.eclipse.rwt.internal.engine.RWTDelegate.doPost(RWTDelega te.java:61)
> at
>
org.eclipse.ui.internal.servlet.RequestHandler.service(Reque stHandler.java:52)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> at
>
org.eclipse.equinox.http.servlet.internal.ServletRegistratio n.handleRequest(ServletRegistration.java:90)
> at
>
org.eclipse.equinox.http.servlet.internal.ProxyServlet.proce ssAlias(ProxyServlet.java:111)
> at
>
org.eclipse.equinox.http.servlet.internal.ProxyServlet.servi ce(ProxyServlet.java:59)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> at
>
org.eclipse.equinox.http.jetty.internal.HttpServerManager$In ternalHttpServiceServlet.service(HttpServerManager.java:270)
> at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder .java:428)
> at
> org.mortbay.jetty.servlet.ServletHandler.dispatch(ServletHan dler.java:677)
> at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandl er.java:568)
> at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at
> org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at
> org.mortbay.http.HttpServer.service(HttpServer.java:909) at
> org.mortbay.http.HttpConnection.service(HttpConnection.java: 820) at
> org.mortbay.http.HttpConnection.handleNext(HttpConnection.ja va:986) at
> org.mortbay.http.HttpConnection.handle(HttpConnection.java:8 37) at
> org.mortbay.http.SocketListener.handleConnection(SocketListe ner.java:245)
> at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:3 57)
> at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:5 34)
>
> Thanks
> Anand
>
>
> Frank Appel wrote:
>> Hi,
>>
>> I had a short look at your demo. You are mixing up two approaches to
>> create custom widgets. Either you use composition like you're doing in
>> the ApplicationHeader class, or you write a custom widget from scratch
>> that is completely build on a clientside javascript representation. The
>> widget instance itself works as stateholder on serverside.
>>
>> Note that only the second approach currently allows individual theming
>> out of the box. But we are currently working on a enhancement of the
>> current theming mechanism that will allow to define style-class like
>> entries in the theme properties definitions. With that in place you will
>> also be able to style widgets created with composition.
>>
>> By the way I didn't find the gradient fill in your code. Rendering
>> Gradients is currently not supported with RAP - so I was wondering if
>> some unsupported API sneeked into...
>>
>>
>> Ciao
>> Frank
>>
>> -----Ursprüngliche Nachricht-----
>> Von: Anand Narasimhan [mailto:anandn@cisco.com]
>> Bereitgestellt: Mittwoch, 20. Februar 2008 06:25
>> Bereitgestellt in: eclipse.technology.rap
>> Unterhaltung: Custom widgets and Themes
>> Betreff: Custom widgets and Themes
>>
>>
>> Hi,
>>
>> I am trying to write a custom widget to put a logo and text in a
>> Composite. I created a widget ApplicationHeader that extends composite
>> and created two labels (one for the logo and one for the text). I
>> created the LCA class, themes file and javascript files as explained in
>> the help documentation. I have also registered extensions for resources
>> and themablewidget.
>>
>> The custom widget shows the logo and the text. Now I am trying to set
>> the background image (with gradient fill) for the composite and also
>> custom theme keys for the font for the title text. I have a few
>> questions. Basically I do not understand how all these different pieces
>> glue together. I looked at the various widgets defined in RAP and also
>> some examples posted in the newgroup. I still don't understand how all
>> these work together.
>>
>> 1. The background image for my custom widget and the gradient fill does
>> not show. I have defined the backgroundImage and backgroundRepeat
>> properties in the javascript files and also provided the apply method.
>> I have the background image file in resources directory under the plugin
>> directory.
>>
>> 2. How can I define custom theme keys for the title label widget. I
>> don't want to use the generic widget.font key. I want to define
>> somehting like applicationheader.title.font. How can I do that.
>>
>> Thanks
>> Anand
>>
>> --
>> ____________________________________________________________ ____________
>> _________
>>
>> Anand Narasimhan
>> anandn@cisco.com
>>
>
>
Re: Custom widgets and Themes [message #75410 is a reply to message #75331] Mon, 25 February 2008 12:56 Go to previous messageGo to next message
Anand Narasimhan is currently offline Anand Narasimhan
Messages: 104
Registered: July 2009
Senior Member
Ralf,

Thanks for filing the bug and fixing it.
Looking forward to getting the fix.

Thanks
Anand

Ralf Sternberg wrote:
> Hi Anand,
>
> you're right, this is a bug in the ThemeManager. Thanks for pointing this
> out. I filed https://bugs.eclipse.org/bugs/show_bug.cgi?id=220162.
> This will be fixed with high priority, probably today or tomorrow.
>
> Best,
> Ralf
>
> Anand Narasimhan wrote:
>> Hi,
>>
>> If, in my <Widget>.theme.xml I have define the following, I get
>> IllegalArgumentException saying the image file is not found.
>>
>> <image name="applicationheader.bgimage"
>> description="Background image for application header"
>> targetPath="applicationheader/headerBgGradient.gif"
>> default="resource/widgets/applicationheader/headerBgGradient.gif "/>
>>
>>
>> I looked at the registerThemeableWidgetImages method, it is trying to
>> load the image using the ThemeManager's class loader.
>>
>> ClassLoader classLoader = ThemeManager.class.getClassLoader();
>>
>> What is the purpose of the "default" attribute in the themes xml file?
>> If the theme manager is trying to load the image, will it find the
>> image, since the ThemeManager's class loader is being used, will the
>> resource defined in my plugin be visible to the theme manager's class
>> loader?
>>
>>
>> java.lang.IllegalArgumentException: Resource
>> 'resource/widgets/applicationheader/headerBgGradient.gif' not found for
>> theme 'RAP Default Theme'
>> at
>>
> org.eclipse.rwt.internal.theme.ThemeManager.registerThemeabl eWidgetImages(ThemeManager.java:764)
>> at
>>
> org.eclipse.rwt.internal.theme.ThemeManager.registerThemeFil es(ThemeManager.java:678)
>> at
>>
> org.eclipse.rwt.internal.theme.ThemeManager.registerResource s(ThemeManager.java:329)
>> at
>>
> org.eclipse.swt.internal.widgets.displaykit.DisplayLCA.write Libraries(DisplayLCA.java:218)
>> at
>>
> org.eclipse.rwt.internal.lifecycle.DisplayUtil.writeLibrarie s(DisplayUtil.java:66)
>> at
>>
> org.eclipse.rwt.internal.service.LifeCycleServiceHandlerConf igurer.getLibraries(LifeCycleServiceHandlerConfigurer.java:2 02)
>> at
>>
> org.eclipse.rwt.internal.service.LifeCycleServiceHandlerConf igurer.getTemplateOfStartupPage(LifeCycleServiceHandlerConfi gurer.java:60)
>> at
>>
> org.eclipse.rwt.internal.service.BrowserSurvey.load(BrowserS urvey.java:123)
>> at
>>
> org.eclipse.rwt.internal.service.BrowserSurvey.renderScript( BrowserSurvey.java:90)
>> at
>>
> org.eclipse.rwt.internal.service.BrowserSurvey.sendBrowserSu rvey(BrowserSurvey.java:51)
>> at
>>
> org.eclipse.rwt.internal.service.LifeCycleServiceHandler.int ernalService(LifeCycleServiceHandler.java:180)
>> at
>> org.eclipse.rwt.internal.service.LifeCycleServiceHandler.acc ess$
> (LifeCycleServiceHandler.java:168)
>> at
>>
> org.eclipse.rwt.internal.service.LifeCycleServiceHandler$Lif eCycleServiceHandlerSync.doService(LifeCycleServiceHandler.j ava:133)
>> at
>>
> org.eclipse.rwt.internal.lifecycle.RWTLifeCycleServiceHandle rSync.serviceInternal(RWTLifeCycleServiceHandlerSync.java:45 )
>> at
>>
> org.eclipse.rwt.internal.lifecycle.RWTLifeCycleServiceHandle rSync.service(RWTLifeCycleServiceHandlerSync.java:34)
>> at
>>
> org.eclipse.rwt.internal.service.LifeCycleServiceHandler.ser vice(LifeCycleServiceHandler.java:140)
>> at
>>
> org.eclipse.rwt.internal.service.ServiceManager$HandlerDispa tcher.service(ServiceManager.java:100)
>> at org.eclipse.rwt.internal.engine.RWTDelegate.doPost(RWTDelega te.java:61)
>> at
>>
> org.eclipse.ui.internal.servlet.RequestHandler.service(Reque stHandler.java:52)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>> at
>>
> org.eclipse.equinox.http.servlet.internal.ServletRegistratio n.handleRequest(ServletRegistration.java:90)
>> at
>>
> org.eclipse.equinox.http.servlet.internal.ProxyServlet.proce ssAlias(ProxyServlet.java:111)
>> at
>>
> org.eclipse.equinox.http.servlet.internal.ProxyServlet.servi ce(ProxyServlet.java:59)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>> at
>>
> org.eclipse.equinox.http.jetty.internal.HttpServerManager$In ternalHttpServiceServlet.service(HttpServerManager.java:270)
>> at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder .java:428)
>> at
>> org.mortbay.jetty.servlet.ServletHandler.dispatch(ServletHan dler.java:677)
>> at
>> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandl er.java:568)
>> at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at
>> org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at
>> org.mortbay.http.HttpServer.service(HttpServer.java:909) at
>> org.mortbay.http.HttpConnection.service(HttpConnection.java: 820) at
>> org.mortbay.http.HttpConnection.handleNext(HttpConnection.ja va:986) at
>> org.mortbay.http.HttpConnection.handle(HttpConnection.java:8 37) at
>> org.mortbay.http.SocketListener.handleConnection(SocketListe ner.java:245)
>> at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:3 57)
>> at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:5 34)
>>
>> Thanks
>> Anand
>>
>>
>> Frank Appel wrote:
>>> Hi,
>>>
>>> I had a short look at your demo. You are mixing up two approaches to
>>> create custom widgets. Either you use composition like you're doing in
>>> the ApplicationHeader class, or you write a custom widget from scratch
>>> that is completely build on a clientside javascript representation. The
>>> widget instance itself works as stateholder on serverside.
>>>
>>> Note that only the second approach currently allows individual theming
>>> out of the box. But we are currently working on a enhancement of the
>>> current theming mechanism that will allow to define style-class like
>>> entries in the theme properties definitions. With that in place you will
>>> also be able to style widgets created with composition.
>>>
>>> By the way I didn't find the gradient fill in your code. Rendering
>>> Gradients is currently not supported with RAP - so I was wondering if
>>> some unsupported API sneeked into...
>>>
>>>
>>> Ciao
>>> Frank
>>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: Anand Narasimhan [mailto:anandn@cisco.com]
>>> Bereitgestellt: Mittwoch, 20. Februar 2008 06:25
>>> Bereitgestellt in: eclipse.technology.rap
>>> Unterhaltung: Custom widgets and Themes
>>> Betreff: Custom widgets and Themes
>>>
>>>
>>> Hi,
>>>
>>> I am trying to write a custom widget to put a logo and text in a
>>> Composite. I created a widget ApplicationHeader that extends composite
>>> and created two labels (one for the logo and one for the text). I
>>> created the LCA class, themes file and javascript files as explained in
>>> the help documentation. I have also registered extensions for resources
>>> and themablewidget.
>>>
>>> The custom widget shows the logo and the text. Now I am trying to set
>>> the background image (with gradient fill) for the composite and also
>>> custom theme keys for the font for the title text. I have a few
>>> questions. Basically I do not understand how all these different pieces
>>> glue together. I looked at the various widgets defined in RAP and also
>>> some examples posted in the newgroup. I still don't understand how all
>>> these work together.
>>>
>>> 1. The background image for my custom widget and the gradient fill does
>>> not show. I have defined the backgroundImage and backgroundRepeat
>>> properties in the javascript files and also provided the apply method.
>>> I have the background image file in resources directory under the plugin
>>> directory.
>>>
>>> 2. How can I define custom theme keys for the title label widget. I
>>> don't want to use the generic widget.font key. I want to define
>>> somehting like applicationheader.title.font. How can I do that.
>>>
>>> Thanks
>>> Anand
>>>
>>> --
>>> ____________________________________________________________ ____________
>>> _________
>>>
>>> Anand Narasimhan
>>> anandn@cisco.com
>>>
>>
>


--
____________________________________________________________ _____________________

Anand Narasimhan
anandn@cisco.com
Re: Custom widgets and Themes [message #75529 is a reply to message #75410] Tue, 26 February 2008 05:56 Go to previous messageGo to next message
Eclipse User
Originally posted by: rsternberg.innoopract.com

Hi Anand,

Anand Narasimhan wrote:
> Thanks for filing the bug and fixing it.
> Looking forward to getting the fix.

The bug is fixed in CVS head. Please also note that since 1.1M2, you don't
need to specify the targetPath attribute in the theme.xml file anymore (See
also
http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse. rap.help/help/html/advanced/theming-custom.html)

Best Regards,
Ralf
Re: Custom widgets and Themes [message #75727 is a reply to message #75529] Wed, 27 February 2008 00:01 Go to previous messageGo to next message
Anand Narasimhan is currently offline Anand Narasimhan
Messages: 104
Registered: July 2009
Senior Member
Ralf,

Thanks. I will try the latest code.

Anand

Ralf Sternberg wrote:
> Hi Anand,
>
> Anand Narasimhan wrote:
>> Thanks for filing the bug and fixing it.
>> Looking forward to getting the fix.
>
> The bug is fixed in CVS head. Please also note that since 1.1M2, you don't
> need to specify the targetPath attribute in the theme.xml file anymore (See
> also
> http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse. rap.help/help/html/advanced/theming-custom.html)
>
> Best Regards,
> Ralf


--
____________________________________________________________ _____________________

Anand Narasimhan
anandn@cisco.com
Re: Custom widgets and Themes [message #75744 is a reply to message #75727] Wed, 27 February 2008 00:39 Go to previous messageGo to next message
Anand Narasimhan is currently offline Anand Narasimhan
Messages: 104
Registered: July 2009
Senior Member
Ralf,

I got the latest sources from CVS. I don't see the changes. I took it
from eclipse.org from /cvsroot/technology. Is that the right location?

Thanks
Anand

Anand Narasimhan wrote:
> Ralf,
>
> Thanks. I will try the latest code.
>
> Anand
>
> Ralf Sternberg wrote:
>> Hi Anand,
>>
>> Anand Narasimhan wrote:
>>> Thanks for filing the bug and fixing it.
>>> Looking forward to getting the fix.
>>
>> The bug is fixed in CVS head. Please also note that since 1.1M2, you
>> don't
>> need to specify the targetPath attribute in the theme.xml file anymore
>> (See
>> also
>> http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse. rap.help/help/html/advanced/theming-custom.html)
>>
>>
>> Best Regards,
>> Ralf
>
>


--
____________________________________________________________ _____________________

Anand Narasimhan
anandn@cisco.com
Re: Custom widgets and Themes [message #75761 is a reply to message #75744] Wed, 27 February 2008 01:28 Go to previous messageGo to next message
Anand Narasimhan is currently offline Anand Narasimhan
Messages: 104
Registered: July 2009
Senior Member
Ralf,

I got the latest from CVS (again). This time it worked. I don't see the
exception anymore. But the image does not show up in my UI. I have a
custom component that extends Composite and I have the appearence defined as

appearances = {
// BEGIN TEMPLATE //

"application-header": {
style: function(states){
return {
backgroundImage: "aapplicationheader.bgimage",

};
}
},

"application-header-title": {
style: function(states){
return {
textColor: "applicationheader.title.foreground",
backgroundColor: null
};
}
}

// END TEMPLATE //
};

the textColor works, but the backgroundImage does not.

Thanks
Anand

Anand Narasimhan wrote:
> Ralf,
>
> I got the latest sources from CVS. I don't see the changes. I took it
> from eclipse.org from /cvsroot/technology. Is that the right location?
>
> Thanks
> Anand
>
> Anand Narasimhan wrote:
>> Ralf,
>>
>> Thanks. I will try the latest code.
>>
>> Anand
>>
>> Ralf Sternberg wrote:
>>> Hi Anand,
>>>
>>> Anand Narasimhan wrote:
>>>> Thanks for filing the bug and fixing it.
>>>> Looking forward to getting the fix.
>>>
>>> The bug is fixed in CVS head. Please also note that since 1.1M2, you
>>> don't
>>> need to specify the targetPath attribute in the theme.xml file
>>> anymore (See
>>> also
>>> http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse. rap.help/help/html/advanced/theming-custom.html)
>>>
>>>
>>> Best Regards,
>>> Ralf
>>
>>
>
>


--
____________________________________________________________ _____________________

Anand Narasimhan
anandn@cisco.com
Re: Custom widgets and Themes [message #76217 is a reply to message #75744] Sun, 02 March 2008 22:46 Go to previous message
Eclipse User
Originally posted by: allen_liu.i-len.com

Anand Narasimhan wrote:

> Ralf,
>
> I got the latest sources from CVS. I don't see the changes. I took it
> from eclipse.org from /cvsroot/technology. Is that the right location?
>
> Thanks
> Anand
>
> Anand Narasimhan wrote:
>> Ralf,
>>
>> Thanks. I will try the latest code.
>>
>> Anand
>>
>> Ralf Sternberg wrote:
>>> Hi Anand,
>>>
>>> Anand Narasimhan wrote:
>>>> Thanks for filing the bug and fixing it.
>>>> Looking forward to getting the fix.
>>>
>>> The bug is fixed in CVS head. Please also note that since 1.1M2, you
>>> don't
>>> need to specify the targetPath attribute in the theme.xml file anymore
>>> (See
>>> also
>>>
http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse. rap.help/help/html/advanced/theming-custom.html)
>>>
>>>
>>> Best Regards,
>>> Ralf
>>
>>
>
>

Hi Anand:
Have you complete the Custom Widgets? I want to implement a login page which
can set background images ,fill gradient for the composite .can you give me
some advice ?

thanks

allen
Previous Topic:Possible bug in HyperLink
Next Topic:Layout problem - GridLayout
Goto Forum:
  


Current Time: Fri Jul 25 05:03:21 EDT 2014

Powered by FUDForum. Page generated in 0.03189 seconds