{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "0", "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "import logging\n", "import warnings\n", "\n", "import numpy as np\n", "\n", "np.set_printoptions(precision=4)\n", "warnings.filterwarnings(\"ignore\")\n", "\n", "\n", "logger = logging.getLogger()\n", "logger.setLevel(logging.ERROR)" ] }, { "cell_type": "markdown", "id": "1", "metadata": {}, "source": [ "# Temperature independent negative logarithm of average observable\n", "\n", "This type of extrapolation is useful for extrapolating hard-sphere chemical potentials in temperature or volume, or other quantities involving logarithms of probabilities (e.g. PMFs).\n", "\n", "This is in fact easier than Case 2 because we do not need to augment the data in any way - we just set a flag that the quantity to extrapolate is the negative logarithm of an ensemble average, i.e., `post_func = 'minus_log'`. Note, though, that we handled the -log calculation in the definition of the derivatives (even at zeroth order). This means we want to just pass data, not the -log of the data. Also note that `post_func` can take any function utilizing sympy expressions for modifying the *average* observable we want to extrapolate, so passing `post_func = lambda x: -sympy.log(x)` would be equivalent. If you're applying the function to the observable itself, that's just a different observable and you don't need to worry about what we're doing in this notebook... it's the difference between $\\ln \\langle x \\rangle$ and $\\langle \\ln x \\rangle$." ] }, { "cell_type": "code", "execution_count": 2, "id": "2", "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import cmomy\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "# Import idealgas module\n", "from thermoextrap import idealgas\n", "\n", "rng = cmomy.random.default_rng(seed=0)\n", "\n", "# Define test betas and reference beta\n", "betas = np.arange(0.1, 10.0, 0.5)\n", "beta_ref = betas[11]\n", "vol = 1.0\n", "\n", "# Define orders to extrapolate to\n", "orders = [1, 2, 4, 6]\n", "order = orders[-1]\n", "\n", "npart = 1000 # Number of particles (in single configuration)\n", "nconfig = 100_000 # Number of configurations\n", "\n", "# Generate all the data we could want\n", "xdata, udata = idealgas.generate_data((nconfig, npart), beta_ref, vol)" ] }, { "cell_type": "code", "execution_count": 3, "id": "3", "metadata": {}, "outputs": [], "source": [ "import thermoextrap as xtrap" ] }, { "cell_type": "code", "execution_count": 4, "id": "4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model parameters (derivatives):\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Size: 56B\n", "array([ 1.7438, 0.1615, -0.0186, 0.015 , 0.612 , -1.9426, -1.9077])\n", "Dimensions without coordinates: order\n", "\n", "\n", "Model predictions:\n", " Size: 32B\n", "array([0.5741, 0.7037, 0.8286, 0.9489])\n", "Coordinates:\n", " * beta (beta) float64 32B 0.1 0.6 1.1 1.6\n", " dalpha (beta) float64 32B -5.5 -5.0 -4.5 -4.0\n", " beta0 float64 8B 5.6\n", "\n", "\n" ] } ], "source": [ "# Create and train extrapolation model\n", "xem_log = xtrap.beta.factory_extrapmodel(\n", " beta=beta_ref,\n", " post_func=\"minus_log\",\n", " data=xtrap.DataCentralMomentsVals.from_vals(\n", " order=orders[-1], xv=xdata, uv=udata, deriv_dim=None, central=True\n", " ),\n", ")\n", "\n", "# Check the derivatives\n", "print(\"Model parameters (derivatives):\")\n", "print(xem_log.derivs(norm=False))\n", "print(\"\\n\")\n", "\n", "# Finally, look at predictions\n", "print(\"Model predictions:\")\n", "print(xem_log.predict(betas[:4], order=2))\n", "print(\"\\n\")" ] }, { "cell_type": "code", "execution_count": 5, "id": "5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Bootstrapped uncertainties in predictions:\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "OMP: Info #276: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Size: 32B\n", "array([2.0496, 1.54 , 1.1227, 0.7887])\n", "Coordinates:\n", " * beta (beta) float64 32B 0.1 0.6 1.1 1.6\n", " dalpha (beta) float64 32B -5.5 -5.0 -4.5 -4.0\n", " beta0 float64 8B 5.6\n" ] } ], "source": [ "# And bootstrapped uncertainties\n", "print(\"Bootstrapped uncertainties in predictions:\")\n", "print(xem_log.resample(nrep=100).predict(betas[:4], order=3).std(\"rep\"))" ] }, { "cell_type": "code", "execution_count": 6, "id": "6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True extrapolation coefficients: [ 1.7438e+00 1.6106e-01 -1.7727e-02 3.6676e-04 2.1114e-03 -1.5377e-03\n", " 3.9927e-04]\n", "\t With N_configs = 10: [ 1.7469e+00 1.1364e-01 1.3435e-01 -8.7672e-01 -1.8012e+01 -1.0596e+02\n", " 3.2007e+03]\n", "\t With N_configs = 100: [ 1.7423e+00 1.3459e-01 -1.9823e-01 1.2182e+00 -1.0755e+01 -6.0855e+01\n", " 3.2539e+03]\n", "\t With N_configs = 1000: [ 1.7426 0.1588 -0.0696 -0.1739 0.8373 46.7624 56.4464]\n", "\t With N_configs = 10000: [ 1.7436 0.161 -0.0531 -0.2102 4.1724 -23.4454 22.6547]\n", "\t With N_configs = 100000: [ 1.7438 0.1615 -0.0186 0.015 0.612 -1.9426 -1.9077]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnUAAAHBCAYAAAAPRE2qAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAACyUElEQVR4nOzdd3xT9f7H8Vea7pV076aUPZQhoGyuXkHgIni9CoIIKCJXQbkoAnLvBUStqBdwovz0giAgFxXlCqioCAJ6leVCNm3adM90t2ny+6M0NGS0hTYdfJ6Px3nQ5KzvKdC+850Kk8lkQgghhBBCtGouzV0AIYQQQghx9STUCSGEEEK0ARLqhBBCCCHaAAl1QgghhBBtgIQ6IYQQQog2QEKdEEIIIUQbIKFOCCGEEKINcG3uAjQno9FIamoqfn5+KBSK5i6OEEIIIa5xJpOJwsJCIiMjcXFpWN3bNR3qUlNTiYmJae5iCCGEEEJYSE5OJjo6ukHnXNOhzs/PD6j+xvn7+zdzaYQQQghxrdPr9cTExJgzSkNc06GupsnV399fQp0QQgghWowr6RYmAyWEEEIIIdoACXVCCCGEEG2AhDohhBBCiDZAQp0QQgghRBsgoU4IIYQQog2QUCeEEEII0QZIqBNCCCGEaAMk1AkhhBBCtAES6oQQQggh2gAJdUIIIYQQbYCEOiGEEEKINkBCnRBCCCFEGyChTgghhBCiDXBt7gLUSEhI4KOPPuLkyZN4eXkxcOBAVqxYQefOnet1/sGDBxk2bBg9evTg+PHjTVtYIYQQQlwzDqb8grYw3er9WL9wBkVf1wwlsq3FhLp9+/bxyCOP0K9fPwwGA4sXL2bEiBGcOHECHx8fh+cWFBRw3333ccstt5CRkeGkEgshhBCirTuY8gv/zV6K0sVkte+nbAWwtMUEuxYT6j777DOL1+vWrSM0NJQjR44wdOhQh+c+9NBDTJo0CaVSyccff2z3uPLycsrLy82v9Xr9VZVZCCGEEM3jVP55MsqyrN4P8wyhszq+0e6jLUy3GegAlC4mtIXpDEJCnUMFBQUABAYGOjxu3bp1nDt3jvfee49nnnnG4bEJCQksW7as0coohBBCCOc7lX+edYnzbYatKqOC6XEv1i/YlZVBejqkpdnfrg+Ax9WN/xBNoEWGOpPJxLx58xg8eDA9evSwe9yZM2dYuHAh3377La6udT/KokWLmDdvnvm1Xq8nJiamUcoshGgazz//PHl5eaxYsaLOY/V6PX369OH7778nODjYCaVrHsOHD2f8+PHMnTv3is6fNWsWKpWqXt9TIVqik7lah7VnJ1NP0zmj0n5QqwlyeXl13quo4xDH+4vKrugZmkKLDHWzZ8/m559/5sCBA3aPqaqqYtKkSSxbtoxOnTrV67oeHh54eHg0VjGFEFfhyy+/ZNmyZRw7dgylUsnAgQN59tln6dOnj/mYgoICVq5cyYkTJ8zvzZw5k3379nHmzBlWrlxpEWz8/f2ZMmUKzz77LKtWrbJ538TERNq1a2fVV3fGjBmsXr26znIrFAqOHTtGr169GvS8zWXp0qUcP37comvKm2++2XwFEm1ekw0qMBohJwfS0ihJPAFx9g8t+fs/YfuP9buuhwdERNjdyspTgN12Ty8rNzToMZpSiwt1c+bMYceOHezfv5/o6Gi7xxUWFnL48GGOHTvG7NmzATAajZhMJlxdXfniiy+4+eabnVVsIUQD7Nixg8mTJ7N69Wp2795NZWUla9euZdiwYezdu5e+ffsCsHHjRoYOHWpR69azZ08mTJjA4sWLbV576tSp9OrVi2effRZvb2+7ZUhJSUGtVjfqcwEYDIZ6tRwI0RZd0aACgwEyMhw3gaalVR9TWQlA0V1D4O/2a+OLXD3Bz89hWDNvajUoFACUlZWh1+sJDQ29dLED26/22+I0LWaeOpPJxOzZs/noo4/4+uuvadeuncPj/f39+eWXXzh+/Lh5mzVrFp07d+b48ePceOONTiq5EKIhTCYTjz32GAsXLuSBBx7A19eXgIAAFixYwIQJE3jiiSfMx+7YscPqw9kjjzzCLbfcgqenp83rx8XFERQUxL59+66ofE888QTDhg3DaDQC8MEHHxAeHk5mZib9+/cHYODAgfj6+vLcc8+RmJiIQqFg3bp1dOjQgaioKACefPJJNBoNfn5+dOvWjW3btpnv8c0336BWq3n11VeJiIggPDycJUuWYDJd+kX43nvv0bVrV9RqNYMHD+bYsWM2y1tUVMS4ceMIDQ1FpVIxdOhQfvrpJwA+/vhjnnvuOT799FN8fX3x9fUFYNq0aRY1nIcPH2bQoEGo1Wq6devGli1bzPuWLl3K2LFjmT17Nmq1mtjYWLZu3XpF31vRvPIrstCVnLPa8iusBxtcqToHFXy0Ee6/H0aNgl69ICwM3N0hOhr69YPbb4eHHoKlS+Gtt2DHDvjxR0hJMQc6goMpCwl3WI6syfdRnJYGp07BN9/Ali2cnDmTxfn5PPLdd0z+978Z/cQTDBwzhq7duhEREYGnpydeXl5W+cO31JMqo8LmfaqMCnxLbf8sag4t5uPkI488wubNm/nkk0/w8/MjPb266lalUuHl5QVU94nT6XRs2LABFxcXq/52oaGheHp6OuyHJ4RoXqdPnyYxMZF77rnHat8999zDyJEjKS0txcvLi+PHj7Nw4cIG36Nbt24cP36cUaNGNfjchIQEBgwYwDPPPMPUqVN56KGH2Lx5M6Ghofzwww8oFAoOHTpkbn5NTEwEqgPo4cOHcXd3B6prFJ944gmCgoLYtm0bU6ZMoW/fvuZfGIWFhRw9epRz586h1Wq59dZbiY+PZ+rUqXz77bf89a9/ZefOnQwYMIDXX3+dkSNHcubMGVQqlUV5jUYjkyZNYvPmzSiVShYsWMDdd9/NyZMnGT9+PE899ZRV82tt+fn53HbbbSxZsoRZs2Zx6NAhxowZQ2xsLIMGDQLg888/59133+Xll19m06ZNzJgxg9GjR+Pn59fg769oHvkVWfzr5CMYsW4qdMGVx7u8jto9pO4LmUyg19uvTYswwn0Ozv/mG9vNokpldcCLiMAYHk5BUBB5KhWekZFEdu1qrlWrCg5m0ZIlnPMrowspdm+z4f336eet4dZbbzW/l5SUxHPPPVfnI5aUlFBRUWH+vxxbFsrG167DJbDK6lhjrpJbx4Vavd9cWkyoW7NmDVDdAbi2devWMW3aNADS0tLQarVOLpkQojFlZ2cDEBkZabUvMjKSqqoqcnNziYqKIi8vD39//wbfw9/fn7w6OkBrNBoUikufvletWsX06dNxc3Njy5Yt9O/fn61bt3L//fczcuTIOu+5ZMkSi+bcyZMnm7+eOHEizz//PIcOHTKHOqPRyIoVK/D29qZLly7Mnj2bjRs3MnXqVDZs2MC9995rns5p7ty5rFmzhp07dzJp0iSrZ50wYYL59bJly3jllVdITU011xo6snPnTkJCQpgzZw4Aw4YNY9KkSbz77rvmUNenTx9zCJ8yZQoPPvggp0+f5oYbbqjz+qJlOJp+zmagAzBi4GjaGW72MtkeTHD5Vlpq9z5Fdw0BHDSL9h8IN4xj/blz/C8jgzyDgdzycvKKi8nNzSXv/Hnyjx4111o/8sgjvFbrg50SeOWVV4gaNJCOYwPsjn6tzDRa/Qyw193Cz88PtVqNWq0mICAAtVpNeXm5OdQBkOSJMcnuY7UYLSbU1W52sGf9+vUO9y9dupSlS5c2ToGEEE2ipn9camoq8fGWUw6kpqaiVCrNUxkFBARc0XySer2+zhr7pKQkuz/kO3bsyPDhw/n000/5+uuv63XP2NhYi9erVq3i7bffJiUlBYVCQVFRkTnQAnh6elr029FoNOh0OqC6v9/lH3DbtWtHSop1zURpaSmPP/44u3btIjc3FxeX6l412dnZ9Qp1KSkpxMXFWbwXHx/P/v37za/Dwy81dSkUCry8vCgsLKzz2qJuTb5SQWUlZGSQcep3CLN/WMbjj8OH31u9bwKKgVyqTzcPNfT350hAAO8bjeS4upLr4kKO0YjRL5jhDoqT37MfjJrMZxMnsnXXrjqLb+vDWWBgIKW/69mz6xbcfayDakWxK109k4iIiLB4v2vXrnzxxRfm4BYQEIBKpaqzD6yvtztUGUFpo8dalbF6fwvRYkKdEOLa0KlTJzQaDVu2bLEa7LBlyxYGDRpk7nLRq1cvTp482eBBTydOnODhhx++4jJ++OGHfP/994wZM4aHH36YDz/80Lyvdu1ebTVhCuDAgQMsXbqUr7/+mt69e+Pi4kKvXr0sPryWlZWRmZlpDnZardYcwqKjo83NujUSExNtDh7717/+xZEjRzhw4ADR0dHk5+cTEBBgvlftctli614XLlxwOFBNNI6rWqmgpKR+tWrZ2WAy1Tmw4FMXN/YAue7u1SFNoSDXaCS3ooKKqupmx8Nvv80Nw4dXN4V6e3N6yxZeuqzm+Lobu1Ir+lkpL6vuFxcQEGDxvkKhICAgwLwFBgYSEBDAgAEDrK7x8ccf89uPOtbvOoXRRiBzN5j426yHGDLEsibZ39/fojm2vgIDfHD57ldwtxGZKgwEBkxs8DWbioQ6IYRTKRQKVq1axZQpUwgPD2fChAkYDAbeeust3n//fb766ivzsWPHjmXv3r0WAa2iogKj0YjRaMRgMFBWVoarq6v503ZSUhLZ2dl1rkRjj1arZebMmWzZsoWbbrqJ3r17s3btWmbOnAlAWFgY586dcziliV6vx9XVlZCQEIxGI+vXr+fXX3+1OMbFxYVFixbx2muvodVqef31180tDffeey9jx47l3nvv5cYbb2TNmjXk5OQwevRom/fy9PQkICCAoqIinnrqKYv9YWFhJCUlUVVVhVKptDp/9OjRPProo7zxxhvMnDmT7777js2bN7N7t/0pHETjqHNQwYHPGJTyue2wdlkN9m7gNJADZF/8s/bXgUpv/uSgLD8pvfkNoKKierMhNzYW2rc3vw4KCrI6pjKjlCqjp91m0SDUQPWApBkzZpjDm7+/f50fQGr0798fU+EvKD/8HaWTas8U5ZVQXtmo12wKEuqEEE53xx138OGHH7J8+XIee+wxXFxcGDBgAHv37qVfv37m46ZMmcLy5cvJyckx/wIZMWKEeWTrt99+y/z581myZIk5EG3YsIFp06bVuWb05TVRo0aN4v3332fy5MlMnz6dESNGANW1hyNGjGDIkCF07dqV5cuX8+ijjzJjxgwWLFjAxInWn9Jvu+027rzzTq677jo8PDyYMmWKuX9aDT8/P3r16kV8fDxGo5GZM2cydepUoLpf26uvvsoDDzxAWloaPXr0YPfu3Tabi+fNm8ekSZMICwsjODiY5cuXm/soA9x1111s3ryZ4OBgTCYT+fn5FucHBASwe/du5s6dy6JFi4iMjGTNmjUMHjzY4fevrWvUZlGjEbKyrGrUilwywTqnm+3+6L98ve1bq4AWDRwG8PKqrjULD2fV2bPsycy0e60ArAN9bS6X7ffx8SEwMJDAwECCgoIIDAy0+vfXr18/9u3bZ94fEBDAwT2/8exr/3UwqKB6wv/2tcLhlXBm7Zkq2A83Tzcqy6xDnZunG6rgljNgSGGqT2e2Nkqv16NSqSgoKLiizthCiKaXkJBAfn5+vVY/KCwspHfv3nz33XeEhNRjJF8z+eabbxg/frxVwBItg6Nm0SqjgrHBF5tFKyutmj2rdDrSzp0jOyWFrPR0srOyyCooINtkIhvIAvOfd04ciWGR/bkUP0ko4bf3P7d6PzI0FN3p0+Dvb55fbdKkSRZT0dRwc3MjKCiI2D8O5w+PV9h9ppKDQ3lo+B/NQe5KJ+r/6r9HePaVPXb3L370Vm4Ze/UDbM4cPc/DfRfY3f/G4RV07NN4679marMoyLbuR6oK9iM0tnF/1lxNNpGaOiFEi7Zo0aJ6H+vn58fZs2ebsDSiuTX5wALghPYsSl/7zaLr/vEkH73/DdllZfwZGFdrfzpQ38UnR8TF44X1s9S4vPbM29uboKCg6r6Xl01t89BDDzFmzBiCgoIIDg4mKCiIoKAg/Pz8UCgU/N+2r3jl7H483KwHFpRXuvJoaA+6d+9ez5Lb56xBBc6uPQuNDWn08NYUJNQJIYRoFa5qYIHJhCkvj8KzZ8k8eZKsc+fITEoiU6fDu6iIyR4e5tq2/DEDwUEN2vdlJn4rq17vM1qhYFxUlHketeDQUHj77TqfxcvLC0NcO3AQ6oYPH87Ghc+ZA1rNACJbhg0b5vB+8Z5q/Dd6YvC2HujjX2Iifoq6zjLXR7uO4XgcPUWljUZAN4WCdh0fbJT7hMaGsP7ky06rPWstJNQJIYSTDR8+XJper8CJtESUHvZr0H458BWDSn40h7NPjhzhzZMnySwpIbOigiyg3Ma5PYDJtV6XN6D/WfaMGbB2rfm1B3BPcTG+vr6EhIQQHBxs809vb2/WbP+YJOP3dptEu4Z2pGfPng7LUl++3u54ZJvwUNoYvV1larQatNDYEN79+SWnhK3WUnvmTBLqhBBCXJX393/J2RzrOfQ6BEUzcegfr+yiFRWQnk7BmTNs3LqVjJQUfm2npttD9k/RffIZ1OqDlgZ8Vo9bZfr6VgezmrVAj+/H0QLuAwcN5PWHFxISEmIxh1+NzZs31+Ou0Mk1hm0OVyqob0Nu3ZxVgwYStpqThDohhBBX7P39X3Lcfw1KtXVYOG5UwH6YOPSP5OTkkJ6eTkZiIhmnT5Nx/jwZyclkpKWRkZ1NZkEBGcXFPBkQwOyKCsjJAaAEmHPxetdNHE03B3OgFfn6w223mcNZaEYGvPMOSqWS4IAAQsPDCQ0LIyQkhNDQUEJDQy8Fs9tvv3ShE985fOboqCiGDBnS0G+VFV9vdzjvjjGp6aflcGYNmmg+EuqEEKKNapIatItMJhN5eXkcPX8Ctz72m0TPfvoB/GM5o/73P34st9X4aSklLe3SCzc3gsPCqhdzrwf3wUNg6hzz61GlpWSvWEFAQEC950ADCEJNklFR51xrV8uZtWcgNWjXAgl1QgjRBtW3Bu1y5eXlZGRkkJaWRu/rr8e9oMDcR23rJ5+wctcu0vPzSS8pocJo5LqJoxnbx8H0F8nJsH+/oxWqAHBRKAjx88PtT3+ChQura9sCA3FzcWHzli0EBgbyue53YL/da/j5W4549PLycji4wJ4+/u3Z9nIPXEKMVvuMWS7cce/VzbFWQ2rPRGOTUCeEEE7mjDmvzuak2Ax0UF2DtvOb3fz45r9JT0khLSOD9Nxc0vV68mqtJnBaoaBjrVokPfBDQwvSsxeMm8IfDx4kSKcjLDaWsJgYwsLDCQsLM29BQUE2V7wAuOeeewA4v72UJOO3zqlB255oswbNQ6Gg3TLrfnRXSmrPRGOSUCeEEE6Uqc1iypRFGKOsmwNddEY2bkyo9y95k8lETk4OqamppKWlkXr+PKlnzpCWmMi5CB/6OKhQ+un3k/zyvuMF1dNNJjoqFBAaChERRCiVKI4cIcTHh3C1mvDgYNzDwwHrRdfNOneEOybymI2VNxpKatCEcExCnRBC4LwZ43f++j96v5xnt7Zp56//Y1rMmEthLTWVqvx8RvfoYbFywbi1a/ksMZEKo3XAgepBBX0cDCq4nJerKxF+fkQEBREeGkp4dDRBf/0rDB4MF9fVHVlZSTnVqxTUeGb7ekrZ0bBvwhWSGjQhHGsxoW7//v28+OKLHDlyhLS0NLZv38748eMdnlNeXs7TTz/Ne++9R3p6OtHR0SxevJj777/fOYUWQrQJmdosJoz+O2UBblb7PPMq2brrmUb7Ba8rz3a4iPvaLf/HrLHjLMJaR6yXCHUBbC+7Xj8DbrqJ1x9eSHh4OOHh4fj6+qJQ2JjDrJbaYa5Gh6BojjsYVNAhKNrq/SslNWhCONZiQl1xcTE9e/Zk+vTp3HnnnfU65+677yYjI4N33nmHDh06kJmZicFgvQSKEKL1ckYN2hc//U720nCbSygVVbryxU+/c28d9zIYDKSlpaE7fx7diRPoTp9Gl5iITqdDl5mJLi+PXb16Qbdo+Kv96xQbDFa1b6kAgYGX5lGLiKDrmTNc0GqJDA0lIjKSSI2GiA4diIyPJzIykk9OHwHsr8EZExvTKNNyTBz6R9hPk42yvZzUoAlhX4sJdaNGjWLUqFH1Pv6zzz5j3759nD9/nsDAQADi4uKaqHRCiOaQqc1i6vVP2J3y4d2fX2qUX/BJ5amM6fCr3dqms7914MSPP6L79VciFQq6e3peWlIqKYmuH39MRkUFtuvfLknevx8iR4ODZlEPpZLro6IuhbV27Yjo0AHjnDkW03I8d3Gz53yZnuPGL51Sg9bYwU0IcWVaTKhrqB07dtC3b19eeOEFNm7ciI+PD7fffjvLly+3O4S9vLyc8lrzJOn1emcVV4g2xxk1aBfOpFN+R5zNjvHlWS5cOJN+dfcymSAnB1NRhsMm0Y8+fZ9lFwcV/A1YWWu/CsiFOgOdn4cH+hkzoFsU8KPd48bd+Wf+/t7V91Fzdg2aEKL5tdpQd/78eQ4cOICnpyfbt28nOzubhx9+mNzcXP7973/bPCchIYFly5Y5uaRCOI+zOvs7qwbtqP4c/R+zX4N29EJvbsTGAu4GA8b0dLJOnCDlxAlSzpwhOTGRlNRUUrKzMZWWssnbG9LTobISJo4GR3Ot1ZLi6ws33GBuBlVERNBn7VqqlEqioqKIateOqPh4oqKjq19f3Pz8qudQO717E6UOQp2Hp3W/tSslwU2Ia0urDXVGoxGFQsGmTZtQqVQArFy5kr/85S+8/vrrNmvrFi1axLx588yv9Xo9MTGNt7aeEM0pU5vFtC6PUVlWabXPzdON9SdfbtwatD6dQWk9LUd5lfHqa9AuyiHfYQ1a5qkfYfGP1eEsLY19Z87wj6QkUior0WF/IIEnYMrJwTwswMNxoAsNCmLKPfcQpdHQr18/+POfLfZ/N39+vZ+pW2wHvq20P7CgW2yHel9LCCFqa7WhLiIigqioKHOgA+jatSsmk4mUlBQ6duxodY6HhwcedfzwFqIpOKMGrSC7kAoT4Gf9gaaiwkBBdmGj3auopALiK+wuRF5U0oBxmSYT6PXmYGZKTSX33Dm0Z86QqnYhwMHUYzk/HYdac61VAN/W45ZlQO4XXxDUpQuEheHx1TZK+dDu8SPHjGT+qMn1fSKHxnS/EX57kvN5qVb74gMiq/cLIcQVaLWhbtCgQWzbto2ioiJ8fX0BOH36NC4uLkRHN14HYCGulrNq0HLzijEO6GGz9owqI7l5xVd9jxqnDcn0n/2L3dqm0xd6cYuxd/Wi7LXmViMtjWKtluTz50nW6dBmZBCt1zOy1ioGJiAKKKd6rrWxDgYVlAQGwOzZEB4OERFEV1bCrFkEqNXExMYSHR1NdHQ0MTEx5q9rtpqfGwAdYyP40TqfWuxvTBLchBBNocWEuqKiIs6ePWt+feHCBY4fP05gYCCxsbEsWrQInU7Hhg0bAJg0aRLLly9n+vTpLFu2jOzsbObPn8/9999/RWv9iWtTW6pBa9TaM0cqK8kpSXPYLJrz3/f49q6/cKiqimRAC+Y/cy87/i/ASAB/f4iIwCUigujDhzlXVIQRB0kL8O7dE2ZcavrsVFVF0b334uPj06BHGt7xOo6cdMWI9ZQmLrgyvKONfntCCNHCtJhQd/jwYf7whz+YX9f0fZs6dSrr168nLS0NrVZr3u/r68uePXuYM2cOffv2JSgoiLvvvptnnnnG6WUXrVNbq0GrV+0ZN9i/QEmJZa3axebQms2Umkp+airanBxSJ44m4DoHXRlKS/mwqoqX61Fubc+ecOgQeHub37tzwQJyc3Op6hECnLR77nU9u1i8ViqVDQ50AGr3EB7v8jrFBusR8T6u/qjdZV40IUTL12JC3fDhwzHZGElXY/369VbvdenShT177E+uKVonZ43gdGoNmq1AB6B0abQatLoGFeRknoFNm6yaQ2s2g16PEXCvdd5JYB7VNWxaoOZvpTtVjHNQFo/RtxHb8QZYvtz8nqurq7kpNDY21vxnp06dLAIdwIoVKwA4mPIL/81ean9QQUSc429KA6jdQyS8CSFatRYT6oQA547gdGYfNDRldptFr4jRCFlZFrVqHlmnKXUwqMDlm6/47f3PzQEt6bI/dcDbbm5Mi4m5NF2Hhwe7N22yulZFVQngbfV+DXWXOIb2H0HMddeZw1tYWBhKZcOed1D0dcBStIXpVvti/cIv7hdCCAES6kQDOKv/ma1AB1BZVtn4IzidUIPWoGbRigrIyLBbm2beMjKg6lJINAGmibfAbf52y7EBA4vrKKt28WJYssT8Ora0FDZtwsPDg9jYWGJjY9FoNLj0CQVO2b2Or68nnTt3pnPnznXcsW6Doq9jkK256IQQQliQUNcGOCNsObMGzeThBu42/mlWNMG6vo1dg2ZDkWexw2bRogM7YMk/q8Nadrbd62QDv1Fds2be3NxIUijQGgzEVlVwl4NyGKvsh9Tg4GBiY2MJDAqyeN/Ly4uMjAxCQkIsFnuvq1k01i/cQUmEEEI0BQl1rZyzwpazatBa3LQcjgYWmEyQn19nrZrnTfHwuP0R2Z6pWkp/+cUc1LQuLiT5+DC/QwdUtZpC1//yC/M/vGwutcpLfydVhjKHzxsTE8FNU6ag0Wgsat1iYmIcDi4IDQ21ek+aRYUQouWRUNdEnNnZ31nNlc6oQXNWkyjUowatJAV273Yc2mqtJWyPZ88wwH6oe0ep4NHabxiNUFjIn99+mz59+pjfjvvgA7g81AE+Pj5oNBqiQ+KoMlbZDalP/+3vjRq2pFlUCCFaFgl1TcCZTZXO0qoHFdSoqLCYpsMz/Xz1LLd2eH76Mbz/VZ2XNalUZIaGkqRSkeTpSZJSSZLBQFJpKWP/8Ad8x90AbLN7fmFJgc33k5KSLEJdz549mTt3LhqNxmILDAw0N40eTPlFas+EEOIaJaGuCTiz9gzaVg2a1jPTYZOoNsvGTPxFRVZzqtnccnIsTvO8awgMDLZbFk9PN+jZE1N4OIrISHMzKBERrNy3j8+PHycpIwNtcjKlZ87YvEZo797cEhwMtv85AOCnUjFw4ECrsNavXz+L4zp27MiqVavsXwipPRNCiGuZhLpWzpk1aOUBJgzeCqv3XUvszy/YUEVeZY6bRI98Ce+8axnWiorqfwM3N/OSUr4d4wHryWZrbA1UkaA/RVVeHkmffWax7+f//pcvvq17ldHk5GRi/cL5Kdv+Au6vL18ptWhCCCGumoS6JuKsEZzOqkFLcytDf3cZHm7W5S+pdCXNzXEnfbOqKsv51S7fNF4w3cH5P/0EW200iXp7W9Sk1d4KVSqSjEZievVCFRcHLtXfr/M73wS+sHurCxfOc+HCBQDKysrw9PQ079NoNBdv621RuxYXF2fxOjw8/OLcbDKoQAghRNOSUNcEnFl75qu2PwFsffbXl967kDHhv9qtbdLn9YOkpLqbQDMzqwcC2OF51xDAQZPoDb2g/xiL0Jbl5kZSTg5JSUmW2/79JCUlkZeXB8D27dsZHx9vvlaUdygnjfZr0PTJuajVajQaDXl5eUREXFrU/dFHH2XOnDkEBQVZTPVhjzSLCiGEaGoS6pqAM0dwBoQHOBxYEBAecHU3KCqCtDSq0s6iVNtvFq1au7pegwoAUCggNNRmrZpveCWw3+6puo5xMG62xXtdg4PJuay/nC1JSUkWr0d1G8Rzk58lvJsGdUAAarUatVpNgFpN99B2nPtqKP7+tifzDbpsPjchhBCiuUmoawLOqj0DOJ532uHAguN5p+nEZRPBmkyQm1t3rVpaGhRX1yp63jUE/u6gBq2qAtzdzf3V7G7h4dWBztXyn97PP//Md999x/90SUR0tP+8hw4esgp1Go3GZqhTKpVER0ebm0I7depksT8sLIzTXx6xfzMhhBCiFZFQ1wQCwgOocgejq3WznIvBdPW1Z7VkVOSg9LRfg5Zx8HNY/75lUEtPr57eo758fPBV2Z+cFsB3weOw9fbqWriLjEYj6enpaLXa6u3rr0lKSkKr1fKf//wHDw8P87EffvghTz/9NMF92/PA0J52Q2rGqRSr98ePH0/fvn0t+rLFxsYSGRmJq6v8ExdCCHFtkN94TSCrqJiiQVW4+1gPKqgodiWrqJhONs6zq7zc/moFIVUwyf6pnt99C9vsjNIMDKy7Vi0iAvz84Pc9ULnG/o28vdGlpvLUU0+h1WpJSkoiJSWFykrbc3mkpKTQvv2l1edjY2MByD58jnceBP+YQLy8vFGpVajVAagD1ER5hfD0/T2srvWPf/zDfrmEEEKIa4SEuiZwpjiRW0cftVvbdKboJgbRHgoL69cEerGjvy2+d/QDou3v79UDOg+zHdhq1ZRdrqKiAp1OR/KxYyQnJ3O08Hc8B9p/5jAfP5RKJRs2bLB/UC1ardYi1A0dOpS1a9eal6+KiYnB19e3XtcSQgghRAsLdW+88QYvvvgiaWlpdO/endWrVzNkyBC7x2/atIkXXniBM2fOoFKpuO2223jppZeavRN7pUeJw7nWKje+AreNM/dXqxd3d9u1aRol8KP98+64A7reavGWwWAgLS2N5ORkKioqGD58uMX+kSNHsmfPHkymS8/gH+7FrP+OwNXdegCIC670CW+Pv2sQ7u7uVFRUEBAQYA5otbeaptHwcMt+fh07dqRjRwed6YQQQgjhUIsJdVu3bmXu3Lm88cYbDBo0iLfeeotRo0Zx4sQJc9NcbQcOHOC+++5j1apVjB07Fp1Ox6xZs5gxYwbbt29vhie4xNfX0+EKAr5ZlwYg4OvruAm0ZgsIsOivZvb7Hqi0H+q+O3SII+98TnJysnlLS0ujqqp6tGynTp04deqUxTleXl4WgQ5An17Km2O/wEvtjlKpJDQ0hD/9aSyzZs3Cx9UftXv1Chm//PIL4eHhdkeNCiGEEKJptJhQt3LlSh544AFmzJgBwOrVq/n8889Zs2YNCQkJVsd///33xMXF8eij1Uuht2vXjoceeogXXnjB7j3Ky8spr7UAu15vfzWBJvXgg7BiU3VYa0ATY0VFBampqeh0OvP2W1EywWPtz7W25c2NZB8+Z/eaycnJmEwmi7nWevbsSXp6OjExMURHRxMTE2OxXZpQ19rlI0yFEEII4RwtItRVVFRw5MgRFi5caPH+iBEjOHTokM1zBg4cyOLFi9m1axejRo0iMzOTDz74gDFjxti9T0JCAsuWLWvUsl+RuDio1dRoMpnQ6/VUVVURGBhofr+kpIQJEyaYA1xmZqbNywXvaM/cpU8QH3+pj9rZM2d4ZflKq0AXEhJiFdIMBgNubm7mY5YtW9Yyvk9CCCGEqLcWEeqys7OpqqoiLCzM4v2wsDDS062XVoLqULdp0yYmTJhAWVkZBoOB22+/nVdffdXufRYtWsS8efPMr/V6PTExMY3zELV4e7g5bH79+ovP2J2wEZ1OR0pKCjqdjuLiYubOnWuxYLuXlxd79uyxqF20JfvwOWJzfbhnzKW+c6mq7riMzyNmzqXwFh0dbbHUlRBCCCHajhYR6mpcvtzS5c2CtZ04cYJHH32Uf/7zn4wcOZK0tDTmz5/PrFmzeOedd2ye4+HhYTE3WlPpEhjLd3r7TaIfvPUe+b9b17rpdDqL1wqFgsjISLRaLREREURFRREdHU1UVJR5q3l9eTiNjIxk8eLFjftgQgghhGixWkSoCw4ORqlUWtXKZWZmWtXe1UhISGDQoEHMnz8fgOuvvx4fHx+GDBnCM888Y7FOp7N1VsczPe5FMsqyANi4cSOfffYZAEVphRaBztfX1xzQrr/+eqtr/fjjj6jVart92IQQQgghoIWEOnd3d2644Qb27NnDHXfcYX5/z549jBs3zuY5JSUlVqsF1ASfy0duNofO6ng6U714fE6HVNw6Gy1q2Gpq2eoaJdrc07MIIYQQonVoEaEOYN68eUyZMoW+ffsyYMAA1q5di1arZdasWUB1fzidTmee3Hbs2LE8+OCDrFmzxtz8OnfuXPr3709kZGRzPoqVO+64wyKsCiGEEEI0thYT6iZMmEBOTg5PP/00aWlp9OjRg127dqHRaABIS0tDq9Waj582bRqFhYW89tprPP7446jVam6++WZWrFjRXI8ghBBCCNFsFKaW0FbZTPR6PSqVioKCApksVwghhBDN7mqyifWaT0IIIYQQotWRUCeEEEII0QZIqBNCCCGEaAMk1AkhhBBCtAES6oQQQggh2gAJdUIIIYQQbYCEOiGEEEKINkBCnRBCCCFEGyChTgghhBCiDZBQJ4QQQgjRBkioE0IIIYRoAyTUCSGEEEK0ARLqhBBCCCHaAAl1QgghhBBtgIQ6IYQQQog2QEKdEEIIIUQbIKFOCCGEEKINcG3uAjSnqqoqAFJSUvD392/m0gghhBDiWqfX64FLGaUhrulQd/bsWQC6d+/ezCURQgghhLjk7Nmz9OvXr0HnKEwmk6mJytPi5eXlERgYSHJycqutqctKzmZW3wUYyiqt9rl6uvHm4RWExAQ3Q8mEEEKIpnHu+AXmDVtid//Kfcto36udE0vUePR6PTExMeTm5hIQENCgc6/pmjqlUgmAv79/qw11GeXZUA6uCjfrneVgLKfVPpsQQghhi6+vn+3fe7X2t/bffTUZpSFkoIQQQgghRBsgoU4IIYQQrYoq2A83T9s1dW6ebqiC/Zxcopbhmm5+FUIIIUTrExobwvqTL1OQXWi1TxXsR2hsSDOUqvlJqBNCCCFEo8nUZjklbIXGhlyz4c0eCXWtXE0VdKWN0a/XchW0EEII58vUZjGty2N2fyetP/myBLEmJKGulZMqaCGEEC1FQXahzUAHUFlWSUF2ofxeakIS6toAZ1VBO6tKXQghhBANJ6FO1ItUqQshhBAtm0xpIuqlPlXqQgghhGg+EuqEEEIIIdoAaX4VQgghrgHO6BctMzI0Lwl1QgghRBvnrH7RMiND82oxza8JCQn069cPPz8/QkNDGT9+PKdOnar3+QcPHsTV1ZVevXo1XSGFEEKIVsiZ/aJDY0Po2CfeapNA1/RaTE3dvn37eOSRR+jXrx8Gg4HFixczYsQITpw4gY+Pj8NzCwoKuO+++7jlllvIyMhwUomvLc6sUpepU4QQQoiGazGh7rPPPrN4vW7dOkJDQzly5AhDhw51eO5DDz3EpEmTUCqVfPzxx01YymuXs6rUZeoUIYQQ4sq0mFB3uYKCAgACAwMdHrdu3TrOnTvHe++9xzPPPOPw2PLycsrLy82v9Xr91Rf0GuKMSY5lNnIhhBDiyrSYPnW1mUwm5s2bx+DBg+nRo4fd486cOcPChQvZtGkTrq5159OEhARUKpV5i4mJacxiCyGawPPPP8+CBQvqdaxer6dDhw5kZ2c3cama1/Dhw1m9evUVnz9r1qx6f0+FEK1Hiwx1s2fP5ueff2bLli12j6mqqmLSpEksW7aMTp061eu6ixYtoqCgwLwlJyc3VpGFEA305ZdfMmTIEHx9fVGpVIwaNYqjR49aHFNQUMDKlSuZP38+AKdPn+aOO+4gPDwctVrNoEGDOHjwoPl4f39/pkyZwrPPPmv3vomJiSgUCnx9fS22uXPn1qvcCoWC48ePN/h5m8vSpUsZP368xXtvvvkmK1asaJ4CCQuZ2izOHD1vtWVqsxr1PjX9om2RqUbqll+Rha7knNWWX9G4f09Xq8U1v86ZM4cdO3awf/9+oqOj7R5XWFjI4cOHOXbsGLNnzwbAaDRiMplwdXXliy++4Oabb7Y4x8PDAw8PjyYtvxCibjt27GDy5MmsXr2a3bt3U1lZydq1axk2bBh79+6lb9++AGzcuJGhQ4cSHBwMQH5+PqNGjWLt2rUEBgby73//m9GjR3Pu3DnzMVOnTqVXr148++yzeHt72y1DSkoKarW60Z/NYDDUq+VACGf2IZapRq5cfkUWq07NxmCy/ntyVbjxt86voXZvGd+/FlNTZzKZmD17Nh999BFff/017dq1c3i8v78/v/zyC8ePHzdvs2bNonPnzhw/fpwbb7zRSSUXrZmzPiWLS0wmE4899hgLFy7kgQcewNfXl4CAABYsWMCECRN44oknzMfu2LHD4sNZ//79mTlzJiEhISiVSh588EGUSiU///yz+Zi4uDiCgoLYt2/fFZXviSeeYNiwYRiNRgA++OADwsPDyczMpH///gAMHDgQX19fnnvuOXPN37p16+jQoQNRUVEAPPnkk2g0Gvz8/OjWrRvbtm0z3+Obb75BrVbz6quvEhERQXh4OEuWLMFkMpmPee+99+jatStqtZrBgwdz7Ngxm+UtKipi3LhxhIaGolKpGDp0KD/99BMAH3/8Mc899xyffvqpuUYSYNq0aRY1k4cPH2bQoEGo1Wq6detm0UqydOlSxo4dy+zZs1Gr1cTGxrJ169Yr+t4KS85efrGtTTVypbVnJpOJwsJCkpOT+eWXX9i/fz87duzg3Xff5eWXX7aqxS426G0GOgCDqZJiQ8vpn99iPk4+8sgjbN68mU8++QQ/Pz/S09MBUKlUeHl5AdXNpzqdjg0bNuDi4mLV3y40NBRPT0+H/fBEy+bsqVNkpK3znT59msTERO655x6rfffccw8jR46ktLQULy8vjh8/zsKFC+1e65dffqGwsJBu3bpZvN+tWzeOHz/OqFGjGly+hIQEBgwYwDPPPMPUqVN56KGH2Lx5M6Ghofzwww8oFAoOHTpknhMzMTERqA6ghw8fxt3dHYCePXvyxBNPEBQUxLZt25gyZQp9+/Y1f2AtLCzk6NGjnDt3Dq1Wy6233kp8fDxTp07l22+/5a9//Ss7d+5kwIABvP7664wcOZIzZ86gUqksyms0Gpk0aRKbN29GqVSyYMEC7r77bk6ePMn48eN56qmnOH78uN2ZAfLz87nttttYsmQJs2bN4tChQ4wZM4bY2FgGDRoEwOeff27+hbdp0yZmzJjB6NGj8fOTJjthLb8iy2bQ8XH1b7QarezSdF458yhVGKx3Vikw7NDw4OSH6dChAxiNUFTEF//9L5Nmzya/sJCqqiq711YqFDz52Wco9HrQ6yHEAG/2bpRyN7UWE+rWrFkDVHcArm3dunVMmzYNgLS0NLRarZNLJpzJmU0EMtK2edQMYoiMjLTaFxkZSVVVFbm5uURFRZGXl4e/v7/N6+Tl5TFx4kSeeuopwsPDLfb5+/uTl5fnsBwajQaFQmF+vWrVKqZPn46bmxtbtmyhf//+bN26lfvvv5+RI0fW+VxLliyxaM6dPHmy+euJEyfy/PPPc+jQIXOoMxqNrFixAm9vb7p06cLs2bPZuHEjU6dOZcOGDdx7773m6Zzmzp3LmjVr2LlzJ5MmTbJ61gkTJphfL1u2jFdeeYXU1FRzraEjO3fuJCQkhDlz5gAwbNgwJk2axLvvvmsOdX369DGH8ClTpvDggw9y+vRpbrjhhjqvL64tDWmqNBqNFBYWkpubS15envnP2l/379ePO8eMgfx8yM/HmJtL4MiReMa48sDWm63uAYDSxLvv/5shr22kQ0UFFBaCyYQ7kFOPZ6gymSj+5ht8zQVXOTq8RWkxoa52s4M969evd7h/6dKlLF26tHEKJJqNM6ZOEc2npu9bamoq8fHxFvtSU1NRKpXmqYwCAgJsTj1UUFDAbbfdxuDBg23+n9fr9XXW2CclJdntU9exY0eGDx/Op59+ytdff12Pp4LY2FiL16tWreLtt98mJSUFhUJBUVGRxahcT09PQkNDza81Gg06nQ6o7u93+Qfcdu3akZKSYnXf0tJSHn/8cXbt2kVubi4uLtW9arKzs+sV6lJSUoiLi7N4Lz4+nv3795tf1w7NCoUCLy8vCgsbt2lQNL2mqkGrqKggLy+PnJwcLuT/jsHXQVPlsYOocz2Y9MwzbP3uO4x1/O6f4eLCnRe7QkB1n7HqM+oOWvmXjYIPViqJN5kIcHVF7e6O2tOTAG9v1D4+qP39CVCrUQcEEBAUhPuNN0JgIKhU4F8MvFXn/VqCFhPqhBDXhk6dOqHRaNiyZQuLFy+22LdlyxYGDRpk7nLRq1cvTp48adGvTq/XM3LkSLp3786bb75pUdtW48SJEzz88MNXXMYPP/yQ77//njFjxvDwww/z4YcfmvfZuh9gDlMABw4cYOnSpXz99df07t0bFxcXevXqZfHhtaysjMzMTHOw02q15hAWHR1tbtatkZiYaHPw2L/+9S+OHDnCgQMHiI6OJj8/n4CAAPO9apfLFlv3unDhgsOBateCtrayTX1q0LxRmcNZbm6uxZaTmcnsSZOIcHODvDzIzeX93buZ+c47FNaa/zWsi8p+DRrAtGlwsgA3wGj/KLO8mkCnUIBaDWo1fbOycPH1dXje2r/9jQFxA0CjqQ5mKhU9PD05Z+f/r0Ml5+Bsw09rDhLqhHCCtvYL4mooFApWrVrFlClTCA8PZ8KECRgMBt566y3ef/99vvrqK/OxY8eOZe/eveaAVhPoOnXqxNtvv20zYCUlJZGdnV3nSjT2aLVaZs6cyZYtW7jpppvo3bs3a9euZebMmQCEhYVx7tw5h+tM6/V6XF1dCQkJwWg0sn79en799VeLY1xcXFi0aBGvvfYaWq2W119/3VzreO+99zJ27FjuvfdebrzxRtasWUNOTg6jR4+2eS9PT08CAgIoKiriqaeestgfFhZGUlISVVVVKJVKq/NHjx7No48+yhtvvMHMmTP57rvv2Lx5M7t3727gd67tcFZ/W1WwH94aV/CyUbNVeuV9iI1GIwUFBeTk5JCTk0N2dja6knMYOtuvQevTtxsXfnE8v+OYFSuIqPXaA2hwfW1UFHjF0yk/n755eQR4exPo60vAxZqygKAgAkNCCAgLIyA8nJhOnaBXL/D1hYsfUL4CdCXneOPsfLu3ueHeewnxbt/Q0tnk4+qPq8LNbiD2cbXdRaQ5SKgToonJgAxrd9xxBx9++CHLly/nsccew8XFhQEDBrB371769etnPm7KlCksX76cnJwcgoKC2L59O99//z0///wzH330kfm4t956y9yHbcOGDUybNq3ONaMvr4kaNWoU77//PpMnT2b69OmMGDECqK49HDFiBEOGDKFr164sX76cRx99lBkzZrBgwQImTpxode3bbruNO++8k+uuuw4PDw+mTJli7p9Ww8/Pj169ehEfH4/RaGTmzJlMnToVqO7X9uqrr/LAAw+QlpZGjx492L17t83m4nnz5jFp0iTCwsIIDg5m+fLl5j7KAHfddRebN28mODgYk8lEfn6+xfkBAQHs3r2buXPnsmjRIiIjI1mzZg2DBw92+P1ry5zV39Y9HHp+UkWVjTorJVW4h1dPkVNTe5adnU1OTg4uLi6MveUWyMmp3nJzeXjFCvb+/DM5hYXklpRQdVmzZl01aCWVtp+3thyAgIDqLTCQcIWCLidPEuTjQ6CvL4EqFUHXBTu+yI4d4N2excBix0e2GGr3EP7W+bUmH/zRGBSm+nRma6P0ej0qlYqCggK7nbFF2+WssHXm6Hke7mt/9v43Dq+gY594u/uvdQkJCeTn59drstzCwkJ69+7Nd999R0hIy/lBe7lvvvmG8ePHWwUs0TKcOXqeuX96Ele19T5DPqz+9IUr+j9rNBrJy8sjOzub7OxsIrsH8rbWfrTZdt9BzvyUafV+J4WCU5f96r4d+K+De0feFMW0t/rb3f/1vBMoTxYR6OdHUEAAgYGBBIaEEBgWRlBUFIHR0fQaNIjgWv1Abfkp9yf+k7LM7v67o5fQM7Cnw2vUx6n886xLnI/SxTrCVBkVTI97kc7qxvu5mlpcQG55idX7gR7eRPo07kCKq8kmUlMnrlkyGWfrsGjRonof6+fnx9mzraTzi7gizujKUEQe139ixMXGXPXG8ur9UD1IxWQyXZrk2mQiPyWFf73wAlk6HdmZmWRlZ5Odn09WYSE5paUWAwN23NIZVnazvslFxV62V4DIrrmGqysEBUFQEMHZ2fjk5BDs5UWQjw9B/v4EBwQQFBREcFgYlb0DMXHB7r1WvPcuQ8Ovfn7XMoMrVUaF3bBVZmic2FFp9GLnuR54uFpPaVJucOXeWK9GuQ9UB7o/7lpDudF6GhQPFyVfjv5rowe7KyWhTlzTZKStEK1HpjaLB4c9arcP2v/te6VR/j+nGbJx8bS9z8UDHpo7gxPf/kqxwUBCfDwLfX0hOxuys6mqqOCZet7nrJfjFY4io6OJiYIglYrgoCCCQkIICgsjJDoaZs8GP7/qAQTA/1VV8W8bfSZrfHL+G34oesXu/ryS0nqW2jEf18A6wlZgo9wHoMTgTonBvdGuZ09ueYnNQAdQbqwit7xEQp0QovHJgIzWYfjw4dL0egV02Vq6bitHaeP3eFVFObpsrcW/8/LycjIyMsjMzCQzM5OstDQyExPJTE4mKzW1+v3cXGK9vPho2DDIzISsLNLi/WG+/ZoevY8HxYbq0JJ1/rzFvgCqp92o3UvOW6kk2NubED8/gtVqQoKCCA4NxXXSMGCv3fvMe3o593S9tR7fGWwOgqmtosLNYQ1aRYXtWsGGyioqdhi2soqKofFynbiMhDoh2ggZkCGaizNWEAA4UZiMMsD2PqU7HNv7X3ofPARZWZCZySsHD/LkZaOObckHOH3a/NoYNgiwH+o8vTzoGhxMiEqFZuBAmDwZQkIgOBiX4GC++O471Go1ISEhBAcH212DeMvve0ivtB/qGpOHQu2wBm1gD3Wj3KewtPyq9tdXVlFx3fuvwfAooU6IJuaspc9khQzRHPIrsvjX749gVFiHBReTK493fd1hsKuoqDDXpGVkZNA+JoZOKhVkZEBGBim//86ol14iQ68n6LZ+/HlpkN1rJe/bC9svTZrsuEv/xTIqFODvD/PmQWgohITg650L2J/SZcGyv3PPf+zXoN1yyy31uDO4Krwd1p65KmyHwSvlrOZKZ3BWeITWFSAl1AnRxNrqgAxp6hUA3/x2HKPSxvqbgFFh4JvfjjO+00DeWrWK3376iYy0NDKyssjIzSWjsJC8cstfvs9gOdWFL1BT12Y/zlUrCw6Cv/zFHM46Fxdz57ffEhoeTkhkJKEaDaFxcYSEhREaGkpoaCgBAQHWTZe/74G6Z/i4as6qPQPwd/WsbhO2NRe18eJ+uY9NzgyQV0tCnRBO0NYGZDizqVfC45V7f/+XnM2xXlqsQ1A0E4f+scHXKygo4MKFC6Snp5OenEzamTMcJZ9O99o/58yLK2HLCDYD++0fZpYJ4OZWHczCwlCFhqL66ivUXl6EqRxXh/iNuR3GTTO/vgn4oB73vJyzatD8XT0pqbBTe9bIwSTU0xeP3z0x2fitrzBA6FDHKzRcq/cB5wbIqyWhTgjRYM5q6m2r4dEZ93p//5cc91+DUm0dTI4bFbAfJg79I0VFRaSlpVUHtdRU0s+fJ/3CBdK0Wl4aN47AoiJIT4e0NN7+4QeeOHfO4lrXTRxNJ+yP4iw3Vf8mDHNxgVprePq6uRHq40OYWk1YSAhh4eGExcQw6Oab4c9/No/qVAB5JhMKhYIXd28inw9t3QYAN/fG6ewf4hbOzl974OFmowat0pXbeofbOKvhOgWF4HvGhwqsR1a6o6TTqMb7d6f28cLD5EZFqY17uSpR+zTeFCCKShcUTqjpdNZ9nBkgr5aEOiFEi9VWw2NT38toNPKr7qzNQAegdDHxyjuvM+OWUeZRnLY89vnnFl2FrijKjB4Fa9/nHxcuMK+khLCLTZ91rfhRW81ycD4+QeQ4qEHz8amrgbZ+Ak2eVB33o9jdehk6RYWJwF6NUzMTqfZn96P3k19sPZ2I2seLSHXjTYofqfZn5+PTmvxeah8v3F2VVBiaPjw6k7MC5NWSUCdEG+GsARltkTMHmRRkF1LR2wOFxvrTfUVS/e914MABzvz2G6mnT5N64QKpKSmkZWaSmptLWlERXSeMYmx3+zVoRRUVDgMdQHrv3vTs3h0iIiA8nB7l5cw4cIAIjYbw+HjC27Vjf14icND+RXx9wc+P666/vs5nqkuUZyRrztqvQXsmNvKq7wHgaVIScsyA0dU61LkYTHhOdTx9SENEqv0bNbw1970kPDYvCXVCtBFtdUBGW3Mg/QR9X9fbrW1a/+2ntP/BnbQzZ0i9cIE0nQ61QsG/hw+H1FRIS4PUVP55+jR76whljri7uNA1JITwwEDCw8IIj44mPC6OiA4dqr8OD6d9+/ZQazqOnsD/XXad3z94n0IHtWeKqsbrb9Q1IBT/lzwxeFuHLf8SE12frc941/pRVoCyoulX0czILKCgwDoAqVRehIW2jAltG6othcea67WWANliQt3+/ft58cUXOXLkCGlpaWzfvp3x48c7PKe8vJynn36a9957j/T0dKKjo1m8eDH333+/cwotRAvT1gZkOJN7uMnuWp9Xo7i4GJ1Oh06n48Y+fdDlJqOMtt8s+t9Dn/PL+7ss3o8C+N//LN6LsHO/UG9vItVqQtUqoMxuucb/5U7+vsnRaqH1o/GNYYWD2rMFvjFXfY/aPPIUeOTZ2mMd9Fq6jMwCpk5bS0WljbDgpuTd9TNbbbBzBmfVcjozQF6tFhPqiouL6dmzJ9OnT+fOO++s1zl33303GRkZvPPOO3To0IHMzEwMV/HJVQhRP22tqbeIPK7bYbSzUsGltT5tKS8v5/PPPkN37hy6U6fQJSZWh7isLHT5+RRUVJiPPQowcTRc73h5qMtlKBQY58zBJSoKIiMhIoL7zp9nsF5PZPv2RERGEhkZSVhYGG5u1YMFntm+nlJ2NOg+V+LWPj34v8cOUuZhtNoXWO7CrS/3aLR7qVReuLsp7YYglarl1JjUR0FBqc1nAaiorKKgoFRCXQvhzGbyq9FiQt2oUaMYNWpUvY//7LPP2LdvH+fPnycwsLorb1xcXBOVTghRm7Oaep0VHk8W61Da+d2pdIe3P9yA64oX0Gm1jImPZ3pMDOh0oNNRlZzMuLNn63UfHZhHddrTLT6eWS++aBXWXNwtE+fIOia47RAUzXEHzaIdgqLrVea6hIWq+M/LDzmlCTEsVMW762e2ueZKIRpLiwl1DbVjxw769u3LCy+8wMaNG/Hx8eH2229n+fLleHnZ/rRWXl5Oea2JLvV662VthBD144ym3tDYEF45sYTs3AyrfcGBYVd0/+LiYrKzs9FoNFBeDjodmUnnwUE//q9//4WT26qXcwr6/num19rnDai5uNRULZ5KJVH+/kQFBxMVEUGURoPm/vv5vURHqYNpOW4YfBMPj5rc4Oe63MShf4T9NOo8dfaEhaqcFqicca+2ViMorh2tNtSdP3+eAwcO4Onpyfbt28nOzubhhx8mNzeXf//73zbPSUhIYNmyZU4uqRDiSuVXZLGx8J8YXK1r6lwL3fhbxWsWS1CVlpaSmJhISkoKyefPk/L776ScO0eKVktyRgYp+fnkl5cT4eZGqlpdvUYo4DLxFrjeftOKSXlp1tGU8HC4+26IijJvz37zDR5hYUS1a0dUVBRRUVEEBASYp+Ko7ZsD2x0+s6df4y0N1ZjB7VrSVmsE2+KgDGGp1YY6o9GIQqFg06ZNqFTV/xhXrlzJX/7yF15//XWbtXWLFi1i3rx55td6vZ6YmMbtxCuEaDzFBj0Gk+2pRgymSs7u+oC+RX6QkgLJyfz3f/9jwpEjdV43vbKSyqws3AA8PUGtAuyPdBw5YgTvzF5GVFQUERER4GHZJ+7h4cPr/UzxAZHoKu03i8YHNM60HOLqOLP20RlkUMa1odWGuoiICKKiosyBDqBr166YTCZSUlLo2LGj1TkeHh54eDSsg7IQwrb8iiyKDdZdGHxc/R0u4F4XY2Ulz//972hPnUIXUML1f7M/W/v+V1+m79enzK8d9RJzd3Eh2t+f6JAQYqKiKFm+HFXXrhAYCAc/BjbaPbdDx44MGjSo4Q9jw5juN8JvT3I+L9VqX3xAZPV+cU1wZjOvDMq4NrTaUDdo0CC2bdtGUVERvr7VP/RPnz6Ni4sL0dGN0wFYCGFbfkUWq07NtlmL5qpw42+dLzWLGo1G0tPTSU5OJlmrRXvqFMmnTpF8/jxanY4/hIezon170GpBq8VFp+NfVVXkAvF39ON67Ie6pKhIuCUaoqu3eH9/7v3sM6LbtSOmSxeiO3UiOiaG6OhoQkJCbDaHAiiNXg7X+lQaG7cPlQQ3AW23mVc0nxYT6oqKijhbawTZhQsXOH78OIGBgcTGxrJo0SJ0Oh0bNmwAYNKkSSxfvpzp06ezbNkysrOzmT9/Pvfff7/dgRJCiMZRV7No8f/28vrL/+Htr75Cp9dTabSe7qJGUFKS1RxsMUBuPcrR7ZFH4MZLUyCFAxuffLIeZ1py1koFQlyurTXziubVYkLd4cOH+cMf/mB+XdP3berUqaxfv560tDS0Wq15v6+vL3v27GHOnDn07duXoKAg7r77bp555hmnl12ItqqqqorU1FSSkpLQXqxlS/r9d7IMyXReam/6W2DmTEpPFpBYx/UVQHl0NDz2GMTGmrc158/j5unJMVMyiQ6aRf39G2feqJviNASt8qHUxlxrQeUu3PSyplHuI4QQTanFhLrhw4djMtnvqLx+/Xqr97p06cKePXuasFRCtC4N7edWVFSEVqutDm1JSQzp1o1unp6QlASJifzwv/8x8EPr6Tcib4qis901DSC7exdiKSDg/HliAgKIDQ8nJjaW2E6diOnWjdiOHYmJiSEqKso8WW5tAyKra8Z+/iHfYbNoaWHjrCIQFqpiq5PmWhNCiKbSYkKdEOLqOOrnpjAq8f+2JylHz6E9e5ak5GS0mZnkllqGmFeBbrVe26ufcgsOcliWxBee58F2w5hZx0S7dTGUerMzuQcerjaaRQ2uxAc33vQf0gwm2jJnDsqQqVOaj4Q6IVqpyspKkpOTzTVtF/J+w3Cz7X5uJpcqVr7xEhknCxxeUwvVc69pNKDREB4byx2ff06MRkNsp07EXncdms6dOY6OJAfNoiXllXYHJTREmJcvJRXulBhsrN9lrN4vhKibswZlyNQpzUtCnRBO0BjTf3yxezfr33qLpHPnSNLpSM3Pt+iyENZFxQM331yvaykVCqK9vdEEBxMbGYkmPp7Yrl3pP2IE9OtnPs4F+Oj5563OTzp5kPNl9ptFXRWNU4PWNSCU8O0uGLytA6JriYmuz4Y2yn2EuBY4ozZapk5pXhLqhGhijppFXUxKumvHkX4um6TERJJOn0Z74QJJOh0/PvQQcfn5kJgIFy5w4cIFtjgYRapUO661WrToSfrGDUYTH09ERARKpfKKn8lDoWbnOfvNogN7qK/42lb3ylPgkWdrT+P0pxNCiLZCQp0QTcBoNJKRkYFSqaTSt9Du9B9GRRVzn5xts1k06aWXiKv1unb/thA3NzQqFZqwMDSxsWg6d6bqpkiy+c5umXqPuIVB4Y03P1qJwU6zqBBCiGYhoU6IK2AwGEhJSSEpKYmkpCQSExOrv75wgaSLk+pWGAw82bcvj/aPgYfqf20XIMrDg9IhQ2DwYIiLg3btGBwayu9VVcS2a4e3t3Xz5ifnvyG7yH6oyyux7ktzpfxdPcF4sbCXM17c3whkYXUhhKg/CXXimmavr5trlQcFaSUkJSVRUFDAX/7yl+odJhNkZPDnv/yF/x48WOf1kw4fhqIz8JD9vm5/HT6cduO6oOnZE03fvkTFxdmc5sMX6OLgXhUVbg6n/6iosL7mlQo0eeLxmwcmd+smUEWFicB+jRPqZMZ9IYSoPwl14pp1Pv0U/874OyaFdS2QobyKN2/fgz69FF83N+58910UFy7A+fNQWmp3qg8AP0Dj6YlGpaJf584w/TbgR7vHz/jXv4jybn/Vz+PMfm6eJiUhxwwYXa1DnYvBhOfUK++vdzmZakSI1kNq15uXhDrR5phMJjIzM81NozXbQw89RI8ePapr2zIzObLjfUw32R6l5eqhxEvtjj69lKLKSvI+/ZTAmp0uLtwUEECqQlHdp02jQdO5M5pevYgbMAB1+/YoXC61S/6U+xOk2A912WVFRDXSdGvO7OemrABlhf0Jw4UQ1x5n1q7LfHjWJNSJFqeh03+sWLGCs2fPmsObVqulrKzM6rj+339Pj8pKOHcOioqI6KLi+Fb7zaIj/fyI6FQ9EMF19Gjo3h3i4yE2lsnu7kyu5/OUGVwdNouWGRrnv6Gz+rkJIYQjzqhdl/nwbJNQJ1qU/IosVp6aTZWN0aLGShNlH0Wx6tnXqt8oK4MLF3hz5UoSMzPrvLb28OFLLxQKIkIdz3H23DffNEqzaEmZh8Nm0ZGBHld9D4BQT188fvfEZON/tcIAoUNlol4hRNsg8+HZJqFOOJXRaCQzM5OwsDCLFQf+7//+jzVr1lDikcudb/Wxea6Lm4LfvtkFw4dX17bpdGAyEQvmheN9qJ76QwNoXFyIDQxEExWFpkMHutxwA1x/PbRvD3FxeBp1cHZ+kz4vQGFpucNm0cLS8ka5j9rHCw+TGxWlNj65uipR+0hfFiGEaMsk1IlGVVpaSnJysrkZ9PItOTmZ8vJycnNzCQgIqD6poID8X3/l2LFjhHVx/MmqODcXTl649IafHysjIlDExKDp3p3A7t1RdOgAHTpUL3flaILdkkZ44BYkUu3PzsenkV9s3cdE7eNFpNq/0e4lnaGFEKLlkVAn6i23LIPkzEQyMjLIyMigXXw72sW1M/d1O3nyJF27dq3XtbT33UdATg6cOQPZ2cQCSiCijvP+89BDEHKxtq19ewgO5oYrXGO0qELhsK9bUYUCGm+9eKeIVPs3anizR6YaEUKIlqdFhbo33niDF198kbS0NLp3787q1asZMmSI3eM3bdrECy+8wJkzZ1CpVNx222289NJLBAUFObHUbc9XX33F77//TnJyMikpKSQnJ5NTms6f3uiKq4cSPIBYOGkAzoKrwo2/dX6NKD8/h9f1p7pZNBZw+fRTi31/DgujvEMH0gfF8wZF9i8ycyY0Qj83gEqjl8O+bvfGNk5tkzMHMDhzNJhMNSKEEC1Liwl1W7duZe7cubzxxhsMGjSIt956i1GjRnHixAliY2Otjj9w4AD33Xcfq1atYuzYseh0OmbNmsWMGTPYvn17MzxBy2UymSgoKCA5Odlq8/Pz47XXXrM4/umnn2b//v0W74V1UeHq0cPm9Q2mSor/cCNRhy4wEgjkUnirvanCw6ubRTt2vPRnx47Qvj1uNYGw5JxT+rnVcMYUIM4awCCjwYQQ1wrpAmJbiwl1K1eu5IEHHmDGjBkArF69ms8//5w1a9aQkJBgdfz3339PXFwcjz76KADt2rXjoYce4oUXXnBquZubyWRCr9fj4+ODq+ulv87PP/+clStXmsNbUZHt2q/IyEirUBcTFWV1nL9rHf9UcnMB+CwszDq01fRxq6MmD6qnLXFVuNlcK9VV4YaPa+M1LWYVFde9P9DhIfXirAEMMhpMCHGtkC4gtrWIUFdRUcGRI0dYuHChxfsjRozg0KFDNs8ZOHAgixcvZteuXYwaNYrMzEw++OADxowZY/c+5eXllJdfGmmo11vPhdaSmEwm0tLS0Ol06HQ6UlJSzF/Xfk/pZ+Sjndvo0uXSIlKppef5/udv0ac7Xu8zLS2Nyldfxe3cOTh9Gk6fZvr589wCxADRF//MNxh4w9GFNm+G9oPB/+pCl9o9hL91fq1B89RdqbpGnTbWqFRnDmAQQohrhTO7gLSWiY5bRKjLzs6mqqqKsLAwi/fDwsJIT0+3ec7AgQPZtGkTEyZMoKysDIPBwO23386rr75q9z4JCQksW7asUct+pUpLS62C2vXXX89tt91mcUyUjVqz2vzDvZi141a+dn2Hr8/W2hEPs3bcyrq79qM2+hHj60uMqysxlZXEFBYSk5lZ/bXJhNvF2s4atwD4+kKnTuYt//oQ4Gv7BencGbwbJ5yUVLqTV249QkHh4Y7aOYslNDpnDWAQQgjRuFpT15YWEepqKC4bxWgymazeq3HixAkeffRR/vnPfzJy5EjS0tKYP38+s2bN4p133rF5zqJFi5g3b575tV6vJyYmpvEewI4NGzawf/9+iwCXl5dnddyDDz5oEeq8vb0JCAiweSyAj48PXXt1qB68YIOrh5JjXiaiTibbLpibW/UI0lrhzbyFh0Pt733JOTjrINQ1ktTiAv64aw3lRuv/PB4uSr4c/VcifRrnP4+swCCEEKIuralrS4sIdcHBwSiVSqtauZpJam1JSEhg0KBBzJ9f3an++uuvx8fHhyFDhvDMM88QEWE9OYaHhwceHo0ze39DfPXVV2zYsKHO43Q6ndV7kydPxmAwEB0VRZSPD1GVlUQVFhKVmYn/hQuklic7bhYFiImprkm7PLhpNFBXX7mLnNXXLbe8xGagAyg3VpFbXtJooU5WYBBCCNGWtIhQ5+7uzg033MCePXu44447zO/v2bOHcePG2TynpKTEYmAAgPLiRLMmU/MvMl57/dKoHkHmSXUNxSb8XYOIiooiOjqaqKgo89apUycoKameu+3kSTh1ildzc6u/Pn0abA126KICHMwNd/AgBHa/6udxZl83Z1JUuqCwzqmtkowGE0KIa1uLCHUA8+bNY8qUKfTt25cBAwawdu1atFots2bNAqqbTnU6nbnGa+zYsTz44IOsWbPG3Pw6d+5c+vfvT2RkZHM+CvkVWaw6Ndtcq6UYCQ+MrF443lXhxt86vYo6qwJOnTKHNz77rPprrdb+hZXK6gXlO3eGLl2q/+yqBjbbP8ez8ZoQ1e4hrTa82aL28cLdVUmFoW0sqyWjwYQQ4trWYkLdhAkTyMnJ4emnnyYtLY0ePXqwa9cuNBoNUD1KU1sr8EybNo3CwkJee+01Hn/8cdRqNTfffDMrVqxorkcwKzbobTZTwsU53Qb2Qn00zf4FAgIuhbbaAa59e3C/bKRAyTk46yDUtTLOmmYE2uaoVJkQWAghrl0tJtQBPPzwwzz88MM2961fv97qvTlz5jBnzpwmLlUTKCm5VOtmK7wFB1sOUnDAmfO6pRYXkFtuvWBqoId3o/Vzc9Y0IzVkVKoQQghHWlPXlhYV6q4ZH34AHYZa17pdAWf1dXPWqNS2OiK1tcxxJIQQwlJr6toioa45xLVrlEBXwxl93Zw1KrUtjkhtTXMcCSGEsNZaurZIqBMtTlsakQqta44jIYQQrZetRi5xlWr6udnS2P3chBBCCCFAauqaRFud080Z2to0I0IIIYSzSKhrIm1tTjdnTTXSFqcZEUIIIZxBQl0b4IypRhSVCoejUhWV9ZuCpT5kmhEhhBCi4STUtXLOmmqkLY5KdZbWNMeREEKI1ktCXSvnrKlGoO2NSnWW1jTHkRBCiNZLQp0QTtBa5jgSQgjResmUJkIIIYQQbYCEOlEvNVON2CJTjQghhBDNT5pfRb3IVCNCCCFEyyahrok4Y5oRgMpyo8OpRirLjY12r7Y41UhGZoEMYBBCCNEmSKhrAs6aZgTAw+jqcKoRj6HyV2xPRmYBU6ettTvVyLvrZ0qwE0II0WpIn7omUJ9pRhqTotIFl1LrTVEpf72OFBSU2gx0ABWVVTZr8IQQQoiWSn7rCyGEEEK0ARLqhBBCCCHagGu6w1VVVXXTW0pKCv7+jTcAICMvE0NOgf39ujTUJbab/RoqPT2LCn2+/f1pqfibZBkIW9LTsygrs//3lJ6ehreXwYklEkIIca3T6/XApYzSEAqTyWRq7AK1Fj/++CP9+/dv7mIIIYQQQlj44Ycf6NevX4POuaZDXV5eHoGBgSQnJzdqTZ0QzeFkaib3rd1md/+GmXfRJTLUiSUSQrQkafl6CkrKrN5XeXsS0camq2rN9Ho9MTEx5ObmEhAQ0KBzr+nmV6WyeoUEf39/CXWi1fMtLEXp4Wl/v5+f/DsX4hqVmq9n4v99RIXBxhROrkp2Pj6tzc1D2trVZJSGkIESQgghRBuXX1xqM9ABVBiqbK4WJFofCXVCtBGyPq8QQlzbrunmVyHaElmfV4jG46ylHoVoTBLqhGhD2uL6vEI4mzOXehSiMUnzqxBCCFGLs5d6FKKxSKgTQggh2jjpc3ttkOZXIYQQoo2TPrfXBgl1QgghxDVA+ty2fdL8KoQQQgjRBkioE0IIIWoJ9PDGw8V2/zMPFyWBHt5OLpEQ9SPNr0KIFk3mCxPOFumj4svRf3XKv7v8iiyKDXqr931c/VG7hzTafcS1QUKdEKLFkvnCRHOJ9FE1+b+t/IosVp2ajcFUabXPVeHG3zq/JsFONEiLaX5NSEigX79++Pn5ERoayvjx4zl16lS9zz948CCurq706tWr6QophHAqmS9MtGXFBr3NQAdgMFXarMETwpEWE+r27dvHI488wvfff8+ePXswGAyMGDGC4uLiOs8tKCjgvvvu45ZbbnFCSYUQQgghWp4W0/z62WefWbxet24doaGhHDlyhKFDhzo896GHHmLSpEkolUo+/vjjJiylEEIIIUTL1GJq6i5XUFAAQGBgoMPj1q1bx7lz51iyZEmd1ywvL0ev11tsQgghhBBtQYsMdSaTiXnz5jF48GB69Ohh97gzZ86wcOFCNm3ahKtr3ZWOCQkJqFQq8xYTE9OYxRZCNIH8T/aRs+nzeh2r1+vp0KED2dnZTVyq5jV8+HBWr159xefPmjWLBQsWNF6BhBAtQosMdbNnz+bnn39my5Ytdo+pqqpi0qRJLFu2jE6dOtXruosWLaKgoMC8JScnN1aRhWgR8iuy0JWcs9ryK7Kau2hWvvzyS4YMGYKvry8qlYpRo0Zx9OhRi2Ncyyop2HkI9djBVuebUrLoE65h/Pjx5vf8/f2ZMmUKzz77rN37JiYmolAo8PX1tdjmzp1br3IrFAqOHz9er2NbgqVLl1p8jwDefPNNVqxY0TwFEmY+rv4ocbO5T4kbPq6y+oNomBbTp67GnDlz2LFjB/v37yc6OtrucYWFhRw+fJhjx44xe/ZsAIxGIyaTCVdXV7744gtuvvlmi3M8PDzw8PBo0vIL0Vxa0/QIO3bsYPLkyaxevZrdu3dTWVnJ2rVrGTZsGHv37qVv374AfPnRDkb+4RZW3DnH4nyj0cj0MXcQM2CA1bWnTp1Kr169ePbZZ/H2tj9JbEpKCmq1ulGfC8BgMNSr5UCIkhIP9nx6AwrXcqt9JoMHs2I9ULs3Q8FENZMJioshN5dTR49y7vffCXVxoW///vCHPzR36WxqMTV1JpOJ2bNn89FHH/H111/Trl07h8f7+/vzyy+/cPz4cfM2a9YsOnfuzPHjx7nxxhudVHIhWobWMj2CyWTiscceY+HChTzwwAP4+voSEBDAggULmDBhAk888YT52B07djBmxEh6BEZYbHs3fcB1XbvxBxs/WOPi4ggKCmLfvn1XVL4nnniCYcOGYTQaAfjggw8IDw8nMzOT/v37AzBw4EB8fX157rnnzDV/69ato0OHDkRFRQHw5JNPotFo8PPzo1u3bmzbts18j2+++Qa1Ws2rr75KREQE4eHhLFmyBJPJZD7mvffeo2vXrqjVagYPHsyxY8dslreoqIhx48YRGhqKSqVi6NCh/PTTTwB8/PHHPPfcc3z66afmGkmAadOmWdRMHj58mEGDBqFWq+nWrZtFK8nSpUsZO3Yss2fPRq1WExsby9atW6/oeyss5ReXoi90oyDP12rTF7qRX1za3EVsG4xGyMsj/fvv+XDFCt7529/417338vfbbmP2jTcyuUsXxkRHMzAwkG7e3nRyd4fwcPDwAD8/0Gj41x13MOapp3h54UJYubK5n8iuFvNx8pFHHmHz5s188skn+Pn5kZ6eDoBKpcLLywuobj7V6XRs2LABFxcXq/52oaGheHp6OuyHJ4RoXqdPnyYxMZF77rnHat8999zDyJEjKS0txcvLi+PHj7Nw4UKLY7RaLatXr+bHH3/ktddes3mPbt26cfz4cUaNGtXg8iUkJDBgwACeeeYZpk6dykMPPcTmzZsJDQ3lhx9+QKFQcOjQIfOcmImJiUB1AD18+DDu7tVVKz179uSJJ54gKCiIbdu2MWXKFPr27Wv+wFpYWMjRo0c5d+4cWq2WW2+9lfj4eKZOncq3337LX//6V3bu3MmAAQN4/fXXGTlyJGfOnEGlspwQ12g0MmnSJDZv3oxSqWTBggXcfffdnDx5kvHjx/PUU09x/PhxuzMD5Ofnc9ttt7FkyRJmzZrFoUOHGDNmDLGxsQwaNAiAzz//nHfffZeXX36ZTZs2MWPGDEaPHo2fn1+Dv79CNITJZEKhUFS/MBgw5ubyn/feIy8tjbzMTHKzssjLzSUvP5/8oiLyiovJLy8nr6KC7WFh/KGsDPLywGTiKPCXet7XkJFxKSC5u6N2c4PiYvICAqBbt8Z/0EbSYkLdmjVrgOoOwLWtW7eOadOmAZCWloZWq3VyyYQQjalmEENkZKTVvsjISKqqqsjNzSUqKoq8vDz8/S37Fc2aNYulS5cSHBxs9x7+/v7k5eU5LIdGo7n0ywJYtWoV06dPx83NjS1bttC/f3+2bt3K/fffz8iRI+t8riVLllg0506ePNn89cSJE3n++ec5dOiQOdQZjUZWrFiBt7c3Xbp0Yfbs2WzcuJGpU6eyYcMG7r33XvN0TnPnzmXNmjXs3LmTSZMmWT3rhAkTzK+XLVvGK6+8QmpqqrnW0JGdO3cSEhLCnDnVTdzDhg1j0qRJvPvuu+ZQ16dPH3MInzJlCg8++CCnT5/mhhtuqPP6rZUs39V4LIIZgMHA/l27OPXTT+Slp5ObkUFeTg55eXnkFhSQV1xMbkkJeeXlTA8MZJWPD+TmQkEBCmAKYKjHffNSUy1eqz09oazM4Tm+np4E+PtT/NFHqDQaCAwELy9u/fJLvA8epHv37nDXXQ3+HjhLiwl1tZsd7Fm/fr3D/UuXLmXp0qWNUyAhhEOp+XqbzUNqHy8i1fY7eNeEsdTUVOLj4y2vmZqKUqk0T2UUEBBgMfXQ5s2bKSsrY+rUqQ7Lptfr66yxT0pKstunrmPHjgwfPpxPP/2Ur7/+2uF1asTGxlq8XrVqFW+//TYpKSkoFAqKioosRuV6enoSGhpqfq3RaNDpdEB1f7/LP+C2a9eOlJQUq/uWlpby+OOPs2vXLnJzc3Fxqe5Vk52dXa9Ql5KSQlxcnMV78fHx7N+/3/w6PDzc/LVCocDLy4vCwsI6r91atab+qc0p8fx5Dn35JTnJyeReDGe5OTnk5OWRq9eTW1REbmkpKqWSc926QU5OdTjT63kF+LAe98jJzLR4rQACFAqy7GQGN6WSAB8f1H5+uM6ZA7ffXh3MAgJon5fHinffJSAgALVajVqttvharVbb7Q976623cuuttzbsG9QMWkyoE0K0Hqn5esb8az0VBuslvNxdlex8fJrdYNepUyc0Gg1btmxh8eLFFvu2bNnCoEGDzF0uevXqxcmTJ82Dnr744guOHDliDhlFRUUYDAaio6MtAs+JEyd4+OGHr/j5PvzwQ77//nvGjBnDww8/zIcfXvr1Y1HjUEtNmAI4cOAAS5cu5euvv6Z37964uLjQq1cviw+vZWVlZGZmmoOdVqs1h7Do6Ghzs26NxMREm4PH/vWvf3HkyBEOHDhAdHQ0+fn5BAQEmO9Vu1y22LrXhQsXHA5Ua+vq0z+1rYS6iooKvv7qK3LT0shNSSEnNbU6nGVnk5Obaw5nOSUl7O3fn+sNhupwlpPDgdxcptTnHgBHjli852gGWqVCQYC3NwG+voQMGABPPlkdzC6Gs+cvdsEKCAggMDCQgIAA8+bl5WX3/2hYWBhPPvlkfb81rZKEOiHaCB9Xf1wVbnZrFxpzeoT84lKbgQ6gwlBFfnGp3VCnUChYtWoVU6ZMITw8nAkTJmAwGHjrrbd4//33+eqrr8zHjh07lr1795oD2ssvv8zzzz9v3v/SSy/x22+/WdTiJyUlkZ2dXedKNPZotVpmzpzJli1buOmmm+jduzdr165l5syZQPUvhnPnzjlcZ1qv1+Pq6kpISAhGo5H169fz66+/Whzj4uLCokWLeO2119Bqtbz++uvmloZ7772XsWPHcu+993LjjTeyZs0acnJyGD16tM17eXp6EhAQQFFREU899ZTF/rCwMJKSkqiqqkKpVFqdP3r0aB599FHeeOMNZs6cyXfffcfmzZvZvXt3A79zzpFaXGBzzd9AD28ifVQ2zmi51D5euLsq7X44Uvt41fta586dQ6fTkZOVRU5KCtnJyeSkpZGTmUl2djY5+fnk6PU82LEjj0dGmmvNKrKyGJWRUa97ZB84YPHa8dIA1c2dgT4+BPr7Y3z5ZVxCQszhbPLPP9P//HmbwczPz89uMAO4//7761Xea1GjhLqafi+2fmAIIZxD7R7C3zq/1ir6Ad1xxx18+OGHLF++nMceewwXFxcGDBjA3r176devn/m4KVOmsHz5cnJycggKCjJPHF7D19cXDw8PwsLCzO9t2LCBadOm4ePj47AMl9dEjRo1ivfff5/Jkyczffp0RowYAVTXHo4YMYIhQ4bQtWtXli9fzqOPPsqMGTNYsGABEydOtLr2bbfdxp133sl1112Hh4cHU6ZMMfdPq+Hn50evXr2Ij4/HaDQyc+ZMc7PysGHDePXVV3nggQdIS0ujR48e7N6922Zz8bx585g0aRJhYWEEBwezfPlycx9lgLvuuovNmzcTHByMyWQiPz/f4vyAgAB2797N3LlzWbRoEZGRkaxZs4bBg63nBmxuqcUF/HHXGsqN1iHIw0XJl6P/2qqCXaTan52PTzN3Y6isNJCXl0d+fj6GkiIOfr6bbK2WHJ2OnLQ0sjMzycnJIdjNjQ1//GN1MMvOhuxsZh47xtcl1mH3ckn/+5/Fax/ADbBdL1lN7eFBoI8PxmnTYMgQCAqCoCCuKy1l1d69BIWFERgYSFBQEIGBgeaQ5igTDLv5ZoZdNu2YuHoKU306s9lw9uxZPvnkEz755BO+++47/Pz8GD16NOPGjWPUqFHmofMtmV6vR6VSUVBQYNUZWwhh3wldBne9ttnu/m2zJ9EtKszu/oZISEggPz+/XpPlFhYW0rt3b7777jtCQlpOiL3cN998w/jx460ClnDs19w0xu35t939n9x6Pz0CI676Pj9l/sx/0pfa3X93+FJ6hl7v8BpGo5G8vDyysrLIzs4mKzOT7JQUspKSyE5NJTsjg5fGjye0vLw6mGVl8coPP/DYb7/VWb5YIOnyMgHbbBxbm7+7O9NvuIHVU6aYgxmBgaz4z3/wDAggMDycwKAgi3DmqJ+ZaBpXk00a9DeVnJzMmjVr+OSTT9Bqtfzxj3/k/vvvZ/v27aSkpLBjxw6ef/557rvvPoYPH87tt9/OX//61wYVSAghalu0aFG9j/Xz8+Ps2bNNWBrR3LxdK/BwtR77WG5ovOBRWGo9GXBtB//3I7/mHScrMZGb2rfnpshIczBLPX+eXm+8QU5ZGcY66kz+tncvobVeB9WzfLmurjBnTnUoCw6GoCD+dOQIsWlpBEVGEhwTQ1BYGEFBQQQHB5tDWs10O5db0Lt3Pe8sWroG/S84evQo6enpJCQkMGLECDw9Pc37goKC6NmzJ//4xz9ISUlh+/btbN++XUKdEEKIRlFsyGVM+19RuliHpSqjgmJDLlC/mrqysjKysrLIzMzEaDTSr2dPyMqCrCw8kk5TFatAqbRxnyoFS596lqxfLwDwT+CmWvtVQH0X5cvq2xe6dIGQEAgOpmNhIXfs3UtQcDBB4eEER0URFBNDUGioOZwFBQUREBAAlzVt3veX+s7AJtqyBoW6cePGMW7cOKC6maN2qKstOjqaOXPmmOc9EkK0LY3ZwftaNHz4cGl6vQLpRVk2Ax2A0sVEWmEW5qovg4Hvv/iC/378MZk6HZkZGWTl5JBZUEBmURGFlZd6kfVSKjlWdenfsk9YFF8+8gjuHtY1ghXlrhRmXeqXlu3pCXFx5mDmExJC5w8+wNfbm5DAQIKDgwm5GNBCNBqCIyMJCQkhODgYjUYDXpf+r/QHPrqq75C41l1xn7pevXrx2WefWcxf1NpInzohrtyVzlMn2p6DKb+gLUy3ej/WL5xB0ddd1bXLyso4evQoGenp7M/9Be/+P9k9NvodBX/98iRkZkJODq+ZTNSnaiES0EF17VdICCc6dOGuwbfbPf4PhUl0jAghRKOh+3XX0bNnz4Y+lhB2Oa1PXW19+/blxhtv5PPPP6dLly7m948dO8bixYvZtWvXlV5aCNEKRKr9JbwJDqb8wn+zl9qsQfspWwEsNQe7mtG3GRkZZGRkkJmeTkZiIhkXLpCRkkJGejpTrruOv0REVAezjAwytVoG/fwzAHGjejKpf7zVfWpUnTkHJ06YX9saKhPg4UGonx8hKhWhwcGEhIURpdHA0qWgVoOLC+gywMFAoIcXLWq0gUBCNKYrDnVvv/02y5YtY/DgwXz88ceEhoby97//nQ8//JDbb7f/CUcI0Ta0tWWU2tL8ZzUytVkUZFuv/KAK9iM0tnH+jn5LS0TpYb9J9MSXuxiU8wWjXn+dr5OSqDAaHV7vuiNHLNbnrD2QwKh3PGWH/21/gidWQmgohIYyrLKSPb//TkhICKEX+6W5ubnV+UzSvUC0Vlc1XGjJkiW4u7tz6623UlVVxciRI/nxxx/p06dPY5VPCNECtbVllNra/GdQHeimTFmEMcp6RQkXnZGNGxMcBrvy8nLc3NyqV6QwmaCoiG8+/pitH3xAeloa6VlZpOXm4j9mIGMX2g85+Z/vhfc/x8TFlQXqkNGuHYwZA2FhEBaGZ1gYT27bhjoiAkPnAMr40e658ePGgebSPIfhQHg9lkq73OXzx9Um3QtES3bFoS4tLY2EhATefvttunXrxsmTJ5k4caIEOiGuAc5cRskZffdyy0tsBjqAcmMVueUlrS7U7fz1f/R+Oc/uSNHX/ruVzn7+pJ09S/qFC6SnpJCWnk56bi7pBQXklpdz/oYbaJeXB+npUFLC78Cbl13rOpPjZcjKQ8Phnnvo8vvvpKWnExYURFhoKKEREYRpNITFxxMWHU1YWBhhYWHV8wteVpu24mLrz4/a3/kw57DdUakeisabH1W6F4jW6IpDXXx8PF26dGHbtm2MGTOGzz//nLvvvpuUlBQWLFjQmGUUQlyjrmaN2ZZs17GDnMtNsXq/fWA0o3sPsnGGY0ajkezsbNLS0khNTSU1MZGv0k/R7k77zaIfH9jNL+877vucfuQI7Wq9Dvf0hLIy8+tgT09Unh6OCzd8ONwxjdX1exSHovyj2PfejShcreeRMxk8ePThhtfKCdGWXHGoW7duncXyOCNHjmTv3r386U9/IikpiTfeeKNRCiiEuHZdzRqzLdWuYwfZr1iJMsQ6cOmMCjiGOdgZjUZycnIoLCwkPj4eSkshLQ1SU3lixQq+/fln0vLySCsqwnDZRAbXTRxNO+oIXDZ4KZVE+PkRHhCAy4MPwtChEB4OYWEMr6zkx3PniIiIIDQ0FDc3N57Zvp5SdlzZN6OBItX+fPjwLGkWFcKOKw51ttY77NOnD4cOHbK56HRd9u/fz4svvsiRI0dIS0tj+/btjB8/3uE55eXlPP3007z33nukp6cTHR3N4sWLZbFfIdoQL+8yu/OFNSZnrFQAcC43xWagg+oatNfeeJlluydZhLVuHh785uUFtea2Own8cBXl6NIujgeWLye8fXvCIyOJiIggPDzc4WLqAVTPfFBbEGqSjAq7zbxBqK+ilNakWVQI+xr00yozMxMvLy/8/PzsHhMXF8fBgwcBOH36NJ06darXtYuLi+nZsyfTp0/nzjvvrNc5d999NxkZGbzzzjt06NCBzMxMDAbrH8pCiNapuCqXP/7Jfh+q4qrxwNVPLZGsT3G4UkGyPqXea4qWl5eTmpqKTqdDl5yM7tQpdGfPoktKYuXo0ZRVZYODCQKSc/P4Vau1eC+1vBzKLzY5enlBZCSRxcUo0tMJ9fYmQq0mMiSEiMhIIuPiiOzYkZ/cSoHDdu9zfb9+PHbHtHo9kyN9/Nuz7eUeuIRYj2o1Zrlwx73tr/oeQoj6aVCo27dvH1OmTGH48OHm1SUiIyMtjvnf//7HJ598wvbt20lOTqaoqKhe1x41ahSjRo2qd1k+++wz9u3bx/nz5wkMDASqA6UQoun5uPrjqnCzO/rVx7VxalLKTUU2Ax2AUmmi3FS/ny91qawocbhSQWVFCSaTidzcXKB6WURKSkCnQ3/6NPcsXowuMxNdXh7ZtfqcXW72gQOUTxwNt9tvFlUo3VEAId7eRNYKa8YXX8QlOhr8/UGh4F+Fhbzu6Wl3io4Xd28i30Go8/Cse2qP+mjXMRyP7YlU2pjH3kOhoN2yxp2gPiOzgIIC6+ZXlcqLsNDWNZhFiMbWoFB31113cdNNN/HJJ5/w4YcfMnfuXHr27MnYsWPR6XTs2LGDqqoqxowZw/PPP8+IESOaqtzs2LGDvn378sILL7Bx40Z8fHy4/fbbWb58OV5etofXl5eXU15+qYOtXm89x5YQom5q9xD+1vm1NjNPXaCHN9jPYiyfPZcJX/9CWVUVTwYFsaKqytwU6gN8Bjiefa2arm9faN8esB4kUWPsn/7EkQ0f1zmfmqMWE4BusR34ttJ+s2i32A71KHHdQmNDePfnl5p8PjyoDnRTp62lotLGwBk3Je+unynBTlzTGtxZJCYmhtmzZzN79mwKCgr473//y86dO4mMjGTr1q0MGjSoel6jJnb+/HkOHDiAp6cn27dvJzs7m4cffpjc3Fz+/e9/2zwnISGBZcuWNXnZhLgWqN1Dmjy8+Xl5QEEd++tgMBhIS0sjOTmZFK2WlJMnqcjOZuEtt0ByMqSkAJlwr/1rZJYUU3ZxbVBdTs6lHT4+KKOiCE9MJLOykkg/P6ICA4mKiCAqNpaoDh2I6ty5+uuoKGJiYnhx1xYchTovb696TZBblzHdb4TfnuR8XqrVvviAyOr9jSQ0NqRRw5s9BQWlNgMdQEVlFQUFpRLqxDXtqnoAq1Qq7r33Xu6918FPwyZiNBpRKBRs2rQJlar6P/HKlSv5y1/+wuuvv26ztm7RokXMmzfP/Fqv1xMTE+O0MgshGibY16f++6uq+HnvXv799tukJCWRnJpKSm4u6cXFGC9rGvQHFr7++qU3BnWEe3vYvY+3qyvdQ0OJCgmh54AB8Le/QVSUuSn0l9xc1Gp1vT7QRvmGccrBwIIo38Zbfqoxg5sQouVr3GFdThQREUFUVJQ50AF07doVk8lESkoKHTt2tDrHw8MDD4+GD/EXQjifwWAgIyPD4THHZ80i6lxJdW1baiopBgMv1+PaekDfty/+cXEQHQ2d1ID9heL/7913GVxrpYLL1fTrrY9Bcb3ZuOI6XAKta5yMuUruX9C73tcSQojarirUffXVV3z11VdkZmZivGw9P3tNoI1l0KBBbNu2jaKiInx9q2cRP336NC4uLkRHRzfpvYUQV8dkMpGTk0NycjKeHh50jYiobgrVajEmJdHx738nqaAAnzBPZu24FVcPpdU1DOVVZO05COmXOs1Hu7jAxZ9FCiDM25vooCBiIiKIjo0lulMnort0ISYuDs8bbwR3dwBCsi9QlTwfpdK6Z1xVlQshPsGN9uwqlRfuqT5UJNnuF6ZSybqiQogrc8WhbtmyZTz99NP07duXiIgIu/Ma1VdRURFnz541v75w4QLHjx8nMDCQ2NhYFi1ahE6nY8OGDQBMmjSJ5cuXM336dJYtW0Z2djbz58/n/vvvtztQQgjhPFqtlpMnT5J8/jza334j+exZkpOT0aank5yfT+nFPmr3uLqyudZURC6AAagC9OmlvHn7HrzU7hbXVgC+Fa78/Q/j4c9/hpgYiI6mo78/3/70E9HR0URGRuLubnmePZ2D2zGdF8kqzrbaF+ITTOfgdjbOujJhoSreXT9TRnAKIRrdFYe6N998k/Xr1zNlypRGKcjhw4f5wx/+YH5d0/dt6tSprF+/nrS0NLS15m7y9fVlz549zJkzh759+xIUFMTdd9/NM8880yjlEULYVlVVZf7/mHThAtoTJ0g/f55Vf/4zaLXmGrfnDxxgTVZWnddLrgl0wcEQGwsxMfT8+WeCKyqIiYggNi6OmM6dienWjRiNhpiYGCIiImwOJvACBg8efEXP1Tm4XaOGN0fCQlUS3q6ASuWFu5vS7uhXqeUU1zqFyWRjcqF6CAoK4ocffqB9+9Y7saRer0elUlFQUIC/v8xQLsTltKdPs3b1apLOnEGr1aLNzCSloMBqSSqAfKB2THkeWGTjmj6ursSq1cSEhREbG0vPvn2ZvXAheHs3zUOINkXmqRNt3dVkkyuuqZsxYwabN2/mH//4x5VeQgjhZEajkczMzOpatsREtKdOkXTiBNoLF9DqdPzjhhu4w90dkpJAq6UgPZ1n63nt5F69UHXtWt0UGhvLkKIiFp46RUzXrsR26UJMbCyxsbGo1eqr7q4hrl1SyymEfVcc6srKyli7di1ffvkl119/vVVTyMqVK6+6cEKIhqmoqKCgoICQkBCoqqpe/F2rZfL8+fxw6hTJ+fmUV9me5wvgVIrl/Gmay/YHengQGxiIJjKS2Lg4Yjt3JrZHD2LbtaN9z57VS1hdNOjiJoQQwjmuONT9/PPP9OrVC4Bff/3VYp98CheiaRQWFpKUlFS9nT9P0m+/oT1zhiStlqSMDNIKCxmkUvFtYGB137aL/dWSgLOOL41SoaCgb1+YPBk0GoiNxV+j4fPDh4mOiSE2NtY80lwIIUTLc8Whbu/evY1ZDiGueSaTiezs7Oqm0aQkRt18M17Z2dVNoYmJvLRlC/O/+qrO6yQVFEDBxWUYXF0hOhpNSQk/5eaiCQhAEx5ObGwssZ06obn+emI7dECj0RAREYGrq/WPhBEjRzb2owohhGgCrXbyYSFao4qKCn744YfqmrazZ0k6cYKkc+dI0unQ5uRQUllpPvYXoPYaBxF1XDvcywtNUBDtY2MxPf88irg4iIwEpZJ1FRW4ublJLboQQrRhDQp1tZfYqov0qRPXmoqKCpKTky81j549S//YWEZrNJCYCImJlJw6xZCPP67X9ZKAHl5eEBcHGg1dfHwYevQomuho4jp0QNO9O5rrrkPTrh0xMTF4enravVZ952u7lmVqs5yyKL0QQjSVBoW6Y8eO1es4qQ0Qbd0nn3zC9wcOkHTyJEnnz5OYmkpafj6XT/TxV2B0rddqqqf9uHyNei8XFzQqFZqQEDSxsWg6dqTjfffBjTfCxf9PNwD7muh5rnWZ2iymdXmMyrJKq31unm6sP/myBDshRIvXoFAn/ehEW5afn09SUhKJiYmXBiKcPEmFXs+O++8317aRmMjWo0fZUmo9V9blkpRK6NYN2rWrrnGLi2PhkSO4h4VV17J1744mLo7g4GD5MNSMCrILbQY6gMqySgqyCyXUtRBSoyqEfY3Sp+7o0aP06NFDmnhEi2U0GjGZTCiVl9YQ/fG773j6738nKTGRpLQ09HZCmhIwfPedxX+Wy6f6CPPwQKNWowkLQxMXR1yXLmh69aJTnz7QubPFsQsb55GEuOZIjaoQjjVKqOvXrx+///47nTp1aozLCdFglZWVpKSkXOrPlpRUHdbOnCEpMZHkjAw+mjiR0W5ucOECXLhAuVbLp0brBdwvZwLShw8numtXc43bfSYTf4Dq0aMajaw3LIQTSI2qEI41Sqi7wpXGhKi3kpISkpKSAOjatWv1myYT5OTQ48Yb+f3CBYx1/DtM2rjR4nVNbZsbEOvlVT3dR0QEmnbtiOvaFU2vXmh69SI6JsZqcu2uFzchhBCipZApTUSLkJeXx9mzZ6vXF621JV24QFJiItl5eQCMiYvj0+uvN9e2UVSEAnBU3+arUKDx8sKzTx8YMaK6b1u7dkRpNOgUCsIjI3FxcXHGYwohhBBNRkKdaHJlZWUkJydfCmpJSfz973+vnui2rAySknjhn//k+f/8p85rJdUMVqilt5cXni4uaC4uX6Vp1w5Nt27E9u6Npl8/AkJDbQ5CcAEiG+cRRSunCvbDzdPNbl8tVbBfM5RKCCEaRkKdaDQ5OTm89957JCUlWdS2ZWRkWB37wM6dxKSmQmoqALF2rukCRLm4oPH2RhMYSJfYWJg06dJoUo2GDdKfTVyl0NgQXjr4LGkpuVb7IqIDpZ+WEKJVkFAnHCoqKiI5Odnm9sADDzDh7rshIwMuXKD4xx+ZO3duva6rPXyYmJoXPj7cEBbGrKoqYiMjiW3fntiuXYnt04fIfv1wCwpqqscTAoCMzALmLf6Aisoqq33ubkreXT+TsFBVM5RM1CY1qkI41qJC3RtvvMGLL75IWloa3bt3Z/Xq1QwZMsTu8Zs2beKFF17gzJkzqFQqbrvtNl566SWCJATUS2lpKfn5+UREWC5ANXv2bPbt20dycjIFBZdPk3vJDUePMmH6dLg4FUgk1TVrNf3bFBffi1UoiPXxITY4GE1UFLHt29N12DC47rrq2rbgYPorFPRvgmcUoj4KCkptBjqAisoqCgpKJdS1AKGxIaw/+bLMUyeEHS0m1G3dupW5c+fyxhtvMGjQIN566y1GjRrFiRMniI21bpw7cOAA9913H6tWrWLs2LHodDpmzZrFjBkz2L59ezM8QctSWVmJTqezW8uWnJxMdnY2PXr04Jfvv7808CAxkQu7dvHrhQt13iMtJ6f6CxcXiI7GNS6O9xUKQtu1Q9OjB1F9+uDWsWP1+qMyEEEI0QhCY0MkvAlhR6OEuiVLlhAcHHxV11i5ciUPPPAAM2bMAGD16tV8/vnnrFmzhoSEBKvjv//+e+Li4nj00UcBaNeuHQ899BAvvPDCVZWjNSgtLUWn06HT6UhJSUGn0zF9+nRCQi79oHv77bd5+OGH67xW8m+/ga+vxXsxgDsQffHrGCDG25uY0FBiYmKI6diRmOuuI6B7d4iPh5gYuDjx9F2N9pRCCCGEaIhGC3VXo6KigiNHjrBwoeVc+yNGjODQoUM2zxk4cCCLFy9m165djBo1iszMTD744APGjBlj9z7l5eWUl5ebX+v1+qsqd1MrKysjISHBKsDlXZzeo7YBcXGEhIaaa9xivv3W7nWVVDeLxgAxJhOVgFtAgHmqj1XR0bzRoQMu8fGXBiR4ezfNQwohhBCiUbSI5tfs7GyqqqoICwuzeD8sLIz09HSb5wwcOJBNmzYxYcIEysrKMBgM3H777bz66qt275OQkMCyZcsatez1VVFRQVpamjmgXR7UdDodkydP5umnnzaf4+bmxrPPPktVle2+PrXpJkyweN0ZuJNaNW3u7kRHRRETH09Ely4oawJbTWhTq83nylhSIYQQovVpEaGuxuVziZlMJruLnJ84cYJHH32Uf/7zn4wcOZK0tDTmz5/PrFmzeOedd2yes2jRIubNm2d+rdfriYmJsXlsY7rvvvt477336lx549z338PGjeZF45WJiUQAKRf3uwNRtbboWl8PdHMz17QRF0fHdu34oHZoCwkBWTBeCJtUKi/c3ZR2R7+qVPJRRwjR8rWIUBccHIxSqbSqlcvMzLSqvauRkJDAoEGDmD9/PgDXX389Pj4+DBkyhGeeecZqRCeAh4cHHh4ejf8AdfD18akz0KkB9z17YM8ei/ffB3yAaFdXgjQaFDUhrWareR0eLoMRhLhCYaEq3l0/k4KCUqt9KpWXjHwVQrQKLSLUubu7c8MNN7Bnzx7uuOMO8/t79uxh3LhxNs8pKSmpXpGgFqVSCbSwtWhnzKD7+vXciGUt2+U1bd6urhAbaxXYBtV8HREBF59PCNH4wkJVEt6EEK1aiwh1APPmzWPKlCn07duXAQMGsHbtWrRaLbNmzQKqm051Oh0bNmwAYOzYsTz44IOsWbPG3Pw6d+5c+vfvT2RkC1r8yd2dR6qqeESprB4laquWLS6uetoP1xbz1yGEEEKIVqbFpIgJEyaQk5PD008/TVpaGj169GDXrl1oNBoA0tLS0Gq15uOnTZtGYWEhr732Go8//jhqtZqbb76ZFStWNNcj2LZoETz5JERHS2gTQgghRJNRmFpUW6Vz6fV6VCoVBQUF+Pv7N3dxhBBCCHGNu5psIj3rhRBCCCHaAAl1QgghhBBtgIQ6IYQQQog2QEKdEEIIIUQbIKFOCCGEEKINkFAnhBBCCNEGSKgTQgghhGgDJNQJIYQQQrQBEuqEEEIIIdoACXVCCCGEEG2ALEYqhBBCXCYjs4CCglKr91UqL8JCVc1QIiHqJqFOCCGEqCUjs4Cp09ZSUVlltc/dTcm762dKsBMtkjS/CiGEELUUFJTaDHQAFZVVNmvwhGgJJNQJIYQQQrQBEuqEEEIIIdoACXVCCCGEEG2AhDohhBBCiDbgmh79WlVV3RE2JSUFf3//Zi6NEEKIlqC4WI/RUEiFwWi1z93VheLiXFJSDM1QMnEt0Ov1wKWM0hAKk8lkauwCtRY//vgj/fv3b+5iCCGEEEJY+OGHH+jXr1+DzrmmQ11eXh6BgYEkJydLTZ0QQgghmp1erycmJobc3FwCAgIadO413fyqVCoB8Pf3l1AnhBBCiBajJqM0hAyUEEIIIYRoAyTUCSGEEEK0ARLqhBBCCCHaAAl1QgghhBBtgIQ6IYQQQog2QEKdEEIIIUQbIKFOCCGEEKINkFAnhBBCCNEGSKgTQgghhGgDJNQJIYQQQrQBEuqEEEIIIdoACXVCCCGEEG1Aiwl1CQkJ9OvXDz8/P0JDQxk/fjynTp2q9/kHDx7E1dWVXr16NV0hhRBCCCFaqBYT6vbt28cjjzzC999/z549ezAYDIwYMYLi4uI6zy0oKOC+++7jlltucUJJhRBCCCFaHoXJZDI1dyFsycrKIjQ0lH379jF06FCHx06cOJGOHTuiVCr5+OOPOX78eL3uodfrUalUFBQU4O/v3wilFkII0ZRS8/XkF5dava/28SJSLT/HRet3NdnEtYnKdNUKCgoACAwMdHjcunXrOHfuHO+99x7PPPOMw2PLy8spLy83v9br9VdfUCGEEE6Rmq9nzL/WU2Gostrn7qpk5+PTJNiJa1qLaX6tzWQyMW/ePAYPHkyPHj3sHnfmzBkWLlzIpk2bcHWtO58mJCSgUqnMW0xMTGMWWwjRBJ5//nkWLFhQr2P1ej0dOnQgOzu7iUvVvIYPH87q1auv+PxZs2bV+3vakuQXl9oMdAAVhiqbNXhCXEtaZKibPXs2P//8M1u2bLF7TFVVFZMmTWLZsmV06tSpXtddtGgRBQUF5i05ObmxiiyEaKAvv/ySIUOG4Ovri0qlYtSoURw9etTimIKCAlauXMn8+fPN75lMJhISEoiLi8PHx4dOnTrxv//9DwB/f3+mTJnCs88+a/e+iYmJKBQKfH19Lba5c+fWq9wKhaLeXTxagqVLlzJ+/HiL9958801WrFjRPAUSQjSZFtf8OmfOHHbs2MH+/fuJjo62e1xhYSGHDx/m2LFjzJ49GwCj0YjJZMLV1ZUvvviCm2++2eIcDw8PPDw8mrT8Qoi67dixg8mTJ7N69Wp2795NZWUla9euZdiwYezdu5e+ffsCsHHjRoYOHUpwcLD53MWLF7N//36+/PJL2rdvj1arxd3d3bx/6tSp9OrVi2effRZvb2+7ZUhJSUGtVjf6sxkMhnq1HAghRGNrMTV1JpOJ2bNn89FHH/H111/Trl07h8f7+/vzyy+/cPz4cfM2a9YsOnfuzPHjx7nxxhudVHIhREOYTCYee+wxFi5cyAMPPICvry8BAQEsWLCACRMm8MQTT5iP3bFjh8WHs9zcXFauXMm///1vOnTogEKhQKPREBERYT4mLi6OoKAg9u3bd0Xle+KJJxg2bBhGoxGADz74gPDwcDIzM+nfvz8AAwcOxNfXl+eee85c87du3To6dOhAVFQUAE8++SQajQY/Pz+6devGtm3bzPf45ptvUKvVvPrqq0RERBAeHs6SJUuoPW7tvffeo2vXrqjVagYPHsyxY8dslreoqIhx48YRGhqKSqVi6NCh/PTTTwB8/PHHPPfcc3z66afmGkmAadOmWdRMHj58mEGDBqFWq+nWrZtFK8nSpUsZO3Yss2fPRq1WExsby9atW6/oeytES2MymSgqKiIlJYVffvmFb7/9ls8++wyqqiAvDy5cgKNHWTtvHuP69eNfd98Nu3Y1d7HtajGh7pFHHuG9995j8+bN+Pn5kZ6eTnp6OqWll/pILFq0iPvuuw8AFxcXevToYbGFhobi6elJjx498PHxaa5HEUI4cPr0aRITE/+/vTuPbrJO+z/+Trqk+5Z0S5ukrYAFAdkU2QQVUUAURxFkQAUFERQQD4rLqAjaEUfxNyB9YEZHUVx+DuKDAipuMKgMCBaByl6SNt0T2nSBbsnzRyC2pC0FA+lyvc7JkXvJfV8hB/vpd7u5++673Y7dfffdbNu2zfXvPiMjg9TUVNfx7du3o1Kp2LBhAwkJCSQnJ7NgwQJqamoaXKdbt24X3EWalpZGRUUFixcvxmg08uCDD/LOO+8QExPDjh07APjxxx8pLy/nqaeecr1v/fr1/Pzzz2RlZQFw5ZVXsnPnTkpKSnj22WeZPHmy6xg4ext2797N0aNH+f7773nrrbdYvXo1AP/5z3946KGHWLlyJUVFRdx5553cdNNNrglk9dntdiZOnEhWVhYFBQX07t2bu+66C4fDwdixY3nqqae45ZZbKC8vp7y83O39JSUl3HzzzUyYMIGioiLS09OZNm0aP/zwg+ucL7/8kkGDBmGxWFi8eDEPPPAAZWVlF/T3K4Sn1dTUUFRUxOHDh9mxYwdfffUVH334IfnHjkFODuzbB9u2sf2VVxjRowdXGwx00WiIDgrC38eH0NBQdDodPXv25Nprr+W2kSNx+PpCVBSkpEDfvvy6dCnrf/6Z/378MaxY4e2P3KRW00eQnp4OOAcA1/evf/2L++67D4C8vDxMJtMlrkwI0ZiS6iIqat1nkAf7hhHhH93k+85MYtBqtW7HtFotdXV1WK1WEhISOHHiRIMp/VarFZvNxq5duzh48CBWq5VbbrmF0NBQnn76add5YWFhnDhxotn6DQYDCoXCtb106VKmTJmCn58fH3zwAVdffTUfffQRU6dO5aabbmr2WgDPPfdcg+7cP//5z64/T5gwgb/+9a/8+OOPrl4Iu93Oyy+/TFBQEKmpqTz88MO8++673HvvvaxevZpJkya5lnOaO3cu6enpbNiwgYkTJza4b1hYGOPHj3dtL1y4kL///e/k5ua6Wg2bs2HDBqKjo3nkkUcAGDp0KBMnTuSdd95h0KBBAPTp08cVwidPnsy0adM4dOgQffv2Pef1PSkiOBB/X58mZ79GBAde0nqE59jtdkpLS7FarZw4ccL5X6uVpJgY+nfqBFYrnDiB3WLhhmee4YTNhrWighMnT1J+1i91Z2wCbq63XQ5sbkEt1cApIBAgKAgiIoisrobiYko0GmjFPYGtJtS1ZLm8t99+u9njzz//PM8//7xnChJCNKmkuoilBx+m1uH+P1NfhR+PXr68yWB3Znxcbm4uKSkpDY7l5ubi4+PjWsooMjKywdJDZ7oPFy5c6OpOnDNnDitXrmwQ6mw2W7Mz5wGMRmOTY+o6d+7MsGHD+Pzzz/n222+bvc4Zer2+wfbSpUv55z//SU5ODgqFgvLy8gazcgMCAoiJiXFtGwwGzGYz4Bzvd/YvuMnJyeTk5Ljd9+TJkzz22GNs3LgRq9WKUunsgCkuLm5RqMvJySEpKanBvpSUFLZu3erajouLc/1ZoVAQGBjolZY6bUQYGx67T9apa6UcDgcnT57EYrFgtVqdL4sF+6lTjLvuOmd35ulw9sw//8kXGRmcKC/HevIkpVVVNJYCHgTqRyglsBM492MJ4ASAry9EREBkJJF+fpCZiQKIUKmIDAwkIiiIyNBQIsLDiYiMJFKjISI6GsecOaDVwunxuo9arcyqrnb+PyMg4I/8NV1UrSbUCSHajopaW6OBDqDWUUNFra3JUNelSxcMBgMffPBBgyAG8MEHHzBo0CACA50tLr169eLAgQOucXVXXnklQIMWtsZkZmYyc+bM8/pM9a1du5bt27czevRoZs6cydq1a13Hmrr3mTAFsG3bNp5//nm+/fZbevfujVKppFevXg1+eT116hSFhYWuYGcymVwhLDExkePHjze4/vHjxxudPPbqq6+ya9cutm3bRmJiIiUlJURGRrruVb+uxjR2r6ysrGYnqnmTNiJMwttF1lg4sxQXM3zAACLsdmcws1j48ttveenjj7GUlmKtqMB66hRVde6tqLHAuLP2ZQG7WlDLCXAGq8hIZ3doZCSRu3dTXV1NVEAAUadDWWRYGJGRkURERREZHU1ETAy9brsN+vSB0/9me9bUUFJZSWho6Dn/XZztXGvmthYS6oQQl5RCoWDp0qVMnjyZuLg4xo8fT21tLStXruTDDz/km2++cZ07ZswYvvvuO1dAS05OZvjw4SxcuJD09HRKSkpYtmwZ48b9/iPDaDRSXFx8zifRNMVkMjF9+nQ++OADrrnmGnr37s2qVauYPn06ALGxsRw9erTZ50zbbDZ8fX2Jjo7Gbrfz9ttvs2/fvgbnKJVKnnzySZYvX47JZOKNN95w9TRMmjSJMWPGMGnSJPr37096ejoWi4VRo0Y1eq+AgAAiIyPdxvmdqddoNFJXV4ePj4/b+0eNGsXs2bNZsWIF06dP56effuL9999n06ZN5/k3J1qj6upqLBaL66WNj6dzfLwzmFmtlOXkcM+iRVhLSrDabFjKy5sMZ9tp2GpmA7a6neXuBOBQKlGcDmVERRGZl4dPdjaRKhWRQUFEhoQQdTqYRarVRMXEEBkXR/e+fWHMGFcwAzh08iQBAQHn/OXubH5+foSHh5/Xe9oaCXVCiEvu9ttvZ+3atSxatIg5c+agVCoZMGAA3333HVdddZXrvMmTJ7No0SIsFgtqtRqANWvWMH36dGJjYwkLC2PSpEk8/vjjrvesXr2a++6775yTpc5uiRp243BeXLWcqePHMebucWj79cBUW8Hf3/oHf77tTwwZMoSuXbuyaNEiZs+ezQMPPMATTzzBhAkT3K598803c8cdd9CjRw9UKhWTJ092jU87IzQ0lF69epGSkoLdbmf69Once++9gHNc27Jly7j//vvJy8uje/fubNq0qdHu4nnz5jFx4kRiY2PRaDQsWrTINUYZYNy4cbz//vtoNBocDgclJSUN3h8ZGcmmTZuYO3cuTz75JFqtlvT0dAYPHtzs35+49CorK7FYLFRVVdGpUyew26GkBCwWli5fzs979jjDW2kpxTYblspKys4ab7ZAqSTt9MxuABXwaQvvbwXw8wO1GtRq1Eol7N1LoI8PUYGBqE8Hs6iICNQaDVExMUTFxRGp1eKYORNFvV8qXquuZpmf33kHM8DVki/ctdpnv14K8uxXIS6MufIoK47Mb/L4zE6vkBB0mUfulZaWRklJSYsWyy0rK6N379789NNPREc3PVnjbLkVpQzfmE6V3b11QqX04etRD6EN9txv+N9//z1jx451C1ii46isrESlUv3eelpby8/ffsv6desozs/HUlSExWqluKQES3k5lspKTp5uPevq709mWJizte10QBsNtGShjWnAKnB2aarVEBVF2IEDlNXVuYezyEii1GrUMTFExcfzpwkT6NSjh6vVrKamhtraWglZHtYun/0qhBDgXMqopUJDQzly5Mh538NaVdlooAOostdhrar0aKgTrd+Fzu6urKzkyy++oCgnh2KTiSKzmeKCAoqKiiguKaHIZqO4spLK2loO9e5N54oKKCqCEyfYDSxqQW2W0zMxXUJCUDscUOGcPqBUKIhSqVAHB6MJD0cdGYlao0ETG8vAwYNh4kTnrM7T4exQfj7h4eHnHc78/Pzw8/M7r/eIi0tCnRDivAX7huGr8Gty9muwr7R8i4vjQsPW+d7jtQOzqKPW7ZijxsGRZwrIP1JEUUkJs7t356G4OGfIKi6mLD+fP+Xnt+g+xb/8Qud62+pGzvFTKlEHBKAJDUUdFoY6KorY2FhYvNjVDYpKxSKjkb9UV6NWq4mIiDiviQD1ZzeLtk1CnRDivEX4R/Po5csv+g/X9mrYsGHS9XoBLnQpndraWoqLiykqKqKwsJDC/HyKjEYKjUYKzWai/f158frrobAQioqoUBZQ92DjNSj8FGw9nknBEedC0Me//77B8ebmSCoVCtQBAUSHhKCJiMD3/vvhmmsgOho0GgbX1PDFvn2o1WrUajUajYaQkJAWjTszGAznPEe0fxLqhBAXJMI/WsKbAKCgsJTSUve148LDA4mN8Vy39bmW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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Repeat comparison of results, but for -ln instead of \n", "\n", "fig, ax = plt.subplots(len(orders), sharex=True, sharey=True)\n", "\n", "nsampvals = np.array((10.0 * np.ones(5)) ** np.arange(1, 6), dtype=int)\n", "nsampcolors = plt.cm.viridis(np.arange(0.0, 1.0, float(1.0 / len(nsampvals))))\n", "\n", "# First plot the analytical result\n", "for a in ax:\n", " a.plot(betas, -np.log(idealgas.x_ave(betas, vol)), \"k--\", linewidth=2.0)\n", "\n", "# Next look at extrapolation with an infinite number of samples\n", "# This is possible in the ideal gas model in both temperature and volume\n", "for j, o in enumerate(orders):\n", " trueExtrap, trueDerivs = idealgas.x_beta_extrap_minuslog(o, beta_ref, betas, vol)\n", " ax[j].plot(betas, trueExtrap, \"r-\", zorder=0)\n", " if j == len(orders) - 1:\n", " print(f\"True extrapolation coefficients: {trueDerivs}\")\n", "\n", "for i, n in enumerate(nsampvals):\n", " thisinds = rng.choice(len(xdata), size=n, replace=False)\n", "\n", " # Get parameters for extrapolation model with this data by training it - the parameters are the derivatives\n", " xem_log = xtrap.beta.factory_extrapmodel(\n", " beta=beta_ref,\n", " post_func=\"minus_log\",\n", " data=xtrap.DataCentralMomentsVals.from_vals(\n", " order=orders[-1], uv=udata[thisinds], xv=xdata[thisinds], central=True\n", " ),\n", " )\n", " out = xem_log.predict(betas, cumsum=True)\n", " print(\n", " \"\\t With N_configs = %6i: %s\"\n", " % (n, str(xem_log.derivs(norm=False).values.flatten()))\n", " ) # Have to flatten because observable is 1-D\n", " for j, o in enumerate(orders):\n", " out.sel(order=o).plot(\n", " marker=\"s\",\n", " ms=4,\n", " color=nsampcolors[i],\n", " ls=\"None\",\n", " label=f\"N={n}\",\n", " ax=ax[j],\n", " )\n", "\n", "ax[2].set_ylabel(r\"$-\\mathrm{ln} \\langle x \\rangle$\")\n", "ax[-1].set_xlabel(r\"$\\beta$\")\n", "\n", "for j, o in enumerate(orders):\n", " ax[j].annotate(\n", " \"O(%i) Extrapolation\" % (o), xy=(0.4, 0.7), xycoords=\"axes fraction\", fontsize=9\n", " )\n", "\n", "ax[0].set_ylim((0.0, 3.0))\n", "ax[-1].yaxis.set_major_locator(mpl.ticker.MaxNLocator(nbins=4, prune=\"both\"))\n", "\n", "fig.tight_layout()\n", "fig.subplots_adjust(hspace=0.0)\n", "\n", "for a in ax:\n", " a.set_title(None)\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "7", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Tags", "hide_input": false, "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.11.8" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }