Home » Modeling » EMF » Subtle Error detected?
Subtle Error detected? [message #414515] |
Fri, 09 November 2007 23:15 |
Philipp Kutter Messages: 306 Registered: July 2009 |
Senior Member |
|
|
This is a multi-part message in MIME format.
--------------030902010801080902070700
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Hi.
When I separate the models from the code completely,
by letting the code to be generated into another project,
.... .base, similar to the .edit and .editor, everything
work, except at one place:
The generated updateProblemIndication() generates a string
with the id of the editor plugin. Unfortunatly, this is done by
taking the pluginid of the model code (in my case the .base variant)
and adding .editor, rather than really taking the .editor plugin.
I attach an example. There in updateProblemIndication() of
EditoridReferenceWrongEditor.java, it generates
"org.examples.EditoridReferenceWrong.base.editor"
rather than
"org.examples.EditoridReferenceWrong.editor"
The same problem exists in analyzeResourceProblems(...
There twice the wrong string is generated.
Shall I open a bugzilla?
Best, Philipp
--------------030902010801080902070700
Content-Type: application/x-zip-compressed;
name="EditoridReferenceWrong.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="EditoridReferenceWrong.zip"
UEsDBBQACAAIANkBajcAAAAAAAAAAAAAAAAsAAAAb3JnLmV4YW1wbGVzLkVk aXRvcmlkUmVm
ZXJlbmNlV3JvbmcvLnByb2plY3StkTtPAzEQhGuQ+A/R9djQUTgXKTw6ECIg amNvzCK/tPah
/Hxs4xBOaSjoPOOZ/fwQq52zi0+ghMEvh0t2MSzAq6DRm+Xw8nx3fjWsxrNT ESl8gMo3kBRh
zCVd3BPhpYMxkGGwky5aSOxWYw6E+gm2QGUUvFLwRvCWrBUVnAOfR8H3q+r2 +akJPlNvE1q9
iaCq6vK6VKXXzfl9CmUxJmBRA7uXHreQ8rrmgQ4nKAVJZqro1DWfG4IfQf6M 3ah3cPJfoN3Z
X73w8kTQ09/iCP9oJ4P+oW1Wegu1WYf2z/vOf/MLUEsHCDjK6kriAAAADAIA AFBLAwQUAAgA
CADZAWo3AAAAAAAAAAAAAAAAOAAAAG9yZy5leGFtcGxlcy5FZGl0b3JpZFJl ZmVyZW5jZVdy
b25nL01FVEEtSU5GL01BTklGRVNULk1G803My0xLLS7RDUstKs7Mz7NSMNQz 4HIqzUvJSdX1
hUrC5YxgMn6JualWCq4pmSX5RZkpQalpqUWpecmp4UX5eekKATml6bqZeTC1 wZW5Sfk5mckQ
PflF6XqpFYm5BTmpxXrYDYBpRHYS0FEAUEsHCJMATW9sAAAAqwAAAFBLAwQU AAgACADZAWo3
AAAAAAAAAAAAAAAANAAAAG9yZy5leGFtcGxlcy5FZGl0b3JpZFJlZmVyZW5j ZVdyb25nL2J1
aWxkLnByb3BlcnRpZXNLyszTy8xLzilNSS1WsFXwdQ1x1PX0c9Pn5QIAUEsH CIZ2WYscAAAA
GgAAAFBLAwQUAAgACADZAWo3AAAAAAAAAAAAAAAARgAAAG9yZy5leGFtcGxl cy5FZGl0b3Jp
ZFJlZmVyZW5jZVdyb25nL21vZGVsL0VkaXRvcmlkUmVmZXJlbmNlV3Jvbmcu ZWNvcmV1kMGK
gzAQhu+FvkPIXaOWhW7Q9rB4EHbZ0rLsXkMcbahJJAnVffsdpSt4aG6T+eZj 5s+Po+7IHZxX
1hQ0jRNKwEhbK9MWtLp8Rvv9y2uU0uNhu8lBWge8PAl5Ey2QUSu+jGY4ut0Q fGg0nmOzoNcQ
es7YMAyx1W1sXct+Pir6j/g1MuxmIkuSFLH3i7yCFpEyPggjYWWfN1kNg+xU 72E2gG4mS8bK
CaPECI1wWatgnarP0IDDI+HbWdM+tMZ/natF+ARF6uSgUeNT2WGy5fDWCe9V ozAcglfy8Nvj
Ao/45uay1FyllE35snXA+PUHUEsHCByT33buAAAAoAEAAFBLAwQUAAgACADZ AWo3AAAAAAAA
AAAAAAAASAAAAG9yZy5leGFtcGxlcy5FZGl0b3JpZFJlZmVyZW5jZVdyb25n L21vZGVsL0Vk
aXRvcmlkUmVmZXJlbmNlV3JvbmcuZWNvcmVkac1WTW/aQBC9V+p/sNwrYJuQ ilrQqCnQEIUc
AhXlVK28g9nW9rq7C4T++o6NvwAbiySHHhBoPe/NzJudh3s3z76nbUBIxoO+ brVMXYPA4ZQF
bl//Phs1u/rN5/fvepQRVxBf2oPkh/bsMzsDtiMgUgXSxvO+vlIqtA1ju922 uO+2uHCNH5Nx
FiIPQ7ZXcUTbNC0Me5g6K/BJkwVSkcCBFEUPQYqHDpFAY+hgbFh5CWmxZ+KT iBTFbEb7+k+5
uHfMcXcxpLs7/9PHuTP99Wfm6hpxFNtAAkrjFidxKJSm9XxOwdNWApZ9fUiZ 4oLRJ1iCQGFh
LnjgtsDhAj4YurFH0KKmeSGnCbSQS6Zixc0GFi7ZX8CpmWYDP7oWEB+qcura hsE25ELtsXFm
zB0KHoJQu6PcndPcv2HX10PiwogLn6hHTIakxFtjzi+dpJdKRqtE1pgxaX7O qFplfN2OWUtY
Ik+R8A6Yu1IZo2V1u7WU/EzXEyJcFhx0PfWJ52n7B7XcVYom5c54mBCl7O1a Cdo1mt5ypbh/
OW2Nsg+wVJeTVmmbkD5F07qctUpVXAAIFIl2JaOLLr8gTOWkEn0mUMyZxCuL tmSrXQhRTfZw
MpoWn97iRrlw7BUlTYUCZJo6qsPNnSd2BhD79W9B0nm6ilgPPvURe4l5IMo4 aCM9dTgWwQKg
h319EyRcPWJgsRUxXJTZXu42V+3rBm5Q5jjXZqNpFQp/lZBR9jKvOxCSwpKs PZXnvFAuY/jV
I1JamWxVwr1AutNbUKyy5OZGoKqbC1Ml1o5aC+KNgOA3jAf5RhTrfwPdy1y5 VvfXK39GeyMT
/8XzKPlnqJ9HpfefnYf11vMouRX/2TyOT3pG+voSvScaJy+KePoPUEsHCCJs 9nqTAgAAZgoA
AFBLAwQUAAgACADZAWo3AAAAAAAAAAAAAAAASQAAAG9yZy5leGFtcGxlcy5F ZGl0b3JpZFJl
ZmVyZW5jZVdyb25nL21vZGVsL0VkaXRvcmlkUmVmZXJlbmNlV3JvbmcuZ2Vu bW9kZWydU11P
wjAUfTfhPyz12RV4MIZs8CBgSMQQo9HXst2Vxm5dbsfXv/e22whEUXFPXXvO uefc20ajXa6D
DaBVpohZL+yyAIrEpKqQMXt9md7csdGwcxVJKHKTgh48QDF3i2CXq8GB2Cdi 5yqgj/QKO6DD
mK2qqhxwvt1uQ5PL0KDk7/MZayCt4gkOEq1KCx4Lecb73W6ftyVZ4AljhZBU Bvcx44QLYSfy
UoMNJ6mibZU+QwZIKeANTSHDpbDALSaNQSDUpRKO4yU82+B/+AaPTPggC72W qpiNY/bXGE0H
nkQOMfse1xSowFb2UpueVOdUeWmwAjy4awZDQwnbM9o0CE3BxJC0EqT1CBs3 1Vt3lxJT7lHJ
VTVVoFMbs0xoijF0nCgjtpL1bIfnOudKRPwE6sl0fRYi+RASbFAiZGp3tiOB a10DPu01C1Jl
S2PFUsMCzUalgFPRtKzCdRuObo3zcdD4yew1r+PVHu+1sJYs+iP/8xubTzys x3gdlB8ldS+R
f3mKtPsJUEsHCNLFgzWEAQAAyAMAAFBLAwQUAAgACADZAWo3AAAAAAAAAAAA AAAAMwAAAG9y
Zy5leGFtcGxlcy5FZGl0b3JpZFJlZmVyZW5jZVdyb25nLmJhc2UvLmNsYXNz cGF0aJ2QT08C
MRDFz5r4HTa9MysX42FXYsyaQCIYWL2S0k6WkTot05bAtwf/EI0JHLzNm/zm vZepBtt3V2xQ
InmuVR+uVYFsvCXuavXSPvZu1eDu6rIyTscYdFoexMWPQk6yK1bEtlZRjCo+ ll9jeZo0no+k
lw7QOAoR4c0mcDqzWR7SYTRt5g+TcXs/HDfT8i9HnFBYO7C4yB1k+r5EgVnS bLXY16d2F7Ac
6Y2eNb0+3PyjUrAIxguC4DqToH12uSOO56x8TiGno9uC+BOuyt8v3ANQSwcI 9KWx0tAAAAB4
AQAAUEsDBBQACAAIANkBajcAAAAAAAAAAAAAAAAxAAAAb3JnLmV4YW1wbGVz LkVkaXRvcmlk
UmVmZXJlbmNlV3JvbmcuYmFzZS8ucHJvamVjdL1STUsDMRQ8K/gfyt5N9OYh 3YJfN0Ws4jlN
XmNKvnjJlv58kzSrLqXgQXp7M5nJDI/HFjtrZlvAqL2bd9fkqpuBE15qp+bd +9vj5U236C/O
WUC/AZHuIQrUIWV1Zs+Y4xZ6j4rAjttgIJIHqZNHLV9hDZi/gg/0TpEVj8Bo lRef8NaCSz2j
41TYFhIroBO0GrSRywCioAbvspU7WZnfVYTRIQLZyESExzzwLa8GwJ8K2cFR DSU7NkynBKMH
KX/KDRLIE3d6DTHdnjZ2KT7B8n8Jbcy48pyXBoSm3oPj296/lwJVd8xTKr+Y QWn3fGAY55L4
fQvT8/sCUEsHCDov0yD4AAAAvQIAAFBLAwQUAAgACADZAWo3AAAAAAAAAAAA AAAAPQAAAG9y
Zy5leGFtcGxlcy5FZGl0b3JpZFJlZmVyZW5jZVdyb25nLmJhc2UvTUVUQS1J TkYvTUFOSUZF
U1QuTUaNkbFugzAQhnck3oGlW7GaDh2IsjRiqZIqClI7H+agpxqbng2CPH1N QJRubLa+X+fv
P59BU4nWxR/IloxOop14CoPXVhcK4/NMF/i8oHeoMYkeGtVWpMfLQrKhzo0i OSUMVwJ7qBuF
VqQFOcNUXLFERi3xk42uRA4W95ElXSl0/pmD4/Zv3tps5XZUYO0F3FcSiVVW F4ZHLzYdFcj/
zE5GgqIbuPu4SX2BV/xpibFIe5TtmEh1R16vRu2S6A06yNJ4J17CIO0bwy6+ gPyGalvFxzDY
tAnydGvWS6owmLXjqcUsIxU1FoU0jIJb7ajGZerMsC792Qf2HVnKSZEbkgMj 3sv5klMuPsFt
yByw38H0K79QSwcI3IlaIxEBAAAyAgAAUEsDBBQACAAIANkBajcAAAAAAAAA AAAAAABeAAAA
b3JnLmV4YW1wbGVzLkVkaXRvcmlkUmVmZXJlbmNlV3JvbmcuYmFzZS9iaW4v b3JnL2V4YW1w
bGVzL0VkaXRvcmlkUmVmZXJlbmNlV3JvbmcvRUNsYXNzMS5jbGFzcy2MTQrC MBSE59WfqLjw
Ap5AMOgVJG4FXbiO6WtJSZuSVPFsLjyAhxJTdWCGYXjve70fTwBbTAUywsqH UvJd163jKFVu
Ox9sfuSCAzeGz8E3pVQ7p2PcCAwJi0rftHQ6zYdLxaYTGBOWX4xxto0suS5S 94Gl+p0QZid/
DYb31jFh/uete1R6JgySR+hFECkzTD5QSwcIYU5E7JEAAACoAAAAUEsDBBQA CAAIANkBajcA
AAAAAAAAAAAAAAB0AAAAb3JnLmV4YW1wbGVzLkVkaXRvcmlkUmVmZXJlbmNl V3JvbmcuYmFz
ZS9iaW4vb3JnL2V4YW1wbGVzL0VkaXRvcmlkUmVmZXJlbmNlV3JvbmcvRWRp dG9yaWRSZWZl
cmVuY2VXcm9uZ0ZhY3RvcnkuY2xhc3OtUt9LAkEQ/lat00vTtJ8WET0pQUe9 FoEcJxhikWLP
6znK2Xkne2fUnxW9RA/9Af1R0dzlY4lgCzuz++3MfDOz8/n1/gHgHAcaEgI1 Xw0NepLjiUuB
YfWd0FdO/44GpMiz6V753vAPuC5tRp81pAQKI/koDVey8U1vRHaoYVXgMA5u u84kIIPGAz77
igxr5imQoUar3am1TEvAbC6dyoVA+pLpPCe8EkhWql2BlOn3SUcOeQ3rAteL kDj8Op+pwRZZ
FLDBBBGdgFWp/kMBGQiUstCQFsg3HY9a03GPVEf2XBIoNn1bul2pnOg+A3O2 IhmSZboyCM4E
jEUT+XHgnh0NKfzd6FbaD3JIy1Y3C8NUetufKpvqTpT58dxenEYjxUPEH8l7 hfde1Bee3STL
DHRG1vh2wjpa2huyryi+8DGBTZY6a6CMVZSwFaPRpG5jJ9a7HA7sWo5f9r8B UEsHCO9nmaFa
AQAAFwMAAFBLAwQUAAgACADZAWo3AAAAAAAAAAAAAAAAfQAAAG9yZy5leGFt cGxlcy5FZGl0
b3JpZFJlZmVyZW5jZVdyb25nLmJhc2UvYmluL29yZy9leGFtcGxlcy9FZGl0 b3JpZFJlZmVy
ZW5jZVdyb25nL0VkaXRvcmlkUmVmZXJlbmNlV3JvbmdQYWNrYWdlJExpdGVy YWxzLmNsYXNz
pVLLTsJQED2DaAWqKD5RY4xxgRurbjEmpMEE06ARgutLGUixtOS2GH9LXenC D/CjjNOqS9lw
k3nex5wzcz+/3j8AnGPPQIZwHeqBxU9qNPY5suo9Lw6117vjPmsOXL7XYTD4 J32r3Ac14CPH
i1krPzKQJawM1aOyfCW3brpDdmOCUbedWqt1Rth30mqu740jtnjUFz/UbNVt X0VRlbB4IXuB
F18S5irHHULWDnucQwFLBkxCbWa0JpZRJOS40Wy1a027TrCdmV+tFgTiqokS 1gj5Acc/jITy
QeV4OukcCBsm5rFAKDpewM3JqMu6rbo+E0pO6Cq/o7SXxL/JfCucaJevvCQ4 nArsJBkHwWwE
Aeu0IEfS5r+RSU3ptHwHQjmBkHqLMESkRxKdik2W+YL8G1YIr1h/ljiDTdF5 scCTcA+xlWYT
2U51GTvpiaRCAbsLuW9QSwcItrDdFFIBAAB5AgAAUEsDBBQACAAIANkBajcA AAAAAAAAAAAA
AAB0AAAAb3JnLmV4YW1wbGVzLkVkaXRvcmlkUmVmZXJlbmNlV3JvbmcuYmFz ZS9iaW4vb3Jn
L2V4YW1wbGVzL0VkaXRvcmlkUmVmZXJlbmNlV3JvbmcvRWRpdG9yaWRSZWZl cmVuY2VXcm9u
Z1BhY2thZ2UuY2xhc3OtU9tu00AQPdu0cWJSeoEWQmkJbYGEAhY8FoQUWY5k FNwqTgJv0caZ
BhfHjtYOgs9CvCAe+AA+CjG2Uq5tVKmstLszZ2d2z1z22/cvXwE8wUMNcwL1 SA0Nei9H44Bi
wxr4SaT8QYuOSFHo0SsVhcMz4EPpvZVD0jAvsHws30kjkGx80D8mL9GQF9jK LvcCfxyTQaMj
liNFhjX1FFggp/7SElht/vJ3E+WHw6cCi2YUxokMk64MJlTAJYH105kIaOS4 vU7LLuCywOab
JBnvG2fQFtBT48OW1bBfCxTJdtx23TGZhtm8cDaYt2aZzbrrPhYQdo5TDYG1 KdRrWPV2p2X1
zIOO0xYoPOPkhH7yXCBXrXUF5s1oQDpu4KaGDYEX5+Hj8+lsUjZblLCJLX4g fU7Aqtb+Q6xF
Dq1SwjJWBJaafkjOZNQn1Zb9gNKiRp4MulL5qT4F9SEllhnIOOb8VE5Y/Nsi mQkns5Lan0qi
IT1GP1w0luk1/JTuRhPlUcNPeW7PjPxR2q4CJTsMSWVUKdawd86Czbx6t+kn pGQQc3eciPyV
uEF4LiCPMjQUWC5yZ81BZ730m77I+tJf51wflstYxZWf+FXW1/7Qc+y1jmuM XGdkj/d0aJ9R
/oRbHzOj27zqvAP7TGQD2xma/v8d7Gb7HdzNsHvZWkUt8xC4z/NBvvgDUEsH CMwL1I4CAgAA
fQQAAFBLAwQUAAgACADZAWo3AAAAAAAAAAAAAAAAZwAAAG9yZy5leGFtcGxl cy5FZGl0b3Jp
ZFJlZmVyZW5jZVdyb25nLmJhc2UvYmluL29yZy9leGFtcGxlcy9FZGl0b3Jp ZFJlZmVyZW5j
ZVdyb25nL2ltcGwvRUNsYXNzMUltcGwuY2xhc3OlUl1LG1EQPZOsWRO39bt+ 1EoEkUTBxSq+
RIQQIlgWK03R55vNGG/c7MrdVfxZ1ZdCH/wB/ijpZLOKDyLSPtw7M+fOuTPn zn14/HMP4CuW
beQIO5Hpunyj+pcBx26zo5PI6M4PPmPDoc+nJgq7rpZTt9kIVBxvHYpvwyKs pUw/0Jcxu9w/
Ez8ynOV+b/fYT4a5BcLGe6pkBQiFPR3qZJ+Qr1RPCFYj6nAJeYw5sDFKGPd0 yEdX/Tabn6od
MGHKi3wVnCijB3EGWsm5jgm73r9IrBEcbiUq0X4KEsqVqve65CGtVsQ0Zm3M EL69S+6r8LHy
L1SXVz2dsFFB7OAT5gh2s+HVWy15nOW3myCUWtGV8flAD95g4oWkzZ66ViLr MAzZpDDHNpYI
9f9ulzD61DBWIIOTNSK/LAdrMDKJihJtiyWxI+u/UbpNjx3ZS2KBsqSu4IN4 zjAJHzEu1sIE
JrMLNrMLrDtM/XrmF1Js/QXXyrg5zKf7AhbTOiQT+owvheJfUEsHCLxD3qKB AQAABQMAAFBL
AwQUAAgACADZAWo3AAAAAAAAAAAAAAAAfQAAAG9yZy5leGFtcGxlcy5FZGl0 b3JpZFJlZmVy
ZW5jZVdyb25nLmJhc2UvYmluL29yZy9leGFtcGxlcy9FZGl0b3JpZFJlZmVy ZW5jZVdyb25n
L2ltcGwvRWRpdG9yaWRSZWZlcmVuY2VXcm9uZ0ZhY3RvcnlJbXBsLmNsYXNz rVZdUxNXGH5O
+NgkLNoGQVS0KVAJoZpWqW2NSgOGNhKRQoylX7psDmFxs8lsNo5e9qJ/pleU CxjLTOtVL/qj
On3OZiEUCdChmdns+XjP8z7v59m//v7tdwA3UNUQEnhQdcsp+dKo1GxZT2VL lld1rdKiXJWu
dEz5xK065ZTF3TZ7s4bJ1Vc5SmjoFBjz8UzbqtVlSlZWOa66MkD4l3C3QOYk yo/UK9BpOZYn
kE2M50+NlibcTLUkI+hBrwa9rTnZBcN8bpTl6KIsW3XPfaXjDM4KhHPzS4XM /ExWIKBz/NF0
GO8KXF7zvNrtVBt+PSTUp+Mc+gV6ytLL7pk/mcivGy+MlG3QuCXPtZxyuq3q XTMjOI8LGgYF
EodL1uxG2XJSWTVZ8MfKwIsCyTbQbx9IR6lkSMdlXBHosKtlgf79XB+trEvT S48XoxCI63gf
wwLdd1Q07/FAYryoYVSgr3Ui+9KUNc+qOgJn85Yj5xuVFekWjBVbCsTyVdOw i4ZrqXmwGPfW
5DHpM/O/ZE1Etrj15w+hTJneJY+Rf2jUfHJRdCDOdPPWrLpA/kQsTlaGVNVt utLw6ICpRLtU
mLGNer19pgTR6WGfmNRwU2DoKBwdn+AWo8LM9OfWqiXd3H0/jDkV3890fI7b 9EGTWPPUxwKp
k1Zt80Bawx2B4ZZ/c7Yty4adccuNinS8PXdrYA6dP1gY0w3LLkk3jC9YRYU1 GTcVanwsiruY
Vhk4cyBHd+upqPyQ1TGLLwU0WjlvVOjdc2T/lrACy+l4gDnGwajVpFMSuHZo lbbhx4bwUODS
WNyqx52qFzfiLwzbKjXZ+q5VOh7pWFB0wl61eTqKNKapU/q+ErhydOg1PGb3 OHnaNSOgEiyK
gkpdTe5G8dZ/yN4WDPM0rlrZodJBkzxtXw9g0ioHv9fxA34M+uce/nDiuEZN Tz071VW1pytK
za3JfVlzpclqYH5cWGw4nlWRRatusTlkHMbdUInMOA7sy5PWGfbwp1jVUcaa aj+te+c0DW3X
YrJbqjZcU85aqo1ePbbnXFcUBfSc40jXD7Gsa6gwCY/2LdN39xpk+bFf8Oni 10k3ItAQ5izC
2U8IcQSMbiIae+c1YiG8Qddc8k/0JjfmNjGQ3MKlHYjlbby34Uv28aocIdoH HF8kGjDM+2sE
MYxyZwz9SGAISVzlzgDRz1BmjGvgjoZx7gATfPiJVNAwohGU91NA5ybfSklX chsf/spByNcT
5RuYRCebocLVm0K4hut8s9fhowDgZ64q2amJ12D5/MIh78rWL0Z7Pt3YQXp5 B3eXY1PbyFCS
7XQLX8Xy/NvC/Da+/oOiTRPP8A3cwyCmeN9m9syiikC9Gi1iiQSUWZ0IDXZy zJ4cUJqmtJKP
7qBANxbzExsHDJtjOPL7kKMBcpizJ/jG98kyvg3wbgQ+CtOU797gaQut219/ vM9F4QApAoPn
O7Di8zUD2ZK/w+D7suS+CXkQ7ZmPFvIfy/9fx3OfI8sdNpzuyD9QSwcIkT35 1WcEAAD3CgAA
UEsDBBQACAAIANkBajcAAAAAAAAAAAAAAAB9AAAAb3JnLmV4YW1wbGVzLkVk aXRvcmlkUmVm
ZXJlbmNlV3JvbmcuYmFzZS9iaW4vb3JnL2V4YW1wbGVzL0VkaXRvcmlkUmVm ZXJlbmNlV3Jv
bmcvaW1wbC9FZGl0b3JpZFJlZmVyZW5jZVdyb25nUGFja2FnZUltcGwuY2xh c3OlVd1TW0UU
/20SkpuwUJryqS0FxDak2pRaCza0QiPYtGmkhAaJ1XpJlnBpSJh7b51an+2M vvnI1PHjqTPO
6ADadNQZB1/9oxzPbm4+RAI4ZGbv7p49H79zfmc3f/392x8ALuKBDy6GmyUz HxGP9LX1grAi
0znDLplGbk4sC1MUs2LBLBXzEYNOm5zN6tkHel7EScMHD8NZ5S9bMNYtERFr y7QumcLx8C9l
L8PUYYLvG5ehTcQKumWNTquJoT+xN4LKeZRBM6x40bBFjoFlGPyGFTOFrvZt lSNDLxiP5V6b
IDckuMbgDo2kGTyxUk74wXCcw48Aw7GEURTJh2tLwpzXlwqEJ5goZfVCWjcN uXeE3gnlRkM3
w6kV216/EmmSlx+9eMmHviMVZ0bPkvRTjpdxkjIU8WRqfioZm2aIJY7sNRqA G/0cnTjN8GYo
sap/okcKOpmlbNMo5qPNCKjaj6RlBQc5fNDk6hWOVgTk6lUOLqvqsVcMojJx KLCHa04i3iM5
YJgOjRyhCI7LqB/n8LoPrzXt+GqzD8+JvGHZko3ziFBP1ckYaVap3abRVoo2 yunSvsHQmhf2
dK39L+1BwEF+iUFiTjLYLldjHONoZ+jKqnvgKMVKRVsUbUtqXOGISo0+o3Y7 9tC6ynFNanmX
TSEeE7YBe0UcdHtTNi1v6+vqovhwnS7w/uAZArIAlUtPMUJNs61e+AGpv19H H7Un6heD4QZH
HDcZTsigzkG8aNk6KTMMNUfb6CTBcRtJBl5hpPq0DYbiBySrYZahe2+U0vEc RwrzDD5L2El9
jRB17dU/aamb5liQuq1S15o1xbLxSMoXOTJSrin53bm4D/cYzh2qfBXWNHxE EJyNdPkxh44l
Ylb2VzXbXGj/XBtw/0fgJJLJZA4omIye4xBYZmivVHtOWKWHpmTr6v+4W6Zj FamaU+MFUmo1
Y8i/gDMHPlHnZTAiPV4sClPBE1QGrfoIYJCwumm0wAOXfDzpbzwg/4Zodskn VM1czfK0De2k
fYx2IzTLX4v7Z3RsKbWgMnbRd5zc9eKEksrRWTNLqXBAXzjYtY2eFzgVZs8x EHY/x5D8DNdd
dRMq4AKh6Sfzz8jdV+R0VLnlFSc4g7M0+xFSeGSAb8haniW30bGB49ugQL/i ggs7aNms7/4E
20BHff8Mgd/BFl/g0g7YLQ/lFC7jMo23aEyEN8mjW6HqpzoAdyileUwgjUks 4h3cww3cR4Ja
ropugrTfVugmaWhwd56c8WGKTmKkX8EaoVlibQn/goHNWuJeJVxtSLTFSZRe Fcw4xhcdY40A
vruD3t32VoO9VrMfrzGRdpjooeBDG/BshT2Sg7C7jFvEyFYt4yCRCXxOTp4Q /18QL182uO5x
XE8qfaaRMFqL8YSKJZXGKMZwNcZwOPheGXfU9y7Vv4z3w7IAwQ+CH7rdnjLu LyhpdqGOYUh1
5lP6fk0YvqX43xH73+M0fqAq/ojL+KkB09huTC7kVXVWYKgepbeFqFj1+v8B UEsHCInBlhls
BAAAugoAAFBLAwQUAAgACADZAWo3AAAAAAAAAAAAAAAAggAAAG9yZy5leGFt cGxlcy5FZGl0
b3JpZFJlZmVyZW5jZVdyb25nLmJhc2UvYmluL29yZy9leGFtcGxlcy9FZGl0 b3JpZFJlZmVy
ZW5jZVdyb25nL3V0aWwvRWRpdG9yaWRSZWZlcmVuY2VXcm9uZ0FkYXB0ZXJG YWN0b3J5JDEu
Y2xhc3OtVG1P01AUfg4bG4zqJuJ8RXyZuhehoF9MtpAsZESSAcoMfr60d+OS rndpO5V/pYli
4gd/gD/KeNpVYnCELaxNb0/POc9zz3nuvf31+8dPAC9gpjFF2NVex5SfRLfn SN9s2CrQnrL3
ZFt60rXke0+7HbMfKOecWN0WvUB6m8Li4HFhLY0koXFJ0tZHFViHhFRwqPzC KlfZnGiZVaau
KVcF64S94oS5S/uE5Ia25SwIcwamkcoggSsG0rhKSBTDhGxTuXKn3z2Q3jtx 4EjCfFNbwtkX
ngq/Y2cyFIDwdrIlFtZYgDlL+LKx4QjfXyPsj6ZCnF8tDbItR/V8acpu27R0 t6td09WBah+b
8XzVDPK4lcZNwvZEOzBwG3cIC5YnRfC3iziFUCqOWh/vA31wJK2AsDyWAKyf Ldui7wQbLCPh
dfG/GaWlPWk2diP+sRR7YODhv+0NKE7bW7pgKkJ93NU8Eh+E6Qj2xRwZ3rtP DFzHAuHlxb0N
xRcNLOI+IdPSfc+Smyrc0aVRlncl5CPMtlTHFUHfY1zvskdg8E+pjbgM66xi tuFajvaV29mW
waG2CcaW60ovUk36WOUeE/wrpVwuPORsTfOTxgz7Z9l6hSm+gUy58o2H7zC+ 8NcUsqEvihAj
tpBjy2A79F7DfORn4WOWGr/D3JnyV2ROcOPzKUcqwjQjfH6QE+ND6y7ucZzC JRjOtHSW6c25
TI+4xzrX9Dhmehp3lipXTlA4y0MRD8cZs8i5QzDPzsUgiVJklVGJ3s+xHHnz PK5EGlGE4OsP
UEsHCPukIjdNAgAAywYAAFBLAwQUAAgACADZAWo3AAAAAAAAAAAAAAAAgAAA AG9yZy5leGFt
cGxlcy5FZGl0b3JpZFJlZmVyZW5jZVdyb25nLmJhc2UvYmluL29yZy9leGFt cGxlcy9FZGl0
b3JpZFJlZmVyZW5jZVdyb25nL3V0aWwvRWRpdG9yaWRSZWZlcmVuY2VXcm9u Z0FkYXB0ZXJG
YWN0b3J5LmNsYXNzrVVbTxNBFP6mLV1aFluRi3JRRKq9ACsiXmgFsRYlKaCU YPTBZNkOZbHd
bbaL2p/iH/DJB8Vb0MTgk4k/Sj27XcqlBZtANtmZPWfmO9/55pzZ33++/QBw DSkBLoY53chJ
/LVcKOZ5SUplVVM31OwiX+UG1xT+xNC1nLRhqvlDfNNZuWhyY0ZWyFkW4GEY tyGVvFoscYkX
ViVFLxR0TdJ0U10tSyqFkvZvmyUTg1jQszz/SFZeyDnOkEw3Qq2+2QGJM7TY oJlXqqmsMTxo
CPOIdCtAhOvLqDlNNjcMYlo8GdRE+mjhHM3ikxTem1A11ZxkcIcjywyeJGXp hxsBES0QBZxm
WDjRkx0c9SOIMxZ8O8Ni+Lgp70ePR5Z9YOgUIaDZmp0V0QSvD93oFdDDMH3s WhDRBy+dG5+d
zyxNzydTDIG0qvH5jcIKN5bklTydZFtaV+T8smyo1rdj9Jhraon0POGUGVoz JnGbk4tOoKBa
cpwzurFULpKpI5xel1/KUl4m7IWVda6Y8cgzAZcZ+g5WC1d0g0upyqoWhBAW EUGUioUn83KJ
UugPR2pqzNllr4i3YAgjAoYZeo9aJ0LCVeqtHDdT1X4dOBx8tx29us3OUrom LxJEMbhsckco
hsfh/7TEvDWo1BO1oev3jh83cEvATYbUifSsiNuYYGjO6jtXzFgt530HQ1Rr MheQYAg1lAFJ
aMoGCc/QsDgM7RVhK6c3WoWK1Dmy+rrtQlQoVyH8GX3DUPiMahVwpJHCH7HS p9t+VtO4YRPi
JVyknnfTb8kFu/Fp5rGuArL6bKufrMy62ujdSpYC+RmNfdGvOBX9juBTmrR9 Rscmun7Bt4lz
H9H1gRa4cZ7e3TZkhDY9JKBZusmi6EQMvRjGBfKIFTD0ExFgoGL5S24m2B6G Sxh0QpeJjovG
aIxivUWT513sJ0Jv0BPbRmgLVxi2EGPYcbrpqfLopOigkhEwQYkliMcdhDFl c+isoDocrNko
/aWZzaYJbl8vo48xXHdoJB0agegndFihv2B8G/H3tlxWLK/N/Pke7EAVO0Bx J2EBTuGuAzhk
f9NudhCjsEcjl4NBV3IDO8t1drpwz34ncZ9GP/mCNif8A1BLBwgUP3vfQAMA AJoIAABQSwME
FAAIAAgA2QFqNwAAAAAAAAAAAAAAAHgAAABvcmcuZXhhbXBsZXMuRWRpdG9y aWRSZWZlcmVu
Y2VXcm9uZy5iYXNlL2Jpbi9vcmcvZXhhbXBsZXMvRWRpdG9yaWRSZWZlcmVu Y2VXcm9uZy91
dGlsL0VkaXRvcmlkUmVmZXJlbmNlV3JvbmdTd2l0Y2guY2xhc3OtVmtTU0cY fjaJxISDICoX
8QKttCEQggq9QErBGDU1RCUptNpaD2GBo7lNctLWT/0d/QPtTD+hnaFDP3T8 5kynM/09nent
2T2HcDHhUsuHs5vd9zyXd999D7/+/fMvAK7gkR8egUSpshqVX5uFcl5Wo4ll yy5VrOV5uSIr
spiTi5VScTVas618k73MV5adW/PDJ9Dx2PzSjOZNvnBn6bHM2QJGobQs83fN 3BNzVQrEU4dh
a7zsgkwJtMSsomVPC3hDQwsCvjg5gvCi1YAfxwMQaDNwDC0BtOOkHx0Cs69N a6ATLQIBmUxn
srPpeEKgPWUVZbpWWJKVrLmUp73OVCln5hfMiqV+u4s+e82qCtw8lPUDE037 XbtZnpa3mFL/
D0Usm52aJk9bxqb3ObPswh9fLjkBAldDDlUub5WrMioLK5yXKjKacA5+aii1 txYIGMhYq0XT
rlUIdulABKpoxUUM+NEvcH7fYANv4E3WhYznzSpz3R8aaoauI6aCrJFBA2fx lsC9pkqc2P/i
NGivycTWHbh4AILAtdeUoFM1jIgfIwLn9oMyMIoo9cl4qWibrN+KwEDzbLkE CvyywZZxlVW/
Km0NZa1YspK8rm9hUiV0QiX0HYHxUPLoOVMU7xl4H5MCJ0iRyNTKvFcsbp7n YAOFuVKhUCq6
1Zyyqgoihmk/PiCAhtdbasfAh5gR8FvVRKFsP9WK7yvF1wzE0SfQuixXzFre jptVqVASBm7g
JuMoROBMKNm4nNUhuxV3Yf8DJIXcaagjtVshA8b2LMX2R1QXdPDgRLMy/Lgj MHyoBqihL6vM
3DMwjwxl55gSd51tNHS4/u3EN74aRm5X8YgkD0ZuEUSOhM8bX5FVnpvqvA2o vHQvcOWIovVL
LSX38gYzpVolJ29YqgMO7Nc2R5UCgVAsO/mqmOlXlzDAPHv5JWZO1NeKsxbO +QXjM8BfTzgK
jifDPyH4HMZLBJ7jxI8wnnHRh1N8dnIERviMIMir3YExnOaK4byIM+ji2L1r pYdjr7PyD18Q
fr0jeHf74ME5zj04rwXMU55HRYaHN3GBRbSBS+v87dXcLfq9Sc3X5cS5fGr2 NkLc32Y2XGaf
arp1niHN8zsRlY8Z0oQFaPU7tCvOMYGRDYyvc/quQDqyCR7Nt2gNc3X2e3SG I95NXPfgBYZH
XG1OXi4wjUAC6h73IMnPyG3qSTE7c+wFH2nNYYezrnkGtxgp9Eyp96iPD2Nv U1133eOM68PZ
S3FP5bIN3p4/0e1HLO3XZtgI6ybntMnfODvGcaLvB003iu2/UyMvkE6HIxu4 O+nr9b1EUDtU
83U923Z2VhfKp3TwgMyfoR+f8/wfIopH2tW4Q1J3NYEsPtauJlxXvdxZwCJl 9vP/o0+I5dvh
b8L15+zd557y1w7v6b+UP2XvDwYK1R7qDh9oh7e4qiA8Ym+RlHcUiacuzUP5 i7uKxOOSC9WW
9xRjc/RvmqKHGqJ7mDL1fOjif/EvUEsHCIGJHGpdBAAAEgsAAFBLAwQUAAgA CADZAWo3AAAA
AAAAAAAAAAAAcgAAAG9yZy5leGFtcGxlcy5FZGl0b3JpZFJlZmVyZW5jZVdy b25nLmJhc2Uv
YmluL29yZy9leGFtcGxlcy9FZGl0b3JpZFJlZmVyZW5jZVdyb25nL3ZhbGlk YXRpb24vRUNs
YXNzMVZhbGlkYXRvci5jbGFzczv1b9c+BgYGIwZOdgYmRgb7/KJ0/dSKxNyC nNRifdeUzJL8
osyUoNS01KLUvOTU8KL8vHT9ssSczJTEksz8PH1X55zE4mLDMIhIfhE7Awsj g0BWYlmifk4i
UKl/UlZqcgkjAwdUTyojA7OGZhQjA1dwfmlRcqpbZg5QSBTdGD2QCWyMDEDV DCDACDSVlYEN
xGJgB5JMDBwAUEsHCO1oHeGYAAAAuQAAAFBLAwQUAAgACADZAWo3AAAAAAAA AAAAAAAAOQAA
AG9yZy5leGFtcGxlcy5FZGl0b3JpZFJlZmVyZW5jZVdyb25nLmJhc2UvYnVp bGQucHJvcGVy
dGllc3WOMQoCMRBF+4G5Q8AtNbmAChYKW2hlaaPJsEayO2GSgN7exG5hne69 B8NHWKmt5fgR
PzzzHhuaGTfV9a5DQHj4SfvJhuIoqZ3S6xuCmt/IjoJZCOfj9bDpL6elFkMZ 6uv3GP7HKBxJ
sqeE8LpL0pbH6ANpFkfS1iAkLmJJ60pJrEHgkmPJP1G3V/EFUEsHCMO5lKSM AAAA8AAAAFBL
AwQUAAgACADZAWo3AAAAAAAAAAAAAAAAOgAAAG9yZy5leGFtcGxlcy5FZGl0 b3JpZFJlZmVy
ZW5jZVdyb25nLmJhc2UvcGx1Z2luLnByb3BlcnRpZXOtUctqwzAQvBv8D0Ma 34p7L00hYBcC
iR0cQ8+qtbZFFEnITtz8fSWrhfbWg3Xax+zs7CiOHvDSaHO3ouvH19inT39y X1rv+DqOfLRZ
4HmeWqPRnMDpRlIbss++CmQaRVmj6ZnqCGNPMNa3R0EDPmiciJQriwFSKAJT 3IPC7CpJEuRF
hvINdbUtTvttnWc4VuUxr+pdfoIDrObBNEwc2NlxQNH0s+YOxS70CGYMeW49 a/ChbuewFTKs
DRIDj2/M5zj8dQi6f5Omy1m35Cf8x68llRt57YQqnMHYIOdi1FbwilqypBp6 t1p1ODgbpYNa
fROc7Dd4mqaUPtnFSEq17eLoC1BLBwhqbhfHAQEAALgCAABQSwMEFAAIAAgA 2QFqNwAAAAAA
AAAAAAAAADMAAABvcmcuZXhhbXBsZXMuRWRpdG9yaWRSZWZlcmVuY2VXcm9u Zy5iYXNlL3Bs
dWdpbi54bWx1T8FOAyEUvG+y/0BJr4DGizFs92QTb8ZoPBoCr/RFFghQs/69 0N20HvSdmDcz
zBs5zpMjX5AyBj/QW35DCXgdDHo70LfXPbun467v5AjaYcxw1d5VbaMquWGs 74jUIX4ntMey
a0j8hnWxfTLbvmNssUR3sugXhkiYC/j2LYkBfRloSJaviRymQ32HBNyCh6QK mI+o9KeyQFtS
HblissA6p4RkIPRYSnwQ4tFgCQnNCxwg1X7wnoK39CrXTuXcDOfgWU3RQeZ/ 2/5ZP68nEXE+
SopLqaWxuFT+AVBLBwh7gthm2gAAAHUBAABQSwMEFAAIAAgA2QFqNwAAAAAA AAAAAAAAAF0A
AABvcmcuZXhhbXBsZXMuRWRpdG9yaWRSZWZlcmVuY2VXcm9uZy5iYXNlL3Ny Yy9vcmcvZXhh
bXBsZXMvRWRpdG9yaWRSZWZlcmVuY2VXcm9uZy9FQ2xhc3MxLmphdmGNkEFL xDAUhO+B/ocn
LuxaSINnS1GkB0+KF89pMs1G2yQkWVgR/7u13SoigrfJvJfheyPKsmBUUq18 eI3W7HOzvMVP
YzY3d3rzKUTBglQv0oB8NBWOcgwDUtVqm320+hE9IpzCU/TOXBWsYHYMPuZl XQ02JFQY+0n7
iKq9756h8rwoVqAzzqmDsY4fEiLXXhHnC9wNRYSIBJdltt6R7ynvQaPXGMjP YbStMTZ117S3
g0zpshZdU4vJ2lbf+XD6V/rXtdcJ/7rvD/thaejcIJ8QdhdL7oy5SAOHKDP0 WuuhG6wi6zJi
LxXo9JVwzBNsolNV9FawdxJinRfsA1BLBwhbwTEi+wAAAMkBAABQSwMEFAAI AAgA2QFqNwAA
AAAAAAAAAAAAAHMAAABvcmcuZXhhbXBsZXMuRWRpdG9yaWRSZWZlcmVuY2VX cm9uZy5iYXNl
L3NyYy9vcmcvZXhhbXBsZXMvRWRpdG9yaWRSZWZlcmVuY2VXcm9uZy9FZGl0 b3JpZFJlZmVy
ZW5jZVdyb25nRmFjdG9yeS5qYXZhrVNNS8QwED230P8wwoK60BbP1kWRFfYi si54TpNpN9om
JcnqLuJ/N01SxI/qit4mk5c3b95M8uk0iWEKBZXdTvF6bWb+nL9PuORkwSZ9 kCdxR+gDqRGk
qjPckrZrUGdzxo1UnC2xQoWC4p2Soj5N4iTmbSeV8XDa8E5jhm1lY6kwm18R ah/uHDIfFB2k
KZRYc5FuNKqUSQpp6tWt1ghFOQvPirycQSUVGJtuJcMmc6iFgU7JR85QAwGq kBh7j2YtmYMj
oWsQUqSk1EZZLqAN0Rpk9ZHJaUHBPis517iXCSPpG2+jp6pRoLIa2eDxpmw4 BS4MqopQhK85
gguAW2MlahjchOckjpybUbBMc1E3aKSwnNoQSzD0WvknmceOWh+NexF96CBy LUQ/SF5c364u
ri/ncLaXiXaLmpG7QLnoEVxwc3TstunNgCWajRL9Jgh8Alneox24bd/P/LDA dja/7OOTIrfx
4V+9UK7eb8t9ZaGHhQUOp9H2+mkOn1Nvuv7XIYNyZy+4/q85h95+U2vv3Qhf Amo03wKCAy+Q
599uRBK/AlBLBwjLRJpfogEAAOQEAABQSwMEFAAIAAgA2QFqNwAAAAAAAAAA AAAAAHMAAABv
cmcuZXhhbXBsZXMuRWRpdG9yaWRSZWZlcmVuY2VXcm9uZy5iYXNlL3NyYy9v cmcvZXhhbXBs
ZXMvRWRpdG9yaWRSZWZlcmVuY2VXcm9uZy9FZGl0b3JpZFJlZmVyZW5jZVdy b25nUGFja2Fn
ZS5qYXZhvVZtb9owEP4cJP7DjVXqi0ayfl1TVMSohLSxCqi2b8g4l+A12JFt pFZV//ucN6Ah
CVDafYkS39l+7rknd+dcXDQbcAEuFdGTZMFcd9Jv5/VCsngy8E7iF6fZiAh9 IAGCkIGNj2QR
hajsvse0kMwboY8SOcXfUvDgqtloNtgiElKn7jRkkUIbF755FxLtfi8kSl3t 8rpL70zOc3Lc
n9ptmGHAeHupULY9QaHdTmOYzBHcWSfb5jqzDvhCgjbLC+FhaCdeAw1UcE0Y V0AoRaWEVGtH
1ATE7C9SrUALkBhJVMh1evsyTK8CcEPWQULnQONYvriO+S6afCR6KQ1pPuxy Rb5cbFkI99KN
HjGo9FOEaw/XybEklCD3tgm5UbhXxiqWbwk1q0/pUQmD8MC4d93KxNBKLQFy lESjl0tlOQsZ
BcY1Sp9QhPLTszQBPmoDXkGebnhuNqwk3VaW01x7nCzQTpcrZWBVE2IVwFoJ WmusJeMB4LD7
sw/X0CpH20pUWI1LRXGk96PBBwIcT835McS51tE3xzkG6QdzOZ7ejfq3gz+H EarM5hC14EY8
ShPjGv86eh3A+yPeoc3BcDzpDnuxMPb5j0w9Cyts2ZGD2INxps/OSwjYqD7A vFVROn2+CRl/
OABCUmAv48vAxUUn+3Yd8/5ymtahY7nct7YUAb1p+y5KPweoszvOziuTbUoS 9Hs/uuPxpUno
15IEmCo8QxmrTmm5pKZ6kzAv4yoX42mR0ndi9DVguBHSM9GWwp/e9ruT+1F/ 2vt1P5ysgtkM
Z4QGtOlxha6WiCqBe5CssnBL1HRs1DLBWQdzi277QA1lm6uLQGKHTQ1dVZPp p23RvBMzSkgj
DkwNedFaCSWfOt6Ln7fdvHfVy/p9wkOdwxY7tbF9R59xgyxkZh4gYdWoFYe0 MWxZq2nLqhm3
CrbaeavguzlwrU2VE5e1HrkObzLrUehHTkI85GQElhX/jKyP7wD16asL9dgm 8B+6wFY6snzk
P/y6F6wavb1dBF7i5wtUzVvZ/c3GP1BLBwiDrl1OBAMAAFsNAABQSwMEFAAI AAgA2QFqNwAA
AAAAAAAAAAAAAGYAAABvcmcuZXhhbXBsZXMuRWRpdG9yaWRSZWZlcmVuY2VX cm9uZy5iYXNl
L3NyYy9vcmcvZXhhbXBsZXMvRWRpdG9yaWRSZWZlcmVuY2VXcm9uZy9pbXBs L0VDbGFzczFJ
bXBsLmphdmG1kt9rwjAQx59T6P9wA8Ef0BSfLUURHwTBMR/23CZnzdYmIU2H Y/i/L22tus0p
e9jb3SW57+e+l3A08j0YQcSUfjci29m4zcOvhabYW/JeHYS+pxP2mmQIymQU 90mhcyzpggur
jOBPuEWDkuGzUTKjwp1OfM/3XKCMbd+wXOgSKRZbFyuDdDHPk7K8f6/uRhfr 9AWZXV7rfIem
1RlP/vboavmxNaEhCDsjH4IAUsyEDKoSTcAVgyBoTZ1JqOmxQGkTK5QEtQW7 QygUxxxUMxP0
IyziKI2PoFGYxlHoSn16FkDJf7aPdLc7fd7ZNEOJJrHIu81VaS4YsLo5HDVq HwH31rV1tbO3
Z9zTVfjwPdIMS25NS34nJd+oSINFtFHWySK/hBoMGz1SVhrNYOicJofa7X8h mK7f0Lgl4xUa
wE29MtYkHZVBWxkJNz8HXQnrdHL3tear2WYzPs1wgDC8GNX3PgFQSwcI9iMW aWIBAACMAwAA
UEsDBBQACAAIANkBajcAAAAAAAAAAAAAAAB8AAAAb3JnLmV4YW1wbGVzLkVk aXRvcmlkUmVm
ZXJlbmNlV3JvbmcuYmFzZS9zcmMvb3JnL2V4YW1wbGVzL0VkaXRvcmlkUmVm ZXJlbmNlV3Jv
bmcvaW1wbC9FZGl0b3JpZFJlZmVyZW5jZVdyb25nRmFjdG9yeUltcGwuamF2 YbVVTU/jMBA9
u1L/w1AhkRY1EVfaIqrSlSqtAAESZ9eZpN51nchx+NCK/76O7bQB2oYDXFLH eTN+7814Gg0G
3Q4MYMyy/FXxdKUv3Hv0fsNuHi/i42oRdTs5ZX9pipCpNMQXus4FFuE85jpT PL7DBBVKho8q
k2nIzddRt9PtmEWmtIthgucFhrhOzDpTGM5nghbFqA11s/yDTLfCbh2/9mMr cuH8F2WG+evi
S0xzUaZchvPq5dauP8W0ODKwAVHt/dFwCEs0eYZlgWoYZwyGQ1eHqYSKIa5R aqp5JiFLQK8Q
1lmMAsbLC099HC0vwm06lPHnZJcpSlRUY1xXsVwKzoBVzsNurg1nAF+0yWuQ zc0NvZYM8K/b
IVYyMVRmCg2PwkqJMaGl0JB44HvBoQvYaxLZL5l80EysaOJVF1V+1kKaS66D vuVOtBdByOEY
o+kwYALBQUC/bt/wzgguzLnh4vr+YXo9m4cp6tr+oLfSOj+Pot3Jev0RWLY8 gaCV09EEZCmE
l0qIQl0q2aplZNFv1dM+GNVsZeS9MMxtu2K9qjM3rs1WlcjSYIscbdJ5FhKf 29szsHFv1c36
3GfU3CNpKm7i6hvk2+3H+usLhJ0lRZmj2sn+G0ld3jyhMmywQdDNUmDWo8AN YED7U1N75rae
brNqPrvgCUe1uAr6dVEZLXCP4LqV57Pf0/v7s3PwNXWnukPPnHpC/Cg4dz2o Vyp7tsVfCIEp
FVOVltVg2LRX0HswlXTz66QHp7Alek3XaBw+hd4J8AJkpoHCExU8dnirobft tZ+zvrbbSf0o
3DnoX92Y9cCJ6/vtF++SN9DDfrZtDvayLy1UM+kQoBbpie8Zfh7cr7JtAr9T XYy5QraRt/OW
XDUxX/mjaHiwW+3hW4H1CNwIfYN9A70xOrqd/1BLBwgxLhb7rAIAALkJAABQ SwMEFAAIAAgA
2QFqNwAAAAAAAAAAAAAAAHwAAABvcmcuZXhhbXBsZXMuRWRpdG9yaWRSZWZl cmVuY2VXcm9u
Zy5iYXNlL3NyYy9vcmcvZXhhbXBsZXMvRWRpdG9yaWRSZWZlcmVuY2VXcm9u Zy9pbXBsL0Vk
aXRvcmlkUmVmZXJlbmNlV3JvbmdQYWNrYWdlSW1wbC5qYXZhzVhbbxpHFH7G kv/DyUUKRLAo
r3HihlJSITUkAlftmzXsnoVplhk0M2ubRP7vPXPZCxh2XeWivqDd2Tm3b75z GYYvX56fwUt4
E8vtTvHV2lz69+H+glt8Pk2e24fh+dmWxZ/ZCkGqVYR3bLPNUEeThBupeDLH FBWKGP9SUqwi
Tl8vzs/Oz+hBKuNl4oxvNUa4SelZKowm44xpfdG265M33K7PWi23T4+50OK2 d+jVxX8TOrr8
nsW0uvsequrxD4vDezIYwBJXXAxyjWqQyBgGA3+QIwEWCdygMMxwKUCmYNYI G5lgBm+Wl0Hj
m+HyMqrUoUgeKnu3QoGKGUwKGuTLjMcQW6Sg0WF7AoB3hvTSzvpi6V6LBvh6 ftZxIXeaYu6c
jqBzEELHxdDZKn5DC+APHNCfe3h7CyLPPHcq42OFJKCBEbhCG0aeNsHaB0WO akMxJXDLzdpr
+fou4+JzC9GjuRNVO3iwcg/LnbMZktFrLTLzz/kUbliWYxQw2V7OpMHXToJM KIwN3DLSICF2
8dR1Addww5lb0pY4sdeSeibDBs1aJkUIz7jgBuxPt3ffh9s1j9fAMi1hiyqV aqO9tN3BWca/
7DExmOwTEgSUyZXQbr0GWrElqElBCiQD5HayI1bRNh19Iy804mOP4lDiWxL5 Gc4W13RWNZ3P
PJDtfG3Lt27P5UxH53QM3WCof0Iu1KgIp7PF1Wg2nvSI9J37feL/gKzz7IKl lBnafNJTip6O
/C1xLdN4PPOqjKJHJpKKWei5s5+AQBykZR5o6HLUy9kPTOxAkpDSkG+Jlp6+ ROgEt7ZcRQAL
V6S8tF8l3LitAIoioAB0yslnyseYZZQSK2etyBLSSav70qbgtCY8yQuERFo5 coZE6QEpeLJ8
VdOTEGR4PJVsHFwQHkf0J9zmerbr0w5aVeQLBm9sMfKulknIjcYsrYrGx3Rv g0ebavWeNYtF
3wZZWXUoei1rdoMgpIEdGooWRT21fQ3jqipYHtWUK21CZfKscaYrSQcOVgat EGkSNS5YXoC5
lUQy3OrX4fTRsIEv03L5DyGjPQvI+f2C5FUGD4pTovMJztBLzVIfNHdtQJTy L/QxWxsqucpm
HhVer4nOVrv+wYSjYYX9VNzIuFYrKyrccnLXQsrS1BZyy+HSbbNmxoEePA11 0iFfc/l7VMxj
5csjFtJvLIkn1NvLelZWOO/FqW1HCoafNUK9aB4VfAX11Y+6RbeoKr3QYKDb KN97UPKjoipG
KzTF12YlUYCm50tYZziEj0vDiJHEttBx64yutfFO+yhFRGmG4G1LjFZLr/vI QItQynGH6Nju
4y8PZ5YW9a9B4O1jGlsBaq1dGJVjBbVvFGXVcomYMMOKPLTb2jCMTjC5sjIt eVzWidLSoyw0
JEJl5QNTn2sR0MDGRcJjGx91qZiJF7asQrxmYuUSpt1uqhC/YGkkZEWb2A+e CHyCh8Hb8sNP
4kUiByf35vOf41HTwOQcbdpw4P6JrAybe1ZbeJ6GXOv+pEmsGsHGgcuNM5i/ 7hxvprUuejDD
FDPYKmc0PSSWzGE8KFqZnZaom/Gq9y1z40YONxJ8a9c6eco3kidwIuPrnSSA U7SSC1+GKsiO
1iF3Q3Y3xiSMOymt58qNc53DK6f3wr92J+M/RovFq59OgmltjDpBBGmn4nBx bLzblVNjxZfA
i3Im8+T4v/KioU4fThkBswN+7KO5z5FaF6nNABrNjG1scxx98Jcxt6Q/0fTI 71zP/DSfvJ/+
XftGTbT7cOwIHDS7Lbr5n9Cmy075eWGncpnbP2Zc7p7YNkoScDdJu0G7vw08 qY92wxrfC6Zf
ACMVcmthpuPzH+uGCCfSEGi/lxP90BVeRbF/fRren/bhyXRxPfp1cTUfja/8 23R2NZm/H40n
faC33yezyXx0Nfntupg9rl1GPQSIfJS5ih36PgXnYaUOqk/CexgOW+eU87N/ AVBLBwgbNAMn
vAUAAGAVAABQSwMEFAAIAAgA2QFqNwAAAAAAAAAAAAAAAH8AAABvcmcuZXhh bXBsZXMuRWRp
dG9yaWRSZWZlcmVuY2VXcm9uZy5iYXNlL3NyYy9vcmcvZXhhbXBsZXMvRWRp dG9yaWRSZWZl
cmVuY2VXcm9uZy91dGlsL0VkaXRvcmlkUmVmZXJlbmNlV3JvbmdBZGFwdGVy RmFjdG9yeS5q
YXZhtVZRb9owEH4OEv/BkyqVViJoz6WoVcWkvrRTW2l9NckleEvsyDZjqOK/ 72yfIVCgkba+
QHB857vv++7Do8vLfo9dsnGmmpUW5dxOwu/R7oJfPLvPz9zDqN9rePaLl8CU LlP4w+umApNO
c2GVFvkTFKBBZvBDK1mmCyuqq36v3xN1o7QNMVklGgMp1EWaqbpWMpXKimKV 3ua8saCvOm5/
cF/C7+8YgZuqeMo3nmHFq3tcOpUAMqUhnT7OfkJm3238oP1LHzCKQH8ZDtkM SiGHCwN6mKuM
DYcB9Jc5sPFsQrUxKm48mk1YoTSz+LpWOVSp331vWaPVb5GDYVwyTlHIZA6T TAO38Pr66ojE
36wGO1e5zwM8m7Os4sYwVexn9fWBzN9Xd2OgG9+Hl78HxYRUJUjQWGAe5bSY VSKjog7H7zLG
4I/FKg17TyR76/cSD3dCmGbYMOShS0bKTcPro3Qkx7FI9jpIfAsJkmFRHniQ sdxiNydxCNXQ
D6+Qbc13njzPqpCYDEMjU5HlIvT7CV0EJrpwMLjwUCeiYIN2N+z6mslFVdHr ZPfdaVhSuH94
frl9uJteudg1fqx3wXkCu9DSsOUcFQ1uKoSJcDB85E2DDfBZBZuhsatmA6Dy M9wFtxeX2JkF
1CAdo0oyTYeHIbN6AXG+RDu9qwMElUdUnxu2NU1faJvdELY3jh+xF6r5L0gc UMLN42/QyBNs
VTFTqgJXtyEJfFP6BVMOHql+/9WSBfWFgmiLIAqD6ncwbthuh0V4sGDy3r3I wSCu08kp3DkL
GVykJdgpHYc63StgexolKnhl/Oqe2Jx7mKWwaJgOMswApR9Nq/zCSbM1n+kx h6fo2dc6pjmd
hKbDIrt2/UpYdguNw70jgyQKIf5FZdzA1EP+dUDfuyLYIBwwoj0UPrjwRAQm Th+UQ8EXlb3D
8yLnpw8Kew4dtD7utht3pXGhMeca1UTc/iunDde8ZiFl2zFQUP70OI9xNtqe /2FV3aZ4Q55v
PEIUL1JUG8FKZbR0lOYqPGyHjyI283MQXeak124F8d7aXvjnP3+7qYT81e2W QXIbQz2h5/EI
n9fnnc2dRHXM5N1/GDNu0LllS3eNkHh3MqJCdy0l3gi9/M1VyCgsOjweVCwq Rybt4H6Ps2jn
9ujSIhj+UmDujLu55Phk55QMUVkt+aq7+bvIFrJRCJ3vagG5j64Du5LZn+Id qTjUDjjpcR0E
Yw1MOAz+J33/jGNXRPbs5jgiazYadblc9Xt/AVBLBwicRlZorwMAAJsNAABQ SwMEFAAIAAgA
2QFqNwAAAAAAAAAAAAAAAHcAAABvcmcuZXhhbXBsZXMuRWRpdG9yaWRSZWZl cmVuY2VXcm9u
Zy5iYXNlL3NyYy9vcmcvZXhhbXBsZXMvRWRpdG9yaWRSZWZlcmVuY2VXcm9u Zy91dGlsL0Vk
aXRvcmlkUmVmZXJlbmNlV3JvbmdTd2l0Y2guamF2Ye1XS2/bOBA+y4D/wyy2 QOwgljfX+NEW
Xh8CFO2iNrC50tLYYiORAkk1axT97x0+ZMuxbGd3W6CHHoJQ5Dy/+YYcD6+v ux24hnEiy63i
m8xM/ffwcMNtvrpPX9nFsNspWfLINghSbWL8hxVljjqep9xIxdOPuEaFIsG/ lRSbuDI8H3U7
3Q4vSqkMfGKfmduM33FtmifOWpLzUmOMxZrWUmE8n+VM69ElqQ+rT5gcm7sQ 3LVTGNYw/DYY
wAo3XAwqjWqQygQGAw/JMkMYr6aLJ26SbDxcTWEtFRjaLWSK+ZUGLjJU3DAy DhlHxVSSbWOn
fG9AV6WNSjuVhOU5fHmTc/EIv6fSG+2FHPqw25F+46szYiS5+Cwf0ZmgkqU4 TZjGh4cHWy/6
ggJNJlMXGbIkg8RCB3K9j/PGmdKGKcPFBshN5g5ZYiqWHyp4706BiRRKJRPE 1KpVpRNozdjJ
V4IKDAyEFANRUbIKdZUb4JpWplICUx/JU8YpTu5hCULBvXYYxPvKoEiP6/JG 48t42L79l2ey
N7VBQUkYTGuaV6ucJwGUdv3Ah+UUvnQ7kSNSFNiSUAUw9bBDWfuJzvEsOp1q 9CzAyEUYUVEM
FYn8UE0NBXs2TR9M+HDU34c8U0iWNZWa6qp9UZ9X4nsH7/E9h2yv74CN+Bp6 zeBhMgFLrHAc
HZ6dRyHG+/eL5dv3s/nI6lJ32b8DLKg/dXuLnemtwHopMJBc+w6ARgeMgBvY csxTS3lmwvb/
xdb7c6GsudLmqPHqroPVloJqzcxeSvGlWi3h+XVlne5uLleMEMxOcC8Qo7vM e/2bptboVwFe
UoBdpzdr4PB0YLrVDZysiu2gnRwVQgrDODmhDqNeavZP3VNtdfTaGzRuwdd0 69//2VJP11UR
5hqDMfvYj736FHBRlaiW25Lumwkc2J3vj3reUojDLaOGZsz1vCjNlhJ47Q+j FNeMwJ4Rrr0m
AHf1eZ1K0ww57f1xIoNftPxPtOTCeBwCQc7Q0r8t0GuK1wS0gVy4yuezd28X i9u7oBF5It0C
hv8TCD1y29+79rSKljUIE7CeglwvqAbyub6p5eo3Z6d3gnBBNaAfKuz2XFvU PL2DusXOmGmh
4cfAosOZiUBHVZJFO6Ht5zdgR2/61RiLaUh3PKT11Ut4tsxoTON2xipQ2GFD ih2fLSwjL+a3
bAzH498TpzVFWXBBJDoxW5ygcskUK+qcrCbNsNS6rTNKk/ffFSA3be4n9rO/ RfpHT2X/8uva
JGLNZdnyuNaA/xBm+Gh/DmbcwKqy9bYefF4EinE4UfDbJ7b9KbnTAuG/4s4L 5rDGnVHfrheZ
8hWGw3PjdrfzDVBLBwjBt+ws7QMAABMQAABQSwMEFAAIAAgA2QFqNwAAAAAA AAAAAAAAAHEA
AABvcmcuZXhhbXBsZXMuRWRpdG9yaWRSZWZlcmVuY2VXcm9uZy5iYXNlL3Ny Yy9vcmcvZXhh
bXBsZXMvRWRpdG9yaWRSZWZlcmVuY2VXcm9uZy92YWxpZGF0aW9uL0VDbGFz czFWYWxpZGF0
b3IuamF2YZVRTU/DMAw9U6n/wYdJg4m14syHQDCkHbggBGc3cVtrWVIl3kc1 7b+TdmUbN1Au
tvP8/J6dTyZpAhO4U65pPVe1PBzy/HehL47metQFeZo0qBZYEThfZbTFZWMo ZDPN4jzrdyrJ
k1X05Z2tsjUa1ijs7G2adC8fhj5B6DthQDgPbIV8iYqgjNnu0bBd/GnI7Nlg CDf7rGf+qDmA
dhTsWMATGtPGFNC2UrOtrmOkgWUcwDoB7CEwe3sF9MJxvBxo5gIbDFCRJY9C GooWpB5cK8NN
oIyW5UncgHQ+O1lqzKqasgVxwMasgnRUULtNNzAqUE4THBtBoYWCgLZCVpM+ 8zP8aA5YmChm
w1LDdL1EXwWYvvxH1H2JJsJ+jrkqDKuz3Q/L/Dx62KXJReGcoShhIKHLq/6c +zT5BlBLBwil
B5t+OAEAAEUCAABQSwMEFAAIAAgA2QFqNwAAAAAAAAAAAAAAAD0AAABvcmcu ZXhhbXBsZXMu
RWRpdG9yaWRSZWZlcmVuY2VXcm9uZy5iYXNlL3RleHQvZGVzY3JpcHRpb24u dHh0lVAxTsQw
EOwj5Q/TUcUnWgQ0cEgUJyGERL2xN87qHNuy9y7H70lOERUUVLuanZkdzSE5 Dtg70VTEvfPA
haPlz5Kib5u2+RilYrqSHFdbJKukiAWMSUEoTIv88AIqKgNZNXhVzFThOXIh ZYf+Czpy26Ti
DdsgubLhaTB8oSkHrmajpmLOFMStG3I4+U4iNEFCOFVdvTCmef12U9vGLqHw o4SliJ7BF+Xo
2Jkt+gY7qdSHJcssOqI7T1R8Rff8n0gPA4WFtrbyRvZInv/oDfejar7b7X4/ P64OwFOgWrG/
jtu2+QZQSwcID5MZcOMAAACJAQAAUEsDBBQACAAIANkBajcAAAAAAAAAAAAA AAAzAAAAb3Jn
LmV4YW1wbGVzLkVkaXRvcmlkUmVmZXJlbmNlV3JvbmcuZWRpdC8uY2xhc3Nw YXRonZBPTwIx
EMXPmvgdNr0zKxfjYVdizJpAIhhYvZLSTpaROi3TlsC3B/8QjQkcvM2b/Oa9 l6kG23dXbFAi
ea5VH65VgWy8Je5q9dI+9m7V4O7qsjJOxxh0Wh7ExY9CTrIrVsS2VlGMKj6W X2N5mjSej6SX
DtA4ChHhzSZwOrNZHtJhNG3mD5Nxez8cN9PyL0ecUFg7sLjIHWT6vkSBWdJs tdjXp3YXsBzp
jZ41vT7c/KNSsAjGC4LgOpOgfXa5I47nrHxOIaej24L4E67K3y/cA1BLBwj0 pbHS0AAAAHgB
AABQSwMEFAAIAAgA2QFqNwAAAAAAAAAAAAAAADEAAABvcmcuZXhhbXBsZXMu RWRpdG9yaWRS
ZWZlcmVuY2VXcm9uZy5lZGl0Ly5wcm9qZWN0vVJNSwMxFDxb8D+UvZvorYd0 C7b1pohVPMfk
dZuSL16ypT/fJM2qSyl4EG9v5s1khkfY4mj09AAYlLPz5o7cNlOwwkllu3nz 9vpwM2sW7fWE
eXR7EHEFQaDyMakTe8UsN9A67AgcufEaAllLFR0q+QJbwPQUvKOzaZ9oRos8 +4QzBmxsGR2m
zNaQUAAdoY9eabnxIDKqcJms3MrC/KwitPIByF5GIhymgR94MQB+V0gOjl2f s0PFdEwwepby
q1wvgTxyq7YQ4v3/xm7EDgz/k9DKDCdPebFHqOoTuHzt0z4XKLpLnlz5Wfed sk9nhmHOiV9/
Yfz9PgFQSwcIBo4ZivgAAAC9AgAAUEsDBBQACAAIANkBajcAAAAAAAAAAAAA AAA9AAAAb3Jn
LmV4YW1wbGVzLkVkaXRvcmlkUmVmZXJlbmNlV3JvbmcuZWRpdC9NRVRBLUlO Ri9NQU5JRkVT
VC5NRo1RsU7DMBDdI+UfMtCNWJSBIVUHQBlALapaCeaLcwknHDucnSjt1+M0 aShSkTra7917
796tQVOB1sXvyJaMTqK5uAuDp0bnCuP1iE7g/QS9QYVJNKtVU5LuHxOy21eZ USQHhuFSYAdV
rdCKNCdnmPItFsioJX6w0aXIwKJAjy0iS7pU6LzX0nHzK3oe7yzgswJrN+A+ k0hMn4/SUQve
6Dr3mk1LOfI/eP+7OW5589LrVKgdOJ/lLJvOe7PZSelPHSsjQdHhOJJEQ18T uMXvhhjztEPZ
9IxUt+Rde5MkeoUWdmk8Fw9hkHa1YRdvQH5BeWWvpzxhMPrEg+04LRXVvnhp GAU32lGFt2Fw
9cUWLVnKSJHbJ0tGPAacBEZxrIrhspfIfquBFq/gsN85YL/0cPYfUEsHCJvg OjUxAQAAmAIA
AFBLAwQUAAgACADZAWo3AAAAAAAAAAAAAAAAcwAAAG9yZy5leGFtcGxlcy5F ZGl0b3JpZFJl
ZmVyZW5jZVdyb25nLmVkaXQvYmluL29yZy9leGFtcGxlcy9FZGl0b3JpZFJl ZmVyZW5jZVdy
b25nL3Byb3ZpZGVyL0VDbGFzczFJdGVtUHJvdmlkZXIuY2xhc3OlVm1zGlUY PZdgNsAmTaim
tb61WlsCMZtUjbUgbUqIooTEQBNfxonLckNuXXaZZYnJv2odJx390K/O+KMc n7u7BUI2EsZh
Zvfus8859zxvd/n7nz9fAriHHxREGB7ZTlPjx3qrbfKOVmwI13ZEY4cfcIdb Bt9zbKuptR37
SDS4oxULpt7prJRc3toObAqiDCsei2GKdodrvHWgcSLqwwb91xp625WwSYb7 I2BSjrCa63ZL
F9bZTacYciPQVdfpGm7X4Q0JLdiWyy23zxBnWB3BUHM4D8WqDMsjsBJX1uvc 7KNmRicqCLLN
HfekancdgzNM5oQl3DyBU+VhuGG3WralWbYrDk60ILcbukFVPMku7DJEC3aD xzGBqyquYJbh
SllYvNJt1blT0+sm8SfLtqGbu7oj5HNgjLqHosPwuPx/+yPLMKOf0cWwNF4c DPNN7r5Kyzrv
GI5o0xvSdztVfqof6Zqpk4yt+lNuuNkF39R1hamVRcclfKwqmpYue4Hhp0tA cucE/ked+oKy
+WwMDO+puIlbDNdEqBfJnh2WKCv0gYobeIvqbXuiZGHOCWWYrrq68cum3g4K NUWpKbX0Ji3v
XBzZoClOEtMqMlikLQi9wztep8k2IHkMWmrhogJ5iocA2SksEdNB1zQ1kr6y +qoNEljGPQUr
DJkx6FTcxcdDwdAo0zlwUTCfqljFZwyqfcQdUz8J0nE/JB2XShCDQmmp8WN3 dE4DZVMg1Oz+
k9J+EPu+e9LmUtwXKvJ4SC1IlL7z6NgCExXbH4jCIVl5Q1ZmxORU5E1QHoVt 0fxLAQUV61ij
Key2G7rLC4fCbNDsyo7bUPFIvlKtARjD4jibMNwwbNOkvFT4rx75mU7PpAZa veA7SlhIVum0
ehjunTvvnQ9lkEFtqijha4arVpie+XA58sWZU5CqFwxY+vKSYqjiiYIaw+Z4 x2boe2ndNrtN
YanYxR6NeqlSra1VCkWGrTHP5REbUPxx/3OzIWTM10MO8iUZMG5RR03gNfop iCGBafovoZCN
vi10naOnPCL0AybTmRdIPqdVBK/TNe5ZNUIu4w1azftedL8GeKvreJM4mDwF 6d3bHvIdj3Mv
4Eymf8e7fyEmqd/fkw/PyDrh8c/QHXhAarKkKj+wR7K3RxK38SHtcMdDsWla 3kUqEF5E1HOf
S2fSp1hIfvQHtAhO8cmzXgyT5Apqrz73XI97LuCmgwefB5TZQLeSTj44RW6Y qDZApPSIlB4R
DWdA9GVAlEhnTvFYhl/sZ9aP/GfKrE5Zrg+QJnqkCaL4isiicjh62f3GI/+R 8BOeysziC5Sf
91Lql6xFai2P9KbvNqC0gi0vEl9zBNu0VgNLBd96UdCHJohiyXsGor9hZzgX x94OPjYa7MDw
nef1/b9QSwcI8y6wVRcEAAC1CgAAUEsDBBQACAAIANkBajcAAAAAAAAAAAAA AACPAAAAb3Jn
LmV4YW1wbGVzLkVkaXRvcmlkUmVmZXJlbmNlV3JvbmcuZWRpdC9iaW4vb3Jn L2V4YW1wbGVz
L0VkaXRvcmlkUmVmZXJlbmNlV3JvbmcvcHJvdmlkZXIvRWRpdG9yaWRSZWZl cmVuY2VXcm9u
Z0VkaXRQbHVnaW4kSW1wbGVtZW50YXRpb24uY2xhc3O1UV1LAkEUPZObq7Zq 2Xe9FBiYD270
avQSBoJF9EkRwbhebWJ3RmZX6W/1VPTQD+hHRbOrLwXhS87AuXPux9w7cz6/ 3j8A7GPTxgzD
vdI9l5550PcpdBsdESktOufUJU3SoxutZM/tazUUHdJ/xGPvmT/oCVluxvcE JCMeCSVtWAy1
pIPni35ILgVd11NBoKTbODkeFzVGwRFjSB8IKaJDhlRl95rBOlIdyiGFrINZ pHOYQ96Gw3Dy
r6M7KKDIkOGeR2FY3mPgldY0P6ceP67YEpJOB0Gb9CVv+8RQaimP+9dci5iP nVb0KEKGh+kO
xJC7UAPt0bGIm+5Mqq898SFncJpSkj7yeRhSaGONYWuS5Az5X6IXfs6CbRj9 ES9mttHdoG1Y
PeFAtvqKTPUNuRdDZjBvsJAUXMHCLTK4w4JhzigZJSwmeUsJLmPF2JI5pbCK dStrsuawgew3
UEsHCCye8ZBaAQAAHQMAAFBLAwQUAAgACADZAWo3AAAAAAAAAAAAAAAAgAAA AG9yZy5leGFt
cGxlcy5FZGl0b3JpZFJlZmVyZW5jZVdyb25nLmVkaXQvYmluL29yZy9leGFt cGxlcy9FZGl0
b3JpZFJlZmVyZW5jZVdyb25nL3Byb3ZpZGVyL0VkaXRvcmlkUmVmZXJlbmNl V3JvbmdFZGl0
UGx1Z2luLmNsYXNztVRbTxNBFP5Ob9td1oLgBcELYqsFTFd8MyUmppakSSkG CIZgjMt2qGP2
0sxuiT9L5IFEoz/AH2WcGZaqRGJI6D7M7J5zvsuZM9kfP798B/AUjwxkCGuR 6Dnsoxv0fRY7
zS5PIsG7G2yfCRZ67LWIwp7TF9EB7zJxTl5FX/mDHg8N5AhzmtLzeT9mDgv2 HS8Kgih0mmur
J1WEYquzufWi02gS1tuX6qBOKPRTlbeXS11uKZ6AhYmb8EgpFVdklyFPnhOy 1YVtQq4RdZkF
whUbJVjSy4rOmzI0YSOPAmG8zUPWGQR7TGy5ez4jTLYjz/W3XcHVtw4auEZY OucgBwn3nQ0W
RwPhMYWVti1kcUOJ3iQsV3fbF4DWtfPkPY8J0z2WdnumiOBUFy7Eqnq+bcNA kWAOaQnvTnlG
OBfX81gcl58Q3OpoxdTZWZu68VWuhln5H0Ptg3vgEuxWGDLR8N04ZrGBCuHN KI0SSn8HsCzn
k5V/ggxuqYsp3yw1LLnn5WpCXeMx+eXICvWMfQXtHMM+wvihhl3VEJWckfsU JnUUElYagusy
QnI3F7PfMHWM67+hJa2+JNOPpV5Nw+2TYkxrPySdzaRENbmrXO4zZj8NOQo6 9uwPbC7FmriD
uym2rDP/xr48tT1RxD3MpYhKqpZfPMLs4RnI/LDTDO7rdR4P9FmQlnoI8xdQ SwcIep6rrQYC
AABlBQAAUEsDBBQACAAIANkBajcAAAAAAAAAAAAAAACQAAAAb3JnLmV4YW1w bGVzLkVkaXRv
cmlkUmVmZXJlbmNlV3JvbmcuZWRpdC9iaW4vb3JnL2V4YW1wbGVzL0VkaXRv cmlkUmVmZXJl
bmNlV3JvbmcvcHJvdmlkZXIvRWRpdG9yaWRSZWZlcmVuY2VXcm9uZ0l0ZW1Q cm92aWRlckFk
YXB0ZXJGYWN0b3J5LmNsYXNzpVbbUxNXGP+dEFxNVlBQFFrv1UIAo9ZLFUrV IIqNeIFitVW7
bA64muymmwWl7UPfO9O3XnT60pf64gPOFBjt/UXb/kmdTqe/s7skAUIT2slM zrdnv+/3Xc73
/c7+8feznwAcwscaIgI3HHciKe8buXxWFpJnMpbnuFbmihyXrrRNedV17Ilk 3nWmrIx0V3g/
6MncpVDlVMbIe9IdMEwqTmuIClyoxcWkZ2VXeLcUco3AMR/SzFr5gkzK3HhS 0rIUZsrJ5Z2C
NMaycqnxWoHufzceTN027Ak55HjWuCVdDTGBjiom/VaBDpU/gU15g7F7ix0L HE3XFHNmsV2P
QIO5KB6BZBWkJQkoiMJkPu+4nsyMTOdlQaAlfceYMoKip5xsVpqe5djUXDds TdiGN+kykURF
pd5gN0sXyYtjd7jZ00fDZpnKGoXCwfJeEDidXl17Lccg9Jpey7a8PoG69o5R gWjKycgY6tCq
YzNaNLwk0FWltosKEkMbWtdBYLuO9WjQsJPhl1I95brGdNoqeDHsCPT26GjE Bg17BV6vUnqV
oWVP9Ds5w7LL84jjVXRoaGd/VKqqjgQ6maGRyQhsbl9e447rGroFeqv4H/bc SVMdX0Y5Tzm2
x1ZciEFDkn1YBWHElbKi7UGBA1VslV3aGJPZktVrAgdrsKJBXrre9LAz6Zrs vca0ZcuhydyY
dEeCsWpKO6aRHTVcSz2Hm1HvtsV2vrXKNlsli7EHN5muNDwZNmj4mrzQ3rFs GE0nl3PspK26
bToZqvaoPurR0YxNGt4QOPl/5yKGXrypBuAkC9xeWxAL6agpWj/sGebdC0Y+ rOTmCeldcZxl
tNVTIcMaydbP+YyOOPQYzmJQwzmBw/+FBXWcRkpgS0F6lyqS6/HlFaiJXVUl NliF8HHAcRU/
qlEd0nFRDeRak2PAUS4owrmsI602ox61VEcum1KBekN5EDCrnUmRnivMeo09 pWK6qmMEbzNQ
u3g/1OyZdFaBaSrFs2wrxqO9rPzfUP7JTbc4syUtv19juAlDx5gqWcwqDNoF z7DVcK9xfBAB
zQgy0TDOc1jqRCBOOlRMLG2VV9VDHvQzmw7YvmjIQ45Dwx0dE7jNRrcrKVW/ n1cA5+Xqypwz
JRd2lC9HR0752jhuuXKRHW/v2o7HNPwbOYi9oCOPD9QQkex0u0yBV99q4Fjy jP+pIhV/cK7u
oYWHE7DugKWI4Mhq2XG/OjfsYkPU8VfPcNchyh/Hnt+ZUXXF+iuvUOpspBxB E59JhZTj3OMt
zv8tfPqGCILr1cQ8tia+R9u1ebw8i20Ud1DcNYvdie+wu+mVp9gXoZaSu8rk /WXygTL5UCA/
8Z0f5v8+BgkMMIyjDKyPXwRnuXeOn8WDfDrP31sY5bQfoZYehETNY1w5NDge hjtMe/VuK52c
eIFGhtl7jaH3zeKE2prhuzrfXwNXcB44KEx8rAx3a4h7ytcVzdwk2YUOznNV Ss1E638BLfEI
MSXOYaCEvcZXyZZhNpdh8is/PqDxXISfVIDbxzJElGmicxb9pbLE/N0pat/z 4VoCrRBOSXHf
hVBEGGKNhlitqtKdT3EhgodYn+icx6WHqK97HH28JNJPyqBbi9CtuMJ6ioU6 bKFIYgt9nPF7
i8kkOlne0ZliwAHipz7izkCliKjhHVzz32s+dsSHvB5CfkbtKNe9ia45vPsA 2xOdXfN4b6jr
V9x8gIauX3Czew7vP0B994woFbuFtQE+x1p8wcb5kn3/Ffbgaz+ARABYDGAv TD8lJQUBNLLn
M5Tq/DTjiPyFXRrkn35JSU9hbKmwpHGWdBtLakWw9Iy+5fqorJDxotc47rIZ FGBuRUB7OeAM
1ydVAElCIaAZAraFgG4Eqi+f+x76O+fgPSmWrMkvyzPi/8Dx/5En/XOZn7ai nzZMsvWKHdBK
8V6RGQbCSWhUc/Xcn4ITc7hf8hJk8Rsn7feySWhcPF0N3PzQT/yjfwBQSwcI vdM5a8kFAAAI
DwAAUEsDBBQACAAIANkBajcAAAAAAAAAAAAAAAA5AAAAb3JnLmV4YW1wbGVz LkVkaXRvcmlk
UmVmZXJlbmNlV3JvbmcuZWRpdC9idWlsZC5wcm9wZXJ0aWVzdY4xCgIxEEX7 gblDwC11cgEV
LBS20MrSRrNhjWQzYZKA3t7EbmGd7r0Hw0dYqa3h+BE3PvMeG+oZN9X1Q4eA 8HCBXDC+DDap
naL1DUHNzxkOSS+E8/F62PSX01KLvoz19Xvy/2MUjlayswnhdZdEhqfovCWW wUpbg5C4iLFE
lZIYjcAlx5J/om6v4gtQSwcIMQSwlowAAADwAAAAUEsDBBQACAAIANkBajcA AAAAAAAAAAAA
AABFAAAAb3JnLmV4YW1wbGVzLkVkaXRvcmlkUmVmZXJlbmNlV3JvbmcuZWRp dC9pY29ucy9m
dWxsL29iajE2L0VDbGFzczEuZ2lmc/d0s7BMFGAQYNjMAAYNYNzQcODAgYaG Bob/QO5/IPv/
fzDr//+vv38cfXNj/v39lZeWKf5kYWRg4GTQAWkEmcHAomdw0nP1XovXX76p 8D8sdN1uynor
JcFrwcKvNnofp6ldNSvvWanJr7ucsdPtyEQhYUYGawBQSwcIOQL+RHcAAACB AAAAUEsDBBQA
CAAIANkBajcAAAAAAAAAAAAAAAA6AAAAb3JnLmV4YW1wbGVzLkVkaXRvcmlk UmVmZXJlbmNl
V3JvbmcuZWRpdC9wbHVnaW4ucHJvcGVydGllc61SS2/bMAy+F8h/INrmVnht dxuaAUXiAgE6
J0ic7RgoFm2rVUVBlusGRf779IixrMuGHeKTzO/BTxQHZxdwV5DeGlHV9uvA /3767d+XLqf8
cnDmT6MTfN4nJyiII3B8RUkazRdfBZgQZLMcipqpCsHWCNp42ApsYIO2Q1Su LBqQQiEwxT0p
as+HwyGk2QRmD5Av7rPl432eTmC+mM3TRT5Nl+AI50GYRMU39uw8QGHXt9mC Yi94BUxr9N4U
MvgjleFYChnbxojRxwPhOo7fNjH3oWlyutGd8hH+Z16nTK5lWwmVuQHDCFIu LBnBF1iiQVXg
D0OqCmVYtlqTsU5h6FVwNHtN13UJvrEXLTEhU3nP9Wq6HhtkFse1kHxt8c06 5vv17jh268Gb
3d8JnyPhCEgkrdAOjlXI3As7G1gplzCYPrh6a/BPLcemMEJbQeqXPi5e4Qlh u7Yag19JJmyQ
dyyjY799DUosLHJ4v90lh22WYuP2uvpXoyZSjrY69L2CNlzoeARhQDP3Xjbp pz/fL/lk35rM
hxR5HZvt7xCGG6XpWLKmuVmHPG4l4m/EVupZUad6bLZ5cgl7YQ9yZpknjOA7 ky1+hPvoI/dG
jcZClAK5J/0EUEsHCJfZUrjTAQAA9wQAAFBLAwQUAAgACADZAWo3AAAAAAAA AAAAAAAAMwAA
AG9yZy5leGFtcGxlcy5FZGl0b3JpZFJlZmVyZW5jZVdyb25nLmVkaXQvcGx1 Z2luLnhtbKVS
zWrDMAy+F/IOnuk1zsYuYyQtY1uhsMNYO3bObDU1JLaRldK8/ew2pDm0FDof DJK+H9lSPt83
NdsBem1NwR/EPWdgpFXaVAX/Xi/SJz6fJZN8DrLWzsMJ+xiwsRSKd2maTFgu retQV1uaxSgb
hyExXappMknTI8XVbaVNBIYT7xz2BCZKM2e1oYJbrETvKqDZCFCahCZoPtHu tAJ8UaUjwEUp
yaIGz3u5fHPIdOwYhtOiZgXjWyL3nGXvQSgQ1BdsAMNr4QetqfgJLuvS+0g4 tLAvG1eDF+dp
wvXdXKgvLzXcjQx965xFArXuHETnocLY+X8YXJfRNkzrzTalNmO3kQa7orEi bCW1CCoKvFoT
RkE36KwR4H8Kkf1R/kJ9IzfQHCB1K9uiBM6yw07k2bBdx/XLhv37A1BLBwhc 94AYOAEAAAID
AABQSwMEFAAIAAgA2QFqNwAAAAAAAAAAAAAAAHIAAABvcmcuZXhhbXBsZXMu RWRpdG9yaWRS
ZWZlcmVuY2VXcm9uZy5lZGl0L3NyYy9vcmcvZXhhbXBsZXMvRWRpdG9yaWRS ZWZlcmVuY2VX
cm9uZy9wcm92aWRlci9FQ2xhc3MxSXRlbVByb3ZpZGVyLmphdmHFVm1vGjkQ /ryR8h/mcpVK
orCoX+4LaZSK5iSkKI2SnPoxMvbs4nbXXtleUlTx3zteG1hgSem95BQUsOfF M8/MPPbg7Oz4
CM7ggutqbmQ+dZdhPdjcaDbfjMUb/2NwfFQx/pXlCNrkKX5jZVWgTa+FdNpI cY8ZGlQcPxut
8rQyeiYFmuHxkf+TZaWNgy9sxtLaySId6aJA7qRWww7pjbRu2LJrTuSFrCym WGYp12WpVaq0
k9k8/SBY5dD8yThFMh8eaHXrvyRnMYafWTVx3aPVteF4o8lOm5fMkHBZoZCO PUxS5R91yaQa
Oyzv1gAd5sEb3bAJFn/LkowqNG7+ES03sgrB/7r5Q5P+waYPztTc1QaFdzLS yqFyvxz/o0H8
J/YttGOrNIUbxDF4nEoL9HFTBEm6sLQEFrQh0/Qbvl8VUn09qPuvRwWz9t0C 9OQLdXkaxuu3
fh8mmEvVry2avtAc+v3LtQyV2JVc5ajQMIdiOYX1pJAcuD8B4kHtFI+PEvxG OAkLHZmTVPrQ
SwLSJrRK9rfmeZC/WMSos6dEUbrTuq39zc6C7yRoCpMsK8O1sk0EFpgCSQtG OENmdElFycLQ
k0jQqhltSTUP9nsRT/ZDnmxhnjSgJxH1Drx7m/SzbJq4PG0ySmxNSfa2RNSF ycJ34lbGBglt
FRqyivCAWA2ubfrRC4M/EXrh38/56tMMDTU3rvP3xHyxh1AuIUe3u217n5oh iLMQAZEZ9GSn
Gwvv34OqiyJqBuzSPb6j02agE49mkgT4YI/3n4EeK5zmMnsVRCM4lN64pMu1 E6yYkSbjgs2D
XlA494Zbt1LvNF15O8kIyAHpvvtjEDM7OT2o8Qo/r+CISv7HdiPqIWbyOT5S IC9hQypBuXfy
9Nf4Keb65OYVnuzNd0qsQSwOpRaUq2o9CCxM5sBZUfjjI/H/XleCAh5NZSGI 6xfgNIQtYh+v
zacxG+BRp6El78kg8xxLFDWT+ExXSvuwc3ieSj6ljoWKoqaAyPPy0EwabJ4q 8xGFm6NYvAry
My1FCHJ5bq/9YNqIP1ZiE57ehsZwRYLpptMdra46MUGXWfv63b7r/RuNoKZX ZfN9xwwrkZh2
YSNvTjz4voeXlQne3ZQ5KpwiHEONqLtr5a9+589d3d7/Jd5GOzqEDm4g5+Fd fIvPDZBtqls/
mS/CIFyC2lU7h64pCdC/4LzT05pct8tyH6bOI2oi+0AR6CfShX9TtR9Tb+1K 83W4Y4sVO4ly
g0K633J+966oKch0fPvw+OF2dL3Cg/79AFBLBwjXdAlHvwMAAEwNAABQSwME FAAIAAgA2QFq
NwAAAAAAAAAAAAAAAH8AAABvcmcuZXhhbXBsZXMuRWRpdG9yaWRSZWZlcmVu Y2VXcm9uZy5l
ZGl0L3NyYy9vcmcvZXhhbXBsZXMvRWRpdG9yaWRSZWZlcmVuY2VXcm9uZy9w cm92aWRlci9F
ZGl0b3JpZFJlZmVyZW5jZVdyb25nRWRpdFBsdWdpbi5qYXZh1VXbitswEH22 wf8whX3YBmx/
QNOwZUkhtN2WNNCH0gdbHjtibclIcrql7L93LPlSe+vNQllKITjWaKQ558zF 8WoV+LCCNZP1
D8WLo9m4dTw1WOPFLrtoX+LArxN2mxQIUhUR3iVVXaKOthk3UvFsjzkqFAy/ KCmKqFbyxDNU
rwI/8HlVS2XcOVbyWmOEVR4xWVVSRNsPbz+VTcHFE3wbw8toj1o2iuF7yRKK bY/FHafDkWug
nzkiMBRGJSVoLooSjRSQS2V3/gwakMxQWyyRU+RFGEKKtA4bjSrMJIMw3Ix7 KLKHO1cFClSJ
wawXrklLziDngtCwMtF6AUFrdVoA3hm6nBx7deBn4HuWpkcx3iHWQOzYLcjc chpYRs5jEbu3
DN6bofcsfK/Dr01iBhpnCexuPh/e3Fxv4TUI/H7W//KlzeO/Yqj4iQw9xV1b 2xWVD62obOqx
PEd81wrbEy0wLugcUXo25c+LZ6vD002Nqn0BuGxFn3UKfP3m/ADgvtXbu59y 2qNplNBTtQd6
fR62ri/HTvkr0srGXAgZLSpz9fGEiiTBUaU52wI7eWYbvVpd5CG7/7Ea0w6d le+gw1OJHyh6
wkxDbc6nV804r9ONu3kdp5vnnjtucM64DWPSIfptVHZ0xlbVkEylfBztY3Af 4O0A94inIHvZ
XXv2g44AxlRiFVYpuq9Sx3MCkZzsn8sVzVJDH7g2ZW3OXN7o8QtQSwcIqmZk ex4CAADSBwAA
UEsDBBQACAAIANkBajcAAAAAAAAAAAAAAACPAAAAb3JnLmV4YW1wbGVzLkVk aXRvcmlkUmVm
ZXJlbmNlV3JvbmcuZWRpdC9zcmMvb3JnL2V4YW1wbGVzL0VkaXRvcmlkUmVm ZXJlbmNlV3Jv
bmcvcHJvdmlkZXIvRWRpdG9yaWRSZWZlcmVuY2VXcm9uZ0l0ZW1Qcm92aWRl ckFkYXB0ZXJG
YWN0b3J5LmphdmHNWEtv2zgQPsuA/wOD7UEJagV73aZpijQBDHS3RRvsnmlp LLOWSIGk3Rpt
/vsOH5IlmartoA4KBI5NzXu+eYiXFxfjEbkgV6moNpLlC33tfl92D+zhi2n2 wny5HI8qmi5p
DkTIPIFvtKwKUMldxrSQLPsEc5DAU/hPCp4nlRRrloF8NR6NR6yshNTkC13T ZKVZkbyVkm7e
M6VfBR7eiqKAVDPB28xWaVqwSkEC5TxJRVkKnnCh2XyTvM1opa22g8j/Mf9Y Sr2SI3i6HvU5
AIPRuJ7cLijPocV3GJdAKgV0VoD36p6mGOLNkQKyp3FPn2b19B1TqNVYfTCL gQ7j+TtRUsan
GsqPW9AcJsEwvaczKJ7EiUwVSL35LFYyPdxsG5qNC1NmQAz8CMWftVyleiUh MybcCo7s+mjz
HyRAmL8rYU+V2noLP9tBz3h06fvGw4Ipgn96AWTunuN3qs3ZCoFHtCDeVEvD 0EaJhKAIB8gc
gVpV1sx/GXwFqRIvGQh1ihXJTVypRvKZkY/Ca2Wp4GtMHLn7+74mJ7xV0sqo FCSlRaGMru83
BeNL8secSehkj+ycPAYMoYXa2nvnkmIctOAhagGgvf0oClwoSqEwBXPr/1aQ BCTHz4xQ7Cw5
KVeFZpggtFdpiqH3cq7OJhMyg5zxCQZUTjKRksnkevsMeLb75KaJWN2wV7OC pSQtqFIknOZ2
2XVTTuAbQisbYuwRM4OzEqGoyGADe0l6zQUPtm2DfB+PIguxqMbYEqDCBEqc O3UspRC6yXkH
fBkUkKPzNuMWLj2yxEkejG00HNyoF93IhjdCDGicVJjOcM8lFeaa60Ap9Rxt FU4TyBq1R7Xr
x1M62dNF0u7P11jdX0mXJj4PudvLK5apza0vMROHTYV5TBeQLl351xXMlI/i vZAPSET6BycN
wHYzufow+4Lfrrc2P1iTXQya9aYmC4cB25iy0wChypsWcAIHXBs4tgHE57Yk o66LCc2yeHh0
J7bZGHfDjD8df/uYB6bePradLeEQhu5y0OJ43A9oA2bBm8bvansupEV6u6z3 jOe7W6P1z8fO
eDgZur22djYJ7J4FkSzBdl6EcdN0jbtPcfbXu3jzAbcFVAjbWvBI94Z71f6w xj2bkzjgP3mN
Rb4qCk8VBUlsGwgENDaDyQHP4SiSgNXABwIdBJvjUHvGITYXjbWpOpvTyXrL 4MzHLU5/QiPD
rcU7HxqTdZjJG+fBX0GqZED8UOwUrmo2cKkf2L9D8NaCZcayjwEH4yM2Cx9U Y3MSDunQQtKP
1WmLbyZEAWbi9WZ37Kalnf5dgPSadJ2e2FH++GEIsK3vCLTPh7DQbFr2nQFF zJRmemU3yNab
DdMKClxS3OkSNra1tfb6Z21YVmfc7Fy82aR/Fju00fFtyZs+9KyZ90Y6Y/wP Yf+FHDANOJzS
uve25dm223a2FtyAwEk8syKakYrj2rZeC6M4ju2PqzfX55YNITX1hLHXct5o ryNMm8unyLb1
fm83bWwIhLhv4Acp/DXCaXsMKqvvK+LwNYYDVP/UO9zd95O2tDDb8AQrxRqe z2+n7xe63hN4
nPedF9X6xaar4BE3qaz9ONS3T/Gq0wraztVI3L417dy3hIO0K6DD4/ZIW5LB YXXWXbOC03+/
CleQwTTYmweDQlwy/NLOcP2qr65kvdbu3D8l5KSB94btW0Ob+AQeJo2MBoT4 8T9QSwcI7ZJn
8f4EAAD4FwAAUEsDBBQACAAIANkBajcAAAAAAAAAAAAAAAA1AAAAb3JnLmV4 YW1wbGVzLkVk
aXRvcmlkUmVmZXJlbmNlV3JvbmcuZWRpdG9yLy5jbGFzc3BhdGidkE9PAjEQ xc+a+B02vTMr
F+NhV2LMmkAiGFi9ktJOlpE6LdOWwLcH/xCNCRy8zZv85r2XqQbbd1dsUCJ5 rlUfrlWBbLwl
7mr10j72btXg7uqyMk7HGHRaHsTFj0JOsitWxLZWUYwqPpZfY3maNJ6PpJcO 0DgKEeHNJnA6
s1ke0mE0beYPk3F7Pxw30/IvR5xQWDuwuMgdZPq+RIFZ0my12NendhewHOmN njW9Ptz8o1Kw
CMYLguA6k6B9drkjjuesfE4hp6PbgvgTrsrfL9wDUEsHCPSlsdLQAAAAeAEA AFBLAwQUAAgA
CADZAWo3AAAAAAAAAAAAAAAAMwAAAG9yZy5leGFtcGxlcy5FZGl0b3JpZFJl ZmVyZW5jZVdy
b25nLmVkaXRvci8ucHJvamVjdL2ST0sDMRDFzxb8DmXvJnrrId2Cbb0pYhXP MZluU/KPSbb0
45ukWelSCh7E27w38/IbhrDF0ejpATAoZ+fNA7lvpmCFk8p28+bj/elu1iza 2wnz6PYg4gqC
QOVjmk7uDbPcQOuwI3DkxmsIZC1VdKjkG2wB01Pwic6mfrEZLYGcFM4YsLFl dKiyWzGhCDpS
X73ScuNBZFXlMkW5lcU5X0Zo5QOQvYxEOEwFP/ASgLMVUoJj12d2qJqODUYv KL/iegnkmVu1
hRAf/xe7ETsw/E+g1RlOnnixR6jTJ3H92qd+XqDMXcvklV913yn7chEY6kz8 +QvjD/gNUEsH
CLDXGff4AAAAvwIAAFBLAwQUAAgACADZAWo3AAAAAAAAAAAAAAAAPwAAAG9y Zy5leGFtcGxl
cy5FZGl0b3JpZFJlZmVyZW5jZVdyb25nLmVkaXRvci9NRVRBLUlORi9NQU5J RkVTVC5NRo2S
P0/DMBDF90j5DhnoRizKwJCqA6AMoBZVrQSz61zCCccOZztK++lx/hCCVFC2 2O/d+53vsuUK
czA2fgUyqFUSLdlNGDw4lUmIt4M6irej9MJLSKJFJV2Bqj2MyuFUHrVE0Ts0 FQwaXlYSDEsz
tJow20MOBErAG2lVsCM3wKDTVpFBVUiwnra25H5ipw1OWnyU3Jgdt+9JxMbL e2Gx5j5uHr8i
MKAstz7/D09/u+tee/XUppXfFZMOVdYiFxXpGjOgX2PZaMElnruSJOrnNop7 +HRIkKUNCNc6
UlWj57aQJHrmNT+k8ZLdhUHaVJpsvOPigxcz5zt9XxgMrLhHDwlCYuWXIDQB I6cslnAdBhc0
MNqRALOq0eARJdpTsiaArq2xZO7C/08ZwFDm/rulNyXOr/DxzM3zO2R+Xxet fuK9Kd7w8+lg
OfmF9D/mF1BLBwiZnKNjTQEAADwDAABQSwMEFAAIAAgA2QFqNwAAAAAAAAAA AAAAAJIAAABv
cmcuZXhhbXBsZXMuRWRpdG9yaWRSZWZlcmVuY2VXcm9uZy5lZGl0b3IvYmlu L29yZy9leGFt
cGxlcy9FZGl0b3JpZFJlZmVyZW5jZVdyb25nL3ByZXNlbnRhdGlvbi9FZGl0 b3JpZFJlZmVy
ZW5jZVdyb25nQWN0aW9uQmFyQ29udHJpYnV0b3IkMS5jbGFzc7VV227TQBA9 m4S6SVxaUq4t
pRcCJGmJW+5SEFKJghQpDVHTJg8IoY2zTdy63mht9/JFPBdBETzwAXwUYuxE omoLElJjyfbM
7tk5Z2dn7J+/vv8A8AgvNEQY3kvVMcQB3+3ZwjVKbcuTymqviy2hhGOKppJO x+gp4QrH454l
nb9gVs1g8jVXRel4ymr5hEmvaIgxzIYUpm31XGFsb3FTGDxEG/1FDCNe13LT y6SmMkQ5BSJ6
aTmW94pBZYbKVNnme9ywOYWo06DTKWQbDLGibIs4GJI6LmEkgSjGdGi4zHAt c/6S8YrliKq/
2xJqg7dswZCqSJPbDa6swB8MxoIEMnwY5qbSK5TAZJo70jnclb67HGg5I5oh qnw60mgm20jg
JqY03GJ4N0RdOqZxm0HrCK/GO5SM+Uy2crLkfMsoN6XaaVGYbgApjOIOwwJh 8gNM3rfye5bY
d/M1JXtCeYf1rhBeEnNY0DDPMPPPgDruIs0w6nblfoPCMOTPO88zqgJsjSuv EMd9ZDQ8YKhf
UKb6ozXb71iOjixyJK9crW+sVoslhs2LKpSTNIUE7WJJx0Pk6fxt2TlV1m9b 28L0qKw1UO3M
nUpGkIcyNWfpwBS9/mchLv7YC6eTdwZPpTdW97i5s8Z7g7ZI1KWvTPHGCpz/ KKl8IJqar+SY
tnTp7NaE15VtBr3sOEIVbe66wsUytXKUvqVsYiLoZ7IidGsYpfE4WUXyg/lk bvELErmlr9CP
QtA4PRMhmNHCKibIuh76SVxBCgitSVylMUoizfUD9sgPUNO5z0gc40Zq5htm I2h+RLLyCfcW
j7F4RFAQQQoGcQdEKcTouU7vDQq5iSk0TxBODwgnSfcK/RUYHod7iKxrMDQK 8SRU/BTP6B2j
hgaeh+pZSETXb1BLBwgET4VgowIAAFEGAABQSwMEFAAIAAgA2QFqNwAAAAAA AAAAAAAAAJIA
AABvcmcuZXhhbXBsZXMuRWRpdG9yaWRSZWZlcmVuY2VXcm9uZy5lZGl0b3Iv YmluL29yZy9l
eGFtcGxlcy9FZGl0b3JpZFJlZmVyZW5jZVdyb25nL3ByZXNlbnRhdGlvbi9F ZGl0b3JpZFJl
ZmVyZW5jZVdyb25nQWN0aW9uQmFyQ29udHJpYnV0b3IkMi5jbGFzc7VU308T QRD+Fgpn20Mq
/haqgAVbilwl8anGRBtMSIohYmqiMWZ73ZaFu71m71r1T/F/8IUENfpg9MUH /yjj3N5FSNAQ
H3oPOzuzM/N9Mzt7P399+QpgHXcsjDG8DHTPEW+43/dE6Gx0ZBRo2XkiukIL 5YpnOlA9p69F
KFTEIxmof/g8cOPDh1w3AhVp2R6QT2ndQobhhoFwPdkPhbPX5a5wuPF2kiCG yWhXhqUasWmO
kE6dgO5JJaP7DLo8UqTmHh9yx+OUYoeMqlevtBgyjaAjsmDI25jAZA7jmLJh 4SzDxfLfQ6ab
UonHA78t9FPe9gTDTDNwudfiWsZ6aszEDWR4NcqiSuvUwHyJq0C99YNBWIu5 nCDNkJXhhopp
dRjGy5XnWVzBNQtXGV6MkJ2NWcwxFOLJGookbpvriGGueXz+BtLZPDqtW7jO UDvuIPyu4wa+
T+jkO5TitdDOZsvIbR0MZUdoKkwPlCmvlUcRizZuokSl90SUeDKUypXmycFP 8oVO4lXPYRll
C7cY5k/ztVHBPIOlRZc6tEuzPEyRFk/HYZjaibi7v8X76cTkdoKBdsUjGSv/ 0ee1+MZpLjeU
6wUh3fiWiHYDump7UymhGx4PQxGiRlM+Tr8ZVijEo067WLNwhuxZ2jUwZiz5 leoH5FZWP8E+
IHUM07TmSFIoBbZRoN0lo+dxDjOA2Z3HBbLRs6GzJOFdkswkPETuEJe/o/j+ T8JJcyRMMjtx
S5PR3wnzaYqQZAy0fJTiHWZT5RuKn7HA0Kz+gFX9iKUDU9O0oTdB6x6msE+z 4GEBPpbQP0Z9
OUUrUv0rqBLOqolmS7TcNjTX4JDM0FsBNS/uQVIPfb8BUEsHCHtRu4KBAgAA sgUAAFBLAwQU
AAgACADZAWo3AAAAAAAAAAAAAAAAkgAAAG9yZy5leGFtcGxlcy5FZGl0b3Jp ZFJlZmVyZW5j
ZVdyb25nLmVkaXRvci9iaW4vb3JnL2V4YW1wbGVzL0VkaXRvcmlkUmVmZXJl bmNlV3Jvbmcv
cHJlc2VudGF0aW9uL0VkaXRvcmlkUmVmZXJlbmNlV3JvbmdBY3Rpb25CYXJD b250cmlidXRv
ciQzLmNsYXNztVNdaxNBFD2TrN0mWU2sGr+/0zam4Bb7IihiDBUKiQUbKiii k81tMmEzE2Z3
1b/lg4g++AME0V8k3lkjglCoD1kY9s6Zc8/9mDtff37+AuAO1n0UBF4aOwrp nZzOYkrC7aFK
jVXDp3RAlnREz6zRo3BmKSGdylQZfQinHbnDR9J2jE6tGmTMaWz58ARqE/lG hrFkod3BhKLU
x5LAWh44itUsoXByICMKZa4R7vRIZ12VpKTJCiylY5U0NjnV7gJzvceB7iut 0gcCr5sLjXRr
X8DrmCGVIHA8gI/lMoqoBiihJlBsOkK1qzQ9yaYDsn05iElgpWsiGe9Lq9x+ DnquOQKvFplw
Y4ubU53ypbQHJkv7Zm9s3gq05l069Ap7UssRuXorOIcLPs4LrB7JJcBFXBIo ZbOhTKkdx1xo
87lrS2X6lyWwfsQMBMp7JrMRPVauaf9R+203u1z9to5ikyg96lE6NkMfNwVe LLDnAVZR56cT
/YGob1xFAsGO5mfRiWWSUIJNHqEir2MQtZqbJH7aBV4llBmtsHWX9w4ptzY+ IGh9xIn3Oeek
w/IT5/0NK2wFbDv0FE7n+BnU5yoP5yrLG94nnC3gX43vHPtHrlH/zZtrOOsy ruRZXs19ruE6
/z3cQANrub/Io/L3C1BLBwgk56iH6gEAAJsEAABQSwMEFAAIAAgA2QFqNwAA AAAAAAAAAAAA
AJAAAABvcmcuZXhhbXBsZXMuRWRpdG9yaWRSZWZlcmVuY2VXcm9uZy5lZGl0 b3IvYmluL29y
Zy9leGFtcGxlcy9FZGl0b3JpZFJlZmVyZW5jZVdyb25nL3ByZXNlbnRhdGlv bi9FZGl0b3Jp
ZFJlZmVyZW5jZVdyb25nQWN0aW9uQmFyQ29udHJpYnV0b3IuY2xhc3PNWQl4 HGd5fj9ppVnt
ji/JlyzHV3ysdiXLV5zYcmTLkpwIJNmxFBnZFvZKO5bGXu2K3ZWckFAKhMMk 0JajiR2co7R1
GkJKAEmsDa5Di3OSHkBLSwttoaWFcvWgJSVW339mdrUrra4nMU/zeDUz//F9 3/9+958Xr128
DGCLnNSQJzgSjfVUGXcF+/rDRryqIWQmojEzdNA4YcSMSLdxKBaN9FT1x4y4 EUkEE2Y0Msma
2m41uTcYq4tGEjGza4BrNLgEeywG3WGzP25UGX0nqgzurxowq4LdaXJmpKc+ 2hc0I7mpFAq2
ZlI5eSLYbVQNmsZpIxavamw1woa1r643GOkxQk1mPGFEjJhgvuIxaNgSHwjG EoLlTZmUKEbj
2Gy1YEE8RexALDpohhSVjU0zYZ5aTyJL473R0/zuN2IJ04i3c619MMGaHLQc IBrtNdxfEjNO
EPHedotJamtxd8wIJoy6XjMcssfigsVNJ4ODwaqBhBmuqouGHVlIo6jV7IkE EwMxQ7Az56Jd
04tSQ0KLM9g2G5GB5mAk2KNg2TDF/oyFJLHQJtFqdoXNlKVQ9qVZw1m0C3eZ ETNRI8j3lbcL
XHXRkOFBPpbpWIwyDvgay9s13CDovI72u3ZzEVZitYZVgtY3iI9jbeGBHjOi Yw1uFLgbW1rb
alvqGgR3Nl0HNtVurBOsOnZn47HWCYZ5rI+4HzMTRp+HZ92gw4dyWk+PkWgl DJEewXqfbT5h
OleVPVhdPnHIg+UIKPVUCGK+N+ocudRSnUOe9iLQUXV4oWvYdJ3NYoub4RNl CtCDmZ6aiWUV
Akqkm3TMUSLdLNg8TSBsigbJPB4diHUbNlsPtmOHgnSJIlWtYxduZRwIT1jI +Ng0a+rVGnYL
KqfZ1x4MmyF6aUqiGuxQwuzVUYd6wdzBrHlB1XSCZBOkEPsEFdPsscCPhlMy NNgyNOp4E94s
mNOdOT0+Xk9HjvFpXpMZMVoG+rqMWFuwK8yIWdwU7Q6G24MxU307g65Er8mw 1XldbZvRvzv1
abRF26LRMFdQT74pwq2zKhVxVWhsZa6ZdEOr0R+MBcnOjTsFKw1HvFhKvNNK vMq4kVCZOe7B
QRxSZvgWwaJcwaDdi8M4quGIwDdTIXV04q2M78FQiEYz1eHS6PCrkb5Ffm4c Z0CbRGxSNJ0M
MzeRxVPgnzmIrB4yFaHSE/dPJWhm0itvV+nqhI5uhDT0CtZOui9jmxsnBetU XJkqqlthxo2w
oJxEN6YscWPuPYp8Y70HPYgoHUaZuHPoMJdW3XgbM0EaTi/iGNDAGmrdjDDQ MYjTAq8ZiTPd
1J5IKAXU5uI9S93fzZSZsk0l1FE37hVo9p64G7/GkJCWutKIhNz4dUGpgrVu rJbJDNY9OKQC
ynt0FKNEkXyvjvcp4XVb+L3GiWjMcOMDTtSvyyxcxggpGh/UsQglGh64zjlo qwf348NKo78h
OH59861y8Dh+S8dH8FFGS2Kr1DxWZgem84rUUsstBB/X8dsIqfI8FLotHO0K htM1obcvswyc
Gx/oyhqYR73XZtT0DF6+qQp62w0/oeMszintPKJDg1u9PaajCB4vfge/q+GT 41LQdDW+jt/D
7wtWxIy+6KAxef9xSy5gpu1bLLyfwJMa/kCwbPLT6fgUnqLhq1qN5ke/9JVP AONQNHaqi+rt
VTvUsmovnsZnNPyhYPW0i3U8g8+ygFcsJjZGm8bxm7Y1UnB/XseQAq+Myp8M AbVuRMcXkKQL
ZvJmgpkhTxYWl5hYJl86nnfDIF3Dg4v4knKqy4JDM1Ne+nAzE8v2gCs6nsWX 6QHxcVIItk3F
NqfQ1VaL1G+1t3NaE8HuU83BfqtmUYZ+VcdczFNMn9fxAl5kjxsy+qP9A2GG sLRj3T7TDJxK
cLn7TrsOf1nHQsXyIkY0/CkLsqmQScQGulWbOmYMXryCP9fxF/gajxU3325Y bWCjGv6Gjr/E
XzEO0Cj2mbF4oiFsMEDw4At9mT3J/q6TpEUb+GvBlpzVYMi6b7DdKX39kNKl F9/Et3T8Lf6O
KiKrrEWqFivPXWI6RLOW0+i/g3/Q8Pd2up7ZJh3/iO+y9ybvFuO0la/qjXh3 zOyn7zNM7vJN
POzEkfLcSlK28E86/hnfZ3jpUf6mcmKOy4U2X24CM7T0ybn/q44fKO7Ls7ln XxCohf+m40f4
MfU9wWAPvzEGm7uajeOnOn6GfxcUDvSrZkXdOBxWblZgDFrmtnnWTsrCPpJL lYs46hw8a7wo
Phb01s8McYobtTSvGpgJ1sDZkGPAgVmYr7pjymqG7u5PNUSlue+V/DXVmlB5 C3PNapKXsxie
eBzBPbntTzF4PSY4o4svTQqosbHttbFY8G6Vnzziwg4vRsWtS5F4WIsyT1rN FJHyZXJsdMar
vaLLXE3mUC0TZ3WZpyKaK2LcldBkAbPqdN3reE/1yHwpYdKShROS1rhyaGao 5Qgk7erAi9mz
yZJxPWBqxWF1yFJdlkkZS5LeYLyF57EC92FWdaFMy/aMfWmycrIAPf7AWcHB IyukRPDONyQI
7ArMxCByRQpNbmQfOt1mr6yTDZqsH3fZMq207EHEJ7h5di1TbSoTK7Z+pbKA qgxnsoOK60vF
16pZIstivTuzWavPjkGO3IxBQce5X48uNNnKxDyeuqDvV2gPNsDbdblZbmEQ YKZWDWpcXWaU
H5lNS6vJzpztR+quZqBr/BaP7JBdutwqNXZ53BhhFlUTLLVylsdT8N6Ts0h2 NtiHnch+t+zV
pU7q7Yvi1L3b2il5O8CpQLJPl9tUIHEri2GOiSskG3V5k7yZBmI3VbPI8PbF wGwWM4+btrIq
Z6UqZjWTv8bMuyFnjiqcHfDNmrQJ/DPfwypI9cK1XdGBRFtU3eSzt5VDutyJ kFs6mEJU3Mxd
LEy8aqp2y1GG4gGz0rk3YdUjb9UxKD6vrJHjugRVJC8y4w0Rle1DarRbl5Cq ijxsw51h1V9/
nN2crbXacDh9nxDfH6lnTlHFk6fVunfeZ6qqYRY3DxuVe9LGLQOvCwfjcSOO 1Swt8vkrgBsu
1c4DfLKZt55e6NZzjvNk78O18/mehwX8LkaJNb5w3Pgia1zn2GIs4d+l/DqL Qr4B+/2uEZT6
L2F5h/+zWFG8dhjrR+AfQiXHquyxzdbY1iFs49j2jhHcMoSdfK3h654h1PK1 ga+3DeH2Zyym
Tfy7nmIDn+BRmsmqBaUIYhm6UInzuAWPoA6PcvQxztqiURR+7+dTcAB3OGIe ofh5fK4MXMLB
juK2EbQn0ZEH+/NY6nOM7VziBzxJBD6FFXjKIr/YJuGQV29BCqLKuG6EbEbi o6Bq59P+wAiM
S+jpUCc3efLiUyPoaw4U91ckEctHhcX5Lovz2/Ocz3uyP/uzP9+R+vSn6L7T QvRdQ3h3RXG/
//N4dxL35Y9Nvz81fcaePmNNk9j9Hf4RfCiJ3yStimF8bOzcey19j/AUSer4 IlaB6sMXUYMv
EYPLOIovI4o/xj14Dh/G8ziHl/EwvopP8vkEvoZP4+sWVqtsFNJYPY0HaT1C mg/iIb7l8f0s
d9vqeZn8FLaGQu1hf2AI5ynuo1cxRz38STxOVT0Hr1+G8OgF7PEHkrggFPHT Ao44iz7H0/At
iWG29CgjDBc7rKnU4Ai+OIw/UofNtw67ka4AfJvMv0PX+C6N/HsoY9O3Et/H BrZf2/FD7MFP
uPanVPB/ZBiBkT6YQTDcPMaf8J2qL/Pu4sezRMm2h89Z/ge8oLRzFfP86snf V4bxnNKIM3SG
v5c4JM3SEhjGV3e6Sl3P4pWzqC11XcErSfwZY9dj2Op8fV2ws4Bbzl/BN5P4 G34VlhaWFkgS
385Hc2mhlBZYry1+f0WpaxjfG8JX/P5K9fovQ3jJlmVZWhYZxg/VuyuJn1gY nnFmLbGc2TP2
7DNWaFDotTMgKIfThF2A5GMZq/71UgSfeOAXHZtkDvbJXByU+TguxTglJQyd S/EuKcUDUoaP
ynI8JjfgSVmJZ2QVLstqPC83WijfboOWRvkFov+fZObD4/gvOiWlpN//nG/5 2ERD+m/8D6U6
iLX4BV6lHo5TT/+LXzJivObozN55Lb3zGncqnRWjoKT4GvZrGFX/RLbeQEps /LnSCn08mTLR
n5NWIZ+1l8TVMSKFLYGr2B5IiqZUcQGribh4+e6qvCTzldmdJ/IjUpyURXk4 pGaXCs6Nfqvy
M2kAlymCUgm3bIQuVVglm3ATn7tlqwXCNh6EDNMg1BKweVaIq7UOnEfD24F7 LRBWYRGhfJWU
X0sbqVp/jevtVQucA1cif5RuWKhB7APzL3XIVHDDKGOtK2tcifqD14XFijEs Vk2LRQ2x2E0s
9hCLWmKxh1jU/3/C4kf4cRqL1ZaDLycphUVNxVXsqkhjsMHB4IqsIQz08gC9 Lylr83EB3oB6
Lc9DGolvjHnVCmX5cgdcchBl0oqV0oaAHMJWft8qRzLAqEmDUSMVNCOxxu61 vEONbaQp5TOe
LaVZ6Q4YemqVbOYqBcFRuEa5xYJA1lmn3WJDMMq9WcOarHEmtNzrHcTSw+pM L+DFNGLbLMTW
8Ft5dycRO0KruUnQkr/ddQG3VS5ybVHgzSktuCI7hqV6Z0FpwbOy49zoz9Rz 91llWldk97DU
7iysKC1MSkMenV8PKCBvp2nd55JFrsrLj49+YQzQ7axzIAYBPQGv9GCBnMQS OcVwFcZaPivk
bdgmMQIWR6MkGK56cFTuzghDnWmgO9NAdzpAe3GHNEkzgZ6LFmmR/eS6BNVy gCosINALLfAL
M8DvzACfpvcaFmhyUH4JtyatRa+iMu8XqqRSFauTHJ8mSZVMDzA5Srs0j0v+ zf6KVAwPlMhb
KqwcP64CsNe8lL1mXI0l70GB3EdVvo/wvB+r5QO0uw/yKPejQR7AfvlQRmI/ kIbkgJPYNTTi
ITlMii71f64c2R9wEnt9oPgdqoYpkSNWEcMCiIIcoVCVSenMVzlnm/ol5RjT unTlpaa32dM8
uTEmrx0sHkSxPET/OIfN8jDVdx518khGjq5Py1jvyEgTYN6xJauwCjdSdD2V pmuVsvJERi2Z
59DIo1Gov71iWvzzsRz2f1XO83778X9QSwcIXmLmtegOAAA7KAAAUEsDBBQA CAAIANkBajcA
AAAAAAAAAAAAAACEAAAAb3JnLmV4YW1wbGVzLkVkaXRvcmlkUmVmZXJlbmNl V3JvbmcuZWRp
dG9yL2Jpbi9vcmcvZXhhbXBsZXMvRWRpdG9yaWRSZWZlcmVuY2VXcm9uZy9w cmVzZW50YXRp
b24vRWRpdG9yaWRSZWZlcmVuY2VXcm9uZ0VkaXRvciQxLmNsYXNzrVVdc9NG FD1rh6hxRWJS
SloK5aOBOnaISEIKNDSFOIEaHJwmbmin086s5Y2t4Gg1q7Vpfwp/IDx3hroz fejQ1/6K/pJO
70rC5Iv4gdij0d27u2fPPXvv1T///fkXgBk8tJBiqEjVcMQvfDtoidBZrnta Kq++JjaFEr4r
nijpN5xAiVD4mmtP+m9ZE3vHpy0MMGS3eIc7LU5bK7Ut4WoLgwznoqPclheE wml7TmmVK132
Qi18oRgGddMLx68TpfKxcpon6Due7+kFhrXcMWNPbDAMFGVdDIHhpA0L72WQ xoiNIWQZ0jmz
YKTs+eJxe7smVJXXWoJhtCxd3trgyjPjxDlgBGD49ngpjk+TACcDkvqeq70O 16LOcDnRYddl
PJHqaY32Ns2tUFwWPmKY2beq44lnoeNKn+5My7ZuUWBOMR5W4mEGYzhr4xOc YxhuCF1sK6Kk
V3mDQjyfm9h/sGFmUqEh5ofwKS5auMCwcqwS2LiEyyS6u4dozOj2fj6Hhlgq Htg6nyG24zau
4CrDGAVq5JX+IldmrfJqbTqZYWlfxGJ70xHEyhzF3R51z28syW3u+Yeh0FE5 5C1MMNx9Vywb
BUxSSoYx4Y6IJWK4cDAl4qkkH8zlTNlwQBV6eq+SGySZqeCrexC2NrkrIjmF Cp2qEsm6SLgZ
G7O4QZ0i7GXIa5QruSNgEgiTnl8wXDv07gIlA6G0R5mzGpu/rjeF0BnM4awJ 47aNL0FVcSrY
PR3nw+zh+fA2zF4mfGVjwVT8cJP79ZZ4XWsMLCBt+1QbFei65u7TFR4kvSBr ymJRyXajqauy
KgkkY1zFlgxNAY+YwZLgb0o6mq4E1EvNYF22lSvuewbr0lG1MWVaNeEt+y5B U+qsCN2UBGGX
fGrLxRYPQxHiOrW3ND0nwLJZ0+XoEzJIzxAy5H2frFtI0R/I5Au/w87/geHf aJTCKeOLZmg3
K2GULJts4/0ApyP/hziToPyboDwr/I2x55gtvMJYFx/nX8J+ifM74Mbq4rP4 9bl5xXPXuph+
gUXaNvcck7Rtroub8dStHeQPbuvizguMFoy5Q6Rjj6GcjihPGTrsESxWpka4 QkVewU22hgW2
jgqr4if2HRrse0j2AzrsxyisMzH1JCxjfY27FNg9si2cuJGaTA3TcLEX7Vyk EJ3zRqpBIw37
eRce6+GxBI+h2B+C94FY6g9R7wOx3B+icSREGvej9Q/wDb0HqIyAUpQZLMoQ +v0PUEsHCPex
lE2fAwAArwgAAFBLAwQUAAgACADZAWo3AAAAAAAAAAAAAAAAhQAAAG9yZy5l eGFtcGxlcy5F
ZGl0b3JpZFJlZmVyZW5jZVdyb25nLmVkaXRvci9iaW4vb3JnL2V4YW1wbGVz L0VkaXRvcmlk
UmVmZXJlbmNlV3JvbmcvcHJlc2VudGF0aW9uL0VkaXRvcmlkUmVmZXJlbmNl V3JvbmdFZGl0
b3IkMTAuY2xhc3OtVOtOE0EU/oYu1JblKqJ4A6RiWy4L/q2XkAYNSbkESdGf y/ZQBtudOjMF
fQsfRROVRBMfwIcynt1WpCYIie2Pzpw53/lmzjnf2R8/v34H8BBLSfQIbCld 9eitX2/UyHir
FWmVlpVt2idNYUC7WoVVr6HJUGh9K1V4DqZ1mllmVkcgE7MGNdkw5FF93wtU vc6xTemVJR2T
3vJDEuizB9JklgQ2S119RoGpH8lQ2icC77Nd5i6dzY0TWttV+vUeow62/Cr9 061tIVcWcIqq
QikI9LvoRV8aCQy4SGJQYCX7//RDJRnSRrO+R3rH36txnUdLKvBrZV/LyG4f OlHxBba7Wx5W
AFe/P+OHKnxXV03D3Z28IKcO/PIFeE5SwA00+ZZaWhJ43lk1c2y9Y1mpkjVe UdUbykhLhVwH
5nDfD8g7iglMW5SFJG7+pd1O2I6m9p1pTOB21LM7ArOXup0bkwp+mwIzl4gR GNH0pknGrgRW
HsXFF0hkc+VIMjMupjCdxn08SGJWYL2rfXSRRU5gzJAtNjV77dnBzXWmfN6E x1mnX6imDuiZ
jEQ3/a87Fw/9I5/1uxoGNa5AWF0ne6AqLhYxzRpp9TxSDMvWXQtD0sWabwwZ LPEwJfirJoaH
o4niXWQlcYXPU7zbYNvh1c3PfUY6P79wAvcj2z0Y4v80rxyLXmcTw7ybiqNd jGAUiHdXMRZj
XFzDOHsFruNGm/sx25Ev9Q0Tr+ZOcOvDKXEfQ+Bsx6TjLdApaQp3Mcl+EXWx TfWUMRyBgfwJ
7uU/8Uu/IPPnnYPRu5wyHGcXrvMypnVbAW3aBPIxeg7zvDqsjQV4cYYixvHv F1BLBwgdsYXk
dQIAAAAGAABQSwMEFAAIAAgA2QFqNwAAAAAAAAAAAAAAAIUAAABvcmcuZXhh bXBsZXMuRWRp
dG9yaWRSZWZlcmVuY2VXcm9uZy5lZGl0b3IvYmluL29yZy9leGFtcGxlcy9F ZGl0b3JpZFJl
ZmVyZW5jZVdyb25nL3ByZXNlbnRhdGlvbi9FZGl0b3JpZFJlZmVyZW5jZVdy b25nRWRpdG9y
JDExLmNsYXNzrVRbTxNBFP6GLtSWRS4iijdACrblsuBrvYQ0aEgACZoSH5ft oQx2d8rMFPRf
+FM0UUk08Qf4o4xntxXpA5fE7sPOnDnf+XbOOd/ZX7+//wTwGEtp9AhsKV3z 6L0fNupkvNWq
tErL6jbtkaYooB2toprX0GQosr6VKjoH0zrNLS+n4QjkEtagLhuGPAr3vECF Icc2pVeRdEx6
y49IoM/uS5NbEni13tVrlJj6iYykfSbwMd9l7vWzuXFCaztKv9tl1P6WX6ML 3dqWChUBp6yq
lIFAv4te9GWRwoCLNK4LrOT/n35wXUa02Qx3Sb/xd+tc55F1Ffj1iq9lbLcP nbj4AtvdLQ8r
gKvfn/MjFX0IVdNwdycuyakDv3wJnpMUcANNvqWWlgRedlbNHFvvWFZrZI1X VmFDGWmpVOjA
HOz5AXlHCYFpi7KUxh2BmfNhSeVa2CzGcS9u2n2B2St9njuTCf6aAtNXiBEY 1nTYJGNXAiuP
kuoLpPKFSqyZaReTmMpiBo/SmBXY6GojXeRREBg1ZMtNzV57dnILnSmfN+JJ 1tnXqqkDeiFj
1U1d9M3FA//IZwGvRkGdKxDVNsjuq6qLRUyxSFpNjyXDunXXooh0ue4bQwZL PE0p/q2JoaF4
pHgXW2lc4/MM7zbZdnh1i3NfkS3OL5zA/cx2Dwb5neWVY9HrHGCId5NJtIth jADJ7gZGE4yL
mxhjr8At3G5zP2U79mV+YPzt3Anufjol7mMInDAhHWuBTkkzeIAJ9ou4i22q 54zhCAwUT/Cw
+IVv+g25f/e8Ht/LOYTjaLiOSWjdVkCbNoVigp7DPK8Oa2MBXpKhSHD8/AFQ SwcINLkSm3UC
AAABBgAAUEsDBBQACAAIANkBajcAAAAAAAAAAAAAAACFAAAAb3JnLmV4YW1w bGVzLkVkaXRv
cmlkUmVmZXJlbmNlV3JvbmcuZWRpdG9yL2Jpbi9vcmcvZXhhbXBsZXMvRWRp dG9yaWRSZWZl
cmVuY2VXcm9uZy9wcmVzZW50YXRpb24vRWRpdG9yaWRSZWZlcmVuY2VXcm9u Z0VkaXRvciQx
Mi5jbGFzc61UW08TQRT+xi7UluUqongDpGJbLgu81ktIg4akIEFS4uOyPZTB 7k6dnYL+C19M
fFB/gyYqiSb+AH+U8ey2IjXhktg+dObM+c43c875zv789e0HgEXMJ3FBYF3p qkMvXb9eo9BZ
rkijtKxs0A5pCjza0iqoOnVNIQXGNVIFJ2Cap5mFxSQsgUzM6tVkPSSH/B3H U77PsQ3plCUd
kF53AxLoNrsyzMwLPCl19BkFpr4nA2keCLzOdpi7dDw3TmhlS+nn24zaXXer dKpbm0KuLGAV
VYVSEOix0YXuNBLotZFEn8BS9v/p+0syoLWGv016092ucZ2HSspza2VXy8hu HVpR8QU2Olse
VgBXvyfjBip45atGyN0dOyOnNvzCGXhOUsD2NLmGmloSeNxetfDAOAeyUiUT OkXl11UoDRVy
bZi9HdcjZz8mCFuiLCRx7R/ttsM2NbXuTGMUN6Ke3RSYOtft3JiU98cUmDxH jMCgphcNCs2S
Z+R+XHyBRDZXjiQzaWMcE2ncwd0kpgRWO9pHG1nkBIZDMsWGZq85Pri59pRP mvA46/RT1dAe
PZKR6CZOu3Nuz913Wb/LgVfjCgTVVTK7qmJjDhOskWbPI8WwbO2VICBdrLlh SCHmeZgS/FUT
AwPRRPEuspK4yOcp3q2xbfFq56e/IJ2fmT2E/YntC+jn/zSvHIsu6w0GeDce R9sYxBAQ7y5h
OMbYuIwR9gpcwdUW9322I1/qO0afTR/i+scj4m6GwHobk440QUekKdzCGPtF 1MUW1UPGcAR6
84e4nf/ML/2KzN939kXvst7Bst7Dtj7EtHYzoEWbQD5GT2OGV4u1MQsnzlDE OP79BlBLBwj2
REgpfAIAAAAGAABQSwMEFAAIAAgA2QFqNwAAAAAAAAAAAAAAAIUAAABvcmcu ZXhhbXBsZXMu
RWRpdG9yaWRSZWZlcmVuY2VXcm9uZy5lZGl0b3IvYmluL29yZy9leGFtcGxl cy9FZGl0b3Jp
ZFJlZmVyZW5jZVdyb25nL3ByZXNlbnRhdGlvbi9FZGl0b3JpZFJlZmVyZW5j ZVdyb25nRWRp
dG9yJDEzLmNsYXNzrVNdT9RAFD1DK92WKnUVAb8Qsw+4Ji4fD5pgfCGYkCxC FrM8z3avy5Ay
Q2a6xr9lotGYiD77owh3yiYYEn1qk0nvnDn39Pac9s/5jzMA63gaYUpg39hR hz7Jk9OCXGd7
qEpj1bBHH8iSzunQGj3qnFpypEtZKqP/wblEW2sbEUKB7Fh+lJ1Ccu/e4Jjy MsK0QPMK7Y21
loOCBKbLI+VaqwJ73VpH2WTp10qr8o1Ab6Vm7Wd9gXDLDCmGwM0UERoJAsym iJEJBCueMNtV
mt6NTwZk31++a7Nrcln0pVV+PwFDbwDPWO+InAQ7ENixTjCPxQgLAru1PiHF fTwQaMg8J+da
awIHddu8421MDszY5vRWebOW/8d/4b8v9n1b54VxSo92qTwywxRPfCgzuSVZ 0r4cEdud7mhN
dquQzpHDKscY8LoBkWU+Tf5DpnjFSBid4eoV7z2StJ9/R
|
|
|
Re: Subtle Error detected? [message #414519 is a reply to message #414515] |
Sat, 10 November 2007 13:28 |
Ed Merks Messages: 33258 Registered: July 2009 |
Senior Member |
|
|
Philipp,
The editor's ID really is
org.examples.EditoridReferenceWrong.base.editor. It sounds like you'd
be able to address your needs if
https://bugs.eclipse.org/bugs/show_bug.cgi?id=163597 were implemented.
Philipp W. Kutter wrote:
> Hi.
> When I separate the models from the code completely,
> by letting the code to be generated into another project,
> .... .base, similar to the .edit and .editor, everything
> work, except at one place:
>
> The generated updateProblemIndication() generates a string
> with the id of the editor plugin. Unfortunatly, this is done by
> taking the pluginid of the model code (in my case the .base variant)
> and adding .editor, rather than really taking the .editor plugin.
>
> I attach an example. There in updateProblemIndication() of
> EditoridReferenceWrongEditor.java, it generates
>
> "org.examples.EditoridReferenceWrong.base.editor"
>
> rather than
>
> "org.examples.EditoridReferenceWrong.editor"
>
> The same problem exists in analyzeResourceProblems(...
> There twice the wrong string is generated.
>
> Shall I open a bugzilla?
>
> Best, Philipp
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
|
Re: Subtle Error detected? [message #414529 is a reply to message #414519] |
Sun, 11 November 2007 12:09 |
Philipp Kutter Messages: 306 Registered: July 2009 |
Senior Member |
|
|
Hi, Ed.
Your are right. Thus independent of where the editor plugin is, its id
is the id of the plugin where the java sources are, + .editor.
Regarding the bugs you pointed to, I agree they are related.
However, if this topic is treated, it should include all the followin
genModel properties:
- (1 Model Plug-in ID)
- (2 Edit Directory )
- (3 Editor Directory)
- (4 Model Directory )
What happens at the moment, if I observed well is:
- the plugin ids of the three plugins are
(1 Model Plug-in ID) for the model plugin, and
(1 Model Plug-in ID).edit and (1 Model Plug-in ID).editor.
- the location of the three plugins depend from (2 Edit Directory ),
(3 Editor Directory), and (4 Model Directory )
As a consequence, names of plugins and their names are only in synch,
if the settings are as they are by default:
Name of the plugin with the models: XXX
- (1 Model Plug-in ID) XXX
- (2 Edit Directory ) XXX.edit/src
- (3 Editor Directory) XXX.editor/src
- (4 Model Directory ) XXX/src
In our project, we found that it can be beneficial to separate the
generated model code from the plugin with the actual model. Thus we have
for instance:
Name of the plugin with the models: XXX
- (1 Model Plug-in ID) XXX.base
- (2 Edit Directory ) XXX.edit/src
- (3 Editor Directory) XXX.editor/src
- (4 Model Directory ) XXX.base/src
In this simple scenario plugin names and ids are out or synch.
If I would make a enhancement request, I would as for
"better synchronisation of plugin names and IDs".
Does this make sense?
Best, Philipp
Ed Merks wrote:
> Philipp,
>
> The editor's ID really is
> org.examples.EditoridReferenceWrong.base.editor. It sounds like you'd
> be able to address your needs if
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=163597 were implemented.
>
>
> Philipp W. Kutter wrote:
>> Hi.
>> When I separate the models from the code completely,
>> by letting the code to be generated into another project,
>> .... .base, similar to the .edit and .editor, everything
>> work, except at one place:
>>
>> The generated updateProblemIndication() generates a string
>> with the id of the editor plugin. Unfortunatly, this is done by
>> taking the pluginid of the model code (in my case the .base variant)
>> and adding .editor, rather than really taking the .editor plugin.
>>
>> I attach an example. There in updateProblemIndication() of
>> EditoridReferenceWrongEditor.java, it generates
>>
>> "org.examples.EditoridReferenceWrong.base.editor"
>>
>> rather than
>>
>> "org.examples.EditoridReferenceWrong.editor"
>>
>> The same problem exists in analyzeResourceProblems(...
>> There twice the wrong string is generated.
>>
>> Shall I open a bugzilla?
>>
>> Best, Philipp
|
|
|
Re: Subtle Error detected? [message #414530 is a reply to message #414529] |
Sun, 11 November 2007 12:39 |
Ed Merks Messages: 33258 Registered: July 2009 |
Senior Member |
|
|
Philipp,
Comments below.
Philipp W. Kutter wrote:
> Hi, Ed.
> Your are right. Thus independent of where the editor plugin is, its id
> is the id of the plugin where the java sources are, + .editor.
Well, the ID is exactly the value of the Model Plugin ID, which you can
set directly to be anything you want. It does not need to be related to
the name of the project, though the general practice is to make it match
the name of the project and that's a good practice to follow.
>
> Regarding the bugs you pointed to, I agree they are related.
>
> However, if this topic is treated, it should include all the followin
> genModel properties:
>
> - (1 Model Plug-in ID)
> - (2 Edit Directory )
> - (3 Editor Directory)
> - (4 Model Directory )
Test all exist as well as the Test Directory.
>
> What happens at the moment, if I observed well is:
>
> - the plugin ids of the three plugins are
> (1 Model Plug-in ID) for the model plugin, and
> (1 Model Plug-in ID).edit and (1 Model Plug-in ID).editor.
Yes, and .test; they are all computed from the model plugin ID.
>
> - the location of the three plugins depend from (2 Edit Directory ),
> (3 Editor Directory), and (4 Model Directory )
Yes, and all (including the tests) are computed from the Model Directory
if they aren't set directly.
>
> As a consequence, names of plugins and their names are only in synch,
> if the settings are as they are by default:
>
> Name of the plugin with the models: XXX
> - (1 Model Plug-in ID) XXX
> - (2 Edit Directory ) XXX.edit/src
> - (3 Editor Directory) XXX.editor/src
> - (4 Model Directory ) XXX/src
Yes, if you make the Model ID and Directory match and you use our naming
convention for the rest.
>
> In our project, we found that it can be beneficial to separate the
> generated model code from the plugin with the actual model. Thus we have
> for instance:
You could use a different convention and given the model containing the
plugin a special name. A more common pattern would likely be to call
generated model's plugin "core".
>
> Name of the plugin with the models: XXX
>
> - (1 Model Plug-in ID) XXX.base
> - (2 Edit Directory ) XXX.edit/src
> - (3 Editor Directory) XXX.editor/src
> - (4 Model Directory ) XXX.base/src
>
> In this simple scenario plugin names and ids are out or synch.
In most any scenario that's not the prescribed pattern that's true.
>
> If I would make a enhancement request, I would as for
> "better synchronisation of plugin names and IDs".
>
> Does this make sense?
I think providing direct control over the plugin ID of each will allow
you to do anything you want. Keeping the names in sync is a very good
idea, but that will be a convention you'd follow yourself, not one
enforced by us. Goodness knows folks don't always like to be forced to
use our patterns. :-P
>
> Best, Philipp
>
>
>
> Ed Merks wrote:
>> Philipp,
>>
>> The editor's ID really is
>> org.examples.EditoridReferenceWrong.base.editor. It sounds like
>> you'd be able to address your needs if
>> https://bugs.eclipse.org/bugs/show_bug.cgi?id=163597 were implemented.
>>
>>
>> Philipp W. Kutter wrote:
>>> Hi.
>>> When I separate the models from the code completely,
>>> by letting the code to be generated into another project,
>>> .... .base, similar to the .edit and .editor, everything
>>> work, except at one place:
>>>
>>> The generated updateProblemIndication() generates a string
>>> with the id of the editor plugin. Unfortunatly, this is done by
>>> taking the pluginid of the model code (in my case the .base variant)
>>> and adding .editor, rather than really taking the .editor plugin.
>>>
>>> I attach an example. There in updateProblemIndication() of
>>> EditoridReferenceWrongEditor.java, it generates
>>>
>>> "org.examples.EditoridReferenceWrong.base.editor"
>>>
>>> rather than
>>>
>>> "org.examples.EditoridReferenceWrong.editor"
>>>
>>> The same problem exists in analyzeResourceProblems(...
>>> There twice the wrong string is generated.
>>>
>>> Shall I open a bugzilla?
>>>
>>> Best, Philipp
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
|
Re: Subtle Error detected? [message #414577 is a reply to message #414530] |
Tue, 13 November 2007 18:31 |
Philipp Kutter Messages: 306 Registered: July 2009 |
Senior Member |
|
|
Great, we are in violent agreement. Is there already a feature request
to allow
providing direct control over the plugin ID of model, edit, editor, and
test plugins
??
If not, I would open one.
Best, Philipp
Ed Merks wrote:
> Philipp,
>
> Comments below.
>
> Philipp W. Kutter wrote:
>> Hi, Ed.
>> Your are right. Thus independent of where the editor plugin is, its id
>> is the id of the plugin where the java sources are, + .editor.
> Well, the ID is exactly the value of the Model Plugin ID, which you can
> set directly to be anything you want. It does not need to be related to
> the name of the project, though the general practice is to make it match
> the name of the project and that's a good practice to follow.
>>
>> Regarding the bugs you pointed to, I agree they are related.
>>
>> However, if this topic is treated, it should include all the followin
>> genModel properties:
>>
>> - (1 Model Plug-in ID)
>> - (2 Edit Directory )
>> - (3 Editor Directory)
>> - (4 Model Directory )
> Test all exist as well as the Test Directory.
>>
>> What happens at the moment, if I observed well is:
>>
>> - the plugin ids of the three plugins are
>> (1 Model Plug-in ID) for the model plugin, and
>> (1 Model Plug-in ID).edit and (1 Model Plug-in ID).editor.
> Yes, and .test; they are all computed from the model plugin ID.
>>
>> - the location of the three plugins depend from (2 Edit Directory ),
>> (3 Editor Directory), and (4 Model Directory )
> Yes, and all (including the tests) are computed from the Model Directory
> if they aren't set directly.
>>
>> As a consequence, names of plugins and their names are only in synch,
>> if the settings are as they are by default:
>>
>> Name of the plugin with the models: XXX
>> - (1 Model Plug-in ID) XXX
>> - (2 Edit Directory ) XXX.edit/src
>> - (3 Editor Directory) XXX.editor/src
>> - (4 Model Directory ) XXX/src
> Yes, if you make the Model ID and Directory match and you use our naming
> convention for the rest.
>>
>> In our project, we found that it can be beneficial to separate the
>> generated model code from the plugin with the actual model. Thus we have
>> for instance:
> You could use a different convention and given the model containing the
> plugin a special name. A more common pattern would likely be to call
> generated model's plugin "core".
>>
>> Name of the plugin with the models: XXX
>>
>> - (1 Model Plug-in ID) XXX.base
>> - (2 Edit Directory ) XXX.edit/src
>> - (3 Editor Directory) XXX.editor/src
>> - (4 Model Directory ) XXX.base/src
>>
>> In this simple scenario plugin names and ids are out or synch.
> In most any scenario that's not the prescribed pattern that's true.
>>
>> If I would make a enhancement request, I would as for
>> "better synchronisation of plugin names and IDs".
>>
>> Does this make sense?
> I think providing direct control over the plugin ID of each will allow
> you to do anything you want. Keeping the names in sync is a very good
> idea, but that will be a convention you'd follow yourself, not one
> enforced by us. Goodness knows folks don't always like to be forced to
> use our patterns. :-P
>>
>> Best, Philipp
>>
>>
>>
>> Ed Merks wrote:
>>> Philipp,
>>>
>>> The editor's ID really is
>>> org.examples.EditoridReferenceWrong.base.editor. It sounds like
>>> you'd be able to address your needs if
>>> https://bugs.eclipse.org/bugs/show_bug.cgi?id=163597 were implemented.
>>>
>>>
>>> Philipp W. Kutter wrote:
>>>> Hi.
>>>> When I separate the models from the code completely,
>>>> by letting the code to be generated into another project,
>>>> .... .base, similar to the .edit and .editor, everything
>>>> work, except at one place:
>>>>
>>>> The generated updateProblemIndication() generates a string
>>>> with the id of the editor plugin. Unfortunatly, this is done by
>>>> taking the pluginid of the model code (in my case the .base variant)
>>>> and adding .editor, rather than really taking the .editor plugin.
>>>>
>>>> I attach an example. There in updateProblemIndication() of
>>>> EditoridReferenceWrongEditor.java, it generates
>>>>
>>>> "org.examples.EditoridReferenceWrong.base.editor"
>>>>
>>>> rather than
>>>>
>>>> "org.examples.EditoridReferenceWrong.editor"
>>>>
>>>> The same problem exists in analyzeResourceProblems(...
>>>> There twice the wrong string is generated.
>>>>
>>>> Shall I open a bugzilla?
>>>>
>>>> Best, Philipp
|
|
|
Re: Subtle Error detected? [message #414579 is a reply to message #414577] |
Tue, 13 November 2007 18:51 |
Ed Merks Messages: 33258 Registered: July 2009 |
Senior Member |
|
|
This is a multi-part message in MIME format.
--------------070402040100030404050901
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Philipp,
Nope because we have one already. :-P
163597 <https://bugs.eclipse.org/bugs/show_bug.cgi?id=163597>
Philipp W. Kutter wrote:
> Great, we are in violent agreement. Is there already a feature request
> to allow
>
> providing direct control over the plugin ID of model, edit, editor,
> and test plugins
>
> ??
>
> If not, I would open one.
> Best, Philipp
>
>
> Ed Merks wrote:
>> Philipp,
>>
>> Comments below.
>>
>> Philipp W. Kutter wrote:
>>> Hi, Ed.
>>> Your are right. Thus independent of where the editor plugin is, its
>>> id is the id of the plugin where the java sources are, + .editor.
>> Well, the ID is exactly the value of the Model Plugin ID, which you
>> can set directly to be anything you want. It does not need to be
>> related to the name of the project, though the general practice is to
>> make it match the name of the project and that's a good practice to
>> follow.
>>>
>>> Regarding the bugs you pointed to, I agree they are related.
>>>
>>> However, if this topic is treated, it should include all the
>>> followin genModel properties:
>>>
>>> - (1 Model Plug-in ID)
>>> - (2 Edit Directory )
>>> - (3 Editor Directory)
>>> - (4 Model Directory )
>> Test all exist as well as the Test Directory.
>>>
>>> What happens at the moment, if I observed well is:
>>>
>>> - the plugin ids of the three plugins are
>>> (1 Model Plug-in ID) for the model plugin, and
>>> (1 Model Plug-in ID).edit and (1 Model Plug-in ID).editor.
>> Yes, and .test; they are all computed from the model plugin ID.
>>>
>>> - the location of the three plugins depend from (2 Edit Directory ),
>>> (3 Editor Directory), and (4 Model Directory )
>> Yes, and all (including the tests) are computed from the Model
>> Directory if they aren't set directly.
>>>
>>> As a consequence, names of plugins and their names are only in synch,
>>> if the settings are as they are by default:
>>>
>>> Name of the plugin with the models: XXX
>>> - (1 Model Plug-in ID) XXX
>>> - (2 Edit Directory ) XXX.edit/src
>>> - (3 Editor Directory) XXX.editor/src
>>> - (4 Model Directory ) XXX/src
>> Yes, if you make the Model ID and Directory match and you use our
>> naming convention for the rest.
>>>
>>> In our project, we found that it can be beneficial to separate the
>>> generated model code from the plugin with the actual model. Thus we
>>> have
>>> for instance:
>> You could use a different convention and given the model containing
>> the plugin a special name. A more common pattern would likely be to
>> call generated model's plugin "core".
>>>
>>> Name of the plugin with the models: XXX
>>>
>>> - (1 Model Plug-in ID) XXX.base
>>> - (2 Edit Directory ) XXX.edit/src
>>> - (3 Editor Directory) XXX.editor/src
>>> - (4 Model Directory ) XXX.base/src
>>>
>>> In this simple scenario plugin names and ids are out or synch.
>> In most any scenario that's not the prescribed pattern that's true.
>>>
>>> If I would make a enhancement request, I would as for
>>> "better synchronisation of plugin names and IDs".
>>>
>>> Does this make sense?
>> I think providing direct control over the plugin ID of each will
>> allow you to do anything you want. Keeping the names in sync is a
>> very good idea, but that will be a convention you'd follow yourself,
>> not one enforced by us. Goodness knows folks don't always like to be
>> forced to use our patterns. :-P
>>>
>>> Best, Philipp
>>>
>>>
>>>
>>> Ed Merks wrote:
>>>> Philipp,
>>>>
>>>> The editor's ID really is
>>>> org.examples.EditoridReferenceWrong.base.editor. It sounds like
>>>> you'd be able to address your needs if
>>>> https://bugs.eclipse.org/bugs/show_bug.cgi?id=163597 were implemented.
>>>>
>>>>
>>>> Philipp W. Kutter wrote:
>>>>> Hi.
>>>>> When I separate the models from the code completely,
>>>>> by letting the code to be generated into another project,
>>>>> .... .base, similar to the .edit and .editor, everything
>>>>> work, except at one place:
>>>>>
>>>>> The generated updateProblemIndication() generates a string
>>>>> with the id of the editor plugin. Unfortunatly, this is done by
>>>>> taking the pluginid of the model code (in my case the .base variant)
>>>>> and adding .editor, rather than really taking the .editor plugin.
>>>>>
>>>>> I attach an example. There in updateProblemIndication() of
>>>>> EditoridReferenceWrongEditor.java, it generates
>>>>>
>>>>> "org.examples.EditoridReferenceWrong.base.editor"
>>>>>
>>>>> rather than
>>>>>
>>>>> "org.examples.EditoridReferenceWrong.editor"
>>>>>
>>>>> The same problem exists in analyzeResourceProblems(...
>>>>> There twice the wrong string is generated.
>>>>>
>>>>> Shall I open a bugzilla?
>>>>>
>>>>> Best, Philipp
--------------070402040100030404050901
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Philipp,<br>
<br>
Nope because we have one already. :-P<br>
<blockquote><a name="b163597"
href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=163597">163597</a><br>
</blockquote>
<br>
Philipp W. Kutter wrote:
<blockquote cite="mid:fhcqg0$eg7$1@build.eclipse.org" type="cite">Great,
we are in violent agreement. Is there already a feature request to
allow
<br>
<br>
providing direct control over the plugin ID of model, edit, editor, and
test plugins
<br>
<br>
??
<br>
<br>
If not, I would open one.
<br>
Best, Philipp
<br>
<br>
<br>
Ed Merks wrote:
<br>
<blockquote type="cite">Philipp,
<br>
<br>
Comments below.
<br>
<br>
Philipp W. Kutter wrote:
<br>
<blockquote type="cite">Hi, Ed.
<br>
Your are right. Thus independent of where the editor plugin is, its id
is the id of the plugin where the java sources are, + .editor.
<br>
</blockquote>
Well, the ID is exactly the value of the Model Plugin ID, which you can
set directly to be anything you want. It does not need to be related
to the name of the project, though the general practice is to make it
match the name of the project and that's a good practice to follow.
<br>
<blockquote type="cite"><br>
Regarding the bugs you pointed to, I agree they are related.
<br>
<br>
However, if this topic is treated, it should include all the followin
genModel properties:
<br>
<br>
- (1 Model Plug-in ID)
<br>
- (2 Edit Directory )
<br>
- (3 Editor Directory)
<br>
- (4 Model Directory )
<br>
</blockquote>
Test all exist as well as the Test Directory.
<br>
<blockquote type="cite"><br>
What happens at the moment, if I observed well is:
<br>
<br>
- the plugin ids of the three plugins are
<br>
(1 Model Plug-in ID) for the model plugin, and
<br>
(1 Model Plug-in ID).edit and (1 Model Plug-in ID).editor.
<br>
</blockquote>
Yes, and .test; they are all computed from the model plugin ID.
<br>
<blockquote type="cite"><br>
- the location of the three plugins depend from (2 Edit Directory ),
<br>
(3 Editor Directory), and (4 Model Directory )
<br>
</blockquote>
Yes, and all (including the tests) are computed from the Model
Directory if they aren't set directly.
<br>
<blockquote type="cite"><br>
As a consequence, names of plugins and their names are only in synch,
<br>
if the settings are as they are by default:
<br>
<br>
Name of the plugin with the models: XXX
<br>
- (1 Model Plug-in ID) XXX
<br>
- (2 Edit Directory ) XXX.edit/src
<br>
- (3 Editor Directory) XXX.editor/src
<br>
- (4 Model Directory ) XXX/src
<br>
</blockquote>
Yes, if you make the Model ID and Directory match and you use our
naming convention for the rest.
<br>
<blockquote type="cite"><br>
In our project, we found that it can be beneficial to separate the
generated model code from the plugin with the actual model. Thus we
have
<br>
for instance:
<br>
</blockquote>
You could use a different convention and given the model containing the
plugin a special name. A more common pattern would likely be to call
generated model's plugin "core".
<br>
<blockquote type="cite"><br>
Name of the plugin with the models: XXX
<br>
<br>
- (1 Model Plug-in ID) XXX.base
<br>
- (2 Edit Directory ) XXX.edit/src
<br>
- (3 Editor Directory) XXX.editor/src
<br>
- (4 Model Directory ) XXX.base/src
<br>
<br>
In this simple scenario plugin names and ids are out or synch.
<br>
</blockquote>
In most any scenario that's not the prescribed pattern that's true.
<br>
<blockquote type="cite"><br>
If I would make a enhancement request, I would as for
<br>
"better synchronisation of plugin names and IDs".
<br>
<br>
Does this make sense?
<br>
</blockquote>
I think providing direct control over the plugin ID of each will allow
you to do anything you want. Keeping the names in sync is a very good
idea, but that will be a convention you'd follow yourself, not one
enforced by us. Goodness knows folks don't always like to be forced to
use our patterns. :-P
<br>
<blockquote type="cite"><br>
Best, Philipp
<br>
<br>
<br>
<br>
Ed Merks wrote:
<br>
<blockquote type="cite">Philipp,
<br>
<br>
The editor's ID really is
org.examples.EditoridReferenceWrong.base.editor. It sounds like you'd
be able to address your needs if
<a class="moz-txt-link-freetext" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=163597">https://bugs.eclipse.org/bugs/show_bug.cgi?id=163597</a> were implemented.
<br>
<br>
<br>
Philipp W. Kutter wrote:
<br>
<blockquote type="cite">Hi.
<br>
When I separate the models from the code completely,
<br>
by letting the code to be generated into another project,
<br>
..... .base, similar to the .edit and .editor, everything
<br>
work, except at one place:
<br>
<br>
The generated updateProblemIndication() generates a string
<br>
with the id of the editor plugin. Unfortunatly, this is done by
<br>
taking the pluginid of the model code (in my case the .base variant)
<br>
and adding .editor, rather than really taking the .editor plugin.
<br>
<br>
I attach an example. There in updateProblemIndication() of
EditoridReferenceWrongEditor.java, it generates
<br>
<br>
"org.examples.EditoridReferenceWrong.base.editor"
<br>
<br>
rather than
<br>
<br>
"org.examples.EditoridReferenceWrong.editor"
<br>
<br>
The same problem exists in analyzeResourceProblems(...
<br>
There twice the wrong string is generated.
<br>
<br>
Shall I open a bugzilla?
<br>
<br>
Best, Philipp
<br>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<br>
</body>
</html>
--------------070402040100030404050901--
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
|
Goto Forum:
Current Time: Wed Dec 04 09:41:02 GMT 2024
Powered by FUDForum. Page generated in 0.04508 seconds
|