You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

523 lines
54 KiB

{
"cells": [
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"import uproot\t\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from mpl_toolkits import mplot3d\n",
"import awkward as ak\n",
"from scipy.optimize import curve_fit\n",
"import mplhep\n",
"mplhep.style.use([\"LHCbTex2\"])\n",
"\n",
"plt.rcParams[\"savefig.dpi\"] = 600\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"file = uproot.open(\"/work/cetin/Projektpraktikum/trackinglosses_B_photon_cuts.root\")\n",
"\n",
"# selektiere nur elektronen von B->K*ee\n",
"allcolumns = []\n",
"for i in range(11):\n",
" allcolumns.append(file[\"Tree\" + str(i)].arrays())"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<pre>{oneCut_event_id: 1,\n",
" oneCut_lost: False,\n",
" oneCut_rad_length_frac: 0.148,\n",
" oneCut_energy: 1.28e+04,\n",
" noneCut_brem_photons_pe: 1,\n",
" oneCut_brem_photons_pe: [7.42e+03],\n",
" noneCut_brem_vtx_x: 1,\n",
" oneCut_brem_vtx_x: [-3.61],\n",
" noneCut_brem_vtx_z: 1,\n",
" oneCut_brem_vtx_z: [35.6],\n",
" oneCut_photon_length: 1}\n",
"------------------------------------------\n",
"type: {\n",
" oneCut_event_id: int64,\n",
" oneCut_lost: bool,\n",
" oneCut_rad_length_frac: float64,\n",
" oneCut_energy: float64,\n",
" noneCut_brem_photons_pe: int32,\n",
" oneCut_brem_photons_pe: var * float64,\n",
" noneCut_brem_vtx_x: int32,\n",
" oneCut_brem_vtx_x: var * float64,\n",
" noneCut_brem_vtx_z: int32,\n",
" oneCut_brem_vtx_z: var * float64,\n",
" oneCut_photon_length: int64\n",
"}</pre>"
],
"text/plain": [
"<Record {oneCut_event_id: 1, ...} type='{oneCut_event_id: int64, oneCut_los...'>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"allcolumns[1][1]"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"def cutdict():\n",
" basedict = {\n",
" \"0\": {},\n",
" \"1\": {},\n",
" \"2\": {},\n",
" \"3\": {},\n",
" \"4\": {},\n",
" \"5\": {},\n",
" \"6\": {},\n",
" \"7\": {},\n",
" \"8\": {},\n",
" \"9\": {},\n",
" \"10\": {},\n",
" }\n",
"\n",
" basedict[\"0\"] = \"no\"\n",
" basedict[\"1\"] = \"one\"\n",
" basedict[\"2\"] = \"two\"\n",
" basedict[\"3\"] = \"three\"\n",
" basedict[\"4\"] = \"four\"\n",
" basedict[\"5\"] = \"five\"\n",
" basedict[\"6\"] = \"six\"\n",
" basedict[\"7\"] = \"seven\"\n",
" basedict[\"8\"] = \"eight\"\n",
" basedict[\"9\"] = \"nine\"\n",
" basedict[\"10\"] = \"ten\"\n",
"\n",
" return basedict\n",
"\n",
"\n",
"Cuts = cutdict()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"# electrons = []\n",
"# for jcut in range(11):\n",
"\n",
"jcut = 4 # cut 0.2*E\n",
"\n",
"energy_emissions = ak.ArrayBuilder()\n",
"\n",
"for jelec in range(ak.num(allcolumns[jcut], axis=0)):\n",
" energy_emissions.begin_record()\n",
" energy_emissions.field(\"lost\").boolean(\n",
" allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"lost\"])\n",
" energy_emissions.field(\"rad_length_frac\").real(\n",
" allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"rad_length_frac\"])\n",
" energy_emissions.field(\"energy\").real(\n",
" allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"energy\"])\n",
"\n",
" tmp_velo = 0\n",
" tmp_richut = 0\n",
" tmp_neither = 0\n",
" tmp_velo_length = 0\n",
" tmp_richut_length = 0\n",
" tmp_neither_length = 0\n",
"\n",
" for jphoton in range(\n",
" ak.num(\n",
" allcolumns[jcut][jelec][Cuts[str(jcut)] + \"Cut_\" +\n",
" \"brem_photons_pe\"],\n",
" axis=0,\n",
" )):\n",
" if (allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"brem_vtx_z\",\n",
" jphoton] <= 770):\n",
" tmp_velo += allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" +\n",
" \"brem_photons_pe\", jphoton]\n",
" tmp_velo_length += 1\n",
" elif (allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"brem_vtx_z\",\n",
" jphoton]\n",
" > 770) and (allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" +\n",
" \"brem_vtx_z\", jphoton] <= 2700):\n",
" tmp_richut += allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" +\n",
" \"brem_photons_pe\", jphoton]\n",
" tmp_richut_length += 1\n",
" else:\n",
" tmp_neither += allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" +\n",
" \"brem_photons_pe\", jphoton]\n",
" tmp_neither_length += 1\n",
"\n",
" energy_emissions.field(\"velo_length\").integer(tmp_velo_length)\n",
" energy_emissions.field(\"velo\").real(tmp_velo)\n",
"\n",
" energy_emissions.field(\"rich_length\").integer(tmp_richut_length)\n",
" energy_emissions.field(\"rich\").real(tmp_richut)\n",
"\n",
" energy_emissions.field(\"neither_length\").integer(tmp_neither_length)\n",
" energy_emissions.field(\"downstream\").real(tmp_neither)\n",
"\n",
" energy_emissions.field(\"photon_length\").integer(tmp_richut_length +\n",
" tmp_velo_length)\n",
"\n",
" if ((tmp_velo == 0) and (tmp_richut == 0)\n",
" or (allcolumns[jcut][jelec, Cuts[str(jcut)] + \"Cut_\" + \"energy\"] -\n",
" tmp_velo < 3000)):\n",
" energy_emissions.field(\"quality\").integer(0)\n",
" else:\n",
" energy_emissions.field(\"quality\").integer(1)\n",
"\n",
" energy_emissions.end_record()\n",
"\n",
"energy_emissions = ak.Array(energy_emissions)\n",
"# electrons.append(energy_emissions)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABLsAAAOWCAYAAAAHk5CdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB1dUlEQVR4nOz9wW9jaZon5r6KTsA1sFtFRQENCKEBJih710D3UJG98cZVQfofsJix7FWQs7wQxmKGcRd3cdFR5FTrLi5gmIze1M6RpO2Lu5rbYmTZC3vhDNFTQO1snexFBAQUkCGmegZOA2XpLtJkkRQlkSIlkkfPAwhJSud8fA95KCV/8X7fWbu4uLgIAAAAAEiBR4suAAAAAADmRdgFAAAAQGoIuwAAAABIDWEXAAAAAKkh7AIAAAAgNYRdAAAAAKSGsAsAAACA1BB2AQAAAJAawi4AAAAAUkPYBQAAAEBqCLsAAAAASA1hFwAAAACpIewCAAAAIDWEXQAAAACkhrALAAAAgNQQdgEAAACQGsIuAAAAAFJD2AUAAABAagi7AAAAAEgNYRcAAAAAqSHsAgAAACA1hF0AAAAApIawC6bU7Xaj1WotugwAAABgDGEXjNHpdGJtbW3s18bGRmQymUWXCAAAAIwh7IIxXr9+feXPstls5PP5e6wGAAAAmNTaxcXFxaKLgGWSJElsb29Hs9kc28GVzWYjm83ef2EAAADAjYRdMKJcLsenT5+i2WwuuhQAAABgSp8tugBYJt1uNxqNhqALAAAAVpQ1u2BAb62uYrEYa2trsbOzE7VaLbrd7mILAwAAACYi7GImSZJEoVCIVqs10zi1Wi0KhUJsbGzE2tpabG9vR7FYjHa7PadKJ69jUKfTiUqlEhsbG1GpVO61FgAAAGB6wi5updvtRrFYjO3t7Wi32/Hp06dbjdNut4eCpGazGcfHx1GtVqPT6UShUIhCoXBvnVWnp6dxdHQU9Xo9dnd3h37WC+QAAACA5WWBeqbS7Xbj9evXlzqg6vV6lEqlqcZqt9v98KhUKkW9Xr+0zc7OTnQ6nchms3F0dDT26oh3adzxVqvV2N/fv9c6AAAAgMno7GJitVqtHz7NqtcZFhGRzWbHBl0R0V8oPkmS/vb3KZPJRLVaHQraTGcEAACA5SXsYiKdTify+XwcHx/H4eHhleHUpIrFYn9q4nXhUTab7U8nbLfb0Wg0Znrc28rlclGtVvv373stMQAAAGAywi4mksvlIpfL9e8/e/bs1mMlSTIUFn3xxRfXbv/ixYv+7XHBWKfTibW1tVt9TdMtViqV+t1drs4IAAAAy+mzRRfA7SVJEhE/dj/Nqt1uRz6fn3j7WdbOGuyQyufzN441uFB8t9uNVqs19L1MJnNpMflJTbvg/LNnz6Ldbt/72mEAAADAZIRdKypJktjZ2YmIiKOjo5kCr2KxGK1W694WXh+cijjYLXadbDbbD/fevn07FG5ls9n+2l73ZZbONgAAAODumMa4opIkiW63G91uN3Z2dvpB0LR6QVdExDfffDPPEscaXdz+888/n2i/wVCsV+8iJEkSmUxGZxcAAAAsKWHXisrn8/1uptsGXoNB1+7u7r10R40u7D5pR9rodvO4IuS0Op1OJEkSr169uvfHBgAAACYj7FphgwHVtIHXIoKuiMvdY5N2SP3sZz8buv/+/ft5ldRXqVSiUChc2Tn28uXL2N3dvZepngAAAMDtCLtW3G0Cr0UFXRFxqbbbdnYdHx/PraaeWq0W7XY7isVi7OzsRLvd7i+Iv729PdRNBwAAACwnYVcKTBN4LTLoirgcdt1Wt9udyziDjo6O+leH7HQ6USwW4/nz5/HNN9/E4eHh0FUkAQAAgOXkaowp0QuuisViP/AavUrjooOuiNuHVKPTHT99+jR7MSNyuVwcHh7OfVwAAADg/ujsSpHrOrzK5fLCg655uovOLgAAAGD1CbtSZjTwKhQKUSwWo9FoXPr5Iky6IP19jQMAAACki7ArhQYDrSRJlqqj6/Hjx0s1DgAAAJAuwq6U2t3djXw+P/S9N2/eLKiaP7ptR9botEWdXQAAAMA4wq6UKhaL0W63h763s7Oz8LWunj17NnR/0npGF6Tf3t6eV0kAAABAigi7Uuiqqy4mSbLwwGtnZ2fofm8B/ZscHx8P3R/tWgMAAACIEHalzriga5kCr9HOrknDrsF6M5lMZLPZeZYFAAAApISwK0Wu6ugavb/IwCuXyw2tt/XNN99MtN/79+/7t0cDMwAAAIAeYVdKlMvlG6+6uCyB1xdffNG/3el0JtpncLtKpTL3mgAAAIB0EHalQLlcjkajERFXB109yxB4lcvl/u3RRfTHGdwmm81arwsAAAC4krBrxU0TdPXMI/CaJSDL5XJDgVWvI+0qg8ekqwsAAAC4jrBrhd0m6OqZNfAaXVh+2vCrXq/3b79+/frK7brdbv8Y8/l8lEqlqR4HAAAAeFiEXSuq0WjcOujqGQ28nj9/PtF+3W73UofV27dvp3rsbDbbf+xOpxO1Wm3sdr2aMpnMrY4RAAAAeFjWLi4uLhZdBLdTKBTmEgK1Wq14+fJlHB0dRTabHbtNt9uNly9fRrfbvXadrXw+H5lMJl69ehW5XO7Gx26321EsFqPb7cbu7m68evUqstlsvH//PiqVSnQ6ncjlcvHu3buhqzgCAAAAjCPsYinUarV4+/ZtJEkS3W43MplMPHv2LMrlcuzu7i66PAAAAGBFCLsAAAAASA1rdgEAAACQGp8tugCm9+//+/9+/PDDD/Enf/In8Wd/9meLLgcAAAAgfv/738f/+X/+n/GTn/wk/t2/+3cLq8M0xhX06NGj8LIBAAAAy2htbS3Oz88X9vg6u1bQYND15MmTBVZyOycnJ3F+fh6PHj2Kzc3NRZdzK6t+DKtef4RjWAarXn/E6h/DqtcfsfrHsOr1RziGZbDq9Ues/jGsev0Rq38Mq15/hGNYBqtef8TqH8PHjx8jIhbeoCPsWkGPHj3qn/wfPnxYdDlT29raio8fP8bm5uZK1h+x+sew6vVHOIZlsOr1R6z+Max6/RGrfwyrXn+EY1gGq15/xOofw6rXH7H6x7Dq9Uc4hmWw6vVHrP4x/Mmf/Ek/r1gkC9QDAAAAkBqpDru+//77ePHiRfzJn/xJ/NVf/VWcnZ0tuiQAAAAA7lCqw65KpRLNZjMuLi7i6Ogovvjii0WXBAAAAMAdSvWaXe12O9bW1iLix8XRDg8PF1wRAAAAAHcp1Z1dz58/H7oCQD6fX2A1AAAAANy1VHd21ev1iIh49+5d5HK5ePPmzYIrAgAAAOAupTrsivhj4AUAAABA+qU+7EqjP/3TP43vv/8+/vRP/3TRpTxYe3t7cXZ2Fuvr64su5VZWvf4Ix8B8rPprsOr1R6z+Max6/Wmx6q/DqtcfsfrHsOr1p0EaXgPHsHirXn8aLEtesXYxuKgVK2Frays+fvwYT548iQ8fPiy6nKmtev3Aj7yXIR28lyEdvJchHVb9vbws9T+Izq5/+Id/iH/2z/7ZosuYu5OTk9ja2rp2m729vdjb27unigAAAIA0Ojg4iIODg2u3OTk5uadqrpf6sOu/+W/+m/jiiy/i6Ogo/vIv/3LR5czV+fl5fPz48dptzs7O7qkaAAAAIK3Ozs5uzCCWRerDrm+++SYuLi7iq6++Sl3Y9ejRo9jc3Lx2G3OVAQAAgFmtr6/HkydPrt3m5OQkzs/P76miqy112PV3f/d3t9632+3G8fFxNBqNWFtbi8PDw/ibv/mbOVa3eJubmys5hxcAAABYLZMsk9Rbs2vRljrsKpVKsba2NtMYvfX3O51OatfuAgAAAOBHjxZdwCRuc8HIi4uLuLi4iLW1tX5g1mg05l0aAAAAAEtkJcKuiD+GV5N+RUSsra0Nfa/ZbC74KAAAAAC4S0s9jTEi4unTp1GpVCKbzU613/HxcdRqtdjZ2Yk3b95YqH2J7O3txdnZmdcEVpz3MqSD9zKkg/cypIP38nysXdxmjuA9efToUSRJMtM6W//hf/gfxrNnz+K//q//6/kVtmC9Bd+ePHligXoAAABgKSxLXrHU0xgzmczMC8r/V//VfxVfffVV/O3f/u18igIAAABgaS112FWtVmceI5/PRzabjf39/fiHf/iH2YsCAAAAYGktddj18uXLuYyTy+Xi4uIiarXaXMYDAAAAYDktddg1b998882iSwAAAADgDqU+7Pr++++j3W5HRESn01lwNQAAAADcpVSHXf/m3/ybePbsWXz//fcREZHNZhdcEQAAAAB36bNFF3Cd/+g/+o9uvW+SJBERcXFxERERa2trkc/n51IXAAAAAMtpqcOu4+PjWFtb6wdWtzG4/zyu7ggAAADA8lqJaYxra2u3+or4sbMrk8nE3//938f6+vqCjwQAAACAu7TUnV0Rf5yGmMlk4vHjxxPvl8lkIpvNxueffx7/+X/+n99VeQAAAAAskaUPu2q1WvzLf/kvF10GAAAAACtgqacxZrNZQRcAAAAAE1vqsKtSqSy6BAAAAABWyFKHXS9fvlx0CQAAAACskKVfswsAYJn98PbXM4/xkxd/PYdKAACIWPLOLgAAAACYRqrDru+//z5evHgRf/InfxJ/9Vd/FWdnZ4suCQAAAIA7lOqwq1KpRLPZjIuLizg6Ooovvvhi0SUBAAAAcIdSvWZXu92OtbW1iIi4uLiIw8PDBVcEAAAAwF1KdWfX8+fP4+Lion8/n88vsBoAAAAA7lqqO7vq9XpERLx79y5yuVy8efNmwRUBAAAAcJdSHXZF/DHwAgAAACD9Uj2NEQAAAICHRdgFAAAAQGqkPuz6/vvv49WrV4suAwAAAIB7kPqw66c//WkcHh7GX/3VXy26FAAAAADuWOrDroiIZ8+exdHRUfwX/8V/sehSAAAAALhDK3U1xn/4h3+Ibrcbnz59mnifTqcTzWYzLi4uol6vx9/8zd/cYYUAAAAALNLSh13/7X/730a9Xo92uz3zWN1ud/aCAAAAAFhaSx12/at/9a/iyy+/jIiIi4uLW4+ztrYWa2trkcvl5lUaAAAAAEtoadfs+l/+l/8lKpVKRIwPutbW1iYaZ21tLS4uLuLp06fx5s2budYIAAAAwHJZ2s6uer0eET9eTbFUKsX29nZks9mIiDg9PY0vvvgiNjY24quvvhq7f7fbjb//+7+Pv/u7v4tOpxN/+Zd/eV+l35uTk5PY2tq6dpu9vb3Y29u7p4oAAACANDo4OIiDg4Nrtzk5Obmnaq63tGFXu92O7e3t+F//1/917M9fvnwZf/d3fxfb29vxz/7ZPxu7zX/2n/1nERHx5Zdfxr/+1//6rkpdmPPz8/j48eO125ydnd1TNQAAAEBanZ2d3ZhBLIulncaYJEm/u2ucL7/8Mi4uLqJWq107TqVSib//+7+Pv/3bv513iQv36NGjePLkybVf6+vriy4TAABgZbRarUiSZNFlLK15XDyO1bS+vn5jBvHo0XLETMtRxRWePXt25c+ePn0az58/j3q9fm33UjabjX/+z/957O/vp67LaXNzMz58+HDtlymMAAAwH41GIzY2NvoXwLrqa3t7+1aBQKfTie3t7RvH39jYiEajcWn/Wq02cX2TXqk+SZKo1WpRKBSGatve3o6dnZ0ol8vRarWGxqvValEsFq89zpuaFu5Cp9OJcrncP46NjY3+cRSLxWi1WtFqteLly5c3vn7tdru/f9rDnyRJotFoRKFQiLW1tSgUCosuachDei0WbW9v78YMYnNzc9FlRkTE2sUslzm8Q8+ePYtWq3XlFMWIH0/q//Q//U/jX/yLfxH/5X/5X1653b/4F/8iGo1GfPnll/E3f/M3d1Dt/dra2oqPHz/GkydP4sOHD4suBwAetB/e/nrRJcRPXvz1okuAB6XT6USxWLzU/VMqla6dnTKpbrcbL1++jFarNfT9XC4XzWazv5bxtPXt7+9HtVqdqIZ2ux3VanUoPMhms/2vT58+RZIk0el0hn4e8WM4ks/n4/DwcGi8ZrMZX331VXS73chkMnF6ejpRLbMafT6z2Wzkcrl+rYPH0FOtVmN/f//KMTc2NvoBXzabjePj4/kXvmBJkvTPo9FwdJlihIfwWqySZckrlrazK5vNjv3XikH5fD7++T//51Gv1+O3v/3tldu9f/8+IiKazeZcawQAAB6eXC7Xv3L8oHkEXRERmUxm7JXkq9XqjUHXVfVlMpmJg65yuRyFQqEfdO3u7sbx8XEcHx/H4eFh1Ov1aDabcXR0FBcXF1GtViOTyUSSJGOn/5XL5ahWq9FoNCbuKJunXtdWxI+v0fHxcTSbzf4xHB8fRz6fH9rnpsDk8ePHd1bvsshms3F0dBSnp6fXBn+L9hBeC6a3tGHXF198EdVqNf72b/82/uEf/iG+/vrr+Prrry9t9+rVq7i4uIhcLhf/3X/33136+b/6V/+qn9Sbdw0AAMzD6JIrk4RQ08hkMpHJZG79GLepr9vtxvb29lDTweHh4Y3dZPv7+/Htt9/2u6UiIj59+tS/Xa/X4/DwcCGBSa1W64d2+/v7USqVLm2TzWbj8PBwKAy86bNjvV7vd7k9hKaKZZu6OOihvRZMZmmvxri7uxvr6+uxv78/9EtxZ2cn/uf/+X8e2u758+fx7t272N3djVwu1//F3m63h35JzfsPEAAA8DCNBlGj9+/CXXewPH/+fOjz09HR0VCAdZ1MJhPv3r2LnZ2dsdPeIiI+//zzeZU6sdevX/dvl8vla7fd39+P7777Lmq12lBYN04+n39Q0+UW1T1VLpdv7Jh8aK8Fk1nazq6IiDdv3vTnAl9cXMTFxUUcHR3Fv/k3/2Zou8GTv9PpRKPRiEajEcfHx/3919bWJv5FDQAAsGizBAyj4dtNYxWLxaG1q6rV6tSfnzKZzFJ11lwVul2nd9xmBS1e73M93MZSh127u7vx1VdfDS1+l8lk4i//8i+Htstms/H3f//3lxbJ610ppLffuHnvAAAAD1mn0xlaDD+bzd56ymEul4vd3d0bO6Puw2jQNemV+l69erWQtcX4oyRJbuzEg+ssddgV8WPgdXp6GvV6ParV6pUJez6fj//tf/vf4he/+EW/C6z3lcvl4v3797G+vn7P1QMAACy3ly9fDt2fNWQol8tLERaNLmNTqVQmqmt3dzciLodl3I9ut7vUa4SxGpZ2za5BP/3pTy/9Ah6nt7Dg999/378CYzabjadPn951iQAAACsnSZKh6YsRfwx7biufzy/F1ft6i/z3Qqtutxs7OztxeHh443rOo7OGuB/dbvfS2nFwG0vf2XUbP/3pT+P58+fx/PlzQRcAAMAVRqf2ZTKZuVzYa/DKhpPUUCgUYmNjI9bW1mJ7e3viLqxp60iS5NIVJ2+r0+lEuVyO7e3ta7frdrvRaDRiZ2dn6HF7U/UGj7tWq13aP0mSqFQqsb293d/uqu653uP0lvQZXNpnUKFQ6I83+DXPbrZGozH0OBsbG7GzszP2GCN+fD6fPn16KXwdrO+q53rS16Kn2+1GrVYbOu969VUqlYnCtiRJolarxfb29lDNg6/B9vZ2FItFXYILkMqwCwAAgJsdHh4O3e9d2f6+FIvFKBQK0W63+4FAL0QYF3xMq1QqRT6fv/T9crkcOzs7U4/fC1V6wUij0Ri7PlkvTNnZ2YmNjY0ol8tDj9ULrxqNxtBxVyqVoWmkve1qtVo/gEmSpB+ojIYopVIpjo6OolQqXXsch4eHcXx8PFUoOalWqxVra2v9Y+ldOO7du3fR7Xb7xzRaezabjXfv3l2q6ejoqP81eAGESV+LUY1GIzY2NqJSqUShUIh3797F8fFxf43vXoBVLBYv7TtYfy+U7b0uvc7Bwdc6SZJotVrx9OlT3Wr3TNgFAADwQI1+AB+9iuNdKpfL0Wq1Ynd3N/b392N3d3fo8XvhwayB1+Hh4dipmZ1OJ3Z2dibuvEmSJN6+fTtx91Aul7u0/tnR0VH/mJrNZhwfH8fp6enQtM9GoxGdTqcfAh4eHsbp6Wmcnp7G4eFh/zlKkiRev3499rHHBTXjzDpldVS73e4/9qtXr4bGz+Vy/bAqSZJLSxVlMpnI5XKXrgLa+97gz6Z9LXp6AVwmk4nj4+PY39+PXC4X2Ww2dnd34+joqF9zq9W6FMp9+vQpCoXCpQD1/fv38fTp0/7SSsfHx1Gv1/uvVbfbteD+PVuJNbsAAAAeuo2NjbmPORryPH78eO6PcdXjvn//Pk5PTy8FbOVyeWi638uXL+Po6Gimx2s2m1Gr1aJSqVz6WavVilarFfV6/dqOqGw2O9R1NG6snkwm0w9E6vV6P7BrNBpxeHh4KSypVqvR6XT600p3dnaiVCpd6rzL5/Px5s2bfqDUaDRm6s6a9+tdr9ev/flgkDV4BdBpTfNa9DQajf4Uymq1euV03WazGdvb25EkSSRJEsVisf86ZLPZyGazkc/nh87RSqUSzWZz6HUtlUrx+PHj/mvV6168z0D5IdPZBQAAsALy+fzEX6PdMVeZZNrXXXn37t3YD/71en2oI6jT6cxlja39/f04PT29spupXC5HoVCYqMtrmnXNBgOlq6ZVRsSlKxBeFRwN1t/tdpd2PairQp3B789jat+kr0UvEMtkMjdO8xwMz9rt9qW17Xrj9Lx582bs6zp6rvUupMfd09kFAACwAprN5sRdIb2F2G/y+PHjobDkvtYV6l0p8SrVanWo8+emrqtpHrfZbEan04mXL19emiLZbrfj+fPnVwZxt33MSQyGNtM8dpIkE4ebd+3Nmzfx+eef96cF3uS+grrBtdEmCcdKpdLQRRKq1eqVIeVNstns0Hpr3A+dXQAAAA/U6Af/RXZ6DepNFeuZdd2uUblcLo6OjsZ2T/WCsPt223BtWV6ziB+Pobf+2qhOpzP313FSg9NBJ+0EGzz/xnV2sdyEXQAAAA/UaEfQosKIcUZru4suoFKpFMfHx5eCplartdQBx6qs+9S7cmS73R67+Px91jGt0VBsWaeLMp6wCwAA4IEaXScqYnkCr9FpmHcV8GSz2Tg6Oro0/k2LrXO13tUke9NPbzsFcF5uM1V39Pxbpg46bibsAgAAeKDy+fylkOft27eLKWbELFcKbLfbsbOzM/H22Ww23rx5M/S9ZQn9Vk25XI6dnZ1LV0xcpNssij96/k1zUQIWT9gFAACwQOO6q+7Tq1evhu7XarWlmLI12EkzbWdQNpuNTqcz1VTE0XWmLCY+vXK53L9y5rIEXRHDQdWkV7AcPP8EXatH2AUAALAgtVpt4dOjSqXSpe6u169fzzTmPLqijo+P+7fL5fJU+/bCiWn3G7QsVzi8S/M89zqdTj/oymazS7Wu2IsXL4bu9+q8zuD5N8mVJVkuwi4AAIAFSJIkKpXKlV1LswQRo50r142VyWTi3bt3Q9+r1WrRarVu9diNRiOeP38+c+DV68rKZrO3Chuy2Wz/OZ7EaCfXaECySkan4F3VyTTP7rXBLrrrxl1E1+Du7u5Q+DbJemyDxzPa/cjyE3YBAABMadYP7N1utz998apQZZrAatS0QVkul4tmszn0vWKxGLVabeIxkiSJYrEY5XI53r17N1NnVLvd7odlo3VNqtfdVavVJurkGQxAstls7O/v3+pxR016rgxud9M+N/189Lkfd/zjgsB5dnqNC0snebzRKYOjwdlt33uDa7IlSXLtFNdOp9M//6rV6lJ1qTEZYdcMut1uVCqVKBQKsb29HWtra7G9vR3FYnGiX6YAAMBqev/+/dD9aT6ANxqNePr0af9D/LhQaNx403ThjG47yb67u7uXrkpYqVRiZ2fn2i6vTqcT5XI5tre3I0mSODo6ujHo6na7V9bU6XSiWCxGxI9B121Ds8HQpFwuR7lcvvJ1ajQaQ8He4eHhtWMPhjSLXt/sqscf7BisVCpRLpej3W5Hq9Xqv16jQc5Vr8loKDXuMUdfp15Y2m63o1ar9c+PwdelXq9Hu92OSqXSH3M07Oq9bkmSDK0JNq62616L3d3doXXEisXi2O273W68fPkyIn6c4ntV6Dnp6z74nC76XHlI1i4uLi4WXcQqqtVqUalUIpPJxKtXryKXy8Xjx4/j/fv3Ua/Xo9PpRDabjXq9PvfLrG5tbcXHjx/jyZMn8eHDh7mODQBM54e3v150CfGTF3+96BLgQUmSJAqFwqVgIJfLxbNnzyKTycTPfvaziIj47rvvIuLHD7nv37+/NLUvn8+PDVbGfajvdV/dtFj2VfXt7+9PvGh4o9EYCiB6stls//E/ffoUSZJEt9uNTCYT1Wo1SqXSteOOHlepVIpCoRCZTKYflDUajchmszMFXb1jGLdm1+7ubmSz2dje3o6jo6Not9v95yqfz0e9Xr/xOd7Z2Rl6LZvN5tiplt1uNzY2Nvr3c7lcHB0djR2zWCwOhYr1en3s89lut4cualAqlcZOy+t2u/H06dOxAUsmk4lmsxn5fD42Njb62/TOscePHw+FYJPWNrrdoGq1Gvv7+2PP7d3d3aEOvkqlMrarcNyxTvpa9LRarXj58uXQedv7zN5ut6NarUaSJP16x5n0NRjd7qr3e5osS14h7LqF3hv4ul9Ug2/gSf5lYxrLcvIAAMIueEiuCoBmMRga9DqaburCymazUa1WL32gr9VqUa/XJ9p/tIPrKu12Ow4PD6Pdbg91Y/VCr1wuFy9evJjq806SJNFqteLw8DCSJBkaszfePBYEb7fbUSwW+9PXeo83GNJF/Bj85PP5KJfL1zYqdDqdeP36df+5GNWrfX9//9pte8f55s2byGQy/Y6rca9bPp+PQqEQ+/v7/SBm3PS7bDbbD+oG9WYj9cbP5XKRz+eHQs+dnZ3+8Y9etfDly5fXHu+zZ88uPebgedhbb+3Vq1f9863b7UaxWIx2uz30nI2qVCrRarX6db969ap/XkzzWlyl0WhEs9mM9+/f94OvbDYbL168GHvRht7j9p7PUYOvQa8L7artyuXy3KbJLptlySuEXVPqdXRFRJyenl77B6LXppnJZOL09HRuNSzLyQMACLsAAHqWJa+wZteUekFXLpe78V9Ceqlzt9u99ZVMAAAAAJicsGsKgy2IN83hjoj4/PPP+7e/+eabO6kJAAAAgD8Sdk1hcA716MKSN+ktUAkAAADA3RF2TeHx48f924MLKV5lsJtrkk4wAAAAAGYj7JrCaGA17jK2g3rrdGUymblcTQQAAACA6wm7ppDL5YYuqdu7lO04jUaj3/k1eFlXAAAAAO6OsGtKb968GbrfarUuBV7tdrvf9VWv16NUKt1bfQAAAAAPmbBrSrlcLprN5tD3Wq1WbG9vR6fTiVqtFoVCIbLZbBweHgq6AAAAAO6RsOsWdnd3o16vD30vSZLY2dmJSqUS+/v7cXx8HPl8fkEVAgAAADxMwq5bKpVKlwKvnna7Hd1u934LAgAAACA+W3QBq6xUKsXR0VE0Go2h73c6nXj69Gm8e/duaEH7eTs5OYmtra2Zx9nb24u9vb05VAQAAACsmoODgzg4OJh5nJOTkzlUMzth1wzK5XI0Go0olUrRbrf7V1+MiOh2u7GzsxOHh4d3Np3x/Pw8Pn78OPM4Z2dnc6gGAAAAWEVnZ2dzyReWhbDrlgqFQrTb7djf349qtRoRfwy/Rre7q8Dr0aNHsbm5OfM46+vrc6gGAAAAWEXr6+vx5MmTmcc5OTmJ8/PzOVQ0m7WLi4uLRRexanZ2dqLT6UQ+n4/Dw8Ohn7VarSgWi0Pfy2Qy8e2330Ymk5nL429tbcXHjx/jyZMn8eHDh7mMCQDczg9vf73oEuInL/560SUAACxNXmGB+ikVi8XodDoREWMXqN/d3Y2jo6OhYKvb7UalUrmvEgEAAAAeLNMYp5AkSbRarYiIyOVykc1mx26Xy+Xi6Ogotre3+99rNBpRrVbn1t0FAAAwaBk6TVeR7lhIH51dUxjs5Hr27Nm122az2UudX+/fv7+TugAAAFh97XZ70SVAKgi7ptDtdvu3B7u2rlIqlYbuD16tEQAAgIctSZJoNBpRKBRibW0tCoXCokuCVDCNcQqfPn3q3z4+Pp5on1wu11/jCwAAAJIkiWKxGEmSDDVVAPOhs2sKg2t03aZL66o1vgAAAHg4stlsHB0dxenpaezv7y+6HEgdYdcUXrx40b/9/v37iRL4wVAsn8/fRVkAAACsKFMXYf6EXVPI5XL9wKrb7cbr16+v3b7dbvcDsWq1etflAQAAsGIeP3686BJurVwuL7oEGEvYNaVmsxmZTCYiImq1WjQajbHb9eZgR/zY0aU1FQAAgLRoNBpXfh6GRRN2TSmTycS3337bv9JiuVyOQqEQjUYjOp1OtNvtqFQqsb29Hd1uN6rVahweHi64agAAAJiPJEl0dbHUXI3xFjKZTNTr9SiXy1Gv16Pdbvff6NlsNnK5XOzv78erV6/6XWAAAACw6rrdrnXGWHrCrhnkcrmo1+uLLgMAAADuXLfbjefPnw9diA2WkWmMAAAAsEK63W7UarUoFAqxsbERa2trsbGxETs7O1GpVCYOo9rtdhQKhdje3o6NjY3+V+97gzqdTjx9+jQ6nc7Q99fW1vpfo/vAogi7AAAAYEU0Go3Y2NiISqUShUIh3r17F8fHx/HmzZuI+PFCatvb2/0Lpl2lWCxGoVCIYrEYx8fHcXp6Gqenp/HFF19Eu92OJEmi2+32t89ms/Hu3buoVqtD4xwdHfW/ms3m3I8XbsM0RgAAAFgBlUolarVaZDKZODo6imw22/9ZNpuN3d3dKBaL0Wq1otVqxfb2dhwdHV1aS7pWq0Wr1Yr9/f3+xdd6ekv1jF5pMZPJRC6Xi0+fPg19P5fLzfEIYT50dgEAAMCSazQaUavVIiKiWq0OBV2Dms1m/2dJkozt8OoFWj/72c/GjtHr3hoNtmBVCLsAAABgyVUqlYj4scNqtBvrqm0jflyXq91uD/28t6bX27dvx+6fyWRid3d3lnJhoYRdAAAAsMQajUZ//ayrOroGlUqloamLo+ts9cbodDpRKBSG1uYa3GeSx4JlJOwCAACAJXZ4eNi/PWkAlc/n+7dHO7tGO7+ePn16aY0uQRerTNgFAAAAS6w37XAao2HVYPdWqVQamqbY7XajXC7H9vZ2tFqtW9cJy0LYBQAAAEtsMKiaNPja3t4euj+62Hyz2bw0vbG3oH2hULhVwAbLQtgFAAAAS2xw/a1JQ6jHjx8P3R83LXF/fz9OT08vLUbfbrdje3s7Op3O9MXCEhB2AQAAwBIbDKq63e7YBeVHDXZyXbf+ViaTiWazGUdHR0PrfEVEPH/+fPpiYQkIuwAAAGCJvXjxYuj+6GLy4xwfH/dvj3ZuFYvFS9vncrk4PDyMer3e/16327WGFytJ2AUAAABLbHd3d2gq42AgdZXBKzC+evVq6GfXBVilUin29/f790fX+oJVIOwCAACAJffmzZv+7SRJhsKsUZ1Op7/eVrVaHQrKeq7rDisUCv3bo1MbR6dEjq4hNskUS7hrwi4AAABYkNHOqavCot3d3aGrJxaLxbHbdrvdePnyZURc7tIaVKlUrnysXlCWz+cvhVuj98vlcnS73UiSJMrl8kRTLOGuCbsAAABgQUanJH711VdXbru/vx/NZjMymUx0u914+vRpNBqNSJIkkiSJRqMROzs70el0olqtXjvdsbf/6JTGVqsVlUolcrlcNJvNK+voabfbsbGxEdvb25d+BouydnFxcbHoIpjO1tZWfPz4MZ48eRIfPnxYdDkA8KD98PbXiy4hfvLirxddAgBT6HVftdvtsd1VuVwunj17dm1Y1Wg0otlsxvv376Pb7UYmk4lsNhsvXryIUqk0dupiT7FYjEKhENVqtT8NMZvNxqdPn+LZs2dRLBajVCpdewyVSiVarVYkSRK5XC5evXp1aSF8Hp5lySuEXStoWU4eAEDYBQDQsyx5hWmMAAAAAKSGsAsAAACA1BB2AQAAAJAawi4AAAAAUkPYBQAAAEBqfLboAri9k5OT2Nraunabvb292Nvbu6eKAAAAgDQ6ODiIg4ODa7c5OTm5p2quJ+xaYefn5/Hx48drtzk7O7unagAAAIC0Ojs7uzGDWBbCrhX26NGj2NzcvHab9fX1e6oGAAAASKv19fV48uTJtducnJzE+fn5PVV0NWHXCtvc3IwPHz4sugwAAAAg5SZZJmlra2spur8sUA8AAABAagi7AAAAAEgNYRcAAAAAqSHsAgAAACA1hF0AAAAApIarMQIAAKTAL3/z9aJLWElf/vwXiy4BmDOdXQAAAACkhrALAAAAlkSn04lyuRzb29uxtrYWGxsbsbOzE61Wa9GlLa1utxuNRiM6nc6iS2FJCLsAAABgCVQqldjZ2YlCoRCHh4dRKpWi2+1Gp9OJYrEYtVpt0SUujSRJolarRaFQiI2NjSiXy/H+/ftFl8WSsGYXAAAALFij0YharRb7+/uxu7sbERH1ej0+ffrU7+o6PDyM/f39RZa5FFqtVrx9+zY6nU4kSbLoclhCwi4AAABYsEqlEhERhUJh6PvNZjMKhUIkSdLf5qHb3d3tB4Jra2sLroZlJOwCAACABWq1WtHtdiMi4vHjx5d+fnh4eM8VrY5sNqu7i0us2QUAAAALVK/X+7czmcziCoGUEHYBAADAAulMgvkSdgEAAMACCbtgvoRdAAAAAKSGsAsAAADuUZIksba21v8atL29PfSz66422O12o1arRaFQiI2NjVhbW4uNjY3Y2dmJSqVyZcdYo9GInZ2dGx+nUCiMrae3mP6446rVarG9vR2dTmfs421vb0exWLxyjKuOcWdnJzY2NmJjYyMKhULUarWJ9udhEnYBAADAPcpms3F0dBRHR0eXrrRYr9f7P+t9jdNoNGJjYyMqlUoUCoV49+5dHB8fx5s3byIi+qFTsVi8tG+pVIqjo6MolUrX1nl4eBjHx8dRrVav3Kbb7UalUont7e3Y3t4eCtm63W7s7OxEuVzuh19JkkSr1YqnT5/eOH2zt12lUol8Ph/NZjOOjo6iXC5HvV6P7e3t+PTp07Vj8DAJuwAAAOCe5XK5yOVykc/nh77/7Nmz/s96X6MqlUqUy+XIZDJxfHwc+/v7kcvlIpvNxu7ubhwdHcXu7m5E/BgYbW9vj+2kGheEjdMba5xPnz5FoVC4dBzv37+Pp0+fRjab7Ydm9Xq9f7XJbrcb5XL5ynEbjUa/vqOjo6hWq5HP5/vHeHx8HJlMZuIOMR4WYRcAAACsiEaj0Z/CV61WI5vNjt2u2Wz2f5YkycTB1jiPHz++8mfZbDby+XzU6/Wh71cqlWg2m9FsNvshValU6neeRUS02+2xYVWn0+kHYdVqdWzgF/HjMcI4wi4AAABYEZVKJSIiMpnMjdMQe9tG/BgstdvtO62t17UVEfHmzZtL3V4Rl7vE3r9/f2mbly9f9se77hiz2ezQY0KPsAsAAABWQKPR6HdCXdXRNahUKg2FQdetvXWfBmsfXber3W731/caF5aNuq7rjIdL2AUAAAArYHAx+0nCrojhwOiuO7vmYXBq4qTHCKOEXQAAALACbrp64TijgdGyL+g+GMhtb28vsBJWmbALAAAAVsBgUDVp8DUaGH369GmeJc3dYH3LHsyxvIRdAAAAsAIG19+aNOwaXdNq2acGDgZcx8fHiyuElSbsAgAAgBUwGFR1u92JOp8GO6WWPeiKuH7xepiUsAsAAABWwIsXL4buNxqNG/cZ7I7a3d291ePe59THXC7Xv91ut01l5FaEXQAAALACdnd3h6Yy1uv1G/cZXPD91atXQz8bneJ4VbB0nx1Wo4FepVK5t8cmPYRdAAAAsCRu6qJ68+ZN/3aSJENh1qhOpxOdTiciIqrV6lBQFjHcRRUxvlMsSZJLgdNddnrt7u4O1dVoNK7sYOt0OkNBnDW+6BF2AQAAwIKMdk3dNG1vd3c3qtVq/36xWBy7T7fbjZcvX0ZERKlUiv39/bHj5fP5/u1KpRLlcjna7Xa0Wq0ol8uxvb19KSi7qtNr0imHg/uP26fZbA7dL5fLUS6X+/slSRK1Wi2eP38+VFetVotyuawbDGEXAAAALMroVMRJpibu7+9Hs9mMTCYT3W43nj59Go1GI5IkiSRJotFoxM7OTnQ6nahWq9eO2Runp9FoRKFQiGKxGF999VUcHh4OBWIRP4ZiSZIMBVWjHWaHh4djH2+S7bLZbBwfHw8tVt9oNGJ7ezvW1tZie3s7Xr9+He/evRuaipnNZiOTyUS5XL7yeHkYhF0AAABwj5IkiWKxGNvb21Gr1YZ+1m63Y2NjIwqFwrUdSru7u3F6ehr1ej2ePXsWlUoltre3Y2dnJ+r1epTL5Tg9Pb2yo6snk8nEt99+G6VSqR8u5XK52N/fj9PT037Qlc1mY39/P46Pj+Po6KgfLHU6nSgUClEoFIbG7YVTveApSZKx27Xb7bHPQy/wqlarkcvl+oFcNpuNUqkU3377beRyuf79o6Oj/varcNVJ7tbaxcXFxaKLYDpbW1vx8ePHePLkSXz48GHR5QDAg/bD218vuoT4yYu/XnQJAABLk1fo7AIAAAAgNYRdAAAAAKTGZ4sugNs7OTmJra2ta7fZ29uLvb29e6oIAAAASKODg4M4ODi4dpuTk5N7quZ6wq4Vdn5+Hh8/frx2m7Ozs3uqBgAAAEirs7OzGzOIZSHsWmGPHj2Kzc3Na7dZX1+/p2oAAACAtFpfX48nT55cu83JyUmcn5/fU0VXE3atsM3NTVdjBAAAAO7cJMsk9a7GuGgWqAcAAAAgNYRdAAAAAKSGsAsAAACA1BB2AQAAAJAawi4AAAAAUkPYBQAAAEBqCLsAAAAASA1hFwAAAACpIewCAAAAIDWEXQAAAACkhrALAAAAgNQQdgEAAACQGsIuAAAAAFJD2AUAAABAagi7AAAAAEgNYRcAAAAAqSHsAgAAACA1hF0AAAAApIawCwAAAIDUEHYBAAAAkBqfLboAAIBF+uHtrxddAgAAc6SzCwAAAIDUEHYBAAAAkBrCLgAAAABSQ9gFAAAAQGoIuwAAAABIDWEXAAAAAKkh7AIAAAAgNYRdAAAAAKSGsAsAAACA1BB2AQAAAJAawi4AAAAAUkPYBQAAAEBqCLsAAAAASA1hFwAAAACpIewCAAAAIDU+W3QB3N7JyUlsbW1du83e3l7s7e3dU0UAAABAGh0cHMTBwcG125ycnNxTNdcTdq2w8/Pz+Pjx47XbnJ2d3VM1AAAAQFqdnZ3dmEEsC2HXCnv06FFsbm5eu836+vo9VQMAAACk1fr6ejx58uTabU5OTuL8/PyeKrqasGuFbW5uxocPHxZdBgAAAJBykyyTtLW1tRTdXxaoBwAAACA1hF0AAAAApIawCwAAAIDUEHYBAAAAkBrCLgAAAABSQ9gFAAAAQGoIuwAAAABIDWEXAAAAAKkh7AIAAAAgNYRdAAAAAKSGsAsAAACA1BB2AQAAAJAawi4AAAAAUkPYBQAAAEBqfLboAgAAZvHD218vugQAAJaIzi4AAAAAUkPYBQAAAEBqCLsAAAAASA1hFwAAAACpIewCAAAAIDWEXQAAAACkhrALAAAAgNQQdgEAAACQGp8tuoCHoNPpRJIkkSRJ5HK5yOfziy4JAAAAIJV0dt2BbrcbtVotdnZ2Ym1tLZ4/fx7ffPNN5HK5ePbs2aLLAwAAAEgtnV1z1O12o1KpRKPRiIiIXC4Xh4eHOrkAAAAA7omwa04ajUZUKpXodrsREVGv16NUKi22KAAAAIAHRtg1B5VKJWq1WkREZLPZODw8jGw2u+CqAAAAAB4eYdeMisVitFqtiIjIZDJxdHQUmUxmsUUBAAAAPFDCrhkUCoVot9v9+4IuAAAAgMVyNcZbajQaQ0FXvV43dREAAABgwYRdt5AkSZTL5f79XC5nMXoAAACAJSDsuoVisTh0/9WrVwuqBAAAAIBBwq4pJUkSnU6nfz+TycTu7u4CKwIAAACgR9g1pXq9PnQ/n89HRESr1YpisRjb29uxtrYWGxsbsbOzE7VaLbrd7gIqBQAAAHh4XI1xSo1GY+j+48ePY2dnZ6jbKyKi2+1Gp9OJTqcTlUolms2mDjAAAACAOybsmkKSJJe6tL766quoVqvxxRdfRCaT6W9XrVaHgrFisTj3wOvk5CS2trZmHmdvby/29vbmUBEAAACwag4ODuLg4GDmcU5OTuZQzeyEXVNIkmTofiaTiW+//bYfcvVks9mo1+uxs7MzdNXGly9fRj6fv7T9bZ2fn8fHjx9nHufs7GwO1QAAAACr6OzsbC75wrIQdk1hNOwqlUrXBlelUimOjo76HV7dbjdev34d1Wp1LvU8evQoNjc3Zx5nfX19DtUAAAAAq2h9fT2ePHky8zgnJydxfn4+h4pms3ZxcXGx6CJWRaVSiVqt1r8/ybTEJElie3t76HuzPuVbW1vx8ePHePLkSXz48GGmsQBg1f3w9teLLmHhfvLirxddAgDA0uQVrsY4hdH1uiaZjpjNZiOXyw19b3QxewAAAADmQ9g1hdEOrUk9e/Zs6P7odEgAAAAA5kPYNYXRTq7RTq+rjIZknz59mlNFAAAAAAwSdk3hth1aoyHZ48eP51USAAAAAANcjXEKo2tvHR8f32qcbDY7j3IAAPi//PI3X8+0/5c//8WcKgEAFk1n15Ty+Xz/drvdnmif0emOo6EZAAAAAPMh7JpSpVLp306SZKJ1uwY7wAbDMgAAAADmyzTGKeXz+chms/31ul6/fh3VavXafQY7wG7aFgDgofnh7a9nH+TP/unsYwAAqaCz6xaazWb/dq1Wu3ah+na73f95qVQyhREAAADgDgm7biGXy0W9Xu/fLxQKY6czdrvdKJfLY/cBAAAAYP6EXbdUKpXi8PAwMplMJEkST58+jVqtFp1OJzqdTtRqtXj69GkkSRKlUimOjo4WXTIAAABA6lmzawb5fD5OT0+j0WhEs9mM169fR6VSiUwmE9lsNkqlUpTL5chms4suFQAAAOBBEHbNQalUilKptOgyAAAAAB480xgBAAAASA1hFwAAAACpIewCAAAAIDWEXQAAAACkhrALAAAAgNQQdgEAAACQGsIuAAAAAFJD2AUAAABAagi7AAAAAEgNYRcAAAAAqSHsAgAAACA1hF0AAAAApIawCwAAAIDUEHYBAAAAkBrCLgAAAABSQ9gFAAAAQGoIuwAAAABIDWEXAAAAAKkh7AIAAAAgNYRdAAAAAKSGsAsAAACA1BB2AQAAAJAawi4AAAAAUuOzRRfA7Z2cnMTW1ta12+zt7cXe3t49VQQAAACk0cHBQRwcHFy7zcnJyT1Vcz1h1wo7Pz+Pjx8/XrvN2dnZPVUDAAAApNXZ2dmNGcSyEHatsEePHsXm5ua126yvr99TNQAAAEBara+vx5MnT67d5uTkJM7Pz++poqsJu1bY5uZmfPjwYdFlAAAAACk3yTJJW1tbS9H9ZYF6AAAAAFJD2AUAAABAagi7AAAAAEgNYRcAAAAAqSHsAgAAACA1hF0AAAAApIawCwAAAIDUEHYBAAAAkBrCLgAAAABS47NFFwAAAKvul7/5eqb9v/z5L+ZUCQCgswsAAACA1BB2AQAAAJAawi4AAAAAUkPYBQAAAEBqCLsAAAAASA1hFwAAAACpIewCAAAAIDWEXQAAAACkhrALAAAAgNQQdgEAAACQGsIuAAAAAFJD2AUAAABAagi7AAAAAEgNYRcAAAAAqSHsAgAAACA1hF0AAAAApIawCwAAAIDUEHYBAAAAkBrCLgAAAABSQ9gFAAAAQGoIuwAAAABIDWEXAAAAAKnx2aILAACARfvlb75edAkAwJzo7AIAAAAgNYRdAAAAAKSGsAsAAACA1LBm1wo7OTmJra2ta7fZ29uLvb29e6oIAAAASKODg4M4ODi4dpuTk5N7quZ6wq4Vdn5+Hh8/frx2m7Ozs3uqBgAAAEirs7OzGzOIZSHsWmGPHj2Kzc3Na7dZX1+/p2oAAACAtFpfX48nT55cu83JyUmcn5/fU0VXE3atsM3Nzfjw4cOiywAAAABSbpJlkra2tpai+8sC9QAAAACkhrALAAAAgNQQdgEAAACQGsIuAAAAAFJD2AUAAABAagi7AAAAAEgNYRcAAAAAqSHsAgAAACA1hF0AAAAApIawCwAAAIDUEHYBAAAAkBrCLgAAAABS47NFFwAAPGw/vP31okuAlffL33w98xhf/vwXc6gEABZP2AUAAAs2j7AKAPiRaYwAAAAApIawCwAAAIDUEHYBAAAAkBrCLgAAAABSQ9gFAAAAQGoIuwAAAABIDWEXAAAAAKnx2aILAADgYfvV7z/NPMZnf/ZP51AJAJAGOrsAAAAASA1hFwAAAACpIewCAAAAIDWEXQAAAACkhrALAAAAgNQQdgEAAACQGsIuAAAAAFJD2AUAAABAagi7AAAAAEgNYRcAAAAAqSHsAgAAACA1hF0AAAAApIawCwAAAIDUEHYBAAAAkBqfLboAbu/k5CS2trau3WZvby/29vbuqSIAAAAgjQ4ODuLg4ODabU5OTu6pmusJu1bY+fl5fPz48dptzs7O7qkaAAAAIK3Ozs5uzCCWhbBrhT169Cg2Nzev3WZ9ff2eqgEAAADSan19PZ48eXLtNicnJ3F+fn5PFV1N2LXCNjc348OHD4suAwAAAEi5SZZJ2traWoruLwvUAwAAAJAawi4AAAAAUkPYBQAAAEBqCLsAAAAASA1hFwAAAACp4WqMAABA/PI3X8+0/5c//8WcKgGA2ejsAgAAACA1hF0AAAAApIawCwAAAIDUEHYBAAAAkBoWqAcA4MH7w+9+O9P+n/35X8ypEgBgVjq7AAAAAEgNYRcAAAAAqSHsAgAAACA1rNkFAMzkh7e/XnQJAADQp7MLAAAAgNQQdgEAAACQGsIuAAAAAFLDml0AAKy8P/zut4suAQBYEjq7AAAAAEgNYRcAAAAAqSHsAgAAACA1hF13bHt7O9bW1qLVai26FAAAAIDUE3bdoUqlEkmSLLoMAAAAgAdD2HVH2u121Gq1RZcBAAAA8KAIu+5At9uNYrG46DIAAAAAHpzPFl1AGr18+TIeP34cET8GXwAAafbD218vuoSV94ff/Xam/T/787+YUyUAsPp0ds1Zo9GIVqsVzWZz0aUAAAAAPDg6u+YoSZIol8uxv78fuVxu0eUAAMDK+OVvvp5p/y9//os5VQLAqtPZNUfFYjFyuVxUq9VFlwIAAADwIOnsmpNKpRKdTieOj48XXQoAAADAgyXsmoNOpxO1Wi3q9Xpks9lFlwMAE7OwOMzHrAvMAwDzYxrjHDx//jx2d3ejVCotuhQAAACAB03YNaNisRgREW/evFlwJQAAAACYxjiDVqsVrVYrDg8PI5PJLLocAAAAgAdP2HVL3W43isVilEqlyOfzC6nh5OQktra2Zh5nb28v9vb25lARAAAAsGoODg7i4OBg5nFOTk7mUM3shF239Pz588hms1Gv1xdWw/n5eXz8+HHmcc7OzuZQDQAAALCKzs7O5pIvLAth1y3UarXodDpxdHS00DoePXoUm5ubM4+zvr4+h2oAAACAVbS+vh5PnjyZeZyTk5M4Pz+fQ0WzEXZNqdPpRKVSiWq1GrlcbqG1bG5uxocPHxZaAwAAALDa5rW80dbW1lJ0iLka45SKxWLkcrnY399fdCkAAAAAjNDZNYVarRZJkkQ+n49isXjj9t1ut3/79evX8fbt2/79Fy9exO7u7l2UCQAA9+6Xv/l60SUAQEQIu6by3XffRUREu92eet9OpxOdTqd/P5vNCrsAAAAA5sw0RgAAAABSQ9g1hWq1GhcXFxN/ZbPZ/r7NZnPoZ9VqdYFHAgAAAJBOwi4AAAAAUkPYBQAAAEBqCLsAAAAASA1hFwAAAACp8dmiCwAAWGW/+v2nmcf4l3/2eA6VAAAQobMLAAAAgBTR2XWHjo+PF10CAAAAwIOiswsAAACA1BB2AQAAAJAawi4AAAAAUsOaXQDASpv1aoiuhAgAkC7CLgDgQZs1LAMAYLmYxggAAABAagi7AAAAAEgNYRcAAAAAqSHsAgAAACA1hF0AAAAApIawCwAAAIDUEHYBAAAAkBrCLgAAAABSQ9gFAAAAQGoIuwAAAABIDWEXAAAAAKkh7AIAAAAgNYRdAAAAAKTGZ4suAAC4vR/e/nrRJQAshV/+5uuZ9v/y57+YUyUALJrOLgAAAABSQ9gFAAAAQGoIuwAAAABIDWt2AQAAD96sa35FWPcLYFno7AIAAAAgNXR2rbCTk5PY2tq6dpu9vb3Y29u7p4oAAACANDo4OIiDg4Nrtzk5Obmnaq4n7Fph5+fn8fHjx2u3OTs7u6dqAAAAgLQ6Ozu7MYNYFsKuFfbo0aPY3Ny8dpv19fV7qgYAgIfsD7/77Uz7f/bnfzGnSgC4C+vr6/HkyZNrtzk5OYnz8/N7quhqwq4Vtrm5GR8+fFh0GQAAAEDKTbJM0tbW1lJ0f1mgHgAAAIDUEHYBAAAAkBqmMQIAC/Wr339adAkAAKSIzi4AAAAAUkPYBQAAAEBqCLsAAAAASA1hFwAAAACpIewCAAAAIDWEXQAAAACkhrALAAAAgNQQdgEAAACQGsIuAAAAAFLjs0UXAACstl/9/tOiSwAAgD6dXQAAAACkhs4uAHjAdGUBAJA2OrsAAAAASA1hFwAAAACpIewCAAAAIDWEXQAAAACkhrALAAAAgNQQdgEAAACQGsIuAAAAAFJD2AUAAABAagi7AAAAAEgNYRcAAAAAqSHsAgAAACA1hF0AAAAApIawCwAAAIDU+GzRBQDAQ/bD218vugQgBf7wu98uugQAWBo6uwAAAABIDWEXAAAAAKlhGiMAAMAS+OVvvl7o43/5818s9PEB5kVnFwAAAACpIewCAAAAIDWEXQAAAACkhrALAAAAgNSwQP0KOzk5ia2trWu32dvbi729vXuqCAAAAEijg4ODODg4uHabk5OTe6rmesKuFXZ+fh4fP368dpuzs7N7qgYAAABIq7OzsxsziGUh7Fphjx49is3NzWu3WV9fv6dqAAAAgLRaX1+PJ0+eXLvNyclJnJ+f31NFVxN2rbDNzc348OHDossAAAAAUm6SZZK2traWovvLAvUAAAAApIbOLgBYYb/6/adFlwAAAEtFZxcAAAAAqSHsAgAAACA1hF0AAAAApIawCwAAAIDUEHYBAAAAkBrCLgAAAABSQ9gFAAAAQGoIuwAAAABIDWEXAAAAAKkh7AIAAAAgNYRdAAAAAKTGZ4suAAAAIA1++ZuvF10CACHsAgBYuF/9/tNM+//f51QHAEAamMYIAAAAQGoIuwAAAABIDdMYAWAG/8//9/9rpv3/5Z89nlMlAABAhLALAACAmH2B/S9//os5VQIwG9MYAQAAAEgNYRcAAAAAqWEaIwAL88PbX888xk9e/PUcKgEAANJCZxcAAAAAqaGzCwAW6Fe//7ToEgAAIFV0dgEAAACQGjq7AACAhfvD73470/6f/flfzKkSAFadsAsAAICZ/fI3X8+0/5c//8WcKgEeOtMYAQAAAEgNYRcAAAAAqSHsAgAAACA1hF0AAAAApIawCwAAAIDUEHYBAAAAkBrCLgAAAABS47NFFwAAADCrP/zutzPt/9mf/8WcKgFg0XR2AQAAAJAaOrtW2MnJSWxtbV27zd7eXuzt7d1TRQAAAEAaHRwcxMHBwbXbnJyc3FM11xN2rbDz8/P4+PHjtducnZ3dUzUAAABAWp2dnd2YQSwLYdcKe/ToUWxubl67zfr6+j1VAwAAzGLR644t+vGB5ba+vh5Pnjy5dpuTk5M4Pz+/p4quJuxaYZubm/Hhw4dFlwEAAACk3CTLJG1tbS1F95ewC+AB++Vvvp5p/y9//os5VQIAADAfrsYIAAAAQGoIuwAAAABIDdMYAVhppmICAACDdHYBAAAAkBrCLgAAAABSwzRGAB60WadBAgAAy0XYBQAAMAd/+N1vF10CACHsAgBgRr/6/adFlwAQES5cA/zIml0AAAAApIawCwAAAIDUMI0RAACAhXPRGGBedHYBAAAAkBrCLgAAAABSwzRGAAAACFdzhLQQdgGw0v7wu9/OtP9nf/4Xc6oEAABYBqYxAgAAAJAawi4AAAAAUkPYBQAAAEBqCLsAAAAASA1hFwAAAACpIewCAAAAIDU+W3QBADxcv/r9p0WXAAAApIywa0adTifq9Xq02+1IkiQiIrLZbOzu7sarV68ik8kstkAAAOBGf/jdbxddAgBzYhrjLXW73SgWi7GzsxONRqMfdEVEJEkStVotNjY2otFoLLBKAAAAgIdF2HUL3W43dnZ2otVq3bhtuVyOcrl8D1UBAAAAIOy6hWKxGEmSRC6Xi2azGcfHx3F8fBzNZjP29/cvbd9oNCYKxgAAAACYjbBrSo1GI9rtduzv78fR0VHs7u5GNpvtr9NVrVbj+Pg4crnc0H4vX75cUMUAAAAAD4ewa0rVajXy+XxUq9Urt8lms9FsNoe+1+12o91u33V5AAAAAA+asGsKnU4nkiS5FGSNk81mLwVinU7nrkoDAAAAIIRdU3n79m2USqXIZDITbZ/P54fuf/fdd3dQFQAAAAA9ny26gFXy4sWLyGazE28/um7X9vb2vEsCAAAAYICwawqj4dVNut3u0P1pgjIAgPvyw9tfL7oEAIC5MY3xDiVJMnR/dFojAAAAAPMl7LpD79+/798ulUoLrAQAAADgYRB23aF6vd6/XalUFlgJAAAAwMNgza47kiRJdDqdiIioVqt3sl7XyclJbG1tzTzO3t5e7O3tzaEiAAAAYNUcHBzEwcHBzOOcnJzMoZrZCbvuSLVajYgfF6Xf39+/k8c4Pz+Pjx8/zjzO2dnZHKoBAAAAVtHZ2dlc8oVlIey6A51OJxqNRmQymTg8PLyzx3n06FFsbm7OPM76+vocqgEAAABW0fr6ejx58mTmcU5OTuL8/HwOFc1G2HUHXr58GRER7969u5Ppiz2bm5vx4cOHOxsfAAAASL95LW+0tbW1FB1iwq45K5fL0el0otlsRi6XW3Q5ANzgD7/77aJLAAAA5sjVGOeo0WhEo9GIer0eu7u7iy4HAAAA4MERds1Ju92Ocrkc9Xo9SqXSossBAAAAeJCEXXPQ6XSiUChEtVoVdAEAAAAskLBrRkmSxPPnz2N/fz/29/cXXQ4AAADAg2aB+hkkSRI7OztRKpWiWq1OvE+r1RKMAQAApMwvf/P1TPt/+fNfzKkSeNh0dt1St9uNQqEQX3zxxcRBV0REsViMfD5/h5UBAAAAPFw6u26h2+3Gzs5OZLPZqFQqkSTJjfskSRKVSiUiInK53F2XCAAAAPAgCbtu4fnz55EkSSRJEtvb21PtW6/X76gqAAAAAIRdU9rZ2YlOp3Pr/V2tEUiTH97+etElAAAADBF2TaFYLAq6AAAAuBMWuIf5EHZNodlsLroEAAAAAK7haowAAAAApIawCwAAAIDUEHYBAAAAkBrCLgAAAABSQ9gFAAAAQGq4GiPACvvh7a9nG+DP/ul8CgEAAFgSOrsAAAAASA1hFwAAAACpIewCAAAAIDWs2QXArf3q958WXQIAsCT+8LvfzrT/Z3/+F3OqBHjohF0AAABARET88jdfz7T/lz//xZwqgdsTdgEPlj/kAAAA6WPNLgAAAABSQ2cXwAqbdc2sz/7sn86pEgAAgOWgswsAAACA1BB2AQAAAJAawi4AAAAAUkPYBQAAAEBqWKAeAGDF/fD214suAVgCf/jdbxddAsBS0NkFAAAAQGoIuwAAAABIDWEXAAAAAKlhzS4AAABIgV/+5utFlwBLQdgFAAAAzMWsgduXP//FnCrhIRN2rbCTk5PY2tq6dpu9vb3Y29u7p4oAAACANDo4OIiDg4Nrtzk5Obmnaq4n7Fph5+fn8fHjx2u3OTs7u6dq4OGZR5u4f7kCAABWwdnZ2Y0ZxLIQdq2wR48exebm5rXbrK+v31M1wCr6w+9+u+gSAACAFbC+vh5Pnjy5dpuTk5M4Pz+/p4quJuxaYZubm/Hhw4dFlwEAAACk3CTLJG1tbS1F95ewC2CBXDEHAABgvh4tugAAAAAAmBedXcDK+uHtr2cb4M/+6Uy7z2O9q8/+/C9mHgMAgOUw6/8f+n9DmA9hF7CyfvX7TzPt/9mMYRcAAADLxzRGAAAAAFJDZxcAAACwFGa9gNOXP//FnCphlensAgAAACA1hF0AAAAApIawCwAAAIDUEHYBAAAAkBoWqAcAAABSwQL3RAi7AAAAACJi9rAsQmC2DExjBAAAACA1dHYBCzOPfzUBAACAQTq7AAAAAEgNnV0AAAAs3B9+99uZx/jsz/9iDpUszjyeg1mt+nMIEcIuWBhXCQEAAID5M40RAAAAgNQQdgEAAACQGqYxAgAAkArLsOYVq20u55AlZxZOZxcAAAAAqaGzCwDggfvV7z8tugQAgLkRdgG3NusVJQEAAGDehF0AAABAKli3jQhrdgEAAACQIjq7YEXNOoXwS1cIAQAAIIV0dgEAAACQGsIuAAAAAFLDNEa4pR/e/nq2Af7sn86nkFuauf6IhR9DGlhAEwAA0sWSM4unswsAAACA1BB2AQAAAJAawi4AAAAAUsOaXQAAAABzMvO6vNbsmpnOLgAAAABSQ9gFAAAAQGqYxrjCTk5OYmtr69pt9vb2Ym9v754qAgAAANLo4OAgDg4Ort3m5OTknqq5nrBrhZ2fn8fHjx+v3ebs7OyeqrlfP7z99cxj/OTFX8+hktubdR73Z3/+FzPt/6vff5pp/4iImHGMWY9hVjPPpQcAAHggzs7ObswgloWwa4U9evQoNjc3r91mfX39nqoBAAAA0mp9fT2ePHly7TYnJydxfn5+TxVdTdi1wjY3N+PDhw+LLgMAAABIuUmWSdra2lqK7i8L1AMAAACQGjq7gIWxZhYAAKTLotcmhgidXQAAAACkiLALAAAAgNQQdgEAAACQGtbs4sH65W++nmn//9t8ygAAAADmSGcXAAAAAKkh7AIAAAAgNYRdAAAAAKSGsAsAAACA1LBAPayoP/zut4suAQAAAJaOzi4AAAAAUkNnFwvxy998PdP+/7f5lAEAAACkjM4uAAAAAFJDZxcLMfN6U3/2OBU1AAAAAPMl7GIl/er3nxZdwlLUAAAAAAwzjREAAACA1BB2AQAAAJAapjECAAAAETGHtY1hCejsAgAAACA1hF0AAAAApIawCwAAAIDUsGYXAMCK+9XvPy26BACYC2uGMQ86uwAAAABIDWEXAAAAAKkh7AIAAAAgNYRdAAAAAKSGsAsAAACA1BB2AQAAAJAawi4AAAAAUkPYBQAAAEBqCLsAAAAASA1hFwAAAACpIewCAAAAIDWEXQAAAACkhrALAAAAgNT4bNEFcHsnJyextbV17TZ7e3uxt7d3TxUBAAAAaXRwcBAHBwfXbnNycnJP1VxP2LXCzs/P4+PHj9duc3Z2dk/VAAAAAGl1dnZ2YwaxLIRdK+zRo0exubl57Tbr6+v3VA0AAACQVuvr6/HkyZNrtzk5OYnz8/N7quhqwq4Vtrm5GR8+fFh0GQAAAEDKTbJM0tbW1lJ0f1mgHgAAAIDUEHYBAAAAkBrCLgAAAABSQ9gFAAAAQGoIuwAAAABIDWEXAAAAAKkh7AIAAAAgNYRdAAAAAKSGsAsAAACA1BB2AQAAAJAawi4AAAAAUkPYBQAAAEBqCLsAAAAASA1hFwAAAACpIewCAAAAIDWEXQAAAACkhrALAAAAgNQQdgEAAACQGp8tugAenoODg/j68P8X/95PfhL/8S/+k0WXA9zS//j1fx//xw8/eC/DivNehnTwXoZ0+B+//u/j//Hd97G+vh57e3uLLmdlCbu4dwcHB/Hx48dY/+lP/SGGFfY//eZ/iLPvv/dehhXnvQzp4L0M6fA//eZ/iH/9//n/xpMnT4RdMzCNEQAAAIDUEHYBAAAAkBrCLgAAAABSQ9g1J7VaLQqFQmxsbMTa2lpsb29HsViMdru96NIAAAAAHgxh14za7XZsbGxEpVKJiIhmsxnHx8dRrVaj0+lEoVCIQqEQ3W53sYUCAAAAPACuxjiDdrsdhUIhIiJKpVLU6/X+z7LZbOzu7sbOzk602+3Y2dmJo6OjyGQyC6oWAAAAIP10dt1St9uNYrEYET8GW4NB16BmsxkREUmS9LcHAAAA4G7o7LqlYrHYn5rYm8I4Tq/Dq9VqRbvdjkajEaVSaabH/rf/9t8O/Zf79z9+/d/H//HDD/Hv/eQn8R//4j9ZdDlTW/X6IxwD87Hqr8Gq1x+x+sew6vWnxaq/Dqtef8TqH8Oq158GaXgNHMPirXr9abAseYWw6xaSJBlaeP6LL764dvsXL15Eq9WKiB+DsVnDrn/8x38c+i/373/6zf8QZ99/H+s//elK/hJd9fojHAPzseqvwarXH7H6x7Dq9afFqr8Oq15/xOofw6rXnwZpeA0cw+Ktev1psCx5hWmMt1CtVvu38/n8jetw7e7u9m93u91+8AUAAADAfAm7bqHRaPRv53K5ifbJZrP922/fvp17TQAAAAAIu6bW6XSG7n/++ecT7TcYiunsAgAAALgbwq4pDa7VFTHcsXWd0e1GQzMAAAAAZifsmtI333wzdP+m9bp6fvaznw3df//+/bxKAgAAAOD/IuyaUpIkQ/dv29l1fHw8t5oAAAAA+JGwa0qjYddtdbvduYwDAAAAwB+tXVxcXCy6iFWytrY2dH/Sp6/dbkehUOjf393djWazOXMNjx7Nnlf+6Z/+afwH/8F/MPM4kzo5OYnz8/NYW1uLP11fv7fHnad/PDuLi4uLlT2GVa8/wjEsg1WvP2L1j2HV649Y/WNY9fojHMMyWPX6I1b/GFa9/ojVP4ZVrz/CMSyDVa8/4o/H8OjRo9jc3Ly3x/23//bfxj/+4z/OPM75+Xn/9iLjJmHXlOYVduXz+Tg8PLxVDY8ePVroSQMAAABwlbW1taHg6759trBHXlGZTGYuUxAnXdh+nH/yT/5J/O//+//eT3tndd+dXQAAAMDymGdn19raWvyTf/JP5lDV7Qm7pvT48eO5hF2PHz++9b7/7t/9u5kfHwAAACCNLFA/pdt2ZI0GZLN0dgEAAAAwnrBrSs+ePRu6P2mX16dPn4bub29vz6skAAAAAP4vwq4p7ezsDN1PkmSi/Y6Pj4fu5/P5udUEAAAAwI+EXVMa7eyaNOwa7ADLZDKRzWbnWRYAAAAAIeyaWi6XG1pv65tvvplov/fv3/dvjwZmAAAAAMyHsOsWvvjii/7tTqcz0T6D21UqlbnXBAAAAEDE2sXFxcWii1g1nU5naO2um57CdrsdhUIhIiKy2eyl9bsAAAAAmA+dXbeQy+WGFphvtVrXbt9sNvu3dXUBAAAA3B2dXbeUJElsb29HxI/h19HR0djtut1ubGxsRMSPV2A8PDy8txoBAAAAHhqdXbeUzWb7HVudTidqtdrY7Z4/fx4RP16BcbDDCwAAAID5E3bNYHd3Nw4PDyOTyUSlUolisRidTie63W602+3Y2dmJTqcTuVwuvv3226GrOAIAAAAwf8KuGeXz+Tg9PY1qtRpJksTz589jY2MjisViPH78OJrNZhwdHS1F0NXpdKJcLsf29nasra3F2tpabG9vR6VSiW63e+txa7VaFAqF2NjY6I9ZLBaj3W4bE+5BkiRRKBRuXD/wJqvyHlmVMWHZOe/hav62LueYMA2ff1djzDtzQeqdnp5e7O7uXkTEtV/1en2qcQ8PDy8ymcxFRFzk8/mLw8PDi+Pj44tms3mRzWb73z89PTUm3IHR9/a07+GeVXmPrMqYsOyc93A1f1uXc0yYhs+/qzHmXRN2pdzp6Wn/5Jvkq1QqTTTu4eHhjfvkcrmLiLjIZrMTnfQPeUyYxunp6cX+/v7Mf7AvLlbnPbIqY8Kyc97DeP62Lu+YMA2ff1djzPsg7Eq5fD5/EREXuVzuotlsXhwfH/cT2HF/0CPiotlsXjvm6elpP9XNZrNXbnd8fNwfM5/PGxPmoFqtXmSz2f57e5b/IV+V98iqjAnLznkP4/nburxjwrR8/l3+Me+LsCvF6vX6RURc7O/vX7nN8fFxP4XtfWUymWvHHfwfgZv+B2DSNvCHPCZM6ujo6OLo6Kh/v/cev+15tirvkVUZE5ad8x4u87d1uceEafj8uxpj3hdhV4r1/oXqJoMpbO/r8PBwom1valFsNps3/hJ5yGPCLI6Ojm79P+Sr8h5ZlTFh2TnvYTL+ti7PmDAtn3+Xf8z7JOxKqd4f6knny1ar1aETuVqtjt2uVCr1t5m0PXFw3HEtog95TJjF6B+gaf6HfFXeI6syJiw75z1Mxt/W5RkTpuHz72qMeZ8eBan09u3bKJVKkclkJto+n88P3f/uu+/GbtdoNPq3c7ncRGNns9mhuowJi7cq75FVGROWnfMe7t6q/M1alTFhGj7/rsaY90nYlVIvXryIarU68fajJ+/29valbTqdztD9zz//fOqxW62WMWHBVuU9sipjwrJz3sPdW5W/WasyJkzL59/lH/O+CbtSKpfLTZxqR0R0u92h+4OJbE+73b5xm3FGtxt84zzkMWFRVuU9sipjwrJz3sPdW5W/WasyJkzL59/lH/O+CbuIiIgkSYbuj7Z1RkR88803Q/cn/WXys5/9bOj++/fvjQkLtCrvkVUZE5ad8x7u3qr8zVqVMeGu+fyb/ve1sIuIGD4JS6XS2G1GfyHcNt09Pj42JizQqrxHVmVMWHbOe7h7q/I3a1XGhLvm82/639fCLiIiol6v929XKpWx24ye8Lc12DL6kMeERVmV98iqjAnLznkPd29V/matyphw13z+vf8x75uwi0iSpD+XtlqtXpna3vZEHW15/PTpkzFhgVblPbIqY8Kyc97D3VuVv1mrMibcJZ9/FzPmfRN20b9qRTabjf39/Tt/vLtIdx/ymLAoq/IeWZUxYdk57+HurcrfrFUZE8bx+Xe1x5yUsOuB63Q60Wg0IpPJxOHh4bXbTnN1i0nHechjwqKsyntkVcaEZee8h7u3Kn+zVmVMuCs+/y5uzPsm7FqARqMRa2trc/3a2dm5VS0vX76MiIh3797duOjc48ePb/UY143zkMdk9S3Te3kaq/IeWZUxYdk57+HurcrfrFUZE+6Kz7+LG/O+CbsesHK5HJ1OJ5rNZuRyuRu3v20qO9q6OI/EOA1jwqKsyntkVcaEZee8h7u3Kn+zVmVMuAs+/y52zPv22cIe+QHL5/PRbDbnOua0J1Gj0YhGoxH1ej12d3cn2ufZs2f9hfwifjyRJ3nc0UXptre3jUkqLMN7+TZW5T2yKmPCsnPew91blb9ZqzImzJvPv4sf874JuxYgm83e2DJ5l9rtdpTL5ajX61EqlSbeb3R6VZIkEyXix8fHQ/fz+bwxSYVFv5dva1XeI6syJiw75z3cvVX5m7UqY8I8+fy7HGPeN9MYH5hOpxOFQiGq1epUb/SIH9PdQUmSTLTfYCtjJpMZCgce8piwKKvyHlmVMWHZOe/h7q3K36xVGRPmxeff5Rnzvgm7HpAkSeL58+exv79/q0us5nK5odbFb775ZqL93r9/3789+qZ5yGPCoqzKe2RVxoRl57yHu7cqf7NWZUyYB59/l2vM+ybseiCSJImdnZ0olUpRrVYn3qdWqw1974svvujfHpzDe53B7SqVyqWfP+QxYVFW5T2yKmPCsnPew91blb9ZqzImzMLn3+Uc815dkHqnp6cX2Wz2olQqTbVfLpe7ODo6Gvre0dHRRUT0v25yeHjY3zabzY7d5iGPCbM4Pj4eOifr9frE+67Ke2RVxoRl57yHyfjbujxjwm35/Lu8Y94nnV0p1+12Y2dnJ7LZbFQqlUiS5MavdrvdX5BudBG6XC43tMhcq9W69vEHr1R3VbL7kMeEWYxe2ncaq/IeWZUxYdk572Ey/rYuz5hwGz7/LveY92rRaRt3K5fLDaWx03xd9S9Zg//ilcvlrnzs09PT/nb5fP7aOh/ymHBbzWZz6D1brVan2n9V3iOrMiYsO+c93Mzf1uUaE6bl8+/yj3lfhF0pNssb/aYcdPB/BK76n4De42cymYvT09Mb633IY8K0eu3Zg+/Z6/4AXWVV3iOrMiYsO+c9XM3f1uUcEybl8+/qjHkfhF0ptbu7O9MbfZL5zYeHhxeZTOYiIi52d3cvjo6OLk5PTy8ODw/7J3sul5vqZH/IY8JNTk9PL3Z3dy/y+fy17998Pt8/LyexKu+RVRkTlp3zHv7I39bVGBNu4vPv6o1514RdzKxarV7kcrn+yZ/JZC7y+fxFs9k0JqyQVXmPrMqYsOyc93D3VuVv1qqMCctgVd4vqzLmXVm7uLi4CAAAAABIAVdjBAAAACA1hF0AAAAApIawCwAAAIDUEHYBAAAAkBrCLgAAAABSQ9gFAAAAQGoIuwAAAABIDWEXAAAAAKkh7AIAAAAgNYRdAAAAAKSGsAsAAACA1BB2AQAAAJAawi4AAAAAUkPYBQAAAEBqCLsAAHiQCoVCbGxsxNra2ty+NjY2Fn1YrBDnIPyo2+1OdH53Op2IiGi1Wje+d8rl8lxr3N7evrG+JEnm+pgREe12e6r3f6PRuHHMTqdz4/O3s7PT375Wq9342Nvb23M/9lmsXVxcXCy6CAAAWJROpxPPnz+Pbrc79P1MJhNffPHF0P/Af/fddxHx4wezJEni/fv3Q/vl8/k4PDy8j7JJEecgD1232x0KanO5XLx58yay2ezQdplM5tJ+X3311ZXB1unp6aV9bqPdbkehUBj7s2q1GqVSaS6Pc51WqxUvX7689HsiIqJUKkW9Xp96zG63G5VKZSggy+fz0Ww2xz7XPZ8+fYp2uz30vGez2Tg+Pp66hrsi7AIA4MErl8uX/jX8+Pj40getcdrtdhSLxeh2u7G/vx/VavWuyiTFnIM8ZKNhV7PZjN3d3Yn3r1QqUavVLn1/Xu+HQqEQ7Xb70vd3d3ej2WzOPP6krgrdjo6OIpfL3WrMwec+k8nEt99+O3FwVywWo9VqRcTyhV2mMQIA8OB9+vRp6H42m50oZIj48V/Bex+mPv/887nXxsPgHIQ/mrZL6qquq0mm9N0kSZKxQdd1j3tX8vn82BDw/fv3tx5z8HdPtVqd6rmf9HfUIgi7AAB48HrrwPTk8/mp9n/27FlExK3/ZR2cg/BHjx8/nsv23W53bMfXNCqVSkSMf09OW+c8jOtUu80Uxp7e755MJhOlUunW4ywbYRcAAA9ab+2jQcVicepxMpnMUv8rN8vLOQiz6XUj5XK5S51Jr1+/vvW43W63P02vF3qNe9z7lM1mL3V3dTqdS4H5pHpBWZqCrghhFwAAD9y46SnTdtX0FhKH23AOwvyMhjaDgdW0ekHZ7u7uUgXJ47q7bhPqdbvd/u+feV+9ctGEXQAAPGijV66bNmSI+PFf2meZRsLD5hyE+Xn16tWl743ryppEb82vcWMuUjabvfR7otVqjb1S43V6x5fL5ZYqzJsHYRcAAA/aV199NXT/pgWHx005g1k4B2F+xq09dd0i81dpNBrR7XYjn8/PZS28brcblUoldnZ2YmNjI9bW1mJjYyOKxeLUtUWMD/Cm7e7qBeTLFubNg7ALAIAHK0mSS/8SftPl7iuVyq0+mMA4zkGYv3FB0LTdXb2pgrftCht97I2NjWg0GvH48ePI5/ORzWb7UywLhUIUCoWpOrN6Ywya5uqT7Xa7H5rf9DtnFQm7AAB4sEbXcblpge8kSaLRaFgbiblxDsL8zbqIey8IGjddcFqFQiFqtVpUq9U4PT2Nw8PDaDabcXx8PDT1uN1ux87OzlRjjwZx3W534sArrQvT9wi7AAB4sEbXSropQCgWi2Ov9gW35RyEuzFuat6k0/zm1dVVLpej3W7H/v5+7O/vX/p5qVQaCpuSJIlarTbx+KVS6dLvgnGL148aXLQ/bQvT9wi7AAB4sEangvXWSup2u/11kTqdTtRqtdje3o5OpzPzv/LDIOcg3I1cLjd2Efeb1rvrre81bu2vaXQ6nYkWuB8N1KZdd+s265MNLkw/j/XIltFniy4AAAAWYdyHgWKxeON+L168uItyeICcg3C3xq1vV61Wr71yaa8zatZF23shVj6fv7YTM5vNRiaT6a/X1eu6mnQdrVevXl3qBqtWq9eG4r3jT2tXV4SwCwCAB2p0+lg2m41yuRzfffdd/0PHp0+f+p01ET+up5TWfwXn/jkHV0On04lKpRLVatVzv2J6i7gPdnM1Go2oVqtjA6jBNa9m6eoa7K666eqqERHPnj0bCuUODw8nDrt6HWiDa3UNrjk2qtPp9J+PtK7XFWEaIwAAD9TowuDlcjn29/f7/+pfr9ej2WzG0dFRHB0dRURMNX2s1WrF9vZ2rK2tDX3t7OxcuSZLp9OJQqFwaftx024ajcalbSf9umodmkqlEjs7O2P3KRaLM18BsPdBslAo9J+bjY2NKBQKU11FLC3u+hzsue517b0G29vbE7/GjUZj7HgbGxsTr3GUJEm/rsFzYWdnJ8rlcjQajWi321EsFq9cVHza8/Wq7be3t8e+J5MkiWKxGDs7Owu9+mW5XL7yvX7V89PpdKJYLF46znHvs9v8Dhn8mmaNqUUYt4bVVVMFB4OuWdbFGzxfKpXKjc/h6Pn1/v37qR5v3PvuqrW7eseexiswDlq7uLi4WHQRAABwn7rdbmxsbAx97+jo6NqujbW1tWg2m1N/QNjY2Oh36fSCjJsUi8VotVqRz+cvdf+MqtVqQx90Dg8PhwKRbrcbnz596nenJEly43EUCoX+h69MJhNHR0fXXiFwEr06c7lcvHr1KnK5XDx+/DiSJInXr19Hq9WKXC4XzWZzpsea5mpk09rd3Z35eei5z3OwZ3t7ux+cDp5bSZJEvV7vhxa5XK4frl2nd55G/NiVdnx8fOM+nU4nXr58GZ1Op9+RUigUIpvNRrfbjffv30e1Wh0KeG/6yDrt+XrV89DT7Xbj9evX0W63h4Kkm16fuzZ6nN9+++2NgUyj0YhyuXzla9put6NQKFx6LR4/fhyNRqP/uyWXy8W7d+8i4o9dS72fHR8fz/y+GH0/TPtcJ0kS29vbVx7n4O/hnnHnVW+7ccfUe4xBo79vewbfG6VSaeqrLD5+/Hjq9/ng+dFzeno6dI4MPs/zOJ8rlUr/98akvwPuzQUAADww9Xr9IiL6X5lM5trtT09PLyLi4vT0dOrHKpVK/cepVqsT7ZPNZid+vGq12h9/d3f32m0nPY7d3d2pa77K8fFx/3iuG2t/f7//Wtzmee45PDwcem3n+VWv129d16j7PAd7eq9DRFw0m81LP++9BpOcSxcX058ng++F/f39icbOZrNzr2PweTg8PLz08+Pj4/7twefk6OjoxrHvUi6Xm/pc7J1n447z4uLH1ySbzQ4dc89Nz2u1Wr3xvJ1U7/y+7XN9fHx8EREXuVxu7M8Hf09edUzNZvPac7/3GINfVz2vg6/VuPfaXRj3u2/0GHvnwyTvq0kMvj/mNea8mMYIAMCDM9rJcdPUsCRJIpfL3Wpay+C/6E/yr969tVbq9fpEj/fNN9/0b9+0Nkwmk+kvhnxTDT2zTHXpTeXsHc/+/v6V2/bW0Ol2u/Hy5ctbP+aquM9zcHCMnnGv6+Bi1aNTLMeZ9Dzpdruxs7PT77hrNps3dji+efMmImKizpNpz9fB52Hc8z7Y0TPaybNIg11mk661dHh4GJlM5srzq91uX9lNOfi8jts/n8+vzJVB9/f3L713Rqcy9u7PujB9RAx1kX369Gnm8SbRW59s0Ogx9t53aV6YvkfYBQDAgzM61eOmkGjSaV3jPHv2rH97knVYelOOJv0wO3gsX3zxxUTjXydJkv4HtWw2e+vpSb31liJ+/KA5yfH0HqvVal25TtNN8vl8XFxc3MnXPBdzvs9zMGI4vLoqoHj8+PHQ/XFrxQ3+bNLz5Pnz5/3Xs1qtThRIZTKZ2N3djc8///za7aY9X28KcO5KoVCYeD2zcW5bd7vdvvL3Qrfbjd3d3bGBYqfT6T+vV10U4dOnTyt1ZdDR9+/glOdOpxOdTidyudxcpqoOBlz3ObVv9BwbPcaHsDB9j7ALAIAHZfBDXM8kIdFtDX5wui48iPhxfZ3emlqTGDyWSTq2IuLa7qqIyUKRm/TWAerVNck6Zb1tB8dIq/s+ByOGO8muCtZGw9jrgqNJz5NyudwPuvL5/I3n36BCoXDjOTjt+Tr43prkKnnzMrr+17RuU3cvCOyFzqMymcyV781JwrV8Pr9Si5yP69jqHX8vJJpHV1fEcHB8n7/Lxi2s3zvGwYXpZ+kQXRXCLgAAHpTRDx6ThkRXmWS6Vy806Ha7l0KOnm63G5VKJfb39yfupnr79m3/9lUfOq/6oHuVwVBk2n3H7Vev1yfeb/C5WaqFjudsEefgV1991b991bkyGKjcFGJMcp50Op2hiwVMcy5E/PjB/aYum2nP13lN0b1vt6m7d17cJrQefF5XqXvrOr1F+AclSRK1Wi3a7XZks9m5nROD7+dx4fZdGneMrVarfz48hCmMEcIuAAAemMGAKGK2qUyDVyu7zmB4dVV3V6VSicePH0/cBRUx/AF43AfSdrs99YesWad5lcvloW6zaca4qfMtLe77HByc6tdbt21Uq9XqB1PZbPbG7sJJzpPBtddKpdLcrmQ5bR09SZL0z7GrnodlNFj3NFOLDw8Pbx3eLGq6521N+ntu3Hul971ZppmOGn2NBsPmSbRarVvXM647rRcET/s7eZV9tugCAADgvnS73UtTiW7bvdTpdKJcLk8UTuVyuf6Hx/fv31/qVul1wIwuWn6d0WPJZrPR7Xbj06dP0e12o91ux+vXr28dnt3mA9Hg+jAR0394HAy7Bhf2T5NFnIOjU/16wUAvRKnX6/3XvlQq3TjeJOdJbw2kntse46R1ZLPZG6eLDQZ4dz1tdJ5uO7W43W5P3U3X269n1osiLJte99ZoN+S4rq9R0/zDQaFQGHqMarU68TpZvYt03HaNvt6xDP4u7nkoXV0Rwi4AAB6QcR+GBxeQn1Sn04nnz59HxGQL/Q4usj1uet7Lly9jd3d36g+ygzY2NsZuN82H+lnXMxr9cDXNIsjjpval0SLOwcEQdXA6U08+n+8vHD/J8z7JeTLYvXbd1QBnMVhHkiRTnbP3uV7XrG4ztbh3nt0m1Bt8XlelC6i3IPwkgdSrV68uvQduu2D7VY/3xRdfDAVLSZJEpVKZ6B8fnj9/PvbKitOoVCpjw66HsDB9j2mMAAA8GKPTx26zVlKr1YqdnZ3odruRz+cn2n/wQ8toV09vUfo3b95MVcfgsdTr9f4VA09PT+Po6Cjy+fzUXRmzrmc0WNO0H5IHP9DfVTiyDBZxDg6+rr3zZPD5LZfLU60VN8l5MrjNbcK8aes4Pj6+8Wqag1bp/LpNx2Wz2bx1V9ZN06OXUa8rdJKp0OOuuDjJwvSDV1i87nsR43+H1Wq1qNVqV47f7XZjZ2cnOp3OVB2544ybrjjp36u00NkFAMCD0O12L/1r/lUfVMbt+9VXX0W9Xh8KqyadEnLVFRl7i9K/efNm6g8hV30AzmQykcvlolgsTrXI+zzWMxp8bqbtnBnsQlilKWbTWMQ5eNV5UqlU+j97/fr1xOHmpOfJ4Hl+F116056vdz0177qrHva8f//+yvdFLpcbG3Dcdmpxu92+1ZS10ef1pgsELIvB6ZqNRuPGDqZqtdp/LcZdwXCccevYHR4eXvlY9Xo9tre3h75XqVTi7du38erVq8jlcvH48eNIkiTevn3bD8KazeZc3jOD7/He/YdE2AUAQOpd9UG02+3GxsZGfPHFF0MfSr777rvodruRJEm8f/9+7FSVTCYzVfdTNpsd+iAZ8eOHj2fPnk3dRTV4da+rFqw+Pj6eqitj8EPRbcKm0edomg/JrVZraP9ZuxqW0aLOwaumHPa6PHpriCVJMtEH7EnPk8F676KbZNrz9T6m5t20ZlhvLb1xrgo9bxMg917P23RnrtrC9L3pgeMC4OsCr940wd7+N2k0GmOnBbZarajVamMDs2w2G/V6/VLo2Ol0rgxG6/X63K4IOXiMae6WvdIFAACkWDabvYiIuX+VSqWp6tjd3e3ve3x8fHF0dNS/Pa1qtdofa39/f+w2p6enU42Zz+f7YzabzalrOj09HXp+pjmuwdeoWq1O/djLbpHn4OBjj74m+/v7N55HoyY9TwYfd9r3yjzrGFfP0dHRxI9Tr9dvtd+oiLjI5/NT7zf4e2PSx9/f37/IZrNTP9bo493m98Btjf7+uOlY6/X6RSaTufE9ct3z0Gw2r31Njo+PJ3qM3lcmkxn7e2/wHLquzsPDw8mfsAn1HnvS9/e0Bn+H3PacuyvCLgAAuAeDHwqazeZFLpe7dbCTy+X6Y83rA9LgB69JNZvNoQ93gx8MJw27Bj8I5nK5qevmasfHx0MfxKf9+TiTnieDocldvK6DddwU7N7mOHsWHXYNvtcnlclkLur1+tSPdXEx3fM6T9OGXavm9PT0olqtXuRyuf7vyWw2e7G7u3vr12pSV4Vw87DMYZcF6gEA4B4MXpGxUqlEt9uN/f39W401OGVn0qkptVpt7DSciMvrGU2qUqkMTX0bXIh8koWiu91uf4pPNpuNd+/eTfzY3OymKWnZbLb/el83xW7ceDedJ4NTtwan3U6i1WpdW8u062+t2tS8WTQajeh2u7e66t7g75W7WNfsIctkMrG/vx9HR0dxenoaFxcXcXx8HM1m886vkHh6epraq9teR9gFAAD3YHSR+nGLHU9icIHzST+4t1qtqFQqV36oGrwS4qTrfJXL5UuBx+BaW4NjjtO78ljEj8/N0dGRD9dzNniOXfW6DoZSg4t8jzPNeZLP54fWHpp0cezeAt7XnduDdUzyHhjcftoLJyza4PGNXsl1VJIkUS6Xb73m3SxXU4VlI+wCAIB7MPgv66VS6dZXORv8QDrJGJVKJYrF4rWLHg8GaJOMWSwWo9FoXAo8crlcP1Cr1WpXdvMkSRI7Ozv9RbQFXXdjkk6swQB09EIBo6Y9TwavKtdoNK4NvDqdTj/8vCkIHqxjkvDqNgFxz+DzMemVM+fp1atX/eewWCxe+fr0nr/d3d1bd4xO+7zepUU816SLqzECAMA9yWaz8enTpxs7aK7S7XaHPpCOXkWvd/W+T58+xeHhYbRarf50wtErgvW02+2hKYf1ej0eP34cmUwmHj9+3P/QmSRJHB4e9qdJRcTYAK1er0cmk4larRZPnz6NN2/eRC6Xi8ePH0eSJFGv16PRaEQ2m43Dw0MdJHdkdMrq48ePr9y2VCr1t69UKmPPz9HzZFLHx8dRLpej0Wj0p9Lm8/n+tN7vvvsuWq1WfPr0KZrN5o3nw7R1jAZs1z0P4wx2hd3m+GeVyWTi6Ogonj9/Hp1OJzY2NqJUKsXOzk7/SnvNZjPa7XaUSqVb/25pNBr///bu6EZxGAqgKNtBaIESqMU1uAT3AC2lBpfgGqAD7xcjkmGAZDST1dtzpPxFwgTzc6U8T77fktdOf8IWz5rltt4nT209NAwAAP4XKaXVJ5zlnBedDHZ/PRoc3FqbDBFfeqWUnq631tpTSh9rHoahH4/HXkoJN3z6X1JrnZxUeL8Hcs4Ph47fTga9v/e2T7/aJ8Mw9Jzz24Ova6095zw5FfE2oPud/8SzdaSUPq1j/lnzdT/bg621Xkp5+Bxzzv10Oi0e3r5bOaD+3jiOPaX0MbT+9p9a8jvMlVImQ/Dnz+mnTvGbmw+oH4ahj+PYL5fL5GI7899iHMe3T77cwp/ee/92MQMAAABY4Xq97vb7/cv7aq2rXwFnvfP5/HLu3uFw2LXWfmlFr4ldAAAAAIRhQD0AAAAAYYhdAAAAAIQhdgEAAAAQhtgFAAAAQBhiFwAAAABhiF0AAAAAhCF2AQAAABCG2AUAAABAGGIXAAAAAGGIXQAAAACEIXYBAAAAEIbYBQAAAEAYYhcAAAAAYYhdAAAAAIQhdgEAAAAQhtgFAAAAQBhiFwAAAABhiF0AAAAAhCF2AQAAABCG2AUAAABAGGIXAAAAAGGIXQAAAACEIXYBAAAAEIbYBQAAAEAYYhcAAAAAYYhdAAAAAIQhdgEAAAAQhtgFAAAAQBhiFwAAAABhiF0AAAAAhCF2AQAAABDGX40nIzPnIPpFAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 1200x900 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"velo_found = ak.to_numpy(\n",
" energy_emissions[(~energy_emissions.lost) & (energy_emissions.quality == 1)][\"velo\"]\n",
")\n",
"rich_found = ak.to_numpy(\n",
" energy_emissions[(~energy_emissions.lost) & (energy_emissions.quality == 1)][\"rich\"]\n",
")\n",
"energy_found = ak.to_numpy(\n",
" energy_emissions[(~energy_emissions.lost) & (energy_emissions.quality == 1)][\n",
" \"energy\"\n",
" ]\n",
")\n",
"\n",
"velo_lost = ak.to_numpy(\n",
" energy_emissions[(energy_emissions.lost) & (energy_emissions.quality == 1)][\"velo\"]\n",
")\n",
"rich_lost = ak.to_numpy(\n",
" energy_emissions[(energy_emissions.lost) & (energy_emissions.quality == 1)][\"rich\"]\n",
")\n",
"energy_lost = ak.to_numpy(\n",
" energy_emissions[(energy_emissions.lost) & (energy_emissions.quality == 1)][\n",
" \"energy\"\n",
" ]\n",
")\n",
"\n",
"diff_found = velo_found - rich_found\n",
"diff_lost = velo_lost - rich_lost\n",
"\n",
"xlim = 20000\n",
"nbins = 60\n",
"\n",
"plt.hist(\n",
" diff_lost,\n",
" bins=nbins,\n",
" density=True,\n",
" alpha=0.5,\n",
" histtype=\"bar\",\n",
" color=\"#F05342\",\n",
" label=\"lost\",\n",
" range=[-xlim, xlim],\n",
")\n",
"plt.hist(\n",
" diff_found,\n",
" bins=nbins,\n",
" density=True,\n",
" alpha=0.5,\n",
" histtype=\"bar\",\n",
" color=\"#107E7D\",\n",
" label=\"found\",\n",
" range=[-xlim, xlim],\n",
")\n",
"# plt.xlim(-20000, 20000)\n",
"# plt.yscale(\"log\")\n",
"# plt.title(\"emitted energy difference\")\n",
"plt.xlabel(r\"$E_{VELO} - E_{RICH1+UT}$ [MeV]\")\n",
"plt.ylabel(\"a.u.\")\n",
"plt.legend(title=\"LHCb Simulation\")\n",
"plt.show()\n",
"# plt.savefig(\n",
"# \"/work/cetin/Projektpraktikum/thesis/emitted_energy_difference.pdf\",\n",
"# format=\"PDF\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"nbins = 6\n",
"quality_cut = electrons[jcut].quality != -1\n",
"\n",
"### all split in velo and rich\n",
"\n",
"fig, axs = plt.subplots(3, 3, figsize=(15, 6))\n",
"ax = axs.ravel()\n",
"for jcut, ax in enumerate(ax):\n",
"ax.hist(\n",
"ak.to_numpy(electrons[jcut][quality_cut][\"velo_length\"]),\n",
"bins=nbins,\n",
"density=True,\n",
"alpha=0.5,\n",
"color=\"darkorange\",\n",
"histtype=\"bar\",\n",
"label=\"velo\",\n",
"range=[0, nbins],\n",
")\n",
"ax.hist(\n",
"ak.to_numpy(electrons[jcut][quality_cut][\"rich_length\"]),\n",
"bins=nbins,\n",
"density=True,\n",
"alpha=0.5,\n",
"color=\"blue\",\n",
"histtype=\"bar\",\n",
"label=\"rich\",\n",
"range=[0, nbins],\n",
")\n",
"ax.set_xlim(0, nbins)\n",
"ax.set_ylim(0, 1)\n",
"ax.set_title(\"Photon Cut: \" + str(np.round(jcut \\* 0.05, 2)) + f\"$E_0$\")\n",
"ax.set_xlabel(\"number of photons\")\n",
"ax.set_ylabel(\"a.u.\")\n",
"plt.suptitle(\"number of photons in velo and rich\")\n",
"plt.legend()\n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n",
"### found\n",
"\n",
"fig, axs = plt.subplots(3, 3, figsize=(15, 6))\n",
"ax = axs.ravel()\n",
"for jcut, ax in enumerate(ax):\n",
"ax.hist(\n",
"ak.to_numpy(\n",
"electrons[jcut]~(electrons[jcut].lost) & quality_cut][\"velo_length\"]\n",
"),\n",
"bins=nbins,\n",
"density=True,\n",
"alpha=0.5,\n",
"color=\"darkorange\",\n",
"histtype=\"bar\",\n",
"label=\"velo\",\n",
"range=[0, nbins],\n",
")\n",
"ax.hist(\n",
"ak.to_numpy(\n",
"electrons[jcut]~(electrons[jcut].lost) & quality_cut][\"rich_length\"]\n",
"),\n",
"bins=nbins,\n",
"density=True,\n",
"alpha=0.5,\n",
"color=\"blue\",\n",
"histtype=\"bar\",\n",
"label=\"rich\",\n",
"range=[0, nbins],\n",
")\n",
"ax.set_xlim(0, nbins)\n",
"ax.set_ylim(0, 1)\n",
"ax.set_title(\"Photon Cut: \" + str(np.round(jcut \\* 0.05, 2)) + f\"$E_0$\")\n",
"ax.set_xlabel(\"number of photons\")\n",
"ax.set_ylabel(\"a.u.\")\n",
"plt.suptitle(\"number of photons of found electrons\")\n",
"plt.legend()\n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n",
"### lost\n",
"\n",
"fig, axs = plt.subplots(3, 3, figsize=(15, 6))\n",
"ax = axs.ravel()\n",
"for jcut, ax in enumerate(ax):\n",
"ax.hist(\n",
"ak.to_numpy(\n",
"electrons[jcut](electrons[jcut].lost) & quality_cut][\"velo_length\"]\n",
"),\n",
"bins=nbins,\n",
"density=True,\n",
"alpha=0.5,\n",
"color=\"darkorange\",\n",
"histtype=\"bar\",\n",
"label=\"velo\",\n",
"range=[0, nbins],\n",
")\n",
"ax.hist(\n",
"ak.to_numpy(\n",
"electrons[jcut](electrons[jcut].lost) & quality_cut][\"rich_length\"]\n",
"),\n",
"bins=nbins,\n",
"density=True,\n",
"alpha=0.5,\n",
"color=\"blue\",\n",
"histtype=\"bar\",\n",
"label=\"rich\",\n",
"range=[0, nbins],\n",
")\n",
"ax.set_xlim(0, nbins)\n",
"ax.set_ylim(0, 1)\n",
"ax.set_title(\"Photon Cut: \" + str(np.round(jcut \\* 0.05, 2)) + f\"$E_0$\")\n",
"ax.set_xlabel(\"number of photons\")\n",
"ax.set_ylabel(\"a.u.\")\n",
"plt.suptitle(\"number of photons of lost electrons\")\n",
"plt.legend()\n",
"plt.tight_layout()\n",
"plt.show()\n",
"quality_cut = electrons[jcut].quality != -1\n",
"\n",
"### all split in lost and found\n",
"\n",
"fig, axs = plt.subplots(3, 3, figsize=(15, 6))\n",
"ax = axs.ravel()\n",
"for jcut, ax in enumerate(ax):\n",
"ax.hist(\n",
"ak.to_numpy(\n",
"electrons[jcut](electrons[jcut].lost) & (quality_cut)][\"photon_length\"]\n",
"),\n",
"bins=10,\n",
"density=True,\n",
"alpha=0.5,\n",
"color=\"darkorange\",\n",
"histtype=\"bar\",\n",
"label=\"lost\",\n",
"range=[0, 10],\n",
")\n",
"ax.hist(\n",
"ak.to_numpy(\n",
"electrons[jcut](~electrons[jcut].lost) & (quality_cut)][\"photon_length\"]\n",
"),\n",
"bins=10,\n",
"density=True,\n",
"alpha=0.5,\n",
"color=\"blue\",\n",
"histtype=\"bar\",\n",
"label=\"found\",\n",
"range=[0, 10],\n",
")\n",
"ax.set_xlim(0, 10) # ax.set_ylim(0,1) # ax.set_yscale('log')\n",
"ax.set_title(\"Photon Cut: \" + str(np.round(jcut \\* 0.05, 2)) + f\"$E_0$\")\n",
"ax.set_xlabel(\"number of photons\")\n",
"ax.set_ylabel(\"a.u.\")\n",
"plt.suptitle(\"number of photons in lost and found\")\n",
"plt.legend()\n",
"plt.tight_layout()\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "tuner",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 2
}