diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 00c6f85..a592b6a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest] - python-version: ["3.8", "3.9", "3.10", "3.11"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] steps: - name: Checkout uses: actions/checkout@v3 @@ -24,19 +24,14 @@ jobs: with: python-version: ${{ matrix.python-version }} - - name: Install Poetry - run: | - curl -sSL https://install.python-poetry.org | python3 - - echo "$HOME/.local/bin" >> $GITHUB_PATH + - name: Install dependencies + run: pip install -e . pytest pytest-cov ruff - - name: Install Dependencies - run: poetry install -n - - - name: Run black format check - run: poetry run black src tests --check --diff --verbose + - name: Run ruff format check + run: ruff format --check --diff - name: Run ruff lint check - run: poetry run ruff . + run: ruff check --diff - name: Run pytest - run: poetry run pytest tests --tb=line --cov=src --cov-report=xml --cov-report=term + run: pytest tests --tb=line --cov=src --cov-report=xml --cov-report=term diff --git a/README.md b/README.md index 1f3a6e5..2af1ec4 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ - [API Usage](#api-usage) - [Code Example](#code-example) - [Not Implemented Features](#not-implemented-features) +- [Star History](#star-history) ## Overview @@ -231,3 +232,7 @@ I may implement them when I feel like it. - Plot boxplot - Plot violin - Label position auto adjustment + +## Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=moshi4/pyCirclize&type=Date)](https://star-history.com/#moshi4/pyCirclize&Date) diff --git a/docs/circos_plot.ipynb b/docs/circos_plot.ipynb index 7402466..b31e3e4 100644 --- a/docs/circos_plot.ipynb +++ b/docs/circos_plot.ipynb @@ -271,7 +271,7 @@ " trna_track = sector.add_track((67, 74), r_pad_ratio=0.1)\n", " for feature in seqid2features[sector.name]:\n", " if feature.type == \"CDS\":\n", - " if feature.strand == 1:\n", + " if feature.location.strand == 1:\n", " f_cds_track.genomic_features([feature], fc=\"tomato\")\n", " else:\n", " r_cds_track.genomic_features([feature], fc=\"skyblue\")\n", diff --git a/docs/plot_api_example.ipynb b/docs/plot_api_example.ipynb index cb825fa..17a12d9 100644 --- a/docs/plot_api_example.ipynb +++ b/docs/plot_api_example.ipynb @@ -242,6 +242,53 @@ "fig = circos.plotfig()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1-6. link_line" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2UAAANlCAYAAAD8dlFTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8WgzjOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzddXRU59bH8e/EHZIQxd3dvbgGDe7aQqEtLd5LCy1OKbRooVhxt+AW3N0JFghxIe4z7x8U3ttbaCGcyZlJ9mctVheR/fxSIJl9HtPodDodQgghhBBCCCFUYaJ2ACGEEEIIIYTIzqQpE0IIIYQQQggVSVMmhBBCCCGEECqSpkwIIYQQQgghVCRNmRBCCCGEEEKoSJoyIYQQQgghhFCRNGVCCCGEEEIIoSJpyoQQQgghhBBCRdKUCSGEEEIIIYSKpCkTQgghhBBCCBVJUyaEEEIIIYQQKpKmTAghhBBCCCFUJE2ZEEIIIYQQQqhImjIhhBBCCCGEUJE0ZUIIIYQQQgihImnKhBBCCCGEEEJF0pQJIYQQQgghhIqkKRNCCCGEEEIIFUlTJoQQQgghhBAqkqZMCCGEEEIIIVQkTZkQQgghhBBCqEiaMiGEEEIIIYRQkTRlQgghhBBCCKEiacqEEEIIIYQQQkXSlAkhhBBCCCGEiqQpE0IIIYQQQggVSVMmhBBCCCGEECqSpkwIIYQQQgghVCRNmRBCCCGEEEKoSJoyIYQQQgghhFCRNGVCCCGEEEIIoSJpyoQQQgghhBBCRdKUCSGEEEIIIYSKpCkTQgghhBBCCBVJUyaEEEIIIYQQKpKmTAghhBBCCCFUJE2ZEEIIIYQQQqhImjIhhBBCCCGEUJE0ZUIIIYQQQgihImnKhBBCCCGEEEJF0pQJIYQQQgghhIqkKRNCCCGEEEIIFUlTJoQQQgghhBAqkqZMCCGEEEIIIVQkTZkQQgghhBBCqEiaMiGEEEIIIYRQkTRlQgghhBBCCKEiacqEEEIIIYQQQkXSlAkhhBBCCCGEiqQpE0IIYbT8/PyoVasWxYoVo2rVqty+fVvtSEIIIcQH0+h0Op3aIYQQQhi+mJgYQkNDcXZ2xtHREYCVK1dy+vRpYmNjCQwMxNvbm8GDB2NlZZUpmRo2bEjv3r3p27cvW7ZsYcaMGVy8eDFTxhZCCCGUIk2ZEEKIf7Vz505++OEHrl69ypw5cxg+fDgmJibUr1+fnDlz8umnn+Li4kKRIkXeNGz6FhoaSpEiRYiMjMTMzAydToeHhwenTp2iSJEimZJBCCGEUIIsXxRCCPGvypUrx9mzZ+nZsydxcXG8fp6XP39+WrVqRcuWLalatWqmNWQAz58/x8PDAzMzMwA0Gg358uXj2bNnmZZBScuWLaN58+Z06NCBhw8fqh1HCCFEJpKmTAghxL/Knz8/FhYW5MyZk+Dg4DdNmZOTE5MnT8bb25tu3bpx/PhxlZMaL3d3dwYOHMiOHTsIDQ1VO44QQohMZKZ2ACGEEIZPo9EA4OnpyfXr1980ZZ06dSJfvnxUrlyZBw8eMHPmTB4/fky/fv3QarWYmOjv2V/evHkJCgoiLS3tzfLFZ8+ekS9fPr2NqU+tWrUiJiaGYsWKkTt3brXjCCGEyEQyUyaEEOK9ubu7ExERQVpaGgC1a9fm66+/pn79+gwaNIhatWqxadMmAPS9ZdnV1ZVKlSqxZs0aALZu3UqePHmMej/Z7du3sbCwwMHBQe0oQgghMpHMlAkhhHhvBQoUICEhAWtra+BV4/V6Fg0gPDwcV1dXAL3Okr3222+/0bdvX6ZOnYqDgwMrVqzQ+5j68Pr/48OHD3F1dcXGxkbtSEIIITKRNGVCCGEA9L3U72O9brwSEhJ4+PAhK1aswM7OjkqVKjFx4kQ0Gg0vXrzA3d2dn3/++S+fo0/Fixfn7Nmzeh9H3143ZXfv3iV37twG/XdBCCGE8qQpE0IIFe3evZuBAweyfv16GjZsqHacd9JqtfTo0YMLFy6QN29e1q5dS7ly5WjQoAE1a9YkT548uLm5UahQIVxcXNSOa3ReN7ARERFUrFgRc3NzlRMJIYTITNKUCSGEngUFBXHx4kVq1KjxZmnfaytWrCBnzpwEBga+ObDCEJmYmLB+/fq3vm/o0KGZnCbrWbVqFb/99hvnz5+nVq1apKWl8dlnn2FnZ6d2NCGEEJlA1kcIIYQe/fLLLzRp0oR27dpx7Nixv7zv4MGD1KhRg3r16nH79m3i4uJUSmn83tUwGovu3bvz+++/s3v3bry8vLh27RparVbtWEIIITKJNGVCCKFHTZo04erVqwwaNIhbt24B/38q4d69eylQoAAtWrTg4cOHb0401PephUqbPn262hGMvimzsLCgdOnStGrVijFjxrBmzRqjPoHx9u3bcteaEEJ8AGnKhBBCj4oXL465uTkVKlTg4sWLJCUlodFouHfvHlqtls6dO1OjRg3CwsLYu3cv9+7dy5QDMpR0+vRptSMIA6LVavn111+pX78+devWZfLkySQmJqodSwghDJo0ZUIIoUempqYA1KtXjydPnhAVFQXA06dP2bZtG6NHj6Zt27acP3+eH3/8kcePH6sZN8OMbXbPEE2YMOHNbKkxS0tLY9y4cdy9e5c5c+Zw/fp1zpw5o3YsIYQwaNKUCSFEJihdujTp6encv38feHW0fLNmzciRIwcrV66kQ4cODBs2jJYtW6qc9MPZ29vLfjgFXLt2zWAPevkQFhYWFChQAIAqVapQokQJfvvtN3VDCSGEgTP+7/5CCGHgXt9BVrp0aZ4/fw5Ahw4d6NChw5uPKVOmDMHBwURFReHo6KhW1AxxdXUlJCQEe3t7taMYLZ1Ol2VmG//7FNFjx45x4cIFvLy8VE4lhBCGTWbKhBBCzzQaDXFxcURFRTFixAg8PT2ZOnUqAElJSQCMGTOGadOmGV1DBuDm5qbqoQ5paWkkJCTw7NkzAgICCAwMJCQkhPDwcF6+fElCQgKpqakG3fRERUXh7OysdgxFmJmZkZCQwPLlyxk2bBheXl707t1b7VhCCGHQZKZMCCH0LDY2lu7du5MrVy6mT59OtWrVKFeuHDqdDisrK+DVPWDGytXVVdWmbPXvvxNw+jQzqldHp9GgBdKBNI2GNCAVSPnz95iYoDMxARMTNGZmYGr65pfG3BxbW1sccuTAPmdOcuTKRQ5XVxw9Pcnp5ITTn7+cnZ1xcnJ6s19QCY8ePaJQoUKK1VNLeno6p0+fZvny5Tx9+pSFCxdSv359tWMJIYTBk6ZMCCH0zMHBAR8fn7+9XaPRkJqairm5uQqpPkx6ejqhoaEEBgYSGBjIk2dPePT8Ef4B/ty+cZsh/Yeoli0lKYmfk5JoGRz8UXW0QDwQC8QA0X/+egkEWFlx08qKCAsLIkxNiTIxId3cHCwswNISKzs73Dw8cM+fH4+iRfHInx9PT088PT1xcXH51xM1Hz9+TOHChT8qvyH46quvWLx4MePHj2flypVqxxFCCKMhTZkQQqgkMDCQSZMmGcQhCImJiTx58oSnT59y7+E9bj64yeOnj4mMjiQxNZGk9CS0NlqSbZKJt4on2ToZ7ABXoAo8D32u9pfw0UwA+z9/ef7vO5OSXv16hyQgBAgCggF/KyvO2NrywsKCcFNTsLYGKyty5spFviJFyF+mDAVKlKBAgQLkz5+fR48e8cknn+jl68pMderUISEhgYMHD3L69GkKFizI1KlTcXFxUTuaEEIYNGnKhBBCJZ6enm8O/sgMsbGxPHjwgPv373Px1kVu3btFcGgwCakJJGuSSXFIIc4mjkTbRMgBlAWs3qOwDgKCAvSc3rBZAfn//AW8tYnT8Wrmzf/YMfyBezY27Le3x9/MjOfp6Rxfu5Y8+fJRpFw5ilapQrHixSlSpAg2NjaZ+aV8lC5dutClSxcA7ty5w/79+7G1tVU5lRBCGD5pyoQQQkUODg5ER0eTI0cORerpdDqCg4O5c+cOF69f5PzV8zz2f0xscizJJskk50zmpe1L0nOmQxGgHPCxd1XbQOC9QAXSZ20aIOefv8oDJCS8+vUnXXAwIXfu8HD/fvzMzNiQMyd+FhYkWltjYm9PwWLFKFmjBqUqV6ZUqVLkypVLjS/jvZUqVYpSpUqpHUMIIYyCNGVCCKPk6+vL6tWrqVy5Mk2aNKFo0aJvjp43JtWrV+f8+fM0bdr0gz83Li6Omzdvcv7yeU5ePInfYz9ikmNIsU4h1iGWuBxx4AIUQr9n7VpAbHysHgfIHjSA+5+/6qSlQXj4m/elA0+uXePupk2cdXBgmZ0d4ZaWmObIQaESJShXrx7lqlaldOnSWFtbq/QVCCGEyChpyoQQRuX8+fMMGTKEXLly0aRJE4KDg+nYsSM3btwwuoYMoFatWuzbt+9fm7KwsDAuX77MsbPHOH3hNCFRISRoEkhwTOBljpfgBjREtYtOktOS1Rk4mzDl1cRmEcArJgZiYoBXzdqja9e4uXEju5ycmGZlRZKtLY65c1Ohbl0q1a9PpUqVyJkzZ6bk/Pzzz1mwYEGmjCWEEFmJNGVCCIMWExPDsWPHaNiwIfb29pQsWZKlS5dSuXJlAE6dOsWVK1eIiYnBwcFB5bQfrmLFim/uLHstOjqaS5cucfDEQU6eO0nIyxASLRKJcYoh3jkeKvB+e70yUUp6itoRsiVToBhQTKejY0TEm7dHPnjAtWPHuGxvz+/29ry0sSGnpydVGjakasOGVKpUSfG9Xv7+/qSmpipaUwghsgtpyoQQBkmn0zFr1izmzZvHixcvOHr0KJ988gkODg5UrlyZuLg4li1bxsyZM+natSvBwcE4ODig0+n+9fhxQ2JmZkZUVBS/zP+F/cf38+j5I+JN4ol1jiU2VyxUBizVTvnvUkk1muP9swMnXk2cNoyNhdhXS0ujHj7k8okTnJozh1/s7Ii3syN/iRLUbNWKmvXrU7Ro0Y/6t3Po0KEMLcMVQgghTZkQwkBpNBrKly/P+fPnmThxIrt37/7LkeH+/v4EBASwaNEiAgMDadWqFVeuXMHe3l690O8hMTGR8+fP43PYB98zvoTFhhFvE8/JkydfHd1XRu2EGaO11hIWFoan598OkxcGwhFoDDSOjoboaHSA//37nPPxYb6zMw+trbFxd6d6kybUadmSypUrY2Fh8d71jxw5IksXhRAigzQ6nU6ndgghhHib1zMvhw4d4uuvv+bw4cO4ubm99WMLFSrE999/T58+fQxqtiwuLo7Tp0+zdd9Wzl46y8vUl8S4xBDjGvPqMqwsMrHkfM6Zw9MOU6FChUwf+7e5c8k7YgQtM33krCceOAeccnTksp0dOicnqtSvzycdOlC9enWsrN6+bjY9PR0vLy/27t2bqXmFECKrkJkyIYTBer0UrkmTJmi1Wk6ePIm3t/ffPi4pKYlq1aqRO3duAFUbsqSkJM6cOcNmn82cvHCSl2kviXaNJs4jDhqh2kEc+pZomUhISIjaMcRHsuXVX9NGUVEQFUXq8+dcun4d35UrmePgQLqzM9UaNqSRtzdVq1Z982/08uXLVKlSRdXsQghhzKQpE0IYtPT0dExNTWnZsiWbN29+05RFR0dz9epVDh06xMGDB6lUqdJfljdmFq1Wy40bN9iyewt7j+4lPCGcaJdoYjxjsnQT9r8SzBMICg5SO4ZQmDlQE6j554mPKQEBXLh+nUMrVzLVzg5LDw/qt2vHw6AgOnXqpHZcRU2aNAkHBwc+++wzuWZACKF30pQJIQza62Pux44dS7169bh48SKnT5+mXbt2LFy4kCJFirBhwwYKFy6caZnCwsLw2efDuh3rePj8IXGOcYR7hENtssxyxA9mB09ePFE7hdAzC6AOUOfPmbS45885fvEiFx0dmezjQ75SpWjeuzeNmzVT7EJ0tXzyySesWLGC2rVr07hxYyZPnvxBe+yEEOJDSFMmhDBor5ciXr16lbt37+Ll5UWFChXo2rUrmzZtypQMWq2WK1eusGbLGg6dOMRLzUvC3MNILZQK5TMlguGzBf8X/mqnEJnMDmil09EqMhIiI/F/8oT9R44w0NmZRGdn6nl50apbN0qVKmUw+zzfV/369alfvz5Pnz5l4sSJ3L9/n7Jly6odSwiRRUlTJoQweLdv32bBggX8/vvv9OrVK1OOXU9ISODgwYP8vvF3bvvdJtYploi8Ea+OrzPV+/DGxxYCHwaqnUKoLD/waVISn754QfKLF5y8cYPflyzhtr09xStXps3AgdT/5BOjmHFasGABdevWxdHRkQsXLnDx4kVpyoQQeiNNmRDC4JUuXZrt27f/7e06nY7+/fuzYsUKRcYJDw9ny/YtrNqyioCoACI9IkkolAAlFCmftVlBeES42imEAbHkzyP4w8LQhYVx//Fjdu3fzy+OjuQoVAiv/v1p2batQV76npaWhomJCS1btiRfvny0adOGXr16qR1LCJGFSVMmhDBaGo0GGxsb7ty5Q6lSpTJUIyAggDUb17Bh5wbC0sIIyxNGasVUkH39H8YEktKS1E4hDJSGV882SsTGMjo2ltBnz9h99iz9xo1D5+lJy969ade1K7ly5VI1Z0pKChYWFpiZmTFkyBBatGjBlClTGDdunFyMLoTQK7mnTAhh1C5cuMDWrVuZMWPGe3/O8+fPWbF2BZt2byLSJJKQvCFoC2mz7yEdCim8vzAPzz7M9HF/mT2bJdOnU9jREXS6N790f/5Xo9W+eptWi4VOhxVgrdNho9Vio9Vim5qKXVoa9snJ2KemkgNwAHL++csRePvtXEIJMcBeMzN2uLqS4OpKy1696NCzJ66urpme5eTJk9jY2FC5cuU3b8udOzfHjx+nSJEimZ5HCJF9SFMmhDBqOp2Opk2bsn//fkxN373ZKzAwkBVrV7B+x3oiTCIIzR+KtqBW1gtkVBoQB8S++q9VshXmp82JDonO9AMdlixZQu7cuWnVqtU/fpxOpyMlJYWkpCQSExNJSEggISGBuLg44uPjiY2NJfblS2LCwogODeVlWBgvw8OJiowkKT4eUlMhJQVSUrBNT8clPR23lBRc4+NxT0nBA/AA3JG/VhkVz6sGbburK/FubrTu25cOPXrg7OycKeOvXLmSadOmUb16ddq0acORI0c4evQo9+/fz5TxhRDZlzRlQgijN336dCpWrEizZs3+8vaoqCjWbFjD8g3LCUkLIaTAnzNi8or5n2l51XC9BE20BockB6wTrDGNM8XKxAorMytsrW3J45mHAnkKUCR/EfJ65qVgwYKULl060+MuXboUd3d3vLy8Mm3M+Ph4QkNDCQ0NJSQkhOCnTwl+9IjAp08JCQoiLT4eXWIiFikp5E5PJ19CAvliYymg01EAcOXVkj7xbvHAbnNztrq4oM2Th45DhtC2UydsbW31Oq5Op2PlypXs2rWLJk2a8Mknn2R4ebQQQrwvacqEEEYvICCAcePGsXr1apKTk9mxawfzls/jaeRTQvOHklo09dUFS+L/pQEvgQiwi7PDLt4Os1gzrE2tsbWwJW/uvJQsWpKyRctSsGBB8ubNi6enJ2ZmhtfRLlu2jFy5ctG2bVu1o/xNSkoKL1684NmzZzx7/Bj/mzd5eu8eIS9eoEtIwDwpifypqRSOjaVoQgJFeXWCoeH9X1ZXFLDN0pKdLi7kLFGC7l99ReNmzQzy76MQQmSENGVCCKOn0+moX78+OXPn5LrfdcLzhJNQLAH0+0DdOCQBYWAeaU7OuJxYRFtgY2JDDpscFC9anMplKlO2RFmKFClC3rx5/3EJqKFasWIFjo6OtGvXTu0oHyw1NRV/f38ePnzIw+vX8btyhad+fqTHxmKVmEjR5GRKRUVRMj2dkshfaYAAYJ29PYednChbvz59vvmGcuXKfXTdbdu20b59e6O7T00IkTVIUyaEMFovXrzg199+ZeverUTmjCSqZBSoe3ibetKAcDANM8UpxgnLaEtsTWxxc3ajUrlK1KpUi9KlSlOkSBGjuCPqQ6xcuRIHBwc6dOigdhRFJSYm8uDBA+7evs2d06e5d+0a8eHhWMbHUzIpiXJRUZTXailK9rw6TwdcA1a5uHDXyYlWvXvTffDgDJ3gGBYWxmeffcbWrVuVjimEEO9FmjIhhFFJSUlh245t/LzkZwISAwguHIyuoA5M1E6WiVKAYLAJtyFHVA6skqxwsnOifOnyfFLjEyqWr0jx4sWzzRHef/zxBzY2Nnh7e6sdJVMkJSVx9+5dbly+zA1fXx7cukX6y5fkTU6mYlQUlZOTKUv2OjEyBdhjaspaNzfMixShz+jRNGne/L1nfqdNm0aFChVo0aKFfoMKIcQ7SFMmRDYWERHB6dOnqV27dqadbpZR9+/fZ8avMzhy9gjhecNJKJEANmqnygRpQAhYh1qTMyIn1snWuOZ0pVa1WjSu3ZiKFSvi7u6udkpVrV69GisrKzp16qR2FNXodDoCAgK4cvkyVw4f5sb58ySHh5M3KYmqkZFUS0mhNNljRi0IWOXgwGEnJ+q2bUv/b74hb9687/z4tLQ0mjdvzsGDBzExyU5Pd4QQhkSaMiGyoeTkZL7//nsOHDhAgQIFiI6OZsiQIXTq1AmtVmswL0ySk5PZuHkjc5bOIYggQoqHgCdZ+9i6GDAJMME50hmbaBucbJ2oUakGzes3p1q1atm+AXubtWvXYmZmRpcuXdSOYlB0Oh3Pnz/n4vnzXNi3jzuXL6OLiqJcQgI1IyKoSdZe7asDfIHlHh4k5s9P37FjadG69d9mz7Zt28bz58/58ssv1YgphBCANGVCZEv/+c9/8PPz448//sDS0pK5c+eyc+dOjh07pnY0APz9/Zny8xQOnDpAeL4/Z8Wy4losHRAOlgGWOIc7Y5NiQ5H8RWjdqDUN6jWgRIkSBtMgG7L169cD0K1bN5WTGL60tDRu3rzJ2SNHOLN3L+H+/uRJSKBORAR1U1MpRNZ85hEGrLS3Z7+zMw07dWLgN9/g5uYGgJeXF2vWrCFHjhzqhhRCZGvSlAmRTVy/fp0yZcpgamqKn58fpqamFCpUCHi1J+fYsWMsW7YMQJVGQKvVcuDgAX6c8yNP4p8QXDwY8pK1XiFqgTCweWGDY6gj9thTqWwlOjTrQL169XBxcVE7oVHasGEDWq2W7t27qx3FKAUEBHDK15cT27bx+PZtcsXFUT8igk+SkylC1vsneMjEhN/d3bEuVYomvXpx5uxZFi1apHY0IUQ2Jxd8CJHFHTx4kEGDBhESEsLVq1cpWbIkRYsWBV49NTczM+Pp06fodDpVmrHY2FgWLl3I0nVLCXcNJ7pcNNhlegz9iQSr51Y4hTjhoHWgWoVqeA/0pl69evJkXiGmpqakpKSoHcNo5cmTh649e9K1Z08AwsPDOX70KL9s3szD69dxi4ujUXg4jVJTya1y1o9lAjTTamkWGIh/YCAzLl3itrMzKxcvpmvfvlhZZcUpeSGEMZCZMiGyuEmTJlGmTBnWr19PgQIFmDlz5pvmS6fTodFoaNmyJSNGjKBJkyZvPu/1+/Tl8ePHfD/je3wv+xJSJITUYqlZ4xSCRDDxN8ElyAW7BDvKFi9LtzbdaNyoMU5OTmqny5J27dpFaGgoAwcOVDtKlhQcHMzRAwc4vGEDL+7fp0R8PM3Cwqiv02WJe9MSgXVWVmxwcaFm27YMGT8eDw8PtWMJIbIZacqEyOJiY2Oxt7fn8uXLdOrUie3bt1O+fPk373/y5Aljxoxh06ZNHDhwgBUrVvDHH3/o5S4rnU7H6dOnGT9tPH4v/QguHYzRP3rXAcGQ43kOHEIdyOucl06tO9G2VVsKFiyodrpsYf/+/Tx69IjPP/9c7ShZnk6n4969exzctg3fHTvQBgdT7+VLWsbFUQLjXuqoA3w1GhZ5eGBXvjxfTpv2l++VQgihT9KUCZGNdO/eHVtbW+bNm4eFhQUmJibs2LGDzz//nJo1axIWFsagQYPo+ecyJqWkp6ezYfMGps2bRpBtEJFlI8FB0SEyVzKYPDXBNcAVh2QH6lSrQ2/v3tSqVSvb3A1mSI4dO8bVq1f5+uuv1Y6S7SQlJXHc15e9q1Zx9+JFisXG4hUayieApdrhPoIfMNfFhYB8+Rj6ww80bdFCrysHhBBC9pQJkQ28Xor4/fff06xZM+7fv//mCfCpU6eIjIykY8eOip9el5CQwIIlC1i0ehFhecKIqx9nvK/UYsDqsRW5AnPhbudOF68udJrWifz586udLNuztLQkOTlZ7RjZkpWVFc2aN6dZ8+bodDoePHiAz/r1zN+xA9uwMFqGh9MqJQXDvgXx74oCC8LCiAgLY2H37vzk5kbvkSPp2revPHgRQuiFzJQJkU2kp6djamrK2LFjuX37NmZmZlhbWzNv3jzFL46OiopiyuwpbNq7idAioSSXSDbO/WIRYP/YHsdgR4rlLcaAbgNo1aIV9vb2aicT/+Xy5cvs3r2biRMnqh1F/JeIiAj27tiBz4oVJD57RuOICDokJJBH7WAZkAissrFhs6srbQcNYsCXX2JrmxV21AkhDIU0ZUJkM/3792fNmjV88cUXTJo0SdEXFsHBwXw7+VsOnDtAcMlg0gunG98mk1DI+TgnOcNyUrFkRT7r9RkNGjSQp+MG7ObNm6xfv56pU6eqHUW8Q2JiIocOHGD74sUE371Lw6govGNjMbZdl+nAFnNzlrm7U69zZ4b95z/kzJlT7VhCiCxAli8KkY2sXbsWS0tLnj9//ubi1NeuXr2Kvb09RYoU+eC6z549Y9T3ozh1+xRBZYPQeRnZs54wyPkoJzlDc1K9QnWGjhtK7dq1MTU1xum97EeWLxo+a2tr2rRrR5t27UhNTeXo4cNMXbiQgBs3aBgVRefYWIxhIbAp0CU1lc7Pn7Nv7ly6b9hAhdatGfHjj6rfM/jfJ+Y+ffqUzZs3Y2FhwZdffqlqLiHE+5GZMiGykX865t7Pz4+JEyeydu3a96735MkTvp7wNecfnieofBB4KpU0E7wEez97nIKcqFK2Cl/0/4I6deqocleb+Dj+/v7MmjWL+fPnqx1FfKDU1FSOHDrEpnnzCLl9m+YREXROSMDt3z/VIOgAXxMT5nh4UKxJE0ZOm4a7u7sqWRISEnj8+DHTpk3D3t6eLVu2UK5cOTZs2ICrq6sqmYQQ709myoTIRv7p9LCiRYvi4ODA5cuXqVy58j/Wefz4MV99+xUX/S8SXD4YWiidVE8SwOqBFbme56J0gdJ8OexLmjRugpmZfCs0ZjJTZrzMzc1p3rIlzVu2JCkpif0+Pnw1bx6Jjx7RMSyM9ikpBn2XvAZooNXS4MULTq9axZCDBynYqBGjZ87M1ObswYMHzJw5Ezc3N7y8vMidOzcBAQEMHTqUXLlyZVoOIUTGyUyZEOKNwMBAhg4dyo4dO976/qdPn/LVt19x/sl5gisEYxSPs9PA9JEpbk/cyGefj2H9htGhXQesra3VTiYUEhUVxZdffskff/yhdhShkJiYGLauXcv2JUtwDAmhZ3AwDXU6ozgv6Cwww9OTwk2aMGbmTL3PUiUmJjJixAg2bdpEZGQkAD179sTT05ORI0fKLJkQRkKaMiHEX4wdO5amTZvSsGHDN2978eIFI74dwal7pwiqGATqrM75MEHg8sAF50RnenXsxaA+g1Tf8yH0Iz4+ngEDBrBhwwa1owg9eP78OWsWLODo1q1UjYykb2QkxdQO9R5OaTTM9PSkVMuWjJo2TfFTbv9bUlISw4YN49y5c5QrV464uDh++uknihUzhv9TQgiQpkwI8T+ioqLo1q0b+/btIzw8nFHfjeLQ5UMEVgw0/D1jCWBz34Zcz3NRt3JdRg8bTbly5dROJfQsLS2NTp06sX37drWjCD3S6XScO3eOlTNmEHD5Mt5hYXRKTjbo5Y0Ax0xMmOnhQc3OnRkxaZLiV2potdo3e2GPHj1K586dsba2xsfH5819lEIIwydNmRDibyZOnMjlm5e56n+VwPKB6PIZ8LcJHfAU3B+6k9cqL998+g3t27bHwsJC7WQiE7Vp04Zdu3apHUNkkvj4eLasXcvmBQvIExLCwJAQKmO4N3DogD1mZvzi4UGrQYP4bNQorKysFKv/ujEbPXo0oaGhVK1alfLly1OnTh3FxhBC6Jc0ZUKIN5KTk/np159YvHYxQaWDSC9qwPeMJYDdHTucXzjTpnEbRg4bSb58+dROJVQiTVn2de/ePX6fPp2bx47RMSyM7omJBjt7pgU2WFryu4cHfcaMoeegQYpevbFixQqcnJxo27atYjWFEJlDmjIhBFqtllVrV/HjnB8JKhJEUskkMMST4XXAC3C/505ei7yMGTaGtl5t5fREIU2ZICkpia3r1rFu7lwKBAczNCyM0mqHeocUYImtLTty5+abWbNo7uX1j6fjvo1Wq0Wj0fzt8/57OaMQwnhIUyZENnfk6BG++PYLnud6TmyFWMO8KCMVrO5Z4fLEhSY1m/Dt199SqFAhtVMJAyJNmfhvN2/eZNGkSTw/f54+ISG0S001yG9tscCsnDm5Vrgwk5YupWLFiu/9uYsWLcLNzY0OHTroL6AQItNIUyZENnX//n0GjhjIneQ7RFaJBBu1E71FNDjdcsI12pUvBnxB31595Sh78VbSlIm3iYmJYeX8+exavpyGYWEMjonBEG/tCgS+d3EhvWpVfvjtN/LkyfOPHx8REfHmQCYllz8KIdQjTZkQ2UxkZCRfjP2CIzePEFwtGJzUTvQWAeBxx4NijsX4ccyP1KlT54OX9ojsRZoy8U+0Wi0H9u5lyQ8/4OLvz5ehoQa5tPE68J2nJxU6dmT0tGnY2tq+9eOGDBlC7969qVmzZuYGFELojSw6FiKbSE1NZdpP0yjfqDzr09cT3NzAGjItmN8zJ8/uPPSz6MfZdWfx9fGlbt260pCJfyXPF8U/MTExoUXr1my/cIERvr7Ma9+e9rlzc8DEBEP6m1Me2BEYSJVFi2hTujRrli5Fq9X+5WMuX75MSkqKNGRCZDEyUyZENrBv/z6+nPAlAfkDSCydaFiPY1LA5rYNrs9c6delHyOGjlD8Hh+R9Xl5ebF79261YwgjEh4ezqJp0zixZQs9Q0PplpSEIV2kkQLMt7fnYP78/LhsGVWrVUOr1dKyZUtWrVqFm5ub2hGFEAqSpkyILOzJkyf0G96Pm8k3X+0bU+5anI8XDzlv5MQ9yp0xw8bQs1tPOUVRZJg0ZSKjkpKS+GPxYjbOn0/L0FAGx8ZiSI+FQoH/uLigrVGDco0bo9Vq+eqrr9SOJYRQmCE9LxdCKCQxMZER40ZQq3Mtjhc8TmQdA2rIoiHX8VxUvliZ9SPWc+fcHfr26isNmfgoGo3mb8u8hHgfVlZWDP7qKw7ev0/BpUvpVKoUExwdCVc72J9cgSVhYXy2ezerfvgBXUwMaWlpascSQihMmjIhsphtO7ZRunZpFj5bSHCrYAzmqLEIcD3iSt17ddk7Yy+Xjl2iebPmsl9MKMLe3p74+Hi1YwgjZmpqSocuXdh36xYNNm5kQOXKjHB25oXawf5UBbgYEUHO6dNpXro0p44fVzuSEEJBsnxRCAVdv36d8PBwGjVqlOlj+/v702tIL26m3+RllZcYzOaIUHC75kY5t3LM+XEOpUsb4plnwtgNGTKEb7/99l+PEhfiQ5w/d46fvvkGFz8/xoSFkV/tQH+KAv6TKxdJNWowfflyXFxc1I4khPhIMlMmhEJ+++03KlasSN++ffHz88u0cVNTUxk/aTw1O9bkZOGTvKz10jAashBwP+BOq/BWnFx5koPbDkpDJvTGwcGBmJgYtWOILKZ6jRpsPn2awQcPMqZePQa7uvJE7VCAI7AgPJzPfHzoWakSS+fOleW7Qhg5acqEUEBUVBS3b9/mypUrNG3alAkTJhAXF6f3cU+eOkmZWmWYc2cOQa2DDGOpYuirZswryovTa07js9GHokWLqp1KZHE5cuSQpkzoTYUKFdhw/DjDDh1ifP36DHZx4anaoYCqwN6AAJImTKB1xYrcunVL7UhCiAyS5YtCfIS4uDjs7OwAePbsGfny5SMmJoaaNWsycOBARowYoZdxX758yeCvBnPs8THCa4WDtV6G+TDh4HbFjcq5K/PrtF8pXLiw2olENjJ//nyKFi1Ks2bN1I4isoHr168z7YsvcLxzh2/DwzGERbMvgG/c3CjcoQP/mT0ba2tD+MEghHhfMlMmRAb17t2bjh07EhkZCUC+fPmAV8uofv75Z+bPn8/x/9mIrcTykvWb1lO+QXm2mm4lvJEBNGRR4HrYlcYBjTmx4gR7Nu2RhkxkOlm+KDJT+fLl2XD8OAP37+fLGjUY4exMqMqZcgMbQkKovmwZrcuWxffIEZUTCSE+hDRlQnyg9PR0hg0bRkhICM+fP2fJkiV/abZ0Oh3NmjWjU6dOzJgxg0OHDlG9enWeP3+OiUnG/8kFBQXR0KshQ5cN5VmrZ2jzqbx/IA6cjztT+35tDi04xKHthyhWrJi6mUS2JU2ZUEPlypXZevYs3tu3079CBSbkzEm0ypnapKSw/dEjtnTpwqcdOvDy5UuVEwkh3ocsXxQiA65cuULp0qW5desW3t7eLFmyhCZNmgCvmjZTU1MAnJycMDExYfz48Xz99dcZGkun07Fw6UKmLZrGi5ovwE2xLyNjkiHnlZwUTCzI/GnzqVWrlsqBhIBjx45x9erVDP87E+Jj6XQ6DuzZw+xRo2jx4gVDY2NVvx7ylIkJ3+fJw5ezZ9PG21vlNEKIfyIzZUJkQKVKlTA3N6dy5cr079+fCRMm8PTpU+DVXTdJSUkMGzaMQoUKcf78+Qy/UHz27Bm1mtZi/O7xvPBSuSFLA9urthQ7VIxVw1Zx2feyNGTCYMhMmVCbRqOheevWHLh9G49ffqFVwYKstrJCzTUNdbRafJ4948zgwfRp0YLwcEO5ElsI8b+kKRMig14vRZwwYQIODg7MnDkTgJMnT2JlZUW7du24dOlShvZX6XQ65i6YS412NThX4hwxVWLAVNH4HxAGLO5bkN8nPz+1/ok75+7QpnUbufRZGBRpyoShMDExoVu/fuy7d4/Ib7+leZ48HPmIpesfyxqYHhXF8P376VqpEts3bFAtixDi3WT5ohAfQavVYmJiQnJyMuXKlcPV1ZUbN25w7tw5SpYsCbzaC+bh4fHeNQMCAujUrxO3rW8TWzFW3UcnAZD7Sm56tu7J92O/l9O8hMEKDQ1l3LhxLFu2TO0oQvzFy5cvmTZqFA/37OHHoCBKqZglGZjk6EhAtWrMXbcOJycnFdMIIf6bzJQJ8RFez5alpKQQHR2Nu7s7AQEBbxoygMmTJ3P48OF/raXT6Vi8bDHV21TnXIlzxFZWsSF7Ca4HXfFO9ebKvitMnzRdGjJh0GSmTBiqnDlzMmPpUmafOcO0xo0ZlisXai0itASmRkUx7OBBOlWsyJ7t21VK8orcqybE/5OZMiE+kk6nY9SoUeTPn5/hw4f/7f3x8fF4eXmxceNGXFxc3lojLCyMzv06c1V7legq0eotVUyBnJdzUjS1KMt/WU6ZMmVUCiLEh9HpdLRp04bdu3erHUWIf3T29GkmfvopLfz9+TwuDnOVciQC3zo5EV+/Pj+tWoW9vX2mjr906VI+/fRTxo4dy9SpUzN1bCEMkcyUCfGRNBoNM2bMeGtDBmBra8vs2bMZOnQob3sGsnXHVio1qYRvHl+iq6vUkOnA8q4lhfYVYtlnyzh/+Lw0ZMKoyB5HYSxq1q7Nvhs3cPrpJ5rny8cBU3WewlkDP0dG0m3XLtqWL8/pEycybewLFy4wZ84cVqxYwZMnT2jTpg2xsbGZNr4QhkhmyoTIJD///DPW1tYMGTIEeDWD1ndoX44+P0pkrUhUe1waDJ4XPenj1Yfvx36PpaWlSkGE+DheXl4yUyaMSmxsLFO++YbHu3czPTiYQirliAa+cnEhd6dOfD93Lubm+vuBlJqaSq1atfD09GTnzp0AfPfdd+TKlYshQ4bodWwhDJk0ZUJkEq1WS4cOHZgyZQrxCfF0/6w7/uX8SSuQpk6gRHC+4EwVxyosn7ccT09PdXIIoRBpyoSx8vPzY0zv3pS9d4+xL1+i1g7eTZaWLCtShHnbtlGsWDG9jKHT6Thw4ABTpkyhQYMG/PDDDwBER0eTI0cOvYwphDGQpkyITPTixQtatGpBiFUIofVDwUaFEDqwumNFvif5WDxrMQ0+aaBCCCGUJ02ZMGY6nY5dW7bwy+jRfB0QQOs0dR7YPQeGuLvTftw4+g8frtjS4OTk5L+sxIiLi6NDhw5MnjyZatWqKTKGEMZM9pQJkUkCAwNp16sdjwo/IrS5Sg1ZKHju9mR0hdHcOnNLGjKRpZiampKm0gtZIT6WRqOhbadO+Ny+zdlBg+js5oa/CjnyAjuDgwn97jt6Nm1KVFSUInW3b9/O4MGD3/zezs4OJycngoKCFKkvhLGTpkyITLBt5zaqtarGpVKXSCiXAJl9JkEKOJ5y5JNnn3B+53kmjZ8k6/ZFluPi4kJ4uFqHjQuhDBsbG6YsXMgPvr4Mq1SJWQ4OpGZyBlNgXHQ0Xxw5QsdKlThz8uRH1+zYsSMxMTF07NiR69evs2fPHg4cOCB3pQnxJ2nKhNCjlJQU+n7Wl0FzB/Gi1Qt4+4n4emX22IwCewuwfPhyju0+Rp48eTI/hBCZwNXVlZCQELVjCKGIEiVKsOvSJdxmzqRlnjycV+GE0eo6HdufPmVhx45MGzsWrVab4Vrm5uZs2LCBKlWqMGrUKP744w/GjRtH3bp1FUwshPGSPWVC6Mnjx49p06MNfoX9SCmakvkB4sD1jCsty7dk/qz52NraZn4GITLRr7/+SokSJWjatKnaUYRQVEREBKP79cPuzBkmR0SQuTeKgQ743caGPWXLsmTXLlxdXT+qXmRkJI6OjnKVhRD/RWbKhNCDdZvWUbdjXW7XuJ35DZkOrG5bUeJECfb8socVC1dIQyayBTc3N5kpE1mSs7Mzy3btou26dbQtWJC9ZmaZOr4GGJSQwI/nz9OtalWOHznyXp936tQp1q9f/7e3Ozk5SUMmxP+QpkwIBaWkpND7s94MXzycwNaBkDOTA7wE973ufFXqK26evkmVKlUyOYAQ6nFzcyM0NFTtGELoTcOmTfG5dQvfPn3o4+JCZu+gLAvsfPaM5d26MXXMmH9czhgYGMjEiRNp3bp15gUUwohJUyaEQp4/f07VhlXZFLuJyPqRkJkPMrVge92WCpcr4Lval2kTp2GWyU9ShVCb7CkT2YGNjQ0zf/+d4Xv20LVYMTb/1zHzmcEOWBkWhvOCBXSqV4/IyMi/fUxKSgoDBgxgwYIF2Ntn9mJLIYyTNGVCKGDv/r3UbFOTG5VukFwsOXMHjwKPPR6MqzmOy76XKV68eOaOL4SBkOWLIjupUrUqe2/e5NbgwXRzdSUz54g1wKfx8Xx75gzelStz6cKFv7z/66+/ZsiQIfLzSIgPIE2ZEB9Bq9UyasIo+kzuw4uWL8A5EwfXvZodq3ilIic3nuTbUd9iYiL/pEX25ejoqNidSkIYAwsLCyb9+itj9u+nR4kSmT5rVkmnY8vTp0zz8uL3X34BYMWKFTg5OdGmTZtMzSKEsZPTF4XIoOjoaNp0b8Nly8vEl4vP3LvHosH9pDufd/qc8SPHSzMmxJ+8vLzYvXu32jGEyHQpKSn8+PXXPN28mbmhoZn6jFAL/JgzJzcrVybNzo6tW7diamqaiQmEMH7ySk6IDLhz5w6VG1bmlOcp4stnYkP258mKZc6XwXeNL/8Z/R9pyIQQQmBhYcGP8+fzxa5ddC5ShH2ZuK/YBPj+5Uu6Hz9O7IMHBAUFZdrYQmQV8mpOiA+0fvN6GvVsxKMGj9DmyfhFmh8sAVwPuPJ5sc+5evyqrNUX4i00Gg2yAERkZ1WrV8fnxg0OdO3KUGdn4vU94OsHgxYWdNDp+O3uXfrWrMlJX199jyxEliJNmRDvSavV8sXoLxg+fzjBrYLJzNs7zR+bU/hwYfbM28NPk3+SkxWFeAfZVyYEWFtbM3f1ajqsXo1Xvnxc0OedYFot2NnBt9/C4cMUqVKFHQEBLOzcmUUzZ+pvXCGyGGnKhHgPsbGxNGrTiOWPlhPRMCLzjrtPBafjTnQw7cCNkzfk3jEh/oUciy/E/2vcogVbrl7ll0aNmJwjB+lKFX7d5FlZQe3acPYstG8P9erBrFnYmZmxNiyM8KlTGdKpEykpKUqNLESWJU2ZEP/iyZMnVG1UlZNuJ18d6JFZgsFjuwdLv1zKhuUbsLGxybyxhTBSciy+EH/l5OTEmoMHyTN1Km08PHj2McVeN2M6HTg4wLJlsGEDvHgBY8a8mjX7/XdIS8MEmBAdTbNdu2hfowZhYWEKfDVCZF3SlAmjpu+9I77Hfanbvi73a98nPZ9izxj/mQ5sLthQ4FgB+rfvT+MGjTNnXCGyADc3N0JDM/PGJiEMn0ajoe/Qofxy4gSDSpdma0aPzn/9M3fQoFezYzVqwK+/QosWkD8/PHwIV6/+5VPapaQw/epVulSrxs0bNz7yKxEi65KmTBgVrVaLv78/T58+BV79oNGXeb/No8voLq/uH8upt2H+KhEctzhSLaUavbv0xszMjB07dsjBBUK8J5kpE+LdihQpwu4rV7jQqxdDcuUi4UM+2dQUypSBbdvg++/B3x/q14dffnnVrDVuDOHhcP/+3z61LLDx6VPGNGvGnm3blPpyhMhSpCkTRiM+Pp5PPvmEL774gubNmzNt2jRiY2MVH0er1TLoi0F8v+V7QpuHQmbdxfkUXDe50qFGB+rXrv+m4Xz06BFnz57NpBBCGDfZUybEP7OwsGDG0qW0W7GCNnnycPd9P3HyZFi3Dtq2hdhYGDIEAgIgJQWKFAEvL1i8GNLT//9Exv/iAmwPDmbbp58y94cf5GGjEP9DmjJhFNLT0+nVqxfVqlVj586drFq1ivXr1zN79mxFlyolJCTQuG1j1gWtI6pOVOb8C9GC7Slbil8uTr/O/ciTJ89f3q3RaDh69Kjc+yLEe5CZMiHeT7PWrVl94QJjqlRhpbX1uz+wZUvYuxdGjIAnT179184Otm6FcuVefUzXrvD0KVy79ur32rdfF2MJ/B4eTsLPPzOsWzfS0tKU/JKEMGrSlAmjYGpqioeHB507dwagevXqrFy5koMHD7Ju3Trg1QzXxwgODqZ64+qcyHWChDIftKgj4xJeLVesZV6LLu27YGVl9dYPS0tLY8eOHfIDTIh/ITNlQrw/Dw8Ptp87x9PBgxn4tuWM1tYwZcqrpYmDBkGfPq/2kA0c+OrQj2PHXjVklSpBUBDcvv2vY2qA8dHRfLJzJ53q1SMmJkYfX5oQRkejk/ljYSR69+5NVFQUu3fvfvO2EydO0LFjR44ePUrZsmUzXPv27du07tmap7WfvlpjkRmegesxV7waev1tduxtdDodNWrUoEWLFpkQTgjj1bp1a3x8fNSOIYRRObxvH9MGD2ZhQADF//sdpqaQJ8+rPWSvaTRQtiyMHg3dur16W+fOr2bPTEzeOVP2v86amDChaFFWHDpE3rx5FftahDBGMlMmDNbVq1fZunXrm9mhefPmERwczKhRo958TL169fD29v6oJYyHDh+iac+mPG38NHMaMh3YnrelyLkib12u+C4ajYbz58/z8OFDPQcUwrhpNBrZryLEB2rcogWrz5/n64oV2fzfqzbS0//akMGrgz1u3IDx42HPnleHe7z+2fQBq1ZqarX8dv8+ferU4frrpY9CZFPSlAmDdPbsWapVq0bv3r3x8fFBp9ORI0cO5s2bh6+vL19++SUAAQEB+Pr6kp6esePql65YSs/xPQlsGQh2Sn4F75ACjjscqZJche7e3d+5XPGf7Ny5k4SETFpeKYQRkmPxhcgYT09Pdpw/z7muXfnayYnUd33g65OPAwMhd+5X+8muX8/QmIWBzc+eMa5lSw7t2ZOhGkJkBdKUCYOj0+nYs2cPa9asYenSpYwcOZL9+/cDUKNGDdauXcuxY8fw9vamSZMmDBw4kKZNm37wGN/+8C1jV40ltEUoWOjjK/kfYZBrQy5alm3JJ3U/yfBx/rGxsbI0S4h/UKBAAZ48eaJ2DCGMkrm5ObNXrKDm3Lm0c3cn+G0f9HomunlzKF8eFi169fu3nLr4PpyBrUFBLO/Xj9WLF2eohhDGTvaUCYOUkpJCVFQUbm5u/PTTT/z+++8sWrSIevXqYWpqSkpKCi9fviQoKIjy5ct/UG2tVkufIX3YHbCb6KrRr3Yd65nZPTPcLrrRyasTOXLk+Oh6Wq0Wb29vyr0++UoI8caaNWswMzOja9euakcRwqjduXOH4W3bMvnxY2r+77JEKyvYtAmqV391X9m9ex89XjowwsmJ3J9+yugpU/R6F6kQhkZmyoRBsrCwwM3NDYCRI0fStWtXhg8fzvPnzzlw4ACTJ0/G1dX1TUMWHBzMkSNH/rVucnIyLTq2YFvkNqKrZUJDpgV7X3tKPihJ3659FWnIAExMTNi/f7+cWiXEWxQoUODNBfNCiIwrVaoU2y5dYk6dOiyxtf3rO5OS4NAhuHhRkYYMwBT4JTIS7cKFjOjd+6NPVRbCmEhTJgza64nciRMn0r17d2rUqEGfPn0oWbLkXz7O0dGRefPmcfz48XfWio2NpV6Levja+2bOkffJ4LjNkVo2tejg1QEzMzNFyyckJLBH1t8L8TcFCxaUpkwIheTIkYMNx44RNGgQQ52dSfnvd86bB+3aKTqeBhgXHU357dvp26oVKSkp//o5QmQF0pQJg/bfp6hVrFiR+Ph4Nm7cSLfXR/D+ydLSkrVr1zJjxgwuXbr0tzphYWHUbFqTS4UvkVI4E77BR4DzBme8KntRo2oNvQ1z9+5drl69qrf6QhgjDw8PAgMD1Y4hRJZhYmLC93Pm0HTBAtq7u/OXY3T0dH9mv/h4vI8epXP9+sTHx+tlDCEMiTRlwuBpNBri4+NZvnw5Bw8epH79+m/9OFtbW9atW8f48eO5devWm7c/e/aMWi1qcbvibbR59L8UwuSRCZ57POnZpicFCxTU71gmJhw4cICXL1/qdRwhjImJiYksexJCD9p16cLMw4fpWrAg1zJhvDYpKXx98SIda9UiMjIyE0YUQj1y0IcwGikpKVhY/PsxiWFhYXTt2pUlS5aQlpZGs67N8K/vD476z2hzwYa8z/PS0asj5ubm+h/wT0WKFKFHjx6yKVqIP3l5ebFz505MMnganBDi3SIiIujbvDn9bt6kQ3Ky3se7BowsXpzVx47h4eGh9/GEUIP8tBJG430aMgAXFxdWrVpF9+7dadipIf6NMqEhS4ec+3JSIa4CXdp3ydSGDODBgwdvXbYpRHbl4eFBSEiI2jGEyJKcnZ3ZduYMh9q0YWqOHOj76X4FYOH9+/SoXVuv113ExMRw6NAhfH19efDggd7GEeJtpCkTWdJT/6c8S3pGYItAsNfzYEngtMWJ+p71adKgiSqzVSYmJhw6dIioqKhMH1sIQyQnMAqhX+bm5izcuBHbb76hf65c6Hu+rBiw8skTBnzyCfcUOu3xNZ1Ox6lTpyhTpgxLly5l2bJltGvXjvPnzys6jhD/RJoykeUcOHSATl90IrhVMNjoebAocN7oTJvqbahQroKeB/tnKSkp7Nq1C1mRLIRcIC1EZtBoNHw5YQLev/1GB3d3wvU8Xj5g3bNnDGvShOvXrilWd//+/fTr148qVaqwadMmVq9ezYwZMxg2bBiPHz9WbBwh/ok0ZSJL2emzkz7j+hDcPBgs9TzYc3Df5U4Prx7kz59fz4O9n8ePH8uTPSGQmTIhMlOrDh2Yum8fnfPlQ9+L/tyBjQEBjGrViosK/Lx7+PAh3t7eFC9enGrVqtGqVSuioqLw8vJi1KhRcmiQyDTSlIksY9PWTQz+YTAhLULg/bafZZjFbQvyn8pPn859cHTMhBNE3pNGo+HIkSNERESoHUUIVUlTJkTmKl+hAmvOnuXzkiU5ZWqq17GcgU2BgUxo144zJ058VK0dO3bw9ddf4+Pjw9ixYyldujQLFiwAoHPnzhQpUkSBxEL8O2nKRJawZsMahs0aRmizUFD2jua/sT1nS1G/ovTq1AsrKyv9DpYBqampsoxRZHvu7u4EBwerHUOIbMXT05Nt58/zc/XqbNbzz8ecwObgYKZ06cKJo0czXCcxMfEvD1ft7OwICwv7+IBCfCBpyoTRW7FmBV//8jVhTcP025BpIceBHJSLL0fHNh0x1fOTwI/x9OlTzp49q3YMIVQjd5UJoQ57e3s2HT/OkVat+Nlevydt2QObgoOZ1b07xw4ezFCN5s2bs2rVKvbu3ctvv/3Gjh07aNy4sbJBhXgP0pQJo7b8j+WMXjiasCZhoM8eKQ1y7shJLadaNG3Y1ODvA9NoNBw9elSe9olszdramoSEBLVjCJHtmJmZsWjzZuIHDeJrJyf0+XjEFtgYEsKc3r05euDAv358dHQ0z549e/P7qlWrMnfuXDZu3MjatWsZNWoUzZo102NiId5OmjJhtJavXs6YxWMIbxKu34YsCRw3O9K0ZFOqVammx4GUlZaWJssYRbZWsmRJ7t69q3YMIbIljUbDhNmzKTNxIn1cXPR6ZL4NsCEkhF/69PnHxiwyMpJOnToRGhr6l7c3aNCA33//nSNHjtCtW7f3vhdVCCVJUyaM0so1KxmzaAzhjcP1+7c4Fpw3OdO2ZltKliipx4H049mzZ5w6dUrtGEKoonTp0ty+fVvtGEJka/2HD6fLokV0dnMjVo/j2ADrQ0KY26fPW5cyhoaG0rlzZ2bOnEmVKlX+9n5zc3PMzc31mFCIfyZNmTA6azasYfSC0a8aMn3OkEWAy1YXOjfrbDBH3n8ojUbD8ePH5cADkS1JUyaEYWjdsSNjt2yho6cnof/+4Rn2esbs5969/3L4R2BgIN26deOXX36hQoUKekwgRMZJUyaMysYtG/l67tf630MWCO4+7nRv2x1XV1c9DqR/aWlp7N69W5YximynaNGiPHig71uThBDvo2adOsw5eJCuefPir8dxXjdmM3r04MyJEzx79oyePXuyaNEiSpcurceRhfg4Gp28UhNGYqfPTgb9MIiw5vptyDRPNXie9KR7h+7Y2Njob6BMpNPpaN68OTVr1lQ7ihCZqlWrVuzZs0ftGEKIPz19+pT+jRqx4PFj9LkpIBbwdncnKm9eNm7cSMGCBfU4mhAfT2bKhFE4cOgAn078lLBm+mvITDQmNE1rSpFLRejVqVeWacjg1TJGX19foqOj1Y4iRKaytbUlPj5e7RhCiD8VKFCA9WfOMLxECa7o8SRje2BjcDAOAQHExsTobRwhlCJNmTB4J06doM+YPoQ0C9HrPWRuj9xwuOfAjYs3GDp0KFWrVs1SjVlycjL79u1TO4YQmUpOYBTC8Li5ubH5zBm+LVeOU3q88zMnsDEoiK9bt+bevXt6G0cIJcjyRWHQrly5QusBrQlqEQSW+hvH6poVBR4X4MalG29OX9Jqteh0Oh49esTNmze5d+8eqamp+guRCbRaLV27dqVUqVJqRxEiU2zatInExET69OmjdhQhxP+Ii4uje8OGDL92jSZ6/PkaDHTPl49lvr6yjFEYLJkpEwbr3r17tB3QlqCm+m3IbC7ZUORZETq17cT169ffvP3KlSvs378fa2trOnbsyKhRo+jQoQNFixbFxMQ4/+mYmJiwb98+kpP1eWOMEIZDTmAUwnDZ2dmx6cQJFlevzm493g3mDqx49owBjRsTFBSkt3GE+BjG+cpSZHn+/v4069aMgEYBr45S0hObczYUCylGh9YdMDExwc/PD4BLly5RpUoVTE1NWbZsGb/88gsnT57Ew8ODHj168M0339CyZUvy5s2rv3B6Ehsby+HDh9WOIUSmKFq06Jt/10IIw2NlZcX6I0dYW6cOW62s9DZOfmDR48f0atCAyMhIvY0jREbJ8kVhcEJDQ6nVohaP6j4CR/2NY3valhKxJWjVtBWaPzcbW1hYMHr0aA4dOoSdnR1169Zlx44dXLt27c3nubu7U7ZsWcqWLYuDgwNRUVHcvHmTmzdvEhYWpr/ACuvfvz/58uVTO4YQeicnMAph+FJTU+nv5UWrEyfompiot3GuAuPLlWPLmTPY2trqbRwhPpQ0ZcKgxMTEUKtZLW5Xug16vB7M7pQdpRJK0bxx8zcN2Wu9evVCp9OxZs0aWrduTaVKldi0adPfNglrNBry589P2bJlKVWqFNbW1gQFBXHz5k1u3bpFjIGf9uTu7s6gQYMw1eMmayEMQefOnVm+fDl2dnZqRxFC/IP09HQGtG1L46NH6anHxuyEqSlzqlVjo68vFnpcNinEh5Dli8JgJCcn06htI+6WuavfhuykHaUTS7+1IQN48OABBQoUwNzcnD179nD37l28vb3/tjlYp9Px9OlTdu/ezU8//cSGDRuIjIykYcOGjBgxgj59+lCpUiWs9Lgc42MEBQVx+vRptWMIoXelSpXizp07ascQQvwLU1NTlu3cybEmTVitx9OP66Wn0/fyZQa2bYtWq9XbOEJ8CJkpEwYhPT2d5h2bczzHcVIL6e8EJrsTdpRJKUPThk3f2pABODk58cUXX7Bu3ToePHiAqakp3bp1I2/evKxatYrAwMB/HMPS0pKSJUtStmxZChYsiFarxc/P780Jjob0A8DMzIwhQ4bg7OysdhQh9Gbz5s3ExcXRr18/taMIId5Deno6gzt04JPDh+mVkKC3cZbb2nKzY0d+Xrnyna8JhMgsMlMmVKfT6ej9aW/OWJzRb0N20o4yyf/ckAFERkYSERFB0aJFgVc/HDZu3EhoaCg9evTA0fGfN7olJydz7do1Vq9ezc8//8zhw4dxcHDAy8vL4L7pp6Wlyd1lIssrU6YMt27dUjuGEOI9mZqasmTbNo41asRaa2u9jdM/Ph6XnTuZ9Z//6G0MId6XNGVCdeMnjccn2IeE0vp7GmZ72pZSiaVo2uifG7LX/Pz8KFas2Jvfp6amsn79epKSkujZs+d7XyodFxfHuXPnWLp0KfPmzSM9PT3DX4O+PHjw4C8HmQiR1RQrVoz79++rHUMI8QFMTU1Zun07hxo0YIMeG7Nx0dE8X7yYNb/9prcxhHgf0pSJf5Sens7BgwdZsmSJXu72+G3Fbyw5voSYKvo7FMP23KtTFt+1h+xt/Pz8yJEjB66u/7+5LSEhgTVr1mBpaUn37t3fXDL9vhL0uATjY5iYmHDw4EGDzSfExzI1NUWj0ZCWlqZ2FCHEBzA1NeX3nTvZU6+e3o7L1wBzIyPxmTCBw7JyRKhImjLxj3r16sWKFSvw9fWlXLlyTJ06lYiICEVq7z+4nwmLJxBZL/LVd0U9sLlkQ9HIon859v59+Pv7k5KS8mYJ42tRUVGsW7cOV1dXOnbsaLSXSP+vhIQEDh06pHYMIfRGljAKYZzMzMxYvns3m2vWxEdPJyWaAivCwpg9YAA3rl/XyxhC/Jus8YpS6MX8+fN5+fIl69evZ926dQwYMIA5c+bw888/f/RhFTdv3qT/mP6ENQ7T299Cq6tWFA4sTJvmbT54L1daWhpPnjz5W1MGEBgYyKZNmyhWrBgtWrRQKq7qrly5wuPHj9WOIYReVK9enfPnz6sdQwiRAebm5vyxfz8rqlbl0AeuUnlf1sDqoCC+atOGgIAAvYwhxD+Rpky8k4mJCQ0bNnzz+8aNG+Pl5cXatWuZNGlShusGBQXh1duLoCZBoKfrQSxuWVDwSUHatWqX4cM1Hjx4QL58+d56pP3Dhw/ZvXs3VatWpU6dOh8b1yBoNBr27t0rS7xEliRNmRDGzcLCgjWHDvFr+fKc0tP9mrmAJc+e0a9JE2JjY/UyhhDvIk2ZeKf8+fMzc+ZM5syZw40bNxg7dizffPMN69evz/CMSnx8PE06NMG/jj/YKhz4T6b3Tcl3Jx8d23zc8sKHDx9iYmJCoUKF3vr+q1ev4uvrS+PGjSlXrlyGxzEkYWFhHD9+XO0YQijOw8NDL/tihRCZx9ramvXHjjG5dGmu6Ok04yLApAcP6NO8uTykFJlKmjLxTq1atWLRokUsXryYBQsW0L17d0qXLo2dnR1RUVG8fPmSD7nmLj09nVadW3Gv5L1Xj6P0QPNUQ54reejSvgumH/kkLTo6mpCQkLcuYXzN19eXK1eu0LZt23c2b8ZEo9Fw9uxZxfYNCmFIcuTIQXR0tNoxhBAfwc7OjvW+vowuXpx7ehqjllZLlytX+KpXrw96nSPEx5CmTPyjjh07cvfuXRYuXMjXX38NwLhx4yhbtiw5c+b8oKWBg78czEXbi6Tn19Ox8C/A86Qn3dp3w8zMTJGSfn5+FC1a9B+/Th8fHx4/fkyXLl1wd3dXZFw1paWlcfDgQbVjCKG4qlWrcvHiRbVjCCE+kqOjI2uOHWNooUL462mMLklJuO/bx6+TJ+tpBCH+Spoy8a9MTEwwNTUlLS2NH3/8ETs7O6ZNm/bm/e/zFGnuwrlsu79Nf3eRhYP7YXe6d+iOpaWlYmX9/Pyws7PDw8PjnR+j1WrZvHkzERER9OjRgxw5cig2vlru3r0r9zqJLEf2lQmRdbi7u7P8yBH658tHmJ7G+DY6mmu//sreHTv0NIIQ/0+aMvHezMzM6NixI6tXr37ztpiYGFq3bv2PJxUdPnKYqaum8rLWS/0EiwUXHxe6tu363pc6v6/nz5+TlJT0j0sYAVJSUli7di1paWn07NnzrYeDGJPXd5cZ4mXXQmRUpUqVuHLlitoxhBAKKVCgAL/s2UMPT0/0cSyHBlgUHs78oUO5ffu2HkYQ4v9JUyY+SKlSpf5yabKDgwNz586lT58+nDlz5m8f/+jRI/qO7Ku/o++TwHm7M51adtLLDJVWq+XRo0f/2pTBq0NM1qxZg62tLV27dlVsCaVawsPD3/pnKoSxsrGxITExUfaICJGFlClThonr19PTzY0UPdS3AlYGBTHcy4vw8HA9jCDEK9KUiY9WtGhRtm/fzty5c1m6dOmbt8fExNCiawteNHihn6Pv08BxmyNtPmmDi4uLHgZ4xc/Pj9y5c7/XLFxERATr168nd+7ctGuX8eP4DYFGo+HUqVPExMSoHUUIxRQoUAB/f33tQhFCqKFWvXoMnD+fgbly8XG3qL6dKzDnyRP6Nm9OamqqHkYQQpoyoRAHBwc2bNhAQEAAw4YNIykpidZdW/Oo/CPQxxYrLTjudKRppabky5tPDwP8Pz8/PzQaDUWKFHmvj3/+/Dlbt26ldOnSNG3aVK/Z9C05OZkjR46oHUMIxVSvXp1z586pHUMIoTAvb2/qT5jAaCcnvdQvD/S/dYuvevXSS30hpCkTijExMWHSpEk0bNiQqjWrcsX2Ctq8+nhmBQ4HHahVoBYlipfQS/3/Fh8fz4sXL95rCeNr9+7dY+/evdSsWZMaNWroMZ3+Xbt2TWYWRJYhh30IkXUN+OILHPr0Ya6Dg17qd0hOxvXAAX6bPVsv9UX2Jk2ZUFxiaiKBOQKJLxOvl/q2Z2wpa1mWKpWq6KX+2/j5+VGkSJEPWo548eJFTp06RbNmzShVqpQe0+mXRqPh4MGDsg9HZAnFihXjwYMHascQQujJhNmzudu4MVv0dODWhJcvOTZzJqePH9dLfZF9SVMmFHXr1i1GzhxJZL1IvdS3uGVBwbCCNKrfSC/13+Xy5cssWbLkgxuTI0eOcOvWLdq3b/+Px+obuoCAAC5duqR2DCE+momJCdbW1sTG6uOsNiGE2jQaDfM3bGBdpUqcNjVVvL4JsDQ0lO969uTFixeK13/t0KFDeqstDJM0ZUIxL1++pG3vtgQ3DAblvw+CP3je9KRdq8w/QCM2NpaoqKgP/jydTsfOnTsJDQ2la9eu2NnZ6SGd/mk0Gnx9fUlMTFQ7ihAfrX79+hyXp9xCZFnm5uas2r+ficWK4aeH+vbA4oAABrRoQXJysh5GgLVr1/LZZ5/ppbYwTNKUCUVotVpad2nNk6pPQB99RwS4+7rTtX1XTPXw5Euf0tLS2LBhAxqNhi5duhjtUfnx8fEcO3ZM7RhCfLQmTZpw8OBBtWMIIfTI3t6elYcO8Wm+fETooX5R4PP79/mqZ09F62q1r/biL1u2DD8/PzZt2qRofWG4pCkTihj5n5Fctb+KzlMP+44SIZdPLjp7dcbS0lL5+pkgNjaWDRs24O7uTuvWrdWOk2EXL14kODhY7RhCfJTixYtz//59tWMIIfQsd+7c/LxjB73d3dHHfJZXSgquhw+zfN68j671uhkzMXn10tzU1JRx48YxefJknjx58tH1heGTpkx8tF17dvHHyT9IKJugfPF0cNrpRJsGbXB0dFS+fiYKDAxk586dVKhQgVq1aqkdJ0N0Op3MMAijp9FoyJMnDwEBAWpHEULoWYWKFRkyfz5DcuVCH8dVfffyJbunTOHK5csfVed1M3b//n2uX7/OV199xe7du7l37x6zZs1SIqowcBqdHKkmPoK/vz+12tYisHUgmCtcXAc59uagQb4GlC9TXuHi6mnYsCF169Zl/fr1RnkKnFarpXPnzpQpU0btKEJk2IYNG0hMTKRfv35qRxFCZII5kyaR/PPPjI2JUbx2BNCpYEG2Xr6coQfIu3btIiYmhm3btvHixQusrKwwNzenb9++ODs706JFC8UzC8MjTZnIsOTkZCo3qMztardBD5NYtudtqZBYgcb1GytfXEWv95YVLFiQ33//nbCwMLUjfTBHR0c+//xzo90fJ0RYWBgjRoxgzZo1akcRQmQCnU7HkE6daO7jQzs9HM5xUaNhZp06bPT1fTPr9b7Gjx/Po0ePyJkzJ0OHDsXc3Nyor9IRGSNNmciw7gO6szV5KylFUxSvbfLAhGK3itG5XedMP2kxM1hYWNC/f38sLCxYunSpUZ5qWK9ePRo2bKh2DCEyrEWLFuzZs+eDX0AJIYxTSkoKHWrVYsrly+hj/c0iOztihg9nzNSp7/wYrVZLcHAwnp6ef3l7ZGQkTk5Of3mbTqfLkq+BxNvJTyKRIX+s+4P9/vv10pARDu7n3OnQukOW/WaUkpLChg0bsLS0pHPnzkb5ovDMmTO8fPlS7RhCZFj58uW5fv262jGEEJnEwsKClfv3M6JgQfSxRuWzuDhu//47J3193/r+4OBg2rdvz6lTp/72vtcN2esDP4As+xpIvJ3xvRIUqvPz82PsrLFE1frwe7v+VRLk2pOLzm06Y26u9CY1w/Ly5Us2btxIvnz5aNmypdpxPlhaWhq+7/jBI4QxaNKkiVzQKkQ2kytXLn7ZsYN+7u6kKlxbAywIC+P7Pn3+tjXh4MGD9OjRg6lTp9K5c+d31jDGh7RCGfInLz5IUlISbXu2JahBkPIXRGvB5ZALXVp2IUeOHAoXN0zPnj3Dx8eHKlWqULVqVbXjfLBr164RGBiodgwhMqR27dqcPn1a7RhCiExWtlw5Bvz8M185Oyte2x6Y8+wZn7Zti1arJTU1lbFjx7Jt2zZ2795N6dKlFR9TZA3SlIkPMmDYAB4VewR66Jlyns/JuH7jmD59Onnz5iW7bHe8evUqZ8+epUWLFhQsWFDtOB/s6NGjakcQIkOsrKzQaDRGuadTCPFx2nfrRq7u3Vlma6t47fJA0xs3GP/FF3h5eVGxYkUWL16MjY2N4mOJrEOaMvHeNm7ZyP7H+0kpovw+Mgs/C5q4N2HE5yOws7Ojb9++VKxY8S9rq7OyQ4cO8fjxYzp37vy3jb6Gzs/Pj0ePHqkdQ4gMqVu37lv3dwghsr7v585lX8WKnNfDksFP4+O5um4dgwcOpEuXLorXF1mPNGXivTx//pxvpnxDZO1I5YuHQ4mnJViz5P+PpjY1NaVdu3Y0b948W2x01Wq1bNmyhfj4eLp164alpaXakd6bRqPhyJEj2WZmU2QtTZo0kQvRhcimTExMWObjw7iCBQlRuLYG2BgVxfzRo4mOjla4usiKpCkT/yo9PZ22Pdryou4LUPpaqmTIczIP+zbtw8LC4m/vrlWrFt27d8fKykrhgQ1PUlIS69evx87ODm9vb6NqRl+8eMGNGzfUjiHEBytbtizXr1+XhwpCZFM5cuRg3s6dDNDDwR85gcn+/gzr3Fm+x4h/JU2Z+FejvxvNfff7oPR+WB24HHPhj7l//O2+jv9WtGhRBg4cSK5cuRQOYHgiIiLYvHkzhQsXpnFj47k0W6PR4OvrS3p6utpRhPggGo2GcuXKyUMFIbKx0qVL02vaNMbrYftALa2W4ufPs2rRIsVri6xFmjLxj06fOc3qY6tJKJWgeG37a/YM8RpCg08a/OvH5sqViwEDBlC4cOEs/7Tp8ePHHDx4kNq1a1OiRAm147y3yMhIzp07p3YMIT5Yp06d2LRpk9oxhBAq6tK3L2mtWrFVD9sHxkVHs3nyZB4+fKh4bZF1SFMm3ik2NpZew3oRVi/s1eJoBZk8N6GqtioTx01878+xtramZ8+eVK9ePcsfAHLu3Dlu375Nu3btjObgD41Gw+nTp0lOTlY7ihAfpFq1aly8eDHLP/ARQvyzmcuW8XuJEjxQuK4psCgoiGHt25OaqvQiSZFVSFMm3qnn4J48q/AMrBUuHA8FrhRg+5rtH7xvSqPR0LJlS6O8bPlD7dq1i7i4ODp3Np6LtBMSEjhx4oTaMYT4IBqNhvLly3P9+nW1owghVGRubs5SHx+G5s6N0uuD8gF9Hj5k8jffKFxZZBXSlIm32rB5AyfDT5KeX+E9QlpwO+bGlmVbcHBwyHCZGjVq0KVLF6NpVjIiOTmZTZs24ezsbFRN6Pnz5+WkKWF0ZAmjEAIgT548jF68mK/0sI+9W1ISTzZs4NyZM4rXFsZPmjLxN8HBwYyaOoqoGlGK185xKQej+4ymYsWKH12rZMmS9O7dG3t7ewWSGabQ0FB8fHyoWLGiIv/PMkNaWhq+vr5qxxDig1StWpVLly7JEkYhBE1bt8atSxdWWyu9VAh+CQtjfK9exMXFKV5bGDdpysRf6HQ6vPt6E1AzQPHj702fmVLTqiYjPh+hWM28efPSv39/XF1dFatpaK5fv86lS5do1aoV7u7uasd5L1evXiUkROlbX4TQH41GQ4UKFbh27ZraUYQQBuD7uXPZWLIk9xSu6wh86+/P6P79Fa4sjJ00ZeIvfl30KzfNb4KbwoUTIP+1/GxauUnx+7ccHR3p378/hQoVyrJPuffv309oaCidO3c2mjvbjh49qnYEIT6ILGEUQrxmZmbGkt27GZo7N4kK126Uno750aPs371b4crCmElTJt54+vQpM36fQUylGGUL68D1mCublmzS21JDKysrevToQcWKFbPkyYxpaWls2rQJa2tr2rVrp3ac93L37l2ePHmidgwh3luVKlVkCaMQ4o1Lly4R7+HBSD2cgjwtIoKZw4YRFaX8VhFhnKQpEwBotVq8+3oTVCdI8b8VdtfsGO49nMqVKytb+H+YmprSrl07GjVqlCVfVL18+ZLt27dTokQJateurXacf2ViYsLRo0ez5J+FyJo0Gg2VKlXi6tWrakcRQqgoMTGR4cOH4+vry4lTp7Bu25btFhaKjmEDTHn+nK979lS0rjBe0pQJAH769Sfu57wPzgoXDobyieX5dtS3Chd+t/r169OhQwdMTU0zbczM8uDBA06ePEmjRo3Inz+/2nH+lb+/P7dv31Y7hhDvTZYwCpG93blzBy8vL1q0aMHPP/+MpaUlUxcvZlGRIgQoPFZNnQ7Xs2fZtXmzwpWFMdLo5DF2tvfkyRNqe9cmqLXCs2QpkHdPXi4dvKTKQRxPnz5l06ZNJCQofduIukxMTOjVqxcuLi4sXrzY4E9wypUrF59//rniewmF0AedTkfTpk05ePCg/J0VIhvR6XQsXbqUPXv2sHjxYjw8PP7y/gcPHvBN/frsCA5GyUe+SUCrvHnZfO0aTnpYJimMh8yUZXNarZbO/TvrZdmi82lnFk5dqNrJiAUKFKBfv35Z7pucVqtly5Ytr07K9PbGxMSw/xmHhYXJcjBhNDQaDTVr1uTkyZNqRxFCZJLIyEi6d+/+ZpvA/zZkAMWKFaPduHHM+og7Vt/GCpgSEMDI3r0VrSuMj2G/mhN/ERAQwN27dxWtOWfBHO453AOF+xbzR+a0LN6S1i1bK1v4A7m4uDBgwADy5s2rag6lxcfHs3nzZvLly0fDhg3VjvOPNBoNZ86ckb1lwmgMGjSIJUuWqB1DCJEJTp48ibe3NyNGjGD06NH/+KCz//DhXKtcmcsKZ6ih0+F09ix7d+5UuLIwJtKUGYk//viDwYMHU7p0aYYMGaJIzefPn/Pzip+Jq6Dw8rc4KHi3IEt+MYwXNba2tvTp04dSpUplqcbg2bNnHDp0iDp16lC8eHG14/wjmS0TxiRv3rykpKTIXXtCZGGpqalMmDCBZcuWsWPHDqpVq/avn6PRaFiweTOj8+VD6Y0RP0RG8tOXXxITo/AJ2MJoSFNmBJKSkpg3bx6TJ08mJCSE5ORktmzZwuzZs7l//36Gaup0OroN6kZgrUBl/xbowO2EGxuXbjSo+7TMzMzo1KkTderUyVKN2dmzZ7l79y7t27fH0dFR7TjvJLNlwtj079+f5cuXqx1DCKEHd+/epVWrVpQpU4aVK1fi8AFLEp2dnRm9YAFjnJU9Gc0G+D4ggHGDBilaVxgPacqMwMqVKylbtiyVKlUiJSWFNWvWcO3aNXx8fOjWrRsPHjz44Jqr1q7ilsktcFE2q80tGwa0GkCFChWULawAjUZDkyZNaNGihdpRFLVjxw7i4+Pp3LmzQZ84KbNlwpg0bdqUI0eOkJ6ernYUIYRCtFot8+bNY9y4caxYsYIuXbpkqE6z1q2hSRMOmpkpmq9+ejrao0c56euraF1hHKQpMwLFixfn1q1bHDp0iC5dujB69GgmT57MsWPHqFy5MseOHfugehEREXw3+zuiK0crGzQKioYU5Ydvf1C2rsJq1KhBu3btDP6AjPeVnJzM5s2bcXV1Nej9ZTJbJoyJiYkJzZo1Y//+/WpHEUIo4MWLF3To0AGNRsO2bdvInTv3R9WbsWwZM/LnR+mrn6eFhzNx0CCSk5MVriwMXdZ4VZrFNWjQgPLly7Nw4UIKFSpEx44d37xPp9N98L6HAcMHEFAlAJR8wKMFj5MebF251aBna16rUKECnTt3xtzcXO0oiggODubIkSPUrl2bggULqh3nnWS2TBiTfv36sWLFCrVjCCE+0saNG+nXrx/Tp09n2LBhijyUtbGxYcoffzDCRdklRzmBoc+eMXXUKEXrCsMnTZmRWLp0KZs3b6Z+/foMGzaMQ4cOsX//fq5cucK4cePefNyLFy/+sc6Ro0c4FXQKXR5lZyvsrtsxovcIChcurGhdfSpRogTdu3fH0tJS7SiKOHv2LI8fP6Z9+/ZYW1urHeetZLZMGJNcuXJhZ2fH06dP1Y4ihMiAqKgoevfuze3bt9mzZw8lSpRQtH6NWrXw7NiR7RYWitbtkJLC3U2bFD9xWxg2acqMiJmZGQMGDKBZs2Z07dqVP/74g+++++4vsz1LliyhZ8+eBAYG/u3zk5OT+Wz0Z0TUiFA2WASUjCnJyC9GKls3ExQsWJDevXtja2urdpSPptPp2LFjB+bm5nh5eakd551ktkwYk8GDB8vx+EIYoSNHjtCxY0eGDBnCDz/8oLeVMd/PncuCAgUIV7CmBpgdEsKoHj3kIWY2otHJn7ZRSkpKIj09/a3NxM2bNxkzZgxNmzZl2LBhmP25EfXr8V+z4OkCUoqnKBdECx67PTi7/Sz58+dXrm4mCw8PZ82aNbx8+VLtKB+tZMmSdOnShZ07dxps8+Ps7MywYcPQaDRqRxHiH+l0Opo1a8bu3buzzKy6EFlZYmIi48ePJykpiVmzZmFnZ6f3MS9fusScVq1YExqqaN2f7e1xnDaNfp9/rmhdYZhkpsxIWVlZvXN2p2zZsvj4+JAzZ05atGjBmTNnePjwIesPryelmIINGWB/3Z5v+n1j1A0ZvFqm1K9fP1wUXhuuhrt373LlyhVatGiBk5PCt4IrJDw83GAbRiH+m0ajoUOHDmzbtk3tKEKIf3H16lVat25N48aNWbRoUaY0ZACVq1Qhf8eObFN4GeMXsbGsmz6diAiFVzgJgyQzZVlcZGQk48eP58DxAzxt+hSUfI0eCZWvV+bC0QtZ5iTDhIQE1qxZ89bln8bEwsKCTz/9lKSkJJYtW4ZWq1U70t/IbJkwFrGxsXTr1g0fHx+1owgh3iI9PZ2ZM2dy7do15s+fr8oD1uTkZFqWLctmPz9FX2qd02hY0a4dv8mDoSwva7ySFu/k5OREvQb1iCoQpWxDpgP30+5sXLYxyzRk8Oo0pT59+lCwYEGjXsedkpLCtm3b8PDw4JNPPlE7zlvJbJkwFvb29hQrVoyzZ8+qHUUI8T8eP36Ml5cXHh4ebNiwQbUVL5aWlkxZuZKRCo9fQ6eDkyc5d+aMonWF4ck6r6bFW8XFxTF++njF7ySzuWXDZ96fGdVpi+/L0tKSHj16ULJkSaNuzF68eMGxY8eoW7euQS4v1Wg0nD592qj/H4vsY9SoUcycOVPtGEKIP+l0OpYtW8bw4cNZsGABffv2VX3lRY1atcjZogUHFL5Uemp4ON8NHCiX2Wdx0pRlcd/85xtelH0BSh46FAuFAgvxn1H/UbCoYTEzM6Nz585UrFjRqJuGU6dO8ezZM9q3b4+VlZXacf5GZsuEsfDw8KBAgQIyWyaEAXj27BkdOnQgIiKCXbt2GdT9nD8uXMiMPHmIV7CmM9DR35/fZs9WsKowNNKUZWEPHjxg19ldpBVOU7Su2xk31i5eaxSXRH8MExMT2rZtS+3atQ1yT9b70Ol0bNu2DSsrK1q1aqV2nL+R2TJhTMaMGSOzZUKoSKvVsmjRIj799FOmT5/O6NGjDe61iK2tLWPnz+c7hQ/aGpiQwM5ffyU8XMnD94UhkaYsi9LpdPQd1pfgGsGK1jV/aE676u0oV66conUNlUajoWnTpjRu3NhoG4fo6Gh8fHwoW7asQf65yWyZMBbu7u4ULFiQM7K3Q4hM5+fnR5s2bUhLS2PPnj0UL15c7Ujv1LRVKyKqV+eygjVNgUmBgfzn008VrPr/jPU1TlYiTVkWtWPXDu5q7ip7uEcy5LmdhzlT5yhY1DjUq1eP1q1bqx0jw27dusX169dp1aoVOXPmVDvOX2g0Gs6ePSs/EIRRGD16tMyWCZGJ0tPT+emnnxg5ciTz589n+PDhRnHA2KxVqxiXJw9KrlWqodORevIkVy4r2e7Bt99+S+PGjZk/f76idcWHMfy/1eKDJScnM3LSSF5WealoXafzTiyYugBra2tF6xqLqlWr4uXlpXaMDNu7dy8JCQl06NDB4H6ghYaGcvfuXbVjCPGv3N3dKVSokMyWCZEJbt26RcuWLXFycmLHjh0UKFBA7UjvzcXFha5jxjBP4bvSJoeFMWHAgI9+kBkeHs7Zs2e5ceMGPj4+fPHFFxw4cIBff/1VoaTiQ8k9ZVnQhMkTmHVzFsmlkpUrGgRNw5pyYOsB5WoaqcuXL7N79261Y2RI3rx56devH76+vpw4cULtOH+RP39++vXrp3YMIf5VcHAwn332GTt27FA7ihBZUkpKCtOnT+f27dvMmTMHT09PtSNliFarxatyZX67do08Ctad4eBAgV9/pUufPhn6/O3btzNhwgScnJxwcXEhNTWVXbt2cffuXTp06MC1a9ewtLRUMLF4H4b1uFx8tNDQUFZsW0FySQUbMi3kvpibVQtWKVfTiFWuXNloZ8yeP3/OiRMn+OSTTwzuh9yTJ0/w9/dXO4YQ/+r1bNnp06fVjiJElnPp0iVatmxJ8eLF2bBhg8H9rPoQJiYmzFyzhtFuborW/Somht++/57ExMQP/tz4+HhWrFjB4MGDOXHiBPPmzePGjRvcvXuXokWLUqhQIQICAhTNK96PNGVZzNCRQ3lR+QUoeFWHzS0bhnUfhru7u3JFjVzlypVp06aN2jEy5MSJE4SEhNC2bVuDOrXKxMSEc+fOqR1DiPcyevRoZs2apXYMIbKMxMRExowZw7x589iwYQNdunRR/d4xJZQuXZq8Xl7sV/DuMktgWFAQsydM+ODP1Wg0+Pv7065dOwA8PT2pU6cOEydOxNraGgsLC/LmzatYVvH+pCnLQm7evMnJRydRdI48AfK/yM+or0YpWDRrqFSpEm3btlU7xgfTarXs3LkTFxcX6tSpo3acv7h7964c9yuMgru7O4ULF+bUqVNqRxHC6J06dYrWrVtTp04dVq1aRa5cudSOpKjv5s5lVu7cJClYs31KCufWrycoKOidH5OYmEhMTMxf3mZjY0OXLl347rvvADhw4ABnzpxhypQp3Lx5k+3bt2NhYaFgUvG+pCnLQgaOGEho9VBFa+Y6l4ulPy81qBkVQ1KxYkWjbMyCg4M5deoU9erVw9XVVe04fyGX8wpjMXbsWH744QfS09PVjiKEUYqLi+OLL75gzZo1bNu2zWi3BvwbW1tbhkyZwqwcORSrqeHVEfnfDxnyt/elp6ezcuVKWrduzaNHj/72/nHjxhEVFUWlSpUYOXIkQ4YMoUiRIpQoUUKxfOLDSVOWRezZuwc/Uz9Q7t87vICanjWpXau2gkWzHmNtzE6cOEFkZCRt27Y1qNMYr1+/Tnx8vNoxhPhXLi4udOzYkcWLF6sdRQijc+DAAdq2bUu7du1YvHgxORRsWAxRx+7duVSsGErunK4MpJ49y82bN4FXd43t37+f5s2bk5CQwP79+6lYseLfPk+j0bBmzRp+//13jh49yldffaVgKpFRcvpiFpCenk6pmqV40OgBWClUVAu5d+fmyv4rBjeTYqiuXbtmdKex5cmThwEDBnDo0CGDOuK7bt26NGrUSO0YQvwrrVZLy5YtWblypey7FeI9BAQEMHr0aPLmzct3332Hra2t2pEyzd27d/mxYUPWBQcrVvM58EW1akxYtIhJkyZRvnx5Ro4ciYODg2JjiMxhOI/HRYYtXraYF7lfKNeQAVZ3rPis62fSkH2AChUqvNk4aywCAgI4d+4cDRo0wMlJyZvGP87ly5dJTU1VO4YQ/8rExIRp06YxZswYtaMIYdBSU1OZNWsWQ4YM4T//+Q8zZszIVg0ZQMmSJfFs3pyjCq5OyQvkuX+f7yZMYNGiRfzwww/SkBkpacqMXGJiIrMWzSK+rILLvZIgz5M8jBkhLzI+lDE2ZkePHiU2NpY2bdoYzElX8fHxXL58We0YQryXihUr4ujoyNGjR9WOIoRBOn78OC1atMDT05Ndu3ZRqlQptSOpZsLcuUzNnZs0BWv+GB1NyuPHMltv5KQpM3KTZ00mqEQQKHgOh+MlR3758RfMzc2VK5qNGFtjlpqayu7duylQoACVK1dWOw7war37hQsXkNXVwlj88MMPTJkyheRkBe+IFMLIhYSE0K9fP7Zu3cqWLVvo0aOHwTz8U0uOHDnoPno0vyk4S5gTaBEQwMZVcp+sMZM9ZUYsKiqKco3KEdAmQLl7ySKh9v3anNovxzx/LGPbY+bl5UWZMmVYuHAh0dHRasdBp9Ph7e1N2bJl1Y4ixHvZuHEjjx49Yvz48WpHEUJV6enpLFq0CB8fH6ZOnUqlSpXUjmRQ0tPTaV6mDBvv3UOpjQPJQIuCBdl/754caW+kZKbMiI35fgyB5QIVvSja/YI7y39drlzBbKxChQq0b99e7Rjv7eDBgyQnJ9O6dWu1owCvZsvOnz+vdgwh3lvnzp25cOECT548UTuKEKo5f/48LVq0wNLSkr1790pD9hampqZMWLiQH5ydFatpCfQJCmLpnDmK1RSZS5oyIxUUFMSes3vQFtQCUNG9ItZm1h9V08TfhMblGlOsWDElIgqgfPnyRrOUMTk5md27d1O0aFHKly+vdhwAnj17Ji9whdHQaDTMnDmTkSNHytJbke1ERETw2WefsWzZMtatW8egQYMM6roVQ1OvQQNCypblgYI1eyYlsX3hQrlWxkjJvxYj9dX4rwisGEj+HPlZ2GohB3oeYHj14ViYZnDKWgue1zz5ZdovygYVVKhQgebNmxvFizQ/Pz9u3LhB8+bNsbOzUzsOJiYmcpm0MCrFihWjTJkybN26Ve0oQmQKrVbLsmXL6Nq1K3369GHJkiXkypVL7VhGYfLvvzNBwcM5TIHPg4KYN3myYjVF5pGmzAg9efKEE3dPQG6Y02wOdfLWYdqpacw8PZOU9JQM1bS8Z8mgzoMM6lj0rKRGjRp88sknaLVataP8q/3797+5e8kQ3L9/n5CQELVjCPHexo8fz9KlS/H3V/KaWCEMz7Vr12jVqhXx8fHs27ePmjVrqh3JqBQuXJjcTZtyQsEZxXapqRxbs4aXL18qVlNkDjnowwh5dfXCx8mHlnVasqXTFobsGcKq6x9x4k4qFNxbkHvnZHOovu3du5fz588b/OlTpUuXplOnTmzatIk7d+6oHYeKFSvStm1btWMI8d4eP37M0KFD2bVrl3xfFVlOWFgYkyZNIiYmhhkzZuDh4aF2JKMVGRlJ9/Ll2RcQoNgRAQdMTTk9ZAg/zJunUEWRGWSmzMg8ePCAi88vghuMqT2GQ48PceDRgX/9PFdbVzTv+Oduf82eid9MlBcOmaBFixaUL1/e4Jcy3r59m7t379KyZUusrT9ur6ISbty4QUJCgtoxhHhvhQoVYtCgQXISo8hSkpKSmDFjBr1796ZHjx788ccf0pB9JCcnJxr368cmS0vFajZNT+fy9u1EREQoVlPonzRlRmb4uOGEVAqhsGNhPOw8uBl6k+C44H/9vLr56rKi7QrMTf7n7rFEyBuRl17de+kpsfhvGo2Gtm3bGsVhKnv27MHU1JQmTZqoHYX09HS5TFoYnY4dO5KSksKuXbvUjiLER9HpdKxfv56WLVtSsGBB9u7dK0sVFTRs/Hh+c3cnYxtQ/k4DjAwK4id5KGRUpCkzInfv3uV6yHXIBeEJ4TjbOBOd9Oo+qXfNgr1+ex6HPDQu1Bg7i78e3uB02Ym5P841+OV0WYmpqSldunQhf/78akf5R3FxcRw5coRKlSqRJ08eteNw9epVg59hFOJ/zZo1i/nz58v+MmG0Tp06RYsWLXjx4gX79u2jc+fO8ppBYVZWVvQdN44lCl4o3UCr5daePYSFhSlWU+iXNGVG5MtvvySk4v8feBCeEE6TQk0wNzFHhw4Tzd//OHW8ehFrZ2FHcFww9pb2///OaCiiK0KTxurPhGQ3ZmZmdOvWzeCXfVy+fJnAwEBatmyp+g/hiIgI7t+/r2oGIT6UpaUlixYt4tNPPyUlRann4ELo38OHD+natSubN29mzZo1jBw5EksFl9iJv+oxcCA7PD2JU7DmyMBAZstsmdGQpsxI3Lt3jxuhN+DPU2ajk6PZ/WA3jQo1ok3xNgBoda9O9ns9O/b6v+527lTPXZ2XSS95Fv3sTU2XSy4snrU4E78K8d+srKzo0aOHQZ94qdPp2Lt3L56enqpfAKrRaLhy5YqqGYTIiMKFCzNw4EDZXyaMQmRkJCNGjODbb7/lhx9+4JdffpEj7jOBqakpX06fzpwcORSrWV+n4/a+fTJbZiSkKTMSX/3nq7/MkgHMODWDmyE32ei9kYmfTCSvQ17g1eyYBs2b2TOvYl40LdyUGadn/P8nR0A5p3JUrFgxM78M8T/s7Ozo1asXDg4Oakd5p4CAAK5evUqjRo1UP/TjwYMHREVFqZpBiIzw9vaW/WXCoKWkpDBnzhy6du1Ku3bt2Lhxo1Hsf85KWrdvz9l8+VDyeI5vgoKYM2GCghWFvkhTZgT8/Py4HnT9zSzZa2EJYYw/Op6AmAAm1JvAH+3/4KsaX1HYsTAAHnYejK0zlm/rfsuu+7s49PjQm891u+zGghkLMvPLEO/g6OhIjx49sLGxUTvKOx0+fBgTExMaNWqkdhQuXbqkdgQhMmTWrFksWLCAu3fvqh1FiDd0Oh1bt26lefPmuLi4sH//furXr692rGxJo9Ewes4cZii4gqa+Vst1Hx8iIyMVqyn0Q5oyI/D1d18TXOHtJyzu9dtL2UVlmXdhHjXy1GB209ncHnqbR1884smXT/ixwY/svL+Tbw5+8/+fFALV8lWjePHimfQViH/j5uZGt27dDPZagvj4eI4dO0blypVV3wd37do10tLSVM0gREZYWlqyatUqPv/8c549e/bvnyCEnp0/f57WrVvz4MED9uzZQ8+ePTFR8CJj8eE+adSIB4UKEaRQPQ3wZVAQv06apFBFoS9yebSB8/f3p2bXmgQ1//d/nu527vSr0I/KHpVJ06bxPOY5Bx4d4PDjw3/5OI99HpzZcIYCBQroKbXIqIcPH7J+/XrS09PVjvI3JiYmfPrpp6SmprJs2TLVTkLU6XS0b9+eChUqqDK+EB/ryZMnDBgwgA0bNuDq6qp2HJENXb58mWnTpuHp6cm3336Lm5ub2pHEfzl/7hzrvLz4JTxckXo6oHmePGy+fdugt0tkd9KUGbiu/buy0XwjeL7/55iZmJGmfcdMQiB4J3mzedVmZQIKxd26dYutW7ca5PHv+fPnp1+/fuzYsYNr166pnkMIY3X79m2++uortmzZQg4FN/YL8U+uXr3K1KlTcXV1Zdy4cQZx3Yl4O+9atZh79ixK/QntMDPjwZgxjJ48WaGKQmkyR23AQkNDOXnr5Ac1ZMC7GzLA45oHP0/++SOTCX0qU6YMLVq0QKvVqh3lb/z9/blx4wZNmjTByspKtRxPnjwhKEipxR1CZL7SpUszefJkunfvTmJiotpxRBZ348YNunTpwpIlS5g9ezYLFiyQhszAjZs3j2kKnnrZJi2Ng6tXy/cbAyZNmYJiY2MVrff99O8JKq3gC88XULdUXfLmzatcTaEX1apVo2bNmgY5W3bo0CHMzMxo0KCBahlMTEzkwA9h9KpXr85XX31F7969SU1NVTuOyIJu3bpFt27dWLBgATNmzGDRokXky5dP7VjiPVSuXJnQYsV4rlA9E6BPSAirFi5UqKJQmjRlCnn+/DkeHh4sW7aM9PT0j34xHRMTg89xH3T5lXtR7nnDk9k/zlasntCv5s2bG+RhLLGxsRw/fpyqVauqug/hxo0bJCcnqza+EEpo0qQJXbp0YfDgwQY5Oy6M0507d+jRowdz585lypQp/Pbbb7KP3AiN/fVXpis4W9Y1OZnNCxYY5L51IU2ZYpYvX06xYsXw9fXlwoULaDSaj6o3e95sgosHw8eV+X+BULtEbVmuYEQ0Gg3e3t64u7urHeVvzp07R0REBC1btlQtQ2pqqlwmLbIEb29vateuzYgRIwxydlwYj3v37tG7d29++uknJk2axO+//06hQoXUjiUyqHLlyoQULUqAQvXMgbahoWxZt06hikJJ0pQpID09nd27d/PHH39QtGhRWrZsyW+//UZaWho6ne6Df8impKSwassq0ooqd+y3x3UPfvrhJ8XqicxhYWFB165dDe60JK1Wy759+8ifPz/lypVTLcfVq1flRazIEgYOHEihQoUYOnSoLGUUH8zPz4++ffsyffp0/vOf/7B8+XKKFCmidiyhgDFz5zJLwdmyAfHxLJ82TX52GiBpyhQwf/58ihcvTpkyZfjuu++YN28eBw4c4OLFi2g0mg+eNVu5ZiWhBUOV+9MJgWqFq8k6ciOVM2dOOnfubHB3mD1+/Jjbt2/TpEkTLC0tVckQHBzMkydPVBlbCKV9+eWXNGrUiE6dOhEdHa12HGEErl69Sp8+ffjhhx8YO3YsK1eupFixYmrHEgqqWq0azwoWJESherZAteBgfI8eVaiiUIo0ZQqIiIhg2LBhAKSlpdGuXbs3M2ZLly7921PPf9o3oNPpmL14NomllDsdx/26O7N/kL1kxixPnjy0bdtW7Rh/c/DgQSwtLalfv74q45uYmHD58mVVxhZCH7y9vRk7diwdO3aUC6bFW2m1Wnx8fPDy8mLFihV89913rF69mhIlSqgdTejJ17Nm8bOTk2L1hkVFMf/bbxWrJ5QhTZkCfvjhB2rWrAmAmZkZdnZ2zJgxg6VLl7J69WoePXr0l48fNmwYw4YN48GDB3+rdeDgAUKdQ18t/FVCBJR1K0vhwoUVKijUUrp0aRo3bmxQhwFER0dz8uRJatSogbOzsyoZ7t69S0xMjCpjC6EPNWrUYOnSpfTr108eOog3EhMTWbJkCU2bNuXWrVv88ccf/Prrr/LzPRuoW78+t/LkIVKhem6A85Mn3LlzR6GKQgnSlOnB6xfNzZo1o3Hjxn/7hrlw4UIGDhzI9OnT8fb25siRI2/W9n438zteln2pWBbX667MniSzZFlFnTp1qFSpkkGtBT979iyxsbE0bNhQlfG1Wi3Xr19XZWwh9KVgwYJs2bKFiRMnsnPnTrXjCBWFhoYyceJE2rRpg5WVFXv37mXs2LE4OjqqHU1komFTprBAwYvmvwwN5Zfx4xWrJz6eRmdIr+6yoZCQEBYtWsTp06epV68e8w/NJ7RRqDLFY6DmrZqcOXBGmXrCIKSnp7N69WqePn2qdpQ3KlSoQLt27Vi6dCkvXrzI9PFdXV0ZOnRopo8rhL6lpKQwdOhQypQpw5dffvnRJ/sK43Hv3j3mzJlDWFgYQ4cOpVGjRvLnn43pdDqalSzJjvv3sVGoZvvcuVl67Rq5FDxIRGSczJTp0fv0u25ubkycOJHdu3ez5/AeQssq1JABTjecmDlhpmL1hGEwNTWlS5cuqi0XfJvr168TGhpK48aNVRk/ODiY58+VumJTCMNhYWHB0qVLiY+P5/PPPycxUbn9xsLw6HQ6jh07hre3N7Nnz+aLL75g27ZtNG7cWBqybE6j0dBv7FiW2doqVvOzoCAWT5+uWD3xcaQp06MP+QaakJBAQGIAuCo0eBLkTsxNnTp1FCooDIm1tTXdunXDxkap52UfR6fTcfjwYQoWLKjKMcwmJibcuHEj08cVIjNoNBq+/fZbWrduTevWrTl79qzakYTCEhMTWb16Nc2aNePo0aPMnz+fpUuXUrp0abWjCQPSqWdPdri6otSFSU20Wny3bCElJUWhiuJjSFNmIGbPn01wsWDF6tnftOe7b75TrJ4wPLly5aJz586YmpqqHQWABw8e4O/vr9oT3du3b5Oenp7p4wqRWVq2bMmWLVtYunQpo0ePJikpSe1I4iNduXKFzz//nI4dO5KcnMyOHTv48ccfcXd3VzuaMEBmZma0HzyYLQpdkWMCdAwLY+v69YrUEx9H9pQZgLS0NIpWK8pTr6fKtMlpUGRfEe5fuI+JifTdWd3Vq1fZvn27QfxZ582blwEDBrB161Zu3ryZqWPrdDo6depEmTJlMnVcIdSwe/du5s6dy7Rp06hWrZraccQHiIqKYu3atezatYuyZcvSv39/mRET7y0+Pp4OJUuy//lzlHj8GQd0Kl2afbduKVBNfAz1X8UJtu/aTniecMX+NCzvWfJ5v88N4kW60L+KFStSs2ZNgziR8fnz59y9e5eGDRtm+gyeRqPhlvxQEdmEl5cXmzdvZsGCBYwfP57k5GS1I4l/oNVqOXr0KL1792bAgAG4u7vj4+PD7NmzpSETH8TW1pZqXl4cV2hFih1QMjhYrt8wAPKq3QBMnzeduFJxyhTTgesjVz7t/6ky9YRRaNq0Kfnz51c7BgBHjhwhR44cVKlSJdPHfvDgAfHx8Zk+rhBqcHJyYtWqVVStWpVWrVrJiyoD9OLFC6ZMmUKTJk04deoUkydPZtu2bXh7e2Oh0BI0kf18PmEC8z08FKs3NCKChd/Jlhe1SVOmsnv37hGgDQBrZeppnmpo26gt1tYKFRRGwdTUFG9vb+zs7NSOQnh4ONeuXaNevXpYWlpm6tharVYO/BDZTvv27dmwYQMLFiygf//+PHz4UO1I2VpKSgrbt2+nY8eOjBkzhurVq3Po0CG+++478uXLp3Y8kQW4u7uTo0IF7itUrwgQdf06ERERClUUGSF7ylTWfWB31putB4UeeHju8+TyjsuySTibevz4MatXr1Z9KaODgwPDhw/nzJkzHDt2LFPH9vT0ZPDgwZk6phCG4s6dO0ydOhUrKyvGjx9PoUKF1I6ULSQkJHDw4EG2b99OWFgYzZs3p0ePHgZ1dYnIWm7cuMGSxo2ZHxamSL3dpqbc//ZbRk6apEg98eGkKVNRfHw8JeuV5Hkbhe5XioDmQc3Zt3mfMvWEUTp16hSHDh1S/U6bxo0bU61aNX799Vfi4hRanvsetFotQ4cOlQcTIlu7efMmU6dOxcHBgfHjxxvM8uasJCYmhj179rBz504SEhJo1qwZ7dq1I3fu3GpHE9lEm0qV+OPqVXIqUCsdaFaoEAf9/ORMApXI/3UVrVqzitBCyl0WnetWLqaMm6JYPWGcateuTcmSJdWOwalTp0hPT6d+/fqZOq6JiQnXr1/P1DGFMDRly5Zl/fr1DB06lDFjxjBkyBC5YF0B4eHhLF++nA4dOtCvXz8SExOZP38+u3bt4vPPP5eGTGSqAePHs8zeXpFapsAnEREcOXjwo2s9fPiQL774grJly7Jq1Sq5vuM9yUyZikrXLM2dRnfAXIFiyVD2RFlunJL9NAKSkpJYsmQJkZGRquaoVasWjRo1YsGCBZmaxd7enq+//lr12UIhDMXVq1eZNm0aTk5O9O3bl+rVq8u/j/f04sULduzYwYEDB7C1taVNmza0bNmSHDlyqB1NZHPp6ek0K1qUA0+eoMR5x0HA1/Xqsf748QzXiIqKonbt2lSoUIGuXbuyfv16KleuzMiRIxVImLXJTJlKrl27RqhNqDINGWBzx4ZRQ0YpU0wYPSsrKzp16oSZmZmqOS5cuEBcXBwNGzbM1HFjYmK4f1+pLdBCGL+KFSuyadMmvvzyS3bt2kWTJk2YOHEifn5+akczOC9fvsTHx4eRI0fSokULxo8fT+7cudmwYQPr16+nW7du0pAJg2BqakrzXr3Yo9AVNB6A7uFDgoODP+jzTp8+zf79+wE4e/Ys1apVY926dbRp04Yvv/ySbdu2KZIvq5OmTCVT5k4hvES4MsV0kOtZLrp27qpMPZEleHh40KpVK7RarWoZ0tLSOHbsGGXKlMHT0zPTxpU7y4R4u5L/x959h0dVbX0c/85Meu+VJPTeq1QBkY6gCBYsoNj7FcVerl0s12vvDaUjSBMUEKmC9E4g1PTe68y8f5wLr2CAhNkzZzJZn+fJo2LyO0sEMmv23mu3asWrr77KihUrGDhwINOmTWPYsGF8+OGHZCoaGFDXnNuE3X333Rw/fpxJkyaxdOlSvv32W8aMGYOPj4/epQrxD7c99BBfKTxDPTEtja/fe++Cn3PuJrvs7Gw++OADABo1asTu3bvP/LuwsDASEhIoKChQVqOrku2LOigpKaHl5S05OVLN/n7DUQMPRD7Ae29c+DeRqJ8WLVrEX3/9pdtWJYPBwD333ENBQQHTp0932HPd3NyYMmUKXl5eDnumEHVRWVkZS5cuZdasWVRVVTFu3DgGDRpEWFiY3qXZRV5eHuvWreP3339n7969BAYG0rdvX/r370/r1q1lW6eoc+4YNYrHFi+muYIsMzC4USN+PXz4rIEfBQUFzJo1i/nz5/PKK6/QuXPns76uadOmLFu2jGbNmvHee+9x9OhRcnNzWb58OS+++CJ33SX3516MNGU6+Pyrz3lw6YOUtVNz8DFmeQyb52yWA8aiWlVVVXz11VekpKToVkObNm0YN24cn332mUPrGD58ON27d3fY84So63Jycpg/fz5r1qwhKyuL6OhoevfuTe/evWnRokWdalisVitpaWns3buXPXv2sGfPHpKTk6UJEy5n69at/DBkCO8oumfsxaAg+s2bR/8BA1i3bh1ff/012dnZXHfddVx99dXV3oX76quvsnnzZho2bMjGjRspKCggICCAJ554gquvvlpJXa5OmjIddOjbgV19d4GKe3ULoO+Bvvyx5A8FYcJV5ebm8vnnn1NSUqLL8w0GA/fddx9ZWVnMnDnTYc9NSEhg0qRJDnueEK4mJSWFDRs2sH79eg4ePIi3tzfdu3enV69edOvWzWlWonNycs5qvo4fPw5ol+y2bdv2zEdkZKQ0YcIlDW3Thp/27eOf7VLtnQBuatcOj4gIevfuzcSJE2nUqNEFv6aiooLjx4/z9ddfExoaSseOHenYsaPc1VcL0pQ52OHDh+lzex/SB6YryQv8M5DZj8xm8JWDleQJ15WYmMiPP/6o28XSHTt2ZMyYMXz00UdkZKi7CuJi/vWvfxEQEOCw5wnhykpKStiyZQvr169n69atVFRUAODr60tcXNxZH/Hx8YSHh9vUBJWXl5OZmUlGRgYZGRln/X1GRgbZ2dlYLBaCg4PPar7i4uLkriVRr3z98ccYH3mEW8vLleQNi4pi+p490lQ5kDRlDnbvo/fycd7HEK8gzAKNlzQmcbNc9CdqZtWqVaxZs0aXd4qNRiMPPvggJ0+eZN68eQ577pAhQ+jZs6fDnidEfVRUVMTJkyf/8ZGZmYnVasVoNF7SG0IeHh5EREQQERFBeHj4mb8//REcHCzf/4RAe8Pk2pYtWaroPsKZ7u7kv/EGdz3yiJI8cXH6zsuuZ8xmM8t+Xwaj1OQZk4zcMPoG+YYkamzAgAEcO3aMEydOOPzZFouF9evXM2zYMFavXu2we8sOHjwoTZkQdubn50erVq2c4uJ6IeojHx8fmvTsye6TJ2mnIG9MZSXXfPmlNGUOJK/mHWjlqpXkRuWCokWKqMQoHrzrQTVhol4wGAyMHj0aDw8PXZ6/fft2iouL6dOnj8Oeefz4cYqKihz2PCGEEEIPdzz9NJ+HhyvJ8gISMjM5cOCAkjxxcdKUOdBbH79FfvN8NWGF0DSsKREREWryRL0RGhrK0KFDdbm/rKqqio0bN9KhQweHXb5qtVrlzjIhhBAur3379iSGh1OqKO/WjAy+e/ddRWniYqQpc5DCwkL2n9oPQWry/A/489g9j6kJE/VO586dadOmjS7P/uuvvygvL6dXr14Oe+ahQ4cc9iwhhBBCL9fcdRc/ubsryeoBbF6xQpc3cesjacocZOacmWTGZ6oJs0JoSijDhg5TkyfqpZEjR+Ln5+fw51ZUVLBp0yY6d+6Mr6+vQ5559OhRiouLHfIsIYQQQhf793PdwYPMUrQTxQBcnpvLmt9/V5InLkyaMgf5dPqnlDdTM6aUEzB84HBMJpOaPFEv+fr6MmrUKF1G5G/evBmLxeKwARxWq5W9e/c65FlCCCGEw5SUwLffwogR8MEHBEyeTEiXLhxTFD8hP58f3nlHUZq4EGnKHCA1NZWU8hTt1KQCkUcieeRumYYjbNeiRQu6devm8OeWlZWxefNmunXrhre3iqsuL+7gwYMOeY4QQghhdzt2wH33wbhxYLXC7Nnw4YfQqRO3Tp3Kt0FBSh7TGEjZtYuysjIleeL8pClzgC+//5L0hmoui6YCIswRNG3aVE2eqPcGDx6sy+WQmzZtwmg00qNHD4c87+jRo5SUlDjkWUIIIYRyhYXw2WcwdCh88w3cey8sWQITJ8LfjgP0u/xy1gYHo+ok2IjsbJYsXKgoTZyPNGUOMGPBDCyN1fzWcD/kzl033aUkSwjQLmcdM2aMw++7Ky4uZuvWrfTo0cMhI/otFgv79u2z+3OEEEIIZaxW+PNPuOMOmDAB/PxgwQL4z3/gPAO7jEYjfUaNYq2iEsaVlDDnww8VpYnzkabMzo4cOUK2e7aya7ojjkdw0w03qQkT4n/i4uLo06ePw8+XbdiwAQ8PD4dtoZQtjEIIIeqE3Fx4/30YMgTmz4fHH4eff4YbbwSvi5+HufnBB5keGamklAig/OhRCgoKlOSJ6klTZmefffuZuq2LBdA8urnD7ncS9Uv//v2Ji4tz6DMLCgrYsWMHPXv2xM1N0TsXF3DkyBHZFy+EEMI5Wa3wxx9w661w220QEwOLF8Mbb0CzZrWKatKkCSkK7ywbnZHBwtmzFaWJ6khTZmcLli+Ahmqy/A758fDkh9WECXEOo9HImDFjHLKV8O/WrVuHj48PHTt2tPuzZAujEEIIp5OZCW+9BVdeCb/9Bi++CD/9BGPHgg3fk0dNmsQiRW94jqmoYMHnnyvJEtWTpsyODhw4QJ5PnrKf5ZCUELmbTNhVWFgYgwYNcuhFkbm5uRw4cIDu3bs75HmyhVEIIYRT2L5dWxG7+25o2RJ++QX+/W9o2FBJ/PiJE5mjaAtjEGBMTiY3N1dJnvgnacrs6PPvPyejYYaasEzo3q477opuaRfifLp160aLFi0c+szNmzcTERFBo0aN7P6sI0eOUF6u6M5AIYQQojaqqmDuXBg5Upug+OSTMG+e9s+Kt/GHhIRAfDw5ivJkC6N9SVNmR4t/WwzxarKCDwfz8B0PqwkT4gIMBgMjRoxw6DbGY8eOkZ6e7pDVsqqqKtnCKIQQwrFycrSzYUOGQHIy/PgjvPderc+K1dbYu+9mbg0Gg9TEqMpKfv7ySyVZ4p+kKbOTQ4cOqdu6aIWgzCB69uypIEyIiwsKCqJ///4Onca4efNmWrRo4ZBBNocOHbL7M4QQQgj27IG77tK2KbZpA7/+Cg89BAEBDnn8qLFjWRwWpiQrEDCmpJCXl6ckT5xNmjI7+eqHr8iIV7R1MRX69+zv8HukRP122WWXERMT47Dn7d69m4qKCoeMx09KSnLouTkhhBD1iNmsja8fPRo+/FBrwhYs0LYoOvi1nK+vLwHNmpGqKG9kZiaL589XlCb+Tl7l28nPK36GBDVZYUlh3DfpPjVhQtSQ0WhkxIgRGAwGhzyvoqKC7du307lzZ7uPxy8rKyMpKcmuzxBCCFHP5OfDu+/C4MFw6JB2Zuzjj6F1a13LGnf//cz18VGSdVVFBYu++kpJljibNGV2cOLECXLdc8GkIMwKAbkBdO7cWUGYELXToEEDunbt6rDnbdmyBW9vb9q1a2fX5xgMBmnKhBBCqHHwINx/P9x0kzY5cflymDIFgoP1rgyAIcOH80toqJKsEKDs+HFKSkqU5In/J02ZHfw450cyGijaupgMV/S+wmGrFUKca9CgQfj7+zvkWTk5OSQmJjpk4MeRI0fs/gwhhBAuymLRRthfc412x9gdd8CiRXD11cqnKNrKy8uL0BYtSFaUNzg7mxXLlilKE6dJU2YHs36ehaWxmvMqYcfCuPvWu5VkCXEpPD09GTJkiMPOYG3evJno6Gji4uLs+pzU1FTy8/Pt+gwhhBAupqhIOyc2eDBs2waffQaffw4dOuhd2QWNvece5ivawji6tJSFcpG0ctKUAUVFRcqycnNzyazIBBXXif1v62KnTp0UhAlx6dq2bUvLli0d8qwjR46QnZ1Njx497Poco9EoF0kLIYSomaQk+Ne/YPx4CAuDZcvgqae0v68DhgwfznJFWxgbAKn791NVVaUkT2jqfVO2Z88e7rrrLsrKygAoKSkhJyeHjIxL2364cPFCMmMz1RSXBv169JOti8IpDB061CGXl1utVjZv3kyrVq3svm3y6NGjds0XQghRh1mtsGoVjBsH//433HADLF0K110HDvh+qJKXlxeBTZqQriivd0EBGzZsUJQmQJoyZs2aRWxsLF5eXuzatYspU6bQvHlzxo8fzxdffFHrvG/nfEtFowoltYUcC+HOm+5UkiWErUJCQujbt69D7i7bsWMHZrOZLl262PU5MhpfCCHEP5SUaFsSBw+GP/6A99/XJik64MoWexp9xx0sVHWRdF6eTGFUrN43ZVu2bGHYsGEAPPvss7Ru3Zo9e/Zwxx13sGDBglpNaKusrCQpNQn81NQWkBVg9y1cQtRG7969iYqKsvtzysvL2bFjB127dsVkUjHGtHplZWWyWiaEEEJz4gQ88YQ2rMPLCxYvhhdeAAd833OEYaNGsUzRdssOwM7165VkCU29bsqsVisDBw5k6dKlAAQHB3PdddcRFRXFhAkTqt3GWFhYeN689evXkx+haHBANnRq1UkujBZOxWQyMXz4cIeslm3ZsgU/Pz9a2/F+F4PBIFMYhRCiPrNaYe1abWvik0/CVVdpUxVvvhk8PfWuTil/f3+MMTEUKMgyAE0KCzl8+LCCNAH1vCkzGAxMnDiRHTt20L9/fzIzM1n2vxGfe/bsobi4mMsuu+ysr/n4448ZPHgwjzzyCCtWrDhzFg3g61lfkx+vpinzP+rPnRNk66JwPgkJCQ65uywzM5OkpCS7j8eXpkwIIeqhsjJtS+KQIdrQjmnT4IcfoFcvcOGz/ENvuolfFO1AGZGRwdLZs5VkiXrelFmtViIiIpg+fTpXXnklpaWlTJw4kRYtWvDhhx8yceLEf3zN448/zvLly5k8eTK7du1i/PjxjB07lo8++oh1f66DSDW1BaUFMWDAADVhQig2aNAgfH197f6cP//8k7i4OLtumZTR+EIIUY8UFMBrr8HIkWA2w8KF8Oqr0KCB3pU5xKhx41gUEaEka6DVyqp585RkCXCu2+0c7PRUw8jISJ5++mkefvhhioqKSExMpEGDBjRs2PC8X9emTRvatGnDlClTKCwsZMaMGRSYCrT1XFuVQMOIhni62LK5cB3e3t7069ePpUuX2nU6aGJiIkVFRXTo0IG0tDS7POP0aHxHXFgthBBCJ7m58N57sHEj3HefdnbMhVfEzicqKors4GCqUlNtbgJ8AENGBsXFxQ55o9bV1euVsnP5+voSGRlJnz59ztuQVcff35/i8mJymuYoqcP9iDu3jL1FSZYQ9tKtWzfCw8Pt+gyLxcKuXbto3769Xc9XyrAPIYRwUZmZ2n1iN90EPXtq58WuuqpeNmSn9R4+HFUjOvrn5vL7qlWK0uo3acoUmbN4DpaGakZrh6eEM3rUaCVZQtiL0Whk4MCBdh8pv3PnTnx9fWnatKndnpGUlOSQ4SVCCCEcJDUVHn0Ubr9dG22/eLF2fqweN2OnjbzpJhYpmsI4tLiYX77/XklWfSdNmQKVlZWcyjkFKq5+MEOwIdjuKxBCqNC6dWsaNWpk12ekp6eTlpZGhw4d7PaMsrKyWl1/IYQQwkmdPAkPPAD33w9jx8LPP0P//tKM/U379u3Z7e+vJKs5cGjbNiVZ9Z00ZQps2rSJgnAVA0aBkzB0wFA1WUI4wMCBA+2+yrRz505atGiBl6JLL88lo/GFEKKOS0qCO++EKVNg4kSYN0+bpCj+wWAw0LBdO1Rs3DcADYuLOXbsmIK0+k2aMgVmLJxBfqya6W2hyaHceM2NSrKEcISEhATatGlj12fs3r0bo9Fo1+fIuTIhhKiDDhyASZPguee01bFZs6BLF72rcnrDJ05kqbe3kqzBGRmsWLhQSVZ9Jk2ZAms2rIEYNVn+Of507NhRTZgQDjJw4EC7DuIoKiriyJEjdt3CmJqaSnl5ud3yhRBCKLR7tza84403YOpUmD4d2rfXu6o6Y+CgQawKCVGTZbHIaHwFpCmzUV5eHnnWPDU/k4XQLL6ZXV/cCmEPYWFhdLHzO5M7d+4kPj6e4OBgu+RbrVbZwiiEEM5u61a47jr44AN48UX4+mto2VLvquocf39/KsPDUfFWZDBQcOKEssFfVVVVbNmyhSeffFJJXl0hr/5ttHr1anIjc5VkeRzzYMLVE5RkCeFo/fv3t+vdegcPHqS8vNxuq2UGg4GTJ0/aJVsIIYSNNm7UBnd8/TVMmwaffgpNmuhdVZ3We9gwZaPxOxQVsWPHjlp/XV5eHlar9ayGzs3Nja5duzJ//nyOHz+uqELnJ02ZjWYumklpXKmSrNDUUIYNGaYkSwhH8/X15bLLLrNbfmVlJXv37qVDhw52u7BamjIhhHAiViv8/juMHg1z58L772srZPHxelfmEgaPG8cKRaPxr8jOZtUlnCu76aabKCgowGg0UlFRwYYNG3jppZcYN24ciYmJbN++XUl9dYE0ZTbasXcHhCoIskCgJZCIiAgFYULoo0+fPvgrGrNbnZ07dxIcHExcXJxd8pOTk6msrLRLthBCiFr4/XcYORKWL4cvvoC334YYRQf4BQAdOnRgh6+vkqxewPqlS2v9df7+/gwaNIihQ4fSokUL7rrrLnbt2kXv3r357bffGDBggJL66gI3vQuoyzIzMyl0L9TmgdoqHXp26akgSAj9uLu7069fPxYvXmyX1awTJ06Qm5tLhw4dOHHihPJ8i8VCUlISLVq0UJ4thBCiBnbu1M6KNWkC330HoSre+RbVMRqNhDZqRNbx49i6XuYDVKanU1lZibu7e42/btSoUdx///1MnTqVuLg4mjZtSnBwMAaDwW67YpyVrJTZYNXqVeRE5CjJ8kv24/qrrleSJYSeunbtSlRUlF2yrVYru3btok2bNri5qX9PSc6VCSGETo4e1e4Xe/99eO897dyYNGR2N3DcOFaZTEqyuhQVsa2WF0n37KktSFx77bX06NGD0NBQjEZjvWvIQJoym8xdOpfyBmpGaAdlBNGnTx8lWULoyWAw0L9/f2VTmM61c+dOvLy87LaaderUKbvkCiGEqEZmJjz8sDbW/rHHtK2KdtqiLv7piuHDWRkeriTr8txc1ixaVKuvadSoEU8//TSg7VZZtGgRTz31FAMHDqRHjx7MmjWLvLw8JfU5O2nKbLDrwC5QccWDGUI8Q/Dx8VEQJoT+WrZsSWxsrF2yc3JyOHnypN2mMJ46dQqz2WyXbCGEEP9TVAQvvaStjo0bB7NnQ5s2eldV7zRs2JDjis6V9QQ2rVhR7b8rLCxk9erV//hxq9XKo48+yrx582jQoAFTpkwhMzOT6667jqeffpr58+fz+uuvK6nP2cmZskuUk5NDkbFIzXmyZBjQq/4cZBSuz2Aw0KtXL+bOnWuXLQg7d+5k+PDh+Pr6UlxcrDS7srKS48eP07hxY6W5QgghgIoK+Pxz+OkneOgheOYZqIdb1ZxJXMuWnDxyBFvXJ72BivR0zGYzWVlZrF27lnXr1nHw4EH8/f3p2bMn/fr1w/S37ZIGg4HExERmzZrFp59+yqhRo87KjIqK4qGHHrKxsrpBVsou0dp1a8mNUHM/WWBaINcMv0ZJlhDOom3btoQpGrV7rn379gHQvHlz5dkGg8EuQ0SEEKJes1hg1iwYNgx8fbWpiqNGSUPmBPpfey2/12I4x7mswGHgaw8PdmRlccUVVzB16lTy8vK45557WLp0KbNnz+aRRx45qyE7rbKykgMHDvyjIQNt90pMTIzdjkQ4E1kpu0QLVyykNFrN/WT+mf706NFDSZYQzsJgMHDZZZfZZRJjSUkJJ0+epGXLlna5w0SGfQghhEK//aYN7hg8GJYsAS8vvSsSf9P/yit5LjSUm9PSavT5ZmAXsNbHhw3BweT7+dG0XTv6jBnDn/371/r4QuvWrSkpKWH58uX07t2bffv2sXHjRn7++WeSkpKYOXMmRqPrryNJU3aJNu/YDFcoCDJDiFcInp6eCsKEcC6dO3dm7dq1FBQUKM8+cOAAV1xxBR4eHlRUVCjNPnnyJFartV5OfxJCCGUOH4Ynn9TG28+aBUFBelckqhEbG0vyBc6VlQJbgLVBQWzx86MqOJj2l11G3zFjuKVXL4IU/H995513+OKLL5gwYQKNGzemVatWjBgxghtvvJGoqKh68T1ZmrJLUFZWRn5FvprNn6nQ77J+CoKEcD4mk4kePXrw66+/Ks8+cOAAQ4YMoUmTJuzfv19pdllZGSdOnCAhIUFprhBC1AtFRfDqq5CYCK+9Bk2b6l2RuIiYZs1IOXKEGCAXWA+sCw9nt7c3npGRdBs4kMtHjuTRrl3xssNK51VXXUXfvn1xc3OjrKwM4Mx4/PrQkIE0ZZdk27ZtFIUVKcnyT/Nn9HWjlWQJ4Yy6devGunXrKC1Vs933tNzcXNLT02nZsqXypsxoNEpTJoQQtWW1wsyZ2lj7KVO0xkzUCf3GjOHq9esJCQsjOC6OXiNGcMOQIbzStm2158DsITg4GAB/f/+zfrw+NGQgTdklWfH7CvLC85RkBWQGcNlllynJEsIZeXh40K1bN/744w/l2QcOHKB79+4YjUblh4DlXJkQQtTCjh3w9NPQvz8sWwYeHnpXJGrhpttvp/+QISQkJNSbJsjZuP6pOTv4be1vEKMgyAoBxgD8/PwUhAnhvC677DI87PAN+uDBg3h7exMfH688+/S5MiGEEBeQnQ333QfvvaetkD32mDRkdZCbmxsNGzaUhkxH0pRdgpTsFFCxnTYbOrS2zwW4QjgTHx8fOnfurDw3JSWFgoICWrZsqTy7uLiY9PR05blCCOESqqrgo4/ghhtgwgT4+muIjta7KiHqLGnKaik5OZlSbzVnYzxSPLhq0FVKsoRwdj179rTLvvQDBw7YpSkzGo0kJycrzxVCiDpvzRrtvjEPD22rYq9eelckRJ0nTVktbfpzE7mhai6NDskKoW+fvkqyhHB2gYGBtG/fXnnugQMHCAoKIioqSnl2Wg3vbBFCiHohMxMmToT582H2bJg8GRw0BEIIVydNWS0t+30Z5ZHlSrK8S71p0KCBkiwh6oLevXsrzzx+/DhlZWV2WS2TpkwIIdCmKs6YATfeCPffr50f+9+kPCGEGtKU1dLWnVshXEFQGcSEqpgWIkTdERYWRuvWrZVmms1mDh06RIsWLZTmAqSnp8uwDyFE/XbyJIwbB0lJsHQpdO2qd0VCuCRpymrBarWSW5ILKlbqU2BA7wEKgoSoW7p06aJ8fP3BgweJjo4mKChIaW5ZWZmslgkh6ieLBT75BO68E156SRt37+6ud1VCuCxpymohKSmJMv8yJVmB2YFc2e9KJVlC1CWNGzcmIiJCaebhw4epqqpSvlomwz6EEPXSoUNw1VXahMUlS6BVK70rEsLlSVNWC3/99Rc5wTlKsvyy/ewyIlwIZ2cwGOjQQe1VEOXl5Rw9elTOlQkhhC2qquDNN2HqVPjwQ+38mFFeKgrhCPI7rRZ+Xf8rlRGVSrJ88ZVLo0W91blzZ+Xj8Q8cOEBCQgLe3t5Kc+WuMiFEvbBjhzbmPipKm66YkKB3RULUK256F1CXbNu9DVRMsC+ChBj5w07UX76+vrRs2ZK9e/cqyzx8+DBGo5GEhAQOHDigLDctLQ2r1YrBYFCWKYQQTqOyEl58URvkMX06REbqXZEQ9ZKslNWQ1WolrzhPzZCPVBjYe6CCICHqrs6dOysd+JGfn09OTg6NGjVSlgna1kjZwiiEcElHjsDIkdCuHfz4ozRkQuhIVspqKC0tjTIvNUM+gnKD6NtDLo0W9Vvjxo0JDw8nOztbWeaxY8eUN2Wnh31ER0crzRVCCF398IP28dlnslVRCCcgK2U1tHPnTvKD85Vk+eb4Kh90IERdY4+BH0ePHiUiIgJfX1+lubJSJoRwGYWFMGmSNmHx55+lIRPCSUhTVkNrN6+lJLhESZYPPjLkQwi0LYxGhZO9jh07BkDDhg2VZYI0ZUIIF/HXXzB6tNaUvfgiuMmGKSGchTRlNbRp2yZQsdW6DKJCohQECVH3+fn5KR1jX1hYSFZWlvItjOnp6VitVqWZQgjhMBYLTJsGb78Nc+dCv356VySEOIc0ZTWUkpECPgqC0qFn154KgoRwDR07dlQ68OPo0aPKV8rKy8tJTU1VmimEEA6RmgrXXAMBAdowj5AQvSsSQlRDmrIaqKqqoqiqSEmWd443/brLO1RCnNasWTPCwsKU5R07doywsDD8/f2VZRqNRlJSUpTlCSGEQyxbBjffDK+8AnfdBXK1hxBOS5qyGjhy5AgVARVKsgLzAmnfvr2SLCFcgeqBH/Y6VyYrZUKIOsNqhddfh59+gsWLoU0bvSsSQlyENGU1sGfPHvIC8pRkeRR70KBBAyVZQriKzp07K7ucubi4mPT0dOXnyjIzM5XmCSGEXZSWwsSJ4OMDn34KXl56VySEqAFpympgw7YNVIQoWCmzQoBXgLIXn0K4Cn9/f6VNlD3uK1N5n5oQQthFSgqMGQMTJsCDD8p2RSHqEGnKamDb7m2g4shLATSOb6wgSAjX07x5c2VZR48eJTg4mMDAQGWZ+fn5lJaWKssTQgiltmzRzo+9/z4MHqx3NUKIWnLZpqyiQs0ZMID07HTwVhCUCZd1ukxBkBCup23btsqyjh8/jtVqVbpaZjKZZNiHEMI5/fgjvPoqzJsHCt/gEsJZlJWVkZ2dTXFxMQUFBXqXYxcu2ZTl5OTwzTffnPnn4uJipk2bxhtvvMHOnTtrlWW1WimqUDN50S/fj24duynJEsLV+Pn5kZCQoCSrtLSUtLQ0pU2ZwWCQLYxCCOdiscBTT8HWrTBnDgQF6V2REEqtXbuWO+64g+HDhzN48GAaNGhA3759+fHHH11u94pLNmV//fUXCxYsALRtTE8//TRr1qxh9erVPP/88/+YopaVlcXChQvZv38/5eXlZ/275ORkKn0rldTlX+BPq1atlGQJ4YpatGihLMse95VJUyaEcBqFhXD99dCsmXYptJub3hUJUSslJSXs2rWLefPmVdtg7du3j/feew+DwcC9997LN998Q0pKCjNmzOCDDz5g9erVOlRtPy75O/jIkSNnXtz99ttvZGRkMHfuXLy8vHjkkUf48MMPefnll898vsFgIDMzk/Xr12vj7ysqMBqNxMXFAVDkp2alzL3YnZiYGCVZQrii1q1bs3z5ciXDcI4dO0avXr0ICQkhJydHQXXSlAkhnERODtxwAzz7LPTpo3c1QpxXRUUFR48eZffu3SQlJZGUlERycjIA3t7eNG3alObNm2O1Wv/xtR9++CFNmzbl9ddfP/NjVquV1q1b0717d3bu3Mnw4cMd9t9iby7ZlO3atYvKykosFgvbtm2jf//+eP1vJGxERARVVVVnfX5oaCiTJ08+68fMZjMnT57kjWlvUOSvaPuih59MXhTiAoKCgoiLi+PUqVM2Z504cQKABg0aSFMmhHAdGRlw443w1lvQsaPe1QiB2WzmxIkTJCYmsmPHIbZuTSQx8RhFRWZKStyprGxMfv5unn9+AM888wwxMTEYjRffrBcbG/uPs9wGg4ETJ06QnZ1Np06d7PWfpAuXbMrCwsKYPn06rVu3JjExke++++7Mv9u6dSvXXXfdRTNMJhMNGzak2FwMoQqKKoXIsEgFQUK4tubNmytpysrKysjJySE6Oppdu3YpqAxyc3OpqqrCTbYJCSH0kJwMt9yiTVhs3VrvakQ9YrVaSU1N5dChQ+zenciWLYc4eDCJ/PwKiouNVFbGU1jYjJKS5sAwIIGz24xfsVj21equ3gEDBjBt2jQmT56MyWSiuLiYI0eOcPjwYW6++WZuvfVWxf+V+nLJVxYvvfQSL730EhUVFRw/fpyQkJAz/87b27tWU94OHD4APRUUlQ3tWrVTECSEa2vdujW//fZbjd5Fu5jU1FSlW4atVitpaWlyAbwQwvGOHYPbboPPPoOmTfWuRtQTH388nbfe+oLKSn8qK2MoLm5GYWFzoA/QGPCsYVJTduz4uVbP7tmzJ2+99RaffvopBoOBli1bcs0119C7d28iI11vocMlm7LTPDw8aNas2Zl/NpvNfPbZZ3h713y+fUFJgZKfJVOuie79u9seJISLCwsLIyYmhrS0NJuzUlJS6NevHwaDodr96rVlMBjIysqSpkwI4ViHDsHdd8PXX4OiKbVC1MSpUykkJf0b6GdjUhxJSSdq/VWNGzfmjTfeALQ3Rl35GJBLTl88H5PJVKuGzGq1UlJVouTZgcWBSifLCeHKVP1eSU1NxdPTk9BQFXuQNXKuTAjhUHv2wD33wPTp0pAJh+vSpRnu7okKktwoKjLblODKDRnUs6asttLT06nyrrr4J9aAV4EXTZo0UZIlhKtr3bo1FovF5pzT119ER0fbnHWaqqEhQghxUdu2wSOPwMyZINObhQ6aNm1CYOARJVklJUYl39tdlTRlF3D06FHK/MqUZLlXuhMcHKwkSwhXFxkZSVRUlM05paWl5ObmKj1XJitlQgiHOHgQpk6F2bMhPFzvakQ91bhxYzw81DRlVVUx/5imKP6fNGUXcOTIEfK985Vk+br7KskRor74+3lQW6SkpChdKcvKylJyPk0IIc4rI0PbsvjddyBv6Aod+fn54elZrCSrtLQhx44dU5LliqQpu4Bdh3ZhCVSwzFoBwQHyh6oQtdG4cWMlzU9qairR0dHK9qKXl5fLFkYhhP2UlPz/2HuFbygJcal8fNTkFBQ05MiRY2rCXJA0ZRdw8MhBCFQQlAfNmqh511+I+qJhw4a4u7vbnJOSkoKnp+dZV2PYwmQykZ6eriRLCCHOYjZrY+8ffxzatNG7GiEACA0NAApszrFaE9i9+7jtBbkoacou4FTKKfBXEJQHbZvV/G40IYTW/MTFxdmcI8M+hBB1xmOPwbBhMHCg3pUIcUbz5g2BYwqSEjh0qPZj8esLacouoLiiWMnPkHexN62atbI9SIh6RkVTZo9hH9KUCSGUe/99CAyEW2/VuxIhztK2bQKgYoUrklOnUhXkuCaXvjzaVmWVaiYv+pX6ER8fryRLiPokISFByWWRp8+VqVJYWKgsSwghWLgQduyAL77QuxIh/qF583i8vZMoLbU1yURJiYzEPx9ZKTuPwsJCKt0qlWS5F7lLUybEJVB5rkzlsI+CAtv31gshBABHjsCnn8LHH4OLX44r6qb4+Hj8/NRsOywrk1/j5yNN2XmcOnWKKj81F0e7VbgREBCgJEuI+kTluTIvLy9ldwVKUyaEUMJshgce0BoyDw+9qxGiWnFxcbi7n1SSVVnpS3GxmhH7rkaasvNISUmhxKtESZa3u7eSHCHqIxWrzKeHfag6V1ZUVERFRYWSLCFEPTZtGowfDwkJelcixHkFBATg7q5m235VVQzJyclKslyNNGXnceLUCYo8i2wPskhTJoQtTp8rs0VJSQkFBQVEREQoqcloNJKZmakkSwhRT+3YAdu3y2APUSd4eanJKS2NISUlRU2Yi5Gm7DwSjyWqGYdfCpERkQqChKifEhIS8FCwrSc7O1vZXWUGg4H8/HwlWUKIeqisDKZMgQ8+kHNkok7QmjLb3iAFKCqKJjlZJjBWR5qy8zh66ij4KQgqhIQGsi1BiEul6lxZTk4OoaGhCirSyLkyIcQle+YZeOghCA/XuxIhaiQsLBjItTnHao0mMVGasupIU3YeySnJypqypvFNFQQJUX+paspUrZSBjMUXQlyiNWugoABGjdK7EiFqLD4+BlDRTEVx7FiaghzXI03ZeeQX5oOn7TluJW40jm9se5AQ9ZiKc2XZ2dl4enri6+urpCZZKRNC1JrZDC+9BG+/rXclQtRKo0ZRgIpmKork5HQFOa5HmrLzKK8qV5LjW+FLVFSUkiwh6isV58pycnIAlK2WSVMmhKi1WbPgqqvAX8WhdSEcp0mTKAwGFU1ZMNnZtm+DdEXSlJ1HhVnNuGuvMi8iI2XQhxC2MJlMNr+5kZurfRNQda5MmjIhRK1UVcGXX8Kdd+pdiRC1Fh0dia+vihUuA2Vltg8McUXSlFXDbDZTYVXTlJlKTcrGcAtRn4XbeCC+srKSgoICZStlhYWFNm+pFELUI9Onw7hx6maLC+FAEREReHtnKMmSaz6r56Z3Ac4oNzcXi6dFSZaxwoi/bFMQwmZhYWE2Z6gci19WVkZRUZH8/hZCXFxlJXz/PSxbpnclQlyS8PBw3NykKbMnWSmrRlZWFmZvs5IsT5MnBrmDRAibhYeH27wypXIsvslkIisrS0mWEMLFffMNTJgACu5cFEIPoaGhGI05SrLMZh9KSkqUZLkSacqqkZOTQ4WHmjbewyR/AAuhQlxcnJKmTC6QFkI4VHk5zJwJt9yidyVCXDKTyYS7u5oFC4sllOzsbCVZrkSasmpkZ2dT6laqJMvd5K4kR4j6zsvLi+DgYJsyVI/Fl7vKhBAXtWwZjBkDbnJiRNRtqhZ6q6pCpCmrhjRl1cjMzqTcQ8FI/Erw81VxA7UQAmwf9nF6LL6qLYzSlAkhLmr+fBg7Vu8qhLCZu6J1hvLykDMTkcX/k6asGqkZqaBiOFIphAarefEnhLC9KTv9TUDlBEYhhDiv8nLIzoaYGL0rEcJmHh4GwPapw6WlwdKUVUOasmqkZ6cra8oiwmQcvhCqqBiLn5+fr6wpKy1Vs81ZCOGifvsNBg3SuwohlAgM9AdsfzOyqiqIzMw8m3NcjTRl1cjMyVTTlJVBeKhtLyKFEP8vMjISi8W26ypUTmAsKytTkiOEcFGydVG4kJCQYEDFClcg6ekyKOtc0pRVIy8/DzwVBJVBRKislAmhSnR0NG42HpbPzc0lKChIST0y0lcIcV6VlZCSAvHxelcihBKhoYGAimYqkMxMacrOJU1ZNfLz85U0ZYYKA5EhkbYHCSEAMBqNNl8iXVRUpGz6oqyUCSHOa80a6N9f7yqEUCY8XFVTFkBOToGCHNciTVk1SstKQcGEGU+zJ4GBgbYHCSHOiIiwbfW5uLgYPz81U1HLy8tt3k4phHBR27fDZZfpXYUQyoSFBQAqmil/8vJkUNa5pCmrRpW1SkmOR5UHAQEBSrKEEBpbV8qKi4txc3PD09P25XCz2UxxcbHNOUIIF3TkCDRponcVQigTHh6AikEf4E9BgTRl55KmrBpmi5oby92r3JW9Iy+E0Nh6gXRRURGAki2MJpOJvLw8m3OEEC4oJUVG4QuXEhDgh4eHimbKh5ISmV58LmnKqlFlVrNS5lblJk2ZEIr5+/vb9PWnV7ZUNGUGg0HG4gshqmexgFFeZgnX4evri4dHkYIkA1VVsvX/XPKnRTXMVjUrZcZKo7KBAkIITUhICFVVl/7GicqmDGTYhxCiGhUV4K7gcLoQTsTPzw93dzVb9s1mg5IcVyJNWTVUNWWGKoM0ZUIoFhAQYNNY/NLSUiwWi7JVbBmLL4T4h+PHoWFDvasQQikfHx9MJjXf88xqXmq7FGnKqqGqKaMSvL291WQJIQBtLL4tDZXVaqWkpERWyoQQ9nPypNxPJlyONGX2JU3ZOcxmM1asSrIMFgMeHh5KsoQQ/8/Wc2Uq7yqTM2VCiH/w9NS2MArhQry8vDAa1bwRaTarea3tSqQpO0d5eTlWk5pfKCaDSUmOEOJstm49LC4ulqZMCGE/AQFQIJfjCtfi7e2NwaDme57FImfKziVN2TnKy8vh0o+rnMVokJ9eIexBmjIhhFMLCID8fL2rEEIp7X7PciVZFhm++A/SNZyjoqICq1HNSpk0ZULYhzM1ZXKmTAjxD4GBslImXI6npycGg5ptudKU/ZN0DeeorKxUtn1RmjIh7EPFXWUyfVEIYTf+/tKUCZdjMpkANXf5Wq0GrFY5V/Z30jWcQ+VKmcEg+2WFsAcVgz68vb3/9w3GNrJSJoT4B5NJlgKEyzEYDMruQ7daTTbdOVp9Zt1u8lyqKbNarWc+AD788EMqajn9qKqqCqtBVsqEcGZ+fn42/eF7+gJpHx8fm2uRpkwIUa3KSr0rEEI5desNbpfUlN15553V/vimTZuYPHmyrUXpStFIC/19//33mEymM6tT3t7evPjii4SEhODl5cXo0aMx/q+9T09P57777sNkMv3jo6CgAHOFXJ4ghDMLDw/HbDZf8iXSp5syX19fCgsLbarFIu+GCyGqEx8Px47JJdLCpRgULVxUVhZxzz33YDKZMJvN//iYNWtWtbtZli1bRllZGSaTttJmsVgwm82EhoayZMkSLBbLmdf7dY3LNGV33303TZs2JSoq6syPFRcX8/nnn1NVVcXIkSPP/E+KiIjghx9+qPYXwd69e/n9td+V1GRAti8KYQ9eXl54e3tTeYnvRJ/+uktt6v7ObDbX6W8CQgg7GTAAfv8dJk7UuxIhlFG1UubmFsiTTz5JcHBwtYsk5/uempOTQ4sWLf7x700mE0VFRXX6+7HLNGWzZ8/mP//5Dy+88AI9e/YEoEmTJvz222//+J9jMBj+N9bzn9LS0kDR9WJypkwI+7GlKTu9ZcLd3d3mOsxmM5WVlef9M0UIUU9dfjk8+aQ0ZcKlqHptazC4ExERQXBwcK2+LjAwkAULFpyZoGw0Gv931k17ra/izVa91N3KzzFixAh69uzJTTfdRLt27Xj++eexWCy1PndisViwomjQh6yUCWE3tvzBe7opU/GHt8FgoKKiQpoyIcTZoqMhLQ2sVpUHcYRwEcZLOhseFBREy5Yt8fb2tkNN+qqb63vnERISwtKlS4mPj+fKK6+koqJCyXQ1IYTzcZamzGg0yrAPIUT1GjeGo0f1rkIIJ3RpI/H37dvnkg0ZuNBK2d/dd999DBs2jLVr1+pdihDCTpylKTMYDJSXl9ucI4RwQQMGwG+/wXkmxgkhxGkutVL2d40bN+bWW2/VuwwhhJ04U1Om+q4VIYSLGDEC5s7VtjAKIf7GKrMXzuGyTdmlMhqNGKxqfpGoOpsmhPgnW7YmW61WqqqqlB0INpvlGg0hRDV8fKBXL1i1Su9KhHAy0pSdS5qyc6gco1nXbxYXwpnZOjlRZVMmK2VCiPO691748EO9qxBCCXWvbc11dnS9vcjPxjlMJpOylTIhhP3Y2lBJUyaEcIiICO1jzx69KxHCZurWG+rufWL2Ij8b5zCZTBgssn1RCGdn62RV2b4ohHCYRx6Bd9/VuwohbGaxqEpS9z3YVUhTdg43NzdlK2UWdb9yhRDnkJUyIUSd0aIFFBZCcrLelQhhE3UrZdKUnUuasnO4u7srWymzIE2ZEPbiTE1ZZWWlkhwhhAubMgWef17vKoSwiVXRwoXBIE3ZuaQpO4e7uzsGs6LtizLoQwi7caamTLYvCiEuqnt38PeHX37RuxIhLklVVRVWq21HB04zGGT64rmkKTuHp6enupUyq6yUCWEvKs6U2TrB8e9ZQghxUS+/DG++CQUFelciRK2Vl5cDnkqyjEZpyM4lTdk5PD09QdHrK2nKhLAfZ1opk6ZMCFEjvr7w3HPwxBN6VyJEraltypTEuBT5KTmHyqbMbJUtTULYi62jdKUpE0Loon9/7RWpXCgt6piysjKsVi8lWTZudnFJ0pSdw2QyYVT002I1WqmoqFCSJYQ4m4rhGqrOfcr5USFErbz+uraVsahI70qEqLHS0lIsFm8lWbJS9k/yU1INk1FR++4OJSUlarKEEGexdXXKZDLJgA4hhD78/OCpp+DRR1XOGBfCrkpLSzGbfZRkyUrZP0lTVg2TQc2vFKubVZoyIezE1pUylU2ZTJASQtTaoEHQsCG8847elQhRI8XFxcqaMqNR3ow4lzRl1VDVlFncLRQXFyvJEkKczZmaMlvPtwkh6qknnoBDh2DuXL0rEeKiiouLqaz0VZLl5iZvZp5LXklUQ9X2xSq3Kopkv7gQduFM2xdlpUwIcUkMBvjgA/jhB9i4Ue9qhLigoqIiKiv9FCRZkXuj/0masmq4mRRNZJOmTAi7caaVMmnKhBCXzN0dvv0Wnn0WDh/WuxohzqugoIjychVNWQne3moGhrgSacqqoWr7YrmpnMLCQiVZQoizSVMmhHAZAQHwzTdw112QlaV3NUJUKyurAAhQkFREQIC/ghzXIk1ZNXy8fJTcVVbuVk5+fr7tQUKIf3CmpkzOlAkhbNagAbz7LtxyC5SW6l2NEP+QmVkAqGimCggMlKbsXPJKohoBAQFQbnuO1cNKRnaG7UFCiH9wpqZMVsqEEEq0bw+PPw7XXgt5eXpXI8RZtJWyQAVJhYSFqchxLXLMrhrBQcFQBtg6YMYL0rLTVJQkhDiHNGVCCJfUv792j9m4cfD99xAVpXdFQgCQlZUHBClIyic0VMU2SNciK2XVCA8J15oyW3lBZnamgiAhxLmcafqibF8UQijVtSu8/z5MmABHj+pdjRAA5OTkoaYpyyM6WkWOa5FXEtWICI1Q05R5S1MmhL3ISpkQwqW1bKkN/5g8GXbv1rsaIcjPV3OmzM0tT7YvVkOasmpEh0cra8qycmSKkhD24ExNmRBC2EVcHMyaBVOmwIYNelcj6rmKCisqWgcvr1xCQkJsL8jFSFNWjYiwCDwrPW0PcofikmLbc4QQZ7FYLE7VlMlKmRDCbsLCYO5ceOMNWLZM72pEPWbjt90zPD1zCQ4OVhPmQqQpq0ZISAhelV5KsiqqKpTkCCH+X15eHhaL5ZK/3mg0YjAY5EyZEKJu8PeH2bNhxgx45x2wWvWuSNRDFYpe0rq7Z8tKWTXklUQ1QkND8axQsFIGVJilKRNCtZycHEymS7/k/fTXykqZEKLO8PSEb78FNze48UaQe1CFA5nNZiorL/377t8ZjdmEhoYqyXIl0pRVIywsDLcyNbcFVJgrsMo7WkIoVVhYaNPXe3h4ALafSztNmjIhhEMYDPDgg9rHNdfAzp16VyTqiZycHCwWNatbJlMJvr623jvleqQpq0ZwcDCGUjUvssweZptfQAohzmbr7ykfHx8ASkpKVJQjTZkQwrF69tQGgLzwgjahUQg7y8jIoKoqXEnW/94XFeeQpqwaJpMJd6O7kiyzt5mMjAwlWUIITUFBgU1fr7opkzNlQgiHOz0A5PhxuOMOKC3VuyLhwjIyMigri1CSJU1Z9eSVxHl4mtScKSvzKpOmTAjFnG2lzNNTzZ8XQghRKyYTPP88jBsHV10Fhw/rXZFwUamp6RQXRypIsuLpKbtLqiNN2Xl4uql5kVXsUUxaWpqSLCGERkVTZrFYKCtTcSGhNGVCCJ0NHgxffaWdNfv6a5nOKJQ7ejQdiyVKQVIuoaFBCnJcjzRl5xHoHwjltudU+VRx5MQR24OEEGeo2L5YWlqqbAiPu7ua7c5CCHHJ4uLg558hOxuuvlrb1iiEIkeOpAIqmrJ0GjRQkeN6pCk7j9joWChSEOQHh0/IdgIhVLFYLEpWylRtXbRYLGe2QwohhK7c3GDKFJg2De69Fz78EGy401GI006eTAWiFSSl0bChNGXVkabsPBrGNVTTlPnD8ZPybpUQqmhjeW17kaGyKTObzTLaVwjhXJo1g0WLtBH6o0bBoUN6VyTquMzMHMD2kfgGQypNm0pTVh1pys6jWUIzUDHJ3gfSM9MVBAkhAHJzc226OBrUNmUmkwkvLy8lWUIIoYzRqK2WffQRTJ0Kb74JVVV6VyXqKO0Itu0DOvz8UomNVbHi5nqkKTuP+Abx+JYrePfbCGWVaoYJCCFsH/IBapsyDw8PGYkvhHBeCQkwfz5ERsKIEbB7t94ViTpI0VwsvL1TiImJURPmYuSVxHnExsbiU6bmnEhppdwdIoQqztaUyZAPIYTTMxjg1lvh22/h1Vfh6aehSMUZDVEfFBYWUlnpryTLzS2F2NhYJVmuRpqy84iNjcW9SM2LrUq3SiUvJIUQtk9eBLVNmYzDF0LUGVFRMGMG9OkDo0dr4/NlEIi4iJMnT1JZGacky929CD8/PyVZrkaasvMICAjAvUpRU+ZfyYkTJ5RkCVHfZWVl2fT1JpMJT09PWSkTQtRfw4bBL79AcTEMHQpr1uhdkXBiJ06coLhYTVMmR7DPT5qyC/ByV/Mrp8i7SJoyIRTJzMy06etPj69XeaZMCCHqHHd3uP9+mDULFi6E66+HI3KvqvinQ4dOUFISryDJgo+PtB7nIz8zF+Dj4QMKVvVLfUrZf3i/7UFC1HN5eXlKLo4GdU2ZbF8UQtRpwcHwzjvw73/DE0/A449Dfr7eVQknsmfPcSBBQVIaMTGRCnJckzRlF9AguoGau8qCYM+hPQqChKjfkpOTcXNzsylDVsqEEKIazZvDnDkwZAiMHQuffCIj9AUAhw4dAxoqSDpB8+YqVtxck22vbuoIq9WKwWD4x99XVVXh5uaGxWIhLS2N48ePc+zYsTN/Pbr/KHgDATYWEASHtsvFjULYKiMjw+aM0xc9FxcX25wF0pQJIVzMFVdA//7w5ZfaebOHHoKRI7UJjqJeysrKBwIVJB1lzZoF3H9/GgkJCTRs2PDMX8PDw8+8Pj/X31+7uzKXXyn7888/SU1NPfPPf2/ORo4cyaxZsxg9ejQvvPACq1atwmKx0KdPH55++mmmPDIFQ76CXwSekFuQa3uOEPWcrefJAIKDgykpKaGiokJBRbJ9UQjhgkwmuPNO7X6z3bu11bNFi8Bq1bsyoQNFG0sICDjBW29NY8qUKXTr1o2SkhJ++eUXnnjiCa666ip27NiB1Wpl5cqV9OnTh2uvvZYtW7acee1eXl7u0tPMXX6lbMqUKfz73/8+c1Hd999/T8+ePWnatCkA8fHxLFq0qNqvbda0GYGlgeSRZ3MdJZWKfkULUY+lp6fbnBEcHExurro3SWT6ohDCZQUEwFNPaQNBPvhA+3jgAe0S6nqwciG0XSUVFb5Ksnx8jtK06Y3ExcXRsGHDaj9n4cKFfPbZZ9x6660cPXqUF154gWeffZbLLruMBQsWsGDBAmbMmKGkHmfj8itlsbGxVFZWnvnnX3/9lS1btgAQHR3N0aNHz/u1jRo1wrvIW0kdFR4V5OXlKckSoj6qrKwkOzvb5pzg4GBycnIUVKSRlTIhhMs73ZzNmQO7dmnbGhcvlpWzeiApKYmKikZKstzcUs4skpzP1q1b6dWrF3fccQfPPvssXbp04bXXXgMgJyeHRo3U1OKMXL4pi4uLY/v27Wf+OTMzk4ULF5KUlITBYKC8vPy8XxsVFYVbqZrFxDL/Mo7IqFkhLtmpU6ewKngBoHqlTM6UCSHqjb83Zzt3SnNWDyQmHiY/v6mSLG9vCyaT6YKfc/jwYZo0afK/z/fmxRdfJDQ0lDfeeIPdu3efd4XNFbh8U3b55Zezbds2pk6dyp133knLli3p1KkTnTt3xsvLi5tvvvm8X2swGPBx81FSR75PPgcPHlSSJUR9lJGRYfNBX5PJRGBgoNKmzM/PT1mWEELUCQEB8PTTZzdnS5ZIc+aCtm8/TEWFiqbMjL//hRsygJiYGNLS0s7scjMYDLz++uvs2rWLTz75hNatWyuoxTm5fFM2cuRI7rzzTnbt2oWXlxd33303Dz/8MPv37+ejjz666HjtAJ8AUDAR1hxsZsueLbYHCVFPqThPFhgYiMFgkKZMCCFU+HtztmMHDBsG8+aB2ax3ZUKR7dsPAc0VJJ2kYcO4i37Wm2++ye23337mvLbFYiEiIoInn3yShIQEIiIiFNTinFx+0AfAFVdcwRVXXHHWj0VHR9foa5s3bc6WvC0QZmMRobBr3y4bQ4Sov1RNXgSUNWVms5nAQBVjgoUQog473ZwVFmqj9AcPhtGjYdIk8PfXuzphgxMnUoGavWa+sEQ6dbr4ipvRaMT/b79mjEYjVquVtm3bcuTIEYxG111Pct3/MkW6tO0Cts8WAB9Iy0xTECRE/WO1WpXcURYcHIzZbKagoEBBVdo3C2nKhBDif/z94eGHYflyiI6G8eNh6lQ4dUrvysQl0q70tH3SppdXIp06Nbukrz19dMGVGzKQpuyi2rdqj1+hmu1JRRVFSgYVCFHfZGdnU6LgopTg4GDy8vKU/T709va+6KFlIYSod9zcYNw4WLYMxoyBxx6DW26BrVv1rkzUQn5+PmVlAUqyAgISadbs0pqy+kKasoto3rw5fkVqmrJKn8qzLrIWQtTMyZMnlTQ/qicv+vqqubtFCCFcVs+eMGMGvPACfP89jBwJP/8MFovelYmLOHDgAKWlLZVkeXgcdelx9ipIU3YRsbGxuBepuRy2MKCQ/fv3K8kSoj45fvy4khzVTZkM+RBCiBpq3Bj+8x+YPh0OHoQrr4SPPz69P044oV279pOX10pJlo9P1ZnhHaJ60pRdhNFoxNddzbvhRYFFbNkpExiFqK0TJ04oyQkJCZGVMiGE0FNQkLad8ZdfIDAQrrlGO3cmd7k6nfXr92G1qhhBX05goNzpeTHSlNVAZGgklCoICodN2zcpCBKi/sjLyyMrK8vmHB8fHzw9PaUpE0IIZ+DuDjfeqDVnY8bAK69oExvnzoX/3VEl9LV3byKg4hxYIm3ayHmyi5GmrAY6tesEtr8mhEBIOpakIEiI+uPw4cNKJi6pHocP0pQJIYTNDAbt3NlXX8E330Bqqnbf2VNPwdGjeldXr+XmVgC2r3AZDPvp1UvNNkhXJk1ZDfTq3Av3HAX7YA1QUFYgExiFqAVVWxelKRNCCCcXHAwPPAC//grDh2vDQa6+Gn76Caqq9K6uXiksLKS0VM0dc8HB++jQQcU2SNcmTVkNtG3TlqDCICVZFb4VJCcnK8kSoj5Q2ZSVlJRQXl6uJA+kKRNCCLswGKBPH/j2W/jiCzh+HIYOhWef1f5e2N2ePXsoKWmjJMvbez+tWslK2cVIU1YDTZs2xTPfU0lWXmAeu3fvVpIlhKvLzs4mJydHSVZkZCSZmZlKskC70FqaMiGEsLPQUO1C6l9/1SY2PvssjB2rjdWX1TO72bx5F3l57ZVkeXkV4u+vZtXNlUlTVgPu7u74uakZfV0aUsqaP9coyRLC1R05ckTJeTKAqKgo0tLSlGQBmM1mQkJClOUJIYS4AIMB+vWD776DTz+FxERt9WzqVJA3u5X7449dQAcFSRUEB8vkxZqQpqyGosOj1UxgjISNWzcqCBLC9anauuju7k5oaKjSpszd3V3uKRNCCD2EhcGjj2qrZ2PHalscBw+GN96Akyf1rs4lHDx4DEhQkHSA9u1bKMhxfW56F1BXXNb5MlYfWw0NbQzyhtTMVBUlCeHyVF0aHRkZicFgUNqU+fr6YjAYlOUJIYSoJYMBunfXPqqqYOVKeOYZyMmBq66Ca6/VhoeIWrFYLBQWGgDbv8eZTLu4/HI12yBdnayU1VDf7n3xyfFRklVCCcVyg70QF5Senk5eXp6SrKioKMxms9IzZXKeTAghnIibGwwZog0HmTkT/Pxg8mS47jqYNw/KyvSusM44cuQI5eVNlGSFhOyic2dpympCmrIa6tChA4F5gUqyikOL2bVrl5IsIVxVUlISJpNJSVZUVBRZWVlUKTwULk2ZEEI4KV9fuOEGrRn74ANIS4NrrtGatNWrwWLRu0Kn9tdf28nJ6awky9PzEC1ayPbFmpCmrIaio6PxLFU0gTEoj7Ub1yrJEsJVqTpPBuqHfAAEBQUpzRNCCGEH4eFw332wdCk8+SSsW6etqD3+OOzcCXJ37D/8+utWKivVNGX+/pW4uyu467cekKashgwGA8E+wWBWEBYNqzasUhAkhGuyWq3KzpMZDAYiIyNJTVV7ljNYzikIIUTd0qSJNlJ/xQptW+O332oDQl57Te4/+5vt2/cDKu4VS6VhwygFOfWDDPqohQ5tO7A9aztE2hjkD8eSj6koSQiXdPjwYYqLi5UM0ggNDcXd3V1WyoQQQmgMBujSRfswm2HVKnjxRcjIgFGjYNw4qKdXnlitVnJzzahpEbbTv38nBTn1g6yU1cKVva/EPV3NEmyRtUiGfQhxHgcPHlQ22TAqSnuXLj09XUkeaN+0pCkTQggXYDJpl1J/9RXMng1BQXDXXVpjNmcOlJToXaFDHT58mLKypkqygoK20aePmm2Q9YE0ZbXQvVt3QvLUvHNSFFrEtm3blGQJ4UqsVisHDx5UlhcVFUVeXh6lpSouGtRYrdYzzZ4QQggX4eOjbWucMwc++QSys7WBIddeC19+CQrf3HNWGzduITu7m5IsX9+ddOig4gLq+kGaslpo3LgxngVqhn3kh+Wzcu1KJVlCuJJjx46Rn5+vLM8eQz4CAgLk4LIQQriy0FC4+25YuFBryPz8YMoUGD4cXn8d9u1zySEhS5f+SVVVdyVZvr7FMqm4FqQpqwWj0ahu2EcMrFwnTZkQ5zpw4ABGo7o/mqKjo+U8mRBCiEsXGKitoH3/vdakde8On36qTXF89FFYs0a7vNoF7N6dCKjYvphBQkKEgpz6QwZ91FKX9l3YmbkTbN255AUpWSlKahLCVajeuujn54evr680ZUIIIdRwd4eBA7UPqxX27NEatddfh4gIbVDIkCHg7693pbVWXl5OQYEHatZstnDllWq2QdYX0pTV0tB+Q5n+43QqoipszirxLiE5OZnY2FgFlQlR9504cYKcnBxlK2Wnz31JUyaEEEI5gwHatdM+AFJSYNEiuPVWrWEbPBiuugrqyOu87du3U1ysZlpiSMhmLr98hJKs+kK2L9ZSz549CclVM+wjJzSHdevXKckSwhWo3roYFRVFWVkZeXl5yjJBmjIhhBDViInRJjfOn69tdYyMhGeegaFD4aWXnP6y6hUrNpKb21NJlo+PDPmoLWnKaik2NhbvYm8lWRUxFSxauUhJlhCu4NChQ0rzGjRooPzSaIDAwEDlmUIIIVyInx9ccw18/TUsXgz9+8P06drWxgcfhN9+g8pKvas8y4oVm4DLFCRZCQiowNNTzXC8+kK2L9aSwWAgKiSKo+VHwdZfa6Gw/dftSuoSoq5LTk4mMzNT2UqZwWAgISGBP//8U0neaVVVVURG2nqDvBBCiHrDzQ369tU+rFY4eFA7h/buu9q9aCNHwrBh2t/rxGq1kpJSAAQoSDtEu3bNFOTUL7JSdgmu6HsFJCsIMkK+JV8ukRYC2Ldvn9Kti+Hh4Xh7e3P8+HFlmQDe3t7418ED3EIIIZyAwQAtW8LUqbBkidaYlZbCHXfA6NHw/vtw7JiaZ6Wnw2ef1ehTjx49SklJYyWPdXffxMiRarZB1ifSlF2CIf2HEJQVpCSrIKxA+Tv5QtRFiYmJSvMSEhIwm82cOnVKaW5QUBAGg0FpphBCiHoqIgJuu027sHrmTGjYEF55Rdvm+Nxz8NdfYLFcevaJE/D88xc9y7Zy5Vqysvpc2nPOERq6gb59pSmrLWnKLkGXLl3wy/JTklUYVciC5QuUZAlRV6WlpSmfkJiQkEBycjKVivfsy3kyIYQQduHtrY3U//xzWLZMu6h6/nxta+M992g/VlZW8zyDAV5+WdsW+cADF2zufvrpD8zmvrb/NwDe3ieIj49XklWfyJmyS+Dt7U2geyCnLKdsb2tj4I/f/1BSlxB11d69e5VuXQStKduxY4fSTJDJi0IIIRzAaITLLtM+AA4f1sbtf/QReHjAgAFw5ZXQvLnWfF3II4/At99qo/q//FL7+nMkJiYDDRQUnkeDBoGyo+QSyErZJerSvgtkKggyQXZZNuXl5QrChKh7rFYre/bsUZoZEhKCv7+/8vNkAMHBwcozhRBCiAtq2lRrrhYtgm++0bY5fvihtoo2eTLMng3Z2ef/+ltvhXHj4Prr4ZxZBikpKRQXxygqdAPDhvVSlFW/SFN2icYMHoNXipeSrMKwQrZs2aIkS4i6JjExkewLfSO5BAkJCVgsFk6ePKk0F2T7ohBCCJ35+2sTG//7X/jlF+3sWWGhtkVx2DB46in4/XeoqDj76666Ch56CK69FnJyzvzwypVryMq6XElpoaHrGDJEzdm0+kaaskvUr28/QrLUXCKdH53P/KXzlWQJUdds377dLlsX09LSlK9Am81mYmNjlWYKIYQQNomPh9tvhx9/1CY6jh0LGzdqf736avjPf2DfPm3Yx+WXw6uvwvjxkJICwOzZq6msHKCkFF/fXXJp9CWSM2WXKDQ0FL8qP7ACtm6bjYFVa1apKEuIOqWoqIiDBw8qz01ISODAgQPKc319feVMmRBCCOdlNEKXLtoHaFsV16zRhofs3w8xMdpZtBdfhJtugs8+Y//+E4CKwRylRES4YzKZFGTVP9KU2aBti7Ycyj0Eti6YuWnnykpLS/H29lZSmxB1wbZt27Bc6qjf8wgMDCQ4ONgu58nCw8Pl8LIQQoi6w9dXm+I4fLj2z8nJ8Ouv8PHHkJLCiWbNcA+5StHD/mTQoB6Ksuof2b5og7HDxuJx8p8TbC5FfkQ+69evV5IlRF1gtVrZuXOn8tzTY3hPnDihPDssLEx5phBCCOEQRUXaatnRo5CfD02bsqJDR4ry+yuJDw5ew1VXqTmbVh9JU2aDKwZcQWhGqJKswgaFzFw4U0mWEHVBUlISmZkqRpieLSEhgYyMDEpKSpRnR0REKM8UQggh7CIzE376CR59VFspmzgRduz4//vPFi9mRmhbTplvUvI4P7+/6Nq1q5Ks+ki2L9ogMjISv0pF58oiYf0KWSkT9Yc9BnyA1pQdO3ZMea7VapWVMiGEEM6trAwefBBOnoSwMOjTRxsC0rKldt7sbywWC0eOZALhCh5cSkSECXd3dwVZ9ZM0ZTbq2LojiTmJYOuCmREKjAVkZWXJCz/h8kpKSti/f7/yXF9fX8LDw1mzZo3ybKvVSlxcnPJcIYQQQhlPT3jmGW0i40Xs3r2b4uL2ih68gaFD5X4yW8j2xUuUk5PD/PnzKUgtwCtJzX1lWVFZ/LLiFyVZQjizbdu2YTablefa8zxZUFAQXl5qfq8LIYQQdmEw1KghA5g7dwVZWYOVPDYoaB5Hj+5k6dKlFBUVKcmsb6Qpu4CqqqozE9xKSkpYsWIFU6dOZdiwYdx///1kZWXxyiuvEJKt5r6yioYVTJ8/XUmWEM5s165ddslt1KgROTk5FBQUKM8OD1exvUMIIYRwDosXrwXUXPQcEHCMqVOncvjwYSZOnMjIkSN5/vnn+eOPP6g49xJrUS1pyi5g8+bN3HTTTRw4cICJEyeyZ88ebrzxRpYsWcKPP/7InXfeSZcuXQgyBIGKqd4BcPD4QaxWq4IwIZzTsWPHSEtLs0t2s2bNOHz4sF2yZciHEEIIV1FUVERWlhugYgdIHvHxAbRv354HH3yQuXPnsmDBAoYPH866deu45557AG2BY968eVx33XVs2LBBwXNdi5wpA7744gs8PT258cYbz1x4Zzab6dWrF23btmX58uXMnj37vF/ft0df9qXug1jbaykKLmLnzp107NjR9jAhnNC2bdvsMuAjPDyc4OBgDh06pDz7dL4QQgjhClauXE1OzgAlWUbjKq65pv9ZP+bm5kaPHj3o0eP/7y17/vnnKSwsxNvbm9mzZ3Pw4EHeeecdoqOjeeONN+jUqZOSeuoqWSkD1q5dy6233sq9997LypUrAc40ZwMHDrxoN3/DmBsITA5UUktWTBYz5s9QkiWEsyktLWXfvn12yW7evDkVFRV2mbxosVhkpUwIIYTL+PbbpZSUDFeSFR7+K6NHX/xs2oYNG7j//vv55ptvWLBgAXv37uWLL74gLi6O77//nsrKSiX11FXSlAGTJ0+mT58+jB07lkceeYR7772XZcuWkZGRwd69e2nSpMkFv75nz54EZAaoKSYelq5aqiZLCCezdetWqqqq7JLdvHlzkpKS7JJvMpmIiYlRniuEEEI4mtVqZceOI8CFX9/WMA0/vyQaN258wc86deoU5eXltG3bFgBvb2+mTZtGjx49+OSTT/jjjz/Izs5WUE/dJU0Z0KVLF8rLyxk8eDBbt27Fzc2Njz76iIEDB7J48WLuuuuuC369h4cHMUExUKagGBPkWHLq/S9M4XrMZjN//vmnXbK9vb2Ji4uz69ZFe2y5FEIIIRxtz549FBW1VZR2mI4dm170s5KSkujZsyegNWgPPfQQBoN2yW9WVhbu7u5ERUUpqqlukjNlgI+PDwaDgTVr1nD55Zfz3//+lxMnTpCTk1Pjs13XjriWLZu2YGlp+8SPrNgsfl78M5NunWRzlhDOYtu2bRQUFJz5Q1ilpk2bYjQaSUxMVJ4NyN2BQgghXMYPPywmM3Okkiwfn1+4+eahF/28fv360a9fPwAaNGjA3Xfffebfff/997Ru3VpJPXWZvPX7Py+//DKNGjU688/x8fG1GrZxzahrCE9VMwigolEF3879VkmWEM7AarWyefNmuzRkoG1dTElJobCw0C75MuRDCCGEq9BG4fdVkhUSsppBgwbW6mv+PmW8vLwco9HIddddp6SeukxWyv5n0KBBNn1948aN8S/2J92aDra+7vSFpLQkKioq8PDwsDFMCP3t27ePjIwMuzRlRqORpk2b2m1rJEhTJoSryc+H/fth717Ytw/y8sDbW/vw8dH+GhUFrVtDq1bg7693xUKokZGRQU5OMOCuIK2UiAgLvr6+tfqqv78W8PDw4NFHH7Xbm7Z1iTRlCvXo3IPDGYch0vasvMg8Vq9ezZAhQ2wPE0JnGzdutNsfuHFxcXh7e9vtPJnZbCY2VsF9F0II3a1dC88+C2vWaP9sMECTJhAaCqWlZ3/8/Wh3fLzWoLVuDV26wIABEB2tz3+DELaYM2cRmZmjlGQZDKu5+ur+NmZIM3aabF9U6LbrbiPguJopjIWNCvn8x8+VZAmhp6SkJE6cOGG3/ObNm1NUVERqaqpd8gMCAggODrZLthDCMY4fh6FDoV8/bVXsq69g2zYoLobERNi0CXbuhEOH4ORJyMqCoiL46y/47ju48Ubw8ICFC2HCBIiJ0VbQ7r0X5s7VPl+IuuD775dRVTVMSVZ4+BKuu26EkiwhK2VK9enTh8CpgRRQYHtYGGzdsBWLxSJT30SdtnHjRrv+Gm7evDmHDh06a4+6SjIKX4i6raQErroKcnNh9mwYOxZq8keSr6+2Ktaly9k/np4Ov/8Oq1fDb7/Bxx9rP96+PQweDOPHQ9eu2iqcEM6kqKiI5OQqQMXdulb8/RNp1qyZgiwBslKmlIeHB40iG0GxmryCsAL++usvNWFC6CAlJcVu2woBgoODCQ8Pt+szpCkTou6yWuGee7TVsCVLYNy4mjVkFxIZCdddB5988v8ra999B507w7ffQvfu2pbIJ56A7du1GoRwBosX/0J29sUnJdbMbnr1aqcoS4A0ZcrdMvYWPI6qGc6R0zCHz6Z/piRLCD1s2LDBrvvFmzdvTlVVFUlJSXbJt1qt0pQJUYed3n740UfQzk6vHxs0gJtvhq+/hpQUbfXsyivhiy+0Rq15c3jmGdi1Sxo0oa/PP19IaekYJVmBgYu4/farlGQJjTRlil09+mrCTim60ygaVm9YbbdtWULYU05ODnv37rXrM5o3b86xY8eoqKiw2zP+flWGEKJuWbtWm6Q4YYJjnufmBldcAZ9+CqmpsHy5do7to4+gQwdtUMjzz2tTH4VwpPLychITcwE1FzQHBq6jd+/eSrKERpoyxUJCQgh3D4dKBWEGKAgqYNeuXQrChHCsDRs22PUNBQ8PDxISEuy6dTEyMlKupRCiDlu/XttO6K5i+nctubtrZ8y+/BLS0rTtkz16wHvvQdu22se//w3Hjjm+NlH//PLLr+Tk2Hb90/9LoUWLCNzcZDSFStKU2cG4keMwHlPzU5vVMItPvvtESZYQjlJUVMSOHTvs+owmTZrg5uZGYmKi3Z4RLTOvhajTtm3Thm7ozcMDhg+Hb77RBoX8/DN06gRvvQWNG2uDSH75BSwWvSsVruqjj+ZSXDxWSZa390LZumgH0pTZwYTxE4g4EaEmLBZ+XfOrbGEUdcqmTZuoqqqy6zPatGlDWloaubm5dnuGnCcTom7z9QU77m6+JJ6eMGoUfP+9tsXx00/hxAkYNkw7f/b225CTo3eVwpWUl5ezf38GEKckLzR0OSNHqhoYIk6TpswOGjZsSFBFEJgVhBkhPyifnTt3KggTwv7Ky8vZunWrXZ/h4eFBixYt2LNnj92eYbFYiItT8w1MCKGPyEhtZcpZ+frCHXdoUxrXr4fLLoOnnoLYWLjtNrDzH6Winli2bAU5OYMVpeUSF+eBr6+vojxxmjRldjLyypGg6L7crEZZfPT1R2rChLCzdevWUVpaatdntGjRAnd3d7s2Zd7e3rJ9UYg6LjJSO8/l7AwG6NULpk/XRuw/9xysXKltvezRQ5sgWVamd5WirvrwwzkUF49TkuXhsYhJk0YqyRJnk6bMTm678TalWxhXrl8pWxiF0yssLGTTpk12f067du04ceIEeXl5dntGTEyMXcf5CyHsLzYWjh6tW6PoIyLgySchKQkWLoSgILj1Vm30/tSp2n+PEDVVUlLCwYO5QKySvPDwRVx77SglWeJs0pTZSatWrQgsCgQVh3YNkBeax59//qkgTAj7+f3336msVDF69Px8fHxo0qQJu3fvtutz5DyZEHXfgAHaytP+/XpXUnsmkzYAZPlyOHgQbrkFPvtMu5h65EhYulQGg4iLW7BgCVlZIxSlFRIdXUVwcLCiPPF30pTZ0bABw+Ckmqycpjn85/P/qAkTwg4yMzPZvn273Z/TunVrDAaD3e9Ak62LQtR9AwZo95QtXqx3JbZp3hzeeQeSk+Hzz7VLqkeMgGbNYNo0yM7Wu0LhrD78cA6lpdcqyXJ3X8SkSbJKZi/SlNnRXbfeRcRxRVsYI2Djjo12n2gnxKX6/fffsTjgbdt27dpx5MgRSkpK7PYMi8VCw4YN7ZYvhHAMb2+48kpYtEjvStTw8YHbb9cGgGzcqJ1De+YZbWvjpEmwZYveFQpnkpuby/HjFiBMSV5ExAKuv36MkizxT9KU2VHr1q0JLFS0hRHIjc5l+YrlasKEUOjkyZN2X7kCCAwMJCEhwe5bF0NDQ/Hz87PrM4QQjjFqFGzY4FqrSQaDNqnx++/h1Cl4/nlYvVq7KLt7d5g/X7Y2Cvj++7lkZKhZJYMCYmIqCQkJUZQnziVNmZ2NunIUHFeTVdi8kHc/e1dNmBAKrV692iHPadu2LZWVlRw4cMCuz5HzZEK4jpEjtSbmxx/1rsQ+wsPhiSfgyBHtUmpfXxg7Ftq21Zo2Ox/zFU7syy8XUlmp5pJnD4+F3H77aCVZonrSlNnZ3RPvJvJYpJqwQDiYcpDCwkI1eUIokJiYyOHDhx3yrHbt2nHw4EEq7HwbrDRlQriOqCgYNw7eew/MKu4PdVImk7YquHq1dudZkybacJDmzeHjj2Wkfn1z9OhRMjIiAR8leeHhP3H99VcryRLVk6bMzpo1a0ZweTAoOgqWkZDB9JnT1YQJYSOr1cqqVaswGu3/R0l4eDhRUVF2vZsMtP+m2Fg1o4OFEM7hkUe0lSRXOVt2Mb16af+tO3Zo2xzvvx8aNdKGgsj7uvXD++9/T1razYrSsmjY0J3AwEBFeaI60pQ5wPVXXY8xSc1PdUWzCj6d/qmSLCFstWvXLlJSUhzyrLZt21JWVkZiYqJdn+Ph4UF8fLxdnyGEcKzu3aFPH22CYX3SoQPMmAEHDmjTGp9+GhIS4IUXXOuMnTib1Wpl4cI/gH5K8ry953LvvarOponzkabMASbfMpnI44q2MHpCujWdo3J7pNCZ2WxmzZo1DrtguV27duzbtw+znfcfxcfHO2TlTwjhWP/6F6xdWz8nFDZrBl98oa0W3nILvPmm1pxNmaKN1xeuZd26deTm9kLVy/ywsEVcffVIJVni/OSVhwPExsYS5RYF5Wry0pqk8e7HMvBD6GvLli1kO+it1tjYWEJCQuw+dRGQUfhCuKirrtLOWU2bpncl+omLg//8B44fh4ce0u48a9QI7r4bkpL0rk6o8vrr35CbO1FR2jHatInE29tbUZ44H2nKHOTOm+7EI9FDTVgCLFq5yCF3QglRnfLyctatW+fQVbLCwkKOHTtm1+fI/WRCuC6TSZtSOGdO/Vwt+7vwcHjlFThxQtvKOH++NhDk5pvBAbebCDsqLCxk164MoLGSvMDAH3j00QlKssSFSVPmIDeOv1HdRdIGyInKYcWvK9TkCVFL69evp6ioyCHPMhgMtG3blj179mC1Wu36LF9fXxo0aGDXZwgh9DNpkjYqfsoUsPMfJ3VCYCA8+SQcOwbvvgu//679/Fx9tTSuddW3384mI2O8ojQrwcG/M2BAf0V54kKkKXOQgIAAWsS0gHw1eQUtC3jjwzfUhAlRC3l5eWzcuNFhz2vSpAl+fn4O2bqYkJDgsNU/IYTjmUzw1lvwxx/anV5C4+MDDzygnTn78ktttax7dxg8WGvUpIGtOz79dB4VFWMVpW3hiis6YzKZFOWJC5GmzIEevftRAg4GqAkLgMSMRDIzM9XkCVFDy5cvp9KBt5F27dqVtLQ0h0x5TEhIsPszhBD6GjJEazYef1wuVj6Xhwfcdhvs3w+zZkFGBgwYAL17w+LF0pw5u71795Ke3ghVd5NFRHzLv/51q5IscXHSlDnQ4CsHE5waDIr+UEttksoHn32gJkyIGjh06BD79u1z2PMCAgJo3rw5f/31l92fZbFYaNxYzR58IYRzmzYNEhPhs8/0rsQ5mUwwfjxs3641Y6BdTN2xI8yc6dqXcNdlr7zyGZmZdypKKycsLInWrVsryhMXI02ZA5lMJgb3HQyn1ORZmlj44acf7H7ORgiAqqoqfvnlF4du7+vUqRNVVVUO2boYGBhIRISic59CCKfWvr12vuyFFyBf0bECV2QwaPebrV+vbWOMioIbboDWrbXmTOaNOY/S0lLWrTsEdFCS5+b2M5MmjVKSJWpGmjIHm3LfFCISFb3wM0F2eDarVq9SkyfEBfzxxx8OG4EPYDQa6dKlC7t27aK8XNF9EhfQsGFDOU8mRD3y0ktQWqpNZBQXZjDA5ZfD8uXaAJCmTbXmrFMn7WyevDesv+nT55CZOU5ZXmTkDG6//QZleeLipClzsObNmxNpjoQKNXl5rfN46d2X1IQJcR7Z2dls2LDBoU1Ls2bNCAgIYOvWrQ55Xnx8vEOeI4RwDjEx8MYb8MknsHq13tXUHV27wpIlsG4dBAfD6NHQsyesXKl3ZfXbf/87k7Ky6xWlnaJFCx+Cg4MV5YmakKZMB/fccg8eBxXdWRYAiVmJpKWlqckTohrLly+nqqrKoc/s2rUrycnJpKam2v1ZZrOZJk2a2P05Qgjncs890K8fTJ4MxcV6V1O39O6tNbMrVmjbGAcNgoEDwYHDecX/7Nixg7S0Zqga8BEY+A1Tp05UkiVqTpoyHdwy4RYij0cqy0ttnsq096cpyxPi7/bt28eBAwcc+sygoCCaNm3qkAEfAOHh4YSEhDjkWUII52E0aiPgU1Ph6af1rqbuMRjgyivhzz9hwQLIzIRevWDkSNixQ+/q6o8XXviYrKx7FKVZCAlZzaBBAxXliZqSpkwHvr6+dGnZBRRNs7c2sjJv2TyHjikX9UNFRQUrVqzAaHTsHxWdO3emvLycPXv2OOR5snVRiPqraVN4+WX473+1gRai9gwGbRvjzp3w449w8KB23uy667S/F/aTl5fH1q1pQEsleQbDSq69dqDDv+8Lacp088zDzxB2IExNmAGy4rKYM3+Omjwh/mfNmjXk5eU59JlGo5HOnTuza9cuh73RIPeTCVG/PfQQ9Oih3dFVWqp3NXWX0agNANm3Dz7/XNvK2Lq1Nuny2DG9q3NN//3v16SlTVSWFxX1NQ8/PElZnqg5acp00qVLF8KKwkDRa87i1sW8+eGbasKEADIyMti0aZPDn9uyZUv8/PwctnXRYrHQtGlThzxLCOGcTCb46iutcXjhBb2rqfvc3bVzeocOwbvvwtKl0Lw53H+/tlVUqGE2m/nmm8VUVakaXZ9O48ZVxMTEKMoTtSFNmY7uueUePA4pGvjhBcmmZHbu3KkmT9R7v/zyC2Ydbgjt2rUrJ06cICMjwyHPi4qKwt/f3yHPEkI4r1attIbsrbe0se/Cdl5e8OCDkJQE//63trWxSRN4/HFw4A0rLmvRomVkZQ0B3JTkBQR8xZNP3qYkS9SeNGU6uvmGmwndH6osL6ttFk+/KieVhe12797N4cOHHf7ckJAQGjdu7LBVMpCti0KI//fYY9pZqEmTwAHXI9Ybvr7afXBJSfDoo/Dxx9CoEbz4IhQU6F1d3fXyy59TWDhZUZqZgIBFDBkySFGeqC1pynRw8uRJnnvuOcaNG0fDsIagapp9GGw/tt1hKwzCNZWXl+sy3AO0bb0lJSXs27fPIc+zWq00bNjQIc8SQjg/NzdtG+PBg/DKK3pX43qCgrRLu5OS4I474LXXoHFjmDYNSkr0rq5u2bNnDydPxgBqJgcbjctp2zaSIUOG8Oabb5KVlaUkV9ScNGV2ZrVaKS0txWKxsHz5csaPH8+TTz7JFVdcwa+//srnH3xOxP4IZc9La5nGa+++pixP1D+//fYbhYWFDn+um5sbnTp1YufOnQ67E83d3Z0WLVo45FlCiLqhfXttPP5rr8lYd3sJD4e334YjR2DcOHjqKW0K5ocfQkWF3tXVDU8//V8yMh5Ulhcd/SXfffcZK1asoE2bNtx1113ceuutbNiwAavVquw54vykKbOjoqIi3n//fe666y4GDx7M1q1bef/995k+fTqXX345BoOBNm3aEGONgTI1z7Q0sjB/+XzKyhQFinrl6NGjbNHpMEWrVq3w8fFx6NbFxo0b4+amZi++EMJ1PPWUdsZswgS5VNqeYmO1rYwHD2qXTz/wALRoAd98Aw56b65OysjIYOvWbKCVosQk2rb1Jzw8HJPJxIgRI5g3bx4vvPACixYtYsiQIbq8WVvfSFOmmMViOTMcwc/Pj/HjxzN9+nQ+/fRTnnrqKSIj/3lp9NT7puK7z1dNAQbIaJzB5998riZP1BsVFRX8/PPPuj2/a9euHD16lGwHnv5u0qSJw54lhKg7PDxg5kxtGuM994AsFNhX48bw3XewZw906aKd6WvbFmbPBotF7+qczyuvfERqqqrLoiE09GP+/e97//HjjRo14rXXXmPJkiX4+/uTkZHBnj17HH5VTn0hTZkimzdvBrQ7lkwmE6mpqTzzzDOMHDmSmJgYkpOTz/u1115zLWEnw0DRHzxlrcr47xf/xSJ/kolaWLFiBbm5ubo8OzY2loSEhDO/jxzBarXSsqWayzZF/ZNelM6KIyuYu28ueWV5PLr8Ue74+Q6WHFrCwgMLGTVjFKNmjCKtKI0nfnuCUTNG8fAvD5NXlsdVM67ixnk3sjRxKVuSt/DWhrf4YtsX5Jflk1WShcUqf3Y7g9at4bPP4Pvv4Ysv9K6mfmjdGubOhb/+0gaBXHed1qQtWSKN8WklJSX89NN6LJYrFCUWExm5m+7du5/3M9zd3QG45557mDRpEt988w2rVq2iuLiYxMREtm/frqiW+k327Sgybdo0rrnmGlq3bs0LL7zAjh076NChA0888QT9+vUjIuL858bc3Ny4ftT1TEuahqWpgm/GbpARlcHPi35mzOgxtucJl3fkyBGHbhs8V69evcjOzubAgQMOe2ZsbCyBgYEOe56om0orSympLCGlMIWvtn/FkdwjfDTiI2btmYWb0Y3usd3xdfflnm73EOAZQJBXEB4mD0a3HH0m4/VBr5+VufD6hRRVFGEwGCipLKFbZTfyyvIwGox8tf0r/jj+By3DWvJMv2f4cfePtI9sT4fIDvh7ytUNjjZhAqxdq22r69YNOnbUu6L6oUsXWLYM1q3TzveNHAm9emkDQXr10rs6fX300bdkZNwKGJTkeXv/wL/+dVONPnfAgAG88cYbrFu3jrlz53LZZZexZs0arr32Wjp16qSknvrMYJXTe0osXryYq666io4dOzJo0CCuv/562rRpg6enZ42+Pisri44jOpI8/PwrarVSCh02dGDHHzvU5AmXVV5ezkcffUR+fr4uzw8ODuaBBx5g6dKlDm0M+/btyxVXqHqnUbiKSnMl21K30SWmC2Nnj8Xd6M6tHW6lW2w3CsoLaBLcBJPR5JBaSitLWX1sNbvSd9Envg9Hc4/y04Gf6BLdhcd7P467yd0hddR3ZWVaI1BQAFu3gryX41hWK/z6K0ydqg1eGTsWXn9dGwxS35jNZpo3H0xS0i+Ait//VuLjr+TQoSU1er1aVlbGa6+9xsSJE3Fzc+P111/nq6++YvDgwfTu3ZsHHngAb29vBXXVT7JSpsjIkSNp3rw5L7/8MsOHD8dqtWIw1PxdjLCwMLo06UJyZjKEKyjIG065n2Ljxo307NlTQaBwVb/88otuDRlAz549KS0tZYcDx5xZLBaaN2/usOcJ51ZUUURJZQnLDy/nxz0/0i++H91iu7Hw+oVnfV6UX5RD6/J292Z4s+EMbzYcgD7xfRjfZjzbUrfhZnRj7OyxBHoGcnun2+kd39uhtdUnXl4wZ462enPbbdr2ulp8exc2Mhhg8GBtEMgPP2hDWFq31s76PfsshIXpXaHjzJw5n4yMUahpyMBoXMk11/St8QKCl5cXzZs354EHHmDx4sW0adOGsWPHMmLECLZv3y4NmY1kpUyhxx57jNLSUj744INL+vo9e/Zwxf1XkDFA0T1j+dDnQB/WLl2rJk+4nIMHD/Ljjz/W6g0ElXx8fHjkkUdYu3Ytf/zxh8OeGxAQwCOPPKLbf7fQX35ZPp5unkyYPwGL1cKUnlPoGdcTo6FuHbU+VXCKwvJCjuYd5eO/PqZvfF/u734/Pu4+epfmcn76Ca65Bt59Fx5+WO9q6q/SUnjvPXj1VTAatSbtwQe15tmVWa1W2rQZyv798wA/JZkxMWPZvv3jCx6xqc4bb7xBbm4us2fPZtGiRbRp00ZJPfVd3fru4+ReeeWVS27IANq2bUu8MR5UXaAYCIeKDjnsIl5Rt5SWlrJ48WJdG5Pu3btjtVodPoa/adOm0pDVU7vSd3HDvBt4ePnDeJo8+W7Md/x03U/0ju9d5xoygAYBDWgV3orhzYYzd9xcOkd3xsPkwcQFE/nX8n9xMOug3iW6jKuvhn/9Cx57DDZt0rua+svbG554Qrvj7OabtTNnLVpoq2iuPN9s+fLfSE3tiaqGDA7QuXNwrRsygEmTJnHkyBE6duxImzZtHHa3qKuTlTIns2TpEiZ8OIH87oq2k2XB0LShLJuzTE2ecBnz5s1j9+7duj3f3d2dRx55hN27d7NsmeN+fVqtVsaPHy/v7NUjVZYq5u+fT4W5gk5RnQj0CqRBQAO9y7K77anbyS7Nxmq1klyYzPg242UFzUaVlXD55XDqFGzfDqGhelckDh3SmrSfftK2mL71FvTvr3dV6nXqNIodO74B1PyiCw+/m1Wr7qdt27aX9PXp6ekUFRXRpEkTzGYzJpNjztq6srr3tqCLGz5sOBEZEaDqTYcw2JG8g6NHjyoKFK5g79697Nq1S9caOnbsiJeXFxs3bnTocz08PGjRooVDnyn0UVBeQKW5krsX301aURpjWo6hTUSbetGQAXSK7sSgxoPoFaeNq7v5p5upNFeyP3O/zpXVXe7uMGsWlJRoqzSuvDJTVzRvDvPna1MyTSYYMABGjYL9LvTLfP36DZw82QJVDRlk0rBh+iU3ZACRkZFn7vqUhkwNacqcjMFg4KHJD+G1T93m6LQOaUx5foqyPFG3FRcXs3TpUl237xmNRnr27Mm+ffscfgllo0aNcHOTGUeuLLskm0eXP8r1c68nrSiNL676ggd7PIifh6ptP3WLr4cvEztOZN74eQB8tvUzhkwfwroT63SurG6Ki4Pp0+GXX+C11/SuRpzWp4+2rXTmTNi7F9q1g7vvhvR0vSuz3ZQpb5Od/aiyvKCgD3nppfuU5Qk1pClzQpMnTiYiKULZZdJEwcZDGzl16pSiQFGXLVmyhOLiYl1raNWqFSEhIaxfv97hzz79zp5wPcUVxXy29TOMBiPj24xn6YSlxAXG6V2WU3E3ufPu0HdZeP1CWoe35oPNH3Dfkvs4nndc79LqlKFDtbNMzz0Hq1frXY04zWDQLpzevx/efBNmz9ZG57/0Euj8be+Sbd26lcOHo4BoRYklREZuYPBguRLG2UhT5oQ8PT256eqbcDus7t381PapPP7C48ryRN20e/du9uzZo3cZ9OrVi6SkJFJTUx36XKvVSqtWrRz6TOEYG05uYNSMUcT6xxLsHUyPBj30Lsmpebl5EeIdwv3d7+eOLnfww+4fyC7J5miubHWvqRde0M4u3XADOPiPMnERnp7aUJYjR+Cuu+Dll7Vtjl99BWaz3tXVzsMPv0lW1lRleb6+XzN16kQZduWEpClzUo8/9DhRBxTeiRMLa3avISUlRV2mqFMKCwtZtmwZRqO+v+0bNmxIbGwsGzZscPizY2NjCQgIcPhzhf3sTt/N2xveplVYK5ZNWMaI5iP0LqnO6RjVkaf6PkVxZTFPrXqKO36+g4LyAr3LcnomE/z4ozaW/YYbQAbQOZ/gYG3wx4ED0K8f3H47dOoEy5frXVnN7Nixg4MHg4F4RYlVRETM5+abxyvKEypJU+akAgMDGdZ7GIYT6t7JSGmfwmPPP6YsT9QdVquVhQsXUlKi6r6FS9e7d2/S09M5fPiww58tWxddy6d/fcq0DdO4ru11BHsH4+lWswtQRfXiA+OZMXYGD1/2MN5u3vxr+b84nOP436d1SWSkdoZp7VptK6NwTo0awYwZ8OefEBSkbT8dMgR0nnd1UQ899DqZmU8oy/PwmM3dd18j56qdlDRlTuzfT/2b6D2q9hADDeD3nb+TnJysLlPUCWvXriUxMVHvMoiIiKBZs2a6nCWzWCwyddEFWKwWvtj2BZ/89QkTO07ku6u/qzfTFB2lTUQb3E3u3N7pdl74/QV+OfwLleZKvctyWv36wSuvaEM/lizRuxpxId27w5o12vj8Y8egY0e47TZwxpdFO3bsYP/+IKChokQLkZFf88ADtynKE6pJU+bEoqKi6NWyFyjcq57SMYVHn1M3wUc4v2PHjvH77787xf7xXr16kZ+fr8u5tuDgYGJjYx3+XKHW478+TmllKZM7T5aVMTtrE9GG6ddMZ0iTIby5/k0mLZzEqQIZGFWdxx+HkSO1MfnHZWaKUzMYYMwY2LMHPvgAFi2CZs3gmWegsFDv6v7f/fe/SmbmU8ry3NyWcuONA/H29laWKdSSy6Od3NGjR+k1oRdpQ9KUZUYvi2bT7E3Ex6vaoyycVUlJCZ988gkFBfqfDwkICOChhx7it99+c/jdZACXXXYZQ4cOdfhzhRq/HvmVtKI0JrSfgNEg7yfqYU/GHjad2sTI5iMJ9pLtoufKyYHOnbUtjX/8oQ2bEM4vPx/eeAPefRcCArQBLnfcAXru8Nuy5S+GD/+arKwPFSVaadBgOHv2zCQwMFBRplBNvrM5uUaNGtG5QWfIVJeZ2jGVh556SF2gcEpWq5WffvrJKRoy0FbJKisr2bp1q8OfbbFYaN26tcOfK9R4e8PbzNs/j7Gtx0pDpqO2EW2Z3Hky+zP3M/zH4SxLXKZ3SU4lJATmzIGdO+HOO0He8q4bAgPh1Vfh0CHtrNl992l3nP38s37/Dx944FWystStkhmNqxg9uqs0ZE5OvrvVAe+89A6ROyPVBUbDpqRNugxaEI6zYcMGDh06pHcZgLZK1rVrVzZs2EBFRYXDnx8WFkZcnNxXVdecyD/B4kOLubXjrXwy8hN83H30LkkAAxoNYOH1C8kryyO1MFXG6P9Nt27a2PXvvoPXX9e7GlEbcXHw7bewdSvExsLo0TBgAPz1l2Pr+OOPdRw+3AhQt90+Ovo/vPjiw8ryhH1IU1YHtGjRgnZh7SBbXWZa5zTuffxedYHCqRw/fpyVK1c6xTkygL59+1JRUcGff/6py/NbtWrlND8XomYWH1rM5J8n0zKsJWE+YXqXI87h5+HHDe1uoMJcwaMrHuX51c9TZZGZ8AA33qhNYnzqKZg3T+9qRG116gS//gpLl0JWltZoT5igDQaxN6vVyoMPvkZ2trqJiwbDWoYMaUVoaKiyTGEf0pTVEf95+T9EbI9QFxgOOzN3snPnTnWZwimUlpby008/YbFY9C4F0K536Ny5M+vXr6e8vNzhzzebzbRp08bhzxWXpryqnF3pu4jxj2HRDYtoGtJU75LEBSQEJTBv/DwGNhpIcUUxCw4sQI6qa+eSrrtOG/zh6JUWYTuDAYYNgx074PPPYdUqaNECHnsM8vJqnlPbwSGLFi3j+PGuQHjtvvACYmLe4rXXpijLE/YjTVkd0aZNG9qEtIEcdZkZXTO45/F71AUK3Z2+jyyvNt817Ozyyy+ntLSUzZs36/L8qKgoYmJidHm2qJ2skizGzBrDqYJTdI7uLIMk6giDwcDlDS/H082TXem7uHrW1WSVZOldlq4MBvj6a2jfHkaNgpMn9a5IXAo3N5g8GRITtZXPjz/WJjV+8snFLws/eRKaNNGmO9aExWLh8cffJS9P3YRsg2E9V17ZjIgIhW/qC7uRpqwO+e8r/yVim8LfWEFwsOogq39frS5T6OrPP/9k3759epdxRkhICB07dmTdunVUVupzz1HLli11ea6oHavVyu/HfueNQW8wvNlwvcsRl8DLzYvnLn+O94a+h7ebN9/u+BaL1TlW7PXg7Q0LFoCHB1x1FRQV6V2RuFR+fvD889owkBEj4J57tG2OK1ee/2saNIAuXeD++2v2//7rr2eQnDwCCFBWd0zMm7z++mPK8oR9SVNWh7Rt25Z2oWrPluV0zeHBpx6U7SYu4NSpU/z6668Yjc7z2/ryyy+nqKiIv3Tav2OxWGjbtq0uzxY1tyNtB7f9fBvXtr6W9pHt9S5H2CghKAFvd28KKwq5etbVZBRn6F2SbqKitJWSw4e1c0lms94VCVvExMA338CWLdrUxkGDtIEgiYn//FyDAT76CDIzte2sF1JeXs7LL39JUZG63UsGwx8MHtycyEiFg+KEXTnPqzdRI++/9j6R2xT+BvOBEyEnmDFrhrpM4XBlZWXMmzcPsxN9xw8LC6Ndu3asXbuWqovt87CT6Oho+Ybk5A5kHeCplU/x1pVv6V2KUMhoMHJ/9/uZduU0vN28WXJoSb198699e5g5ExYvhief1LsaoULXrrB2rfb/dccOaNMGpkz553mzRo20oS//+Y/2eefz5psfk5p6O6Bqy7aVmJhpvPHG44ryhCNIU1bHtGrVik5RnZTeW1bQsYBn33xWl1HlQo1FixaRm5urdxln6d+/P4WFhWzbtk23GmTronNbcmgJsf6xzBs/j1AfmQzmipqHNsfH3YcdaTu4cf6NZJco3OpRh4wYAW+/DdOmwZdf6l2NUMFg0Ia5HDigbW385BPtvNmnn5593uzRR6FVK7jrrupXSvPy8vjss6WUl9+grDajcRUjR7YjPFzdwBBhf9KU1UHvv/4+Udui1AW6Q0qTFN7+79vqMoXDbN68md27d+tdxlkiIiJo27Yta9as0W31zmKx0K5dO12eLS7u3Y3vsvjQYrzdvfF299a7HGFHJqOJp/s9zeO9HseKlT9P6XM1ht4eekh7YX733fD773pXI1Tx9oann/7/82Z33w2dO///eTN3d61R27xZa9zO9eijr5KS8gTqXpJbiYl5i1dflYmLdY00ZXVQ06ZN6dWkF6SoyyxrXcZHP3zkVFP7xMWlpKSwYsUKpzpHBjBgwABycnLYcaH9GnbWoEEDwsLkfitnY7FaKKsqw9/Tn49GfISb0U3vkoSDdIruRJBXEHP3zeWOn++goLxA75IcymCA99+H/v3hmmu0F/HCdfz9vFlAwNnnzXr1gjvv1LavpvzttdvRo0dZtiwJi2Wgsjrc3BZx3XW9CQkJUZYpHMO5XsmJGnvvtfeI2a5wzLcRUjqm8MhTj6jLFHZVVFTEDAaqSAAAetVJREFUrFmzdDuvdT7R0dG0atWKNWvW6HpXmmxddD4Wq4U7fr6DLclbmNx5slzoXQ+5Gd2YNngaN3e4mZzSHA7nHNa7JIdyd4c5cyAyEkaOhByF19wI53C+82ZPPqmtqj388P9/7h13PEtq6ksKn24mOvq/vPDCwxf9TOF8pCmroxo0aMDgroMxHlf3v9DS0MIvW3/h8OH69U2yLjKbzcyZM4f8/Hy9S/mHAQMGkJWVpeuWSqvVKlsXndDzq5+nX0I/+ib01bsUobN+Cf2ID4xn2vppPLPqGcwW5xlSZG9BQdrQj5wcuPZakOPcrufv582ee06736xbN2jZUmvKlyyBdes2sGNHMNBK2XM9PWdy112j8PPzU5YpHMdgra/jkFxAdnY2HQZ3IHlUMqh6wzkbLk+6nN8X/64oUNjD4sWL2bJli9OtNDRo0IDJkyczd+5c9uzZo1sdcXFx3H777bo9X5zNarWy6dQm2ke2x9fDV+9yhJP5bud3dI/tTpPgJrib3PUux2H++EPb4nbLLfD559oLeVE3bdkCJ06Al5e2Gnb64/Q/5+bCSy/B/Pmnv8JCq1bD2b//B0DVkKNyGjYczoEDS/H0VDXFUTiSbOavw0JDQ5kwYgLvJr5LZXNFF/OGwNZlW9mxYwcdO3ZUkymU2rJlC5s3b3a6c2SgrZJlZGSwd+9eXeuQrYvO5bV1r2G1WukZ11PvUoQTuqXDLVSYKxg5YyQvDXiJ7rHd9S7JIfr1g88+g0mTtOl8jz6qd0XiUn36aW2nan7PkSPDUNeQga/vpzz55ERpyOowacrquOemPsfMPjM50eQEmGwMS4bYv2K5beJttG7dWkl9Qq1jx46xbNkyp2zI4uPjadKkCbNmzdL9PiLZuug8ThWcoqyqjBf7v6h3KcKJeZg8mHXtLO5efDfvDnmXaP9ovUtyiIkT4eBBeOwxbZz6VVfpXZG4FB99pF13UFYGpaX//1HdP+fkFPLcc99RVPSLwgoKaNBgEbffrjJTOJo0ZXWcr68vj0x+hKdXPk1Jh5JLCymE8D/D6R3fm0+WfSKX7TqpvLw85s6dq+vwjAsZOHAgqampHDhwQNc6GjZsSEBAgK41CM30XdPpGNWRfw/4t96liDogyCuImdfOJK8sj/uW3Me0wdPwcffRuyy7e+UVbRLjjTfCunUgm1TqHg8P7aMm7rzzFUpLpwLqtuoGBb3JW289islk67vzQk/O93a7qLX777qf2JOxUF7LL6yCgC0BdNjcgWX/WcZPP/wkDZmTqqysZNasWRQVFeldSrVatGhBw4YNWbVqlaySCQDm75/Pr0m/0ipM3SF2UT8EeQVxdaurGT1zNEUVzvlnnkpGI3z3nTYEYuTIs0emC9dy6NAhFi1KwmwerDA1maZNdzNixBCFmUIP0pS5ADc3N9589k2CtgXV7Aus4J7oTsLiBP57w3/ZvmY7Xbp0sWuN4tJZrVYWLlxIamqq3qVUy2QyMXjwYI4cOUJiYqKutXh4eNC+fXtdaxBQZanCy82LL0Z9gcko79yK2hvUeBCzrp1FUUURSw4t0bscu/P1hZ9/1v5+9GgoucSNL8J5Wa1Wbr31CdLS3lCaGx7+PJ9//qLTDf4StSdNmYsYPWo0TcqbwMXu4kyH6CXR3B9/P/vW7+PWCbfKb2Qnt27dOnbt2qV3GefVrVs3goODWb58ud6l0Lp1a9zd68/0Nme0/sR67l96P8ObDa9Xk/SEeiHeIQR7BbM0cSlPr3za5cfmx8Rojdm+fXDrreCkO9XFJZozZyEHDrQDGilM3UmPHlYZzOYipClzEQaDgS/e/YLwzeHVf0IJhK4O5crUK/lz/p+88+o7+Pi4/l79uu7gwYOsXLnSKQd7AHh7e3P55Zezbds2MjIydK3FYrHINyadpRam8sKaF5h25TS9SxEuwtPNkw9HfMiARgMoqigiuyRb75LsqnNn+OEHmDcPnn1W72qEKiUlJUyd+l/y8p5QmGolJuZZPvlEzuy6Cud8pScuSceOHbWR03/fj24Gv+1+tFrTivkvzWfFTyuIi4vTrUZRcxkZGfz00096l3FBl19+OUajkdWrV+tdCpGRkSQkJOhdRr1VXFGMj7sPM8fOxN/TX+9yhIsZ1HgQ6cXpjJ87nsM5h/Uux67GjIE33oBXX9UuHRZ135Qpr3Dq1L8Ab2WZbm6LGDeuM7Gxscoyhb6kKXMxn77zKTF/xYAVTEkm4hbF8frw19mzYQ/9+vbTuzxRQ2VlZcyePZuysjK9Szmv0NBQunXrxh9//EFxcbHe5dCuXTvZiqsTq9XKnYvvZE/GHkJ91N27I8TfNQ9tzrdjvuXLbbW6EKpOmjIFHnoI7rsP5s7VuxphiwMHDjB/fiJVVSMVplYQG/ser7zymMJMoTcZie9ioqKiGNl7JDO+nMF1V1/H22velvHgdYzVamXevHlkZWXpXcoFDR48mIKCAv7880+9S8FgMMjWRR19veNrejboSe/43nqXIlxcg4AGvDboNb7c9iX+nv6MbzNe75LswmCAd96BjAyYMAHCwqB/f72rErVltVqZMOEx0tM/VJrr6/saDzxwDb6+vkpzhb6kKXMhBQUFvPLKK2SnZLNuyTqZQldH/frrrxw6dMipV30aN25MixYtmDNnDlVVVXqXQ7NmzeTNB53sSt/F9W2vx9tN3bYcIS7m1o638tCyh8gry+POLnfqXY5dGI3wzTeQmalNZPzjD+jQQe+qRG189tn3JCb2A+IVpmYQG7uSlSv9qKws5OGHH8bLy0thvtCLbF90ARaLha+++oqrr76aQYMGMXfuXGnI6qjt27ezfv16p27IDAYDgwcP5sSJE+zdu1fvcrBarfLrXScHsw4y9bepmAwmp/41K1yPm9GND4Z/wNhWY1lxZAWV5kq9S7ILDw+YPx+aNYOhQ+HoUb0rEjWVnZ3Nyy9/T2Hhw0pzw8Of4fvv32bJkiU0btyY4cOH89NPP+l+R6iwnTRlddz69esZOnQoJSUlLF++nCuvvFLvksQlOnz4MIsWLXL6F7edOnUiKirKKUbgA/j5+dGqlVxQrIe3N77Nl1d9iaebp96liHrIYDAQ6hNKQXkB4+eOp6D8YnfC1E3+/rB0Kfj5weDB2pZG4fwmTXqc5OSXAZVXg2yhVy8r3bt3w2AwMH78eJYsWcKePXsYPXo0u3fvVvgs4WgGq7TWdU5lZSXu7u4cOXKE//znP7zwwguEhsrh+rosJSWFb775hoqKCr1LuSAPDw8efPBBkpKSmD9/vt7lANCjRw+GDRumdxn1itliZtGhRYxpOUbvUoQAYNOpTVitVrrGdHXZ+/GSkqBXL4iLg1WrtGZNOKcVK1Zx440Lyc5+T2GqhdjY4Wzb9h0RERH/+LenTp3i+eef5+233yYoKAiAEydOEB+vcuuksCdZKasjysvL+fPPP7nuuuuYPHkyr732Gg0bNuT999+XhqyOy83NZcaMGU7fkAH07dsXT09PfvvtN71LAeRuMr08t/o5cktz9S5DiDMua3AZ3WO7c/Wsq9mWuk3vcuyicWP45Rc4eBDGjoU68C2jXiopKeHuu18mO/tlpbne3t9w773Dq23IABo0aMCXX355piF76623WLhwodIahH1JU1YHZGZm8uijj3LLLbcQFBTEhAkT2LhxI08//bTepQkblZaWMmPGDAoLC/Uu5aKCgoLo2bMnGzZsoKDAObYJxcXFER0drXcZ9Up2STZuRjcmdZqkdylCnMVkNPHd1d/x3OrnSC1M1bscu+jYERYuhDVrYNIksFj0rkic68EHX+DkyUcBlUuZOcTHz+Dxx++t0Wenp6fz7bffMnr0aADy8vJYv349W7duVViTUE2aMie3efNmunbtyqlTp1i8eDGffvopgwcP5qOPPmLBggVkZ2frXaK4RFVVVcycOZOMOnJAYNCgQZSWlrJ+/Xq9SzmjXbt2epdQr6QUprA5eTMvDnhR71KEqFaIdwg/3/AzBoOBb3d8q3c5djFgAPzwA8yYAY8+CnIIxXls2fIXixalU1U1QmluWNizfPrp87i51Wxo+hNPPMHo0aOJj49n165dTJo0iddee40hQ4Zw++23U1npmoNx6jppypzcypUrmTRpEgsWLKBZs2Znfvyvv/6ib9++snWxjrJarSxYsIBjx47pXUqNNGjQgLZt27Jy5Uqn2Wbp5uYmWxcdyGK1cM+Se2gY1FDvUoS4IKPBSIRvBNvTtvPOxnf0Lscurr0WPvgA/vMfmDZN72oEQEVFBTfd9AQZGW8rTt5Cz57lXH55nxp9dlpaGgsXLiQ5OZm0tDSeeuophgwZwpw5c/jzzz/JzMwkJydHcY1CBWnKnJjFYmHZsmX06NHjzI+VlJTw/PPPc9ddd9GzZ08dqxO2WLFiBbt373b6SYugTTgbOnQoqamp7Ny5U+9yzmjVqpXczeJAB7IOMKr5KFqFy6RL4fyMBiPvDnmXxsGNKa0sdclx4ffeC88+C1OnwreuuShYpzz22KscP34XEKYw1Uxs7NN8+eVrNf6KqKgotm/fTkVFBS1atCAnJ4e7774bb29vmjRpQnFxMbt27VJYo1BFLo92YkajkQkTJvDqq68SHR3N2rVrmTlzJrGxscycOZMBAwboXaK4BJs2bWL9+vUYjXXjPZH27dvToEEDvvnmG6d5YWOxWGTrogPtydhDSWUJkztP1rsUIWrMYDAwpuUYpu+azo60HUy7clqdeCOsNl58EdLS4PbbISwMRqjdNSdqaPv2HcyceZDy8heU5vr5fcSUKeMIDw+v1dclJCTwww8/sG7dOsrLy8/8+G+//UZlZaVcn+SkZCR+HfDUU09x7NgxkpKSuPfeexk0aBAxMTF6lyUuwd69e5kzZ47eZdSYt7c3999/P0lJScybN0/vcs4IDg7mwQcfdLkXWM6orKqMkT+OZPo104nyi9K7HCEuyUdbPqLKUsWDPR7UuxTlqqq07YwrVmij8i+7TO+K6peKigo6dBjBgQPTgUiFycm0b38H27cvVvImbmlpKd26deOtt95i6NChCuoTqklTVkeUlZXJVq067vjx40yfPr1OHbAdNWoUbdq04YMPPqCoqEjvcs7o378//fv317uMemHV0VUUVRRxVYur9C5FCJuYLWa+3fktN7e/2eXuMist1S6W3rcP1q2DVrLL2GEefPA5PvusLeXl45XmRkbewG+/PU3btm1tzrJarZw6dYpFixZx7701m+AoHK9u7J8S0pDVcVlZWcyaNatONWRxcXF06dKFlStXOlVDZjKZ6Natm95l1AvrTqwjITBBGjLhEkxGE4Gegdz0002UV5Vf/AvqEG9v+PlniImBIUPg1Cm9K6ofNm/+i1mzkpQ3ZO7uC7nmmsZKGjLQtvLGxcVJQ+bkpCkTws6Kior44YcfKCkp0buUGjMajYwcOfL/2rvr6KivrY3j37i7IwECtLhbkOIerLi7FCjQFooUa6EUKVKkxd09OARrcSvuBI8Rd52Z948UbnkLLTIzv2SyP2uxbjuZnPPkLpqZPeecfQgKCuLixYtKx3lNiRIlsLGxUTqGwYtKjmL8sfGyZVEYlNbFWtOnbB/Ck8LJUGcoHUernJwyL5c2MoJGjSBa7nfXqeTkZDp3HsmLF79oeeQ48ub9hZkzx2p5XJHVSVEmhA6lpaWxfv16orPZq2OVKlVwc3Nj9+7dWaa5B2Q2+ChfvrzSMXKEfff3Ma3eNGzMpQAWhqV+wfqYGpvSfENzYlNilY6jVblzw8GDmc0/mjXL3NYodKN//zE8efI1oN2riVxcxrB48XisrKy0Oq7I+qQoE0JH1Go1W7ZsITg4WOko78XBwYFatWpx7tw5QkNDlY7zGm9vb7y9vZWOYfD2399Po0KNqJhbtokKw+Rp68nEWhPp4d8jS33wpA1FisDevXD5MnTokNkIRGjXoUNH2b8/hfR07ba7NDY+yWefpVO3bi2tjiuyBynKhFalpqbSu/cIChas8Fob1pzm5eXQ9+7dUzrKe2vSpAkpKSkcO3ZM6Siv0Wg0lCtXTukYBi84Pphfzv2Co6Wj0lGE0KlKuSuxsfVGTj07RXB89vrw7L9Urgxbt2YWZwMGgIHVnYqKjo6mX7/JRERo+9buFPLkmcDy5dO0PK7ILqQoE1pz/fp1Spf2Y+3a6jx/PpaBA3PmfmiNRsOePXu4evVqtmvZXqRIET799FP2799PWlqa0nFeY2dnR+nSpZWOYfC2397O9PrTMTWWayyF4bMwtcDdxp0u27sYXGHWuDEsXw7LlsH48UqnMQwajYb27b/k6dOfAFutju3k9D0//zwUR0dHrY4rsg8pysRHU6vVTJw4i/r1J3L37hrS0lqQltaSXbviOXDgiNLx9O7QoUNcvHgx2xVk5ubmNG7cmHv37nH79m2l4/xDmTJlMDExUTqGQbsUfIlOJTtRyqOU0lGE0JtPXD5hkd8iTj87rXQUrevWDWbMgMmTYf58pdNkf4sWreH8+U/RaCpreeSLVKoURNu20uk2J5OiTHyUZ8+eUblyS37+2ZqwsK3A/zq1RUTMpH//H4mIiFAuoJ4dO3aMU6dOZbuCDDLv/rK2tmbfvn1KR/kHY2NjaYOvY8npyYwIGIGFiYXSUYTQu8IuhWldtDU9/XsSkWRYr1nDh8M338CQIbB5s9Jpsq/AwEB++GEjsbFjtDxyKnnzjmLt2llaHldkN1KUiQ+2YsVGqlTpw8WLM0hMHAD8/0LEhqdPf6Z164EGd5D6TU6fPs3x48cxNs5+/1l5enpSpUoVjh8/TkxMjNJx/uHTTz/FwcFB6RgGbfXV1XxV5SvptihyLCMjI76q8hUdt3UkLjVO6ThaNX06dOoEXbrAkZy3geWjpaen07LlIEJCfgO0u2PD0fEHpk0biKurq1bHFdlP9nv3KBQXExND48bd+frrWwQH7wE+/Zdnl+Py5SpMm/arvuIp4sKFCxw8eDBbrpAZGRnh5+dHREQEZ86cUTrOP6jValkl07Fnsc/oWLIjzT5tpnQUIRRVyqMUi/0Wo9FoDKowMzbOPF9Wpw60bAnnzimdKHsZPHg8Dx70BvJpdVwjowtUrvyMjh0/1+q4InuSoky8l8OHj1OmzOccOjSAmJgfALP//J74+GHMmXOEq1ev6T6gAq5evcrevXuzZUEGUL58efLkycOePXtQq9VKx/kHLy8vfHx8lI5hsNQaNQP2DjCoN6BCfIwCTgV4FPOIDls7kJCWoHQcrTE3h23boHTpzCYg1wzzJVnr9u0LYPv2aFJS2mp55GTy5BnFunWztTyuyK6kKBPv5GWr+44dN/DkyS7Uat/3+G5jwsIW0qbNVyQmJuosoxJu3bqFv7+/0jE+mI2NDfXq1ePPP//k6dOnSsd5I2mDr1tbb22lvk998tjnUTqKEFlGGc8yjKkxhumnpisdRatsbDLb5BcoAPXrw927SifK2kJDQ+nffyoREdo/7+XsPI45c77CxUW7l0+L7EuKMvGfbty48Ver+2pERCziw9rAuvPo0Vg6dPhS2/EU8+DBA7Zt25YlV5feVcOGDVGr1QQEBCgd5Y0sLCykKNOhuNQ4mhZuyuBKg5WOIkSWU927Ot/X+p4ll5aQkpGidBytcXCAgwfB1RXq1oVHj5ROlDWpVCpatOjP8+dzAWutjm1i8js1a8bz+ed+Wh1XZG9SlIm3UqvVfP/9bOrVm/BXq/uWHzWeSlWbEyfysWDBCu0EVNDjx4/ZtGkTKpVK6SgfzMfHh1KlSnHo0CGSk5OVjvNGZcqUwczsv7fIig/z1YGvuBt5V+4kE+ItjIyM8HbwpvP2zqSpstbdjR/D1RUOHwZLS6hXD4IN64o2rRgx4kdu3GgBFNfyyLF4e3/PqlU/a3lckd1JUSbe6Pnz55QqVZMZM6z+0er+Y8TGjmXy5J3cuHFDK+Mp4fnz52zYsIH09HSlo3wwc3NzmjVrxuPHj7ly5YrScd5KGnzozoknJ7A2s6acl6xECvFvGhZqSN9yfQlNCDWoTsJeXpmdGNPTMwuz8HClE2Udhw4dZe3axyQl9dT62G5uX7FixQ/Y2dlpfWyRvUlRJv5h06ZN9O7dGxcXN5KTS/LPVvcfw4TQ0MW0bDmE+Ph4LY6rH2FhYaxfv57U1FSlo3yU+vXrY2Njk6XPwxUuXFhaBOtIhjqD0p6lmVJ3itJRhMgWGhVqhEqtovvO7mSoM5SOozX58mUWZlFR0KABZMEbUfQuJCSE3r1/JDx8Htp9/wMWFlto3dqTmjWra3VcYRikKMuBoqOj3/h4TEwMPXr04ObNm+zZs4ddu1bg7T0O0HZXNg8eP55ImzbZ6/6yiIgI1qxZQ1JSktJRPoqPjw8VK1YkICDgrX8XlKbRaOQsmQ7NOzePk09PYmchn9QK8a4KOBWgaeGmfLnPcM5GAxQuDAEB8PRpZlfGBMNpOPneMjIyaNq0D8+fzwe0fWfjcwoWXMIvv0zU8rjCUEhRlsMEBQXxzTffMH78+NceP378OJ9//jn9+/fnhx9+wMzMDAcHB1au/AFX1yFaz6FSfcbZs6X46af5Wh9bF2JiYlizZg0J2fzVysLCgubNm/Pw4UMuXryodJy3cnd3p0iRIkrHMEjRydEcCDxAo0KNlI4iRLbTvkR7fqj9A/cj72erDxX/S8mSmc0/bt6E5s0hix4z1rkBA8Zw+3ZXoKiWR1bj6fkF27fPw9zcXMtjC0MhRVkO4+7uztixY9m9ezfHjh0DYPLkyaxfvx5/f398fV9vdV+zZnU6dvTGymqd1rPExQ1nzpxTnDhxWutja1NcXBxr1qwhNjZW6SgfrUGDBlhZWbFr164s+4ZCo9FQsWLFbHvvW1an0qiY2WAmxkby61+ID+Fm48aee3v48cSPSkfRqgoVYN8+OHsW2raFNMPpa/JO1q/fzo4daaSkdND62Pb2Mxg1qgWffvqp1scWhsNIk1XfmQmt0mg0GBkZkZGRgampKdu2bWPBggUEBATw4sULvLy83vq9GRkZlC/fjGvXFgDavsQ3Dm/vVpw/vx4PDw8tj/3xYmJiWL16NVFRUUpH+WgFCxaka9eu7N69m0uXLikd563s7OwYNmwYJiYmSkcxOI9jHrPt1ja+qfqN0lGEyPZGHBpBt9LdKOlRUukoWhUQAH5+0KIFrF8PpjmgOeudO3eoU+drQkJ2AtpdyTIyOk/t2nM4fHidfNgo/pV8VGrAoqKiOHToEI8fPyYuLvNcmKmpKWq1Gmtra4oUKYKJicm/FmQvv8ff/zdy5RoIaLvjoD1Pn86jceNeWa6bYXR0NKtWrTKIgszS0pIWLVoQGBiYpQsyyOy4KAWZbkw4PoHGhRsrHUMIgzCjwQycrZw58OCA0lG0qn592LwZtm+Hvn0hG1/F+U7i4+Np3nwQISFL0XZBlvnB8yi2bl0gBZn4Tzng84+ca9u2bfTv35+KFStib2+PnZ0dpqamuLu7s2/fPvr16/fOY+XPn5+pU3szdOhYoqOnaTlpMW7f7kXPnsNZu/YXLY/9YV4WZDEG0oqqYcOGWFhYsGvXLqWj/CsLCwsqV66sdAyDlK5KxzePL8XciikdRQiD4WbjxsKLC7Ezt6OadzWl42hNixawZg107gw2NjBvHhhiTaFWq2nRoi+BgT8AubQ8ugY3t8GsXj0JJycnLY8tDJGslBmwvn370q9fP2rVqoW/vz8jRoygUqVKFC9enPXr1zNo0CC2bdvG77///k7npbp2bUu9evGYmWn/U8GUlNbs22fDb7+t0vrY7ysyMpIVK1YYTEFWuHBhypYty4EDB7L8ubjy5ctjYWGhdAyDo9FoWHllJQMqDFA6ihAGxdzEnLWfr+Vy6GWlo2hdx46weDEsWACjRoEhHnb59tspXLhQE7Va+wW1jc1yevT4lM8+M5xiXeiWrJQZuMmTJ9OkSRP8/PyoUaPGq0YeU6ZMoXbt2rRq1Yr4+HhMTU3ZsWPHf463atVMypZtzt27pdD2p0rR0ZOYOLEdZcsWpUqVSlod+11FRESwevXqV9s9sztLS0uaNWvG/fv3uXw5a79pMDExkVUyHdl3fx9B8UFKxxDCINma2zK40mDGHBnDFxW+IK9DXqUjaU2fPpkt8r/6CuzsYOxYpRNpz9atu1m58hkJCd/pYPSbFC++i6lT//t9lRAvyUqZgXN1deXrr79m7F+/SSMjIyldujRr1qzh/PnzrF+/nt27dxMeHs6KFSv+czwrKyt27pyHp2c/QNsXaJrw4sUy2rcfRUhIiJbH/m8vXrxg1apVBlOQATRq1Ahzc3N2796tdJT/VKpUKRwcHJSOYZCOPDrC8KrDlY4hhEHrU64PPfx7EJWc/c8h/92wYTB5MowbB3PmKJ1GO27fvs2QIb8SGTkXbV8QDYnkzTuEXbsWY2wsb7PFu5O/LTlAhw4dWLt2LQDdu3enbNmy3L59m5Il/9cxqnTp0nh6er7TeEWKFGHSpI44Ok7QQVpHnj79lYYNe5KSkqKD8d8sLCyM1atXEx8fr7c5de3TTz+lTJky7N+/P1sUmv//OgahHZdDLvNT3Z+wNbdVOooQBs3HyYd5jedhYmRCakaq0nG0aswYGDkyc8VsyRKl03ycqKgo/PwGERKyAtD2dnkNrq6DWbZsbJbsKC2yNinKcoi8efPy6NEjrKysmDbtf406VCoVP/zwA/v27Xuv+zP69OlMvXpRmJnt10HaIty5M4w2bb7Qy11aoaGhrF69OttfDP13VlZW+Pn5ce/ePa5evap0nP9UpEgR3N3dlY5hcBLSEhgeMBwTY+lmKYQ+FHMrxrO4Z3TZ0YUMtbZ3kyjHyAh++gkGDYL+/TNb5WdH6enpNG7ck0ePfgbe7YPo92FtvYzu3QtSv35trY8tDJ8UZTlIQkICN27ceLVF7MaNGwwdOpQ7d+6wbNkyfHze7w6yNWtmU6jQbOCJ1rOmpzfijz9KMWaMtjs9vi44OJjVq1eTmJio03n0rXHjxpiammaLbYtqtVpWyXRk4cWFDKs8DFNjOT4shL6UcC9B22JtGXvUgA5gkVmYzZ0L3btDt27g7690ovfXvfvXXLvWBY2mnA5Gv0yZMvuYPn2MDsYWOYFcHp3DfP3111y7dg0XFxcCAwOpXbs29evXp2bNmh/U9e7hw4fUqPEFwcG70MU2ABeXASxY0Jj27VtqeWwICgpi3bp1JCUlaX1sJRUtWpT27duzfft2rl27pnSc/5QvXz569uypdAyDk5CWgImRCZamlnI/jhAKSEpP4lb4LSrkqqB0FK1SqTI7M/r7w+7d0KCB0onezdSpC5g6NZLY2PE6GD0aV9dq7NixmOrVq+tgfJETSFGWAx09epRLly7RpEkTXFxc3vks2dts3bqbAQMOEBm5QEsJ/y4ND4/W7NnzPRUqaO+TrWfPnrFu3Tq9nlvTB2trawYOHMjz58/ZuHGj0nH+k1qtpmPHjhQtWlTpKAbnqwNf0blUZ4N7QyhEdvLdke/wsvNicKXBSkfRqrQ0+PxzOHoUDh6EGjWUTvTvdu8+QK9e64mIWIX2G3uocXdvz8qVvfntt19p3749nTt31vIcIieQ7Ys5UJ06dRgxYgTFixf/6IIMoE2bZrRv74S1tS7uGDMnLGwVrVuP4Pnz51oZ8enTp6xdu9bgCjKApk2bYmxszJ49e5SO8k68vLwoUqSI0jEMTmhCKA9jHkpBJoTCJteZzP3I+4QnhisdRavMzWHLFvD1haZN4eJFpRO93fXrN+jf/xciIhaj/YIMHBym8O239WjcuBE7duzg1q1bDBo0iNRUw2r2InRPVsqEVqhUKqpXb83Zs+MBXezVfkDRol9w7tx27OzsPniUx48fs2HDBoP8ZVm2bFlatGjB5s2buXXrltJx/pNGo6F58+aUL19e6SgGJzo5msjkSAo5F1I6ihACOPv8LBYmFpT1Kqt0FK1KSMjcvnj3Lhw/Dn9r6pwlhIaGUqVKJ5482QS4aX18M7MDNGmylR07lry2TXz37t3Mnz+fxYsXky9fPq3PKwyTrJQJrTAxMWHPnmXkzz8ciNDBDIW4d28ijRp1JyPjwzpaPXr0iPXr1xtkQebq6krjxo25dOlStijIABwcHChTpozSMQxOeGI4c8/NlYJMiCzkE5dP+ObQNwTHBysdRatsbWHfPvD2hvr14d49pRP9T2JiIvXqdePJk1/RRUEGD/nkk9ls3Dj/H+d2mzVrxm+//UafPn24mJWXEUWWIkWZ0BoXFxe2b5+Fh0cvtH+xNKhU1fjzz/Z06jTkvVvl379/nw0bNpCWlqb1XEozMTGhdevWxMbGcuDAAaXjvLPKlStjYiKt2rVt9tnZ1MpfS+kYQoi/cbZyZqHfQs48O6N0FK1zdIRDh8DZGerVgyfab8j83jIyMmjSpAd37nwH6GKLfCJ58vRj374lWFpavvEZPj4+7Nq167Ut+tnhzlChHCnKhFaVLVuGKVM64uQ0Uifjp6S05+DBAowaNfWdv+fGjRts3LjRIAsygHr16uHm5sbWrVtJT09XOs47sbS0pGLFikrHMEgeNh7UzF9T6RhCiP/nE5dP8PvEj+GHhqPWqJWOo1VubnD4MJiZQd26EBKiXBaNRkPXrsO4cOFzVCpd/C7U4ObWjxUrxuLt7f2vz7SyssLW1hbIvIKnV69eBAYG6iCTMARSlAmt69WrI61bm2JltUYn48fFDWfp0hAWLfrv8S9dusS2bdtQqVQ6yaK0woUL4+vrS0BAAGFhYUrHeWcVK1bE3Nxc6RgGZ+ednfQr30/pGEKIt7AwtaCIaxGDu8MMIFcuOHIEUlMzV8widHGS4R2MGTONffvykpzcUSfjOzj8xFdf+VKvXq33+r4OHTpQsWJFChYsqJNcIvuTokzoxMKFUyhbdgdGRud1MLoRUVGzGTduL3v3Brz1WadPn2bXrl3vvdUxu7C1taVly5bcu3ePc+fOKR3nnVlYWFC1alWlYxicmJQYFl1ahKXpm7fSCCGyhj7l+lA1b1WDfG3Knz9zxSwiAho2hJgY/c6/cOEaFi8OJi7uW52Mb26+mzp1HjNq1KD3+r4NGzZgb2/PyJGZu4hWrlzJF198wbJly4iOjtZFVJENSVEmdMLExIS9e5dTsOBoIEgXMxAevoI+feZw8eKf//jqsWPHOHjwoMFemmtkZESrVq1Qq9Xs3LlT6TjvpVKlSlhZWSkdw+Bsu7WNIZWGGOzfeSEMid8nfow/Np4/nvyhdBSt+/RTCAiAR4+gUSPQ1zGq3bsPMn78fqKiZqOL1vdwk2LFfmPDhnnv/Xs2X758uLllNhsZMmQIe/bsIX/+/CxZsoSxYw1v1VR8GCnKhM44Ojqyd+9v5MrVC0jWwQxWhIaupWXLETx48ADI3Eu+b98+jh07ZtBvTn19ffHx8WHHjh0kJSUpHeedWVpayiqZDiSkJfB50c9pVKiR0lGEEO9oZPWRTPpjEg+jHyodRetKlcoszO7cgcaNIT5et/OdOXOevn3nER6+HNBFA6kI8uX7koMHV2JhYfHe321nZ8fZs2dZunQpRkZGrFu3jpEjR7J582YuX75McLBhdeUUH0aKMqFTn3zyCUuXjsDNrS+gi60aTgQFraZBg34EBQWxc+dOzp07h7Gx4f7VzpUrF3Xr1uXUqVM8fJi9XsxllUw35p6by8mnJw36gwghDI2tuS1rWq3BzdqN+FQdVy0KKF8+syvjjRvg5weJibqZ586dO7Rt+x1hYesAXWzfTsPTswf+/nNwd3f/oBFKlizJiBEjmD59+mvvUWxsbEhMTDTYc+/i/RjuO1eRZTRuXI/hw6vh4PC9jmbIzaNHv+Hr25wzZ84Y9BtTc3Nz2rRpQ2hoKMeOHVM6znuxtLTE19dX6RgGJz41nmOPj+H3iZ/SUYQQ78nT1pPncc/psqML6ars0T33fVSqBAcOwJ9/QvPmoO2NHc+ePaNRo4EEBa0BHLQ7OAAaXFwG88svfSldutRHjdSrVy9mzpzJ48ePadSoEfv376dVq1b06NGDvHnzaimvyM6MNIZ40lRkSV27DmPbtkokJ3fS0QxnyZu3L126NDPYzn4tW7akaNGiLFy4MNsdDq5Zsya1a9dWOobByVBnEBwfjLfDv7dmFkJkXdtubeNK6BUm1ZmkdBSdOHEi83xZtWqwaxe85Wqv9xIeHk7Vqh148GAJ4PPxA76Bvf10hg415ocfhmttzOTkZCZOnEiuXLkwNjbmyy+/1NrYInuTokzoTUZGBrVqtefs2a9RqarpZA5j40Pky/ctnTr5YWpqqpM5lFKyZElat27N9u3buXbtmtJx3oulpSVfffXVB+3FF2+XlJ7EkP1DWNp8qdJRhBAfKSUjhTsRdyjjWUbpKDpx/Dg0aQK1asGOHfAxLwexsbFUrdqWW7dmASW0lPB1Fhbbadr0IFu3LjToHTgi65Dti0JvTE1N2b9/JYULTwAe6GQOtboBz56NZcuW/ajVhnM5p5OTE35+fly9ejXbFWQAVapUkYJMB1ZcXkHdAnWVjiGE0AILEwvmnZvHnnt7lI6iE7VqZa6SHTsGbdtCWtqHjZOUlETt2p24c2cyuirIjIzOU7r0KjZunC8FmdAbKcqEXtnZ2REQsBJv735ApE7myMhow5Mng9i27aBB3ANjbGxM69atSUxMZN++fUrHeW9WVlZylkxH7C3saVOsjdIxhBBaYGRkxK9Nf2XjjY2kZqQqHUcn6tWDnTvh4EHo0AHS3/MYXWpqKnXrduLatRGo1ZV0khEeU7jwaA4dWo2ZmZmO5hDin6QoE3qXJ08edu6chadnVyBFJ3Okpvbi0aPO+PsfzvaFWe3atfHy8mLbtm2kpma/F2pZJdON089OUyVPFcxM5E2DEIbCwtSCtZ+v5cTTE8SkxCgdRycaNoTt22HPHujcGTIy3u370tPTadiwK5cu9UelqqWjdNHkzdubQ4eW4+Cgi8YhQrydFGVCEWXLlmHx4qG4ufUGdLPNMDl5CA8e+LF377FsW5gVKFCA6tWrc/ToUYKCdHEJt25ZW1tTpUoVpWMYpKknp+Jq7ap0DCGEDjhYONB7V2/UGsPZhv93TZvCli2ZZ8u6d4f/6gifkZGBn19Pzp7tQHp6Yx2lSsHTswvbt88gX758OppDiLeTokwoplmzhowbVxcnpxE6myMxcTR379bm4ME/sl1hZmtry+eff86jR484ffq00nE+iKyS6UZQXBCFnQvjZOWkdBQhhA5UzF2R5p8058+QP5WOojMtWsCGDbBpE/Tq9fbCTKVS0apVP06c8CM19XMdpVHj5taHhQsHU6FCOR3NIcS/k6JMKOrLL3vRo4cDdnazdDZHQsL33LxZhYCAkzqbQ9uMjY1p27YtGo2Gbdu2ZbuCEjIvxZRVMt0wMTbh5wY/Kx1DCKFD3ct0x8HCgb339iodRWfatIG1azP/9OsH/78/l1qtpk2bARw9Wovk5A46y+HsPJxx4+rQooWuVuGE+G9SlAnFzZw5jkaN7mNltUFncyQk/MSNG+U4fDh7FGb169cnT548bNmyhcTERKXjfJAqVaoY7H1xSgpNCOXL/V9KRzAhcoB8jvmYf2E+t8NvKx1FZzp0gFWrYMUKGDgQXn4GqVaradfuCwICqpKU1E1n89vb/0zPns58+WUvnc0hxLuQokwozsjIiPXr51G58k7MzAJ0Nk98/AyuXSvN4cOndDaHNhQvXhxfX18OHTrEs2fPlI7zQWxsbKhcubLSMQzSrxd+ZWCFgUrHEELogbmJOcubL+dc0Dmlo+hUly6wbBksWgRffgkqlZr27Qdy4EAlEhN76mxea+s1NGnymBkzvtPZHEK8K7k8WmQZycnJVKvWhitXvkejqaCzeezsvqFUqavUq1ddZ3N8KFdXV/r27cu9e/fYtm2b0nE+WL169ahePev9/2sIroddp4R7CVkpEyIHUalVjDs2jsl1JmNsZLifpy9ZAv36qSlZ8gsePqxEYmJvnc1lZrafmjXXcODAGkxMTHQ2jxDvynD/yxbZjpWVFUePrqNgwa+AOzqbJz5+JteuleXQoRNZ6qyWubk57du3JzY2lt27dysd54PZ2trKKpmOrLm6hqT0JCnIhMhhTIxNyOeQjx//+FHpKDrVq5eKihX78+BBFZ0WZCYmpylT5jf27FkhBZnIMqQoE1nKjRs3yJPHlPz5+wO627oXHz+D69crZamujM2bN8fe3p5NmzaRlpamdJwPotFoqFKlily4qQMajYZVV1dRxrOM0lGEEAroV74fBZwKZJnXLG3LyMigVau+3LxZg+Rk3W1ZhOsULfo9R46sk+7AIkuRokxkGXv37uXnn39m9+7dHDmygrx5uwMvdDZfQsJP3LxZM0vcY1alShVKlCiBv78/kZGRimb5GI6OjtJxUUfCk8LpWqorFqbyJkKInMjIyIgupbow8fhE7kfeVzqOVqWnp9O0aQ8OH66v06YeEEjhwsM4dmwddnZ2OpxHiPcnRZnQG7Vazdy5c7l48eI/vrZ27VrWr1/Ppk2bsLW1xcfHh3375pIrV2cgVmeZEhImcudOE/z9DytWmHl7e1O/fn1Onz7NrVu3FMmgDRqNhpo1a2Jqaqp0FIN0Pug83ct0VzqGEEJh/cr344u9XxCfGv/Gr0ckRRCXGqfnVB8uNTWVBg268Pvvn5Oc3FGHMwWRP39fjh5dhaurqw7nEeLDSFEm9ObFixe4uLhQt25dbty48erxuXPncvr0aVavXv3aVoISJUqwffsUPD07ArprC5+YOIp799qzdesB1P//khQds7W1pW3btjx79ozDhw/rdW5t8/T0pGzZskrHMEi3wm+x6+4upWMIIbKA3Pa5mVF/BhnqjDd+mHjgwYFsc7dZUlIStWt34PTp7jq8GBognLx5uxEQsJg8efLocB4hPpwUZULnXr5oeHp64uXlRXx8PGfOnAFgzZo1hIeHs2DBgjcetq1cuSLr1o3Cw6MTkKKzjMnJQwgMHMDGjXvJyMjQ2Tx/Z2xsTJs2bQDYunWr3gtCbVKr1dStW1caUOjI0j+XMrTyUKVjCCGyiLJeZTkXdI7pp6b/42ulPUpzLeyaAqneT2xsLNWrt+X8+SGkpTXR4UzR5M7dif3751KoUCEdziPEx5GW+EKnNBrNqzfqK1eu5Pvvv+e7776ja9euWFhYkJ6e/k5NIXbvPkifPkt48WI9oLsLiU1Nt5I372Q6dGii84uPGzRoQOXKlVm1ahVPnz7V6Vy65uPjQ7duujwHkHOlqTKbvpibyEXcQoj/0Wg09NnVh3bF29GwUMNXj6ep0rgUfAnfvL4Kpvt34eHh1K7dmdu3J6NWV9LhTHF4ebVj164pVKhQTofzCPHxZKVM6ExS0v9ad8+ePZtJkybx008/0adPn1fbFN91dahZs4bMn98NN7cegO5WsjIy2vDkyXTWrt1NcnKyzuYpVqwYVatWJSAgINsXZBqNhrp16yodw2AturiIAw8OKB1DCJHFGBkZMb/JfIq6FSU5/X+vV+Ym5lx/cV3BZP/u2bNnVKvWgZs3Z+q4IEvE07MjmzdPkIJMZAtSlAmdSEtLo2fPnhw5coQ5c+awaNEi5s6dS9u2bQEIDAykefPmdOvWjV69er3TmG3bNmfmzM9xde0FqHSWXa1uwLNnS1mzZg9xcdo/LO3q6kqLFi24ceMGZ8+e1fr4+layZEly586tdAyDpNFo2HVvF40LNVY6ihAiC7Iys8Lewp6Wm1qSkvG/Lf4nn54kMinrdfK9e/cuNWp05/79JUBJHc6UhIdHB9atG0n16ll3xVCIv5OiTOiEubk5AwcOpFmzZkydOpWdO3fSqFGjV+fGevbsiZmZGbNmzcLU1JROnTq907hdu7Zh6tTGuLr2QZeFGVQmJGQr69YFEBERobVRzc3NadeuHXFxcezalf0bN5iYmFCnTh2lYxisdHU6o6qNwsxE7n0TQryZo6UjQyoNYWTAyFePlfYozZ2IOwqm+qdz5y5Qt+4gnjxZD/jocKYUPDw6sXLlMOrU+UyH8wihXVKUCZ2pWbMm27dvByAuLu5VQfb48WOMjIzYtGkTuXPnZvHixcTFxXH//rvdu9K7d0cmTaqDi0s/QJfNMYry4sV+Nm48xfPnz7UyYrNmzXBwcMjWF0T/Xfny5XF2dlY6hsFadHERn+WTNxVCiEzJ6cn02NmDq6FXX3u86SdNGVNjDNHJ0QB87fs1VfNWVSLiG+3Zc4iWLb8nKGgr4KnDmTILsmXLBtGokWyrF9mLFGVCpxo1asSECRM4evToq8eMjY1JSUnhzp3MT/GeP3/O8+fP36nhx0sDBnRl0qSaeijM8hAZeZQdO25y9+6DjxqpcuXKlCxZEn9/f62uvinFwsKCmjVrKh3DYMWkxHDk0RFZJRNCvGJlZsWEmhP47eJvnHx6ktiU/93j6W7jTu9dvbkVfovI5Ei+2PuFgkn/Z/HitfTqtZzQ0K2Aow5nSsHdvRNLlvSnadP6OpxHCN2Q7otCb+bMmYOfnx+FChVi2bJlHDt2DG9vb3777Tc6d+7M/Pnz33vM335bzbhxvxMZuRj4Z0t97UnByakl1arZUL78+++DL1CgAF27duXcuXMcPHhQB/n0r3bt2lKU6dCBBwdITk+mVdFWSkcRQmRRk36fxNWwq4yuPpryucoTmhBKtx3d2N95P803NmdvJ+XuK9NoNIwdO4OFC58SFfULun6NdnfvyNKlA2jWrOF/P12ILMhU6QAi50hPT6d79+6cOnWK3r17Y2xszPTp02ncuDHfffcdkNmN0dj43Rdwv/iiG0ZGRowb14eIiKXo7pe+JdHRezlxohexsaepXdv3ne/kcnJyom3btjx69IiAgAAd5dMve3t7qlWrpnQMg6XRaPjU5VMKOBVQOooQIgsbV3McQXFB3I64zdnnmY2jtrXbRkhCCE0K6fLur3+nUqno1u0r9u7NRWzsPECXd1gm4+7eHm/vMKpUkS6LIvuSokzozYgRIwgKCuKzzz4jT548BAQEMHjwYNq3b4+XlxfAexVkLw0Y0BVzc1NGjuxJRMRydPfX2oTY2JVcvjyB2NgAWrSo9595zc3N6dChAykpKdn+guiXNBoNn332Gaam8utDV84HnWfHnR1MrTdV6ShCiCwut31uctvnJiQ+hOmnphOcEEwFrwoExwcTnhiOm42bXvMkJSXRtGlPzp1rTnJyZx3PloiHR0dWrhxKnjwedOrUiQ0bNuDq6qrjeYXQPtm+KPTuzJkzGBsbY2lpSenSpbU27tq1W/n66+2Eh69ElxdMA1hYrCB37l9o167xqzvX/j8jIyPatWuHj48PS5cuJTw8XKeZ9MXDw4MBAwa880qheH+9/XszusZoCjkXUjqKECKbSUpPIj41Hs+ZnsyoP4PhVYfrbe6wsDDq1evG7dujUKlq63i2eDw9O7B27bfUrZu5lf769et8/fXXbNy4ERcXFx3PL4R2SVEmFKXRaLT65n7Lll0MHryaFy/WApZaG/dNjIyO4en5Je3b18fBweEfX69VqxY1a9Zk48aN3L17V6dZ9EWtVtOpUyeKFCmidBSDdiv8FsXciikdQwiRjQXHB2NpaomzlX465N66dYumTQfz+PECoKiOZ4vGy6sjmzZNoEaN1+8hu3r1KsOHD2fTpk3SHVhkK9J9UShK26stbds2Z9myvnh4tAcStTr2/6fR1CYkZAdr1x4lKCjota8VLVqUWrVqcfToUYMpyAB8fHykINOxlVdWvnYJrBBCfIhcdrn0VpDt3RtAvXpf8/jxBnRfkIWTK1c7/P1//EdBBlC6dGmmTZtGhw4diI6O1nEWIbRHijJhcPz8GrJ+/Td4ebUFYnQ8W2EiIo6zffsdrl+/DWRu72vVqhU3btzgxIkTOp5fv+SiaN3SaDSsv76eEu4llI4ihBDvZMaM3+jZcxUhITsADx3PFkTevB04cGA2FSuWf+uzypUrx08//URoaKiO8wihPXJSXxikOnU+Y8cOKz7/vB3BwWsBdx3O5kRU1FGOHu1GbOwFNm9eQ2RkJP7+/jqcU/+KFSuGt7e30jEMWkxKDK2KtMLcRLdnIoUQ4mNlZGTQo8c37N3rSEzManT/OX8g+fP3JSBgMYUK/fd52/LlXy/aTp06hbm5ORUrVtRVQCE+ipwpEwbt5s2bNG78Jc+erQR0XVBo8PT8kUqV/qRq1cokJyfreD79MTExYeDAgXJwWseOPTpGrfy1pImKECJLi4mJoXHjHly50oGUlA56mPE6hQsP4+jRVeTJk+e9v/vkyZPUrVuXokWL8scff2Bvb6+DjEJ8HNm+KAxa8eLF+f33Zfj49ADu6Hg2I0JDx7J3b3fmzVtLXFycjufTH19fXynIdCw2JZbZZ2dLQSaEyNLu3r1LhQqfc+7cd3opyIyNz1C8+DecOrXxgwqyo0ePMmTIEKZOnUrJkiV58OABkLldXIisRIoyYfAKFCjAqVPrKVLkS4yMLuh8PpWqBUFBm1iz5ghPnz7T+Xy6Zm9vz2effaZ0DIO36eYmOpboqHQMIYR4K3///dSuPZTAwHVoNLrfBmhmdoBy5aZw+vRW3Nze/76133//nd69ezN37ly++uoroqKimDFjBqD9RmNCfCzZvihyjJiYGOrW7cL160NJT6+vhxljcXJqRdWqDlSooL372PRJrVbTunVrrd4nJ94sJSMFYyNjOU8mhMhyNBoNo0dPZdmyQCIi5qPrK2cArKzW4eu7h717V2Bp+WHz3bx5k7i4OHx9M7s03rhxg4EDBzJz5kw5WyayHFkpEzmGo6MjJ09uoVq1pVhZrdfDjA5ERwdw4kRu/P0Po1Kp9DCnduXPn59SpUopHcPgBUYFMvH4RCnIhBBZTkJCAvXrd2bBAlsiIpagj4LM3n4WzZqd4tChtR9ckEHmEQZfX99XWxU9PDywtrbm3LlzgGxhFFmLFGUiR7GysuLw4fX4+Z3E3n6mHmY0IS5uPrdufcGqVTuz1TkzIyMjGjZsKFs89GDd9XU0LtRY6RhCCPGae/fuUb58C44fH0BCwpeArl8P1Dg5Dad37wQ2blyAiYmJVkZ9+Trm5uZGjx49mDVrFo8ePZLXN5GlSFEmchwTExM2bVpAnz5JODt/Dah1PmdaWmeePdvImjVHePToic7n04Zy5cqRO3dupWPkCHnt81IjXw2lYwghxCubN/tTq9YQ7t1bjUqlj3PFqbi59WD8+CLMmjVeZwVT06ZNKVy4MH/++adOxhfiQ0lRJnIkIyMjZs4cx/ffl8TNrQuQoodZixMRcZLdu0M5efJClt42YWlpKRdF68nt8NtUyl0JYyP5dSyEUF5GRgZffDGGgQMDCAnZBejjw7loPDxas3hxB4YN66PTmezs7KhSpYqclRZZjjT6EDnenj2H6NdvDiEhawB9tH3XYGPzPXny7KFVq/pYWFjoYc53p9FoaNSo0auD0UK3Bu8bzMCKAynmVkzpKEKIHC4sLAw/vz7cvNme5OQuepr1CXny9GLbtmlUqlRBpzNpNBrZsiiyLPloVuR4fn4N2LfvJ7y92wL39TCjEYmJE7l3bxorVuwmODhED3O+Ow8PDypXrqx0jBxBrVHzOOaxFGRCCMUdO/YHFSt25OLFn/RWkBkZXaRw4V6cOLFM5wVZ5nxSkImsS1bKhPhLUFAQ9ev34N69CahU1fU0axjOzu2oUsWJChVKK/6CoVar6datG4UKFVI0R06Roc4AwNTYVOEkQoicSq1WM3r0NFasuE14+ALATi/zmpv7U6rUUgIC1uDo6KiXOYXIymSlTIi/5M6dm3PntuPrOwcrq3V6mtWDqKhjnDhRmC1b9pOamqqned+sePHiUpDpUY+dPYhLzT4dOYUQhuXFixdUq9aaBQtcCA9fhX4KMg329jNp0mQPp05tk4JMiL9IUSbE39jZ2XH8+CbatLmIo+N49NGZEYyJj5/BnTs/smLFboKCgvUw5z+ZmppSv74+LtUWALEpsSSmJ+Js5ax0FCFEDhQQcIyKFTty9uz3JCb2Q/ft7gHScXH5gkGDMti+fTHm5nI3oxAvyfZFId7i558XMn36CcLDlwDWepo1AiendpQvb03VquX1up3xs88+k46LehQUF8ST2CdUzVtV6ShCiBwkIyODYcO+Z9OmECIi5gC2epo5Eg+PHsye3YuOHVvpaU4hsg9ZKRPiLYYPH8CCBW1wcqoKPNfTrK5ERx/hzJnKrFu3m8TERL3M6uDgQI0ack+WPh0MPCgFmRBCrx4/fkz58s1YtqwoERFL0V9Bdpt8+dqyb98PUpAJ8RZSlAnxFunp6axevZwVK76nUKHuGBuf1dPMRiQmjiMwcDErVx7i3r0HOp1NrVZTr149zMzMdDqP+J+nsU/5/cnvSscQQuQgy5dvoFq1AVy7toCUlE56m9fMbB+lSn3N2bPrKVeurN7mFSK7kaJMiDfQaDQMHTqUHj160KJFCy5e3I6v7wysrVfpMUUFIiLOsH+/mj17jpKRkaGTWXx8fChZsqROxhZvdvDBQTqX7Kx0DCFEDhAbG0vTpj345pvbBAfvBnz0NLMGe/vpNGmynfPnd+Lp6amneYXInuRMmRBvsGDBAqKiohg3btyrx1QqFYMHj2Pz5mSiomYA+mtjbmq6GVfXH2jWrCq5cuXS6tj9+/fHy8tLq2OKt9NoNCSmJ2JjZqP4FQhCCMN27Ngf9Oo1kadPJ6FWV9PjzEm4ufVn8ODyjBs3VH7XCfEOZKVM5FiXL1/m8OHD/3j88OHDnDlzhrFjx772uImJCb/9NoVZs3zx8GgFhOspKWRktCM09AjbtgXy++9nUau10xWyQoUKUpDp2ZXQK3x//Ht5kyKE0JnU1FT69h1Ju3ZrePx4p54Lssfkzt2C1at7MH78MPldJ8Q7kqJM5EgpKSncvXuXgQMHMmbMmFeP379/nxkzZrBkyZK3vpB0796Ogwd/pECB9hgZXdJXZDLvNDvMuXONWblyJ1FRUR81mq2tLXXr1tVSNvGu1l5bS+dSsnVRCKEbly9foVSppqxe7UtExBLAXm9zm5oGULRoX06eXEKjRvL6IsT7kO2LIkdr3LgxcXFx7N+/H3t7e0JDQ1Gr1e+0RTAqKopmzfpw5UozkpJ66iHt3z3E2bkLFSq4UKVKuff+JFKtVtO6dWtKly6to3zibQICA6jnU08+PRZCaFV6ejqjR09jzZobvHgxF3DX4+wa7O2nUaPGXbZs+RUrKys9zi2EYZCVMpFjjR8/nqioKJYtW4a9feYniZ6enu98ZsvZ2Zk//thC796PcHEZAKToMO3/50NU1ElOnarE6tX+REdHv9d3FypUiFKlSukom3ibq6FXsTC1kIJMCKFVN2/epEyZpixYkJ8XLzag34IsFnf3Dowebcfu3culIBPiA0lRJnKUl2ex1q9fz/r165k2bRqFCxcG4OnTp5w/f547d+6883gmJibMnfsDS5Y0I1eu5sBjHaR+G2MSE8fx+PFG1q07y7lzf/IuC98mJiY0btxYCgMFrLq6CkdLR6VjCCEMRHp6OiNHTqFu3YncurWSlJQugD5/t1/D27sV27d/xahRg+R1RYiPIEWZyDHu37+PsbExV65c4bvvvmPChAnUrFkTExMTIiMjKVSoEIsWLaJVq1Zs3LjxvcZu1aopJ08uolixfpiZ7dXRT/A2RYiMPM2JE5VYterfz5ppNBp8fX1xc3PTYz7xUnhSOCXd5foBIcTHu3LlKqVLN2XuXG/CwjYD2u3M+1+srFZSqdI4Ll7cRLVqVfQ6txCGSM6UiRwhOTmZtm3b4uXlxcWLF+nQoQNDhgx5tc3i2LFjzJ49m127dvHnn3/Ss2dPpk2bRqNGjd5rnpSUFLp3/4aAADuioyejz7b5mQJxcelO6dL2VKtWAWPj1z93cXJyYtCgQZia6juXiE+Nx8rMClNj+f9eCPHhUlJS+OabyWzd+pAXL2YDHnpOkISr6xA6dcrDrFnjMDEx0fP8QhgmWSkTOYKVlRUbNmwgMDCQJ0+e0L9/f6ysrIiMjOSbb77B39+fixcvcv36dcqVK0eVKlW4d+/ee89jaWnJpk0LmDmzDF5eLYDn2v9h/lVBIiNPcOZMA5Yv30FISMirr6jVaho3biwFmUIm/TGJa2HXlI4hhMjGfv/9JCVLNmXp0vK8eLEe/Rdkt8mduymFCt3m55+/k4JMCC2SlTKR4/To0YMrV65w5coVOnXqREREBMuXL2f79u2MGTOGnj17smDBAi5fvvxR3Qnv3btHixaDCAz8ivT0Jlr8Cd5VMM7OvShcOJW6datSunRp2rVrp0AOodFoaLC2AYe6HJIzF0KI9xYTE0OfPqP5/XeIiPgJcNR7Bmvr1RQpspnduxdz8uRJLl26xLRp0/SeQwhDJUWZyJGuXbtGqVKlKFasGPv27SN//vwAjBo1iqpVq1KyZEkKFCiAWq3+xxbA95GSkkKPHsMJCLAkKmoKYK6dH+A9mJpuxsVlEvPn/0CbNq30Pr+ANFUaZ56doWb+mkpHEUJkIxqNhtWrNzNu3GKCgiaiVtdQIEU8bm5D6dTJm5kz/7ddcfDgwTRq1Ag/Pz8FMglheGT7osiRSpYsSUJCAnnz5uXgwYMAZGRksHfvXsLCwihQoADARxVkkLmdcePG+cybV5XcuZsBDz42+nvLyGhHWNgZ+vc/ScOG3QgNDdV7hpxu041NlPKQKwiEEO8uMDAQX9/PGTLkPs+e7VeoIPsTb+8WbNjQnTlzJr62XXHmzJnMnTuXp0+fKpBLCMMjK2UiR7t79y59+vShWLFiXLlyhdy5c7NgwQK8vLy0PtfTp09p0eIL7t7tQHKyvtsWv3SF3LlHM3hwU0aM+ELOA+iBbF0UQryPlJQUxoyZzoYNVwgNnQEUVCCFGju7OZQte5bt23/DxcXljc8KDAxk8ODB+Pv7Y26u/50gQhgSWSkTOdqnn35KQEAAZcuWpX///qxevVonBRmAt7c3Fy74M2DAI9zcugMxOpnn35UhKGgvkyZZUqJEI06dOqNAhpzlWdwzquSuIgWZEOI/7dq1n+LFm7BgQXFCQ7ehTEEWgofH54wda8nx45veWpABFCxYkD59+vDTTz/pMZ8QhklWyoRQwIkTp+nefSxPn36PSqXElhSASFxdx+Lrm86SJT/i4aHvLl45Q3RyNE5WTkrHEEJkYY8ePaJHj1Fcv16A6OhxgI0iOczNd+Ljs4Bt236hWLFi7/x9SUlJWFtb6zCZEIZPijIhFBIXF0eXLl9x8qQ70dHfo0QTkEwXyZVrLAMGNGLUqEGYmZkplMMwNVjTgANdDmBsJBsThBCvS0pKYtSoaWzdep2QkJ+ATxVKEo+r63CaN7fn118nY2Fh8UGjvHjxApVKpbMdJ0IYMnmXIIRC7O3t2bVrGfPmVSB37qbATYWSVCA4eB9TpjhRrFgj9u07pFAOw3PzxU2KuhaVgkwI8RqNRsOqVZsoVsyPhQvLExKyDaUKMmPjU+TL14L16zuwbNmMDy7IFi9eTL169WjZsiWTJk3SckohDJ+slAmRBYSEhNCmzWCuX/clPv4rQKkGHPE4OU2haNH7LF/+I59+qtSntobhScwT0lRpFHYprHQUIUQWceHCRfr2ncCjR58RFzcM+LAi6OOl4uQ0kapVQ1m3bg4ODg4fPNKECRM4evQoq1atIjg4mC5dunDz5k1sbJTZhilEdiQf3wqRBXh5eXHy5FYmTXLEy6s5EKhQEjuio3/i9Onp1Kr1PV26DCMyMlKhLNmf/11/KciEEAA8f/6cpk170bTpYq5eXUZc3EiUK8gukydPU379tRJ79qz4qIIsLS2NJ0+esGTJEnx8fAAoW7Ys/v7+xMTEaCmvEIZPVsqEyGIeP35MmzZfcvduIxISvkDJz06MjU/g5TWZPn0aMnr0oA/e1mLovg34lun1p7/22N2Iu8w7P4/5TeYrlEoIkRXEx8czevR0duy4RnDwD0BpBdOk4+g4hbJl77Bx4y+4u7trZdS6deuSkJBA7dq12bhxI127duX8+fOYm5uzePFiOWMmxDuQlTIhspj8+fNz/rw/332nwcurBfBQsSxqdQ2CgvYzdaonRYs2ZsWKDajVasXyZFW3wm/x/z/fOv3sNG2LtVUokRBCaenp6cycuZDixVuxaJEvwcE7UbYgu0Lu3E2YPftTjhxZr7WCDCAgIIAhQ4Zw584dVqxYwaRJkzh48CCPHz9m+/btWptHCEMmRZkQWZCxsTGjRg3m5MlfKF9+KLa2cwGVUmlITe3Eo0f7GDo0mJIlG3Po0BGFsmRN1fJWIzol+rXHWhZpSc38NRVKJIRQikajYcOG7RQt2ohx48x49uwgGRlNAKXuKkzD0XECtWtP49KltfTo0UHr9yYaGxvz+eefExMTg6ur66vHP/vsM9zc3LQ6lxCGSooyIbIwHx8fzp/3Z+JEC3LlagbcVjCNJfHx33Dr1kY6dAigUqWWXLp0ScE8WcfQKkMx+tsbricxTxgRMOK152g0GqacmEJsSqy+4wkh9OTw4WOULNmYAQPuERi4m+Tk3ijXuAmMjM6TN28T5s4twdGjG3R6H6WVlRVVqlShY8eO3L17l/79+3P58mVq1FDqLk4hshc5UyZENvHs2TM6dvyKGzfKEBv7Lcrda/ZSEG5ukylRIpZffx1PkSJFFM6jnFNPT/H7k98ZU2MMAPPPz8fbwZvmnzZ/9Zwffv8BCxMLRlYfqVRMIYSOnD9/gcGDfyQw8FOiokYCzgonSsDZeTy+vjGsWjUDFxcXvcyanJzMwIEDSU1Nxd7enoULF+plXiEMgRRlQmQjL++2GT9+Kc+fT0ajqaJ0JOABHh6TqFDBlHnzxlKgQAGlA+ldbEosA/YOYEPrDUBmkVbWqyzWZtYApKvSORh4EL9P/JSMKYTQsuvXrzNo0GRu33YlIuI7IJfSkTA1PUCePNOZN28kfn4NFcmQnJyMlZWVInMLkV1JUSZENhQZGUnv3qM4edKSyMjJwIe3M9aeG3h6/oivrwNz5ozB29tb6UB6dfDBQRoWakhsSiy77+2mS6kuACy5tIT4tHi+9v1a4YRCCG25ffs2X375I9evW/LixVggv9KRgDDc3Ufg5+fB3LkT5Y4wIbIZOVMmRDbk4uLCzp1LaNUqlbx5G2BuvhVQ+vOVEoSGbmDHjv5UqTKctm0H8vTpU4Uz6U9MSgypGakceHCA1IxUILNQO/v8LMOqDFM2nBBCK+7cuUODBt2oXXs6R45M4MWLpShfkKmxtl5M8eLd2L//K5YtmyEFmRDZkBRlQmRTDx48IDIygnv3fmfQoFt4erZGyfb5/1OWkJDNbN3ahypVhtO69Rc8fvxY6VA6dy3sGrcjbnMu6Bx+n/hxOeQyVfNWZVGzRRgbya9aIbKzmzdvUr9+V2rVmkZAwFjCwlYAWeFi+Kvkzt2UcePSuHp1H+XKlVU6kBDiA8n2RSGyIY1GQ8uWLZkzZ86rM1wPHjyga9dvuX37ZSMQS2VDvnIFT89pVKhgw8yZ3/LJJ58oHUgnNt7YSGpGKu2Kt+Ps87PMOz+PjW02Ym6idEMWIcSHunz5Ml99NZ3bt2148WIUUEjpSH+Jw9l5AhUqRLJy5TS5nFkIAyBFmRDZ0Lp163j+/DkjR77eye/l/ThjxiwgKGj4X3fjZBW38PCYTokSGcycOYLSpZW8RFX7MtQZHH98nAtBF3gW94yfG/z8qtGHECJ7OXHiJCNGzObhQ0/Cw0eg/BbFlzRYWq4nT57l/Prrd9SvX0fpQEIILZGiTIhsJioqinbt2rF//37MzMze+JzExES++eZH/P0fEBo6FfDRb8h/9RA3t5/x8Qlj6tSh1KxZQ+sXmSpBrVFj8oMJ39f6nvE1xysdRwjxntRqNbt372f8+F95/rw4UVFfAVlpBeoquXJ9R8+enzF+/DDMzWUVXghDIkWZEFlUUlISwcHBFCr0+naZfv360bNnT3x9ff9zjPv379O9+yhu3y5KTMxoICsd/g7FyekXcuW6wrhxfWnTpgUmJspdsqoNFZdU5EDnA7hY6+dOICHEx0tLS2P58g3MmrWGsLC6xMV9ATgqHetvonB1HU+FCgksWzaFXLmUb7svhNA+KcqEyKLWr1/PrFmzKFWqFMuXLwcyP8ndsmUL7du3f6+xdu7cyzffzCQoqDepqZ2ArLQyFY+d3RLc3PYyYEBrBg3qgbW1bPsTQuhWTEwMM2YsYt26AF68aEdycjeyzllcgAxsbBbi7b2bRYvGU6NGNaUDCSF0SIoyIbIgtVqNsbExGzdupFOnTly6dImyZT+uq1ZaWhqTJ89l+fIjBAVNBCprJav2pGNuvgV395X4+VVk3LhB8omwEELrAgMDGTv2F06efERISF9UKj+yWjNqE5ND5Mo1nREjOjJoUE+MjbNWPiGE9klRJkQWVrt2bWrVqsXYsWMxMTEhMDAQGxsbPD09P3jMFy9eMGjQRP74I5EXLyYBWe2SZw1wgly5FlC8uAWTJw+mUqVKSocSQmRjGo2GI0eOMWHCbwQG2hAWNgQop3SsN7iJu/tIWrYsyYwZo7G3t1c6kBBCT6QoEyKLUalUmJiYMGPGDLZv386OHTteFWGrV69mwoQJjBw5kgEDBnzUPDdu3KBPn/Hcu1eE6OhRQFZ88X+Ei8t8PD1v8fXXXejcuQ0WFhZKhxJCZBOJiYksXryW337bQnh4dWJi+pO1mne89AJX1+8pVSqa5OTHHD9+XBp5CJHDSFEmRBb08OFD6tWrx+zZs2nRosVrX3vw4AEjR44kIyODsWPHUrFixY+aa9++Q3z99QyeP29BYmI/ICu+EUjEymotbm5badq0MqNH9ydv3rxKhxJCZFH37t3j++9/5cSJe4SFdSYtrQ2QFT/QScTBYTb5859h4cLxVKlSmTVr1hAZGcmwYcOUDieE0CMpyoTIIjQaDQcOHKBx48Z06dIFCwsL5s2b96rphUajIT09HXNzcx4+fEiHDh14+vQpDx8+/OjGGCqVisWL1zBt2mpCQgb89QYmK55h0AAn8fJaRIECaYwZ04vGjRvIeQshBOnp6Wzd6s/PP68hKMiDsLABZM0tigAZWFuvIFeujfz445e0bdvi1dUgarWaxo0bs2HDBpydnRXOKYTQFynKhMgiEhIS6NatG2fOnEGj0XD//n3s7OyA/21p1Gg0nD9/nj59+lCnTh06dOiAr68vGo1GK3d9JScnM2XKfFauPExw8AjU6nofPabuhGFvvxwXl8O0aVOHr77qhZdXVtyWJITQpYcPHzJ9+lIOHLhAeHhzkpK6krVa2v+dBnPz7Xh6/spXX3Vg8OCemJqa/uNZf/zxBzt27GD27NkKZBRCKEGKMiGymBUrVjB+/Hjq16/P8uXLX3ViBJg6dSr+/v7UqFGDH374AUtL3bRvjo6OZtSo6ezZc4vg4O+ArNxoQ42x8WE8PVeQP7+Kb7/tRtOmjd74RkcIYRhSUlLYvHknv/yygeBgF0JDewNVyVrXffydBmPjw+TK9TNdu9Zh7Ngv/3OHQ4cOHfjhhx/45JNP9JRRCKEkKcqEyIJiYmIYN24cs2bNwszMjGfPnjFhwgRu3LjBiBEjaNu2rV5yhISE8NVXU/jjjxeEhHwHlNLLvB/uBba2a3BxOUD9+uX55pseFClSROlQQggt0Gg0XL58mWnTVnDmzH0iIlqRnNwBcHj1nPLlwcYG7tyBFy+Uy/p3Rkan8PKaSosWpZgyZQSOjo7v9H0PHjzgu+++Y9OmTboNKITIEqQoEyKLO378OCNGjMDd3Z1ff/2VfPnyAWhty+K7ePz4MUOG/MiFC8mEhn4HFNXLvB9OA5zH3X0lbm6P6dWrBT17tsfJyUnpYEKI9xQaGsrChevYsOEgUVEliYjoCZR49XUXFxg2DLp1A2trMDGBuDgYORKUrWfOkyvXVOrVy8+MGaNwd3d/7xHOnDlDlSpV9Pa7XgihHCnKhMgGjh49SuHChcmbN+9r2xn17f79+wwZMoXLl9WEhY0BPlUkx/tJwdTUHw+Pzfj4mDFkSAeaN28i7aaFyMISExPZssWfX3/dyvPnloSFdUKtbgiYvXpO4cIwfz7UrQvPn8P27XDuHFhawqRJkJoKrVrBjRv6Tn+JXLmmUqOGJ7NmjSZXrlz6DiCEyIakKBNCvLe7d+8ydOgUrlyBsLDRQHbZIvgCG5uNuLjsp2xZb4YN68Rnn9WQ7o1CZAHp6ekcOBDAvHmbuH07ivDwFqSmtuFtTTvatoWNG2HVKpg6FZ4+hZSUzK916waLFkGjRvD77/r6CS6QK9d0qlVzZ+bMUVq9tiM+Ph4rKys5KyuEAZOiTAjxwe7du8ewYT9x+XI6oaEjgZJKR3oP93F03Iij4wmqVSvBl1+2p1KlSrJNSAg9UqlU/P77H8ydu4nLlx8THV2P+PgOQJ7//F5nZ/D3z1wRa9QIMjLAyAg0Ghg1Cr75BsqUgaAgXf8Up8mV62dq1MjNzz+PJE+e/87+PqZMmcK6deuoWrUqBQoUYMyYMVodXwiRNUhRJoT4aIGBgXzzzTTOn48hJGQE8HEXWuuXBriOs/MmHBzOU6NGaQYObCsFmhA6olKpOHHiBPPnb+HixQfExHxGbGw7oPB7jzVqFHz/PVSqBFevgoVF5irZpEmwezcsXw5//plZuGmXBmPjo3h5/UK9eoX56afhOrmSY/Lkydy4cYOffvqJ1NRUfH19mT17Nt27d5ffT0IYGCnKhBBa8+zZM0aPnsnx448ICRmCWl2HrNui+k00wBWcnbdib38eX9/iDBjwOdWqVcPExETpcEJkW2lpaRw5coyFC7dz9epjYmJqEBvbho/d+ly8OBw/Dvv3Q0ICdOyY+fjt25kraYULw9at0L79R/8If1FjaroLT8+FtGhRkYkTh+Lq6qqtwV+TnJxM9erVWbVqFSVKZDY2ad++PTdv3mTz5s0UK1ZMJ/MKIZQhRZkQQuvCw8P5/vu5+PufJyysL+nprYDsVtRogJs4OOzA0fEUxYvnoW/fFjRoUPc/7xcSQkBcXBx79hxg6dJdBAZGEx1dm/j4VkBBrc1hbg5z50LfvnDzJqxcCfv2QURE5p/58+GLLzK3Ms6Z8zEzpWJpuR5393V069aQESP6Y29vr50f4l906tQJKysrli1bRlxcHBMnTuTw4cP07t2boUOH6nx+IYT+SFEmhNCZhIQEZs1awooVe3jxog1JSd2B7FrQPMHaehfOzofJk8eczp0b0rp1U51sWRIiu3r06BGbNu1hy5YjhIWZEBHRiNTU5oCHzuZs2TKz9f2wYfDbb69/rXRpWLYMTE2hSpX/NQJ5dzHY2S3G3f0gQ4d2ol+/LlhYWGgn+Du4c+cOdevWpUGDBpw7d47Ro0eTmJjIypUrOXv2rN5yCCF0T4oyIYTOpaenM27cD6xdu4fExGbExAxCl2/SdC8GE5ODuLvvw8EhjLp1K9GlSxMqVqwo2xxFjpKWlsapU6dYvXo/p05dJS4uH+HhfqjV9dDXBzCurpnbFyMjoVkzSE/PvKtMpcps/OHvD02bQt68EBz8rqM+xsXlF/Lkuc+4cf1o1cpPsS6tISEhPHnyBGdnZz755BN27txJQEAA8+bNw8jISM6WCWEgpLeqEELnzMzMePDgNhcu7OPmzduMGzeIR48cCAsbCpRSOt4HcESlak9ISHtCQlTcuXOB9ev3Y2f3PQUKONOxY338/OqTO3dupYMKoXUPHz5k586DbN16lOfPk4mNrUZcXCdgGkqcIY2IgJ07Yfz4zJWxixczCzLI7MTo4pJZjNna/tdIGuAMXl7zKVrUmKlTh1KxovJNi7y8vF6tyD99+pT58+fTvn17ucpDCAMjK2VCCJ27ffs2s2bNYsmSJa8eu3v3LuPGzeX06WeEhfUmI8OP7Hfu7E0iMDEJwN09AFvbYCpUKEKHDvWoVeszvZxBEULbIiMjOXz4GBs3HuH69YckJPgQHt7gr0Y+DkrHA6BECTh2DJYsgTFjwMwM8ueHnj1h6FD48UeYMuVt352KhcUW3N3X0qBBaSZMGKzVO8a0ITk5mSlTprBt2zZ69OjBt99+q3QkIYSWSVEmhNC5fv36MWzYsDd2C4uJiWHOnGWsXr2PiIhGxMf3Alz0H1InNMAdrK0P4+T0Bw4OidSoUZbWrWtRtWpVbGxslA4oxD/Exsbyxx8n2Lz5GBcv3iIuzonIyNqkptYDCigd740sLDLb3/v6wuDBmS3y27WDQoVg9WqYMOFN95UF4+i4EDe3Mwwc2JZ+/bpk6SY+x44do1KlSvJ7QwgDJUWZEEKnwsLCGDhwINu2bfvX56lUKnbt2seUKct59syFsLABQAX9hNQbFXAFW9vjODqexsEhhcqVS9KqVQ2qV6+Go6Oj0gFFDhQeHs4ff5xk27Y/uHz5LnFxdsTE1CApqTZQjOxyrUXr1rB5c+Y/x8XBunUwaxY8fPj3Z2kwMvodT8/FFCqkZsKE/tSpU0vOZQkhFCdFmRBCp8aPH0/t2rWpXbv2O3/P/fv3mTx5IceO3SQ8vC0pKR0AQ/x0WAVcx9r6BI6Op7G1jaFYsfw0a1aVzz7zpWDBgvJmUWiVWq3mzp07HDt2mj17TvPgQQhJSW5ERlYnNbUGmfeGZc+/c56emR0Y//zzf8XZ/8RgY7MaV9ddNG9ejW+/7UuePHkUSCmEEG8mRZkQQis0Gs0/CoiMjAxatmzJ7t27P6i4SE5OZs2aLcybt5GwMB/Cw/sCpbWUOCvSAE8wMTmNq+tprKwe4uZmSY0a5WjYsBIVK1bEyclJ6ZAiGwkLC+P8+QscOHCeM2euEhmZQXJyESIjfVGrqwK5lI6oQxrgNO7ui8ibN45vv+1Gq1bNMDMzUzqYEEL8gxRlQgituHTpEpMmTaJOnToMGTLk1ePp6elaeRN048YNpkxZwsmTd4mI+Jzk5A5ATmickQxcxsbmHA4OF7G2jiZXLgc++6wctWqVo2zZsjg7OysdUmQBYWFhXL58mSNHLnHq1BXCwhJJTnYnJqYiycmVyex0aq50TD2IwNZ2DS4u+6hc2Qczs0TWrl2rdCghhPhXUpQJIbTi+vXr3Lt3j7Zt27J27Vo6deoEvHkF7WOkpKSwceN25s7dSEiIC6GhPYAaQE5qDx0DXMbO7hJ2dlewsorG1dWKChWKU7NmKcqUKYWPj4/cmWag0tPTuX//PpcvX+PYsatcuXKb6Oh0kpPdiY0tS1JSOaAM8J894A1IBsbGh/D0XEO+fBl8800XmjdvgpmZGU2aNGHLli3SIEMIkaVJUSaE0JqAgADGjBnDzp07X7ujKyEhAdv/viTovT169Ig5c1axe/dJoqNrEBPTjazaHU73koEbmJtfw8npOubmgdjaqsmd25VKlYpTpUpRihYtSoECBaRYyybS09MJDAzk1q3bnD59i0uXbhEaGkNCgimpqZ8QHV2SjIzSQFFyxgrYm9zExWUVzs6Xad++AYMGdcXT0/O1Z6xatQq1Wk3Pnj0VyiiEEP9NijIhxEdTq9UYGxtTu3Zt6tWrx6hRozAxMeHmzZucPHmSvXv3YmxszOjRo6lcubJO5v/99z/4+ec1XL8eRnh4C1JS2gKOWp8r+wkHbmFpeQsHh9uYmT3GxkaNs7MVxYsXpnz5QhQvXpiCBQvi5eUljUX0TK1WExQUxIMHD7hx4z4XL97n9u1AYmPTSEoyJS2tIDExRUlLK0ZmJ0RHhRNnBWHY2Gz8a3tiYUaM6E6FChXe+nc3KSmJNm3asG/fPj3nFEKIdydFmRDio7wsyM6ePUvXrl05cOAABQsWBKBYsWK0bNmS1q1bc/nyZVavXs3AgQPp0KGDzvIkJSWxZYs/v/66lefPzQgLa4tK1RSw1Nmc2VMS8AC4j4PDfaytAzE1DcXaWoOdnRkFCuSlWLH8lCiRj3z5vPH29sbNzQ1j45y0TfTjqVQqwsLCePr0KY8ePeHGjSfcuvWYp0+DSEhQkZRkTEZGbhITCxEfXwj4BPABLBROntXEY26+Eze37RQsaMnQoR3w82uMufm7rRAOHjyYAQMGUKJECR3nFEKIDyNFmRBCK9q2bYunpyfz5s1Do9GwYMEC5s6dy8mTJ3F3dwcgPj4ejUaDvb291s+avUl4eDgrVmxmzZp9RER4EBbWDo2mLiDd1/5dOvAMeIyp6RPs7Z9iYfEUE5NwLC01WFmBo6MNefPmokABLwoV8iR3bk88PDxwd3fH1dUVU1NTpX8InUpLSyMiIoKwsDDCwsIICgrj/v0QHj0K4fnzEOLikklOhtRUY1QqT1JS8hIX541KlR/ID+QGZBvpv0vGxOQAHh5b8PRMpE+flnTq9DkODg7vPdLVq1dZvnw5v/zyiw5yCiHEx5OiTAjxweLj41mzZg0VKlSge/fu7N69Gx8fH1JTUylRogQ+Pj74+Phw8eJF5syZQ40aNRTL+uTJE5Yu3cy2bUeJivImLKwtUAsw7OJBdxKAYCAECMXGJgwrqzDMzMIwNo7EzCwDc3P++mOMo6M9Li5OuLk54ebmgIeHA66u9tjZ2WFnZ4eNjQ22trZYW1tjZWWFlZUVFhYWWi/cNRoNKSkpJCcnk5ycTGJiIomJiSQkJJCQkEBcXBzh4XG8eBFLeHgsERExREREERsbT1qahrQ0SEuD9HQzNBo30tLcSU72ICnJE/AEvMhsM2+l1dw5RwrGxofw8NiKq2sUXbo0pnv3Nnh4eHz0yMOGDWP27NmyRVcIkSVJUSaE+GAJCQmMGjWKFStWYGlpyf79+6lUqRLHjh2jefPmPHjwAA8PDzZt2sSZM2f4+eefs8QKSmBgIEuXbmHnzuPExOQlLKw1Gk0dcm6zBF1TA3FAFJmdI2OBWIyN47CwiMfCIgFT03hMTJIwNk7CyCgJSMbIKBUjIw0mJkYYG4ORUeaflzsoX/77Sy9fzTQaDRoNaDRGaDSgVmvQaIxQqV4+ZgFYoVZboVbboFLZkJFhS1qaLSkpdmg0DmRet+D41x+nv/5d3szrRhImJgdxd9+Oq2s0HTo0oHv31q81CxJCCEMnRZkQ4qMlJCQwc+ZMfvvtN06cOMGlS5c4c+bMq61CR48epUePHjx58iTLfUr96NEjVq7cxvbtx4iMdOHFi+aoVI3IWe3EhdC3aMzM9uLmtht392Q6d25E586t8PLy0vnMMTEx/Prrr+zbt49u3brRpEkT8uTJ8+p8rBBCKEGKMiGE1oWHh9O5c2e6detGly5d8PPzo1ChQkyZMgVra2ul471VSEgIGzf6s379QUJCjIiMbERKSjMyt6QJIT7OI2xsduHkdARvb0t69PCjdWs/vV9+PnToUEJCQujbty9btmzh6dOnHDhwQK8ZhBDi/5OiTAihVS8beAQEBDBr1iySkpLIlSsXv/zyy6uGH9lBXFwce/ceZObMpQQHJ5GcXJeYGD+gHDnromohPlQGcAZX173Y2l6mVKn89OrVjAYN6mJlpZ8zd8HBwdy4cYN69ephbGxMYGAg/fr1Y/Pmzbi4uJCSkkLp0qWZOXMmTZo0kZUyIYRipCgTQujUixcvcHZ2xtTUVC8dF7WtS5cuzJgxg0ePHrFq1R5+//1P4uI8efGiESpVfcBF6YhCZCEhmJsfxNX1EE5OsTRoUIUuXZpStmxZvf63n56eznfffceCBQvQaDTcvHmTAgUKoFarcXd359y5c6+u7hg9ejSxsbFMnToVe3t7vWUUQoi/U/7EvRDCoP19dSy7FWTp6elERUXh5eWFl5cXVatWBTI/fff3P8DGjYN58iSW+PgKREXVB6og7fZFzpIMnMLV9RC2ttcoXNiDLl0a0aTJXFxdXRVLZWZmRuHChXn8+DHt2rXj0KFD9O/fH2NjY+rXr8+KFSuYPHkyAB06dKBdu3aoVCrF8gohhKyUCSHEWxw/fpzTp08zZsyYtz5HpVJx8eJFNm8O4PDhc0RFmRMdXYPExDpACWSrozAsKuBP7O2PYG9/Bnd3I5o2rUbr1g0oVapUlvrgJSkpCWtra3755Rf8/f3Zs2cP1tbWbN26lYkTJ3Ljxo1Xzy1YsCAbN26kYsWKCiYWQuRkUpQJIcRbDB8+nG7dulGqVKl3/p7ExET++OMEmzYd4dy5G8TF2RMd/RnJybWAokiRJrIXFXAVG5uDODpexMkphRo1ytG2bR18fX2xtLRUOuB/SkhIoFSpUqxevZrq1aujUqkoU6YMXbp0YeTIkZw/f57Zs2czd+5c3NzclI4rhMihpCgTQoi3aNiwIQcOHPioT/+jo6P544+TbN16nIsXbxEfb0tsrC8JCTWAMsh2R5G1pAAXsbc/ib39ORwd0/H1LcWVK4c5fPhwtjtz9bLNfZcuXXBwcGDBggUAHD58mNWrV3P79m0SExPp06cPX3/9tcJphRA5mRRlQgjxBvfu3WPu3LnMnz9fq+PGx8dz5swZdu48wenTV4mK0pCUVJrISF8yz6RJ4xChTyEYGZ3F1fU0Vla3cHMzo2bNCjRrVp3KlSu/6pI4cuRIOnfu/F6rxlnBy+ZCd+/epV27dsyePZtDhw7x008/oVarOXPmDNWrV1c6phBCSFEmhBBv8uDBA5KSknT+JjQjI4OrV69y5MgZDhw4y7NnUSQluRATU4mkpEpAaSDrbxET2UEi8Ce2tudxcLiItXUMBQt60bhxFerUqUqxYsXe2hJ+//793L9/nyFDhug3spZs376dNm3akD9/furVq8esWbOwtraWFvhCiCxDijIhRI4XFRXFhQsXqFq1KnZ2dkrHISIigvPnz3PgwHnOnLlKZGQqycm5iYkpR0pKeaAkoJ97nkR2FQ9cxdr6Txwc/sTK6gUeHjZUr16WBg0qUbFiRRwcHN55tLi4OPr06cPmzZt1F1lH/vzzT3788Uc6dOhA27ZtlY4jhBBvJEWZECLHO3LkCAsWLGDnzp0sXbqUnj17ZqkuchqNhqCgIC5d+pMjR/7k3LnrREamkJzsREJCKeLiSgGlAC8g6+QW+qABngLXcHS8ho3Ndayt43Fzs6FatTLUqVOOcuXKaeXi9iZNmrBnzx5ZXRJCCB2QokwIkePFx8djZ2dHwYIFWbRoEXXr1sXIyIhevXrh6OhImzZtXt1RlpVERUVx7do1zpy5xqlT13n0KJiEBCPS0ryJjS1GcnJxoAjgiRRr2Z0GeA7cxsbmFvb2NzE3D8HeHgoW9KZGjZJUrlyKkiVL6qwZx7fffkuXLl2y3bkyIYTIDqQoE0II4NixYwwdOpTDhw/j7u5OeHg4xYsXp3Xr1jx48IDw8HAmTZqEn59fllpF+/80Gg1Pnz7l5s2bnDt3mw0b1mNu7klCAqSluZKc/AmxsYXRaAoDhQDlt2uKv4sGHmBsfB9Hx3tYWt7DwiIWW1sjChTIQ+XKRalYsRjFixfHy8tLr38X9+3bR2BgIF9++aXe5hRCiJxCijIhRI6mUqkwMTFhyJAhJCUl8euvv2Jubs6yZcvYtWsX/v7+AERGRpKcnEyePHkUTvx+mjZtyt69e4HMs2r379/n5s17XLx4n1u3AomMjCcxEdLTHUhNLUB8fH7S0vID+YC8SJMRbUsic7vhEywsHmNv/wgzs8dYWCRgbQ3u7o4UL16IihULU7ToJ3zyySfvdfZLlzIyMgAwNTVVOIkQQhge+c0qhBDAH3/8wejRozE3NwfgxIkTXL58mXnz5tGmTRu8vLwUTvj+XhacL7m6uuLq6oqvry99+rz+3NjYWB49esTjx4+5fv0Gt2/v5dGjZ8TFpZKcrCE11Qy1OhcpKbmJj8+FSuVF5hk2TzLb+JuQs2UA4UAoEIKZWQi2tsFYWARhYhKCShWMi4sHjo42+Ph4U6yYN8WL56dAgWrkz58fW1tbhfP/NynGhBBCd2SlTAiR40VHR1O5cmX2799PgQIFMDY2JjAwkDt37uDv709ISAhLly7Fw8ND6ajv5cGDB8ybN49ffvnlo8dKS0sjJCSEoKAggoODefAghIcPQ3n6NITw8EhSUtSkpUFqKqhU1qjVLqSnu5Ca6kJyshMqlRPgCDj89ceezK2TWe3y7DQg7q8/sX/9icHUNBorqygsLKIwM4vEyCgSU9MUzM3BwgKsrEzx8HAjb14PChb0omBBL3LlykXu3Lnx8PDg888/Z/fu3Yr+ZNqQmprKnj17WLRoETY2NqxduxYbGxulYwkhRLYnH3sJIXKsW7dusXDhQp48eULBggUpWLDgq6+9/PemTZsyePBg5s2bx+TJkxVM+/5u375N0aJFtTKWubk5+fLlI1++fP/53KSkJCIiIoiMjCQqKoro6GhCQ8MIDb1LeHgMUVFxxMTEERcXT1paBunpGtRqIzIyQKXK/GeVCtRq0GjMSEtLwNzcE43GDDBFozEBTNBojAFjNBojMo9WaQA1RkZqQIWRkQojowwyC610IBUjowyMjTWYmICJidFf/wsmJhpMTY2wsDDDwcEeBwc7XFwccHd3xNPTEQ8PJ5yc8uPi4oKzszOurq5YWhr+1s7M7a43qV+/PjY2NsTFxXH8+HHKlCnDunXrCAsLw8fHR+mYQgiR7UlRJoTIsfLly0fRokW5e/cuV65coVSpUqxfvx4rK6vXCjQ7Oztu374NgFqtzjYtwe/cuUPFihX1Pq+1tTXe3t54e3t/1DgajYb09HRatWrFmjWzSU9PJyMjA5VKhUqlQq1Wo1arXz3fyMgIIyMjjI2NMTExwdTUFFNTU8zMzDAzM8PCwgJTU1PFGrVoNJos3STm7zQaDYMHD2bPnj08e/aMP//8kzJlyuDm5saIESPw9vYmICCAq1evSlEmhBBaIEWZECLHsrGx4YsvvuCLL75ApVKxf/9+XF1d6d+/P8HBwTRu3Bhzc3OOHj3Kd999B5Bt3lRD5kpZt27dlI7xwYyMjDA3N8fU1BRnZ2el43wUV1dXIiMjcXV1VTrKOzEyMqJt27YsWLCAunXrcu3aNcqUKQPwqtguVaoUp0+fplWrVgomFUIIw5A9Pu4VQggdMzExwc/PD09PT/z9/VmxYgUWFhZERESwatUqmjVrBmSvoqxWrVpauTRYfLy8efPy7NkzpWO8l+rVqwNQokQJTp48ycsj6C+7MNarV48LFy6QkJCgWEYhhDAUUpQJIcQblChRgu+++445c+ZQpEiRbFWMvdStW7dsmfvv1Gp1tv8ZAPLkycPz58+VjvFeXnZbbNiwIZcvXyY+Ph7gVUfPGjVq8PTpU5KSkhTLKIQQhkKKMiGEyObOnTtHx44d6dq1K1euXFE6jlalp6e/uqYgOytcuDApKSlKx/gg1apVIzw8nIcPHwL/Wy3Onz8/dnZ2rFu3jp9++oknT54oGVMIIbI1KcqEECKbU6vVtGnThnXr1nHhwoVXj7/cbhYREcHChQu5c+eOUhE/WFpamkEUZbVr16Zt27ZKx3hvarUaBwcHChQo8GqlLy0tjatXr9KxY0du3LjBsmXLuHDhAqmpqQqnFUKI7EsafQghRDZXqVIlTExMKF68OMWLF3/1+MsVjZEjR7JixQqmTZtG4cKFX7tQOqtLS0vDzCyr3WWWcxgZGREZGUlERATdunUjLS2N+fPn07BhQ9q3b8/cuXNxc3NTOqYQQmR7cnm0EEIYgBcvXlClShWOHDlCgQIFAFCpVPTt25dChQpx4sQJBg0ahJ+fn8JJ349Go0Gj0WSbawheCgsLIyQkhEKFCmFra0tGRgYTJ07k999/JzU1FScnJ6ZOnUrZsmWVjvqvoqKi6NatG87OzrRq1Ypq1apJ8xghhNABWSkTQggDcPfuXRwcHHBycgIgPDychQsX4urqSq9evdi3b9+rr2UnL+8ey07Gjx/Pli1buHv3LocPH6ZOnTqYmJhgZ2fH1KlTKV68OHv27KFXr14cOnQoS680OTs7s2fPHqVjCCGEwcteHz0KIYR4zcvNDleuXMHT0xNbW1vS09NZsmQJUVFRTJ8+nejoaFxcXMibN6/CaXOGVq1acfv2bapVq0Z0dDSQWVwOHDiQatWq4ejoSMOGDcnIyMh2HRmFEELohhRlQghhAEJCQihfvjympqY8ffqUU6dOsWrVKtq3b8+AAQMICgoiMDAQ+F8hl9WsXbuW0qVLY2xszM6dO1/lHDp0KL6+vtSpU4fGjRtz9epVhZP+u9KlSwNga2v7WtFlZ2dHeno6AJs2baJYsWJZepVMCCGE/khRJoQQ2djmzZupVasWU6dO5cyZM2zevJkCBQqwd+9eLl68yJdffomJiQkxMTH4+/sTHBycZbcDlihRgsOHD1O8eHFUKtWrnEOGDGHFihX89ttvdOrUidGjRxMaGqpw2v+WJ08egoKCXv17eno6ZmZm3Lt3j02bNtG6dWvy5MmDWq1WMKUQQoisQM6UCSFENtaqVSsKFizInTt3uHz5Mr/++iu1atXC3d0dHx8ffHx8sLOzY/jw4QwYMEDpuP+qVKlSGBsbY2pq+lob/IIFC7765/T0dIYPH05aWpoSEd+Lt7c3t2/fJj09HRMTE8zMzIiNjWX06NF89tlntGvXDiDbNTERQgihfVKUCSFENmZubk6FChWoUKECXbp0+cfXNRoNbdu2JX/+/KjV6ixdALxcGXu5ovR3Y8aM4eDBg0RHR/Pbb7+RJ08eJSK+k5c/R9GiRTl79uyrnyU1NZX58+fj7u7Ojz/+SExMDCkpKXh6eioZVwghRBYgLfGFEEJkCRqNBiMjI4oVK8a8efOoW7fuq6+FhIQQFxfHpk2biIiI4Oeff87yl0qvXLmSUaNGMWTIEHLlykWJEiWoVKkSPj4+ODs7k5SURPXq1Vm4cOGrn10IIUTOJCtlQgghshSVSoWp6esvT15eXnh5eTF+/Hjc3Nz45ptvyJcvn0IJ/51KpaJDhw5cv36dEiVKcP36dWxsbChcuDCHDh2iWLFiODs7Y2lp+ep7pCATQoicTYoyIYQQWcLfCxMHBwcAkpKSMDY2flXA3L9/n7i4uFdfz4pMTEzYsmXLG79Wr149PacRQgiRHUhRJoQQIkv4+uuv2bZtG8+ePaNx48bY2dkREBBAz549SUlJwcLCAiMjI5YvX46jo6PScYUQQgitkTNlQgghsoz09HRUKhVpaWmkp6fj5ORESEgIKSkpr7oYFi5cWOmYQgghhFZJUSaEEEIIIYQQCsq6vZGFEEIIIYQQIgeQokwIIYQQQgghFCRFmRBCCCGEEEIoSIoyIYQQQgghhFCQFGVCCCGEEEIIoSApyoQQQgghhBBCQVKUCSGEEEIIIYSCpCgTQgghhBBCCAVJUSaEEEIIIYQQCpKiTAghhBBCCCEUJEWZEEIIIYQQQihIijIhhBBCCCGEUJAUZUIIIYQQQgihICnKhBBCCCGEEEJBUpQJIYQQQgghhIKkKBNCCCGEEEIIBUlRJoQQQgghhBAKkqJMCCGEEEIIIRQkRZkQQgghhBBCKEiKMiGEEEIIIYRQkBRlQgghhBBCCKEgKcqEEEIIIYQQQkFSlAkhhBBCCCGEgqQoE0IIIYQQQggFSVEmhBBCCCGEEAqSokwIIYQQQgghFCRFmRBCCCGEEEIoSIoyIYQQQgghhFCQFGVCCCGEEEIIoSApyoQQQgghhBBCQVKUCSGEEEIIIYSCpCgTQgghhBBCCAVJUSaEEEIIIYQQCpKiTAghhBBCCCEUJEWZEEIIIYQQQihIijIhhBBCCCGEUJAUZUIIIYQQQgihICnKhBBCCCGEEEJBUpQJIYQQQgghhIKkKBNCCCGEEEIIBUlRJoQQQgghhBAKkqJMCCGEEEIIIRQkRZkQQgghhBBCKEiKMiGEEEIIIYRQkBRlQgghhBBCCKEgKcqEEEIIIYQQQkFSlAkhhBBCCCGEgqQoE0IIIYQQQggFSVEmhBBCCCGEEAr6P/bqxNhoJMduAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pycirclize import Circos\n", + "\n", + "sectors = {\"A\": 10, \"B\": 20, \"C\": 15}\n", + "name2color = {\"A\": \"red\", \"B\": \"blue\", \"C\": \"green\"}\n", + "circos = Circos(sectors, space=5)\n", + "for sector in circos.sectors:\n", + " track = sector.add_track((95, 100))\n", + " track.axis(fc=name2color[sector.name])\n", + " track.text(sector.name, color=\"white\", size=12)\n", + " track.xticks_by_interval(1)\n", + "\n", + "# Plot link lines in various styles\n", + "circos.link_line((\"A\", 0), (\"A\", 7))\n", + "circos.link_line((\"A\", 9), (\"B\", 3), direction=1, color=\"red\")\n", + "circos.link_line((\"B\", 5), (\"B\", 7), direction=-1, color=\"blue\", lw=1.0)\n", + "circos.link_line((\"B\", 8), (\"B\", 15), r1=90, r2=90, direction=2, color=\"green\", ls=\"dashed\")\n", + "\n", + "circos.link((\"B\", 17, 19), (\"C\", 11, 9), color=\"black\")\n", + "circos.link_line((\"B\", 18), (\"C\", 10), direction=1, arrow_height=6, arrow_width=4, color=\"white\", lw=1.0)\n", + "\n", + "fig = circos.plotfig()" + ] + }, { "attachments": {}, "cell_type": "markdown", diff --git a/poetry.lock b/poetry.lock index cd255bb..3a26343 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. [[package]] name = "appnope" version = "0.1.3" description = "Disable App Nap on macOS >= 10.9" -category = "dev" optional = false python-versions = "*" files = [ @@ -16,7 +15,6 @@ files = [ name = "asttokens" version = "2.4.1" description = "Annotate AST trees with source code positions" -category = "dev" optional = false python-versions = "*" files = [ @@ -35,7 +33,6 @@ test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] name = "attrs" version = "23.1.0" description = "Classes Without Boilerplate" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -52,19 +49,17 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "babel" -version = "2.13.1" +version = "2.14.0" description = "Internationalization utilities" -category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "Babel-2.13.1-py3-none-any.whl", hash = "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed"}, - {file = "Babel-2.13.1.tar.gz", hash = "sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900"}, + {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, + {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, ] [package.dependencies] pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} -setuptools = {version = "*", markers = "python_version >= \"3.12\""} [package.extras] dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] @@ -73,7 +68,6 @@ dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] name = "backcall" version = "0.2.0" description = "Specifications for callback functions passed in to an API" -category = "dev" optional = false python-versions = "*" files = [ @@ -85,7 +79,6 @@ files = [ name = "beautifulsoup4" version = "4.12.2" description = "Screen-scraping library" -category = "dev" optional = false python-versions = ">=3.6.0" files = [ @@ -102,36 +95,33 @@ lxml = ["lxml"] [[package]] name = "biopython" -version = "1.81" +version = "1.82" description = "Freely available tools for computational molecular biology." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "biopython-1.81-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef7c79b65b0b3f3c7dc59e20a7f8ae5758d8e852cb8b9cace590dc5617e348ba"}, - {file = "biopython-1.81-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ebfbce0d91796c7aef422ee9dffe8827e07e5abaa94545e006f1f20e965c80b"}, - {file = "biopython-1.81-cp310-cp310-win32.whl", hash = "sha256:919a2c583cabf9c96d2ae4e1245a6b0376932fb342aca302a0fc198b71ab3275"}, - {file = "biopython-1.81-cp310-cp310-win_amd64.whl", hash = "sha256:b37c0d24191e5c96ca02415a5188551980c83a0d518bbc4ffe3c9a5d1fe0ee81"}, - {file = "biopython-1.81-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7a168709694e10b338718c18d967edd5b56c237dc88642c22275796007a70000"}, - {file = "biopython-1.81-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a51d9c1d1b4b634447535da74a644fae59bc234fbbf9001e2dc6b6fbabb98019"}, - {file = "biopython-1.81-cp311-cp311-win32.whl", hash = "sha256:2f9cfaf16d55ab80d514e7aebe5710dabe4e4ff47ede851031202e33b3249da3"}, - {file = "biopython-1.81-cp311-cp311-win_amd64.whl", hash = "sha256:e41b55edcfd448630e77bf4de66a7235324a8a149621499891da6bd1d5085b9a"}, - {file = "biopython-1.81-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3b36ba1bf6395c09a365c53530c9d71f3617763fa2c1d452b3d8948368c0f1de"}, - {file = "biopython-1.81-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c5c07123ff5f44c9e6b5369df854a38afd3c0c50ef58498a0ae8f7eb799f3e8"}, - {file = "biopython-1.81-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:97cbdbed01b2512471f36c74b91658d1dfbdcbf39bc038f6ce5a41c3e60a8fc6"}, - {file = "biopython-1.81-cp37-cp37m-win32.whl", hash = "sha256:35506e39822c52d11cf09a3951e82375ca1bb9303960b4286acf02c9a6f6c4cc"}, - {file = "biopython-1.81-cp37-cp37m-win_amd64.whl", hash = "sha256:793c42a376cd63f62f8a088ce39b7dc6b5c55e4e9031d887c434de1595bfa4b8"}, - {file = "biopython-1.81-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:11d673698b3d0d6589292ea951fb62cb24ea27d273eca0d08dbbd956690f97f5"}, - {file = "biopython-1.81-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:655df416936662c0c8a06a549cb25e1560e1fea5067d850f34fb714b8a3fae6c"}, - {file = "biopython-1.81-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:762c6c43a8486b5fcd07f136a3217b87d24755618b9ea9da1f17124ff44c2ad6"}, - {file = "biopython-1.81-cp38-cp38-win32.whl", hash = "sha256:ee51bb1cd7decffd24da6b76d5e01b7e2fd818ab85cf0c180226cbb5793a3abd"}, - {file = "biopython-1.81-cp38-cp38-win_amd64.whl", hash = "sha256:ccd729249fd5f586dd4c2a3507c2ea2456825d7e615e97c07c409c850eaf4594"}, - {file = "biopython-1.81-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9ba33244f0eff830beaa7240065bdb5095d96fded6599b76bbb9ddab45cd2bbd"}, - {file = "biopython-1.81-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bb0c690c7368f255ed45236bf0f5464b476b8c083c8f634533921af78278261"}, - {file = "biopython-1.81-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65b93b513ce9dd7b2ce058720eadf42cd03f312db3409356efeb93123d1320aa"}, - {file = "biopython-1.81-cp39-cp39-win32.whl", hash = "sha256:811796f8d222aa3869a50e31e54ce62b69106b47cd8bb06934867c0d843297b5"}, - {file = "biopython-1.81-cp39-cp39-win_amd64.whl", hash = "sha256:b09efcb4733c8770f25eab5fe555a96a08f5ab9e1bc36939e08ebf2ffbf3e0f1"}, - {file = "biopython-1.81.tar.gz", hash = "sha256:2cf38112b6d8415ad39d6a611988cd11fb5f33eb09346666a87263beba9614e0"}, + {file = "biopython-1.82-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:713be5e1e8571ea151864544dfcd2637eaf98c67a6e47b69781d325feb02f6b9"}, + {file = "biopython-1.82-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5bc908e84278bf61ac901a0c1b695c85ce49491957e0ab07e1e2afc216882525"}, + {file = "biopython-1.82-cp310-cp310-win32.whl", hash = "sha256:f53aff30f01ac9a8aa1fd42dab347a96ee5312945098dfa38f9a5125f6e913fd"}, + {file = "biopython-1.82-cp310-cp310-win_amd64.whl", hash = "sha256:0f3f685a2d85348b8c84c6eebe58a74cef7e1158ac52ae5aa91789436907f0e1"}, + {file = "biopython-1.82-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c9bc080b7dc6cd6acbf2576766136e8e54acbcc6b7a29ad8075cb5a73f4cfb97"}, + {file = "biopython-1.82-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7802b5033edaf34bd2fbd96b87f96999a6808caa0064c91087c7f1340624898"}, + {file = "biopython-1.82-cp311-cp311-win32.whl", hash = "sha256:ec35893b32458f6fa0c98d5f02d801a5fe76961ac66473455f51c0575562c594"}, + {file = "biopython-1.82-cp311-cp311-win_amd64.whl", hash = "sha256:40297d418bb142a7ea1a47faedc24bbe21b0ba455f3805373264470e5cb6ec5c"}, + {file = "biopython-1.82-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:96f77bd6540683c8958e4ebf55b58e8caa26d20db72891915d06670b783e9cdb"}, + {file = "biopython-1.82-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b829c2276a0711106663af632c7e203695a5cf082d488d6e10b8aca5ec63e4"}, + {file = "biopython-1.82-cp312-cp312-win32.whl", hash = "sha256:54a9b200d4960ed2a4ec85faac2124ffa278afa58d22e07e2d15ca7509219ea1"}, + {file = "biopython-1.82-cp312-cp312-win_amd64.whl", hash = "sha256:762547037038d42c9ac98877fc32d4aeba798077129df7790cb178256171a4e5"}, + {file = "biopython-1.82-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cb013256742d31e24fd5093d55511f58bc6a93b8ac723d2ca3b33c7904f1ca14"}, + {file = "biopython-1.82-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16829760fab60ba17141b7a81494fed837c6f29ea28cdcfb3070764c8e8f2ff1"}, + {file = "biopython-1.82-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c6af82894dd4f736d737fdea62008a19966251ba39aef39a0ce8b41321305ad5"}, + {file = "biopython-1.82-cp38-cp38-win32.whl", hash = "sha256:a1ff583b2f8b314a4c2d612aad4f4b73827a5f741b391f3a834b0c192a4f1527"}, + {file = "biopython-1.82-cp38-cp38-win_amd64.whl", hash = "sha256:0198f23776d9cb9d514a797e81a024f486adac973b252a2f4696995a5a163745"}, + {file = "biopython-1.82-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c88e9f87d1b07958e7e1e25ff20efced4796daf650e5290692b5c3ff9aebf9d3"}, + {file = "biopython-1.82-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e2533db9275c3e1438151260844e7683f91308da320df02a4c28fb7053ea3a9"}, + {file = "biopython-1.82-cp39-cp39-win32.whl", hash = "sha256:80f48d220b92e747300281602f52e98ec6c537ddd4921b580d9a0368bae05ff5"}, + {file = "biopython-1.82-cp39-cp39-win_amd64.whl", hash = "sha256:73d619611bd7cf9d2ad8b3217b08d3796acfabb765b0771ad2ff7ee2e46a59b0"}, + {file = "biopython-1.82.tar.gz", hash = "sha256:a9b10d959ae88a9744a91c6ce3601f4c86e7ec41679bc93c29f679218f6167bb"}, ] [package.dependencies] @@ -139,30 +129,33 @@ numpy = "*" [[package]] name = "black" -version = "23.11.0" +version = "23.12.1" description = "The uncompromising code formatter." -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "black-23.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dbea0bb8575c6b6303cc65017b46351dc5953eea5c0a59d7b7e3a2d2f433a911"}, - {file = "black-23.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:412f56bab20ac85927f3a959230331de5614aecda1ede14b373083f62ec24e6f"}, - {file = "black-23.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d136ef5b418c81660ad847efe0e55c58c8208b77a57a28a503a5f345ccf01394"}, - {file = "black-23.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:6c1cac07e64433f646a9a838cdc00c9768b3c362805afc3fce341af0e6a9ae9f"}, - {file = "black-23.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cf57719e581cfd48c4efe28543fea3d139c6b6f1238b3f0102a9c73992cbb479"}, - {file = "black-23.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:698c1e0d5c43354ec5d6f4d914d0d553a9ada56c85415700b81dc90125aac244"}, - {file = "black-23.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:760415ccc20f9e8747084169110ef75d545f3b0932ee21368f63ac0fee86b221"}, - {file = "black-23.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:58e5f4d08a205b11800332920e285bd25e1a75c54953e05502052738fe16b3b5"}, - {file = "black-23.11.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:45aa1d4675964946e53ab81aeec7a37613c1cb71647b5394779e6efb79d6d187"}, - {file = "black-23.11.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c44b7211a3a0570cc097e81135faa5f261264f4dfaa22bd5ee2875a4e773bd6"}, - {file = "black-23.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a9acad1451632021ee0d146c8765782a0c3846e0e0ea46659d7c4f89d9b212b"}, - {file = "black-23.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:fc7f6a44d52747e65a02558e1d807c82df1d66ffa80a601862040a43ec2e3142"}, - {file = "black-23.11.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7f622b6822f02bfaf2a5cd31fdb7cd86fcf33dab6ced5185c35f5db98260b055"}, - {file = "black-23.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:250d7e60f323fcfc8ea6c800d5eba12f7967400eb6c2d21ae85ad31c204fb1f4"}, - {file = "black-23.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5133f5507007ba08d8b7b263c7aa0f931af5ba88a29beacc4b2dc23fcefe9c06"}, - {file = "black-23.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:421f3e44aa67138ab1b9bfbc22ee3780b22fa5b291e4db8ab7eee95200726b07"}, - {file = "black-23.11.0-py3-none-any.whl", hash = "sha256:54caaa703227c6e0c87b76326d0862184729a69b73d3b7305b6288e1d830067e"}, - {file = "black-23.11.0.tar.gz", hash = "sha256:4c68855825ff432d197229846f971bc4d6666ce90492e5b02013bcaca4d9ab05"}, + {file = "black-23.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0aaf6041986767a5e0ce663c7a2f0e9eaf21e6ff87a5f95cbf3675bfd4c41d2"}, + {file = "black-23.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c88b3711d12905b74206227109272673edce0cb29f27e1385f33b0163c414bba"}, + {file = "black-23.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920b569dc6b3472513ba6ddea21f440d4b4c699494d2e972a1753cdc25df7b0"}, + {file = "black-23.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:3fa4be75ef2a6b96ea8d92b1587dd8cb3a35c7e3d51f0738ced0781c3aa3a5a3"}, + {file = "black-23.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d4df77958a622f9b5a4c96edb4b8c0034f8434032ab11077ec6c56ae9f384ba"}, + {file = "black-23.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:602cfb1196dc692424c70b6507593a2b29aac0547c1be9a1d1365f0d964c353b"}, + {file = "black-23.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c4352800f14be5b4864016882cdba10755bd50805c95f728011bcb47a4afd59"}, + {file = "black-23.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:0808494f2b2df923ffc5723ed3c7b096bd76341f6213989759287611e9837d50"}, + {file = "black-23.12.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:25e57fd232a6d6ff3f4478a6fd0580838e47c93c83eaf1ccc92d4faf27112c4e"}, + {file = "black-23.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2d9e13db441c509a3763a7a3d9a49ccc1b4e974a47be4e08ade2a228876500ec"}, + {file = "black-23.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1bd9c210f8b109b1762ec9fd36592fdd528485aadb3f5849b2740ef17e674e"}, + {file = "black-23.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:ae76c22bde5cbb6bfd211ec343ded2163bba7883c7bc77f6b756a1049436fbb9"}, + {file = "black-23.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1fa88a0f74e50e4487477bc0bb900c6781dbddfdfa32691e780bf854c3b4a47f"}, + {file = "black-23.12.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a4d6a9668e45ad99d2f8ec70d5c8c04ef4f32f648ef39048d010b0689832ec6d"}, + {file = "black-23.12.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b18fb2ae6c4bb63eebe5be6bd869ba2f14fd0259bda7d18a46b764d8fb86298a"}, + {file = "black-23.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:c04b6d9d20e9c13f43eee8ea87d44156b8505ca8a3c878773f68b4e4812a421e"}, + {file = "black-23.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e1b38b3135fd4c025c28c55ddfc236b05af657828a8a6abe5deec419a0b7055"}, + {file = "black-23.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4f0031eaa7b921db76decd73636ef3a12c942ed367d8c3841a0739412b260a54"}, + {file = "black-23.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97e56155c6b737854e60a9ab1c598ff2533d57e7506d97af5481141671abf3ea"}, + {file = "black-23.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:dd15245c8b68fe2b6bd0f32c1556509d11bb33aec9b5d0866dd8e2ed3dba09c2"}, + {file = "black-23.12.1-py3-none-any.whl", hash = "sha256:78baad24af0f033958cad29731e27363183e140962595def56423e626f4bee3e"}, + {file = "black-23.12.1.tar.gz", hash = "sha256:4ce3ef14ebe8d9509188014d96af1c456a910d5b5cbf434a09fef7e024b3d0d5"}, ] [package.dependencies] @@ -176,7 +169,7 @@ typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)"] +d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] @@ -184,7 +177,6 @@ uvloop = ["uvloop (>=0.15.2)"] name = "bleach" version = "6.1.0" description = "An easy safelist-based HTML-sanitizing tool." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -201,21 +193,19 @@ css = ["tinycss2 (>=1.1.0,<1.3)"] [[package]] name = "certifi" -version = "2023.7.22" +version = "2023.11.17" description = "Python package for providing Mozilla's CA Bundle." -category = "dev" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, - {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, + {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, + {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, ] [[package]] name = "cffi" version = "1.16.0" description = "Foreign Function Interface for Python calling C code." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -280,7 +270,6 @@ pycparser = "*" name = "charset-normalizer" version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "dev" optional = false python-versions = ">=3.7.0" files = [ @@ -380,7 +369,6 @@ files = [ name = "click" version = "8.1.7" description = "Composable command line interface toolkit" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -395,7 +383,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -407,7 +394,6 @@ files = [ name = "comm" version = "0.2.0" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -425,7 +411,6 @@ test = ["pytest"] name = "contourpy" version = "1.1.0" description = "Python library for calculating contours of 2D quadrilateral grids" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -436,6 +421,7 @@ files = [ {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18a64814ae7bce73925131381603fff0116e2df25230dfc80d6d690aa6e20b37"}, {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c81f22b4f572f8a2110b0b741bb64e5a6427e0a198b2cdc1fbaf85f352a3aa"}, {file = "contourpy-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53cc3a40635abedbec7f1bde60f8c189c49e84ac180c665f2cd7c162cc454baa"}, + {file = "contourpy-1.1.0-cp310-cp310-win32.whl", hash = "sha256:9b2dd2ca3ac561aceef4c7c13ba654aaa404cf885b187427760d7f7d4c57cff8"}, {file = "contourpy-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:1f795597073b09d631782e7245016a4323cf1cf0b4e06eef7ea6627e06a37ff2"}, {file = "contourpy-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0b7b04ed0961647691cfe5d82115dd072af7ce8846d31a5fac6c142dcce8b882"}, {file = "contourpy-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27bc79200c742f9746d7dd51a734ee326a292d77e7d94c8af6e08d1e6c15d545"}, @@ -444,6 +430,7 @@ files = [ {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5cec36c5090e75a9ac9dbd0ff4a8cf7cecd60f1b6dc23a374c7d980a1cd710e"}, {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f0cbd657e9bde94cd0e33aa7df94fb73c1ab7799378d3b3f902eb8eb2e04a3a"}, {file = "contourpy-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:181cbace49874f4358e2929aaf7ba84006acb76694102e88dd15af861996c16e"}, + {file = "contourpy-1.1.0-cp311-cp311-win32.whl", hash = "sha256:edb989d31065b1acef3828a3688f88b2abb799a7db891c9e282df5ec7e46221b"}, {file = "contourpy-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fb3b7d9e6243bfa1efb93ccfe64ec610d85cfe5aec2c25f97fbbd2e58b531256"}, {file = "contourpy-1.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bcb41692aa09aeb19c7c213411854402f29f6613845ad2453d30bf421fe68fed"}, {file = "contourpy-1.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5d123a5bc63cd34c27ff9c7ac1cd978909e9c71da12e05be0231c608048bb2ae"}, @@ -452,6 +439,7 @@ files = [ {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:317267d915490d1e84577924bd61ba71bf8681a30e0d6c545f577363157e5e94"}, {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d551f3a442655f3dcc1285723f9acd646ca5858834efeab4598d706206b09c9f"}, {file = "contourpy-1.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e7a117ce7df5a938fe035cad481b0189049e8d92433b4b33aa7fc609344aafa1"}, + {file = "contourpy-1.1.0-cp38-cp38-win32.whl", hash = "sha256:108dfb5b3e731046a96c60bdc46a1a0ebee0760418951abecbe0fc07b5b93b27"}, {file = "contourpy-1.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:d4f26b25b4f86087e7d75e63212756c38546e70f2a92d2be44f80114826e1cd4"}, {file = "contourpy-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc00bb4225d57bff7ebb634646c0ee2a1298402ec10a5fe7af79df9a51c1bfd9"}, {file = "contourpy-1.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:189ceb1525eb0655ab8487a9a9c41f42a73ba52d6789754788d1883fb06b2d8a"}, @@ -460,6 +448,7 @@ files = [ {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:143dde50520a9f90e4a2703f367cf8ec96a73042b72e68fcd184e1279962eb6f"}, {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e94bef2580e25b5fdb183bf98a2faa2adc5b638736b2c0a4da98691da641316a"}, {file = "contourpy-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ed614aea8462735e7d70141374bd7650afd1c3f3cb0c2dbbcbe44e14331bf002"}, + {file = "contourpy-1.1.0-cp39-cp39-win32.whl", hash = "sha256:71551f9520f008b2950bef5f16b0e3587506ef4f23c734b71ffb7b89f8721999"}, {file = "contourpy-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:438ba416d02f82b692e371858143970ed2eb6337d9cdbbede0d8ad9f3d7dd17d"}, {file = "contourpy-1.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a698c6a7a432789e587168573a864a7ea374c6be8d4f31f9d87c001d5a843493"}, {file = "contourpy-1.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:397b0ac8a12880412da3551a8cb5a187d3298a72802b45a3bd1805e204ad8439"}, @@ -484,7 +473,6 @@ test-no-images = ["pytest", "pytest-cov", "wurlitzer"] name = "contourpy" version = "1.1.1" description = "Python library for calculating contours of 2D quadrilateral grids" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -554,64 +542,63 @@ test-no-images = ["pytest", "pytest-cov", "wurlitzer"] [[package]] name = "coverage" -version = "7.3.2" +version = "7.3.4" description = "Code coverage measurement for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf"}, - {file = "coverage-7.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9"}, - {file = "coverage-7.3.2-cp310-cp310-win32.whl", hash = "sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f"}, - {file = "coverage-7.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611"}, - {file = "coverage-7.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c"}, - {file = "coverage-7.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312"}, - {file = "coverage-7.3.2-cp311-cp311-win32.whl", hash = "sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640"}, - {file = "coverage-7.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2"}, - {file = "coverage-7.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836"}, - {file = "coverage-7.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a"}, - {file = "coverage-7.3.2-cp312-cp312-win32.whl", hash = "sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb"}, - {file = "coverage-7.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed"}, - {file = "coverage-7.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738"}, - {file = "coverage-7.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76"}, - {file = "coverage-7.3.2-cp38-cp38-win32.whl", hash = "sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92"}, - {file = "coverage-7.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a"}, - {file = "coverage-7.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce"}, - {file = "coverage-7.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083"}, - {file = "coverage-7.3.2-cp39-cp39-win32.whl", hash = "sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce"}, - {file = "coverage-7.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f"}, - {file = "coverage-7.3.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637"}, - {file = "coverage-7.3.2.tar.gz", hash = "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef"}, + {file = "coverage-7.3.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:aff2bd3d585969cc4486bfc69655e862028b689404563e6b549e6a8244f226df"}, + {file = "coverage-7.3.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4353923f38d752ecfbd3f1f20bf7a3546993ae5ecd7c07fd2f25d40b4e54571"}, + {file = "coverage-7.3.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea473c37872f0159294f7073f3fa72f68b03a129799f3533b2bb44d5e9fa4f82"}, + {file = "coverage-7.3.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5214362abf26e254d749fc0c18af4c57b532a4bfde1a057565616dd3b8d7cc94"}, + {file = "coverage-7.3.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f99b7d3f7a7adfa3d11e3a48d1a91bb65739555dd6a0d3fa68aa5852d962e5b1"}, + {file = "coverage-7.3.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:74397a1263275bea9d736572d4cf338efaade2de9ff759f9c26bcdceb383bb49"}, + {file = "coverage-7.3.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f154bd866318185ef5865ace5be3ac047b6d1cc0aeecf53bf83fe846f4384d5d"}, + {file = "coverage-7.3.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e0d84099ea7cba9ff467f9c6f747e3fc3906e2aadac1ce7b41add72e8d0a3712"}, + {file = "coverage-7.3.4-cp310-cp310-win32.whl", hash = "sha256:3f477fb8a56e0c603587b8278d9dbd32e54bcc2922d62405f65574bd76eba78a"}, + {file = "coverage-7.3.4-cp310-cp310-win_amd64.whl", hash = "sha256:c75738ce13d257efbb6633a049fb2ed8e87e2e6c2e906c52d1093a4d08d67c6b"}, + {file = "coverage-7.3.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:997aa14b3e014339d8101b9886063c5d06238848905d9ad6c6eabe533440a9a7"}, + {file = "coverage-7.3.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8a9c5bc5db3eb4cd55ecb8397d8e9b70247904f8eca718cc53c12dcc98e59fc8"}, + {file = "coverage-7.3.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27ee94f088397d1feea3cb524e4313ff0410ead7d968029ecc4bc5a7e1d34fbf"}, + {file = "coverage-7.3.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ce03e25e18dd9bf44723e83bc202114817f3367789052dc9e5b5c79f40cf59d"}, + {file = "coverage-7.3.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85072e99474d894e5df582faec04abe137b28972d5e466999bc64fc37f564a03"}, + {file = "coverage-7.3.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a877810ef918d0d345b783fc569608804f3ed2507bf32f14f652e4eaf5d8f8d0"}, + {file = "coverage-7.3.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9ac17b94ab4ca66cf803f2b22d47e392f0977f9da838bf71d1f0db6c32893cb9"}, + {file = "coverage-7.3.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:36d75ef2acab74dc948d0b537ef021306796da551e8ac8b467810911000af66a"}, + {file = "coverage-7.3.4-cp311-cp311-win32.whl", hash = "sha256:47ee56c2cd445ea35a8cc3ad5c8134cb9bece3a5cb50bb8265514208d0a65928"}, + {file = "coverage-7.3.4-cp311-cp311-win_amd64.whl", hash = "sha256:11ab62d0ce5d9324915726f611f511a761efcca970bd49d876cf831b4de65be5"}, + {file = "coverage-7.3.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:33e63c578f4acce1b6cd292a66bc30164495010f1091d4b7529d014845cd9bee"}, + {file = "coverage-7.3.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:782693b817218169bfeb9b9ba7f4a9f242764e180ac9589b45112571f32a0ba6"}, + {file = "coverage-7.3.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c4277ddaad9293454da19121c59f2d850f16bcb27f71f89a5c4836906eb35ef"}, + {file = "coverage-7.3.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3d892a19ae24b9801771a5a989fb3e850bd1ad2e2b6e83e949c65e8f37bc67a1"}, + {file = "coverage-7.3.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3024ec1b3a221bd10b5d87337d0373c2bcaf7afd86d42081afe39b3e1820323b"}, + {file = "coverage-7.3.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a1c3e9d2bbd6f3f79cfecd6f20854f4dc0c6e0ec317df2b265266d0dc06535f1"}, + {file = "coverage-7.3.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e91029d7f151d8bf5ab7d8bfe2c3dbefd239759d642b211a677bc0709c9fdb96"}, + {file = "coverage-7.3.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:6879fe41c60080aa4bb59703a526c54e0412b77e649a0d06a61782ecf0853ee1"}, + {file = "coverage-7.3.4-cp312-cp312-win32.whl", hash = "sha256:fd2f8a641f8f193968afdc8fd1697e602e199931012b574194052d132a79be13"}, + {file = "coverage-7.3.4-cp312-cp312-win_amd64.whl", hash = "sha256:d1d0ce6c6947a3a4aa5479bebceff2c807b9f3b529b637e2b33dea4468d75fc7"}, + {file = "coverage-7.3.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:36797b3625d1da885b369bdaaa3b0d9fb8865caed3c2b8230afaa6005434aa2f"}, + {file = "coverage-7.3.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bfed0ec4b419fbc807dec417c401499ea869436910e1ca524cfb4f81cf3f60e7"}, + {file = "coverage-7.3.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f97ff5a9fc2ca47f3383482858dd2cb8ddbf7514427eecf5aa5f7992d0571429"}, + {file = "coverage-7.3.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:607b6c6b35aa49defaebf4526729bd5238bc36fe3ef1a417d9839e1d96ee1e4c"}, + {file = "coverage-7.3.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8e258dcc335055ab59fe79f1dec217d9fb0cdace103d6b5c6df6b75915e7959"}, + {file = "coverage-7.3.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a02ac7c51819702b384fea5ee033a7c202f732a2a2f1fe6c41e3d4019828c8d3"}, + {file = "coverage-7.3.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b710869a15b8caf02e31d16487a931dbe78335462a122c8603bb9bd401ff6fb2"}, + {file = "coverage-7.3.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c6a23ae9348a7a92e7f750f9b7e828448e428e99c24616dec93a0720342f241d"}, + {file = "coverage-7.3.4-cp38-cp38-win32.whl", hash = "sha256:758ebaf74578b73f727acc4e8ab4b16ab6f22a5ffd7dd254e5946aba42a4ce76"}, + {file = "coverage-7.3.4-cp38-cp38-win_amd64.whl", hash = "sha256:309ed6a559bc942b7cc721f2976326efbfe81fc2b8f601c722bff927328507dc"}, + {file = "coverage-7.3.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:aefbb29dc56317a4fcb2f3857d5bce9b881038ed7e5aa5d3bcab25bd23f57328"}, + {file = "coverage-7.3.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:183c16173a70caf92e2dfcfe7c7a576de6fa9edc4119b8e13f91db7ca33a7923"}, + {file = "coverage-7.3.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a4184dcbe4f98d86470273e758f1d24191ca095412e4335ff27b417291f5964"}, + {file = "coverage-7.3.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93698ac0995516ccdca55342599a1463ed2e2d8942316da31686d4d614597ef9"}, + {file = "coverage-7.3.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb220b3596358a86361139edce40d97da7458412d412e1e10c8e1970ee8c09ab"}, + {file = "coverage-7.3.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d5b14abde6f8d969e6b9dd8c7a013d9a2b52af1235fe7bebef25ad5c8f47fa18"}, + {file = "coverage-7.3.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:610afaf929dc0e09a5eef6981edb6a57a46b7eceff151947b836d869d6d567c1"}, + {file = "coverage-7.3.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d6ed790728fb71e6b8247bd28e77e99d0c276dff952389b5388169b8ca7b1c28"}, + {file = "coverage-7.3.4-cp39-cp39-win32.whl", hash = "sha256:c15fdfb141fcf6a900e68bfa35689e1256a670db32b96e7a931cab4a0e1600e5"}, + {file = "coverage-7.3.4-cp39-cp39-win_amd64.whl", hash = "sha256:38d0b307c4d99a7aca4e00cad4311b7c51b7ac38fb7dea2abe0d182dd4008e05"}, + {file = "coverage-7.3.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:b1e0f25ae99cf247abfb3f0fac7ae25739e4cd96bf1afa3537827c576b4847e5"}, + {file = "coverage-7.3.4.tar.gz", hash = "sha256:020d56d2da5bc22a0e00a5b0d54597ee91ad72446fa4cf1b97c35022f6b6dbf0"}, ] [package.dependencies] @@ -624,7 +611,6 @@ toml = ["tomli"] name = "cycler" version = "0.12.1" description = "Composable style cycles" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -640,7 +626,6 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] name = "debugpy" version = "1.8.0" description = "An implementation of the Debug Adapter Protocol for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -668,7 +653,6 @@ files = [ name = "decorator" version = "5.1.1" description = "Decorators for Humans" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -680,7 +664,6 @@ files = [ name = "defusedxml" version = "0.7.1" description = "XML bomb protection for Python stdlib modules" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -690,14 +673,13 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.1.3" +version = "1.2.0" description = "Backport of PEP 654 (exception groups)" -category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, - {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, + {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, + {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, ] [package.extras] @@ -707,7 +689,6 @@ test = ["pytest (>=6)"] name = "executing" version = "2.0.1" description = "Get the currently executing AST node of a frame, and other information" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -720,14 +701,13 @@ tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipyth [[package]] name = "fastjsonschema" -version = "2.18.1" +version = "2.19.0" description = "Fastest Python implementation of JSON schema" -category = "dev" optional = false python-versions = "*" files = [ - {file = "fastjsonschema-2.18.1-py3-none-any.whl", hash = "sha256:aec6a19e9f66e9810ab371cc913ad5f4e9e479b63a7072a2cd060a9369e329a8"}, - {file = "fastjsonschema-2.18.1.tar.gz", hash = "sha256:06dc8680d937628e993fa0cd278f196d20449a1adc087640710846b324d422ea"}, + {file = "fastjsonschema-2.19.0-py3-none-any.whl", hash = "sha256:b9fd1a2dd6971dbc7fee280a95bd199ae0dd9ce22beb91cc75e9c1c528a5170e"}, + {file = "fastjsonschema-2.19.0.tar.gz", hash = "sha256:e25df6647e1bc4a26070b700897b07b542ec898dd4f1f6ea013e7f6a88417225"}, ] [package.extras] @@ -735,60 +715,59 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc [[package]] name = "fonttools" -version = "4.44.0" +version = "4.47.0" description = "Tools to manipulate font files" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.44.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e1cd1c6bb097e774d68402499ff66185190baaa2629ae2f18515a2c50b93db0c"}, - {file = "fonttools-4.44.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b9eab7f9837fdaa2a10a524fbcc2ec24bf60637c044b6e4a59c3f835b90f0fae"}, - {file = "fonttools-4.44.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f412954275e594f7a51c16f3b3edd850acb0d842fefc33856b63a17e18499a5"}, - {file = "fonttools-4.44.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50d25893885e80a5955186791eed5579f1e75921751539cc1dc3ffd1160b48cf"}, - {file = "fonttools-4.44.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:22ea8aa7b3712450b42b044702bd3a64fd118006bad09a6f94bd1b227088492e"}, - {file = "fonttools-4.44.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:df40daa6c03b98652ffe8110ae014fe695437f6e1cb5a07e16ea37f40e73ac86"}, - {file = "fonttools-4.44.0-cp310-cp310-win32.whl", hash = "sha256:bca49da868e8bde569ef36f0cc1b6de21d56bf9c3be185c503b629c19a185287"}, - {file = "fonttools-4.44.0-cp310-cp310-win_amd64.whl", hash = "sha256:dbac86d83d96099890e731cc2af97976ff2c98f4ba432fccde657c5653a32f1c"}, - {file = "fonttools-4.44.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e8ff7d19a6804bfd561cfcec9b4200dd1788e28f7de4be70189801530c47c1b3"}, - {file = "fonttools-4.44.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a8a1fa9a718de0bc026979c93e1e9b55c5efde60d76f91561fd713387573817d"}, - {file = "fonttools-4.44.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05064f95aacdfc06f21e55096c964b2228d942b8675fa26995a2551f6329d2d"}, - {file = "fonttools-4.44.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31b38528f25bc662401e6ffae14b3eb7f1e820892fd80369a37155e3b636a2f4"}, - {file = "fonttools-4.44.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:05d7c4d2c95b9490e669f3cb83918799bf1c838619ac6d3bad9ea017cfc63f2e"}, - {file = "fonttools-4.44.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6999e80a125b0cd8e068d0210b63323f17338038c2ecd2e11b9209ec430fe7f2"}, - {file = "fonttools-4.44.0-cp311-cp311-win32.whl", hash = "sha256:a7aec7f5d14dfcd71fb3ebc299b3f000c21fdc4043079101777ed2042ba5b7c5"}, - {file = "fonttools-4.44.0-cp311-cp311-win_amd64.whl", hash = "sha256:518a945dbfe337744bfff31423c1430303b8813c5275dffb0f2577f0734a1189"}, - {file = "fonttools-4.44.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:59b6ad83cce067d10f4790c037a5904424f45bebb5e7be2eb2db90402f288267"}, - {file = "fonttools-4.44.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c2de1fb18198acd400c45ffe2aef5420c8d55fde903e91cba705596099550f3b"}, - {file = "fonttools-4.44.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84f308b7a8d28208d54315d11d35f9888d6d607673dd4d42d60b463682ee0400"}, - {file = "fonttools-4.44.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66bc6efd829382f7a7e6cf33c2fb32b13edc8a239eb15f32acbf197dce7a0165"}, - {file = "fonttools-4.44.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a8b99713d3a0d0e876b6aecfaada5e7dc9fe979fcd90ef9fa0ba1d9b9aed03f2"}, - {file = "fonttools-4.44.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b63da598d9cbc52e2381f922da0e94d60c0429f92207bd3fb04d112fc82ea7cb"}, - {file = "fonttools-4.44.0-cp312-cp312-win32.whl", hash = "sha256:f611c97678604e302b725f71626edea113a5745a7fb557c958b39edb6add87d5"}, - {file = "fonttools-4.44.0-cp312-cp312-win_amd64.whl", hash = "sha256:58af428746fa73a2edcbf26aff33ac4ef3c11c8d75bb200eaea2f7e888d2de4e"}, - {file = "fonttools-4.44.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:9ee8692e23028564c13d924004495f284df8ac016a19f17a87251210e1f1f928"}, - {file = "fonttools-4.44.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dab3d00d27b1a79ae4d4a240e8ceea8af0ff049fd45f05adb4f860d93744110d"}, - {file = "fonttools-4.44.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f53526668beccdb3409c6055a4ffe50987a7f05af6436fa55d61f5e7bd450219"}, - {file = "fonttools-4.44.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3da036b016c975c2d8c69005bdc4d5d16266f948a7fab950244e0f58301996a"}, - {file = "fonttools-4.44.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b99fe8ef4093f672d00841569d2d05691e50334d79f4d9c15c1265d76d5580d2"}, - {file = "fonttools-4.44.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d16d9634ff1e5cea2cf4a8cbda9026f766e4b5f30b48f8180f0e99133d3abfc"}, - {file = "fonttools-4.44.0-cp38-cp38-win32.whl", hash = "sha256:3d29509f6e05e8d725db59c2d8c076223d793e4e35773040be6632a0349f2f97"}, - {file = "fonttools-4.44.0-cp38-cp38-win_amd64.whl", hash = "sha256:d4fa4f4bc8fd86579b8cdbe5e948f35d82c0eda0091c399d009b2a5a6b61c040"}, - {file = "fonttools-4.44.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c794de4086f06ae609b71ac944ec7deb09f34ecf73316fddc041087dd24bba39"}, - {file = "fonttools-4.44.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2db63941fee3122e31a21dd0f5b2138ce9906b661a85b63622421d3654a74ae2"}, - {file = "fonttools-4.44.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb01c49c8aa035d5346f46630209923d4927ed15c2493db38d31da9f811eb70d"}, - {file = "fonttools-4.44.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46c79af80a835410874683b5779b6c1ec1d5a285e11c45b5193e79dd691eb111"}, - {file = "fonttools-4.44.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b6e6aa2d066f8dafd06d8d0799b4944b5d5a1f015dd52ac01bdf2895ebe169a0"}, - {file = "fonttools-4.44.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:63a3112f753baef8c6ac2f5f574bb9ac8001b86c8c0c0380039db47a7f512d20"}, - {file = "fonttools-4.44.0-cp39-cp39-win32.whl", hash = "sha256:54efed22b2799a85475e6840e907c402ba49892c614565dc770aa97a53621b2b"}, - {file = "fonttools-4.44.0-cp39-cp39-win_amd64.whl", hash = "sha256:2e91e19b583961979e2e5a701269d3cfc07418963bee717f8160b0a24332826b"}, - {file = "fonttools-4.44.0-py3-none-any.whl", hash = "sha256:b9beb0fa6ff3ea808ad4a6962d68ac0f140ddab080957b20d9e268e4d67fb335"}, - {file = "fonttools-4.44.0.tar.gz", hash = "sha256:4e90dd81b6e0d97ebfe52c0d12a17a9ef7f305d6bfbb93081265057d6092f252"}, + {file = "fonttools-4.47.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2d2404107626f97a221dc1a65b05396d2bb2ce38e435f64f26ed2369f68675d9"}, + {file = "fonttools-4.47.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c01f409be619a9a0f5590389e37ccb58b47264939f0e8d58bfa1f3ba07d22671"}, + {file = "fonttools-4.47.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d986b66ff722ef675b7ee22fbe5947a41f60a61a4da15579d5e276d897fbc7fa"}, + {file = "fonttools-4.47.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8acf6dd0434b211b3bd30d572d9e019831aae17a54016629fa8224783b22df8"}, + {file = "fonttools-4.47.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:495369c660e0c27233e3c572269cbe520f7f4978be675f990f4005937337d391"}, + {file = "fonttools-4.47.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c59227d7ba5b232281c26ae04fac2c73a79ad0e236bca5c44aae904a18f14faf"}, + {file = "fonttools-4.47.0-cp310-cp310-win32.whl", hash = "sha256:59a6c8b71a245800e923cb684a2dc0eac19c56493e2f896218fcf2571ed28984"}, + {file = "fonttools-4.47.0-cp310-cp310-win_amd64.whl", hash = "sha256:52c82df66201f3a90db438d9d7b337c7c98139de598d0728fb99dab9fd0495ca"}, + {file = "fonttools-4.47.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:854421e328d47d70aa5abceacbe8eef231961b162c71cbe7ff3f47e235e2e5c5"}, + {file = "fonttools-4.47.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:511482df31cfea9f697930f61520f6541185fa5eeba2fa760fe72e8eee5af88b"}, + {file = "fonttools-4.47.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0e2c88c8c985b7b9a7efcd06511fb0a1fe3ddd9a6cd2895ef1dbf9059719d7"}, + {file = "fonttools-4.47.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7a0a8848726956e9d9fb18c977a279013daadf0cbb6725d2015a6dd57527992"}, + {file = "fonttools-4.47.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e869da810ae35afb3019baa0d0306cdbab4760a54909c89ad8904fa629991812"}, + {file = "fonttools-4.47.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dd23848f877c3754f53a4903fb7a593ed100924f9b4bff7d5a4e2e8a7001ae11"}, + {file = "fonttools-4.47.0-cp311-cp311-win32.whl", hash = "sha256:bf1810635c00f7c45d93085611c995fc130009cec5abdc35b327156aa191f982"}, + {file = "fonttools-4.47.0-cp311-cp311-win_amd64.whl", hash = "sha256:61df4dee5d38ab65b26da8efd62d859a1eef7a34dcbc331299a28e24d04c59a7"}, + {file = "fonttools-4.47.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e3f4d61f3a8195eac784f1d0c16c0a3105382c1b9a74d99ac4ba421da39a8826"}, + {file = "fonttools-4.47.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:174995f7b057e799355b393e97f4f93ef1f2197cbfa945e988d49b2a09ecbce8"}, + {file = "fonttools-4.47.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea592e6a09b71cb7a7661dd93ac0b877a6228e2d677ebacbad0a4d118494c86d"}, + {file = "fonttools-4.47.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40bdbe90b33897d9cc4a39f8e415b0fcdeae4c40a99374b8a4982f127ff5c767"}, + {file = "fonttools-4.47.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:843509ae9b93db5aaf1a6302085e30bddc1111d31e11d724584818f5b698f500"}, + {file = "fonttools-4.47.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9acfa1cdc479e0dde528b61423855913d949a7f7fe09e276228298fef4589540"}, + {file = "fonttools-4.47.0-cp312-cp312-win32.whl", hash = "sha256:66c92ec7f95fd9732550ebedefcd190a8d81beaa97e89d523a0d17198a8bda4d"}, + {file = "fonttools-4.47.0-cp312-cp312-win_amd64.whl", hash = "sha256:e8fa20748de55d0021f83754b371432dca0439e02847962fc4c42a0e444c2d78"}, + {file = "fonttools-4.47.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c75e19971209fbbce891ebfd1b10c37320a5a28e8d438861c21d35305aedb81c"}, + {file = "fonttools-4.47.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e79f1a3970d25f692bbb8c8c2637e621a66c0d60c109ab48d4a160f50856deff"}, + {file = "fonttools-4.47.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:562681188c62c024fe2c611b32e08b8de2afa00c0c4e72bed47c47c318e16d5c"}, + {file = "fonttools-4.47.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a77a60315c33393b2bd29d538d1ef026060a63d3a49a9233b779261bad9c3f71"}, + {file = "fonttools-4.47.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b4fabb8cc9422efae1a925160083fdcbab8fdc96a8483441eb7457235df625bd"}, + {file = "fonttools-4.47.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2a78dba8c2a1e9d53a0fb5382979f024200dc86adc46a56cbb668a2249862fda"}, + {file = "fonttools-4.47.0-cp38-cp38-win32.whl", hash = "sha256:e6b968543fde4119231c12c2a953dcf83349590ca631ba8216a8edf9cd4d36a9"}, + {file = "fonttools-4.47.0-cp38-cp38-win_amd64.whl", hash = "sha256:4a9a51745c0439516d947480d4d884fa18bd1458e05b829e482b9269afa655bc"}, + {file = "fonttools-4.47.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:62d8ddb058b8e87018e5dc26f3258e2c30daad4c87262dfeb0e2617dd84750e6"}, + {file = "fonttools-4.47.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5dde0eab40faaa5476133123f6a622a1cc3ac9b7af45d65690870620323308b4"}, + {file = "fonttools-4.47.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4da089f6dfdb822293bde576916492cd708c37c2501c3651adde39804630538"}, + {file = "fonttools-4.47.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:253bb46bab970e8aae254cebf2ae3db98a4ef6bd034707aa68a239027d2b198d"}, + {file = "fonttools-4.47.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1193fb090061efa2f9e2d8d743ae9850c77b66746a3b32792324cdce65784154"}, + {file = "fonttools-4.47.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:084511482dd265bce6dca24c509894062f0117e4e6869384d853f46c0e6d43be"}, + {file = "fonttools-4.47.0-cp39-cp39-win32.whl", hash = "sha256:97620c4af36e4c849e52661492e31dc36916df12571cb900d16960ab8e92a980"}, + {file = "fonttools-4.47.0-cp39-cp39-win_amd64.whl", hash = "sha256:e77bdf52185bdaf63d39f3e1ac3212e6cfa3ab07d509b94557a8902ce9c13c82"}, + {file = "fonttools-4.47.0-py3-none-any.whl", hash = "sha256:d6477ba902dd2d7adda7f0fd3bfaeb92885d45993c9e1928c9f28fc3961415f7"}, + {file = "fonttools-4.47.0.tar.gz", hash = "sha256:ec13a10715eef0e031858c1c23bfaee6cba02b97558e4a7bfa089dba4a8c2ebf"}, ] [package.extras] -all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] +all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] graphite = ["lz4 (>=1.7.4.2)"] -interpolatable = ["munkres", "scipy"] +interpolatable = ["munkres", "pycairo", "scipy"] lxml = ["lxml (>=4.0,<5)"] pathops = ["skia-pathops (>=0.5.0)"] plot = ["matplotlib"] @@ -803,7 +782,6 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] name = "ghp-import" version = "2.1.0" description = "Copy your docs directly to the gh-pages branch." -category = "dev" optional = false python-versions = "*" files = [ @@ -819,14 +797,13 @@ dev = ["flake8", "markdown", "twine", "wheel"] [[package]] name = "griffe" -version = "0.36.9" +version = "0.38.1" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "griffe-0.36.9-py3-none-any.whl", hash = "sha256:7874febe7cd81e8e47eb7b8130ff9d38c8f3656233c01d2d217d2e898a0925f5"}, - {file = "griffe-0.36.9.tar.gz", hash = "sha256:b4e510bf0ed1fc91c58453c68018a2247c561adec8f5dadc40275afc01f51eac"}, + {file = "griffe-0.38.1-py3-none-any.whl", hash = "sha256:334c79d3b5964ade65c05dfcaf53518c576dedd387aaba5c9fd71212f34f1483"}, + {file = "griffe-0.38.1.tar.gz", hash = "sha256:bd68d7da7f3d87bc57eb9962b250db123efd9bbcc06c11c1a91b6e583b2a9361"}, ] [package.dependencies] @@ -834,33 +811,31 @@ colorama = ">=0.4" [[package]] name = "idna" -version = "3.4" +version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" -category = "dev" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, + {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, + {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, ] [[package]] name = "importlib-metadata" -version = "6.8.0" +version = "7.0.1" description = "Read metadata from Python packages" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, - {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, + {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"}, + {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] @@ -868,7 +843,6 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs name = "importlib-resources" version = "6.1.1" description = "Read resources from Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -887,7 +861,6 @@ testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -897,14 +870,13 @@ files = [ [[package]] name = "ipykernel" -version = "6.26.0" +version = "6.27.1" description = "IPython Kernel for Jupyter" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "ipykernel-6.26.0-py3-none-any.whl", hash = "sha256:3ba3dc97424b87b31bb46586b5167b3161b32d7820b9201a9e698c71e271602c"}, - {file = "ipykernel-6.26.0.tar.gz", hash = "sha256:553856658eb8430bbe9653ea041a41bff63e9606fc4628873fc92a6cf3abd404"}, + {file = "ipykernel-6.27.1-py3-none-any.whl", hash = "sha256:dab88b47f112f9f7df62236511023c9bdeef67abc73af7c652e4ce4441601686"}, + {file = "ipykernel-6.27.1.tar.gz", hash = "sha256:7d5d594b6690654b4d299edba5e872dc17bb7396a8d0609c97cb7b8a1c605de6"}, ] [package.dependencies] @@ -913,7 +885,7 @@ comm = ">=0.1.1" debugpy = ">=1.6.5" ipython = ">=7.23.1" jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" matplotlib-inline = ">=0.1" nest-asyncio = "*" packaging = "*" @@ -933,7 +905,6 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio" name = "ipython" version = "8.12.3" description = "IPython: Productive Interactive Computing" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -973,7 +944,6 @@ test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pa name = "jedi" version = "0.19.1" description = "An autocompletion tool for Python that can be used for text editors." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -993,7 +963,6 @@ testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1009,14 +978,13 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jsonschema" -version = "4.19.2" +version = "4.20.0" description = "An implementation of JSON Schema validation for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.19.2-py3-none-any.whl", hash = "sha256:eee9e502c788e89cb166d4d37f43084e3b64ab405c795c03d343a4dbc2c810fc"}, - {file = "jsonschema-4.19.2.tar.gz", hash = "sha256:c9ff4d7447eed9592c23a12ccee508baf0dd0d59650615e847feb6cdca74f392"}, + {file = "jsonschema-4.20.0-py3-none-any.whl", hash = "sha256:ed6231f0429ecf966f5bc8dfef245998220549cbbcf140f913b7464c52c3b6b3"}, + {file = "jsonschema-4.20.0.tar.gz", hash = "sha256:4f614fd46d8d61258610998997743ec5492a648b33cf478c1ddc23ed4598a5fa"}, ] [package.dependencies] @@ -1033,25 +1001,23 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jsonschema-specifications" -version = "2023.7.1" +version = "2023.11.2" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema_specifications-2023.7.1-py3-none-any.whl", hash = "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1"}, - {file = "jsonschema_specifications-2023.7.1.tar.gz", hash = "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb"}, + {file = "jsonschema_specifications-2023.11.2-py3-none-any.whl", hash = "sha256:e74ba7c0a65e8cb49dc26837d6cfe576557084a8b423ed16a420984228104f93"}, + {file = "jsonschema_specifications-2023.11.2.tar.gz", hash = "sha256:9472fc4fea474cd74bea4a2b190daeccb5a9e4db2ea80efcf7a1b582fc9a81b8"}, ] [package.dependencies] importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} -referencing = ">=0.28.0" +referencing = ">=0.31.0" [[package]] name = "jupyter-client" version = "8.6.0" description = "Jupyter protocol implementation and client libraries" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1061,7 +1027,7 @@ files = [ [package.dependencies] importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" python-dateutil = ">=2.8.2" pyzmq = ">=23.0" tornado = ">=6.2" @@ -1073,14 +1039,13 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt [[package]] name = "jupyter-core" -version = "5.5.0" +version = "5.5.1" description = "Jupyter core package. A base package on which Jupyter projects rely." -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_core-5.5.0-py3-none-any.whl", hash = "sha256:e11e02cd8ae0a9de5c6c44abf5727df9f2581055afe00b22183f621ba3585805"}, - {file = "jupyter_core-5.5.0.tar.gz", hash = "sha256:880b86053bf298a8724994f95e99b99130659022a4f7f45f563084b6223861d3"}, + {file = "jupyter_core-5.5.1-py3-none-any.whl", hash = "sha256:220dfb00c45f0d780ce132bb7976b58263f81a3ada6e90a9b6823785a424f739"}, + {file = "jupyter_core-5.5.1.tar.gz", hash = "sha256:1553311a97ccd12936037f36b9ab4d6ae8ceea6ad2d5c90d94a909e752178e40"}, ] [package.dependencies] @@ -1094,44 +1059,48 @@ test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] [[package]] name = "jupyterlab-pygments" -version = "0.2.2" +version = "0.3.0" description = "Pygments theme using JupyterLab CSS variables" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "jupyterlab_pygments-0.2.2-py2.py3-none-any.whl", hash = "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f"}, - {file = "jupyterlab_pygments-0.2.2.tar.gz", hash = "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d"}, + {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, + {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, ] [[package]] name = "jupytext" -version = "1.15.2" +version = "1.16.0" description = "Jupyter notebooks as Markdown documents, Julia, Python or R scripts" -category = "dev" optional = false -python-versions = "~=3.6" +python-versions = ">=3.8" files = [ - {file = "jupytext-1.15.2-py3-none-any.whl", hash = "sha256:ef2a1a3eb8f63d84a3b3772014bdfbe238e4e12a30c4309b8c89e0a54adeb7d1"}, - {file = "jupytext-1.15.2.tar.gz", hash = "sha256:c9976e24d834e991906c1de55af4b6d512d764f6372aabae45fc1ea72b589173"}, + {file = "jupytext-1.16.0-py3-none-any.whl", hash = "sha256:c2b951ac72871f39cd6cd242b56bc43219b7ed8169598bae5359811fb1f54d28"}, + {file = "jupytext-1.16.0.tar.gz", hash = "sha256:94c7e67775e90e1792c39ab7fca4e0459bf7c35656123e8dc2e9e1b3e953baf8"}, ] [package.dependencies] markdown-it-py = ">=1.0.0" mdit-py-plugins = "*" nbformat = "*" +packaging = "*" pyyaml = "*" toml = "*" [package.extras] -rst2md = ["sphinx-gallery (>=0.7.0,<0.8.0)"] -toml = ["toml"] +dev = ["jupytext[test-cov,test-external]"] +docs = ["myst-parser", "sphinx", "sphinx-copybutton", "sphinx-rtd-theme"] +test = ["pytest", "pytest-randomly", "pytest-xdist"] +test-cov = ["jupytext[test-integration]", "pytest-cov (>=2.6.1)"] +test-external = ["autopep8", "black", "flake8", "gitpython", "isort", "jupyter-fs (<0.4.0)", "jupytext[test-integration]", "pre-commit", "sphinx-gallery (<0.8)"] +test-functional = ["jupytext[test]"] +test-integration = ["ipykernel", "jupyter-server (!=2.11)", "jupytext[test-functional]", "nbconvert"] +test-ui = ["calysto-bash"] [[package]] name = "kiwisolver" version = "1.4.5" description = "A fast implementation of the Cassowary constraint solver" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1245,7 +1214,6 @@ files = [ name = "markdown" version = "3.5.1" description = "Python implementation of John Gruber's Markdown." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1264,7 +1232,6 @@ testing = ["coverage", "pyyaml"] name = "markdown-it-py" version = "3.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1289,7 +1256,6 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] name = "markupsafe" version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1313,6 +1279,16 @@ files = [ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, @@ -1347,59 +1323,58 @@ files = [ [[package]] name = "matplotlib" -version = "3.7.3" +version = "3.7.4" description = "Python plotting package" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "matplotlib-3.7.3-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:085c33b27561d9c04386789d5aa5eb4a932ddef43cfcdd0e01735f9a6e85ce0c"}, - {file = "matplotlib-3.7.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:c568e80e1c17f68a727f30f591926751b97b98314d8e59804f54f86ae6fa6a22"}, - {file = "matplotlib-3.7.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7baf98c5ad59c5c4743ea884bb025cbffa52dacdfdac0da3e6021a285a90377e"}, - {file = "matplotlib-3.7.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:236024f582e40dac39bca592258888b38ae47a9fed7b8de652d68d3d02d47d2b"}, - {file = "matplotlib-3.7.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12b4f6795efea037ce2d41e7c417ad8bd02d5719c6ad4a8450a0708f4a1cfb89"}, - {file = "matplotlib-3.7.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78b2136cc6c5415b78977e0e8c608647d597204b05b1d9089ccf513c7d913733"}, - {file = "matplotlib-3.7.3-cp310-cp310-win32.whl", hash = "sha256:122dcbf9be0086e2a95d9e5e0632dbf3bd5b65eaa68c369363310a6c87753059"}, - {file = "matplotlib-3.7.3-cp310-cp310-win_amd64.whl", hash = "sha256:4aab27d9e33293389e3c1d7c881d414a72bdfda0fedc3a6bf46c6fa88d9b8015"}, - {file = "matplotlib-3.7.3-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:d5adc743de91e8e0b13df60deb1b1c285b8effea3d66223afceb14b63c9b05de"}, - {file = "matplotlib-3.7.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:55de4cf7cd0071b8ebf203981b53ab64f988a0a1f897a2dff300a1124e8bcd8b"}, - {file = "matplotlib-3.7.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ac03377fd908aaee2312d0b11735753e907adb6f4d1d102de5e2425249693f6c"}, - {file = "matplotlib-3.7.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:755bafc10a46918ce9a39980009b54b02dd249594e5adf52f9c56acfddb5d0b7"}, - {file = "matplotlib-3.7.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1a6094c6f8e8d18db631754df4fe9a34dec3caf074f6869a7db09f18f9b1d6b2"}, - {file = "matplotlib-3.7.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:272dba2f1b107790ed78ebf5385b8d14b27ad9e90419de340364b49fe549a993"}, - {file = "matplotlib-3.7.3-cp311-cp311-win32.whl", hash = "sha256:591c123bed1cb4b9996fb60b41a6d89c2ec4943244540776c5f1283fb6960a53"}, - {file = "matplotlib-3.7.3-cp311-cp311-win_amd64.whl", hash = "sha256:3bf3a178c6504694cee8b88b353df0051583f2f6f8faa146f67115c27c856881"}, - {file = "matplotlib-3.7.3-cp312-cp312-macosx_10_12_universal2.whl", hash = "sha256:edf54cac8ee3603f3093616b40a931e8c063969756a4d78a86e82c2fea9659f7"}, - {file = "matplotlib-3.7.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:91e36a85ea639a1ba9f91427041eac064b04829945fe331a92617b6cb21d27e5"}, - {file = "matplotlib-3.7.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:caf5eaaf7c68f8d7df269dfbcaf46f48a70ff482bfcebdcc97519671023f2a7d"}, - {file = "matplotlib-3.7.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74bf57f505efea376097e948b7cdd87191a7ce8180616390aef496639edf601f"}, - {file = "matplotlib-3.7.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee152a88a0da527840a426535514b6ed8ac4240eb856b1da92cf48124320e346"}, - {file = "matplotlib-3.7.3-cp312-cp312-win_amd64.whl", hash = "sha256:67a410a9c9e07cbc83581eeea144bbe298870bf0ac0ee2f2e10a015ab7efee19"}, - {file = "matplotlib-3.7.3-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:259999c05285cb993d7f2a419cea547863fa215379eda81f7254c9e932963729"}, - {file = "matplotlib-3.7.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:3f4e7fd5a6157e1d018ce2166ec8e531a481dd4a36f035b5c23edfe05a25419a"}, - {file = "matplotlib-3.7.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:faa3d12d8811d08d14080a8b7b9caea9a457dc495350166b56df0db4b9909ef5"}, - {file = "matplotlib-3.7.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:336e88900c11441e458da01c8414fc57e04e17f9d3bb94958a76faa2652bcf6b"}, - {file = "matplotlib-3.7.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:12f4c0dd8aa280d796c8772ea8265a14f11a04319baa3a16daa5556065e8baea"}, - {file = "matplotlib-3.7.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1990955b11e7918d256cf3b956b10997f405b7917a3f1c7d8e69c1d15c7b1930"}, - {file = "matplotlib-3.7.3-cp38-cp38-win32.whl", hash = "sha256:e78707b751260b42b721507ad7aa60fe4026d7f51c74cca6b9cd8b123ebb633a"}, - {file = "matplotlib-3.7.3-cp38-cp38-win_amd64.whl", hash = "sha256:e594ee43c59ea39ca5c6244667cac9d017a3527febc31f5532ad9135cf7469ec"}, - {file = "matplotlib-3.7.3-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:6eaa1cf0e94c936a26b78f6d756c5fbc12e0a58c8a68b7248a2a31456ce4e234"}, - {file = "matplotlib-3.7.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:0a97af9d22e8ebedc9f00b043d9bbd29a375e9e10b656982012dded44c10fd77"}, - {file = "matplotlib-3.7.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1f9c6c16597af660433ab330b59ee2934b832ee1fabcaf5cbde7b2add840f31e"}, - {file = "matplotlib-3.7.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7240259b4b9cbc62381f6378cff4d57af539162a18e832c1e48042fabc40b6b"}, - {file = "matplotlib-3.7.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:747c6191d2e88ae854809e69aa358dbf852ff1a5738401b85c1cc9012309897a"}, - {file = "matplotlib-3.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec726b08a5275d827aa91bb951e68234a4423adb91cf65bc0fcdc0f2777663f7"}, - {file = "matplotlib-3.7.3-cp39-cp39-win32.whl", hash = "sha256:40e3b9b450c6534f07278310c4e34caff41c2a42377e4b9d47b0f8d3ac1083a2"}, - {file = "matplotlib-3.7.3-cp39-cp39-win_amd64.whl", hash = "sha256:dfc118642903a23e309b1da32886bb39a4314147d013e820c86b5fb4cb2e36d0"}, - {file = "matplotlib-3.7.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:165c8082bf8fc0360c24aa4724a22eaadbfd8c28bf1ccf7e94d685cad48261e4"}, - {file = "matplotlib-3.7.3-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ebd8470cc2a3594746ff0513aecbfa2c55ff6f58e6cef2efb1a54eb87c88ffa2"}, - {file = "matplotlib-3.7.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7153453669c9672b52095119fd21dd032d19225d48413a2871519b17db4b0fde"}, - {file = "matplotlib-3.7.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:498a08267dc69dd8f24c4b5d7423fa584d7ce0027ba71f7881df05fc09b89bb7"}, - {file = "matplotlib-3.7.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d48999c4b19b5a0c058c9cd828ff6fc7748390679f6cf9a2ad653a3e802c87d3"}, - {file = "matplotlib-3.7.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22d65d18b4ee8070a5fea5761d59293f1f9e2fac37ec9ce090463b0e629432fd"}, - {file = "matplotlib-3.7.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c40cde976c36693cc0767e27cf5f443f91c23520060bd9496678364adfafe9c"}, - {file = "matplotlib-3.7.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:39018a2b17592448fbfdf4b8352955e6c3905359939791d4ff429296494d1a0c"}, - {file = "matplotlib-3.7.3.tar.gz", hash = "sha256:f09b3dd6bdeb588de91f853bbb2d6f0ff8ab693485b0c49035eaa510cb4f142e"}, + {file = "matplotlib-3.7.4-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:b71079239bd866bf56df023e5146de159cb0c7294e508830901f4d79e2d89385"}, + {file = "matplotlib-3.7.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:bf91a42f6274a64cb41189120b620c02e574535ff6671fa836cade7701b06fbd"}, + {file = "matplotlib-3.7.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f757e8b42841d6add0cb69b42497667f0d25a404dcd50bd923ec9904e38414c4"}, + {file = "matplotlib-3.7.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4dfee00aa4bd291e08bb9461831c26ce0da85ca9781bb8794f2025c6e925281"}, + {file = "matplotlib-3.7.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3640f33632beb3993b698b1be9d1c262b742761d6101f3c27b87b2185d25c875"}, + {file = "matplotlib-3.7.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff539c4a17ecdf076ed808ee271ffae4a30dcb7e157b99ccae2c837262c07db6"}, + {file = "matplotlib-3.7.4-cp310-cp310-win32.whl", hash = "sha256:24b8f28af3e766195c09b780b15aa9f6710192b415ae7866b9c03dee7ec86370"}, + {file = "matplotlib-3.7.4-cp310-cp310-win_amd64.whl", hash = "sha256:3fa193286712c3b6c3cfa5fe8a6bb563f8c52cc750006c782296e0807ce5e799"}, + {file = "matplotlib-3.7.4-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:b167f54cb4654b210c9624ec7b54e2b3b8de68c93a14668937e7e53df60770ec"}, + {file = "matplotlib-3.7.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:7dfe6821f1944cb35603ff22e21510941bbcce7ccf96095beffaac890d39ce77"}, + {file = "matplotlib-3.7.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3c557d9165320dff3c5f2bb99bfa0b6813d3e626423ff71c40d6bc23b83c3339"}, + {file = "matplotlib-3.7.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08372696b3bb45c563472a552a705bfa0942f0a8ffe084db8a4e8f9153fbdf9d"}, + {file = "matplotlib-3.7.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81e1a7ac818000e8ac3ca696c3fdc501bc2d3adc89005e7b4e22ee5e9d51de98"}, + {file = "matplotlib-3.7.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:390920a3949906bc4b0216198d378f2a640c36c622e3584dd0c79a7c59ae9f50"}, + {file = "matplotlib-3.7.4-cp311-cp311-win32.whl", hash = "sha256:62e094d8da26294634da9e7f1856beee3978752b1b530c8e1763d2faed60cc10"}, + {file = "matplotlib-3.7.4-cp311-cp311-win_amd64.whl", hash = "sha256:f8fc2df756105784e650605e024d36dc2d048d68e5c1b26df97ee25d1bd41f9f"}, + {file = "matplotlib-3.7.4-cp312-cp312-macosx_10_12_universal2.whl", hash = "sha256:568574756127791903604e315c11aef9f255151e4cfe20ec603a70f9dda8e259"}, + {file = "matplotlib-3.7.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7d479aac338195e2199a8cfc03c4f2f55914e6a120177edae79e0340a6406457"}, + {file = "matplotlib-3.7.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:32183d4be84189a4c52b4b8861434d427d9118db2cec32986f98ed6c02dcfbb6"}, + {file = "matplotlib-3.7.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0037d066cca1f4bda626c507cddeb6f7da8283bc6a214da2db13ff2162933c52"}, + {file = "matplotlib-3.7.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44856632ebce88abd8efdc0a0dceec600418dcac06b72ae77af0019d260aa243"}, + {file = "matplotlib-3.7.4-cp312-cp312-win_amd64.whl", hash = "sha256:632fc938c22117d4241411191cfb88ac264a4c0a9ac702244641ddf30f0d739c"}, + {file = "matplotlib-3.7.4-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:ce163be048613b9d1962273708cc97e09ca05d37312e670d166cf332b80bbaff"}, + {file = "matplotlib-3.7.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:e680f49bb8052ba3b2698e370155d2b4afb49f9af1cc611a26579d5981e2852a"}, + {file = "matplotlib-3.7.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0604880e4327114054199108b7390f987f4f40ee5ce728985836889e11a780ba"}, + {file = "matplotlib-3.7.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1e6abcde6fc52475f9d6a12b9f1792aee171ce7818ef6df5d61cb0b82816e6e8"}, + {file = "matplotlib-3.7.4-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f59a70e2ec3212033ef6633ed07682da03f5249379722512a3a2a26a7d9a738e"}, + {file = "matplotlib-3.7.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a9981b2a2dd9da06eca4ab5855d09b54b8ce7377c3e0e3957767b83219d652d"}, + {file = "matplotlib-3.7.4-cp38-cp38-win32.whl", hash = "sha256:83859ac26839660ecd164ee8311272074250b915ac300f9b2eccc84410f8953b"}, + {file = "matplotlib-3.7.4-cp38-cp38-win_amd64.whl", hash = "sha256:7a7709796ac59fe8debde68272388be6ed449c8971362eb5b60d280eac8dadde"}, + {file = "matplotlib-3.7.4-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:b1d70bc1ea1bf110bec64f4578de3e14947909a8887df4c1fd44492eca487955"}, + {file = "matplotlib-3.7.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c83f49e795a5de6c168876eea723f5b88355202f9603c55977f5356213aa8280"}, + {file = "matplotlib-3.7.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5c9133f230945fe10652eb33e43642e933896194ef6a4f8d5e79bb722bdb2000"}, + {file = "matplotlib-3.7.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:798ff59022eeb276380ce9a73ba35d13c3d1499ab9b73d194fd07f1b0a41c304"}, + {file = "matplotlib-3.7.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1707b20b25e90538c2ce8d4409e30f0ef1df4017cc65ad0439633492a973635b"}, + {file = "matplotlib-3.7.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e6227ca8492baeef873cdd8e169a318efb5c3a25ce94e69727e7f964995b0b1"}, + {file = "matplotlib-3.7.4-cp39-cp39-win32.whl", hash = "sha256:5661c8639aded7d1bbf781373a359011cb1dd09199dee49043e9e68dd16f07ba"}, + {file = "matplotlib-3.7.4-cp39-cp39-win_amd64.whl", hash = "sha256:55eec941a4743f0bd3e5b8ee180e36b7ea8e62f867bf2613937c9f01b9ac06a2"}, + {file = "matplotlib-3.7.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ab16868714e5cc90ec8f7ff5d83d23bcd6559224d8e9cb5227c9f58748889fe8"}, + {file = "matplotlib-3.7.4-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c698b33f9a3f0b127a8e614c8fb4087563bb3caa9c9d95298722fa2400cdd3f"}, + {file = "matplotlib-3.7.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be3493bbcb4d255cb71de1f9050ac71682fce21a56089eadbcc8e21784cb12ee"}, + {file = "matplotlib-3.7.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:f8c725d1dd2901b2e7ec6cd64165e00da2978cc23d4143cb9ef745bec88e6b04"}, + {file = "matplotlib-3.7.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:286332f8f45f8ffde2d2119b9fdd42153dccd5025fa9f451b4a3b5c086e26da5"}, + {file = "matplotlib-3.7.4-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:116ef0b43aa00ff69260b4cce39c571e4b8c6f893795b708303fa27d9b9d7548"}, + {file = "matplotlib-3.7.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c90590d4b46458677d80bc3218f3f1ac11fc122baa9134e0cb5b3e8fc3714052"}, + {file = "matplotlib-3.7.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:de7c07069687be64fd9d119da3122ba13a8d399eccd3f844815f0dc78a870b2c"}, + {file = "matplotlib-3.7.4.tar.gz", hash = "sha256:7cd4fef8187d1dd0d9dcfdbaa06ac326d396fb8c71c647129f0bf56835d77026"}, ] [package.dependencies] @@ -1413,13 +1388,11 @@ packaging = ">=20.0" pillow = ">=6.2.0" pyparsing = ">=2.3.1" python-dateutil = ">=2.7" -setuptools_scm = ">=7" [[package]] name = "matplotlib-inline" version = "0.1.6" description = "Inline Matplotlib backend for Jupyter" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1434,7 +1407,6 @@ traitlets = "*" name = "mdit-py-plugins" version = "0.4.0" description = "Collection of plugins for markdown-it-py" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1454,7 +1426,6 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] name = "mdurl" version = "0.1.2" description = "Markdown URL utilities" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1466,7 +1437,6 @@ files = [ name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1478,7 +1448,6 @@ files = [ name = "mistune" version = "3.0.2" description = "A sane and fast Markdown parser with useful plugins and renderers" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1490,7 +1459,6 @@ files = [ name = "mkdocs" version = "1.5.3" description = "Project documentation with Markdown." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1522,7 +1490,6 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-imp name = "mkdocs-autorefs" version = "0.5.0" description = "Automatically link across pages in MkDocs." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1538,11 +1505,11 @@ mkdocs = ">=1.1" name = "mkdocs-jupyter" version = "0.24.3" description = "Use Jupyter in mkdocs websites" -category = "dev" optional = false python-versions = ">=3.7" files = [ {file = "mkdocs_jupyter-0.24.3-py3-none-any.whl", hash = "sha256:904262a8678a5e5920b7c3c03b5010b36301a69d0a38f2fcbf430493adf6879e"}, + {file = "mkdocs_jupyter-0.24.3.tar.gz", hash = "sha256:3d81da9aea27480e93bab22438910c4f0b9630613e74f85b576590d78e0e8b14"}, ] [package.dependencies] @@ -1558,14 +1525,13 @@ test = ["coverage[toml]", "pymdown-extensions", "pytest", "pytest-cov"] [[package]] name = "mkdocs-material" -version = "9.4.8" +version = "9.5.2" description = "Documentation that simply works" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material-9.4.8-py3-none-any.whl", hash = "sha256:8b20f6851bddeef37dced903893cd176cf13a21a482e97705a103c45f06ce9b9"}, - {file = "mkdocs_material-9.4.8.tar.gz", hash = "sha256:f0c101453e8bc12b040e8b64ca39a405d950d8402609b1378cc2b98976e74b5f"}, + {file = "mkdocs_material-9.5.2-py3-none-any.whl", hash = "sha256:6ed0fbf4682491766f0ec1acc955db6901c2fd424c7ab343964ef51b819741f5"}, + {file = "mkdocs_material-9.5.2.tar.gz", hash = "sha256:ca8b9cd2b3be53e858e5a1a45ac9668bd78d95d77a30288bb5ebc1a31db6184c"}, ] [package.dependencies] @@ -1588,36 +1554,36 @@ recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2. [[package]] name = "mkdocs-material-extensions" -version = "1.3" +version = "1.3.1" description = "Extension pack for Python Markdown and MkDocs Material." -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material_extensions-1.3-py3-none-any.whl", hash = "sha256:0297cc48ba68a9fdd1ef3780a3b41b534b0d0df1d1181a44676fda5f464eeadc"}, - {file = "mkdocs_material_extensions-1.3.tar.gz", hash = "sha256:f0446091503acb110a7cab9349cbc90eeac51b58d1caa92a704a81ca1e24ddbd"}, + {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, + {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, ] [[package]] name = "mkdocstrings" -version = "0.23.0" +version = "0.24.0" description = "Automatic documentation from sources, for MkDocs." -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocstrings-0.23.0-py3-none-any.whl", hash = "sha256:051fa4014dfcd9ed90254ae91de2dbb4f24e166347dae7be9a997fe16316c65e"}, - {file = "mkdocstrings-0.23.0.tar.gz", hash = "sha256:d9c6a37ffbe7c14a7a54ef1258c70b8d394e6a33a1c80832bce40b9567138d1c"}, + {file = "mkdocstrings-0.24.0-py3-none-any.whl", hash = "sha256:f4908560c10f587326d8f5165d1908817b2e280bbf707607f601c996366a2264"}, + {file = "mkdocstrings-0.24.0.tar.gz", hash = "sha256:222b1165be41257b494a9d29b14135d2b7ca43f38161d5b10caae03b87bd4f7e"}, ] [package.dependencies] +click = ">=7.0" importlib-metadata = {version = ">=4.6", markers = "python_version < \"3.10\""} Jinja2 = ">=2.11.1" Markdown = ">=3.3" MarkupSafe = ">=1.1" -mkdocs = ">=1.2" +mkdocs = ">=1.4" mkdocs-autorefs = ">=0.3.1" mkdocstrings-python = {version = ">=0.5.2", optional = true, markers = "extra == \"python\""} +platformdirs = ">=2.2.0" pymdown-extensions = ">=6.3" typing-extensions = {version = ">=4.1", markers = "python_version < \"3.10\""} @@ -1628,25 +1594,23 @@ python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] [[package]] name = "mkdocstrings-python" -version = "1.7.3" +version = "1.7.5" description = "A Python handler for mkdocstrings." -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocstrings_python-1.7.3-py3-none-any.whl", hash = "sha256:2439d6ad3e34f0bb4c643b845fb3c06ae9233499a1736f9fa273424b75cc5894"}, - {file = "mkdocstrings_python-1.7.3.tar.gz", hash = "sha256:c20128fa96c24dbc6437b10dfedaf33b0415d4503e51ce9ce5e84b271278268e"}, + {file = "mkdocstrings_python-1.7.5-py3-none-any.whl", hash = "sha256:5f6246026353f0c0785135db70c3fe9a5d9318990fc7ceb11d62097b8ffdd704"}, + {file = "mkdocstrings_python-1.7.5.tar.gz", hash = "sha256:c7d143728257dbf1aa550446555a554b760dcd40a763f077189d298502b800be"}, ] [package.dependencies] -griffe = ">=0.35" +griffe = ">=0.37" mkdocstrings = ">=0.20" [[package]] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1658,7 +1622,6 @@ files = [ name = "nbclient" version = "0.9.0" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." -category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -1668,7 +1631,7 @@ files = [ [package.dependencies] jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" nbformat = ">=5.1" traitlets = ">=5.4" @@ -1679,14 +1642,13 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= [[package]] name = "nbconvert" -version = "7.11.0" +version = "7.13.1" description = "Converting Jupyter Notebooks" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "nbconvert-7.11.0-py3-none-any.whl", hash = "sha256:d1d417b7f34a4e38887f8da5bdfd12372adf3b80f995d57556cb0972c68909fe"}, - {file = "nbconvert-7.11.0.tar.gz", hash = "sha256:abedc01cf543177ffde0bfc2a69726d5a478f6af10a332fc1bf29fcb4f0cf000"}, + {file = "nbconvert-7.13.1-py3-none-any.whl", hash = "sha256:3c50eb2d326478cc90b8759cf2ab9dde3d892c6537cd6a5bc0991db8ef734bcc"}, + {file = "nbconvert-7.13.1.tar.gz", hash = "sha256:2dc8267dbdfeedce2dcd34c9e3f1b51af18f43cb105549d1c5a18189ec23ba85"}, ] [package.dependencies] @@ -1713,14 +1675,13 @@ docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sp qtpdf = ["nbconvert[qtpng]"] qtpng = ["pyqtwebengine (>=5.15)"] serve = ["tornado (>=6.1)"] -test = ["flaky", "ipykernel", "ipywidgets (>=7)", "pytest"] +test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest"] webpdf = ["playwright"] [[package]] name = "nbformat" version = "5.9.2" description = "The Jupyter Notebook format" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1742,7 +1703,6 @@ test = ["pep440", "pre-commit", "pytest", "testpath"] name = "nest-asyncio" version = "1.5.8" description = "Patch asyncio to allow nested event loops" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1754,7 +1714,6 @@ files = [ name = "numpy" version = "1.24.4" description = "Fundamental package for array computing in Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1792,7 +1751,6 @@ files = [ name = "packaging" version = "23.2" description = "Core utilities for Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1804,7 +1762,6 @@ files = [ name = "paginate" version = "0.5.6" description = "Divides large result sets into pages for easier browsing" -category = "dev" optional = false python-versions = "*" files = [ @@ -1815,7 +1772,6 @@ files = [ name = "pandas" version = "2.0.3" description = "Powerful data structures for data analysis, time series, and statistics" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1849,7 +1805,7 @@ files = [ [package.dependencies] numpy = [ {version = ">=1.20.3", markers = "python_version < \"3.10\""}, - {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, + {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, ] python-dateutil = ">=2.8.2" @@ -1883,7 +1839,6 @@ xml = ["lxml (>=4.6.3)"] name = "pandocfilters" version = "1.5.0" description = "Utilities for writing pandoc filters in python" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1895,7 +1850,6 @@ files = [ name = "parso" version = "0.8.3" description = "A Python Parser" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1909,26 +1863,24 @@ testing = ["docopt", "pytest (<6.0.0)"] [[package]] name = "pathspec" -version = "0.11.2" +version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, - {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] [[package]] name = "pexpect" -version = "4.8.0" +version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." -category = "dev" optional = false python-versions = "*" files = [ - {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, - {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, + {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, + {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, ] [package.dependencies] @@ -1938,7 +1890,6 @@ ptyprocess = ">=0.5" name = "pickleshare" version = "0.7.5" description = "Tiny 'shelve'-like database with concurrency support" -category = "dev" optional = false python-versions = "*" files = [ @@ -1950,7 +1901,6 @@ files = [ name = "pillow" version = "10.1.0" description = "Python Imaging Library (Fork)" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2018,7 +1968,6 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa name = "pkgutil-resolve-name" version = "1.3.10" description = "Resolve a name to an object." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2028,14 +1977,13 @@ files = [ [[package]] name = "platformdirs" -version = "4.0.0" +version = "4.1.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "platformdirs-4.0.0-py3-none-any.whl", hash = "sha256:118c954d7e949b35437270383a3f2531e99dd93cf7ce4dc8340d3356d30f173b"}, - {file = "platformdirs-4.0.0.tar.gz", hash = "sha256:cb633b2bcf10c51af60beb0ab06d2f1d69064b43abf4c185ca6b28865f3f9731"}, + {file = "platformdirs-4.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"}, + {file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"}, ] [package.extras] @@ -2046,7 +1994,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co name = "pluggy" version = "1.3.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2060,14 +2007,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "prompt-toolkit" -version = "3.0.40" +version = "3.0.43" description = "Library for building powerful interactive command lines in Python" -category = "dev" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.40-py3-none-any.whl", hash = "sha256:99ba3dfb23d5b5af89712f89e60a5f3d9b8b67a9482ca377c5771d0e9047a34b"}, - {file = "prompt_toolkit-3.0.40.tar.gz", hash = "sha256:a371c06bb1d66cd499fecd708e50c0b6ae00acba9822ba33c586e2f16d1b739e"}, + {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"}, + {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"}, ] [package.dependencies] @@ -2075,28 +2021,27 @@ wcwidth = "*" [[package]] name = "psutil" -version = "5.9.6" +version = "5.9.7" description = "Cross-platform lib for process and system monitoring in Python." -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "psutil-5.9.6-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:fb8a697f11b0f5994550555fcfe3e69799e5b060c8ecf9e2f75c69302cc35c0d"}, - {file = "psutil-5.9.6-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:91ecd2d9c00db9817a4b4192107cf6954addb5d9d67a969a4f436dbc9200f88c"}, - {file = "psutil-5.9.6-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:10e8c17b4f898d64b121149afb136c53ea8b68c7531155147867b7b1ac9e7e28"}, - {file = "psutil-5.9.6-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:18cd22c5db486f33998f37e2bb054cc62fd06646995285e02a51b1e08da97017"}, - {file = "psutil-5.9.6-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:ca2780f5e038379e520281e4c032dddd086906ddff9ef0d1b9dcf00710e5071c"}, - {file = "psutil-5.9.6-cp27-none-win32.whl", hash = "sha256:70cb3beb98bc3fd5ac9ac617a327af7e7f826373ee64c80efd4eb2856e5051e9"}, - {file = "psutil-5.9.6-cp27-none-win_amd64.whl", hash = "sha256:51dc3d54607c73148f63732c727856f5febec1c7c336f8f41fcbd6315cce76ac"}, - {file = "psutil-5.9.6-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c69596f9fc2f8acd574a12d5f8b7b1ba3765a641ea5d60fb4736bf3c08a8214a"}, - {file = "psutil-5.9.6-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92e0cc43c524834af53e9d3369245e6cc3b130e78e26100d1f63cdb0abeb3d3c"}, - {file = "psutil-5.9.6-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:748c9dd2583ed86347ed65d0035f45fa8c851e8d90354c122ab72319b5f366f4"}, - {file = "psutil-5.9.6-cp36-cp36m-win32.whl", hash = "sha256:3ebf2158c16cc69db777e3c7decb3c0f43a7af94a60d72e87b2823aebac3d602"}, - {file = "psutil-5.9.6-cp36-cp36m-win_amd64.whl", hash = "sha256:ff18b8d1a784b810df0b0fff3bcb50ab941c3b8e2c8de5726f9c71c601c611aa"}, - {file = "psutil-5.9.6-cp37-abi3-win32.whl", hash = "sha256:a6f01f03bf1843280f4ad16f4bde26b817847b4c1a0db59bf6419807bc5ce05c"}, - {file = "psutil-5.9.6-cp37-abi3-win_amd64.whl", hash = "sha256:6e5fb8dc711a514da83098bc5234264e551ad980cec5f85dabf4d38ed6f15e9a"}, - {file = "psutil-5.9.6-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:daecbcbd29b289aac14ece28eca6a3e60aa361754cf6da3dfb20d4d32b6c7f57"}, - {file = "psutil-5.9.6.tar.gz", hash = "sha256:e4b92ddcd7dd4cdd3f900180ea1e104932c7bce234fb88976e2a3b296441225a"}, + {file = "psutil-5.9.7-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:0bd41bf2d1463dfa535942b2a8f0e958acf6607ac0be52265ab31f7923bcd5e6"}, + {file = "psutil-5.9.7-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:5794944462509e49d4d458f4dbfb92c47539e7d8d15c796f141f474010084056"}, + {file = "psutil-5.9.7-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:fe361f743cb3389b8efda21980d93eb55c1f1e3898269bc9a2a1d0bb7b1f6508"}, + {file = "psutil-5.9.7-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:e469990e28f1ad738f65a42dcfc17adaed9d0f325d55047593cb9033a0ab63df"}, + {file = "psutil-5.9.7-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:3c4747a3e2ead1589e647e64aad601981f01b68f9398ddf94d01e3dc0d1e57c7"}, + {file = "psutil-5.9.7-cp27-none-win32.whl", hash = "sha256:1d4bc4a0148fdd7fd8f38e0498639ae128e64538faa507df25a20f8f7fb2341c"}, + {file = "psutil-5.9.7-cp27-none-win_amd64.whl", hash = "sha256:4c03362e280d06bbbfcd52f29acd79c733e0af33d707c54255d21029b8b32ba6"}, + {file = "psutil-5.9.7-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ea36cc62e69a13ec52b2f625c27527f6e4479bca2b340b7a452af55b34fcbe2e"}, + {file = "psutil-5.9.7-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1132704b876e58d277168cd729d64750633d5ff0183acf5b3c986b8466cd0284"}, + {file = "psutil-5.9.7-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe8b7f07948f1304497ce4f4684881250cd859b16d06a1dc4d7941eeb6233bfe"}, + {file = "psutil-5.9.7-cp36-cp36m-win32.whl", hash = "sha256:b27f8fdb190c8c03914f908a4555159327d7481dac2f01008d483137ef3311a9"}, + {file = "psutil-5.9.7-cp36-cp36m-win_amd64.whl", hash = "sha256:44969859757f4d8f2a9bd5b76eba8c3099a2c8cf3992ff62144061e39ba8568e"}, + {file = "psutil-5.9.7-cp37-abi3-win32.whl", hash = "sha256:c727ca5a9b2dd5193b8644b9f0c883d54f1248310023b5ad3e92036c5e2ada68"}, + {file = "psutil-5.9.7-cp37-abi3-win_amd64.whl", hash = "sha256:f37f87e4d73b79e6c5e749440c3113b81d1ee7d26f21c19c47371ddea834f414"}, + {file = "psutil-5.9.7-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:032f4f2c909818c86cea4fe2cc407f1c0f0cde8e6c6d702b28b8ce0c0d143340"}, + {file = "psutil-5.9.7.tar.gz", hash = "sha256:3f02134e82cfb5d089fddf20bb2e03fd5cd52395321d1c8458a9e58500ff417c"}, ] [package.extras] @@ -2106,7 +2051,6 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] name = "ptyprocess" version = "0.7.0" description = "Run a subprocess in a pseudo terminal" -category = "dev" optional = false python-versions = "*" files = [ @@ -2118,7 +2062,6 @@ files = [ name = "pure-eval" version = "0.2.2" description = "Safely evaluate AST nodes without side effects" -category = "dev" optional = false python-versions = "*" files = [ @@ -2133,7 +2076,6 @@ tests = ["pytest"] name = "pycparser" version = "2.21" description = "C parser in Python" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2143,33 +2085,32 @@ files = [ [[package]] name = "pygments" -version = "2.16.1" +version = "2.17.2" description = "Pygments is a syntax highlighting package written in Python." -category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, - {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"}, + {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, + {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, ] [package.extras] plugins = ["importlib-metadata"] +windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pymdown-extensions" -version = "10.4" +version = "10.5" description = "Extension pack for Python Markdown." -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "pymdown_extensions-10.4-py3-none-any.whl", hash = "sha256:cfc28d6a09d19448bcbf8eee3ce098c7d17ff99f7bd3069db4819af181212037"}, - {file = "pymdown_extensions-10.4.tar.gz", hash = "sha256:bc46f11749ecd4d6b71cf62396104b4a200bad3498cb0f5dad1b8502fe461a35"}, + {file = "pymdown_extensions-10.5-py3-none-any.whl", hash = "sha256:1f0ca8bb5beff091315f793ee17683bc1390731f6ac4c5eb01e27464b80fe879"}, + {file = "pymdown_extensions-10.5.tar.gz", hash = "sha256:1b60f1e462adbec5a1ed79dac91f666c9c0d241fa294de1989f29d20096cfd0b"}, ] [package.dependencies] -markdown = ">=3.2" +markdown = ">=3.5" pyyaml = "*" [package.extras] @@ -2179,7 +2120,6 @@ extra = ["pygments (>=2.12)"] name = "pyparsing" version = "3.1.1" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "main" optional = false python-versions = ">=3.6.8" files = [ @@ -2194,7 +2134,6 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pytest" version = "7.4.3" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2217,7 +2156,6 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no name = "pytest-cov" version = "4.1.0" description = "Pytest plugin for measuring coverage." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2236,7 +2174,6 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -2251,7 +2188,6 @@ six = ">=1.5" name = "pytz" version = "2023.3.post1" description = "World timezone definitions, modern and historical" -category = "main" optional = false python-versions = "*" files = [ @@ -2263,7 +2199,6 @@ files = [ name = "pywin32" version = "306" description = "Python for Window Extensions" -category = "dev" optional = false python-versions = "*" files = [ @@ -2287,7 +2222,6 @@ files = [ name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2296,6 +2230,7 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -2303,8 +2238,15 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -2321,6 +2263,7 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -2328,6 +2271,7 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -2337,7 +2281,6 @@ files = [ name = "pyyaml-env-tag" version = "0.1" description = "A custom YAML tag for referencing environment variables in YAML files. " -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2350,105 +2293,104 @@ pyyaml = "*" [[package]] name = "pyzmq" -version = "25.1.1" +version = "25.1.2" description = "Python bindings for 0MQ" -category = "dev" optional = false python-versions = ">=3.6" files = [ - {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:381469297409c5adf9a0e884c5eb5186ed33137badcbbb0560b86e910a2f1e76"}, - {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:955215ed0604dac5b01907424dfa28b40f2b2292d6493445dd34d0dfa72586a8"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:985bbb1316192b98f32e25e7b9958088431d853ac63aca1d2c236f40afb17c83"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:afea96f64efa98df4da6958bae37f1cbea7932c35878b185e5982821bc883369"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76705c9325d72a81155bb6ab48d4312e0032bf045fb0754889133200f7a0d849"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:77a41c26205d2353a4c94d02be51d6cbdf63c06fbc1295ea57dad7e2d3381b71"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:12720a53e61c3b99d87262294e2b375c915fea93c31fc2336898c26d7aed34cd"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:57459b68e5cd85b0be8184382cefd91959cafe79ae019e6b1ae6e2ba8a12cda7"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:292fe3fc5ad4a75bc8df0dfaee7d0babe8b1f4ceb596437213821f761b4589f9"}, - {file = "pyzmq-25.1.1-cp310-cp310-win32.whl", hash = "sha256:35b5ab8c28978fbbb86ea54958cd89f5176ce747c1fb3d87356cf698048a7790"}, - {file = "pyzmq-25.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:11baebdd5fc5b475d484195e49bae2dc64b94a5208f7c89954e9e354fc609d8f"}, - {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:d20a0ddb3e989e8807d83225a27e5c2eb2260eaa851532086e9e0fa0d5287d83"}, - {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e1c1be77bc5fb77d923850f82e55a928f8638f64a61f00ff18a67c7404faf008"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d89528b4943d27029a2818f847c10c2cecc79fa9590f3cb1860459a5be7933eb"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:90f26dc6d5f241ba358bef79be9ce06de58d477ca8485e3291675436d3827cf8"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2b92812bd214018e50b6380ea3ac0c8bb01ac07fcc14c5f86a5bb25e74026e9"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f957ce63d13c28730f7fd6b72333814221c84ca2421298f66e5143f81c9f91f"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:047a640f5c9c6ade7b1cc6680a0e28c9dd5a0825135acbd3569cc96ea00b2505"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7f7e58effd14b641c5e4dec8c7dab02fb67a13df90329e61c869b9cc607ef752"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c2910967e6ab16bf6fbeb1f771c89a7050947221ae12a5b0b60f3bca2ee19bca"}, - {file = "pyzmq-25.1.1-cp311-cp311-win32.whl", hash = "sha256:76c1c8efb3ca3a1818b837aea423ff8a07bbf7aafe9f2f6582b61a0458b1a329"}, - {file = "pyzmq-25.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:44e58a0554b21fc662f2712814a746635ed668d0fbc98b7cb9d74cb798d202e6"}, - {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:e1ffa1c924e8c72778b9ccd386a7067cddf626884fd8277f503c48bb5f51c762"}, - {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1af379b33ef33757224da93e9da62e6471cf4a66d10078cf32bae8127d3d0d4a"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cff084c6933680d1f8b2f3b4ff5bbb88538a4aac00d199ac13f49d0698727ecb"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2400a94f7dd9cb20cd012951a0cbf8249e3d554c63a9c0cdfd5cbb6c01d2dec"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d81f1ddae3858b8299d1da72dd7d19dd36aab654c19671aa8a7e7fb02f6638a"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:255ca2b219f9e5a3a9ef3081512e1358bd4760ce77828e1028b818ff5610b87b"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a882ac0a351288dd18ecae3326b8a49d10c61a68b01419f3a0b9a306190baf69"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:724c292bb26365659fc434e9567b3f1adbdb5e8d640c936ed901f49e03e5d32e"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ca1ed0bb2d850aa8471387882247c68f1e62a4af0ce9c8a1dbe0d2bf69e41fb"}, - {file = "pyzmq-25.1.1-cp312-cp312-win32.whl", hash = "sha256:b3451108ab861040754fa5208bca4a5496c65875710f76789a9ad27c801a0075"}, - {file = "pyzmq-25.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:eadbefd5e92ef8a345f0525b5cfd01cf4e4cc651a2cffb8f23c0dd184975d787"}, - {file = "pyzmq-25.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:db0b2af416ba735c6304c47f75d348f498b92952f5e3e8bff449336d2728795d"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c133e93b405eb0d36fa430c94185bdd13c36204a8635470cccc200723c13bb"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:273bc3959bcbff3f48606b28229b4721716598d76b5aaea2b4a9d0ab454ec062"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cbc8df5c6a88ba5ae385d8930da02201165408dde8d8322072e3e5ddd4f68e22"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:18d43df3f2302d836f2a56f17e5663e398416e9dd74b205b179065e61f1a6edf"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:73461eed88a88c866656e08f89299720a38cb4e9d34ae6bf5df6f71102570f2e"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:34c850ce7976d19ebe7b9d4b9bb8c9dfc7aac336c0958e2651b88cbd46682123"}, - {file = "pyzmq-25.1.1-cp36-cp36m-win32.whl", hash = "sha256:d2045d6d9439a0078f2a34b57c7b18c4a6aef0bee37f22e4ec9f32456c852c71"}, - {file = "pyzmq-25.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:458dea649f2f02a0b244ae6aef8dc29325a2810aa26b07af8374dc2a9faf57e3"}, - {file = "pyzmq-25.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7cff25c5b315e63b07a36f0c2bab32c58eafbe57d0dce61b614ef4c76058c115"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1579413ae492b05de5a6174574f8c44c2b9b122a42015c5292afa4be2507f28"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3d0a409d3b28607cc427aa5c30a6f1e4452cc44e311f843e05edb28ab5e36da0"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:21eb4e609a154a57c520e3d5bfa0d97e49b6872ea057b7c85257b11e78068222"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:034239843541ef7a1aee0c7b2cb7f6aafffb005ede965ae9cbd49d5ff4ff73cf"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f8115e303280ba09f3898194791a153862cbf9eef722ad8f7f741987ee2a97c7"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1a5d26fe8f32f137e784f768143728438877d69a586ddeaad898558dc971a5ae"}, - {file = "pyzmq-25.1.1-cp37-cp37m-win32.whl", hash = "sha256:f32260e556a983bc5c7ed588d04c942c9a8f9c2e99213fec11a031e316874c7e"}, - {file = "pyzmq-25.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:abf34e43c531bbb510ae7e8f5b2b1f2a8ab93219510e2b287a944432fad135f3"}, - {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:87e34f31ca8f168c56d6fbf99692cc8d3b445abb5bfd08c229ae992d7547a92a"}, - {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c9c6c9b2c2f80747a98f34ef491c4d7b1a8d4853937bb1492774992a120f475d"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5619f3f5a4db5dbb572b095ea3cb5cc035335159d9da950830c9c4db2fbb6995"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5a34d2395073ef862b4032343cf0c32a712f3ab49d7ec4f42c9661e0294d106f"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25f0e6b78220aba09815cd1f3a32b9c7cb3e02cb846d1cfc526b6595f6046618"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3669cf8ee3520c2f13b2e0351c41fea919852b220988d2049249db10046a7afb"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2d163a18819277e49911f7461567bda923461c50b19d169a062536fffe7cd9d2"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:df27ffddff4190667d40de7beba4a950b5ce78fe28a7dcc41d6f8a700a80a3c0"}, - {file = "pyzmq-25.1.1-cp38-cp38-win32.whl", hash = "sha256:a382372898a07479bd34bda781008e4a954ed8750f17891e794521c3e21c2e1c"}, - {file = "pyzmq-25.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:52533489f28d62eb1258a965f2aba28a82aa747202c8fa5a1c7a43b5db0e85c1"}, - {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:03b3f49b57264909aacd0741892f2aecf2f51fb053e7d8ac6767f6c700832f45"}, - {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:330f9e188d0d89080cde66dc7470f57d1926ff2fb5576227f14d5be7ab30b9fa"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2ca57a5be0389f2a65e6d3bb2962a971688cbdd30b4c0bd188c99e39c234f414"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d457aed310f2670f59cc5b57dcfced452aeeed77f9da2b9763616bd57e4dbaae"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c56d748ea50215abef7030c72b60dd723ed5b5c7e65e7bc2504e77843631c1a6"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8f03d3f0d01cb5a018debeb412441996a517b11c5c17ab2001aa0597c6d6882c"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:820c4a08195a681252f46926de10e29b6bbf3e17b30037bd4250d72dd3ddaab8"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17ef5f01d25b67ca8f98120d5fa1d21efe9611604e8eb03a5147360f517dd1e2"}, - {file = "pyzmq-25.1.1-cp39-cp39-win32.whl", hash = "sha256:04ccbed567171579ec2cebb9c8a3e30801723c575601f9a990ab25bcac6b51e2"}, - {file = "pyzmq-25.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:e61f091c3ba0c3578411ef505992d356a812fb200643eab27f4f70eed34a29ef"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ade6d25bb29c4555d718ac6d1443a7386595528c33d6b133b258f65f963bb0f6"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0c95ddd4f6e9fca4e9e3afaa4f9df8552f0ba5d1004e89ef0a68e1f1f9807c7"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48e466162a24daf86f6b5ca72444d2bf39a5e58da5f96370078be67c67adc978"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abc719161780932c4e11aaebb203be3d6acc6b38d2f26c0f523b5b59d2fc1996"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ccf825981640b8c34ae54231b7ed00271822ea1c6d8ba1090ebd4943759abf5"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c2f20ce161ebdb0091a10c9ca0372e023ce24980d0e1f810f519da6f79c60800"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:deee9ca4727f53464daf089536e68b13e6104e84a37820a88b0a057b97bba2d2"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:aa8d6cdc8b8aa19ceb319aaa2b660cdaccc533ec477eeb1309e2a291eaacc43a"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:019e59ef5c5256a2c7378f2fb8560fc2a9ff1d315755204295b2eab96b254d0a"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:b9af3757495c1ee3b5c4e945c1df7be95562277c6e5bccc20a39aec50f826cd0"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:548d6482dc8aadbe7e79d1b5806585c8120bafa1ef841167bc9090522b610fa6"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:057e824b2aae50accc0f9a0570998adc021b372478a921506fddd6c02e60308e"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2243700cc5548cff20963f0ca92d3e5e436394375ab8a354bbea2b12911b20b0"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79986f3b4af059777111409ee517da24a529bdbd46da578b33f25580adcff728"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:11d58723d44d6ed4dd677c5615b2ffb19d5c426636345567d6af82be4dff8a55"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:49d238cf4b69652257db66d0c623cd3e09b5d2e9576b56bc067a396133a00d4a"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fedbdc753827cf014c01dbbee9c3be17e5a208dcd1bf8641ce2cd29580d1f0d4"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc16ac425cc927d0a57d242589f87ee093884ea4804c05a13834d07c20db203c"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11c1d2aed9079c6b0c9550a7257a836b4a637feb334904610f06d70eb44c56d2"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e8a701123029cc240cea61dd2d16ad57cab4691804143ce80ecd9286b464d180"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:61706a6b6c24bdece85ff177fec393545a3191eeda35b07aaa1458a027ad1304"}, - {file = "pyzmq-25.1.1.tar.gz", hash = "sha256:259c22485b71abacdfa8bf79720cd7bcf4b9d128b30ea554f01ae71fdbfdaa23"}, + {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"}, + {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"}, + {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"}, + {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"}, + {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"}, + {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"}, + {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"}, + {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"}, + {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"}, + {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"}, + {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"}, + {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"}, + {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"}, + {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"}, + {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"}, + {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"}, + {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"}, + {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"}, + {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"}, + {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"}, + {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"}, + {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"}, + {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"}, + {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"}, + {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"}, + {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"}, + {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"}, ] [package.dependencies] @@ -2456,14 +2398,13 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "referencing" -version = "0.30.2" +version = "0.32.0" description = "JSON Referencing + Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.30.2-py3-none-any.whl", hash = "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf"}, - {file = "referencing-0.30.2.tar.gz", hash = "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0"}, + {file = "referencing-0.32.0-py3-none-any.whl", hash = "sha256:bdcd3efb936f82ff86f993093f6da7435c7de69a3b3a5a06678a6050184bee99"}, + {file = "referencing-0.32.0.tar.gz", hash = "sha256:689e64fe121843dcfd57b71933318ef1f91188ffb45367332700a86ac8fd6161"}, ] [package.dependencies] @@ -2474,7 +2415,6 @@ rpds-py = ">=0.7.0" name = "regex" version = "2023.10.3" description = "Alternative regular expression module, to replace re." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2572,7 +2512,6 @@ files = [ name = "requests" version = "2.31.0" description = "Python HTTP for Humans." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2592,185 +2531,142 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "rpds-py" -version = "0.12.0" +version = "0.15.2" description = "Python bindings to Rust's persistent data structures (rpds)" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.12.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:c694bee70ece3b232df4678448fdda245fd3b1bb4ba481fb6cd20e13bb784c46"}, - {file = "rpds_py-0.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:30e5ce9f501fb1f970e4a59098028cf20676dee64fc496d55c33e04bbbee097d"}, - {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d72a4315514e5a0b9837a086cb433b004eea630afb0cc129de76d77654a9606f"}, - {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eebaf8c76c39604d52852366249ab807fe6f7a3ffb0dd5484b9944917244cdbe"}, - {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a239303acb0315091d54c7ff36712dba24554993b9a93941cf301391d8a997ee"}, - {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ced40cdbb6dd47a032725a038896cceae9ce267d340f59508b23537f05455431"}, - {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c8c0226c71bd0ce9892eaf6afa77ae8f43a3d9313124a03df0b389c01f832de"}, - {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8e11715178f3608874508f08e990d3771e0b8c66c73eb4e183038d600a9b274"}, - {file = "rpds_py-0.12.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5210a0018c7e09c75fa788648617ebba861ae242944111d3079034e14498223f"}, - {file = "rpds_py-0.12.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:171d9a159f1b2f42a42a64a985e4ba46fc7268c78299272ceba970743a67ee50"}, - {file = "rpds_py-0.12.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:57ec6baec231bb19bb5fd5fc7bae21231860a1605174b11585660236627e390e"}, - {file = "rpds_py-0.12.0-cp310-none-win32.whl", hash = "sha256:7188ddc1a8887194f984fa4110d5a3d5b9b5cd35f6bafdff1b649049cbc0ce29"}, - {file = "rpds_py-0.12.0-cp310-none-win_amd64.whl", hash = "sha256:1e04581c6117ad9479b6cfae313e212fe0dfa226ac727755f0d539cd54792963"}, - {file = "rpds_py-0.12.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:0a38612d07a36138507d69646c470aedbfe2b75b43a4643f7bd8e51e52779624"}, - {file = "rpds_py-0.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f12d69d568f5647ec503b64932874dade5a20255736c89936bf690951a5e79f5"}, - {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f8a1d990dc198a6c68ec3d9a637ba1ce489b38cbfb65440a27901afbc5df575"}, - {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8c567c664fc2f44130a20edac73e0a867f8e012bf7370276f15c6adc3586c37c"}, - {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0e9e976e0dbed4f51c56db10831c9623d0fd67aac02853fe5476262e5a22acb7"}, - {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:efddca2d02254a52078c35cadad34762adbae3ff01c6b0c7787b59d038b63e0d"}, - {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9e7f29c00577aff6b318681e730a519b235af292732a149337f6aaa4d1c5e31"}, - {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:389c0e38358fdc4e38e9995e7291269a3aead7acfcf8942010ee7bc5baee091c"}, - {file = "rpds_py-0.12.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33ab498f9ac30598b6406e2be1b45fd231195b83d948ebd4bd77f337cb6a2bff"}, - {file = "rpds_py-0.12.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d56b1cd606ba4cedd64bb43479d56580e147c6ef3f5d1c5e64203a1adab784a2"}, - {file = "rpds_py-0.12.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1fa73ed22c40a1bec98d7c93b5659cd35abcfa5a0a95ce876b91adbda170537c"}, - {file = "rpds_py-0.12.0-cp311-none-win32.whl", hash = "sha256:dbc25baa6abb205766fb8606f8263b02c3503a55957fcb4576a6bb0a59d37d10"}, - {file = "rpds_py-0.12.0-cp311-none-win_amd64.whl", hash = "sha256:c6b52b7028b547866c2413f614ee306c2d4eafdd444b1ff656bf3295bf1484aa"}, - {file = "rpds_py-0.12.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:9620650c364c01ed5b497dcae7c3d4b948daeae6e1883ae185fef1c927b6b534"}, - {file = "rpds_py-0.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2124f9e645a94ab7c853bc0a3644e0ca8ffbe5bb2d72db49aef8f9ec1c285733"}, - {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281c8b219d4f4b3581b918b816764098d04964915b2f272d1476654143801aa2"}, - {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:27ccc93c7457ef890b0dd31564d2a05e1aca330623c942b7e818e9e7c2669ee4"}, - {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1c562a9bb72244fa767d1c1ab55ca1d92dd5f7c4d77878fee5483a22ffac808"}, - {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e57919c32ee295a2fca458bb73e4b20b05c115627f96f95a10f9f5acbd61172d"}, - {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa35ad36440aaf1ac8332b4a4a433d4acd28f1613f0d480995f5cfd3580e90b7"}, - {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e6aea5c0eb5b0faf52c7b5c4a47c8bb64437173be97227c819ffa31801fa4e34"}, - {file = "rpds_py-0.12.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:81cf9d306c04df1b45971c13167dc3bad625808aa01281d55f3cf852dde0e206"}, - {file = "rpds_py-0.12.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:08e6e7ff286254016b945e1ab632ee843e43d45e40683b66dd12b73791366dd1"}, - {file = "rpds_py-0.12.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4d0a675a7acbbc16179188d8c6d0afb8628604fc1241faf41007255957335a0b"}, - {file = "rpds_py-0.12.0-cp312-none-win32.whl", hash = "sha256:b2287c09482949e0ca0c0eb68b2aca6cf57f8af8c6dfd29dcd3bc45f17b57978"}, - {file = "rpds_py-0.12.0-cp312-none-win_amd64.whl", hash = "sha256:8015835494b21aa7abd3b43fdea0614ee35ef6b03db7ecba9beb58eadf01c24f"}, - {file = "rpds_py-0.12.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:6174d6ad6b58a6bcf67afbbf1723420a53d06c4b89f4c50763d6fa0a6ac9afd2"}, - {file = "rpds_py-0.12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a689e1ded7137552bea36305a7a16ad2b40be511740b80748d3140614993db98"}, - {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f45321224144c25a62052035ce96cbcf264667bcb0d81823b1bbc22c4addd194"}, - {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aa32205358a76bf578854bf31698a86dc8b2cb591fd1d79a833283f4a403f04b"}, - {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91bd2b7cf0f4d252eec8b7046fa6a43cee17e8acdfc00eaa8b3dbf2f9a59d061"}, - {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3acadbab8b59f63b87b518e09c4c64b142e7286b9ca7a208107d6f9f4c393c5c"}, - {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:429349a510da82c85431f0f3e66212d83efe9fd2850f50f339341b6532c62fe4"}, - {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:05942656cb2cb4989cd50ced52df16be94d344eae5097e8583966a1d27da73a5"}, - {file = "rpds_py-0.12.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:0c5441b7626c29dbd54a3f6f3713ec8e956b009f419ffdaaa3c80eaf98ddb523"}, - {file = "rpds_py-0.12.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:b6b0e17d39d21698185097652c611f9cf30f7c56ccec189789920e3e7f1cee56"}, - {file = "rpds_py-0.12.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3b7a64d43e2a1fa2dd46b678e00cabd9a49ebb123b339ce799204c44a593ae1c"}, - {file = "rpds_py-0.12.0-cp38-none-win32.whl", hash = "sha256:e5bbe011a2cea9060fef1bb3d668a2fd8432b8888e6d92e74c9c794d3c101595"}, - {file = "rpds_py-0.12.0-cp38-none-win_amd64.whl", hash = "sha256:bec29b801b4adbf388314c0d050e851d53762ab424af22657021ce4b6eb41543"}, - {file = "rpds_py-0.12.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:1096ca0bf2d3426cbe79d4ccc91dc5aaa73629b08ea2d8467375fad8447ce11a"}, - {file = "rpds_py-0.12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48aa98987d54a46e13e6954880056c204700c65616af4395d1f0639eba11764b"}, - {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7979d90ee2190d000129598c2b0c82f13053dba432b94e45e68253b09bb1f0f6"}, - {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:88857060b690a57d2ea8569bca58758143c8faa4639fb17d745ce60ff84c867e"}, - {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4eb74d44776b0fb0782560ea84d986dffec8ddd94947f383eba2284b0f32e35e"}, - {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f62581d7e884dd01ee1707b7c21148f61f2febb7de092ae2f108743fcbef5985"}, - {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f5dcb658d597410bb7c967c1d24eaf9377b0d621358cbe9d2ff804e5dd12e81"}, - {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9bf9acce44e967a5103fcd820fc7580c7b0ab8583eec4e2051aec560f7b31a63"}, - {file = "rpds_py-0.12.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:240687b5be0f91fbde4936a329c9b7589d9259742766f74de575e1b2046575e4"}, - {file = "rpds_py-0.12.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:25740fb56e8bd37692ed380e15ec734be44d7c71974d8993f452b4527814601e"}, - {file = "rpds_py-0.12.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a54917b7e9cd3a67e429a630e237a90b096e0ba18897bfb99ee8bd1068a5fea0"}, - {file = "rpds_py-0.12.0-cp39-none-win32.whl", hash = "sha256:b92aafcfab3d41580d54aca35a8057341f1cfc7c9af9e8bdfc652f83a20ced31"}, - {file = "rpds_py-0.12.0-cp39-none-win_amd64.whl", hash = "sha256:cd316dbcc74c76266ba94eb021b0cc090b97cca122f50bd7a845f587ff4bf03f"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0853da3d5e9bc6a07b2486054a410b7b03f34046c123c6561b535bb48cc509e1"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:cb41ad20064e18a900dd427d7cf41cfaec83bcd1184001f3d91a1f76b3fcea4e"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b710bf7e7ae61957d5c4026b486be593ed3ec3dca3e5be15e0f6d8cf5d0a4990"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a952ae3eb460c6712388ac2ec706d24b0e651b9396d90c9a9e0a69eb27737fdc"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0bedd91ae1dd142a4dc15970ed2c729ff6c73f33a40fa84ed0cdbf55de87c777"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:761531076df51309075133a6bc1db02d98ec7f66e22b064b1d513bc909f29743"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2baa6be130e8a00b6cbb9f18a33611ec150b4537f8563bddadb54c1b74b8193"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f05450fa1cd7c525c0b9d1a7916e595d3041ac0afbed2ff6926e5afb6a781b7f"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:81c4d1a3a564775c44732b94135d06e33417e829ff25226c164664f4a1046213"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e888be685fa42d8b8a3d3911d5604d14db87538aa7d0b29b1a7ea80d354c732d"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6f8d7fe73d1816eeb5378409adc658f9525ecbfaf9e1ede1e2d67a338b0c7348"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0831d3ecdea22e4559cc1793f22e77067c9d8c451d55ae6a75bf1d116a8e7f42"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:513ccbf7420c30e283c25c82d5a8f439d625a838d3ba69e79a110c260c46813f"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:301bd744a1adaa2f6a5e06c98f1ac2b6f8dc31a5c23b838f862d65e32fca0d4b"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f8832a4f83d4782a8f5a7b831c47e8ffe164e43c2c148c8160ed9a6d630bc02a"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b2416ed743ec5debcf61e1242e012652a4348de14ecc7df3512da072b074440"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35585a8cb5917161f42c2104567bb83a1d96194095fc54a543113ed5df9fa436"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d389ff1e95b6e46ebedccf7fd1fadd10559add595ac6a7c2ea730268325f832c"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9b007c2444705a2dc4a525964fd4dd28c3320b19b3410da6517cab28716f27d3"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:188912b22b6c8225f4c4ffa020a2baa6ad8fabb3c141a12dbe6edbb34e7f1425"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:1b4cf9ab9a0ae0cb122685209806d3f1dcb63b9fccdf1424fb42a129dc8c2faa"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:2d34a5450a402b00d20aeb7632489ffa2556ca7b26f4a63c35f6fccae1977427"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:466030a42724780794dea71eb32db83cc51214d66ab3fb3156edd88b9c8f0d78"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:68172622a5a57deb079a2c78511c40f91193548e8ab342c31e8cb0764d362459"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54cdfcda59251b9c2f87a05d038c2ae02121219a04d4a1e6fc345794295bdc07"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6b75b912a0baa033350367a8a07a8b2d44fd5b90c890bfbd063a8a5f945f644b"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:47aeceb4363851d17f63069318ba5721ae695d9da55d599b4d6fb31508595278"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0525847f83f506aa1e28eb2057b696fe38217e12931c8b1b02198cfe6975e142"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efbe0b5e0fd078ed7b005faa0170da4f72666360f66f0bb2d7f73526ecfd99f9"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0fadfdda275c838cba5102c7f90a20f2abd7727bf8f4a2b654a5b617529c5c18"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:56dd500411d03c5e9927a1eb55621e906837a83b02350a9dc401247d0353717c"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:6915fc9fa6b3ec3569566832e1bb03bd801c12cea030200e68663b9a87974e76"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5f1519b080d8ce0a814f17ad9fb49fb3a1d4d7ce5891f5c85fc38631ca3a8dc4"}, - {file = "rpds_py-0.12.0.tar.gz", hash = "sha256:7036316cc26b93e401cedd781a579be606dad174829e6ad9e9c5a0da6e036f80"}, + {file = "rpds_py-0.15.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:337a8653fb11d2fbe7157c961cc78cb3c161d98cf44410ace9a3dc2db4fad882"}, + {file = "rpds_py-0.15.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:813a65f95bfcb7c8f2a70dd6add9b51e9accc3bdb3e03d0ff7a9e6a2d3e174bf"}, + {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:082e0e55d73690ffb4da4352d1b5bbe1b5c6034eb9dc8c91aa2a3ee15f70d3e2"}, + {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5595c80dd03d7e6c6afb73f3594bf3379a7d79fa57164b591d012d4b71d6ac4c"}, + {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fb10bb720348fe1647a94eb605accb9ef6a9b1875d8845f9e763d9d71a706387"}, + {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:53304cc14b1d94487d70086e1cb0cb4c29ec6da994d58ae84a4d7e78c6a6d04d"}, + {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d64a657de7aae8db2da60dc0c9e4638a0c3893b4d60101fd564a3362b2bfeb34"}, + {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ee40206d1d6e95eaa2b7b919195e3689a5cf6ded730632de7f187f35a1b6052c"}, + {file = "rpds_py-0.15.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1607cda6129f815493a3c184492acb5ae4aa6ed61d3a1b3663aa9824ed26f7ac"}, + {file = "rpds_py-0.15.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f3e6e2e502c4043c52a99316d89dc49f416acda5b0c6886e0dd8ea7bb35859e8"}, + {file = "rpds_py-0.15.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:044f6f46d62444800402851afa3c3ae50141f12013060c1a3a0677e013310d6d"}, + {file = "rpds_py-0.15.2-cp310-none-win32.whl", hash = "sha256:c827a931c6b57f50f1bb5de400dcfb00bad8117e3753e80b96adb72d9d811514"}, + {file = "rpds_py-0.15.2-cp310-none-win_amd64.whl", hash = "sha256:3bbc89ce2a219662ea142f0abcf8d43f04a41d5b1880be17a794c39f0d609cb0"}, + {file = "rpds_py-0.15.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:1fd0f0b1ccd7d537b858a56355a250108df692102e08aa2036e1a094fd78b2dc"}, + {file = "rpds_py-0.15.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b414ef79f1f06fb90b5165db8aef77512c1a5e3ed1b4807da8476b7e2c853283"}, + {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c31272c674f725dfe0f343d73b0abe8c878c646967ec1c6106122faae1efc15b"}, + {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a6945c2d61c42bb7e818677f43638675b8c1c43e858b67a96df3eb2426a86c9d"}, + {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02744236ac1895d7be837878e707a5c35fb8edc5137602f253b63623d7ad5c8c"}, + {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2181e86d4e1cdf49a7320cb72a36c45efcb7670d0a88f09fd2d3a7967c0540fd"}, + {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a8ff8e809da81363bffca2b965cb6e4bf6056b495fc3f078467d1f8266fe27f"}, + {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:97532802f14d383f37d603a56e226909f825a83ff298dc1b6697de00d2243999"}, + {file = "rpds_py-0.15.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:13716e53627ad97babf72ac9e01cf9a7d4af2f75dd5ed7b323a7a9520e948282"}, + {file = "rpds_py-0.15.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2f1f295a5c28cfa74a7d48c95acc1c8a7acd49d7d9072040d4b694fe11cd7166"}, + {file = "rpds_py-0.15.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8ec464f20fe803ae00419bd1610934e3bda963aeba1e6181dfc9033dc7e8940c"}, + {file = "rpds_py-0.15.2-cp311-none-win32.whl", hash = "sha256:b61d5096e75fd71018b25da50b82dd70ec39b5e15bb2134daf7eb7bbbc103644"}, + {file = "rpds_py-0.15.2-cp311-none-win_amd64.whl", hash = "sha256:9d41ebb471a6f064c0d1c873c4f7dded733d16ca5db7d551fb04ff3805d87802"}, + {file = "rpds_py-0.15.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:13ff62d3561a23c17341b4afc78e8fcfd799ab67c0b1ca32091d71383a98ba4b"}, + {file = "rpds_py-0.15.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b70b45a40ad0798b69748b34d508259ef2bdc84fb2aad4048bc7c9cafb68ddb3"}, + {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4ecbba7efd82bd2a4bb88aab7f984eb5470991c1347bdd1f35fb34ea28dba6e"}, + {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9d38494a8d21c246c535b41ecdb2d562c4b933cf3d68de03e8bc43a0d41be652"}, + {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:13152dfe7d7c27c40df8b99ac6aab12b978b546716e99f67e8a67a1d441acbc3"}, + {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:164fcee32f15d04d61568c9cb0d919e37ff3195919cd604039ff3053ada0461b"}, + {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a5122b17a4faf5d7a6d91fa67b479736c0cacc7afe791ddebb7163a8550b799"}, + {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:46b4f3d47d1033db569173be62365fbf7808c2bd3fb742314d251f130d90d44c"}, + {file = "rpds_py-0.15.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c61e42b4ceb9759727045765e87d51c1bb9f89987aca1fcc8a040232138cad1c"}, + {file = "rpds_py-0.15.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d2aa3ca9552f83b0b4fa6ca8c6ce08da6580f37e3e0ab7afac73a1cfdc230c0e"}, + {file = "rpds_py-0.15.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec19e823b4ccd87bd69e990879acbce9e961fc7aebe150156b8f4418d4b27b7f"}, + {file = "rpds_py-0.15.2-cp312-none-win32.whl", hash = "sha256:afeabb382c1256a7477b739820bce7fe782bb807d82927102cee73e79b41b38b"}, + {file = "rpds_py-0.15.2-cp312-none-win_amd64.whl", hash = "sha256:422b0901878a31ef167435c5ad46560362891816a76cc0d150683f3868a6f0d1"}, + {file = "rpds_py-0.15.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:baf744e5f9d5ee6531deea443be78b36ed1cd36c65a0b95ea4e8d69fa0102268"}, + {file = "rpds_py-0.15.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7e072f5da38d6428ba1fc1115d3cc0dae895df671cb04c70c019985e8c7606be"}, + {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f138f550b83554f5b344d6be35d3ed59348510edc3cb96f75309db6e9bfe8210"}, + {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b2a4cd924d0e2f4b1a68034abe4cadc73d69ad5f4cf02db6481c0d4d749f548f"}, + {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5eb05b654a41e0f81ab27a7c3e88b6590425eb3e934e1d533ecec5dc88a6ffff"}, + {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2ee066a64f0d2ba45391cac15b3a70dcb549e968a117bd0500634754cfe0e5fc"}, + {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c51a899792ee2c696072791e56b2020caff58b275abecbc9ae0cb71af0645c95"}, + {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac2ac84a4950d627d84b61f082eba61314373cfab4b3c264b62efab02ababe83"}, + {file = "rpds_py-0.15.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:62b292fff4739c6be89e6a0240c02bda5a9066a339d90ab191cf66e9fdbdc193"}, + {file = "rpds_py-0.15.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:98ee201a52a7f65608e5494518932e1473fd43535f12cade0a1b4ab32737fe28"}, + {file = "rpds_py-0.15.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3d40fb3ca22e3d40f494d577441b263026a3bd8c97ae6ce89b2d3c4b39ac9581"}, + {file = "rpds_py-0.15.2-cp38-none-win32.whl", hash = "sha256:30479a9f1fce47df56b07460b520f49fa2115ec2926d3b1303c85c81f8401ed1"}, + {file = "rpds_py-0.15.2-cp38-none-win_amd64.whl", hash = "sha256:2df3d07a16a3bef0917b28cd564778fbb31f3ffa5b5e33584470e2d1b0f248f0"}, + {file = "rpds_py-0.15.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:56b51ba29a18e5f5810224bcf00747ad931c0716e3c09a76b4a1edd3d4aba71f"}, + {file = "rpds_py-0.15.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3c11bc5814554b018f6c5d6ae0969e43766f81e995000b53a5d8c8057055e886"}, + {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2faa97212b0dc465afeedf49045cdd077f97be1188285e646a9f689cb5dfff9e"}, + {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:86c01299942b0f4b5b5f28c8701689181ad2eab852e65417172dbdd6c5b3ccc8"}, + {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd7d3608589072f63078b4063a6c536af832e76b0b3885f1bfe9e892abe6c207"}, + {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:938518a11780b39998179d07f31a4a468888123f9b00463842cd40f98191f4d3"}, + {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dccc623725d0b298f557d869a68496a2fd2a9e9c41107f234fa5f7a37d278ac"}, + {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d46ee458452727a147d7897bb33886981ae1235775e05decae5d5d07f537695a"}, + {file = "rpds_py-0.15.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d9d7ebcd11ea76ba0feaae98485cd8e31467c3d7985210fab46983278214736b"}, + {file = "rpds_py-0.15.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:8a5f574b92b3ee7d254e56d56e37ec0e1416acb1ae357c4956d76a1788dc58fb"}, + {file = "rpds_py-0.15.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3db0c998c92b909d7c90b66c965590d4f3cd86157176a6cf14aa1f867b77b889"}, + {file = "rpds_py-0.15.2-cp39-none-win32.whl", hash = "sha256:bbc7421cbd28b4316d1d017db338039a7943f945c6f2bb15e1439b14b5682d28"}, + {file = "rpds_py-0.15.2-cp39-none-win_amd64.whl", hash = "sha256:1c24e30d720c0009b6fb2e1905b025da56103c70a8b31b99138e4ed1c2a6c5b0"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e6fcd0a0f62f2997107f758bb372397b8d5fd5f39cc6dcb86f7cb98a2172d6c"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d800a8e2ac62db1b9ea5d6d1724f1a93c53907ca061de4d05ed94e8dfa79050c"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e09d017e3f4d9bd7d17a30d3f59e4d6d9ba2d2ced280eec2425e84112cf623f"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b88c3ab98556bc351b36d6208a6089de8c8db14a7f6e1f57f82a334bd2c18f0b"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f333bfe782a2d05a67cfaa0cc9cd68b36b39ee6acfe099f980541ed973a7093"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b629db53fe17e6ce478a969d30bd1d0e8b53238c46e3a9c9db39e8b65a9ef973"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:485fbdd23becb822804ed05622907ee5c8e8a5f43f6f43894a45f463b2217045"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:893e38d0f4319dfa70c0f36381a37cc418985c87b11d9784365b1fff4fa6973b"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:8ffdeb7dbd0160d4e391e1f857477e4762d00aa2199c294eb95dfb9451aa1d9f"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:fc33267d58dfbb2361baed52668c5d8c15d24bc0372cecbb79fed77339b55e0d"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:2e7e5633577b3bd56bf3af2ef6ae3778bbafb83743989d57f0e7edbf6c0980e4"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:8b9650f92251fdef843e74fc252cdfd6e3c700157ad686eeb0c6d7fdb2d11652"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:07a2e1d78d382f7181789713cdf0c16edbad4fe14fe1d115526cb6f0eef0daa3"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03f9c5875515820633bd7709a25c3e60c1ea9ad1c5d4030ce8a8c203309c36fd"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:580182fa5b269c2981e9ce9764367cb4edc81982ce289208d4607c203f44ffde"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa1e626c524d2c7972c0f3a8a575d654a3a9c008370dc2a97e46abd0eaa749b9"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ae9d83a81b09ce3a817e2cbb23aabc07f86a3abc664c613cd283ce7a03541e95"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9235be95662559141934fced8197de6fee8c58870f36756b0584424b6d708393"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a72e00826a2b032dda3eb25aa3e3579c6d6773d22d8446089a57a123481cc46c"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:ab095edf1d840a6a6a4307e1a5b907a299a94e7b90e75436ee770b8c35d22a25"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:3b79c63d29101cbaa53a517683557bb550462394fb91044cc5998dd2acff7340"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:911e600e798374c0d86235e7ef19109cf865d1336942d398ff313375a25a93ba"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3cd61e759c4075510052d1eca5cddbd297fe1164efec14ef1fce3f09b974dfe4"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:9d2ae79f31da5143e020a8d4fc74e1f0cbcb8011bdf97453c140aa616db51406"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e99d6510c8557510c220b865d966b105464740dcbebf9b79ecd4fbab30a13d9"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c43e1b89099279cc03eb1c725c5de12af6edcd2f78e2f8a022569efa639ada3"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7187bee72384b9cfedf09a29a3b2b6e8815cc64c095cdc8b5e6aec81e9fd5f"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3423007fc0661827e06f8a185a3792c73dda41f30f3421562f210cf0c9e49569"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2974e6dff38afafd5ccf8f41cb8fc94600b3f4fd9b0a98f6ece6e2219e3158d5"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:93c18a1696a8e0388ed84b024fe1a188a26ba999b61d1d9a371318cb89885a8c"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:c7cd0841a586b7105513a7c8c3d5c276f3adc762a072d81ef7fae80632afad1e"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:709dc11af2f74ba89c68b1592368c6edcbccdb0a06ba77eb28c8fe08bb6997da"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:fc066395e6332da1e7525d605b4c96055669f8336600bef8ac569d5226a7c76f"}, + {file = "rpds_py-0.15.2.tar.gz", hash = "sha256:373b76eeb79e8c14f6d82cb1d4d5293f9e4059baec6c1b16dca7ad13b6131b39"}, ] [[package]] name = "ruff" -version = "0.1.5" +version = "0.1.9" description = "An extremely fast Python linter and code formatter, written in Rust." -category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.1.5-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:32d47fc69261c21a4c48916f16ca272bf2f273eb635d91c65d5cd548bf1f3d96"}, - {file = "ruff-0.1.5-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:171276c1df6c07fa0597fb946139ced1c2978f4f0b8254f201281729981f3c17"}, - {file = "ruff-0.1.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17ef33cd0bb7316ca65649fc748acc1406dfa4da96a3d0cde6d52f2e866c7b39"}, - {file = "ruff-0.1.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b2c205827b3f8c13b4a432e9585750b93fd907986fe1aec62b2a02cf4401eee6"}, - {file = "ruff-0.1.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bb408e3a2ad8f6881d0f2e7ad70cddb3ed9f200eb3517a91a245bbe27101d379"}, - {file = "ruff-0.1.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f20dc5e5905ddb407060ca27267c7174f532375c08076d1a953cf7bb016f5a24"}, - {file = "ruff-0.1.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aafb9d2b671ed934998e881e2c0f5845a4295e84e719359c71c39a5363cccc91"}, - {file = "ruff-0.1.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4894dddb476597a0ba4473d72a23151b8b3b0b5f958f2cf4d3f1c572cdb7af7"}, - {file = "ruff-0.1.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a00a7ec893f665ed60008c70fe9eeb58d210e6b4d83ec6654a9904871f982a2a"}, - {file = "ruff-0.1.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a8c11206b47f283cbda399a654fd0178d7a389e631f19f51da15cbe631480c5b"}, - {file = "ruff-0.1.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:fa29e67b3284b9a79b1a85ee66e293a94ac6b7bb068b307a8a373c3d343aa8ec"}, - {file = "ruff-0.1.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9b97fd6da44d6cceb188147b68db69a5741fbc736465b5cea3928fdac0bc1aeb"}, - {file = "ruff-0.1.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:721f4b9d3b4161df8dc9f09aa8562e39d14e55a4dbaa451a8e55bdc9590e20f4"}, - {file = "ruff-0.1.5-py3-none-win32.whl", hash = "sha256:f80c73bba6bc69e4fdc73b3991db0b546ce641bdcd5b07210b8ad6f64c79f1ab"}, - {file = "ruff-0.1.5-py3-none-win_amd64.whl", hash = "sha256:c21fe20ee7d76206d290a76271c1af7a5096bc4c73ab9383ed2ad35f852a0087"}, - {file = "ruff-0.1.5-py3-none-win_arm64.whl", hash = "sha256:82bfcb9927e88c1ed50f49ac6c9728dab3ea451212693fe40d08d314663e412f"}, - {file = "ruff-0.1.5.tar.gz", hash = "sha256:5cbec0ef2ae1748fb194f420fb03fb2c25c3258c86129af7172ff8f198f125ab"}, -] - -[[package]] -name = "setuptools" -version = "68.2.2" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, - {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, + {file = "ruff-0.1.9-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:e6a212f436122ac73df851f0cf006e0c6612fe6f9c864ed17ebefce0eff6a5fd"}, + {file = "ruff-0.1.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:28d920e319783d5303333630dae46ecc80b7ba294aeffedf946a02ac0b7cc3db"}, + {file = "ruff-0.1.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:104aa9b5e12cb755d9dce698ab1b97726b83012487af415a4512fedd38b1459e"}, + {file = "ruff-0.1.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1e63bf5a4a91971082a4768a0aba9383c12392d0d6f1e2be2248c1f9054a20da"}, + {file = "ruff-0.1.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4d0738917c203246f3e275b37006faa3aa96c828b284ebfe3e99a8cb413c8c4b"}, + {file = "ruff-0.1.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:69dac82d63a50df2ab0906d97a01549f814b16bc806deeac4f064ff95c47ddf5"}, + {file = "ruff-0.1.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2aec598fb65084e41a9c5d4b95726173768a62055aafb07b4eff976bac72a592"}, + {file = "ruff-0.1.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:744dfe4b35470fa3820d5fe45758aace6269c578f7ddc43d447868cfe5078bcb"}, + {file = "ruff-0.1.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:479ca4250cab30f9218b2e563adc362bd6ae6343df7c7b5a7865300a5156d5a6"}, + {file = "ruff-0.1.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:aa8344310f1ae79af9ccd6e4b32749e93cddc078f9b5ccd0e45bd76a6d2e8bb6"}, + {file = "ruff-0.1.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:837c739729394df98f342319f5136f33c65286b28b6b70a87c28f59354ec939b"}, + {file = "ruff-0.1.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:e6837202c2859b9f22e43cb01992373c2dbfeae5c0c91ad691a4a2e725392464"}, + {file = "ruff-0.1.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:331aae2cd4a0554667ac683243b151c74bd60e78fb08c3c2a4ac05ee1e606a39"}, + {file = "ruff-0.1.9-py3-none-win32.whl", hash = "sha256:8151425a60878e66f23ad47da39265fc2fad42aed06fb0a01130e967a7a064f4"}, + {file = "ruff-0.1.9-py3-none-win_amd64.whl", hash = "sha256:c497d769164df522fdaf54c6eba93f397342fe4ca2123a2e014a5b8fc7df81c7"}, + {file = "ruff-0.1.9-py3-none-win_arm64.whl", hash = "sha256:0e17f53bcbb4fff8292dfd84cf72d767b5e146f009cccd40c2fad27641f8a7a9"}, + {file = "ruff-0.1.9.tar.gz", hash = "sha256:b041dee2734719ddbb4518f762c982f2e912e7f28b8ee4fe1dee0b15d1b6e800"}, ] -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] - -[[package]] -name = "setuptools-scm" -version = "8.0.4" -description = "the blessed package to manage your versions by scm tags" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-scm-8.0.4.tar.gz", hash = "sha256:b5f43ff6800669595193fd09891564ee9d1d7dcb196cab4b2506d53a2e1c95c7"}, - {file = "setuptools_scm-8.0.4-py3-none-any.whl", hash = "sha256:b47844cd2a84b83b3187a5782c71128c28b4c94cad8bfb871da2784a5cb54c4f"}, -] - -[package.dependencies] -packaging = ">=20" -setuptools = "*" -tomli = {version = ">=1", markers = "python_version < \"3.11\""} -typing-extensions = "*" - -[package.extras] -docs = ["entangled-cli[rich]", "mkdocs", "mkdocs-entangled-plugin", "mkdocs-material", "mkdocstrings[python]", "pygments"] -rich = ["rich"] -test = ["build", "pytest", "rich", "wheel"] - [[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -2782,7 +2678,6 @@ files = [ name = "soupsieve" version = "2.5" description = "A modern CSS selector implementation for Beautiful Soup." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2794,7 +2689,6 @@ files = [ name = "stack-data" version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" -category = "dev" optional = false python-versions = "*" files = [ @@ -2814,7 +2708,6 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] name = "tinycss2" version = "1.2.1" description = "A tiny CSS parser" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2833,7 +2726,6 @@ test = ["flake8", "isort", "pytest"] name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -2845,7 +2737,6 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2855,58 +2746,54 @@ files = [ [[package]] name = "tornado" -version = "6.3.3" +version = "6.4" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -category = "dev" optional = false python-versions = ">= 3.8" files = [ - {file = "tornado-6.3.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:502fba735c84450974fec147340016ad928d29f1e91f49be168c0a4c18181e1d"}, - {file = "tornado-6.3.3-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:805d507b1f588320c26f7f097108eb4023bbaa984d63176d1652e184ba24270a"}, - {file = "tornado-6.3.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bd19ca6c16882e4d37368e0152f99c099bad93e0950ce55e71daed74045908f"}, - {file = "tornado-6.3.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ac51f42808cca9b3613f51ffe2a965c8525cb1b00b7b2d56828b8045354f76a"}, - {file = "tornado-6.3.3-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71a8db65160a3c55d61839b7302a9a400074c9c753040455494e2af74e2501f2"}, - {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ceb917a50cd35882b57600709dd5421a418c29ddc852da8bcdab1f0db33406b0"}, - {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:7d01abc57ea0dbb51ddfed477dfe22719d376119844e33c661d873bf9c0e4a16"}, - {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:9dc4444c0defcd3929d5c1eb5706cbe1b116e762ff3e0deca8b715d14bf6ec17"}, - {file = "tornado-6.3.3-cp38-abi3-win32.whl", hash = "sha256:65ceca9500383fbdf33a98c0087cb975b2ef3bfb874cb35b8de8740cf7f41bd3"}, - {file = "tornado-6.3.3-cp38-abi3-win_amd64.whl", hash = "sha256:22d3c2fa10b5793da13c807e6fc38ff49a4f6e1e3868b0a6f4164768bb8e20f5"}, - {file = "tornado-6.3.3.tar.gz", hash = "sha256:e7d8db41c0181c80d76c982aacc442c0783a2c54d6400fe028954201a2e032fe"}, + {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"}, + {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"}, + {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"}, + {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"}, + {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, ] [[package]] name = "traitlets" -version = "5.13.0" +version = "5.14.0" description = "Traitlets Python configuration system" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "traitlets-5.13.0-py3-none-any.whl", hash = "sha256:baf991e61542da48fe8aef8b779a9ea0aa38d8a54166ee250d5af5ecf4486619"}, - {file = "traitlets-5.13.0.tar.gz", hash = "sha256:9b232b9430c8f57288c1024b34a8f0251ddcc47268927367a0dd3eeaca40deb5"}, + {file = "traitlets-5.14.0-py3-none-any.whl", hash = "sha256:f14949d23829023013c47df20b4a76ccd1a85effb786dc060f34de7948361b33"}, + {file = "traitlets-5.14.0.tar.gz", hash = "sha256:fcdaa8ac49c04dfa0ed3ee3384ef6dfdb5d6f3741502be247279407679296772"}, ] [package.extras] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.6.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"] [[package]] name = "typing-extensions" -version = "4.8.0" +version = "4.9.0" description = "Backported and Experimental Type Hints for Python 3.8+" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, - {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, + {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, + {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, ] [[package]] name = "tzdata" version = "2023.3" description = "Provider of IANA time zone data" -category = "main" optional = false python-versions = ">=2" files = [ @@ -2916,19 +2803,17 @@ files = [ [[package]] name = "urllib3" -version = "2.0.7" +version = "2.1.0" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, - {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, + {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, + {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -2936,7 +2821,6 @@ zstd = ["zstandard (>=0.18.0)"] name = "watchdog" version = "3.0.0" description = "Filesystem events monitoring" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2974,21 +2858,19 @@ watchmedo = ["PyYAML (>=3.10)"] [[package]] name = "wcwidth" -version = "0.2.9" +version = "0.2.12" description = "Measures the displayed width of unicode strings in a terminal" -category = "dev" optional = false python-versions = "*" files = [ - {file = "wcwidth-0.2.9-py2.py3-none-any.whl", hash = "sha256:9a929bd8380f6cd9571a968a9c8f4353ca58d7cd812a4822bba831f8d685b223"}, - {file = "wcwidth-0.2.9.tar.gz", hash = "sha256:a675d1a4a2d24ef67096a04b85b02deeecd8e226f57b5e3a72dbb9ed99d27da8"}, + {file = "wcwidth-0.2.12-py2.py3-none-any.whl", hash = "sha256:f26ec43d96c8cbfed76a5075dac87680124fa84e0855195a6184da9c187f133c"}, + {file = "wcwidth-0.2.12.tar.gz", hash = "sha256:f01c104efdf57971bcb756f054dd58ddec5204dd15fa31d6503ea57947d97c02"}, ] [[package]] name = "webencodings" version = "0.5.1" description = "Character encoding aliases for legacy web content" -category = "dev" optional = false python-versions = "*" files = [ @@ -3000,7 +2882,6 @@ files = [ name = "zipp" version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3015,4 +2896,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "5018fef8bef969cdeafedd61c0ae7dc33284f75b735a0c2b84b5fe27f4f0f373" +content-hash = "4bbdb87a46dfdd9c83f6e31f9ac2034dbd051c076190e40f90720fa3ab2171a2" diff --git a/pyproject.toml b/pyproject.toml index a2ec3b7..1feb280 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "pyCirclize" -version = "1.1.0" +version = "1.2.0" description = "Circular visualization in Python" authors = ["moshi4"] license = "MIT" @@ -26,25 +26,32 @@ minversion = "6.0" addopts = "--cov=src --tb=line --cov-report=xml --cov-report=term" testpaths = ["tests"] -# Lint Rules: https://beta.ruff.rs/docs/rules [tool.ruff] -select = ["E", "F", "W", "I", "D", "B"] -ignore = [ - "D100", - "D101", - "D104", - "D105", - "D205", - "D400", - "D401", - "D403", - "D415", - "B905", -] src = ["src", "tests"] line-length = 88 -[tool.ruff.pydocstyle] +# Lint Rules: https://docs.astral.sh/ruff/rules/ +[tool.ruff.lint] +select = [ + "F", # pyflakes + "E", # pycodestyle (Error) + "W", # pycodestyle (Warning) + "I", # isort + "D", # pydocstyle +] +ignore = [ + "D100", # Missing docstring in public module + "D101", # Missing docstring in public class + "D104", # Missing docstring in public package + "D105", # Missing docstring in magic method + "D205", # 1 blank line required between summary line and description + "D400", # First line should end with a period + "D401", # First line should be in imperative mood + "D403", # First word of the first line should be properly capitalized + "D415", # First line should end with a period, question mark, or exclamation point +] + +[tool.ruff.lint.pydocstyle] convention = "numpy" [tool.poetry.dependencies] @@ -55,15 +62,17 @@ numpy = ">=1.21.1" pandas = ">=1.3.5" [tool.poetry.group.dev.dependencies] +ruff = ">=0.1.6" pytest = ">=7.1.2" -black = ">=22.10.0" -ruff = ">=0.0.264" pytest-cov = ">=4.0.0" ipykernel = ">=6.13.0" + +[tool.poetry.group.docs.dependencies] mkdocs = ">=1.2" mkdocstrings = { extras = ["python"], version = ">=0.19.0" } mkdocs-jupyter = ">=0.21.0" mkdocs-material = ">=8.2" +black = ">=22.10.0" [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/src/pycirclize/__init__.py b/src/pycirclize/__init__.py index 5023ff1..eb8d383 100644 --- a/src/pycirclize/__init__.py +++ b/src/pycirclize/__init__.py @@ -1,6 +1,6 @@ from pycirclize.circos import Circos -__version__ = "1.1.0" +__version__ = "1.2.0" __all__ = [ "Circos", diff --git a/src/pycirclize/circos.py b/src/pycirclize/circos.py index 6f94e2a..6afd2d4 100644 --- a/src/pycirclize/circos.py +++ b/src/pycirclize/circos.py @@ -4,6 +4,7 @@ import math import textwrap from collections import defaultdict +from collections.abc import Mapping from copy import deepcopy from pathlib import Path from typing import Any, Callable @@ -21,7 +22,13 @@ from pycirclize import config, utils from pycirclize.parser import Bed, Matrix -from pycirclize.patches import ArcLine, ArcRectangle, BezierCurve, Line +from pycirclize.patches import ( + ArcLine, + ArcRectangle, + BezierCurveLine, + BezierCurveLink, + Line, +) from pycirclize.sector import Sector from pycirclize.track import Track from pycirclize.tree import TreeViz @@ -32,20 +39,20 @@ class Circos: def __init__( self, - sectors: dict[str, int] | dict[str, float], + sectors: Mapping[str, int | float], start: float = 0, end: float = 360, *, space: float | list[float] = 0, endspace: bool = True, - sector2start_pos: dict[str, int] | dict[str, float] | None = None, + sector2start_pos: Mapping[str, int | float] | None = None, sector2clockwise: dict[str, bool] | None = None, show_axis_for_debug: bool = False, ): """ Parameters ---------- - sectors : dict[str, int] | dict[str, float] + sectors : Mapping[str, int | float] Sector name & size dict start : float, optional Plot start degree (`-360 <= start < end <= 360`) @@ -55,7 +62,7 @@ def __init__( Space degree(s) between sector endspace : bool, optional If True, insert space after the end sector - sector2start_pos : dict[str, int] | dict[str, float] | None, optional + sector2start_pos : Mapping[str, int | float] | None, optional Sector name & start position dict. By default, `start_pos=0`. sector2clockwise : dict[str, bool] | None, optional Sector name & clockwise bool dict. By default, `clockwise=True`. @@ -693,7 +700,7 @@ def link( rad_start2, rad_end2 = rad_end2, rad_start2 # Create bezier curve path patch - bezier_curve = BezierCurve( + bezier_curve_link = BezierCurveLink( rad_start1, rad_end1, r1, @@ -705,7 +712,75 @@ def link( arrow_length_ratio, **kwargs, ) - self._patches.append(bezier_curve) + self._patches.append(bezier_curve_link) + + def link_line( + self, + sector_pos1: tuple[str, float], + sector_pos2: tuple[str, float], + r1: float | None = None, + r2: float | None = None, + *, + color: str = "black", + height_ratio: float = 0.5, + direction: int = 0, + arrow_height: float = 3.0, + arrow_width: float = 2.0, + **kwargs, + ) -> None: + """Plot link line to specified position within or between sectors + + Parameters + ---------- + sector_pos1 : tuple[str, float] + Link line sector position1 (name, position) + sector_pos2 : tuple[str, float] + Link line sector position2 (name, position) + r1 : float | None, optional + Link line radius end position for sector_pos1. + If None, lowest radius position of track in target sector is set. + r2 : float | None, optional + Link line radius end position for sector_pos2. + If None, lowest radius position of track in target sector is set. + color : str, optional + Link line color + height_ratio : float, optional + Bezier curve height ratio + direction : int, optional + `0`: No direction edge shape (Default) + `1`: Forward direction arrow edge shape (pos1 -> pos2) + `-1`: Reverse direction arrow edge shape (pos1 <- pos2) + `2`: Bidirectional arrow edge shape (pos1 <-> pos2) + arrow_height : float, optional + Arrow height size (Radius unit) + arrow_width : float, optional + Arrow width size (Degree unit) + **kwargs : dict, optional + Patch properties (e.g. `lw=1.0, ls="dashed", ...`) + + """ + # Set data for plot link + name1, pos1 = sector_pos1 + name2, pos2 = sector_pos2 + sector1, sector2 = self.get_sector(name1), self.get_sector(name2) + r1 = sector1.get_lowest_r() if r1 is None else r1 + r2 = sector2.get_lowest_r() if r2 is None else r2 + rad_pos1, rad_pos2 = sector1.x_to_rad(pos1), sector2.x_to_rad(pos2) + + kwargs.update(color=color) + + bezier_curve_line = BezierCurveLine( + rad_pos1, + r1, + rad_pos2, + r2, + height_ratio, + direction, + arrow_height, + arrow_width, + **kwargs, + ) + self._patches.append(bezier_curve_line) def colorbar( self, @@ -809,7 +884,7 @@ def plotfig( for plot_func in self._get_all_plot_funcs(): plot_func(ax) - return fig # type: ignore + return fig def savefig( self, @@ -887,7 +962,7 @@ def _initialize_figure( """ fig = plt.figure(figsize=figsize, dpi=dpi, tight_layout=True) ax = fig.add_subplot(projection="polar") - return fig, ax # type: ignore + return fig, ax def _initialize_polar_axes(self, ax: PolarAxes) -> None: """Initialize polar axes params diff --git a/src/pycirclize/parser/genbank.py b/src/pycirclize/parser/genbank.py index 7acad65..60a448f 100644 --- a/src/pycirclize/parser/genbank.py +++ b/src/pycirclize/parser/genbank.py @@ -10,7 +10,7 @@ import numpy as np from Bio import SeqIO, SeqUtils -from Bio.SeqFeature import FeatureLocation, Seq, SeqFeature +from Bio.SeqFeature import Seq, SeqFeature, SimpleLocation from Bio.SeqRecord import SeqRecord @@ -139,7 +139,7 @@ def calc_genome_gc_content(self) -> float: gc_content = SeqUtils.gc_fraction(self.genome_seq) * 100 except AttributeError: # For backward compatibility, biopython <= 1.79 - gc_content = SeqUtils.GC(self.genome_seq) + gc_content = SeqUtils.GC(self.genome_seq) # type: ignore return gc_content def calc_gc_skew( @@ -234,7 +234,7 @@ def calc_gc_content( gc_content = SeqUtils.gc_fraction(subseq) * 100 except AttributeError: # For backward compatibility, biopython <= 1.79 - gc_content = SeqUtils.GC(subseq) + gc_content = SeqUtils.GC(subseq) # type: ignore gc_content_list.append(gc_content) return (np.array(pos_list), np.array(gc_content_list)) @@ -247,7 +247,7 @@ def get_seqid2seq(self) -> dict[str, str]: seqid2seq : dict[str, int] seqid & genome sequence dict """ - return {rec.id: rec.seq for rec in self.records} + return {str(rec.id): rec.seq for rec in self.records} def get_seqid2size(self) -> dict[str, int]: """Get seqid & complete/contig/scaffold genome size dict @@ -288,11 +288,12 @@ def get_seqid2features( for rec in self.records: feat: SeqFeature for feat in rec.features: + strand = feat.location.strand if feature_type is not None and feat.type != feature_type: continue - if target_strand is not None and feat.strand != target_strand: + if target_strand is not None and strand != target_strand: continue - if feat.strand == -1: + if strand == -1: start = self._to_int(feat.location.parts[-1].start) end = self._to_int(feat.location.parts[0].end) else: @@ -308,7 +309,7 @@ def get_seqid2features( ): seqid2features[rec.id].append( SeqFeature( - location=FeatureLocation(start, end, feat.strand), + location=SimpleLocation(start, end, strand), type=feat.type, qualifiers=feat.qualifiers, ), @@ -362,7 +363,8 @@ def extract_features( translation = f.qualifiers.get("translation", [None])[0] if translation is None: continue - if f.strand == -1: + strand = f.location.strand + if strand == -1: # Handle rare case (complement & join) # Found in NC_00913 protein_id=NP_417367.1 start = self._to_int(f.location.parts[-1].start) + base_len @@ -388,7 +390,7 @@ def extract_features( # Ignore out of range features continue # Extract only target strand feature - if target_strand is not None and f.strand != target_strand: + if target_strand is not None and strand != target_strand: continue # Fix start & end position by min_range if fix_position: @@ -397,7 +399,7 @@ def extract_features( extract_features.append( SeqFeature( - location=FeatureLocation(start, end, f.strand), + location=SimpleLocation(start, end, strand), type=f.type, qualifiers=f.qualifiers, ), @@ -437,7 +439,7 @@ def write_cds_fasta( start = self._to_int(feature.location.start) end = self._to_int(feature.location.end) - strand = -1 if feature.strand == -1 else 1 + strand = -1 if feature.location.strand == -1 else 1 location_id = f"|{start}_{end}_{strand}|" if protein_id is None: @@ -448,7 +450,7 @@ def write_cds_fasta( if seqtype == "protein": seq = Seq(translation) elif seqtype == "nucleotide": - seq = Seq(feature.location.extract(self.genome_seq)) + seq = Seq(feature.location.extract(self.genome_seq)) # type: ignore else: raise ValueError(f"{seqtype=} is invalid.") diff --git a/src/pycirclize/parser/gff.py b/src/pycirclize/parser/gff.py index 17ce700..dc0bf65 100644 --- a/src/pycirclize/parser/gff.py +++ b/src/pycirclize/parser/gff.py @@ -9,7 +9,7 @@ from pathlib import Path from typing import Any, TextIO -from Bio.SeqFeature import CompoundLocation, FeatureLocation, SeqFeature +from Bio.SeqFeature import CompoundLocation, SeqFeature, SimpleLocation class Gff: @@ -392,15 +392,15 @@ def to_seq_feature(self) -> SeqFeature: qualifiers=self.attrs, ) - def to_feature_location(self) -> FeatureLocation: - """Convert GffRecord to FeatureLocation + def to_feature_location(self) -> SimpleLocation: + """Convert GffRecord to SimpleLocation Returns ------- - feature_location : FeatureLocation - Feature location + location : SimpleLocation + Location """ - return FeatureLocation(self.start, self.end, self.strand) + return SimpleLocation(self.start, self.end, self.strand) def to_gff_line(self) -> str: """Convert GffRecord to GFF record line diff --git a/src/pycirclize/patches.py b/src/pycirclize/patches.py index 93d6643..e0151ae 100644 --- a/src/pycirclize/patches.py +++ b/src/pycirclize/patches.py @@ -38,7 +38,7 @@ def __init__( # Set line path verts = list(zip(rad_lim, r_lim)) - super().__init__(Path(verts), **kwargs) + super().__init__(Path(verts), **kwargs) # type: ignore class ArcLine(PathPatch): @@ -84,7 +84,7 @@ def __init__( # Set line path verts = list(zip(arc_rads, arc_r_list)) - super().__init__(Path(verts), **kwargs) + super().__init__(Path(verts), **kwargs) # type: ignore class ArcRectangle(PathPatch): @@ -117,7 +117,7 @@ def __init__( bottom_arc_path = list(zip(arc_rads, [min_r] * len(arc_rads))) upper_arc_path = list(zip(arc_rads[::-1], [max_r] * len(arc_rads))) arc_rect_path = Path( - bottom_arc_path + upper_arc_path + [bottom_arc_path[0]], + bottom_arc_path + upper_arc_path + [bottom_arc_path[0]], # type: ignore closed=True, ) super().__init__(arc_rect_path, **kwargs) @@ -188,14 +188,14 @@ def __init__( bottom_shaft_arc_path = list(zip(shaft_arc_rads, bottom_shaft_r_list)) upper_shaft_arc_path = list(zip(shaft_arc_rads[::-1], upper_shaft_r_list)) arc_arrow_path = Path( - bottom_shaft_arc_path + [p2, p3, p4, p5, p6] + upper_shaft_arc_path + [p1], + bottom_shaft_arc_path + [p2, p3, p4, p5, p6] + upper_shaft_arc_path + [p1], # type: ignore closed=True, ) super().__init__(arc_arrow_path, **kwargs) -class BezierCurve(PathPatch): - """Bezier Curve PathPatch""" +class BezierCurveLink(PathPatch): + """Bezier Curve Link PathPatch""" def __init__( self, @@ -335,5 +335,101 @@ def bezier_paths( raise ValueError(err_msg) verts, codes = [p[1] for p in path_data], [p[0] for p in path_data] - bezier_curve_path = Path(verts, codes, closed=True) + bezier_curve_path = Path(verts, codes, closed=True) # type: ignore super().__init__(bezier_curve_path, **kwargs) + + +class BezierCurveLine(PathPatch): + """Bezier Curve Line PathPatch""" + + def __init__( + self, + rad1: float, + r1: float, + rad2: float, + r2: float, + height_ratio: float = 0.5, + direction: int = 0, + arrow_height: float = 3.0, + arrow_width: float = 1.0, + **kwargs, + ): + """ + Parameters + ---------- + rad1 : float + Radian position1 + r1 : float + Radius position1 + rad2 : float + Radian position2 + r2 : float + Radius position2 + height_ratio : float, optional + Bezier curve height ratio parameter + direction : int, optional + `0`: No edge shape (Default) + `1`: Directional(1 -> 2) arrow edge shape + `-1`: Directional(1 <- 2) arrow edge shape + `2`: Bidirectional arrow edge shape + arrow_height : float, optional + Arrow height size (Radius unit) + arrow_width : float, optional + Arrow width size (Degree unit) + **kwargs : dict, optional + Patch properties (e.g. `lw=1.0, hatch="//", ...`) + + """ + kwargs.update(fill=False) + kwargs.setdefault("lw", 0.5) + + def bezier_paths( + rad1: float, + rad2: float, + r1: float, + r2: float, + height_ratio: float = 0.5, + ) -> list[tuple[Path.code_type, tuple[float, float]]]: + if height_ratio >= 0.5: + # Example1: height_ratio: 0.50 => r_ctl_pos: 0 + # Example2: height_ratio: 0.75 => r_ctl_pos: 25 + # Example3: height_ratio: 1.00 => r_ctl_pos: 50 + r_ctl_pos = config.MAX_R * (height_ratio - 0.5) + rad_ctl_pos = (rad1 + rad2) / 2 + math.pi + else: + # Example1: height_ratio: 0.25 => r_ctl_pos: 25 + # Example2: height_ratio: 0.00 => r_ctl_pos: 50 + r_ctl_pos = config.MAX_R * (0.5 - height_ratio) + rad_ctl_pos = (rad1 + rad2) / 2 + return [ + (Path.LINETO, (rad1, r1)), + (Path.CURVE3, (rad_ctl_pos, r_ctl_pos)), + (Path.LINETO, (rad2, r2)), + ] + + def arrow_line_paths( + rad_pos: float, + r_pos: float, + arrow_rad_width: float, + arrow_r_height: float, + ) -> list[tuple[Path.code_type, tuple[float, float]]]: + arrow_r_pos = r_pos - arrow_r_height + return [ + (Path.MOVETO, (rad_pos + (arrow_rad_width / 2), arrow_r_pos)), + (Path.LINETO, (rad_pos, r_pos)), + (Path.LINETO, (rad_pos - (arrow_rad_width / 2), arrow_r_pos)), + ] + + arrow_rad_width = np.radians(arrow_width) + path_data: list[tuple[Path.code_type, tuple[float, float]]] = [] + if direction in (config.Direction.REVERSE, config.Direction.BIDIRECTIONAL): + path_data.extend(arrow_line_paths(rad1, r1, arrow_rad_width, arrow_height)) + path_data.append((Path.MOVETO, (rad1, r1))) + path_data.extend(bezier_paths(rad1, rad2, r1, r2, height_ratio)) + path_data.append((Path.LINETO, (rad2, r2))) + if direction in (config.Direction.FORWARD, config.Direction.BIDIRECTIONAL): + path_data.extend(arrow_line_paths(rad2, r2, arrow_rad_width, arrow_height)) + + verts, codes = [p[1] for p in path_data], [p[0] for p in path_data] + bezier_arrow_line_path = Path(verts, codes, closed=True) # type: ignore + super().__init__(bezier_arrow_line_path, **kwargs) diff --git a/src/pycirclize/track.py b/src/pycirclize/track.py index b974dc2..8ffa958 100644 --- a/src/pycirclize/track.py +++ b/src/pycirclize/track.py @@ -740,7 +740,7 @@ def scatter( r = [self._y_to_r(v, vmin, vmax) for v in y] def plot_scatter(ax: PolarAxes) -> None: - ax.scatter(rad, r, **kwargs) + ax.scatter(rad, r, **kwargs) # type:ignore self._plot_funcs.append(plot_scatter) @@ -803,7 +803,7 @@ def bar( def plot_bar(ax: PolarAxes) -> None: ax.bar( - rad, + rad, # type: ignore r_height, rad_width, r_bottom, @@ -1117,7 +1117,7 @@ def heatmap( x_range_list.append((min_range, max_range)) # Plot heatmap - colormap = cmap if isinstance(cmap, Colormap) else mpl.colormaps[cmap] + colormap = cmap if isinstance(cmap, Colormap) else mpl.colormaps[cmap] # type: ignore norm = Normalize(vmin=vmin, vmax=vmax) for row_idx, row in enumerate(data): for col_idx, v in enumerate(row): @@ -1261,7 +1261,7 @@ def genomic_features( except ValueError: print(f"Failed to parse feature's start-end position.\n{feature}") continue - if feature.strand == -1: + if feature.location.strand == -1: start, end = end, start if plotstyle == "box": self.rect(start, end, r_lim=r_lim, **kwargs) diff --git a/src/pycirclize/utils/helper.py b/src/pycirclize/utils/helper.py index f5834e0..bdb8e35 100644 --- a/src/pycirclize/utils/helper.py +++ b/src/pycirclize/utils/helper.py @@ -9,7 +9,7 @@ class ColorCycler: """Color Cycler Class""" counter = 0 - cmap: Colormap = mpl.colormaps["tab10"] + cmap: Colormap = mpl.colormaps["tab10"] # type: ignore def __new__(cls, n: int | None = None) -> str: """Get hexcolor cyclically from cmap by counter or user specified number @@ -36,7 +36,7 @@ def reset_cycle(cls) -> None: @classmethod def set_cmap(cls, name: str) -> None: """Set colormap (Default: `tab10`)""" - cls.cmap = mpl.colormaps[name] + cls.cmap = mpl.colormaps[name] # type: ignore cls.counter = 0 @classmethod @@ -56,7 +56,7 @@ def get_color(cls, n: int | None = None) -> str: if n is None: n = cls.counter cls.counter += 1 - return to_hex(cls.cmap(n % cls.cmap.N), keep_alpha=True) + return to_hex(cls.cmap(n % cls.cmap.N), keep_alpha=True) # type: ignore @classmethod def get_color_list(cls, n: int | None = None) -> list[str]: @@ -74,13 +74,13 @@ def get_color_list(cls, n: int | None = None) -> list[str]: Hexcolor list """ if n is None: - cmap_idx_list = list(range(0, cls.cmap.N)) + cmap_idx_list = list(range(0, cls.cmap.N)) # type: ignore elif n > 0: - cmap_idx_list = [int(i) for i in np.linspace(0, cls.cmap.N, n)] + cmap_idx_list = [int(i) for i in np.linspace(0, cls.cmap.N, n)] # type: ignore else: raise ValueError(f"{n=} is invalid number (Must be 'n > 0').") - return [to_hex(cls.cmap(i), keep_alpha=True) for i in cmap_idx_list] + return [to_hex(cls.cmap(i), keep_alpha=True) for i in cmap_idx_list] # type: ignore def calc_group_spaces( diff --git a/tests/test_plot.py b/tests/test_plot.py index 692b7b2..e496af4 100644 --- a/tests/test_plot.py +++ b/tests/test_plot.py @@ -97,6 +97,25 @@ def test_circos_link_plot(fig_outfile: Path): assert fig_outfile.exists() +def test_circos_link_line_plot(fig_outfile: Path): + """Test `circos.link_line()`""" + sectors = {"A": 10, "B": 20, "C": 15} + name2color = {"A": "red", "B": "blue", "C": "green"} + circos = Circos(sectors, space=5) + for sector in circos.sectors: + track = sector.add_track((95, 100)) + track.axis(fc=name2color[sector.name]) + + # Plot link lines in various style + circos.link_line(("A", 0), ("A", 5)) + circos.link_line(("A", 5), ("B", 5), direction=1, lw=2, ls="dotted") + circos.link_line(("B", 20), ("C", 0), r1=80, r2=90, direction=-1, color="blue") + circos.link_line(("C", 5), ("C", 15), direction=2, arrow_height=6, arrow_width=4) + + circos.savefig(fig_outfile) + assert fig_outfile.exists() + + def test_circos_colorbar_plot(fig_outfile: Path): """Test `circos.colorbar()`""" circos = Circos(sectors=dict(data=100), start=90)