{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "f6978afd",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-19T08:13:26.469737Z",
     "iopub.status.busy": "2026-06-19T08:13:26.469500Z",
     "iopub.status.idle": "2026-06-19T08:13:29.170218Z",
     "shell.execute_reply": "2026-06-19T08:13:29.169281Z"
    },
    "tags": [
     "remove-cell"
    ]
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "An NVIDIA GPU may be present on this machine, but a CUDA-enabled jaxlib is not installed. Falling back to cpu.\n"
     ]
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import brainmass\n",
    "import brainstate\n",
    "import brainunit as u\n",
    "import jax.numpy as jnp\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "brainstate.random.seed(0)\n",
    "brainstate.environ.set(dt=0.1 * u.ms)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1bd09b8a",
   "metadata": {},
   "source": [
    "# Wong-Wang Excitatory-Inhibitory (Dynamic Mean Field)\n",
    "\n",
    "The **two-population (excitatory-inhibitory) reduced Wong-Wang model**, often called the *dynamic mean field* (DMF), is the resting-state workhorse for whole-brain modeling. Each region has an excitatory NMDA gating variable $S_E$ and an inhibitory GABA gating variable $S_I$; a feedback-inhibition weight $J_i$ regulates the local excitation-inhibition balance so that the excitatory population settles near a biologically plausible ~3 Hz resting rate. It is the node model behind much resting-state BOLD / functional-connectivity work.\n",
    "\n",
    "*(Distinct from the reduced two-choice* `WongWangStep` *decision model.)*\n",
    "\n",
    "**Reference:** Deco, Ponce-Alvarez, Hagmann, Romani, Mantini & Corbetta (2014), *How local excitation-inhibition ratio impacts the whole brain dynamics*, Journal of Neuroscience 34(23):7886-7898."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "64adbab8",
   "metadata": {},
   "source": [
    "## Build the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "fba284a0",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-19T08:13:29.173968Z",
     "iopub.status.busy": "2026-06-19T08:13:29.173182Z",
     "iopub.status.idle": "2026-06-19T08:13:29.199567Z",
     "shell.execute_reply": "2026-06-19T08:13:29.198801Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "WongWangExcInhStep(\n",
       "  in_size=(1,),\n",
       "  out_size=(1,),\n",
       "  a_e=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(310., dtype=float32)\n",
       "  ),\n",
       "  b_e=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(125., dtype=float32)\n",
       "  ),\n",
       "  d_e=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(0.16, dtype=float32)\n",
       "  ),\n",
       "  gamma_e=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(0.000641, dtype=float32)\n",
       "  ),\n",
       "  tau_e=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(100., dtype=float32)\n",
       "  ),\n",
       "  w_p=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(1.4, dtype=float32)\n",
       "  ),\n",
       "  W_e=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(1., dtype=float32)\n",
       "  ),\n",
       "  a_i=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(615., dtype=float32)\n",
       "  ),\n",
       "  b_i=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(177., dtype=float32)\n",
       "  ),\n",
       "  d_i=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(0.087, dtype=float32)\n",
       "  ),\n",
       "  gamma_i=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(0.001, dtype=float32)\n",
       "  ),\n",
       "  tau_i=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(10., dtype=float32)\n",
       "  ),\n",
       "  W_i=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(0.7, dtype=float32)\n",
       "  ),\n",
       "  J_N=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(0.15, dtype=float32)\n",
       "  ),\n",
       "  J_i=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(1., dtype=float32)\n",
       "  ),\n",
       "  I_o=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(0.382, dtype=float32)\n",
       "  ),\n",
       "  I_ext=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(0., dtype=float32)\n",
       "  ),\n",
       "  G=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(2., dtype=float32)\n",
       "  ),\n",
       "  lamda=Const(\n",
       "    fit=False,\n",
       "    t=IdentityT(),\n",
       "    reg=None,\n",
       "    val=Array(0., dtype=float32)\n",
       "  ),\n",
       "  init_S_e=Constant(value=0.001),\n",
       "  init_S_i=Constant(value=0.001),\n",
       "  method=exp_euler\n",
       ")"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "node = brainmass.WongWangExcInhStep(in_size=1, J_i=1.0, G=2.0)\n",
    "node"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b62a46b9",
   "metadata": {},
   "source": [
    "## Run a simulation\n",
    "\n",
    "We monitor the excitatory gating variable `S_e` and the derived excitatory firing rate via the `H_e()` observable."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "21f66382",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-19T08:13:29.201433Z",
     "iopub.status.busy": "2026-06-19T08:13:29.201155Z",
     "iopub.status.idle": "2026-06-19T08:13:29.451137Z",
     "shell.execute_reply": "2026-06-19T08:13:29.449809Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.0771968364715576"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sim = brainmass.Simulator(node, dt=0.1 * u.ms)\n",
    "res = sim.run(3000. * u.ms,\n",
    "              monitors={'S_e': 'S_e', 'rate_e': lambda m: m.H_e()})\n",
    "float(u.get_magnitude(res['rate_e'])[-1, 0])  # resting excitatory rate (Hz)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "919faea9",
   "metadata": {},
   "source": [
    "## Visualize\n",
    "\n",
    "The gating variable settles to a steady value and the excitatory rate stabilizes near the ~3 Hz resting fixed point."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "0b40c372",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-19T08:13:29.453487Z",
     "iopub.status.busy": "2026-06-19T08:13:29.453227Z",
     "iopub.status.idle": "2026-06-19T08:13:29.656731Z",
     "shell.execute_reply": "2026-06-19T08:13:29.656064Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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eu3v27799ltoNBp88803aNeunXG7uYlJrfGpQ/v27XHs2DEIIUyOby72W2H4lOjixYsNah8eHg5A/0nUrX5yQ0RE9oV9h1vvO9Tn6tWrSE1NxYIFCzB37lzjdkOS6UZ1XV/Hjh0hhECHDh3MDmextaa+77dr1w6urq44c+aMReJZuHAhNm/ejI0bN6Jr1651tjtz5gy6detmkXMSAVwil8guLVq0CHv27MHKlSvx2muvYdCgQXjqqaeMJY9yuRxxcXH49ttvceDAgVr711d14O7ubraE0/AJxY37/vbbb0hPTzdpZxiLWVRUZLK9bdu26N27Nz799FOT144cOYLt27fj7rvvrv+ib9CzZ0/07NkTH330Eb766is8/PDDxjHNdTGUYG7evBkXLlwwbj916hR++OGHm16rWq3G6tWrax3X3d291rU2VWxsLHJzc02Wo6uoqMCqVasatP+uXbvM/owNY6fNlRWb4+/vj+HDh+PDDz80mzi5dOlSg45DRETSY9/h1vsO9TF3bYB+VZO/MyRq/n5948ePh0KhwIIFC2odRwhhstSuLTT1fd/Z2Rn9+vUz+/tzq3788Ue88sorePnllxEXF1dv28zMTAwaNKjJ5yQyYCUIkY398MMPOH78eK3tgwYNQnh4OP744w/MmTMHU6ZMwdixYwEAa9asQe/evfH000/jf//7HwDgjTfewPbt2zFs2DA88cQT6NatGy5evIgvvvgCv/zyS51LrkVFRWHDhg1ISkpC//794eHhgbFjx+Lee+/Fxo0bcf/99+Oee+7BmTNnsGLFCnTv3t1kCTNXV1d0794dGzZsQOfOndGqVStERkYiMjISb7/9NsaMGYPo6GhMmzbNuMydt7c35s+ff0v3KT4+Hs8//zwANLicdf78+di+fTsGDx6Mp556ClqtFkuXLkVkZCSysrKM7UaNGgWlUomxY8fiH//4B65du4ZVq1bB39+/VqcgKioKy5cvx7/+9S906tQJ/v7+uOuuu27pWv7uH//4B5YuXYpJkyZh5syZxnHMLi4uAG5efTJjxgyUlZXh/vvvR9euXVFZWYk9e/Zgw4YNCAsLw9SpUxscy7Jly3DHHXegR48emD59OsLDw5Gfn4/09HScP38ev//+e5OulYiImo59h4ZpTN+hLl5eXhg6dCjeeustVFVVITg4GNu3bzdbBREVFQVAv5zwww8/DGdnZ4wdOxYdO3bEv/71LyQnJyM7OxtxcXHw9PTEmTNnsGnTJjzxxBPGeG2lqe/748aNw8svv4zi4uI6h680xKRJk9CmTRtERETgs88+M3lt5MiRCAgIAABkZGTgypUrGDduXKPPRVSLzdejIXJQN1vmbPXq1aK6ulr0799fhISEiKKiIpP9lyxZIgCIDRs2GLedPXtWxMfHizZt2giVSiXCw8NFQkKCcbk6c8vcXbt2TTzyyCPCx8dHADAueafT6cQbb7wh2rdvL1QqlejTp4/47rvvxOTJk2sti7dnzx4RFRUllEplrSXvfvzxRzF48GDh6uoqvLy8xNixY8WxY8dM9jcsR3fp0qU679fFixeFQqEQnTt3voW7LERqaqro06ePUCqVomPHjuKjjz4Szz33nHBxcTFp980334iePXsKFxcXERYWJt58803xySef1FriLi8vT9xzzz3C09NTADAul1vXErnmlqozdw9Pnz4t7rnnHuHq6iratGkjnnvuOfHVV18JAGLv3r31XuMPP/wgHn/8cdG1a1fh4eEhlEql6NSpk5gxY4bIz8+/pfslhBB//fWXiI+PF4GBgcLZ2VkEBweLe++9V3z55Ze3fCwiIrIc9h2us1bfob7jnj9/Xtx///3Cx8dHeHt7iwcffFBcuHDB7HK/r732mggODhZyubxWX+Krr74Sd9xxh3B3dxfu7u6ia9euIiEhQZw4caLe2Aw/f3NLGgtRd7/jZpryvp+fny+cnJzEf//7X5PtkydPFu7u7nXuh78tkVvf7/WNv3svvPCCaNeunXEJZyJLkAlhpdn6iIiaoLCwEG3btsXcuXPrnMG8oeLi4nD06FGz43jtyeLFi/Hss8/i/PnzXJGFiIjoFlmy70B1mzZtGv7880/8/PPPVj2PRqNBWFgYXnzxRcycOdOq5yLHwjlBiMgurVmzBlqtFo899tgt7VdeXm7y/OTJk9iyZQuGDx9uweia7u9xVlRU4MMPP0RERAQTIERERI3Q2L4D3Zp58+Zh//79+PXXX616ntWrV8PZ2RlPPvmkVc9DjoeVIERkV3bu3Iljx45hzpw5uPPOO7Fx48Zb2r9t27aYMmUKwsPDcfbsWSxfvhwajQYHDx5ERESElaK+dWPGjEG7du3Qu3dvqNVqfPbZZzh69CjWrl2LRx55pMnHV6vVtRItfxcYGNjk8xAREUmtqX2HloDv+0QNxyQIEdmV4cOHY8+ePRg8eDA+++yzW66KmDp1Knbt2oW8vDyoVCpER0fjjTfeQN++fa0UceMsXrwYH330EbKzs6HVatG9e3f885//xMSJEy1y/ClTpuDTTz+ttw3/909ERC1BU/sOLQHf94kajkkQIqIW6NixYyZLBZsTExNjo2iIiIjImvi+T9RwTIIQERERERERkUPgxKhERERERERE5BCcpA7AHul0Oly4cAGenp6QyWRSh0NERNQiCCFQUlKCoKAgyOWO+zkM+xlERESW19B+BpMgZly4cAGhoaFSh0FERNQinTt3DiEhIVKHIRn2M4iIiKznZv0MJkHM8PT0BKC/eV5eXhJHQ0RE1DIUFxcjNDTU+D7rqNjPICIisryG9jOYBDHDUJrq5eXFzgkREZGFOfoQEPYziIiIrOdm/QzHHZBLRERERERERA6FSRAiIiIiIiIicghMghARERERERGRQ2AShIiIiIiIiIgcApMgREREREREROQQmAQhIiIih7V8+XL07NnTuFJLdHQ0fvjhhwbtu379eshkMsTFxVk3SCIiIrIYJkGIiIjIYYWEhGDhwoXIyMjAgQMHcNddd2HcuHE4evRovftlZ2fj+eefx5AhQ2wUKREREVkCkyBERETksMaOHYu7774bERER6Ny5M15//XV4eHhg7969de6j1Wrx6KOPYsGCBQgPD7dhtERERNRUTIIQERERQZ/cWL9+PUpLSxEdHV1nu1dffRX+/v6YNm2aDaMjIiIiS3CSOgAiIiIiKR0+fBjR0dGoqKiAh4cHNm3ahO7du5tt+8svv+Djjz9GVlZWg4+v0Wig0WiMz4uLi5saMhERETUSkyBEdkIIAU21DpVaHTRV+q+V1fqHplp7/XutYZv+a7VWh2qdgPaGh/759e3VOgGdcbtAtU6n/6q94XUhIARMv9bEpRM3fDVuM20vBCCgb3N9m/4YOiGg0+n3vfF6zd+HG76/YQ/T7XUfR9TxpK59TLff/NxEjuSJoeGIjw6TOgyr69KlC7KysqBWq/Hll19i8uTJ2L17d61ESElJCR577DGsWrUKfn5+DT5+SkoKFixYYOmwTew6UYBXNh1B71AfLHu0r1XPRURE1JwxCULUREIIlFZqoS6vQlFZJdTlVVCXVaGovEr/fXkVSjXVKNVoUVZZjbJK/VfT5/rvdfxjm4jsSElFtdQh2IRSqUSnTp0AAFFRUdi/fz+WLFmCDz/80KTdX3/9hezsbIwdO9a4TafTAQCcnJxw4sQJdOzYsdbxk5OTkZSUZHxeXFyM0NBQi15DRaUWuUXlCPJxsehxiYiIWhomQYjqoNMJFJRocP5qGQpKNCgorsClaxoUFGtMvl4trUS1FbIXSic5VAo5lE76h8rp+vdKhRwqJwWUTnI4K+RQyAEnuRwKuQxOcpn+q0L/VSGTQSGXG58bX5frtyvkgEIuh1wGKOQyyADIZDLIZIBcJoNcBsigfy6reS6XXX8uw/XncrPbTNvKZNevUb+l5nuT7TD7pEHta+K/WTtZHSepu/3fz0LU8rX1dsw/qHU6ncnwFYOuXbvi8OHDJtteeeUVlJSUYMmSJXUmNlQqFVQqlVViNeD/ooiIiBqGSRByaNVaHc5eKcPJ/Gs4XXgN566U4/zVMpy/Wo7cq+Wo1OoafCylQg4vV2f4uDnDx9UZ3q7O8HbTf/VUOcFV6QR3lQJuSie4KxVwVSrgrnKCm1IBd6X+q4tSoU92KOT8o5uIyAaSk5MxZswYtGvXDiUlJVi3bh3S0tKwbds2AEB8fDyCg4ORkpICFxcXREZGmuzv4+MDALW2S4XD94iIiOrHJAg5jIKSChw6p8aRC2qczL+GkwUlOFNYiipt3T1GhVyGQC8XtPV2gb+XCm08VGjjqYK/pwvaeOq/b+WuhI+bM1ydFUxcEBE1MwUFBYiPj8fFixfh7e2Nnj17Ytu2bRg5ciQAICcnB3J5c1hMj+8/REREDSF5EmTZsmV4++23kZeXh169euH999/HgAEDzLY9evQo5s6di4yMDJw9exbvvfceZs2aVatdbm4uXnjhBfzwww8oKytDp06dsHr1avTr18/KV0P2QlOtxaHzauw7cwW/nyvCofNq5BVXmG3r6qxAJ38PdGzjjnat3BDSyg0hvq4I9XVDW28XOCmaQ+eXiIga4+OPP6739bS0tHpfX7NmjeWCsQAWghAREdVP0iTIhg0bkJSUhBUrVmDgwIFYvHgxYmNjceLECfj7+9dqX1ZWhvDwcDz44IN49tlnzR7z6tWrGDx4MO6880788MMPaNOmDU6ePAlfX19rXw5JSKsT+P18EX49WYi9Zy4j4+xVVFSZDmWRyYAIfw9EBnujW6AXOgV4IMLfA0HerpDL+QkaERE1X4ZCxLpW3iIiIiI9SZMgixYtwvTp0zF16lQAwIoVK/D999/jk08+wYsvvlirff/+/dG/f38AMPs6ALz55psIDQ3F6tWrjds6dOhghehJaqWaavx88hJ+/KMAu44X4HJppcnrrd2VGBjeCn3b+aJniA9uC/KCu0ry4iciIiKLYyqfiIioYST7i7CyshIZGRlITk42bpPL5YiJiUF6enqjj/vNN98gNjYWDz74IHbv3o3g4GA8/fTTmD59ep37aDQak1ngi4uLG31+sq7Kah3SThTg66wL2PFHPiqrr1d7eLo4YUiEH6LDW+P28Nbo5O/BOTqIiMihsA6EiIiofpIlQQoLC6HVahEQEGCyPSAgAMePH2/0cU+fPo3ly5cjKSkJL730Evbv349nnnkGSqUSkydPNrtPSkoKFixY0OhzkvUdu1CMtb+dxXeHLkJdXmXc3r61G0Z0DUBMN3/079AKzpy/g4iIHBCT/kRERA3T4sYG6HQ69OvXD2+88QYAoE+fPjhy5AhWrFhRZxIkOTkZSUlJxufFxcUIDQ21SbxUt8pqHbYezcN/07OxP/uqcbu/pwr39QpCXJ9g3BbkxY4fERFRDU4JQkREVD/JkiB+fn5QKBTIz8832Z6fn4/AwMBGH7dt27bo3r27ybZu3brhq6++qnMflUoFlUrV6HOSZVVUabF+Xw4+/Ok0Lqr1K7o4yWWIvS0Qkwa0Q3TH1lBwIlMiIiIjw7sicyBERET1kywJolQqERUVhdTUVMTFxQHQV3GkpqYiMTGx0ccdPHgwTpw4YbLtzz//RPv27ZsSLtlARZUW/00/iw9/Oo3Ca/o5Wtp4qvDIgHZ4ZGA7BHi5SBwhERGRfWJRJBERUcNIOhwmKSkJkydPRr9+/TBgwAAsXrwYpaWlxtVi4uPjERwcjJSUFAD6yVSPHTtm/D43NxdZWVnw8PBAp06dAADPPvssBg0ahDfeeAMPPfQQ9u3bh5UrV2LlypXSXCTdlE4n8O2hC3hr6wnkFpUDAIJ9XPHU8I6YEBUCF2eFxBESERE1ExwPQ0REVC9JkyATJ07EpUuXMHfuXOTl5aF3797YunWrcbLUnJwcyOXXJ7q8cOEC+vTpY3z+zjvv4J133sGwYcOQlpYGQL+M7qZNm5CcnIxXX30VHTp0wOLFi/Hoo4/a9NqoYQ7mXMX8b47i9/NqAECQtwtmxXTG/X2DOckpERFRA7EShIiIqGEknxg1MTGxzuEvhsSGQVhYGEQDPuG49957ce+991oiPLKSUk013tl+Amv2ZEMIwF2pwNN3dsK0Ozqw8oOIiKiRWAdCRERUP8mTIOR4fj55CS9+ddg49GV832Akj+mGNp6cnJaIiKgxZDVTo3I0DBERUf2YBCGbqazW4Z3tJ7Dyp9MAgBBfV6SM74EhEW0kjoyIiKiZ43AYIiKiBmEShGzi7OVSPPP5QePcH4/d3h7Jd3eFm5K/gkRERJYiOCCGiIioXvwLlKzu55OXkLA2E8UV1fB2dcZbE3oi9rZAqcMiIiJqMVgIQkRE1DBMgpDVCCHw6Z5svPb9H9DqBPq088GyR/oiyMdV6tCIiIhaJM4JQkREVD8mQcgqdDqB+d8exX/SzwLQT36aMr4HVE5c+YWIiMjSZDJOjEpERNQQTIKQxVVpdXjuf7/jm98vQCYDksd0xfQh4cYOGhEREVkW32GJiIgahkkQsqjySi2eXpuBXScuwUkuw3sTe2NsryCpwyIiInIILAQhIiKqH5MgZDEVVVo88d8D+PlkIVyc5Vj+/6JwZxd/qcMiIiJq8VhsSURE1DBMgpBFVGl1SFyXiZ9PFsJNqcCnjw9A/7BWUodFRETkUAQnBSEiIqqXXOoAqPnT6gRmbcjCj38UQOUkx0eT+zEBQkREZEMyzgpCRETUIEyCUJP96/tj+P7QRTgrZFjxWBQGdfSTOiQiIiIiIiKiWpgEoSb5T3o2Vv+aDQBY9FBvzgFCREQkAcOcIBwNQ0REVD8mQajRdh0vwPxvjgIAZsd24SowRETU7Cxfvhw9e/aEl5cXvLy8EB0djR9++KHO9qtWrcKQIUPg6+sLX19fxMTEYN++fTaM2DwOhiEiImoYJkGoUc4UluKZzw9CJ4CH+oXg6eEdpQ6JiIjoloWEhGDhwoXIyMjAgQMHcNddd2HcuHE4evSo2fZpaWmYNGkSdu3ahfT0dISGhmLUqFHIzc21ceTmCS6SS0REVC+uDkO3rKJKi6c+y0CJphr9w3zxr7gekHFtPiIiaobGjh1r8vz111/H8uXLsXfvXtx222212q9du9bk+UcffYSvvvoKqampiI+Pt2qs9eLbMBERUYMwCUK3bO7XR3A8rwR+HkosfaQvlE4sKCIiouZPq9Xiiy++QGlpKaKjoxu0T1lZGaqqqtCqlX2sisY5QYiIiOrHJAjdkq8yzuN/B85DLgP+PakPArxcpA6JiIioSQ4fPozo6GhUVFTAw8MDmzZtQvfu3Ru07wsvvICgoCDExMTU2Uaj0UCj0RifFxcXNznmvzMskcscCBERUf34ET412LkrZZhXMxHqszGduRQuERG1CF26dEFWVhZ+++03PPXUU5g8eTKOHTt20/0WLlyI9evXY9OmTXBxqftDgZSUFHh7exsfoaGhlgwfwPXVYYiIiKh+TIJQg+h0As9/8TuuaaoR1d4XT9/ZSeqQiIiILEKpVKJTp06IiopCSkoKevXqhSVLltS7zzvvvIOFCxdi+/bt6NmzZ71tk5OToVarjY9z585ZMnwTguNhiIiI6sXhMNQgn/x6Br+duQI3pQKLHuoFhZwfORERUcuk0+lMhq/83VtvvYXXX38d27ZtQ79+/W56PJVKBZVKZckQa+G7MhERUcMwCUI3daawFG9tOwEAePmebmjf2l3iiIiIiCwjOTkZY8aMQbt27VBSUoJ169YhLS0N27ZtAwDEx8cjODgYKSkpAIA333wTc+fOxbp16xAWFoa8vDwAgIeHBzw8PCS7DgPWgRAREdWPSRCqlxACc78+gspqHYZE+OGRAe2kDomIiMhiCgoKEB8fj4sXL8Lb2xs9e/bEtm3bMHLkSABATk4O5PLro4eXL1+OyspKTJgwweQ48+bNw/z5820ZugnjUvXMghAREdXLLuYEWbZsGcLCwuDi4oKBAwdi3759dbY9evQoHnjgAYSFhUEmk2Hx4sX1HnvhwoWQyWSYNWuWZYN2EN8euoifTxZC6STHa+Mir3eyiIiIWoCPP/4Y2dnZ0Gg0KCgowI8//mhMgABAWloa1qxZY3yenZ0NIUSth5QJEIAToxIRETWU5EmQDRs2ICkpCfPmzUNmZiZ69eqF2NhYFBQUmG1fVlaG8PBwLFy4EIGBgfUee//+/fjwww9vOmEZmacur8Jr3+lnx0+8sxPC/DgMhoiIyJ6xEISIiKh+kidBFi1ahOnTp2Pq1Kno3r07VqxYATc3N3zyySdm2/fv3x9vv/02Hn744XonGbt27RoeffRRrFq1Cr6+vtYKv0V7b8efuFSiQXgbd/xjWLjU4RAREVEdWAhCRETUMJImQSorK5GRkYGYmBjjNrlcjpiYGKSnpzfp2AkJCbjnnntMjl0XjUaD4uJik4ejO33pGj7bexYA8Op9kVA5KSSOiIiIiG6GS+QSERHVT9IkSGFhIbRaLQICAky2BwQEGGdbb4z169cjMzPTOJP7zaSkpMDb29v4CA0NbfS5W4qFPxxHtU5gRFd/3BHhJ3U4REREVA/Oi0pERNQwkg+HsbRz585h5syZWLt2LVxcXBq0T3JyMtRqtfFx7tw5K0dp3347fRnbj+VDIZch+e6uUodDREREN8UBMURERA0h6RK5fn5+UCgUyM/PN9men59/00lP65KRkYGCggL07dvXuE2r1eKnn37C0qVLodFooFCYDu1QqVT1zi/iSHQ6gTe2/AEAeLh/KDr5e0ocERERETUUR8MQERHVT9JKEKVSiaioKKSmphq36XQ6pKamIjo6ulHHHDFiBA4fPoysrCzjo1+/fnj00UeRlZVVKwFCprYfy8fv59VwVyrw7MjOUodDREREDcAlcomIiBpG0koQAEhKSsLkyZPRr18/DBgwAIsXL0ZpaSmmTp0KAIiPj0dwcLBxfo/KykocO3bM+H1ubi6ysrLg4eGBTp06wdPTE5GRkSbncHd3R+vWrWttJ1M6ncDiH/8EAEy7owP8PFgdQ0RE1JwIzgpCRERUL8mTIBMnTsSlS5cwd+5c5OXloXfv3ti6datxstScnBzI5dcLVi5cuIA+ffoYn7/zzjt45513MGzYMKSlpdk6/BZl+7E8HM8rgafKCY/f0UHqcIiIiKiBDIUgHA5DRERUP8mTIACQmJiIxMREs6/9PbERFhZ2y8u/MTlyc/oqkJMAgKmDw+DjppQ4IiIiImooGcfDEBERNUiLWx2GGufGKpBpd4RLHQ4RERE1AitBiIiI6sckCEEIgWW7/gKgrwLxdnOWOCIiIiK6FawDISIiahgmQQi/nbmCw7lqqJzkmDKYc4EQERERERFRy2QXc4KQtD76+TQAYEJUCFq5cy4QIiKi5sYwJcitzptG5MiEEMYhZMLwHPphZQLCZHiZYZvhe7J//DHZPye5DC7OCtuf1+ZnJLtyquAafvyjADKZfllcIiIian5kHBBD9dDpBCqqtSir1KK8Uv+1okqLSq0OmiodKrVaVFbroKl5VNY8jN9rtdBU6VCl1aFKJ6DVClTpdKjWClTXfNUJgWqdgFYnUK0V0Iqa73UCouZ7ndDHohOGB6CreU3UfG/YLm54XYjrCT5R8x9zSQsYvze0Edef/609EUlv0oBQpIzvafPzMgni4D7+RV8FMrJbAMLbeEgcDRERETUF/7ZrmYQQuKapxpXSSlwurcSVa5W4UlqJ4ooqFFdUo7i8CiUV1SipqPmq0X+9VlGN0spqVFTppL4EIiK7wSSIA7taWomvMnMBANOHckUYIiKi5oor5DZfQghcuqbB+avlyL1ajvNXy3H+ahnOXy1H4TUNLtckPCq1lklkuDjL4aZ0gouTHCpnBZQKOVTOcigVciid5FA56b8qnRTXv1dc366Qy+CskMNJLoOTQg5nhQwKuQxOchnkMhmcFDIo5HIoZPrt+od+GWeFTN9GLgfkNa/LZfrvDc8B1GzXv6b/3ZZBJrs+AbBMpq990m+Tmfz+y2Smr9fsfX1/2fXKKcM2c+0hM329ZlfTNmT3+P9G+yaX6AfEJIgD+yLjHCqrdYgM9kK/9r5Sh0NERERNxDJ/+6Sp1uL0pVKcLLiGc1fKkFt0PdmRe7UcmuqGJThcnRVo5a5Eaw8lWrkr4e3qDE8XJ3i6XP/q5eIEr5rnHi5OcFc6wVWpgKuz/iGX869CInJsTII4KJ1OYN1vOQCA/zewvTHDTURERM2X4IAYyZVUVOHweTWyzhfhSK4aJ/JKkH25DFpd3T8bmQxo6+WCEF83BPu6IsTXFcE+rgjwcjEmPVq7q+CqtP0EgkRELQ2TIA7q178KkX25DJ4qJ9zXO0jqcIiIiKgJ+FmGNHQ6gRP5JdiffQVZ54pw6Lwaf126ZrYix9PFCZ0DPNG+tRtCfN0Q4qNPdoT4uiHQ2wVKJ7ntL4CIyAExCeKgPtt7FgAwvm8w3JT8NSAiImoJOBzG+q6UViL1j3zsPF6Avacv42pZVa02Ib6u6BXqg14h3uga6IXOAZ4I8FKx8paIyA7wr18HlKeuwI9/FAAAHr29vcTREBERUVNxkkbrOnu5FDuO5WP70XwcOHsFN45scVMqENXeF33a+aJ3qDd6hvjAz0MlXbBERFQvJkEc0BcHzkGrExgQ1gqdAzylDoeIiIgshIUglpNdWIqvMs9j29E8/Jl/zeS17m29MLJ7AIZ2boOeId5wVnAoCxFRc8EkiIMRQmDjQf2yuBP7h0ocDREREVmCYZQFh8M0jaZai21H8/H5bzlIP33ZuF0hl2Fgh1YY1T0AMd0DEOLrJmGURETUFExbO5jMnCKcKSyFm1KB0ZGBUodDREQkqeXLl6Nnz57w8vKCl5cXoqOj8cMPP9S7zxdffIGuXbvCxcUFPXr0wJYtW2wUbd041UTTnL9ahn99dwy3v5GKZz4/iPTTlyGTAXd2aYPFE3sj85WRWDf9dkwZ3IEJECKiZo6VIA7mq8zzAIDRkYFwV/HHT0REji0kJAQLFy5EREQEhBD49NNPMW7cOBw8eBC33XZbrfZ79uzBpEmTkJKSgnvvvRfr1q1DXFwcMjMzERkZKcEV/B1LQW5FdmEpPkg7hY2ZuaiumeijrbcLHuoXiof6hyLYx1XiCImIyNL4V7ADqajS4rvfLwAAJvQNkTgaIiIi6Y0dO9bk+euvv47ly5dj7969ZpMgS5YswejRozF79mwAwGuvvYYdO3Zg6dKlWLFihU1iNocTo96ak/klWLbrFL75/YJxktPBnVrj8cEdMKxzGzhxjg8iohaLSRAHkvpHAYorqhHk7YLbw1tLHQ4REZFd0Wq1+OKLL1BaWoro6GizbdLT05GUlGSyLTY2Fps3b67zuBqNBhqNxvi8uLjYIvGawzlB6ldQUoH3dvyJDfvPGZMfd3X1R8KdnRDV3lfa4IiIyCaYBHEgG2uGwsT1CYZczk+MiIiIAODw4cOIjo5GRUUFPDw8sGnTJnTv3t1s27y8PAQEBJhsCwgIQF5eXp3HT0lJwYIFCywa898ZJ0a16lmar2qtDp/8egZLfjyJ0kotAGBU9wA8MyICkcHeEkdHRES2xCSIgygqq8TuPy8BAMb3DZY4GiIiIvvRpUsXZGVlQa1W48svv8TkyZOxe/fuOhMhtyo5OdmkeqS4uBihoVyhzVYOnS9C8sbDOHpBX4HTK8Qbc+7tjn5hrSSOjIiIpMAkiIPYfiwf1TqBroGe6OTvKXU4REREdkOpVKJTp04AgKioKOzfvx9LlizBhx9+WKttYGAg8vPzTbbl5+cjMLDuFddUKhVUKpVlg/4bQ32n4HgYo8pqHd7dfgKrfj4NnQC8XZ3x8t3dMCEqhBWxREQOjLM+OYgthy8CAO7p0VbiSIiIiOybTqczmcPjRtHR0UhNTTXZtmPHjjrnELEVLpFrKruwFA8s34MPf9InQO7rFYTU54bhof6hTIAQETk4u0iCLFu2DGFhYXBxccHAgQOxb9++OtsePXoUDzzwAMLCwiCTybB48eJabVJSUtC/f394enrC398fcXFxOHHihBWvwL4VlVXil5OFAIC7ezIJQkREZJCcnIyffvoJ2dnZOHz4MJKTk5GWloZHH30UABAfH4/k5GRj+5kzZ2Lr1q149913cfz4ccyfPx8HDhxAYmKiVJdggnUgwKaD53HPv3/G4Vw1fNycsfKxKPx7Uh/4eVi3GoeIiJoHyZMgGzZsQFJSEubNm4fMzEz06tULsbGxKCgoMNu+rKwM4eHhWLhwYZ2lp7t370ZCQgL27t2LHTt2oKqqCqNGjUJpaak1L8Vu3TgUpmMbD6nDISIishsFBQWIj49Hly5dMGLECOzfvx/btm3DyJEjAQA5OTm4ePGisf2gQYOwbt06rFy5Er169cKXX36JzZs3IzIyUqpLqMHqhspqHZI3HsKzG35HaaUWAzq0wg8zh2DUbXUPVSIiIscjExIPHh04cCD69++PpUuXAtCXoIaGhmLGjBl48cUX6903LCwMs2bNwqxZs+ptd+nSJfj7+2P37t0YOnToTWMqLi6Gt7c31Go1vLy8Gnwt9mryJ/uw+89LeG5kZ8wYESF1OERE5KBa2vtrY1njPpwquIaYRbvh7eqM3+eNssgxmxN1WRWe/CwD6acvQy4DnhkRgRl3RUDBoS9ERA6joe+vklaCVFZWIiMjAzExMcZtcrkcMTExSE9Pt9h51Go1AKBVK8ebBbyorBK/nuJQGCIiopbMuESuA06MeqawFPd/8CvST1+Gu1KBjyb3w6yYzkyAEBGRWZKuDlNYWAitVouAgACT7QEBATh+/LhFzqHT6TBr1iwMHjy4zlJVjUZjMgFacXGxRc5tD1L/KOBQGCIiohbOUf/cP5KrxmMf/4arZVUI8nbBx1P6o1tbx60yIiKim5N8ThBrS0hIwJEjR7B+/fo626SkpMDb29v4CA0NtWGE1pV6XL+M38juATdpSURERM2dI9WBZOZcxaRVe3G1rAo9gr2xOXEwEyBERHRTkiZB/Pz8oFAokJ+fb7I9Pz+/zklPb0ViYiK+++477Nq1CyEhIXW2S05OhlqtNj7OnTvX5HPbg8pqHX76Uz8UJqYbkyBEREQtlczB1sjde/oyHvvoN5RUVKNfe1+snT4Q/p4uUodFRETNgKRJEKVSiaioKKSmphq36XQ6pKamIjo6utHHFUIgMTERmzZtws6dO9GhQ4d626tUKnh5eZk8WoLfzlzGNU012niq0CPYW+pwiIiIyNocoBQk4+xVPL5mP0ortRjcqTX+M20AvFycpQ6LiIiaCUnnBAGApKQkTJ48Gf369cOAAQOwePFilJaWYurUqQCA+Ph4BAcHIyUlBYB+MtVjx44Zv8/NzUVWVhY8PDzQqVMnAPohMOvWrcPXX38NT09P5OXlAQC8vb3h6uoqwVVK48dj+gqbEV39IefkYERERC2W4V2+pedA/rhYjKmr96GsUoshEX5YFd8PLs4KqcMiIqJmRPIkyMSJE3Hp0iXMnTsXeXl56N27N7Zu3WqcLDUnJwdy+fWClQsXLqBPnz7G5++88w7eeecdDBs2DGlpaQCA5cuXAwCGDx9ucq7Vq1djypQpVr0eeyGEwI9/FADgUBgiIqKWzhFGw5y9XIrHPt6H4opqRLX3xYePRTEBQkREt0zyJAign7sjMTHR7GuGxIZBWFjYTZd/c8Tl4f7uRH4JcovKoXKSY3AnP6nDISIiIhtoqX2g4ooqPL5mPwqvadA10BOfTO4PN6VddGOJiKiZafGrwziq1JoqkDs6+cFVyU9JiIiIWjJZC14kt1qrQ8LaTPx1qRSBXi749PEB8HbjHCBERNQ4TIK0UGkn9EmQu7r5SxwJERER2UpLrAN57btj+PlkIVydFfhocj8EeHEVGCIiajwmQVqgkooqZOYUAQCGRrSRNhgiIiKyOsOcIC1tNMyXGefxafpZAMB7E3sjkqvdERFREzEJ0gKl/3UZWp1ABz93hLZykzocIiIiolv2Z34JXtl8GACQNLIzRkcGShwRERG1BEyCtEA/nywEAAyJ4ISoREREjkS0kAExZZXVeHptJiqqdBgS4YfEOztJHRIREbUQTIK0QD+fvAQAGMKhMERERA6hpS2RO/frozhVcA0BXiq8N7E35PIWdoFERCQZJkFamJzLZci+XAYnuQy3h7eSOhwiIiKyoZYwJ8i2o3n4MuM85DLg3w/3gZ+HSuqQiIioBWESpIX5+ZS+CqRvO194unD5OCIiIkcgqykFae45kMJrGry0UT8PyBNDO2JgeGuJIyIiopaGSZAW5uc/9fOB3MH5QIiIiBxGSxgsIoTAK5uO4HJpJboGeuLZkRFSh0RERC0QkyAtiFYn8OtfnBSViIjIYTXjUpCtR/Kw9WgenBUyLHqoN1ROCqlDIiKiFohJkBbk2IVilFRUw1PlhJ4hPlKHQ0RERDbS3CdGLamowvxvjwIAnhrWEd2DvCSOiIiIWiomQVqQvacvAwD6d2gFBWdRJyIicjjNdYncd7f/ifxiDcJau+FpLodLRERWxCRIC/LbGX0SZGAHrgpDRETkSGQ1s4I0x9VhDp9X4z/p2QCAf8X1gIszh8EQEZH1MAnSQmh1AvvOXAEA3M6Z1ImIiBxKcx0OI4TAvG+OQCeAcb2DOLE7ERFZHZMgLcTxvGIUV1TDQ+WE2ziOloiIyCE1t0KQ7w9fRGZOEVydFXjp7m5Sh0NERA6ASZAWYu9pfRVIVHtfOCn4YyUiImqIlJQU9O/fH56envD390dcXBxOnDhx0/0WL16MLl26wNXVFaGhoXj22WdRUVFhg4jNa46FIBVVWiz84TgA4MlhHRHg5SJxRERE5Aj413IL8VvNpKgcCkNERNRwu3fvRkJCAvbu3YsdO3agqqoKo0aNQmlpaZ37rFu3Di+++CLmzZuHP/74Ax9//DE2bNiAl156yYaRmyea0aQgq3/Nxvmr5Qj0csETQ8OlDoeIiByEk9QBUNPpdAL7svWVIAPDOSkqERFRQ23dutXk+Zo1a+Dv74+MjAwMHTrU7D579uzB4MGD8cgjjwAAwsLCMGnSJPz2229Wj7dONaUgzSUFcrW0Est2nQIA/HN0F7gqORkqERHZBitBWoA/C0pQVFYFN6UCPYK9pQ6HiIio2VKr1QCAVq3q/lBh0KBByMjIwL59+wAAp0+fxpYtW3D33Xebba/RaFBcXGzysDRZMxsQs/Ln07imqUb3tl6I6x0sdThERORAWAnSAhhWhYlq7wtnzgdCRETUKDqdDrNmzcLgwYMRGRlZZ7tHHnkEhYWFuOOOOyCEQHV1NZ588sk6h8OkpKRgwYIF1grbRHMYDVN4TYM1v2YDAJJGdoZc3rwSOERE1LzxL+YWIPPsVQD6JAgRERE1TkJCAo4cOYL169fX2y4tLQ1vvPEGPvjgA2RmZmLjxo34/vvv8dprr5ltn5ycDLVabXycO3fO4rE3pyVyP9z9F8qrtOgZ4o0R3fylDoeIiBwMK0FagMycIgBA33ZMghARETVGYmIivvvuO/z0008ICQmpt+2cOXPw2GOP4f/+7/8AAD169EBpaSmeeOIJvPzyy5DLTT9jUqlUUKlUVou9OSkorsB/0s8CAJ4d2Rmy5pS9ISKiFoGVIM3cpRINcq6UQSYDerfzkTocIiKiZkUIgcTERGzatAk7d+5Ehw4dbrpPWVlZrUSHQqEwHk8KN6YS7HmFmBW7T0NTrUOfdj4Y3rmN1OEQEZEDsoskyLJlyxAWFgYXFxcMHDjQONGYOUePHsUDDzyAsLAwyGQyLF68uMnHbM4yc/RDYTr7e8LLxVniaIiIiJqXhIQEfPbZZ1i3bh08PT2Rl5eHvLw8lJeXG9vEx8cjOTnZ+Hzs2LFYvnw51q9fjzNnzmDHjh2YM2cOxo4da0yG2FpzqKi4WlqJz/flAABmxbAKhIiIpCF5EmTDhg1ISkrCvHnzkJmZiV69eiE2NhYFBQVm25eVlSE8PBwLFy5EYGCgRY7ZnBmSIH3b+0gbCBERUTO0fPlyqNVqDB8+HG3btjU+NmzYYGyTk5ODixcvGp+/8soreO655/DKK6+ge/fumDZtGmJjY/Hhhx9KcQm12GshyH/3nkV5lRbd23phaISf1OEQEZGDkgmJayYHDhyI/v37Y+nSpQD0M7OHhoZixowZePHFF+vdNywsDLNmzcKsWbMsdkwAKC4uhre3N9RqNby8vBp3YTby0Ip07Mu+grcm9MRD/UKlDoeIiKhOzen91ZqscR+ullaiz2s7AACn37jb7lZcqajSYvDCnbhcWoklD/fGOC6LS0REFtbQ91dJK0EqKyuRkZGBmJgY4za5XI6YmBikp6fbzTHtVWW1Dr+fLwLASVGJiIhIzx4LQb7KPI/LpZUI9nHF3T3aSh0OERE5MElXhyksLIRWq0VAQIDJ9oCAABw/ftxmx9RoNNBoNMbnxcXFjTq3rf1xsRiaah28XZ0R7ucudThEREQkkRun19AX+dpPJYhWJ7Dqp9MAgGl3dICzQvLR2ERE5MD4LgQgJSUF3t7exkdoaPMYVmKcD6Sdj92VvRIREZHtyOwo6fF3O47lI/tyGbxdnTGxf/PoYxERUcslaRLEz88PCoUC+fn5Jtvz8/PrnPTUGsdMTk6GWq02Ps6dO9eoc9taZk4RAA6FISIiouvsbTjMf/dmAwAeGdgO7ipJi5CJiIikTYIolUpERUUhNTXVuE2n0yE1NRXR0dE2O6ZKpYKXl5fJozk4VDMfSO92PpLGQURERBKz00KQUwXX8Oupy5DLgEcHtpM6HCIiImnnBAGApKQkTJ48Gf369cOAAQOwePFilJaWYurUqQCA+Ph4BAcHIyUlBYB+4tNjx44Zv8/NzUVWVhY8PDzQqVOnBh2zJVCXVeHs5TIAQM9gH2mDISIiIrthT0vkfrb3LADgrq4BCPF1kzgaIiIiO0iCTJw4EZcuXcLcuXORl5eH3r17Y+vWrcaJTXNyciCXXy9YuXDhAvr06WN8/s477+Cdd97BsGHDkJaW1qBjtgSHc9UAgHat3ODt5ixxNERERCQlmR1WgpRVVuOrjPMAgMei20scDRERkZ7kSRAASExMRGJiotnXDIkNg7CwsJpZzxt/zJbgUG4RAKBHiLe0gRAREZFdEXYyK8jmgxdQoqlGWGs3DOnkJ3U4REREALg6TLN1+Ly+EqRnMJMgREREju7GQhB7GQ6z9jf9UJj/d3t7rmJHRER2g0mQZupQTRKElSBEREQks7PxMEdy1Th6oRhKhRwP9A2ROhwiIiIjJkGaoSullcgtKgcARLIShIiIiOzMlzVzgYzsHgBfd6XE0RAREV3HJEgzZJgUNdzPHV4unBSViIjI0dlTHYimWovNWbkAgAn9WAVCRET2hUmQZujw+SIArAIhIiKi2qSeEyT1jwIUlVUhwEuFoRFtpA2GiIjobxq8OkyfPn0aPN40MzOz0QHRzRnmA+nJ+UCIiMiBsC9Stxtvi9Srw3xx4BwA4IG+IVBwQlQiIrIzDU6CxMXFWTEMuhWG4TA9WAlCREQOhH2RusnsZEBMQXEFdv95CQAwIYpDYYiIyP40OAkyb948a8ZBDVR4TYOL6grIZMBtTIIQEZEDYV+kYaQcDvP94YvQCaB3qA/C23hIFwgREVEdOCdIM/PHxWIAQFhrd3ioGpzDIiIiohbMXlbI/eb3CwCA+3oFSRwJERGReY36K1qr1eK9997D//73P+Tk5KCystLk9StXrlgkOKrNkATp1tZT4kiIiIikw75I3aQqBDl3pQwHc4ogkwH39mwrURRERET1a1QlyIIFC7Bo0SJMnDgRarUaSUlJGD9+PORyOebPn2/hEOlGf1wsAQB0C/SSOBIiIiLpsC9SNyHReJhvD+mrQG7v0Br+Xi6SxEBERHQzjUqCrF27FqtWrcJzzz0HJycnTJo0CR999BHmzp2LvXv3WjpGusH1ShAmQYiIyHGxL2LKHobDfJNVMxSmN4fCEBGR/WpUEiQvLw89evQAAHh4eECt1q9Wcu+99+L777+3XHRkQlOtxamCawCAbkFMghARkeNiX6RuUtSBnMwvwfG8EjjJZRgTGShBBERERA3TqCRISEgILl68CADo2LEjtm/fDgDYv38/VCqV5aIjE6cKrqFaJ+Dl4oQgb5aZEhGR42JfxJTUS+R+WzMh6tDObeDjppQ0FiIiovo0Kgly//33IzU1FQAwY8YMzJkzBxEREYiPj8fjjz9u0QDpOuN8IG29ILOHulciIiKJsC9SNymmBNl6NA8AJ0QlIiL716jVYRYuXGj8fuLEiWjXrh3S09MRERGBsWPHWiw4MsX5QIiIiPQs1RdJSUnBxo0bcfz4cbi6umLQoEF488030aVLl3r3Kyoqwssvv4yNGzfiypUraN++PRYvXoy777670dfUFCafjdg4CXKmsBR/5l+Dk1yGEV0DbHtyIiKiW9SoJMjfRUdHIzo62hKHonoYkiDdmQQhIiIy0di+yO7du5GQkID+/fujuroaL730EkaNGoVjx47B3d3d7D6VlZUYOXIk/P398eWXXyI4OBhnz56Fj49PE6+i8aSsD91eUwVye3hreLs5SxgJERHRzTU6CXLy5Ens2rULBQUF0Ol0Jq/NnTu3yYGRKSEEK0GIiIhuYIm+yNatW02er1mzBv7+/sjIyMDQoUPN7vPJJ5/gypUr2LNnD5yd9X/0h4WF3foFWImwcSnItpokSOxtrAIhIiL716gkyKpVq/DUU0/Bz88PgYGBJvNTyGQyJkGsoKBEg6tlVVDIZYgI8JA6HCIiIklZqy9iWGWmVatWdbb55ptvEB0djYSEBHz99ddo06YNHnnkEbzwwgtQKBSNOm9TSTVXWEFxBQ6eKwIAjOzOVWGIiMj+NSoJ8q9//Quvv/46XnjhBUvHQ3U4VlMFEu7nDhdnaTpYRERE9sIafRGdTodZs2Zh8ODBiIyMrLPd6dOnsXPnTjz66KPYsmULTp06haeffhpVVVWYN29erfYajQYajcb4vLi42GIxm2PLiVF3/JEPIYBeoT4I5Mp1RETUDDQqCXL16lU8+OCDlo6F6nG8ZmWYrhwKQ0REZJW+SEJCAo4cOYJffvml3nY6nQ7+/v5YuXIlFAoFoqKikJubi7fffttsEiQlJQULFiywaKx/J9W8qNuP5gMARnXnUBgiImoeGrVE7oMPPojt27dbOhaqx8kCfRKksz+HwhAREVm6L5KYmIjvvvsOu3btQkhISL1t27Zti86dO5sMfenWrRvy8vJQWVlZq31ycjLUarXxce7cOYvFbSDFaJjiiirs+asQABB7G4fCEBFR89CoSpBOnTphzpw52Lt3L3r06GGcFMzgmWeesUhwdN3J/GsAgIgAT4kjISIikp6l+iJCCMyYMQObNm1CWloaOnTocNN9Bg8ejHXr1kGn00Eu13+e9Oeff6Jt27ZQKpW12qtUKqhUqgbFYwnCRuNhfv6zEFVagfA27ujED2mIiKiZaFQSZOXKlfDw8MDu3buxe/duk9dkMtktJ0GWLVuGt99+G3l5eejVqxfef/99DBgwoM72X3zxBebMmYPs7GxERETgzTffxN133218/dq1a3jxxRexefNmXL58GR06dMAzzzyDJ5988tYu1E7odAKnCgxJEHYyiIiILNUXSUhIwLp16/D111/D09MTeXn6lU68vb3h6uoKAIiPj0dwcDBSUlIAAE899RSWLl2KmTNnYsaMGTh58iTeeOMNST8EkmJi1LQTBQCAu7r42/zcREREjdWoJMiZM2csFsCGDRuQlJSEFStWYODAgVi8eDFiY2Nx4sQJ+PvXflPds2cPJk2ahJSUFNx7771Yt24d4uLikJmZaZzELCkpCTt37sRnn32GsLAwbN++HU8//TSCgoJw3333WSx2W8ktKkd5lRZKhRztW7lJHQ4REZHkLNUXWb58OQBg+PDhJttXr16NKVOmAABycnKMFR8AEBoaim3btuHZZ59Fz549ERwcjJkzZ9rNhPG2qAPR6QTS/rwEABjOJAgRETUjMmGrmsk6DBw4EP3798fSpUsB6CcbCw0NxYwZM/Diiy/Waj9x4kSUlpbiu+++M267/fbb0bt3b6xYsQIAEBkZiYkTJ2LOnDnGNlFRURgzZgz+9a9/3TSm4uJieHt7Q61Ww8tL+olIdx7Px+NrDqBroCe2zhoqdThERESNYm/vr1Kx1n0Ie/F7AMD+l2PQxtO6w2+O5Kpx7/u/wE2pwMG5I6Fy4sp1REQkrYa+vzaqEiQpKcnsdplMBhcXF3Tq1Anjxo1Dq1at6j1OZWUlMjIykJycbNwml8sRExOD9PR0s/ukp6fXOn9sbCw2b95sfD5o0CB88803ePzxxxEUFIS0tDT8+eefeO+99xp4hfaF84EQERGZslRfpCWRyfTL4wob1ILsrqkCGdSxNRMgRETUrDQqCXLw4EFkZmZCq9WiS5cuAPQTgikUCnTt2hUffPABnnvuOfzyyy/o3r17nccpLCyEVqtFQIDpsmoBAQE4fvy42X3y8vLMtjeM4QWA999/H0888QRCQkLg5OQEuVyOVatWYehQ81UUGo0GGo3G+Ly4uLj+G2BjfxqSIJx0jIiICIDl+iItiQw1Q2FsUONrmA+EQ2GIiKi5adQSuePGjUNMTAwuXLiAjIwMZGRk4Pz58xg5ciQmTZqE3NxcDB06FM8++6yl422Q999/H3v37sU333yDjIwMvPvuu0hISMCPP/5otn1KSgq8vb2Nj9DQUBtHXL9ThuVxOSkqERERAPvvi0hBXjM5qrVzIOqyKmScvQoAGN6ljZXPRkREZFmNSoK8/fbbeO2110zG2Xh7e2P+/Pl466234Obmhrlz5yIjI6Pe4/j5+UGhUCA/P99ke35+PgIDza83HxgYWG/78vJyvPTSS1i0aBHGjh2Lnj17IjExERMnTsQ777xj9pjJyclQq9XGx7lz5256D2xFpxM4WbMyTCd/DochIiICLNcXaUkMC8TorDzd28+nLkEngE7+Hgjx5YTtRETUvDQqCaJWq1FQUFBr+6VLl4xDSXx8fFBZWVnvcZRKJaKiopCammrcptPpkJqaiujoaLP7REdHm7QHgB07dhjbV1VVoaqqymQWdwBQKBTQ6XRmj6lSqeDl5WXysBcX1OUoq9TCWSFDWGt2NIiIiADL9UVaEhlqKkGsXAqSdqJmVZjOrAIhIqLmp1FzgowbNw6PP/443n33XfTv3x8AsH//fjz//POIi4sDAOzbtw+dO3e+6bGSkpIwefJk9OvXDwMGDMDixYtRWlqKqVOnAgDi4+MRHByMlJQUAMDMmTMxbNgwvPvuu7jnnnuwfv16HDhwACtXrgQAeHl5YdiwYZg9ezZcXV3Rvn177N69G//5z3+waNGixlyupAyToob7ecBJ0aicFRERUYtjyb5Ii1FTCWLNHIgQAr+cLAQADONQGCIiaoYalQT58MMP8eyzz+Lhhx9GdXW1/kBOTpg8ebJxBZauXbvio48+uumxJk6ciEuXLmHu3LnIy8tD7969sXXrVuPkpzk5OSZVHYMGDcK6devwyiuv4KWXXkJERAQ2b96MyMhIY5v169cjOTkZjz76KK5cuYL27dvj9ddfx5NPPtmYy5XUyZr5QCI4HwgREZGRJfsiLYXcMBxGZ700yOnCUuQVV0CpkKN/mOOsvENERC2HTIjGF01eu3YNp0+fBgCEh4fDw6Nl/KHe0PWFbeH5L37Hlxnn8WxMZ8yMiZA0FiIioqawxvtrc+yLWKuf0W3OVpRXafHzP+9EaCvrDKH9b3o25nx9FLeHt8L6J8wPXSYiIpJCQ99fG1UJYuDh4YGePXs25RB0E6dqJkVlJQgREVFt7ItcZ5gY1Zpzgvx66jIAYHBHP+udhIiIyIoanAQZP3481qxZAy8vL4wfP77eths3bmxyYKQfd3v6kj4J0rENkyBEROTY2Bepn2GJXGutDqPTCaSf1idBBnViEoSIiJqnBidBvL29Iat5c/X29rZaQHTdldJKFFdUQyYD2nNlGCIicnDsi9SvphDEahOjHrtYDHV5FTxUTugVwvtPRETNU4OTIKtXrzZ+/8EHH0Cn08Hd3R0AkJ2djc2bN6Nbt26IjY21fJQO6kxhKQAgyNsVLs4KiaMhIiKSFvsiN2EcDmOdNMivp/Srwgzs0Ior1hERUbPVqHewcePG4b///S8AoKioCLfffjveffddxMXFYfny5RYN0JGdvqRPgoS3cZc4EiIiIvvCvkht14fDWOf4v/6lHwoT3bG1dU5ARERkA41KgmRmZmLIkCEAgC+//BIBAQE4e/Ys/vOf/+Df//63RQN0ZKdrKkHC/ZgEISIiuhH7IrUZJka1xoCYymod9p+5AgAYzPlAiIioGWtUEqSsrAyenp4AgO3bt2P8+PGQy+W4/fbbcfbsWYsG6MgMk6KGc1JUIiIiE+yL1GacE8QKlSC/ny9CeZUWrd2V6BLgafkTEBER2UijkiCdOnXC5s2bce7cOWzbtg2jRo0CABQUFFh0vXtHZ5gTpAMrQYiIiEywL1KbNYfD7KupAhnQoRXkctlNWhMREdmvRiVB5s6di+effx5hYWEYOHAgoqOjAeg/ienTp49FA3RUWp3A2ctlAJgEISIi+jv2RWozDIcRVhgOY0iC9A9rZfFjExER2VKDV4e50YQJE3DHHXfg4sWL6NWrl3H7iBEjcP/991ssOEeWe7UclVodlE5yBPu4Sh0OERGRXWFfxBx9FsTSw2G0OoHMs1cB6CtBiIiImrNGJUEAIDAwEIGBgSbbBgwY0OSASO+vQv18IB1au7PslIiIyAz2RUzJjUvkWva4f1wsRommGh4qJ3Rr65hDjYiIqOXgIu926swlzgdCREREDWcYDqOzcBZkf7Z+KEzf9r5Q8IMZIiJq5pgEsVOGSVHD2zAJQkRERDcng3USFIYkyIAwX6scn4iIyJaYBLFTpw3DYVgJQkRERA0gs8JwGCEE9mfr5wPhpKhERNQSMAlipwzDYcLbeEgcCRERETUH15fItVwW5OzlMlwq0UCpkKNXqI/FjktERCQVJkHsUHmlFhfUFQCAcFaCEBER0S2w5Iwg+2qGwvQM8YaLs8KCRyYiIpIGkyB26OwVfRWIl4sTfN2VEkdDRETUcqWkpKB///7w9PSEv78/4uLicOLEiQbvv379eshkMsTFxVkvyAa6PhzGcmmQ/Wf0SZD+XBqXiIhaCCZB7NDZy2UAgPatWQVCRERkTbt370ZCQgL27t2LHTt2oKqqCqNGjUJpaelN983Ozsbzzz+PIUOG2CDSm7s+HMZyxzxwVj8fyADOB0JERC2Ek9QBUG3nruiTIO1au0kcCRERUcu2detWk+dr1qyBv78/MjIyMHTo0Dr302q1ePTRR7FgwQL8/PPPKCoqsnKkNyczLg5jmSzIldJK42p1fdtxZRgiImoZWAlih4yVIK2YBCEiIrIltVoNAGjVqv7Kh1dffRX+/v6YNm3aTY+p0WhQXFxs8rAGQw7EUqNhss7pq0A6tnGHt5uzZQ5KREQkMSZB7NDZK4bhMEyCEBER2YpOp8OsWbMwePBgREZG1tnul19+wccff4xVq1Y16LgpKSnw9vY2PkJDQy0VsglLD4fJyikCAPQOZRUIERG1HEyC2KGcy/rS03atOCcIERGRrSQkJODIkSNYv359nW1KSkrw2GOPYdWqVfDz82vQcZOTk6FWq42Pc+fOWSpkUxaeGPXguSIAQJ92PhY5HhERkT3gnCB2plqrw/mr5QBYCUJERGQriYmJ+O677/DTTz8hJCSkznZ//fUXsrOzMXbsWOM2nU4HAHBycsKJEyfQsWNHk31UKhVUKpV1Ar+BcTiMBY6l0wljJQiTIERE1JLYRSXIsmXLEBYWBhcXFwwcOBD79u2rt/0XX3yBrl27wsXFBT169MCWLVtqtfnjjz9w3333wdvbG+7u7ujfvz9ycnKsdQkWc1FdgWqdgFIhR4CXi9ThEBERtWhCCCQmJmLTpk3YuXMnOnToUG/7rl274vDhw8jKyjI+7rvvPtx5553Iysqy2lCXhrg+HKbpaZDThddQoqmGq7MCXQI8m3w8IiIieyF5EmTDhg1ISkrCvHnzkJmZiV69eiE2NhYFBQVm2+/ZsweTJk3CtGnTcPDgQcTFxSEuLg5Hjhwxtvnrr79wxx13oGvXrkhLS8OhQ4cwZ84cuLjYf1Ihp2Y+kJBWrlDIZTdpTURERE2RkJCAzz77DOvWrYOnpyfy8vKQl5eH8vJyY5v4+HgkJycDAFxcXBAZGWny8PHxgaenJyIjI6FUKqW6lOurw1igFCSzpgqkR4g3nBSSdxeJiIgsRvJ3tUWLFmH69OmYOnUqunfvjhUrVsDNzQ2ffPKJ2fZLlizB6NGjMXv2bHTr1g2vvfYa+vbti6VLlxrbvPzyy7j77rvx1ltvoU+fPujYsSPuu+8++Pv72+qyGo0rwxAREdnO8uXLoVarMXz4cLRt29b42LBhg7FNTk4OLl68KGGUDSOrGRBjieEwWYb5QEJ9LHA0IiIi+yFpEqSyshIZGRmIiYkxbpPL5YiJiUF6errZfdLT003aA0BsbKyxvU6nw/fff4/OnTsjNjYW/v7+GDhwIDZv3lxnHLZauq4hzl7RT4ravjUnRSUiIrI2IYTZx5QpU4xt0tLSsGbNmjqPsWbNmnr7GbZiqASxxHCYg5wPhIiIWihJkyCFhYXQarUICAgw2R4QEIC8vDyz++Tl5dXbvqCgANeuXcPChQsxevRobN++Hffffz/Gjx+P3bt3mz2mrZaua4icmkqQdqwEISIiolsgq8mCNDUHUqqpxok8/QdCfdpxeVwiImpZJB8OY2mGGdrHjRuHZ599Fr1798aLL76Ie++9FytWrDC7j82WrmsA43AYrgxDREREt8BSU4IczlVDJ4C23i6cpJ2IiFocSZfI9fPzg0KhQH5+vsn2/Px8BAYGmt0nMDCw3vZ+fn5wcnJC9+7dTdp069YNv/zyi9lj2mrpupsRQhgnRmUlCBEREd0KSw2HMcwH0pvzgRARUQskaSWIUqlEVFQUUlNTjdt0Oh1SU1MRHR1tdp/o6GiT9gCwY8cOY3ulUon+/fvjxIkTJm3+/PNPtG/f3sJXYFlXy6pwTVMNAAhlEoSIiIhugWGJ3KaWghzOVQPQrwxDRETU0khaCQIASUlJmDx5Mvr164cBAwZg8eLFKC0txdSpUwHol6ULDg5GSkoKAGDmzJkYNmwY3n33Xdxzzz1Yv349Dhw4gJUrVxqPOXv2bEycOBFDhw7FnXfeia1bt+Lbb79FWlqaFJfYYGcv6ydFDfRygYuzQuJoiIiIqDm5ngNpWhbkiCEJEswkCBERtTySJ0EmTpyIS5cuYe7cucjLy0Pv3r2xdetW4+SnOTk5kMuvF6wMGjQI69atwyuvvIKXXnoJERER2Lx5MyIjI41t7r//fqxYsQIpKSl45pln0KVLF3z11Ve44447bH59t8I4FIbzgRAREdEtMswJUjM9WqOoy6uM85NFBjEJQkRELY/kSRAASExMRGJiotnXzFVvPPjgg3jwwQfrPebjjz+Oxx9/3BLh2cz5q+UAgFBfJkGIiIjo1hhXh2nCMY5e0FeBhPi6wtddaYGoiIiI7EuLWx2mOTt/Vf/JS4ivq8SREBERUXNjHA7ThIlRORSGiIhaOiZB7IihEoRJECIiIrpVxuEwTSgFOZxbDACIZBKEiIhaKCZB7EhuTRIkmEkQIiIiukXG1WGaMCDGUAnCJAgREbVUTILYCSEEcos4JwgRERE1zvXhMI3bv7iiCmcK9SvVcTgMERG1VEyC2IlL1zTQVOsglwGB3i5Sh0NERETNjKxmQExjh8McrRkKE+zjilacFJWIiFooJkHshGEoTKCXC5wV/LEQERHRrTFWgjRyOMz1oTBelgqJiIjI7vCvbTtxnvOBEBERURM0dTjMYa4MQ0REDoBJEDthmA8khPOBEBERUSNcHw7T1EoQJkGIiKjlYhLETpy/WgZAPw6XiIiI6FbJm9Cru6apxumaSVGZBCEiopaMSRA7YZgTJITDYYiIiKgRDJUgjSkEOZGnnxQ1wEsFPw+VJcMiIiKyK0yC2AnDcBjOCUJERESNYZgTpDHDYY5dLAEAdGvLSVGJiKhlYxLEDgghjBOjck4QIiIiaorGVIIcv6ivBOkayCQIERG1bEyC2IGisiqUVWoBAG29XSSOhoiIiJojeU0pSGOmRf2jJgnSra2nBSMiIiKyP0yC2AFDFYi/pwouzgqJoyEiIqLmqLHDYXQ6gRN5+uEw3TkchoiIWjgmQexAblHNyjCcD4SIiIgaSWb45hZLQc5dLUNppRZKJzk6+LlbOiwiIiK7wiSIHeB8IERERNRU14fD3FoWxDAUpnOAB5wU7BoSEVHLxnc6O2BIggT7sBKEiIjIllJSUtC/f394enrC398fcXFxOHHiRL37rFq1CkOGDIGvry98fX0RExODffv22Sjiul0fDnNr+/1hWBmGk6ISEZEDYBLEDnB5XCIiImns3r0bCQkJ2Lt3L3bs2IGqqiqMGjUKpaWlde6TlpaGSZMmYdeuXUhPT0doaChGjRqF3NxcG0ZuTk0lyC0nQWpWhuF8IERE5ACcpA6AgItqQyUIV4YhIiKypa1bt5o8X7NmDfz9/ZGRkYGhQ4ea3Wft2rUmzz/66CN89dVXSE1NRXx8vNVivRl5TSXIrQ6HOV4zKSpXhiEiIkfAJIgduFhUAQAI9GIlCBERkZTUajUAoFWrVg3ep6ysDFVVVXXuo9FooNFojM+Li4ubFmQdGjMcpqSiCjlX9BO0czgMERE5Ag6HkVhFlRaXSysBAEGsBCEiIpKMTqfDrFmzMHjwYERGRjZ4vxdeeAFBQUGIiYkx+3pKSgq8vb2Nj9DQUEuFbEJmWB/mFsbDGJbGDfRyga+70hphERER2RUmQSSWX6yvAnFxlsPb1VniaIiIiBxXQkICjhw5gvXr1zd4n4ULF2L9+vXYtGkTXFzMf5iRnJwMtVptfJw7d85SIZuQ1/TqbmUwzB8cCkNERA6Gw2EkdlGtT4IEebtCZqhjJSIiIptKTEzEd999h59++gkhISEN2uedd97BwoUL8eOPP6Jnz551tlOpVFCpVJYKtU6GShDdLYyHMUyK2o2TohIRkYOwi0qQZcuWISwsDC4uLhg4cOBNl5n74osv0LVrV7i4uKBHjx7YsmVLnW2ffPJJyGQyLF682MJRW4ZhUtRAbw6FISIisjUhBBITE7Fp0ybs3LkTHTp0aNB+b731Fl577TVs3boV/fr1s3KUDWScGLXhDMNhugSyEoSIiByD5EmQDRs2ICkpCfPmzUNmZiZ69eqF2NhYFBQUmG2/Z88eTJo0CdOmTcPBgwcRFxeHuLg4HDlypFbbTZs2Ye/evQgKCrL2ZTSaoRKkrTcnRSUiIrK1hIQEfPbZZ1i3bh08PT2Rl5eHvLw8lJeXG9vEx8cjOTnZ+PzNN9/EnDlz8MknnyAsLMy4z7Vr16S4BCNDPWlDpwQRQuBkPpMgRETkWCRPgixatAjTp0/H1KlT0b17d6xYsQJubm745JNPzLZfsmQJRo8ejdmzZ6Nbt2547bXX0LdvXyxdutSkXW5uLmbMmIG1a9fC2dl+59owrAzTlpUgRERENrd8+XKo1WoMHz4cbdu2NT42bNhgbJOTk4OLFy+a7FNZWYkJEyaY7PPOO+9IcQlG8pphtQ2tBCko0aC4ohoKuQwd/NytFxgREZEdkXROkMrKSmRkZJh8uiKXyxETE4P09HSz+6SnpyMpKclkW2xsLDZv3mx8rtPp8Nhjj2H27Nm47bbbbhqHrZauM8dQCcLhMERERLYnGlA2kZaWZvI8OzvbOsE0kcy4OEzD0iB/1lSBtG/tBpWTwlphERER2RVJK0EKCwuh1WoREBBgsj0gIAB5eXlm98nLy7tp+zfffBNOTk545plnGhSHrZauM8cwJwiXxyUiIqKmMFSC6BqcBNEP3+nsz6EwRETkOCQfDmNpGRkZWLJkCdasWdPg1VZstXSdOXmGShAvzglCREREjWfo9jR0cZhTBfpKkIgADytFREREZH8kTYL4+flBoVAgPz/fZHt+fj4CAwPN7hMYGFhv+59//hkFBQVo164dnJyc4OTkhLNnz+K5555DWFiY2WOqVCp4eXmZPGyhokqLy6WVAFgJQkRERE2jqMmCaBuYBTFUgkQEsBKEiIgch6RJEKVSiaioKKSmphq36XQ6pKamIjo62uw+0dHRJu0BYMeOHcb2jz32GA4dOoSsrCzjIygoCLNnz8a2bdusdzGNYKgCcXGWw9vVfidvJSIiIvunkNcMh2lAEkQIYZwTpDMrQYiIyIFIOjEqACQlJWHy5Mno168fBgwYgMWLF6O0tBRTp04FoF+WLjg4GCkpKQCAmTNnYtiwYXj33Xdxzz33YP369Thw4ABWrlwJAGjdujVat25tcg5nZ2cEBgaiS5cutr24mzBMihrk7drgoTtERERE5sgNSZAGFILkF2tQwpVhiIjIAUmeBJk4cSIuXbqEuXPnIi8vD71798bWrVuNk5/m5ORALr9esDJo0CCsW7cOr7zyCl566SVERERg8+bNiIyMlOoSGs0wKSpXhiEiIqKmMg6HacDEqCcLuDIMERE5JsmTIACQmJiIxMREs6/9fVk6AHjwwQfx4IMPNvj49rqUnaESpK03J0UlIiKippEbJkZtQCkIV4YhIiJH1eJWh2lODJUgbVkJQkRERE1kGA7ToEoQzgdCREQOikkQCRkmRm3LlWGIiIioiQzDYXQNSIIYJkXtxJVhiIjIwTAJIqELRYbhMEyCEBERUdM0dHUYIQROFtQMh2ElCBERORgmQSSUV6xPggR6cU4QIiIiahrDSnNaXf3tuDIMERE5MiZBJKKp1uJKaSUArg5DRERETaeo6dXdbDiMYSgMV4YhIiJHxCSIRAqKNQAApUIOXzdniaMhIiKi5q6hc4KcqhkKE+HPoTBEROR4mASRSEGJfiiMv5fKWL5KRERE1FjG1WFuMifImcJSAEB4GyZBiIjI8TAJIhFDJUiAF4fCEBERUdPJG1gJkn1ZnwThfCBEROSImASRSH7NpKj+niqJIyEiIqKWQNHASpDTl5gEISIix8UkiETyS1gJQkRERJZzvRKk7jYVVVpcUJcDYBKEiIgcE5MgEjFWgnixEoSIiIiazrg6TD1ZkJwrZRAC8FQ5obW70kaRERER2Q8mQSRyyVAJ4slKECIiImo6QyWItp45QQyTonZo486J2YmIyCExCSIRVoIQERGRJRmTIPVUghiSIGGtORSGiIgcE5MgEsnn6jBERERkQYaJUetbHCa7kJOiEhGRY2MSRAIVVVqoy6sAcDgMERERWYa8AavDnGYShIiIHByTIBIwzAeicpLDy9VJ4miIiIioJVA0YE4QVoIQEZGjYxJEAjfOB8JJyYiIiKSTkpKC/v37w9PTE/7+/oiLi8OJEyduut8XX3yBrl27wsXFBT169MCWLVtsEG39agpBIOpIglzTVKOg5oOYMCZBiIjIQTEJIgHjfCAcCkNERCSp3bt3IyEhAXv37sWOHTtQVVWFUaNGobS0tM599uzZg0mTJmHatGk4ePAg4uLiEBcXhyNHjtgw8tpuNhzGUAXS2l0Jb1dnm8VFRERkTzgWQwIFJfpKEE6KSkREJK2tW7eaPF+zZg38/f2RkZGBoUOHmt1nyZIlGD16NGbPng0AeO2117Bjxw4sXboUK1assHrMdbk+HMb868aVYVgFQkREDoyVIBIwVIJweVwiIiL7olarAQCtWrWqs016ejpiYmJMtsXGxiI9Pd2qsd2MYXUY3U0qQTgfCBEROTJWgkigwDAnCIfDEBER2Q2dTodZs2Zh8ODBiIyMrLNdXl4eAgICTLYFBAQgLy/PbHuNRgONRmN8XlxcbJmA/8YwzZiujjlBzlxmEoSIiIiVIBLINw6HYSUIERGRvUhISMCRI0ewfv16ix43JSUF3t7exkdoaKhFj2+guMmcIGdYCUJERMQkiBQKDBOjck4QIiIiu5CYmIjvvvsOu3btQkhISL1tAwMDkZ+fb7ItPz8fgYGBZtsnJydDrVYbH+fOnbNY3DcyzAlSVyWIYThMWGsmQYiIyHHZRRJk2bJlCAsLg4uLCwYOHIh9+/bV276+ZemqqqrwwgsvoEePHnB3d0dQUBDi4+Nx4cIFa19GgxmXyPVkJQgREZGUhBBITEzEpk2bsHPnTnTo0OGm+0RHRyM1NdVk244dOxAdHW22vUqlgpeXl8nDGupbHaaorBJXy6oAAGF+blY5PxERUXMgeRJkw4YNSEpKwrx585CZmYlevXohNjYWBQUFZtvfbFm6srIyZGZmYs6cOcjMzMTGjRtx4sQJ3Hfffba8rDpVVutQXFENAPDzYBKEiIhISgkJCfjss8+wbt06eHp6Ii8vD3l5eSgvLze2iY+PR3JysvH5zJkzsXXrVrz77rs4fvw45s+fjwMHDiAxMVGKSzCSGytBar9mGAoT6OUCNyWnhCMiIscleRJk0aJFmD59OqZOnYru3btjxYoVcHNzwyeffGK2/Y3L0nXr1g2vvfYa+vbti6VLlwIAvL29sWPHDjz00EPo0qULbr/9dixduhQZGRnIycmx5aWZdblUPxTGSS6Dt6uzxNEQERE5tuXLl0OtVmP48OFo27at8bFhwwZjm5ycHFy8eNH4fNCgQVi3bh1WrlyJXr164csvv8TmzZvrnUzVFhQ1vTpzw2GuL4/LKhAiInJskn4UUFlZiYyMDJNPV+RyOWJiYupcZi49PR1JSUkm22JjY7F58+Y6z6NWqyGTyeDj42P2dVvN2g4AhSWVAIBW7kpj2SoRERFJQ9Qxf8aN0tLSam178MEH8eCDD1ohosYzVIKYGw5zfXlcD5vGREREZG8krQQpLCyEVqu9pWXmbnVZuoqKCrzwwguYNGlSnWNwbTVrOwAU1lSCcCgMERERWVJ9q8OcNiZBWAlCRESOTfLhMNZUVVWFhx56CEIILF++vM52tpq1HQAKS2qSIJwUlYiIiCzIUAlirrgl+zIrQYiIiACJh8P4+flBoVDc0jJzDV2WzpAAOXv2LHbu3FnvTOwqlQoqlW2SEpdL9cNh/NyVNjkfEREROQanmkqQKp3OZLsQAmcusRKEiIgIkLgSRKlUIioqymSZOZ1Oh9TU1DqXmWvIsnSGBMjJkyfx448/onXr1ta5gEZgJQgRERFZg1PNzKjVWtNSkEvXNCit1EIuA0JbMQlCRESOTfI10pKSkjB58mT069cPAwYMwOLFi1FaWoqpU6cC0C9LFxwcjJSUFAD6ZemGDRuGd999F/fccw/Wr1+PAwcOYOXKlQD0CZAJEyYgMzMT3333HbRarXG+kFatWkGplLYCo/CaPgnSmpUgREREZEHKmiRIlda0EsRQBRLs6wqVk8LmcREREdkTyZMgEydOxKVLlzB37lzk5eWhd+/e2Lp1q3Hy05ycHMjl1wtWDMvSvfLKK3jppZcQERFhsixdbm4uvvnmGwBA7969Tc61a9cuDB8+3CbXVRfjcBhOjEpEREQW5OxUMxzmb5UgnA+EiIjoOsmTIACQmJiIxMREs6/d6rJ0YWFhDVruTiqXOByGiIiIrMBJbr4SxLgyTGsOhSEiImrRq8PYo8Jr+koQDochIiIiS6prOEy2cXlcd5vHREREZG+YBLEhnU7gSqm+EqQNK0GIiIjIggzDYf4+MeqZmiRIGJMgRERETILY0tWySuhq+iWtWAlCREREFmQYDlOp1RmHBut0AmcvlwEAwjknCBEREZMgtnSlZlJUb1dnOCt464mIiMhylDf0LaprPnW5WFwBTbUOzgoZgnxcpAqNiIjIbvAvcRsqKq8CAPi6OUscCREREbU0huEwwPUhMYblcdu1coMTP4AhIiJiEsSWrhoqQdw4FIaIiIgsyzAcBtAPiQGAM5c5KSoREdGNmASxIUMliI8rK0GIiIjIspwV1ytBDCvEGCpBmAQhIiLSYxLEhtRlHA5DRERE1iGTyYyJEMNwmOzLXBmGiIjoRkyC2FBRuX44jA+HwxAREZEVGIbEGCtBClkJQkREdCMmQWyoqKYSxJvDYYiIiMgKDJUglVodqrQ6nLuiXx6XSRAiIiI9JkFsyJAE8eFwGCIiIrICpdP1SpDzV8tRrRNwdVYgwJPL4xIREQGAk9QBOJLrw2GYBCEiIiLLc65ZBrdaK3CxSD8Upn1rN8jlsvp2IyIichisBLEhYyWIK+cEISIiIsszJEE01TqcrpkPJLwNh8IQEREZMAliQxwOQ0RERNbkplQAAMortciuSYKEtWYShIiIyIBJEBsqrtAnQbw4MSoRERFZgSEJUlpZzZVhiIiIzGASxEaEECjVVAMAPFScioWIiIgsz72mj1HGJAgREZFZTILYSEWVDjqh/96dSRAiIiK78NNPP2Hs2LEICgqCTCbD5s2bb7rP2rVr0atXL7i5uaFt27Z4/PHHcfnyZesH2wCuzvpKkMvXKnFBXQ6ASRAiIqIbMQliI6WV1cbv3Wo6KERERCSt0tJS9OrVC8uWLWtQ+19//RXx8fGYNm0ajh49ii+++AL79u3D9OnTrRxpwxg+aDl2oRhC6Ocha+2hkjgqIiIi+8GSBBsxDIVxUyq4TB0REZGdGDNmDMaMGdPg9unp6QgLC8MzzzwDAOjQoQP+8Y9/4M0337RWiLfEMCfIoVw1AKBjGw8pwyEiIrI7rASxkVKNFgCHwhARETVn0dHROHfuHLZs2QIhBPLz8/Hll1/i7rvvljo0ANf7GacKrgEAOnJ5XCIiIhNMgtiIYTgMJ0UlIiJqvgYPHoy1a9di4sSJUCqVCAwMhLe3d73DaTQaDYqLi00e1mKoBDEIZyUIERGRCSZBbOTaDcNhiIiIqHk6duwYZs6ciblz5yIjIwNbt25FdnY2nnzyyTr3SUlJgbe3t/ERGhpqtfjaeJrO/8HhMERERKbsIgmybNkyhIWFwcXFBQMHDsS+ffvqbf/FF1+ga9eucHFxQY8ePbBlyxaT14UQmDt3Ltq2bQtXV1fExMTg5MmT1ryEmyrjcBgiIqJmLyUlBYMHD8bs2bPRs2dPxMbG4oMPPsAnn3yCixcvmt0nOTkZarXa+Dh37pzV4gvwdDF53iPY22rnIiIiao4kT4Js2LABSUlJmDdvHjIzM9GrVy/ExsaioKDAbPs9e/Zg0qRJmDZtGg4ePIi4uDjExcXhyJEjxjZvvfUW/v3vf2PFihX47bff4O7ujtjYWFRUVNjqsmoxTIzK4TBERETNV1lZGeRy0+6TQqGv8hRCmN1HpVLBy8vL5GEtAV7XkyB+HioEeHFlGCIiohtJngRZtGgRpk+fjqlTp6J79+5YsWIF3Nzc8Mknn5htv2TJEowePRqzZ89Gt27d8Nprr6Fv375YunQpAH0HZPHixXjllVcwbtw49OzZE//5z39w4cIFbN682YZXZsowJwiHwxAREdmPa9euISsrC1lZWQCAM2fOICsrCzk5OQD0VRzx8fHG9mPHjsXGjRuxfPlynD59Gr/++iueeeYZDBgwAEFBQVJcgomO/tcnQo1q7wOZjCvSERER3UjSJEhlZSUyMjIQExNj3CaXyxETE4P09HSz+6Snp5u0B4DY2Fhj+zNnziAvL8+kjbe3NwYOHFjnMW1BLpPB180ZPm7OksVAREREpg4cOIA+ffqgT58+AICkpCT06dMHc+fOBQBcvHjRmBABgClTpmDRokVYunQpIiMj8eCDD6JLly7YuHGjJPH/nZvSCTNHRKBroCeeHdlZ6nCIiIjsjqRjMwoLC6HVahEQEGCyPSAgAMePHze7T15entn2eXl5xtcN2+pq83cajQYajcb43Bqztk8eFIbJg8IsflwiIiJqvOHDh9c5jAUA1qxZU2vbjBkzMGPGDCtG1TTPjuzMBAgREVEdJB8OYw9sOWs7EREREREREUlD0iSIn58fFAoF8vPzTbbn5+cjMDDQ7D6BgYH1tjd8vZVj2nLWdiIiIiIiIiKShqRJEKVSiaioKKSmphq36XQ6pKamIjo62uw+0dHRJu0BYMeOHcb2HTp0QGBgoEmb4uJi/Pbbb3Ue05azthMRERERERGRNCRfrzUpKQmTJ09Gv379MGDAACxevBilpaWYOnUqACA+Ph7BwcFISUkBAMycORPDhg3Du+++i3vuuQfr16/HgQMHsHLlSgCATCbDrFmz8K9//QsRERHo0KED5syZg6CgIMTFxUl1mUREREREREQkMcmTIBMnTsSlS5cwd+5c5OXloXfv3ti6datxYtOcnBzI5dcLVgYNGoR169bhlVdewUsvvYSIiAhs3rwZkZGRxjb//Oc/UVpaiieeeAJFRUW44447sHXrVri4uNj8+oiIiIiIiIjIPshEfVOiO6ji4mJ4e3tDrVZzaAwREZGF8P1Vj/eBiIjI8hr6/srVYYiIiIiIiIjIITAJQkREREREREQOgUkQIiIiIiIiInIITIIQERERERERkUNgEoSIiIiIiIiIHILkS+TaI8OCOcXFxRJHQkRE1HIY3lcdfWE69jOIiIgsr6H9DCZBzCgpKQEAhIaGShwJERFRy1NSUgJvb2+pw5AM+xlERETWc7N+hkw4+scxZuh0Oly4cAGenp6QyWQWO25xcTFCQ0Nx7ty5etctdkS8N/Xj/akb703deG/qx/tTN2vdGyEESkpKEBQUBLnccUfksp9he7w39eP9qRvvTf14f+rGe1M/a9yfhvYzWAlihlwuR0hIiNWO7+XlxX8IdeC9qR/vT914b+rGe1M/3p+6WePeOHIFiAH7GdLhvakf70/deG/qx/tTN96b+ln6/jSkn+G4H8MQERERERERkUNhEoSIiIiIiIiIHAKTIDakUqkwb948qFQqqUOxO7w39eP9qRvvTd14b+rH+1M33pvmiT+3uvHe1I/3p268N/Xj/akb7039pLw/nBiViIiIiIiIiBwCK0GIiIiIiIiIyCEwCUJEREREREREDoFJECIiIiIiIiJyCEyC2MiyZcsQFhYGFxcXDBw4EPv27ZM6JKubP38+ZDKZyaNr167G1ysqKpCQkIDWrVvDw8MDDzzwAPLz802OkZOTg3vuuQdubm7w9/fH7NmzUV1dbetLsYiffvoJY8eORVBQEGQyGTZv3mzyuhACc+fORdu2beHq6oqYmBicPHnSpM2VK1fw6KOPwsvLCz4+Ppg2bRquXbtm0ubQoUMYMmQIXFxcEBoairfeesval9ZkN7s3U6ZMqfW7NHr0aJM2LfXepKSkoH///vD09IS/vz/i4uJw4sQJkzaW+reUlpaGvn37QqVSoVOnTlizZo21L69JGnJvhg8fXut358knnzRp0xLvDQAsX74cPXv2hJeXF7y8vBAdHY0ffvjB+Lqj/t60VOxnsJ/Bfkbd2M+oG/sZ9WNfo27Nup8hyOrWr18vlEql+OSTT8TRo0fF9OnThY+Pj8jPz5c6NKuaN2+euO2228TFixeNj0uXLhlff/LJJ0VoaKhITU0VBw4cELfffrsYNGiQ8fXq6moRGRkpYmJixMGDB8WWLVuEn5+fSE5OluJymmzLli3i5ZdfFhs3bhQAxKZNm0xeX7hwofD29habN28Wv//+u7jvvvtEhw4dRHl5ubHN6NGjRa9evcTevXvFzz//LDp16iQmTZpkfF2tVouAgADx6KOPiiNHjojPP/9cuLq6ig8//NBWl9koN7s3kydPFqNHjzb5Xbpy5YpJm5Z6b2JjY8Xq1avFkSNHRFZWlrj77rtFu3btxLVr14xtLPFv6fTp08LNzU0kJSWJY8eOiffff18oFAqxdetWm17vrWjIvRk2bJiYPn26ye+OWq02vt5S740QQnzzzTfi+++/F3/++ac4ceKEeOmll4Szs7M4cuSIEMJxf29aIvYz2M8Qgv2M+rCfUTf2M+rHvkbdmnM/g0kQGxgwYIBISEgwPtdqtSIoKEikpKRIGJX1zZs3T/Tq1cvsa0VFRcLZ2Vl88cUXxm1//PGHACDS09OFEPo3LLlcLvLy8oxtli9fLry8vIRGo7Fq7Nb29zdgnU4nAgMDxdtvv23cVlRUJFQqlfj888+FEEIcO3ZMABD79+83tvnhhx+ETCYTubm5QgghPvjgA+Hr62tyf1544QXRpUsXK1+R5dTVORk3blyd+zjKvRFCiIKCAgFA7N69WwhhuX9L//znP8Vtt91mcq6JEyeK2NhYa1+Sxfz93gih75jMnDmzzn0c5d4Y+Pr6io8++oi/Ny0M+xm1sZ/BfkZd2M+oH/sZ9WNfo37NpZ/B4TBWVllZiYyMDMTExBi3yeVyxMTEID09XcLIbOPkyZMICgpCeHg4Hn30UeTk5AAAMjIyUFVVZXJfunbtinbt2hnvS3p6Onr06IGAgABjm9jYWBQXF+Po0aO2vRArO3PmDPLy8kzuh7e3NwYOHGhyP3x8fNCvXz9jm5iYGMjlcvz222/GNkOHDoVSqTS2iY2NxYkTJ3D16lUbXY11pKWlwd/fH126dMFTTz2Fy5cvG19zpHujVqsBAK1atQJguX9L6enpJscwtGlO/5/6+70xWLt2Lfz8/BAZGYnk5GSUlZUZX3OUe6PVarF+/XqUlpYiOjqavzctCPsZ7Gc0BPsZN8d+hh77GfVjX8O85tbPcGrS3nRThYWF0Gq1Jj9cAAgICMDx48cliso2Bg4ciDVr1qBLly64ePEiFixYgCFDhuDIkSPIy8uDUqmEj4+PyT4BAQHIy8sDAOTl5Zm9b4bXWhLD9Zi73hvvh7+/v8nrTk5OaNWqlUmbDh061DqG4TVfX1+rxG9to0ePxvjx49GhQwf89ddfeOmllzBmzBikp6dDoVA4zL3R6XSYNWsWBg8ejMjISACw2L+lutoUFxejvLwcrq6u1rgkizF3bwDgkUceQfv27REUFIRDhw7hhRdewIkTJ7Bx40YALf/eHD58GNHR0aioqICHhwc2bdqE7t27Iysri783LQT7GexnNAT7GfVjP0OP/Yz6sa9RW3PtZzAJQlYzZswY4/c9e/bEwIED0b59e/zvf/+z23/IZJ8efvhh4/c9evRAz5490bFjR6SlpWHEiBESRmZbCQkJOHLkCH755RepQ7E7dd2bJ554wvh9jx490LZtW4wYMQJ//fUXOnbsaOswba5Lly7IysqCWq3Gl19+icmTJ2P37t1Sh0VkEexnkKWwn6HHfkb92Neorbn2Mzgcxsr8/PygUChqzYSbn5+PwMBAiaKSho+PDzp37oxTp04hMDAQlZWVKCoqMmlz430JDAw0e98Mr7Ukhuup7/ckMDAQBQUFJq9XV1fjypUrDnfPwsPD4efnh1OnTgFwjHuTmJiI7777Drt27UJISIhxu6X+LdXVxsvLy+7/mKjr3pgzcOBAADD53WnJ90apVKJTp06IiopCSkoKevXqhSVLlvD3pgVhP+M69jPqxn7GrWE/g/2Mv2Nfw7zm2s9gEsTKlEoloqKikJqaatym0+mQmpqK6OhoCSOzvWvXruGvv/5C27ZtERUVBWdnZ5P7cuLECeTk5BjvS3R0NA4fPmzyprNjxw54eXmhe/fuNo/fmjp06IDAwECT+1FcXIzffvvN5H4UFRUhIyPD2Gbnzp3Q6XTG/9lGR0fjp59+QlVVlbHNjh070KVLl2ZRhtlQ58+fx+XLl9G2bVsALfveCCGQmJiITZs2YefOnbVKbS31byk6OtrkGIY29vz/qZvdG3OysrIAwOR3pyXem7rodDpoNBqH/r1padjPuI79jLqxn3Fr2M+4ztHfL9jXuDXNpp/RpGlVqUHWr18vVCqVWLNmjTh27Jh44oknhI+Pj8lMuC3Rc889J9LS0sSZM2fEr7/+KmJiYoSfn58oKCgQQuiXTWrXrp3YuXOnOHDggIiOjhbR0dHG/Q3LJo0aNUpkZWWJrVu3ijZt2jTbpetKSkrEwYMHxcGDBwUAsWjRInHw4EFx9uxZIYR+6TofHx/x9ddfi0OHDolx48aZXbquT58+4rfffhO//PKLiIiIMFmeraioSAQEBIjHHntMHDlyRKxfv164ubnZ/fJs9d2bkpIS8fzzz4v09HRx5swZ8eOPP4q+ffuKiIgIUVFRYTxGS703Tz31lPD29hZpaWkmS6+VlZUZ21ji35JhCbLZs2eLP/74Qyxbtszul2a72b05deqUePXVV8WBAwfEmTNnxNdffy3Cw8PF0KFDjcdoqfdGCCFefPFFsXv3bnHmzBlx6NAh8eKLLwqZTCa2b98uhHDc35uWiP0M9jOEYD+jPuxn1I39jPqxr1G35tzPYBLERt5//33Rrl07oVQqxYABA8TevXulDsnqJk6cKNq2bSuUSqUIDg4WEydOFKdOnTK+Xl5eLp5++mnh6+sr3NzcxP333y8uXrxocozs7GwxZswY4erqKvz8/MRzzz0nqqqqbH0pFrFr1y4BoNZj8uTJQgj98nVz5swRAQEBQqVSiREjRogTJ06YHOPy5cti0qRJwsPDQ3h5eYmpU6eKkpISkza///67uOOOO4RKpRLBwcFi4cKFtrrERqvv3pSVlYlRo0aJNm3aCGdnZ9G+fXsxffr0Wp37lnpvzN0XAGL16tXGNpb6t7Rr1y7Ru3dvoVQqRXh4uMk57NHN7k1OTo4YOnSoaNWqlVCpVKJTp05i9uzZQq1WmxynJd4bIYR4/PHHRfv27YVSqRRt2rQRI0aMMHZMhHDc35uWiv0M9jPYz6gb+xl1Yz+jfuxr1K059zNkQgjRtFoSIiIiIiIiIiL7xzlBiIiIiIiIiMghMAlCRERERERERA6BSRAiIiIiIiIicghMghARERERERGRQ2AShIiIiIiIiIgcApMgREREREREROQQmAQhIiIiIiIiIofAJAgREREREREROQQmQYjIbqWlpUEmk6GoqEjqUIiIiKiFYT+DyDHJhBBC6iCIiABg+PDh6N27NxYvXgwAqKysxJUrVxAQEACZTCZtcERERNSssZ9BRADgJHUARER1USqVCAwMlDoMIiIiaoHYzyByTBwOQ0R2YcqUKdi9ezeWLFkCmUwGmUyGNWvWmJSprlmzBj4+Pvjuu+/QpUsXuLm5YcKECSgrK8Onn36KsLAw+Pr64plnnoFWqzUeW6PR4Pnnn0dwcDDc3d0xcOBApKWlSXOhREREZHPsZxCRAStBiMguLFmyBH/++SciIyPx6quvAgCOHj1aq11ZWRn+/e9/Y/369SgpKcH48eNx//33w8fHB1u2bMHp06fxwAMPYPDgwZg4cSIAIDExEceOHcP69esRFBSETZs2YfTo0Th8+DAiIiJsep1ERERke+xnEJEBkyBEZBe8vb2hVCrh5uZmLE09fvx4rXZVVVVYvnw5OnbsCACYMGEC/vvf/yI/Px8eHh7o3r077rzzTuzatQsTJ05ETk4OVq9ejZycHAQFBQEAnn/+eWzduhWrV6/GG2+8YbuLJCIiIkmwn0FEBkyCEFGz4ubmZuyYAEBAQADCwsLg4eFhsq2goAAAcPjwYWi1WnTu3NnkOBqNBq1bt7ZN0ERERNQssJ9B1PIxCUJEzYqzs7PJc5lMZnabTqcDAFy7dg0KhQIZGRlQKBQm7W7s0BARERGxn0HU8jEJQkR2Q6lUmkw0Zgl9+vSBVqtFQUEBhgwZYtFjExERUfPBfgYRAVwdhojsSFhYGH777TdkZ2ejsLDQ+ClLU3Tu3BmPPvoo4uPjsXHjRpw5cwb79u1DSkoKvv/+ewtETURERM0B+xlEBDAJQkR25Pnnn4dCoUD37t3Rpk0b5OTkWOS4q1evRnx8PJ577jl06dIFcXFx2L9/P9q1a2eR4xMREZH9Yz+DiABAJoQQUgdBRERERERERGRtrAQhIiIiIiIiIofAJAgREREREREROQQmQYiIiIiIiIjIITAJQkREREREREQOgUkQIiIiIiIiInIITIIQERERERERkUNgEoSIiIiIiIiIHAKTIERERERERETkEJgEISIiIiIiIiKHwCQIERERERERETkEJkGIiIiIiIiIyCEwCUJEREREREREDuH/A26UH1t64uq2AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1100x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(1, 2, figsize=(11, 4))\n",
    "brainmass.viz.plot_timeseries(res['S_e'], ts=res['ts'], ax=axes[0])\n",
    "axes[0].set_title('Excitatory gating S_e')\n",
    "brainmass.viz.plot_timeseries(res['rate_e'], ts=res['ts'], ax=axes[1])\n",
    "axes[1].set_title('Excitatory rate H_e (Hz)')\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "89da6a65",
   "metadata": {},
   "source": [
    "## Try it: vary the feedback inhibition `J_i`\n",
    "\n",
    "The feedback-inhibition weight `J_i` sets the E-I balance. Stronger inhibition clamps the excitatory rate lower; weaker inhibition lets it climb. We report the settled excitatory rate."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "81e7b2b7",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-19T08:13:29.658567Z",
     "iopub.status.busy": "2026-06-19T08:13:29.658323Z",
     "iopub.status.idle": "2026-06-19T08:13:30.088268Z",
     "shell.execute_reply": "2026-06-19T08:13:30.087581Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "J_i = 0.5  ->  resting excitatory rate = 17.81 Hz\n",
      "J_i = 1.0  ->  resting excitatory rate = 3.08 Hz\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "J_i = 1.5  ->  resting excitatory rate = 1.28 Hz\n"
     ]
    }
   ],
   "source": [
    "for J_i in [0.5, 1.0, 1.5]:\n",
    "    m = brainmass.WongWangExcInhStep(in_size=1, J_i=J_i, G=2.0)\n",
    "    r = brainmass.Simulator(m, dt=0.1 * u.ms).run(\n",
    "        3000. * u.ms, monitors={'rate_e': lambda m: m.H_e()})\n",
    "    rate = float(u.get_magnitude(r['rate_e'])[-1, 0])\n",
    "    print(f'J_i = {J_i:.1f}  ->  resting excitatory rate = {rate:.2f} Hz')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.13.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
