{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# **Solving a TSP problem using callbacks**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "***tsp_callbacks.ipynb***\n",
    "\n",
    "Solve an instance of the [Traveling Salesperson Problem (TSP)](https://en.wikipedia.org/wiki/Travelling_salesman_problem) with Xpress using callbacks and *NumPy* arrays. \n",
    "\n",
    "Generate random TSP data, then solve the problem using the FICO&reg; Xpress Optimizer library with the appropriate callback. Once the optimization is over (i.e. the time limit is reached or we find an optimal solution) the optimal tour is displayed using *matplotlib*.\n",
    "\n",
    "*This example requires a full license of the FICO&reg; Xpress Optimizer. Click on [this link](https://www.fico.com/en/fico-xpress-trial-and-licensing-options) for more information about trial and licensing options.*\n",
    "\n",
    "&copy; Copyright 2025 Fair Isaac Corporation\n",
    "\n",
    "Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n",
    " \n",
    "Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n",
    "\n",
    "This example uses FICO&reg; Xpress software. By running it, you agree to the Community License terms of the [Xpress Shrinkwrap License Agreement](https://www.fico.com/en/shrinkwrap-license-agreement-fico-xpress-optimization-suite-on-premises) with respect to the FICO&reg; Xpress software. See the [licensing options](https://www.fico.com/en/fico-xpress-trial-and-licensing-options) overview for additional details and information about obtaining a paid license."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Note: you may need to restart the kernel to use updated packages.\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "[notice] A new release of pip is available: 24.3.1 -> 25.2\n",
      "[notice] To update, run: python.exe -m pip install --upgrade pip\n"
     ]
    }
   ],
   "source": [
    "# Install the xpress package\n",
    "%pip install -q xpress"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Standard formulation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's start with the standard formulation, where binary variables $use_{ij} \\in \\{0,1\\}, \\forall i,j \\in \\mathcal{N}$ represent the decision of whether the tour uses the arc $(i,j)$ (i.e. if we go from city $i$ to $j$) or not. An optimal tour can be found by solving:\n",
    "$$\n",
    "\\min \\sum_{i,j \\in \\mathcal{N}} dist_{ij} \\cdot use_{ij}\n",
    "$$\n",
    "\n",
    "subject to:\n",
    "\n",
    "* We have to enter and leave every city, and source node cannot be the same as the destination node: \n",
    "$$\n",
    "\\sum_{j \\in \\mathcal{N}} use_{ij} = 1, \\quad \\forall i \\in \\mathcal{N} \\\\\n",
    "\\sum_{j \\in \\mathcal{N}} use_{ji} = 1, \\quad \\forall i \\in \\mathcal{N} \\\\\n",
    "use_{ii} = 0, \\quad \\forall i \\in \\mathcal{N}\n",
    "$$\n",
    "\n",
    "Where $dist_{ij}, \\forall i,j \\in \\mathcal{N}$ represents the distance (or cost) associated with traveling on an arc $(i,j)$. We overlook subtour elimination constraints for now."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "FICO Xpress v9.8.x, Hyper, solve started 17:12:51, Aug 10, 2025\n",
      "Heap usage: 486KB (peak 486KB, 187KB system)\n",
      "Minimizing MILP noname using up to 20 threads and up to 31GB memory, with these control settings:\n",
      "OUTPUTLOG = 1\n",
      "NLPPOSTSOLVE = 1\n",
      "XSLP_DELETIONCONTROL = 0\n",
      "XSLP_OBJSENSE = 1\n",
      "Original problem has:\n",
      "        51 rows          289 cols          595 elements       289 entities\n",
      "Presolved problem has:\n",
      "        34 rows          272 cols          544 elements       272 entities\n",
      "Presolve finished in 0 seconds\n",
      "Heap usage: 1811KB (peak 1811KB, 187KB system)\n",
      "\n",
      "Coefficient range                    original                 solved        \n",
      "  Coefficients   [min,max] : [ 1.00e+00,  1.00e+00] / [ 1.00e+00,  1.00e+00]\n",
      "  RHS and bounds [min,max] : [ 1.00e+00,  1.00e+00] / [ 1.00e+00,  1.00e+00]\n",
      "  Objective      [min,max] : [ 3.00e+00,  1.06e+02] / [ 3.00e+00,  1.06e+02]\n",
      "Autoscaling applied standard scaling\n",
      "\n",
      "Symmetric problem: generators: 1, support set: 272\n",
      " Number of orbits: 136, largest orbit: 2\n",
      " Row orbits: 17, row support: 34\n",
      "Will try to keep branch and bound tree memory usage below 21.3GB\n",
      " *** Solution found:   906.000000   Time:   0.00    Heuristic: e ***\n",
      " *** Solution found:   330.000000   Time:   0.00    Heuristic: k ***\n",
      "Starting concurrent solve with dual (1 thread)\n",
      "\n",
      " Concurrent-Solve,   0s\n",
      "            Dual        \n",
      "    objective   dual inf\n",
      " D  318.00000   .0000000\n",
      "                        \n",
      "------- optimal --------\n",
      "Concurrent statistics:\n",
      "           Dual: 31 simplex iterations, 0.00s\n",
      "Optimal solution found\n",
      " \n",
      "   Its         Obj Value      S   Ninf  Nneg   Sum Dual Inf  Time\n",
      "    31        318.000000      D      0     0        .000000     0\n",
      "Dual solved problem\n",
      "  31 simplex iterations in 0.00 seconds at time 0\n",
      "\n",
      "Final objective                       : 3.180000000000000e+02\n",
      "  Max primal violation      (abs/rel) :       0.0 /       0.0\n",
      "  Max dual violation        (abs/rel) :       0.0 /       0.0\n",
      "  Max complementarity viol. (abs/rel) :       0.0 /       0.0\n",
      "\n",
      "Starting root cutting & heuristics\n",
      "Deterministic mode with up to 4 additional threads\n",
      " \n",
      " Its Type    BestSoln    BestBound   Sols    Add    Del     Gap     GInf   Time\n",
      "a          318.000000   318.000000      3                  0.00%       0      0\n",
      " *** Search completed ***\n",
      "Uncrunching matrix\n",
      "Final MIP objective                   : 3.180000000000000e+02\n",
      "Final MIP bound                       : 3.180000000000000e+02\n",
      "  Solution time / primaldual integral :      0.01s/ 82.129283%\n",
      "  Work / work units per second        :      0.00 /      0.45\n",
      "  Number of solutions found / nodes   :         3 /         1\n",
      "  Max primal violation      (abs/rel) :       0.0 /       0.0\n",
      "  Max integer violation     (abs    ) :       0.0\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(<SolveStatus.COMPLETED: 3>, <SolStatus.OPTIMAL: 1>)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import xpress as xp\n",
    "import numpy as np\n",
    "import networkx as nx \n",
    "import matplotlib.pyplot as plt\n",
    "import itertools\n",
    "\n",
    "rndseed = 10\n",
    "\n",
    "np.random.seed(rndseed)\n",
    "\n",
    "'''Create random TSP problem data'''\n",
    "n = 17\n",
    "CITIES = range(n)  # set of cities: 0..n-1\n",
    "\n",
    "np.random.seed(0)\n",
    "\n",
    "X = 100 * np.random.rand(n)\n",
    "Y = 100 * np.random.rand(n)\n",
    "\n",
    "XY = (X, Y)\n",
    "\n",
    "# Compute distance matrix\n",
    "dist = np.ceil(np.sqrt ((X.reshape(n,1) - X.reshape(1,n))**2 +\n",
    "                        (Y.reshape(n,1) - Y.reshape(1,n))**2))\n",
    "\n",
    "# Create problem\n",
    "p = xp.problem()\n",
    "\n",
    "# Create variables as a square matrix of binary variables. Note\n",
    "# the use of p.addVariables to ensure NumPy uses the Xpress operations for handling these vectors.\n",
    "use = p.addVariables(n,n, vartype=xp.binary, name='x')\n",
    "\n",
    "# Degree constraints\n",
    "p.addConstraint(xp.Sum(use[i,:]) == 1  for i in CITIES)\n",
    "p.addConstraint(xp.Sum(use[:,i]) == 1  for i in CITIES)\n",
    "\n",
    "# Fix diagonals (i.e. city X -> city X) to zero\n",
    "p.addConstraint(use[i,i] == 0 for i in CITIES)\n",
    "\n",
    "# Objective function\n",
    "p.setObjective(xp.Sum((dist * use).flatten()))\n",
    "\n",
    "p.optimize()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's use the *matplotlib* and *networkx* Python packages to visualize the solution obtained by Xpress and check if there are any subtours:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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Tz+t5557ThMnTrQ3J+C/WNkPUObO4axZs7zWmC+Haebhcrko4wcAAABOw+zjf+GFF2zn+/nz56tx48Z67bXXbOg3v/7www8db5L3zyP5vv/+e0fngqIh7Acoc7fQhPDu3bt7fW8Sx+8BAAAABTv2rmnTpvbouz179mj06NGKjo62++UrVaqkbt266auvvnKkWZ75fJ9zJJ/pM7B169ZinwM8g7AfgMzODPMXtGPHjoqNjfX69czxe4R9AAAAoOCioqLUq1cvW5W7Y8cOPf/88/rtt9/Url07ValSRffdd59WrVpVrPv7OZIvMBD2A9DKlSvtfiBvl/DnMCv7lPEDAAAARWOa9z344INau3at1qxZY0/VmjBhgurXr68LLrhAL730kt3rX1xH8s2YMUO7d+/mSD4/RdgPQJ9++qm9C9i8efNiuR5l/AAAAIBn1a1b1+7nN+F+5syZuuSSS+x++rPOOst+zv/ss89ss2xvqlWrlr788kuO5PNThP0Ac/ToUdsZ39wFDAsLK5ZrUsYPAAAAeEd4eLiuv/56u6/frLKbo/FM6DZVvGZ/v2mkN3fuXGVlZXnl+hzJ578I+wFm2rRpdk9Nv379iu2alPEDAAAA3meOvB4wYIDt5G86+j/55JN2C+91112nM888U4888oh++uknj1/XZIunnnpKjz32mD2SD/4hJJtajIDSpk0bG/aXLl1abNd8++239cQTTyglJaXYrgkAAADg7+bcP/zwg0aOHGkrfM0iXL169Wylb8+ePe3qv6eu07t3b02ePFkLFixQw4YNc31tptut5PQsubOzFRoSohhXmMJDWWcuboT9ALJr1y5Vq1ZN7733nm677bZiPebPlA+lpqaqZMmSxXZdAAAAAP8vPT3ddvU3wX/69Om2tN+s+pvgb47RK+pndbNluEWLFvr999+1fPly1ahR4/hzh9IytDUxVbtT0pSScfKWguiIMFWKjlSN2CiVjowo0jyQP9xeCSAmdLtcLnsuZ3EyZfwGpfwAAACAc0wWaN++vb744gv99ddfevfdd5WUlHR8hf/mm2/Wt99+K7fbXegj+czKvtlOkHMkX0p6ppZs36952/ZpS2LqKYO+YR43z5vXmdeb98G7WNkPEOaP0RzHYUp2xowZU6zXNmVDl19+uVavXm2vDwAAAMB3bNy40S4Mfv7559q6davt6G8q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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Visualize solution using networkx and matplotlib\n",
    "def plot_sol(p):\n",
    "\n",
    "    # collect the edges: if the value of x[i,j] is 1, then the edge (i,j) is in the solution\n",
    "    edges = []\n",
    "    sol = p.getSolution(use) # get solution values\n",
    "    for (i,j) in itertools.permutations(CITIES, 2):\n",
    "        if sol[i,j] > 0.5: # variable is binary so > 0.5 --> is 1\n",
    "            edges.append( (i,j) )\n",
    "\n",
    "    # create dictionary with coordinates for each node to plot the graph \n",
    "    xy = {}\n",
    "    for i in range(n):\n",
    "        xy[i] = (X[i], Y[i])\n",
    "\n",
    "    # make figure look nicer\n",
    "    plt.figure(figsize=(10,6), dpi=100)\n",
    "\n",
    "    # create empty graph\n",
    "    optgraph = nx.Graph()\n",
    "\n",
    "    # add edges\n",
    "    optgraph.add_edges_from(edges)\n",
    "\n",
    "    # draw the cities, with labels in the position xy (see when we read the instance)\n",
    "    nx.draw(optgraph, node_size=300, pos=xy, with_labels=True, node_color='lightblue')\n",
    "\n",
    "    # show drawing\n",
    "    plt.show()\n",
    "\n",
    "# Plot solution\n",
    "if p.attributes.solstatus not in [xp.SolStatus.OPTIMAL, xp.SolStatus.FEASIBLE]:\n",
    "    print(\"Solve status:\", p.attributes.solvestatus.name)\n",
    "    print(\"Solution status:\", p.attributes.solstatus.name)\n",
    "else:\n",
    "    plot_sol(p)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see, the solution contains subtours, and therefore it is not yet a valid solution for the problem yet. We need to add constraints that eliminate any such subtour.\n",
    "\n",
    "A straightforward approach for formulating subtour elimination constraints is to add a constraint for each subtour contained in the set of all subtours $\\mathcal{S}$ as follows:\n",
    "\n",
    "$$\n",
    "\\sum_{i,j \\in S} use_{ij} \\leq |\\mathcal{S}| - 1 \\quad \\forall \\mathcal{S} \\subsetneq \\mathcal{N},\\ |\\mathcal{S}| \\geq 2\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/sAAAJrCAYAAAC/aYPNAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAnc1JREFUeJzs3QV81eX3wPGzHttgAxa0dHdKd3dKSYkIKooBBirqX0GxsAgVAWnpbmmQThElpVewsWB59389j8JPZL27fW983q/XXoO7e7/3ILh9z3POcx6HpKSkJAEAAAAAADbD0egAAAAAAACAeZHsAwAAAABgY0j2AQAAAACwMST7AAAAAADYGJJ9AAAAAABsDMk+AAAAAAA2hmQfAAAAAAAbQ7IPAAAAAICNIdkHAAAAAMDGkOwDAAAAAGBjSPYBAAAAALAxJPsAAAAAANgYkn0AAAAAAGwMyT4AAAAAADaGZB8AAAAAABtDsg8AAAAAgI0h2QcAAAAAwMaQ7AMAAAAAYGNI9gEAAAAAsDEk+wAAAAAA2BiSfQAAAAAAbAzJPgAAAAAANoZkHwAAAAAAG0OyDwAAAACAjSHZBwAAAADAxpDsAwAAAABgY0j2AQAAAACwMST7AAAAAADYGJJ9AAAAAABsDMk+AAAAAAA2hmQfAAAAAAAbQ7IPAAAAAICNIdkHAAAAAMDGkOwDAAAAAGBjSPYBAAAAALAxJPsAAAAAANgYkn0AAAAAAGwMyT4AAAAAADaGZB8AAAAAABtDsg8AAAAAgI0h2QcAAAAAwMaQ7AMAAAAAYGNI9gEAAAAAsDEk+wAAAAAA2BiSfQAAAAAAbAzJPgAAAAAANoZkHwAAAAAAG+NsdAAAAAApSTCZJDIuUUxJSeLo4CBerk7i7EitAgCAtJDsAwAAi3I3Nl4uhUXLrahYiYpPfOTrni5OUsDTTUr4eEgeNxdDYgQAwNI5JCUlJRkdBAAAQFRcghwLDJeg6DhxEJHUblDuf93fw1VqBHiLpyv1CwAA/o1kHwAAGE5V8k8EhYu6K8nIjYlK+h0cRKr5e+tKPwAA+BvJPgAAMNTZ0Ag5ExKZ5etU9PWS8vlzmyUmAACsHRNuAACAoRV9cyT6irrO5bBos1wLAABrxwY3AABg2B591bqfnCvn/pCfv/lMLvx2UsJCgsTNPZcUKV1Wug4bJXVatEnxmseDwsXPw5U9/AAAu0dlHwAAGEIN40tpM2HwjWtyLypSmnfrLcPe/D/p9exL+vGPnh0imxfPS/Ga6nrqugAA2Dv27AMAAEOO19t6OSRDr0lMTJRxPdtKXGysfL1hd6rPbVXcl2P5AAB2jco+AAAwZK++mqSfEU5OTpK/QCGJjrib6vMc/rk+AAD2jA1tAAAgx92Kik3XEXsx0dESF3tPoiMi5NAvm+XY7u3SsH2XVF+T9M/1q5ktWgAArA/JPgAAyFHxJpNExSem67lzPn5PNi+eq3/t6Ogo9Vp3kOFvf5jm69T1E0wmcXakiREAYJ9I9gEAQI6Kiktfoq90HDxcHm/bUe4EBcq+DWvEZEqUhPj4dL02Mi5RfNxJ9gEA9okBfQAAIEfdvhcnO66EZuq17w/rK1ERd+Wjn9eJg0Pqu/5v7N0sed2cJSAg4MGHr6+v7hAAAMDWUdkHAAA5yjGNJD01j7ftJDMmjJMbly5I4ZKlU33utG+/lTNHDz383o6O4u/v/9ACwP2PAgUKPLIwoIYCAgBgjUj2AQBAjvJyzXwCHRcboz9HR0ak+dwTh36V2Hv3JDAwMNmPW7duycWLF2X//v369xEREY8sDKiE/7+LAMktDvj5+bEwAACwKCT7AAAgR6mheZ4uTqkO6QsPDRHv/L4PPab26u9cuURc3d2lSKmyqb6Hur56H2dPTylZsqT+SEt0dLQEBQXpRYDkFgcuX74sBw4c0L++e/fh4//UlgK1MJBch8B/FwfUwoCzM7dgAIDsxU8aAACQ4wp4usnFsOgUj9+bPmGc3IuMlIq160m+gAISFhIsu9Ysl+sXz8vg1yZILk/PFK/t8M/1M8rDw0OKFy+uP9Jy7949vTBwv0PgvwsDV69elUOHDulfh4eHPxyfg4Pkz58/xe0D/35cLQy4uLhk+M8CAAAD+gAAQI67GxsvWy+HpPj1PetWyrZlC+XKn2clIuyO5PL0kpKVqkiHgcOkTou2aV6/VXFfyeNmGUlyTEzMg4WBlBYH7j8eFhb2yOv/vTCQ2uKAmkXg6upqyJ8RAGB5SPYBAIAh9lwNleDouBSr+5mhqvp+Hq7SqGh+sUaxsbEPLQyktjhw+/btR16fL1++NAcP3v9gYQAAbBvJPgAAMERUXIJsuRwsJjPeiTg6iLQu7ieerra/UzEuLu6RhYGUFgdCQx896jBv3rzpOpVAfbi5ZXxbBKxDgskkkXGJYkpK0idlqAGaat4FAOtHsg8AAAxzKSxajgU+vKc9K2oGeEtxHw+zXc9WxMfHJ7swkNziQEjIo9srvL2903Uqgfpwd3c35M+IjG2jUf/v3YqKTXZQphpwqeZelPDxsJjtMAAyjmQfAAAY6mxohJwJicz069WtjBp6V9LLWaoX9jNrbPYoISFBgoODU50t8O+Fgf/eSubJkyddwwfV51y5chn257TXbhq1uBYUHae3vKSWBNz/ur+Hq9QI8LaLbhnA1pDsAwAAw6kq44mgcFF3JRm5MVEJiXrFjx++LQnBN2Tt2rWcd5/DCwMq4U9r8OD9hQGTyfTQ63Pnzp2u+QLqwzOVExiQvf+POTiIVPP31pV+ANaDZB8AAFh91XHvjl+kffv2MnbsWPnoo49yMGqkV2Ji4oOFgbSGD6otB/9dGPDy8kr38EH1XJive+a+ir5eUj5/brPEBCD7kewDAACb2E/82WefyauvvioLFiyQfv365XDUMPfCgBoqmJ7hg2phQD3/31QXQHqHD6qFAbUNxFYxFwOwXyT7AADAJiaFq1uaQYMGybJly2Tv3r1So0aNHI8XOU91ACS3MJDc4oBaGFBbD/5NzQ1I7/BBte3AmhYG7p94ERUZJatmTpVzJ4/J+VPHJTI8TJ6b+IW06PHEI6+5duGczJo0Qc4ePSjOLq5Ss2lLGfL6u+KdL7/dnXgBWDuSfQAAYDPu3bsnjRs31gPmDh06JP7+/kaHBAtbGLhz5066hg+qhQF1isG/qZMG0jN4UH2oQYVGLwzsuRoqwdFxEnjtqoxqVU98CxWWgCKPyW8H9yWb7IfeuiGvdm8jHrnzSIeBwyQmOlpWz5ouvgULyUc/rxcXV1e9hcbPw1UaFf07+QdguViSAwAANkNVaVesWCG1a9eW3r17y9atW8XFhaPD8DdHR0fJnz+//qhUqVKqz1X1MLUwkNpsgaNHjz749X8XBtzc3NJ9KoE62tDcCwNqO4yaf6Hk9feXH3Yfl7x+/nL+1Al5rXf7ZF+zbMbXEnMvWiYv2yh+hYrox0pXrS7vD+sr21f8LG2eGKhnZajrqutzLB9g2Uj2AQCATSlatKhu5W/RooWMGTNGvv32W6NDghVSyXe+fPn0R4UKFdJcGAgLC0t1tsCJEycePB4X93cSfp+rq2u6Bg+qx318fNK1MKD26t8fZOni6qYT/bT8unmd1GrW+kGir1Rr0EQKFS8p+zau1sm+/m/zz/WrBXineU0AxiHZBwAANqdRo0byzTffyDPPPCPVq1eXp59+2uiQYMNU8p03b179Ub58+TQXBsLDw1OdLXDq1CndlaIej42NfWRhQG1PSWtx4LpL3gwdsRcaeFPCQ0OkdOWqj3ytdNUacnTnL//7M4joAZrVMnB9ADmPZB8AANikESNGyLFjx+S5556TihUrSsOGDY0OCdALA6o6rz7KlSuX5sLA3bt3U50tcObMGdm+fbv+tZpZobh7esq8Q3+IQwrDLJNzJyhIf/bxC3jka6orIDL8jsTHxeouAUWdlKEGaKY0MBOA8Uj2AQCAzfryyy/l9OnT0rNnTzl8+LAUKfK/9mTAGhYG1H5+9VG2bNk0FwYiIiJ00n8t5I7cyWASHhcboz+rIXz/5eL2d4IfFxPzINlX1EkZPu4k+4Cl4v9OAABgs1TL89KlS/Xn7t27P6h8Ara4MKBOAChTpoxUq149w693dXPXn+P/M09AP/bPVgJX97+fc586EhOA5SLZBwAANk3tX1YT+lWFX+3h59Rh2DrHTEz2VxP7lbDgwEe+dic4SLy88z5U1c/s+wDIOST7AADA5tWqVUtmzpwpc+fOlSlTphgdDpCtvFydMvya/AEFJU++/HL+9MlHvnb+5DEpUaGSWd4HQM4h2QcAAHahf//+MnbsWHn11Vf1pHPAVqmheZ4uGU/EH2/TUY7s2CIhN68/eOzk/t1y4/JFqd+u00PPVddnOB9g2RyS6GUDAAB2IjExUTp27CgHDx6UQ4cOSalSpYwOCcgWJwLD5WJY9IPj99bP+1GiI+7K7aBA2bRwjtRr3UFKVqysv9Z+4DDxzJ1HJ/mvdm8jnnm8peOTT0lMdLSs+nGa5AsoKJOXrn/Qxq+a90v6eEi1AG8D/4QA0kKyDwAA7MqdO3ekbt264u7uLvv37xcvLy+jQwLM7m5svGy9HPLg9yNb1JXgG9eSfe60rQfEv0hR/esr5/6Q2R+9K2ePHhRnF1ep1bSlDH5tgvj4+j30mlbFfSWPm0s2/ykAZAXJPgAAsDvqbPJ69epJ69at9bR+R9qRYYP2XA2V4Oi4B9V9c1BVfT8PV2lUNL8ZrwogO/CTDQAA2J2KFSvKvHnz9JT+Dz74wOhwgGxRI8BbzD0wX11PXReA5SPZBwAAdqlr167y/vvvy4QJE2TVqlVGhwOYnaers1TzN29iXt3fW18XgOWjjR8AANgtk8kkvXv3ls2bN8uvv/4qlSo9erwYYO12nrkgoU4eom77HbJQ6q/om1vK52fGBWAtSPYBAIBdi4yMlPr160tMTIye0p83b16jQwLMJjY2Vs+nqNq0lfR47hVRd/4ZuflXSwNqfUBV9Iv7eGRjpADMjTZ+AABg19Q0ftXGf/v2benbt68+ng+wFe+8844eSPny0IHSurifHq6npFXfv/919Xz1OhJ9wPpQ2QcAABCRrVu3Stu2beWVV16RyZMnGx0OkGW7du2SZs2ayaRJk+S111576Fi+S2HRcisqVqLiH13c8nRxkgKeblLCx4Pj9QArRrIPAADwjylTpshLL72kJ/UPGDDA6HCATAsPD5dq1apJsWLFZPv27eLk5JTs8xJMJomMSxRTUpI4OjiIl6uTOHMUJWATSPYBAAD+oW6Lhg4dKosXL5Y9e/ZIrVq1jA4JyJTBgwfroyVPnjwpxYsXNzocAAYg2QcAAPgXNaivSZMmcvPmTTl8+LAEBAQYHRKQIUuXLtWnTMyZM0cGDRpkdDgADEKyDwAA8B/Xr1+X2rVrS+nSpWXbtm3i6vr3UDPA0t24cUOqVKkizZs3lyVLlmTpqD0A1o0NOQAAAP9RuHBhWbZsmRw4cEBefPFFo8MB0sVkMultKG5ubjJjxgwSfcDOkewDAAAko0GDBjJ16lSZPn26TpwAS6f+vW7evFlmzZol+fPnNzocAAajjR8AACAVzz//vE721UTzRo0aGR0OkKzff/9datasKcOHD5evv/7a6HAAWACSfQAAgFTEx8dL69atdTKlBvYVLVrU6JCAh8TFxUn9+vUlOjpajhw5Ih4eHkaHBMAC0MYPAACQChcXFz3ozN3dXbp37y737t0zOiTgIe+9954+Ym/evHkk+gAeINkHAABIg5+fn6xatUrOnDkjTz/9tNAYCUuxd+9e+eijj+Tdd9+VWrVqGR0OAAtCGz8AAEA6LV68WPr27SuffvqpvPLKK0aHAzt39+5dqV69uhQsWFB27twpzs7ORocEwILwHQEAACCdnnjiCTl+/LiMGzdOn2Xepk0bo0OCHXvppZckODhYtm7dSqIP4BFU9gEAADIgMTFROnfuLPv375dDhw5J6dKljQ4JdmjlypV6hsTMmTNl2LBhRocDwAKR7AMAAGRQWFiY1KtXT1dTf/31V8mdO7fRIcGO3Lp1S3eWqKMgly9fLg4ODkaHBMACMaAPAAAgg3x8fPTAvmvXrsmgQYPEZDIZHRLshKrTqUq+k5OTfPfddyT6AFJEsg8AAJAJ5cuXl/nz5+uk//333zc6HNiJ6dOny4YNG3T7vjolAgBSQhs/AABAFnz44Yfy1ltv6XZqtYcayC5//PGH1KhRQwYPHizTpk0zOhwAFo5kHwAAIAvUrZSa0q+qrWpoX+XKlZN9XoLJJJFxiWJKShJHBwfxcnUSZ0eaLJE+8fHx0qBBAwkPD5djx46Jp6en0SEBsHAk+wAAAFkUFRWlE7HIyEg9oT9fvnz68bux8XIpLFpuRcVKVHziI6/zdHGSAp5uUsLHQ/K4uRgQOazFhAkTdBfJvn37pG7dukaHA8AKkOwDAACYwaVLl6ROnTpSs2ZNWbJqjZwKiZSg6DhR49NSu9m6/3V/D1epEeAtnq6cl46HqRMf1OT9d955R38AQHqQ7AMAAJjJ9u3bZdL0mfL0OxPF2dkl1SQ/uaRfDVav5u+tK/2AorpFqlevLr6+vrJnzx593CMApAfJPgAAgJmcDY2QMyGReh9/Vo5Eq+jrJeXz5zZrbLBOI0aM0Kc+HD9+XMqUKWN0OACsCEuDAAAAZqD25qtEX8nq2efqOu5OTlKcCr9dW716tXz//fcyY8YMEn0AGUZlHwAAIIui4hJky+VgMSVzV3X+1HHZvuJnOX1wnwRfvyq5ffJKmWq1pP+L46RQiVIpXtPRQaR1cT/28NupwMBAqVKlitSrV08n/VldQAJgf0j2AQAAsmjP1VAJjo5Ldo/+Jy88LWePHZIGbTvJY+UqSFhIsGyYP0tioqNk0qK1Uqxs+WSvqVI7Pw9XaVQ0f7bHD8uibs+7du2qB/OdOnVKAgICjA4JgBUi2QcAAMgCdbze1sshKX797NFDUqpyNXFxdX3w2I3LF+XlLi2lftuO8uIn36R6/VbFfTmWz86o1n21V19V9Dt37mx0OACslKPRAQAAAFj7Xv3UGqzL16zzUKKvFCpeUoqWLivXLpxL9doO/1wf9uP8+fPy0ksvydNPP02iDyBLSPYBAACy4FZUbIaO2FNUY2VYaIjkzpsv9ef9c33Yh4SEBBk4cKAUKFBAPv/8c6PDAWDlSPYBAAAyKd5kkqj4xAy/btea5XI78KY07NAlzeeq6yeYTJmMENZk4sSJcujQIZk7d654eXkZHQ4AK0eyDwAAkElRcRlP9K9dPCc/vP+mlKteS5p165Ou10Rm4n1gXQ4ePCjvv/++jB8/XurXr290OABsAAP6AAAAMun2vTjZcSU03c+/Exwk4/t3lcSEeD2JP19AgXS9rlmx/JIv18P7/mE7oqKipEaNGuLj4yN79+4VFxcGMgLIOg5uBQAAyCTHDJx9HhVxVz4cMUCi7t6VD+avSHein9H3gfUZO3asXLt2TdasWUOiD8BsSPYBAAAyycvVKV3Pi4uNkUmjBusj9yb8uFhP4s+O94H1Wb9+vUybNk2mTp0q5cqVMzocADaEPfsAAACZ5OzoKJ4uqSfiiYmJ8vlLI+XP40fklSnfSbkatTP0Hur66n1ge4KDg2XYsGHSvn17GTlypNHhALAxVPYBAAAyIS4uThYtWiS/hUZJ7TadxMk5+duqOR+/J4d+2Sy1m7eWyPAw2bl62UNfb9qlZ4rvoZr3C3i6mT12GE+NzRoxYoQ+bm/mzJniwFYNAGZGsg8AAJAB4eHh8t1338mXX34p169flwHDhku9Dt1SfP7l33/Tnw9v36I//iu1ZF9NUS7h42GmyGFJZs2aJStXrpTly5dLwYIFjQ4HgA1iGj8AAEA6qAFqKsGfMWOGxMbGysCBA+Xll1+WSpUqyZ6roRIcHaeTc3NRdV4/D1dpVDS/Ga8KS3Dx4kWpVq2a9O7dW3788UejwwFgo0j2AQAAUnHy5En59NNPZeHCheLp6SmjRo2SF1544aFqbFRcgmy5HCwmM95VOTqItC7uJ56uNGLaEjXDoUmTJnLz5k05ceKE5M6d2+iQANgofnoAAACrkWAySWRcopiSkvRxdGpKfXYMr1O1kG3btukkf9OmTVK0aFGZPHmyDB8+PNnkzNPVWar5e8uxwHCzxVDd35tE3wZ9/PHH8uuvv8quXbtI9AFkK36CAAAAi3Y3Nl4uhUXLrahYiYpPTHZavRpip/a253HL2hnl8fHxsmTJEp3kHzt2TKpXry7z58/X7dZpnX+u3j82MVHOhERKVlX0zS3F2atvc44cOSITJkyQ119/XRo2bGh0OABsHG38AADAIqnWeFUpD4qO0/vXU7thuf91fw9XqRGQ8Yp4RESE/PDDDzJlyhS5cuWKtG3bVsaOHSstWrTI8JR0tTBxIihc1B1WRm6y1Luot1IVfRJ92xMdHS21atUSDw8P2b9/v7i6uhodEgAbR2UfAABYnH8nzEpaSfP9r6sheWrvvGqpT88Ue7Vv+quvvpLp06dLZGSk9OvXT1599VWpWrVqpmNX76sWHTK6UOGXyYUKWIfXXntNLl++LEePHiXRB5AjqOwDAACLcjY0wkyt8F5SPn/ye6LPnDmjW/VVi76bm5s888wzeuie2ptvrVsQYLnU3Id27drphaXRo0cbHQ4AO0GyDwAALIZKjM055K5mwP9a4tUtjxqK9sknn8i6deukcOHC8uKLL8qIESPE29tbbGW4ICxLaGioVKlSRX9s2LBBHPk7B5BD6BMDAAAWs0dfte6nJD4uVhZ99YnsXLVMou6Gy2PlKki/F8dJtYZNU3zN8aBwyevmJJvWrNKV/EOHDumka86cOdK3b98cbadWib2PO4mePVELTCNHjpTY2FiZNWsWiT6AHMV3HAAAYBFURT+1fsOvXx8ja2Z/J407d5ehb76vE6cPn3lSfj9yIMXXJCaaZOqKDfLEE09Injx5dGVVnW0+aNAg9k0j282dO1eWLl0qM2bMkEKFChkdDgA7Qxs/AAAwnNrbvvVySIpfP3fymLzep6MMGvu2dH1qlH4sLjZGXurcQrzz5ZeJi9akev1C0cHyeI3MD90DMkoN41ODHrt16yY//fST0eEAsENU9gEAgEXs1U/tgLv9m9aKo5OTtH5i4IPHXN3cpWXPfvLH8SMScvN6iq9V181V6DEzRwykLDExUXeP5MuXT77++mujwwFgp0j2AQCA4dS0+tRaDS/9floKFS8pHl4PT9cvXbX6P1//LcXXJv1zfSCnqPkQe/bs0RX9nBj+CADJIdkHAACGijeZkj2W7t/uBAdJXr+ARx6//9idoMBUX6+ur6bhA9nt2LFj8vbbb8vYsWOlSZMmRocDwI6R7AMAAENFxaWe6CtxMTHinMxAPRc3t7+/HhuT5jXUsXdAdoqJiZGBAwdKxYoV5f333zc6HAB2jqP3AACAodS582lxdXeXhLi4Rx6Pj419sH/fHO8DZMUbb7whFy5ckMOHD4vbPwtRAGAUkn0AAGAoR4fURvP9La+fv9wOvPXI43eC/27fz+sfYJb3ATJr69atMmXKFPn888+lcuXKRocDALTxAwAAY3m5OqX5nOLlK8mNyxclOjLiocfPnTimP5eoUMks7wNkxu3bt2XIkCHSsmVLefHFF40OBwA0kn0AAGCIa9euybRp06RThw5y68rlVJ9bv20nMSUmypbF8x48Fh8XK7+sWCxlqtUU34KFU329p4uTODty2wPzS0pKkmeffVaioqJk9uzZ4si/MwAWgjZ+AACQY0nRqVOnZNWqVfrjyJEj4uTkJE2bNhXPpPh/DslLvtW+bLWaUr9dZ5n/xSQJvx0iBYqVkB0rf5bg61fl2Q8+S/V91RULeLJ/GtljwYIFsnjxYlm4cKEUKVLE6HAA4AGHJPWTFwAAIBskJCTI7t27HyT4ly9flty5c0v79u2lS5cu0qFDB8mbN6/cjY2XrZdDUr2Wmri/8MvJsmvNcokKD5fHylWQvi+MkxqNm6UZR6vivpLHzcWMfzJA5MqVK1K1alXp2LGjzJ8/3+hwAOAhJPsAALukzlxXR7GpCe1qcJvaz02bt3lERETIpk2bdHK/bt06uXPnjhQuXFgn9127dpVmzZolO6l8z9VQCY6O0/V9c1FVfT8PV2lUNL8ZrwqImEwmadWqlZw/f15OnjwpPj4+RocEAA+hjR8AYDdU9fhSWLTcioqVqPjEZPd1q3bvEj4eVIEz6MaNG7J69Wqd4P/yyy8SFxenK57PPfecTvBr1aolDmlMw68R4C1bLgeLOcsQ6i3VdQFz++KLL2T79u363zuJPgBLRGUfAGDzouIS5FhguARFx+lKb2o/+O5/3d/DVSeJnq6siydH3T789ttvD9rzDx06pPffN2nSRCf3qopfokSJDF9XLcaovytzqRngLcV9PMx2PUBRlfw6derI888/L599lvrMCAAwCsk+AMCmqeTxRFC4rhZn5Aeewz9V4Wr+3rrSj7/33+/Zs0cn96qKf/HiRfHy8pJ27drpBF/tv8+XL1+W3+dsaIScCYnM8nUq+uaW8vm9snwd4N9iYmKkbt26+tcHDx4Ud3d3o0MCgGRRrgAA2KysJI1qYUAtEKgqc2xiopTPn1vsUWRk5EP779V54oUKFdKVe/XRokWLZPffZ4X6b+3m5JSlRZrq/lT0kT3eeust+eOPP3Q3C4k+AEtGZR8AYJNoB8+8mzdvypo1a3SCv23bNomNjZXKlSvr6v39/fc5cZY42y9gadQe/ZYtW8rkyZPl1VdfNTocAEgVyT4AwOaoJFENejOl8yfc0ulfysIpH0vRMuVkyprtyT7H0UGkdXE/m0wi1a3AmTNnHuy/V63JKplv3LjxgwS/ZMmShsXHYEVYgrCwMD10slSpUnoRLCcWvAAgK2zvjgUAYPdUNTi9S9mht27I8hlfibtH6lX7+y39tnKEm9p/v2/fvgcJ/oULF8TT01Pvv1dDx9T++/z5LePPqhL4agHeUo0jE2Eg9f9FeHi4zJkzh0QfgFUg2QcA2BRVBVZt3+k1Z/L7UrZaLTElJsrdsNspPk+tHajrqutba/U4KipKNm/erJP7tWvXSmhoqBQoUEDvvf/qq6/0/ntL34OsEnsfdxIt5KzFixfL/PnzZe7cuVKsWDGjwwGAdCHZBwDYFNXundb+7vt+O/Sr7N+0Tj5dvllmfvBWms93+Of6qspsLW7duvVg//3WrVv1/vtKlSrJiBEjdHu+Oj6MKiWQsmvXrsnIkSOlT58+MmDAAKPDAYB0I9kHANgUta87PYl+YmKiTvBb9eovj5WrkK5rJ/1zfdVObsn778+ePfugPf/AgQPi4OAgjRo1kokTJ+oqfunSpY0OE7AKJpNJhgwZore4TJs2Tf+/BADWgmQfAGAz4k2mZAe4JWfzop8k+MY1mTBrcYbeQ10/JDpOfNydLWavuFq4uL//fvXq1XLu3Dnx8PCQtm3byqxZs6Rjx47i6+trdJiA1VHbW9Qwvi1btki+fPmMDgcAMoRkHwBgM6Li0pfoR9y5LYu++lR6jxoj3vkyPoRu19VQw6fAq/33KgG5v/8+JCREAgICpHPnzvL555/r48Fy5cqVozEBtuS3336T119/XV588UVp1aqV0eEAQIaR7AMALLZ9ViW0kZGRj3yk9LhTbh9pOPCZNK+94MvJ4uXjI+0HDstSjKrKfzEsWi6ERefI+e6BgYE6sVcJvkr0Y2JipEKFCjJ8+HC9/75u3brsvwfSIa1THeLi4mTgwIH6mL1JkyYZGisAZBbJPgAgy3vE1Y1xcsl3aol5Ws+Njo5O873d3NzEy8vrwUfJipWlYRqvuXH5omz9eZ4MfeM9uRMU+ODxuLhYSYyPl6BrVyWXl5fk9smbvj//P5+Do+Nky+VgqebvrSv95nJ//71qz9+/f7/eM9ygQQP5v//7P53glylTxmzvBdgydZKGGrCp5m4kt93n3506Eye8oyv7auYFHTIArJVDkrpLA9KBs40B+6yWp+e56sz21KgE9d9JeWofahBWep/n7Oz8yPep1ef+l8An5/SBfTJhcK9Un9Nx0HAZ9ub7klkVfb2kfP7cmd5//+uvvz4YsPfnn3/qZEPtv1fJvdp/7+fnl+nYAHsTFZcgxwLD9dGZaZ3Ucf/rx/fulDyRIfLqC8/nYKQAYF4k+zDbKri1njsNWCJLqpabIzFXZ7fn1BTrTReDUh3Sd/dOqPx+5OAjjy/8crLci4rUSX6BosXTPaE/JTUDvKV4Oiv86u9FteWr6r06Ji84OFj8/f31/nuV4Kv9wlQXgYxT9zAngsJF3e1m5IbXlJgozs5OZu/UAYCcRLIPs62C58R+VcAS2Xq13NqcCAzX++gz+sPtnSd7yt2w2zJlzfZkv37xt5Oy+JvP5OzRQxIXGyMBRR+T1r0H6C6A5Dg6iLQu7pfi98SgoKCH9t/fu3dPypUrp5N79VGvXj1xcnLK4J8CwH1nQyPkTEhklq+TlU4dADCSdd/RIdtXwZUkg/erArZeLS9SpIjFV8utifr+owbmmdPxPTtk0qghUqJiZek1aoy4e3jKrauXJTTwZoqvUd9D1aJpo6L/m/avWvLvt+ero/IUtf/+vffeky5duuhkH4B57mXMkegr6jruTk7p7tQBAEtBZR8PYRUcloJqObJiz9VQvQBpjh9w0ZERMrpdIylXo7a8+uX3GZ527xt2TdavWKYTfDVsT7Xjt27dWlfvO3XqpNv1AZi3O1EVH0zJfAO4FxUlq2ZOlXMnj8n5U8clMjxMnpv4hbTo8USq10yrUwcALBHfsfAAq+Awd7U8K0k51XJkhdpSpG72zbGcvXvtCgkLCZb+Y17XiX5MdLS4urunK+lPTEiQOWs2yZoff9SJ/UcffaQTfQ8PvjcC2UV11KT0/37EnduyZOoX4luosDxWrqL8dvDvDpu0JNepAwCWjmQfD1bBVet+Zle9E+Lj5ZVureTahXMyaOzb0vWpUXI8KFz8PFxZBbcgllgt9/HxeSgxp1oOc/B0ddZbitTNeVad3LdbPLxy65b9j58bqo/uc/fwkCZdesnQN94VVzf3FF/r5OwsXfoPku/ee4P990AODRZW84ZSktffX37YfVzy+vnL+VMn5LXe7dN1XbV2oK6rrs9AYgDWgjtlPLIKnplV7/XzfpSQm9cfeoxVcNuulqc3KadaDiP37scmJma5Y+nmX5ckMTFBJ/ote/aTAS+/qb8vqu97UXfD5eXPp6X6+kQnF0ni3z+QY12KqQ0WdnF104l+Zjj8c/1qAd5ZihEAcgrJPh5ZBc/oqnd4aIheHOg2/DlZ9NUndrcKTrUcsFxqdoibk1Omjt66LyY6SmLv3ZM2fQfJU299oB97vE0H3dG0efFc6fvCWClUvGSq14iMSxQf94zt9QeQceqo4OwaRpX0z/WrZdP1AcDcuKvHI6vgGV31nvfZh1K4RClp0qXnQ8m+pa2CUy0H7LfCr44GTe9xov+l9ucrjTp2e+jxRp2662T/z+NH0kz2TczCBbJdvFp8j0/M1vdQ108wmcQ5g4M6AcAIJPvI0iq42te/Y+US+WD+SnHQt9DmWQWnWg7AnDxdnfWWItVppBYg1fel9CYF+fwC5Oq5P8Qnv+9Dj3vn/3uLUuTdtOcCOLIwB2S7qLjsTfTvo1MHgLUgA7FzWVkFV5XymR+8JQ3ad9FHUgVdu5rs8yLjEuSLL7+SiPAwquUADKW2FKlOI7UAqapz4bHxsvPK7VRfU7JSVTmxb5fcDrolhUuWfvD4naBA/dk7b74039fLleF8QHbLqQ4aOnUAWAuSfTuXlVXw7csXy19//i6vfvldqs9TyfPMufPk9o1rVMsBWAzVhps/l5t4ujiluujZoH1nWfH9N7Jt6UKp8nijB49vXbJAT9uvVLdBqu+jrk/LL5D9cqqDhk4dANaCbMnOZXZ1OjoyQuZ/MUm6DhslvgULp/n8Xbv3SL5crpl6LwDITgU83eRiWHSK25lKVqwiLXr2lV+WLdJT+SvVqS+nD+6X/RvXSI8RoyVfQIEUr+3wz/UBZL+c6qChUweAtSDZt3OZXZ1e9eM0PYm6YYeuD9r3QwNvPNi/qh7L6x8gLq5/J/isggOw5AF+F8JS3zr0zLsfi1/BwvLL8sVycOtG8S1URIa+8Z50Gvx0qq9L+uf6ALKf6qBJq1MnqxKjIyUi3F3y5s2bbe8BAOZCsm/nMrs6HXLjhkSGh8mYTs0e+dryGV/pj09XbJYSFSpn6X0AICf28atp/cHRcSlW951dXKTP86/oj/RSS5x+Hq42ffQoYG2dOsr6eT9KdMRduf3P3I3D27fI7cCb+tftBw4Tz9x5kn2dKTFRNi3/WQZOfl+6dOkigwYNknbt2omLC/+PA7BMJPt2LrOr4B2fHCZ1W7V96LHw0FCZMWGcNO/eR+q0bCv+RYrpx9mvCsDS1Qjwli2Xg8Wcc7dUQ5O6LgDL6tRZ/eN0Cb5x7cHvD2xZrz+UJp17ppjsOzo5yRvPDJOKeXPJTz/9pBN+X19f6devn078a9WqxZBfABbFIUmNVIddOxEY/sgq+L9XvTctnCP1WneQkhUrp7rqrVr3R7WqJ4PGvi1dnxqlH1M/8kr6eOjp1wBgydSRfMcC0z5GL71qBnhLcVr4gRy352poqp06mXG/U0cd4XnfyZMnZe7cuTJv3jy5deuWlC9fXif9AwcOlKJFi5rx3QEgc0j2oc+d3no55KHHRrao+9Cq979N23pA/IsUTVeyr7Qq7ksbKwCrcDY0Qs6ERGb5OhV9c0v5/F5miQlAxkTFJehOHZMZ73AdHURaF/cTT9dHm2ITEhJk27ZtOvFfvny5xMTESPPmzeXJJ5+Unj17Su7cuc0XCABkAMk+cnQVHACsocJ/Iihct/QnZfB7nurgre5PRR+w106diIgIWbZsmU78t2/fLu7u7tKjRw+d+Ldq1UqcnJhhBCDnkOzDkFVwALD074kqUQiKjtNJfGrfGu9/XQ35U3v0PfmeB1gEozt1rly5IvPnz9f7+8+ePSsFCxaUAQMG6Fb/KlWqZDkuAEgLyT4eYL8qADy6zUl9b7wVFZvsIFM1gFRN/1ZDwdiuBFgeS+jUUbfaR44c0Un/woULJSQkRKpVq6aT/v79+0uBAgWydH0ASAnJPixqFRwALFWCySSRcYliSkoSRwcHfaQoJ40Als+SOnXi4uJk48aNus1/9erVer9/mzZtdOLftWtX8fCgSALAfEj2YZGr4AAAALbcqXPnzh35+eefdeK/d+9ePcivV69eOvFv0qSJOLKYCCCLSPaR4ir40cBwPbTPlJioz5ZNCftVAQCANbG0Tp3z58/rI/xU4n/x4kUpVqyYHuqnPsqVK2dYXACsG8k+UnT06FHp2qevfDN/ibj7FbSIVXAAAABbpW7L9+3bp/f3q6p/WFiY1K1bV1f7n3jiCfH19TU6RABWhGQfKXrhhRdkyZIlcvXqVXF2dra4VXAAAABbFRMTI2vXrtWJ/4YNG8TBwUE6dOigE/+OHTuKm5ub0SECsHAk+0hWbGysFCpUSJ566imZPHmy0eEAAADYreDgYFm0aJFO/A8fPix58+bVlX6V+D/++ON6IQAA/otkH8lavny59OzZU06fPi2VKlUyOhwAAACIyO+//6739quPa9euSenSpfXe/oEDB0rJkiWNDg+ABSHZR7K6dOkit27dkoMHDxodCgAAAP7DZDLJjh07dLV/2bJlEhkZKY0bN9aJf+/evcXHx8foEAEYjGQfjwgMDJTChQvLV199Jc8++6zR4QAAACAVUVFRsnLlSp34b926VVxcXKRr1666zb9Nmzb69wDsD8k+HvH555/LG2+8ITdv3pR8+fIZHQ4AAADS6caNG7JgwQKZM2eO3o7p5+cn/fv314l/jRo12N8P2BGSfTxE/XOoWrWqVKhQQR/5AgAAAOu8pztx4oTe2z9//nzduVmxYkWd9A8YMECKFClidIgAshnJPh5y5MgRqV27tqxfv17at29vdDgAAADIooSEBNmyZYtO/FesWKFPXWrZsqXe39+jRw/x8vIyOkQA2YBkHw8ZPXq0HvJy5coVcXZ2NjocAAAAmNHdu3dl6dKlen//zp07xcPDQ5/ApBL/Fi1aiJOTk9EhAjATkn08oFZ5CxUqJMOHD5ePP/7Y6HAAAACQjS5fvqxb/FXi/+eff+r7QHWEn0r8K1eubHR4ALKIZB8PqIp+r1695LffftN7ugAAAGD7VDpw6NAhnfQvXLhQbt++rYf5qf39/fr1k4CAAKNDBJAJJPt4oHPnzhIUFCQHDhwwOhQAAAAYIC4uTjZs2KAT/zVr1ojJZJK2bdvqxL9Lly6SK1cuo0MEkE4k+9Bu3bqlp7J+/fXXMmrUKKPDAQAAgMFCQ0P16UxqsN/+/fslT5480rt3b534N2rUSBwdHY0OEUAqSPahffbZZ/Lmm2/qpD9v3rxGhwMAAAALcu7cOZ30qw+117948eIP9veXLVvW6PAAJINkH3qfVtWqVfU+/cWLFxsdDgAAACyUauvfu3evbvNXVX813f/xxx/X1f4nnnhC8uXLZ3SIAP5Bsg85cuSI1K5dW9avXy/t27c3OhwAAABYgXv37ul9/Srx37hxo27r79Spk078O3ToIK6urkaHCNg1kn3I6NGj9ST+K1euiLOzs9HhAAAAwMoEBgbKokWLdOJ/9OhRXeHv27evTvzr1q0rDg4ORocI2B2SfTsXGxurz1QdPny4fPzxx0aHAwAAACunjnFWe/vnzZsn169f13v61d5+tcdf7fUHkDNI9u2cquj36tVLf1NWe/YBAAAAc0hMTJTt27frxF/dc0ZFRUnTpk114q/uP729vY0OEbBpJPt2rnPnzhIUFCQHDhwwOhQAAADYqMjISFmxYoVu89+2bZu4ublJt27ddOLfpk0btpIC2YBk346pY/aKFCki33zzjYwcOdLocAAAAGAHrl27JgsWLNCJv+ouDQgIkP79++v9/dWqVWN/P2AmJPt27NNPP5W33npLbt68KXnz5jU6HAAAANgRlYYcP35cJ/0q+VfdppUrV9ZJ/4ABA/RcKQCZR7Jvp9Rfe5UqVfQ3VDU5FQAAADBKfHy8bN68We/vX7lypf59y5YtdeLfvXt38fT0NDpEwOqQ7Nupw4cPS506dWTDhg3Srl07o8MBAAAAtLCwMFm6dKlO/Hft2qUT/Z49e+rEv1mzZuLk5GR0iIBVINm3U88//7weknLlyhW+YQIAAMAiXbp0SR/hp1r9z58/r+dNqSP81GA/TpICUkeyb4diY2OlYMGCMmLECPnoo4+MDgcAAABIlUpZ1OlRKulXW1Dv3LkjtWrV0tX+vn37ir+/v9EhAhaHZN8Oqbao3r17y5kzZ6RChQpGhwMAAABkqHC1fv16nfivW7dOLwSobakq8VfHSru7uxsdImARSPbtUKdOnSQkJER+/fVXo0MBAAAAMi00NFQWL16sE39V+ff29pY+ffroxL9hw4Yc4we7RrJvZ9Qxe0WLFpVvvvlGRo4caXQ4AAAAgFn88ccfen+/Guz3119/ScmSJfXefvVRqlQpo8MDchzJvp359NNP5a233tJJf968eY0OBwAAADArk8kku3fv1tX+JUuWSEREhDRo0EBX+1XVn3tg2AuSfTui/qqrVKkilStX1oNNAAAAAFsWHR0tq1ev1on/5s2b9SlUal+/SvzVPn9XV1ejQwSyDcm+HTl8+LDUqVNHNmzYoL+5AQAAAPbi1q1bsnDhQp34Hz9+XPLnzy/9+vXTiX/t2rXZ3w+bQ7JvR55//nlZsWKFXLlyRa9qAgAAAPbo1KlTem+/2uOvtreWK1dOJ/0DBw6UYsWKGR0eYBYk+3YiJiZGChUqJM8884xMmjTJ6HAAAAAAwyUmJsq2bdt0tV8VxVTbf/PmzfVQv549e0qePHmMDhHINJJ9O6GGk6iBJL///ruUL1/e6HAAAAAAi6IG+S1fvlwn/tu3bxd3d3fp3r27TvxbtWolzs7ORocIZAjJvp3o2LGj3L59W/bv3290KAAAAIBFu3r1qsyfP18n/qpYVqBAARkwYIBu9a9atarR4QHpQrJvB9Q+pCJFisjUqVN1Gz8AAACAtKlU6ejRozrpX7BggYSEhOhkXyX9/fv3l4IFCxodIpAikn078Mknn8jbb7+tJ5D6+PgYHQ4AAABgdeLj42Xjxo16sN+qVaskISFBWrdurRP/bt26iYeHh9EhAg8h2bdx6q+3cuXKegVSHTUCAAAAIGvu3LmjZ2KpxH/Pnj3i5eUlvXv31vv7mzZtKo6OjkaHCJDs27pDhw5J3bp19Spk27ZtjQ4HAAAAsCkXLlzQR/ipxF/9Wh3dp47wU4k/g7FhJJJ9G/fcc8/JypUr5cqVK+Lk5GR0OAAAAIBNUmmVGoat9vcvXrxYwsLCpE6dOrrNv2/fvuLr62t0iLAzJPs2LCYmRgoVKqSH8k2aNMnocAAAAAC7uQ9ft26dTvzXr1+vH+vQoYNO/Dt16iRubm5Ghwg7QLJvw9Q+oj59+ujjQmghAgAAAHJecHCwrvSrxF9tsc2bN6++R1eJf/369cXBwcHoEGGjSPZtWMeOHeX27du6nQgAAACAsVQRTu3tV3v8r169KqVKldJ7+9VHyZIljQ4PNoZk30bdvHlTihQpIlOnTtVt/AAAAAAsg8lkkp07d+pq/9KlSyUyMlIaNWqkk35V9ee4bJgDZ0LYKLVa6OrqKk888YTRoQAAAAD4F3U0X/PmzWXWrFkSGBgo8+fPF09PTxk1apQUKFBAJ/xr166V+Ph4o0OFFaOyb4PUX2mlSpWkevXqsmDBAqPDAQAAAJDO7lx1/64q/idPnhQ/Pz/p16+f3t9fs2ZN9vcjQ0j2bdDBgwelXr16smnTJmnTpo3R4QAAAADIoBMnTuj9/arqf+vWLalQoYJO+gcMGCBFixY1OjxYAZJ9G/Tss8/K6tWr5a+//hInJyejwwEAAACQSQkJCbJ161ad+K9YsUIf66e2AKjEv0ePHpI7d26jQ4SFYs++jVH/8y9cuFD/z0+iDwAAAFg3Z2dnadeu3YMK/8yZM/W23SFDhuj9/Wqo35YtWyQxMdHoUGFhqOzbmJ9//lkP5Tt79qyUK1fO6HAAAAAAZAPVxasWANT+/j/++EMKFSqkW/xV8l+lShWjw4MFINm3MR06dJCwsDDZt2+f0aEAAAAAyGYqnTt8+LBO+lWHb2hoqB7UrTp91XA/Vf3PaQkmk0TGJYopKUkcHRzEy9VJnB1pKs9pJPs25MaNG3pYx7Rp02TEiBFGhwMAAAAgB8XFxcnGjRt14r9mzRrd2q8GdqvEv2vXrpIrV65se++7sfFyKSxabkXFSlT8o1sKPF2cpICnm5Tw8ZA8bi7ZFgf+h2TfhkyePFkmTJigj+zw8fExOhwAAAAABrl9+7be4qsG+6mu3zx58kivXr104t+4cWNxNFOlPSouQY4FhktQdJyogwFTSy7vf93fw1VqBHiLp6uzWWJA8kj2bYT6a6xUqZJu2VFncwIAAACAcu7cOZk3b55O/C9duiSPPfaY3tuvPsqWLZvp66pK/omgcFEZZUaSSpX0OziIVPP31pV+ZA+SfRtx8OBBqVevnmzatEm36gAAAADAv6nUb+/evbrNX1X9w8PDdQ6hqv1qyHf+/PnTfa2zoRFyJiQyyzFV9PWS8vk5PjA7kOzbiGeffVZWr16tp3Jy5B4AAACAtI7sVvv6VeK/YcMG3dbfsWNHnfirod9ubm6pVvRV67651AzwluJU+M2OZN8GqP9RCxYsKKNGjZKJEycaHQ4AAAAAKxIUFCSLFi3Sif+RI0ckX758utKvEn9V+XdQPff/2qO/5XKwmFLIIm9cviiLvposvx85JJHhd8S3YGFp3Km7dB02UtxyJZ/QOzqItC7uxx5+MyPZtwGqBUf9z6jO18zKnhsAAAAA9u3MmTN6b7/6uH79upQpU0bv7R84cKCUKFFC9lwNleDouGT36IfcvC4vd20lHl65pU3fJ8XLO6/8efywbF/xs9Rp0UZenzo72fdUSwl+Hq7SqGj6txEgbST7NqB9+/Zy9+5dvf8GAAAAALJKHdu3Y8cOXe1ftmyZREVFSbcn+smT732W4muWTf9KFkz5SL5Ys12KlSn34PGvX3tRdqxaInMOnBEv75RPDWtV3Jdj+czIPOctwDBqtW3z5s0yZMgQo0MBAAAAYCPUHLCWLVvKnDlzJDAwUFf6qzdvK4kJCSm+JjoqQn/28fV96HEff389E8DZxTXF1zr8MwsA5kOyb+XUERqurq7Sp08fo0MBAAAAYIM8PT11G//jrduLk3PK++or122gP08d/4pc+v20buvfu36VbF74k3R48ilx90h5CJ9qN78VFZst8dsr2vitmPqrq1ixotSsWVPmz59vdDgAAAAAbFS8ySRrzgWm+byl06bIshlfSVxMzIPHeo58UfqPeS1d79OlTIA4O1KTNgfGHVqxgwcPytmzZ+Wrr74yOhQAAAAANiwqLjFdz/MrXFQq1n5cHm/TUXL75JUjO7fK8hlfiY+vn3QYOCzN10fGJYqPO8m+OZDsW7HZs2dLkSJFpEWLFkaHAgAAAMCGmdLREL5n3UqZ/s5Y+WbjHslfoJB+7PE2HSTJZJJ5n30ojTt2k9x582X5fZA+LJlYqZiYGFm4cKE++1INzwAAAACA7OLooEbopW7jwjlSokLlB4n+fXVatJXYe/fk4u+nzfI+SB+SfSu1atUqCQ8Pl8GDBxsdCgAAAAAb5+WadoExPCRYTCbTI48nJMTrz6bERLO8D9KHZN+KW/gbNGggZcuWNToUAAAAADZODc3zdEk9ES9YvKRcOnNably68Eh7vzp677GyFVJ9vbo+w/nMhz37Vuj69euyefNmmT59utGhAAAAALATBTzd5GJYtD4mLzldn3pWju3eLm8N7C7tBwzVA/oO79gqx3b9Iq1695d8AQVSvLbDP9eH+XD0nhX6+OOP5d1335Vbt26Jt7e30eEAAAAAsAN3Y+Nl6+WQVJ9z7uQxWfzNZ3Lp99MSGXZH/AsXlWbd+ki34c+Kk3PqteZWxX0lj5uLmaO2XyT7Vkb9dVWsWFFq1qwp8+fPNzocAAAAAHZkz9VQCY6OS7G6nxmqqu/n4SqNiuY341XBhggrc/DgQTl79qwMGTLE6FAAAAAA2JkaAd5i7oH56nrqujAvkn0rM2vWLClatKi0aNHC6FAAAAAA2BlPV2ep5m/exLy6v7e+LsyLZN+K3Lt3TxYtWiSDBg0SJyeOpAAAAACQ80r4eEhFXy+zXKuib24p7uNhlmvhYSyfWJFVq1ZJeHi4DB482OhQAAAAANix8vlzi5uTk5wIChc1BS4je/gd/mndVxV9Ev3sw4A+K9KuXTuJjIyUPXv2GB0KAAAAAEhUXIIcCwyXoOg4ncSnllze/7q/h6veo+9J63624r+ulbh+/bps2bJFZsyYYXQoAAAAAKB5ujrrKfrqWL5LYdFy7maIOLi5i4PjwzvGPV2cpICnm94CwPF6OYNk30rMnTtX3NzcpHfv3kaHAgAAAAAPUQl8tQBvWfzlx7J4yVI5cuo3MSUliaODg3i5Oonzf5J/ZD+SfSugdlrMnj1bevToId7eHEkBAAAAwDL98ccfUuKxYuLjTvXeaCyvWIEDBw7o/2mGDBlidCgAAAAAkKKzZ89K+fLljQ4DJPvWQVX1ixYtKs2bNzc6FAAAAABIVmJiopw/f17KlStndCgg2bd89+7dk0WLFsmgQYPEycnJ6HAAAAAAIFmXL1+WuLg4KvsWgmTfwq1atUrCw8Nl8ODBRocCAAAAAKm28CtU9i0Dyb4VtPA3bNhQypQpY3QoAAAAAJAiNWfMw8NDihQpYnQoINm3bNevX5ctW7YwmA8AAACAVVT2y5YtK44cs2cR+FuwYD/99JO4ublJnz59jA4FAAAAANKs7LNf33KQ7FuopKQk3cLfs2dPyZMnj9HhAAAAAECalX3261sOkn0L9euvv8qff/5JCz8AAAAAi3fnzh0JCgoi2bcgJPsWSlX1ixYtKs2bNzc6FAAAAABIs4VfoY3fcpDsW6B79+7JokWL9HF7DLcAAAAAYC3JvhrQB8tAJmmBVq5cKXfv3tXJPgAAAABYw3591Zns6elpdCj4B8m+hbbwN2rUSEqXLm10KAAAAACQrso++/UtC8m+gRJMJgmLiZfb9+L0Z/X7a9euyZYtWxjMBwAAAMBqcOye5XE2OgB7czc2Xi6FRcutqFiJik985OtxkVHy9DsTpX23nobEBwAAAAAZkZCQIOfOnZNRo0YZHQr+hWQ/h0TFJcixwHAJio4TBxFJSuF5rl55pHWfgfJryD3xj06UGgHe4unKXxMAAAAAy3T58mWJj4+nsm9haOPPAaqSv+VysARHx+nfp5To3+fo5KQ/q+er16nXAwAAAIClDudT2LNvWSgZZ7OzoRFyJiQyU69ViwJJSaI7AmITE6V8/txmjw8AAAAAsrpfX03hL1y4sNGh4F+o7GcjVZHPbKL/X+o6l6nwAwAAALDAyn7ZsmXF0ZH00pJQ2c/GPfongsLlXlSUrJo5Vc6dPCbnTx2XyPAweW7iF9KixxOPvMZkMsnmxXNly+K5cuPSRXF1zyXFy1eUoW+8K8XLV5LjQeHi5+HKHn4AAAAAFoNj9ywTWWM2Ua33qgU/4s5tWTL1C/EtVFgeK1dRfju4L8XXfPvmy7J77XJp2rWXtB8wVGLu3ZNLZ05LeGiI/vr9lv5GRfPn4J8EAAAAAFKv7Lds2dLoMPAfJPvZdLyemrqv5PX3lx92H5e8fv5y/tQJea13+2Rfs3fDatmx8mcZ9/VMqde6fYp7+NV11fXzuLlk658BAAAAANJy+/ZtCQ4OprJvgdhUkU179dXxeoqLq5tO9NOyZvZ3UqZqDZ3oq3b+mOjk9+er6zKdHwAAAICltPArHLtneUj2s8GtqNg0j9f7t+jICDl/8piUqlxN5n8+SZ6sXU4G1Cwto1o9riv+/5b0z/UBAAAAwFKS/TJlyhgdCv6DNn4zizeZJCo+MUOvuXXlsiQlJcne9avEydlZnhz7lnh65ZZ1c2fKFy+PEg+v3FKjcfMHz1fXTzCZxJlplwAAAAAMTvaLFSumj96DZSHZN7OouIwl+sr9lv2IsDsyafFaKVutpv597RZt5dlW9WTptCkPJftKZFyi+LiT7AMAAAAwdjgf+/UtE9mimZnUyPwMcnVz15/9ixR7kOgruTw9pXbz1vrIvsSEhCy/DwAAAACYu7LPfn3LRLJvZo4O90fzpV8+/wD92Se/3yNfy5PfVxLi4yXmXnSW3wcAAAAAzCUhIUHOnz9PZd9CkeybmZerU4Zfky+ggPj4+cvtoJuPfO1OUKCu/Ofy9Mry+wAAAACAuVy6dEni4+Op7Fsokn0zU0PzPF0ynog3bN9FQm7ekBN7dz547O6dUDm0bZNUfryhOP5rGJ+6PsP5AAAAABi9X1+hsm+ZGNCXDQp4usnFsOgHx++tn/ejREfcldtBgfr3h7dvkduBf1fx2w8cJp6580iPEaNl34Y18skLT0vnISPEI3ce2bzoJ0lIiJcBL73+4NoO/1wfAAAAAIzer6+m8BcuXNjoUJAMhyR15hvM6m5svGy9HPLg9yNb1JXgG9eSfe60rQfEv0hR/etbV/+Snya/L6f279FJfrnqtWXgK29K6SrVH3pNq+K+ksfNJZv/FAAAAACQsuHDh8uxY8fkyJEjRoeCZJDsZ5M9V0MlODruQXXfHFRV38/DVRoVzW/GqwIAAABAxjVu3FiKFi0qCxYsMDoUJION39mkRoC3mHtgvrqeui4AAAAAWMKefYbzWS6S/Wzi6eos1fzNm5hX9/fW1wUAAAAAI4WGhkpISAjD+SwYyX42KuHjIRV9Hz4yL6Pu77Io6eUsxX08zBQZAAAAAGRtOJ9CZd9ykexns/L5c+vWe0eHv/fcZ4TDP39Bcya+Iy/06yn37t3LpigBAAAAIOPJfpkyZYwOBSkg2c+hCn/r4n56uJ6SVtJ//+vq+W1K+svrI4fJ4cOHpX///pKYmJjt8QIAAABAWsn+Y489Jh4edB9bKqbxG3As36WwaLkVFStR8Y8m7p4uTlLA000vEPz7eL1169ZJ165d5amnnpLp06eLg7mn/wEAAABAOnXr1k13Hm/atMnoUJACpr3lMJXAVwvwlmoikmAySWRcopiSksTRwUG8XJ3E2TH5ZouOHTvKDz/8IEOHDpUCBQrIe++9l+OxAwAAAMD9yn6bNm2MDgOpINk3kErsfdzTv5NiyJAhEhgYKK+//roEBATIs88+m63xAQBgLhlZ4AYAWLb4+Hg5f/68jB492uhQkAqSfSszbtw4uXXrljz//PPi7+8vvXr1MjokAADMunUNAGDZLl26JAkJCUzit3Ak+1ZG7dX/7LPPdIV/wIABkj9/fmnevLnRYQEA8EBUXIIcCwyXoOg4PXQ2peFAagHgYli0XAiLFn8PV316jacrtyYAYOnOnj2rP5crV87oUJAK+ueskKOjo8yePVuaNm2qh/YdP37c6JAAANBUJX/L5WAJjo7Tv09rCvD9r6vnq9ep1wMALH+/vpeXlxQqVMjoUJAKkn0r5erqKsuWLdOrae3bt5eLFy8aHRIAwM6dDY3QFX1TUtpJ/n+p56vXqder6wAALLuyr/IQTgizbCT7Vix37tz6SD71uW3bthIUFGR0SAAAO6Uq8mdCIs1yLXWdy1T4AcCiK/u08Fs+kn0rp4b0qbMtIyMjpUOHDhIRQTUEAJDze/RPBIXrX9+LipJFX30i/ze8vwyuV1F6li8kvyxf/Mhrzp08Jt+994aM7dFW+lQupp/3b8eDwvV1AQCWWdlnOJ/lI9m3ASVKlJANGzbIuXPnpEePHhIX9/c+SQAAcoJqvU/6p28/4s5tWTL1C7l28Zw8Vq5iiq85unObbFu6QLeABhQp9sjX1fXUdQEAliU0NFR/UNm3fCT7NqJ69eqyatUq2bVrlwwePFhMJpPRIQEA7OR4PTV1//4e/bz+/vLD7uMy45dDMmjs2ym+rm2/wfLTobMyedlGqdqgySNfV9dT11XXBwBYVgu/QmXf8pHs25BmzZrJggULZPHixfLSSy9J0v0yCwAA2bhX/9/jmVxc3SSvn3+ar/Px9RM391ypPkddl+n8AGB5LfyqK6tMmTJGh4I0kOzbmJ49e8rUqVPlq6++ko8//tjocAAANu5WVGyGJ++nV9I/1wcAWFZl/7HHHpNcuVJfsIXxnI0OAOY3cuRIuXXrlrzxxhsSEBAgQ4cONTokAIANijeZJCo+MVvfQ10/wWQSZ0fqEwBgScfuwfKR7NuoCRMm6IT/6aefFj8/P+nUqZPRIQEAbExUXPYm+vdFxiWKjzvJPgBYSmW/Xbt2RoeBdOAnp41S+2i+/fZb6dKli/Tp00f27dtndEgAABtjyqHZMDn1PgCA1MXHx8uFCxeo7FsJkn0b5uTkpAf21alTR1f2z5w5Y3RIAAAb4ujgYFPvAwBI3cWLFyUhIYFJ/FaCZN/Gubu76yP5ihQpIm3btpWrV68aHRIAwEZ4uTrZ1PsAANLer69Q2bcOJPt2wMfHRzZu3Kgr/Srhv337ttEhAQBsgBqa5+mSzYl4XIyYEhKy9z0AAOner+/l5SUFCxY0OhSkAwP67EShQoVk8+bN0rBhQ93Sv3XrVvHw8DA6LACAlSvg6SYXw6IfOn5v/bwfJTrirtwOCtS/P7x9i9wOvKl/3X7gMPHMnUeCrl+TXauX6scu/HZSf146bYr+7FuoiDTr2ksSExNk4+L5Mnzq59KjRw954oknpHnz5uLszO0LABhV2Vct/Go+GCyfQ1ISU2/sycGDB6VFixb6ZmnFihXcMAEAsuRubLxsvRzy0GMjW9SV4BvXkn3+tK0HxL9IUTl9YJ9MGNwr2edUqlNf3p+7TP+6WNxtWbFogSxevFgPhfL19ZWePXvqxL9Jkya6aw0AkDNU4bBEiRIyb948o0NBOpDs26FNmzbp6v6TTz4pM2fOZGUOAJAle66GSnB03EPV/axSP5n8PFylUdH8+vfqduXo0aM66f/555/lr7/+kgIFCkivXr104t+gQQNxdGR3IgBkJ7XgOmbMGHnrrbeMDgXpwE9FO6T27c+ePVtmzZol48ePNzocAICVqxHgLeZeN1bXU9f93+8dpFatWjJ58mS5dOmS7N+/X/r27au71Bo3biyPPfaYvPzyy3LgwAG9MAAAMK+QkBAJDQ1lOJ8VobJvxz7//HN55ZVXZMqUKfLiiy8aHQ4AwIpdCouWY4HhZrtezQBvKe6T9mwZk8kke/fu1RX/pUuXSmBgoBQvXlz69OmjP2rWrEkHGwCYgfpe26hRIzl58qRUqVLF6HCQDiT7dm7cuHHyySefyMKFC3WFBACAzDobGiFnQiKzfJ2KvrmlfH6vDL8uMTFRdu3apRP/ZcuW6SpU6dKlddKvWv3VzSmJPwBkjtr++/TTT0tUVJTkypXL6HCQDiT7dk5VRIYOHaqT/XXr1knr1q2NDgkAYOUV/hNB4aLuLjJyg6Em77s4O0t1//RV9NMSHx8v27dv14n/8uXLJSwsTE+QVkm/+qhQoUKW3wMA7K1IqDqoLl68aHQoSCeSfegboq5du8ru3bv1jVHt2rWNDgkAYMWi4hJ0S39QdJwetJfajcb9rx/fs1PKeDnKk0/0MXs8cXFxsmXLFp34r1y5UiIiInSV/37ir6r/AIDUdenSRecNGzZsMDoUpBPJPjTVjtOyZUu9Uqf245QpU8bokAAANnAsn6r034qKlaj4xEe+7uniJAU83aSEj4c8NbC//Prrr/LHH3+Ih0fWK/spiYmJkY0bN+rEf82aNfrnn9rXr5J+1e6v9vsDAB6lBvN16NBBvvjiC6NDQTqR7OMBNV1TDd2IjY2Vffv26SONAAAwhwSTSSLjEsWUlCSODg7i5eokzv86Ku/8+fNSsWJFeffdd+XNN9/MkZiio6P1FjZ1lN/atWv1QkDdunV14t+7d28pWrRojsQBAJZOdUiphdhvvvlGRo4caXQ4SCeSfTzkypUr+qxidYbmzp07xdv7f8ceAQCQnV566SX54YcfdOIfEBCQo+8dGRmpK/2q4q9aVNWNbcOGDXXi36tXLylYsGCOxgMAluTs2bN61ona8tusWTOjw0E6/W9JHRCRYsWK6fbGv/76S7p166arHAAA5IS33npLnJ2d5b333svx9/by8pJ+/frpPf1BQUEyZ84cveD98ssvS+HChaV58+Yybdo0/TUAsMdk/34rP6wHyT4eUblyZVm9erXeO/nkk0/qo4wAAMhu+fPn1wn/d999J7///rthcagkf9CgQbrFPzAwUHcbuLq6yujRo6VQoUL65Br12O3btw2LEQBykpqnkjt3brb5Whna+JGiVatWSY8ePfS+HLU/h7OJAQDZTc2NUa2ilSpV0m31liQ4OFgf46da/Xfs2CFOTk468Vet/qobjq1vAGzVsGHD5PTp03Lw4EGjQ0EGUNlHitRxfDNmzJCpU6fKBx98YHQ4AAA74ObmJh999JEemPfLL7+IJfHz85NnnnlGx3Xjxg09kVod4zdkyBDx9/fXPzcXLFigHwMAW2vjp4Xf+lDZR5o+/PBD3VapEv8RI0YYHQ4AwMapW5P69evrIXmHDx8Wx39N7bdE165dkyVLluiK/4EDB8Td3V06duyoK/7qc3YeJQgAOfE9WW2zeuWVV2T8+PFGh4MMINlHmtQ/kRdeeEFX+JctW6ZbFQEAyE579+7Vx8H+9NNPen6Mtbh8+fKDxP/IkSM60e/cubNO/Nu3b68XAgDAmqgtTKp7SX1vU6eTwHqQ7CNd1JC+/v376338mzdvliZNmhgdEgDAxqmbSlUp//PPPyVXrlxibdQRgj///LNO/E+ePKmHW6lWf5X4t2nTRg/9AwBLt2fPHmncuLGcOnVKD/KG9SDZR4aGJnXo0EFXKnbv3i1VqlQxOiQAgA1TybIa1vf+++/LG2+8Ida+31Ul/epDnTTg4+Mj3bt3lz59+kjLli3FxcXFsNgSTCaJjEsUU1KSODo4iJerkzhb+NYJADlHnT6itvJGR0fTnWRlSPaRIXfv3pWmTZvqo4j27dsnxYsXNzokAIANGzNmjPz444868VdtpNZO3Xapidb3E3/151J7YdXpN6ri36xZMz3lP7vdjY2XS2HRcisqVqLiHz1i19PFSQp4ukkJHw/J42bcQgQA440dO1afRHLhwgWjQ0EGkewjw27duiUNGzYUZ2dnvafS19fX6JAAADYqNDRUSpUqJQMGDJBvv/1WbIm6BTt27NiDVn+1318taKjtCyrxVzMLzD2cMCouQY4FhktQdJyoA3VTuwm8/3V/D1epEeAtnq7OZo0FgHVQc0fUlt7169cbHQoyiGQfmaIqESrhV5X9bdu2iZeXV4rPpT0QAJAVn376qbz++uu6Il6+fHmxRep27NChQzrpV8m/mvBfqFAh6d27t078H3/8cXFwUOl35qlK/omgcFF3fhm5+VPvqt66mr+3rvQDsC9ly5aVTp06yeeff250KMggkn1k2tGjR3VLv0r616xZ89B+Q9oDAQDmEhMTo/fuq1kxq1evFltnMplk//79OvFX069VR12xYsX0/n71Ubt27Qwn/mdDI+RMSGSWY6vo6yXl8+fO8nUAWAd1BKo6VUR1Vj3zzDNGh4MMItlHlqiqvjpKSFUd5syZI/cSTLQHAgDMbtGiRdKvXz/55ZdfpHnz5mIvVOusmoStEv+lS5fqI7BKliypk371s7datWppJv5q8V39bDaXmgHeUpwKP2AX1EDRihUryo4dO3SRD9aFZB9ZptoN+/btKx9/N0vKNGlDeyAAwOzU7Ur9+vUlPj5et7ubey+7NUhISNA33CrxV8Oybt++rdtrVdKvPipVqpTsHv0tl4PFlMwP5tMH9smEwcmfmT1p0RopW71Wsl9zdBBpXdyPRXrADqxcuVKfHHLz5k0pUKCA0eEgg0j2YRaz1m4R7zKV9c1YVvYU0h4IAEjrrOe5c+fKwIEDjQ7HUGrRY+vWrTrxVzfj4eHhOtm/n/irRQBlz9VQCY6OS3YR/n6y3+HJp6R0leoPfa1G42aSJ2/+ZN9b/ZT383CVRkWT/zoA2/HRRx/JpEmTJCwsLMtzQ5DzSPaRZbQHAgBySs+ePXVl/48//pBcuXIZHY5FiI2NlU2bNunEX800iIyMlOrVq8vAp56WEq27p/i6+8n+q1O+k/rtOmX4fVsV92XuDmDjhg4dKmfOnJEDBw4YHQoywf564GBWqj1QTfZV7kVFyaKvPpH/G95fBterKD3LF5Jfli9+5DVfvz5Gf+2/H6PbN9ZfPx4Urq8LAEByVSbVTvrll18aHYrFcHNzky5dusj8+fMlKChIli1bpiv7f4bclcSE9P08vRcZme7nKg7/LPYDsG1nz56VcuXKGR0GMonNVsgSVdG/3xsScee2LJn6hfgWKiyPlasovx3cl+LrXFzdZNQHnz70mIfX3+376nrqurQHAgD+q0yZMvLss8/KxIkT5amnnhI/Pz+jQ7IoqtuhR48e+mPD+VtyLzHtBs5v3nxJYqKjxNHJSSrUqieDxr4tpatUS/U16qrqxJ3UnwXAmqkGcNVF1blzZ6NDQSaR7CPT1PF6aur+fXn9/eWH3cclr5+/nD91Ql7r3T7F1zo5O0nTLj1TvIFQ11XXpz0QAPBfb7/9tj4B5r333pNvvvnG6HAsUrzJlGai7+ziIo+36Sg1m7aQPHnzydXzf8rqH6fL2wO7y4cLV0nJilVSfb06WjfBZBJnOxyWCNgDdfrHnTt3qOxbMb47I9NU+57Df6r1KtHPyHFC0ZERyX6N9kAAQEp8fX1l/PjxMn36dF11wqOi4hLTfE75mnVk7FffS8ue/aROi7bSY8RombR4rf4hPP/zSel6n8h0vA8A63T/+2v58uWNDgWZRLKPTFPte5md7hh77548WbusPFm7nN7f//37b+g9//9tDwQAIDmjR4+WIkWKyGuvvWZ0KBbJlMn5ywUfK6ETfzW8Ty3KZ9f7ALCO/frqmNPSpUsbHQoyiTZ+ZLo9ULXvZYaq/ncd/qxuD0wymeTY7h2yccEcuXz2jLz/0zJxcv77nyXtgQCAlLi7u+vjoPr37y87d+6Upk2bGh2SRXHMwhFZvgULSUJ8nMTei34wTyc73geA5Vf2S5QooYeAwjqR7CPb2gNTMvCVNx/6faOO3aRQ8ZKyYMpHsn/TWv37f7cH+riT7AMAHtW3b1+ZMmWKvPLKK3Lw4EFdgcLfvFydMv3awKtXxNXNXdw9PLP1fQBYNibxWz9+KiJTzN2212nI0/om7eT+3dn6PgAA2+Hg4CCffvqpHDlyRBYuXGh0OBZFdcV5uqSeiIffDn3ksctnf5PD2zdLtYZN0lw8Uden+w6w7co++/WtG5V9ZIq52/bc3HOJl09eiQwPy9b3AQDYlsaNG0v37t3lzTff1MfNqaPn8LcCnm5yMSw6xfk6n780Ulzd3aVcjdrinc9Xrl34U7b8PE9c3XPJwFfGp3pth3+uD8A2xcbGyqVLl6jsWzmWY5Ep5m7buxcZKRF3bkuevPmz9X0AALbno48+khs3bshXX31ldCgWpYSPR6qDdOu2bKt/9q6Z9Z0elLt3/Wqp17qDTF66QYqUKpPqtZP+uT4A23ThwgU9pJNk37pR2UeW2gMzOqQvLjZGEuMTJJeX10OPL5n2hSQlJUmNxs0fPEZ7IAAgPcqWLSujRo2SiRMnyrBhw8TPz8/okCxCHjcX8fdwleDouGST/o6DhuuPjFJVfT8PV319ALaJY/dsA8k+zNoeuH7ejxIdcVduBwXq3x/evkVuB97Uv24/cJhEhYfLqz3a6CF8hUuU0o8f37tTju7cphP9Oi3b6sdoDwQAZMQ777wjc+bMkffff1++/vpro8OxGDUCvGXL5WAx3wicJD0rQV0XgG0P5/P29hZ/f3+jQ0EWOCSpciqQCXdj42Xr5ZCHHhvZoq4E37iW7POnbT0gnnnyyA8fvCV/njgqd4JuiSnRJAUeKy5NOvWQLsNGirPL/6oErYr7UjUAAKTb5MmTZfz48XL69GlaT//lUli0HAsMN9v1ijjESt2yxc12PQCWZ8iQITrh//XXX40OBVlAso8s2XM1NMX2wMwyJSaKby4XaVYiwIxXBQDYupiYGJ3k16xZU1asWGF0OBblbGiEnAmJzPJ1Ns39QVZ+/41s3LhRatSoYZbYAFiexx9/XH8/VR1TsF5siEaWqDY+cw7MV2tPCfHx8lLfrrJz507zXRgAYPPc3d1l0qRJsnLlSn6G/Ef5/Ln1z2xHh7+3ymWEer56Xc0Ab/ngxZFSrFgxadasGf+NARul7sc5ds82kOwjSzxdnaWav/n27al9gKW9nCSPu5s0b95cxo4dqys1AACkR9++faVOnTry6quvislkMjoci6Km57cu7qeH6ylpJf33v66er15X3MdDDz/85Zdf9H/jtm3byqpVq7I9bgA5KygoSMLCwtgOZQNI9mGWm4eKvg9P18+sir65pXapYvpGQu29VMco1a1bV06ePGmW6wMAbJujo6N8+umncvjwYVm0aJHR4VgcT1dnaVQ0v56LU9LHQ598k+zzXJz019Xz1PPV6+7LnTu3rFu3Tjp37iw9evSQWbNm5Vj8ALIfk/htB3v2YdYBQCeCwvXE34z8o1KVA7UVoLq/t64a/JtK8p988kn5/fff5YMPPpBXXnlFnJySvzEBAOC+7t27y9GjR/VNq2rvR8oSTCaJjEsUU1KSODo4iJdr+o6+VWdwP/fcczJjxgy9QK+68QBYv++++04fZxodHS1ubpyOZc2o7MOi2gP/q2rVqnLw4EF56aWX5PXXX9et/ZcuXcqG6AEAtuTjjz+WGzdu6A6x5JLbsJh4uX0vTn9Wv7dnKrH3cXeRfLlc9ef0JPqKWnyfNm2avPXWWzJu3Did7FNDAqyfWiQtWbIkib4NoLKPbDuWT1X6b0XFSlR8YrLtgQU83fQCQXqP19u1a5cMGjRIQkND9c2bOhJE7fEHACA5o0ePlp9++kkuXLggrrm9zf5zCf/z5ZdfypgxY2To0KG6Kujs/L+2fwDWpVOnTvrz2rVrjQ4FWUSyD4ttD0zO3bt35cUXX5TZs2dLt27d9A2FGhYEAMB/BQcHy+NNmsobX30v+YqV1B1lqd303P+6v4ernlzv+a996kjbvHnzdLLfsWNHWbhwoeTKlcvokABkQunSpfV9tpp/AutGsg+rpM5PHjFihB7ENHPmzAcrkAAA3Kcq+UduhOpZMk4ZqDTfnyWjTptRlX6k3/r166VXr156Wv/q1avF29t8J/YAyH6xsbHi4eEh06dPl6efftrocJBF7NmH1Q5eOnXqlL6ZUNOAn3nmGYmMjDQ6LACAhTgbGiHHAsPF0ck5Q4m+oqogpiTRr1fXQfp16NBBtmzZogfsNmvWTAIDA40OCUAGnD9/Xh9byrF7toFkH1arQIECsmbNGj0FWLUOVq9eXfbt22d0WAAAC6jonwkxzwKwus7lsGizXMteNGzYUM/ZUYm++jWDdQHrwbF7toVkH1ZNDehT7fwnTpzQe/cbN26spwLHxcUZHRoAwABRcQn6GNh7UVGy6KtP5P+G95fB9SpKz/KF5Jflix96rqpeqccmjRosI5rVkv41SsmYzs1l6bQpEhcb8+B5x4PC9XWRflWqVJG9e/fqn9Mq4VfdeAAs39mzZ8XHx4eZWDaCZB82M0hk9+7d8v777+vjlurXry9nzpwxOiwAQA5Trfdqj37EnduyZOoXcu3iOXmsXMVknxt77558++ZLcvf2bWnTd5AMfeN9KVOluiz++lP54OmBD46RU5/UdZExJUqUkD179khAQIA0adJE/xqA5Vf2VVWfE69sA8k+bIY65mf8+PHy66+/SnR0tNSqVUsf0acqNwAA+zj2NSg6Tu+5z+vvLz/sPi4zfjkkg8a+nezznV1c5MMFq2TS4jXSa+SL0rrPAHlu4hfS+7mX5beD++Tk/t36eep66rrq+sgYlejv2LFDqlWrJq1bt5Z169YZHRKANCr77Ne3HST7sDkqyT969Khu71fH9LVp00auXbtmdFgAgBzYq3+/FuXi6iZ5/fxTfb6Lq6uUr1nnkcfrtWqvP1+/cO7BYw7/XB8Zpybyb9y4Udq2bStdu3aVuXPnGh0SgGSobqb7lX3YBpJ92CR1tu+XX34pmzdv1iuUau+gOvMXAGC7bkXF6ip8VoWFBOnPufPme/BY0j/XR+a4u7vL0qVLZfDgwTJo0CCZMmWK0SEB+A81VDM8PJzKvg0h2YdNUy2DaihQ+/btpX///tKvXz+5ffu20WEBAMws3mSSqPhEs1xr5cyp4uGVW2o2afHQ4+r6CWwNy9J2ux9++EHGjRsnL730kt56d38uAgDjMYnf9pDsw+blzZtXFixYoD9UG6Gq8qszgAEAtiMqzjyJ/rLpX8nJfbtlwCtvimce70e+Hmmm97FXauiXGqQ7efJkmThxoowcOVISE/lvClgC1Q3r5OQkpUqVMjoUmAnJPuyGquqrKn/FihX1Pv4XXnhBD/IDAFg/kxkqxHvXr5KFX34sLXv1k3b9Bmfb+0Bk7Nix8uOPP8rMmTPliSeekNhYtkgAllDZL1mypLi6uhodCsyEZB92pUiRIrJp0yY9pf/777/Xw/wOHz5sdFgAgCxyzOIxUSf27pSvXntRajZtKc+8+3G2vQ/+Z+jQobJ8+XJZu3atdOjQQSIiIowOCRB7T/bZr29bSPZhdxwdHWX06NF6Yr+Hh4fUr19fPvjgA0lISDA6NABAJnm5OmX6tX+eOCqTRz8lpSpXlVemzBAnZ+dseR88qkuXLnoRXi28N2/eXIKDg40OCbDrNn7269sWkn3YrQoVKsj+/fvl9ddflwkTJkjjxo3l3Ln/HbMEALAezo6O4umS8UT82oVzMvGZJ8WvcFF5c/pP4uaeK8Xnquur94F5NW3aVHbs2CFXr16VRo0ayV9//WV0SIDdiYmJkcuXL1PZtzEOSYxBBXTS/+STT8rNmzfl888/lxEjRughQgAA63EiMFwuhkU/OH5v/bwfJTrirtwOCpRNC+dIvdYdpGTFyvpr7QcOE0cHRxnTuZncDrwl/V96XfIFFHzoegWKPiblatTWv1Y/EUr6eEi1gEeH9sE8zp8/r2fqxMXF6aNz1YwdADnj9OnTeoj1rl27dAEMtoFkH/hHZGSkvPrqqzJjxgy9d1ANDSpQoIDRYQEA0ulubLxsvRzy4PcjW9SV4BvXkn3utK0H9OdRreqleL1m3frI6I/+dx58q+K+ksfNxawx42Fq0b1t27Zy/fp1WbdunTz++ONGhwTYhWXLlkmvXr0kKChI/Pz8jA4HZkKyD/yHurl46qmn9B7+7777Tnr06GF0SACAdNpzNVSCo+MeVPfNQVX1/TxcpVHR/Ga8KlJy584d6dy5sxw7dkwP8FPJP4Ds9eGHH8pnn30moaGhdLfaEDaeAf/RsWNHfURfkyZNpGfPnjJkyBAJDw83OiwAQDrU0G32SWLOWoa67/37usgJefPm1W38amCfSvoXLVpkdEiAXUziV8P5SPRtC8k+kAzVvqTamWbNmqWrCtWqVZOdO3caHRYAIA03r1yWhZ9PMusNa3V/b/F0TXlCP8xPnZazYsUK6du3r/Tv31++/fZbo0MCbH4SP8P5bA/JPpACdaOoqvonT56UYsWK6QrDuHHjJDY21ujQAAAp3Kyqye4nd26RIq4ms1yzom9uKe7jYZZrIWNcXFxk9uzZMmbMGHn++efl3XffNWvHBoC/qf+v7lf2YVtI9oE0FC9eXLZv3y4ff/yxfPnll1KnTh29AAAAsBxq+5VK9PPly6c7seqWKKxb7x0d/t5znxHq+ep1NQO8pXx+r2yKGOnh6Oio9xFPnDhR3nvvPRk9erSYTOZZyAHwt1u3bsndu3ep7Nsgkn0gHZycnGTs2LFy6NAh/XuV8H/yySeSmJhodGgAYPeOHj0qzZo1k8KFC+vF2YCAAP14CR8PaV3cTw/XU9JK+u9/XT1fvY6KvuV02r3xxhv6tJxp06bptn51PB8A81BVfYXKvu0h2QcyoGrVqjrhf/HFF+W1116TFi1ayOXLl40OCwDs1q+//qq/F5cpU0a2bdsmvr6+D33d09VZT9FXx+aV9PEQTxenZK+jHldfV89Tz1evg2UZMWKE/Pzzz3ovvxrcFxUVZXRIgM0k+6qwVbJkSaNDgZlx9B6QSapNdNCgQfqIoK+++koGDx7MBFMAyEG7d++WDh06SPXq1fWxqXny5EnX6xJMJomMSxRTUpI4OjiIl6uTODtS/7AWv/zyi3Tt2lUqVaqk/97z5+dIRCArXnrpJVm/fv2DCj9sBz/ZgEzSQ6BOnpQePXrI0KFD9TF9wcHBRocFAHZBVfHbtWsndevWlY0bN6Y70VdUYu/j7iL5crnqzyT61kV1cqjtGhcuXJDGjRvLtWvXjA4JsGoqyWe/vm3ipxuQBd7e3npS8NKlS2XXrl1SpUoVXWUAAGQfVYHq2LGjXnRdu3ateHp6Gh0Scljt2rVlz549upW/YcOGVCSBLJ5kwn5920SyD5iBquqrSdC1atWSTp06yciRIyUyMtLosADA5qj92t26ddNVffXrXLlyGR0SDKIqkXv37hUvLy9p1KiRHD582OiQAKsTExOj509R2bdNJPuAmRQsWFBXmKZPny5z586VGjVq6MFRAADzWLx4sfTu3Vu6d+8uS5YsETc3N6NDgsGKFCmiO+tKly4tzZs319s7AKTfuXPnRI1wI9m3TST7gBmpAX3PPPOMHD9+XA8MUq2Fb7/9tsTHxxsdGgBYtTlz5ugj19TH/PnzxcXFxeiQYCHUz9utW7fqn7lqYKPaWgcgfTh2z7aR7APZQB0BpfYSvvvuu/LRRx9J/fr15ffffzc6LACwSt99950MGTJEnnrqKT0nxdmZY/HwMDW3YfXq1Xpobp8+ffS/GQDp26+fL1++R44thW0g2QeyiboZVVX9/fv36/37NWvW1Ef0mUwmo0MDAKuhvm+qjqnRo0fLjBkzxJHJ+UiBq6ur7vp49tln9b+ZiRMn6vZkAKlX9qnq2y5+YgI5MDH46NGj8vTTT8uLL74obdu25ZggAEiHyZMn6++bY8eOlS+//FJvlQJSoxaDvv76a91ZN378eHn55ZdZZAfSqOyzX992kewDOcDDw0NXpzZt2iRnzpzRR/QtWrTI6LAAwCKpauz7778vr732mrzzzjvy8ccfk+gj3dS/lQkTJsi3336rF4kGDx7M7Bwghe+1VPZtG8k+kIPatGmjj+hT1f1+/frpQVN37twxOiwAsKibzzfffFMna6oN+7333iPRR6aodv4FCxboUxzUCQ7R0dFGhwRYlFu3bklERASVfRtGsg/kMDUERVX11Q3Ihg0bdJVfTREGAHunEn3Vdq0Gm37xxRfyxhtvGB0SrFzfvn31sbjbt2/XC+4ssAMPt/ArVPZtF8k+YBBV2T958qT+Btu6dWu9L/XevXtGhwUAhlD7qlUldsqUKTJ16lQZM2aM0SHBRqgk/5dfftGn4jRt2lRu3LhhdEiARVAt/GqgdMmSJY0OBdmEZB8wUNGiRWXz5s365lYdE6Qm9h85csTosAAgRyUmJupj9dS0/ZkzZ8qoUaOMDgk2pl69erJ79265ffu2NGzYUM6fP290SIBFVPZLlSolLi4uRoeCbEKyD1jA5GBV1VdJfq5cueTxxx+XDz/8UBISEowODQCynRqc9uSTT8rcuXNl3rx5MmzYMKNDgo2qWLGi7N27Vx/RpxL+Y8eOGR0SYHhln/36to1kH7Cgm5Bff/31wfTpJk2aUHkAYNPi4uL0nuqlS5fqIWpqaCmQnR577DHZs2ePFCtWTJo1ayY7d+40OiTAMBy7Z/tI9gELoqoNH3zwgW41DAwMlOrVq+v2fjW0CgBsSUxMjPTo0UMPT1u+fLn07NnT6JBgJ/z8/PQe/jp16ujTcVatWmV0SECOU3Oi/vrrL4bz2TiSfcACNWjQQE6cOKGrXM8884x07txZH48CALZAHYHWpUsXnXCtWbNGOnXqZHRIsDO5c+eWdevW6X97atFp1qxZRocE5Khz587pYhKVfdtGsg9YKC8vL13VVzfChw4d0kf0rVixwuiwACBL1JnO7du3l3379unjR9WkdMAIbm5uevvI8OHD9ayITz75xOiQgByj9usrVPZtG8k+YOFU1eH06dPSqFEjXX0YOnSo3L171+iwACDDwsLCdHJ//PhxfRKJOgYNMJKTk5NMnz5dxo8fL+PGjdMfbJ2DvezXz58/v/6A7SLZB6xkf6Ha0/rjjz/KsmXLpGrVqrJr1y6jwwKAdAsNDZVWrVrpatK2bdv0diXAEjg4OOh5OeoYXFXdV8dAciIObJ36XkxV3/aR7ANWdDOiqvpqL3/RokX1FGE1uT82Ntbo0AAgVUFBQdK8eXO5cuWKbN++XWrXrm10SMAj1DG46gjIn376SXr16qUHmAG2imP37APJPmBlSpQoITt27JCPPvpIvvjiC6lbt66cOnXK6LAAIFk3btzQ7fohISH6e1e1atWMDglI0cCBA/V0frXNpF27dhIeHm50SIDZqa0qqo2fyr7tI9kHrHSPodpXqAb3mUwmXSX79NNPJTEx0ejQAOABVclv0qSJREZG6vPMK1asaHRIQJo6duwoW7ZskZMnT+ouOnUULmBLbt68qb8vU9m3fST7gBVTFTKV8L/wwgs6+W/ZsqU+MxUAjHbx4kWd6KsFSTVjpEyZMkaHBKRbw4YN9b9bleirAbmXLl0yOiTAbFRVX6Gyb/tI9gEr5+7urgcKqfOq1c2IOqJP7TdkmjAAI/eCqkTf1dVVJ0xq+xFgbdTP07179+qfpyr5Z8scbOl7tLOzM9+b7QDJPmAjVKuhajns3r27DB48WA8XUntkASAnqaNC1R59b29v3bpfpEgRo0MCMk0lQyrhDwgI0AtY6teALVT2S5cuLS4uLkaHgmxGsg/YEHVzPWfOHFmyZIkehFW5cmVZv3690WEBsBPHjh3TC48FChTQ34MKFixodEhAlqlE//5wydatW8u6deuMDgnIEibx2w+SfcAGqaq+qq7VrFlTDxoaNWqUREVFGR0WABt28OBBadGihZQsWVJvK/Lz8zM6JMCsi+kbN26UNm3aSNeuXWXevHlGhwRkqbJPsm8fSPYBG6Uqaqr6MG3aNL2Hv3r16nLgwAGjwwJgg/bs2SOtWrXS0/bVFPN8+fIZHRKQLTNyli5dKoMGDZInn3xSpkyZYnRIQIZFR0frk1IYzmcfSPYBG+bg4CAjR47UrbXq5lsNGHrnnXckPj7e6NAA2AhVxW/btq0+AnTTpk26AgrYKjXUbObMmTJ27Fh56aWX5K233mIgLqzKuXPn9L9ZKvv2gWQfsANly5bVQ4UmTJggEydOlPr16z84dgUAMku1NautQo0bN9adRF5eXkaHBOTIQvrkyZP1x4cffqi3yiUmJhodFpDu/foKyb59INkH7Kga8fbbb8v+/fslMjJSatSoId98840+AxsAMmrVqlV677IaWKZ+nStXLqNDAnKUqu7/+OOP8sMPP0jfvn0lNjbW6JCAdCX7vr6+kj9/fqNDQQ4g2QfsTJ06deTo0aMyfPhwGT16tLRr106uX79udFgArIg68UMNAu3SpYvew+zm5mZ0SIAhhg4dKsuWLZM1a9ZIhw4dJCIiwuiQgFSpzk7269sPkn3ADnl4eMjXX3+tW3DV1P4qVarI4sWLjQ4LgBWYO3eurmKqj4ULF4qrq6vRIQGGUh0ual7F4cOH9YkUwcHBRocEpIhj9+wLyT5gx9RQLZXsqyna6sZ9wIABcufOHaPDAmChVLvy4MGDdTVz9uzZensQAJGmTZvKjh079JRzNcNCfQYsjRrMp5J9Kvv2g2QfsHNqSr+q6qszg9WArapVq8q2bduMDguAhfn222/l6aef1sPIvvvuO3FycjI6JMCiqFk4ahhuXFycNGjQQM6cOWN0SMBDbty4oec2Udm3HyT7APRkYVXVP3XqlJ7cryr9Y8aMkXv37hkdGgAL8Omnn8rzzz8vr7zyih7s6ejI7QOQnNKlS+uEXy2kqwr/r7/+anRIwAP3T2Kism8/+GkN4IGiRYvKli1b5IsvvpDp06dLrVq19DA/APbrgw8+0FPHx48fL5988oleHASQsoIFC8rOnTulQoUK0rJlS72fH7AEqoXfxcVFSpQoYXQoyCEk+wAeoip2qqp/5MgRcXd3l3r16snEiRMlISHB6NAA5PDezrfeeksf2fl///d/Oukn0QfSJ2/evLJ582Zp3ry5dO7cmSG4sJjKvuo+Yd6K/SDZB5CsSpUq6fbDcePG6Zv9Jk2ayIULF4wOC0AOJfqvvvqqfPjhh7qFXyX9ADJ+8s2KFSv0ANx+/frJ1KlTjQ4Jdo5J/PaHZB9AitSRWupmf9euXRIYGCjVqlWT77//XicCAGyTyWTS+/M///xzvT9f7dMHkDmqZVqdXPHiiy/Kc889J++++y4/Q2FoZZ9k376Q7ANIU8OGDeX48eO6MjFixAjp0qWLTv4B2JbExET9//i0adP0wp5KTgBkfXucWjxTi+fvvfeejB49Wi+qATkpOjpaHwnJcD77QrIPIF1y586tb/5XrVolBw8elMqVK8vKlSuNDguAmai5HIMHD5ZZs2bJTz/9JMOHDzc6JMBmqHkXb775psyYMUMvpqkTcNQRfUBOOXfunP5MZd++kOwDyBBV1VdH9Klqf/fu3eWpp56Su3fvGh0WgCxQSYfq3FFDxBYtWiQDBw40OiTAJqnOmZ9//lmWL1+uf55GRUUZHRLs7Ng9kn37QrIPIMP8/f310KGZM2fqmxa1l3/37t1GhwUgE2JiYqRXr16yevVqWbZsmfTu3dvokACb1rNnT9mwYYPs3btXH80XGhpqdEiwk+F8fn5+ki9fPqNDQQ4i2QeQ6ZbEYcOGyYkTJ6RIkSLStGlTef311yU2Ntbo0ABkYA9n165dZcuWLXqLjqo0Ash+LVq0kO3bt+tTbho3bizXrl0zOiTYQWWf/fr2h2QfQJaULFlSduzYIZMmTdIDiOrVqyenT582OiwAaYiMjJSOHTvKnj17ZN26ddKuXTujQwLsSu3atfX/f6qVX22NU5VXILtw7J59ItkHkGVOTk7y2muv6cF9ashXrVq15LPPPmPaMGChwsPDpW3btnLkyBHZvHmzrjICyHkq+VLt/F5eXtKoUSM5fPiw0SHBBqnjHlWyT2Xf/pDsAzCb6tWr6xsVdUb32LFj9V7Ev/76y+iwAPzL7du3pVWrVnLmzBnZunWrrigCMI7aCrdr1y4pVaqUNG/eXLZt22Z0SLAx169f1x0kVPbtD8k+ALNyd3fXVX11s6L2IlatWlUf46VWlQEYKzg4WFfxL126pPcL161b1+iQAIhI/vz59eJbgwYNpEOHDnpYJmDuSfxU9u0PyT6AbKGqEydPntTDv9TZ3WrCd0hIiNFhAXbr5s2b0qxZM7l165bs3LlTd+IAsByqlX/NmjXSo0cP6dOnj3z//fdGhwQboVr4XVxcpHjx4kaHghxGsg8g2/j4+OiqvjqeT1URq1Spoo8bApCzrl69qk/MUHv1VbtwpUqVjA4JQDJcXV1l/vz5MmrUKBkxYoRMnDiRzjiYpbJfunRpcXZ2NjoU5DCSfQDZTlX1T506JdWqVdPtic8++6zeOwYg+6mW/SZNmkhcXJxO9MuWLWt0SABS4ejoKF9//bW8++67Mn78eHn55ZcZeIssYTif/SLZB5AjChUqpKv6U6dOldmzZ0uNGjXkwIEDRocF2LRz587pRF9Vc1Sir47KBGD5HBwcZMKECfLNN9/Il19+qbfDxcfHGx0WrBTH7tkvkn0AOXrzoloTjx07plv81RRwdTPDDQxgfmravkr01T5gtUe/WLFiRocEIIOee+45WbBggSxevFi6d+8u0dHRRocEK6M6Ka9cuUJl306R7AMw7Fzht99+Wz788EM9fVitOgMwjxMnTug9+v7+/jrRV501AKxT3759Ze3atXr2TZs2beTOnTtGhwQr6/BSqOzbJ5J9AIZQU2FVVX///v1y9+5d3dav2hUZRARkzaFDh/RpGI899pj88ssvOuEHYN1Ukq+OtP3999/1Qt6NGzeMDglWduweyb59ItkHYKg6derotv5hw4bJ6NGjpV27dtzEAJm0b98+adWqlW7XVGd2q7O7AdiGxx9/XHbv3i23b9+WRo0ayfnz540OCVZAdU6qRd+8efMaHQoMQLIPwHAeHh66qq8G+Kmp/ZUrV9bH9QFIvx07dujqX/Xq1WXTpk16LgYA21KxYkW9DU51x6mE//jx40aHBCuo7LNf336R7AOwGKqqr5J9VZl84oknZODAgRIWFmZ0WIDF27x5s7Rv317Pv1CLZrlz5zY6JADZRG3R2bNnjxQtWlS39Ku5HEBKmMRv30j2AVgU1Xaspg7PmzdPDySqUqWK3ncMIHlr1qyRzp07S8uWLWX16tW6UwaAbfPz89M/G2vXri1t27aVVatWGR0SLEiCySRhMfESEh0r95IcpUKlykaHBIM4JDENC4CFUkfFDBkyRE8gfumll2TixIni7u5udFiAxVi2bJme1N2lSxdZuHChuLq6Gh0SgBwUGxsrAwYMkBUrVsgPP/wgQ4cONTokGORubLxcCouWW1GxEhWf+PAXk5LE09VZCni6SQkfD8nj5mJQlMhpJPsALJrJZJIvv/xS3njjDSlVqpSu+KvJ/YC9U2dvDxo0SPr06SM//fSTODs7Gx0SAAMkJibKs88+K999951MnjxZxo4da3RIyEFRcQlyLDBcgqLjxEHl9ak89/7X/T1cpUaAt14AgG2jjR+ARXN0dNRV/SNHjuiqZb169WTSpEn65gawVz/++KOeaaGS/blz55LoA3bMyclJpk+fLuPHj5dx48bpD2p59kFV8rdcDpbg6Dj9+7T+1u9/XT1fvU69HraNyj4AqxEXFyfvvvuufPzxx/oIIpXklCxZ0uiwgBw1depUee6552TkyJHy7bff6gUxAFCmTJmiF8hVO7+q9LMQaLvOhkbImZDILF+noq+XlM/PUFdbxR0CAKuhKvtq376aPHzz5k2pWrWq3qPImiXsxRdffKET/TFjxuikn0QfwL+p7w1qW4/66NWrl8TExBgdErKBqsibI9FX1HUuU+G3WVT2AViliIgIXb2YOXOmnkT+/fffS0BAgNFhAdlGLXSpNl01v+LDDz8UBwe1+xIAHrVu3Trp3bu31K1bV0/q9/b2NjokmHGPvmrBj4qMklUzp8q5k8fk/KnjEhkeJs9N/EJa9Hjioedv+Xm+7Fq9TK5fOi9Rd+9KPv8AqVS3vvR57hXxL1JUP8fRQaR1cT/28NsgSgIArJI6R1xV9dVNzK+//qqP6OPoIdgitSb/zjvv6ET//fffJ9EHkKaOHTvKli1b5MSJE9KsWTMJDAw0OiSYiRrGp0q1EXduy5KpX8i1i+fksXIVU3z+pd9Pi3+RYtLtqWdlxLuTpEmXnnJs93Z5rXd7uR14Sz9HXU9dF7aHyj4AqxcUFCRPP/20PmP8qaee0q3OajEAsHbqR7QatvXpp5/qWRXq1wCQXqdOnZK2bduKp6enbN68WUqUKGF0SMji8XpbL4foX8fHxUpkeLjk9fOX86dO6OQ9ucp+ci6cPinjerWTAS+/IT1GjH7weKvivhzLZ2Oo7AOwev7+/rJy5Upd6V+8eLFUq1ZN9uzZY3RYQJaPnXzhhRd0oq+OnyTRB5BRqutt7969euGwYcOGOvmHde/Vv9/X5eLqphP9zPAvXER/joq4++AxdV2m89sekn0ANkG1NauqvmpZLFSokDRp0kTvbVYT/AFrTPTvT9ufMWOGTvoBIDNUNV8l/GqujfrZqH4N63QrKjbN4/VSotr+w0NDdBfAN2++pB+r+nijB19P+uf6sC0k+wBsijqKT03rV8PMPvvsMz2c6PTp00aHBaRbQkKCDBkyRA+fnDVrlowYMcLokABYOZXo79ixQ3e+tW7dWg/wg3WJN5kkKj4x069/umktGdawqm73/+PYYXlq/P9JtYZNH3qOun6CyWSGaGEpSPYB2BwnJyd5/fXX5cCBAxIfHy+1a9eWzz//XFdLAUum/r0OGDBAFixYoD8GDx5sdEgAbISayL9x40Zp06aNdO3aVebNm2d0SMiAqLjMJ/rK+O/m6Y/Br00Q30KFJeZe8i37kVl8H1gWzlcAYLNq1KghR44ckTfffFNeeeUVWbt2rcyePVuKFStmdGjAI2JjY+WJJ56Q9evXy5IlS6R79+5GhwTAxri7u8vSpUt1x9CTTz4poaGh8uKLLxodFtLBlMWZ6lUeb6g/12zSQuq2bCsvdW4h7h6e0mHgMLO+DywLlX0ANn9jo6r627Ztk/Pnz+thRaqawUEksCT37t2Tbt266aqbGjZJog8guzg7O+ttQmPHjpUxY8bIW2+9xc9EK+BoxiNXCxQrLiUqVJLda1Zk6/vAeCT7AOxCixYt5OTJk9KlSxddzejTp4+uaABGi4qKkk6dOulZE2ofbYcOHYwOCYAdDLWdPHmy/vjwww9l1KhRkphI+7Yl83J1Muv14mJjJDrybra/D4xFsg/Abvj4+MjcuXP18Xyq0q+q/KqSChjl7t270q5dOzl48KBs2rRJWrZsaXRIAOyIqu7/+OOP8v3330vfvn31diJYJmdHR/F0yVginpiQIJHhYY88fu7kMfnrz7NSqnK1hx5X11fvA9vBnn0AdkdV9Rs1aiRDhw6V9u3by7PPPqurG56enkaHBjty584dnej/8ccfsmXLFnn88ceNDgmAHVI/C/Ply6dnhnTs2FFWrFghuXPnNjosJKOAp5tcDIt+cPze+nk/SnTEXbkdFKh/f3j7FrkdeFP/ur3ai5+UJM80ry0N2neRoqXLiXsuD/nrz99l+4rF4uGVR3qNGvPg2g7/XB+2xSGJTToA7JT69jd16lRd2ShatKiu+quj+oDsFhISoo+/unr1qmzevFlq1qxpdEgA7JzaSqS2upUtW1YPCvXz8zM6JPzH3dh42Xo55MHvR7aoK8E3riX73GlbD0he/wCZ++kHcvrAPgm+flW37uf1C5CqDRpLr5FjxL9I0Yde06q4r+Rxc8n2PwdyDsk+ALunKqtqH//Ro0f1oKLx48eLiws/7JA9bt26Ja1atZLg4GDZunWr3k4CAJbg2LFjuuMob968eiGS02ssz56roRIcHfegum8Oqqrv5+EqjYrmN+NVYQnYlAHA7pUrV0727t2rE/0PPvhAGjZsqBcAAHO7fv26NG3aVLfwqyoaiT4ASzuyVv08VHv3GzRoIGfOnDE6JPxHjQBvMffAfHU9dV3YHpJ9ABDRlfx3331X9u3bJ2FhYfqGR7X40/wEc/nrr7+kSZMmEhMTI7t27ZLy5csbHRIAPKJ06dI64VfV/caNG8uBAweMDgn/4unqLNX8zZuYV/f31teF7SHZB4B/UXv2VRujGlj03HPP6QF+N27cMDosWLnz58/rm2Z13JVK9EuVKmV0SACQokKFCunvVRUqVNCnhKiWfliOEj4eUtHXyyzXquibW4r7eJjlWrA8JPsA8B9qKv+3336rBxSdOHFCt1ovWbLE6LBgpX7//Xdd0ffw8NCt+4899pjRIQFAmu7v22/WrJl06tRJH1sLy1E+f27deu/o8Pee+4xQz1evqxngLeXzm2fRAJaJZB8AUqCq+qdPn5bmzZvr4/rUED/V4g+k18mTJ/Ue/fz58+tEv3DhwkaHBADpphYp1VF86li+fv366e1tsKwKf+vifuLj8ne6n2Qypfr8+4sCahifeh0VfdtHsg8AqVBJmqrq//TTT7J69WqpWrWqbN++3eiwYAWOHDmiF4qKFCmi/80EBAQYHRIAZGqmzZw5c+TFF1/U29vee+895tlYEE9XZ7m4fZ2M6dRMCro7iqeLU/LPc3GSkj4e+ng9NXVfvQ62j6P3ACCdrly5IoMHD5YdO3bISy+9JBMnThR3d3ejw4IF2r9/v+4MUUP4Nm7cKD4+PkaHBABZolKGSZMm6eNpn3/+efnyyy/F0ZG6oSVQcxXUTBh1nKuSYDJJZFyimJKSxNHBQbxcncSZvyu7xN86AKSTOm9427Zt8tlnn+k9/bVr15bjx48bHRYsjBpq1aZNGz3rQe13JdEHYAtUMvnmm2/KjBkzdDv/gAEDJC4uzuiw7J4aIqy6x/r37//gMZXY+7i7SL5crvozib794m8eADJAVTFefvll3aLt7Oysp/d/9NFHkpiYaHRosACqqtKuXTupV6+erujnyZPH6JAAwKxGjBghP//8syxfvly6dOkiUVFRRodk19Tfhdpq0aNHD6NDgQWijR8AMik2Nlbeffdd+fjjj6VBgwZ6X3/JkiWNDgsGWbdunfTs2VO3Uy5dulRy5cpldEgAkG1Up1u3bt2kUqVK+vufmnGDnKeKDmo2jFp8Af6Lyj4AZJKbm5vev6imrF+/fl2qVasmM2fOZHCRHVLTqrt376736asbLhJ9ALZOLWyq9vELFy7o40WvXbtmdEh259y5c3Lo0KGHWviBfyPZB4Asaty4sZw4cUIfzzd8+HBd6QgKCjI6LOSQhQsXSu/evXULpWqnVItAAGAP1OyaPXv2SGRkpDRs2FD++OMPo0Oyu58/uXPnlo4dOxodCiwUyT4AmIHam62q+itXrtST2CtXrqyP6oNtmz17th5SpT7mz5+v900CgD0pV66c7N27Vzw9PaVRo0Zy+PBho0OyC6qLcMGCBXqhmW4ypIRkHwDMqGvXrnLq1Ck9oE39+umnn5aIiAijw0I2UBOphw4dqv+OZ82aJU5OyZ9tDAC2Tu0Z3717t5QqVUqaN28uv/zyi9Eh2bxjx47pTgpa+JEakn0AMLOAgABd1f/+++91i1316tV11QO2Q50vPXLkSHnhhRdk+vTpnDUNwO6pAX3qRBI1sFbNL1m2bJnRIdk0VdX39/eXFi1aGB0KLBh3JwCQTecRq/37ai9/gQIF9PAidT4xZxJbP3XU4pgxY2TcuHEyZcoU/XcNABDx8vKSNWvW6NZyNcdGLXrD/NRxv6qY8MQTT+hjgIGUkOwDQDZSLY27du2SDz74QD755BPd3v/bb78ZHRYyuT9SHbX4xhtvyIQJE3TST6IPAA9zdXXVM0xGjRolI0aMkIkTJ3JKjZmpLRM3btyghR9pItkHgGym9nKrBPHAgQO6sl+rVi354osvxGQyGR0a0kndqKq/w/fee08ft6iSfhJ9AEie2tr09ddf6++V48ePl1deeYWfeWZu4S9RooQuIACpIdkHgBxSs2ZNPaVYVTtefvllad26tVy5csXosJCORF+17X/88cd6keb11183OiQAsHhqQVR1QX3zzTd6y9OQIUMkPj7e6LCsXmxsrCxdulRX9Vl0RlpI9gEgB6njcVTCqIYY/fnnn1K1alXd7kiLo2VSlSi1OPPVV1/J1KlTddIPAEi/5557TleiFy1aJN27d5fo6GijQ7JqmzZtkjt37tDCj3Qh2QcAA7Rs2VIf0depUycZOHCg9O3bV27fvm10WPjPAKRhw4bJd999Jz/++KNO+gEAGad+xqnBfdu3b5c2bdroZBWZoxZOqlWrJhUrVjQ6FFgBkn0AMIiPj4/MmzdPVzu2bNkilStX1iv2MJ5qNVWLMOrvR3VeDB061OiQAMCqtW3bVrZt2ya///67NG3aVG7evGl0SFYnIiJCH+1LVR/pRbIPAAZTR+eoKn+VKlWkXbt28vzzz9PmaPB+SPV3os6I/vnnn6Vfv35GhwQANuHxxx/Xk+RVJ1vDhg3l/PnzRodkVVatWiX37t3TnRJAejgksVEUACyC+nas9oW/+uqrUqxYMV1VrlOnjtFh2ZWYmBjp2bOnnqmgkn21zQIAYF5//fWXbucPDw+XjRs3SvXq1Y0OySp06NBBIiMj9ZG+QHpQ2QcAC6Gm6qpBRseOHZM8efJI/fr15f3335eEhASjQ7MLUVFR0rlzZ72ndO3atST6AJBNHnvsMdmzZ48UKVJEt/Tv3LnT6JAsXnBwsGzevJkWfmQIyT4AWJjy5cvLvn379NnEKtlXrY5qcj+ydx9k+/btZf/+/bJhwwZ9LCIAIPv4+fnpxdXatWvr/fxqLzpStmTJEl0U6NWrl9GhwIqQ7AOABXJxcZH33ntPVz7U3kbV4jht2jSO6MsGYWFhup30xIkTumqiqkwAgOyXO3duWb9+ve6k6tGjh8yePdvokCx6Cr9aFPH19TU6FFgRkn0AsPBhRsePH5chQ4bIs88+Kx07dmSCsRmFhobqYxD/+OMPPSW6QYMGRocEAHbFzc1NFi9eLE899ZQ++eSTTz4xOiSLc/nyZdm7dy8t/Mgwkn0AsHCenp56cJ+qfqj9/OqIvqVLlxodltULDAyU5s2by9WrV2XHjh26lRQAkPOcnJxk+vTpevvauHHj9AedbP+jjuj18PCQLl26GB0KrAzJPgBYCbWnXB3RpxLU3r17y6BBg/QkY2Tc9evXpVmzZhISEqIHQ1WtWtXokADArqn96B988IF88cUXuro/fPhwBtT+q4VfJfpeXl5GhwIrQ7IPAFZE7dVTQ3p++uknfd6uSlJVVRoZO/JJ7ctX0/dVol+hQgWjQwIA/GPMmDH6Z9ycOXP0wrY6EtWeqUV+9UELPzKDZB8ArLD68eSTT8rJkyelRIkS0qJFC3n11Vft/oYoPS5cuCBNmjQRk8mkzykuU6aM0SEBAP5D/YxTC9qbNm2Sdu3a2XUX28KFCyVv3rx6OB+QUST7AGDF5xT/8ssvut3x66+/ljp16uhhfkieGsKnEn13d3ed6BcvXtzokAAAKVADabds2aJPSlHbrtScFXuj5haoFn7V4eDq6mp0OLBCJPsAYMUcHR3llVdekcOHD+tf161bVz7++GNJTEw0OjSLcvr0ad267+Pjo1v3ixQpYnRIAIA0NGzYUH/PVol+o0aN5NKlS2JP9u/fr7ee0cKPzCLZBwAbUKVKFTl48KC8/PLL8sYbb+gqiL3dFKXk6NGj+r9HwYIF9XyDAgUKGB0SACCd1GwadeycqnKr5F/tX7cXqqpfuHBhady4sdGhwEqR7AOADZ1V/NFHH+kqyLVr1/QN0o8//mjXxxcdOHBAWrZsKSVLltRbHvz8/IwOCQCQQWo+jUr4AwIC9HYs9WtbFx8fLz///LP069dPd+4BmcG/HACwMaoCoPY4qj1+Tz31lHTv3l2CgoLE3uzZs0dat24tlSpVkq1bt+oBRwAA66QSfdWdpRay1ff2devWiS3btm2bBAcH08KPLCHZBwAblCdPHl3VX758ua6AqDb/NWvWiL1QN0lqcnHt2rVl48aN+r8HAMC6eXt76+/pKtnv2rWrzJs3T2y5hb98+fJSvXp1o0OBFSPZBwAbpqr6an+jGtzXpUsXGTFihERGRoot27Bhg57irDocVOXHy8vL6JAAAGaSK1cuWbZsmQwaNEgf0ffll1+Krbl3756sWLFCV/XVcbtAZpHsA4CNUwPpVq9eLd99952uFFSrVk327dsntkidy6yqPaqqr36tbgoBALbF2dlZZs6cKWPHjpUxY8bIW2+9ZVPzadauXasX5tV+fSArSPYBwA6oysDTTz8tx48f1/seVdV7/PjxEhcXJ7ZCDTLq1auXdOvWTZYuXaoHFgIAbPfn2uTJk/XHhx9+KKNGjbKZY2fVwrzqyCtdurTRocDKkewDgB1RNw67du2S//u//9M3SI8//ricOXNGrN1PP/2kKyB9+/bVN0kuLi5GhwQAyAGquq9m1Hz//ff6Z0BsbKxYszt37sj69esZzAezINkHADuj2h/ffPNNfSxdTEyM1KxZU6ZMmSImk0mskdqeMGTIEBk2bJjMnj1b//kAAPZj6NCheiCtGkSrZrZERESItVJ/joSEBOnTp4/RocAGOCTZ0gYXAECGhwC98cYbesBRixYtdLJctGhRsRZff/21vPDCC/Lcc8/JV199xVnEAGDHdu7cqYfRli1bVlfH/fz8xNq0bNlS/yzbsmWL0aHABnBXBAB2TA2wU1V9dVPxxx9/6CP6VBu8NawDf/LJJzrRf+WVV3TST6IPAPatadOmsmPHDrly5YqeTaM+W5MbN27I9u3baeGH2XBnBACQVq1a6SP6OnToIAMGDND732/fvi2WSC1EqJkD48aN0xOYVdLP0UQAAKVGjRqyZ88evXe/QYMGVjWXZvHixeLq6io9evQwOhTYCNr4AQAPWbRokZ5q7OHhIbNmzZI2bdqIpVA/stQpApMmTZIPPvhA/xoAgOSq5OoYVvVZtfTXq1dPLF2dOnWkWLFismzZMqNDgY2gsg8AeIiaZnz69GmpVKmSvlEaPXq0REdHW0Sir1r2VaL/2WefkegDAFJUqFAhffpMhQoV9D74zZs3iyX7888/5fDhw7Tww6xI9gEAjyhcuLBs3LhRD7374Ycf9MR+dRNiFHVSgBrC98UXX8g333wjL7/8smGxAACsQ968eXWSr/byd+rUSbfJW6qFCxdKnjx59HY6wFxI9gEAyVID71RV/9ixY+Ll5SX169eX999/Xx8JlFkJJpOExcTL7Xtx+rP6fVoSExNl+PDhMn36dL3woJJ+AADSQ21JW7lypTzxxBN6Hs3UqVPF0qjONTUcV+3VV4NzAXPhMGIAQKrKly8v+/fv10Px3nvvPb33ce7cuVKmTJl0vf5ubLxcCouWW1GxEhWf+MjXPV2cpICnm5Tw8ZA8bi4PfU0tLAwePFjPEfjpp59k4MCBZvtzAQDsg4uLi8yZM0d8fX31gnFwcLC88847FjPc9ejRo7qNX3WuAebEgD4AQLr9+uuv8uSTT+qBR2rf/DPPPJPizVJUXIIcCwyXoOg4Uc9I7YfN/a/7e7hKjQBv8XR1lri4OL13cdWqVbq9sVevXtn1xwIA2AGV9qi5L2rmy/PPPy9ffvmlRRzbqubRzJ8/X65duybOztRiYT4k+wCADImMjJRXX31VZsyYIe3bt5eZM2dKwYIFH3qOquSfCAoX9RMmIz9kVNKv1g4q5fWQl4cN1Hstly5dKp07dzb7nwMAYJ++++47GTlypG7tVxV/ddydUdRWNTWBXy1oq8UHwJyMX8oCAFgVtX9f7Z9fu3atbj2sUqXKQ8cEnQ2N0BV9UwYTfUU9X73u1O1o8SxeVlavXk2iDwAwqxEjRsjPP/8sy5cvly5dukhUVJRhsagTA1S3HFP4kR2o7AMAMi0kJETfNK1YsUIGDRokr330uZy9G2e269cM8JbiPh5mux4AAPdt27ZNunXrJpUrV5Z169ZJvnz5cjyGp59+Wn755Rc5f/68xcwQgO2gsg8AyDQ17EhV9WfPni27DxySk8F31abIZJ974fRJ+b/h/WVgrbIyoGYZeX9YX7n0++lUr388KFzv/QcAwNxatmwp27dv14l248aN9Z75nBQbG6u3qqmqPok+sgOVfQCAWWz587qEJySJo5PTI1+7+NtJGd+/m+QvUEjaPDFQTEkm2bRgjkSGh8lHP6+TwiVLJ3tNdevj5+EqjYrmz4E/AQDAHv3xxx/SunVrnXCrWTHlypXLkfdVA2hVZ8Fvv/0mFStWzJH3hH0h2QcAZJk6Xm/r5ZAUv/7hM0/Kn8ePyDcb90juvH+3Sd4JCpTn2zWSag2byrivf0j1+q2K+z5yLB8AAOaiqvpt2rTRx/Jt3LhRatWqle3vqQYEqoWG48ePZ/t7wT7Rxg8AyDI1fT+1BsTfDx+QKvUbP0j0lbz+AVKpTn05smOr3EtlOJLDP9cHACC7FClSRHbv3i2lSpWSZs2a6X302SkiIkIPoWUwH7ITyT4AIMtuRcWmOnk/Pi5O3NzcH3ncNVcuSYiPk6vnzqb42qR/rg8AQHbKnz+/bN26VRo0aKCPlv33STPmtnLlSomJiZG+fftm23sAJPsAgCyJN5kkKj4x1ecUKlFK/jxxRJ8n/OB1cXFy7uRR/evQwFupvl5dP8FkMlPEAACkfLzsmjVrpHv37tKnTx/5/vvvs+V9FixYoIcCFitWLFuuDygk+wCALImKSz3RV9r1Hyw3Ll+UqeNfkavn/5Qrf56Vr19/QcKCg/TX42Jj0rxGZDreBwCArHJ1dZX58+fLyJEj9fGykyZNEnOOOQsKCpItW7bQwo9s55z9bwEAsGWmdNwAte07SEJu3pDVP06THSt/1o+VqlxNuj71rCyb/qW4e3iY5X0AADAHJycn+eabb8Tf31/efPNNPbjv008/FUfHrNdKlyxZoif/9+rVyyyxAikh2QcAZIljOs8GHvDS69J12Ei5ev4P8fDKI4+VqyDzP5+kv1aoeCmzvQ8AAOagEvIJEyaIr6+vjB49WkJCQmTmzJni4uKS5Rb+tm3b6uv+f3v3EyPlWccB/Dc7u7N1Z+ku7rILIgltmqgcuuCfNEJpTWOJDWCU1HiR6MX0gAdPai/+OXnzYqIJN49i0j+WVEFtapZStKmFEvFQFZALfwqylVmy/2bNM4DBsrvMdN6h24fPJ+HAzju/9z1M8rzf9/k9zwudJOwD0Jb+Srn5YwcG4xOfeuh//3/z1fEYWr0m1t7/QKHnAYCi7Nmzp7F53+7du+PSpUuxb9++6GuiIy3tNZOWoKXOtPTAOo1jZ06fjsOHDzeWCUCnCfsAtKW7qyuqPeXbbtL3bq+8+Hz8/fjR+Pp3vn/btshUP50HAN4Padf8lStXxq5du2Lbtm2xf//+GBwcvOW4d6ZmGq+LTW+RWWhcnL4yHU/94Mfx2BPb79CVczcrzRe52wQAd6Vj5ybin5cnF3393l9fOxK/+tlPYuOWR6N/cGW8dewv8dIzv4yxzY/E0z//RZS7F3/2nJr37x/si7HRgY5dPwA048iRI7F9+/ZYu3ZtHDhwINasWdP4e216Nt44NxHnJ6cb49ZSAas+Nxdd5XKM9FVi0+hAVCvmX+kMYR+AtqWZjN+fenvRz8/+61Ts/dHTcfLE8bhaq8XIR9fF5770ldj5jaeip1K5bf3Prx+Oe3vbWyMJAEU4ceJEY3Y/7dp/8ODBKA9/JI6dn4iUqloJVumhQNqOZmxkIO4bvP2yAGiVsA9AIQ6duRgXJqdbutFp5kZoVV8lHl43VGBVAGjP6dOnG4H/szufjC9+81tt19sw3B8fH1pRyLXBDcI+AIVILYy/O3Uh6gWOKl2liMfXr9LiCMCyc/zMuXhrsl5YvU+ODsR6M/wUyN0TAIWoVrobrYhpzWJRNo5YywjA8nzA/Y+rCwf9n37v2/Hyc/sW/e7eP74eQ6PX1vrf7Oj5iUY3W9W4R0H8kgAoTFpzODU3FyfevtJ2rQ3DK8xwALAspQfbi/VHb/vq1+LBzVv/72+pmXrvD78bq9auWzDoXzvmWl1L1yiKsA9AodKaw95yua3NitKMvqAPwHLdlDbtur+Yj236dOPfzf72+p9i6urVeGTHrkW/l8bLVDfVtyktRfDSYgA6MsOf1tqndsQbIX4pNz5Px6fvCfoALFcnL0/edlx7t/H9z0WpVIqtO7685HGl6/WhCGb2AeiIaqW70YqYZijSjcvZ2lTUZuZuPa6nHKurvY0HBGYyAFju0njWStfa7MxMHP7Nrxuz/enVs0uZv15/rO2rBGEfgA5LAX5sdKBx4zJbr8eV6bmoz89HV6kU/ZVydHdpMgPgg2GmXl/wwfVSjh56Of5z+d+xdefiLfw3S/XTeGl8pF3CPgB3TLpxGbzHzQsAH0y16daCfjK+/9no7umJLV/Y2fR30oNx4yXt8gsCAABoQupMa8XVWi1ee+lAjG15NFas/HDHzgMLEfYBAACakJagteLPf/jttV34m2zhf6/ngYUI+wAAAE1Ie820YvyFZ+Kevmp85rFtHT0PLETYBwAAaHLvmfQWmWZMXLoYb746Hg89/kT0fqj5V8qm+jbnowh+RQAAAE1Kr4ttpsn+lRefj7nZ2di6o/kW/tL1+lAEYR8AAKBJ9w32RTPb542/8GwMDA3Hg5u3Nl17/np9KEJpft5WjwAAAM06dOZiXJicbir0tzKrv6qvEg+vGyqwKnczM/sAAAAt2DQ6EEVvmJ/qpbpQFGEfAACgBdVKd4yNFBvMN44MNOpCUYR9AACAFqW19RuG+wuptWF4Ray3Vp+CWbMPAADwHp28PBnHzk9ESlWtBKvS9db9NKMv6NMJwj4AAEAbatOz8ca5iTg/Od0I8UsFrBufj/RVGmv0q1r36RBhHwAAoADvTM00ZvrP1qaiNjN3y+fVnnKsrvY2lgDc29vzvlwjdw9hHwAAoGCz9XpcmZ6L+vx8dJVK0V8pR3eXLdO4c4R9AAAAyIxHSwAAAJAZYR8AAAAyI+wDAABAZoR9AAAAyIywDwAAAJkR9gEAACAzwj4AAABkRtgHAACAzAj7AAAAkBlhHwAAADIj7AMAAEBmhH0AAADIjLAPAAAAmRH2AQAAIDPCPgAAAGRG2AcAAIDMCPsAAACQGWEfAAAAMiPsAwAAQGaEfQAAAMiMsA8AAACZEfYBAAAgM8I+AAAAZEbYBwAAgMwI+wAAAJAZYR8AAAAyI+wDAABAZoR9AAAAyIywDwAAAJkR9gEAACAzwj4AAABkRtgHAACAzAj7AAAAkBlhHwAAADIj7AMAAEBmhH0AAADIjLAPAAAAmRH2AQAAIDPCPgAAAGRG2AcAAIDMCPsAAACQGWEfAAAAMiPsAwAAQGaEfQAAAMiMsA8AAACZEfYBAAAgM8I+AAAARF7+CwmxaluG5DyTAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Add subtour elimination constraints, solve and plot solution\n",
    "p.addConstraint(xp.Sum(use[i,j] for i in subset for j in subset) <= len(subset) - 1 \n",
    "    for L in range(2,len(CITIES)) \n",
    "    for subset in itertools.combinations(CITIES, L)) \n",
    "\n",
    "p.controls.outputlog = 0 # Turn off output log for cleaner output\n",
    "\n",
    "p.optimize()\n",
    "\n",
    "# Plot solution\n",
    "plot_sol(p) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The solution is now valid and complete, since an Hamiltonian tour (no subtours) has been formed. However, you could experience that the problem building and solving times are rather high for a TSP with only 17 cities.\n",
    "\n",
    "This is due to the complete enumeration of all possible subtours, whose number grows exponentially with the instance size making the problem creation and solving times prohibitively long when problems grow just somewhat larger."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Formulation using the Miller, Tucker, Zemlin subtour elimination constraints"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we will model the same problem but using the Miller, Tucker, Zemlin subtour elimination constraints, which requires a new set of continuous variables:\n",
    "\n",
    "$step_i$ = step at which node $i$ is visited, $\\forall i = {2,...,|\\mathcal{N}|}$\n",
    "\n",
    "which are used as auxiliary variables for the formulation of subtour elimination constraints. Although a new set of real variables of size $|\\mathcal{N}|$ is introduced, we are able to prevent all subtours by introducing a set of constraints of size $(|\\mathcal{N}|-1)^2$, considerably reducing the problem size and complexity when comparing with the previous formulation:\n",
    "\n",
    "$$\n",
    "\\min \\sum_{i,j \\in \\mathcal{N}} cost_{ij} \\cdot use_{ij}\n",
    "$$\n",
    "\n",
    "subject to:\n",
    "\n",
    "* We have to enter and leave every city, and source node cannot be the destination node for any move: \n",
    "$$\n",
    "\\sum_{j \\in \\mathcal{N}} use_{ij} = 1, \\quad \\forall i \\in \\mathcal{N} \\\\\n",
    "\\sum_{j \\in \\mathcal{N}} use_{ji} = 1, \\quad \\forall i \\in \\mathcal{N} \\\\\n",
    "use_{ii} = 0, \\quad \\forall i \\in \\mathcal{N}\n",
    "$$\n",
    "* Miller, Tucker, Zemlin subtour elimination constraints:\n",
    "$$\n",
    "step_j \\geq step_i + 1 - (n-1) \\cdot (1 - use_{ij}), \\forall i,j = {2,..,n}\n",
    "$$\n",
    "\n",
    "with $n = |\\mathcal{N}|$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "FICO Xpress v9.8.x, Hyper, solve started 17:13:17, Aug 10, 2025\n",
      "Heap usage: 563KB (peak 583KB, 262KB system)\n",
      "Minimizing MILP noname using up to 20 threads and up to 31GB memory, with these control settings:\n",
      "OUTPUTLOG = 1\n",
      "NLPPOSTSOLVE = 1\n",
      "XSLP_DELETIONCONTROL = 0\n",
      "XSLP_OBJSENSE = 1\n",
      "Original problem has:\n",
      "       307 rows          306 cols         1331 elements       289 entities\n",
      "Presolved problem has:\n",
      "       274 rows          288 cols         1264 elements       272 entities\n",
      "Presolve finished in 0 seconds\n",
      "Heap usage: 1956KB (peak 1963KB, 262KB system)\n",
      "\n",
      "Coefficient range                    original                 solved        \n",
      "  Coefficients   [min,max] : [ 1.00e+00,  1.60e+01] / [ 1.00e+00,  1.00e+00]\n",
      "  RHS and bounds [min,max] : [ 1.00e+00,  1.50e+01] / [ 9.38e-01,  1.00e+00]\n",
      "  Objective      [min,max] : [ 3.00e+00,  1.06e+02] / [ 3.00e+00,  1.06e+02]\n",
      "Autoscaling applied standard scaling\n",
      "\n",
      "Will try to keep branch and bound tree memory usage below 21.1GB\n",
      "Starting concurrent solve with dual (1 thread)\n",
      "\n",
      " Concurrent-Solve,   0s\n",
      "            Dual        \n",
      "    objective   dual inf\n",
      " D  322.68750   .0000000\n",
      "                        \n",
      "------- optimal --------\n",
      "Concurrent statistics:\n",
      "           Dual: 111 simplex iterations, 0.00s\n",
      "Optimal solution found\n",
      " \n",
      "   Its         Obj Value      S   Ninf  Nneg   Sum Dual Inf  Time\n",
      "   111        322.687500      D      0     0        .000000     0\n",
      "Dual solved problem\n",
      "  111 simplex iterations in 0.00 seconds at time 0\n",
      "\n",
      "Final objective                       : 3.226875000000000e+02\n",
      "  Max primal violation      (abs/rel) :       0.0 /       0.0\n",
      "  Max dual violation        (abs/rel) :       0.0 /       0.0\n",
      "  Max complementarity viol. (abs/rel) :       0.0 /       0.0\n",
      "\n",
      "Starting root cutting & heuristics\n",
      "Deterministic mode with up to 4 additional threads\n",
      " \n",
      " Its Type    BestSoln    BestBound   Sols    Add    Del     Gap     GInf   Time\n",
      "P          828.000000   322.687500      1                 61.03%       0      0\n",
      "   1  K    828.000000   345.937500      1     75      0   58.22%      35      0\n",
      "   2  K    828.000000   353.250000      1     69     63   57.34%      30      0\n",
      "   3  K    828.000000   366.000000      1     73     67   55.80%      33      0\n",
      "   4  K    828.000000   366.000000      1    109     65   55.80%      34      0\n",
      "   5  K    828.000000   366.046875      1     60    111   55.79%      34      0\n",
      "b          398.000000   366.250000      2                  7.98%       0      0\n",
      "   6  K    398.000000   366.250000      2    127     60    7.98%      38      0\n",
      " \n",
      "Cuts in the matrix         : 147\n",
      "Cut elements in the matrix : 2398\n",
      "\n",
      "Performing root presolve...\n",
      "\n",
      "Reduced problem has:     373 rows     192 columns      1953 elements\n",
      "Presolve dropped   :      48 rows      96 columns      1709 elements\n",
      "Presolve tightened :       123 elements\n",
      "Will try to keep branch and bound tree memory usage below 21.1GB\n",
      "Crash basis containing 15 structural columns created\n",
      " \n",
      "   Its         Obj Value      S   Ninf  Nneg   Sum Dual Inf  Time\n",
      "  1207        322.687500      D      0     0        .000000     0\n",
      "Optimal solution found\n",
      "Dual solved problem\n",
      "  1207 simplex iterations in 0.00 seconds at time 0\n",
      "\n",
      "Final objective                       : 3.226875000000001e+02\n",
      "  Max primal violation      (abs/rel) : 2.220e-16 / 2.220e-16\n",
      "  Max dual violation        (abs/rel) :       0.0 /       0.0\n",
      "  Max complementarity viol. (abs/rel) :       0.0 /       0.0\n",
      "\n",
      "Starting root cutting & heuristics\n",
      "Deterministic mode with up to 4 additional threads\n",
      " \n",
      " Its Type    BestSoln    BestBound   Sols    Add    Del     Gap     GInf   Time\n",
      "R          391.000000   367.000000      3                  6.14%       0      0\n",
      "   1  K    391.000000   367.000000      3     71    125    6.14%      39      0\n",
      "   2  K    391.000000   367.000000      3     48     72    6.14%      34      0\n",
      "P          381.000000   367.000000      4                  3.67%       0      0\n",
      "   3  K    381.000000   367.000000      4     56     44    3.67%      34      0\n",
      " \n",
      "Cuts in the matrix         : 75\n",
      "Cut elements in the matrix : 1719\n",
      "\n",
      "Performing root presolve...\n",
      "\n",
      "Reduced problem has:     255 rows     103 columns      1291 elements\n",
      "Presolve dropped   :      52 rows      89 columns      1332 elements\n",
      "Presolve tightened :         5 elements\n",
      "Will try to keep branch and bound tree memory usage below 21.1GB\n",
      "Crash basis containing 15 structural columns created\n",
      " \n",
      "   Its         Obj Value      S   Ninf  Nneg   Sum Dual Inf  Time\n",
      "  2039        323.000000      D      0     0        .000000     0\n",
      "Optimal solution found\n",
      "Dual solved problem\n",
      "  2039 simplex iterations in 0.00 seconds at time 0\n",
      "\n",
      "Final objective                       : 3.230000000000000e+02\n",
      "  Max primal violation      (abs/rel) :       0.0 /       0.0\n",
      "  Max dual violation        (abs/rel) :       0.0 /       0.0\n",
      "  Max complementarity viol. (abs/rel) :       0.0 /       0.0\n",
      "\n",
      "Starting root cutting & heuristics\n",
      "Deterministic mode with up to 4 additional threads\n",
      " \n",
      " Its Type    BestSoln    BestBound   Sols    Add    Del     Gap     GInf   Time\n",
      " *** Search completed ***\n",
      "Uncrunching matrix\n",
      "Final MIP objective                   : 3.810000000000000e+02\n",
      "Final MIP bound                       : 3.810000000000000e+02\n",
      "  Solution time / primaldual integral :      0.34s/ 41.159750%\n",
      "  Work / work units per second        :      0.34 /      0.99\n",
      "  Number of solutions found / nodes   :         4 /         1\n",
      "  Max primal violation      (abs/rel) : 4.885e-15 / 3.053e-16\n",
      "  Max integer violation     (abs    ) :       0.0\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Create problem\n",
    "p = xp.problem()\n",
    "\n",
    "# Create variables as a square matrix of binary variables. Note\n",
    "# the use of p.addVariables to ensure NumPy uses the Xpress operations for handling these vectors.\n",
    "use = p.addVariables(n,n, vartype=xp.binary, name='x')\n",
    "step = p.addVariables(n, name='t')\n",
    "\n",
    "# Degree constraints\n",
    "p.addConstraint(xp.Sum(use[i,:]) == 1  for i in CITIES)\n",
    "p.addConstraint(xp.Sum(use[:,i]) == 1  for i in CITIES)\n",
    "\n",
    "# Fix diagonals (i.e. city X -> city X) to zero\n",
    "p.addConstraint(use[i,i] == 0 for i in CITIES)\n",
    "\n",
    "# Miller, Tucker, Zemlin subtour elimination constraints\n",
    "p.addConstraint([step[j] >= step[i] + 1 - (n-1)*(1 - use[i,j]) for i in range(1,n) for j in range(1,n)])\n",
    "\n",
    "# Objective function\n",
    "p.setObjective (xp.Sum((dist * use).flatten()))\n",
    "\n",
    "p.optimize()\n",
    "\n",
    "# Plot solution\n",
    "if p.attributes.solstatus not in [xp.SolStatus.OPTIMAL, xp.SolStatus.FEASIBLE]:\n",
    "    print(\"Solve status:\", p.attributes.solvestatus.name)\n",
    "    print(\"Solution status:\", p.attributes.solstatus.name)\n",
    "else:\n",
    "    plot_sol(p)  # print solution and cost"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can confirm by looking at the graph and solver logs, this formulation yields the same solution as the previous one, but solves the problem much faster. Let's try to beat that in the next section!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Using callbacks"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's try to speed up the problem creation and solving times even more by using **solver callbacks** to add only those subtour elimination constraints that are really needed during the solving process using the standard formulation.\n",
    "\n",
    "Callback functions are user–defined routines to be specified to the Optimizer which are called at specific stages during the optimization process, prompting the Optimizer to return to the user's program before continuing with the solution algorithm. They are a useful tool particularly for Mixed Integer Programming (MIP) problems by allowing the user to interact with the solver during the solution search process (Branch-and-Bound). There are specific callbacks for other problem types, too.\n",
    "\n",
    "[Using callback functions](https://www.fico.com/fico-xpress-optimization/docs/latest/solver/optimizer/python/HTML/chCallbacks.html) is simple: \n",
    "  * the user first defines a function (say *myfunction*) with a specific signature that is to be run every time the branch-and-bound reaches a well-specified point\n",
    "  * secondly, the user specifies that the function is to be invoked every time the algorithm reaches a well-specified point calls a function (such as [problem.addPreIntsolCallback](https://www.fico.com/fico-xpress-optimization/docs/latest/solver/optimizer/python/HTML/problem.addPreIntsolCallback.html)) with *myfunction* as its argument\n",
    "  * finally, the user runs the *optimize* command that launches the branch-and-bound, the simplex solver, or the barrier solver; it is while these are run that myfunction is called at the intended points (depending on the selected callback type, check the [list of callbacks accepted by the Xpress Optimizer](https://www.fico.com/fico-xpress-optimization/docs/latest/solver/optimizer/HTML/chapter5.html?scroll=section5002))\n",
    "\n",
    "In this TSP example, we will relax (leave out) the subtour elimination constraints, and instead add a callback funtion that is triggered every time an integer (feasible) solution to the relaxed problem is found during the B&B process. By using the [problem.addPreIntsolCallback](https://www.fico.com/fico-xpress-optimization/docs/latest/solver/optimizer/python/HTML/problem.addPreIntsolCallback.html) solver callback, we will instruct the solver whether to accept (if no subtours) or discard (subtours exist) the solution found. In the latter case we add suitable subtour elimination constraints to the problem by calling the function [problem.addcuts](https://www.fico.com/fico-xpress-optimization/docs/dms2024-03/solver/optimizer/python/HTML/problem.addcuts.html) with the appropriate arguments. Therefore, the user-defined callback function needs to perform two main tasks:\n",
    "  * checking whether a given solution forms a Hamiltonian tour\n",
    "  * applying subtour elimination constraints to exclude the current node solution subtours from being found again"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define callback function\n",
    "def cb_preintsol(prob, data, soltype, cutoff):\n",
    "    '''Callback for checking if solution is acceptable\n",
    "    prob: Xpress problem object\n",
    "    data: data object = number of cities\n",
    "    soltype: type of MIP solution that has been found. 0 - LP relaxation is integer feasible, 1 - MIP solution found by a heuristic, 2 - MIP solution provided by the user\n",
    "    '''\n",
    "\n",
    "    n = data                             # number of cities\n",
    "    xsol=prob.getCallbackSolution(use)   # get array with values of x variables in the current context-specific solution\n",
    "    xsol = np.array(xsol).reshape(n,n)   # convert into matrix-shaped np array\n",
    "    tour = np.argmax(xsol, axis=1)       # get indices of the max (non-zero) element in each column = resulting tour\n",
    "\n",
    "    i = 0       # to store next city\n",
    "    ncities = 1 # to count number of cities visited\n",
    "\n",
    "    # Scan cities in order until we get back to 0 or the solution is wrong. \n",
    "    while tour[i] != 0 and ncities < n:\n",
    "        ncities += 1\n",
    "        i = tour[i]\n",
    "\n",
    "    reject = False # at this point do not reject the solution\n",
    "    if ncities < n:\n",
    "        # The tour given by the current solution does not pass through\n",
    "        # all the cities and thus contains subtours.\n",
    "        # If soltype is non-zero, the solution was found by a heuristic\n",
    "        # or provided by the user, so we reject it by setting reject=True without further branching.\n",
    "        # If instead soltype is zero, the solution came from the LP relaxation  \n",
    "        # of the current B&B node which was found to be integer feasible. In this case \n",
    "        # we will reject it by adding a cut that cuts off that solution.\n",
    "        # Note that we must NOT set reject=True in that case because that would result in just\n",
    "        # dropping the node, no matter whether we add cuts or not.\n",
    "        if soltype != 0:\n",
    "            reject = True\n",
    "        else:\n",
    "            # Obtain an order by checking the maximum of the variable matrix\n",
    "            # for each row\n",
    "            unchecked = np.zeros(n) # np array of zeros of size n to assign each city to a subtour\n",
    "            nsubtour = 0            # to number and identify subtours\n",
    "\n",
    "            # Initialize the vectors to be passed to problem.addcuts\n",
    "            cut_mstart = [0]\n",
    "            cut_ind = []\n",
    "            cut_coe = []\n",
    "            cut_rhs = []\n",
    "\n",
    "            nnz = 0   # to mark the start of the variables indices for each cut\n",
    "            ncuts = 0 # to count number of cuts (subtours)\n",
    "\n",
    "            # while there are cities that are not assigned to a subtour\n",
    "            while np.min(unchecked) == 0:\n",
    "                nsubtour += 1                    # current subtour id\n",
    "                firstcity = np.argmin(unchecked) # first city (index) in unchecked that is not assigned a subtour yet (i.e., =0)\n",
    "                i = firstcity \n",
    "\n",
    "                # Scan cities in order for each subtour\n",
    "                while True:\n",
    "                    unchecked[i] = nsubtour  # mark city i as belonging to current subtour\n",
    "                    i = tour[i]              # proceed to next city in the current subtour\n",
    "\n",
    "                    if i == firstcity:       # if next city is the first city, subtour is finished, stop\n",
    "                        break\n",
    "\n",
    "                # Find indices of all variables with origin in this subtour and destination\n",
    "                # outside this subtour. We will force the sum of those variables to be >= 1 \n",
    "                # (i.e. subtour will be excluded after the cut is added). S is the set of cities\n",
    "                # traversed by the subtour, compS is its complement (list of cities not contained in subtour S)\n",
    "                S     = np.where(unchecked == nsubtour)[0].tolist()\n",
    "                compS = np.where(unchecked != nsubtour)[0].tolist()\n",
    "                indices = [i*n+j for i in S for j in compS] # convert into decision variables array indices\n",
    "\n",
    "                # We need to presolve new row to adapt its data (rhs, column indices and row coefficients) for the presolved problem (instead of the original problem)\n",
    "                # Presolve new row (cut) in order to add it to the presolved problem via addcuts\n",
    "                mcolsp, dvalp, drhsp, p_status = prob.presolveRow(rowtype='G',\n",
    "                                                    origcolind=indices,\n",
    "                                                    origrowcoef=np.ones(len(indices)),\n",
    "                                                    origrhs=1)\n",
    "\n",
    "                nnz += len(mcolsp)\n",
    "                ncuts += 1\n",
    "\n",
    "                cut_ind.extend(mcolsp) # array which will be filled with the columns of the presolved row\n",
    "                cut_coe.extend(dvalp)  # array which will be filled with the coefficients of the presolved row\n",
    "                cut_rhs.append(drhsp)  # array containing the right hand side elements for the cuts\n",
    "                cut_mstart.append(nnz) # array containing offset into the colind and cutcoef arrays indicating the start of each cut\n",
    "\n",
    "            # add cuts\n",
    "            if ncuts > 0:\n",
    "                # call prob.addcuts and pass the necessary arguments to add the subtour elimination constraints (list of cuts)\n",
    "                prob.addCuts(cuttype=[0] * ncuts,\n",
    "                        rowtype=['G'] * ncuts,\n",
    "                        rhs=cut_rhs,\n",
    "                        start=cut_mstart,\n",
    "                        colind=cut_ind,\n",
    "                        cutcoef=cut_coe)            \n",
    "\n",
    "    return (reject, None)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we will solve the problem with the standard formulation (without subtour elimination constraints), but **adding the callback function** and plotting the solution to validate the approach. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "FICO Xpress v9.8.x, Hyper, solve started 17:13:20, Aug 10, 2025\n",
      "Heap usage: 486KB (peak 486KB, 203KB system)\n",
      "Minimizing MILP noname using up to 20 threads and up to 31GB memory, with these control settings:\n",
      "OUTPUTLOG = 1\n",
      "NLPPOSTSOLVE = 1\n",
      "XSLP_DELETIONCONTROL = 0\n",
      "XSLP_OBJSENSE = 1\n",
      "Original problem has:\n",
      "        51 rows          289 cols          595 elements       289 entities\n",
      "Presolved problem has:\n",
      "        34 rows          272 cols          544 elements       272 entities\n",
      "Presolve finished in 0 seconds\n",
      "Heap usage: 1811KB (peak 1811KB, 203KB system)\n",
      "\n",
      "Coefficient range                    original                 solved        \n",
      "  Coefficients   [min,max] : [ 1.00e+00,  1.00e+00] / [ 1.00e+00,  1.00e+00]\n",
      "  RHS and bounds [min,max] : [ 1.00e+00,  1.00e+00] / [ 1.00e+00,  1.00e+00]\n",
      "  Objective      [min,max] : [ 3.00e+00,  1.06e+02] / [ 3.00e+00,  1.06e+02]\n",
      "Autoscaling applied standard scaling\n",
      "\n",
      "Symmetric problem: generators: 1, support set: 272\n",
      " Number of orbits: 136, largest orbit: 2\n",
      " Row orbits: 17, row support: 34\n",
      "Will try to keep branch and bound tree memory usage below 21.1GB\n",
      "Starting concurrent solve with dual (1 thread)\n",
      "\n",
      " Concurrent-Solve,   0s\n",
      "            Dual        \n",
      "    objective   dual inf\n",
      " D  318.00000   .0000000\n",
      "                        \n",
      "------- optimal --------\n",
      "Concurrent statistics:\n",
      "           Dual: 31 simplex iterations, 0.00s\n",
      "Optimal solution found\n",
      " \n",
      "   Its         Obj Value      S   Ninf  Nneg   Sum Dual Inf  Time\n",
      "    31        318.000000      D      0     0        .000000     0\n",
      "Dual solved problem\n",
      "  31 simplex iterations in 0.00 seconds at time 0\n",
      "\n",
      "Final objective                       : 3.180000000000000e+02\n",
      "  Max primal violation      (abs/rel) :       0.0 /       0.0\n",
      "  Max dual violation        (abs/rel) :       0.0 /       0.0\n",
      "  Max complementarity viol. (abs/rel) :       0.0 /       0.0\n",
      "\n",
      "Starting root cutting & heuristics\n",
      "Deterministic mode with up to 4 additional threads\n",
      " \n",
      " Its Type    BestSoln    BestBound   Sols    Add    Del     Gap     GInf   Time\n",
      "Heuristic search 'R' started\n",
      "Heuristic search 'R' stopped\n",
      "*          381.000000   381.000000      1                  0.00%       0      0\n",
      " *** Search completed ***\n",
      "Uncrunching matrix\n",
      "Final MIP objective                   : 3.810000000000000e+02\n",
      "Final MIP bound                       : 3.810000000000000e+02\n",
      "  Solution time / primaldual integral :      0.05s/ 98.023509%\n",
      "  Work / work units per second        :      0.01 /      0.16\n",
      "  Number of solutions found / nodes   :         1 /         1\n",
      "  Max primal violation      (abs/rel) :       0.0 /       0.0\n",
      "  Max integer violation     (abs    ) :       0.0\n",
      "OPTIMAL\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Create problem\n",
    "p = xp.problem()\n",
    "\n",
    "# Create variables as a square matrix of binary variables. Note\n",
    "# the use of p.addVariables to ensure NumPy uses the Xpress operations for handling these vectors.\n",
    "use = p.addVariables(n,n, vartype=xp.binary, name='x')\n",
    "\n",
    "# Degree constraints\n",
    "p.addConstraint(xp.Sum(use[i,:]) == 1  for i in CITIES)\n",
    "p.addConstraint(xp.Sum(use[:,i]) == 1  for i in CITIES)\n",
    "\n",
    "# Fix diagonals (i.e. city X -> city X) to zero\n",
    "p.addConstraint(use[i,i] == 0 for i in CITIES)\n",
    "\n",
    "# Objective function\n",
    "p.setObjective(xp.Sum((dist * use).flatten()))\n",
    "\n",
    "# Add callback function\n",
    "p.addPreIntsolCallback(cb_preintsol, n)\n",
    "\n",
    "# Solve the problem and print solution\n",
    "p.optimize()\n",
    "\n",
    "print(p.attributes.solstatus.name)\n",
    "\n",
    "if p.attributes.solstatus not in [xp.SolStatus.OPTIMAL, xp.SolStatus.FEASIBLE]:\n",
    "    print(\"Solve status:\", p.attributes.solvestatus.name)\n",
    "    print(\"Solution status:\", p.attributes.solstatus.name)\n",
    "else:\n",
    "    plot_sol(p)  # plot solution"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As we can observe, the problem has been solved even faster than using the MTZ formulation, yielding the same solution and objective value in considerably less time, making the problem even more scalable. \n",
    "\n",
    "As an optional exercise, you can experiment with increasing the number the number of cities (*n* below) in the cell below and run the previous code cell again to see how high the number of cities <tt>n</tt> can go before the problem becomes computationally too expensive (let's say, takes more than 1 minute to solve to proven optimality)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create random TSP problem data\n",
    "n = 150\n",
    "\n",
    "CITIES = range(n)  # set of cities: 0..n-1\n",
    "\n",
    "np.random.seed(0)\n",
    "\n",
    "X = 100 * np.random.rand(n)\n",
    "Y = 100 * np.random.rand(n)\n",
    "\n",
    "XY = (X, Y)\n",
    "\n",
    "# Compute distance matrix\n",
    "dist = np.ceil(np.sqrt ((X.reshape(n,1) - X.reshape(1,n))**2 +\n",
    "                        (Y.reshape(n,1) - Y.reshape(1,n))**2))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "xpress9.8 (3.12.9)",
   "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.12.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
