Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Archived » Buckminster » Hudson Plugin for Buckminster
Hudson Plugin for Buckminster [message #382729] Fri, 23 January 2009 21:12 Go to next message
Johannes Utzig is currently offline Johannes UtzigFriend
Messages: 329
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------060907000103050402080508
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

for my current project I want to use Hudson as CI system and decided to
write a plugin that adds a new builder type 'Buckminster' to a hudson job.
It fits exactly my needs so far and that's why I was considering
contributing it to hudson. Before doing so, I was hoping for some
feedback to see if there is interest and maybe ideas on how to improve it.
As a start I should probably describe my own use-case a little.
I'm developing Eclipse PlugIns/RCP and wanted to use CI to build and run
some metrics and automated JUnit PlugIn tests on the projects.
Buckminster seemed like the perfect tool for that, since it does all the
nasty PDE stuff for me (thanks a lot for that).
To spare the overhead of ant-scripts invoking buckminster from the CI
system for each and every project, I decided to develop a plugin instead.

Here is what it does so far:
-you can configure multiple eclipse/buckminster installations in the
global hudson configuration and add additional startup parameters.

-in the job settings (free style project) you add a new build step
(buckminster), select one of the configured installations and pass one
or more commands to buckminster.

Here is what will happen:

The builder will look at the specified eclipse/buckminster installation
to find the equinox launcher jar in the plugins directory (this should
work in case of both the headless product and a regular eclipse with
buckminster installed) and start it with the given parameters.

The working directory of the process is set to the hudson job workspace.
This is particularly useful if you (like me) want hudson do the
check-out from your SCM to see the changelog and want buckminster to
resolve your components with reader type 'local' directly from the
hudson workspace.
The buckminster workspace (data) is automatically set to the same
directory as the hudson workspace to avoid duplicating the projects.
The buckminster commands you passed to the builder are written into a
commands.txt file and passed to buckminster (the -S parameter).
If there was a 'perform XY' command, it gets automatically transformed to
'perform -D buckminster.output.root="HUDSON_ARCHIVE_DIR" XY'
where HUDSON_ARCHIVE_DIR is the directory hudson expects the build
results to show up.

Once the process is started, the plugin sends buckminsters StdOut and
StdErr back to hudson and waits for the process to complete.

Pretty simple, but works surprisingly well so far.
Anyway, I'd appreciate any feedback on if that is of interest for others
as well and what other features I should include.

Two screenshots showing the configuration and the latest development
snapshot of the plugin itself are attached.

Best regards,
Johannes



--------------060907000103050402080508
Content-Type: image/png;
name="globalConfig.png"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="globalConfig.png"

iVBORw0KGgoAAAANSUhEUgAAA8AAAAFtCAYAAADIywOCAAAAAXNSR0IArs4c 6QAAAAZiS0dE
AP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kBFxQh CJAgN6wAAAAZ
dEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAgAElEQVR42uzd eVhUZfsH8O8s
MOy4JSSKoCiYe6IYSgmaYuKWC6+auwYmamqaZptYqZlvWprmnr2plS1q/czU UisV9z1xQURA
CGRV2Wbm/v1hMzEwA4gmiN/PdXExnDnnee7nPmeAe85zzihEREBERERERERU xSmZAiIiIiIi
ImIBTERERERERMQCmIiIiIiIiIgFMBERERERERELYCIiIiIiIiIWwERERERE REQsgImIiIiI
iIhYABMRERERERHdfQGsUChMvuzs7PDcc88hLi6u3J0pFAr4+PhU2Pbh4eF4 66237ilh95KX
wvFbGouPjw8UCgWPTCIiIiIiovtMXdKTrq6umDt3LkQEp06dwqJFixAWFobt 27dXSLBr166F
s7Nzubf/9NNP4e3tjdmzZ99THOXNy73GT0REREREROVX4hRoZ2dnjBgxwvgF AA4ODgBMz2AW
PmuZn5+PyZMno3bt2tBoNOjatSsSExOLtT116lR4eHjg7NmzxrOpAQEBqFGj Bt599114eXmh
Ro0aWLZsmXGbV155BfPnzzf27+7ujiZNmqB27dr4/PPPAQBnzpxBp06dYGtr C1tbW/j7++P3
339Hx44dAQDR0dEICQlBTk4ORo0aBUdHRzg7OyM8PBy5ubnGtr29vREWFob+ /fvfl7wUjd8g
Pz8fYWFhsLe3R7t27XDr1i3jc/cSIxERERERERUhFgAo9hUYGCh5eXnG5729 vUVExNvbWwxN
vfXWWwJAIiIi5Pvvv5datWrJkCFDTLZZunSpqNVq+emnn4zLVSqVLFu2TOzt 7QWAzJ07V+zt
7cXBwcEkJkOfhm2WLl0qGo1GatasKSIiHTt2FADy7bffyo8//ii1a9cWLy8v iY2NFQDi4eEh
cXFx8tZbb4mjo6Ps2LFDfvzxR7G3t5c333zT2LZSqZTg4GBZs2bNfcmLufi9 vb1lzpw5AkDG
jh0rkZGRxjYNuSxPjERERERERGSmzi2pAPbw8JA///xTzp07J6tWrRIAMnv2 7BILPV9fXwEg
mZmZIiJy7tw5OXbsmHEbOzs7USqVEhISYtJXo0aNRESkcePGAkB0Op3xsaUC 0svLS0REGjVq
ZFxv4MCBAkDc3Nxk6NChsnr1aklLSyu2fWBgYLFC9plnnjGu5+rqKjqd7r7l xVIB3LZtWwEg
6enpotfrxcXFxbhNeWMkIiIiIiKi4kqcAq3RaODj44MmTZrghRdeAABs3ry5 8NljAIBOpzMu
Mzy2dCOn27dvo1OnTvjhhx9w8ODBf+ZiK5Um2ymVylJvBqVSqUy2BYANGzZg 9+7dGD58OKKj
ozF69Gj4+/sX29bOzg4+Pj74888/jV+fffaZyTTnwu3ea14s0ev1JuMuPOZ7 iZGIiIiIiIhM
lVg9ZWZmYt26dVi7di1efvllAECbNm2MxVdcXByWLVuGK1euGLfp3r07AGDa tGn4/vvv0bFj
RyxevNj4fOPGjbF161a4uroiIiKiTEXi3ejVqxcmTZqEwMBAvPvuu3ByckJG Robx+aysLMTE
xKBHjx64dOkSTp8+jQsXLqB9+/bYsGFDmfooT14see655wAAr776Kt59910k JSUZn7uXGImI
iIiIiKiIkqZAF/7SaDQSEhIif/31l4iIrF69WmrUqCFeXl7i5uZmnLabk5Mj 48ePlxo1aoiV
lZV0795dkpOTi00B/vTTTwWArFixwuK04bJMIS663tGjR6VDhw5iY2MjSqVS WrZsKb/++quI
iIwcOVLUarX069dPCgoKZMKECeLg4CBOTk4yceJEs9fx3q+8WIr/1q1bMnTo UNFoNNK8eXNx
dXU1blPeGImIiIiIiKg4hRjm6xIRERERERFVYbyAlIiIiIiIiFgAExERERER EbEAJiIiIiIi
InqIqM0tLO3jh4iIiIiIiIgqo5Juc6W+2w2IiIiIiIiIHkacAk1EREREREQs gImIiIiIiIhY
ABMRERERERGxACYiIiIiIiJiAUxERERERETEApiIiIiIiIiIBTARERERERER C2AiIiIiIiIi
y9Tl2UihUMDFxQUAoNPp4OzsjI8++gjPPfdcudoSEZQ3jvJsGxERgSVLlpQ7 af9mv4a2S+uj
cFv3kkMiqtoyUpOgLShAfn4edHodwF8VREREVBEUgEqpgkZjA5VajWq1XCsm DClH5VStWjVk
ZGQYf46KikJoaChiY2MfaAGcm5sLGxubB9rnv91vWQvgws+XNx4iqvrSkhOQ kpKMPbt3IOFa
HHQ6HZNCRERED5xKpYJbPXcE9+iL6jVrwqn6YxUSh/peG9Bqtfjrr7/g5uZW rDAzPE5MTMSw
YcMQGxsLOzs7rFixAu3btzdp5+LFi+jVqxc+//xz+Pr6QqFQYNKkSfj+++8R EhKClJQUREVF
oW/fvvjwww8BALa2tsZicdq0afj666/xn//8B3PnzsVXX32FOXPmID8/Hzqd DjNnzsTo0aMx
bNgwAECnTp2wZcsWDBkyBOfPn4e7uzs2btxoPLOtUCgwf/58bNiwASdOnDCJ 9V77HTt2LObM
mQO9Xo+8vDyEh4dj5syZxXL7xRdfmF2vcFt79uyBra0tUlJS8NJLL+Hw4cNQ KpXw9fXF0qVL
UatWLbNxEtGjITcnB7/v2Q13z0boPXAYlEoVk0JEREQPnF6vw5kTR/Drzu0Y +MKoigtEygF3
JtGZfO3cudP4XOH1RET69u0rixYtEhGRn376Sfz8/EzWiY2NlSeeeEL2799v svzAgQOSlJRk
fJyYmChqtbpY+wBk165dJs/b29vLlStXRETk2rVr0qtXr2LbTZw4URYvXiwi IsuXL5chQ4aY
rLNw4ULR6XRmx38v/bZt21a+/PJLERG5fv26qFQqs22XZT3D4/79+8v06dNF p9OJTqeTV199
VQYOHGgxTno4AJCPP/7Y7PFHVBZxMefljanhcj0xnskgIiKiCqXVFsgbU8Pl 9s2sCovhnqdA
63Q6fPrpp/j8889x4MABs2eAHRwccP36dTg6OkJEcPv2bdjb2xvXadmyJXJz c3Hq1ClYW1sb
l+v1eigUimKPi7avUCiQl5cHa2tr47JevXohPT0dPXr0gL+/Pzp27AilUmmy nbu7O86ePQtH
R0cUFBTA09MT8fHxxnVu3boFOzu7YuO/1361Wi327t2LP//8EydPnsSqVavM jqmgoKDU9QyP
7e3tER8fj2rVqgEA0tPTUb9+fWRlZZmNkx4OCoUCDRo0wMGDB/HYY48V2/dE pbkWE43lHy/E
pBmRqO3iyoQQERFRhZo1+UW8/s5C2No7Vkj/93wXaJVKhdGjR+PChQsmy/Pz 842PdTqdsQgE
gLi4OJN1ly9fjpYtW2LRokXF/vk399gcQ+FssGXLFnz00UdwdHTE/Pnz0a1b t2LbJCYmwsnJ
CQqFAtbW1khMTDR53lzxez/6DQkJwaZNm1C/fn2zU5/vdr2/z+QXy1fha/2K xkkPj8mTJ+O1
114rtvyLL76Aj48PGjdujPr165tMbVcoFHj55Zfh4eGBiIgIhIaGwsPDA5Mn TwYAZGZmIiQk
BF5eXggKCkJycjITTURERERVX3lOGzs7O5v8vGPHDuO0ZpVKJcnJybJr1y7j VM3u3bvLkiVL
RERkz5490qZNm2LTOa9duyYuLi5y7do1i1OpLT02t6xZs2aSmJgoIiJXr14V Jycnk3X0er14
eXnJyZMnRUQkNjZWPvnkkzJNM73Xfm1sbCQlJUVExJgnvV5frO3S1iv8uF+/ fjJz5kyTKdAD
BgwoMX/0cEyBLigokJYtW8qhQ4fuaip9SZcQlDT9n6rYFOjL5+W1l8dKctJ1 JoOIiIgq3Gsv
j63QKdDluglWZmYmXF1djWceNRoNNm7caDxb5efnhz59+hjXX7ZsGYYOHYpF ixbB1tYWq1at
KtZm3bp1MXXqVEyePBlff/31PRf206ZNQ0BAAFQqFVQqFVauXGl8rmXLlnjy ySexbt06DBs2
DLm5ubC2tjbeXOvf7jcyMhJ+fn5wcXFBx44d0apVK0yfPh0LFiwwaauk9Qxt HT9+3HgWPTw8
HF5eXgAAX19fLFu2jO/wVAFqtRqLFy/GhAkTsH//fuPy/fv3Y+/evViyZAlO njxZ7O6+fn5+
xlkBhsdarRYA8N133+Hs2bMAgFGjRmHOnDlM9CPEzc3NOKVep9PB0dER77zz DoKCgkrcJiEh
wfjd0vMl9VVY0ZsL3k1fREREROVVrmuAiegBvUALXe87aNAgdO3aFaNGjYKI IDg4GPXq1UOv
Xr3QtGlTNGzY0OI14kUfq9Vqk4LZcJ09VT3mrgH28fHB+fPnjescP34c4eHh iIqKsthOXl4e
NBrNXRfARfsqa4GekJBg7JOIiIiqjof+GmAiejAWLFhgcqZ27969mDt3Lnr2 7IkrV64AQJlv
juXp6YmTJ09CRBAbG4ulS5cywY8orVaL1NRU46wew0faFX3coEED4+O0tDSM GTMGrVu3RocO
HTB//vy77jc5ORmhoaHw9/dH586dcezYsWLrGPp0c3NDZGQk2rdvj+7duyM2 Nhbbtm1D586d
ERAQAH9/f+MspOzsbAwbNgz+/v4YMGAAUlJSuJOJiIiIBTDRw6Zu3bp48cUX jT8bpsj7+/tj
x44dxinyZWGY/u/j44OePXuicePGTPAjJDs7G25ubnBzc0P9+vUxYsQIvPLK K2XefsaMGXj8
8cdx+PBh7Nu3D7m5uWXqq/DXrFmz8Oyzz2L//v1444038Oabb5bYp7u7Ow4e PIg+ffrgjTfe
wJQpU7Bu3Tr89ttv+Oabb/Dzzz8DuPNG0TPPPIP9+/ejd+/eiIyM5A4nIiIi I06BJiKqwkqb
Aq3T6fC///0PmzdvxrZt20ymMpt77ObmBltbWxw5csT4sWsZGRnGafiXL18G AON2lqZAN2rU
CMePH4eDgwNEBDk5OcY77xe9BtjNzQ0XLlyAvb09srOz0bp1a3Ts2BGZmZno 3LkzfH190a5d
OyiVSrRt2xa//vorHBwcoNVq4efnh6NHj/JAICIiqiQ4BZqIiCqMSqXCoEGD EBMTY7K8oKDA
4jaGz2Qv/DMA7Nu3DwkJCWW6cVXRj8e7m5tdiQjWrl2LOXPmwMHBAUuXLsXg wYMB3Jla7e3t
bTy7zY/4IiIiIhbARERkdODAAXh6ehoL4tTU1BJviBUUFISFCxdCq9VCp9MV +wz3sujQoQO+
+uorAMDBgwcxceLEEtffvHkzAGDTpk1o3749unTpgtq1a2PEiBGYN2+e8a7S 9erVw65du5CQ
kICoqCi899573MFERERkpGYKiIgeLdnZ2WjVqhWAO2dTra2t8cknnwAAxo4d i5CQEAQHB1vc
fu7cuZg2bRratm0LOzs749nX0voq7IcffsDEiROxcuVK2NjYYOHChSXGfOrU Kfj5+aFatWpY
vnw5jh49ij59+hg/cs7wMXKLFi3CxIkTkZeXBysrK8yePZs7nIiIiIx4DTAR URVm7hrghw0/
D5iIiKjq4DXARERERERERCyAiYjoUffHH38wCURERMQCmIiIqj4PDw8mgYiI iFgAExFRKRR3
7uys1+uYCyIiIqpQOp0WKpWKBTAREf07VEoV6nt64cyJI9DptEwIERERVVjx +/ueXWjQsDGk
At+Y512giYiqsBtJ8bh58yZ2/N8WxMfFQqfjmWAiIiJ68FQqFerV90SvfoNg a2MDpxqPsQAm
IqL7KyM1CUqVCmq1NRRKTvohIiKiiiN6PbTafOh1OlSrVTEfz8gCmIiIiIiI iB4JPB1ARERE
RERELICJiIiIiIiIWAATERERERERsQAmIiIiIiIiYgFMRERERERExAKYiIiI iIiIiAUwERER
ERERUTmpmQIioqorIzUJ2oIC5OfnQafXAfzkdyIiIqoICkClVEGjsYFKrUa1 Wq4sgImI6P7S
63S4cSMFe3bvQMK1OOh0OiaFiIiIHjiVSgW3eu4I7tEX1WvWrLg6XER4PoCI qIpKjL2E7T98
hzrunmjd9ikolSomhYiIiB44vV6HMyeOID42BgNfGAU7R+cKiYNngIkqqcjI SMTFxWHVqlXG
ZefOnUNgYCASEhKgVt/by1ehUIDvf1V9OtHhamwMevQbDNfH3ZgQIiIiqjCP 1XbB7FcnQKGs
uFtR8SZYRJXUkCFD8O233yIvL8+4bPPmzRg4cOA9F78AkJOTwyQ/CgTQ6XQ8 80tEREQVTqVS
V/jlWCyAiSqphg0bokmTJtixY4dJATxo0CBkZmYiJCQEXl5eCAoKQnJysnEd hUKB999/H61a
tcJXX32F5s2bw9vbG15eXli9erVxPVtbW6SmpmLgwIHw9PREw4YNERoaitTU VGM706dPh6en
J2bOnMkdQkREREQPPRbARJXYCy+8gE2bNgEALly4gKysLDz11FN488030bVr V1y6dAmhoaGY
OnWqyXZqtRrHjh3DqFGjsG3bNkRHR2PPnj3YunWryXrjxo2Dp6cnLl++jIsX L8LT0xPjx483
Pt+tWzfs378fH3zwAXcGERERET30eBMsokrsxo0baNSoEa5du4bFixcjKysL 8+bNg7u7O86e
PQtHR0cUFBTA09MT8fHxd17UCgVu3boFOzs79OrVC+np6ejRowf8/f3RsWNH KP++5kKhUMDe
3h7x8fGoVq0aACA9PR3169dHVlYWFAoF8vLyYG1tzeuFH2LXYqKx/OOFmDQj ErVd7nzcQGpq
KsaNG4eEhATY2tpi/vz58PX1Nbv95cuXERwcjIsXLzKZREREdM9mTX4Rr7+z ELb2jhXSP88A
E1ViNWvWxNNPP41t27YZpz8DQGJiIpycnKBQKGBtbY3ExEST7ezs7AAAW7Zs wUcffQRHR0fM
nz8f3bp1M1lPRKBQKIw/KxQKk+syrK2tuROqoP/+97945plnsH//fsyaNQvT pk0zu15+fj6m
TZuG27dvM2lERERUJbAAJqrkhg4divfffx+5ublo0aIFAMDT0xMnT56EiCA2 NhZLly41u22L
Fi3g6uqK8ePHY9myZTh06JDJ8927d8f8+fOh1+uh1+sxb9489OjRg0mv4mJi YhAcHAwACAgI
wOXLl82u984772Dw4MFMGBEREbEAJqIHo0ePHoiJicGgQYOMZ2vXrVuHYcOG wcfHBz179kTj
xo3Nbjtt2jQEBATA29sbwcHBWLlypcnzy5cvx4ULF+Dl5QUvLy/ExMRg2bJl THoVt2nTJnh5
eUGr1WLr1q1o3rx5sXV+/vlnpKeno1+/fkwYERERVRn8HGCiSs7GxgYZGRkm yzp06IATJ06Y
Xb/wtbrDhg3DsGHDSlxv8+bNpbbD63+rJl9fX6SkpGD58uUmy5OTk7Fo0SJ8 +eWXJlPkiYiI
iB52PANMRPSIycrKAgAcO3YMmzdvLvYxV+fOncPJkyfh4+MDNzc3AICbmxsu XbrE5BEREREL
YCIiengEBQXh3LlzUCqVqF69OlQqFQDg6tWrAIDAwEAkJCQYvwAgISEBXl5e TB4RERE91DgF
mojoEbNgwQKMGzcO+fn5sLa2xn//+18Adz73+fz580wQERERsQAmIqKqITAw EIGBgcWWWyp+
DWeBiYiIiB52nAJNRERERERELICJiIiIiIiIWAATERERERERsQAmIqJKQQGo VCro9TrmgoiI
iCqUTqc1fvoEC2AiIrrvVEoV6nt64cyJI9DptEwIERERVVjx+/ueXWjQsDGk At+YV4iIcHcQ
EVVNN5LicfPmTez4vy2Ij4uFTsczwURERPTgqVQq1KvviV79BsHWxgZONR5j AUxERPdXRmoS
lCoV1GprKJSc9ENEREQVR/R6aLX50Ot0qFbLlQUwERERERER0b+FpwOIiIiI iIiIBTARERER
ERERC2AiIiIiIiIiFsBERERERERELICJiIiIiIiIWAATERERERERsQAmIiIi IiIiYgFMRERE
RERExAKYiIgeoF27djEJ3D/MGeMlImIBTERED9bChQvRsWNHPPXUU1iyZMk9 tfX6668DAJo0
aYLBgwcjPT3d7HrPPvssAEChUNx1HwqFAsHBwcYvS+sUjudeTZs2DZs3bzb+ vHbtWsyZM6fc
+SkPEcHEiRNx+/btf/2YuJf9U9L+KMmkSZPQs2dPBAYGYubMmcWeP3/+PBwc HO5bPv+tnJU1
HxMnToSIlHqcd+7cGZ07d8bVq1fNrlfaa83Svigab1lyWZ59RET00BEiIqrS bG1tJSsrS9LS
0sTf31/kzn/lMn78eAkJCZF27drJ4cOHZf/+/RIUFCTBwcGydetWERGJioqS gIAA6dGjh0yZ
MkUMfzYASFhYmHTp0kWuXr0qIiJBQUGSnp5u8jwAiYiIkE6dOsmLL74oImK2 n8LM/WkqKQ5L
43n77bclMDBQOnXqJNOmTSux37Nnz0pISIjx565du8qVK1fMbmMY0+rVq4v1 YYjn0KFD0rFj
R+nTp48EBATI4cOHBYC89tpr0qlTJwkLCys2xq1bt0pkZKTFsRYdryGGwo8t xVu038L7R0Rk
wIABZvdjWcdRWjv5+fmyZMkS0ev1cuHCBXFycjIZ++3bt2XIkCHF9r3h56J5 NrCU/9KODXPL
LI21cJ7DwsLkxx9/LJbjQ4cOSbt27SQkJESGDh0qAOTtt9+WH374weLrsnCs X3zxhfTo0cPi
/gsLC5OwsDBp166ddOrUScaOHVusDXOvibCwMElLSytTLsu7j4iIHjb8LUZE VMV1795dQkJC
ZNOmTXLr1i3jP8N79+4VEZGdO3dKq1atpHXr1hIfHy86nU6ef/55ERFp0aKF HD58WEREZs2a
Veyf7E2bNsmiRYskLi5O+vTpY/af8ejoaMnJyTEuM9dP0cKg8FdZ4jA3Ho1G I5cvX5b8/HxZ
unRpqf127NhRkpKSJCkpSTp37mwxVgBy5MgREZFifRjiadasmfz2228iIrJv 3z5p0aKFMRe3
b982W0QEBwfL0aNHLY616HgNMRR+bCneov2WdT+WdRyltWPw6quvCgD55JNP TJZPmjRJzpw5
Y7EALppnA0v5L+3YMLfM0lgL59lSjps1aya//PKLiIj88ssvAkAOHz4szz33 XJkK4Js3b4qd
nZ3F/SciMnv2bLl27ZpkZmYWy7ulAvhuclnefURE9LBR/P1LkYiIqqicnBxE R0dj5cqVOHz4
MA4dOgSFQoH8/HxYWVkhPz8f9vb2EBHodDoAgFKphE6ng1qtRm5uLtRqtXF6 pYgYv2dnZ6N/
//7o2rUr6tSpg0GDBhVbT6/XQ6FQGJep1epi/RSdwln0T1NpcZgbz/r167Fi xQrk5ORg7Nix
CAsLK7HflStX4ubNm1Cr1XBwcMDIkSPNxlp4TBs3bjTpY8yYMcYx5uTkmMSj 1WqL5aIwR0dH
JCcnw8nJyexYRQRKpdJsXg2PS4vXXN5K2o9lHUdp7RSe5h0VFYU+ffogKSkJ APDll18iPT0d
4eHhxfJi+LlonkePHg0AFvNfNFdFjw2tVmv2+C/LWM3luGieNBoNbt68iTp1 6iAzM9PiVGXD
WG/evAkXFxfk5eWZ3X8igpUrV+KHH36Ai4sLVq5caZL3ouMt/L2suSzvPiIi 4hRoIiKqVJyc
nCQxMVHS09PFwcGh2Fmx3bt3S7NmzcTd3V2SkpJEr9fL119/LSIiPj4+cvz4 ceMZIHNnl/r2
7SutWrWS7Oxsk7NNer3e7Bkqc/1YOjNmUFoc5sYzffp00ev1Eh8fLzY2NqX2 m5mZKU899ZR0
6dJFsrKyLMZaOL6ifRiea9q0qfzxxx/Gs4nNmzc3m4vCrKysJD8/3+xYc3Jy 5MKFCyWe+StL
vIW3L7p/zO3Hso6jtHbi4uKkb9++IiKSnJws1apVMz43fPhwkzP+NWvWLNZ+ 0TyXlH9zuSp6
bJhbVpax6vV6szlu0aKF8Qzwnj17BIDk5eWJtbV1mc4Af/HFF/Lcc8+VuP9s bGwkIyND0tLS
TMZm6dgwxFvWXJZ3HxERPWzUfAuAiKhq++CDD9CjRw9YWVnhvffeMy5ftWoV FixYgOTkZKxe
vRrJycno378/nJyc0K9fPwDAihUrEBERgerVq6NJkyZm2+/Zsye2b99ucnMc b29vhIaGml1/
yZIlxfopqujNr8oSR9HxfPfddwgKCoJCocD06dPh6+tbYr9OTk5o1KgR9Ho9 HB0dyxSrUqk0
6SMyMhIAsGbNGkydOhW1atXCjRs3sGbNGrRt27bE/dSsWTPExcUVG+uYMWMQ HBxc6vZlza2l
/WNuP5ZnHObaqVevHho0aIDg4GBkZ2cbb8ZWq1YtpKamYt26dcazlKmpqaXm 2dLyxMREs7kq
emz4+fkVWwagxLEachYZGVksx6tWrUJERARq164NNzc3AMDVq1fRokUL4/aG sRY9zgsKCqDX
67F27VqcPn3a4v4bPnw4QkND0bBhQzRq1AgbN24s8dgwxLt8+XLUqFGj1Fze 6z4iInpYcAo0
EdGj+Mv/Pk1j1Ov1mDJlCgICAkosuB6W8VSkDz/8EI6OjhgzZswD7/t+7cfK cjyUdmw8iOPF
MM140qRJ/IVDRFSJ8GOQiIgeQd26dbsv7bz99tvYt28fQkJCqsR4KlJ4eDj2 7dtXIYX8/dqP
leV4KO3Y+LePFxHBb7/9hrCwMP6yISKqZHgGmIiIqJK4du0aatWqBVtbWybj IZaTk4PU1FTU
q1ePySAiYgFMRERERERE9OBxCjQRERERERGxACYiIiIiIiJiAUxERERERET0 EOHnABMRVWEZ
qUnQFhQgPz8POr0O4F0fiIiIqCIoAJVSBY3GBiq1GtVquZa4+uVrN/DtL2dw 8HQcomNTAADe
Ho+hfXN3PB/UDA3r1SxfGLwJFhFR1ZWWnICUlGTs2b0DCdfioNPpmBQiIiJ6 4FQqFdzquSO4
R19Ur1kTTtUfs7juJ18dwJothzGoWyu09v0hrWEAACAASURBVKmDFo0fBwCc unAdx6MTsfGn
ExjVuy1eGvgUC2AiIvpHYuwlbP/hO9Rx90Trtk9BqVQxKURERPTA6fU6nDlx BPGxMRj4wijY
OTqbXa/fK5/Dyd4GcycEY9+xGOyOuoyzMckAgKYNXNDZryH8W3rgreU/IyM7 F998MPSu4uAU
aKJKTKFQwMXFpdjypKSkErcREeP3f0O1atWQkZFR6rJ/Oy8iAqVSidGjRyMy MhJKpdIkB/cq
IiICS5YseaiPIZ3ocDU2Bj36DYbr4258UREREVGFeay2C2a/OgEKpflbUX3y 1QHUcrbH7HHP
YsrCH5CWeRszRweiaUMXaLV67Dkag//93wnsjLqM9yZ0x4zF2/HJVwfu6kww b4JFVIk5Ozsj
KSmp2FdZ5OTkVPm8JCcn49y5czhy5AiWLl1638deuM2HlgA6nY5nfomIiKjC qVRqi5djXb52
A2u2HMbscc9i0gfbcODUVTSqXwvPtGmAlPRbUKuV+E+3lnh5SEeciUnBnFV7 MG9Sd6zZchiX
r91gAUxUlSUmJqJLly7w8vJCixYtcPDgwWLr2NraArhzNvSVV16Bp6cnfH19 cenSJXz11Vdo
3rw5vL294eXlhdWrVwMAMjMzERISAi8vLwQFBSE5OfmuY0tNTcXAgQPh6emJ hg0bIjQ0FKmp
qcZYXn75ZXh4eCAiIgKhoaHw8PDA5MmTy91/9erV8eGHHxrHUHTs77//Plq1 amWxbUu5HDZs
GACgU6dOpY7J0MeYMWPw2WefAQC0Wi3q1q1b5jcsiIiIiB5l3/5yBkN7PIl9 x2Jw6HQcAOBK
Yjp6vfwZXnjja0xc8AMA4OknPeHkaIvzV1NxPPo6RvVui29/OcMCmKgqyMzM hEKhKPYVERGB
nj174tKlS1iwYAFefvnlEtvx9PTElStXMGjQIEycOBGjRo3Ctm3bEB0djT17 9mDr1q0AgDff
fBNdu3bFpUuXEBoaiqlTp5Y5rszMTADAuHHj4OnpicuXL+PixYvw9PTE+PHj jdv+5z//QVRU
FJYuXYrJkyfjwIEDxmnGZe2/KB8fH8TGxpp9Tq1W49ixYxbbtpTL9evXAwD2 7NlT6pgMfQwe
PBhffvklAODnn39G69at4erqygOZiIiIqBQHT8ehlXcd7I66DADQWKsRl5SJ 62m3YGtjjVbe
dQAANzJvw8pKDTtbDY5fTEbrJm44+HfBXCZCRJWWs7Oz2eX29vaSlZUlIiJ6 vV5u3rxpfM7w
si78PTs7W0REMjIyxM7OTnr27CkdO3aUuXPnyt69e0Wn04mISL169Yzt5ufn i5ubW5njMiyz
t7eX9PR04/K0tDRxdHQ0xqLX680+vpf+9Xq9ODk5mc3BrVu3Smy7LLksbUyG PrRarbi7u8uN
GzckNDRUvvnmmwo/huIun5fXXh4ryUnXTZbPmDFD8vLy7rq911577b60U6dO HZPv95Mhprtt
u7SY7lesD2LslSkmIiIik/8lXh4rt29mFVvetN9CSUm/KW2HfCSNer8vzQf8 V9q8sEQ6jF4h
Exb8KAXaO/+vRq7eK/1f2ywDX/9GJiz4UdKzc6Vpv4Vl7p9ngIkeQneu6fzn 5RsXV7Z3vQw3
h9qyZQs++ugjODo6Yv78+ejWrRuAO9OBnZycoFAoYG1tjcTExLuOzXADrsJ9 Fr7Wo+hzhZW3
//Pnz6N+/fpmn7Ozsyux7bLksrQxGfpQqVR4/vnnsXbtWvzxxx8ICQmplMdP Xl6eMQ93a926
dfelHYOYmJhKM7b7HcvDNPaKygEREZGBUqn4+/8swFqtgpW1NWw01rDRWOG1 EQFQq5T47P9O
4nxcOuxsreFgp4GNrc2dbVVlv9cJC2Cih1BgYKCxENm3bx+GDi359u+G6bxr 1qzB008/jRYt
WsDV1RXjx4/HsmXLcOjQIQB3pkqfPHkSIoLY2Nhy3QSqe/fumD9/PvR6PfR6 PebNm4cePXqU
advy9J+RkYHJkydj1KhR5Wq7tFyKyF2NafDgwXj99dfx/PPP31Mh8m/au3cv nnnmGaSlpSEs
LAzt27eHv78/wsPDkZaWBgBwc3NDZGQk2rdvj+7duyM2NhaTJk0CAPTv39+k nezsbAwbNgz+
/v4YMGAAUlLufFh9cnIyQkND4e/vj86dO+PYsWPFYmnQoIHF/rZt24bOnTsj ICAA/v7+2Lhx
IwBY7K9wTAYzZ86En5+fcfq7oS+Dwo8NsQBAWloaxowZg9atW6NDhw6YP3++ 2VxWxrFXppiI
iIjKqrF7LZy9nIw2TetDqVLB1sYaCgXg5GCDaynZOPxnIvadjIeNRg1bGw1s bKzR2L0WLsen
wcejFgtgoqogMzMTrq6uxb6WLVuGL7/8Eo0aNcKECRPwySeflNjO0aNH4eHh gfXr1+Pjjz/G
tGnTEBAQAG9vbwQHB2PlypUA7pzdGzZsGHx8fNCzZ080btz4rmNevnw5Lly4 AC8vL3h5eSEm
JgbLli0r07Zl7d+QFxcXFzRq1AitWrXChAkTytV2Sbls2bIlnnzyybsak6+v L+zs7DBy5MhK
e1wZCqUZM2bA3d0d+/fvx++//w53d3e89tprxvXc3d1x8OBB9OnTB2+88QYW L14MANi8ebNJ
OwsWLMAzzzyD/fv3o3fv3oiMjAQAzJo1C88++yz279+PN954A2+++WaJcRXt b8qUKVi3bh1+
++03fPPNN/j5558BwGJ/5gpgb29vREVFoV+/fpg1a1aZczRjxgw8/vjjOHz4 MPbt24fc3Fyz
61XGsVemmIiIiMrqqRb1cSI6EV3aNoCV1Z1P67W10UChVOKPU9dw6M/rUKlU sLXVwEZz5xrg
1o0ew5mYv9D2ibpl74iz0ImqNr7MHxytVit79uyRli1bVpqYil4DnJ+fL6++ +qqIiHh5eUlm
ZqZx3YyMDGncuLHxWlDD9dBZWVnSsGFDk2tEC7fj6+trvM68oKBAnnzySWP7 huV6vd54rbS5
a07N9Td8+HDp06ePfPzxx3LgwAHjteqW+isck7k2PT09i13nau5xnTp1pGHD hibXfaenp0ud
OnUkICBA6tSpY1y3Mo69ssRERER0N9cAX4pLlTaDF8v1lCwZN3eLdApbLd0n fS6j3tlqXGfS
R7tlyid7ZcbKP2T19nOSkn5TfIculUtxqWXuX833GoiI7o/169dj0qRJ2LBh Q6WN8bfffkNA
QIDhDdASr20u8mapxXaSk5Ph7e1t0g5Q/PrqhIQENGrUqKxvzmLt2rU4e/as 8XOeFy1ahE2b
Nlnsr3BM5qjVpn/yCgoKLK5ruLt50T727dtnsl5lHHtliYmIiOhuNKxXE6N6 t8XsFTvx1ovP
YsH//sDF+HSoVP/8XbGyUkOtVsPHvQZ6+3tizqpfMbrnk2hYr2aZ++EUaKIq 7uLFi0zCAzJy
5EhkZWVV2ptfAcCvv/6KwMBAAEBQUBCWLl1qvLZ5yZIl6Ny5s3Fdw1TnTZs2 oX379ibFUOF2
6tWrh127diEhIQFRUVF47733AAAdOnTAV199BQA4ePAgJk6cWGJsRfvr0qUL ateujREjRmDe
vHk4ceJEif0Vjslcm/7+/gDu3KwsNTUVUVFRFmMJCgrCwoULodVqodPpsGjR IrPrVcaxV5aY
iIiI7tZLA5/CjfTbmL1iJ6YP64gJA/3Q2L0Wpny0C6+t2IdmDWqjf0dP9Pb3 xHurf8X15HSE
D2h/V33wDDBRFefl5cUkEABAq9WioKDAeNfqefPmYcaMGejQoQMAoEWLFpg3 b55x/VOnTsHP
zw/VqlXD8uXLAQBPPPEEunTpgrZt2xrbWbRoESZOnIi8vDxYWVlh9uzZAIC5 c+di4sSJWLly
JWxsbLBw4cIS4yva39GjR9GnTx+oVCqoVCosWLDAYn9Fx2YQHR2N9u3bo2bN msYxjB07FiEh
IQgODrYYy9y5czFt2jTjOAcPHmx2vco49soQExERUXl9teAFfPLVAfSYsAbh A/wR+GR9NKxb
AwAQl5SBszEpeOndzRje0xfvTwq+6/YVUnReGxERVRnXYqKx/OOFmDQjErVd XMu8nZubGxIS
Eh5YnA+6v8qkMo79Ud4fRET075o1+UW8/s5C2No7lrje5Ws38P2vZxF19hrO X/kLANC0gQue
bOKG54Oa3dW058J4BpiIiIiIiIgqlYb1amLqsKfve7u8BpiIiIr5448/qnR/ j3KuuT+IiOhR
xgKYiIiK8fDwqNL9Pcq55v4gIiIWwEREVDUp7tz1WK/XMRdERERUoXQ6LVQq FQtgIiL6d6iU
KtT39MKZE0eg02mZECIiIqqw4vf3PbvQoGFjSAW+Mc+7QBMRVWE3kuJx8+ZN 7Pi/LYiPi4VO
xzPBRERE9OCpVCrUq++JXv0GwdbGBk41HmMBTERE91dGahKUKhXUamsolJz0 Q0RERBVH9Hpo
tfnQ63SoVsu1QmJgAUxERERERESPBJ4OICIiIiIiIhbARERERERERCyAiYiI iIiIiB4iaqaA
iOjRkRoVhZh165C8Zw9uXrkCAHDw9IRLp05oMGIEavn5MUlERERUZfEmWERE j4hD48Yh9Ysv
0KRZM9i4ukLt5AR9gRbarEzkJCUh+tw5PDZsGNotW8ZkEREREQtgIiJ6OP3a vTtcExJQq00b
5B8/Dl1KCgBAdFqIAIoaNWHdxAc3zp5FSoMGCNy+nUkjIiKiKofXABMRVXGH xo2Da0ICajZq
hJyff4YuJQWi10Gv1QIA9Do9JO0Gbv22D05166LmxYs4NG6cxfb+WrQIRxUK s1+3T5zAUYUC
Z318HugY48LDkfjWW8afyxLDWR8fHFUoTJYlzJwJ3MP7wkXjuJc2C4/h38yp Ib7y9lGWOM3l
+l486NxUtvjKms/7nfd/+3V7v46JB9EfET28eA0wEVEVlhoVhdQvvoDn888j Z+dOAIDodRD9
nX/qdVq9sQjWiyD3xAlU8/PD6fXrkWrhmmCnrl3hsXYtACB25EhYubrCbe5c AIC1u3uFjDPl
009h4+2NOrNnl3kblbMzVNWqGX/W/vUX8i5dAu6hYCgax/1oEwA81q6Fytn5 vuftfsT3b8VW
FXLzb8VX9Nh9WJXndXsveb6f/RHRw4tngImIqrCYdevQpFkz5J84caf41emN Z7T0Oj0UCkAr
emi1BXc20OmQe+4cGtT3QMy6dWbbtHniCdQcMQI1R4ww/jNu+Fldo8adtnNy cLZpU5ysXRs3
1q83LosdNQrHHR1xwtkZceHh0OfmFmv/qEKB0x4eiA4IwHFbW8QOGwb97du4 feLEnWV2djhm
bY1zrVohe+9eRHfsCADIjY7GpZAQYzvmYiis1ujRqB0RYfw5c/t2OHXvDtHp cD0yEqfd3XHM
ygqn3d1xPTISotOVGJ+5OAxtWhq75Ofj2uTJOFm7No5pNLjYtSsKEhOLxRr/ yitImj+/xP5z
zpzBhU6dcNzWFsdtbXHe3x83f/+9xLwb4jPm7NYt/Nm2LY7b2SF2xAjoc3KM fRrOrhU9q1g4
NgPJz8fVsDAct7fH+XbtoL91y+IxWtlzUxnjK3rsliXvJR3XlvqxFJfZ16y7 O842aXLn9fb5
56X2ael1W9IxkbxgAY4qFEjfvBlZO3fiqEKBhFmzTPJsKeaS+iOiR4wQEVGV tdXHRxL79Jar
depIrItrqetHOzvLOSdnufiUv2z18Sl1/SOAnPH2LrbsiFIpyR99JEc1Gjle rZqIiCS89ZYc
d3SUzB07JOPHH+WYvb0kvPmm2TaPAJIYGSmxY8fKEUASZs2S8wEBcgSQpA8+ kLRNm+QIIOd8
fSUvNlaOAHLKw0Py4uJKjKEklwcOlPzERLk+b54cAeRS796S8X//J5d6977T 7/vvlxifuTgM
bVoae8Jbb8kRQOIiIiT9++/lRK1aEjNkSLHcFn1sNj8dO8oRQNK//VYyfvxR TtSuLae9vErM
uyG+Yu2OHn2n3b/XK9z/GW9vOVLo3wdzcSbOmSNHAIkdO1YSIyONbZtT2XNT WeMzp6S8l3Rc
W+rHUlzmXrNHVSr5a+lSOarRyImaNUvt09zrpbRjQl9QIOfatJEzjRvLuSef lDM+PqLLyTHJ
s6WYS+qPiB4tnAJNVAZ6vR4KhQKKSnwtFZE5N69cgfLJNnemPZfhWkbt39cF K6ytjB+TVB6a
Bg1Qe8IEpCxZgtwLF+7Esm8fdNnZuNit2z/x7d1rdnsrV1c8/vrr0GVkIHXl SmT+9BN89u9H
xnff4faxY8j66ac7r83sbFjXrw8AUGo0sK5Xr8QYLL4ZXFAA7Y0bsHr8caRv 3gwAqL9qFdS1
asHe1xcZW7YgffNmuEybZjG+Ou+8YxJH4TYtjV339xm6Ou++C5WTE2waNzZ7 Vrws+dE0bAgA
iJswAU5BQXCbOxfV+/bF5X79zPZdOL6i7WrT05G6ejUyf/yxXNNFM7duBQDU ff99qJydkbJ0
KQqSkwEA+deuGc9MWtetW+lzUxnjK0/eSzqulfb2ZvuxqlPHbFzmWHt64rGX XkLyokXIu3ix
1D4Nr6Wir9uSflcoZs+Gx+rV+NPXF6LTwfu336C0sTHNr4WYVdWrW+yPiB4t LICJSqHT6fD6
66/j9ddfh62tLZRKXjlAD91BjAKtFiqU7Q0cvV53z10qVKq/H/zTp9LODjY+ Pmj43Xf/LLO1
LaWhO9srlErEjhqFtC++QJ3Zs/H4m28ia9euu47B4hsFv/8Oh7+nSBbt21gk 6/UlxldSm5bG
ftlQTJT3zbVC/Xtu2IDHwsKQtXs3snftwo3PP0fyggXQNGxotu+SxmwYj8m4 /n4DxTAVvMQ3
FAy5Moyr0Piujh2LrB07AACNtm+v9LmpjPGVJ+8lHdeWxmhVt67ZuJr++afF 15u510KZXkuF
lPS7QgoK7hyLInceF2Epl+ZiJqJHE/+TJypFfn4+5s2bh6lTpyIjIwP6Uv5w E1UmDp6e0GZl
QqW+835nTK3HEFPrMVyoVs34dd7JEX86V8M5B4d/iuCbN+Hg6XlfY3Hu0QN5 ly4h5/Rp5F64
gPPt2yNtwwaz6xYkJeH6e+8hfvr0O9uGhCD33DkAgMbLy1hAmdT5WVnIi4kp V2yZP/4I5x49
AADV+/UzFmqZ27fj6tixd5YPGFBifEXjKNympbEbrr9NmDYNGd9/j+iOHfHX 4sWlxmuu/8u9
euHapElwDAw0npXUZWRY7LtwfMZ2r19H0ty5/7TbuzeAO9d558fFIWXZMuSX YWaA83PP3RnX
q6/i+rvvoiApyfhco59+QhsRtBGBU3Bwpc9NZYyvPHkv6bi21I+luMqqLK8l c69bS/FIfj5i
R46EjY8P7Nu3x9XRo4tdX15azPfye4KIqgjOAicq2c2bNwWA1KlTR8aPHy9p aWmi0+mYGHoo
RIWHy4U2beRKY2+JqVVLop2djV/nnJzlT0cH+dPRQU7b2shZe/s7311c5GTD hhIVHl7ua4DN
XS+qLyiQuAkT5JiDgxx3cpK4iRNFn5dnts1T9evL+Q4d5JiNjcSOGiX63FzJ 2LZNTtWrJ8ds
bOTa5MlyzM5Ojjs5SUFqqlwZOVKOqtVyuV+/Uq9ZNXvtc6dOIn+/rvVarSS8 9ZacqltXjqpU
cqpePUmMjBS9VltifCJiEodJmxbGrsvJkavjx8uJGjXkqJWVXOzeXQqSk0u9 jtRc/7eOHjUu
O6JUytmWLSXr118t9l04PmO7devKuTZt5JitrcSOHWvcPymrV8uJGjXktJeX nHRzK/UaYN2t
W3Jl6FA5qtHI2ebN5aSrq8V9UNlzUxnjs6SkvJd0XFvqx1JcJf0eMHnNl/Ja Kvq6Le2YMFx3
nbF1q2Tv3XvnGuxJk0xiKClmS/0R0aNFIXIPH3hI9Ai4desWHBwccOnSJTz1 1FMYMWIEXnvt
NTg5OXE6NFV6qVFRiAoKQqugIOQfPAitVmu8FlgngEJ00OvFZNqzTdNm+PP0 aTy1d6/Zj0H6
tx1VKGDj7Y2m589XypxWdHyVPT+P8r7hviMiqvz43ztRGTVo0AB79+7F6tWr 8eGHHyI7Oxt8
/4gqu1p+fnhs2DDc+PNPqJ54AiIC3d+Hrei0EIXKpPhVeTVCVmIiXEaOrJDi l4iIiOjfxDPA
RKUwnAHOz8+HlZUVTp48iU6dOuHVV1/FSy+9BEdHR94dmiq9X7t3R82LF+Hc oAHyLlyANjUV
wD83vFI6OcO6Xj1kJSYis0ULBG7fzqQRERERC2CiR7UAzsnJgUajgUKhwKFD h/Dss89i9uzZ
GD16NBwcHFgEU6V3aNw4pKxfjwb1PaC2s4XSwQGSXwDJz0N+ejpiEhLgMnIk 2i1bxmQRERER
C2CiR7kAzs7OhkajgZWVFQDg999/R0hICObNm4cXXngB9vb2LIKp0kuNikLM unVI3rPH+Dm/
Dp6ecOnUCQ1GjOC0ZyIiImIBTMQC2AEZGRnQaDTGs8AAsGvXLvTr1w+LFy/G gAEDYGdnxyKY
iIiIiKiSUjMFRGWj1WqhVquh0+mg/vszVbt06YINGzZgyJAh0Gg06N27N2xt bVkEExERERFV
QrwLNFEZ6XQ6aLVak4+RAYAePXpg5cqVeOmll7Bjxw7k5uby7tBERERERJUQ zwAT3UUBXPjL
cBYYAAYMGIDc3FyMGTMG69evR+fOnU2mShMRERERUcXjNcBEpTBcAxwXF2e8 Blij0cDa2hot
W7ZETEyMcd2cnBxUr14d27ZtQ7t27UyKZCIiIiIiqlj875yojAxnfq9fv44/ /vgDw4cPx5gx
Y/Dpp58iIiICzs7OUCqV0Gg0sLW1LXaWmIiqnl27dqFLly4Vtj0RERHdHV4D TFRGWq0W8fHx
6Nq1K6ZMmYKMjAyMHTsWycnJUKvVCAoKwnPPPYcuXbrAx8fH+HFJRBWpX79+ +P333wEAn3zy
Cfz9/Y3PNWrUqNJP01coFAgODjZ+WVoHAF5//fX70ufdtPPss8+WGHvh7yVt f79iL+/YeLkG
ERGxACYiEwkJCejTpw9atmyJJk2a4OOPP4a1tTUmTpyIL774AiICR0dHODk5 wdbWFkolX15U
8bp27Yq9e/cCAH7++WdYW1sjJSUF165dg4uLCwBgwoQJCAwMRFhYGADgwIED 6Ny5M7p3745t
27YZC6QJEyZgzZo1Zp83GDhwIOLi4gAAnTt3xs6dOxEQEIC+ffvi6aefxpEj R0yKrcJFoqH9
on766SfjFwAcOnQITz/9NEJCQjB16lTjeu+++66xrYiICPTs2RN+fn44cuQI Zs+ejaCgIAQG
BmL69OkljqFwO7NmzUJgYCDCw8MBoFg7ABAeHo7w8HD4+fkhMDAQL774otl9 MXPmTLPrhIeH
G/s8fPiw2XwVjaNw/kraL0XjLdyPn58fevbsiWHDhlnc7+bGS0RE9FATIirR zZs3BYC4urpK
v379ZOfOnbJlyxapXr263LhxQ9LT08XJyUm2bt0qOTk5TBhVKleuXJFnn31W bt++LcHBwbJ8
+XL57LPP5H//+5+8/fbbAkCio6MlJydHDH8SWrduLfHx8aLT6eT555+Xv+8V IUeOHLH4vMGm
TZtk0aJFEhcXJ3369JFmzZrJb7/9JiIi+/btkxYtWkjhPz2Gx4XbLwyAyZeI SIsWLeTw4cMi
IjJr1iyTNgzf9+7dKyIiO3fulFatWolGo5HLly9Lfn6+LF26tMQxFG4nOjpa bt++bVxWtB3D
8tmzZ8u1a9ckMzPTbDxlXcdSvorGUTjWkvaLpXibNWsmv/zyi4iI/PLLLwKg TNsTERE97HgT
LKJS3Lp1C46OjnjhhRcwcuRItGjRAhqNBr169UKnTp0wa9YsBAUFoX379pgx YwaqV6/OpFGl
0qZNG7z55puIjo7G4MGDMWXKFNSoUQPDhw+Hv78/9Ho9FAoFFAoFRMT4edcA oFQqodPpoFAo
jOuZe94gOzsb/fv3R9euXVGnTh0MHToUOTk5sLKyQn5+Puzt7Y0fJSYiUCqV EBGT9oue4Sz6
Z0qtViM3N9d4jb1hncLf8/PzTfpcv349VqxYgZycHIwdOxZhYWEWx1C4naK5 2bhxo0k7Y8aM
gYhg5cqV+OGHH+Di4oKVK1cWi6es66jVarP5KhpH4VhL2i+W4i3aj0ajgUql KnX70aNH8wVF
REQ8A0xUld2+fVtmz54tR44ckRs3bohOpxOdTie7d+8WJycn6dy5s9SsWVMW L14saWlpTBhV
OhEREdKmTRs5ffq0iIg8/fTT0rZtWykoKDB7Ntbd3V2SkpJEr9fL119/bfKc pecL69u3r7Rq
1Uqys7OladOm8scffxjPaDZv3lwASE5Ojly4cKHYGVBzZ4CL8vHxkePHj4uI yKRJk0o8A7x7
925p1qyZTJ8+XfR6vcTHx4uNjU2JYzAXk+Fx0XYAiF6vFxsbG8nIyJC0tDSL Z3ctraPX640/
W8qXpXyUtl/MxWs4i244A7xnzx4BUKbtiYiIHna8RS1RKaytrTF58mSo1Wpo NBrjtb3+/v7Y
sGEDdu7cidDQUAQEBMDe3p4Jo0qnW7du2Lp1K5o2bQoAePrpp3HmzBmLdylf smQJ+vfvDycn
J/Tr1++un+/Zsye2b98OBwcHrFmzBlOnTkWtWrVw48YNrFmzBp9++imCg4PR tm3bMsVf9OZX
K1asQEREBKpXr44mTZqY3WbVqlVYsGABkpOTsXr1anz33XcICgqCQqHA9OnT 4evrW+IYLFEq
lSbtfPnllwgNDUXPnj0RGhqKhg0bolGjRti4cWOxbYcPH15sHW9vb4SGhhrX MZevsubJ3H4p
Gm9kZKQxPxEREahduzbc3NzKvD0REdHDjlOgicrAMEWx6LL8/Hzcvn0bAGBv bw8rKyveTZUe
aXq9HlOmTEFAQMBdFZb39Q+bmWnTRERERADvAk1U5n+ozS3TaDSoXr06qlev Dmtraxa/9Mh7
++23sW/fPoSEhFRYDN26deOOICIi3Adb3wAAHLxJREFUIvP/1/MMMBERERER ET0KeAaYiIiI
iIiIWAATERERERERsQAmIiIiIiIiYgFMRERERERExAKYiIiIiIiIiAUwERER EREREQtgIiIi
IiIiIhbARERERERERJapmQIiIiIiIiKqTC5fu4FvfzmDg6fjEB2bAgDw9ngM 7Zu74/mgZmhY
r2a52lWIiDC9RERVU0ZqErQFBcjPz4NOrwP4G5+IiIgqggJQKVXQaGygUqtR rZarxVU/+eoA
1mw5jEHdWqG1Tx20aPw4AODUhes4Hp2IjT+dwKjebfHSwKdYABMR0T/SkhOQ kpKMPbt3IOFa
HHQ6HZNCRERED5xKpYJbPXcE9+iL6jVrwqn6Y2bX6/fK53Cyt8HcCcHYdywG u6Mu42xMMgCg
aQMXdPZrCP+WHnhr+c/IyM7FNx8MZQFMVJVcvnwZXl5emD59OubPn2/5xaxQ wNzL2bDc8D0i
IgJLliy5rzGa6/vUqVOYMGEC4uPjodVq8cQTT2Dx4sVo3LhxuWK4X3ErFAq4 uLgAAAoKCuDu
7o5169ahZcuWFbqf/439AgCJsf/f3p3HR1Ud/B//zpIVCAn7ZiASksi+FrWI ylMBZVHAij71
QUGWCIjggiIKJtIH2QVKwABpARGX2qelPBYQUhCVsoiFimyyGMJqIAmaBJKZ e35/+Ms02wwh
jyEhfN6v133lzr3nnHvumZmEL+femW/1t3X/o0bhEerQ5Q7Z7Q7eVAAA4Lqz LLe+/udupZ44
pkceH6bgGjWLlUn4YLv2HjqjuKfv03Nz1uliZrYmPXWvWjWvL5fL0pYvj+nd v/1T9WvX0LQx
PfXy/L+pS6sm1zQTTAAGKrn4+Hht3LhRKSkpOnHihOx2e5kC8OXLlxUYGOi1 3M8dgFu1aqWE
hATdfffdMsZo+fLlSkhI0J49e8rUh5+r36GhocrIyJAkGWO0YsUKLVu2TJ99 9lmFPs/l8bxI
0snjh7R00Vsa/fyratCwMW8oAABQYdxul+JeekaT4mYqqFqNQvuOnrygwS+v 1rr5Q/Xs7L9q
579S1Lf7bVr40oM6cPy86oZVU53QakredVSTEzap022N9drwe9TnmSS9/+Zv Sn1PMJ8CDVRi
xhitXr1a06dPl91u94S0tLQ0DRw4UI0aNVKLFi00efJkn9slKSgoSEOGDJEk 3XPPPUpLS9Mj
jzyiiIgINW/eXIMHD1ZaWponjE2cOFERERGaNGmSJGn16tWKiYlRVFSUmjZt qunTp/vse2pq
qiIjIz3tDR06VGPHji3UB19t2mw2zZw5U+3bty9UJ39fwXIF11944QVFRESo c+fO+vbbb68a
Oh999FEdPHiw1H25Wrnx48erWbNmGjt2rAYPHqxmzZppwoQJkqTMzEz17dtX kZGR6tGjh86d
++lynoLn561M0X588MEHatOmjaKjoxUZGanly5d7eRFJbrebmV8AAFDhHA6n 19ux/pT8tf6r
T0d9uueYdv4rRZJ0/HS6+o9focdf+1DjZq2TJHXvGKGQGkE6+F2avjp0RsMe 7KI/JX9d6j4Q
gIFKbPfu3crOztYvf/lLDRgwQKtXr5YkxcbGqkmTJkpJSdHBgwd1+fJln9vz rVy5UpK0ZcsW
Pf3004qIiNDRo0d15MgRRUREaMyYMZ6yvXr10hdffKHZs2dLkubPn6/4+Hgd PnxYO3bs0Guv
veaz71OmTFG7du3Up08fzZkzRwcOHNCwYcMK9eFqbTqdTu3Zs6dQnauJiIjQ 8ePH9dhjj2nc
uHE+y165ckULFy5UVFRUqftytXKPPvqoduzYoUWLFmnChAnavn2759LmKVOm qGfPnvr22281
ePBgPf/888WeF29livZj2LBh+utf/6pDhw5py5YtWrt2LW8YAABww/rHv1LU PrqRNu84KkkK
8Hcq5WymzlzMUlCgv9pHN5IkXcjMlp+fU8FBAfrqyDl1uK2x/vH/A3NpcAk0 UImNHz9eTqdT
s2fP1rZt2/Tggw/q7NmzCgsL08mTJ1WrVi1J0sWLF1W7dm0FBweXuL3gPcD5 P6tXr67U1FSF
hoZKktLT09W0aVNdunRJNptNV65ckb+/v6e8y+XS1q1bdeDAAe3du1fLli3z XLLr7fLdnJwc
bd++XcnJyVq1apUee+wxvfnmm6VuMysrS8HBwcWO4Wv9hx9+UPXq1ZWZmalG jRopKyur8C+9
AjPGkhQTE6P33ntPrVq1KlVfrtZny7Jks9mKrRtjFB4erv3796tGjRrKy8tT RESEUlNTC53H
1crk96N///5KT09Xnz59dOedd6pbt24lXh5/8tghLVk4R8++HK969RvwpgIA ABVq8oSRenXa
nGKXQLd+eK62LBulB8YmKePHywr0d8o/wF+BAf7qGNNYcyf0ltNh1xtJn2rf 0e9lt9tUv2ag
4mP/Q92eXKSv//hcqY7PDDBQSblcLq1Zs0Zz5syRzWZT9+7dlZ6ervXr13tC VdFQ5217SfLD
cMGyBS9J8ff3L1S+b9++eu+999S0aVPPZdG+DBo0SHa7XT169NC0adO0a9cu vfXWW9fUZn74
9SY3N9frPm+hvGbNmjLGeJYDBw6oXbt2pe7L1cr5Gv/Tp08rJCRENptN/v7+ On36dLH6VyuT
34+//OUvWrBggWrUqKEZM2aoV69evGkAAMANy27P//es5O90yM//p/AbGOCn V568S06HXSs+
3quDKekKDvJX9eAABQYF/lTXUfpbvQjAQCW1efNmORwO5ebmesLamDFj9O67 7+qBBx7Q66+/
LpfLJbfbrWnTpkmS1+0lhd/7779fM2bMkGVZsixLb775pvr06eO1P1u3btX0 6dPVr18/HT9+
3NOON+fOndPs2bPldrtljFFycrJatWpVqA/X2mb+PofDofPnz2vbtm3FyuRf TpyUlKTu3buX
erxL25dr7XNBERER2rt3r4wxOnHihBYtWlTs/K5WJl/btm3VoEEDjRkzRosX L9bOnTt50wAA
gBtWVHgd7T96Tp1aNZXd4VBQoL9sNimkeqBOfv+Ddh04rU/3piowwKmgwAAF BvorKryOjqZe
VEyzOgRg4Eb3zjvvKDY2Vn5+fp5to0aN0tq1azVjxgylpKQoPDxcMTExqlev niQpISGhxO0F
tWvXTh07dtSSJUt0+PBhRUZGKjIyUseOHdPixYu99ic+Pl5du3bVnXfeqQ0b Nqh9+/aaOHGi
z/5v27ZNDRo0UMOGDZWYmKh33nmnUB+upc38OpI0YcIEde3aVevWrStW7ssv v1SzZs20cuVK
LVy4sNTjXdq+XOs4FPSHP/xBQ4YMUUxMjPr166eoqKhi5+erTEEvvvii7rrr LkVHR6t3795a
unQpbxoAAHDDuqNtU/3z0Gn9qsut8vNzSpKCAgNks9v1+b6T2nngjBwOh4KC AhQY8NM9wB1a
1NXXx86rS8smpT4O9wADqDLK66uEbmTcAwwAACoTb/cAF/wapPhlf9eBE2kK CvRXw7o1tXxy
P0nS+IXJcjid8vdzqkWTMPW/PVz3j1uh9347mK9BAgAAAADcGJrfUlvDHuyi uMRPNGX4veoY
00hOp0MOx78/U8XP76fwGxNeSwO73arpf9imp/p1LHX4lSQnQw2gqjhy5AiD AAAAcIMa/cgd
euTFdxSX+Ilej+2pfd+e195vz+u5BZsUGOiv1rfWU+vwmmrepJb+e/nfdeZc uuaM731Nx2AG
GECVERkZySAAAADcwD6Y9bjaRDZUn2eS9N3pi7q3Y1NNGXaXJv5nV3W4NUyH Uy6o19OJataw
pt6d/tg1t88MMAAAAACg0hj9yB3qdUeU/vz3/Zrx+2QdPH5ektTq1vrqeFtj vfvf/3lNlz0T
gAEAAAAAlVbzW2rr+SHdf/Z2uQQaAAAAAHBTIAADAAAAAAjAAAAAAAAQgAEA AAAAIAADAAAA
AEAABgAAAACAAAwAAAAAAAEYAAAAAAACMAAAAAAABGAAAAAAAAEYAAAAAAAC MAAAAAAABGAA
AAAAAAjAAAAAAAAQgAEAAAAAIAADAAAAAEAABgAAAACAAAwAAAAAAAEYAAAA AEAABgAAAACA
AAwAAAAAAAEYAAAAAAACMAAAAAAABGAAAAAAAAjAAAAAAAAQgAEAAAAAIAAD AAAAAEAABgAA
AAAQgAEAAAAAIAADAAAAAEAABgAAAACAAAwAAAAAAAEYAAAAAAACMAAAAAAA BGAAAAAAAAjA
AAAAAAAQgAEAAAAABGAAAAAAAAjAAAAAAAAQgAEAAAAAIAADAAAAAEAABgAA AACAAAwAAAAA
AAEYAAAAAAACMAAAAAAABGAAAAAAAAEYAAAAAAACMAAAAAAABGAAAAAAAAjA AAAAAAAQgAEA
AAAAIAADAAAAAEAABgAAAACAAAwAAAAAAAEYAAAAAEAABgAAAACAAAwAAAAA AAEYAAAAAAAC
MAAAAAAABGAAAAAAAAjAAAAAAAAQgAEAAAAAIAADAAAAAEAABgAAAAAQgAEA AAAAIAADAAAA
AEAABgAAAACAAAwAAAAAAAEYAAAAAAACMAAAAAAABGAAAAAAAAjAAAAAAAAQ gAEAAAAABGAA
AAAAAAjAAAAAAAAQgAEAAAAAIAADAK4rm+RwOGRZbsYCAABUKLfbJYfDQQAG AJQPh92hphGR
+vqfu+V2uxgQAABQYeH3sy2bdGvzKJkK/I95mzHG8HQAQNV04WyqfvzxR234 +C9KTTkht5uZ
YAAAcP05HA7d0jRC/Qc9pqDAQIXUqksABgD8vDLSzsrucMjp9JfNzkU/AACg 4hjLksuVK8vt
VmidBhXSBydPAwBUXbv2faXOHW6X22VJshgQAABQwZzavW+37utxPwEYAAAA 5S9x2eLrdqyR
w59mwAFUovgNAACAmwqhFAABGAAAADcFZoABEIABAABwUyCUAiAAAwCqpN1f /YNBAAAAEF+D
BAAAAAC4SfClkAAAAAAAAjAAAAAAAARgAAAAAAAIwAAAAAAAEIABAAAAACAA AwAAAABAAAYA
AAAAgAAMAAAAAAABGABwnW3atKnK9vtGPTcAAAjAAIAqzWazqXfv3urVq5e6 dOmiSZMmXZfj
3nfffTfUGF1Lv/PLFKx3rccpj75XBn/+8581aNAgGWNkWZYeeOABbdmy5Zrb 6dq1q7p166Zu
3bpp1qxZkqSsrCxFRUV5yhhjNGLECPXt21ddu3bVqlWreMMDAHxyMgQAUPWt X79exhjt379f
nTt3liQlJycrODhYLVq0UGJiomw2m8aOHasOHTroyJEjJe5/8cUXtWPHDtWv X1/BwcE6fvy4
mjdvrhEjRujVV1+Vv7+/Ro8erX79+kmSYmNj1b9/f82ZM6fQvoLHOnnypLZu 3SpjjLp06aKZ
M2d6gt2YMWP03Xff6fz581q0aJE++uijYv2Ki4srVL9atWqFHg8YMKBY33bt 2qWxY8eqXr16
CgsLKzZesbGxGjhwoN544w3VqVNHFy5c0Ny5cz1jl19Gkp555hl9/fXXioqK 0ttvv63t27eX
OBYFTZo0qcTxNcZ4zt0YI5vNpldeeUVffPGFoqOjtWTJEu3cuVMvvPCCQkJC FB0dXeo+FBzz
YcOGFeqPrz5v3LhRr7/+ulq2bKnly5d7+ujNQw89pM2bN2vlypXKzMzU7bff rnvuucfn66dl
y5aqVauW+vXrpyeeeEJr165VaGioNmzY4Gl3586dmjlzpo4cOeLZtmfPHuXk 5GjdunU6e/as
oqKiNGTIEK/HSUpK4pcBANzsDACgSpPkWapXr25mzZpl4uLizMmTJ01mZqbJ /1MgyezevdsY
Y7zuP3XqlMnOzi623qFDB5OammrcbrcZOHCgp7wxxuu+/GMFBASYo0ePmtzc XLNo0aJC/d66
dasxxphPPvnEtG/fvsR+Fa1f9HFJx2/durVJTk42xhiTnJxsCv45zF9v3bq1 2bZtmzHGmE8/
/dS0bdu2WBlJ5tChQyYnJ8fn+Rat5218vbWfP87GGNO2bVuza9cuY4wxkydP LnUfCo55Ub76
HBMTYw4cOGC++eYbU9p/NuTk5Jhu3bqZ+++/37hcrqu+fvLy8syvfvUr8+ij j5p9+/aZM2fO
mPDwcBMSEmKaNm1qPv7442JjY4wxly9fNpcuXTLGGPP++++brl27+jwOAAA2 c7X/ygUA3NAK
zizmW7p0qdatW6f69etr6dKlntlGy7Jks9m87i86Q5m/7nA45Ha7JUl2u11u t9tTxul0lrgv
/1hr1qxRYmKicnJyNGLECD311FOednNzc+Xn56fc3FxVq1ZNCQkJxfpVtH5w cHChx6NGjSp2
fKfTqZycHE/bAQEBxc6taJlq1aopLy+v2Axt/nn4Ot+iz4Wv8TXGyG63+2z/ 8uXLcjqdnjZL
04eC5Yry1WeHw6Hc3FwZY+Tn51fiDHB+m2fOnFGDBg104cIF9e3bV06nUxs2 bFBwcLDP148x
RklJSXr//fe1YcMGnT9/Xhs3btSvf/1rrV+/XqNHj9apU6dKfD2npKRo4sSJ qlGjhqZPn666
dev6PA4AgBlgAEAVnwEuKjAw0GRkZJiLFy+WOAN5tf1F18PDw83Zs2eNZVnm ww8/9Gy3LMvr
vnwTJ040lmWZ1NRUExgYWOIM8ObNm03r1q1L7FfR+kUfl3T8tm3bemaAt2zZ Uux8LMsyrVq1
Mp9//rlnBrhNmzbFypQ0JiUdr2gZb+Obk5NjDh8+7HPMY2JizFdffWWMMebZ Z58tdR98/cn3
1efIyEhz8OBBc/DgwVLNolqWZfr372+Sk5PN6tWrzciRI6/6+snOzjY9e/Y0 Q4cONdu2bTP7
9u3zPD9nzpwxtWvXLrHuxYsXTY8ePczhw4e9tu3rfQAAuPlwDzAA3ISeeOIJ DR48WM2bN1eL
Fi20Zs2aa9pf1O9+9zs9/PDDCgkJ0aBBgyRJ0dHRGjx4sOLj44vtK8hut6tH jx6y2WyaOHFi
oX3Lli3TrFmzdO7cOS1fvlxJSUnF+lW0fm5ubqHHnTt3Lnb8ZcuWee4Bbty4 caFj5vd79uzZ
eumllzz3ABe8fzS/TGnHojTjP3z4cPXu3VtdunTxOdaJiYkaO3aswsLCdNtt t5W5D3Xq1FFa
WprP8nXq1NGKFSs0ZMgQderUSXa7vcT6Bc2bN0/R0dG69957JUnr1q3TBx98 4POc4uPjNW7c
ON1+++16+OGH9cc//lFTpkzRvHnzlJ6e7vXe3Q0bNujIkSMaOnQob2oAQKlw CTQAoHL+geKS
1XK1detW3X333VctN3nyZA0YMECXL1/WkCFDdOzYMQYPAHDDYgYYAFAp9erV i0EoR6UJv5J0
xx13qGfPnrLZbFq0aBEDBwC4oTEDDAAAAAC4KdgZAgAAAAAAARgAAAAAAAIw AAAAAAAEYAAA
AAAACMAAAAAAABCAAQAAAAAgAAMAAAAAQAAGAAAAAMArJ0MAAAAAAOUnLi6O QZA0depUAjAA
AAAAVOXwWxmCH2PxEy6BBgAAAADcFAjAAAAAAAACMAAAAAAAVQX3AAMAAABA OTLGMAiVBDPA
AAAAAICbAjPAAAAAAFCOLMtiEAjAAAAAAFD1VbZLoP38/JSXl0cABgAAAABU jgDs7++v3Nxc
n/t8lbmRQjkBGAAAAABu4gDsq+6VK1dkjPH8JACXDh+CBQAAAADlyO22yrR4 q7t795fq1Kmz
qlWrpk6dOmvPnq/kdluKj39DjRo1UkBAgAICAuR2W9qz5yv94he/UHBwsGeb JE2b9lvVrVtP
DRs21MqVq+R2W9q//xt1795d1atXV+vWrfXZZ5/L7bYUEBBQYvmynA8BGAAA AACqMMtYZVq8
1R05coSefPIJnTp9Wk8++YRGjBguy1iaN2+u4uLj9X1amn7MypJlLI0YMVy/ +c1vdP777z3b
JCk0tKaOHjuq5UlJmjTpZU/ZYU89pbPnzmnGzJmKjR3ls3xZzqei2QxfSgUA AAAA5SIuLk4T
nnuuTHVrhoQo89KlYttr16ql1FOnFBQUpOzsbN3SpIkuXLyoDz/8UG8vWaJD hw4p9umnNXny
5EJlC7abnpEhu91e6Di1a9WSy+X6d1i02ZSRmem1/LWaN3eupk6dWqHPBzPA AAAAAFCOLMsq
0+KtbosWLfTu6tXKysrSyhUrFB0dLcuyNGjQIG385BOt+9//1fz582VZlmJi YvT73/9eOTk5
hdot2Hb+eps2bZSweLFOnzmj9IwMXUxP91m+LOdT0QjAAAAAAFCO3C53mRZJ CgsNLbS4XW7N
n79AS5cuVfgtt2jFihVasGCh3C63p8yAhx7ShPET5Ha5tWDBQr2zapUaNmjg qV+0T/mP3347
Ue+tWaOIZs0KHc9b+bKcT0XjEmgAAAAAKCdxcXGKHT2agZC0JCGhwi+B5muQ AAAAAKAcuQvc
V4uKRQAGAAAAgHLkqiSX/4IADAAAAADlKi+PGWACMAAAAADcBFx5eQxCJcGn QAMAAAAAbgp8
CjQAAAAAlKO4uDgGQarwT4AmAAMAAAAAbhpcAg0AAAAAIAADAAAAAEAABgAA AACAAAwAAAAA
AAEYAAAAAAACMAAAAAAA5cHJEAAVh++E+7+rDN8nBwAAAAIwgKuEX8Ib4wgA AIDrh0ugAQAA
AAAEYAAAAAAACMAAAAAAANxAuAcYqEDGGAYBAAAAuE6YAQYAAAAA3BSYAQYq kGVZDAIAAABw
nTADDFQgY0y5LE6n82dtb/r06QoKCvrZ2/05FgAAAKC0mAEGKjgAl4W/v79y c3O9bsvNzf1Z
w+H8+fN16NAhNWnSRMYYz7FK6gcAAABAAAbwswVgb3XLa0Y0LS1NjRs39rR/ 5coVGWM8PwEA
AIAbAZdAAxXI7bbKtJRUt+C2gIAAz89p036runXrqWHDhlq5cpVne8GlYJ2S 2pB01XJffLFd
LVu2VFhYmF555RXP9v37v1H37t1VvXp1tW7dWp999rnPvpVlLAAAAAACMFDJ WcYq0yJJwcFB
hZaC7eWvS1JoaE0dPXZUy5OSNGnSy7KMpR+zsvRjVpbeeustDR8xolCdom38 mJUlSfoxK8tn
uTFjRuuZceN04rvv1KRJE8/2ESOGa9hTT+nsuXOaMXOmYmNH+exbWcYCAAAA KA2b4fpFoELE
xcVpwnPPlaluzZAQZV665HVb/nrNkBClZ2TIbrcXK/Onjz7S7NmztTk5WUFB QYX2WZalsNDQ
Yu0VXS9YrlZYmE6dPq2goCDl5OSoQf36yrx0SbVr1ZLL5fr3Lx2bTRmZmT77 di3mzZ2rqVOn
8oICAADAVTEDDFQgy7LKtJRUt+C2/PWix8lf37Rpk8aNG6fEpUsVEBAgy7JU u3ZtfbJxo7Kz
s7U0MbHEer7KRUVF6d3Vq5Wdna13Vq3ybG/Tpo0SFi/W6TNnlJ6RoYvp6T77 VpaxAAAAAAjA
QCXndrnLtJRUt+C2/PWi5fIf/9fjj+uHH37QL++8U2GhoXK73IqLi9fIkSMV HRWljIzMEtvz
VW7u3HlauHChbo2I0OHDh+Xv7y+3y623307Ue2vWKKJZM4WFhnqO561vZRkL AAAAoDS4BBqo
IHFxcYodPbrKnVdebq6WLVumtWvX6m/r15f78ZYkJHAJNAAAAEqFr0ECKpC7 wL2xVUHjRo1k
s9kUERGhBQsWVLnzAwAAAAEYQBm5qtglvN+lnKzS5wcAAAACMIAyystjhhQA AAAgAAM3AVde
HoMAAAAAXCd8CBZQgeLi4hiE/yM+AAsAAAAEYAAAAAAACuB7gAEAAAAABGAA AAAAAAjAAAAA
AAAQgAEAAAAAIAADAAAAAEAABgAAAACAAAwAAAAAAAEYAAAAAADv/h+fSRb9 NNMvPwAAAABJ
RU5ErkJggg==
--------------060907000103050402080508
Content-Type: image/png;
name="projectConfig.png"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="projectConfig.png"

iVBORw0KGgoAAAANSUhEUgAAA8wAAAD6CAYAAAB0485DAAAAAXNSR0IArs4c 6QAAAAZiS0dE
AP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kBFxQp A88rZCwAAAAZ
dEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAgAElEQVR42uzd d3gU5drH8d8m
QEhoFgwlEBKIhCYdEhJ6EekgCCgKCCIgCKKhC0jRBDgKqFSlKChF5AiiyBFe pUg/9CIWeoBA
6FWS3ef9A3dPNtlNQgiRwPeTa66dnXnmKfdMcuXeKWsxxhgBAAAAAAAnHoQA AAAAAIAUEmaL
xeI0+fj4qHHjxjp27FiKFVksFpUoUSLJfEIlSpSQxWJJsrxv377y8PDQ2bNn HcuaN2+uvHnz
Ki4uLtWD6dKli7Jly6amTZumuq8AAAAAAKSYMEtS/vz5NXv2bM2aNUvdu3fX ihUr1L179xQr
mj17tiIjI9PUibZt28oYox9++EGSdPPmTa1evVpt2rRR1qxZU13P7Nmz5evr q8mTJ7NnAQAA
AADpmzDnyZNHnTt3dkySlDNnTknOZ2YTny2OiIjQ2LFjneq6deuWunfvrhw5 cqhq1aq6du2a
y05Uq1ZNhQoV0vLlyyVJa9eu1fXr19W+fXvduHFDXbp0Ua5cuZQnTx716NFD N2/edPQnODhY
3bt3d/QlOjpanTp10s6dO1WjRg35+PgoW7ZsKl++vNasWeNo88aNGypdurR8 fX31+eefO5Yn
rLNJkybJtu3v76+SJUvK19dXc+fO5WgCAAAAgAc5YT548KAsFos8PDxUvnx5 1alTR1988UWK
FZ07d04XL150WjZu3DjNmDFDHTp0ULNmzXTixAnXnfDw0HPPPaeVK1cqLi5O 3333nQoUKKAa
NWpo7NixWrx4sb7++mvNnz9f8+bNczqT/ccff+jYsWN6++23JUkBAQH6/PPP 1adPH61fv16j
R4/W3LlztWvXLkVERDi2O3HihHr06KHLly+rb9++Tv2x17l3795k2z558qRe f/11Xb58Wf36
9eNoAgAAAIAHOWEOCAjQgQMHtH//fn366af66aefFBUVlabKly1b5kic3377 beXLl89t2Xbt
2unSpUv65Zdf9P3336tt27by9PTU2rVrdeXKFTVs2FBNmjTRtWvXnM4U+/r6 6rvvvtPo0aMl
SV5eXvL399eqVau0YMECnTlzRp9++qkk6cqVK47tihYtqtdff11FihRJkujb 6yxWrFiybQcG
Buq1116Tv7+/zp07x9EEAAAAAA9ywuzl5aUSJUqoZMmSevHFFyVJixcvdqy3 fwuV1WpNsXKb
zSZJjsulXT3wy65q1aoqUqSIJkyYoD/++EPt27eXJPn4+KhEiRI6cOCAY/rs s88c2+XJk0ce
Hkkf9t2lSxe1b99eOXLk0PDhw5Os9/T0dNsne50ptW2vw1X7AAAAAIAHLGG+ dOmS5syZo9mz
Z+uNN96QJFWqVMmRSB47dkxTp07V4cOHU6y8cePGkqSBAwfq3Xff1enTp92W tVgsatu2rZYt
W6YiRYooJCREktSkSRP98ccf2rNnj3777TeFhobqyy+/TLHt/fv3S5KCgoK0 cuXKNAUnrW0D
AAAAADK/LIkXnD59Wi+//LKk22ebmzZtqnHjxkmSPvjgA/Xv318ffPCB8ufP r+jo6GQrHzRo
kI4cOaI5c+aoePHiyp8/f7JJc9u2bTV+/Hi1b9/ecea3W7duOnDggLp06SIP Dw917txZb731
VooDGzVqlF577TV17dpVPXv2lI+Pj06dOnVHl06ntW0AAAAAQOZnMfZrrAEA AAAAgAM33wIA
AAAAQMIMAAAAAAAJMwAAAAAAaeZ46FdyX/kEAAAAAMD96l49mivLvW4AAAAA AIDMiEuyAQAA
AAAgYQYAAAAAgIQZAAAAAAASZgAAAAAASJgBAAAAACBhBgAAAACAhBkAAAAA ABJmAAAAAABI
mAEAAAAAeBASZmOMduzcmup5AAAAAAAeioR523836dixY6meBwAAAADgQWIx xpgMachiSbKs
aNGiWrx4sSpUqHBP2vD29lbt2rU1bdo0+fv7p7nO4OBg/frrr//I9j169FC+ fPk0cuRIjlYA
AAAAyEAZekl2/vz5NXv2bM2aNUt9+vTRoUOHNGTIkHQdUMI2unfvrhUrVqh7 9+7/WIBnz56t
yMjING8/ffp0LVy4kCMVAAAAAO6XhPleXJKdJ08ede7cWS+//LLGjx8vSYqO jpZ0+0xsiRIl
JEklSpRwOltssVjk7++vkiVLytfXV3Pnzk2xDfskSTlz5ky2jVu3bqlfv37y 9fWVl5eXnn76
aZ08eTJJ3W+99ZYCAgK0b98+WSwWWSwW1ahRQ4899pjeffddBQUF6bHHHtPU qVMd20RERGjs
2LHJjmPv3r2qXbu2vL295e3trbCwMK1fv17Vq1eXJB08eFBNmzbVjRs31KVL F+XKlUt58uRR
jx49dPPmTUfdwcHB6t69u9q0acORDQAAAAB3y2QQSSYgIMAcOHDAHDhwwCxa tMhIMsOHD3es
Dw4ONsYYExwcbBJ2TZLx9PQ0kydPNl5eXubxxx9320biqU6dOuavv/5Kto0R I0YYSaZ3797m
m2++MXnz5jUdOnRw2mby5MkmS5Ys5ocffnDq09SpU02OHDmMJBMZGWly5Mhh cubM6dQne5vu
xlG9enUjySxZssR89913xtfX1wQFBZkjR4444nbs2DEzYsQIkytXLrNy5Urz 3XffmRw5cjjF
z8PDwzzzzDNm1qxZBgAAAABwl3msuxU2m81s37El1fOpSZgTT2XKlDGHDx9O VcIcFBRkjDHm
ySefNO7y/IRJ+f79+82nn35qJJmRI0cm20blypWNJHPp0iVjjDH79+8327dv d2zj4+NjPDw8
TNOmTZ3aevLJJ40xxhQvXtxIMlar1THvLmF2NY62bdsaScbPz8+89NJLZubM meb8+fNJtq9T
p06SGNaqVctRLn/+/MZqtXJUAwAAAEA6yNBLsoODg2WMkc1m0759+7R37151 7do14dluSZLV
ak2yraen5+1ryD2S/+poLy8vlShRQiVLltSLL74oSVq8eHGybdjnXT2YTJKu X7+u2rVra/ny
5dq0adP/rmf/uy/27Tw8PNzWkdw4vvzyS61evVqdOnXSwYMH1bVrV4WFhSXZ 1sfHRyVKlNCB
Awcc02effeZ0OXpK8QEAAAAApE4WdyuqVK52R/N3wmKxqFSpUpKkU6dOOZK9 Y8eOaerUqTp8
+HCaB3Tp0iXNmTNHxhht2bJFklSpUqVk22jUqJF27Nih/v3765lnnlHXrl3V rFkzzZkzR5JU
vHhxLVu2TEFBQerdu7c2b96crjuhefPmOnbsmCZMmKA6deqodevWunjxomP9 5cuXdejQITVp
0kR9+vTRnj175OXlpY4dO2rgwIEaPHgwRzIAAAAApLMMfUq2KzabTZL0wQcf yMfHRx988IHy
58+f5vpOnz6tl19+WV26dNHs2bPVtGlTjRs3Ltk2hg0bpl69eumrr75S27Zt FRIS4tjGnuDn
yJFDI0eO1H//+1/NmjUrXXfC6NGjlSdPHjVr1kwNGzZUYGCg5s+fL0l6+eWX dfbsWQ0YMEDd
unVTz5491aVLF7300kvq1KmT3nrrLY5iAAAAALgH3H4P89ZtG3Xy5Em1aN46 VfMAAAAAADwU
CTMAAAAAAA+zf/ySbAAAAAAAMlXCfC+ekg0AAAAAQGbBJdkAAAAAALjAl/YC AAAAAEDCDAAA
AAAACTMAAAAAAGmWhRDAzmaz6eaN67LZbAQDAAAAwF3z8PBQdm8feXhkznO1 JMyQdPsrwo4f
PazdO7bq3NkzstmsBAUAAADAXSTLnnr8CV+VrVhF/kWKymKxkDAjc7p+/Zr2 7f6vCvsXUYNG
zeTpyaEBAAAAIO2s1ngd2LtL+3ftUN4n8ilHjpwPR8JssViUL1++v4NgVZ48 efThhx+qcePG
aaorrd9sldZte/furY8//jjNQbuX7drrTqmNhHXdTQztbFabzpw+rbpPN5E1 Pl7W+Hh+wwEA
AADclZJlymnX9m2yWjNnfpGm72F+5JFHdPHiRcf7zZs3q127djpy5EiGJsw3 b95U9uzZM7TN
e91uahPmhOvT2p+Erly+rK++mKmXuvTUrb9u8psNAAAAPMR2bNukCpVD77qe bF7ZNXfWVLXp
8LJy534k08Xhru+8jo+P15kzZ+Tn5+dI5BImdZJ08uRJ1a9fX0FBQSpbtqw2 bdqUpJ7ff/9d
JUuW1LZt2xzbvvHGGwoICFDv3r3Vrl07BQQEqF+/fo5tvL29HWUHDBigwMBA DR48WJK0aNEi
PfXUUwoODlZQUJBmzpwpSerYsaMkqXbt2rp06ZKaNm2qoKAg1a1bVzExMU59 HzdunMqXL5+k
r3fb7hdffKESJUqoePHiKlKkiCIjI13G1l25hHXZ+xMbG6u2bdsqMDBQxYoV U7t27RQbG+u2
n+4YSYYffvjhhx9++OGHH374eah/lG55QeaWpjPMrm7W/vHHH1W/fn2nM5/2 +WeffVa1atVS
3759tXLlSo0YMcKRNFssFh05ckSNGzfWp59+qmrVqjmWb9y4UYGBgcqfP782 btyoIkWKyN/f
X3FxcUnOxq5atUqlSpVyrM+ZM6f27t2rgIAAnThxQr169dLSpUudtuvbt6+K FSumPn36aPr0
6Vq3bp3mzZvnKPP+++/rjTfeSPJEt7ttt2rVqoqIiFDbtm11+vRpFSpUSPF/ XwKdsO4qVaqk
WM4+36ZNGxUtWtSRVA8ZMkSHDx/WwoULXfbT3RnmF7v01K2/bvCRGgAAAPAQ 27lts8pXDkmH
M8zempeJzzDf9SXZVqtV06dP19y5c7Vx40aXCXPOnDl16tQp5cqVS8YYXb9+ XTly5HCUKVeu
nG7evKndu3crW7ZsjuU2m00WiyXJfOL6LRaL/vrrL2XLls2xrHnz5rpw4YKa NGmisLAwVa9e
3ZH42sv4+/tr3759ypUrl+Li4hQYGKgTJ044yly7dk0+Pj4uPzC4m3bj4+O1 Zs0aHThwQLt2
7dKnn37qckxxcXEplrPP58iRQydOnNAjj9w+CC9cuKAiRYro8uXLLvvpPmHu oVs3kybMwaWe
0sH9e1J9jNjLu9su4fq8eR9Psv6XtT+nuW4AAAAA90nCnN1b82ZNy7QJ810/ CtnT01Ndu3bV
sGHDnJbfunXLMW+1Wp3O0h47dkwlS5Z0vJ82bZomTJigiRMnasCAAU6Jqat5 lzvi70TbbunS
pdq5c6c2bNigsWPHavTo0frxxx+dypw8eVK5c+d224arZDk92m3atKkKFy6s 5s2bO86su5La
cpIcSXbCsVitVrf9TI67Cyfu5IKKXTu2OV3K4a6+nDlzav3an+64LSPj1AYA AACA9GMS/U/+
xZfzJUkdXnjeZfmU1mdW6fLt0WvWrNGTTz7pSKDPnDmjdevWOdbXqVNHc+bM kSStXbtWL730
ktP2oaGhev/99/XBBx84zvDerbJlyyp//vzq1auXpk6dqi1btiRJMAMDA7Vr 1y4ZY3TkyBFN
njw5Q9pds2aNIiMj1axZMx0+fNix3FVckyuXcL5Ro0YaO3asbDabbDaboqKi 1KRJk7T+ZiSd
JI0cOUZ16z+jVs8+p0OHDktGKlGqrKNMwvlyFSo7trtw/oJe79NPNWrW1dPP NNHEiR/9ry03
bZ45c1Yvd+mmBg0bq3mL1tq1a7dTXxK2UaJUWY0d9y/Va9BIrZ9rr2NHj2vF ipVq3qK1nmnc
TA0aNtbixUskI129clXde/RSg4aN1alzV8WePed+zExMTExMTExMTExMf08W ffHlgtuJcaJ1
X3w5X198uUAyFre5RGaVpjPMly5dUv78+R1Jm5eXl+bPv/2JQr9+/RQSEqKW LVs6yk+dOlUv
vfSSJk6cKG9vb5dnSgsVKqS33npL/fr101dffXXXA+vfv79q1KghT09PeXp6 6pNPPnGsK1eu
nCpWrKg5c+aoY8eOunnzprJly6YJEyZkSLujRo1SSEiI8uXLp+rVq6t8+fIa MGCAxo8f71RX
cuXsde3YsUPS7bP0PXr0UFBQkCSpcuXKmjp1apo/S3Il6MliGjF8qGbP+Vyj x7yn2TNnyDnz
dT3/zqjRypfPVz+tXimLxaLx709wrL969apKlC6bpK0G9eupTu1a6vhSB61f v0HvRo7Vovnz
XLRj/j5+/LT6P99r9pzPNea9SG3d9l8tX7pEfn4FdTomRqNGv6c2rVtp0kcf q3p4mKZP/VgL
Fy3W2PH/0vix7/ERIgAAAJBMXtDhhXaSjL74coHibsXppRdfkCTNnfelFi3+ Wh2eb+8ok7Se
zCtN9zDjwWO/h/n5jl11/erlJOvLVgzRpvU/ycfHR1evXlPt+s9o26Z1Klsx RLu3b3aUSTxf
tmKIsmfPrh9/+FZ5/r78/dLly6pRu4F2b9+ssJp1tWHt/yVpLyS8tv7vP98p R44cMsbo5s2b
jqeTJ6zb/pqwb3WfbqyQqlV05cpl1agervLlyqpC+XLy8PDQ042a69+L5ytH jhyKj7fqmaYt
tOqH5RwAAAAAQAJ7dvxXT1WolGT5gkWLtWDRYuXKmfN2HnH1qtq3baP2bdu4 rMcnZ27N/3zm
w3sPMx5OWbI4Hzpx8e6/iNz+sLaE71OS+L73U6djVDQwIFV9M8bowwnjdfDg b9q5e49mzv5c
8fHxmjH1I52NjVW1GnXvqC8AAAAAbrMnxgsWLXa8d5csPxB5D7sczsmm6/up JWnZ8u/V7rnW
+vfSZapSuaKMMfL09NS5c+f1+x9/OpLVhImrJFUPr6Yp02borTf6yGKxaPqM mU7rXbVXtUpl
fbNsudq3baNt/92u9yd8qPnz5iSp2/6asG+VKlZQm3YdNG3yh2r3XGvVrBGu Nu06yBijggUL
aML4KD35ZJBOnjqt9b9sEBdZAAAAAInyArnPC9o911r2VbfnTbL5BQkzHqxf DTdH9Z9/HlKj
Zq302KOPanzkGMkYvfhCO3Xo1EV1a9dK+hvx9/zbg/pr5JgoNWzSQt7ZvfVs q+aO9fZLqBOb
N2emhg4fqXlfLJBXdi+NHDbEZd321/37D6hR05bKnTu3xkeN0a7de9Wp66vy 9PCUp6eHRgwd
LBmjMe8M05Bh7+jWrVvKkjWrBrz1Rub/LQYAAADSPS0wyf6f3P65Z1OZEXMP Mx4A9nuY27/Y
RdeuXMxUfS9fJUw7t25gJwIAAADpZM/O7XqqfMW7ridHrke0YN4s7mHGgyKz Pvudz30AAACA
++9/7Mz9fzoJM5Kmy5nsooNlSxZyHzIAAACQzplBevyPndn/SydhhouMOXN1 ubCfHyeYAQAA
gPsxL+ChX3hQeHh4ymqLlyzijC0AAADw0OfLd5cTWCwWWW3x8vDwJGFGJk+W PT2Ur0AB/X7w
gPwK5JfF4kFQAAAAgIdUmbLl7vrbZGw2q34/+KvyFSgoT8/MmXrylGxIun1G +djRQ9q9favO
nT0jm81KUAAAAACkmYeHp/I+kU9PVags/4CislgsJMzIvGw2m27euK64+HiC AQAAAOCuZcmS
Rd7ePvLwyJxXsJIwAwAAAADgAjeqAgAAAABAwgwAAAAAAAkzAAAAAAAkzAAA AAAAkDADAAAA
AEDCDAAAAAAACTMAAAAAAPeFLIQAAAAAAPBP+/P4OS35v73atOeYDh45K0kK DnhCoU/569m6
ZVSs8OMZ3ieLMcawa3Ax9rTi4+J069ZfstqsEkcFAAAAgLvKNiVPD095eWWX Z5YseiRvfrdF
pyzaqFlLt+r5huVVoURBlS1eQJK0+7dT2nHwpOb/sFNdWlTRa22rkTAj452P idbZszH6efVK
RR8/JqvVSlAAAAAApJmnp6f8CvvrmSat9Ojjjyv3o0+4LNc6Yq5y58iuyNef 0drth7R685/a
dyhGklS6aD7VCymmsHIBGjHtP7p45aa+/tdL93/CPGfOHEVFRen8+fPKnj27 Xn/9dUVERMhi
sdz3O85isYjPCZydPPKHViz/twr6B6pClWry8PAkKAAAAADSzGazau/ObTpx 5JDavthFPrny
JCkzZdFG7Tp4SiN7NtCb7y/X+UvXNbhrHZUulk/x8Tb9/N9D+nLFTuV7PJfG 9HpagyatUJXS
hTLsTHOa7mFeunSpPvzwQ/3www8KCAjQ8ePH1aRJExUrVkzPPvssR0YmZDVW HT1ySE1av6D8
BfwICAAAAIC79oRvPo0c+LosHkmfN/3n8XOatXSrlk96WX3/9a227DmmpjVL qlalojpw+Iye
eDSH2jcsJ9/HcmrolFUa/enPiurbSE1en6WG1YpnyD3NaXpK9rhx4zRt2jQF BARIkgoXLqwp
U6bIw8NDsbGxatu2rQIDA1WsWDG1a9dOsbGxkm6f2X3jjTcUEBCg3r17q127 dgoICFC/fv0c
dadU5osvvlCJEiVUvHhxFSlSRJGRkU7bDhgwQIGBgRo8eLAkKTY2Vs8++6wK FiyoJ598UkOH
DpUkLVq0SE899ZSCg4MVFBSkmTNnPtxHspGsVitnlgEAAACkG0/PLG5v91zy f3v1UpOKWrv9
kLbsOSZJOnzygpq/8ZleHPaV+oxfLkmqWTFQuXN569ejsdpx8JS6tKiiJf+3 N0P6n6aEee/e
vapcubLTsurVq6tly5bq2bOnAgMD9eeff+r3339XYGCgevXq5SjXvn17bd68 WZMnT1a/fv20
ceNGffzxx051JVdm0qRJGjVqlH777Tdt3rxZw4YNc9q2YcOG2rBhg/71r39J knr06KFChQrp
2LFj+vXXX3Xz5k1JUpcuXfTtt9/q4MGD+vnnn7Vs2TKOZgAAAADIIJv2HFP5 4IJavflPSZJX
tiw6dvqSTp2/Ju/s2VQ+uKAk6dyl68qaNYt8vL204/cYVSjpp01/J9j3ZcLs 6v5fq9Wq69ev
a8WKFRo8eLA8PDzk4eGhgQMHasWKFY5yISEhypcvn2O+QIECio+Pd6oruTIb NmzQ448/ro8/
/ljDhg1L8mlFjRo1nMqvWLFC77zzjrJkySJPT0/HGea6devqpZdeUlRUlA4d OqR///vfHLF3
yR7b9NCpUyfVrVv3nraR0jj69Omj8ePHO5Z//PHHKlu2rGw2myTp6tWr8vf3 15kzZ3TgwAG1
bt1aYWFhqlq1ql588UUdOnToruPo5+eXoXFPTRs7d+5U+/bt9dRTT+mpp55S mzZttHnzZqfy
aYmHfaypGfP9cIymto2jR4/Kz89P7777bprqS694LF68WKGhoQoJCdHXX3/t +Fs+efJkhYeH
q0qVKurSpYsuXbrEHzMAAJAhDh45q9LF8mnHwWhlzeqpbFk9lS1bFnlly6qK Jfz0ZodwSdKM
b7bLO7uXvL29dOrMZZUMzOf42qn7MmEuWbKktmzZ4rRswYIFatWqlYwxTg/+ slgsTklt4nWu
JFemadOmWrBggYoUKeK47DqhbNmyJanLVX32+7Bz5cqlsWPHqmHDhhyxd2nO nDnpVteqVau0
atWqe9pGSuMIDw/X1q1bHcvXrFkji8WivXtvX/6xY8cOBQYGytfXV6+99poi IiK0YcMGbd68
WY0bN1bPnj0zJI4ZGZM9e/aoa9eueuWVV7Rz507t2rVLffr0Ue/evZ1idTfx SOsHDfdbrOyW
LFmiKlWq6JtvvnF82PJPGDZsmBYvXqzFixc7rsyZP3++NmzYoB9//FGbN2+W n5+f3nvvPf6Y
AQCAjElGPSx/52hStiyeypotm7J7ZVN2r6wa0rmGsnh66LPvd+nXYxfk451N OX28lN07++1t
PTPmVtI0JcwRERHq1q2bfv/9d0nS8ePHFRUVpY4dO6pRo0YaO3asbDabbDab oqKi1KRJk3Tr
8Jo1axQZGalmzZrp8OHDkpTsE68bN26sd955R/Hx8bJarRozZowkqWzZssqf P7969eqlqVOn
JvkA4GH37bffql69eqpRo4bCwsI0f/58SdKVK1fUsWNHhYWF6bnnntPZs7c/ 2enbt68kqU2b
NpJunxUbNWqUQkND1ahRIx05csSxfMqUKWrQoEGKdbVt29apTwnbWLJkiWrW rKnq1auratWq
+uijjxzlErYRHR2tFi1aqHr16ho5cqTjbF1qxhEWFqYdO3YoPj5e169f16FD h/Tyyy/r559/
liRt3bpVYWFhkqRTp04pMDDQ8aFMu3bt9PLLL7uNr7t+JY6j3eHDh1WrVi3t 2rXrH43JBx98
oGHDhql+/fry9PSUh4eHatasqaioKKez8Xcaj4SKFi3q6POYMWMUGhrq9KyC hGdc7fMLFy5U
9+7dJUnbt29XkyZNkly5ktGxsv9tWrJkieOqm4R/ZxK2ExMTo3bt2iksLEz1 6tXT9u3bnfo+
cOBAhYaGpniWOrk45M6dW+fOndO5c+eUO3duSbefCTFgwAD5+PjIw8NDAwYM UMeOHfkDCAAA
MkRx/7za92eMKpUuIg9PT3lnzyaLRcqdM7uOn72irQdOau2uE8rulUXe2b2U PXs2FffPqz9P
nFeJgLwZ00mTRjNmzDCBgYHmiSeeMEWKFDHjx483NpvNnD171rRu3doEBgaa wMBA89xzz5nY
2Fjz99dXObZP6/y4ceNM0aJFTbVq1Uz//v1N+fLlTUREhNvyZ8+eNS1btjQF ChQwQUFBJioq
ykgyn332mSlWrJgpXry4KVmypFm4cKF5mB3781cz5I1uJub0KWOMMUFBQebY sWPGGGNOnjxp
OnfubIwxZtiwYebTTz81xhgzd+5c07t3b0cdBQsWdJqfPXu2McaYadOmmRdf fNGxfPr06cZq
taa6roTsyxs3bmyWLVtmjDEmJibGFC5c2KmMvY3OnTubzz77zBhjzLx58xzb p7btatWqmV27
dpnVq1eb1157zezcudO0atXKGGPM888/b7799lvHGEuXLm1efPFFM23aNHPg wIFk4+2uX67i
ePz4cVO7dm2zbdu2fzwm5cqVM5cvX07Sh7i4OBMcHOx4f6fxSNhGwtd169aZ mJgY4+/v7zY+
xhhjs9nM888/b5YvX26eeeYZt+1l9PGzY689ftEAACAASURBVMcOU6lSJWO1 Ws2IESPMgAED
XLbTtWtX88knnxhjjPnpp59MkyZNnMqtXbvWnD171ikOriQXh9WrV5uCBQua ggULmp9++skY
Y0yxYsXMhx9+aMqVK2cCAgLM888/7/i9BwAASC9D3uhmrl9N+j/kvz5bYyZ+ sc58vWqPqdjh
YxPedYZp0Psz8+yghWbCgk3m46+3mW5jV5heE340fT9cbSKmrjHbDpw0c77b acbN+TlD+i52
H1wlzJ06dTItW7Y0H330kdm4caOxWq3GGGMqV65srly54kiSKlas6DaRuXr1 qjHGmMuXL5ti
xYo5ll+/fv2O6nKV8MTFxZl169aZWbNmmYiIiCRt29sICgpy9OPKlSuOcqlt OyIiwnz66adm
+PDhZuHChcZqtZry5cubixcvmuDgYMeHQcYYc+PGDbN+/XoTFRVlqlSpYt59 911HfYknd/1y
Fcf69eubGjVqmFu3bv3jMSlfvryjTELx8fFOCfOdxsNdwmwfc3LxsTt+/Lgp UaKEmTBhQopJ
eUYdP8OHDzcjR440xhizadMmU7JkSacxJWzHXp/NZjPXrl1zqs9dHFzF0V0c GjVqZP7zn/+Y
H374wTRu3NgYY4yfn5955513zPnz583ly5dNVFSUadGiBX8QAQBAhiTMfxyL NZVemGROnb1s
ekYuNbW7zzSN+s41XcYsc5Tp++Fq8+aUNWbQJ7+YmSv2m7MXrprKL002fxyL zZC+e3AhAFyZ
PXu2Ro8erZw5c2ry5Ml64YUXJEkxMTEKDg6Wn5+fihQpopiYmNReyeCY9/b2 vqu6pNsPBVu6
dKkKFSqk3r17J1lvb8Pd/fOpbdt+H/OaNWtUs2ZNeXh4qHr16po1a5b8/Pz0 +OO3v/utW7du
8vDwUHh4uAYOHKjvv/9en3zyiePy68STu365MnbsWJUqVcpR3z8Zk0qVKmn1 6tUub5UoW7as
4/2dxsOdrFmzul0XFxfn9P7KlSvy9PRMtr6MjFV8fLy++eYbTZ8+XX5+fnr2 2Wd16dIl/fTT
Ty7b8Ujw3YSJx+AqDu7i6C4Oe/bsUZ06dVSvXj3Hffh58+bVgAED9OijjypX rlzq06ePdu7c
yR9AAACQIYoVflxdWlTRyBk/avgrdVSxREFlyeIpT09Lgv+Dsihb1iwq4f+Y nq1eVJFz1qlr
s4oZ8h3MUhrvYcaDr379+vL19VXnzp0VFRXl+Ce6cOHCWrVqlaKjo7V58+Yk DwhKmBgvXrxY
0u0HwoWGhiZpI6W6kku+N27cqMGDB6tBgwY6fvx4krbtqlWr5ngC+tKlS1Pd tr2usLAw/fzz
z/Lw8FD+/PklSbVr19b06dMd9y9L0tmzZzVt2jRZrVYZY/TLL78oODhY0u17 VRNP7vrlKo4V
K1bUiBEjNGPGDJ06deofjUm/fv00atQorV692vGcgnXr1mnQoEHq379/muNx Jzw9PRUbG+v0
ZO74+HhFRERo3rx52rdvnzZu3PiPHz/r16+Xh4eHjh496khoO3fu7PKJ/OHh 4Vq0aJEkadOm
TerTp0+KcXAVx+TiEBAQoL1792rPnj2O+8sbNmyo2bNnO/blvHnzknxlIAAA wL30WttqOnfh
ukbO+FEDOlbX621DVNw/r978cJWGzFirMkV91aZ6oFqEBeq9mT/pVMwF9Xgu NOM6yAUCcHVJ
9ldffWWqVatmqlevbmrVquW433PLli2OS4Tr1q1r1q1b56ijfv36pkGDBo7L Rd98801TtWpV
8/TTT5tDhw4luaQ0ubrcXZJtb2PKlCmmWrVqplmzZmb06NGmQYMGZtSoUUm2 PXLkiGncuLEJ
Dw83UVFRjntVUzsOY4ypXbu2GTFihOP92bNnTcGCBc3333//v/gdO2ZeeOEF U6ZMGVOuXDnT
pk0b89tvv7mNt7t+uYqj3ZQpU0y3bt3+8Zjs3LnTtG/f3jz11FOmdOnSplWr Vmbjxo3Ox9Md
xsPdJdmujodRo0aZkJAQM2LECMfyiRMnmnfeeccYY8zu3btNrVq1zI0bN/7R WL3++uvmgw8+
cGr/wIEDpmjRokkuwz9+/Lhp1aqVCQsLM3Xr1jU7duxI8RJ0V5KLw5o1a0y1 atVMtWrVHP29
dOmS6d69u6lUqZKpWrWq6dq1qzl9+jR/EAEAQIZckp3Q5IUbTKUXJplP/r3V bDtw0ly4ctNc
uHLT7Pr9tPly5R5T9cUPzeSFGzK87xZjknnENB4axw8d1LSP3lffQaPkmy// Xdfn5+eXqktj
77UVK1YoNDRUjz76qGJjY1WvXr0kT5p+2Pp1v8bkfkSsAAAA7t7Qfq/q7THv yztHrmTL/Xn8
nL75aZ827zuuXw+fkSSVLppPFUv66dm6ZTLsMuyEuCQbrtnv10zja/TJk+lS z932adWqVXr0
scd069Yt5X3iCVWtWvXu+3Q3Y/hbo8aNNWPGDMli0cyZM7Vr9+601ZnZYnKP jrcH+vi501gC
AABkUsUKP663OtbUorEdtHtRP+1e1E/zo15Q/061/pFkWZKysFvgkv3CgzS+ Hjl8WAHpUM/d
9ini1Ck1PXhQu4OCVLZJE01++23J/vCsu+1bWsbwt1MnT2pdt26aXLiwyq5b p/ZHjqhIWurM
bDG5R8fbA3383GksAQAAQMKM+1tAQMB90Y8CBQpo+fLl9118/sl+3a8xuR8R KwAAgIcbl2QD
AAAAAEDCDAAAAAAACTMAAAAAACTMyDz8/PzuWR1Dhw51OZ9agwcP1q1bt5LM 497L7PFO63Gd
luMUAAAAJMzAHZszZ47L+dT466+/ZLFYlC1bNqd53HsPc7zv9DgFAAAACTPu A35+fpoyZYoa
NGigK1euqGPHjgoLC9Nzzz2ns2fPSpK+/fZb1atXTzVq1FBYWJjmz58vSTp/ /ry6d++u0NBQ
hYWFqUePHjp//ryj7hdeeEE//vijJMkYo/DwcP32229u23Fl4MCBCg0N1bvv vitJ6tu3rySp
TZs2TvP2sYwaNUqhoaFq1KiRjhw5IkkqUaKEo741a9aoVq1aTvMRERH66quv JEnx8fGqVKmS
zpw5k+z4Ep5pTDxvj2dCMTExateuncLCwlSvXj1t3749xRj6+flpxIgRCgkJ 0dChQ9WjRw+F
hITonXfecWov8ZiXLFmimjVrqnr16qpatao++ugjp/JjxoxRaGioIiMjJcnt +BNKqZ/2MUdH
R6tFixaqXr26Ro4c6RSbjIx3cvFJvJ27ds+fP69XXnlFFSpUUHh4uMaOHeu2 D8nt48THaUrH
xKVLl9SzZ09VrFhRNWrU0MSJEx1tuGo3ud+nhONMzX4GAAAgYQYSyZIli1au XKnx48erVq1a
2rBhg1q0aKFRo0ZJkt58803NmTNH69at09dff63//Oc/kqRBgwbJ399fGzZs 0Pr16+Xv768h
Q4Y46m3WrJlWrFghSdq3b5/y5Mmj4sWLu23HlaZNm2r58uWaMWOGJGnSpEmS pMWLFzvN2/n7
+2vTpk1q2bKlhg0bJklauXJlsglzq1attGzZMknS2rVrVaZMGfn6+qY4vpTi mdDQoUPVoEED
bdiwQcOGDdPw4cNTFcMWLVpo+fLlmjNnjl599VV9++23mj17tlPdicc8c+ZM 9e/fX+vXr9fy
5cs1fvx4p/K1a9fWsmXLNG3aNElyO/6EUuqnfcxvv/22WrdurfXr1ysoKMip joyMd3LxSbyd
u3YHDRqkAgUKaOvWrVq7dq1u3ryZbD/c7WNXx2ly5d9++23lzZtXW7Zs0c8/ /6yLFy8m225K
v0/2caZmPwMAADyUDGCMOfbnr2bIG91MzOlTjmUFCxY0169fN8YYU7lyZXPl yhVjjDFxcXGm
YsWKxhhjOnXqZFq2bGk++ugjs3HjRmO1Wo0xxgQFBZlLly456rp48aIpXry4 o94LFy6Y8uXL
m7i4OPPee++ZmTNnJttOYgULFjS3bt1yzCdc7m7+6tWrxhhjLl++bIoVK+ZU 361bt8zAgQOT
zMfHx5sqVaqYCxcumB49epjvvvsuVeNz1wd7PBMKCgpyjNlms5lr166lqg2b zeZyPrkxx8XF
mXXr1plZs2aZiIiIJOUTx9Td+BP3P7l+2sccFBTk6M+VK1ccbWREvGvUqGEK FiyYqmMicZ9d
tVusWDFz4cIFx/ILFy446nbVH3f7OHH5lI6J4sWLO7V7/vz5ZNtN7vcp4ThT s58BAADSasgb
3cz1q5czZd85w4xkeXt7S7p9iWhwcLD8/PxUpEgRxcTESJJmz56t0aNHK2fO nJo8ebJeeOEF
+wcxslgsjnosFousVqvj/SOPPKIyZcpoy5Yt+uGHH9SiRYtk23Ela9asd/NB kdP7devWqUaN
GknmPT091bhxYy1cuFBbt251XN6b0vgkKS4uzm08E7JarfLw+N+vYnR0dKra SLwuNWPu1KmT
li5dqkKFCql3794pxtTd+BPXm1w/7WN21/eMiPfatWsVHR3tiG1Kx4R9O3ft WiyWFOOfsD/u
9rE77srHxcU5tZWwjKt2U/p9so8zNfsZAADgYUTCjFQpXLiwVq1apejoaG3e vFnvvfeeJKl+
/fry9fVV586dFRUVpZ07d0qS6tatq8mTJ8tms8lms+njjz9WvXr1nOps3ry5 xo8fr6JFi+rx
xx9Ptp20JsMJ5+2XvS5YsEChoaGSpKNHj0qSfvrpJ9WpUyfJvCS1bNlSY8eO VePGjR0JZXLj
8/T0VGxsrDZv3pxsP+1th4eHa9GiRZKkTZs2qU+fPqmOYUoSj3njxo0aPHiw GjRooOPHj7v8
8CAxV+NP2P/U9rNatWr697//LUlaunSpY3lGxTs18UnMXbt169bV+++/r/j4 eFmtVk2cONHp
Q4bE/XG3jxMfpykdEzVr1nRq135Jt7t27+T3yd1+BgAAIGEGUjBx4kT16dNH NWvWVKdOnVS0
aFFJUs+ePdWyZUvVqFFDHTp0cNwTGxUVpUOHDik8PFzh4eE6evSooqKinOps 2LChduzY4fTA
I3ftpFapUqXUsGHDJPOStHv3boWEhGjx4sUaM2aMow/x8fGKi4uTj4+P07xd uXLl5O3trXbt
2jmWJTe+bt26qWnTplq1alWyfbX3LTIyUsuWLVN4eLjefvttxwO3UhPDlCQe c//+/dW0aVM1
b95cP//8s0qXLu2IhTuuxp+w/6nt53vvvaf58+erevXqOn78uDw9PTM03qmJ T2Lu2o2MjFR0
dLSqVKmimjVrKm/evI5tXPXH3T5OfJymdEyMGzdOhw8fVpUqVVSjRg2np4q7 avdOfp/c7WcA
AICHmcWkdHoJD4Xjhw5q2kfvq++gUfLNl/+BG5+fn1+Kl8G6YrVatWXLFg0f PtzxVO8Hfcz3
avwrVqxQaGioHn30UcXGxqpevXratWvXPxbv9IgP+xkAACBlQ/u9qrfHvC/v HLkyXd85wwzX
7PdJ3i+v/5DFixerc+fOGjhw4EN5GKTn+FetWqUZM2bo1q1bmjlzpqpWrUq8 H8D9DAAA8ECl
RZxhhvTgn2E+cuSIAgICHqp9er+N+dSpU+rWrZt2796tsmXLavLkySpSpAjx AQAAeMBl5jPM
Wdh9eBg8jInR/TbmAgUKaPny5cQHAAAAmQaXZAMAAAAAQMIMAAAAAAAJMwAA AAAAJMy4/3Tq
1El169YlELhjfn5+adpu6NChTu8nTZqkn376SdOnT3fcP32nddvLu9surX19 UGMOAABAwgyk
wqpVq7Rq1SoCgQwzZ84cp/f79u1T6dKltX//fpUsWTJNdR46dIjA3kHMAQAA SJjxUPDz89Oo
UaMUGhqqRo0a6ciRI7py5Yo6duyosLAwPffcczp79qxT+SlTpqhBgwbq27ev JKlt27Y6f/68
unfvrtDQUIWFhalHjx46f/58km3s70eMGKGQkBANHTpUPXr0UEhIiN55550k /YuIiNBXX30l
SYqPj1elSpV05syZFNtL2F9XfU8oJiZG7dq1U1hYmOrVq6ft27dLUoptpDQG V7FdsmSJatas
qerVq6tq1ar66KOPnMqPGTNGoaGhioyMTHb8GR0jd+NJvI27Ns+fP69XXnlF FSpUUHh4uMaO
Heu2/eT2if2Ya9OmjSSpfPny+v7771WhQgV9/fXXat26taOuwYMHKyQkRE8/ /bT++OOPZMdd
tGhRx3xyfSXmAAAAJMx4yPj7+2vTpk1q2bKlhg0bpvHjx6tWrVrasGGDWrRo oVGjRjmVz5Il
i1auXKlJkyZJkhYvXqxBgwbJ399fGzZs0Pr16+Xv768hQ4Yk2cauRYsWWr58 uebMmaNXX31V
3377rWbPnp2kb61atdKyZcskSWvXrlWZMmXk6+ubYnvuJO6HdPty0wYNGmjD hg0aNmyYhg8f
LkkptpGaMSSO7cyZM9W/f3+tX79ey5cv1/jx453K165dW8uWLdO0adOSHX9G x8jdeBJv467N
QYMGqUCBAtq6davWrl2rmzdvJtsHd/sk4TEnSdu2bVOFChV04sQJVapUSTt3 7nTUERwcrM2b
N6t169Z3dElxavr6MMccAADggWMAY8yxP381Q97oZmJOn3IsK1iwoLl69aox xpjLly+bYsWK
mcqVK5srV64YY4yJi4szFStWdCp//fp1p/fGGBMUFGQuXbrkWH7x4kVTvHhx t9vYbDaX84nF
x8ebKlWqmAsXLpgePXqY7777LlXtJe6fq37YBQUFOcZrs9nMtWvXUtVGSmNw Fdu4uDizbt06
M2vWLBMREZGk/K1bt5zqcTf+jI6Ru/Ek3sZdm8WKFTMXLlxwLL9w4YKjXVd9 cbdPEpc/dOiQ
6d27t4mJiTFdunRx29fAwMAUx21/Ta6vxBwAAMC1IW90M9evXs6UfecMM+7k wxXFxMQoODhY
fn5+KlKkiGJiYpzKeHt7u9zOYrE43lssFlmtVrfbJC7rjqenpxo3bqyFCxdq 69atjstWU2pP
kuLi4pLU56rvVqtVHh7/+zWJjo5OVRupHUPCGHXq1ElLly5VoUKF1Lt37yRl smbNmqrxZ3SM
3I0n8Tbu2rRYLCnGK2Ff3O2ThObOnavq1atryZIlqlChgn744Qe9+uqrbs/g pjTuhH1Lqa8P
a8wBAAAeRCTMSJb9UssFCxYoNDRUhQsX1qpVqxQdHa3NmzfrvffeS7GOunXr avLkybLZbLLZ
bPr4449Vr169dOlfy5YtNXbsWDVu3NiRUCbXnqenp2JjY7V58+Zk6z169Kgk KTw8XIsWLZIk
bdq0SX369Em3MSWO7caNGzV48GA1aNBAx48fT5IEpXb8CfufETFyN57UHgd1 69bV+++/r/j4
eFmtVk2cONEp+UzcF3f7JGHi+NJLL2nEiBGaNm2axo4dq/fff18zZsxw2dew sLBUjzu5vj7s
MQcAACBhxkNn9+7dCgkJ0eLFizVmzBhNnDhRffr0Uc2aNdWpUyenByK5ExUV pUOHDik8PFzh
4eE6evSooqKi0qV/5cqVk7e3t9q1a5eq9rp166amTZum+PTuhg0bSpIiIyO1 bNkyhYeH6+23
33Y8cCs9xpQ4tv3791fTpk3VvHlz/fzzzypdurTGjBlzx+NP2P+MiJG78aT2 OIiMjFR0dLSq
VKmimjVrKm/evI5tXPXF3T6RpFKlSjn6tW/fPpUrV0779u1T+fLlnfpy8OBB hYaG6ptvvtHo
0aNTPe7k+krMAQAAHjwWw6kBSDp+6KCmffS++g4aJd98+SXdfkLu/XzppdVq 1ZYtWzR8+HD9
+OOPmSre6RHb1Iw/o2J0vx8rD+JxScwBAEBmMbTfq3p7zPvyzpEr0/U9C7sP LlksUsGCt1+N
uX9eE/DMkkWdixfXwd9++1+f07mNezWO6JMn77r+xQsWqF379hr4449ux5Bh MbrPj5V7vT//
keMys8QcAAAgEyNhhmvG6JcjR6SAAMf7++I1UR8PJnp/L9q4F69HDh9WwF3W 006S2rVT/eTG
kEExuu+PlXu8P4k5yTIAAHgwcQ8z3Aqw/zMOYsuxQswBAABImAEAAAAAAAkz AAAAAAAkzAAA
AAAAkDADAAAAAEDCDAAAAAAACTMAAAAAACTMAAAAAACQMAMAAAAAQMIMAAAA AAAJMwAAAAAA
JMwAAAAAAJAwAwAAAABAwgwAAAAAAAkzAAAAAAAkzAAAAAAAgIQZAAAAAAAS ZgAAAAAASJgB
AAAAACBhBgAAAACAhBkAAAAAABJmAAAAAABImAEAAAAAIGEGAAAAAICEGQAA AAAAEmYAAAAA
AEiYAQAAAAAgYQYAAAAAgIQZAAAAAACQMAMAAAAAQMIMAAAAAAAJMwAAAAAA JMwAAAAAAJAw
AwAAAABAwgwAAAAAAAkzAAAAAAAkzAAAAAAAkDADAAAAAEDCDAAAAAAACTMA AAAAACTMAAAA
AACQMAMAAAAAQMIMAAAAAABImAEAAAAAIGEGAAAAAICEGWlikTw9PWWzWYkF AAAAgHRhtcbL
09OThBmZm6eHp4oEBmnvzm2yWuMJCAAAAIC7TpbX/7xKRYsVl8mkJ+YsxhjD rsS50yd09epV
rfx+qU4cOyKrlTPNAAAAANLO09NThYsEqnnr5+WdPbtyP/YECTMyp4uxp+Xh 6aksWbLJ4sGF
BwAAAADunrHZFB9/SzarVY/kzZ/p+p+FXQhJ2rp7hypXCJU13ibJRkAAAAAA pFvauW33NjWo
24iEGQAAZC4zPp2aYW29+kpPAg4AIGEGAACZA0ksAAAkzAAAwAXOMAMAQMIM AABIYgEAIGHG
ndu2YxNBAAAAAIC/8bVSAAAAAAC4wBfuAgAAAABAwgwAAAAAAAkzAAAAAAAk zAAAAAAAkDAD
AAAAAEDCDAAAAAAACTMAAAAAACTMAAAAAACQMAMAAAAAQMIMAAAAAAAJMwAA AAAAD5wshAAA
AAAA0tfIkSMJgqQRI0aQMAMAAAAA/pcsZ/ZEkVjcxiXZAAAAAACQMAMAAAAA QMIMAAAAAECa
cQ8zAAAAAKQzYwxBeABwhhkAAAAAABc4wwwAAAAA6cxmsxEEEmYAAAAAQGL3 2yXZWbNmVVxc
HDuGhBkAAAAAMmfCnC1bNt26dSvZdcmVyUxJPAkzAAAAAJAwp8u2f/31l4wx jlcS5nuPh34B
AAAAQDqzWm1pmtxtu23bf1WpUmXlyJFDlSpV1vbtO2S12jRq1GgVLFhQXl5e 8vLyktVq0/bt
O1S1alX5+Pg4lknSmDHv6oknfFWgQAF9/vlcWa027du3XzVr1lTOnDlVpkwZ rV//i6xWm7y8
vFyWT8t4SJgBAAAAAA42Y0vT5G7bV1/tps6dOyn65El17txJ3bq9IpuxacKE DzRy1CidjY3V
1WvXZDM2dev2ijp06KAzZ886lknSI4/k0Z+H/tTMWbM0ePAgR9kuXbvqdEyM xo4bpx49uidb
Pi3jycwshvPyAAAAAJBuRo4cqX5vvpmmbfPkzq1Lly8nWf74Y4/pRHS0vL29 df36dRUuVEjn
zp/XV199penTpungwYPq0bOnhg4d6lQ2Yb0XLl6Uh4eHUzuPP/aY4uPj/5cg Wiy6eOmS2/J3
asIHH2jEiBGZdl9yhhkAAAAA0pnNZkvT5G7bJ598Ul9+8YWuXbumzz/7TMHB wbLZbGrdurX+
8+OPWv7dd5o0aZJsNptKlCih2bNn68aNG071JqzbPv/UU09pytSpOnnqlC5c vKjzFy4kWz4t
48nMSJgBAAAAIJ1Z461pmiTp0UcecZqs8VZNmvShPvnkE/kXLqzPPvtMH374 kazxVkeZVi1b
qt8b/WSNt+rDDz/SvLlzVSB/fsf2iftkfz99+gwtmD9fgQEBTu25K5+W8WRm XJINAAAAAOlo
5MiR6vHaawRC0rQpUzL1Jdl8rRQAAAAApDNrgvuCkXmRMAMAAABAOot/AC5H BgkzAAAAAKS7
uDjOMJMwAwAAAACSiI+LIwgPAB76BQAAAADpbOTIkQRBytQP/CJhBgAAAADA Db6HGQAAAAAA
EmYAAAAAAFLH5UO/uN4e90pmv4cBAAAAwEOcMI8cOZKkBvcMxxcAAACAzIJL sgEAAAAAIGEG
AAAAAICEGQAAAACANHP50C++mhkAAAAA8LDjDDMAAAAAAC64PMNss9mIDAAA AADgoebyDLMx
JsOmLFmyOL26W59e7aRXudRsk159t0+RkZHy9vZO93ozcgIAAACAhzJhzpo1 q7Jmzaps2bIp
MDBQX3zxRYrb3Lp1y5FIuUuwXC3/4YcfVKFCBfn4+KhUqVKaP39+iolaasZg 70/WrFmTjO1O
67bXlV7TpEmTdPDgwSR9TK5v6T3Z97GriYQZAAAAAAlzMsnQX3/9pevXr+uT Tz5Rnz597mjb
O1neuXNn9evXT7GxsVq6dKm+//77dEmY3ZVPbvu7idmdTLGxsfLz83O8/+uv v5xeM2L666+/
XB5Iqe0DAAAAAGTqhNlqtaVpSrytr6+vY97Ly8tpnf29/dW+7aZNm1W6dGk9 +uijGjJkiNv+
PPbYYzp16rT++9/typv3Cc2aNduxbvv2Hapatap8fHyc6h8z5l098YSvChQo oM8/n+to/403
+ilnzpyO915eXpLkmE/83tW43dVtf3W3PuGUUpzsfUiu3IYNG1WqVClH/OzL 9+3br5o1aypn
zpwqU6aM1q//Jdm+JTddv37D6Xi5fv3GHR0jAAAAAJBpE2absaVpkiQfH2/l zJlDrVq11HuR
kU7rEpd19fraaz3Vq1cvHTl6VAUKFHDbn6+++kpHjhxW//4RCgoqpnlfzHOs 69btFXXo0EFn
zp7V1WvXHPU/8kge/XnoT82cNUuDBw9yLK9QsYJiz51zvL967Zrj1T4lfO9q 3O7qTm69vb6J
EyfqlW7dko1Twj4kV65Xr9f0ep8+OnL0qAoVKuRY3q3bK+rStatOx8Ro7Lhx 6tGje7J9S2lK
3J87OUYAAAAAIDOwmETXyY4cOVL9HOUGZgAAA+NJREFU3nwzTZXlyZ1bly5f ljFGv/zyi3r3
6qWdu3Y5rZNuP4X70Uce0aXLlx3L7a+PP/aYTkRHy9vbWzdu3FD+fPkc6+3s 9djt379fTZs0
0aHDhyXJqY6Efbtw8aI8PDyc+pMn9/+3c/88bSRhHMd/wz8LisiGxheuiFP4 tkFClLk21/AC
Re: Hudson Plugin for Buckminster [message #382730 is a reply to message #382729] Thu, 29 January 2009 15:39 Go to previous messageGo to next message
Adrian Skehill is currently offline Adrian SkehillFriend
Messages: 55
Registered: July 2009
Member
Johannes Utzig wrote:
> Hi,
>
> for my current project I want to use Hudson as CI system and decided to
> write a plugin that adds a new builder type 'Buckminster' to a hudson job.
> It fits exactly my needs so far and that's why I was considering
> contributing it to hudson. Before doing so, I was hoping for some
> feedback to see if there is interest and maybe ideas on how to improve it.
> As a start I should probably describe my own use-case a little.
> I'm developing Eclipse PlugIns/RCP and wanted to use CI to build and run
> some metrics and automated JUnit PlugIn tests on the projects.
> Buckminster seemed like the perfect tool for that, since it does all the
> nasty PDE stuff for me (thanks a lot for that).
> To spare the overhead of ant-scripts invoking buckminster from the CI
> system for each and every project, I decided to develop a plugin instead.
>

Johannes,

This sounds very interesting. I'll take this for a test with my build /
test system over the next few days and get back to you with my feedback.
Will seriously clean up things for those of us who use Buckminster to
build code, being able to configure Hudson directly rather than having
to use ant / maven actors is neat.

Thanks again,

Adrian.
Re: Hudson Plugin for Buckminster [message #385773 is a reply to message #382729] Sat, 30 May 2009 05:41 Go to previous messageGo to next message
Chase Wolfinger is currently offline Chase WolfingerFriend
Messages: 17
Registered: July 2009
Junior Member
Hi - I tested this out and it definitely makes everything easier from a
hudson perspective. Two comments - I actually need to run a set of
Buckminster commands and then perform some separate build steps and then
run a second set of Buckminster commands and when I added the 2nd
buckminster step the commands i put in were overwritten in the
configuration by the 1st set of commands on save. The other problem is
that it does not appear you can pass the -L DEBUG switch to the
buckminster executable easily from the plugin configuration. Overall it
is very useful ...
Re: Hudson Plugin for Buckminster [message #385774 is a reply to message #382729] Sat, 30 May 2009 07:03 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3240
Registered: July 2009
Senior Member
Hi Johannes,
We are now seeing more and more integrations where Hudson is used as the CI system. Would you be interested in
contributing the sources for your plug-in to the Buckminster project?

Regards,
Thomas Hallgren

Johannes Utzig wrote:
> Hi,
>
> for my current project I want to use Hudson as CI system and decided to
> write a plugin that adds a new builder type 'Buckminster' to a hudson job.
> It fits exactly my needs so far and that's why I was considering
> contributing it to hudson. Before doing so, I was hoping for some
> feedback to see if there is interest and maybe ideas on how to improve it.
> As a start I should probably describe my own use-case a little.
> I'm developing Eclipse PlugIns/RCP and wanted to use CI to build and run
> some metrics and automated JUnit PlugIn tests on the projects.
> Buckminster seemed like the perfect tool for that, since it does all the
> nasty PDE stuff for me (thanks a lot for that).
> To spare the overhead of ant-scripts invoking buckminster from the CI
> system for each and every project, I decided to develop a plugin instead.
>
> Here is what it does so far:
> -you can configure multiple eclipse/buckminster installations in the
> global hudson configuration and add additional startup parameters.
>
> -in the job settings (free style project) you add a new build step
> (buckminster), select one of the configured installations and pass one
> or more commands to buckminster.
>
> Here is what will happen:
>
> The builder will look at the specified eclipse/buckminster installation
> to find the equinox launcher jar in the plugins directory (this should
> work in case of both the headless product and a regular eclipse with
> buckminster installed) and start it with the given parameters.
>
> The working directory of the process is set to the hudson job workspace.
> This is particularly useful if you (like me) want hudson do the
> check-out from your SCM to see the changelog and want buckminster to
> resolve your components with reader type 'local' directly from the
> hudson workspace.
> The buckminster workspace (data) is automatically set to the same
> directory as the hudson workspace to avoid duplicating the projects.
> The buckminster commands you passed to the builder are written into a
> commands.txt file and passed to buckminster (the -S parameter).
> If there was a 'perform XY' command, it gets automatically transformed to
> 'perform -D buckminster.output.root="HUDSON_ARCHIVE_DIR" XY'
> where HUDSON_ARCHIVE_DIR is the directory hudson expects the build
> results to show up.
>
> Once the process is started, the plugin sends buckminsters StdOut and
> StdErr back to hudson and waits for the process to complete.
>
> Pretty simple, but works surprisingly well so far.
> Anyway, I'd appreciate any feedback on if that is of interest for others
> as well and what other features I should include.
>
> Two screenshots showing the configuration and the latest development
> snapshot of the plugin itself are attached.
>
> Best regards,
> Johannes
>
>
>
> ------------------------------------------------------------ ------------
>
>
> ------------------------------------------------------------ ------------
>
Re: Hudson Plugin for Buckminster [message #385780 is a reply to message #385773] Sat, 13 June 2009 14:34 Go to previous messageGo to next message
Johannes Utzig is currently offline Johannes UtzigFriend
Messages: 329
Registered: July 2009
Senior Member
Hi Chase,

Sorry for the belated reply, I didn't notice that there were more
answers coming in.
Thank you for your feedback. Comments below

> Hi - I tested this out and it definitely makes everything easier from a
> hudson perspective. Two comments - I actually need to run a set of
> Buckminster commands and then perform some separate build steps and then
> run a second set of Buckminster commands and when I added the 2nd
> buckminster step the commands i put in were overwritten in the
> configuration by the 1st set of commands on save.
Yeah, I noticed that just a few days ago and fixed it. I'm currently
migrating everything to the hudson repositories but I'm still struggling
with some maven issues, that's why I wasn't able to actually release it yet.
The wiki page is ready though and the code is available in the hudson SVN.
http://wiki.hudson-ci.org/display/HUDSON/Buckminster+PlugIn

>The other problem is
> that it does not appear you can pass the -L DEBUG switch to the
> buckminster executable easily from the plugin configuration. Overall it
> is very useful ...
>

I'll have a look into that and keep you informed.

Best regards,
Johannes
Re: Hudson Plugin for Buckminster [message #385781 is a reply to message #385774] Sat, 13 June 2009 15:46 Go to previous messageGo to next message
Johannes Utzig is currently offline Johannes UtzigFriend
Messages: 329
Registered: July 2009
Senior Member
Thomas Hallgren schrieb:
> Hi Johannes,
> We are now seeing more and more integrations where Hudson is used as the
> CI system. Would you be interested in contributing the sources for your
> plug-in to the Buckminster project?
>
> Regards,
> Thomas Hallgren
>

Hi Thomas,

I'm sorry that I'm answering late, I didn't notice that there were new
replies coming in.
You can definitely have the source code (although it really isn't
anything fancy just yet). However, I think it would be more natural for
a hudson plugin to live at the hudson repositories to make it
installable right through the hudson UI.
That's why I decided to move everything to hudson. The source code is
already hosted there, the wiki page is set up and I'm hoping to release
a first version (with some fixes and additions to the version introduced
a while ago in this newsgroup).

Once the release works, I'd also like to contribute another log parser
to the hudson warnings plugin (creates a warning trend from the compiler
output of a job) that reads the buckminster output.
Would you mind if I'd get back to you guys for that to see if I'm
parsing your output correctly?

However, I definitely got to love buckminster and if I find some time
I'd surely be interested in contributing something back.
If I go after my personal experience of what would be nice-to-haves in
buckminster:
-test execution (Achim Demelt seems to work on that, which is great)
-cspecx editor
-rmap editor
-zest based dependency graph visualization (like the pde incubation one)

So hopefully I'll find some time to work on one of those...

Best regards,
Johannes
Re: Hudson Plugin for Buckminster [message #387321 is a reply to message #385781] Sat, 13 June 2009 21:39 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3240
Registered: July 2009
Senior Member
Hi Johannes,

Johannes Utzig wrote:
> That's why I decided to move everything to hudson. The source code is
> already hosted there, the wiki page is set up and I'm hoping to release
> a first version (with some fixes and additions to the version introduced
> a while ago in this newsgroup).
>
Ah, I didn't know that. That's even better. I agree that hudson-ci.org is the right place for hosting the plug-in. I
include the URL's here for reference:

http://wiki.hudson-ci.org/display/HUDSON/Buckminster+PlugIn

Anonymous SVN access (user 'guest' with no password):

http://svn.dev.java.net/svn/hudson/trunk/hudson/plugins/buck minster/

> Once the release works, I'd also like to contribute another log parser
> to the hudson warnings plugin (creates a warning trend from the compiler
> output of a job) that reads the buckminster output.
> Would you mind if I'd get back to you guys for that to see if I'm
> parsing your output correctly?
>
We are happy to answer any questions that you might have. Perhaps you have some ideas on how to improve the output from
Buckminster to make parsing easier?

> However, I definitely got to love buckminster and if I find some time
> I'd surely be interested in contributing something back.
> If I go after my personal experience of what would be nice-to-haves in
> buckminster:
> -test execution (Achim Demelt seems to work on that, which is great)
> -cspecx editor
> -rmap editor
> -zest based dependency graph visualization (like the pde incubation one)
>
> So hopefully I'll find some time to work on one of those...
>
Awesome. The graph visualization would be my first pick since I think the current BOM view in our wizard needs a lot of
improvements. The editors would be nice too but it is very likely that we will switch to using EMF for both the CSPEC
and RMAPs and hence get auto generated editors that are a much better starting point then we have today. So I'd wait
with that right now.

Kind Regards,
Thomas Hallgren
Re: Hudson Plugin for Buckminster [message #387322 is a reply to message #387321] Thu, 18 June 2009 13:00 Go to previous messageGo to next message
Oisin Hurley is currently offline Oisin HurleyFriend
Messages: 204
Registered: July 2009
Senior Member
I like this - STP uses Hudson and Buckminster for Eclipse builds, and
there's a potential that we could cut out some of the messy Ant wrappers
that we use at the moment if we could move to a Hudson plug-in.

> Anonymous SVN access (user 'guest' with no password):
> http://svn.dev.java.net/svn/hudson/trunk/hudson/plugins/buck minster/

I'm building this at the moment - I've got a patch for the
toplevel pom that just declares the java.net maven repository
and makes it a little easier to build for people with 'default'
maven installations (e.g. me, since I don't use it that much :)

Because of this client I'm using, I can't make an attachment -
where will I send it?

>> -test execution (Achim Demelt seems to work on that, which is great)
>> -cspecx editor
>> -rmap editor
>> -zest based dependency graph visualization (like the pde incubation one)
>>
>> So hopefully I'll find some time to work on one of those...

+1 for the dependency graph vis - that would be excellent.

> it is very likely that we will switch to using EMF for both the CSPEC
> and RMAPs

This has pros and cons. The con is that hand-editing raw files
in XMI is dire, unless you keep the existing serialization, which
would be ok. The main pro that I can think of is that we can
write an Xtext syntax-matching editor with completion, etc
and link that to the EMF model :)

It's great to see so much interesting stuff coming down the tube
for Buckminster :)

--oh
Re: Hudson Plugin for Buckminster [message #387323 is a reply to message #385773] Thu, 18 June 2009 13:17 Go to previous messageGo to next message
Johannes Utzig is currently offline Johannes UtzigFriend
Messages: 329
Registered: July 2009
Senior Member
Chase Wolfinger schrieb:
> Hi - I tested this out and it definitely makes everything easier from a
> hudson perspective. Two comments - I actually need to run a set of
> Buckminster commands and then perform some separate build steps and then
> run a second set of Buckminster commands and when I added the 2nd
> buckminster step the commands i put in were overwritten in the
> configuration by the 1st set of commands on save. The other problem is
> that it does not appear you can pass the -L DEBUG switch to the
> buckminster executable easily from the plugin configuration. Overall it
> is very useful ...
>

Hi Chase,

I fixed both issues now. Multiple Buckminster builders won't override
each others settings anymore, so you can have as many as you want.
In addition there is a new combo box to set the log level for each build
step. I hope this is what you expected, if not, please let me know.

Unfortunately there is no downloadable version yet because the
release:perform maven goal is for some reason not working for me.
Kohsuke offered to release it on my behalf so hopefully the plugin will
show up in the list of available plugins soon, just keep an eye out.

Just please make sure that you remove the old pre-release version prior
to installing the new one to avoid conflicts.

If you have any more problems or ideas for enhancements, just let me
know or write a comment on the wiki page.

http://wiki.hudson-ci.org/display/HUDSON/Buckminster+PlugIn

Best regards,
Johannes
Re: Hudson Plugin for Buckminster [message #387324 is a reply to message #387322] Thu, 18 June 2009 14:12 Go to previous messageGo to next message
Achim Demelt is currently offline Achim DemeltFriend
Messages: 160
Registered: July 2009
Senior Member
> This has pros and cons. The con is that hand-editing raw files
> in XMI is dire, unless you keep the existing serialization, which
> would be ok. The main pro that I can think of is that we can
> write an Xtext syntax-matching editor with completion, etc
> and link that to the EMF model :)
>

+1 for Xtext editors!

Achim
Re: Hudson Plugin for Buckminster [message #387325 is a reply to message #387322] Fri, 19 June 2009 15:27 Go to previous messageGo to next message
Johannes Utzig is currently offline Johannes UtzigFriend
Messages: 329
Registered: July 2009
Senior Member
Hi Oisin,


just so you know, the release finally worked for Kohsuke and the plugin
is now installable directly from the hudson ui so you won't need to
build it manually unless you're planning to modify the code (if so,
please let me know what's missing so I can think about adding it).

The plugin was compiled against the latest version of hudson (1.310),
however, it should work with all versions starting from 1.294 (didn't
test all of them though).

If you experience any problems, just let me know.


Best regards,
Johannes

Oisin Hurley schrieb:
> I like this - STP uses Hudson and Buckminster for Eclipse builds, and
> there's a potential that we could cut out some of the messy Ant wrappers
> that we use at the moment if we could move to a Hudson plug-in.
>
>> Anonymous SVN access (user 'guest' with no password):
>> http://svn.dev.java.net/svn/hudson/trunk/hudson/plugins/buck minster/
>
> I'm building this at the moment - I've got a patch for the toplevel pom
> that just declares the java.net maven repository
> and makes it a little easier to build for people with 'default'
> maven installations (e.g. me, since I don't use it that much :)
>
> Because of this client I'm using, I can't make an attachment -
> where will I send it?
>
>>> -test execution (Achim Demelt seems to work on that, which is great)
>>> -cspecx editor
>>> -rmap editor
>>> -zest based dependency graph visualization (like the pde incubation one)
>>>
>>> So hopefully I'll find some time to work on one of those...
>
> +1 for the dependency graph vis - that would be excellent.
>
>> it is very likely that we will switch to using EMF for both the CSPEC
>> and RMAPs
>
> This has pros and cons. The con is that hand-editing raw files
> in XMI is dire, unless you keep the existing serialization, which
> would be ok. The main pro that I can think of is that we can write an
> Xtext syntax-matching editor with completion, etc
> and link that to the EMF model :)
>
> It's great to see so much interesting stuff coming down the tube
> for Buckminster :)
> --oh
>
Re: Hudson Plugin for Buckminster [message #387326 is a reply to message #387321] Sun, 21 June 2009 08:41 Go to previous messageGo to next message
Johannes Utzig is currently offline Johannes UtzigFriend
Messages: 329
Registered: July 2009
Senior Member
Hi Thomas,

see my comments below.


Thomas Hallgren schrieb:

>> Would you mind if I'd get back to you guys for that to see if I'm
>> parsing your output correctly?
>>
> We are happy to answer any questions that you might have. Perhaps you
> have some ideas on how to improve the output from Buckminster to make
> parsing easier?
>
Don't worry about that, it is actually a very regex friendly output, so
that's fine. I'd just like to double check if you'd expect my pattern to
work, or if you are aware of any special cases that I'd need to handle
separately.
This is what it currently looks like:
^.*(Warning: file )(.*?)(, line )?(\\d*): (.*)$

Group 2 = Location
Group 4 = Line number, if any
Group 5 = Message

That worked on all my builds so far but you'd know best if there are
other warnings that I just never saw during my runs.

>> However, I definitely got to love buckminster and if I find some time
>> I'd surely be interested in contributing something back.
>> If I go after my personal experience of what would be nice-to-haves in
>> buckminster:
>> -test execution (Achim Demelt seems to work on that, which is great)
>> -cspecx editor
>> -rmap editor
>> -zest based dependency graph visualization (like the pde incubation one)
>>
>> So hopefully I'll find some time to work on one of those...
>>
> Awesome. The graph visualization would be my first pick since I think
> the current BOM view in our wizard needs a lot of improvements. The
> editors would be nice too but it is very likely that we will switch to
> using EMF for both the CSPEC and RMAPs and hence get auto generated
> editors that are a much better starting point then we have today. So I'd
> wait with that right now.
>
> Kind Regards,
> Thomas Hallgren

Oh, ok, EMF would be a great choice of course. You might also want to
have a look into the Generic EMF Editor from OpenArchitectureWare, it's
Form based and in my opinion much easier on the eye than the default EMF
one.
http://www.slideshare.net/sefftinge/generic-editor

Ok, looks like it'll be the graph visualization then. I'll take a closer
look at the buckminster code then and get back to you once I can show
some first results.

I do agree with Oisin and Achim that an xText editor would be a cool
thing to have, but I also think GUI based editors like the current cspec
editor lower the barrier for newcomers, while an xText editor would be
more for experienced users.

Best regards,
Johannes
Re: Hudson Plugin for Buckminster [message #387331 is a reply to message #387325] Fri, 26 June 2009 10:43 Go to previous messageGo to next message
Oisin Hurley is currently offline Oisin HurleyFriend
Messages: 204
Registered: July 2009
Senior Member
Johannes Utzig wrote:
> just so you know, the release finally worked for Kohsuke and the plugin
> is now installable directly from the hudson ui

Cool - just tested it and all is well. One less thing to build from
source! :)

Thanks for this work - I'll do some testing and if there are no hiccoughs,
then we'll see about rolling it into the Eclipse Hudson.

cheers!
--oh
Re: Hudson Plugin for Buckminster [message #387332 is a reply to message #387331] Fri, 26 June 2009 11:48 Go to previous messageGo to next message
Johannes Utzig is currently offline Johannes UtzigFriend
Messages: 329
Registered: July 2009
Senior Member
Hi Oisin,

I'm glad that it works for you and I hope the plugin will make things
easier for you. If you have additional ideas or feature requests, tell
me about them :)
I very much like Thomas' idea about using buckminster also as an SCM
plugin for hudson and I hope I'll be able to add that in a future release.

Best regards,
Johannes

Oisin Hurley schrieb:
> Johannes Utzig wrote:
>> just so you know, the release finally worked for Kohsuke and the
>> plugin is now installable directly from the hudson ui
>
> Cool - just tested it and all is well. One less thing to build from
> source! :)
>
> Thanks for this work - I'll do some testing and if there are no hiccoughs,
> then we'll see about rolling it into the Eclipse Hudson.
>
> cheers!
> --oh
>
Re: Hudson Plugin for Buckminster [message #481158 is a reply to message #382729] Wed, 19 August 2009 20:32 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: eclipse-news.lemmster.de

Hi,

where would I store "eclipse.committer.password" in Hudson/Buckminster
so it does not show up in the build log.

Markus
Re: Hudson Plugin for Buckminster [message #481162 is a reply to message #481158] Wed, 19 August 2009 20:50 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3240
Registered: July 2009
Senior Member
Hi Markus,
you should be able to run the perform command with a -P <property file> without getting the content of that file listed.
Where in the log do you see the password?

Regards,
Thomas Hallgren

On 08/19/2009 10:32 PM, Markus Kuppe wrote:
> Hi,
>
> where would I store "eclipse.committer.password" in Hudson/Buckminster
> so it does not show up in the build log.
>
> Markus
Re: Hudson Plugin for Buckminster [message #481168 is a reply to message #481158] Wed, 19 August 2009 22:02 Go to previous messageGo to next message
Johannes Utzig is currently offline Johannes UtzigFriend
Messages: 329
Registered: July 2009
Senior Member
Hi Markus,

you mean the output in the build log that prints out the command log?
I added that to make it clear what's actually invoked (in case there are
problems), but I see, that's pretty bad for passwords...
Would you prefer to not print the command line, or to have an option if
it should be printed or not? Maybe coupled with the log level? If the
log level is set to 'Debug', the command line is printed to the log,
otherwise not.

Would you mind adding a bug for that in the hudson issue tracker on the
buckminster component?
https://hudson.dev.java.net/servlets/ProjectIssues


Best regards,
Johannes

Markus Kuppe schrieb:
> Hi,
>
> where would I store "eclipse.committer.password" in Hudson/Buckminster
> so it does not show up in the build log.
>
> Markus
Re: Hudson Plugin for Buckminster [message #481253 is a reply to message #481162] Thu, 20 August 2009 09:10 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: news.eclipse.org.08.lemmster.de

Thomas Hallgren wrote:
> Hi Markus,
> you should be able to run the perform command with a -P <property file>
> without getting the content of that file listed. Where in the log do you
> see the password?

It's not the bm log but the hudson log [1].

Markus

[1]
https://ecf2.osuosl.org/hudson/job/C-HEAD-platform_feature/4 6/consoleText
Re: Hudson Plugin for Buckminster [message #481256 is a reply to message #481168] Thu, 20 August 2009 09:11 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: news.eclipse.org.08.lemmster.de

Johannes Utzig wrote:
> Hi Markus,
>
> you mean the output in the build log that prints out the command log?
> I added that to make it clear what's actually invoked (in case there are
> problems), but I see, that's pretty bad for passwords...
> Would you prefer to not print the command line, or to have an option if
> it should be printed or not? Maybe coupled with the log level? If the
> log level is set to 'Debug', the command line is printed to the log,
> otherwise not.

That sounds like a usable workaround. But I guess eventually only key
auth would solve the problem. Having my password stored in clear text
somewhere in the Hudson config doesn't feel secure either.

Markus
Re: Hudson Plugin for Buckminster [message #481264 is a reply to message #481256] Thu, 20 August 2009 09:39 Go to previous messageGo to next message
Johannes Utzig is currently offline Johannes UtzigFriend
Messages: 329
Registered: July 2009
Senior Member
Markus Kuppe schrieb:
> Johannes Utzig wrote:
>> Hi Markus,
>>
>> you mean the output in the build log that prints out the command log?
>> I added that to make it clear what's actually invoked (in case there are
>> problems), but I see, that's pretty bad for passwords...
>> Would you prefer to not print the command line, or to have an option if
>> it should be printed or not? Maybe coupled with the log level? If the
>> log level is set to 'Debug', the command line is printed to the log,
>> otherwise not.
>
> That sounds like a usable workaround. But I guess eventually only key
> auth would solve the problem. Having my password stored in clear text
> somewhere in the Hudson config doesn't feel secure either.
>
> Markus

Hi Markus,

all I can do in the plugin is to not print the command line invocation
if that helps you, key auth would need to be implemented on the
buckminster side.
If storing the password in the hudson config is safe or not depends on
the hudson security settings and the file permissions on the hudson
config files (and file system encryption).
Isn't it kind of unusal that a build server uses actual credentials
instead of having its own?

Best regards,
Johannes
Re: Hudson Plugin for Buckminster [message #481285 is a reply to message #481264] Thu, 20 August 2009 10:51 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: news.eclipse.org.08.lemmster.de

Johannes Utzig wrote:
> all I can do in the plugin is to not print the command line invocation
> if that helps you, key auth would need to be implemented on the
> buckminster side.

Yep, that's why I think adding this in your Hudson plug-in is the wrong
direction. Let's see if the buckminster end can be improved (e.g.
reading the pass from a special file or use equinox security).

> If storing the password in the hudson config is safe or not depends on
> the hudson security settings and the file permissions on the hudson
> config files (and file system encryption).

Since Hudson runs as a special user (e.g. tomcat), file permissions do
not really help. Most users of the system will be able to ream 'em.

> Isn't it kind of unusal that a build server uses actual credentials
> instead of having its own?

Yeah, but that's the way eclipse.org handles signing. You do not get a
special account for signing. Instead your regular user account is added
to a group which is allowed to sign bundles.
Key auth for BM signing (was Re: Hudson Plugin for Buckminster) [message #481407 is a reply to message #481285] Thu, 20 August 2009 20:19 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: news.eclipse.org.08.lemmster.de

Markus Kuppe wrote:
> Johannes Utzig wrote:
>> all I can do in the plugin is to not print the command line invocation
>> if that helps you, key auth would need to be implemented on the
>> buckminster side.
>
> Yep, that's why I think adding this in your Hudson plug-in is the wrong
> direction. Let's see if the buckminster end can be improved (e.g.
> reading the pass from a special file or use equinox security).

Is it possible to use key auth with buckminster's signing task?

Markus
Re: Key auth for BM signing (was Re: Hudson Plugin for Buckminster) [message #481413 is a reply to message #481407] Thu, 20 August 2009 20:58 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3240
Registered: July 2009
Senior Member
Hi Markus,

On 08/20/2009 10:19 PM, Markus Kuppe wrote:
> Markus Kuppe wrote:
>> Johannes Utzig wrote:
>>> all I can do in the plugin is to not print the command line invocation
>>> if that helps you, key auth would need to be implemented on the
>>> buckminster side.
>>
>> Yep, that's why I think adding this in your Hudson plug-in is the wrong
>> direction. Let's see if the buckminster end can be improved (e.g.
>> reading the pass from a special file or use equinox security).
>
> Is it possible to use key auth with buckminster's signing task?
>
Not at present but I can certainly see why you would like to do that. Can you please enter an enhancement bugzilla for this?

Thanks,
Thomas Hallgren
Re: Key auth for BM signing (was Re: Hudson Plugin for Buckminster) [message #481453 is a reply to message #481413] Fri, 21 August 2009 06:21 Go to previous message
Eclipse UserFriend
Originally posted by: news.eclipse.org.08.lemmster.de

Thomas Hallgren wrote:

> Not at present but I can certainly see why you would like to do that.
> Can you please enter an enhancement bugzilla for this?

https://bugs.eclipse.org/bugs/show_bug.cgi?id=287264

Markus
Previous Topic:Build fails after headless resolve using p2
Next Topic:qualifier replacement with build timestamp
Goto Forum:
  


Current Time: Tue Apr 16 19:52:21 GMT 2024

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

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

Back to the top