diff --git a/README.md b/README.md
index 25c34ce..2bc3db3 100644
--- a/README.md
+++ b/README.md
@@ -8,17 +8,20 @@ A toolbox to compute the robustness of STL formulas using computation graphs. Th
Requires Python 3.10+
-Clone the repo.
+Install the repo:
- Make a venv and activate it
-
-`python3 -m venv stljax_venv`
-
-`source stljax_venv/bin/activate`
+```
+pip install git+https://github.com/UW-CTRL/stljax.git
+```
-Go into the `stljax` folder. Then to install:
+Alternatively, if you like to install the package in editable mode,
-`pip install -e .`
+```
+git clone https://github.com/UW-CTRL/stljax.git
+cd stljax
+pip install -e .
+```
+(Best to use a virtual environment.)
## Usage
@@ -26,7 +29,6 @@ Go into the `stljax` folder. Then to install:
* Setting up signals for the formulas, including the use of Expressions and Predicates
* Defining STL formulas and visualizing them
* Evaluating STL robustness, and robustness trace
-* Gradient descent on STL parameters and signal parameters.
## (New) Features
@@ -35,13 +37,13 @@ stljax leverages to benefits of jax and automatic differentiation!
Aside from using jax as the backend, stljax is more recent and tidier implementation of stlcg which was originally implemented in PyTorch back ~2019.
- Removed the `distributed_mean` hack from original stlcg implementation. jax keeps track of multiple max/min values and will distribute the gradients across all max/min values!
-- Incorporation of the smooth max/min presented in [Optimization with Temporal and Logical Specifications via Generalized Mean-based Smooth Robustness Measures](https://arxiv.org/abs/2405.10996) by Samet Uzun, Purnanand Elango, Pierre-Loic Garoche, Behcet Acikmese
- - Use `approx_method="gmsr"` and `temperature=(eps, p)`
+
## Tags
| Tags 🏷️ | Description |
| --------- | ----------- |
+| v.1.1.0 | General code improvements. Included recurrent implementation and example notebooks. |
| v.1.0.0 | Removed awkward expected signal dimension & leverage vmap for batched inputs. Masking for temporal operations & remove need to reverse signals. |
| v0.0.0 | A transfer from the 2019 PyTorch implementation to Jax + some tidying + adding Predicates + reversing signal automatically. |
@@ -107,11 +109,12 @@ We can use `jax.vmap` to handle multiple signals at once.
`jax.vmap(formula)(signals) # signals is shape [bs, time_dim,...]`
-
NOTE: Need to take care for formulas defined with Expressions and need multiple inputs. Need a wrapper since `jax.vmap` doesn't like tuples in a single argument.
+
+
## TODOs
-- re-implement stlcg (PyTorch) with the latest version of PyTorch.
+- manage reversing of signals internally for recurrent cases.
## Publications
diff --git a/demo.ipynb b/demo.ipynb
index aa2b98d..f265524 100644
--- a/demo.ipynb
+++ b/demo.ipynb
@@ -1,2080 +1,389 @@
{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {
- "colab_type": "text",
- "id": "view-in-github"
- },
- "source": [
- "
"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "Ym9wI1PDEH34"
- },
- "source": [
- "If running in colab, in a cell, run the following command:\n",
- "\n",
- "`!pip install --upgrade git+https://github.com/UW-CTRL/stljax.git`"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "bP3ZmMocCRef",
- "outputId": "e8ce448d-f09a-4ac2-fb0b-75a9e927aafe"
- },
- "outputs": [],
- "source": [
- "import jax\n",
- "import jax.numpy as jnp\n",
- "import numpy as np\n",
- "import matplotlib.pyplot as plt\n",
- "from stljax.formula import *\n",
- "from stljax.viz import *\n",
- "\n",
- "import functools"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "nSqJZK4OCReg"
- },
- "source": [
- "## NOTE\n",
- "If using Expressions to define formulas, `stljax` expects input signals to be of size `[time_dim]`.\n",
- "If using Predicates to define formulas, `stljax` expects input signals to be of size `[time_dim, state_dim]` where `state_dim` is the expected input size of your predicate function.\n",
- "\n",
- "Note: With the `mask` version, we do not need to worry about reversing the signal."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "id": "8zoZeNnFCReg"
- },
- "outputs": [],
- "source": [
- "# some helper functions\n",
- "\n",
- "@jax.jit\n",
- "def dynamics_discrete_step(state, control, dt=0.1):\n",
- " '''Single integrator 2d dynamics'''\n",
- " return state + control * dt\n",
- "\n",
- "@jax.jit\n",
- "def simulate_dynamics(controls, state0, dt):\n",
- " T = controls.shape[0]\n",
- " _states = [state0]\n",
- " for t in range(T):\n",
- " _states.append(dynamics_discrete_step(_states[-1], controls[t,:], dt))\n",
- " return jnp.concatenate(_states, 0)\n",
- "\n",
- "@jax.jit\n",
- "def compute_distance_to_origin(states):\n",
- " return jnp.linalg.norm(states[...,:2], axis=-1, keepdims=True)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 499
- },
- "id": "enRG3dDrCReh",
- "outputId": "af9bcb65-ca49-48bb-b268-9bb5dc04d8f6"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(np.float64(-2.8336225271224977),\n",
- " np.float64(0.658743929862976),\n",
- " np.float64(-2.5266865134239196),\n",
- " np.float64(0.6441279292106629))"
- ]
- },
- "execution_count": 3,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "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GGqIiIhIFBhqiIiISBQYajrohhtuQHR0NFQqFcLDw3HbbbehtLT0suuYTCb8+c9/RnBwMPz9/TF37lxUVFT0UsWdV1BQgCVLliAuLg6+vr4YMGAAVq1aBYvFctn1pkyZAolE0upr2bJlvVR113S1V097TwHg6aefxoQJE6BWq6HVaju0zqJFi9q8p+np6a4ttJu60qcgCHjiiScQHh4OX19fTJ8+HadOnXJtoT2gpqYGt956KzQaDbRaLZYsWYKGhobLruMJP6cbNmxAbGwsVCoVxo0bh3379l12/IcffoikpCSoVCoMGzYMX331VS9V2j2d6XPTpk1t3jeVStWL1XbNjz/+iOuvvx4RERGQSCT45JNPrrjO999/j9GjR0OpVCIhIQGbNm3q9Osy1HTQ1KlT8cEHHyA3Nxf/+9//cPr0afz+97+/7Dr3338/Pv/8c3z44Yf44YcfUFpaihtvvLGXKu68EydOwOFw4LXXXkN2djZeeOEFvPrqq1i5cuUV1126dCnKysqcX+vWreuFiruuq7162nsKABaLBfPmzcPdd9/dqfXS09NbvafvvvuuiyrsGV3pc926dXjppZfw6quvYu/evfDz80NaWhpMJpMLK+2+W2+9FdnZ2di2bRu++OIL/Pjjj7jzzjuvuF5f/jl9//33sXz5cqxatQoHDx7EiBEjkJaWhsrKynbH7969G7fccguWLFmCQ4cOYc6cOZgzZw6OHTvWy5V3Tmf7BJqvuHvh+1ZYWNiLFXdNY2MjRowYgQ0bNnRofH5+Pq677jpMnToVhw8fxn333Yc77rgD33zzTedeWKAu+fTTTwWJRCJYLJZ2n6+trRXkcrnw4YcfOpfl5OQIAITMzMzeKrPb1q1bJ8TFxV12zOTJk4V77723dwpyoSv16unv6caNG4XAwMAOjb399tuF2bNnu7QeV+lonw6HQ9Dr9cLf/vY357La2lpBqVQK7777rgsr7J7jx48LAIT9+/c7l3399deCRCIRSkpKLrleX/85HTt2rPDnP//Z+dhutwsRERHCs88+2+74m266SbjuuutaLRs3bpxw1113ubTO7upsn535ue2rAAhbtmy57JiHHnpIGDJkSKtlN998s5CWltap1+JMTRfU1NTgnXfewYQJEyCXy9sdk5WVBavViunTpzuXJSUlITo6GpmZmb1VarfV1dUhKCjo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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# In this example, using a control sequence to generate a state trajectory\n",
- "T = 25 # time horizon\n",
- "dt = 0.1\n",
- "np.random.seed(123)\n",
- "controls = jnp.array(np.random.randn(T,2)) # generate control sequence\n",
- "state0 = jnp.array(np.random.randn(1,2)) - 1.0 # initial state\n",
- "states = simulate_dynamics(controls, state0, dt) # simulate state trajectory\n",
- "\n",
- "# plotting the trajectory (should look noisy/random)\n",
- "fig, ax = plt.subplots()\n",
- "ax.plot(*states.T)\n",
- "ax.scatter(states[0,:1], states[0,1:], label=\"start\")\n",
- "ax.scatter(states[-1,:1], states[-1,1:], label=\"end\")\n",
- "circle1 = plt.Circle((0, 0), 0.5, color='C2', alpha=0.4)\n",
- "ax.add_patch(circle1)\n",
- "\n",
- "plt.xlim([-5,1])\n",
- "plt.ylim([-4,1])\n",
- "plt.legend()\n",
- "plt.grid()\n",
- "plt.axis(\"equal\")\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "oYow-oBfCReh"
- },
- "source": [
- "## Using Expressions"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "pgkKR6e4CReh",
- "outputId": "8d27aa1b-022e-4689-d001-3b0af39b8ae5"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Robustness trace: [-2.2557175 -2.2557175 -2.2557175 -2.2557175 -2.2557175 -2.2557175\n",
- " -2.2557175 -2.2557175 -2.2557175 -2.2557175 -2.2557175 -2.2557175\n",
- " -2.256407 -2.3951554 -2.4112952 -2.477519 -2.5186005 -2.5186005\n",
- " -2.5186005 -2.5186005 -2.5186005 -2.5186005 -2.5186005 -2.5186005\n",
- " -2.5186005 -2.5186005]\n",
- "Robustness value: -2.2557175\n"
- ]
- }
- ],
- "source": [
- "# first define Expression (with None value)\n",
- "# NOTE: Expressions are used for setting up predicates.\n",
- "# The values associated with an Expression is more for convenience.\n",
- "# You can use a jnp.array directly when evaluating a formula, rather than using an Expression with values populated.\n",
- "distance_to_origin_exp = Expression(\"magnitude\", value=None)\n",
- "\n",
- "# formula Eventually distance to origin is less than 0.5\n",
- "formula_exp = Eventually(distance_to_origin_exp < 0.5)\n",
- "\n",
- "\n",
- "# this will throw error since the Expression value is None.\n",
- "# (commented out for convenience in running the notebook)\n",
- "# formula(distance_to_origin_exp)\n",
- "\n",
- "# setting value for\n",
- "states_norm = compute_distance_to_origin(states) # compute distance to origin, size [1, 26, 1]\n",
- "\n",
- "distance_to_origin_exp.set_value(states_norm) # set value for Expression\n",
- "\n",
- "\n",
- "# compute robustness trace and value\n",
- "# inputs are Expression objects\n",
- "# since reverse=False, stljax will automatically time reverse the input signal, and warn user about it.\n",
- "\n",
- "# robustness trace\n",
- "print(\"Robustness trace: \", formula_exp(distance_to_origin_exp).squeeze())\n",
- "\n",
- "# robustness value\n",
- "print(\"Robustness value: \", formula_exp.robustness(distance_to_origin_exp).squeeze())\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "id": "S3xuqsYvCRei"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "5.36 μs ± 186 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n",
- "8.62 μs ± 274 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n"
- ]
- }
- ],
- "source": [
- "# we can jit the robustness function and its gradient.\n",
- "f = jax.jit(formula_exp.robustness)\n",
- "g = jax.jit(jax.grad(f))\n",
- "\n",
- "# measure the time it takes to compute a forward and backward pass\n",
- "# very fast!\n",
- "%timeit f(distance_to_origin_exp.value)\n",
- "%timeit g(distance_to_origin_exp.value)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(Array([0.4814521 , 0.49946868, 0.45444584, 0.44981503], dtype=float32),\n",
- " Array([[-0., -0., -0., -0., -0., -0., -0., -0., -0., -1., -0., -0., -0.,\n",
- " -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0.],\n",
- " [-0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0.,\n",
- " -0., -0., -0., -0., -0., -0., -0., -0., -1., -0., -0., -0.],\n",
- " [-0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0.,\n",
- " -0., -0., -0., -0., -0., -0., -0., -0., -1., -0., -0., -0.],\n",
- " [-0., -0., -0., -0., -0., -0., -0., -1., -0., -0., -0., -0., -0.,\n",
- " -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0., -0.]], dtype=float32))"
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# we can batch the computation\n",
- "bs = 4\n",
- "key = jax.random.PRNGKey(123) # Random seed is explicit in JAX\n",
- "signals = jax.random.uniform(key, shape=(bs, T)) \n",
- "\n",
- "jax.vmap(f)(signals), jax.vmap(g)(signals)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Array([[-0.02582416, -0.0514056 , -0.01276034, -0.04622918, -0.03386938,\n",
- " -0.06998569, -0.05163663, -0.06342276, -0.03815436, -0.07147011,\n",
- " -0.01940775, -0.05362437, -0.04669334, -0.03519493, -0.0166717 ,\n",
- " -0.02356261, -0.02027061, -0.00810847, -0.04404066, -0.06902726,\n",
- " -0.04640958, -0.04664499, -0.03303727, -0.03973469, -0.03281348],\n",
- " [-0.06602133, -0.0323073 , -0.01701606, -0.02895677, -0.01675591,\n",
- " -0.03107198, -0.02742128, -0.04578061, -0.01740972, -0.07078583,\n",
- " -0.04380497, -0.06857068, -0.01038632, -0.00757802, -0.04489319,\n",
- " -0.0553256 , -0.04845608, -0.0576579 , -0.01687001, -0.04463371,\n",
- " -0.02515552, -0.07106859, -0.06927916, -0.00785302, -0.07494054],\n",
- " [-0.0698043 , -0.01172489, -0.03137346, -0.07852152, -0.03564867,\n",
- " -0.06827941, -0.01655721, -0.03844461, -0.01342334, -0.03133292,\n",
- " -0.0134404 , -0.02768762, -0.03235616, -0.03376853, -0.02919685,\n",
- " -0.06583954, -0.05004779, -0.02036106, -0.01206894, -0.01921945,\n",
- " -0.07753026, -0.0851762 , -0.05762396, -0.03871985, -0.04185297],\n",
- " [-0.03141921, -0.02370912, -0.01929593, -0.04155137, -0.01883044,\n",
- " -0.05980545, -0.03337944, -0.09266003, -0.03492882, -0.03324058,\n",
- " -0.05988078, -0.06018983, -0.02499974, -0.01668277, -0.02550981,\n",
- " -0.0155309 , -0.07851798, -0.01412536, -0.06788316, -0.04530248,\n",
- " -0.02928593, -0.02955182, -0.01892633, -0.03209555, -0.09269717]], dtype=float32)"
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# We can apply different max/min approximations\n",
- "bs = 4\n",
- "key = jax.random.PRNGKey(123) # Random seed is explicit in JAX\n",
- "signals = jax.random.uniform(key, shape=(bs, T)) # shape [bs, T]\n",
- "\n",
- "# Default: approx_method=\"true\" -- taking gradient using the true min/max function\n",
- "jax.vmap(jax.grad(formula_exp.robustness))(signals)\n",
- "\n",
- "# taking gradient using a min/max approximation method (specify method and temperature), and the gradients should be \"spread\" to other indices as well\n",
- "\n",
- "# logsumexp approximation\n",
- "foo = functools.partial(formula_exp.robustness, approx_method=\"logsumexp\", temperature=1.) \n",
- "jax.vmap(jax.grad(foo))(signals)\n",
- "\n",
- "# # softmax approximation\n",
- "foo = functools.partial(formula_exp.robustness, approx_method=\"softmax\", temperature=1.) \n",
- "jax.vmap(jax.grad(foo))(signals)\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "bUfGQOrGCRei"
- },
- "source": [
- "## Using Predicates\n",
- "\n",
- "Alternatively, we can define the predicate function of an STL formula where predicate function is μ: Rⁿ → R and the input is an n-dimensional signal."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "zdhRJXV1CRei",
- "outputId": "82fdef6f-4f62-4f20-d447-65ba69843e25"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Robustness trace: [-2.2557175 -2.2557175 -2.2557175 -2.2557175 -2.2557175 -2.2557175\n",
- " -2.2557175 -2.2557175 -2.2557175 -2.2557175 -2.2557175 -2.2557175\n",
- " -2.256407 -2.3951554 -2.4112952 -2.477519 -2.5186005 -2.5186005\n",
- " -2.5186005 -2.5186005 -2.5186005 -2.5186005 -2.5186005 -2.5186005\n",
- " -2.5186005 -2.5186005]\n",
- "Robustness value: -2.2557175\n"
- ]
- }
- ],
- "source": [
- "distance_to_origin_pred = Predicate(\"magnitude\", predicate_function=compute_distance_to_origin)\n",
- "formula_pred = Eventually(distance_to_origin_pred < 0.5)\n",
- "\n",
- "formula_pred(states).squeeze()\n",
- "\n",
- "# compute robustness trace and value\n",
- "# inputs are jnp.arrays\n",
- "# robustness trace\n",
- "print(\"Robustness trace: \", formula_pred(states).squeeze() )\n",
- "\n",
- "# robustness value\n",
- "print(\"Robustness value: \", formula_pred.robustness(states).squeeze())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {
- "id": "CHpFtaVnCRei"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "6.39 μs ± 163 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n",
- "9.53 μs ± 44.8 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)\n"
- ]
- }
- ],
- "source": [
- "# we can jit the robustness function and its gradient.\n",
- "f = jax.jit(formula_pred.robustness)\n",
- "g = jax.jit(jax.grad(f))\n",
- "\n",
- "# measure the time it takes to compute a forward and backward pass\n",
- "# very fast!\n",
- "%timeit f(states)\n",
- "%timeit g(states)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "M170nntGCRei",
- "outputId": "6e2a4aea-6f7f-47f8-c319-d05cadb5a2cb"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(Array([0.4808055 , 0.16095048, 0.35008496, 0.2274302 ], dtype=float32),\n",
- " Array([[[-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0.5642942 , -0.82557374],\n",
- " [-0. , -0. ]],\n",
- " \n",
- " [[-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0.46162838, -0.8870734 ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ]],\n",
- " \n",
- " [[-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0.9965015 , -0.08357489],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ]],\n",
- " \n",
- " [[-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0. , -0. ],\n",
- " [-0.5923696 , -0.8056663 ],\n",
- " [-0. , -0. ]]], dtype=float32))"
- ]
- },
- "execution_count": 10,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# we can batch the computation\n",
- "bs = 4\n",
- "key = jax.random.PRNGKey(123) # Random seed is explicit in JAX\n",
- "signals = jax.random.uniform(key, shape=(bs, T, 2)) \n",
- "\n",
- "jax.vmap(f)(signals), jax.vmap(g)(signals)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Array([[[-0.02352086, -0.02653968],\n",
- " [-0.01435679, -0.00693523],\n",
- " [-0.03308038, -0.01781628],\n",
- " [-0.01722912, -0.02483274],\n",
- " [-0.04262575, -0.06899171],\n",
- " [-0.0105945 , -0.01726518],\n",
- " [-0.02208826, -0.01126937],\n",
- " [-0.02735491, -0.02297586],\n",
- " [-0.01796402, -0.00646728],\n",
- " [-0.02368197, -0.00658443],\n",
- " [-0.01846283, -0.01260185],\n",
- " [-0.05555077, -0.02745588],\n",
- " [-0.00655061, -0.0230543 ],\n",
- " [-0.07459132, -0.04124878],\n",
- " [-0.01915025, -0.02961909],\n",
- " [-0.01502226, -0.00939996],\n",
- " [-0.01998683, -0.01625802],\n",
- " [-0.00708358, -0.00567479],\n",
- " [-0.01812643, -0.01658712],\n",
- " [-0.01440577, -0.00744342],\n",
- " [-0.05441307, -0.07690613],\n",
- " [-0.00256752, -0.01885604],\n",
- " [-0.08005733, -0.02827522],\n",
- " [-0.07011323, -0.10257705],\n",
- " [-0.02251863, -0.02088918]],\n",
- "\n",
- " [[-0.0288817 , -0.04554031],\n",
- " [-0.02986922, -0.03051575],\n",
- " [-0.06544525, -0.0120479 ],\n",
- " [-0.05150944, -0.03064507],\n",
- " [-0.01373286, -0.01273497],\n",
- " [-0.01047864, -0.02845001],\n",
- " [-0.0125201 , -0.03490231],\n",
- " [-0.02127206, -0.01206193],\n",
- " [-0.00927833, -0.02261019],\n",
- " [-0.02714585, -0.05306787],\n",
- " [-0.01446127, -0.00606696],\n",
- " [-0.00537809, -0.02302884],\n",
- " [-0.0235438 , -0.00923518],\n",
- " [-0.0158476 , -0.00633811],\n",
- " [-0.03734772, -0.01784552],\n",
- " [-0.04300226, -0.04666027],\n",
- " [-0.03669007, -0.02190299],\n",
- " [-0.05762413, -0.00766001],\n",
- " [-0.02510785, -0.01035139],\n",
- " [-0.01190622, -0.00796054],\n",
- " [-0.00665629, -0.01547243],\n",
- " [-0.01100077, -0.01839606],\n",
- " [-0.03262926, -0.06270097],\n",
- " [-0.01855177, -0.05273074],\n",
- " [-0.07838853, -0.04113434]],\n",
- "\n",
- " [[-0.01167339, -0.02134102],\n",
- " [-0.05936034, -0.03223828],\n",
- " [-0.01480538, -0.02571858],\n",
- " [-0.00940478, -0.02955442],\n",
- " [-0.02773137, -0.00883445],\n",
- " [-0.00646909, -0.05561024],\n",
- " [-0.04886941, -0.02358606],\n",
- " [-0.02293241, -0.01577896],\n",
- " [-0.01866045, -0.02070966],\n",
- " [-0.01848573, -0.02131906],\n",
- " [-0.01669237, -0.01865314],\n",
- " [-0.03718995, -0.01123359],\n",
- " [-0.01240873, -0.00944648],\n",
- " [-0.0190175 , -0.03663538],\n",
- " [-0.02860874, -0.00258437],\n",
- " [-0.01791863, -0.00819362],\n",
- " [-0.01327199, -0.01249256],\n",
- " [-0.05429133, -0.08259395],\n",
- " [-0.0474679 , -0.00997441],\n",
- " [-0.00964289, -0.01495654],\n",
- " [-0.01428238, -0.0178033 ],\n",
- " [-0.10850457, -0.00910009],\n",
- " [-0.02777518, -0.05727986],\n",
- " [-0.01082244, -0.01753074],\n",
- " [-0.04805903, -0.02802218]],\n",
- "\n",
- " [[-0.01940999, -0.03582613],\n",
- " [-0.02017951, -0.01958448],\n",
- " [-0.04156577, -0.02017255],\n",
- " [-0.02964688, -0.00185195],\n",
- " [-0.00766283, -0.07021606],\n",
- " [-0.00951366, -0.01608 ],\n",
- " [-0.00285715, -0.02878935],\n",
- " [-0.02630167, -0.0143526 ],\n",
- " [-0.01493212, -0.01433359],\n",
- " [-0.00281592, -0.02805223],\n",
- " [-0.01263587, -0.02154564],\n",
- " [-0.00839119, -0.01035679],\n",
- " [-0.00894236, -0.01246331],\n",
- " [-0.00970442, -0.02231573],\n",
- " [-0.03043569, -0.04590179],\n",
- " [-0.0218413 , -0.0091681 ],\n",
- " [-0.0386564 , -0.08243714],\n",
- " [-0.0380757 , -0.00910007],\n",
- " [-0.02410734, -0.04115387],\n",
- " [-0.00632994, -0.06267686],\n",
- " [-0.02284043, -0.02331491],\n",
- " [-0.0064186 , -0.03530146],\n",
- " [-0.02465762, -0.02741359],\n",
- " [-0.06220399, -0.08460201],\n",
- " [-0.04395318, -0.02402879]]], dtype=float32)"
- ]
- },
- "execution_count": 11,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# We can apply different max/min approximations\n",
- "bs = 4\n",
- "key = jax.random.PRNGKey(123) # Random seed is explicit in JAX\n",
- "signals = jax.random.uniform(key, shape=(bs, T, 2)) # shape [bs, T, state_dim]\n",
- "\n",
- "# Default: approx_method=\"true\" -- taking gradient using the true min/max function\n",
- "jax.vmap(jax.grad(formula_pred.robustness))(signals)\n",
- "\n",
- "# taking gradient using a min/max approximation method (specify method and temperature), and the gradients should be \"spread\" to other indices as well\n",
- "\n",
- "# logsumexp approximation\n",
- "foo = functools.partial(formula_pred.robustness, approx_method=\"logsumexp\", temperature=1.) \n",
- "jax.vmap(jax.grad(foo))(signals)\n",
- "\n",
- "# # softmax approximation\n",
- "foo = functools.partial(formula_pred.robustness, approx_method=\"softmax\", temperature=1.) \n",
- "jax.vmap(jax.grad(foo))(signals)\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "pMmyk6x2CRej"
- },
- "source": [
- "## Gradient descent to optimize control inputs\n",
- "\n",
- "Now, we can perform gradient descent on the control inputs to make progress towards the formula being true."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "pLreo31uCRej"
- },
- "source": [
- "### Using `Expression`"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "metadata": {
- "id": "CGRcCX-kCRej"
- },
- "outputs": [],
- "source": [
- "# set random initial state and control\n",
- "np.random.seed(123)\n",
- "T = 51 # time horizon\n",
- "dt = 0.1 # time step size\n",
- "ts = jnp.array([t * dt for t in range(T)])\n",
- "umax = 1.0 # max control limit\n",
- "\n",
- "controls = jnp.array(np.random.randn(1,T,2))\n",
- "state0 = jnp.ones(2).reshape([1,2]) * 3.\n",
- "obstacle_center = jnp.ones([1,2]) * 2.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 340
- },
- "id": "kSKcXrjWCRej",
- "outputId": "99541049-5385-4a64-e9f3-3e71bf7e2007"
- },
- "outputs": [
- {
- "data": {
- "image/svg+xml": [
- "\n",
- "\n",
- "\n",
- "\n",
- "\n"
- ],
- "text/plain": [
- ""
- ]
- },
- "execution_count": 13,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# defining formula\n",
- "distance_to_origin = Expression(\"magnitude\", None)\n",
- "distance_to_obstacle = Expression(\"distance_to_obs\", None)\n",
- "reach = Eventually(distance_to_origin < 0.5)\n",
- "avoid = Always(distance_to_obstacle > 0.5)\n",
- "formula = reach & avoid\n",
- "\n",
- "make_stl_graph(formula)\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "h9D-hcY8CRej",
- "outputId": "de267035-5188-41a2-de4a-fc5e29e78c00"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(Array(6.845453, dtype=float32), Array(6.995544, dtype=float32))"
- ]
- },
- "execution_count": 14,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "@functools.partial(jax.jit, static_argnames=(\"approx_method\"))\n",
- "def loss(controls, state0, umax, dt, coeffs=[1., 0.1, 5.], approx_method=\"true\", temperature=None):\n",
- " # generate trajectory from control sequence \n",
- " traj = simulate_dynamics(controls, state0, dt)\n",
- " # compute distance_to_origin and distance_to_obstacle\n",
- " distance_to_origin_signal = jnp.linalg.norm(traj, axis=-1)\n",
- " distance_to_obstacle_signal = jnp.linalg.norm(traj - obstacle_center, axis=-1)\n",
- " # loss functions\n",
- " input_signal = (distance_to_origin_signal, distance_to_obstacle_signal)\n",
- " loss_robustness = jax.nn.relu(-formula.robustness(input_signal, approx_method=approx_method, temperature=temperature))\n",
- " loss_control_smoothness = (jnp.diff(controls, axis=1)**2).sum(-1).mean() # make controls smoother\n",
- " loss_control_limits = jax.nn.relu(jnp.linalg.norm(controls, axis=-1) - umax).mean() # penalize control limit violation\n",
- " return coeffs[0] * loss_robustness + coeffs[1] * loss_control_smoothness + coeffs[2] * loss_control_limits\n",
- "\n",
- "# @jax.jit\n",
- "def true_robustness(controls, state0, dt):\n",
- " # generate trajectory from control sequence and reverse along time dimension\n",
- " # user has to manually reverse it since we are inputing jnp.array to compute robustness, instead of an Expression\n",
- " traj = simulate_dynamics(controls, state0, dt)\n",
- " # compute distance_to_origin and distance_to_obstacle\n",
- " distance_to_origin_signal = jnp.linalg.norm(traj, axis=-1)\n",
- " distance_to_obstacle_signal = jnp.linalg.norm(traj - obstacle_center, axis=-1)\n",
- " # loss functions\n",
- " input_signal = (distance_to_origin_signal, distance_to_obstacle_signal)\n",
- " return formula.robustness(input_signal)\n",
- "\n",
- "def temperature_schedule(i, i_max, start_temp, end_temp, scale=5):\n",
- " i_ = i\n",
- " center = i_max / 2\n",
- " return jax.nn.sigmoid((i_ - center) / scale) * (end_temp - start_temp) + start_temp\n",
- "\n",
- "# compare true value with max/min approximation\n",
- "loss(controls, state0, umax, dt), loss(controls, state0, umax, dt, approx_method=\"softmax\", temperature=5)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 15,
- "metadata": {
- "id": "clBy6pVHCRej"
- },
- "outputs": [],
- "source": [
- "controls = jnp.array(np.random.randn(T,2))\n",
- "\n",
- "states_ = [simulate_dynamics(controls, state0, dt)]\n",
- "lr = 0.5 # learning rate\n",
- "approx_method = \"true\"\n",
- "n_steps = 1000 # number of gradient steps\n",
- "n_steps_extra = 10\n",
- "coeffs = [1., 0.1, 5.]\n",
- "\n",
- "# jit the gradient function to speed things up (by A LOT).\n",
- "grad_jit = jax.jit(jax.grad(loss, 0), static_argnames=\"approx_method\")\n",
- "# temperature schedule parameters\n",
- "start_temp = 50\n",
- "end_temp = 500\n",
- "scale = 5\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 16,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "knWf1b-6CRej",
- "outputId": "ceff89d5-88ce-4951-c202-dcf375e2f00b"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " 0 -- true robustness: -3.68 smoothness: 1.81 control limits: 0.34\n",
- " 50 -- true robustness: -0.04 smoothness: 0.36 control limits: 0.03\n",
- "100 -- true robustness: 0.07 smoothness: 0.26 control limits: 0.00\n",
- "150 -- true robustness: 0.05 smoothness: 0.20 control limits: 0.00\n",
- "200 -- true robustness: 0.07 smoothness: 0.16 control limits: 0.00\n",
- "250 -- true robustness: 0.06 smoothness: 0.13 control limits: 0.00\n",
- "300 -- true robustness: 0.04 smoothness: 0.11 control limits: 0.00\n",
- "350 -- true robustness: 0.04 smoothness: 0.09 control limits: 0.00\n",
- "400 -- true robustness: 0.04 smoothness: 0.08 control limits: 0.00\n",
- "450 -- true robustness: 0.03 smoothness: 0.07 control limits: 0.00\n",
- "500 -- true robustness: 0.03 smoothness: 0.07 control limits: 0.00\n",
- "550 -- true robustness: 0.03 smoothness: 0.06 control limits: 0.00\n",
- "600 -- true robustness: 0.02 smoothness: 0.06 control limits: 0.00\n",
- "650 -- true robustness: 0.03 smoothness: 0.06 control limits: 0.00\n",
- "700 -- true robustness: 0.02 smoothness: 0.06 control limits: 0.00\n",
- "750 -- true robustness: 0.01 smoothness: 0.06 control limits: 0.00\n",
- "800 -- true robustness: 0.01 smoothness: 0.05 control limits: 0.00\n",
- "850 -- true robustness: 0.01 smoothness: 0.06 control limits: 0.00\n",
- "900 -- true robustness: 0.03 smoothness: 0.07 control limits: 0.00\n",
- "950 -- true robustness: 0.07 smoothness: 0.08 control limits: 0.00\n"
- ]
- }
- ],
- "source": [
- "temperatures = temperature_schedule(jnp.arange(n_steps), n_steps, start_temp, end_temp, scale)\n",
- "for i in range(n_steps):\n",
- " temperature = temperature_schedule(i, n_steps, start_temp, end_temp, scale)\n",
- " g = grad_jit(controls, state0, umax, dt, coeffs, approx_method, temperatures[i]) # take gradient\n",
- " controls -= g * lr\n",
- " states_.append(simulate_dynamics(controls, state0, dt))\n",
- " if (i % 50) == 0:\n",
- " print(\"%3i -- true robustness: %.2f smoothness: %.2f control limits: %.2f\"%(i, true_robustness(controls, state0, dt), loss(controls, state0, umax, dt, coeffs=[0., 1., 0.]), loss(controls, state0, umax, dt, coeffs=[0., 0., 1.])))\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 17,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 530
- },
- "id": "krMVpNDNCRej",
- "outputId": "123b59bc-a063-45d5-b576-d420ea714a8e"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Text(0, 0.5, 'Controls')"
- ]
- },
- "execution_count": 17,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "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/kycOJEdO3Zw9uxZfv31V3bt2gWY52tfsmQJixcvJj4+noULF7JixQrL3Oz10ZBr+ccee4zk5GQef/xxTp06xW+//cYrr7zCrFmzWnwnpsZoNS2bPXs2W7duJSEhgaNHjzJ79myio6O5++67AbjvvvuYPXu2ZfkZM2awbt063nvvPU6dOsXcuXPZt28f06dPt1YT2qSbbrqJJ598kunTp9O3b1927tzJyy+/3KBtdOzYkXnz5vH888/j5+d30f+jyMhIFixYwFtvvUXv3r354YcfmD9/fmObIVo5vV5PcXExxcXFaDQatFoter3eMvFwZmYmO3bs4ODBg+T98gsT5s/nkY0bCdFoKLSx4Y/hw4lft47Ry5bRpUeP6vMi3HwzLF8OHTtWfTww0Pz4zTfToYMNmzdXPaUmJdWvYMCkSfYolSZiY+05c6bC8nhxsZH33y8jKwt++cUJk8nc2S493ZaKCgXJyTp27Cjjp59KLev06GHi2WdduO66EvR6JbffrkSjMSfd1Orak2l79pj/Hjiw7l+phBBCiObi5ubGzTffjJOTExMnTrR2OEII0aK4ublxyy234OzsXOc50tbWlg0bNuDr68v48ePp06cPb775pqVo4MSJE1m0aBELFiwgKiqKzz77jK+//rpBxWsaci3fsWNH1q5dy549e4iMjOSRRx5h6tSpVUbNtUWtZnhpVlYW9913H+np6bi5uREREcH69esZPXo0YB7SeGF2dMiQISxdupSXXnqJF154gbCwMFatWkXv3r2t1YQWY8mSJbU+Fx0dXeV+QkJCtWUOHTpU5f7bb79dpSoJwMyZMy3/njt3bp0lgF9++eVqybp/x1LpySef5Mknn6zy2IVdYrVaLQqFolrhC9E2VFRUoNFoLLeysjIqKiowmUxotVpL1drKm8lkIisri8zff2fUxo30y8sDQKNUsqlPH3j6aUbedFPd8//dfDNMmIB+82YO/fknfceNw+aqq8w94f4REqJm8eISHn3U3Mutf3/YtauCsDDbi27az8+G/v017NvnyPLlWmbPtuWnn0p56ik1aWkuABQUFPPDDy6WznZKJQQGqgkMNPeOS08vZvVqJS+95IRCAd9/70BERAVpaef3/cYbWr7+uuZY9u83bycqqtX8FiOEEKKNSktL47bbbqtxyhchhGjvUlNTufvuu+t1jgwJCbFM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mg9TPv/8c61du1ahoaE1X2lpaZLOjX11qaiokN1ur/XB0ejRo9WxY0d17txZt912m15//fWaWQ7nBQUFSdIFxwEAvoNxBjiHohvQTKqqqvTf//3fmjp1qp544gndfffd9Zr59emnn9Z8X11dre3bt6tnz56SpJ49e2rz5s211mjbtGmTwsLC1L59e0nnil3Dhw/XggULtHPnTtlsNq1atarO17LZbLVmq9WlZ8+e2rRpU61jmzZtUvfu3eu8HRUA4Hvq+uDkm8fOv4E5/2FKaWmpJk6cqF27dtX6+vrrry+4bee82NhYlZeXq6qqquZYWFiYduzYob/85S9KTEzUvHnzlJ6eXmszn8LCQknn1ksFAPgmxhngHIpuQDP53//9XxUXF+u3v/2tHnroIXXv3l133nnnZa97/vnntWrVKu3Zs0czZ87UmTNnaq679957dfToUd13333as2eP3n33Xc2fP1+zZ8+W2WzWZ599pieffFLbtm1TTk6O3n77bZ06daqmaPdtqamp+uyzz3T48GEVFBTUOTNtzpw5ysrK0hNPPKF9+/bp1Vdf1dKlS/Xggw82rYEAAD5r4MCB+te//qXU1FR17dq11ldISEid1/Tv31+S9NVXX9U6HhAQoFGjRunXv/61vvjiCx0+fFgfffRRzc93796t9u3bKzY2tsXyAQB4F8YZtFUU3YBmsG7dOi1atEh/+tOfFB4eLrPZrD/96U/6+OOPtWzZskte+9RTT+mpp55Senq6Nm7cqPfee69mAEhOTtYHH3ygLVu2KD09XT/+8Y9111136ZFHHpEkhYeHa8OGDZowYYK6d++uRx55RM8884zGjx9f52s9+OCDslgs6tWrl+Li4pSTk3PBOQMHDtRf//pXrVy5Un369NG8efP0+OOPa9q0aU1rJACAz5o5c6YKCwt1yy23aOvWrTpw4ID+8Y9/aPr06RedQR0XF6eBAwdq48aNNcf+9re/6be//a127dqlI0eO6LXXXpPb7VaPHj1qzvn44481ZsyYFs8JAOA9GGfQVgUYHQDQFowYMUJOp7PWsdTUVBUXF1/22p49e+qzzz676M+vueYabdmy5aLXrl69+qLXLl++vNbj7t27a/PmzRfE+c3bVyVp8uTJmjx58kWft6716nbt2nXR8wEAvi0pKUmbNm3SQw89pDFjxsjhcKhjx44aN26czOaLf4Z7991367XXXtOsWbMkSZGRkXr77bf12GOPqbKyUt26ddNf/vIX9e7dW5JUWVmpd95555JjGwCg7WGcQVtl8nz73TaAVnH48GF16tRJO3furJkaDQBAW1JRUaEePXrojTfeqLVb98UsW7ZMq1at0po1a1ohOgCAr2Ocgbfj9lIAAAC0iKCgIL322msqKCio1/lWq1VLlixp4agAAG0F4wy8HTPdAAAAAAAAgGbGTDcAAAAAAACgmVF0AwAAAAAAAJoZRTcAAAAAAACgmVF0AwAAAAAAAJoZRTcAAAAAAACgmVF0AwAAAAAAAJoZRTcAAAAAAACgmVF0AwAAAAAAAJoZRTcAAAAAAACgmf0/vYeNBGYkuBIAAAAASUVORK5CYII=",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "fig, axs = plt.subplots(1,3, figsize=(15,4)) # note we must use plt.subplots, not plt.subplot\n",
- "\n",
- "ax = axs[0]\n",
- "circle1 = plt.Circle((0, 0), 0.5, color='C2', alpha=0.4)\n",
- "circle2 = plt.Circle(obstacle_center[0], 0.5, color='C3', alpha=0.4)\n",
- "\n",
- "ax.add_patch(circle1)\n",
- "ax.add_patch(circle2)\n",
- "\n",
- "N = 100\n",
- "[ax.plot(*s.T, color=\"k\", alpha=0.2) for s in states_[::N]]\n",
- "[ax.plot(*s.T, color=\"blue\", label=\"Initial traj\") for s in states_[:1]]\n",
- "[ax.plot(*s.T, color=\"r\", label=\"Final traj\") for s in states_[-1:]]\n",
- "\n",
- "ax.scatter(states_[-1][0,:1], states_[-1][0,1:], zorder=10, label=\"start\", color=\"red\")\n",
- "ax.scatter(states_[-1][-1,:1], states_[-1][-1,1:], zorder=10, label=\"end\", color=\"green\")\n",
- "\n",
- "ax.set_xlabel(\"x position\")\n",
- "ax.set_ylabel(\"y position\")\n",
- "ax.grid()\n",
- "ax.legend()\n",
- "ax.axis(\"equal\")\n",
- "\n",
- "# plot x, y\n",
- "ax = axs[1]\n",
- "ax.plot(ts, states_[-1][:-1,:1], label=\"x\")\n",
- "ax.plot(ts, states_[-1][:-1,1:], label=\"y\")\n",
- "ax.grid()\n",
- "ax.axis(\"equal\")\n",
- "ax.legend()\n",
- "ax.set_xlabel(\"Time (s)\")\n",
- "ax.set_ylabel(\"Position\")\n",
- "\n",
- "\n",
- "# plot control signal\n",
- "ax = axs[2]\n",
- "ax.plot(ts, controls[:,:1], label=\"x control\")\n",
- "ax.plot(ts, controls[:,1:], label=\"y control\")\n",
- "ax.plot(ts, jnp.linalg.norm(controls, axis=-1).squeeze(), label=\"control norm\")\n",
- "ax.grid()\n",
- "ax.axis(\"equal\")\n",
- "ax.legend()\n",
- "ax.set_xlabel(\"Time (s)\")\n",
- "ax.set_ylabel(\"Controls\")\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "Scv5PRbdCRej"
- },
- "source": [
- "### Using Predicates"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 102,
- "metadata": {
- "id": "7aMIbtVjCRej"
- },
- "outputs": [],
- "source": [
- "# set random initial state and control\n",
- "np.random.seed(123)\n",
- "T = 51 # time horizon\n",
- "dt = 0.1 # time step size\n",
- "ts = jnp.array([t * dt for t in range(T)])\n",
- "umax = 1.0 # max control limit\n",
- "\n",
- "controls = jnp.array(np.random.randn(T,2))\n",
- "state0 = jnp.ones(2).reshape([1,2]) * 3.\n",
- "obstacle_center = jnp.ones([1,2]) * 2.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 103,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 340
- },
- "id": "JVViQbSrCRej",
- "outputId": "146e982c-2fba-4ff7-d3a5-2f4a03a0eb54"
- },
- "outputs": [
- {
- "data": {
- "image/svg+xml": [
- "\n",
- "\n",
- "\n",
- "\n",
- "\n"
- ],
- "text/plain": [
- ""
- ]
- },
- "execution_count": 103,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# defining formula\n",
- "\n",
- "def compute_distance_to_point(states, point):\n",
- " return jnp.linalg.norm(states[...,:2] - point, axis=-1, keepdims=True)\n",
- "\n",
- "def compute_distance_to_origin(states):\n",
- " return compute_distance_to_point(states, jnp.zeros(2))\n",
- "\n",
- "\n",
- "\n",
- "distance_to_origin = Predicate(\"magnitude\", compute_distance_to_origin)\n",
- "distance_to_obstacle = Predicate(\"distance_to_obs\", lambda x: compute_distance_to_point(x, obstacle_center))\n",
- "reach = Eventually(distance_to_origin < 0.2)\n",
- "avoid = Always(distance_to_obstacle > 0.5)\n",
- "formula = reach & avoid\n",
- "formula = Until(distance_to_obstacle > 0.5, Always(distance_to_origin < 0.5), interval=[40,45])\n",
- "\n",
- "make_stl_graph(formula)\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 104,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "Mo_cXd9pCRej",
- "outputId": "c581c88a-8e59-44ae-fa60-7803eea32827"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(Array(7.334007, dtype=float32),\n",
- " Array(7.138606, dtype=float32),\n",
- " Array(-4.1455383, dtype=float32))"
- ]
- },
- "execution_count": 104,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "@functools.partial(jax.jit, static_argnames=(\"approx_method\"))\n",
- "def loss(controls, state0, umax, dt, coeffs=[1., 0.1, 5.], approx_method=\"true\", temperature=None):\n",
- " # generate trajectory from control sequence and reverse along time dimension\n",
- " traj = simulate_dynamics(controls, state0, dt)\n",
- " # loss functions\n",
- " loss_robustness = jax.nn.relu(-formula.robustness(traj,approx_method=approx_method, temperature=temperature))\n",
- " loss_control_smoothness = jnp.abs(jnp.diff(controls, axis=1)).sum(-1).mean() + (controls**2).sum(-1).mean() # make controls smoother\n",
- " loss_control_limits = jax.nn.relu(jnp.linalg.norm(controls, axis=-1) - umax).mean() # penalize control limit violation\n",
- " return coeffs[0] * loss_robustness + coeffs[1] * loss_control_smoothness + coeffs[2] * loss_control_limits\n",
- "\n",
- "@jax.jit\n",
- "def true_robustness(controls, state0, dt):\n",
- " # generate trajectory from control sequence and reverse along time dimension\n",
- " traj = simulate_dynamics(controls, state0, dt)\n",
- " # loss functions\n",
- " return formula.robustness(traj).mean()\n",
- "\n",
- "def temperature_schedule(i, i_max, start_temp, end_temp, scale=5):\n",
- " i_ = i\n",
- " center = i_max / 2\n",
- " return jax.nn.sigmoid((i_ - center) / scale) * (end_temp - start_temp) + start_temp\n",
- "\n",
- "# compare true value with max/min approximation\n",
- "loss(controls, state0, umax, dt), loss(controls, state0, umax, dt, approx_method=\"softmax\", temperature=5), true_robustness(controls, state0, dt)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 106,
- "metadata": {
- "id": "MInn9AycCRek"
- },
- "outputs": [],
- "source": [
- "states_ = [simulate_dynamics(controls, state0, dt)]\n",
- "lr = 1E-1 # learning rate\n",
- "approx_method = \"logsumexp\"\n",
- "n_steps = 1000 # number of gradient steps\n",
- "n_steps_extra = 10\n",
- "coeffs = [1., 0.5, 5.]\n",
- "\n",
- "# jit the gradient function to speed things up (by A LOT).\n",
- "grad_jit = jax.jit(jax.grad(loss, 0), static_argnames=\"approx_method\")\n",
- "grad_jit(controls, state0, umax, dt, coeffs, approx_method, 0.2) \n",
- "# temperature schedule parameters\n",
- "start_temp = 50\n",
- "end_temp = 500\n",
- "scale = 5"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 110,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "_W4TYjG2CRek",
- "outputId": "0e2b8e16-34ce-4512-adff-dfe6f98bd3f6"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " 0 -- true robustness: -0.01 smoothness: 0.89 control limits: 0.00\n",
- " 50 -- true robustness: 0.01 smoothness: 0.90 control limits: 0.00\n",
- "100 -- true robustness: -0.00 smoothness: 0.89 control limits: 0.00\n",
- "150 -- true robustness: 0.00 smoothness: 0.89 control limits: 0.00\n",
- "200 -- true robustness: -0.00 smoothness: 0.90 control limits: 0.00\n",
- "250 -- true robustness: 0.00 smoothness: 0.89 control limits: 0.00\n",
- "300 -- true robustness: 0.01 smoothness: 0.89 control limits: 0.00\n",
- "350 -- true robustness: 0.01 smoothness: 0.90 control limits: 0.00\n",
- "400 -- true robustness: 0.01 smoothness: 0.89 control limits: 0.00\n",
- "450 -- true robustness: -0.01 smoothness: 0.89 control limits: 0.00\n",
- "500 -- true robustness: -0.02 smoothness: 0.88 control limits: 0.00\n",
- "550 -- true robustness: -0.00 smoothness: 0.88 control limits: 0.00\n",
- "600 -- true robustness: -0.00 smoothness: 0.88 control limits: 0.00\n",
- "650 -- true robustness: -0.01 smoothness: 0.87 control limits: 0.00\n",
- "700 -- true robustness: -0.00 smoothness: 0.88 control limits: 0.00\n",
- "750 -- true robustness: 0.00 smoothness: 0.87 control limits: 0.00\n",
- "800 -- true robustness: -0.02 smoothness: 0.87 control limits: 0.00\n",
- "850 -- true robustness: 0.01 smoothness: 0.88 control limits: 0.00\n",
- "900 -- true robustness: -0.00 smoothness: 0.87 control limits: 0.00\n",
- "950 -- true robustness: 0.01 smoothness: 0.89 control limits: 0.00\n"
- ]
- }
- ],
- "source": [
- "temperatures = temperature_schedule(jnp.arange(n_steps), n_steps, start_temp, end_temp, scale)\n",
- "for i in range(n_steps):\n",
- " g = grad_jit(controls, state0, umax, dt, coeffs, approx_method, temperatures[i]) # take gradient\n",
- " # g = jax.grad(loss, 0)(controls, state0, umax, approx_method, temperature) # not jitting\n",
- " controls -= g * lr\n",
- " states_.append(simulate_dynamics(controls, state0, dt))\n",
- " if (i % 50) == 0:\n",
- " print(\"%3i -- true robustness: %.2f smoothness: %.2f control limits: %.2f\"%(i, true_robustness(controls, state0, dt), loss(controls, state0, umax, dt, coeffs=[0., 1., 0.]), loss(controls, state0, umax, dt, coeffs=[0., 0., 1.])))\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 111,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 408
- },
- "id": "mYWVasKKCRek",
- "outputId": "78a2194c-17e3-431b-9535-828058aba881"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Text(0, 0.5, 'Controls')"
- ]
- },
- "execution_count": 111,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "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KwPQsF8qERHZJ+YZogYsuhFZyF//+leUl5fj1VdfxeLFixEZGYlZs2Y9sN+WLVuwZ88e5ObmIikpCXfu3DH1mzdvHq5fv45nn30Wubm5+PTTT7FixQqkpKRALpfjxIkTWL16NU6dOoVr165h9+7dKCkpMRXtfik8PBwnTpxAfn4+SktLmzwzbeHChUhPT8dLL72E77//Hu+88w42b96MRYsWPdwEERGR3erfvz++/fZbhIeHo1u3bmYPV1fXJvv07dsXAPDdd9+ZtTs5OSE+Ph5///vfce7cOeTn5+PAgQOm71+4cAHBwcHw9fVtt/EQEZFtYZ4hR8WiG5EFHDp0CBs2bMB7770HDw8PyOVyvPfee/jmm2+wdevW+/Zdu3Yt1q5di5iYGBw5cgSfffaZKQF06tQJX375JTIzMxETE4O5c+di9uzZWLZsGQDAw8MDhw8fxvjx4xEZGYlly5Zh/fr1GDduXJOvtWjRIigUCvTo0QN+fn64du3aPcf0798fH3/8MXbu3IlevXph+fLlePHFFzFjxoyHmyQiIrJbSUlJKCsrw5QpU3Dy5ElcvnwZX331FWbOnNnsGdR+fn7o378/jhw5Ymr74osv8OqrryI7OxtXr17Fu+++C6PRiO7du5uO+eabb5CQkNDuYyIiItvBPEOOyknsAIgcwYgRI6DX683awsPDUV5e/sC+0dHROHHiRLPfHz58ODIzM5vtm5qa2mzft99+2+x5ZGQkjh07dk+cP798FQAmTpyIiRMnNvtzm9qvLjs7u9njiYjIvgUFBeHo0aNYvHgxEhISoNVqERYWhrFjx0Iub/4z3KeeegrvvvsukpOTAQBeXl7YvXs3Vq5cibq6OkRERODDDz9Ez549AQB1dXXYu3fvfXMbERE5HuYZclQy4ZfvtonIKvLz89G5c2ecOXPGdGo0ERGRI6mtrUX37t3x0Ucfmd2tuzlbt27Fnj17sH//fitER0RE9o55hmwdLy8lIiIionbh7OyMd999F6WlpS06XqlUYtOmTe0cFREROQrmGbJ1PNONiIiIiIiIiIjIwnimGxERERERERERkYWx6EZERERERERERGRhLLoRERERERERERFZGItuREREREREREREFsaiGxERERERERERkYWx6EZERERERERERGRhLLoRERERERERERFZGItuREREREREREREFsaiGxERERERERERkYX9fwnC6Efi+WC7AAAAAElFTkSuQmCC",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "fig, axs = plt.subplots(1,3, figsize=(15,4)) # note we must use plt.subplots, not plt.subplot\n",
- "\n",
- "ax = axs[0]\n",
- "circle1 = plt.Circle((0, 0), 0.5, color='C2', alpha=0.4)\n",
- "circle2 = plt.Circle(obstacle_center[0], 0.5, color='C3', alpha=0.4)\n",
- "\n",
- "ax.add_patch(circle1)\n",
- "ax.add_patch(circle2)\n",
- "\n",
- "N = 100\n",
- "[ax.plot(*s.T, color=\"k\", alpha=0.2) for s in states_[::N]]\n",
- "[ax.plot(*s.T, color=\"blue\", label=\"Initial traj\") for s in states_[:1]]\n",
- "[ax.plot(*s.T, color=\"r\", label=\"Final traj\") for s in states_[-1:]]\n",
- "\n",
- "ax.scatter(states_[-1][0,:1], states_[-1][0,1:], zorder=10, label=\"start\", color=\"red\")\n",
- "ax.scatter(states_[-1][-1,:1], states_[-1][-1,1:], zorder=10, label=\"end\", color=\"green\")\n",
- "\n",
- "ax.set_xlabel(\"x position\")\n",
- "ax.set_ylabel(\"y position\")\n",
- "ax.grid()\n",
- "ax.legend()\n",
- "ax.axis(\"equal\")\n",
- "\n",
- "# plot x, y\n",
- "ax = axs[1]\n",
- "ax.plot(ts, states_[-1][:-1,:1], label=\"x\")\n",
- "ax.plot(ts, states_[-1][:-1,1:], label=\"y\")\n",
- "ax.plot(ts, distance_to_origin.predicate_function(states_[-1][1:]).squeeze())\n",
- "ax.grid()\n",
- "ax.axis(\"equal\")\n",
- "ax.legend()\n",
- "ax.set_xlabel(\"Time (s)\")\n",
- "ax.set_ylabel(\"Position\")\n",
- "\n",
- "\n",
- "# plot control signal\n",
- "ax = axs[2]\n",
- "ax.plot(ts, controls[:,:1], label=\"x control\")\n",
- "ax.plot(ts, controls[:,1:], label=\"y control\")\n",
- "ax.plot(ts, jnp.linalg.norm(controls, axis=-1).squeeze(), label=\"control norm\")\n",
- "ax.grid()\n",
- "ax.axis(\"equal\")\n",
- "ax.legend()\n",
- "ax.set_xlabel(\"Time (s)\")\n",
- "ax.set_ylabel(\"Controls\")\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "OlK7HyGfCRek"
- },
- "source": [
- "## Parametric STL\n",
- "We can take gradients with respect to the RHS constant in the <, >, == STL formulas\n",
- "\n",
- "As a simple example, we using the final trajectory in the example above to find the value of `c` such that the formula `Always(distance_to_obstacle > c)` is as tight as possible."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "vCF9DvcnCRek",
- "outputId": "0aa83f60-507b-4dfa-aeae-2f05b4fc38f3"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " 0 -- true robustness: 1.7771 \n",
- " 10 -- true robustness: 0.2160 \n",
- " 20 -- true robustness: 0.0263 \n",
- " 30 -- true robustness: 0.0032 \n",
- " 40 -- true robustness: 0.0004 \n",
- " 50 -- true robustness: 0.0000 \n",
- " 60 -- true robustness: 0.0000 \n",
- " 70 -- true robustness: 0.0000 \n",
- " 80 -- true robustness: 0.0000 \n",
- " 90 -- true robustness: 0.0000 \n"
- ]
- }
- ],
- "source": [
- "def parametric_stl_robustness(c, signal):\n",
- " return Always(distance_to_obstacle > c).robustness(signal)**2\n",
- "\n",
- "traj = states_[-1]\n",
- "grad_jit = jax.jit(jax.grad(lambda c: parametric_stl_robustness(c, traj)))\n",
- "\n",
- "c = 2.\n",
- "cs = [c]\n",
- "lr = 0.05\n",
- "for i in range(100):\n",
- " g = grad_jit(c)\n",
- " c -= g * lr\n",
- " cs.append(c)\n",
- " if (i % 10) == 0:\n",
- " print(\"%3i -- true robustness: %.4f \"%(i, parametric_stl_robustness(c, traj)))\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 25,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 449
- },
- "id": "JEZh75FCCRek",
- "outputId": "32c64842-65dd-4726-9dae-5c8493b8ef5f"
- },
- "outputs": [
- {
- "data": {
- "image/png": "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K9i+fTtOnDiBKVOm1Po5RowYgc8++wwBAQGqWEeMGAGlUomhQ4fi6dOnOHbsGGJjY5GSkoIRI0bUmZPi4mJERESgWbNmOH/+PP78808cPny4xnvHxcXh5s2biI+Px9atW7Fz505ERUUBADIzMzFy5EhMmDBBtc3rr78OhmEwffp0vPXWW+jfv78q1m7dugEAJBIJoqOjcePGDaxcuRK//PILli9frnrPffv24bXXXsPAgQORkJCAuLg4dO7cuc7PMnz4cOTk5ODAgQO4ePEi2rdvj1deeQVPnz7V6LN//PHHAIDPPvsMGzduVH3GynOiOg8PD+zYsQMAkJSUhMzMTKxcuVL1+qZNm2BmZoaTJ09i7dq1AJ4VU6tWrcL169exadMmHDlyBDNmzKjzc6lzfowZMwZbt27FqlWrcPPmTaxbtw7W1tb1xjdjxgzs2LEDmzZtwqVLl+Dn54eIiIga+fryyy+xePFi3Lx5E0OGDEHfvn1Veam0ceNGjBs3jiaOJEYl7mY2fvk3ldXmZWeJb18P4m/6B4ZHERERzMaNG5lr164xiYmJzMCBAxlPT0+mqKiozn02btzISKVSJjMzU/XIyspibbN48WLGxsaG2b17N3P58mVmyJAhjI+PD1NaWqpWXPn5+QwAJj8/v8ZrpaWlzI0bN1THelxYxnh9sZe3x+PCsgY/T2FhIWNmZsb88ccfqrYnT54wFhYWzCeffKJq8/LyYpYvX84wDMMsXbqUadWqFVNeXl7rMatvW59BgwYxn332mep5z549mZdeeom1TadOnZgvvviCYRiGOXjwICMUCpmkpKRaj/fee+8xH3zwAavt33//ZYRCIevnq1AomNzcXEahUDBz585lQkJCWPscOnSIEYlETHp6uqrt+vXrDADm3Llztb73+vXrmWbNmrHOz3379jFCoVB1Do4dO5axs7NjiouLVdusWbOGsba2ZhQKBXPx4kUGAJOWllbre4wdO5YZOnRora9V9/333zMdOnRQPQ8LC2NGjRpV5/bVf17//vsvI5VKmbIy9rnTokULZt26dbXuX99nT0pKYhQKBbNr1y6moV8pR48eZQAwubm5rPaePXsy7dq1q3dfhmGYP//8k2nevHmdx2vo/EhKSmIAMLGxsWrHV1RUxJiamjK///67qq28vJxxdXVllixZwtpv9+7drONt376dadas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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "\n",
- "plt.plot(ts, jnp.linalg.norm(traj - obstacle_center, axis=-1, keepdims=True).squeeze()[:-1], linewidth=3, label=\"distance to obstacle of trajectory\", zorder=5)\n",
- "plt.hlines(cs[0], ts[0], ts[-1], linewidth=2, color=\"red\", label=\"initial c\", zorder=4)\n",
- "plt.hlines(cs[-1], ts[0], ts[-1], linewidth=2, color=\"green\", label=\"final c\", zorder=4)\n",
- "\n",
- "plt.hlines(cs, ts[0], ts[-1], alpha=0.2, color=\"black\")\n",
- "plt.xlabel(\"Time [s]\")\n",
- "plt.ylabel(\"Distance to obstacle\")\n",
- "plt.legend()\n",
- "\n",
- "plt.grid()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "7t97PeSZCRek"
- },
- "source": [
- "## Examples of other formulas\n",
- "\n",
- "Below are examples of how to apply different STL operations given the reach and avoid predicates.\n",
- "(Don't read too much into the meaning behind each formula with the read and avoid predicates. Just treat them as placeholders)\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {
- "id": "Tm2SVG3vCReq"
- },
- "outputs": [],
- "source": [
- "# using values from above\n",
- "traj = states_[-1]\n",
- "\n",
- "# compute distance_to_origin and distance_to_obstacle\n",
- "distance_to_origin_signal = jnp.linalg.norm(traj, axis=-1)\n",
- "distance_to_obstacle_signal = jnp.linalg.norm(traj - obstacle_center, axis=-1)\n",
- "\n",
- "distance_to_origin = Expression(\"magnitude\", distance_to_origin_signal)\n",
- "distance_to_obstacle = Expression(\"distance_to_obs\", distance_to_obstacle_signal)\n",
- "reach = Eventually(distance_to_origin < 0.5)\n",
- "avoid = Always(distance_to_obstacle > 0.5)\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "KeoUSbAnCRer"
- },
- "source": [
- "### Eventually Always"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 27,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 340
- },
- "id": "D2UKqsfDCRer",
- "outputId": "43e320bf-7eb4-48bd-af55-ebaf2bf9fa57"
- },
- "outputs": [
- {
- "data": {
- "image/svg+xml": [
- "\n",
- "\n",
- "\n",
- "\n",
- "\n"
- ],
- "text/plain": [
- ""
- ]
- },
- "execution_count": 27,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# nested temporal operators\n",
- "# NOTE: temporal operatos pad signal with the value at the last time step\n",
- "ϕ = Eventually(Always(distance_to_origin < 0.5, interval=[0, 5]))\n",
- "\n",
- "\n",
- "ϕ(distance_to_origin);\n",
- "make_stl_graph(ϕ)\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "V1bpm2LVCRer"
- },
- "source": [
- "### Until"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 28,
- "metadata": {
- "id": "AbQB7WW0CRer"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Array([0.01881605, 0.01881605, 0.01881605, 0.01881605, 0.01881605,\n",
- " 0.01881605, 0.01881605, 0.01881605, 0.01881605, 0.01881605,\n",
- " 0.01881605, 0.01881605, 0.01881605, 0.01881605, 0.01881605,\n",
- " 0.01881605, 0.01889771, 0.02217305, 0.0412991 , 0.07640123,\n",
- " 0.08110067, 0.08110067, 0.08110067, 0.08110067, 0.08110067,\n",
- " 0.08110067, 0.08110067, 0.08110067, 0.08110067, 0.08110067,\n",
- " 0.08110067, 0.08110067, 0.08110067, 0.08110067, 0.08110067,\n",
- " 0.08110067, 0.08110067, 0.08110067, 0.08110067, 0.08110067,\n",
- " 0.08110067, 0.08110067, 0.08110067, 0.08110067, 0.08110067,\n",
- " 0.08110067, 0.08110067, 0.08110067, 0.08110067, 0.08110067,\n",
- " 0.08110067, 0.08110067], dtype=float32)"
- ]
- },
- "execution_count": 28,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "ϕ = Until(avoid, reach, interval=None)\n",
- "\n",
- "ϕ((distance_to_obstacle, distance_to_origin))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "l-bt2v27CRer"
- },
- "source": [
- "### Multiple And (Or)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 29,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 340
- },
- "id": "DlNhLq9JCRer",
- "outputId": "193392e8-c698-43a3-9a94-8b48e866d620"
- },
- "outputs": [
- {
- "data": {
- "image/svg+xml": [
- "\n",
- "\n",
- "\n",
- "\n",
- "\n"
- ],
- "text/plain": [
- ""
- ]
- },
- "execution_count": 29,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "ψ = distance_to_obstacle > 0.5\n",
- "ϕ = ψ & ψ & ψ # equivalent to (ψ & ψ) & ψ this formula is redundant, but just demonstrating functionality\n",
- "ϕ(((distance_to_obstacle,distance_to_obstacle), distance_to_obstacle));\n",
- "make_stl_graph(ϕ)\n",
- "\n",
- "# similarly, you can do this with Or --> ψ | ψ | ψ\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "laUYW_xQCRer"
- },
- "source": [
- "### Implies"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 30,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 340
- },
- "id": "n60vd2tmCRer",
- "outputId": "7262cfa1-5044-4d3e-a79a-297c4f194275"
- },
- "outputs": [
- {
- "data": {
- "image/svg+xml": [
- "\n",
- "\n",
- "\n",
- "\n",
- "\n"
- ],
- "text/plain": [
- ""
- ]
- },
- "execution_count": 30,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "ϕ = Implies(avoid, reach)\n",
- "ϕ((distance_to_obstacle,distance_to_obstacle));\n",
- "make_stl_graph(ϕ)\n"
- ]
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import jax\n",
+ "import jax.numpy as jnp\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "from stljax.formula import *\n",
+ "from stljax.viz import *\n",
+ "\n",
+ "import functools"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## NOTE\n",
+ "If using Expressions to define formulas, `stljax` expects input signals to be of size `[time_dim]`.\n",
+ "If using Predicates to define formulas, `stljax` expects input signals to be of size `[time_dim, state_dim]` where `state_dim` is the expected input size of your predicate function.\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def compute_distance_to_origin(states):\n",
+ " return jnp.linalg.norm(states[...,:2], axis=-1, keepdims=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Array([1.4142135, 1.4142135, 1.4142135, 1.4142135, 1.4142135, 1.4142135,\n",
+ " 1.4142135, 1.4142135, 1.4142135, 1.4142135], dtype=float32)"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "T = 10\n",
+ "compute_distance_to_origin(jnp.ones([T, 2]))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Using Expressions\n",
+ "Expressions are placeholders for input signals. Specifically, it is assuming the signal is already a 1D array, such as the output of a predicate function. \n",
+ "\n",
+ "This is useful if you have signals from predicates computed already. \n",
+ "\n",
+ "In general, this is useful for readability and visualization."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "AssertionError",
+ "evalue": "Input Expression does not have numerical values",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[4], line 5\u001b[0m\n\u001b[1;32m 1\u001b[0m distance_to_origin_exp \u001b[38;5;241m=\u001b[39m Expression(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmagnitude\u001b[39m\u001b[38;5;124m\"\u001b[39m, value\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m) \u001b[38;5;66;03m# can define an Expression without setting values for the expression right now\u001b[39;00m\n\u001b[1;32m 2\u001b[0m formula_exp \u001b[38;5;241m=\u001b[39m Eventually(distance_to_origin_exp \u001b[38;5;241m<\u001b[39m \u001b[38;5;241m0.5\u001b[39m) \u001b[38;5;66;03m# can define an STL formula given an expression, again, the value of the expression does not need to be set yet\u001b[39;00m\n\u001b[0;32m----> 5\u001b[0m \u001b[43mformula_exp\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdistance_to_origin_exp\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# <---- this will throw an error since the expression does not have values set yet\u001b[39;00m\n",
+ "File \u001b[0;32m~/repos/stljax/stljax/formula.py:79\u001b[0m, in \u001b[0;36mSTL_Formula.__call__\u001b[0;34m(self, signal, **kwargs)\u001b[0m\n\u001b[1;32m 72\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__call__\u001b[39m(\u001b[38;5;28mself\u001b[39m, signal, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 73\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 74\u001b[0m \u001b[38;5;124;03m Evaluates the robustness_trace given the input. The input is converted to the numerical value first.\u001b[39;00m\n\u001b[1;32m 75\u001b[0m \n\u001b[1;32m 76\u001b[0m \u001b[38;5;124;03m See STL_Formula.robustness_trace\u001b[39;00m\n\u001b[1;32m 77\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 79\u001b[0m inputs \u001b[38;5;241m=\u001b[39m \u001b[43mconvert_to_input_values\u001b[49m\u001b[43m(\u001b[49m\u001b[43msignal\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 80\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrobustness_trace(inputs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n",
+ "File \u001b[0;32m~/repos/stljax/stljax/formula.py:866\u001b[0m, in \u001b[0;36mconvert_to_input_values\u001b[0;34m(inputs)\u001b[0m\n\u001b[1;32m 864\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(inputs, \u001b[38;5;28mtuple\u001b[39m):\n\u001b[1;32m 865\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(inputs, Expression):\n\u001b[0;32m--> 866\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m inputs\u001b[38;5;241m.\u001b[39mvalue \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInput Expression does not have numerical values\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 867\u001b[0m \u001b[38;5;66;03m# if Expression is not time reversed\u001b[39;00m\n\u001b[1;32m 868\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m inputs\u001b[38;5;241m.\u001b[39mvalue\n",
+ "\u001b[0;31mAssertionError\u001b[0m: Input Expression does not have numerical values"
+ ]
+ }
+ ],
+ "source": [
+ "distance_to_origin_exp = Expression(\"magnitude\", value=None) # can define an Expression without setting values for the expression right now\n",
+ "formula_exp = Eventually(distance_to_origin_exp < 0.5) # can define an STL formula given an expression, again, the value of the expression does not need to be set yet\n",
+ "\n",
+ "\n",
+ "formula_exp(distance_to_origin_exp) # <---- this will throw an error since the expression does not have values set yet\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Array([ 0.24982172, 0.24982172, 0.24982172, 0.24982172, -0.9981775 ], dtype=float32)"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# so let's go ahead and set a value for the expression\n",
+ "T = 5\n",
+ "states = jnp.array(np.random.randn(T, 2))\n",
+ "states_norm = compute_distance_to_origin(states) # compute distance to origin\n",
+ "\n",
+ "distance_to_origin_exp.set_value(states_norm) # set value for Expression\n",
+ "\n",
+ "# compute robustness trace\n",
+ "formula_exp(distance_to_origin_exp) # <---- this will no longer throw an error since the expression has a value set\n",
+ "\n",
+ "# alternatively, we can directly plug any jnp.array and evaluate the robustness without \n",
+ "states2 = jnp.array(np.random.randn(T, 2))\n",
+ "states_norm2 = compute_distance_to_origin(states2) # compute distance to origin\n",
+ "formula_exp(states_norm2) \n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We can compute the robustness value (instead of trace) and take the derivative"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Robustness value: -0.041\n",
+ "\n",
+ "Gradient of robustness value w.r.t. input:\n",
+ " [-0. -0. -1. -0. -0.]\n"
+ ]
}
- ],
- "metadata": {
- "colab": {
- "include_colab_link": true,
- "provenance": []
- },
- "kernelspec": {
- "display_name": "stljax",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.12.4"
+ ],
+ "source": [
+ "robustness = formula_exp.robustness(states_norm) \n",
+ "print(f\"Robustness value: {robustness:.3f}\\n\")\n",
+ "\n",
+ "gradient = jax.grad(formula_exp.robustness)(states_norm) \n",
+ "print(f\"Gradient of robustness value w.r.t. input:\\n {gradient}\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We can apply a smooth max/min approximation by selecting a `approx_method` and `temperature`.\n",
+ "The default `approx_method` is `true`.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Robustness value: 1.030\n",
+ "\n",
+ "Gradient of robustness value w.r.t. input:\n",
+ " [-0.09700805 -0.2143781 -0.34265578 -0.23554076 -0.1104174 ]\n"
+ ]
+ }
+ ],
+ "source": [
+ "approx_method = \"logsumexp\" # or \"softmax\"\n",
+ "temperature = 1. # needs to be > 0\n",
+ "\n",
+ "robustness = formula_exp.robustness(states_norm, approx_method=approx_method, temperature=temperature) \n",
+ "print(f\"Robustness value: {robustness:.3f}\\n\")\n",
+ "\n",
+ "gradient = jax.grad(formula_exp.robustness)(states_norm, approx_method=approx_method, temperature=temperature) \n",
+ "print(f\"Gradient of robustness value w.r.t. input:\\n {gradient}\") # <----- gradients are spread across different values"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "For formulas that are defined with two different Expressions, we need to be careful about the signals we are feeding in."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Array([-1.8956004 , -1.1781825 , -0.04106313, -0.41590554, -1.1735218 ], dtype=float32)"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# if both subformulas use the same signal, then we can do this\n",
+ "phi = (distance_to_origin_exp > 0) & (distance_to_origin_exp < 0.5) \n",
+ "phi(states_norm)\n",
+ "\n",
+ "\n",
+ "# if the formula depends on two different signals, then we need to provide the two signals as tuple\n",
+ "distance_to_origin_exp = Expression(\"magnitude\", value=None)\n",
+ "speed_exp = Expression(\"speed\", value=None)\n",
+ "\n",
+ "phi = (distance_to_origin_exp > 0) & (speed_exp < 0.5) \n",
+ "\n",
+ "phi(states_norm) # <--- Will give WRONG ANSWER\n",
+ "\n",
+ "\n",
+ "speed = jnp.array(np.random.randn(T))\n",
+ "input_correct_order = (states_norm, speed)\n",
+ "input_wrong_order = (speed, states_norm)\n",
+ "phi(input_correct_order) # <--- Will give desired answer\n",
+ "phi(input_wrong_order) # <--- Will give WRONG ANSWER since the ordering of the input does not correspond to how phi is defined\n",
+ "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Using Predicates\n",
+ "Predicates are the functions that an N-D signal is passed through and its outputs are then passed through each operation of the STL formula.\n",
+ "We can construct an STL formula by specifying the predicate functions and the connectives and temporal operations.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Array([ True, True, True, True, True], dtype=bool)"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "distance_to_origin_pred = Predicate(\"magnitude\", predicate_function=compute_distance_to_origin) # define a predicate function with a name and the function\n",
+ "formula_pred = Eventually(distance_to_origin_pred < 0.5) # define the STL formula\n",
+ "\n",
+ "# so let's go ahead and set a value for the input N-D array which will be the input into the predicate function.\n",
+ "T = 5\n",
+ "states = jnp.array(np.random.randn(T, 2)) # 2D signal\n",
+ "output_from_using_predicate = formula_pred(states) # compute distance to origin INSIDE \n",
+ "\n",
+ "\n",
+ "# NOTE: this is equivalent to the following with expressions\n",
+ "states_norm = compute_distance_to_origin(states) # computes distance to origin OUTSIDE \n",
+ "output_from_using_expression = formula_exp(states_norm) \n",
+ "\n",
+ "\n",
+ "# check if we get the same answer\n",
+ "jnp.isclose(output_from_using_predicate, output_from_using_expression)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Similarly, we can compute the robustness value (instead of trace) and take the derivative. "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Robustness value: 0.951\n",
+ "\n",
+ "Gradient of robustness value w.r.t. input:\n",
+ " [[-0.05231676 0.04973718]\n",
+ " [-0.02268155 -0.20005907]\n",
+ " [ 0.23647855 0.29368952]\n",
+ " [ 0.21631472 -0.10630771]\n",
+ " [-0.0618272 0.08902159]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "approx_method = \"logsumexp\" # or \"softmax\"\n",
+ "temperature = 1. # needs to be > 0\n",
+ "\n",
+ "robustness = formula_pred.robustness(states, approx_method=approx_method, temperature=temperature) \n",
+ "print(f\"Robustness value: {robustness:.3f}\\n\")\n",
+ "\n",
+ "gradient = jax.grad(formula_pred.robustness)(states, approx_method=approx_method, temperature=temperature) \n",
+ "print(f\"Gradient of robustness value w.r.t. input:\\n {gradient}\") # <----- gradients are spread across different values"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Note that when taken gradients with formulas defined with predicates, the input is the N-D signal which is passed into the predicate function and other robustness formulas. That is to say, the gradient will be influenced by the choice of the predicate. \n",
+ "\n",
+ "To get the same gradient output when using Expressions, we need to do the following:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Array([[-0.05231676, 0.04973718],\n",
+ " [-0.02268155, -0.20005907],\n",
+ " [ 0.23647855, 0.29368952],\n",
+ " [ 0.21631472, -0.10630771],\n",
+ " [-0.0618272 , 0.08902159]], dtype=float32)"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
}
+ ],
+ "source": [
+ "def foo(states):\n",
+ " states_norm = compute_distance_to_origin(states) # compute distance to origin\n",
+ " return formula_exp.robustness(states_norm, approx_method=approx_method, temperature=temperature) \n",
+ "\n",
+ "jax.grad(foo)(states)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "test",
+ "language": "python",
+ "name": "python3"
},
- "nbformat": 4,
- "nbformat_minor": 0
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.12.4"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
}
diff --git a/examples/parametric_time_interval.ipynb b/examples/parametric_time_interval.ipynb
new file mode 100644
index 0000000..63ce89b
--- /dev/null
+++ b/examples/parametric_time_interval.ipynb
@@ -0,0 +1,287 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The autoreload extension is already loaded. To reload it, use:\n",
+ " %reload_ext autoreload\n"
+ ]
+ }
+ ],
+ "source": [
+ "%load_ext autoreload\n",
+ "%autoreload 2\n",
+ "\n",
+ "import jax\n",
+ "import jax.numpy as jnp\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "from ipywidgets import interact\n",
+ "import ipywidgets as widgets\n",
+ "\n",
+ "from stljax.formula import *\n",
+ "from stljax.viz import *\n",
+ "from stljax.utils import anneal\n",
+ "\n",
+ "from matplotlib import rc\n",
+ "rc('font',**{'family':'serif','serif':['Palatino']})\n",
+ "rc('text', usetex=True)\n",
+ "\n",
+ "jax.config.update(\"jax_enable_x64\", True)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Generate data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "T = 20\n",
+ "fontsize = 14\n",
+ "true_t_start = 0.21\n",
+ "true_t_end = 0.59\n",
+ "bs = 32\n",
+ "\n",
+ "\n",
+ "key = jax.random.key(1701)\n",
+ "signal_data = jax.vmap(smooth_mask, [None, 0, None, None])(T, true_t_start + 0.02 * jax.random.normal(key, shape=(bs,)), true_t_end, 3.) + jax.random.normal(key, shape=(bs, T,)) * 0.1 - 0.5\n",
+ "plt.figure(figsize=(5,2))\n",
+ "plt.plot(jnp.linspace(0,1,T), signal_data.T, color=\"black\", alpha=0.2)\n",
+ "plt.xlabel(\"Normalized time\", fontsize=fontsize, labelpad=-1)\n",
+ "plt.ylabel(\"Signal\", fontsize=fontsize, labelpad=-1)\n",
+ "plt.grid()\n",
+ "plt.tight_layout()\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Define the STL formula with differentiable time intervals and loss function"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "pred = Predicate('x', lambda x: x)\n",
+ "phi = DifferentiableAlways(pred > 0.)\n",
+ "phi_robustness_jit = jax.jit(phi.robustness, static_argnames=(\"approx_method\"))\n",
+ "\n",
+ "\n",
+ "@functools.partial(jax.jit, static_argnames=(\"approx_method\"))\n",
+ "def loss(signal_data, t_start, t_end, scale, approx_method, temperature, coeff):\n",
+ " rob_partial = functools.partial(phi_robustness_jit, t_start=t_start, t_end=t_end, scale=scale, approx_method=approx_method, temperature=temperature)\n",
+ " robustness_ = jax.vmap(rob_partial, [0])(signal_data)\n",
+ " robustness = jax.nn.relu(-jnp.where(t_start < (t_end - 0.05), robustness_, jnp.nan)).mean()\n",
+ " return robustness + coeff * (t_start - t_end)\n",
+ "\n",
+ "\n",
+ "grad_loss = jax.jit(jax.grad(loss, [1,2]), static_argnames=(\"approx_method\"))\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Set up gradient descent routine. "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "approx_method = \"logsumexp\"\n",
+ "temperature = 1.\n",
+ "scale = 1.\n",
+ "a = -2.\n",
+ "b = 2.\n",
+ "lr = 1E-2\n",
+ "max_steps = 5000\n",
+ "scale_start = 0.1\n",
+ "scale_end = 20\n",
+ "temperature_start = 0.1\n",
+ "temperature_end = 20\n",
+ "a_list = [a]\n",
+ "b_list = [b]\n",
+ "coeff_start = 0.1\n",
+ "coeff_end = 0.\n",
+ "\n",
+ "# Gradient descent!\n",
+ "for i in range(max_steps):\n",
+ " j = (i / max_steps)\n",
+ " s = (1 - j) * scale_start + j * scale_end\n",
+ " t = (1 - j) * temperature_start + j * temperature_end\n",
+ " c = (1 - j) * coeff_start + j * coeff_end\n",
+ " a_ = jax.nn.sigmoid(a)\n",
+ " b_ = jax.nn.sigmoid(b)\n",
+ " g = grad_loss(signal_data, a_, b_, s, approx_method, t, c)\n",
+ " a -= lr * g[0] * a_ * (1 - a_)\n",
+ " b -= lr * g[1] * b_ * (1 - b_)\n",
+ " a_list.append(a)\n",
+ " b_list.append(b)\n",
+ " # print(a,b)\n",
+ "a_list = jnp.stack(a_list)\n",
+ "b_list = jnp.stack(b_list)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "step_size = 50\n",
+ "coeff = 0.1\n",
+ "\n",
+ "def visualize_loss_landscape(loss_func, signal, scale, approx_method, temperature, coeff):\n",
+ " N = 100\n",
+ " fontsize = 14\n",
+ " levels = 10\n",
+ " T = signal.shape[0]\n",
+ " starts, ends = jnp.meshgrid(jnp.linspace(0,1, N), jnp.linspace(0,1, N))\n",
+ " losses = jax.vmap(loss_func, [None, 0, 0, None, None, None, None])(signal, starts.reshape([-1,1]), ends.reshape([-1,1]), scale, approx_method, temperature, coeff).reshape([N,N])\n",
+ " \n",
+ " plt.contourf(starts, ends, losses, levels=levels, cmap=\"jet\", alpha=0.4)\n",
+ " plt.colorbar()\n",
+ " if approx_method != \"true\":\n",
+ " match approx_method:\n",
+ " case \"logsumexp\":\n",
+ " app = \"LSE\"\n",
+ " case \"softmax\":\n",
+ " app = \"soft\"\n",
+ " plt.title(\"Loss landscape \\n (c = %.2f, $\\\\tau_\\\\mathrm{%s}$ = %.2f)\"%(scale, app, temperature))\n",
+ " else:\n",
+ " plt.title(\"Loss landscape \\n (c = %.2f)\"%(scale))\n",
+ " plt.xlabel(\"$a$\", fontsize=fontsize, labelpad=-3)\n",
+ " plt.ylabel(\"$b$\", fontsize=fontsize, labelpad=-3)\n",
+ " plt.grid(zorder=-5, alpha=0.2)\n",
+ " \n",
+ " \n",
+ "def visualize_results(i, approx_method):\n",
+ " a, b = jax.nn.sigmoid(a_list[i]), jax.nn.sigmoid(b_list[i])\n",
+ " j = (i / max_steps)\n",
+ " s = (1 - j) * scale_start + j * scale_end\n",
+ " t = (1 - j) * temperature_start + j * temperature_end\n",
+ " ell = loss(signal_data, a, b, s, approx_method, t, coeff)\n",
+ " \n",
+ " # plt.figure(figsize=(4,3))\n",
+ " \n",
+ " visualize_loss_landscape(loss, signal_data, s, approx_method, t, coeff)\n",
+ " plt.plot(jax.nn.sigmoid(a_list[::step_size]), jax.nn.sigmoid(b_list[::step_size]), \"o-\", markersize=3, color=\"black\", linewidth=1)\n",
+ " current_loss = loss(signal_data, a, b, s, approx_method, t, coeff)\n",
+ " gt_loss = loss(signal_data, true_t_start, true_t_end, s, approx_method, t, coeff)\n",
+ " plt.scatter([a], [b], marker=\"o\", s=40, color=\"magenta\", label=\"Current: %.3f\"%current_loss, edgecolor=\"black\", zorder=4)\n",
+ " plt.scatter([true_t_start], [true_t_end], marker=\"*\", s=100, color=\"orange\", label=\"Ground truth: %.3f\"%gt_loss, edgecolor=\"black\", zorder=4)\n",
+ " \n",
+ "\n",
+ " plt.vlines(a, 0, 1, color=\"red\", linestyle='--')\n",
+ " plt.hlines(b, 0, 1, color=\"blue\", linestyle='--')\n",
+ " if approx_method != \"true\":\n",
+ " match approx_method:\n",
+ " case \"logsumexp\":\n",
+ " app = \"LSE\"\n",
+ " case \"softmax\":\n",
+ " app = \"soft\"\n",
+ " plt.title(\"Loss = %.5f (c = %.2f, $\\\\tau_\\\\mathrm{%s}$ = %.2f)\"%(ell, s, app, t))\n",
+ " else:\n",
+ " plt.title(\"Loss = %.5f (c = %.2f)\"%(ell, s))\n",
+ " plt.legend(loc=\"lower right\")\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "c307d3fbc6e5413bbbc0562a41b129b4",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "interactive(children=(IntSlider(value=0, description='i: ', max=4999, step=50), Output()), _dom_classes=('widg…"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "index_slider = widgets.IntSlider(value=0, min=0, max=max_steps-1, step=step_size, description='i: ')\n",
+ "interact(visualize_results, i=index_slider, approx_method=widgets.fixed(approx_method))\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "test",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.12.4"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/examples/unconstrained_trajectory_optimization.ipynb b/examples/unconstrained_trajectory_optimization.ipynb
new file mode 100644
index 0000000..beadad7
--- /dev/null
+++ b/examples/unconstrained_trajectory_optimization.ipynb
@@ -0,0 +1,733 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%load_ext autoreload\n",
+ "%autoreload 2\n",
+ "\n",
+ "import jax\n",
+ "import jax.numpy as jnp\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "from stljax.formula import *\n",
+ "from stljax.viz import *\n",
+ "from stljax.utils import anneal\n",
+ "\n",
+ "from matplotlib import rc\n",
+ "rc('font',**{'family':'serif','serif':['Palatino']})\n",
+ "rc('text', usetex=True)\n",
+ "\n",
+ "jax.config.update(\"jax_enable_x64\", True)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Some helper functions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\n",
+ "@jax.jit\n",
+ "def dynamics_discrete_step(state, control, dt=0.1):\n",
+ " '''Single integrator dynamics'''\n",
+ " return state + control * dt\n",
+ "\n",
+ "@jax.jit\n",
+ "def simulate_dynamics(controls, state0, dt):\n",
+ " T = controls.shape[0]\n",
+ " _states = [state0]\n",
+ " for t in range(T):\n",
+ " _states.append(dynamics_discrete_step(_states[-1], controls[t,:], dt))\n",
+ " return jnp.concatenate(_states, 0)\n",
+ "\n",
+ "@jax.jit\n",
+ "def compute_distance_to_point(states, point):\n",
+ " return jnp.linalg.norm(states[...,:2] - point, axis=-1, keepdims=True)\n",
+ "\n",
+ "@jax.jit\n",
+ "def compute_distance_to_origin(states):\n",
+ " return compute_distance_to_point(states, jnp.zeros(2))\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Start setting STL formulas"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": [
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# environment parameters\n",
+ "obstacle_center = jnp.array([[0,2]]) # obstacle location\n",
+ "reach_radius = 0.1\n",
+ "obstacle_radius = 0.5\n",
+ "\n",
+ "\n",
+ "distance_to_origin = Predicate(\"magnitude\", compute_distance_to_origin)\n",
+ "distance_to_obstacle = Predicate(\"distance_to_obs\", lambda x: compute_distance_to_point(x, obstacle_center))\n",
+ "\n",
+ "reach = Eventually(distance_to_origin < reach_radius)\n",
+ "avoid = Always(distance_to_obstacle > obstacle_radius)\n",
+ "# stay = Eventually(Always(distance_to_obstacle < 0.5, interval=[0, 7]), interval=[0,20]) # if you don't want to have differentiable time intervals\n",
+ "stay = DifferentiableAlways(distance_to_obstacle < 0.5)\n",
+ "\n",
+ "formula = reach & stay\n",
+ "# formula = Until(distance_to_obstacle > 0.5, Always(distance_to_origin < 0.5), interval=[40,45])\n",
+ "\n",
+ "make_stl_graph(formula)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Defining cost function"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\n",
+ "def exponenial_penalty(x):\n",
+ " return jnp.exp(x)\n",
+ "\n",
+ "@functools.partial(jax.jit, static_argnames=(\"approx_method\"))\n",
+ "def loss(controls, t_start, t_end, scale, state0, umax, dt, coeffs=[1., 0.1, 5., 0.], approx_method=\"true\", temperature=None):\n",
+ " # see paper for more details on loss function\n",
+ " # generate trajectory from control sequence and reverse along time dimension\n",
+ " traj = simulate_dynamics(controls, state0, dt)\n",
+ " # loss functions\n",
+ " loss_robustness = jax.nn.relu(-formula.robustness(traj, t_start=t_start, t_end=t_end, scale=scale, approx_method=approx_method, temperature=temperature))\n",
+ " loss_control_smoothness = 0 * jnp.abs(jnp.diff(controls, axis=1)).sum(-1).mean() + (controls**2).sum(-1).mean() # make controls smoother\n",
+ " loss_control_limits = jax.nn.relu(jnp.linalg.norm(controls, axis=-1) - umax).mean() # penalize control limit violation\n",
+ " min_interval = 0.2\n",
+ " interval_difference = min_interval - (t_end - t_start) # negative is good\n",
+ " cost_array = jnp.array([\n",
+ " loss_robustness,\n",
+ " loss_control_smoothness,\n",
+ " loss_control_limits,\n",
+ " exponenial_penalty(2 * interval_difference)\n",
+ " ])\n",
+ " return jnp.dot(jnp.array(coeffs), cost_array)\n",
+ " # return coeffs[0] * loss_robustness + coeffs[1] * loss_control_smoothness + coeffs[2] * loss_control_limits + coeffs[3] * exponenial_penalty(2 * interval_difference)\n",
+ " \n",
+ "grad_jit = jax.jit(jax.grad(loss, [0,1,2]), static_argnames=\"approx_method\")\n",
+ "\n",
+ "@jax.jit\n",
+ "def true_robustness(controls, t_start, t_end, scale, state0, dt):\n",
+ " traj = simulate_dynamics(controls, state0, dt)\n",
+ " return formula.robustness(traj, t_start=t_start, t_end=t_end, scale=scale).mean()\n",
+ "\n",
+ "@jax.jit\n",
+ "def schedule(i, i_max, start, end):\n",
+ " j = (i / i_max)\n",
+ " temp = anneal(j)\n",
+ " return temp * (end - start) + start\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Setting up parameters to begin the gradient descent routine"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "np.random.seed(123)\n",
+ "T = 51 # time horizon\n",
+ "dt = 0.1 # time step size\n",
+ "ts = jnp.array([t * dt for t in range(T)]) # time step array\n",
+ "umax = 2. # max control limit\n",
+ "\n",
+ "controls = jnp.array(np.random.randn(T,2)) # initial random control sequence\n",
+ "state0 = jnp.ones(2).reshape([1,2]) * 3. # initial state\n",
+ "states_ = [simulate_dynamics(controls, state0, dt)] # list to collect all the state trajectories at each gradient descent step\n",
+ "\n",
+ "# initial values for time interval (before passing through softmax)\n",
+ "t_start = -1.8\n",
+ "t_end = 1.5\n",
+ "\n",
+ "lr = 1E-2 # learning rate\n",
+ "approx_method = \"logsumexp\"\n",
+ "n_steps = 10000 # number of gradient steps\n",
+ "\n",
+ "# start and end values for annealing temperature and scale\n",
+ "start_temp = 1\n",
+ "end_temp = 100\n",
+ "\n",
+ "start_scale = 10\n",
+ "end_scale = 100\n",
+ "\n",
+ "coeffs = [1.1, 0.5, 2., 0.05] # coefficients for loss function"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Run the functions to test them out\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\n",
+ "scale = 0.1\n",
+ "loss(controls, t_start, t_end, scale, state0, umax, dt)\n",
+ "loss(controls, t_start, t_end, scale, state0, umax, dt, approx_method=\"softmax\", temperature=5)\n",
+ "true_robustness(controls, t_start, t_end, scale, state0, dt)\n",
+ "grad_jit(controls, t_start, t_end, scale, state0, umax, dt, coeffs, approx_method, 0.2);\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Run optimization loop!"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " 0 -- true robustness: -3.73 smoothness: 2.58 control limits: 0.07 interval: 0.39 t_start: 0.14 t_end: 0.82\n",
+ " 50 -- true robustness: -3.64 smoothness: 2.51 control limits: 0.07 interval: 0.40 t_start: 0.14 t_end: 0.80\n",
+ "100 -- true robustness: -3.56 smoothness: 2.45 control limits: 0.06 interval: 0.40 t_start: 0.14 t_end: 0.80\n",
+ "150 -- true robustness: -3.48 smoothness: 2.39 control limits: 0.05 interval: 0.40 t_start: 0.14 t_end: 0.80\n",
+ "200 -- true robustness: -3.40 smoothness: 2.34 control limits: 0.05 interval: 0.41 t_start: 0.15 t_end: 0.80\n",
+ "250 -- true robustness: -3.32 smoothness: 2.29 control limits: 0.04 interval: 0.43 t_start: 0.16 t_end: 0.78\n",
+ "300 -- true robustness: -3.25 smoothness: 2.24 control limits: 0.04 interval: 0.43 t_start: 0.16 t_end: 0.78\n",
+ "350 -- true robustness: -3.17 smoothness: 2.20 control limits: 0.03 interval: 0.43 t_start: 0.16 t_end: 0.78\n",
+ "400 -- true robustness: -3.10 smoothness: 2.16 control limits: 0.03 interval: 0.44 t_start: 0.16 t_end: 0.78\n",
+ "450 -- true robustness: -3.03 smoothness: 2.12 control limits: 0.03 interval: 0.46 t_start: 0.18 t_end: 0.77\n",
+ "500 -- true robustness: -2.96 smoothness: 2.09 control limits: 0.02 interval: 0.47 t_start: 0.18 t_end: 0.76\n",
+ "550 -- true robustness: -2.89 smoothness: 2.06 control limits: 0.02 interval: 0.47 t_start: 0.18 t_end: 0.76\n",
+ "600 -- true robustness: -2.82 smoothness: 2.03 control limits: 0.02 interval: 0.49 t_start: 0.20 t_end: 0.76\n",
+ "650 -- true robustness: -2.75 smoothness: 2.01 control limits: 0.02 interval: 0.50 t_start: 0.20 t_end: 0.75\n",
+ "700 -- true robustness: -2.69 smoothness: 1.99 control limits: 0.02 interval: 0.52 t_start: 0.22 t_end: 0.74\n",
+ "750 -- true robustness: -2.61 smoothness: 1.97 control limits: 0.02 interval: 0.55 t_start: 0.24 t_end: 0.74\n",
+ "800 -- true robustness: -2.52 smoothness: 1.96 control limits: 0.02 interval: 0.57 t_start: 0.26 t_end: 0.74\n",
+ "850 -- true robustness: -2.42 smoothness: 1.95 control limits: 0.02 interval: 0.60 t_start: 0.27 t_end: 0.73\n",
+ "900 -- true robustness: -2.33 smoothness: 1.94 control limits: 0.02 interval: 0.63 t_start: 0.29 t_end: 0.72\n",
+ "950 -- true robustness: -2.24 smoothness: 1.93 control limits: 0.02 interval: 0.64 t_start: 0.30 t_end: 0.72\n",
+ "1000 -- true robustness: -2.15 smoothness: 1.92 control limits: 0.02 interval: 0.69 t_start: 0.32 t_end: 0.71\n",
+ "1050 -- true robustness: -2.07 smoothness: 1.92 control limits: 0.02 interval: 0.72 t_start: 0.34 t_end: 0.70\n",
+ "1100 -- true robustness: -1.99 smoothness: 1.91 control limits: 0.02 interval: 0.74 t_start: 0.35 t_end: 0.70\n",
+ "1150 -- true robustness: -1.91 smoothness: 1.91 control limits: 0.02 interval: 0.77 t_start: 0.37 t_end: 0.70\n",
+ "1200 -- true robustness: -1.83 smoothness: 1.91 control limits: 0.02 interval: 0.78 t_start: 0.38 t_end: 0.70\n",
+ "1250 -- true robustness: -1.76 smoothness: 1.91 control limits: 0.02 interval: 0.81 t_start: 0.39 t_end: 0.70\n",
+ "1300 -- true robustness: -1.69 smoothness: 1.91 control limits: 0.02 interval: 0.81 t_start: 0.39 t_end: 0.70\n",
+ "1350 -- true robustness: -1.63 smoothness: 1.91 control limits: 0.02 interval: 0.80 t_start: 0.39 t_end: 0.70\n",
+ "1400 -- true robustness: -1.58 smoothness: 1.92 control limits: 0.02 interval: 0.80 t_start: 0.39 t_end: 0.71\n",
+ "1450 -- true robustness: -1.52 smoothness: 1.92 control limits: 0.02 interval: 0.78 t_start: 0.39 t_end: 0.72\n",
+ "1500 -- true robustness: -1.48 smoothness: 1.92 control limits: 0.02 interval: 0.77 t_start: 0.39 t_end: 0.72\n",
+ "1550 -- true robustness: -1.44 smoothness: 1.92 control limits: 0.02 interval: 0.74 t_start: 0.39 t_end: 0.74\n",
+ "1600 -- true robustness: -1.42 smoothness: 1.92 control limits: 0.02 interval: 0.73 t_start: 0.39 t_end: 0.75\n",
+ "1650 -- true robustness: -1.41 smoothness: 1.90 control limits: 0.02 interval: 0.71 t_start: 0.39 t_end: 0.76\n",
+ "1700 -- true robustness: -1.40 smoothness: 1.88 control limits: 0.02 interval: 0.70 t_start: 0.39 t_end: 0.76\n",
+ "1750 -- true robustness: -1.41 smoothness: 1.86 control limits: 0.02 interval: 0.68 t_start: 0.38 t_end: 0.78\n",
+ "1800 -- true robustness: -1.41 smoothness: 1.83 control limits: 0.02 interval: 0.67 t_start: 0.38 t_end: 0.78\n",
+ "1850 -- true robustness: -1.41 smoothness: 1.81 control limits: 0.01 interval: 0.66 t_start: 0.38 t_end: 0.78\n",
+ "1900 -- true robustness: -1.42 smoothness: 1.79 control limits: 0.01 interval: 0.65 t_start: 0.38 t_end: 0.79\n",
+ "1950 -- true robustness: -1.43 smoothness: 1.77 control limits: 0.01 interval: 0.64 t_start: 0.37 t_end: 0.80\n",
+ "2000 -- true robustness: -1.43 smoothness: 1.74 control limits: 0.01 interval: 0.64 t_start: 0.37 t_end: 0.80\n",
+ "2050 -- true robustness: -1.44 smoothness: 1.72 control limits: 0.01 interval: 0.63 t_start: 0.37 t_end: 0.81\n",
+ "2100 -- true robustness: -1.44 smoothness: 1.71 control limits: 0.01 interval: 0.62 t_start: 0.37 t_end: 0.81\n",
+ "2150 -- true robustness: -1.44 smoothness: 1.69 control limits: 0.01 interval: 0.61 t_start: 0.37 t_end: 0.82\n",
+ "2200 -- true robustness: -1.44 smoothness: 1.67 control limits: 0.01 interval: 0.61 t_start: 0.37 t_end: 0.82\n",
+ "2250 -- true robustness: -1.44 smoothness: 1.65 control limits: 0.01 interval: 0.61 t_start: 0.37 t_end: 0.82\n",
+ "2300 -- true robustness: -1.43 smoothness: 1.64 control limits: 0.01 interval: 0.60 t_start: 0.37 t_end: 0.83\n",
+ "2350 -- true robustness: -1.43 smoothness: 1.62 control limits: 0.01 interval: 0.59 t_start: 0.37 t_end: 0.83\n",
+ "2400 -- true robustness: -1.41 smoothness: 1.61 control limits: 0.00 interval: 0.59 t_start: 0.37 t_end: 0.83\n",
+ "2450 -- true robustness: -1.39 smoothness: 1.59 control limits: 0.00 interval: 0.59 t_start: 0.37 t_end: 0.84\n",
+ "2500 -- true robustness: -1.36 smoothness: 1.58 control limits: 0.00 interval: 0.59 t_start: 0.37 t_end: 0.84\n",
+ "2550 -- true robustness: -1.33 smoothness: 1.56 control limits: 0.00 interval: 0.59 t_start: 0.37 t_end: 0.84\n",
+ "2600 -- true robustness: -1.28 smoothness: 1.55 control limits: 0.00 interval: 0.59 t_start: 0.37 t_end: 0.84\n",
+ "2650 -- true robustness: -1.23 smoothness: 1.54 control limits: 0.00 interval: 0.59 t_start: 0.37 t_end: 0.84\n",
+ "2700 -- true robustness: -1.18 smoothness: 1.52 control limits: 0.00 interval: 0.59 t_start: 0.37 t_end: 0.84\n",
+ "2750 -- true robustness: -1.12 smoothness: 1.51 control limits: 0.00 interval: 0.59 t_start: 0.37 t_end: 0.84\n",
+ "2800 -- true robustness: -1.06 smoothness: 1.50 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "2850 -- true robustness: -1.01 smoothness: 1.49 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "2900 -- true robustness: -0.96 smoothness: 1.48 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "2950 -- true robustness: -0.91 smoothness: 1.47 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3000 -- true robustness: -0.86 smoothness: 1.46 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3050 -- true robustness: -0.82 smoothness: 1.45 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3100 -- true robustness: -0.78 smoothness: 1.44 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3150 -- true robustness: -0.74 smoothness: 1.43 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3200 -- true robustness: -0.71 smoothness: 1.42 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3250 -- true robustness: -0.68 smoothness: 1.41 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3300 -- true robustness: -0.65 smoothness: 1.40 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3350 -- true robustness: -0.63 smoothness: 1.39 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3400 -- true robustness: -0.60 smoothness: 1.38 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3450 -- true robustness: -0.58 smoothness: 1.37 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3500 -- true robustness: -0.56 smoothness: 1.36 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3550 -- true robustness: -0.54 smoothness: 1.35 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3600 -- true robustness: -0.52 smoothness: 1.34 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3650 -- true robustness: -0.51 smoothness: 1.33 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3700 -- true robustness: -0.49 smoothness: 1.32 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3750 -- true robustness: -0.48 smoothness: 1.31 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3800 -- true robustness: -0.46 smoothness: 1.30 control limits: 0.00 interval: 0.58 t_start: 0.37 t_end: 0.84\n",
+ "3850 -- true robustness: -0.45 smoothness: 1.29 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "3900 -- true robustness: -0.44 smoothness: 1.28 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "3950 -- true robustness: -0.43 smoothness: 1.28 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "4000 -- true robustness: -0.41 smoothness: 1.27 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "4050 -- true robustness: -0.40 smoothness: 1.26 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "4100 -- true robustness: -0.39 smoothness: 1.25 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "4150 -- true robustness: -0.38 smoothness: 1.24 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "4200 -- true robustness: -0.37 smoothness: 1.24 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "4250 -- true robustness: -0.37 smoothness: 1.23 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "4300 -- true robustness: -0.36 smoothness: 1.22 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "4350 -- true robustness: -0.35 smoothness: 1.22 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "4400 -- true robustness: -0.34 smoothness: 1.21 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "4450 -- true robustness: -0.33 smoothness: 1.21 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "4500 -- true robustness: -0.32 smoothness: 1.20 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "4550 -- true robustness: -0.32 smoothness: 1.20 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "4600 -- true robustness: -0.31 smoothness: 1.19 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "4650 -- true robustness: -0.30 smoothness: 1.19 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "4700 -- true robustness: -0.30 smoothness: 1.19 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "4750 -- true robustness: -0.29 smoothness: 1.19 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "4800 -- true robustness: -0.28 smoothness: 1.19 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "4850 -- true robustness: -0.28 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "4900 -- true robustness: -0.27 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "4950 -- true robustness: -0.27 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5000 -- true robustness: -0.26 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5050 -- true robustness: -0.26 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5100 -- true robustness: -0.25 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5150 -- true robustness: -0.25 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5200 -- true robustness: -0.24 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5250 -- true robustness: -0.24 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5300 -- true robustness: -0.23 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5350 -- true robustness: -0.23 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5400 -- true robustness: -0.22 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5450 -- true robustness: -0.22 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5500 -- true robustness: -0.22 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5550 -- true robustness: -0.21 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5600 -- true robustness: -0.21 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5650 -- true robustness: -0.20 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5700 -- true robustness: -0.20 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5750 -- true robustness: -0.19 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5800 -- true robustness: -0.19 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5850 -- true robustness: -0.19 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5900 -- true robustness: -0.18 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "5950 -- true robustness: -0.18 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6000 -- true robustness: -0.18 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6050 -- true robustness: -0.17 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6100 -- true robustness: -0.17 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6150 -- true robustness: -0.16 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6200 -- true robustness: -0.16 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6250 -- true robustness: -0.16 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6300 -- true robustness: -0.15 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6350 -- true robustness: -0.15 smoothness: 1.18 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6400 -- true robustness: -0.15 smoothness: 1.19 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6450 -- true robustness: -0.14 smoothness: 1.19 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6500 -- true robustness: -0.14 smoothness: 1.19 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6550 -- true robustness: -0.14 smoothness: 1.19 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6600 -- true robustness: -0.13 smoothness: 1.19 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6650 -- true robustness: -0.13 smoothness: 1.19 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6700 -- true robustness: -0.13 smoothness: 1.19 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6750 -- true robustness: -0.12 smoothness: 1.19 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6800 -- true robustness: -0.12 smoothness: 1.20 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6850 -- true robustness: -0.12 smoothness: 1.20 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6900 -- true robustness: -0.11 smoothness: 1.20 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "6950 -- true robustness: -0.11 smoothness: 1.20 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7000 -- true robustness: -0.11 smoothness: 1.20 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7050 -- true robustness: -0.10 smoothness: 1.20 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7100 -- true robustness: -0.10 smoothness: 1.21 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7150 -- true robustness: -0.10 smoothness: 1.21 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7200 -- true robustness: -0.10 smoothness: 1.21 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7250 -- true robustness: -0.09 smoothness: 1.21 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7300 -- true robustness: -0.09 smoothness: 1.21 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7350 -- true robustness: -0.09 smoothness: 1.21 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7400 -- true robustness: -0.08 smoothness: 1.22 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7450 -- true robustness: -0.08 smoothness: 1.22 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7500 -- true robustness: -0.08 smoothness: 1.22 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7550 -- true robustness: -0.08 smoothness: 1.22 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7600 -- true robustness: -0.07 smoothness: 1.22 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7650 -- true robustness: -0.07 smoothness: 1.23 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7700 -- true robustness: -0.07 smoothness: 1.23 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7750 -- true robustness: -0.06 smoothness: 1.23 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7800 -- true robustness: -0.06 smoothness: 1.23 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7850 -- true robustness: -0.06 smoothness: 1.23 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7900 -- true robustness: -0.06 smoothness: 1.24 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "7950 -- true robustness: -0.05 smoothness: 1.24 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "8000 -- true robustness: -0.05 smoothness: 1.24 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "8050 -- true robustness: -0.05 smoothness: 1.24 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "8100 -- true robustness: -0.05 smoothness: 1.24 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "8150 -- true robustness: -0.04 smoothness: 1.25 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "8200 -- true robustness: -0.04 smoothness: 1.25 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "8250 -- true robustness: -0.04 smoothness: 1.25 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "8300 -- true robustness: -0.04 smoothness: 1.25 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "8350 -- true robustness: -0.04 smoothness: 1.25 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "8400 -- true robustness: -0.03 smoothness: 1.25 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "8450 -- true robustness: -0.03 smoothness: 1.26 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.85\n",
+ "8500 -- true robustness: -0.03 smoothness: 1.26 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "8550 -- true robustness: -0.03 smoothness: 1.26 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "8600 -- true robustness: -0.03 smoothness: 1.26 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "8650 -- true robustness: -0.02 smoothness: 1.26 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "8700 -- true robustness: -0.02 smoothness: 1.26 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "8750 -- true robustness: -0.02 smoothness: 1.26 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "8800 -- true robustness: -0.02 smoothness: 1.26 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "8850 -- true robustness: -0.02 smoothness: 1.27 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "8900 -- true robustness: -0.02 smoothness: 1.27 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "8950 -- true robustness: -0.02 smoothness: 1.27 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9000 -- true robustness: -0.02 smoothness: 1.27 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9050 -- true robustness: -0.01 smoothness: 1.27 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9100 -- true robustness: -0.01 smoothness: 1.27 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9150 -- true robustness: -0.01 smoothness: 1.27 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9200 -- true robustness: -0.01 smoothness: 1.27 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9250 -- true robustness: -0.01 smoothness: 1.27 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9300 -- true robustness: -0.01 smoothness: 1.27 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9350 -- true robustness: -0.01 smoothness: 1.27 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9400 -- true robustness: -0.01 smoothness: 1.27 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9450 -- true robustness: -0.01 smoothness: 1.27 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9500 -- true robustness: -0.01 smoothness: 1.27 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9550 -- true robustness: -0.00 smoothness: 1.27 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9600 -- true robustness: -0.00 smoothness: 1.27 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9650 -- true robustness: -0.00 smoothness: 1.28 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9700 -- true robustness: -0.00 smoothness: 1.28 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9750 -- true robustness: -0.00 smoothness: 1.28 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9800 -- true robustness: 0.00 smoothness: 1.28 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9850 -- true robustness: 0.00 smoothness: 1.28 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9900 -- true robustness: 0.00 smoothness: 1.28 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n",
+ "9950 -- true robustness: 0.00 smoothness: 1.28 control limits: 0.00 interval: 0.57 t_start: 0.37 t_end: 0.84\n"
+ ]
+ }
+ ],
+ "source": [
+ "\n",
+ "for i in range(n_steps):\n",
+ " temperature = schedule(i, n_steps, start_temp, end_temp)\n",
+ " scale = schedule(i, n_steps, start_scale, end_scale)\n",
+ " \n",
+ " t_start_ = jax.nn.sigmoid(t_start)\n",
+ " t_end_ = jax.nn.sigmoid(t_end)\n",
+ " g1, g2, g3 = grad_jit(controls, t_start_, t_end_, scale, state0, umax, dt, coeffs, approx_method, temperature) # take gradient\n",
+ " if ((jnp.linalg.norm(g1)/ T / 2) < 5E-6) or (jnp.isnan(g1).sum() > 0):\n",
+ " break\n",
+ " # g = jax.grad(loss, 0)(controls, state0, umax, approx_method, temperature) # not jitting\n",
+ " controls -= g1 * lr\n",
+ " t_start -= g2 * lr * t_start_ * (1 - t_start_) \n",
+ " t_end -= g3 * lr * t_end_ * (1 - t_end_)\n",
+ " # print(g2, g3, g3 * lr * t_end_ * (1 - t_end_))\n",
+ " \n",
+ " states_.append(simulate_dynamics(controls, state0, dt))\n",
+ " if (i % 50) == 0:\n",
+ " t_start_ = jax.nn.sigmoid(t_start)\n",
+ " t_end_ = jax.nn.sigmoid(t_end)\n",
+ " print(\"%3i -- true robustness: %.2f smoothness: %.2f control limits: %.2f interval: %.2f t_start: %.2f t_end: %.2f\"%(i, true_robustness(controls, t_start_, t_end_, 1000., state0, dt), loss(controls, t_start_, t_end_, 1000., state0, umax, dt, coeffs=[0., 1., 0., 0.]), loss(controls, t_start_, t_end_, 1000., state0, umax, dt, coeffs=[0., 0., 1., 0.]), loss(controls, t_start_, t_end_, 1000., state0, umax, dt, coeffs=[0., 0., 0., 1.]), t_start_, t_end_))\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAGGCAYAAACUkchWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeVxc1fn48c9sDDvDsJOAZMim0ZiQpG41WgWtWq2toLXtr/1aTbC21da2YOyqto3Eqq1dLESrti5NwLXVasCqcTcBs2sWhiyEfRmYgWHW+/tjnBsm7AkJCTzv14sXzJ1z7znnMjN37nPPfY5GURQFIYQQQgghhBBCCCGEEEIMoJ3oBgghhBBCCCGEEEIIIYQQJyoJogshhBBCCCGEEEIIIYQQQ5AguhBCCCGEEEIIIYQQQggxBAmiCyGEEEIIIYQQQgghhBBDkCC6EEIIIYQQQgghhBBCCDEECaILIYQQQgghhBBCCCGEEEOQILoQQgghhBBCCCGEEEIIMQQJogshhBBCCCGEEEIIIYQQQ5AguhBCCCGEmPQqKirIy8tDo9GQnZ1NQUEBBQUFZGdns2jRIioqKsatrqqqKvLy8sat3FQj+0UIIYQQQpxoJIguxEmk/8n+okWL0Gg0aDQaFi1aRF5enrpcCCGEEKHy8/OprKwEIDc3l/LycsrLy6mtrcVisVBQUEBVVdW41GWz2di4cSM2my1keVVVVciyocpNNbJfhBBCjJXNZqO4uJi8vDz1XDg7O5u8vDzKysomunkjqqiooKCggPj4eDneCXGSkCC6ECcRs9lMbW0t1dXVVFdXk5OTg8lkorq6msrKSqqrq1m8ePERb3/RokUUFxePW3sPPykWQgghTkQlJSUAapD9aOXn59PZ2YnJZFKXlZWVDRhdPVi5qUb2ixBCiLEqKytjxowZLFmyhMrKSvVcuLa2lsLCQvW4fiyM1zlufn4+1113nZwvC3ESkSC6ECeRw08yzWYzZrM5ZNnRjES3WCxkZ2cf8fr9DXZSLIQQQpyIgsfShISEY16HBIZDyX4RQggxFmVlZRQWFvL666+Tn58/4Pn8/PxBl49X3eN5jivHPiFOLhJEF+IkMpovA8uXLz/i7ZeXlx/V+v3JSbEQQoiTRTCNS//jbFlZGcXFxRQWFg56p1bwNuzCwkLy8vLU52tqaigsLBxwe/aGDRvU9crKynjzzTcHLTdS3WVlZRQUFLBo0SKsVqua3m3RokXU1NSM2Nfhtr1q1So1V/yqVauAQ7fL918W3E5hYaHa/2Dd/ftvtVrVW9WtVuug7RnNfqmqqgq55T34d15eHlarNWRZcL8M1u/B2iuEEOLkYbPZKCwsZPny5eTk5AxZbsWKFcekfjnHFWJq0090A4QQ46empobS0lLWrl1LdXU1xcXFVFVVUV1djcViAQInyGvWrAECOWGDt7qtWrWKyspKLBYLpaWl6jbLysqorq4GwGq1UlJSEvKFpaamhpUrV1JTU0NHRwcrVqygqKgo5KS4o6ODa6+9FpPJRFlZGbW1tWq+0/5tGK79NpuNjo4Otd7c3FyAkPy1wWVCCCHESGw2GyaTiaqqKoqLiykvL1ePlcXFxdhsNvV4aLPZmDFjBjU1NVRWVmK1Wlm2bBmdnZ3q9goKCoDAXV0mkykkMF5VVaUGdoO/s7KyBpQbTd3BfO5Wq5XS0lJef/11Ojo6yMvL4+KLLw5p0+FG2nZRURGLFi3CZrNRXl4OBAIF1113HcXFxRQVFQGBO+NycnLU7axatSqk7o6ODjX4vmTJEmpqagbcOTeW/RJcN7jN4PeG4Jww/b9LLFq0iIKCAvW7y2jaK4QQ4uSwdu1aYOAd2oc7PMg93DloWVmZemwvLy+noKCAmpoacnJyWL16dci57+HnuLNnz+aZZ54Z8vx7uHpHq6KigjVr1mA2m7FareTk5IRsY6Tz9eCxMzjXSPC5kpIS9btEVVWVekwMLquoqKCkpGTAAIPB6hrLPoShYwij6Y8QE0oRQpy0cnNzFYvFoj6urq5W8vPzFUDJz89XSkpKFIvFonR2dqrlq6urFUVRlPLycgVQysvL1XVNJpOyfPnykO0XFRWpj0tKShSTyaQ+Li8vV/Lz89XHlZWVSm5urlJZWam2o6SkRCkpKVE6OzuVoqKikO13dnYqJpNJyc3NHbH9wfaZTCa1D8E6AaWysnI8dqkQQohJDlCWL1+uVFdXK0VFRUp5ebl6nFQURamtrVWAkGONoihKaWmpujx4DK2trQ1ZLyh4bOq/3eA6/R1ebjR1K4qiFBUVhRyP+2+/fzv6G+22g9vpX66kpER9XF1dPaBvwW0Hj8XBfgW/Y/Qve7jR7Jf+5fovKyoqGrBs+fLlIdsbTXuFEEKcHIKf8UMd6wYz0jlobW2tkpubq5hMJqWoqEjp7OxUamtrFYvFEnKsHewc94033hjy/HWkeoPbPPwY1V9tbe2A433/8++Rztdra2uV/Pz8kO0H2xts0+HHzc7OzgGxgpHqGu0+VJShYwij6Y8QE02C6EKcxA4PoivK8Ceuh5845+TkhBzY+z8e6aQz+PfhB/xgvYefFI/25H249peUlAyos7KyUikpKRlqFwkhhBAhgkH0oQwWrFWUQ8ex4IVhi8WiAIrFYlGD8kFHGkQfTd2KEggIHH78Dx63hwosjHbbiqIMuKje/+/gsXj58uXK8uXLlaKiIrU9wWP3SEGBwdo13H4ZqlzwO8Rwy0bTXiGEECeH4MXT0V4EHe+L08Mds/qfv4713Heo4+VwF+1Hc5H48AFoijL4wLjD+9TZ2TlgwN1IdY1mHw4XQ5CL3uJkIOlchJikgqlN+t/KlpOTQ01NDRs3blSX9U+R0l8wTUowV2pwOxaLBZvNRlVVFSaTacCtckPlbQ/mHg3eKn94O6uqqkJu0xqs/cuXL6e4uJiysjL1dq/S0lJWr149aJ1CCCHEWAWPix0dHSHHoP55UE0mE7W1tVRUVFBZWcnatWvV24+P5pbj0dR9PLa9YsUKNW3Kxo0b1VQ1AO3t7QAhqd+AMd+ePh4GSxFz+LITqb1CCCGOzpIlSwCGnGfjcGM5Bz38+HH4OiPpf/4aPJce7bnvcNu0WCxkZ2djsVjIzc2lsLBQ3QYMfb5eU1MTkr5lLA7/vjFSXUEj7cPhYgjBeVdGqkOIiSRBdCGmkGBO0OCJY2Vl5ZBlRzrpDOZVHa3xCAyYTCaWL19OaWkpRUVF2Gw2zGazTOwihBBi3CxevBgInOj1n2w7eBzLzc2lpqYGi8VCfn4++fn5lJaWEh8fz8aNG48qiD6auo/HtvtftG5vbw8JOAcDGFVVVSfFXCQnW3uFEEIMrX8+7/7HsqEcy4vTx6Pe4S7aj3S+XlZWBhyaA+ZojNcF6WB++GNZhxDHknaiGyCEOD4qKiqoqqoa9UGo/0nncM9XVFSManv9T977G2tgoLCwEKvVSlVVFStXrlSvVAshhBDjIScnh9zc3AEXi0tKSigpKcFisajHoaDgRd1rr712xO1XVVWpI+OOpO6RDHVyOpZtm0wm8vPzWblyJdnZ2SHbyc/Px2KxqJOGBVVUVBzVSLHh9stQhrqbrr9j1V4hhBDHn8ViUSfEDI7IHs54nYOO1XjVGxxNHrxg39nZiclkYuPGjSOerwfbEJyMdST9j4mHH49Hqmu0hoshjFcdQhxTE51PRghx5IKTd/Q3VF61YP614ARqwVxo/Sc2OTxHenAikP551PpPwJaTk6OYTKaQHGXBfGfB/GeVlZXq+sH2Hj4BWP88rKPJo5qTk6Pk5uaGTEgihBBCDKe8vFzJzc1VgJCJr4ayfPlyJScnR82h3f9YV1lZqR6Lgrm2+x//cnJy1EnGgsfAzs5Odfny5cuHLDdS3cHjd3A7wT4Ec4n2n0R8rP3qb7DcpEHBicgsFotisViU/Pz8kDlR+vertLR0yLaMdr+UlpaGLKutrQ1Z1j8nffD7R/9lw7VXCCHEySeYGz0nJ0eprKwcMA9Y/3Pa0ZyDDjfXyOHnwoef4w51/joe577l5eUhx6vgnCzB8iOdrwefDx7rq6urB0z2GexnsF3V1dXq96X+dY9U12j34XAxhJHqEGKiSRBdiJNQbW2tOot28ISysrJyxBPX4MEwNzc3ZAbtYLnDg+ijOekMPm8ymZScnJyQCVX6n9z2Lz/UyftoT7yDFwRkghEhhBBCCCGEmHqC58TBoKzFYlHPMw+fZHu8Lk6PdOH38PPXsZz7DnYBfLiL9sH2DHe+3tnZqeTn56v7p7y8fMDEosF2BvdBMFYQvEjR//x+qLrGeoF/uBiCXPQWJzKNoijKMRvmLoQ4qSxatIjFixcPyEN2IsrOzqa2tnaimyGEEEIIIYQQQpwUVq1axcqVK+ns7Jzopghx0pGc6EIIlc1mG5D79ERUU1MjudCFEEIIIYQQQgghxHGhn+gGCCFOHB0dHeqM5yeylStXUl5ePtHNEEIIIYQQQgghhBBTgATRhRBAYHS32Ww+ZjOUHy2bzcbGjRuxWq1YLJaJbo4QQgghhBBCCHFSqa2txWazYbPZMJlME90cIU4qkhNdCEFFRQWVlZWUlJScsAfSsrIyCgsLyc/Pl1HoQgghhBBCCCHEGKxatSrkcX5+vgxQE2IMJIguhBBCCCGEEEIIIYQQQgxBJhYVQgghhBBCCCGEEEIIIYYwqXOi+/1+GhoaiImJQaPRTHRzhBBCiFFTFAW73U56ejpa7dS65i3HbyGEECerqXr8lmO3EEKIk9Voj92TOoje0NBARkbGRDdDCCGEOGIHDhxg+vTpE92M40qO30IIIU52U+34LcduIYQQJ7uRjt2TOogeExMDBHZCbGzsManD4/Gwbt06LrnkEgwGwzGpYzKQ/TQy2UejI/tpZLKPRudE30/d3d1kZGSox7Kp5Hgcv080J/rr8ViRfku/pwLp99Tq91Q9fk/FYzdM3de59Hvq9Hsq9hmk31Ot36M9dk/qIHrwNrLY2NhjGkSPjIwkNjZ2Sr3Axkr208hkH42O7KeRyT4anZNlP03FW6KPx/H7RHOyvB7Hm/Rb+j0VSL+nVr+Dptrxeyoeu2Hqvs6l31On31OxzyD9nmr9Dhrp2D11krQJIYQQQgghhBBCCCGEEGMkQXQhhBBCCCGEEEIIIYQQYggSRBdCCCGEEEIIIYQQQgghhjCpc6ILIYQQQgghpg6fz4fH45noZoTweDzo9Xr6+vrw+XwT3ZzjZrL222AwoNPpJroZYoIc/hkzWV/nI5F+T51+T8U+g/R7svV7vI7dEkQXQgghhBBCnNQURaGpqQmbzTbRTRlAURRSU1M5cODAlJpscjL322QykZqaOun6JYY21GfMZH6dD0f6PXX6PRX7DNLvydjv8Th2SxBdCCGEEEIIcVILBreSk5OJjIw8oU78/H4/DoeD6OhotNqpk01zMvZbURR6e3tpaWkBIC0tbYJbJI6XoT5jJuPrfDSk31On31OxzyD9nkz9Hs9j94QF0SsqKli5ciU2m42cnBxWr16NyWQaUK6qqirksc1mIz8//zi1UgghhBBCCHEi8/l8anArISFhopszgN/vx+12Ex4ePmlOSEdjsvY7IiICgJaWFpKTkyW1yxQw3GfMZH2dj0T6PXX6PRX7DNLvydbv8Tp2T0gQ3Wq1UlpaSnl5OTabjYKCAoqLiyktLR1QtrCwcMAyCaILIYQQQgghADU/cWRk5AS3REwVwdeax+ORIPoUIJ8xQghx8huPY/eEBNFtNhvl5eXqyPPCwkI2bNgwaNnc3NxBg+tCCCGEEEIIEXQipXARk5u81qYm+b8LIcTJazw+wydkbH5OTk5I6pba2lpWrFgxEU0RQgghhBBCCCGEECeYqqoq8vLyBs1QIISYOFP1vTmhE4uWlZVRWVmJzWYbNB86BFK/5OXlUVVVhcViobS0lNzc3EHLulwuXC6X+ri7uxsIDNUP3oI13oLbPVbbnyxkP41M9tHoyH4ameyj0TnR99OJ2i4hhBBCCCFGUlVVhdVqZfny5Ue8jdzcXMrLy8exVeJEU1VVRUlJiRrvE8fH0b4/p+p7c0KD6IsXL2b58uUUFxezaNEi6urqBgTTc3JyWLFiBSaTicLCQvLy8ujs7Bw06L5y5UruuuuuAcvXrVt3zPOXVVZWHtPtTxayn0Ym+2h0ZD+NTPbR6Jyo+6m3t3eimyCEEEIIIcQRKS0txWKxHPV2TCYTNpvt6BskjgkJxp6cxuP9ORXfmxMaRM/JyQFgxYoVrFq1iqqqqgGThpaUlKh/l5aWUlZWxsaNGwcdjb5ixQpuv/129XF3dzcZGRlccsklxMbGHpM+eDweKisrycvLw2AwHJM6JgPZTyOTfTQ6sp9GJvtodE70/RS8m0oIIYQQQoixqqmpUWMuwcdAyLKgqqoqNZBZWFhITk4OVquV0tJSEhIS2LBhAxaLJSQ+09XVRVtbG8899xxr1qzBYrGwevXqkAGPNpsNq9WK2WxWlwczEQR/j1SPOLFJMPbYO5L3p81mo6Ojg4qKijG/P7VaLTabDZvNdsTvzZHqH837/vDPiuB6VVVVlJaWsnjxYkpLS6moqKC0tBSTyTSgj+NtQoLoh3+YBzs42If54UwmE4sXLx70OaPRiNFoHLDcYDAc8wDJ8ahjMpD9NDLZR6Mj+2lkso9G50TdTydim4QQ4mShKApOj29C6o4w6EY9edVYglxCiBNH8DPG7/fjdPvQu71otcd+yrnRfr5UVVVRUFCgjvINBqwGS5dRXFxMXl4epaWlanCqtLSUvLw8qqur1XjNokWLKC4upqSkhPvuu4877riDiy++mFWrVrF8+XL1+eB2ampqMJlMlJaWUlhYSEdHBwUFBSxevFgNrnV2dg5bz4RRFPAMcleo3x9Y7tbBsfp/GyJhlP/joMWLF2MymdRlFotl0MD2kQZj9+/fz2uvvcbatWuP6GJJR0fHCXehRFEUnF7nkM/7/X6cXid6j37c39sR+ohRf084kvfnqlWrKC4uJjc3l5KSkjG9PxctWkRLSwsvvvgimZmZbN68eczvzZHqB4Ztv9VqHfBZ8cYbb3DjjTdiMpkoKSnh9ddfZ9GiRSxatIgVK1ZQXl7OxRdfzLJly47pnQ0TEkSvqqrCZDKpb+qKigqKiorUx6tWrSI/P5/S0tKQf05VVZWa2kUIIYQQQgghBuP0+Djtl69NSN077r6UyLCRT7PGEuQSQpxYJuozZrSfL7m5uWqQqaysjOrq6kE/W4KpOIJ3+ufm5mI2m6moqMBkMoXEXgoLCyksLKSkpISf/vSn/O1vfyM/P1+96FdYWMiaNWvU7eTk5AwIli5evJi1a9dSXV3Nddddp8aGhqpnwnh64XfpAxZrAdOxrvvOBgiLGrGYxWIhOzuboqIi9f9ns9lYs2bNoEHEownGXnjhhdx3330UFhYe0cWSIw3GHktOr5Oznj5rQur+8OsfEmkYOeX0kb4/i4qKKC0tpaCg4Ijen2+88QZZWVm8/fbbR/TeHKn+kdpvsVgGfFZceOGFapv77w+r1apmNDkenxsTEkTPzc1V31SLFi3CbDYPSNtisVi47rrryMvLw2KxYDKZyMvLo6ioaCKaLIQQQgghhBDjZrRBLiGEOBI5OTmUlJRQWFhIbW3toGUqKysxm80D1gsGu/o7PCNAXFxcyLoWi2XElBwmk4nc3Fx1pHRxcfGI9YjBWSwWli9frt7BBLBhwwZWr149oOzRBmO//OUvk5OTg1arHfPFkunTp7N+/foT70LJSeBo3p8mk+mI3p8XX3wxWVlZhIWFjVjHSNsaqv4NGzaMqv39PysGk52dTUdHR0gdx9qEBNFzcnKorq4e8vn+H/An6oRvQgghhBBCiBNThEHHjrsvnbC6R2s0QS4hxIkn+Bnj9/uxd9uJiY05bulcxsJisZCTk0NhYeGQsZWNGzcOWJadnU1ZWVnIso6OjnEJUvUPrB3Leo6KITIwIvwwfr+fbrud2Jhj+P8exQjloOLiYrKzswfNHd3f0QZj4+Pj1cdjvVhytMHYYyVCH8GHX/9wyOf9fj92u52YY/C/jtBHjLrsRL0/g2l7jkUdo23/4a/ZE8Gx/5QXQghxQqiv9/CnPzloafFOdFOEEEKIY0qj0RAZpp+Qn9HmOQ3qH+QSQpwc+n/GRITpTsjPl+Do49dff52NGzeyatWqAWUKCwupqakZENC69tprsdlsVFRUqMsqKysHjBzuPwr0cGazeUCw9fDHo6lnQiac1GgCKVUG+zFEDv3cePyM4X8cTG1RVlZGRUXFsMeRoYKxVqs1ZNl4B2OPZR1HQ6PREGmIHPYnQh8xYpkj+Rnt+3gi35/j8d4cqv7xfN8f788HCaILIcQk19jo5bvftTNrlo5bb43m4os99Pb6J7pZQgghxJQ3miCXEEKMVUVFhZqOw2QyUV5eTnFx8YBgnMViobKyktLSUhYtWkReXp6a4qO6upqVK1eq6y1ZskTNPVxWVsbmzZupqKgISSditVrVOgoKCli7di15eXnYbDaqqqrUn2CZkerpv07/gJs4pLCwkJUrV1JZWTnkpNRHG4zt7Owcsv7jEYydqo7m/VlTU0N5efmY35+vv/46jz/++FG9N0eqfyzbDrY3+FnT/7k1a9awcePGkPqtVuux/S6lTGJdXV0KoHR1dR2zOtxut/LCCy8obrf7mNUxGch+Gpnso9GR/TSy4D46cKBX+f73u5WICK8SmGJeUbRavwKKkp/frfj9E93SiXWiv5aOxzHsRDUV+36ivx6PFem39Hs8OJ1OZceOHYrT6RzX7Y4Xn8+ndHZ2Kj6fL2R5eXm5kpubqz6urKxUAKW0tPR4N/GYGKrfk8Fwr7mpeAxTlMnd7+H+35P5dT4c6feJ1W+TyaSUl5cPW6ayslLJyclRcnJylNzcXLV8dXW1kpOToxQVFSmlpaUh2yktLVUA5cILL1Q2bNigKErg2NX/WFVZWamYTCYlNzdX6ezsVCorKxWLxaJYLBa1zHB19C8/Uh+OpxP1f32sTeZ+j8exe0JyogshhDh22tt9/P3vmXzjG2H09ATyrZ12mpNf/cpPWBhcc00kFRUxrFplp7g4ZoJbK4QQQkxN+fn56qgrCEzQpijKBLZICCHEyejaa68NOZ4MJjc3d9C5CYebs3D58uXcdNNNdHd3ExsbCwSOXf2PVbm5uSEj1XNzcwfM8TFcHYOVF+JEJelchBBikujs9FFUZGfWLD0vvbSQnh4ds2f38eSTPWzbFsG110Zx9dVR/OxnDgB+9rNo1q3rneBWCyEAFEWhwTtwAishhBBCCCGGYrPZyM7OnuhmCDElSBBdCCEmgRde6GHGDIX77ovB4dCTmtrOI4908ckn4XzjG1Eh89PcdVcMl1/uwOfT8PWvG9i71zNxDRdC4PF7uOPdO3jY8TDVzYOP0hFCCCGOteLiYuLj44mPj6egoEDyFAtxArPZbFitVoqLi1m+fPlEN0eIKUGC6EIIMQk8+6yfri49BoOfhx/u4s9/fptvfSsS7SCf8hoN/Otfkcye3Ud7u4Grr/bS1ye3jwsxUQxaA+G6cBQU7nzvTjr6Bp/JXgghhDhWgpPcVldXU15eTlVVFcuWLZvoZgkhhlBWVkZBQQEFBQWYTKaJbo4QU4IE0YUQYhL4yU/CMBj8eDyBj3W9XjNs+ZgYLc8/ryEmxsvmzRF85zuO49FMIcQQ7lhyB0naJFqdrdz59p34Ff9EN0kIIcQUYrVaWb16NRaLhdzcXEpKSqiqqproZgkhhlBUVER1dTW5ubkT3RQhpgwJogshxCRw5plGfvjDHgDuvDMSm0034jqnnWbk8cddaDQKzzwTw4MP2o91M4UQQ4jQR/C1qK8Rrgvn3YZ3+fu2v090k4QQQkwhy5cvDxnNajabWbx48cQ1SAghhDjB6Ce6AUIIIUK53W46OzuJi4sjPDx81Ovdc080zz3XR21tOGVls/j610de56tfjaK42M6998ZQXBzFuef2cdZZo69TiJFYrVby8vKorq6WW01HkKJLoWhxEXd/eDd//vjP5CTnkJOSM9HNEkIIMQWtWbOGwsLCIZ93uVy4XC71cXd3NwAejwePZ3LNt+P1elEUBZ/Ph98feqeYoijq78Ofm8yk31On31OxzyD9noz99vl8KIqC1+sdcJwa7XFLguhCCHGC6Ovro6mpiY6ODhRFobGxkVmzZhEVFTWq9Y1GDX/7m59LLlF47705vPxyN1dfbRhxvbvvjubhh710del57z3PkEH0P/7Rzp/+ZOBPf/Jz2WWRY+qbmLpKSkqwWq0SQB+lL1u+THVrNS9bX6ZofREVV1ZgCjdNdLOEEEJMITU1NQDk5+cPWWblypXcddddA5avW7eOyMjJ9T1Ro9GQlpZGR0cHMTExg5ax26fmHZ3S76ljKvYZpN+Tid1up6enh//973/qxYKg3t7eUW1DguhCCDHBnE4njY2NdHZ2qsv0ej1er5ddu3Yxc+bMIb+wHy43N5Kvf72Lp56K49Zbw8jL8xMVNXzmrsce66GrK5q4OC833DD0Sc/69Rpqa8O55hofL73US27u5DpBEuOvoqKCgoICysrKJropJw2NRsMvzv4F29u2s7d7Lz9792f8+aI/o9EMP8+BEEIIMR5sNhsrV66kvLx82HIrVqzg9ttvVx93d3eTkZHBJZdcQmxs7LFu5nHX3NxMd3c34eHhREZGqsdlRVHo6ekhKipqSh2rpd9Tp99Tsc8g/Z5M/VYUhd7eXux2O2lpaSxYsGBAmeDdVCORILoQQkyQnp4eGhsb6erqUpfFxcWRlpZGREQEe/bswW63s3v3brKzs4mLixvVdu+/38h//uPgwIFo7rjDzp/+NHQA3utVKCkJHApuvtmJyTR02SVLFJ57DpxOHV/5ipGXX3aydGnEKHsrphqbzYbVah12FJsYXJQhit9f8Hu+/vLXWV+/nn/s+AffnvftiW6WEEKIKWDZsmUjBtABjEYjRqNxwHKDwYDBMPKdkCebadOmodPpaGtrC1muKApOp5OIiIhJE3AaDen31On3VOwzSL8nY7/j4+NJTU0dtF+jPW5JEF0IIY4zu91OY2NjyC1S8fHxavA8aObMmdTV1WGz2aitrSUrKwuz2Tzi9s1mHTfc8CF/+MMFPPxwNP/v//Xxuc8NnqLliSd6sFqjiYnxUlQ0/Mjyiy46dGBxOHR86UsGXn3VybnnDh1Id7kU3G6FmBiZx3qqKSsro6ioCKvVOmLZqZRXdSjBfgZ/W2Is/GTRT/jdht/xh+o/MC9+HmcmnTmRTTwmDu/3VCH9Ht9+ezweNXfniZi/czLnFx3OZO633+9HURQ8Hg86Xehk7ifz+7qgoIDCwkKsVis2mw0Ak8mExWKZ2IadAIIpXZKTk0P+xx6Ph/Xr17N06dJJefFgKNLvqdPvqdhnGN9+93n78Pl9RIWNLk3rRJqs/2+DwTDgeH0kJIguhBDHidPpZN++ffT09ACBL+Nms5nU1NRBJxDVarVYLBb27t1LR0cHdXV1+P1+EhMTR6zrwgttbNtmp6oqhmXLFKqrFfT60Cuufj/ce2/gMFBY6MRsHj5lzOLF4URH+3A4dMTHe+jsNHDeeXpiY71cdZWT006DM87QsWCBgZQUPQ884ODeeyMwGBSsVoiOlkD6VFFTU0NOzugnxJxKeVVHUllZqf4doURwhuEMtnq2ckvVLSyLXkayLnkCW3fs9O/3VCL9Hh96vZ7U1FQcDgdut3tctz2eJmN+0dGYjP12u904nU7Wr1+P1+sNeW60eVVPNIWFhVRUVFBRURGyvKSkhKKioglq1YlHp9OFBGJ0Oh1er5fw8PBJFXAaifR76vR7KvYZxq/ffsVP/n/zcXqcPHvVs6Oe60hRlAkZCT5V/9+jJUF0IYQ4ThobG+np6UGj0ZCYmEhqaiphYWHDrqPRaJgxYwY6nY7W1lb27duHz+cjJSVlxPr+9jc9Cxb42LIlgpISOz/7WWiQ/B//cLBnTzTR0T7uuGPkQKVWC4sW9fHWW1HceGMfv/994KDa3a3nyScHC8AfWvbee71ccsnUCoZOZcuWLVNHsHV0dACBuy1WrFgx6In4VMurOhiPx0NlZSV5eXkhX1i/4PkCN//vZra1b2ONbw1/v+jvpEWlTWBLx9dQ/Z7spN/j2+++vj4OHDhAdHT0oBelJ5qiKNjtdmJiYibdrdHDmcz97uvrIyIigqVLlw54zY02r+qJprS0lNLS0oluhhBCTCp2t5193fsAeGLHE9yWc9uI6/xj+z946OOHeDj3YZakLjnqNowlIL+xeSPP9z7Pkt4lpMelH3Xdk40E0YUQ4jiJjY2ls7MTg8FARkbGmE4oMzMz0el0NDU1UV9fj8/nIz19+INaZqaeX/6yl6KiGEpKIlixIhAIh8Ao9JUrA4eAZct6SUgY3cSl553n5623YOtWDQ0NXtLTDx1GTjnFxb59A3NjAuza5eeSS0ZVhZgEqqur1b+tVivZ2dkhE+cebqrlVR3O4X2OM8Tx19y/8u1Xv01dVx3fe+N7/OOyfxAfHj+BrRx/U/F/DdLv8eLz+dBoNGi1WrTBA52igGeCRgQbIqHfMT6YyiTYxqCqqir178WLF2MymdRlFovlpE+hMVS/JwOtVotGoxn0tTwV39NCCCEG1+U6NP/Z0588zbdO+9aw3+Obepp46OOHcPlcPL/7+aMKonv8Hr75yjdRFIUnLnuCCP3w85n5FT9/+PgP7HDv4LEdj/Gzc352xHVPVhJEF0KI48RsNtPQ0IDb7aajo4OEhIQxrR+c0OjgwYM0NjYCjBhIz80NjHT3+zX9z+d5+ukedu2KIirKx513jn6E+AUX6Pjd7+DddyP4+c976T/avH8A/XOf6+Xqq300NIDNBtdcIxOQCnGk4sPjKcsr4//99/+xt3svt1TdwiOXPkKU4cTPqyjEhPH0wu8maATVnQ0wirynFouF7OxsioqKyM3NBQKTMq9Zs2ZUEzsKIYQQ4sTWP4je6+3l8e2P86NFPxqy/J8+/hMuX2CuqPca3sOv+NFqjuxC9KaWTexo3wEERrcXnlk4bPl1e9exo2MHYYRx0+k3HVGdk93kGhIghBDHkd/vp6WlhR07dlBXV4fP5xu2vFarJTk5kM+4ubn5iOpMTU1VtzGa24U3bw5MfJSd7VaD6IoCv/1tIJfjjTf2kpg4+gk2li4NBMMdDh1///vA0esXX9zDli0uPvwwkhUrYvjTn2L45z9jSEuTa7ZTUUVFBYWFgS9rhYWF1NTUTHCLTl6pUamU5pViMprY1r6NH77xQ9y+Ezf3sxBiZBaLheXLl4d8Nm7YsIHVq1dPYKuEEEIIMV663IEgukEbuEvpmU+foaOvY9Cyn7R/wr9r/62Wb+9rZ3fn7iOu+80Db6p/P7rtUVp6W4Ys6/a5+UPNHwA4P/x8zOHmI653MpOohhBCjJHX66WlpYXW1lZ1Mimn04nD4WDGjBlER0cPuW5SUhKNjY04nU66urqIi4sbc/19fX0Ao1p3xw4FgNmzD0169cwzDj79NJrISB933jn6EeKKAn/4g4P+o88Pd8cdGs44Y/CULmLqyc/PJz8/f6KbMWlY4iz89eK/cuO6G/mg8QNWvL2CVUtXodMe/UzzQkw6hsjAiPCJqnuUiouLyc7OxmazYTKZ1N9CCCGEOPkFR6LnJOdg99jZ0b6Dx7c9zu2Lbw8ppygKv9/4exQULptxGb2eXt6qf4t3G95ljnnOEdW9vn49ADGGGOweO3+s+SO//fxvBy27dudaDjoOkhieyHnG846ovqlARqILIcQouVwu9u/fz5YtW2hsbMTr9WI0Gpk2bRpGoxG3283OnTtpbGxEUZRBt6HT6UhKSgLGPhpdUcDt9qgj0M3mka8Of/JJYPj53LnQ16fw9787WLEicBX8hht6SUkZ3bXUxkYvF1zQw4oVoQH0+HgP991np6DADsCPfqShp8c/6j4JIcbmjKQz+OMX/oheq2fdvnXct/G+iW6SECcmjSaQUmUifsYw54nFYiE3N5eysrKQu3eEEEIIcfKzuWwAxBnjuOXMWwD4185/0e5sDyn39sG3+ajpI8K0YdyWcxvnpJ8DwHsH3zuievd27WVv9170Wj0PfOEBAF6qfYntbdsHlO12d1O6JTCx9M3zbyZME3ZEdU4FEkQXQogR9PT0UFtby7Zt22htbUVRFKKiosjOzmbevHmkpqZy6qmnqjnOGxoa2LVrF2734KkWkpOT0Wg02O12enp6Bi1js/n43/+cPPCAnRtusHPWWb2YTF5SUhT27tUQFRU16ESMh9u1KxAkf+wxI6mpPm68MZr9+42YTF5+/vPRjUK//XY76el63n47NL9rTk4ve/Zo+clPYrj//nCio31s2xbBxRf3YbMNn9pGCHHkzkk/h5XnrwTgqU+e4j/W/0xwi4QQR6OwsJCVK1dSWVlJTk7ORDdHCCGEEOOk2xUYABdnjGPp9KWcnnA6Tq+Tx7Y9ppbx+r3cv/F+AL5x2jeYFj2N89IDo8FrWmroPYKJ0t+qfwuAxSmLOTvtbK7KvgqAkg0lAwb8/X3r37G5bFjiLFxluWrsnZxCJIguhBBDsNls7Ny5k08//RSbzQYEUqjMmTOHuXPnYjKZ0Hw22kyn05GVlcWMGTPQ6XQ4HA527NhBZ2fngO2GhYWpo8jr65v4+GMXjz7q4Lbb7OTm9jB9upv4eB0XXxzBj38cw+OPx/DRR5F0d+ux2cK49daZXHTRKZSVOYZse1ubh5KSHnbtCgfg4MEwurr0pKS4ue02Oxs3+klNHX4Uem+vny98oYcHHwwdfa7TBQ66NTWRXH65i1de6WX6dAPl5S6ionx8+GEkF1zgpqXFO9hmhRDj4ItZX2T5/OUA3P3+3UeVL1EIMbGCaa/y8vImuCVCCCGEGE/BnOgmYyB28N0F3wVgzc41tDnbAHhu93NYu6yYjCZuOiMwoecpsacwLXoaHr+Hjc0bx1xvMJXLBdMvAODWhbcSoY/g45aPeW3fa2q5pp4mnvzkSQB+tOhH6LWS9Xs4EkQXQojD9Pb2sn37dmpra3E4HGg0GhITE5k3bx4zZ84cNue52Wzm1FNPJSoqCp/Ph9VqZd++ffh8fvbt8/Dccz388pd2brstnvx8C2eckUVOjpGbbormoYdieP31KA4eDNw+lZDQx+c/30NhoZ2//tVOcXFgApKGhlgaGyMoLIzmt7+1D2jDz39eybJl3+IXv9iqLrv0UgfPPttDfb2BP/whhuzs4W/R+vhjFwsXunnzzUOjz196qRePR2HbNjfXX29Hr/fz4YeRXHFFJEuW9OJ0Krzyipu4OC9btkRw/vleDhzwjGnfCyFG75Yzb+GctHNwep3c/ubtONxDX1gTQpzYrr32WplDQgghhJhkgjnR44yB+czOn3Y+8xPn0+fr4+/b/o7D7eAvm/4CwM1n3kxsWCwAGo3mUEqXhrGldOl2d1PTHJi0PBhET4lK4YbTbwDgwY0P0ucNzLP2l01/weVzsShlkVpWDE0uMQghxGE6Ojro6+tDq9WSnJxMcnIyBoNh1OsbjUbmzJlDQ0MDTU1NPP10N/fe66a7OxwYuB2j0cMpp9iZMcNOdraT2bNdnHqql4QEmD59OklJSbS1tfHWWxsJC8vF7T4UAP/5z2NobbXz4IMxaDTw2GMO7r9/JYriRKv9GX7/egwGP6++OnTg/3DNzV6+8AUdXV2HDhHvvefknHMCE6XNnWvk6aeN3H23m3vucfGvf0VRXR3JV78K8+c7+cEPnPztb+Hs2hXO+ee7qKpyM3Om5FUTYrzptDpKlpZw7X+uZW/3Xn7x7i944MIH1DtkhBAnB5vNRnZ29kQ3QwghhBDjLBhE7x8c/+6C7/Ldqu+ydudaej29dPR1cErsKVw7+9qQdc9LP4+KXRW8e/DdMdX53sH38CpeLHEWMmIz1OX/N+//eHbXszT0NPDPHf/kgowLeHHPiwD8eNGP5RxiFCYsiF5RUcHKlSux2Wzk5OSwevXqQWeit9lsrFwZyPtZU1NDaWkpFovlOLdWCDGVREUFRl8bDAamTZt2RNvQaDRMmzaNmJgY/vCHxs8C6AFnnNHKggU2Zs7sJSvLTmKiA/CTlJREdHQ0ERFxaDQa2trasFqt7N+/n4aGBvbu3cWcOdPZunV+SF1//GMMbW12li7V8N3vbsDvf4ebboJHHnkbeJOZM88Gwhmt3/zGSVfXoRQul1/u4JxzBgbhZ84M44knwrj7bg/33NPDU09FsWVLBFu2QExMIJXLvn1Gzj/fzbp1Ls44Y+Qc7kKIsYkPj+f+C+7n269+m6r9Vfxjxz/49rxvT3SzhBCjYLPZ6OjooKSkhJKSkolujhBCCCHGWTCdS3AkOgSC4/OT5rOldQvP7n4WgB/l/AiDLnTA3efSPodOo2Nv914aHA2kR6ePqs43698E4IKM0JHlEfoIfrToR9zx9h2s3rqatw++jYLCpVmXckbSGUfaxSllQtK5WK1WSktLKS8vp7y8nJqaGoqLiwcte/HFF7NixQpKSkooLi6WXIFCiCPm9/tpbW1lx44d7Nixg46OjkHLxcbGotFocLlc9PX1jakOl8tFS0sLe/fuZceOHezZs4fCQhuXX/4hWm1gss29eyOJj9+LxbIVrXYvHR1txMTEEB8fz6mnnkpWVhaZmZnYbDbef/99qqqq2Lx5M/X19cycuSGkvi9+cRMajcJTT8VQWBhNBD9lwXwNpaWwYL6GKO1PSUwc/SSfjY1eHn00Un2s1SqsXDn8KPxTTjHwyCMx7N7t47vftRMR4cNuP3SNtqkpjAsv1PLRR2Pbl0KI0ZmfNJ87ltwBwIPVD7Kxaex5E4UQx19ZWRkFBQUUFBQMOphICCGEECe3/hOLBmk0Gr535vfUxznJOVyUedGAdWPDYjkjMRDcHm1KF6/fyzsH3wEYND3L5TMuZ37SfJxeJx+3fIxeq+e2hbeNvkNT3IQE0W02G+Xl5VgsFnJycigsLBw0mFVVVYXZbFa/VObm5mK1WqmpqTnOLRZCnMw8Hg8HDx5ky5Yt7N+/H6fTidPppK6ujk8++QS7PTSvuE6nIyYmMBI7OKHoaCiKwieffMK+ffs4cOAA9fX1n/3UcdNNDfzmN6+TmtqO3R7FQw/l8ec/L8DtDic2NpbIyEi6urpobm4GoL29nQ8++IBNmzaxefNmNm3aRGtrKykpmzEaD7U3NnY7s2Z9AsClFNPjr+auexS0WrjrHoUe/0YWNv9i1H24+24nTqdOfXzNNQ7mzx/dCPLp0w389a8xWK0Kt95qJyrqUPC+o8NAbq6eN95wjrotQojRu3bOtXzJ8iV8io+fvPUTWntbJ7pJQogRFBUVUV1dTW5u7kQ3RQghhBDHgM1lAyAuLC5k+Tnp53Bu+rkYdUaKlhQNmUrl3GnnAqMPom9u3UyXq4s4YxxnJp054HmNRkPRkiL18XVzrgtJ+SKGNyFB9JycnJDRFrW1taxYsWJAuZqamgGpWywWC1ar9Vg3UQgxCfT09FBXV8fWrVtpamrC5/NhNBrJyMhg2rRp6HQ6ent72bVrF3v27AkZdR78jOrq6hq2DkVR6OnpobW1lX379tHc3MzOnTuxWq3YbDY0Gg1GoxGn00lGRgsPPfQel1++A41G4cMPT6e4+DLq6k7B6/Xi8/k4ePAg3d3dPPfcc1RWVvLxxx+ze/durFYre/bsYdeu7ZhMVWr9//nPhezaNYeZ7MapXcXCM+DKKwPPXXklLDwDttQ+CHv2jLi/6us9PP74oYlE9Xo/v/3t2FOwpKbq+eMfY9i7F378Y7ua2sVu13PFFWGsXy+BdCHGm0aj4Zfn/JJZ8bNo72vnx2/9GLfPPdHNEkIIIYQQYkryK3663QNHokPgu/ufL/ozrxe8zrzEeUNu47z08wD4oOEDvH7viHW+Vf8WAJ+f9nn02sEzeJ+ZdCbL5y9nSeoSCucXjqovImBCJxYtKyujsrISm8026C2M7e3tA5abTKYhUzC4XC5cLpf6uLs78GL1eDx4PJ5xa3d/we0eq+1PFrKfRib7aHRG2k+KomCz2WhpaaGnp0ddHh0dTXJyMnFxcepV3ri4OBoaGmhvb6e9vZ2Ojg4SEhJIS0sjMjISr9eLzWbD6XSi1+sH1LNnzx4cDgd+vx+Xy6WOcG9tbaWjowOtVktiYiI+n4/w8HDS0tLIzp7BqlUK8+a9zOrVn6etzcQPf3gmV11Vy7e/vYvk5BhWr17NSy+9RHNzs7rtjL4+Cux2pnm9WH0r+DOns4dZ9PYGcrZfyDd4xA8v/gaCF7E1Gvj1b+DLX4bXf/5zlv7zn8Pu21/9qpe+vkMH9+uvt5OVFXnEr8m4OFi5MpyiIi/33++gtDSKri4DFRUuzjln4ue1PtHfcydqu8SJK0IfwYMXPsj1/7mej1s+5hfv/oJ7z79XJgkSQgghhBDiOHN4HPgVPzAwiA5g0BmI0w1c3t+8hHnEhsXS7e5mW9s2FiQvGLb8WwcCQfQLp184bLkfLPzBsM+LwU1oFGPx4sUsX76c4uJiFi1aRF1dXUjQfKg0CmazedDlK1eu5K677hqwfN26dURGRg6yxviprKw8ptufLGQ/jUz20egcvp98Ph92ux2bzYbXG7hCq9FoiI6OxmQyYTQa2TPEaGy32017e7sadNdqtZhMJux2Ox6Ph127dhEbG6uW93q99PT0sHv3btxuN263Ww1SKYqiPu/xeDhw4AAGgwGDwYDT6URRFAAMhg187Wvr+e9/C9i3bwkvvZTNO+9Ek5v7MNu3V9Da2operycyMpIrWlq4v7sbBdAACjv5PnP5CfdxkOmcy98o125g4bxDo9CDgqPRf7HuvxS/8sqQ+7OlRc8//nGp+thg8LB06du88sro86kP59xz4cwzNXz8cSyLFnUxTFOOuxP1Pdfb2zvRTRAnoVNiT+H+C+/nlqpbeKXuFabHTJcvyUIIIYQQQhxnXa7AXe0R+gjCdGFHtA2dVsfZaWezbt863mt4b9gg+oHuA1i7rOg1ejUNjBhfExpEz8nJAWDFihWsWrWKqqoq8vPz1eezs7PZsGHDgPWGmnhnxYoV3H777erj7u5uMjIyuOSSS0ICYOPJ4/FQWVlJXl4eBsPwk+9NZbKfRib7aHQO309+v5+DBw/S1tamBqh1Oh1JSUkkJSWNaV86HA7q6+vV4GVnZycajYZTTjmFxMRENdDucDiIiYnB4/HQ3NxMX18fycnJ6HQ6FEVBo9FgNpuJjo4GAimrAObNm0dKSgoGQxq//vXZ7Nxpoq8vXK2/oyOFDz64CKPxacLCwoiPj2eG18v93d3oDmurgp8H+TEAbwI/OmwUetCh0ejd7N8fRmnpBcyc6aW8PCKk3E039eL1Hjok3HhjL9/+9qWMt4KCcd/kETvR33PBu6mEGKtz0s/hl+f8kl++90vKtpQxPXo6X5n1lYlulhBCCCGEEFPGYJOKHonzpp3Hun3reLfhXW5ZcMuQ5YKpXHJScogNOzYx0KluQoLoNTU1agAdDgXF+y+DQP7zNWvWhCyzWq1DTr5jNBoxGgfm7w2OAj2Wjkcdk4Hsp5HJPhqcoih4PB513wT3U2trK52dneh0OiIiIkhOTsZsNqPVjn3Kh/j4eOLj4+ns7OTgwYN4PB6sVqsaNO/t7VVTtiiKoo469/v99PT0kJWVRWJiIuHh4YSHB4LjbrebtrY2+vr68Hg8uFwu3n57J1u2nIOiHIp4G40usrM/RqP5Kw6Hm+joaPr6+vi81YoySFsDI9KhiRS+b+xhwZwerrxysJKB0egLztRx++2/w+u9DI+nL+Q1ZrW6eeaZGPVxdLSPu+6KwmA4+kNEVVUvu3f7KCyM4Qj+JcfFifqeOxHbJE4eX5n1FQ7YD7B662rufv9u0qLTODvt7IlulhBCCCGEEFNCcCT64ZOKjtW56YFR5dvatqmThg4mGERfOn3pUdUnhjYhIY2qqqqQyUErKiooKipSJxFdtWoVVquV/Px8rFarWrampkZmrxdiivF6vTQ1NbFt2za2bt3Ktm3bsNls+HyBNCM6XWCMdmRkJKeddhqJiYlHFEDvLzo6mri4OHw+HwcOHGD79u3s3r2b2tpaWlpa0Ol0GAwGwsLCMJvN9PT0qGlkIiMjyczMJD4+Hgikmens7ERRFGJjY+np6eGUU2z86EcvM3/+fjSaQODb5TKye3cqjY1zCQ9Pxmg00rl7N1f6fANGoQf50PJXTmO7y8Fd9ygDRqEHaTRw190+vN53gDf51rdCc23/6lcuPJ5D++y73+0lOfnIA+iKAv/+dy9nndVLXl4kt9wSQ2WlpCYR4nj7wcIfcNmMy/AqXm5/43b2dI48wbAQQgghhBDi6HW5PwuiH+VI9NSoVCxxFvyKnw8bPxy0jMPtYGPzRgAuzLjwqOoTQ5uQkei5ubkUFBSwePFiFi1ahNlspqSkRH2+tLQUi8WCxWLh9ddfp7i4mCVLltDe3k55eflENFkIcZz19vbS0tJCZ2cnfr9fXR4c2b1lyxZSUlLUlCnjNQmjz+dj9+7d7Nu3j87OTtra2nC73RgMBjwej9oWl8tFV1cXTqcTm82G3W6nqamJRYsW0dDQQEREBA6HgwMHDtDb24vH4+HgwYOkp6cTExPDwoX7WLhwPW1tcWx9Ts/sd6rI9DSwtyOLtR0PcCW/4ydsJRb/kG3VaDQ8rdnNmWfouPLK4XOXX3klnHGGjk8//QW33PKmunz3bjf/+ldUSNmKijAWLHBw/fXRQwbmB6MoUFHRw29/q2Xz5tB5KE47TUZVC3G8aTQafnPeb2juaaampYZbXr+Fp694msSIxIlumhBiEFarleLiYqxWK9XV1UBg8JHZbB5wx64INdb9JPtVCCHEsaaORD/KIDoERqNbu6y81/Ael2RdMuD59xrew+v3khWbxSmxpxx1fWJwExJEz8nJUb8YDiaYPzhYVgLnQkwNiqLQ2dlJS0uLOsknBEaZJycnExcXR2trK0ajEUVRaGtro7m5mQMHDmA2m/H5fOrI9LHwer00NjZit9txOp00NDRQX1+Py+XC4XDg8Xhwu93U19fjdDrVwH0wB3t0dDQ+n4/u7m5effVVAMLCwjgjPJzc/ftJdDjwTp9OW1wc/tRUHA4HKSkptLa2smTbi9z69qP4AQ2BiPUd3Eswdr2NTE7jABoU+sezFWA9fqz+el68e2Au9MNpNPCb3/j48pffYfPmt7nwwguBwCh0rzeMs8/upaDAxz33RFBXZ+Qb3zDy4IO93H+/hqVLI4bdtt8PTz/dw8qVWnbsCATkjUY/mZludu8O5/TTnWRkDL8NIcSxEaYL449f+CPf/O832de9j++//n0e++JjROjlPSnEicZisXDddddRXFysLgsOLhop2Bu803f58uXHupmjUlVVxZ49e/ja1752XOob7X460vJCCCHEWNlcNoBxyU9+bvq5PPnJk7zb8K46D1t/wVQuF0y/4KjrEkOb0IlFhRACAqPIW1tbaWtrU0eUazQa4uPjSU5OJirq0EjpxMREMjIymD17Np2dndhsNtxuNwcPHqS6uprp06ePeULR+vp6amtr6enpobOzk4aGBpqbm2lvb6e9vR2NRkNERAS9vb3qqPTp06djMpmIi4tDo9Fgs9n49NNPaW1tpaOjg0sbGrijthY0n4XGt25F89//squoiH3z5qHRaEhzODjn0UfREsytdSinuQLcyoP8hVv5Fv/gUW4EjQatRglsU1G4a3Y2aV17iIlRePPNkfsZEwNpaRruuuuXXHjhej75xMXatYELAnfdBZdcEsO3v+3jV7+y88gjUWzcGMkFF8AVVzi47z4Dp54aOueE16vw+OM9rFqlZ/fuwP8oIsLHt77Vy89+Fs7NN3vZvRvy8ryj/l8IIcafKdzEXy/+K9945Rtsb9/OXe/fxcrPrxzw5VsIMfGCc0UFjXYwUTAofKIoLS1lxowZx62+sQ66kkFaQgghjrXxHIm+OHUxYdowmnqaqOuqw2KyoCgKNpeN5t5m3q5/G4ALMiSIfixJEF0IMWEcDgctLS3YbDZ1VLfBYCApKYnExMRhA+HR0dHEx8fj8XhwOBw0NDTQ29tLY2MjTU1NmEwmkpOT1VHjg9m/fz8NDQ1s3bqV+vp63G43fr+f7u5umpubcTgcKIqCyWQiMTGRrKwsenp60Gq1pKWlhUwsqtPpSE1NxWAwkNHXxx21tYFc5p/1C0VBAWbdey/vA+nAIoaemMKv0ZCpbUTxaXmC/+NdzmNX0d/R7NsLWVn0XH897y1ejMejcNFFY9nrCm1tH9Db28tf/uLD5zNy3nk9XHJJIAiekKDjz3+O4Uc/clNc7Oa556J4+eVoXnvNz7e/bee3v40gPl7H6tU9/P73Bvbujf7s/+HjO9/pZcWKCFJTY3C7FdavD/TuqqvkUCPERMuMzeSBCx9g2bplvGx9mVPNp/Lted+e6GYJccwoioLT65yQuiP0EWO6SGW1WqmoqKC2tnZAED34fDBAXlxcTEJCArW1tXR0dIQEg202G1arFbPZjMlkwmq1UlpaitVqZcmSJRQVFYWU7ejooKKigjVr1mCxWFi9enVI/VVVVer2CwsLycnJUbeZkJBAZWUlJSUlQ47mttls7N27l8zMTMxmc8i6GzZswGKxhKT07N/fkcrZbDZMJpP6+/D9FHwcTNuSn58/7H4dzf4QQgghxqLb3Q2AyWg66m1F6CPIScnhg8YP+OGbP8Sv+GnuaabP16eWiQmLYUHygqOuSwxNIhtCiOOuo6ODpqYmnM5DJ7fR0dEkJydjMpnGdOJpMBjIyMggMjKSmJgYIBCc7+zspLOzk6ysLBISEgas19bWxhtvvEF9fT27du2ir6+PmJgYIiIiMBgM6PV6kpOTSU5OJi0tjZkzZ+L1etm8eTN+vx+73Y5Wq8XhcODz+XC73bz99tts2rSJn/X09BtTfojms5//G03HFA3TffvVh7v8s9BoVqqPo4CDBw/S1RW4um2z+fje91x89FFoLvJzzumlujoct1vLI484ueCCCOLi4oiMjKS11QHA0qUD865nZ4dRURHG++87+elP/bz7bhSPPhrDmjU+YmM9NDQEgudxcV6WL3dSXBxJQkKMuv7//ufE4YgkPt7L5z8fPpoeCyGOsSWpS/jpkp9y70f38kD1A8yKn8W56edOdLOEOCacXidnPX3WhNT94dc/JNIQOXJBYNWqVZhMJoqKiqipqWHZsmXqcxUVFSxbtoxrr72W0tJSKioqsNlsakB51apVQCDYXVNTg8lkorS0lMLCQkwmE8XFxZSXl1NTU8PFF1+MxWIhPz+fVatWUVxcTG5uLiUlJSxfvpxFixZRXFxMaWkpEAjW5+XlUVpaSlVVFaWlpZSUlFBQUMDrr7+OyWQiJyeHiy++mM7OzpA+9W/PY489xg9+8APMZjN5eXlUV1ergelgnYcHyIcrZ7Va1bm1gkHvxx57jB/96EfqfoJA0H/RokVce+21LFu2TN2PhYWFWK3WkP06mv0hhBBCjNV4jkSHQKqWDxo/oK6rLmS5OdxMalQqX5vzNQxamYvsWJIguhDimHM6nXR0dKhpUerqAh/6Wq0Ws9lMcnIyERFHnp/XaDSq287MzMTpdLJlyxYOHjyITqcbNIj+6aef0tLSgtvtJj4+nr6+PiwWCxkZGfj9fj7++GN0Oh1paWnExMSg1Wppbm4mor6exVu2kNTbS19KCo9pNDy7ZQudnZ1kAMuAm4ChMrP7gV3A74ELgOsZ/INYQcNesgLr+AfPeZ6UlERSUhIAP/iBnY8+CgSxc3J60Osb+OijWXzwgYKiaJg7t4/vfCc8ZDsuV3D/Db1vzzkngnfegeef7+GOO3Ts2hWOw6HDbPZwyy19/PjHkZhMMQPWe+mlwESnF17Yh14/9N0AQojj6+tzv86nHZ/ywp4X+OlbP+VfV/yLjNiMiW6WEFNSTU0NpaWl6nxQOTk5lJSUUFhYCEB+fj6VlZVq+Y6ODtauXUteXh65ubnqyPLc3FxycnIGjNhevXq1ut3c3Fw2bNhAfn4+RUVFlJaWUlBQoI4iLywsZM2aNcCh/Oq5ubnq9s1mM2vXrlVHuQMsXrxYHf3efwR4sD0zZszgzjvvJDY2loqKCkwmU8jI7sLCQgoLC0PaPFI5i8XC4sWLWbt2LdXV1Vx33XXk5+fz/vvvq+WtVitlZWXqXY4rVqygoqJCDYjn5OSE7NeR9ocQQghxJNQgetj4BNGvm3MdkYZIDFoDqVGppEamkhyVjFE3zAm9GFcSRBdCHBPBSUJbW1txOBzqcqfTycGDBzGbzSxZsmRcbpM1fhYF7usL3MoUERFBeHg4vb29bN++nZSUFNLS0tTyLpeL3bt3Y7fb1ZQvsbGxLFiwALvdzu7du9VyWq2W7u5u2tvbOe2jj7j8uefwK4FJPpWdOzkLyAVmAJ8bzX4B3k1O5rWwMD51u/l6SwsKDJg0VIPC37mBPXusn219+NH5X/2qnueec9PQEEZNTRQwK7AtJbDe97/vHRCId7uD+2/kdn/lK1FceaXC44876O5WWL48iujogcHzoKqqwBXwyy8fedtCiONHo9Hw87N/Tq2tlq1tW7n1jVt56vKnRj1qVoiTRYQ+gg+//uGE1T0aVVVVA/KY22y2kMfBlCUAy5cvp7a2lmXLlmGz2cjJyaG6unrY7W/YsIGEhARsNlvItk0mE2azWX1ssVjU5ysrK0Oeg0DgOZgaJjgC3mQyUV5ePqpc7Bs2bBiwbPHixUdUzmQykZubi8ViUevuv58sFgsmk4lVq1axfPly1qxZM2C0e//ywcdD7Q8hjocntj/B+w3vc+/592IKN010c4QQ46DLHQiixxqPfmJRAIPOwFdnfXVctiWOjATRhRDjyu12q5OEer2BCSU1Gg1xcYGrr729vXg8Hmw2G7W1tRgMBkwmE/Hx8URHRx/RRHfBILorOLQaiIyMJCIiAqfTyY4dO3C5XGRmZqLVatm7dy+tra243W5MJhMul4uYmBhaW1vZs2cPO3fupKenh/j4eLq7u3E6nYTt28flzz7bbxLQQ6777LcfqJs+Hd2FF3LK00+D3z8gOK7Vaplxzz3cbTCgKAr/+9//yH36aRStNpA/XaMBRWHXT37Jv661Y7NBXR1kZc1Aqx1633zhCxHs3avwxBMOHnhAyyefhAbEZs0amH3d5dJ8tv9GtZvR6zXcdNPIo8pfe62X3bsj0ekUrrrqyFO5PPGEg9deUygriyI6eqjs8UKIsTLqjDx44YN87eWvsce2h5+/+3Puv+B+mWhUTCoajeaEvzgUzFs+WlarlZKSEkpKStQULVVVVeqI8f4qKiooLi5WR7m3t7ePKSi8cePGQdsbTD0zVtnZ2ZSVlYUs6+joGBCAH225w4P8h6urq6OgoACTyURhYeEJNemqEId76pOn+P3G3wOwZucaCs8snOAWjS+7284r1lcwR5jJOyXvmNTR5mzjpdqX+Fzq5zg98fRjUocQYzXe6VzExJOohBDiqCmKQldXF3v27GHr1q00NTXh9XoxGAykpaVxxhlnkJ2dTXZ2NvPmzWP69OnEx8ej0+nweDy0traya9cutmzZwt69e+nq6lJvwR2N4ASkbrc7ZILS6OhowsLCsNvttLe38+mnn9LT08P27dvp6uoiKiqKjo4OFEWhubmZHTt2sG/fPrxeLzqdDrvdTltbGw6Hg+y33mJg5vDP+g80zp+PZ+9esg8cIOuf/0RZvRq0WhSdDuWz32i17PvFL4hbtIivf/3rfOc73yHvySfR7NqF5qc/xX/NNXQtX86O556j99ovqdt/6CEXBgMsWNDLr35l55NPXIO2w2AIBLk3bRqYB+3SSyM566xe1q7twf9ZR4Ij0cPHMWW5263wgx8EDi3XXusgOfnIrtX+97+93HhjFM88E8PDD/eMXwOFEACkRKXw4IUPotfqqdxXyeqtqye6SUJMObm5uWrqEQiMQj88B3f/wHcwJzqgpm8JBofNZnNIWavVGjLhZkVFxYD6Ozo6Bm1XYWEhNTU1A4LZ1113HTU1NSHbGuoiwOHtufbaa7HZbCHrBicm7W805Qa7GHD4smXLllFQUMDy5csHDaAPto2h9ocQx9Kre1+l5KN+KY12V+Dz+0Zcz+v38uKeF2lzth3L5h2Vg46DrNqwiryKPH7z4W+4/c3b2dSyaVzr6PX08vDmh7niuSt4sPpBfvhGYMJFISaaoih0uwITi45XOhcx8WQkuhDiiHm9Xtra2tRR3UGxsbEkJSURFxc36MjGmJgYYmJimDVrFt3d3eotxl6vl/b2dtrb29HpdMTFxZGYmKhOGDqU+vp6AMLDw9X6gkF0r9dLbGwsOp2Onp4e1q1bxzvvvENzczMmk4mWlhbi4+PV23jd27dz2bZtJPf20pOczLYlSyh77jmW19cPmeccrRZjWhp9JhNGwOPx0HbZZbQ/+ywJL76IsaEBV3o67V/+Mq6MDLRarTp6HoCZM2HlSnSACYhwuWhubqatrY2eHoXHHpuB369h8+ZINm+Gu++GuXP7uPJKD9dfH8bChYFt2Ww+Hnusl7//XQccCqSff34P770XyUcfRXLddTBzZh+33ebF4QgEu43G8Rt9unKlg927YzCZvDz44JHlua+tdfONbxjw+QLteuEFHT/96bg1UQjxmQXJC/jZWT/jrvfv4s8f/5ms2CwuybpkopslxJRhsVgoLy9XJ83Mzc2lsLCQgoICVq1aRU5ODlVVVcChXOH983YHc4QDFBQUUFBQgNVqpby8nPz8fNasWcOiRYsoLCwkNzeXjRs3UlNTo/4uLy9n8eLF6vaCAf3ly5dTWVmpTqxpNpspLCxUc7QXFxezcuVKFi9eTF5e3qBB6mB7du/ezbPPPovZbKa6upply5axYcMGsrOzWbJkCfn5+SHrmUymYctVVVWp+yTY1v7LKioqyM/PV9sczC9vMplYsWIFRUVFA8p3dHSMuD+EGMz+7v3c8/49JLuSWeJcQrohfUzrf9j4IXe+fScKCvmz86ncV0lTTxPvNrzL0ulLh133ka2P8JdNf+G89PP4W97fRlXfuwffxev3ckHGBWNq51htbt3MP7b/g6r9VWpAO1IfSa+3l5UfreTpy59Gpx3yzGpUghcR/rLpL7Q6W9Xlzb3NbGjawFlpEzOxtBBBPZ4evErgznwZiT55SBBdCDFmDoeD1tZWOjs71ZHfOp2OxMREEhMTCR9maLP/s2HQWq1WTfMSFxdHZmYmDocDm81GZ2cnHo+Hjo4OOjo6mDNnDtHRg6cRaW1txWazodFomDFjhrq8vb2d8PBwHA4HXq+X8PBwdu3axbvvvsv27dvx+Xw4nU7S09MJCwvDYrEw5733mPPPf6o5ypWdOzln/Xr+HzDsDeEaDa60NNoPHKClpYXu7sAVZzIyaPj+99ViM2bMoK6ubtj9A4H0NJmZmaSlpfHLXzbT3R1OUpKDr32tnnffTWXz5jg+/TScTz8N5777YNo0N+ef7+KllyLp7Q294PDVrzp49tlorFY3q1a5ePLJSPbsCecHPzhUZrxGou/b52HVqsCe+uUvnaSkDH/xYzC9vX6+8hUfnZ0RZGa62L/fyIcfRtDc7CUlRQ5ZQoy3/Nn57OzYyb92/os73r6DOGOcnHgKcRzl5+cPCCT3vxsvmI4laKiAbm5uLp2dnerjYDB6MDk5OQO2k5+fH1Jvbm7uoOsPtXywcu3t7XR3dxMbG6vWO5p1hyuXm5s7YJ8cvsxqtWK1WqmtrVUD/BUVFRQUFFBUVDToNkbaH0IM5vX9r/NB0wcA/Pv5f3Nm0plcnHkxF2dePOKk3Z92fMptb9yGx+8h75Q8fn7Wz4nQR/DPHf+kfGf5sEH0Xk8vT37yJADvNrxLvb2e6THTh63voOMgt7x+Cxo0VBVUkRiROMbejqzX08utb9zKh42H5qM4J+0cvjXvW8w1z+XK569kR/sOXtjzAtfMvuaI6vD5fbxz8B0erH6Q2q7A+3ha9DR+mPNDPmj8gGd3P8u/a/8t32XEhAvmQzfqjITrx/HWbzGhJJ2LEGLUXC4X69ev54033qC2tpa+vj6ioqLIyspi/vz5TJ8+fcQAcf8gen8ajYaYmBgyMjKYP38+c+fOVfOo79u3b9ATmd7eXg4cOADA9OnTiYw8FOp2u9309vbidrvZuXMnL7/8Mps2bcJqteLxeEhMTGTevHnMmTOHnJwcTnG7mfv736NVFHSKcug3gQB6HYGc54e3QgFQFFq+9CUcDsehAPphfVu0aJE6Wn+kfXSInn/8IxmAZcu6uflmP6+/DvX1Pu66y66WOngwjH/9K4beXh1ZWS7+7/+61Od+8pPAKA+LJYy//S2G/fvh5z+3k5TkUcvExY3PoeD733fR26vjzDOd3Hbb2APoigI33NDL1q0RxMV5ee01mDOnD59Pw9q1fePSRiHEQHd87g5yM3Px+D3c9sZt7GjfMdFNEkKII1ZaWqqmuwk6/EKFEOMh95RcfnDmD5ium46CwqbWTdxffT+XP385X33pqzxU8xAbmzbi8XlC1qu31/Pdqu/S4+lhccpiVp6/Ep1WR8HsAgDWH1xPU0/TkPWW7ypXcy0DPLf7uRHbunbnWvyKH5/iG/eUKv3b9WHjhxi0Bq6eeTXPXvUsZZeU8flpnycxIpFbFtwCwB9r/hjS/uH4FT+7Onfx5I4n+cH/fsD5/zqf7//v+9R21RJnjKNoSREvXf0SX5zxRa7KvgqAqv1VOL3Oo+qLyzd4+kwhRkvyoU9OEkQXQozIbrdjtVr54IMP2L9/P93d3fT19aEoCi6Xi66uLtrb23E6R/6yMlQQ/XBRUVHMmDEDg8FAX18fTU2hXyR9Ph9WqxVFUTCZTCQnB4LNvb297Nmzh9bWVj755BN27NjBli1bqFu3joVr1/KjDRu4pb6epWlpzJ49m+TkZJKTkzE8/jj+IUYc+QDrokX4h8hzfuBXv8JzyilqbvbDzZo1C4C+vkAgeLRB9Mcf76GhIYz4eC8rVqRy6qmn8dFHYXzve32sXBkVUvbqqx3897+9WK1GIiIC/ViypIdzzglNqWI267jnnhgOHNDzl7/YKS62k5d3ZGlX+vv3v3v5z3+i0WoV/vIXGOHfO6jf/97O2rWBbTz+uIu5c41cdVXgpOPZZ2XCQyGOFZ1Wx71L72VJ6hJ6PD18t+q77OveN9HNEkKII7JkyRJqampCllVUVBzRhKhCDCcjJoMb5t3AzTE389+r/8udZ93JWWlnodPo2N25m9VbV3PDazfw+X99nh+8/gOe/uRptrVt4+aqm2lztjE7fjYPXfQQRl0gNeOMuBksSV2CX/EPGRh3+9w8sf0JAM6fdj4AL+x5Aa/fO2Q7XT5XyPZqWmqGLHukfH4fz3z6DAA/O+tn3HPePcyOnx1S5mtzv0Z2XDadrk7+uumvw27vk/ZP+MlbP+ELa7/ANS9dQ8mGEt488CZ2j51oQzQ3zLuBV776Cv/vtP9HmC4MCKSpmxY9jR5PD28eePOI+qEoCne/fzdnP3U2W1q3HNE2hAAJok9Wcm+8EGJQwfzkra2tuFyBK/FOp5OIiAimTZuG2Wymp6cHr9dLZ2eneguxXq8nOjpazXseEREaoA0G0XW6kfPg6XQ6MjIysFqtNDY2qpORAuzfvx+Xy0VYWBinnHIKEAigb9y4kc2bN2O1WtmzZw+dnZ1c2tDAnXV1oNEEhjt3dqItLWWD389rW7bApk18pa9v6JznGg2fP+UUnNddx/6kJMwvvICxoQFfRgadX/0q9pQUhgrxRkZGqjndxxJEVxS4//7AR3R+vpMHHoAnnjBgtR4abR8W5sftDkSr166NYscON0884eDppwOpb77//aG/TBuNGm65ZeyjxQfjcincdltg733zmw7OO2/s262q6uXOOwMXBu6808HVVwe2cf31Ydx3H7z7bgQdHT7M5qPLnyiEGJxRZ+ShLzzEd177Dp90fEJhZSH/vOyfJEUmTXTThBBiTPLz87FarRQXF5OdnY3NZsNkMg2YxFSI8ZQSmcL1c6/n+rnX0+XqYn39et45+A4fNH5AR18Hb9a/yZv1b6rl06LSeDj3YWLCQr83F8wuYEPTBp7d9SzL5y9Hrw0N2bxY+yKtzlZSIlP4/QW/57LnLqPV2cr6+vVclHnRoG17te5VbC6b+vjj5o/Hrd9Bb9a/yUHHQUxGE1dYrhi0jEFr4I6z7mDZumWs2bmGa2ZfMyDQDvB2/dv8+K0fq6PJw3Xh5KTk8LnUz3FW2lnMNc8dsF8AtBotV1iuoGxLGf+u/TeXzbhszP145tNnKN9VDsD7De8zP2n+mLchBBxK5yKTik4uEkQXQoSw2+00Nzezb98+uru70ev1REVFkZ6ejsFgwOPxkJmZSVJSEoqi0NPTg91ux+FwqPnHgxOFQiAQHhMTQ3R0NLGxsaMeiR4UHx9PXFwcXV1d7Nu3D4vFQnd3N52dnWi1WqKjo6murmb79u0cOHCAPXv20N3djU6no7e3l2m9vfysri5w201wpLmioABLysr4XL+6grnQD6fVajHOns3+pib6pk+n5Yc/xGQy0d3djdvtRqPRMG3aNHWC0/5SUlLUv8cSRH/++R527owiPNzLunUG9u0LXScpyUNKipdt2wIXKaKiFDweIxAYyZKQ0EVBwdGPMB+Ne+5xUFcXg9ns4YEHAkH+wLUKH01NXlpa/DQ3+2ltVWhtVWhrg/Z2aG/X0tmpYfZsH+vWheP1arn8cgd3333oZGLhQiMzZrioqzNSXu6gsHDw3PhCiKMXHRbNX3P/yrf++y0O2A9wc9XNPPbFx4gNi53opgkhxJjIqHMxkeKMcVyZfSVXZl+JX/Gzs2Mn7zW8x/sN71PTUkNMWAx/y/sbyZHJA9a9OPNi4o3xtDhbBgTGvX4vj217DID/m/d/RBoi+XL2l3ls+2M8u/vZIYPowRHi186+lrW71vJpx6f0enqJNAw769OYPPXJU0BgrpXh8j+fnXY2eafkUbmvkns/updHL3kUjebQGdgLe17g1+/9Gp/i4+y0s7n5zJuZnzgfg27wO34Pd6XlSsq2lPFew3u0OdvGlPu9prmG+zbcpz7eb98/6nWFOFy3K5DmVUaiTy4SRBdCqKPO9+/fz4EDBzh48CC9vb1ERkaSnJxMZGQknZ2d7Nu3Tw2qa7VaIiMjiYqKUif9VBSF3t5e7Ha7Glj3+XwhQfW+vj7Cw8NHHUQHyMzMZPv27TgcDnbv3q3+3dnZSXt7Ow6HA5fLhcfjweFwoNVqMZvNpKenU1BTE8gt8lnwPij4Vc0BPK7R8J6i8E8COa76B9IVQKMocOONpKakEBUVGC3d1NSEoigYjUYsFgu9vb0D2h0WFkZ8fDwQyNHu8/nQaDTDBtEVRcFms/HrX/uBKFJSHOzfP/DA29pqoLX10JdJj0dLRISPWbPczJ7tISfnI/T6C0fct0erttbN/fcHvoBrNHDuuR46Ovx0durx+XQw9Ph+VXDusFmz+njmmUg0h13JuPJKNw89ZOSll6CwcJw7IIQIkRiRSGleKd/677fY1bmLH7z+A0rzSmVCJCGEEOIIaDVaTk04lVMTTuXGM26kz9uHgkKEfvDBLmG6MK6eeTWPbX+M8l3lIYHxdXvXccB+gHhjPF+d9VUAvjrrqzy2/THeOfgOTT1NpEalhmxva+tWtrdvJ0wbxvcWfo8369+kpbeFbW3b+Fza5xgPOzt2sqFpAzqNjuvmXDdi+Z8s/glv17/NhqYNvLbvNb6Y9UUUReGRrY/w0McPAfAly5e4+9y7Rx08D8qKy+KMxDPY2raVV+te5ZunfXNU67X0tvDjt36MV/GSFpVGY08j+7sliC6OXPDuDwmiTy4SRBdiCnM4HDQ1NWG1Wjl48CBtbW309PSg0WiIjo4mMTERnU5HW1sbLpeLAwcOEBYWRnh4OAcPHiQ8PJyIiAiioqJCflJTU0lNTVWD6g6HA7vdzt69e2lqasJsNjNz5sxRtzMsLIz09HTq6+tpbGyko6ODjo4O/H4/LpcLvV7PvLAwLm5sJLajg+bISLZlZ9NqMhHX2DgggB7kA17V6VgREYHBYOB2n48HurtBo0ET/FEUePRRmDmTSJ+PlpYW9YJAfHw8p5xyCjqdTp3gtL/o6Gh1ZEVwFLrRaAwZbeFw+Pn1r3sIzEfqpLW1j//+Nx2XK/DxvG+faVT76JNPXMyebUSrjcDj0fPKKwOD+sfCf//rpq8vcBGlvd1Ae3voF92ICB/x8T7MZh/x8X4SEhQSEhQSEyExEX7600OjznNyPMTGDgzUJX2WTcI7dHYaIcQ4yojJ4G+5f+P/Xv0/alpq+MW7v2DV0lUhn11CCCGEGLvRXJTOn53PY9sf492D73LQcZBp0dPwK35Wb10NwDdP+6Y6ijwrLovFKYvZ2LyR53c/z3cXfDdkW8FR6F+c8UXM4WZyknN4de+rfNzy8bgF0Z/+9GkgMNHq4UH8waRHp/OdM77DXzf9ld9v+D3nTzufP1T/gX/t/BcAN5x+Az/M+SFazZFN4fcly5fY2raVf1v/Paogusfn4fY3b6fN2cZM00x+fvbP+b9X/09GooujouZEl3Quk4oE0YWYgvx+P5s3b2bPnj00NjbS1dWF1+tFq9USExNDeno6KSkp+P1++vr61B8IjJTu7Oyko6MDn8+HwWDA5XIRHR2N2WzGaDQSExNDfHw8GRkZamDdYDCwd+9eIJAepbu7m7i40R9QkpOT8fl8tLa20t3dTXh4OCaTienTp/PVri7O+OMfUT7LeW4Bzlm/ng2xsczr7h5yBmUFaAwPJzk5mejoaPZbLLyydClXNDWh3b8fsrLgxhvxWyy0tbSogXKNRsP06dPVyUz7+vpwOBwAmM1mOjo6AOjo6MDtdhMWFobdbgcGpnJ58cVe7r8/GEgemEs8Lc3O6adrmDdP4YwzNCxcaGDevDDCwjQoCtTXe0hL06PXG0e9L8fTt78dSXd3oG/JyRqSkjQkJ2tJSdGRkqInKmro0egPP2wPebxmTQznnGPntttC98POnYHfs2cPPvGrEGL8zTHP4aGLHmL5uuW8uvdV5pjncNMZN010s4QYljLEBOFCjDd5rYljKTM2k7PTzuaDxg94dtez3JpzK+vr17PHtocoQxRfm/u1kPLXzL6Gjc0beW7PcyyfvxydNvDdu93Zzqt7XwXg+rnXA7AweaEaRB8PnX2dvGx9GYBvnPqNUa93w7wbeHHPixx0HOTqF6+mqacJDRqKP1c8pu0M5oszvsh9G+5jR/sOrDYrFpNl2PIlG0rY3LqZGEMMf/zCH4kPD9xJ3NHXgcPtIDpM0kmKsQsG0WONkhZxMpEguhBTiNfrpaWlhU2bNrFt2zZ6enoAMBgMTJs2jenTp2M2m4mIiECj0eD3+/H7/fh8PiIjI9HpdERERGAymejr68PpdGK32zl48CAQmEQzPj4ek8lEeno6DoeD7OxsXC4Xe/fuJT4+nqSkJLUdABkZGaNqu0ajIT09nbfeeovu7m6io6MDI9R7ejjjj39EoyiBUeOfUYCzAsO7CS4dkKYF2HbWWdz8xS+ycOFC4uPjycrKQpuQEFL3XqtVnTgVUHPBd3d3ExUVRXt7OwBxcXHMmDFDDaIDanAdAhcPkj4bVu33+2lvb8diaSI5eQYtLdHExLg488we3nnHDMAjj2ziwgtjyM7OHmKfQEbG2G5xHG8xMVruvPPIJij9z38C/5GUFDcXXOBm7dpobr89mqQkB1//+qEvq7t3B04E5s6VUbBCHE9LUpew4qwV3PPBPTxU8xCz42ezdPrSiW6WEAMYDIFjYW9v74AJzYU4FoJp/IKvPSHGW8HsAj5o/IDn9wRGl6/eEhiFft2c6wbMVZJ3Sh4rP1xJU08T7zW8x/nTzwfg+T3P4/F7OCPxDE5PPB0IBNEBNrduxuf3qQH3I/V87fO4fC5OSziNBUkLRr1euD6cny7+KT9884c09TRh0Br43fm/44tZXzyq9gCYw82cN+083qp/i/9Y/8OtObcOWfaFPS+wZucaAO5dei+ZsZnqNjr6OjhgP8CpCacedZvE1KNOLCrpXCYVCaILMQU4HA727dvH3r176ejooK6ujvb2dsxmM3PnziU1NZXY2Fj0ej1+vx/vYXkztFotvb29GAwGEhISMJlM+P1+NV2LRqPB4/HgcrnUYLPL5cJut9PR0YHX6yUuLo6EhASysrJoa2tj3759tLS0oCgKJpNJTfnS19dHVlbWoKPU29raOHjwIE6nk/DwcHw+H4u3bUMJpl3pR0MgUL4W+F9YGH91u9XAuQJoNRoa776blbfcQlxcHFu2bMHv96s5z4N6enpCAuhBwZQy/UVERLBv374h/w8ajQaXy0VzczPNzc14PB7CwuDXv97H9753Gna7kba2QD/OOaeFBQt8xMZO3ivX995rYMMGD83NYXz8sZ8vfKGHN96I4jvfiSQxsZdLLgncpmq1Bk5Q5807ui/5Qoixu3bOtXza8Snlu8opXl/MU5c/NeKILiGON51Oh8lkUi/QR0ZGnlDph/x+P263m76+vjHNCXOym4z9Dn73bWlpwWQyodPJdxNxbHwh8wskhCfQ5mxj1Uer2NK2BaPOyP877f8NKGvUGbkq+yqe/ORJKnZVcP708/H6vWpwuP/I9Vnxs4gyROHwONhj28Mc85wjbqNP8VG+uxwIjEIf6+fuRZkXcVX2VXzY+CG/+/zvxi29DMCXsr+kBtG/v/D7g6aG2dG+g3vevweAW868JWSgQEZMBh19Hey375cgujgiwYlFTUbTxDZEjCsJogsxydXV1bFx40a6urqw2+3qBJzZ2dnq6GtFUfB4PLjdbiAQ7I2Li1PTubjdbtxuN1qtlujoaPT6Qx8dHo8HnU6HXq8nOjoah8NBT08PPT09dHR00NvbS0pKCnPmzGHhwsDIh8TEwCzpW7dupa2tDZPJFLJNp9N5KIi+ezf8/e+wdy8eoxGPVotWq8Xj8ZCg0ZBQU4NmmJzneoOBZ2Ni+NjvZ5lWyxkxMaSfdx7KDTeQedFFaDQaenp68Pv96PX6AelW6uvr1TZnZmbS3t4+ZKC8qakp5LHRaGTOnDn09PRQX1+Py+Vi//5DufXCwsJITU1l4cIEPv7YwerVMXz6aaD+b32rEWBMKW9ONmecYaSqykVurofdu8OBPs4/v4e3344iPz+M//2vj5kzD02gesYZYRPbYCGmqBWfW0GtrZaalhpufeNWnr7i6QGj4ISYaKmpgTy8wUD6iURRFJxOp3qn31QxmfttMpnU15wQx4JBa+Ars77CI1sfUXOFf2XmV0iMSBy0/DWzruHJT57krfq3aO1tZUvbFpp6mog3xnNp1qVqOb1Wz/zE+bzf+D4ft3x8VEH0HZ4dNPc2Yw43H9EIco1Gw2/O+43693i6cPqFRBuiaexppLq5miWpS0Kef+/gexS/XYzb7+aC6RdQeGZhyPOZMZlsbt3MAfvAea+EGA3JiT45SRBdiEmsp6eHN954g5aWFsLCwsjMzCQ8PByHw0FERARxcXG4XC61fHh4OElJSZjN5gFBbZfLhdfrJTs7G7fbjcvlUpeFh4ej0WiYPXs2jY2NWK1W7HY7ra2t6ij2pKQktm7ditFopK6ujn379nHw4EHsdjtfPu00Fm7ahGK10peWRvStt0JqKjz2GNx0E2g0KIpCClDs95ORnEzChg1cZLczUibwjthY4uPj8cfF8dHChWRffz2tnwWmvVYrFotFTbly+Ch0m82Gw+FAq9WSnp6ORqMhMTGRhIQEmpqaaGhoGFBfXFwcfX19uFwuEhISMBgMmEwm4uLiaG1tpbGxEZ1OR2pqKgkJCeoXxgcfjOL11/uwWsNZuLCbJUu8REREEBY2uQPH8+cHAunnn+9l9+5wfvnLHhwOJx9/HMHllyvcf38fEIXZ7CEhQW6ZFmIiGHQGHrjwAa5/+Xr2de+jaH0Rf7noL0d9C7gQ40mj0ZCWlkZycjIej2eimxPC4/Gwfv16li5dOqXSf0zWfhsMBhmBLo6La2Zdw6NbH0VBQa/Rc8PpNwxZdmb8TBYkLWBT6yZerH2RDxo/CGxj9jUYdaFnTAtTFvJ+4/vUtNQMyK8+Fu+73gcCd62F6Y7snOVYXWAL14dzSdYlPLf7Of5j/Y8aRPcrfkq3lPLwpodRUDjVfCq/O/93A0aqB9O67O+WyUXFkZF0LpOTBNGFmMQ++ugjDh48SFRUFOeddx7R0dHs27cPn89HeHg4Ho8HrVZLfHw8iYmJREcPnDRFURSampowGo2YzeaQUTc+nw+bzYbP58Pj8ZCRkUFcXBxxcXG8/fbbKIqC2+3GaDTy3nvvsWvXLlwuV8jtvUu2bePCP/0pkOBbUQK///EP+N3v4M474bNR5hoOpWL5Zr9RZjuAuf2eV9v92ePXpk8nPS6OuXPncsUVV4SM7LbZbOzduxf/Z3X077+iKGqu95SUFPXkz+/3s3PnTjUX5uEcDoca+O5/Eq/RaEhOTiYpKWnQL4tRUVqefVbDL3/p4MYbW4EjH4WuKIo6EezJYP58I1ddZefJJ2N45RU/r75q5Nxz+6itDeemmwInqRaLB5g8J+BCnGwSIhL44xf+yLf++y3ePfguf6z5I7cvvn2imyXEADqd7oQLcOp0OnXQwWQKJo9kqvZbiPEyPWY65047l3cPvsvllstJj04ftvw1s69hU+sm/rnjn3T0daDVaLl29rUDygXzom9q2XTEbdvRsYP9vv3otfpB6zgRfMnyJZ7b/Rzr9q7jzrPuxOlxcsc7d/DuwXeBwEWKFWetGHCRAQIj0QH22yWILsZOURRsLhsgQfTJZnIkpxNCDGC329U83xaLhYiICBwOBx0dHYFR3SkpZGZmMn/+fLKysgYE0B0OB7W1tbz22mts2bJFTVXS1tZGd3c3TqdTzbNuNBqJjo7m4MGDuFwuent7MRqNpKenM2/ePIxGI3q9Xh3RHhYWxqxZs0jp7ub6//0Pjd+PxudTf+P3o9xxhxrc7i8YSK8GzgkP56KUFO5MScEPeAmkcPEBfmDV7Nm0xMYye/ZsrrvuOq688kqysrJCUrZ0dHRgs9mA0CB6W1sbfX196PV6UlJS1OXBCwND8fl8OJ1OgEFHwg032mLBAiNPPw3TpwfaEx8fP2TZ4VitVurr60/IW9qHkp8fOBy9+mo48fE61q3Tkprqxu0OLJ81yzeRzRNCAKcmnMo95wVyhz62/THWfLpmglskhBBCTG6/OPsXLDtjGT9d/NMRy15yyiVEG6Lp6AvM23Th9AtJi04bUG5+4nx0Gh2NPY009TQNeL4/5bB5p4KCKWbyMvNIikwasW0TYVHKItKi0nB4HPxt89+49j/X8u7BdzHqjPzmvN/w63N/PWgAHQ6NRD/QLelcxNg5vU68/sA8c5ICcXKRkehCTFKbNm2iu7sbl8tFYmIiHo8Hh8OByWQiPT2dBQsWDFjH7/fT0dFBS0sLdrud+vp6nE4nGo2G6dOnq7nOg9ra2mhra0Ov14f8NDQ0YDabSUhIIKK+nqU1NZjtdlxpaXR99av4s7PR6/U4Hn2Uwb6WaQ77fTgf0BAVRVdmJtMiIngrLIyvpaVxdUcH09xumiMieDExkda4OOZkZbF06VKWLl2KRqMhISGBhIQEbDYbTU1Nan80Gg2RkYGJLH0+n5qqJS0tLWREm1arZebMmTQ1NanB9/6ysrJobGzE5XKN+fZERVHUnOmJiYlqe8aisbGRrq7ArWMdHR1MmzZtzNuYCJddFklcnJfOTgPr1vVyxRWR/Pe/Li680EtXl57TTpvoFgohAL4444vs6tzF6q2r+c2Hv2FT6yZ+fvbPiTJEjbyyEEIIIcZkWvQ0bs25dVRlIw2RXGG5YtAJRQ8vN8c8hx3tO/i45WMum3HZoOWe+fQZVm1YRZQhioTwBBIiEkgMT8QcYea1fa8B8PU5Xz+CXh0fWo2WKyxX8MjWR3hk6yNAYIT5Axc+MGIu+IyYDABanC30enqJNIz9vExMXcF86AatgQh9xAS3RownCaILMQk5HA62bNmCw+Fg5syZxMTEkJ6eTkREBE6nk+nTp4eUd7lctLa20tbWpqZmqa+vJzw8nOTkZDIyMggLC1MnH/V4PHg8HkwmE21tberj4LaamprQaDScvmEDn1u9OjRVS3k59gce4DWrlSUffIB2iNENwaVDhaHbYmJITU1VA9zNBgPPzphBV1cXTqcTk8nEqTNnsnTpUq644oqQHO8+nw+v1xuyvaioKLTawKjn5uZm9Xm9Xk9jYyNOp5O+vj76+voGjMjIzMykp6cHg8FAQkICZrMZu90+5iB4a2srTqcTvV5/RMHvrq6ukDztvb29uN3ukyKveliYhksucVJeHsPatT6uuCIwMr+qqo+nnnLyve/JF1chThTfX/h9wnRhPLz5Yf5j/Q+bWzdz39L7mJc4b6KbJoQQQkxp1825jud2P8dM00zOTjt7yHI5yTnsaN9BTXPNoEH0LlcXf6r5E16/ly5XF12uLqxd1pAyGboM5iWc2Mf+Ky1XqgH03Mxc7j7vbmLCYkZcL84YR5wxji5XFwfsB45qAlYx9fTPhz7ZJtae6iSILsQktGnTJtrb29FoNMycOZNp06YRGxurjnIOpgnp7u6mpaVFHbkMgdHQTqeTzMxMIiIimDVrVkj6k/4URSGhowPjU08R1tBAb3IyHy9ciC0yklP1ej5XVobmsICzAsT88IcUjNAHP4OPSA/mOn9n9mzS0tKw2WxqwPvAgQMYDAZSU1M59dRTufrqq8nJyVED7Xa7nba2Nmw2G36/H5vNhkajISkpiaioKHWi0/6j7evq6ga0TavVEh4eTnh4OPHx8ZhMJpKSDt3GqNFoiI0d221bHo9HDYBPmzYtJOg/Gn19fWpbExMTiYgIXPHu7OwMSUdzIsvP11JeDv/9bzh+P2i1sHhxOIsXD/76E0JMDK1Gy81n3sxZaWdRvL6YA/YDfPOVb3Jbzm18a963BkzOJYQQQojjY1b8LF66+iVijbHDp5FMXsCTnzzJptZNgz7/xPYnsHvszIqfxarzV9He1067s532vnbanG3YXXZSm1IHXfdEYjFZ1FR0X87+8pgCmpkxmWx1bZUguhiz4Eh0k9E0sQ0R406C6EJMMg6Hg23bttHd3c3MmTNJTk4mISGB5uZmACIjI+ns7KS1tTVk8snY2FgiIiJoa2tT/541axZOp5ODBw/i8/nUybocDgd79+7F8OST5K1di19R1FzlmWvWcEtYGH6Ph0sUZcCHTPBriwv4D/AVhp4U9N/nnsuV77+Pr9/2NcAdiYnsMxgI7+qis7OTtrY2NVXLtGnTyMvL47rrriMuLg63201zczPt7e0hucz9fj8+ny+kzOG0Wi0RERGEh4erv8PDwwkLCxv3K8r19fX4fD6ioqJITEwc07o+n4/a2lp8Ph/R0dFkZGQQFRVIrWCz2U6aIPpVV0USHe2jtdXA//7XS26ujD4X4kS2MHkh5VeWc9f7d1G5r5L7q+/n/cb3+e3nf0tixNg+x4QQQggxPqbHTB+xTHBy0V2du3C4HUSHHZobqrOvk6c+eQqA7535PWbGz2QmM0PW93g8vPLKK+PY6mPn6plXH9F6GTEZbG3bKpOLijELBtElH/rkM2FB9OLiYsrKygDIzc1l9erVmEymAeWqqqpCHttsNvLz849HE4U4KW3evJm2tjZ0Oh0zZswgMzMTh8PBgQMHaGlpISIigt7eXgB0Oh0JCQkkJSXR19eH1WpFURRMra2kvvIKvXv20JuSQs+XvkSN3c4777zD1q1baWxsJMlm4yO7HS2hMxQrwN/cbnwM/QHjA17W67kpOprXXS7+5HSqAXIIjOR+YulS1oSH8+SZZ3J5UxNZgCc9nTezs3mzrg59Tw/79+/H5/MRERFBXFwcCxYs4NJLL2XatGm0trbS3NyM3W5X69XpdOj1etxuNzqdjsjIyJAR39HR0TgcDgBmzJiB2Wwej3/JiOx2Ox0dgQmAMjMzx7z+3r176evrw2AwYLFYANQgusPhwOPxYDAYxq/Bx0h4uIaLLnLy0kvRrF3rIzd3olskhBhJnDGO+y+4n4rdFZR8VMJ7De/xtf98jb9f+nd1Ui4hhBBCnFiSI5OZHj2dekc9W1q3cO60c9XnHtv2GL3eXk41n8pFmRdNYCsnVvB7zP5uCaKLsemfzkVMLhMSRK+qqsJqtVJdXY3VaqWgoIBly5ZRXl4+oGxhYeGAZRJEF1OR2+2mpaWF+Ph4NUB6uO7ubj799FPa2tqYNWsWp5xyCk6nk7q6OmprawkLCyM5OVnNdW42m9WR5bW1tXi9XhL//W8sK1eCRoPi9xMNJD/+OH+LiOBJvx+fx0OW388vGTxfeXCZHkIC46GFNMSceSZ5Fgu7Ojr4jtNJ7r59pPT10WAw8Fx8PAe6utA5HPTGxPBCZiZxcXGkpqbS3NxMX18fOp0Oo9FIbGwsp59+Ot/+9rdJSEhQg+D9U9TExMRgMBhwOp04nU51+bx58+jo6FDTugTTwphMpuMWQO8/mWhSUpKaR11RFLxe77A/Go0GRVHU9mdnZ2MwGNSgeWRkJG63G5vNFpJu5kSWn6/hpZfg5ZeNahp9IcSJTaPRUDC7gIVJC/nRmz9ib/debnj1Bh659BFmxM2Y6OYJIYQQYhALkxdS76inpqVGDaK3Odt45tNngMAcKFM5n3NmTCCIfsB+YIJbIk42wZHoEkSffCYkiG61WtWR5xaLhZKSEoqLiwctm5ubS2lp6XFuoRAnnuDI6ubmZjVtyeGjizdv3kxjYyNGo1Ed0XzgwAFaW1uJiYkhKyuLrKwsYmJCJ1PZu3cvTU1NRNTX87mVK9H4/cChALgC/Nnp5JvAaYBphLb6ga3x8ZzR2RmyneC2NMCG+fPJNJtJSUnB7XbzfEoKDQ0NdHd3o9friY+NJTU1lbi4OHp7e1EUhU8++QSbzYbP5yMxMZHs7GwuvfRSLBYLCxYsYMuWLQPaMn36dDo6OkJGpMOhvOUmk4l9+/bR3t5OX18fGo3miCb1PFItLS1qWp1gKh6v14vP5xvTdjIzMwdcXImPj6e5ufmkCqJ/5SsRhIf7aGgI4733nJx3nsxmLsTJYmb8TB774mMsW7eMPbY93PDqDTx66aNkm7InumlCCCGEOMzClIX82/pvNrVsUpc9uvVR+nx9zE+cz/nTzp+4xp0A1JHoks5FjJEaRA+TIPpkMyFB9OXLl4c8NpvNLF68eCKaIsRJw/9ZYBugvb2dzs5O0tLSSElJQVEUtmzZwrvvvktzczOzZs1Cr9fT09NDX18fRqMRs9nMjBkziI4+lO/O4XBgtVrZsmULn376Kac/9RQ+v3/QPOYaIHiTXx/QqdGQoigMNn2cotFgnzePl5OTueL559VJQoMB9EfOPpudPh/GzwLmPp8Po9FIfHw8sbGxJCcnk56eTnZ2NjU1NWqqk4iICJKSkoiOjuab3/wmc+fOVevs7e0lISGB1tbWkLbU19cDgfzmycnJADQ1NREdHa1OOJqVlYVOp6OlpUUdqX+82Gw29e/+o+SD9Hr9oD8+ny+kr4OlwwpeZOn/2jnRRUdrufBCB6++Gs0zz3g577yJbpEQYiwSIxJ59NJHWbZuGbs6d/Gd177D6ktWMzt+9kQ3TQghhBD9LEwK5EXf0rYFj99Dh7ODtTvXAvC9Bd+b0qPQ4dBI9KaeJvq8fYTrj985oji5yUj0yeuEmFh0zZo1g6ZtgcCo9by8PKqqqrBYLJSWlpI7RKJcl8uFy+VSH3d3dwOBSS88Hs/4N/yzbff/LQBPH/S2g7sH/D7Ad2g/NWwFvQF0YRBhgnATaAcLw049I72WPB4PXq+XuLg4PB4Pvb297Nu3j7q6OqxWK3v27KGnp4eoqCgiIyOJjY1FURT0ej2xsbHExMRg3L8f3+OP49m9m+6EBHZ//vM8XFXFO++8g6mlheudTnRDtM8PbAsPpyQ7G3tGBjM0Gh589VWUzyb9DFIArUZD7I9+xBkXX0zfr36F7rM6u+Lj2bJkCU6/n9Pdbvx+Py6Xi4iICGJiYkhJSUGv19PS0kJjYyNbt25Fp9MRHh6ujkqfN28eTU1NZGVlqelXAPbv38+sWbPwer0DAumpqakkJyej1+vZvXs3Xq+XyMjIkH2dmppKYmIier3+uL6f09LS6OrqGjRQrtPpBv3yGhyV37//O3bsYPbs2eh0OrX9DocDr9cbsuxkcPXVXl59Ff79bwMPPOA5ZildTvTP7xO1XUKMxBxu5tFLHmV55XI+6fiEG1+7kdWXrGauee7IKwshhJhQVVVVFBcXU15ers61IyYni8lCbFgs3e5udnbs5IU9L+D2u8lJzuGc9HMmunkTzmQ0EWOIwe6xc9BxUO6sE6MmQfTJa8KD6DU1NcDQec5zcnJYsWIFJpOJwsJC8vLy6OzsHHTU5cqVK7nrrrsGLF+3bp2aZ/hYqaysPKbbnywqN0k+sZEM9VpqbW2lq6sLs9mM2Wymu7ubPXv2sH37dhwOBzqdjri4OBISEqivr6evr4/o6Gja29vRarV8fs8e9A8/jKLREKYoJAAJjz6KVavle34/I31N8gObzGb65sxh3uzZxMTEsC42lkvWrkX5rExwpPm6ggK219VheOIJpk2bhv6CC+CCC9RtTfd66e7upq+vD71ej9FoJDw8HLvdTl1dHU1NTSiKgtPppLe3l/j4eNLT05k3bx52ux2NRsMHH3wwoI3r1q0bMOo6PT2dpqamQB/8furq6lAUhczMTMLCwkb1PznR+Hw+6urqAIiMjMTlcuHz+XjnnXdIT09XA+9VVVU4HA4SExPZvn37RDZ5TKKjNej1l7N/fzgPPfQas2b1HdP6TtTP7+AEwEKcjEzhJlZfspqbK29mW/s2bnztRsouKWNewryJbpoQQohB2Gw2Fi1aRE5OjnqOLiY3rUbLguQFrK9fz8vWl3l297OA5EIP0mg0ZMRmsKN9B/u690kQXYxacGLRWGPsBLdEjLcJDaLbbDZWrlw56ISiQSUlJerfpaWllJWVsXHjxkFHo69YsYLbb79dfdzd3U1GRgaXXHIJsbHH5sXr8XiorKwkLy9vQH7qScvngc690LIdOvYGRpx7XaDRgt4IYVGBH71RXcXjh8pmM3kpHRi0gN8Pnl7w9ICrBxQfoIGwCAiPh9QzIGk2RCZMUCePv6FeS8HRxg0NDbS1tZGamkpKSgobN27kwIEDJCQkkJCQQHR0NBkZGSQnJ7No0SIyMzP59NNPcbvdTHc6Sf/JT9AoChpFUbetAP/vs6CzD9gUFcXCnh41fUv/clqNhjmrVnH3ggXq5J1cfDFb8vMxPvkkcTYbfSkpdBcUEJ+Rwec/Wzc8PJzZs2ej1w/8uFEUhe7ubtra2uju7kZRFObMmQMEAt5RUVF0dXVhNBqZPXs2Go0Gh8PBCy+8wIIFCwbdpl6vJyUlhaSkJLSH3eVgs9lIT08nLCyM008/fSz/nhNOa2srBw4ELkpFR0fT09ODoiiYTCYyMjKorKxkyZIleDwesrOziYs7ua6CP/qokzfeiKG+/ixuu23wiXSP1on++R28m0qIk1WcMY6yS8q4uepmtrRu4abXbuL+C+/n3PRzR15ZCCHEcWUymaiursZkMkkAdQpZmLyQ9fXrefKTJwE4K/UslqQumeBWnTgyYzLZ0b5DJhcVYxIciW4ymia2IWLcTWgQfdmyZcMG0AdjMpmGzJ9uNBoxGo0DlhsMhmMeIDkedUw4Zye07oSDNdBVD4o/EOSOS4FR5gczaAM/aLWgj4aIQ/m58fsCgfW+dtj5EuyPh+RTIXU+xGeBbsJvnDgu+r+WHA4HO3fuVJ/T6/XU1dXx4osvUldXh9PpJCIigtjYWAwGA6mpqZxzzjmccsopNDU14ff7iYiIIP355xksJ0YwT3lNXBx/+/znccTEcH5tLTdv2IBfowFFAY0GLdD35z8TOX++Ono8qDc9nW35+Wi1WjUA3v8/5fV62bFjB/PmzVNzjTudTtrb22lvb1dH0RsMBjWtS2RkJG63m4aGBvUuktraWnV7wTZMnz4du91OT08PABaLhbi4uAHBc7Wtvb3o9XoSEhKO6P2qKMoJc1KRnp6OwWBg//799PX1kZiYiM1mw+FwqCPvvV4ver2e6Ojok+7z6ZprXLzxBrzySjh/+MPU/Pw+EdskxFjFhMVQmlvK9//3faqbq7ml6hbuPOtOrp1z7UQ3TQghxGEGu9tbTG4LkxeGPP7+wu9PUEtOTBkxGQDs75bJRcXodbsCg6FkYtHJZ8KikgUFBRQWFmK1WtWJ9UwmExaLhVWrVpGfn09paWnISPSqqio1tYs4ThQlMOq8eTs0bQVnB4RFgykzZKT5uNDqwBgT+IlVAkH7Ax/CwepAfek5kDw38PwUpCgK+/fv58MPP6S7uxu/309CQgIpKSl0d3czc+ZMLrvsMjVnemNjIxDIuW19/nksPt+g2/UD/sREPImJxIWH8/GZZ/LzrCwWbd5MWl8fUaefTvStt2JLTAS3m7CwMNxut7p+8P0bFTX8aOHt27cTExODz+dT01T4fD72799PXFycOlJ6sMk1g4KpX2JiYsjIyCAtLQ2NRoPNZkOj0Qw72trlctHe3g4c2QmCzWajrq6O1NRU0tLSxrz+sZCUlITX66WhoQG3201WVhZ1dXW0trbS2tpKamoqGo1m0IuLJ7rrrovg97938YUveHC7jYSFnRgXL4QQYxcdFk1ZXhm/fO+XvGx9mXs+uId93fu4fdHtI68shBBCiGPm9MTTMWgNePwezpt2HguSF0x0k04ombGByUX32yWILkZHURRsLhsgOdEnowkJohcWFlJRUUFFRUXI8pKSEoqKiigtLcVisXDdddeRl5eHxWLBZDKRl5dHUVHRRDR5aurrBuubgSC2pw+iEiFpbiBty7Gm0UCkOfDj6YPuBmjfA3EZkH0RpMwbdGT1ZBMdHU1YWBgOh4PNmzezY8cO3G43Wq0Wi8VCSkoKzc3NzJ07l6VLlxLX0gL33ot7+3ZSExLYMmMGjaWlXN7QwJB7S6PBZjKRnp5OT08P0dHR1PX0sOfMM5k7dy7nnnsuSYmJACQmJpKSkqLm1/b7/Wqe9iVLlhAZGYnX61UnQfV4PGrucwC73f5ZlRpMJhNmsxmtVjvs6O74+HhSUlIwGo3qpJ+1tbUkJSWp640mKH7gwAEURSH2/7N33/FV1uf/x1/32XtkT0IGe08VBZRVd6sFrdUOq4hWa1urRfrrrt+i1m+/nRactW5AWmeVpaKiIoQlM5vsdUbOOTn73L8/DjkSCRBCQgL5PB+P89CcnHPfn/skJDnXfd3vy2I55Xgnv99PRUUFsVisU3F6IEhJSaGuri7xtcvNzaWiogK3O34JmVarHTBrPRUpKUoqKpTA2XcCQIhbs2YNy5cvx+VyMXnyZB5//HFxEnwQ0yg1LL9oOUMtQ/n7zr/zr33/4rDnMA+c/0B/L00QBEHogWAwSDAYTHzcEUMXDocH1XD0gT6o/mQUKJiZPZMtdVv4/rjvd/s4zvbj7q5sQzYQ70Q/+nv7XD/uow3GY4aeH7c/4icUizcdGhSGs+51G+xf75PplyL6ypUrWbly5XE/3xHbAAN34Ns5TZahaT+UbQTnYbBmg70fz6CpdfE4l1gU3NWw60XImQ4Fs0Fv6791nSFGo5H169dTWVmJ3+/HZDIxcuRIjEYjqampjB49GpPJRNqbb8LixciShCEWQy/LLOCLbPOOJPQvZ51LwM4pU4hEIpjNZlpaWgiHw6SlpZGXl0dKSgoqlYq8vDxsNhtNTU3IsozH48HlchGNRsnNzSUlJeW4xVpZljsNKDIajRQUFAAwatQoampqEjnrkiShVqsJhULY7fbE406Hy+XC7XbHh8Pk5p7Sc6PRKGVlZYmBpeFwOFGwHgjUajUmkwmv14vL5SItLa3TQMqOCB1BOJPKy8tZuXIlq1evxuVysWjRIpYuXXrC3/3CuU+SJG6fcDt5ljx+/uHPea/6PW7x3sLVsav7e2mCIAjCKVq+fDm/+c1vjrl/3bp1iTjGweRsrlvMlmdzvvF8Kj6poIKKU3ru2Xzc3eGNxd+j1vvqee3N11BJ8RLauX7cXRmMxwynftzuWLyZTYGC99a9d1Y2tMHg+3ofXUM5kcERMi10X0f3ec1WQAGpI+IxKwOBQhkvpgfaoOpDcFVC4dxzuitdlmVKS0tpamqivb2d1NRUhg8fjl6v57zzzsPhcAAwJBhEWrwYYrFEkfzo4vl92dmkW638ZN++TlnnErBqwQK8GRlIgQCRSIS2tjbMZjNDhw5N5JiPHDkSlUqF1+vl0KFDHD58OFFUNhqNiViVo0WjUZTK+PeOJElMnjw5UUj3er14PB7MZjNGo5ERI0YQDoc5fPgwLpeLUCiEUqk85YJ3V2KxWGIAZ3p6+ikXlSsqKggGg2g0GvR6PW63G6fTOWCK6BDv1vd6vTidTtLS0sjOzk502w+kdQqDh8vlYvXq1YnO8yVLlvDZZ5/176KEAeOy/MvINGbyw3d/yEHnQVZIK5jums7I1JH9vTRBEAShm5YtW8Y993wRy9XW1kZubi4LFiw45as+z2YDfVB9Xxksxy3LMn9Z/RfaI+2MnzmebH32oDjuow2Wr/WX9fS4DzkPwX/BprNxxRVX9OEK+8Zg/Xp3XE11MqKILsR11X2uG6D5TToLaEYMiq70srIyampqqK+vJzMzk5ycHNLS0rjkkkuorq4mEomQmppK8Le/xRCL0VXQTgyYrtXyxpQpLBs5kgv27SPV58Nls1E8aRLtWVn43W5MJhONjY0oFAqys7OZPn06arUaj8fD1q1b0ev1xGIxWltbicViqFQqrFYrY8eOJeVI3AuAz+ejvr4et9tNZmYmWVlZwLGF9C9Tq9UUFhbicDhoamoiPT29V35o19fXEzqS5X6qWeZ1dXW43W4UCgWFhYWEQiHcbjcul6tXCvy9xWazUV1djdfrTVyGlJaWlrhKQRDOtMmTJ3f6uKysjGXLlh338eKScKhcv5Lo7g/wFeoxDps1cE5g95Ex9jE8s+AZ7n7vbiraKli8YTEr5q5guH14fy/tjBjsl8qK4x4cBvtxn+u0Wm2Xc3cG6sD2viaO+9w1xDKEA44D1PvrGWoZCgyO4/6ywXjMcOrH3R6LdzRbtdaz+vUabF/v7h6rKKILEIvFO7tLNsQ/Hkjd58fz5a50Tz2MuQbM6b22C7/fj1arRaE4AxnwxM9yt7e3U1dXh8ViQaFQsH37dsrLy8nMzKQwFmPuBx+Q8t//wrp1VI8cyef79zP0tde4oqqqywI6AJLEEFkmNTWVNqORVUeyxdPS0lAqlUiyjF6vx+l0EgqFSElJYdy4cWRnZ9PQ0EBVVRWyLKNQKMjIyECpVDJkyBAMBgOSJJGWlgbE887r6+sTuecQ70bvvBSJKVOmIMvycS9rSkpKIikpqTdeUgKBAI2NjQDk5uae0tfS5XIlhrPm5eVhMBjQ6XQoFApCoRA+n++kw1TPFI1Gg9FoxOfz4XK5Et2/Op3urL18TDg3PPbYY6xfv77T92VXBvsl4dEYFO18mmulUljzNkGVmXrrZOqtU2kxjyamOHf/gL2BG/in8p/Uheq4+e2budl4M1mqrP5e1hkz2C6V7SCOe3AZbMfd3UvCB6INGzawevVqIH4V2ZIlS1i4cGE/r0oQ+leuOZcDjgMcbjvMBekX9PdyhAHOHYzHuVg1A7QpVTgtoog+2MWiUPZuvANdbwdjan+v6NR0dKW3HII9q+KFdGvOaW/W7XZTWlqKSqUiPT2dtLS0Pi2m19XVUVtbS11dHQ0NDTQ1NbFjxw7q6+sJBAJc43Ix46mnQKEAWUaWZebKMnMgUTzvyDfvij8tjWg0SjgcRq1WY7FYUKlU6HQ6PB4PwWAQSZLIyMjAbrcTCAT45JNPMBgMZGRkEAqF0Gq1mM1mrNbOvwyCwSCVlZWdMs1lOZ7A/uXHdjhThd2OYaJWqxWbzUY0GiUSiSRuHQNQv3xTKpWJkwFpaWmJor5CocBqteJ0OnE6nQOmiA7xbnSfz4fT6RTDG4UBY+rUqdx2220sXbqUKVOmUFFR0eX3p7gkHA6aPax5/yXmKYqxRTwMbX2foa3vI2tMyEXziV74Y0gb3d/L7HXhcBjpHYn/qP7DXsdeng0+y6MXPsqY5DH9vbQ+NVgvlRXHLY57MOjuJeED0bx585g3b56YYSIIRxliHgJAVVtVP69EOBt0FNFtWlv/LkToE6KIPphFI1CyDireB1N6vIh+NlIoIWU4OMpg9yoY+3Ww553WJgOBAACRSITa2loaGxv7rJjudrupr68nFouhVCqx2Wzs3r2b6upqSkpKOC85mRlPPYUky3Cks/vo3PMtKhVvZ2Tw65qaTp+DLwrrm/LzcblcOBwONBoNEH9jEwqFkGUZlUqF2WxmxIgRjBgxgra2Ntrb2zGZTJhMJlJTU/F4PEQikWPWX1JSEt+vJJGSkoLVaqW0tBSFQtGvUSJOpzPxJsbj8VBcXJwo7neXyWQiJ6fzSRm73Y7T6cTtdh/zuf5kt9upra3F6/V2+XUShP7QEeuybNkyHn74YTZs2NBlR5u4JBxGzL6eP++3cn9tjDm6Ev5vQjXG8neQPPVI+/6N4sAbMHspXPQjUJ5br4leoecfc//B3e/dzc7mndyx6Q7+Me8fTEyb2N9L63OD6Xv8aOK4B5fBdtyD6VgFYTAYYokX0as91f28EuFs4Aq6ALBoB0cj0GBzZnIqhIEnFoOyTfECujnz7C2gd1AoIbkIfC2wdy201Z3W5jpiSIxGI1qtNlFM37NnD42NjYmhmr2htrYWgNTUVIYOHYrZbCYUCuF0OsnMzOSigwc5Xuk3CrSOGEH79dfzyuWXI0sS0aNusiTx0rx5VGu1+Hw+tEeiXBQKRaL73efzkZyczMSJE0lKSsJkMjF9+nRmzpxJcnIyKpUKp9N5wsJsWloa48aNY8iQIfj9fgDMZvMZi8LpytGX0sZisUQBXalUotVqMRqNWK1WkpOTSU9PJzs7myFDhnTahkajOaZrvuOYBlpMilarRa/XI8syLperv5cjDHJfnn3Q0X3+5ax0obPLcmKMyk5iXWAUi1tuIPajvXDLBhhxOcTC8O4D8PgcaPi8v5fa60xqEyvnr2RK+hS8YS9L1i+huLHrGRqCIAiCIAhnSq45PgvrsOdwP69EOBu4Q0fiXLQizuVcJDrRByNZhsoP4kV0U/rAHSB6qiQFJBfGo10+XwvjrwdTz+JpOoroFouFzMxMHA4H9fX1BINBampqaGhoIC8v77RjMxwOB36/H6VSSWZmJsXFxWzdupWamhrMZjOjFQqKtmxBcbwOakliKLAvNZWtksQus5lZJSVkBoO0JSWxfeJE9ofDGCQJpVKJWq0mFArh9XpRKBSkpaUxbNgwzjvvPJqbmxNdzJWVld0+hiFDhpCa+sXr7HYf+aVxnCiXMyUzMxOTyYRCoUClUqFSqVAqlScs7Dc3N3f62OFwoNfrycjISNzXMfxQp9P1zcJPg91ux+/3iyK60O82bNiAzWajoKAAgDVr1vDTn/408bHQNaUC/nfhOL766CdsKWvliY8quW3WNPjGC7BnDfz3PmjYDY9dDLPug5n3nFNd6Qa1gUfnPsrdm+7m04ZPuX3D7ayYt4LJ6eLkiyAIgiAI/SPPEr/Kvc5bRzg2OAYHCz3XFoxfDS8y0c9Noog+GNXvgpL1YEg++zvQv0xSQPKweCF9339g4o2gOfWhdB1d10qlEkmSSE5OJikpiZ07dxKLxYhEIjQ3N59WEV2WZerq6tAePszQTZvQNDWR09xMyUUX4Wxo4JIPPmDOgQOoOXHeeYvZjNvtxuVyIZtM/HfWLIxGI6FQiEAggEqlwu/3Y7FYqKurIxgMYjAYGDFiBJdeeilFRUWUlJQkCsihUCgR+dIVpVJJWloaZrOZ9vZ2kpOTE5+LRqOJbPT+LqJ35JefiqPjXgwGA+3t7dTW1qJWqxPH2RH101X0RH+z2+3U1dXh8XiOGeoqCGfSvHnzWLRoEVOnTmXKlCkkJSXx0EMP9feyzgr5KUZ+edVolq3dwx/eOciMwhTGZlth/CLInwVv3gMH3oD3fg8HXoeZP4Hc88BybgzjNKgN/G3u3/jRuz/io7qP+MGmH/DsZc9SYBMnYARBEARBOPNS9anolDoC0QD1vvr+Xo4wwCUGi4pO9HOSKKIPNu2OeAe6Ug3GlP5eTd/oiHZpOQRVW2DYvJM+RZZlWltbgXiOYUeWdkdkh9/vZ9++fZ2ek5ube1rLbGlpwbR6NXkPPACSBLLMNFlm+rvvEpAkDEcKuh9qNMwIheLrOXrNRz5+v7CQiooKYrEYNpsNk8mEz+dDlmV0Oh2yLGM0Gjl06BCyLJOcnMzkyZO56qqrEvElKSkppKenE4lEKCgowO1209DQQDj8xZn2nJwc0tPTkWU58bqYzeZOx+RwOIB4l/aJCvFd8fv9eDweUlNT+y0qJS0tDb/fT0tLC+3t7Wg0GkKhEFVVVahUKqxWa6KIPhA70XU6HTqdDq/X2ynORhDOtMmTJ7N9+/b+XsZZ6xvTcnn3QBPr9jXyw5d28MYPZqLXKMGcDtc/B5+/Am/dCw17YPV340+yZEPOtPgtdzpkTgTVqf0cHih0Kh1/uuRP3LruVnY17+L2Dbfz3OXPkWZI6++lCYIgCIIwyEiSRK4llxJnichFF05KxLmc20QRfTDpyEH31EPqyP5eTd9SquNRNVUfQVJ+POblBJxOJ1VVx07brq6uprr62F+U48aNO+Ui8dFisRitn3zCiAceQDoqX1155L8GWaZMqeQPQ4dSPWIEM8vKuO/gQZAkJL4ooD82fTq7fL5Ep3RqaiqyLGOxWFAoFASDQbxeL1VVVSiVSrKzs5k3bx4LFixAr9d/sV+lkmHDhiU+TktLIyUlhdbWVpqamtDr9aSlxYsXxytwRyIR6uriWfQpKad2giYYDHLw4EGi0ShKpbJTd/uZlpcXv1yvpaWFSCSSGCRaXl7OsGHDBnQRHeLd6F6vN3FFgCAIZx9Jknjw6+PZWb2ZsmYfv39rP7/72tiOT8K4hfGu9A/+CFUfQuNeaKuFfbXxq7AAjKlw3u0w7Zaz8qoznUrHX+f8lW/991tUtVVx58Y7+eel/8SoNvb30gRBEARBGGSGmIckiugWxMBI4fgSnegizuWcJIrog0nDLqgtBtuQeOzJuc6QHO+8L90YH556gliXowvKOp0uUSjtytixY0+rgA7Q2NiIde3a434+CnyalQXz5qGsq2NdVha1+fl8w+fD4nRSBbydnU2dwYBWoyErK4vs7GxkWSYQCBCLxfD5fHi9Xpqbm9HpdGRnZ3PNNddw0UUXdWuNCoWC1NTUTnnnJ1JXV0ckEulUcO+OWCxGWVlZIn7E6XT2axEd4oV0j8dDMBjEZrMRi8Vwu92UlpYm1jlQi+g2m43q6mr8fn+vDsAVBOHMSjJqeGTRBL791Fae/aSKWcNTmT86/YsHmNLgsgfj/x/0Qt0OqNkKNdug+lPwNcOm38GH/wdTvgsX3HnWRb7YdXb+Me8f3PTWTRxwHOCe9+7hb3P/hlpx7uTAC4IgCIIw8A0xx6/grvZWM4Yx/bwaYSBLFNHPldmDQieDoJIqAEdiXN4FlRY0pv5ezZljHwqtJfFYlxPQ6/WJomhmZiZq9bFv0CVJYuzYsYks7Egkgtvt7pSj3UlJCSxbBjfcgHz//bR+8gm1tbWUFxez50c/Qv/ii/GrA44jze/n0KFDiSGgvsxMPrziCp6/4gr+OWIELTYb6enpjBo1iry8PBQKBR6PBwCPx4PX68Xn86HT6SgsLOS6665jxowZ3XjRTp3P50tkqufm5p5SHEtVVVViuCpAW1vbgMjzttvjnZsul4uCggKMRmNiXWq1OrHegcZgMGC320lKSurvpQiCcJpmDU/llovyAbjn5Z2UNR/nChOtCfJnxvPRb3gRfnIQrnkM0sZAyAsf/w3+NB7+831oPngGj+D05ZpzeXTuo+hVerbUbeHXW359/N+7giAIgiAIfSDXEo9yFXEuwsm0hcRg0XOZKKIPBkfHuFhz+ns1Z9bRsS6tZSd8aEfR1Ol0olJ1vkgjJSWFSZMmJQrora2t7N27l9LS0kSWeidPPw0jR8If/oC8ahU88ghJM2YQnTSJ7KlTWbBqFbZg8LjDQmWgWqWipaWFtra2RMZ4S0sLzc3NGI1G8vLySE1NxWAwEIvFcDgcGI1G2trakCQJSZLQaDTk5+dz8cUXM3nyZBSK3v8nL8syhw8fBiApKemYnPQTaWxsxOFwIEkSRUVFiQx3t9vd6+s8VR1DYzvW0rE+GLhd6B3y8/Ox2Wx98vUWBOHMWnrpSKbm2fEEI9z2r214AuGTP0mphgnXwx0fwTdXQ96FEAvDzufh0fPhjR+Dr6XvF99LxqSM4ZHZj6CUlLxW9hp/2/m3/l6SIAiCIAiDSKITXRTRhRMIRoP4I35AZKKfq0SFZTBoPhC/zHuwxLh8mSEZIsH4iYRo5LgP6yiiu91uCgsLGTFiROJzOTk5SJJEMBikpKSEyspKIpH4to7piCspgVtvjZ+8iEaRYjGkaBRJlhnS3IxWltknSfxFrSZKvGB+NJn4P8z1ubnY7XYyMzMxm834fD7KyspobW1Fr9ej1WqJRqNotVo8Hg8pKSm43W5MJhNKpZJYLEZ6ejoTJkxgxowZXXbX94aOIZxKpZKcnO6fpPF4PNTW1gLx19dkMnU6kdHfjEYjGo2GWCxGW1sbKpWKYcOGkZKSQmZmZn8vTxCEQUKjUvDoTZPJsOgoa/Zxz6pdxGLd7MSWJBi+AG5+C27ZACOuADkG256Cv0yGjx+FaDeK8gPArJxZ/Pz8nwPw2O7HWHVwVT+vSBAEQRCEwaKjiF7rqyUq9/9V08LA1BHlopSUmNSDKAFiEBmEFdVBRpahfmf8TfNZFOMSjcZwtvkIR45f9D4l1lxwVsZviX1EOxXAOyJdZFmmqampU/a1QqGgsbGRffv2JTq99TU1ZP3tb1hvvz0e21JSAkDsH/847qXmMeA5jYY5qan8X3Y2v8zKIgZEJImoJBEhXkR/7LzzkIYNIz8/n6FDh2Kz2ZBlmVgshtFoTAy7tFgstLe3k5KSgsfjwWq1EgqF8Hq9mM1mioqKuOSSSzAa+2YQWyQSSRTCs7KyOhXqI5EIgUAAr9eLy+WipaWFhoYGampqaGpqory8HFmWSU5OTmSod3R/t7W1DYg87471uFwuADQaDXl5eafUbS8IgnC60sw6VnxrChqlgvX7GvnrptJT30juNLjhBfjum5AxDoJueGcZPHoBHFrX+4vuAwuHL2TJ+CUA/M+n/8PGqo39vCJBEARBEAaDdGM6GoWGSCyCO9b/V00LA1NHEd2isZxSxK1w9hCDRc91nnpoKQFTRn+v5JQ0tLppaHUjSRI2k560JAsmw2lEaKh1EIsQqdlBS8SEy+XC5/Oh0WhIT08nJSUFhUJBVlYW5eXlNDU10dISv9RdkiQOHDhAe3s7AGazmfz33kN1xx3xLj9ZBklCfvhhGkePJmXvXlTHKaLLQKrRSFZ2NiqVii1GI98fOZJrnE7S29spjUQonjSJOoMBnUpFeno6SqUy8QNYo9GQkZFBJBJBkiRkWcZkMtHU1ITBYMDn8+Hz+VCr1QwdOpQ5c+Ykurv7Qm1tbaeBoM3NzUQikUSX/skYDAaGDBnS6WOtVkswGMTtdvfp2rvDbrfT1NSEy+VClmXxi1AQhH4zMdfGA9eM5adrdvN/Gw4xOsvSedBodw29CG57H3Y8Cxt/F58b8sIiKJwLFy+LF9sHsDsn3kmzv5m1JWv56eafsnL+SqZmTO3vZQmCIAiCcA5TSApyzbmUuctwxBz9vRxhgEoMFRVRLucsUUQ/1zXug5AvHuVyFmkPhIB4VIrT047T045eqyYtyUKSxdijrGfZmMbB4g8IDE8CvQ2AUChEdXU1dXV1pKWlkZqaSk5ODs1btpD82mto6+oIZmXRevXVKPPzycnJIcXphDvuOGYoqARkfP55fF9HPu6KLzWVqVOnYrfbE93WHb10hw4dIjs1FX0shs1mw2g0JvLOtVptogM6FoslCswejyeRhe7z+YjFYuTl5TF79mxyc3NP+XU6FUfHrni9xw68UyqVqFSqTrejM+STk5OP+Vp2FNEHwnBRk8mEWq0mHA7j8XiwWCz9vSRBEAax66bm8nmtm399XMWPX97Jf+68kKK0HlxlplDClO/CmGtg8x/gkxVQtjF+y7sILvoRFM2LnygeYCRJ4hfn/wJHwMF71e9x96a7efrSpxmRNOKkzxUEQRAEQeipXEu8iN4a62ImmiAA7tCRTnStqBucq0QR/VwW8sWjXPT9283bE6FwvJM5Nz0JfzCEo82HPximqr6VmkYnKTYT6ckW1Krufwu3BFQEPE5UbYfJHjkBi8VCW1sbDQ0NBINB6uvraWhoYMjGjYy5//5OXeYZ//oX0cceQzVxIqH770cty10WyWPARrWaOeEwCjoX0mXib/6brrqKcXl5qNVqVCoV4XAYp9NJKBQiGAwiyzIWiwWTyYTJZEKWZdRqNRqNhqSkJD7//HNCoRApKSlYrVbq6uqQJIloNEokEiEjI4MLL7yQkSNHnsZXoHvy8/Npb28/plDecfty57bD4ehURK+pqUGv13eKRwkEAsDAGd5ps9lobm5OxOcIgiD0p19cOZoDDR62Vji47dlt/OfOC7HoejjzQmeFBQ/AlJvhgz/C7peh6sP4LX0sXPijeKFdObD+XFQpVPxh1h9Ysn4JxU3F3LHhDp69/FmyTdn9vTRBEARBEM5RHbnojdHGfl6JMFC1BdsAsGpEJ/q5SmSin8uaD4K3CYyp/b2SUxY6EgdiNenJy0xhfFEuOWl2tGoV0ViMRkcbFbUt3d5eLBajvtUNGhNZsTpSrCY0Gg0pKSmMGTOGwsJCjEYj6spKkpcu/WIY6JH/EouhvPVW6vV6NE8+iXSCuJagVstvcnOJAVFJInYk71yWJN698UYUw4djMBgwmeJrsNvtiextnU6XyN0eOnQoZrMZpVKJxWIhNTWVlpYWdDodWq0WtVpNQ0MDJpMJj8eDx+Nh6NChnHfeeUyaNKlH3fqnymq1kpmZSWpqKna7HbPZjF6vR61Wdxl9EgwGgfjJBKVSiSzLlJWV4ffHJ1jHYjFCoVDitRgIOjr+OyJdBEEQ+pNaqeDRGyeTadVR3uzj3lW7Tv9nU3IhfO3v8MNdcMFdoDZC4+ew9lb46yTY8RzE+v/qoKPpVDr+MucvFNmKaPY3c/v623EG+n8otSAIgiAI56bzMs8DYFdoF56Qp59XIwxEHXEuNq2tfxci9BlRRD9XxWJQtwNU2vhl22eRSCRKLBYvCGjUX3S/RaIxji4T2C2Gbm+z0dFGKBxB5YpieGwtvisvo/W229j36qt8/PHHbN++nYMHD9Ly8MN0Nc5SOnLLDASIAccrV8hAk8HA5oICfnzZZfx3zBi25efz7pQpPPv//h9VR4Z8ajQawuEwbrebqqoqYrEYWq2W9PR0LrzwQrKzs0lLSyMQCBAMBrFarahUKgKBAG63G7PZTHt7O5FIhMrKSvR6PSNGjGDSpEnMmDEDjUbzpdc0gtPp7PcicEZGBlarFVmWE3Et0WiUkpISgsFgosjeEQMzEJhMJlQqFZFIpMvIGkEQhDMtxaRl5ZFBo+v2NfLsJ1W9s2FrNnzlf+DHn8MlPwdDMrgOw6t3woqL4NA78Su0Bgir1sqKeSvINGZS2VbJnRvvpD3c3t/LEgRBEAThHDQzeyZF1iKCBFldsrq/lyMMQK6gCxCZ6OcyUUQ/V/mawV0DxrT+XgkAbd52ysvLqahrps3r71TMlWWZYChMOBJBluVEF7paFR+o6fa2s/PQYRpa3YmYlyEZSaTaO0dryLKM29tOJNK5Wy4SiXKwsgHH8+8w7v89jv6NHejXv4/9yScZec01uP70Jz5bv54DDzxA0fbtKI5TIIgBW5RKFiQldVlI78hB3zF5MsOHDyeYm8trF1zAM5deykdXXklbWhper5eGhgaamppobIxfBqbValEqlYwePZqkpCSsViupqamUlZWhVqvJzMwkGo1SX19PW1sbKpUKl8uFy+XC4XCQkpJCQUEBM2fOZPbs2ej1+s7rjsU4dOgQ5eXliWGp/UWSJAoLC7Fa479UlEoler2ecDhMSUlJokg9ULrQIb7mjisFjs6AFwRB6E/jc2zcf1k8tuuBN/ezr66t9zZuSILZ98GPPof5v4vHvjTtgxeug39eCTXbe29fpyndmM6K+SuwaW3sadnDj9/7MeFouL+XJQiCIAjCOUaSJL4z+jsAvHDwBQKRwBnb90HHQW555xZ2N+8+Y/sUTp3IRD/3iSL6uaq9BcLtoOl+t3Zf2llSzeHDhyneV8knn5ex4+BhapucBENhKuta+Lyslt0lNRQfqGJ/RT0A4UiU7fsrKa1u6rStoZkpxxTQve0B9lfUUVrdRE1T50LnrpLDHPpoF/PWb0Uhg0KW47dYDEmWuWz1au596CGWbttGbiRy3IGgMWB/UhJthYX8vqCAGBABosRjW2Tg+UsuwTZ1KoWFhRQVFVFUVEReXh46nY6mpibq6+txuVz4/X4MBgMGg4Fx48YxfPhwZFlORIdUVVVhNBqJRCLo9Xr8fj+NjY20trbS3t6O2+0mHA4zZMgQJk2axJVXXsm4ceO6jHCprKxMxKU4HP0/SVySJAoKClAoFESjUbKystBoNASDQaqrq4GBVUQHEkV0l8vVr+sQBEE42s0XDmXuyDRCkRg/eLGY9lCkd3egMcCFd8djXmbcDUptPC/9iTmw6jvQWta7++uhAmsBf5/7d/QqPVvqtnD/B/cTHWDxM4IgCIIgnP0W5C3AJtlwBBy8WvrqGdvv8/ufZ2vDVv532/+esX0Kp64jzkVkop+7RBH9XNXeemQo5sD4Etc1uWhvbycqx2hxedlXXstn+yrYsruUksONuDzt3YoaKchOJdlmSnwciUSpqm/hYFUD/mC886yjWx2g5HADG7buZ+TuUuiiPN4R06ICDioUvKDVHrfLXAF8OGIEqampfDZmDHdccgn/KSri07w81k+YwIM330zdggVkZmZiNBpRKpWEQiF8Ph8+nw9JktBqtSQnJ5OdnU1GRgZpaWn4fD5UKhWpqam0tbXh8XgIhUK0tbWRnp5OaWkpVVVV1NXV0dbWhs/nIy0tjVGjRjF37lwuv/xyMjIyuiygNzY24nQ6E/nkXq+XcLj/O/QUCkWiG93n8zFs2DBUKlXie2CgFdEtFgtKpZJwOCwiXQRBGDAkSeIPiyaQbtFS1uzj16/t7Zsd6e2w4Hfwg+0w4ZuABPv+A3+bFo96cfZSnMxpGJ86nj9d8ifUCjXrqtbx209+2+8RZoIgCIIgnFvUCjUX6i4E4Om9TxOJ9XIDw3Hsat4FQHFTMeWu8jOyT+HUJQaLijiXc9bAqLAKvc9dE89DHwCi0SiHG1rweDzo1GrsFgNmo45YTKa2yUlFXQuHDjfgaQ8wcfgQbOZ493wgGKbN50/koxdkp2K3GBPbbXV52VteS4srXtQ06uPHG5NlZFnmYFUDn7y1hfPfL2Zsac1xh4HGgA9sNn593XVsufVWXl6wAPnIMNDoUUNBn77oIlQjR5Kbm0t2djaqkSP54PLLeeOb32TzZZehGzuWzMxMNBoNbrcbj8eDUqlEq9VisVjIzs6msLCQzMxM7HY7er0eSZISA0IPHjyI1+ulpaUFv9+PXq+nuLiY6upqdu/ejcPhQKvVMmHCBM477zyuv/56pk+fftyCc1tbGzU1NQDk5uZiNMZfu4HSTd3Rde90OtHpdBQVFSVOBHw5kqa/SZJEWlpaomteEARhoEgyavi/6yciSbBqWw2v7arru53ZcuGaf8AdH8HwS0GOxoeO/nUKvHEPtPXhvrthRtYMHp71MApJwdqStfxx+x9FIV0QBEEQhF41RTMFm9ZGrbeW9VXr+3x/7qCbcvcXhfNXSl7p830KPdMR5yKK6OeugTG5T+hd0XD8jazGePLHngH+YJjIkSGSackWDBoVwVCERocbb3sQhUIiEAijkCSisRhWo55t+yqIROP/X1HbQnqyhUkjhgDx4vrhhlY87fEMMp1GTV5mMrIsc+hwI4rqRlqee5ukbQe4qbaZGCc+WyRLEopx47jooovQaDT4J09m1cyZZL/9NkltbTitVraOG4cvM5MijQaVSoVCoUCSJFQqFaFQCJVKRUpKCtFoFKfTiUqlQqlUYrVaSUtLQ6vVEovFR5aGw2HC4TCRSIRgMEggEECWZSKRCIFAAJVKxeHDhykvL8fr9eLxeLDZbNjtdi6++GLOP/988vLyUKvVxz2mYDBIRUUFAMnJyaSmphKLxfD5fDidTlJTU0//C3uaLBYLkiQRDAbx+/0YjUZGjBiBx+PBYhl4GWJZWVn9vQRBEIQuzShM4a5LivjrplJ+tnYPE3NsDEnuwzi39DHwzZeh+jN493+g/F3Y9mS8oD7tFph6CyTl98tg83l58/j1Bb/ml1t+yT/3/hOLxsLi8YvP+DoEQRAEQTg3aSQNNwy/gX/s+QdP7nmSS4demrjyuy905KCrJBUROcJrZa/xw8k/RKMUzV0DjYhzOfeJIvq5qN0BIR8Ykvt7JQC0+fwgg1qtZuLwIbjbvLz98R7qW+I/YPRaDReMK0SnVbO3rJaK+hbcXj+tbh92iwGODB4FqGt20tDahizLKBQSmck20pPjxVifP4j9/WLyn3ozPuRTlpGAo9/Cdwz//PLHFXPmoDlSIJckiRabjaqrrkKlUhGLxdDr9cjBIEVFRUSjUTweT+LxHdxuN06nE41Gg16vJyMjg1gsRiwWQ5KkRMSLz+ejpaUFl8uV6JBTq9WJDud169bhcDiIxWLYbDZyc3MpKCjg0ksvZdKkScRiMUKhEO3t7UQikWNuAB6Ph2g0isFgYMiQ+MkHm81GTU0NXq+XSCTSae39oeMkg8vlwul0otfrEznxgiAIwqn54dxhfFzWyrYqJz94aQdrbr8AtbKPLzjMnQbf/g9Ufgib/gcOb4FPHo3fVHpIHQFpoyFtZPy/WZPAmNK3awKuGXYNbaE2Htn2CH/Z8RcsGgvXj7y+z/crCIIgCMLgcN3w6/jn/n9y0HmQj+o+4qLsi/psXx1RLpfmX8rW+q00+ZvYdHgTl+Zf2mf7FHomUUQXnejnrH6roi1dupTHHnsMgHnz5vH4448nhvcdzeVysXz5cgCKi4tZuXIlBQUFZ3KpZ5+OoaLqnH7ZfTQaO9JlHkCtVnG4vhWIF02dbT7e37Yfb3sw8fivXDAWs17L+q37aHK0odWoiUSjKBVSvINdhkAowr7yOoJH8s6tJj256UloNV90Y8tVDQx96s1E8bwrEvHCuQzIEkhIbPrmNwnk5BCLRmlra6O9vT2RXx6JRDCZTPj9ftLT0zEYDMiyTGpqKk1NTSgUCrRaLQ6HI5F7rtFoyM7OxmQyoVQqCQaDtLe309jYiMfjQZZlNBoNVqsVhUJBJBLB4/Gwe/duPvroI+x2O2azmbFjx1JQUEBeXh5paWlIksTu3ac2jbuwsDARkaLVajEYDLS3t9PW1kZSUtIpbasv2Gw2XC4XLpdLdHoLgiCcBpVSwZ++MZHL//wBu6pdPLLuIMsuG3Vmdj70Irj5LSjbBB/8EWq3QcQP9Tvjtw6SEkZcBlO+C4Vz+rRT/TtjvkNbqI3Hdj/G/3z6P5g0Jq4ouKLP9icIgiAIwuBh1VpZOHwhz+57lif3PNmnRfSdzTsBmJQ2iSxTFo/tfow1JWtEEb2XhKNhfGEfNp3ttLfTHmkHRBH9XNYvRfQNGzZQXl7O9u3bKS8vZ9GiRSxevJjVq1cf89i5c+eyceNGbDYbGzZsYP78+ZSVlfXDqs8igTZA6rehok6Pjz2lNTQ7PQB42gO4PO00uIL8bVUDTrcHSaHAqNNy7ZzJaFRKPtpdQkVdMy6vnyHpSaQnWQhHopgMWpocbcRiMfzBMFqNitz0pE7Z6BCPeHGt+DfGbmSfyoBDr2F/QQaVV38TT04uXoeDUCiUKGpbrVYcDkci3zwzMzMx8FOpVNLe3o7ZbMbn8+H1etFqtRiNRpKSkrBYLASDQbxeL5Ik4ff78Xq9BINBgsEgkiQlCtuBQICGhgZKSkpwOByJbPDrrruOCy+8kKqqKkKhUHzdR45NoVCgUqm6vDkcDgKBQOJYlcrOBYovf9zfbDZb4jUKBAIDbqCoIAjC2STHbuDhheO5/bliHttczuxhqcwo6vvObwAkCYrmxm+xKDgroWkfNO2P/7dxL7QcggNvxG/WXJj0LRj3jT5b0l0T78IT8vDigRf5+Yc/J0mXxAVZF/TZ/gRBEARBGDy+PfrbvHjgRbY1bmNX8y4mpE7o9X1EY1H2NO8BYELqBEwaE4/vfpxP6z+luq2aXEtur+9zsPnJ+z/ho9qPePIrTzIxbWKPt9ORhy4hYdaYe2l1wkDTL0X08vLyROd5QUEBDz30EEuXLj3mcRs2bCApKSnRoT5v3jzKy8spLi5m8uTJZ3jVZ5FYhHipuH8YdVpUSiUNrW4kSaI9EMIfDOFyBSn1h1AcaRPXpKjY8Ok+lAoFMhJ2s570JCsS8Rz1aCyG3xEiemSwqN1iJD8rBeVRl6fLskxd8QFij7xITmlNt9YnAx+l29g8MgfZ10b04EEkSUoUt9PT0/H5fEQiEdxuN6NHj8blcmE0GonFYgSDwUQBXavVotfr8Xg8GI1GrFYrer0ek8mE2+2mrKwsUZw3m81YLBZCoRDNzc20tLRQV1dHW1sbKpWKgoIC9Ho9v/vd77Ba42cuR4wYkchJ77h1FOC/LBwOU19f3+m+srIyhg0blsho6yiwD5RitVKpxGw209bWhsvlIiMjo7+XJAiCcFa7dGwmN0wfwotbD/OT1bt4+4ezsBqOP0OjTyiUkFwYv4266ov7m/bD9mdg14vgrob3fo/q/Qc53zwWxadVkH8RZIwHZe/8eSpJEvdPvx9X0MV/K/7LPe/dw78u+xfD7MN6ZfuCIAiCIAxeGcYMriy4kv+U/oen9jzFn+f8udf3UeoqpT3SjlFtpMhWhFKh5IKsC9hSt4W1pWv54eQf9vo+B5M9zXt4t/pdAP6w7Q88d9lzPc6374hysWgtKPqpoVXoe71aRH/iiSe49dZbT/q42267rdPHSUlJTJ069ZjHFRcXHxPdUlBQQHl5uSiin4gc7dfd63UaUm0mYjEZq0mHzWzgQFUjCoWCvOwUgoEgoXCEmByjvLaZUDjK+KIcLCYjJoMWOSbjaPNRVd+KyaDF5w/R6vZiMeqpaXSgUilRKiR8gSCWTduZuvY9JJnjRrgcrSMD/a0kCy2NDtTUo9YbsdlsJCcnY7fbCQaDWCwWPB4PhYWFmM1mCgoKCIfjuewWiwWv18vQoUORJIlAIIBer090U/v9fqLRKM3NzYm4F4PBgNPpxO12EwgEErExWq2WgoIC8vPzmT17NmVlZZ0ywTUaTSIr/WSUSiVqtTrRuQ7xbPSKigry8/OJxWKJY9Bqtd39cvY5u91OW1sbTqdTFNEFQRB6wS+uHMUn5a1UtPj4+auf89cbJvX3kuLSRsFlD8K8X8P+12D7P5GqPiK9bTdsOBJXpjFB7nTImwF5F0L2VFD1fHCWQlLwwIUP0OhrpLipmO9v/D7PX/48aYa03jkmQRAEQRAGrZvH3Myrpa+yqXoT5a5yCmy9Gz3ckYc+LmUcyiMxeF8f9nW21G3hP6X/4fsTv49acYabJc4hT33+VOL/dzfvZuPhjczLm9ejbZW4SgBI1af2ytqEgalHRfS2tjaWLl3Ktm3bcLlcifvLy8u7VUT/spdffpklS5Ycc39ra+sxOek2mw2Hw9HldjriMo5eJ8Q7dDuKh72tY7t9tf0eCYdBVkKs/5ZgsZhJT7HR6GwjM8mG3WIkbLaTn62j1e3B5fYRCIZJS7KRlmRBr1OjUqrwByK4PO1UNbQQDEWJRGMEQvEc9G0HDmPQaYjGYjjbfCS5vdz/+oec7BxfR09+jHgB/Z+ThuNNtqCLhbDYLdhTsxI55EajkdTUVMrKysjPz0ehUJCbm3tM17nFYiESiRAIBAiHw9TV1ZGWloZaraa1tZXKykoATCYTGRkZtLS0xAeWtrQQDofx+/1YLBaKiooYO3YskyZNQqPRUF5eflrfS/n5+Rw6dKjTNpqbm5FlmeTk5MRA0Y6BpwOB0WgkEonQ1taWiMY5kQH5b26AEa9R9wz012mgrksY+AwaFf93/US+/o8tvL6rjnmj0vjqxOz+XtYX1DoYfx2Mv45w/T4Ovf4nRhmcKKo/haA7nq1etin+WI0ZCmYfiYqZD7ZTv2xZo9Twlzl/4aa3bqKyrZK7Nt7FPy/9Jwa1GGQtCIIgCELPFdgKuCT3EjZVb+K3n/yWBy58gBxz782m6yiiHx0Vc0nuJSTpkmjxt7C5ZjNzh8zttf2dKk/Ig0lt6nH3dn8qd5ez8fBGAC4deilvV77Nn4v/zOzc2T06MfHu4XhHe1/m4wv9r0dF9FtvvZXi4mKWLFly2kM+i4uLAVi4cOExnzu6QH+04w1EXL58Ob/5zW+OuX/dunWdunv7wvr16/t0+6fuPKg/+aN6WzQaRaFQEAwaqFa2c6DlAJ87/ARJQqfTcsBjovJwC7KsJCMjG0VKChGbDb9Kxf7KSpxOJ5Ik4XAp8Xr9SFIYm82GyWTC51dh19nxtnsxNnm49rO9J11PRwG9NDmZ3UlJvFtQQOORWBW1Wg2SRFtbW2IoaMdAUa/XS3t7OwUFBdTW1qLRaFCpVImu80gkQiQSweVy4XQ6EwNHfT5ffL+yjEqlQq/Xs3PnTiRJIhgMotFo8Pv9mM1mtFptfNiq08n777+fWPPpfi+Fw2FqamqIRqOYTCa8Xi8Qj3DpWH9NTfeib86U2tpa/H4/Bw4c6HLAcFcG3r+5gUe8Rt0zUF+n9vb2/l6CcBabmGvj7jnD+L8Nh/j5fz5nSp6dHPsALBqnDKM0/QqGX345CqUinp9e9TFUfQSVH8aHpXfkqAOkjoSieTDppnhnezdZtVYenfcoN711E/sd+7lv8338+ZI/o1L0S7KhIAiCIAjniCUTlvBB7Qdsb9zO1179GjePvZnvjf0eepX+tLe9s2knQKesbrVSzVcLv8rTe5/mlUOv9FsR/d8l/+a3H/+WRSMW8bPzftYvazgdT3/+NDIyc3Ln8KsLfsXWhq1UtlXy75J/c92I605pW+FYmA9qPwDiJzmEc1eP3jl05JJbLJbT2rnL5WL58uVdDhQFKCws5LPPPjvm/uMV2ZYtW8Y999yT+LitrY3c3FwWLFhw2ms9nnA4zPr165k/f368KDsQVH4Ih9ZB6vA+35Usy3h8Acprm2h2ejColKhVSlLsZgrzoygaghyqaiBJp0U2FGHwVpKr81OQk8rIoVbSknQopBDBcDtp/gg+s5rqxlYiUQdGTbwEnqz2kG6U0Ou05KQGmdRax7j166EbQ0QBHBYjj182HaVSQaZRx8RkCzopQsDnRC64GK3JhlKpTBTRGxsbiUQipKenY7PZMBqNBAIBPB4PKpUKn89HKBTi0KFDia50rVaL2+1Gq9VisVjIzc3FbDbT2NhIKBTC6/Vit9vR6/UMGTKEvLw8Ro0ahUr1xT/B3vxeqqmpoampCbvdjtFo7FQ0T0lJYciQIae1/d7W3NxMdXU1BoOBkSNHnvCxA/Lf3AAjXqPuGeivU8fVVILQU3deUsh7h5rYcdjFT1bt4oXF56NUDOBOIYUSMsbFb+fdBrEYNOyCkg1QugFqtkLzgfjt47/D2Gvh4mWQ0r2M81xzLn+Z8xdueecWNtds5sGtD/L/zvt/Z2X3lCAIgiAIA8Po5NG8fOXLPLj1QbY2bGXFrhW8Wvoq9069l/l583v8d4Yj4OCw5zAQj3M52rXDruXpvU/zUd1HNPgayDCe2VjU18pe41dbfoWMzBvlb3DftPvOqliZBl8Db5THGzS+N+57mDQmloxfwvKty3l056NcWXAlarp/PNsbt+MJeUjSJfXJgFlh4OhREf3666+nvLyciRMndrp/586dx9x3IosXLz5uAR3i+ecvv/xyp/vKy8uZN6/rjCKtVttlFIRare7zAsmZ2Ee3qVSgiHHSnJPTFI3GOFBZT7PTQ02TA48vgKPNh0qlwGLUo1IqaW510R4IIBMj5HaTpFOikMDr8+P1tZOdYmH4kHSUSgVGrZKNW/cjATlpdgLBMP5AiFSrEZtJj9moJ8vnZ9xL65G6WUAH2JtsQa1WYDMbyEgyo9dpiQbCWO0GvEYDqNXo9XoUCgUejwev14vf70epjGeONTc3E4lEMBgMtLa24na7OXToUKKrW5IkWltbCQQCiZgUu92Ow+FAkiSMRiN5eXlotVqKiorIysoiIyPjuL9Me+N7KS0tDYfDQXt7e2KwaMfQUbPZPHC+V49ITU2loaEBrVaLSqXq1h8aA+rf3AAlXqPuGaiv00Bck3B2USkV/On6iVz25w/4tMLB4x+Uc/vswv5eVvcpFJA1KX6bfR/4nVD+HuxZE+9M//wV2PtvGH89zP4pJJ386sgJqRNYPnM5P3nvJ7x88GVyzbl8Z8x3+v5YBEEQBEE4Zw2zD+OJBU+wvmo9j2x7hHpfPT95/yecl3EePzvvZz3KSt/dHJ8XU2AtwKq1dvrcUOtQpqZPZVvjNv5d8m/umHhHrxxHd7xV/ha/+OgXyEeu+/eEPOxs2sm0jGlnbA3H0x5u562KtyiwFjA5/fhzFP+1719EYhGmZUxLFL0XDV/Ec/ufo9pTzTN7n+HWMd2Pqt50OB5DODtndiK7Xjg39aiIvnDhQm6//XYWLVqUiFZxOBysXr2ad955p1vbWLRoEUuWLKG8vDwR22Kz2SgoKODhhx9m4cKFLFy4kMWLF1NeXk5BQQHFxcXHLaALR1GemcJLQ6sbfzA+9NNk0BGJxsg1aAlHojjafDjbfDQ5PcgxUCtVOLxeYrr4D9p47nkrF08ejsWkJxSOoFIqOW9sAb5ACFmWiUSiKBQSowuyiUSiNLs8FL76AV+EtJyYfOT2rN2MxtPO2IIsFAolCklCo1YRiYTR6o00O9toaGgA4t/HsVgMvV6PSqXC4XBgNMYHj7a0tFBZWcnBgwcJBAKoVCpMJhMOhwNZljEYDCgUCtRqNQqFgqSkJFJTU8nOzsZqtTJixIgzNtDTaDSiVqsJh8O0tbWRlZVFLBbD4XBgtVpPvoEzTK1WM2HChMSJC0EQBKF35CUb+fVVY/jpK7v533UHuagohbHZA+/3QLfo7TDmmvitfje8txwOvgW7XoTdq2DSjTB7KVhPnEU6P28+P5n6Ex7Z9gj/u+1/sWgsXDPsmjN0EIIgCD2zadMmCgoKGDp0aH8vRRCELkiSxIKhC5iZM5OnPn+Kp/Y8xacNn/Kdt7/Dm9e+iUVzaukIXUW5HO3rw7/OtsZtrC1dy23jbzsjxdt1lev42Yc/IybHWDh8If6InzfL32RzzeZ+LaL7I35WHVzFU58/hSPgQCWp+POcPzMrZ9Yxj3UFXKw5tAaAW8bekrhfrVTzw8k/5N737+XpvU9zTUH3/jaUZZl3q+N56HOGzOmFoxEGsh4V0ZOSkli/fj1lZWWdolV27NjRrecvWbKENWvWsGbNmk73P/TQQ/z0pz9l5cqVFBQUUFBQwMaNG1m6dCnTpk2jtbX1hJ3rwhE6KyCBHAOpb9rRw5EITc423F4/yTYT/kCI0QVZmPQ6kixG6ltdbN5xgIYWNwqFhFKhIBwI422PIElgMugw6bXsOFRNktWMJEnEZDl+v0HXaV/5WSkoapopevMjeOfT49bQv3y3DPypMJs6nZbUQICS6mYmDM8hHI6iVUSoC0JbXSOmI53ZDocDn8+H0WgkNzcXg8GAJElUVVWxc+dOamtraWhoQK1Wk5KSkujwDofDGI1GRo0alehEHzJkCEVFRdjt9kT2+Zlmt9tpamrC6XRitVrJyckhJ6f3hpz0NlFAF4SB7YknnujR8HCh/y2amsPGA428s7eRH728k39/fwZm3Vl+pUPmeLjhRajdDu8uh9L1UPwv2PMKzP0FTL8tHg9zHN8e/W0afA08t/85frnll8TkGF8f/vUzeACCIAgndv311zNt2jTuvfdepk2bRllZGYWFhTz00EPMmSMKNYIwUOlVeu6ceCdfLfwqd2y4g8q2Sp7b9xzfn/j9U9pOV0NFjzY/bz7LP11Og6+BLXVbmJkz87TXfiLv1bzH0g+WEpWjfLXwq/zi/F+wrnJdooj+k6k/6fG2W/wtHHIcYlrGNNSn0BQaiARYfWg1T+55ktZAKwAGlYH2SDv3vHcP/5j3j2OK+y8efBF/xM+opFHMyJrR6XML8hYwLmUce1r28NjnjzGBk0ezHHAcoMHXgF6l5/zM87u9duHs1KMiutVq5aGHHuK+++7rdP/jjz/ereevXLmSlStXHvfzZWVlif+fPHmyKJyfKkMKqPUQagetqU92Ud/iJhqN4QuESLWZCIUjKBUKhmQkYTLoUKsUjC3IJdliprbZRV2LG01EQzgcRK9VoZAk3F4/9S0utuwuZc60UYwvyiUQCtPsbKOmyUm7P4TdYqDpmf+S/ugrKIkXxk8U9OE16KhNslBvM7Fz5BDITmNEs4sWl4e6Fhc6jZpJI3IpPVCKMnUEeoMhURQPh8MolUpUKlVi0GVzczNer5fW1lZaW1ux2+0UFhYyc+ZM8vLyEkX3ESNGkJycTGtrK5WVlej1erKzs/vkte8um81GU1MTLpcLWZZF5qsgCN3S1tbG0qVL2bZtW6cB3+Xl5aKIfpaSJInl145nx+HNlDZ5uf257Tz13WloVefAycvsKXDTGjj8KWz4NRzeAm/fH498+erfjjt8VJIkfjrtp8jIPL//eX798a+JytFTHiQlCILQV+x2O/feey9ut5vt27dTXFzMxIkTWbZsmSiiC8JZIMecw12T7uLe9+/l2X3PcuOoG4+JZTmecCzM3ta9wPGL6FqllqsKr+L5/c/z951/Z3zq+G5v/1QdDB/kxQ9fJCJHuKLgCn4z4zcoJAUzsmeglJSUu8up9lSTa849pe3KssxbFW/xP5/+TyJT/Nph1/L1YV8nx3z8BsA6bx2bDm/iqc+fotnfDEC2KZsl45dwWf5l3Pf+fbxX8x53bbyLxxc8zvjU8UA87uWF/S8A8Sz0L9dIJEnix1N+zPfe+R5rS9eSbTp5TWdTdTzK5YLMC9CpdCd5tHC261ERHTimgA7xjHNhANDbQWuGkLdPiujBUJgWlxeXpx2bSY/L206K1YTFqMdk0NEeCLK3vI5QOMLogiyGZCRR29JGW0kAfSBIMBRCp9UgSRINrW3YzEb2ltWSnWanodVNeyBENBrD0eYj93AD6Y++kiicH68M3NGF/vjl59NkNKBWKslIsWIz6cnNSGZXyWGaHB5qmlvxtvsZapbwyBoKs7JITk5m8+bNOBwOVCoV0WgUv99PW1sbLpcLt9uNQqFg5MiRTJgwgfPPPx+dLv7DUavVkpaWRnJyMhA/wSRJEn6/n2AweMbiW7piMplQqVREIpHEAFRBEISTufXWWykuLmbJkiUUFJx6fqMwMCUZNTz5nWlc/9jHfFTayk9W7eIv35iEYiAPGj0VQ86D774Jxc/A+l9C7TZYMRNm/gRm3gOqY38fS5LE0mlLUUgKnt33LL/75HdE5Sg3jLyhHw5AEAShs6KiIgA2bNiA3W4/pdljgiAMDPPz5jPcPpxDzkM8s/cZ7p58d7eed8h5CH/Ej1ljJt+af9zH3TjyRl4rfY29rXv57tvfZcW8FaQb03tr+QDsbN7Ji74XiRDhK0O/wgMXPpCIjrFoLExOn8xnDZ+xuWYzN466sdvbdQfd/O6T3/FOZTwSWqPQ4Ag4eGLPEzy550lmZM/guuHXMStnFo3tjXzW8BnbGraxrXEbtd7axHYyjZncNv42vlr41UQX+yMXP8KdG+/k0/pPuX3D7Tz9lacZkTSCtSVrcQVd5JpzmT9kfpfrmpYxjVk5s9hcs5n1gfV8m2+f8DjePSyiXAaTHmd9LFu2DKVSiVKpZNiwYaxdu7Y31yWcDqUKLNkQ8vXJ5uuaXUSjMfzBMCqlEpVSiUKhICvVRm2Tk/0V9URjMZyedvZX1NPi8qFWqcjPz2famHxSbCaUEmSmWLGY9KiUCvZX1lNe24ynPUB9i4vqRgeFOw8x8pEXur2u6hQrrSYDGpWS3Aw7NqMOg05DTJaZNWk4aXYzzQ4vNU2tVLW0M27SZHQ6HXv27KG9vR2FQkEwGCQUCuH3+1GpVGg0GvLz85k4cSKzZs3ikksuwWw2d9rv0R3nKpUqUWAPBAK984L3kCRJibilo7tJBUEQTqS8vJzi4mLuu+8+vv71r3e6CWe3cTlWVtw0BZVC4o3d9fzuzX3IpzCoe8BTKGDqzXDnpzDicoiF4f0HYeUsqN7a5VMkSeK+qffx3THfBeD3n/6e5/c/fwYXLQiC0LWWlhbuuOMObrvtNm677TYA3G43xcXF/bwyQRC6SyEpEjEuz+9/HmfA2a3n7WqKR7mMTx2P4gQRvbmWXJ6+9GlS9CmUukr51n+/Rbm7/PQXfpRHdz1KhAgX51zM8pnLUSk69+LOyo7njm+u2dztbX5Y+yHXvHoN71S+g1JS8v0J3+ejGz7iTxf/iRlZM5CR+aj2I3747g+Z8eIMLn3lUn7x0S94texVar21KCUl41PG8/Pzfs4b17zBwuELO8XAaJVa/nLJX5iYOhFPyMNt62+jxFnCM/ueAeDmsTefMEP+R5N/hEJSsDe8NxGr05Vaby0HnQdRSIou89eFc0+Piuj3338/69evZ8WKFWzbto0VK1awdetWUUgfSKzZEA31+mb9gVB8aKjHR5LVgNvbjt1swGY2oFQoaGh1AzA0M4WJw3OxmY34gyF8/gBOp5P2QIii3HRGDM0kEAqj16hxe/0oJHB7/Xh8AULhKOZWN1NfeQ+JE8e3dIgB5RnJqNVqhmQkYTHo0Os0RKMx7GYDTk87RblpaNQqvN52VGotTn8sEdsSDoexWq1kZmai1+tJTk5Gq9VSWFjI9OnT+da3vsX3vvc9Jk+efExHd2VlZaePg8EgQL92oXew2+0AOJ3Oc6tQIghCn7n++uspLz/2j++dO3ee+cUIvW7W8FQeWRS/LPjpjypZ8X7vvtEaECxZ8I0XYOHTYEyF5gPw5Hx4ZTG4qo95uCRJ3DPlnsRwqQe3Psi/9v7rTK9aEAShkwcffJB58+bx4IMPsnz5cioqKnjsscdYuHBhfy9NEIRTMCd3DqOSRtEeaefpvU936zkny0M/2oikETx72bPkWfKo99Xznf9+hz3Ne05rzR1KnaVsa9qGhMRPp/wUteLYvPJZufHi8WcNn9Eebj/h9trD7TzwyQPcseEOmv3N5Fvzef7y57lj4h3oVDrm5s1l5fyVvHXNW3xv7PdI0iXhj/hRSSompE7glrG3sGLeCj664SOev+J5rh95PRqlpst9GdQG/j7v74xKGoUj4OCGN2+gwddAij6FqwuvPuE6h9mHcXVB/DEPbXuISCzS5eM6utAnpU3CrrOfcJvCuaFHcS7l5eVs27at031z587liSee6JVFCb3AkBwfKtrLw0Vrm51EYzHC4QjotWjUKiRJIivFRn2LCwCrSU9+dioAQzKSqaxr4WB1E6GmEKWOBnztATJTbEgSRGMyRblpmAx6TAYtCknC0eZj6qFj3+QeT0dO+o6ReeRlJGMyaJFjMhqVEiQJnz+EPxDG4fYxfcxQqqqqiCo07NhzAJ1ej0ajISMjg2g0SmtrKwqFApVKxcSJE8nPz2fSpEkkJSUl9vflDnOn00l1dTW5ubmEQiFisRiSJA2IIrrZbEapVBKJRPD5fJhMfZORLwjCuWPhwoXcfvvtLFq0KPGzz+FwsHr1at55551+Xp3QG742KZsWb5AH3tzPQ28fINWsZeGUgTt4ukckCcZeCwUXw7pfwM7nYM8q2P8aXHAXXPSjePRd4uESP5z8QxSSgsf3PM4ftv0BZ9DJXRPvOmGnkiAIQl86+iqw/Px87rvvPtG4JghnGUmSuHPindy16S5eOvAS3x79bVL0KSd8TkcRfWLqxG7tI8ecw78u+xff3/B99rbu5ZZ1t/DHi//IRdkXndbaXz74MgCj1KPIMGZ0+Zh8Sz45phxqvDV8XP8xc4fM7fJxkViE773zvUTW+42jbuRHk3/UZY54riWXH0/5MXdOvJMyVxl5ljwMasMpr9+isbBi/gpufvvmRIf+t0d/G63y5LWauybcxTvl73DAeYCXDrzETaNvOuYx71YfiXLJFVEug0WPiujTpk3r8v6jB4IK/cyQAhoDBL2g650sbG97ALfXjz8Qxm4x4WjzIkkKFJJEMBTB0RaPj8lKtSWeYzLoSE+2UlrbSlNTA82uFmLRGGajnvzsFGQZinLSUCjihX6dRkV2qh3LzkNwks5p+aj/PjoqjwpJ4jyVglhMxmbW4/UHMeg01DQ5CAQjqNUqLEYDeck6ihvDeDwl5OXlkZSUhFKppL29HaPRCEBubi4jR45kxIgRx8S35Ofnc/DgQcLhcOK+pqYm1Gp14vlarXZADPLsiHRpbW3F6XSKIrogCCeVlJTE+vXrKSsrS0RCAezYsaP/FiX0ultnFtDkCfLY5nKWvrKbZJOGS0ak9feyep8hCb72d5h+K7zzc6j6ED54BIr/BXP+H0z6FhwpkkuSxA8m/QC1Us2jOx/liT1PcMh5iAdnPohZYz7JjgRBEE7fHXfccdLHbNiwgWuvvfYMrEYQhN4yK2cW41LGsadlD09//jT3TTt2xmCHFn8Ltd5aJCTGpYzr9j6SdEk89ZWn+PF7P2ZL3RZ+sPEH/M9F/8PlBZf3aM2+sI/Xy18H4DzNecd9nCRJzM6dzfP7n2dzzebjFtHfKH+Dva17MWvM/O/s/+WCrAtOugaNUsOo5K6HxHdXki6Jxxc8zq3rbiUYCbJo+KJuP2+BbgGv+l/lrzv+yry8eZ1OJLiDbrY3bgfgkiGXnNYahbNHj1qUW1tb8Xg8ne5bu3YtGzZs6JVFCb3AmAL2oeBr6rVNur1+AAz6eM64VqPC5fFxoKqeNz7cSUOrG5Nei0EXP6tX1+zk7Y9289I7n7Cn9DBqtZrc9CRy0u2YjTp0GjUF2amJAvqw3HQsRgPJ/3kfa4PjhDEuHQX0qsxk/rpoDp8OzcTt89PoaMNi0uELhLAYdZRUNRCOxHB720mxGslKMhKKxIgojahUKtra2lAoFNTV1WEwGMjOzubiiy/m6quvZurUqccU0CFeIB8xYgRqdfxSJo0mfvlQbW0t9fX1iccMFB2RLiIXXRCE7rBarTz00EOUlpaybdu2xG3FihX9vTShl91/6UiumZRNNCbz/eeK2Vvn7u8l9Z2sSfDdN+IxL0kF8b+PXv9hPC+9/ousS0mSuGPCHSyfuRytUsvmms18881v9nq+qCAIQlfKysqQZRmr1drlTZZlEdEoCGehjm50iHd3N7c3H/exHXnoRfYiTJpTa4IzqA38bc7fuCz/MiJyhJ9/9PMe/w3zetnr+MI+hlqGUqAqOOFjO/LAP6j5gJgcO+bz4WiYFbvi7yVuHXdrtwrovSnNkMbaq9fy1rVvndJrOkUzhfEp42mPtPPwZw93+tzmms1E5ShFtiJyzbm9vWRhgOpRJ/qSJUuYNGlSojhXXl6Oy+Vi+/btvbo44TRIEmROhMZ9EA2D8tjsqlOVlmTG5w/iaQ+g16oBmYwUKy1OD6V1LdQ0OeOZ4/4gtU0OKupa8LTHo0+MOh26oA6LWk+yxUB2WhJmgxaLSQ/AhGG5RGMxPAcrGfXGR8ctoB/9J+PLw3PZMmkYGpUarVpFMBSmrsVFXlYyGpWKfeV1RCIx6loc5Gen0uz0cvDQIRo9UdR2O5FgiNzcXBQKBcOHD8dkMjF8+HAKCgoSHeXHo9VqycjIoLq6Go1GQ1JSEg0NDYmTSx3DRQeCjkgXtVpNJBJBperRP3tBEAaR++47tjtm8eLF/bASoS8pFBIPLxxPizfIByUt/ODFHbzxg4swaM7R3xOSBCOvgKL5sO1JeO9BaPwcHp8b70qfcXeiK/3KgivJt+bzo3d/RGVbJTe+eSMPznyQ2bmz+/kgBEE4ly1dupS5c7vu4uywcePGM7QaQRB604ysGUxMncjO5p08+fmT3D/9/i4ft7N5J9D9KJcvUyvVPDjzQTwhDx/WfsjvPv4dT33lqVO6Ul6WZV468BIA1w27DqnsxM+dmj4VvUpPs7+Z/Y79jEke0+nzr5S8Qq23lhR9CjeMvOHUD6oXfHkgancoJAU/m/Yzbnz7RtZXrWdzzebECYNElMsQEeUymPSoEz0/P5/S0tLEL/kHH3wQh8PBxIkTe3l5wmlJGQ7mdPAd/yznqVCrVAzPy6AwJw2tWoVeq8Fq1CNJEklmI0pJwc6Dh3nro93sKqnB2x4kO9XOrEnDGVuUg81mQ6GQ0Os0JFmM2C1GlEe60H2BINWNDrKeffuk6/AYtPz+igv5d246JVWNuL3tKBQK2gNhymtb2ba3irKaJqrqHRxubGXYkHQ87X7qW5y0+3xgSkWt1ZGWlobVamXChAlMmjSJq6++mnHjxp20gN6hI+bA6/WSlpZGcnJy4nMDqYiuUCgYN24cI0eOFAV0QRC6ZdmyZSiVSpRKJcOGDRP5q+cwtVLBn78xiXSLlvJmH799fV9/L6nvqTRw/h3wg2IYdRXEwrDh1/DM1Z0Gj45JHsNLV7zE5LTJeMNefrDpBzy2+zHRBSoIQp85WQG9u48RBGHgkSSJuybdBcCqg6to8DV0+bhTGSp6PApJwc/P/zl6lZ5tjdv4T+l/Tun52xq3UeYuQ6/Sc0X+FSd9vEapYUbWDAA2V2/u9Dl/xM9jux8D4Lbxt6FX6U9pLf1tuH043xr9LQB+/+nv8Uf8BKNBPqz9EBB56IPNaU2cXLhwIQ8++CCLFy/GarWKN9kDjVoHWZMh4DppvvipsJkNjCnMJjc9iUg0RigcwWTSUZibhsmgRaNSkZeZwpUzJ/D1OVMpzEknEAwfGcgpoVIqCEXCRGNfXOYTCkeJffw51l2lJ4xxAdial0mLWU97MEQ4EqO+xY1CIWE26giHw1Q3trJtfyXONh+BUJiDVQ2UVDVR19BEUFYzftqFDBs2jIKCAqZNm8bIkSMZN25cIp6luzQaTaLg7nK5yMvLw263o1QqsVh6J4e+tyiVYiiaIAjdc//997N+/XpWrFiRiHHZunWr+B1/Dksyavi/6yciSfDSZ9W8tae+v5d0ZhiT4bpn4at/B40pnpf+jwthz5rEQ5L1yTyx4AmuH3E9MjJ/3fFX7tp0Fy3+ln5cuCAIg8X9998vTmoLwjlkesZ0pqZPJRwL88SeJ475fDgaZm9LfPDm6RTRAbJN2Xx/wvcB+N/t/4sj4Oj2c1888CIAVxVc1e25MB0d2ptrOhfRXz7wMs3+ZrKMWSwctrDbaxhI7phwBxnGDGq9tazctZJP6z/FH/GTZkhjdPLo/l6ecAZ1uy11x44drFq1iuXLl1NRUcHDDz98zGPEkJMBKG0UVHwQL6Tr7b22WUmSSEuyEIlEaXX7cHl86LRqFkwfS1aaFYVCgVYTL0qXVDdw6HAjTidYdUGanV6UivgA0BSbmVgsRvCVdxm28j8n3GfHaYA9Y/KJxGLYLQYUCj96jRalpECrVtHs8FBe10xGigWNQkWK3YxCUmDQq9GpJLKGjSam1DF39kWMGDHitAeA2u12fD4fTqeT1NRUCgoKkGV5QAwVFQRB6Iny8nK2bdvW6b65c+fyxBPH/qEvnDtmFKZwx+xCHn2vjPtf2c2EXBvZtrOrU6hHJAkm3QR5M2DtbVDzGbxyCxx6G77yezCloVaq+fn5P2dk0kh+/+nv2VyzmWtevYZfXvBL5ufN7+8jEAThHHX//fezYcMGVqxYwdSpU3E4HKxfvx5AvOcWhLNURzb6ze/czKqDqyhxljB3yFzm5s0l25TNfsd+QrEQNq2NPEveae/vptE38Ub5Gxx0HuSRzx7h9zN/f9LnNPoa2XR4EwDfGPmNbu9rZvZMAD5v/ZwWfwsp+hS8IS9Pfv4kALdPuB11L8QM9weD2sDPpv+Mu9+9m2f2PsPult0AXJJ7yWnXfiLRGCrlafU3C2dQt79SDoeDsrIyIB7n8vLLL3caeiKGnAxQpjRIG9mrA0aPlp5sZXR+JkW5aSRbTXgDAdoD4UQBvd0fpK7FRXltEw6HA0mSMBnigzjVqnh3tL+kmuyV/0GCk2ahvzo2n5KYTCwGyRYTNpMBT7ufvRV1FB+ootHpod0fIhyOkZ1uJz3ZytCsFK6dOZYb509kzNSZzJgxgwkTJqDT6U77B97RkS6RSARAFNAFQTirTZs2rcv7O/4GEM5dP54/nIm5NtoCEX700g4i0WMHQ52zkgrg5rfh4mUgKWHPavjTeHj7Z+BpBGDh8IW8dOVLjLCPwBV0cc979/CzD35GW6itnxcvCMK5qOOk9uLFi5k0aVKnGFVBEM5eUzOmsmj4ImRkipuK+cO2P3DpK5ey6PVF/G3H34B4F3pv1BVUChW/uuBXSEi8Xv46H9d9fNLnrClZQ1SOMiV9CsPsw7q9r1RDaiIL/YOaDwB4dv+zuIIuhlqGclXhVT07iAHikiGXcEnuJUTkCJ81fAacfpTLT9fsYsoDG9hZ7eqFFQpnQreL6HPnzmXVqlWJjx9//HFWrFjBgw8+yIMPPsiKFStYuXJlnyxSOE2ZE0GhgYC71zetVCrIz05ldH4WJr2WSDRGZX0LByvrqWt2sv7Tvewrr0eWZXQ6HcOHZDBlZD5ajRqVSoXb207Bqu4Nx9lp0vEPg54WtweNUoGMTCQaxesP0uJswxcIotepGJKRzKUXjOU7V17IonnTmDd9NEONISadN5MF197EpEmTeu34tVotBoMBWZZxuVy9tl1BEIT+0tramhiS3GHt2rVs2LChn1YknClqpYK/fGMSJq2Kzyqd/O3d0v5e0pmlVMHF98P33oHsqRDxwyd/hz+Ph7eXgaeB4fbhvHjFiywetxiFpOD18te59tVr+aT+k/5evSAI5xhxUlsQzl2/vOCXrF+4nvun38+0jGkoJAUHHAf4uD5e5D7dKJejjUsdlxjm+btPfkcgEjjuY8PRMGsOxWPtvjGi+13oHY6OdHEFXDyz9xkA7px0Z48Gew40y6YvS2S6m9QmpmV0/XO6OwLhKP/ZWYfbH2bJs9to8hz/6yIMHD26ZsDtdjNlypRj7j/eL3qhnyUXQu40aKuFWLRPdmE26hldkEVOmh2FQsLrD7K/op7aZhf+YIihWSkMGTKEFJsJGZlhuWkEgiGqtx8gu6TmhDnoMhADfpVsIxKNEQxHaXJ5CIaitLi8R4rnGtKTrEwYlsPogiyMeh0XTRyOUaeBdgcKnQmK5iL1QTZ4Rze6KKILgnAuWLJkCZMmTWLatGlMmzaN5ORkFi1axOOPP97fSxPOgCHJBh742lgA/rKxhK0Vg7DjMXca3LoBbnoFcqZBJACfPAp/ngD/XYra18zdk+/mmUufIdecS2N7I4vXLeahrQ8RjAb7e/WCIJwjWltbaWvrfKWLOKktCOeODGMGN466kae+8hTvXfcev53xWy7OuZgxyWN6vWv7B5N+QJohjWpPdWLIZ1c2Ht6YiGKZO+TUhxjPzpkNwJa6LazcvRJf2McI+wgW5C3o8doHkkxTJndNjA+HXTB0wWnF0xRXOQlF4ld9NrYFueO54sTHwsDVoyK6w+Hosut80aJFp70goQ9IEuTPBlseuKr6cDcS6clWxhRkYzXpcXl9KBUSWSk2xg8bQkpKCqFolGanB41aTbLVxOzqE8fMyEduD+akUqVR4fH7cXv9+EMh6ltcpNhMpFpNZCRbmTg8F7vFjN1iQK/T0Oz0MHZoKqNSVQw57yqw5vTJcdvt8az5trY2otG+OUkhCIJwpuTn51NaWsrSpUs7XTo+ceLE/l6acIZ8bVI2107KJibDj17agbs93N9LOvMkCYrmwS3r4aa1kHtevJj+6Yp4zMu/72CirGHNVWu4fsT1ADy3/zluePMGSpwl/bx4QRDOBUuWLGHChAnipLYgDAJ2nZ1rhl3DX+f+lZeufIkMY0avbt+kMfGz6T8D4OnPn6bU2fXVhh0DRRcOX9ijAvGo5FEk65Jpj7Tz3P7ngHgBXyGdO5nf3xr9LV664iWWTlt6Wtv5uLwVgOlDkzDrVGyvcvLr1/f2xhKFPnRK11M8/vjjlJeX43K5jhk61tV9wgCis0DhHNj1YjzWRWfts11p1Cq0ajVatZpgKIJGoyQWk1EqlewtrSUWiVDd2Iq5pY3Ltx887nY6ctB/UpRFsdmI3OYjGJLRqCK42/xo1CpC0Qjjh+Xi8vhRKVUMG5KOw+1Dko7kqzsrMeRNgLwL+ux4dTodOp2OQCCA2+0mKSmpz/YlCIJwpixcuJCFCxcmPl67dq0YZDaI/PZrY9l+2ElVazu3P7edp2+ehk7d+1dzDXiSBEVz439Dlb8Hmx+Bqg9h1wuw6wUMw77Czy+8m1nZs/jFll9Q4izhG298g59M/Qk3jLxBzEkRBKHHkpKSqKqq4pprrkGj0XDbbbdx3XXXYbX23fs4QRDOXXPz5nJJ7iW8W/0u922+j3l580g3pMdvxnR8YR/FTcUoJSULhy08+Qa7oJAUzMqZxb9L/w3A+NTxiYiXc4UkSYxJGXPa29lSFi+if31KNmmWQr73z8944dPDjMmycON5pz9UVugbp1RELygoSEwEdzqdnfLYkpKSOmWmCwNQ2ijInQ4Vm0FjAkXfvBn2B0JUN7Zy6HBjvKCtgMONbg661aTgIBQKM7T4IDcUHzxhjAvATpOez+0WFNEYCoVEKBwjI9mKUqnErNdiMupJS7YQDEcIhsPkZaUwbXQ+Rr2OVI0fYuZ4J5lK0yfH2sFut1NfX4/T6RRFdEEQzjo7duxg1apVLF++nIqKCh5++OFjHrNhwwZRRB9ETFoVf//mZL7x2Cd8XN7KD17cwT9unIxKee50Ep0SSYLCS+K3mu2w5c+w7zUoeQdK3mFW9hRemXgTv3Bu5cP6T1i+dTkf1n7I7y78Hcn65P5evSAIZyGr1crChQu5++67GTp0aOL+J554gltvvbX/FiYIwlnrZ+f9jE/rP6XUVUqpq+tu9DlD5pBuTO/xPmbnzE4U0X846YeioaALvmCEXUeGic4oTCE3ycB9XxnBw28f5Nev7WVEupmpQ0VdaSA6pSL63LlzmTs3nou0cePGxP8LZ4mOWBdnVTzWJamgT3ZT3eigyekhFosRk2NEQzKRqIzb3Y7dHGWMWsW3ig92K0uoTKUkEo3haQ8SCEVJTzKTm5GMxagjGIpQlJNGss2E1xcgGIpgMehQqZSkWbTQ3gyjruyzGJej2Ww26uvraWtrIxaLoVAM0iKDIAhnJYfDkTgxnp+fz8svv8x1113XaeaDLMsn2IJwLhqbbeXxb0/lO09vZf2+Rpa+soc/LByPQjHI3wzlTIHr/gWtZfDx32Hn81C7nZTa7Tyq1PBC/iT+GGvig9oPuPa1a/ndhb8757qwBEHoex1XuE6ZMoV58+YlGnU2bNggiuiCIPRIhjGDl658iXWV62hsb4zffI00tTfhDDpRKVTcPObm09rHhdkXMiNrBrnmXKZnTu+llZ9bPqt0EInJ5Nj15CYZALhjdiF7a9t4c089tz9XzBs/uIgMq66fVyp8WY/H43ZVQBeXep8FdJZ4Z/bul8FTD+bMXt+FPxjC2x4gI9nKeWMLsRh1HKppwVMaZIy1nW+88eFJO9AhHueiD0eIyaBWKrCbDCRbzGQkWVAoFNjNSkKRKO2BEIU5aQCMLcjBbtJAawmkj41nmJ4BBoOBpKQkjEbjGdmfIAhCbzr6JDnE49u+/vWvd3rMxo0bz/SyhAHggsJk/v7Nydz+3HZeKa7BolfxyytHi64iiA9uv/KPcPEy2P407FmN1HKIG0s/ZZpazdK0FEpxcOfGO5mTczH3Tv8puebc/l61IAhnCavVyrZt21i0aJE4qS0IQq/Jt+azZMKSY+4PRALE5BgGteG0tq9T6Vg5/9gZiueSWEyORwj38O/hjjz0Cwq+uFpRkiT+sGg8Zc1eDjR4WPLcdl6+7fzBGac4gHW7iC4u9T6HpI2EEZfD/tfA2wSmtF7dvMWopyg3nSSLkeF5GbQHggTCMUYoLXwzyUXKI893q4geA2qUCjRqFWlJZvzBMGajlhS7mYxkK3tKa0i2mlCrlITCERQKBRKxeAE9ZTiM/mqfx7gcLT8//4ztSxAEoa+43W6mTJlyzP3Tpk3rh9UIA8H80ek8/PXx/GT1Lp7+qBK7QcPdc4f197IGDlMqzP4pzLoPmvbD3n8zfO+/ebGulL/arTxvMbOp5j0+rNnMdwu/xi3nLUXNqQ/rEgRh8Fm9evUx7zHESW1BEPqCTiW6nk+mqS3AI+sO8kpxLffMH86dlxT1aDsfH8lDn1HUOfLPoFHx2LemcvXfP2RXtYvfvrGP318z7rTXLfSebmdOdHWptyzLWK1WrFYrsiyLs+Jnk9xpMPwr8SGjvpZe22woHMHpaUetUpKdZgegptEJgFarxfjKpm5tRyY+GPQVkwG1SonFqCfJbECv1dDQ6sYfDJOTZmdIZhIzJw1jTEE200cNwRasicfUjLkW9LZeOy5BEITBwuFwsHLlsd0jixYt6ofVCAPF16fk8MsrRwPwx/WHeGZLZf8uaCCSJEgfDXP+H9z1GbolH3LfmFtY445xnj9AiBiPla3l6ucvYN37P0cZae/vFQuCMIC53e4uuxz78qS2y+Vi6dKlLF26lPnz51NeXt5n+xIEQThbBMJR/raphIsfeY9V22qIxmQe/6CcUCR2ytty+8N8XusG4IKClGM+PyTZwF++MQlJghc+Pcxru+pOe/1C7+l2J7q41PsclHchRCNQuh7kKJh6PjyiQ2NrG7IsYzboMOq1+PxBPO0BAIo++AD9m1uO+9yOUzBR4gX0X6XacJgNpMRi6LVqhqQn0+hwo5AklEfyWH3+EApJwaRh2dB6COz58QK6UQzxEgRBOBWPP/445eXluFwutm3b1ulzXd0nDD7fuygftz/MnzeW8KvX9mI3arh6QlZ/L2tgkiTIGAsZYym65P/xeOlGNm77K3/wl1KnUnF/7VuMD7yK8403mHnBfeSlTxAROYIgdOJwOHjsscdYvnx5p/sXLVrEO++80yf7nDt3Lhs3bsRms7Fhwwbmz5+faKQTBEEYbGQZXt9dz/+uL6XW5QdgYq6NGqefFm+Qdw828ZUxGae0za0VDmIyFKQYj5t5Pmt4KnddUsRfN5Wy7JXdjMu2kp8iooMHgh5noh9dQN+0aRMFBQVi0OjZRpKgYHY88uTg29BWB5aevxmORKK0uD0AZKZYAdCqVZj0WmLVzUxbvfqkMS71wIsqJR8OTadCUpJkMWDUa4hGZXz+IOnJFsYV5TIkw05NkwulQoHdqI4X0JOHw9hrwHjs2TxBEAThxAoKCli/fj0ATqez05vmpKQkVq1a1V9LEwaQH80bhtsf5p9bKlm6ZjejM80UpZn7e1kDm0KJNHwB84Yv4CJ3NU9v/gVPtm5nt07N7rbdPPzOt8hRGrkobx4z8xcwNX3qaeeRCoJw9uqvk9obNmwgKSkpkb8+b948ysvLKS4uZvLkyX2yT0EQhIGq1uXnT58rqfxkDwBZVh1LLxvJ1ROyWP7fAzy2uZy1xTWnXETfUhZPgrig8MSNnz+cO4ytFQ4+rXDw/eeL+ff3Z/R5PnpbIMza7dU8sVvJsKleRmfb+3R/Z6MeFdGvv/56pk2bxr333svUqVMpLy+nsLCQhx56iDlz5vT2GoW+JEmQNwOUWjj4X2g+CEn5oDz1LPFGRxuxmIxRr8Vs1AOgUikZMTST6Osfxfd1nMgfmXgG+gKNkjIkphn1WBUKUixGgqEwwVCIjGQreRnJZKZYSbNbiMZkYj4nkcZDaPImwpivgV78IxcEQeiJo68427hx42mfGF+6dCmPPfYYEH8j/vjjjyfemAtnL0mS+MWVoylt8vJhaQt3Pr+DV++6UAw96iadNZc7rvonVzoP8/RrS6mKHqBYEaYm6uOl8ld5qfxVNAo1F2ZfxFeGfoWLcy/GqBadR4IwmPTXSe3i4mIKCgqOWUt5ebkoogvCmfLeQ/Dx3+B778Qj4oQutXiDPLa5nCvHZzI+x9Yn+/j9fw9S6ZUwaJTcMbuQW2cWoNfE/969dnI2j20uZ9OBJpy+EHZj9+tnHXnoJyuiq5QK/nLDJC7/8wfsr2/jgTf38cDXej8fXZZlig+7eGnrYd7YXY8/HM+GWL29ll+JIvoxelREt9vt3HvvvbjdboqLiykuLmbixIksW7ZMFNHPVjlTwJAEpRug5RAYU+O3bopGYzQ7413oGcnWYz4v1bdArOu8qI6y+m/Tk6jxtkM4QoPDw6j8bJAkUm1W1ColORl2Zk4sAkmBzaDBV9eIKxLDmXYJhglfBbX+lA9bEARBOFZXBfS1a9d2e3j4hg0bKC8vZ/v27ZSXl7No0SIWL17M6tWre3upQj9QKiT+eP0ELv/zhxxs9IihRz2QYcpkgu0bLLvsMkJl/+XTjx7mQ38tHxr01Kvg3ep3ebf6XTSSkotSJ/GVYdcyO2+OKKgLwiDQ2ye1u6u1tfWYk902mw2Hw9Hl44PBIMFgMPFxW1sbAOFwmHA43GfrHGg6jnUwHTOI4+6T4w64UX30J6RwO9Hdq4ld/LPe30cPnOox+4IR7lm9h/wUA/dfOqLX1+NqD3PTU59xsNHLjsNOXril9+dEeAJh3jsY7xj/57cnMikvGYgRDsdrWoXJekZlmNnf4OHVHdXceN6Qbm231RfiQEO8bjY113LS1zRJr+QPC8dyy7+Kee6Tw0wdYuOKcafW+X483mCEtTvqePmzGg41eRP3F6YaGG/0sHhG7qD6993dY+1REb2oKD6BdsOGDdjtdiZOnNiTzQgDTVI+TPoWVG2Bqg/jxXT70G51pUeiUaJHiuSNrW70WjVajTrxedmoP+EU2/eSzGxMS0ITCBGKRIhGI4TDYZQKiVS7hRS7kblTRzE0KzU+CNVTgT1nBC5VPq6kIrJFAV0QBKHHduzYwapVq1i+fDkVFRU8/PDDxzxmw4YN3S6il5eXJzrPCwoKeOihh1i6dGlvL1voR2lmHX+6fiLfeupTXvj0MBcUJHOVyEc/dZKEcdRXmTPyauaUbUR+70EO1exkndHAOqOBSg1satrGpqZtaD+E8dpUJmZMZWLBpYxPn4xNZ+vvIxAEoQ91VUB/4oknuPXWW3t9Xy6Xq8v7k5KSurx/+fLl/OY3vznm/nXr1mEwDL5Iqo6rBwYbcdw9U9oGrQGJ6akyHSNRCpreYVw4PnTcseu/bGmfeJqrPAFZhi5msURjoDxO4aa7x/xalYJNdQo4CBpHOSNtXacR9EQgAn/fp+SwL772HVUOXnvjLVQnKjb1wNYmiVBUSbpepu7zT6nfe+xjRmgl9qPk6ff2Y2/9vFvb3dEqAUoy9TKfbu7+TMn5WQrW1SpY+souWg4Vk3qa5S9ZJh5V442/jmpJZlKKzAVpMfLNbUgSfPbRe6e3k7NMe3t7tx7XoyJ6S0sLd9xxB6tWreK2224DSHSln4oNGzawdOlSVq9efcylY0c/5mgul4uFCxf2ZNlCd6h1UDQnXlAv3QAtJfGMcUNKlz9kO2g1avKzUjjc4MDrD7K/op7c9CSSbab4A7wn/obUadUoVIAESkmBNxBmaFYKkgTjh2cze/IIspKM8fWotDD8Uqy55yPtO0QgEMDv96PXi0K6IAhCTzgcjsTl4vn5+bz88stcd911iY40l8uFfJw4rq50/G3QISkpialTp/baeoWB4aJhKdx5cRF/e7eUZWv3MD7HSl6y6JTuEUmConlIhXMZ4ShnRN0O7qrbwaH6z3jHU846vYoqtZrPQs18dvi/cPi/AORrk5iYPpU0Wz5KhRK1Qo1KUqFUKFEpVBRaC5mWMU0MLRWEs1BbWxtLly5l27ZtiQK3LMtUVFT0SRG9sLCQzz777Jj7jxfFtmzZMu65555O683NzWXBggVYLJZeX99AFQ6HWb9+PfPnz0etVp/8CecIcdw9P+5gOMrPH34fTyDC1MnjuGp8JsgxVCu+OCmVEqjk8q/MB+WJ9yHLMh+UtjI600yKSXvynbc7UK79HpKnjsg1T0JG/ErCUCTGvWv2sOlgM6tvO49RmV/MuzmVYy5p9PL+px/TkTewodXC3ddfgOp4lflT4A9F+d6/tnPY58JuUBONybQFIuSMn8HkIbbT3v7R1jyzHWhlcnKMBQu6Pu5pniCvP7KZKi+Mmj67W4M/P319H1DD/Al5XH75yG6vZ0E0xree3sa2KhdrG+2sWjwd7WlEKW462EzlJzswaJTct2AYV4/PxKKPH+Ng/bfdcTXVyfSoiP7ggw/yyiuvMHnyZBYvXkxFRQVr1qzpdnHb5XIxZcoUJk+efNLC+5IlS465TxTRz4Cju9IPfwxN+0Fvi0e8HOcHeZLVhMmgo6K2Ga8/SGV9C25vO8k2E5p9FXQ9dzguz+MnlgYGnZZQOIIcjSHHogwfms0Fw9PJUrSAowmSCmHYXEgqQAlYLBbcbjcul0sU0QVBEHro6EvHIT7U7OgB4hC/pLynXn755S5/n3cQl4SfvZdF3zl7KJ+Ut7CtysWdzxfz0uLpaE+hHehsPe7TdcLjtgyJ30Z+lQLgDjnG7a1lVJS/w+7Dm9jtKmGnCio1aiqCDioOr4PDx9/XmKQx3Dr2VmZlz+r3Yrr4eovjHgx663hvvfVWiouLWbJkyXEbznpTQUEBL7/8cqf7ysvLmTdvXpeP12q1aLXHFu3UavWgKrx0EMc9uJzOcW882IInEAHgoXcO8ZWxWRhrtoCjDDRmUCiQAm7Urfshe8oJt/XuwSZu+VcxE3Jt/Of7M078e76tDp67BpoPxI/h2avh+n8RyruYH63exfp9jQCs2VHHb4eMPeVjlmWZ37x5gEhMZuawFPbUuilp8rFmZwPfOj/vZC/LCQUjUe58qZhtVS7MWhXP3nIef9tUytt7GyiubuO8wu5HEZ9MqzfIlvJ4jNXkFPm4x52VpGbWsBTePdjM63sa+cmCk0fXfFLhBOCiYamn9P2jVsPfvjmFy//yAfvqPdzx4i7+97oJpJlPVGXrmizLrNhcAcC3zs/j5osKj7PPwfVvu7vH2qMiOtDpzXV+fj733Xdft59rs9nYvn07NpvtpH/Mz5s3j5UrV/Z0mcLp6OhKzxgbL6LXFYOjHCQFmDNAaz7mKRq1iuF5GTS2tlHX4sLpacfpaWe052SXRkjotRqMBg2edj8ajQplNMicAi15NgWkjIGsiZBcFO9EP8Jut+N2uwmFQr177IIgCIPY0b/jN23aREFBQY8zWTtOlp/oBLi4JPwLZ+Nl0Vclw/5aJZ/XtXHnY+u4dmjXM1BO5Gw87t5wasddgMZQwFR9jHntFejaimkO7qVCbsWjUBCRICJJRIGQQoVHZeIzTZS9jr38ePOPKYio+WbAyIUhNRGVhcPJF+E0FJ3wSsO+Ir7eg8tgO+7uXhJ+MuXl5RQXF5+xru6FCxeyePFiysvLKSgooLi4+LgFdEEQeu71XfWJ/29sC/LXTaXc734ifseEb4DrMJS8A4c/PWkR/aOSeG73rmoXWyscnFdwnGGVrWXw7Nfi2zZnxWN7D29Bfn4Rz6Xcy/rD4xMP/e/nDfzqqjEoFaf298GrO+v4tMKBTq3g99eM492DTfzy1b38cd1Brh6fhdXQs4JsOBrjrhd28EFJC3q1kn9+bxpjs61MHWrn7b0NbKt0AF0Xgnviv583EI3JjMkyk6Z3nvCx107O4d2DzawtruXH84ajOMFr1tgWoLzZhyTBefknHiralQyrjj9/YyK3PrOND0pauPRPH/DgteNYMObUMtI/Lm9lx2EXGpWCW2bmn/I6BrseF9GXLVuWyEwtKCjg4Ycf5pprrun28493WZgwAJnS4rfc8+I56XU74sV0dw3orKAxgcYIivjlJJIkkZFixWzUUVnXQqyqHp2nnRP9CN5rNaBXS2iVEiatEqteRUSWGDv/m0gZY8CS1eWbPLvdjtVqRaXq8beyIAiCcJTrr7+eadOmce+99zJ16lTKy8spLCzkoYceOuXh4S6Xi+XLl590oKi4JPzsv3Qyc3Qztz23g/frFdxwyWTmjkrr1vPO9uPuqV49br8LqXYbUu1nSDWfIdVtRwo5gCZaFQr+ZTXzosVMuSrMAyYXRaEQt7r2M//Qu6jTxxGdeivymGtA3fcnrMTXWxz3YNDdS8JP5vrrr6e8vPyY+WM7d+7ss5lkGzduZOnSpUybNo3W1lYxEFwQepk3GGHjgXjH94/nDef/NhzizQ8/Y6nmrXi9ZNqtcPDNeBG9+hO44Psn3N72w18UeZ/4sKLrInrD5/DsNeBrgqQC+NZ/wJxB7N+3o9i7lu81PYhDfQMTvvFrfrJ6F82eINsqT1CQ70JbIMwDb+4H4K5LishNMvDN6UN49uMqSpq8/GVTCb+4cnS3t9chGpO590iXvEal4InvTGVKXnxOw7Sh8f9uq3ISi8lfFLA9DfH6VBdNn93x2q46AK4clwltJy6izx+djlmrotblZ2ulg/NP8Jp9XNYKwNgsa49PKMwclsrrP7iIH720k331bdz27HZumJ7LL64cjUHTvZrY398tBeAb03J71Mk+2PWo8nj//fezYcMGVqxYwdSpU3E4HKxfvx5Zlrs9dKy7ysvLmT9/Phs2bKCgoICVK1eKM+L9Ra2DzPHx3Cx3DTTujRfVA23gqQdkkJTxH1gaE0aNjuG5ybheeAdZkpC6yNPtuOedHCs2rUTQasRiMqPUW1Blj6ctfTo2q+24S1IoFCgUvTxFQhAEYRCz2+3ce++9iVknxcXFTJw4kWXLlp1yEX3x4sXdegMuLgn/wtl6zAvGZnHrRS6e+LCCn6zZw79umZ54k9MdZ+txn65eOW51Klgug1GXxT+ORaFpH1RvJdnXwo+VKm6WIzzr3s8Lrj2UauD+tBQejMa40lvNtevuZdjGX8Gkm2DaLfE32H1MfL0Hl8F23L11rAsXLuT2229n0aJFieGeDoeD1atX88477/TKPr5s8uTJonAuCH1ow75GAuEYBSlG7p5bxM5qJ5PLViHJMeShFyGljYT2eLGVw58edwAoQCAc5fNa9xfb3t9IZYuPoUdnc1dvhecXQsAN6WPhprVgTiccjfGj4PcZHwmyRPUm9ypfhEojC0bdyJod9by1p/6Uiuh/XHeIFm+QghQji2fF/45QKRX8/MrRfOeprTyzpZIbzxtCQarplF6vFe+X8erOOlQKiRU3TebCopTE58ZkWTBolLj9YUqavIzIMIOzEh69AKy5sOR9UJ9a5G+9289nlfEol8vHprNzy74TPl6nVnLF+Exe+qyatcU1JyyibymLXzVwQeGpd6EfbXi6mX/fOYM/rj/EY5vLeXFrNZ+UO/i/6ycyMdd2wufuOOzko9JWVAqJJbN7r3t/MOlREb28vJxt27Z1um/u3Lk88cQTvbKoo02ePJlly5Zhs9lYsmQJ8+fPx+l0dtnJ3h+ZqoM16w9jBhRkwNBLIOgGXyv4HeBtBHctBDzInhYOHG4mq7o2/sP/OKpS7ETHX8CEvHxKD9fT4nBhMBgoGDaSuro6jMbBMaRs0H4vnSLxOp2ceI26Z6C/Tv21rqKiIiA+2Ntut/e4223RokUsWbKE8vLyxEA0m812RnJdhf7x00tHsr+hjY9KW/n2k1tPuZAu9BKFMt7wcGRYGIAN+AHwnVAbL+x/gdUHV9Pkb+I5q4XnrBbGB4Jc8/nTXPrJo5jyZ8Xn4oy8Mt5AIQhCv0hKSmL9+vWUlZV1eu+7Y8eO/luUIAin5fWOLucJWUiSxC8vH4b50XcB2J15HRMAsieDQg3eBnBVxaNXuvB5rZtwVCbFpGVstoX3Djbz9EcV/OarR/LMyzbBSzdCuD2eKvDNl0FvJxKN8aOXd/Lm502sU97EJZMmMnzH7+GzJ7g/q5wyaTbv7FHxq6vGnDCepMPeOjf/+rgSgN98dQxalTJe/5FlZg9PZc7INDYdaOL3b+3nie9M6/ZrFYrE+OeW+HZ/+9WxzBmZ3unzKqWCSUNsfFTaymeVjngRfddL8eNtOQjvLYf5v+32/gDe3F2PLMO0oXaybHp2duM5107O4aXPqnlrTwO/uXosek3XAz8/Lo+fHDndIjqAVqVk2WWjuHh4Gj9ZtZOKFh9f/8cWll02kltnHv+9VkcX+jWTssm2iZmCPdGjIvq0aV1/45eVlZ3WYrry0EMPJf5/5cqVPPbYY2zbtq3LbvT+zFQdbFl/x6cEhgDg9Xpp8NqYaS/BLlV2WUiPAdvtKZQ1uHGG4lOxPB4Pfr+fiooK1q5dy7hx44553rlMfC91j3idTk68Rt0zUF+n3spUPVUtLS3ccccdrFq1ittuuw0g0ZXeXUuWLGHNmjWsWbOm0/0PPfQQP/3pT3t1vcLAoVEpeOLb07jlmc/YUiYK6QORRWPh9gm3c+u4W9lSt4W1JWt5v/p9dutgt07L8iSZgsAB8jf/lML3l1GYdT4F479JbsE81IrB00ksCAOB1WrloYceOmb22OOPP95PKxIE4XS42kNsLmkG4KrxmQDkN20EyU2DbOeHOzN5e04UnVoPmROgdlu8G/04RfTtVfGokSl5Nr59wVDeO9jMqm013DN/BNZIC7x4A0QCUDgHrn8ONEZkWeana3bz5u561EqJf9w4heGjL4ei4bD2NlLqNvFv7SYcYROO5+aSMvEqyJt13GOKxWR+8Z/PiclwxfhMZg5LBb8TVswCex7c9Ao/u3wUmw81s2F/Ex+UNMcf0w3v7G2g2RMk1axl4ZScLh8zNS+Jj0pb2Vbp4KbzhsDuo4Yjb/krjLkGsiZ1a3/wxUmOqyZkdfs5U/Ps5CbpqXb4Wbevga9OzD7mMdWOdqodflQKKRFD0xsuKEzmvz+cxc9f/ZzXd9UlInW6KqTvr29jw/4mJAluv1h0ofdUj4rora2teDwezOYvMobWrl3Lhg0bWL58ea8tris2m42pU6d2+bn+yFQdrFl/3XHw4EGKiopIHjMGl4YERAAAoChJREFU6d13kaFTLrpMPD+99tJLGWM0kpOTg9Vqpaqqivb2dkaPHk1+fj6TJ09Gqez6bN65RHwvdY94nU5OvEbdM9Bfp97KVD1VDz74IK+88gqTJ09m8eLFVFRUsGbNmhMOBv2ylStXiqHgg5Reo+TJ73QupD/zvelM7cU3DMLpUylUzMqZxaycWbT4W3i97HXWlqylsq2SA1oNB7Sa+AM9O+GjnSg/BLNCjVGpxaA2YNRYMOrsGHV2Ug2pZBmzyDZlk2XKIsuUhUVjQeqHgaWCcK75cgEd4lFpgiCcfd7+vIFwVGZkhplh6UdqaZ/F0xxeVy2g0hnmsc3l3D13GAw5P15Er/4EJlzf5fa+KKLbmVGYzMgMMwcaPLyw9TD/n737jo+i3Bo4/pst6WVTSQKBsCH0GooigiiJ2FGqvUts1y6R96r3XvVeDNbrtQXsnWIXCwRBEAQCoXeylIQAaWx62ezO+8ekEFKBhA3J+frJZ2d3np05s6zJ7pkz57lP962WQA8bAjd8BQatbeJnaw/xzcbDGHQKb980lJi+ldXd/a7VWqCs/i8lu5bi7ygEy/dg+R6DouNCj0gY1h06D6wVw8IN6aQcsuLpoueZKyt7nu/8CfIOaT9Ln6PH+H9zy8hufLjqAM//tIOfHxqNQd90S95P/zoIwA0juuJiqH/8iO7a58vkA8fhcIo2d5/BXTtxsHsRfP83mL4M9E1/1zuYU8Tm9Dx0ClzeP7TJ8VV0OoXrhnThjaV7+SblcL1J9Koq9IFdfPFybdn5/Hw9jPzvhiH0DPbilSV7eGHRTlwNOm4ZGVFrXFUV+hUDQok8xbY6osZp/evFxcUxZMgQ/Pz8AKov1d6wYUOLBDV79mwmT55MYmJirUr0pKSk6tYu9XFmT9WO1uuvKUVFRZSVlWE0GvEYNIivYmK4fskSFLTq86oE+pfjxlEcFsagiAh0Oh2KotCpUyeOHDlCfn4+bm5u6HS6DvXaynupeeR1apq8Rs3TVl8nZ8Y0adKk6uXu3bvX+yVeiIZUJdLv/iSZVftytF6YkkhvswLdA7mj/x3c3u920gvSSc1LJfX4PiyHV5OavR1LRSElOh1W1Ya1wgYVhVCSCXkNb9MLHd107vR2C6KPr5legQPoGToCo2+3s3dgQrQDM2fOZPbs2QCYzWYSEhJafA4yIcjaDce2Qb+JDfbfFmfuxy1alfM1gyurnI9ug0N/gc5At9j74bvDvLVsHxOjO9Ml/Dz4602tEr0eqqqScsgKaEl0RVG4e7SZJxZs5pNVFu71+kwrYBwxvTqBvj0jj+d/0np8P3V5b2L71m6PQpehMPUT1uxI551Pv+JK963cGrgHJXMHAUV7cfz5Mkz7pHq4tbicF3/dBcAjMT0J8a1sAbfj+5pt/vUmmC/mkXEX8e3Gw+w5VsiXyWnccn7jnwd2Hc1n3YFc9DqFG0d0bXDc4HATep3CYWsJhesX4QXQ+0q47EU4tBqObYXVb8DoxxvdH8BPW44AMKpHIEHerg231iwvgnVzoc/VEKBVdE8c0pk3lu5l5d4sMvNLCfap3Q6valLRCyID62yupfxtXBSlFXbeWpbKM99vx82oZ8qwcAAsWYUs2qod3wNje7RaDB3BaSXRu3fvzr59+/j6669JTk5m+vTpTJ06FV9f32ZvIykpqXrSkri4OOLi4qqr3BITEzGbzUybNo3Y2FjMZjMmk4nY2Fi5DPwcceyYNuN0QEAAJSUlrOndm+KlS7nb4WCforChWzcOjhtHtsmE/dgxgoODMRgM6PV6TCYTLi4u5Obm4ubmhouLi5OPRgghOpaTv7TPnj2b6667zslRiXOJu4ue926VRPq5RFEUwn3CCfcJZ2z4WBh4NwCOomyydnxDQe4+ivLTKSrIoLg4k6JSK4U6hUy9nsMGAxkGA4eNBnL1egpxsN1RxPbiIig+AEd+R9miEmGrYEC5So9P/0u/wH4QEAUBPSAwSrtcvRmVYkJ0FE899RRJSUm8++67DBs2jNzc3OoWdJJIFy1q3s2QvQcUndb+QrS4zILS6kTq1QMrk+iVVej0vorY8wZx/pYS1lhy+feinbxz7fmVT9wBJVZwN9XaXlpuCdmFZRj1Cv3CtDzc1YNCSfh1F92KNqLY9oOLN/SdAEBRWQV/+2Ij5RUOxvUO5q4LuzcY66ieYTzkOoB1xX3oc/lIoh1bMXx6Dcre36CsAFy1KvrZv+0mt6icnp28uH1UhPbkEitYlmvLUeNh72/w3b343reax2J78uz323l18W6uGhCKn2fDeZ6qKvRL+3aqSc7Xw9PVQP8wH7al52LY+a324MCp4BWkJdK/jYPlCdDnGu2zRiN+2FTZymVgE61cljyr/dul/g63/QBARKAnQ7v5seHgcd74fS+9Qnw4mlfCEWspR/JK2ZimXTXQEv3QG/PEpb0oKXfwwar9xH+9BVejnmsGhfHO8lRUFcb1DqZvWOt06egoTvs6gk2bNpGUlITJZGL48OGnlEAHiImJISYmpt7LvU/srd5We9WKhpWVlXH8uPZLIjg4GIvFgt1ux7WyJ/qnBgO/h4VxTVQUnXQ6ioqKSE9PJyIigoqKClRVxcXFBX9/f44cOULXrl3x8pLLTYQQ4mxo6Eu7qqrypV2ckvoS6fPiRtK/86l9ZhTOpfMMpNPw6XQ6eUVFGeSla1+oK8qgogRspRSX5ZFRfIx91lR25x9gZ+kxdtuLydbBfhcj+13gB7I4L+NXbts5nwtLSrVqOYO79sX3/PsguM/ZP1Ah2hiLxcL69etrPTZu3Djee+89J0Uk2qXsfVoCHeCvtySJfjrsNvjzdQgfDuax9Q75ecsRHKpWOR3u7wGlebBlvrZyxD0oisK/runPFW+s5JdtR1k3qjsj/LrD8f2Qvh6ias8JuOFQLgD9O/viZtRa37oa9Nw2shthy14DQO0/CaWyD/rT323Dkl1EqK8bL08Z1GjLNReDjti+nfgm5TA/bz3CkMtGUugaglfZUdi1CAZdz8ZDx/lynTan3fMT+mOsas+y5zdw2CCoN0z9GOaOg8zt8O293HjDfD5fc4jdxwr4z887eWnKIO05Dgds/BQyNsK4ZynQefPtxsMATVasAwyL8MeUsQK3shzwCNBauQAMnKa9xqlL4Ye/8d3guRwtKOfWkd3wcKmdCt19tIDdxwow6hXG9w9peGdZu2H9h9rygZVQlA2eWnX5xOjObDh4nM/WHKr3qUHergzt5tfk8ZwJRVF45qo+lFbY+WLtIR6dt4ncwrLq1/OBS6QK/UydVhJ96dKlxMbGEhMTg9lsZsaMGURGRvLOO++0dHziHFRVhe7r64u7uzsVFRVkZ2cTXJlEPwJkZmayZ88eevbsSV5eHlarFdAqHjt16sShQ4fo0qULPj4+ZGdnSxJdCCHOEvnSLlpSVSL9zo+S+cuSw50fJfPtA6PobHJ3dmjiTBlcqy9jPpEH0KPy57ITHs8uzmJr+ho+WfseGx37Wevuxlp3NyIdOm6z5nNlXi4uKR9DysdgvhjOvx96xICu6b6pQrRHw4cPr/fxEwvOxDnoyBatV3X4CGdHotn7W81yejKkJWvJYNF8W+bBshcABS7+u9Y65KS/XT9WtgqpnrBy05dgK4KgPtBtFAC9QryZHN2FeevTWLghjRFdz9eS6Glr6ibRq/qhd62dlL1pkAn3P7QWMNtDJtAfrW/5txsPo1Pgv9cPabQCvMqVA0L5JuUwv2w7wszxUaT7jaT30W9h60LsA6bxzPfbUFUtcXye+YTq6qpWLn2uAaM7TP4A5oyF1KUY1r3DfybezOR3V7NgQzrXDenMBYEl8P0DsP8P7XmFx/im638oLrfTI9irWZXbwyP86Ld2lXan38Saq9oUBa5+Hd46Hw79xfrUV/jMHsvnaw8y67qBXBhV01rlp8pWOxf1DMbXvZGr4pY8C6pdW1YdsPNHGHYHABMGd+bXbUc5XlxOiI87YSY3QnzdCPN1J8TXjT6hPtUnPFqToii8MKE/pTY736Qc5p8/ai18LogMILpr6ybxO4LT+lQ6e/ZsEhMTWbx4Me+++y6LFy9m8uTJfPPNNy0dnzjHVFRUkJOjXabUqZNWs3T48GHsdjtV5/MOV1Rgs9mw2WwUFhZis9nQ6XTs2LGD3bt3c/DgQVxdXfH390en03H8+HHsdruTjkgIIToW+dIuWpq7i57EW4fSq5M3mQVl3PHhOvJKGugzKdqtQI8gLux+Gdf63MkPE37itr634Wn0JFXn4Fl/Ly6J6sNt5j78PSiAd3I38MMPt7Ph3aFk/vkqasZmrWpPiA4kJyeHgoKCWo998803JCUlOSkiccYqyuDjq+DDyyGnjXyu2rtYu3WrvEpszVvNe15eGoqjonViOtds+7pyQdWS6Qtu1a7SqpR+vJgNB4+jKHBV/2CtkvmPF7WVw++q1Yf+umhtUspftx2lonPliZZDa+rscsNBK0Cdyma/1O9wU2zscoTz353e7Mss4NnvtwPwWGzP6ok4m3JhVCDebgaO5ZeRkmYl3a+yvUzq7yxcuZFth/PxdjMw8/ITrhwrK9SqvgH6XqPdBveGy2Zpy0n/YqjxQGV1ucrK+a+hvn2+lkA3uIPeBXb/TP7KtwGtCr05k5QPC3NlvC4ZgMKeJ101a+oKMf8A4CnDl4SSQ1puCTe/v5YnF2wmr9iGqqr8sLmylcugRiYUtfwBe34FRQ+Db9IeO6H/u5ergU/vOo+f/jaa924bxnMT+nP/2B5cO6Qz55sDGk/OtzCdTmH2pIFcObDmeB68WKrQW8JpJdFTU1PrzAo+btw45s2b1yJBiXNXbm4uDocDvV6Pp6cnRUVFOBwOVFWtTqLnurgQEBBAQEAAfn5+dOnSBT8/P/z9/VFVlbKyMry9vRk4cCBubm44HI7q9jBCCCFal3xpF63Bx83Ih3cMp5OPK3uOFXLvpxsor3A4OyzhJKGeoTwx/AmWTF7C40MfJ9gjmLyKIlLUIn7w8uRtPxN/Dwrgds8KxqV+yBU/T+OFuYP44/VIihPHwPxbtWqw7d9Bca6zD0eIVhEXF8eQIUMYPnw4w4cPJyAggClTpjB37lxnhyZO15HKE4KOCtjwobOj0RK9ByoreK/5n3a74wew1t+Ootr6DzG+OYRLtz+GbuXLUJjZunG2ZYVZWnIV4KJ40Bm16uT3YqpPlCyqrEK/M+wQnb68FH56BEqOQ8gAGHRDrc0Nj/Cnk48r+aUVrLdX9vA+vEFrGVOpoNTG7qP5AESf3B5k46cAzLOPJWlXJnd/vJ4Sm50LewRy3ylMKOlq0FdPPPrLtmMUuYXiCBkEqp09yz4HYMb4XgR5u9Y8ae9i7SoLfzN06l/z+NDbtUk4HTZYeCczhuv53P0V4svfRCkvhC4j4L5VEPscANNLPmSIS1r1CYWmBKYvxVMp46AjmHUV5jrrj/S8iRRHFF5KKYvM33D7yG4oCizYkM64V//gjaX7OJhTjLtRX3ey1SoOOyz+u7Y87M6aiUr3r2izn0MMeh2vTxvMHaMiuG9sZKv3Y+8oTiuJHhcXx6ZNm+o8brFYat2vb4xo3zw8PFAUBbvdzp49ezh8+DC+vr4U5+cTVDmm0Nubrl27EhYWhtlsJiIiggEDBtCrVy/c3Nzw8vIiKCgIvV6Pt7c2aUVZWZnzDkoIITqQ6dOny5d20SrCTO58ePsIvFwN/GXJIf7rLaiVrd5Ex+Tt4s3t/W/n10m/8vkVn5MwOoGHhjzExKiJnBc8lM5GH/QqpBuNzPPx5kE/D0a75DI9dzWfbP2AXd/fjX22WbtUPOmfWiLDVurswxKiRXTv3p19+/bx1FNPMW7cOF588UVyc3MZPHiws0MTpyttXc3yxs+d//vKslxLbPqbtQkou1+ktapYW3feump56bD4aQDcKqzoV7wIr/WDb+/Velp3NDu/116zsCFw8f/BHT+DVwhk7YI5F8PeJSSnrCfR+CrP5DwFx7aBmwkuS4B7loFr7ba1ep3ClQO0li/zDnhoVwjYiuHo1uoxm9PycKjQxc+dTj4nTLp5ZIt2okbvQrb5WlQVDuQUE+jlwqvTBqHXNV3VfaIrB2hVzL9tP4ZD1XqsA4x3rGRAZ19uPO+kfuUntnI5sYJcUeDqN8CnC+Ra8JozklFqCmWqgRcrbmTHZfO19nDn3ctWj/NxVWwkur+Nj668eYFu1XrLf+cYRXJlhf6J3l91iBm2e7BhxD9jGf8cnM/Ce0cSGeRJdmEZryVpcwKM6xNcp1d6tc1faf8Grj4w9ikt3pAB2r/9rp+aF6cTGPU6/nF1P+Iv692sqn7RtNPqiW4ymYiPjyc2NhaTyQTAhg0bsFqttXqmLliwgN9++62BrYj2yMvLi549e5KamorVauXgwYMEBQURlpaGDnAAjwFpHh507dqVbt20X7wVFRVs3rwZg8FAYGAgrq6u7N+/v/rLtaura4P7FEII0XLMZjP79u3j66+/Jjk5menTpzN16tRTnkBciPr0DfPh7ZuiueOjZL7deJgQHxd6Ozso4XRGnZGBQQMZGDSwzroiWxHrjqzjz7Rl/Jm+kozSbP5yd+cvd62vvofDwcCydIZs+4DBG95hQIUO785DIXSQltQIGwJ+3aW3ujhnTZo0iUmTtORVfn6+k6MRZyRtbc1ySS7s+A4GXe+0cNhTmauJGq/djqzsTZ3yiZYodPWuPV5VYdETUF6Io/NwNhqGMsSWjC5jA2z+UvvpMgLG/6fj9FXfWtnKpTLBTPgIiPsD5t0C6etQP5/C26oOF70dVdGjDL8Lxs4Ej4bbqlw9KJQPVu1n8c4s7FHD0acmae+dztHACf3QG6hCp/eV3DBkMD/uXYuiwOvThhDs7capujAqEG9XA8cKythfABsixjJMVRih201CjF/tpLytBPYu0Zb7Tqi7MQ9/mDQXPrpS6yUeOpgEw9/4YK87f323nW/uH0VWQRl3Wu/gJ+MuOpUdhF/iYcKbjQdZlA37tBYy39tHEXCgdlW4tbicL9YdoljtQlaPSYTt+wpWvsrQmxfy88Ojeev3fby9PJUKh8qk6C7176O8CH5/Xlse80T1RKL0naAl1nd8D9G3NvVyinbitJLoiYmJWK1WcnJy8Pev+Z+/e/fuzJ+vnQXKzc1l//79LROlOKd4eXnRu3dvVq5cic1mQ//pp8zdvRsABbgtOxvdF1+w2G7H9thjuLu74+/vz6BBg3BxcSEqKordu3fX+pDo5nbqv/SFEEI0z/79+7n00kuxWCzExMQwZ86cWl/ahWhJY3oGMeu6Acz4egvv/LGfaWaFK5wdlGizPI2eXNz1Yi7uejGqqrI/bz9/Hv6TVRmr2Jy1mSJbEWvc3VlTmVRXVJUBZXsYv30T49e9Qye7XascCx2kJTf6XKMtS0WWaIPuu+8+cnNziYuL45JLLqmzPjk5mf3793P33Xc7ITpxRlRVm7gTIHKc1js6+X3nJdFVtSbpGRWr3faIhYAoyNmrVcqff2/t5+z4Dvb8Ajoj9itfJz05lYFXvIDu2Gaten37t5C+Dr66AR7ZBsZ2/h0+7zAcWq0t97uu5nHvELj9J/hlBsqGj3BR7Gx1G8aAO9/SeoQ3YXC4iS5+7qQfL2GfW396kaT1RT//PgA2HKoniW4rhS1aLo4htzAyMoDnr+2Pv4dLrQk0T0VVS5dvNh5mQ7aOn5ce53lHH0bqd9A3ZwnQr2bwvqXaRKm+XbWT1/XpdgHcOB/yM2DwjdxbZGfBq3+wOT2Pj1cfwFpiI8vhzbv+M/nH8ae0kwKRF9ecoKjP9m9BtVMWNBBLWhjpaXmU2uzVE3h++tdBisvt9An1IfTyeHhzPuxbAke34hoygMcu7cW1QzqTfryEMT2D6t2Fbu3bUHBE668+Iq5mRd/r4PcXtCs6inMbPTEi2o/TKsmYNm0aGzZsYP369SxevLjen/Xr1/Piiy+2dLziHGE0GjGZTPjn5DD644+r32gK2pkbBbh0/nzUvXvx8PConkS0oqKCwsJCunbtWmt77pVfjIQQQrS8uLg4unfvzrvvvsvgwYOZPHmys0MS7dzU4eE8NE7r9bnAomPl3mwnRyTOBYqiYDaZubXfrSTGJrLq+lUsvHohT5/3NFeZr6KLVxdURWGLmysvBfgRG96Z20NDmOfiIPfQKlj5Csy5CP4XDUuf0yrIpKWQaEOSk5OZN29evQl00OYhW7JkyVmOSjQoLx3d+vfplNeMNiZ5aVoiTmeAq17VbtPXaS04nOHoFig8CkZPiLhQe0ynq07UsuZtrQ90lZLj8PMMbXn0YxDUq2Zdl2FalfGj27WWHUVZsG3h2TkOZ9r+rXbbdST4nlTFbHBFvep1Zro/ww3lf2dPzEfNSqCD9rfuqoFaS5dFxyvzImlrQVVxOFQ2VibRo7uekETf9ROUWsE3HMwXoygKt5zfrdbEkqfjisqWLquO6diXVUSSYbS2YutJ/77VrVyubvwkdVQsDL0N9EaCfdyqJyZ9efFuPl9zUDuusdfU9Bz/8RE4fqDh7W3R5mV0GTKNQC9Xyu0Oth7WJiIvKbfz4WrtufdeZEYJMNec7Pjz9epNmIO8Gkygu9qs6P6qrIaP+WftE0OBPSC4nzbHwe5fGo5RtCunlUR/8sknm3VZ98mTj4qOIzs7G0VR6LtmDfV9NVEAFAW/b7/Fy8sLb29vunTR/vCkp6djMpkICtJ+kRmNRvR6/VmLXQghOqLFixdzzz33kJCQwIsvvsjvv//u7JBEO/doTBTXDQ7FgcJD87aw+2hB008S4gR6nZ5e/r2Y1nsas0bP4pdJv5A0OYn/O+//iA6ORlVgg5sLLwT6c0m3cO6N7MciHxMlx/drCfV3L4Q3h8Oy/1RPACeEM5nNdSfFO5nVam39QETzbF2I/rd4umcvbXpsVT/0kIHgF6ElGwHWv99q4TVqz2Lt1jwWDCe0Th10A7j7gfUg7P655vHFz0BRJgT2rElwnsy7E5w3XVv+6+22f5KyKPvMTmJsO6mVy0nmrrTw5fE+pOgGENs/5JQ2ffUgLXn98aEAVJ1BOwFjPcS+rEIKSivwcNHTO+SEdjspH2u3g29q0fZlo3sG4uVa08BiQOyt2uSpx7ZC5i7twYoy2POrtlxfK5dGXD88nBER/hSX28kpKifQy5Xx/UK0dkJdRkBZPiy8q9bEqtVyLdrVHYoOZcBkRnTXTiokV7Z0WbAhjdyicrr4uVf3d2fUI9rt9m8gt+nOGX2OfI1iK4Iuw6HfxLoD+l2r3e747pSOW5y7pDmgaHGqqpKZmYmqqrgeOUKD5yFVFX1aGhUVFQB06tQJV1dXVFUlPz+f8PBwQkNDq/umCyGEaB3R0dG17o8bN47U1NoJpQMHDpzFiERHoCgKL0zoRw8flcKyCu78KJmsAplIXJyZTp6duKH3DXx8+ccsmbyEJ4Y9Qb+AfthRWeUo4KkAHy4x9+CfkYPZ6O6FmrMX/kjQqtM/uEzrBVwqfaeFcwQEBDQ5xmKxnIVIRLNEXQpAYMFOrSd0Y6qS6OHnabfD7tJutyxwzu+cvZVJ9KpWLlVcPGDoHdryX29rt/tX1vTbvvqN2kn3k0XfCkYPyNwO+1e0bMwtKf+IdiI1cTR8MkGbkPNUHN8PGSmg6KDvtXVWL9udyYu/aEnm/7uiDz5uxlPafN9QH8xBnuRVGLH6aNXapK2t7oc+qIsJg74ynZe7v/K1VmDITad2HE1wNeiJ6a0VNw7tauKa8/tBjxhtZdXVBpblWrLbO1RLNp8CnU7hPxMH4FJ5LDeOCMfFoAO9ESa9B66+cHg9vD5Qu4LsxBPeVdXw3S8C7xCGddPaqSTvz6XC7mDOCu135fQx5prXKnSgFr/qgNVvNB7cse10zal8D1/67/or7KtOGqQugxLrKR27ODdJEl20uLy8PMrKyigsLCTby6veSnQAFSgMCMBgqDmzWTVRrdVqRVEUwsLCZDI7IYRoZXl5eXUemzZtWq37iYmJZysc0YG4GHTc2dNORIAHh60l3PPJekpt9qafKEQzhHiGcFu/2/jqqq9YdN0i7ht0H529OlPoKONrRy63hvhzde/BvGkewi9enmw6toHMRY/geLknfDNd6/FacLR2SwMhWlFOTk6j6/Py8uS7UVsS3AfVOwy9akM5uKrxsVWTilZNuBlxIQT20vpIV7akOGuKcmr6s1eeCKhlxD1au5lDq+HgX/Djw9rjw+6EbiMb37a7n1YNDVpLmLaoogzm36JVd4OWBE4cA1/fA8cPNmsTuqrK4+4XgVftViCpWYU89OVGHKpWaX3ryFMvClQUhasrW7okO7T2dxxaU/+kops+127NY7W+3S3ssdgoLgl18NrUgeh0CgyobPu4dYF2tcGOH7T7va86rSr4HsFevDhpAOP7deKOUd1rVvh1g8nvg7s/FGRoV5D9Lxo+uFzr2V/1/83AqQAMj9CS6OsPHufHLRmkHy8hwNOFKUPDa+/wwke1242fQ8Gx+oMqOY7hu3tQUHH0mQBdz6t/XFAvCOoDDltNNb5o104riS7VaKIxpaWlABw9epQ/e/ZEgTqJdBWtpcv6QYNIS0urfo6fn/bHIC8vD7WtX/4lhBDtRGJiInq9vtaPn59frfuzZ892dpiinfI0wtxbhuDrbmRTmpXHF2zG4ZDPAKJldfXpyv2D7+fniT/zwfgPuCbyGtwN7hwsyyVRzWFGUAC3hIUwrmtnhnUJ5IrcFdyddC9vvj+C5Jc6U/ZSFLxzIXw6Eb67H9a8C0e3gcPh7EMT7cjw4cMbbac2ffp0hg8/tUpP0YoUBUdlVa6SmtTwuPIibQ4GqKlEVxQYXlmNnvz+2W19si8JUKHTAPDtXHe9T1hNi5Ivp0FuqlZlHPPP5m3/vMoJSff82vZaZakq/PSYdhLBzRdu+Q76VyWF58Obw+C3v2sTRTZCt6OyH/pJrVzySmzc8/F6CkorGNbNj+cm9Ec5zYmsq1q6/Jhb0xc95eQkusMOm77QlqNvPa39NCXU140JEQ5CfSv7gfe6XLva4PgB7eTQ7kXa46fYyuVEE6O7kHjLMPw8XWqviIqFx3fBlI+1iW8VnXZy5/v7IWcfGNy15D3QJ9QbTxc9BaUV/HvRTgBuvyACd5eTWgN3G6W1irGXwdp36gZTUQZf3YSSvYcSox/2mBcaD77quLd/dxpHLs41p5VET01NZdq0aeTny6WOoq7g4GAAMjMzOezhwfdXX82JXy/sioKqKPw8cSK6nj1RFAW7Xavw8fT0xGg0YrfbKSiQ3qhCCHE2REdHM3/+/AZ/5s2bx5AhQ5wdpmjHIgI8SbxlKEa9wqItR3gtaY+zQxLtlE7RMTxkOP++8N8sn7qcF0a9wFXmq4gOjibUMxSdosOmKKQZjax1dyPRz5c7Q4IYFejCPcpR3stOZsvOBdh/jYd3R8FLZvjqJljzjpYkk6S6OAPTp09n+vTpvP9+7T7Z+fn5TJ06lYULF5KQkOCk6ER91Egtia7bl9RwIjxjI6h28OlcewLKQddrycisnXDor7MQbaWGWrmc6Pz7tdvSyqsVr3hJSzo3R2AP6HmZtrymniSlM62bA5s+05Kxkz+EyIu1aufpy6H7GLCXw19vwhuDtQr1eniXpKNk7tB6g/e5qvpxu0PloS83YskuIszXjXduHqq1JjlNPYK96R3izZoKrRJdPbadrOwsFBwM0++FX/8PXh8A+Ye1au3eV572vk6Ji2fNvn5+Qpt01iMQul3QOvszuGq9x29eCI9sg0ueAb/KivVB08DNRxum1xFdeXIhu7AcTxc9t46MqLs9RampRk9+v+Y9Dtrf8G/vhYOrUF29WRP5OPg0MTlrdUuXpdIOrgMwND2kflOnTuU///kPeXl5xMXFMXjw4BYMS5zLdDpd9WWGfn5+LOvWjX+4ubGhtBQjsKZfP5YPG0ZZeDidy8s5duwYgwYNqn6+yWQiKysLq9WKj4+Pk45CCCE6joSEBMaNG9fomKorhYRoLeebA/jPdQN4cuEW/vf7PiICPJk0tEvTTxTiNHkYPZjQYwITetRUz1U4KsgsziSjMIMD+QdIPrKOdUfWkl2Wyxp3d9a4uwPQFSN3HD/ONdZcXHb9BLt+0jZg6gYX/E1rZ+Di4YzDEucwX19f5s+fT0xMDNOnT8dsNpObm4vVasXX15fFixfL96M2Ru0+BoeiR2c9oFVdB/aoO6iqlcvJ/aLdfLXWGCmfaMm81kpCnsheUVmJDvQc3/C4sMFaxe7BVdokqFUToTbX+fdrleibPodL/q61eXG2/Svg15nacuxz0OOEz75hQ+DWH7Q2Xkn/gGPb4IvrtcRtxIW1NtP5+BptoUdMreOa/esu/tiThZtRx5xbhxHk3Ujv+Ga6elAYLx0tIFMfQrD9KC8ZE4k27Mf78+yaQS7ecHlC473qW9qAKVo7l6orLHpfCTp9489pCb6dYcwT2uS2x/eDT+3PicO6+bNyr/ba3DCiK74eDfSi73kZBPWGrF2w/oOapHrSP7RJR3UG7JM+Jn9nYdMxBffRJtzN3qO95yvby4j26bROi40bN45Jkybx4osv8s4775Camsp9993Ht99+29LxiXOUr68vAwYMoKKigqKiIvYCeyvX/REcjEWnIzs7m6NHj7J///7qdi5Quy+6EEKI1tdUAr25Y4Q4U1OGhfPAxZEAPPXNFtYfaPxyaiFamkFnIMwrjGEhw5jcczIJF83m92nL+X7C98wcMZNxXcfhZfTiEDb+5efFZb0G8tGwSRRFXgJGT7Ae1CrzXu8PyxOabAkgxMmio6PZv38/s2bNYsiQIUyZMoV3332X/fv3y9/itsjFixzPXtpyVYX3ydIq+4+H19NXuWqC0R3fQ2Fmy8d3svRkKLVqyd+mJoGc8CaMnQnX/O/U99N9DHTqD7Zi7SSBsx0/APNv064IGDgNRj5Yd4yiQFQM3PO7liCvKIHPp8KhNTVjVJXO1sqTIie0cvkmJZ3EyoksX5o8iP6dW2bugqq+6KvKtZMzl+mTCVazwcULBkyF67+AJ/ed/cSt+eLaJ0bOoJXLaVEU8DeDoXb7l+HdtZiMeoW7Rnev75kanQ5GPaIt//W2NjHwurk1k41e8yZq9zHNj6Xq+Hd8fwoHIc5Fp5VEP7GNS35+PhaLhXnz5nH33Xdz33338fLLL0urlw4uKCgIs9lMv379qtuyVE3R4ZGZiYeHB15eXhQXF6PT6XCvrOoB8Pb2Rq/XY7PZKCoqckL0QgghhHCWx2N7ceWAUGx2lYe/2kReic3ZIYkOTlEUzCYzN/a5kdcvfp2lU5by5LAnCfYIJqvcyis5ycQajvG/8U+Qc+lzWjV6cQ4s/w+81g/d4v/DvSzL2YchziG+vr7MmDGD+fPn8+6773LPPffIhKJt2DHfyquq60uiq+oJk4qOqLs+bDB0HqpNTLjx01aLsdre37TbyHFNVw77m2HsU6dXRa4ocP592vLaOVoFvLOUF2ltt0pytYrzq/+rxdcQgytM+0ybqNNWBJ9NhvQN2rqjm/EqO4ZqcIdel1NUVsF/k/by1DdaRfYDF0dy9aCwFgu9a4AHg8JNfFIRy25HON/ZL+DPof/VEueT5moV4Ea3FttfsxlcoO+12rKbSTtp0gac3z2ABy6OZPbkgYT6ujc+eMBkrZK9KFNr4fLLDO3xi5+GwTec2o6rXou9S6BM2hK3Z6eVRE9OTmbmzJmMHz8ePz8/kpKSmDt3Ljk5Obzzzjvcc889zJgxo9FJUUT717VrV6KiovDx8UFRlOokun9BAX5+fiiKQkFBAQ6HA72+5g+4oijVHxKlGl0IIYToWHQ6hYTJA+kW4MFhawlPf7dNJhsXbYqH0YNb+93KrxN/5bkLniPCJ4KC8gLmbP+Qcfs+5N5+I/lh7EMUhgwAWzH65DnE7ngC/adXa5eNS3W6EO3KMZ/KJPrBVVrC9kQ5qVryVu8KIQPr30BVNfr6j7SJIpvLeujUk9N7l2i3jbVyaSn9J4NnEOSnw84fWn9/9TmyRatAP7YNPINh2udgbCK5CtqY67+EiNFQXgCfXgcZm6onFLVHxvJJSjYXvbSM15L2UF7h4LJ+ITwe26vFD+HqgaFsVKMYX57AI7YHCTlvUvOOobWNmK71Yj//ftA30DblLNPpFJ4c35vrhjSjHaDeqLVfA9jxHagObXLWMU+c+o479QP/SG2y0j2/nfrzxTnjtGc5SEhIwGw2s2/fPn777TcmTaq5lKXqzHl8fHyLBCnOTYqiEBkZiZ+fHwaDgQOVj/sXFlJcXEx6ejoZGRlUVNT9w1/V0qW4uPisxSuEEEKItsHL1cDr0waj1yn8uDmDbzcednZIQtRh1Bu5Luo6vpvwHa+OfZWBgQOxq3ZWZazm7we/Y6xXKY8Nu5rF3YdRpoDu0F/w06PwchR8PgW2zIeyZvRbFUK0aYWuoaimbtqklPtX1F6Zvk677Rxdp/VEtf4TtWrevEPw56vN2+kfL2mTSr53CeTub95z8tK1ZLKi09qVtDajW80JgjVvt/7+qhTlaBOavnMhJI6GfUu0SUCnfar11G4uFw+44SvoOhLK8uCTCei2zgfgn/t78+z328kuLKdbgAdv3jiEt2+KRqdrpML9NF05sGZiS193I+ZArxbfx2np1Bfi98PYczjvF30reARoy1GXwpWvNX6VQkNqtXT5rsXCE23PaU8smpqaSvfuDfcYCggIYOpUaajf0RkMBkwmE66urpRVtnUZabXCb78xz9OTQi8v8vLyyMvLw2g04urqil6vx9fXl4iIiFptXoQQQgjRcQzp6scj46J4Zckenv1+O8O6+dM1QCZqFG2PXqcntlsssd1iOZB3gF/2/8LP+3/mQP4BluRsZgmgi+hGhNGHHiVF9CjIIvLwSnoc+J3w7xSMAT20icmqf/qCX8TZmaRNCHHmFAVH5Dj0Gz7QWrr0urxmXUOTip7I6A7jnoVFj8HvL4BXCETf0vD4dXNh2Qva8pHNMOciuPZd6H1F43FWtZvpMhw8/Js+rpYw/C7txEB6stYbPryJPuxnwrJce232/Ka1xwHQu2j/Huc/AF3r6UnfFFcvuGmBVomenowCFKjuLMjvS6CXCw+Pi+L6EV0x6k+7PrVJob7ujIjwZ92BXKK7mlolUd9huXjA5A+0987oJ0B/2ilS7eqOP1+FwyktFp5oe07rHdKcCU18fX158sknT2fzop3R6XTcrqq8WHnf327n8u3buVxVeaVPH4ze3uzbt696rNlsxmAwcPCg1gCmf//+uLg0cNZeCCGEEO3W/Rf3YMXeLJIPHOfheRtZEDcSQyt+URXiTEX4RnDf4Pu4d9C97MrdVZ1QP1Z8DIvNisUAi/1M1eM9HA4mFxzhtl17CN7+Tc2GjB7aRHGjHtb6Egsh2jQ1MgY2fAB7k7Q+6FXVrGmVlej1TSp6ouF3QV4a/Pka/Piw1gal12V1x21dCD9X5lnOv19LTqcnw1c3aL8vLnm2/kSgqta0mYiKPb2DPB1ewTBgCmz6XKtGD/+wdfaT+ruW6K4SOhgG36T1vT7TEwau3nDTQo6+eRkhRTtZ7BhO3CV9iLuoB56uZ5B0PQXTx5jZejiPyUPDz8r+OhTzWO3nTHl10m5Ljp/5tkSbdXb+jxcdml92NjNycqiqpVEAvaqiAk/s3MlKHx88PDwoLy+noqICi8WCoijV/U8zMzPp0qUZPa2EEEII0a7odQqvTRvM5a+vZOMhK2/8vo/HYns6OywhmqQoCn0C+tAnoA8PDnyQLxd9SbfobhwoOMA+6z5Sramk5qVSXFHCJ74+fOlr4lpjEHcUlhCemQq2YtjwEaR8Av0mwoWPQkh/Zx+WEKIBasSFWt/zvEOQtRuCe0NpHmTu1AbUN6noycb9AwoztYTzgtvhth9qP29fEnwbB6gw/B4Y/x+w22DJs7D2HVj1X0hfr1XWeodo/dn3r9Qq0Pct0XqoA0SdhX7oJzr/Pu2YdnwH+++E7qNbdvuqCssTtOWel8MlT7f870t3E290fhnH9m9RQ6N54eJIjMazl06L6duJnc/Xc1JFtB1VE/DaisFW6pwJX0Wrk1Ie0eoGpaRQ33RgCqAqCudt306fPn0YOHAg7u7uOBwO7HY7Op329szKysJuP4UJVoQQQgjRbnTx8+CF67Qvw2/+vpf1B2RSRnFuURQFk87EqLBR3N7/dl648AW+vOpL1ty4hrfHvc2Q4CHYcLDAdoyr3YqYOeZ2Uqe8Bz1itYnOti2Ed0fB51Ph0FpnH44Qoj5Gj5rkcFXblPT1gKq1Z/IKbnobigJX/1frzVxRAl9M1RLyoLVCmXcLOCq0E2uXz9bGG1zg8hdhykfg4qVNbvruaK0qO6E7fDkN1r+vJdD1Llp1dsiAVngBGhEyAAbfrP0++/ou7URBSzq4CtLWaMd31WutdsIxtUDPV/ZLcHX3bpXti3Ocqw9algsotTozEtGKJIkuWpWqqvjn5dFQ1y4FcDtyRFtWFPz8/KrXmUym6qR6bq58YRZCCCE6qgmDOzNxSGccKjwybxP5pTZnhyTEGdMpOkZ3Gc0nl3/Ch+M/ZFTYKOyqnZ/2L+K69c+z6II7IG6lljBTdLD3N/jgUlj6nLNDF0LUp0dlm5R9S7Tb5rZyOZHeqCXEOw/T2kJ8OlGrQP98slbhGnkJXJcIupNSOf2ug+nLtTkVijK19ib2MvDtqk3uecM8iD8A1759ehMnnqkrZkNQbyg8Bt9MB4ej8fEVZTVV/E1Z8bJ2O+Rm8AltfOwZyMgrAcDkUl+JoOjwdDpwN2nLJVZnRiJakSTRRatSFIXiTp0a/kOtKBARAYDNZiMzs+astNVqra5GdzT1R1YIIYQQ7dq/JvQj3N+d9OMlPPPdNmeHI0SLGhYyjHdj3+Wrq75iTJcxqKi8sv4VSoN6wpQP4cH1MKRyosFV/4WcVOcGLISoq6rX+MG/oDQf0iuT6I1NKlofF0+4cT4EREF+Onw2Sats7TwMpn2mVZ/XJzAK7l4K42fBpS/AA+vgkS1w1ataf3UXz9M+tDPm4qmdHDC4g2UZ/PlKw2OPH4A5F8Pb52s94htzeIO2PUWv9YRvJXaHytG8UgD8XFttN+JcV9XSRfqit1uSRBetLmP8eJTKHugnUqm82OWuuwA4cOAAFRUVuLu74+npicPhoKioCAB3d/ezGbIQQggh2hhvNyOvTxuMXqfw/aYMvklJd3ZIQrS4fgH9eG3sa4R5hpFVksVXu77SVgREwoQ3oUeM1s5h+YvODVQIUVdAJPhHgsOmJXbT12uPn0olehXPALjlG/CurKwO6g03LWg6Ee7iASPvhwv+BkG9nFN13pDgPnBlZfJ82X/gwJ91xxz4U0ugZ27X7v/+AmRsbHibKyq3N3Cq1janlWQXlmGzq+gU8G3gHIYQkkRv/ySJLlqd15AhfHbxxTiAqnpyO1o/9NI334QePcjJySE/Px+dTofZbKZ79+7VVegAbm4yKYMQQgjR0Q3t5s/D46IAeOa7bRzILnJyREK0PBe9C/cOuheA97e9T2F5Yc3KS57WbrcugGM7nBCdEKJRUZdqt6vfhLJ8MHpqLVZOh6kr3L4ILn4abv0BPPxbLk5nGXITDLpR64++8C4ozKpZt/4D+GQClORC6GDttXRUaO1fyovrbuvYdti9CFDgwsdaNewMq9bKpZOPG/o2dF5CtDGSRG/3JIkuWl337t3ZPXIkV/XowYHKx5a5ufHbf/+L+333AVrvdNDav+h0OlxdXQkPDwfAYDDg4iKne4UQQggBD1zcgxHd/Skqt/PwVxspr5CWb6L9uTryaiJ8IrCWWfl0x6c1K8KGQN8JgArL/u20+IQQDYiK0W6rW7kMBb3h9LcXEAkXPQnenc48trbiypchsBcUHoVv7tH6ny96HH56VEua958Ed/yi9X73CoHsPbDk2brbWVlZhd53AgT1bNWQM6xaK5cwXynuE41wM2m3MrFou+XUJHpSUhJDhw7FYrE0OMZqtRIfH098fDyxsbGNjhVtU5cuXejWrRuZPj6kVD62xGCge2xs9ZiAgAC8vLyw2+0cPHgQgMDAQCIiIjCbzU6IWgghhBBtkV6n8Pq0wfi6G9mcnsdrSXucHZIQLc6gM/DgkAcB+HjHx1hP/EJ+8d+1iUZ3/QTpG5wToBCift0u1Pp+VzmdVi7tnYsnTP24pj/6/4ZC8nvaukuegUnva21pPPy1iVABkufC3qSabeSkwvZvteXRj7d6yFWV6KGSRBeNkUr0ds8pSXSr1UpkZCSJiYmkpKQ0OnbcuHHMnDmThISE6kS6OLfodDrGjBmDwWCg6qJrQ1kZrq6uWK1WbDYbiqIQERGBoijk5+dTVlYGaMl1b29v5wUvhBBCiDYnzOROwqQBALz7Ryqr92U7OSIhWl5st1h6+/emyFbEB9s+qFkR1AsG3aAt//68c4ITQtTP6Abmi2rudxnhvFjashP7o+elgYsXXP8FjHmidh/3HuPgPK29Fd/fD0U52vKfr2otYaLGQ+jAVg/3cGUSPcwkSXTRCEmit3tOSaKbTCY2bNjAggULGh2XlJSEv78/JpMJgJiYGCwWS5OJd9H2REREEBoaWp1E93A4yM3NJTU1lS1btrBt2zaOHDlS3Qc9Ly/PecEKIYQQos27rH8oN4zoiqrCI/M2kVtU7uyQhGhROkXH34b8DYAvdn1BZnFmzcqL4kFn1Ko4969wUoRCiHpFnVD412WY8+Jo64bcBGOe1Kr371oMva+sf1zMP7WJVQuPwY8PgTUNNldOujzmibMSqlSii2aRJHq757R2LlWJ8cakpKTUaeVhNpulpcs5SK/X06NHD0r0egDc7Hb8/f1xd9cudSsrKyMnJ4ecnBwqKiqwWq1OjFYIIYQQ54Jnr+pLZJAnmQVlzFi4pXqOFSHai9GdRzM4aDBl9jLmbJlTs8KvGwy9XVte+jzIe1+ItqP3VVoyzXxx+5gMtDVd8jTcsQg69Wt4jNEdJs7RThzu+gk+n6L1To8YDeFnp9I/I0+S6KIZ3E3abYnVmVGIVnQGM1y0vpycnDrJdpPJRG5ubr3jy8rKqtuAAOTn5wNgs9mw2WytEmPVdltr++1FeXk5BQUFBLu5QVERnsDatWuZNGkSdrudoqIi0tPTcXFxISMjg+zsbNzc3AgNDXV26GeNvJeaR16npslr1Dxt/XVqq3EJ0Za4u+j53w3RXPvWKpJ2HuPTNQe5dWSEs8MSosUoisJD0Q9x52938vWer7mt322Ee4drK8c8ARs/0yYw3LsYeo53brBCCI13CDyyDfQuzo6k/QgdBJf8HZL+CVk7tcfOUhU6wJHqiUXd2X/W9irOOVKJ3u616SR6Q9XI/v71n82dNWsW//rXv+o8vnjxYjw8PFoytDqWLFnSqts/11Ulyj0r+5uNB/584gkWpaWh9NRm0i4tLSU9PZ2jR49SUVFBSkoKUVFR1dXqHYW8l5pHXqemyWvUPG31dSouLnZ2CEKcE/qG+fDU5b157qcdPPfjDiKDvBjVI9DZYQnRYoaHDOeCsAtYnbGadze/y78v/Le2wjsEzouDVa9r1eg9YkHntAuNhRAncvVydgTtzwUPwZ7FcGg1dB4G3S9q+jktoNRmJ6eyZVyYyU2S6KJhkkRv99p0Ej0yMpLk5OQ6jzfUCmbmzJk89thj1ffz8/MJDw/n0ksvxcfHp1VitNlsLFmyhNjYWIxGY6vsoz3Iz88n++WXubuwEIBuQPjhw+ji4yl/+230d90FwJ49e7BYLOTm5uLt7Y3ZbKZv374oJ04u0k7Je6l55HVqmrxGzdPWX6eqq6mEEE27Y1QEm9Ks/LA5g3s/3cD8e0fSJ7R1PvsJ4Qx/G/I3Vmes5ifLT9zZ/04iTZHailEPw/oP4NhW2PEt9J/k3ECFEKK16PQw5SNY9V8YelvtCUhbUVU/dE8XPT5ubTqFJpxNkujtXpv+DWA2m5k3b16txywWCzExMfWOd3V1xdXVtc7jRqOx1RMkZ2Mf5zLPjAzuXrOmugm/rvJHVVVc77+fI3374j9C62dmMpnIy8ujtLSUiooKCgoKCAgIcFboZ528l5pHXqemyWvUPG31dWqLMQnRVimKwktTBnIsv5S1+3O548Nkvn3gAkJ9O9bVbKL96h/Yn3Fdx7H00FL+m/Jf3rjkDW2Fhz9c8DdY9m/4/d/Q+2owSAsJIUQ75d0JLvvPWd1lRlUrF5N7hyjuE2egKolemgcOh1wd1g61yX/R2bNnY7FYmDx5MhaLpXoi0ZSUlAYT6KJtM376ab1nihXAAZS9/TarV6+moKAAd3d39Ho9DoeD4uJimSRMCCGEEE1yNeiZc8swooK9OJpfyu0fJJNfKnMLiPbjb0P+hl7RsyxtGaszVtesOP8+8AyG3FRY+67zAhRCiHaoqhI91CQn5kUT3EyVCyqU5TkzEtFKnJZET0pKIi4uDoC4uDgWLlxYvS4xMZGUlBQAli5dSnx8PLNnz2bevHksWLDAKfGKM6McPAiNJMOLd+4kIyODnJwcwsPDqyvPCwoKcHOTGbCFEEII0TRfDyMf3TmCYG9Xdh8rIO6TDZRXOJwdlhAtItIUyQ29bwAgYV0CNkflSSJXb4itnBfqjwQoOOqkCIUQov05XJlE72ySvIRogsEFjJ7asrR0aZec1s4lJiaGmJgYEhMT66xLTU2tXo6OjpbEeTugduumXfrUQCI9taKC3NxcPDw88PPzo1+/flRUVODj49PhJhYVQgghxOnrbHLnwzuGM/Xdv/jLkkP811t4deoguQRbtAv3Db6PRZZFWPIsfLXrK27pe4u2YuD1kPweHN4ASf+C695xbqBCCNFOHMnTkuhh0iJONIe7H9iKJIneTrXJdi6i/XHcfjuKqnJyCl0FFFXlty5dyM7OJiQkhKNHj9K5c2fOO+88+vbti16vd0bIQgghhDhH9Qvz5e2bh6LXKXy78TAvL97t7JCEaBE+Lj48HP0wAG9vepuckhxthU4Hl7+kLW/+AtLXOylCIYRoX07siS5Ek2Ry0XZNkuji7IiKYuODD1b3RXcAFYCqKMwfP54MDw8KCgooLS0lKyuLw4cPExAQgL+/v1PDFkIIIcS56aKeQcyaOACAt5al8sPmDCdHJETLuLbHtfQN6EuhrZA3Nr5Rs6LLUBh8k7b885PapGZCCCHOSFVPdEmii2ZxN2m3JVZnRiFaiSTRxVmTNm4cW6+6SlsG3vHy4omrriLryitxdXXl+PHj1a18jh49ytGj0s9RCCGEEKdv6rBw7r0oEoD4hVvYc6zAyREJceb0Oj0zR8wE4Nu937I9e3vNynH/ABdvyEiBzV86KUIhhGgfVFU9oSe6JNFFM1Qn0aUSvT2SJLo4q0orW7P8rii85OdHmqsr3t7eBAYGkpuby969eykrKwPg8OHDlJeXOzNcIYQQQpzjnri0J6N6BFBis3PvpxvIL7U5OyQhztjg4MFcZb4KFZVZ62bhUCurzr07wdh4bTnpn1Ca57QYhRDiXJdbVE5ZhQNFgU6+rs4OR5wLqtu5WJ0ahmgdkkQXZ5Vaop3FLVMUjEYjRqMRu92On58f5eXl5Obm1qpAl37oQgghhDgTBr2ON64fQpivG5bsIp6YvxmHo/6JzoU4lzw69FHcDe5sztrMIsuimhUj4iAgCooy4Y/ZzgtQCCHOcVX90AO9XHE1SG5CNIP0RG/XJIkuzhrPjAy67NgBwFCHgx6qiqenJ3a7HUVRcHNzo7i4GJvNhsPhwMXFRZLoQgghhDhjAV6uvHPzUFz0OhbvOMa7K1KdHZIQZyzYI5i4gXEAvLrhVYpsRdoKgwtc9qK2vPZdyNrjpAiFEOLclpEn/dDFKapKopdanRqGaB2SRBdnhfLxx4x74AHC0tIAGAr8vH8/Yw8cQK1MpiuKgqIo5OXlUV5eTo8ePZwbtBBCCCHajUHhJv41oR8AL/+2mz/3Zjs5IiHO3C19b6Grd1eyS7JJ3JxYsyIqBnpeBo4K+PUpUOXqCyGEOFUZ1f3Q3ZwciThnuJm0W6lEb5ckiS5a39696OPiUFQVpfIhXeXPDUuXorNYsNvthISEAHDkyBEMBgPu7nK2VwghhBAt5/rh4Uwd1gWHCg99tbF6sjAhzlUuehfiR2g90D/b+RkZhRk1K8f/B/QukLoULMucFKE41yQlJTF06FAsFouzQxHC6aqS6GG+kpsQzSTtXNo1SaKL1vfBB6AodR5WABUYsG5ddeI8KCioujJdCCGEEKIlKYrCcxP6M6CzL7lF5dz32QZKbXZnhyXEGRndeTQjQkZgc9h4Z/M7NSsCImH43dry0uekGl00ymq1EhkZSWJiIikpKc4OR4g2oaonurRzEc0mSfR2zeDsAEQHcOBAgx/aFcDt6FGOBAQQGhpKeHg4vXr1kiS6EGfA4XBgMBgoLS3FbpfkUENsNpvTXycXFxd0OjmfLcTZ5GbU8/ZN0Vz95p9sSc/j6e+28dLkgSj1nPAX4lygKAoPRT/EzT/fzA+pP3BHvzswm8zaygsfgw0fQ8ZG2Pkj9L3GucGKNstkMrFhwwZMJpP8PhSiUtUVa5JEF81WnUS3OjUM0TokiS5aX0REvZXooFWi77XZqKiowGw2M3nyZDIzM8nPz0dVVfkAJ8QpKi8vZ//+/YSEhJCWlib/DzVCVVWnv046nY7u3bvj4uLilP23tqSkJOLj41mwYAFms9nZ4QhRLdzfgzdviObWD9aycEM6/cJ8uGNUd2eHJcRpGxQ0iIvDL2ZZ2jLe3PQmr459VVvhFQQjH4AVs+H3F6D3laDTOzdY0WaZTCZnhyBEm1LdzkV6oovmcjdptyXHtWJS+T7erkgSXbS+O++E2bNRgRN/fVTd/zk0FC8vL6699lq6dOlCTk4OFRUVFBcXS0W6EKdAVVWOHDmCXq+nS5cueHt7S5VzIxwOB4WFhXh5eTnldXI4HGRkZHDkyBG6du3ark54WK1Whg4dSnR0tFwSLtqsC6MC+b8r+vDCop28sGgnvTp5c0GPQGeHJcRp+9uQv7E8bTlLDi5he/Z2+gVqE+lywYOQPBeyd8OWeTD4RqfGKYRoW0rK7eSV2AjxlUTxicorHGQVlgFSiS5OQVUlur0MbCXg4uHceESLkiS6aH1RUdjnzEF/zz1adTlQgdaQ/73zz6c4LIzzoqMxGo0oioKfnx8VFRXtKqEkxNlQdfIpNDQUADc3N0miN8LhcFBeXu7U1ykoKIiMjAwqKiowGo1OiaE1yCXh4lxx14Xd2Z6Rz7cbD/PAFyn88OCFhPvLlx1xboryi+Iq81X8aPmRNza+QWJsorbCzRcufBSWPAvLZkH/SWBwdW6w4pxXVlZGWVlZ9f38/HxAa5dns9mcFdZZV3Ws5/Ixx326gdWpucy9JZoLewQ06znt4bibkn68GFUFF4MOHxel1nu7PR/3yTriMcMZHLfiikFnQHFUYCvIAp+wVoiu9XT0f++mSBJdnBXqrbeytLyci++/Hz3wnl7PoYkTOWg0EhYcTHR0NAUFBQB069bNucEKcY6q6uttNBo73B+9c1VVGxe73d6ukuggl4SLc4OiKMyaOIDUrEK2pOdxzyfr+eb+C/BwkY/I4tx0/+D7+eXAL6zOWE3y0WSGhwzXVoyYDmvegbxDWo/086Y7N1BxVsyZM4cNGzY0uD4yMpIZM2ac1rZnzZrFv/71rzqPL168GA+PjncycsmSJc4O4bQU2mDlXj0qCo98sZ74QXY8T+Ej6bl63M2xLw/AgK/Bzi+//FJrXXs+7oZ0xGOG0zvu8ToP3Bz5/LnkB/Ldu7ZCVK2vo/17FxcXN2ucfEMQZ02hhwdVHRif8/bmEhcX3N3cGDlyJN7e3hQXF1NRUYHBIG9LIc6EVP6eO+TfSgjnczPqSbxlKFf/bxW7jhbw5IItvHnjEPn/U5yTunh3YVLUJObtnsfrKa/z2eWfae9lozuMeRIWPQYrXoIhN4GLtE1s76ZPb72TJTNnzuSxxx6rvp+fn094eDiXXnopPj4+rbbftsZms7FkyRJiY2PPyYKIHzYfQV2/FYA8m8KKks68cU3Tk22f68fdHN9tyoAd24gKC+CKK4YBHeO4T9YRjxnO7LgNhzpBTj6jhw1A7TaqlSJsHR3137vqaqqmSLZSnDX2Y8cAKAI8AwNRVRU3Nzeio6MpKyujtLSUwsJCqV4UogNJSkoiISGBpKQkZsyYQVxcXLMmoExKSsLf35/o6OgzGlM17qWXXsJsNpOYmHjKx9CUOXPmtOqX2PZALgmXSyedfdyBHgbevH4gt3y4nkVbj9BrqSf3XdR6k+G2leM+2+S4z85x39n3Tr7f9z1bsraw9MBSLupykbZiwA0YVr2BYj2AffVbOEY92qpxdPR/7/bO1dUVV9e6bYGMRmOHSrxUOVeP+8/UXADG9griz73Z/Lr9GD9uzWTS0C7Nev65etzNcaygHIDOfh51jrE9H3dDOuIxw2ked2VfdIOtAM7R16yj/Xs391gliS7Omvz9+wHIBgICAjCZTERERGAwGHB1daW0tJT8/HxJogvRgcTExGC1WquT6c2VmJiI2WyuTpAnJSVhsVhqJatPHtNYDF9//XW96+rb7qmwWq3Ex8cTExPTrJMDHZVcEl6jo106WaWtHPfEbgrzLHpeS9pLUfpu+vqprbq/tnLcZ5scd+sbYRjBCvsKXvzzRQq8C9Ap2twfXXwvY6j1XRwrX2NJThdshtavRu9o/97NvSS8LUpKSmLBggUAxMXFERcXx+TJk50clThVay05hJncm5zjw+FQ+WNPFgD3XhTJsG5+vLx4D//4YTsjuvt3+DlCMvJKAQiVSUXFqaqaXLTkuHPjEC1OkujirClYtQoAb+Cp/HxS7XYGDBxIQUEB4eHhZGZmVvdFF0KIxlR9watSlTBvbExjTCYTVqu1zuP1bfdUmEwmjh+XD09NkUvCO+6lk23tuK8AdD/s4MvkdBakufHTNRcQ5N3yEzC2teM+W+S4z95xX1h+IVd/fzXHbMdQ+ipc0f0KbYV6Gep7KzBm7mC89y4cFz/TajF01H/v5l4S3hbFxMQQExPTKlfmibNjc5qVaXPW0NXfg+VPjEWna7gty5bDeeQWlePtamBoNz+GdfNj2e4sNhw8zuPzN/Pl9PPRN/L89i7DWgJAZ5ObkyMR5xxJordbkkQXZ4Xy8cc8uFXrteYHXL1rF8quXVgCA8m77rrqyfVKS0ux2Wwd6oO2EKIuq9VKbm4uCxcuZN68eZjNZubOnVvrShWLxVIrwW21WrFYLPj7+1ePO3GMxWIhMTERi8XC8OHDeeKJJ5ody8nbtVqt1Yl3k8lUZ9snTtJVNUY0TC4Jr9ERjxna1nH/45r+bEzLY9fRAuK/3c7Hd4xoNAlxJtrScZ9NctytL8AYwJ0D7uS/Kf/l3a3vcnnk5bjqK3/PjnsWvrwe/bo56M+/D3xCWzWWjvbv3ZGOVbS+glIby3ZncXn/EIx6XZPjf9icAcCh3GLW7M/hgsjABscu350JwKgegdXbfm3qYC7/7wrWHchlzgoL942NbIGjcK7tGXkY9Tp6dvI+pedVJdHDpBJdnKrqJLrVqWGIltf0b2EhztTevejj4qrfbAqgV1UUVSVy1ixc09IoKyurvmRfqtGFaBmqCkVFzvlRz6ADwuzZs/Hz8yMuLo6YmBiWLl1KSkoK8fHxACxcuBA/P7/q9i9JSUmkpKSwfv16EhMTq5PvJ44BiI+PJyEhgZkzZzJr1iwWLlzYaBz1bddisTB06FDi4+OZMmUKfn5+1S1b6tt2XFwcfn5+WCyW039BzlFJSUnExcUB2uvQ1OstRFvhZtTzvxuG4GrQsXJvNh+s2u/skIQ4LTf2vpEg9yAOFx5mzpY5NSt6XgZdRkBFCfwyo+ENCCGc7t+LdvLQlxt5a9m+JseqqsovW49U3/8m5XCj45fv1lq5jO0VVP1Y1wAP/nF1PwBeXbKbbYfzTifsNiMzv5SJb6/mqv/9yaY0a7Ofp6oqh49LEl2cJneTdiuV6O2OJNFF6/vgA6hndm8FQFEI+P57CgsL8fbWzgxLEl2IllFcDF5ezvk5k3agM2bMwGw2M2XKFKKjozGZTMTFxbF+/XoAJk+ezNSpU6vHx8TEEB0dTUxMDAkJCZjN5jpjAObOnQtQPbZqew2pb7tms5lhw4Yxf/58EhISWLBgASaTqc62k5OTATr05dBVl4OrqsqSJUukp6o4p0R18uaZq/oCkPDrrnM+iSA6Jg+jBzPPmwnAB1s/YHfubm2FosBVr4LOADt/gB3fOzFKIURDbHYHv2w7CsDCDek4HI1XqWxOzyMjr5Sqi6d+2XqE4vKKesfmFpWzOd0KwEUnJNEBpgzrwqV9O2Gzqzw6bxM5hWX1bKFl/Lg5g3/+sJ2ScnurbP+HzRmUVTgor3AQ9+l6MvNLm/W8/NIKiipjCvOVJLo4RdLOpd2SJLpofQcOoDoc9a9TVVwzMigqKsLPz4+wsDCCgoLqHyuE6DBMJhP+/v7V981mc62e5c1pj3LymKSkJOLj45k9ezZWq7XeHujNja1qotCqxHBLbVsI0XbcdF5XYiuTCA9/tbHBRIQQbVlst1hiusZQoVbw7OpnqXBUvo9DBsCoR7TlRU/IF30h2qB1+3PJK7EBkH68hOQDuY2O/2WbVoV+xYBQuvp7UFRuZ/H2Y/WOXbk3C1WF3iHehJ6UJFYUhVkTBxDo5crezEJG/Gcpt7y/lvnJaViLy1vgyDQFpTbiv97CR6sP8O+fd7TYdk/0/SatvY2LQcex/DLiPttAWUXTCfuqVi7+ni64u+hbJTbRjkkSvd2Snuii1dnDwxteqSiUhYVRXFyMu7s7np6eZy8wIdo5Dw8oLHTevtuShQsXEh8fT2pqKgA5OTlnNOHniQn++rYtSXQhzn2KopAwaSBb0leQmlXE8z/tYNbEgc4OS4hT9vfz/87ao2vZkbODT3d8yh3979BWjHlSq0TP3gO/PQ3XvuXcQIUQtfxaWYWuKFqrxG83HuY8c0C9Y7VWLtr4KwaE0iPYi9eT9vJ1SjrXDulcZ3xNK5fgercX4OXKnFuH8uz329h2OJ+Ve7NZuTebv3+ncGGPQC7v1wnDGbRvBC3BXVxZ7f3ZmkNc3CuYcX06ndlGT5CaVcjWw3nodQpf3nM+d3y4jo2HrDzz3TYSJg1Eqedq+SpH8qpaucikouI0VCXRS61ODUO0PKlEF61u96hRoKqc/DdWBVBVjl93HaqqUnwm/R+EEHUoCnh6Ouenkc+kzZab23C1zclJan9//zqPnXjfYrHUmmz05P7cDSW9m9puc7YthDh3+Xu68OrUwSgKfLkurVavWSHOFYHugcwYrvU+f2vTWxzIO6CtMLrBNf8DFNj0GaT+7rQYhRC1ORwqi3doSfHpo80ALNpyhFJb/VXU2zPyOZRbjJtRx9heQUwc0gWAVfuyOZpXu4WJw6GyYk/dfugni+7qx09/G82yJ8by5Phe9A7xxmZXWbY7ixnfbOPr/aefTlJVlS/WHgKgW4BWfTNj4RayClqudcz3G7We8GOiAhnazY//3RiNToH569P55K+DjT73sFV7zU6u0heiWaQSvd2SJLpodclWKw+71/zxcSgKDp0OFIWDzzyDw6x9KCh0VsmsEMJpkpKSmDVrFqBN/GmxWJgzZw4pKSksWLCAlJSU6rFV65KSkqp/qhLWU6ZMYf78+cTGxmK1WuuMqWq7MnToUJKSkoiJiWHDhg1s3ry53u1VaWy7c+Zok7TVt+3169fXil0Ice4a1SOQuDGRADz1zdbqS7yFOJdMiJzAyNCRlNnL+Odf/8ShVrZa7Ho+jJiuLf/4MJTJ53Eh2oLN6VaO5Zfh5Wrg0diedDa5U1BWQdLO+tuzVLVyubhXMB4uBroGeDA8wg+HCt9vqj3B6NbDeeQUlePtamBoN78mY+ke6MkDF/fg10fGkPTYRTxwsfY3cU2mctpJ783peew4ko+LQceCuJH0DvEmp6icGQs3o6pnWOKOlqT/rrKVS1Ul/kU9g5h5eR8AnvtpB6tTsxt8ftXf+s4yqag4HW4m7bbE6swoRCuQdi6i1aWmpvKbqqIAdiD7oosoDAri8GWX4TloEO467VxOUVGRU+MUQpx9VcnsE02fPp3p06fXemzy5Mm1PlBXtU45cTsntmeJiYmpM+bk/TgcDvLz8/Hx8akz9lS2azab62xbCNG+PBbbk9Wp2WxJzyPu0w18Nf18PF3lY7Q4dyiKwj8u+AfXfX8dG45tYOGehUztVTkB97hnYffPYD0Ev78Al7/o3GCFEPy6XatCH9srCDejnuuGdObNZfv4JuUwVw0MqzVWVVV+rmzlcvmA0OrHJ0Z3IfnAcb5OSWf6GHN1+5KqVi6jegRi1J9aXWWPYC+eHN+b1fuy2ZiWxxfr0njisj6nfHxfrNUqwa8aEEqwjxuvXz+Ya95cxbLdWXy25iC3jIw45W2eaGOalUO5xXi46IntW9Mi5u7R3dlxJJ9vNx7mgc9T+OHBCwn3r9uHsiqJLu1cxGmpqkQvywd7BejlM2N74bRKdKvVSnx8PPHx8cTGxmKxWOodd2LVX31VgqLtS0tLI8ymTYiSYTCw9/nn2XnrrZR01s4I6yqT6FKJLoRor8yVV9wIIc5NLgYd/7thCH4eRrYezuPezzZQXtHApOlCtFGdvTrzcPTDALy64VWOFmlJN1y94OrXteW178Khtc4JUAgBaEnxqglBL+sfAsB10dp35z/2ZNWp/t59rID92UW4GHRc0rumx/kVA0JxMejYc6yQ7Rn51Y8v250JNN7KpSm3j+wGwBfJaQ22mGlIfqmNHzdrlfM3ntcVgN4hPsRf1huAFxbtZF9mQZ3nqarK6n3ZvPDTDvZlNp47+K6ylculfTvh4VKTwKyaNHVAZ1+OF9u455P1FJXVnTi8JokulejiNLj51iyX5jkvDtHinJZEHzduHDNnziQhIaE6kV6fuLi4Wj/x8fFnOVJxpjIzM+ni0L5oZrq7YzAYsNvtGI1GKioqUFWV4OBgunbt2iKXbgkhRFuRkpJCTEyMs8MQQrSAbgGefHD7cNyNelbuzSb+6y04HPK5RZxbru91PYOCBlFkK+L5Nc/XfPbuEQODbgRU+OFBsJU2uh0hRMPyS23c+sE6nvtxx2l9v92bWVidFK+a+DMyyItB4SbsDpUfN2fUGl9VhT4mKgivE66S8nU3Vldhf5OiJZVzi8rZnG4F4KIzSKJf2jcYk4tKbpGNHzZlNP2EE3y38TAlNjs9O3nVaidzxwURjI4KpKzCwcNfbao+WV1SbufLdYe47PWV3PjeWt77cz9xn65vMHlvszv4aYuWpJ9Qz6SqbkY9c24dSqCXK7uOFvDQlxuxn/T3PKOyJ7ok0cVp0RvAtTKRLn3R2xWnJNGTkpLw9/evnogtJiYGi8VSb//YqkvnT/wR5xar1Up45YeHfF9fFEVBURRcXV0pLy+nrKyM8PBw/Pz8Gp0hWwghziUpKSnMmzePBQsWODsUIUQLGdLVj7dvjkavU/h242Fe/HWXs0MS4pTodXr+dcG/MOqMrEhfwc/7f65ZOf7f4BkM2Xtg5cvOC1KIc9wrv+1mxZ4sPli1n7eXn3r+4tdtWlL8wh6BtZLikyqr0b/ZmH7SeC1hfMWAkDrbqnrOD5sPY7M7WLk3C1WF3iHeZzRppkGvY0yIluT+YNX+Zp8sOHFC0RtHdK31/V+nU3h5yiD8PIxsz8jnuZ+28+Ivuxj54lJmfrOV3ccK8HDR4+NmIDWriLeW7at3H3/uzSa3qJwATxdG9wisd0yorztzbh2Kq0HH0l2ZPP/Tjup1dofK0XwtiS490cVpc5ckenvklCR6SkpKnUvbzWZzgy1dxLktPz+frpXLZSEh1dXnVUl0u91OWVnLzcIthBBtQXR0NAkJCdUnjIUQ7cPFvYJJmDQQgDkrLLy3Uj6/inNLpCmS6QO1uUcS1iVwvLTyC76HP1zxkrb852twdJuTIhTi3LUl3cqnaw5W33/pt938VtnfvLmqxl/Wr3ZS/KqBYRh0CtsO57PnmNbuZF9mAXuOFWLUK4zr06nOtkZHBRHo5UJ2YTkr92ZV90OvqnA/EyM7qXi46Nl1tIDVqTnNek7KISu7jhbgZtRxXXSXOus7+bgxa6L2N/azNYd4949UrMU2uvi58/SVffhr5rjqv8HvLE9l19H8Otv4rnIi1asHhWFopOd7dFc/Xps2GICPVh/gw1X7AcgsKMXuUDHoFAK9XJt1XELUUdUXXZLo7YpTutvn5OTUSSqYTCZyc3PrjLVYLMTGxpKUlITZbCYxMbHBS+PLyspqJWPz87VfqDabDVtlT+6WVrXd1tp+exCcl8ellctR+flkpqaCry/l5eU4HA4qKirIy8vDz6/pmcHbM3kvNY+8Tg2z2WyoqlpdCaKqKg6H9OxtSFt4nRwOB6qqYrPZ0Ov1tdbJe1yItmvy0C5kFZSR8OsuXli0kyBvVyYMrnvJuBBt1V397+K3A7+xz7qPhOQEXhxdOZlo3wnQ+yrY9ZPW1uWuJJkQTYhmsjtU/v7tNhwqTBgchsndyMd/HeTReZv4+r4L6BPq0+Q20nKL2Z6Rj06BcX1qJ7r9PV24uHcwS3Yc45uUwzx1eW9+qWzlMqpHIL7uxjrbM+p1XDOoMx+s2s/CDemstWg5lzPph17FwwATh4Tx2do0PvhzP6MaqPo+UVUV+lUDw+qNF7Q+8LeN7MbHfx1kpDmAO0ZFMK5PJ/Q6pXr9pX07sXjHMeK/3so3911Qva6orKK6n/yEwWH1bv9EVwwI5anLe/PiL7t4/qcdhPt54OepxRXi61a9XSFOmSTR2yWnfCKyWq31Pu7v71/nsejoaGbOnInJZCIuLo7Y2FiOHz9eb2XfrFmz+Ne//lXn8cWLF+PhUXfG5Za0ZMmSVt3+uarr0qUsTkurvuSh+969dL/9dn645hpWnH8+DocDHx8f9u3bh5eXl1NjbSvkvdQ88jrVZTAYCAkJoaioCBcXFwoK6k7II+py5utUXl5OSUkJK1asoKKi9qRGxcXFTopKCNEc915kJrOglA9XHeCJBZvx93RhdNSZJyWEOBuMeiPPXfAcN/9yM4ssi7iy+5WM7jIaFAWueBn2r4SMjbD2Hbjgb84OV4hzwudrD7L1cB7ebgb+fmUf/D1c2JdVyKp9Odz98Xp+eHAUAU1UNldVoQ+P8K937MQhnVmy4xjfbzrMk+N78XNl65cr+oc2uM2J0VoSvap3ureroVYv8jNx28iufLY2jaW7MrFkFWIOavg7fV6xjZ+2aP3TqyYUbcg/r+nH4+N74eNWN9GuKArPTejPX6k5bE6z8tHqA9x1YXcAluw4RonNTrcADwaHm5p1DHFjzBzMKeLLdWn87cuN3Fo5aar0QxdnpCqJXmp1ahiiZTkliR4ZGUlycnKdx+tLjCckJFQvJyYmMmfOHNavX19vNfrMmTN57LHHqu/n5+cTHh7OpZdeio9P02d9T4fNZmPJkiXExsZiNNZ/JrXD2rsXw8SJnHjuVqeqqMCEH38keOJE3AcMoH///s6KsE2R91LzyOvUsNLSUtLS0vD09MRms+Ht7S3zDDRCVVUKCgqc+jqVlpbi7u7OmDFjcHNzq7Wu6moqIUTbpCgKz1zZl6yCMn7acoT7P0vhuwdHEdlIAkGItmRA0ABu6nMTn+74lOfWPMd3E77D0+gJPqFw6fPw40Pw+7+h95Xgb256g0J0YJkFZbz0624AZozvRbC39rnurRujufatVRzIKea+z1L47O7zcDE03GKkqor6sv51+5sDXNInGB83A0fySvkq+RA7j+Sj1ynVE4jWp1+YD706ebO7sgXMqB6BGBtpc3IqIgI8Gdc7mKW7Mvlo9QGem9Dwd/tvNqZTVuGgd4g3Q5pIcCuKUm8CvUqIrxszr+jD/327lZd/282lfTsR7u9R3cplwuDOzf58X5WUTz9ewsq92SSu0Nq0ST90cUakEr1dckoS3Ww2M2/evFqPWSyWBtu0nMhkMjFs2LB617m6uuLqWvdsrdFobPVk29nYxznn00+1apaTKIAKhP78M8f798dgMEii7wTyXmoeeZ3qstvt1RP3gvaBUKdzytQX54SqFi7OfJ10Oh2KotT7fpb3txBtn06n8MrUQRzLLyX5wHHu+Xg93z4wqsFL1IVoax4c/CC/H/qdw4WHeSPlDWaeN1NbEX0rbF0AB1bCjw/DrT/U+7leCKGZ9ctuCsoqGNjFlxvP61b9uMnDhfduG8Z1b61m3YFc/vHDNv5z3YB6v/9mFZSRfFBrt3Jpv/qT6K4GPVcPCuPztYd44aedAFwQGYCfp0uDsSmKwsTozsz6RZsMuyVauZzorgu7s3RXJgvWp/N4bC98Per+DTxxQtGbzuvaIt//rx8eznebDrNufy5//24br04dxMq92QBc24xWLicy6nW8dVM0k99ZzZ5jhQCEmdyaeJYQjXAzabeSRG9XnJI1mDx5MhaLpXoi0ZSUlFoJ9NmzZ2OxWIiPj6/1vKSkpOrWLuIccOAANDJLt9vRo6iqKpOKCiGEEOKc5WrQ8/ZNQwnzdcOSXcQjX23E7mj4848QbYmH0YNnRz4LwJe7vmRT5iZthaLANW+AwR32r4CNnzovSCHauF1WhZ+2HkWnwL+vHVCnj3aPYG/euGEIigJfrkvjg1UH6t1O0s5jqCoM7OLbaBX0xGhtDo4Smx1ouGr9RNcO6Yxep6BT4KIWTqKPjAygd4g3JTY7XyUfqnfM+oPH2ZtZiLtRz4QhLTOHiE6nMGviAFwMOlbsyeJvX2h/fwd28W20rUxDfNyMfHD78OrJRCMCPFskTtFBSSV6u+S0EsWlS5cSHx/P7NmzmTdvHgsWLKhel5iYSEpKCtOmTSM2Npa4uLjqhPqMGTOcFbI4VRERDVesKAq6yEj69OlT79UDQgghhBDniiBvV+bcOgxXg45lu7N4ZfFuZ4ckRLNdEHYB10Reg4rKP1b/g3J7ubbC3wwX/5+2/NvTUHDUeUEK0UaV2ews3K+lVW4dGcGALr71jru4dzAzL+8NwPM/7eC2D9ax62jt1n1V/dDHN1CFXiW6qx/dArQ533QKXNq36SR6Jx83Prx9OO/dNoxQ35ZtU6IoCndW9iT/ePUBKuyOWuvzSmx8uGo/AFcPCm20Tcupigzy4uFxUQD8ZckBOKOJvrv4ebDg3pE8fWUfrh50atXsQtRSnUS3OjUM0bKcNtV6dHR0rcT5iVJTU6uXZfLAc9idd8Ls2ahQqy+6CqCqFEyZQqdWnvBVCNG2JSUlkZCQQFJSEtOnTwcgNzeXlJQUEhISmDx5MklJSfj7+xMdHd0i+zKbzSQmJrZE+HXMmTOn+jiEEB1L/86+zJ48kIe/2sTby1PpE+ojX8DFOWPG8Bn8efhPLHkW5m6dywODH9BWnH8/bP9Gm2T05ydg2mfODVSINmbOygNklSoEe7vy2KU9Gx17z2gz+SUVvPtHKn/syWLF3iwmR3fh8Ut74eGqZ9U+rRXJ+H4N9zeHyvYsQ7rwWtIeRnT3J8i7eUVpY3q23uTX1wwKY/avu8jIK+WVJXsw6BR2Hilg55F8DltLqsed2OqmpUwfY+bHzRnsOlqATtES9Weie6And4+WeSDEGZJK9HZJmuWK1hMVBe+/T9V5aBVw6HSg03Hg6acpCj2zP25CiFaydy/MnAk33KDd7t3baruKiYkhLi4O0K5CSkxMZMGCBSQmJla37kpMTKwzj8bp7stsbvgDcVJSEnPmzDnt7VutVuLj46tblQkhOp4JgzsTd5H2e+bJhZvZdjjPyREJ0Ty+rr7V/dDf2/oee49X/u3XG+CaN0FngJ0/wo7vnRilEG3L/uwi3l2pVVj/3+W9mqywVhSFJ8b3Iumxi7hiQAiqCgs2pDP25WU89OVGbHaVyCBPegR7N7nvuIvMPHFpT2ZNHNgix3Km3Ix6bqpMkL+zPJX//b6PpJ3HqhPonU3u3DO6O4MaqNQ/E0a9jpcmD8Lb1cA1g8KqJ3UVwqncTdqtJNHbFadVoosO4vbbuefxx/kgN5cS4NCECdhuuYWul1xCV69T71MmhGhlH34Id9+ttWJSVe129mx4/324/fazFsaJ82Q0dNXS6TCZTFit1nrXJSYmNppkb862jx+XD0lCdHQzxvdm15EC/tiTRdynG/jhwVEEeEnrOtH2je82nkXhi1ietpxX1r/Cu7HvaitC+sOoR2Dly1pbl56XgUHe00LMS06jvMJBb18HV/RvvHr8RBGBnrx901BSDh3nP4t2sv7gcZbvzgKabuVSxc2o58FLok4r7tZy+wUR/Lkvm/IKB31CvekT6qP9hPjUO9loSxrQxZf1z8Tgopc6UdFGSCV6uyS/YUSryzRqfzCzgM3TplHetStGoxG9Xu/cwIRo71QVioqa/7N5s5ZAdzjAbq99e9ddsGVL87fVyKTCzbFw4cJa90+s7rZarVgsFmbPns3QoUOZMmVKrcR41cTUU6ZMYfbs2ae036ptn7i9quWq28a231CCXgjRceh1Cm/cMITugZ4ctpZw/+cpdfrDCtEWKYrCjGEzMCgGVmWsYt2RdTUrRz8O3qGQdwjWf+i8IIVoQ+Iv68VLk/ozubsDpaG5wBoR3dWPBfeOJPGWoZgDPfFyNTBpaJdWiPTs8PN04ev7LuDHv13I7MmDuGNUd843B7R6Ar2Kq0F/Wv8OQrSKqiR6qfWMvxuLtkOS6KLVGXXa20wFvLy86NKlCwaDXAQhRKsrLgYvr+b/DB6sJczr43DAoEHN31Zx8SmHGxcXR1xcHFOmTKmeD2PhwoX4+fmRkJAAwOzZs/Hz8yMuLo6YmBiWLl1KSkpK9eTTAPHx8SQkJDBz5kxmzZpVJyFfn6SkJFJSUli/fj2JiYnk5uZisVgYOnRodcLcz8+vumVLfduPi4vDz89P2rkIIfB1NzL31qF4uRpYuz+X15Nary2WEC0p3CecST0nAfDflP+iVn3xd/GAiyr/1q54CcoKnBShEG2HoihcOziMoDOYp1NRFMb3C2Hp4xex8dlYIoPkam0h2oWqJLqjAsoLnRuLaDGSRBetzlCZRK8APD096dSpEy4uLs4NSgjR5lT1RJ87dy6RkZEATJ48malTp1aPmTFjBmazmSlTphAdHY3JZCIuLo7169dXj5k7dy6gTWAdExNDcnJyk/uOiYmpHl81+ajZbGbYsGHMnz+fhIQEFixYgMlkanD7rTVZqRDi3NQj2JsXJw0A4K3l+1i5N8vJEQnRPPcOuhd3gztbsrfwe9rvNSuG3Az+kVCcDX+95bwAhWiHFEXBKK1IhGg/jO5gqOzPLy1d2g35LS1anbGybYsKBAYGOjcYIToSDw8oLGz+z+OPQ0NtlvR6bX1zt+Xhcdphm0wmJk+eXOv+yev9/f2r75vN5lptVJKSkoiPj2f27NlYrdYzarFiMpmqJyStiqklty+EaN+uGhjGjed1RVXh0XmbyCwodXZIQjQp0D2Qm/vcDMAbKW9gd9i1FXojjHtGW179PyiUE0NCCCFEg9xM2q0k0dsN6akhWl145WWgnQDH22/Do49CVNuaBEWIdklRwNOz+ePj4uC11+pfp6pw772ntr0zcLoTfC5cuJD4+HhSU1MByMnJOeMk94kJ+9bYvhCifXv2qr6kHDzOrqMFPPLVJj696zxnhyREk+7ofwfz98zHkmfhR8uPXNvjWm1FnwkQOhiObIKVr8DlLzoxSiGEEKINc/eDwqOSRG9HpBJdtK4PP2RWWhoA3oDvnDnQuzd89JFTwxJC1CMqCt5/H3Q6rfL8xNv334cePZwSVn1J6tzc3HrHWiyW6sp1i8VSpx96Ywlvf3//OutPvt/U9oUQ4mRuRj1v3hiNu1HP6tQc3l62z9khCdEkbxdv7u5/NwBvbXqLMnuZtkKng5h/asvr34fjB50ToBBCCNHWVfVFL7E6NQzRciSJLlrP3r1w993VbzIFUOx2bYLCu+6CffIlUog25/bbYfduePJJmDpVu929W3u8FSQlJTFr1ixAmxD05Ek5k5KSqn8WLlzInDlzSElJYcGCBaSkpFSPs1gszJkzp7rlytChQ0lKSiImJob169eTkpJSZ1snmzJlCvPnzyc2Nhar1Vpr/Jw5cwAa3b4QQjSkR7AXz1/bH4DXkvaQfEAqkkTbd33v6+nk0YmjRUeZt2tezYrIi6H7RWAvh2X/cV6AQgghRFtWnURvoc99xbmw6An46TH4/QVY8w5sngd7l8DhDVBR3jL7EQ2Sdi6i9XzwgdZOoj6KolW2VibPhBBtSI8eZ+3/zZiYGDZs2NDo+qrWKVWmT59e6/7kyZNRK9tGAY1u78RtORyOOvs6fvx4rfsn79tsNje6fSGEaMjkoV1YnZrNNymHeXTBFh7q6eyIhGicm8GN+wffzz9W/4O5W+cyMWoiXi5e2sqYf8DcS2DLPBj1EHTq59xghRBCiLbG3aTdtlQSfe27kDy34fWRl8At37bMvkS9pBJdtJ4DB7Q+yvVRVW29EEK0M6fbz10I0f49P6E/5iBPjuWX8dk+HSXldmeHJESjrom8hgifCKxlVj7e8XHNis5Doe8EQIWlzzktPiGEEKLNaulK9H1J2m2fa2D43dDvOu3KsJAB2uOpy6DgWMvsS9RLkuii9URENF6JHhFxNqMRQohWlZKSQkxMjLPDEEK0YZ6uBt66MRoXg46dVh0Xv7qSxD9SKSqrcHZoQtTLoDPwUPRDAHy8/WNySnJqVl7yLCh62PMrHPzLSREKIYQQbVRVJXqp9cy3VZwLhytbiF72Ilz5Ckz5CG77Ae79E8KGAKr2N1m0Gkmii9Zz552gqtRbi66qWl90IYRoB1JSUpg3bx4LFixwdihCiDauT6gP/7t+EAGuKjlF5cz6ZRcXJvzOW8v2UVBqc3Z4QtQR0zWG/gH9Kako4d3N79asCOwB0bdoy0n/aPgKVCGEEKIjaslKdMsyQIWgPuDbue76Xldqt7t/PvN9iQZJEl20nqgoeP/96iS6Cqh6Peh0Wj/0Hj2cGZ0QQrSY6OhoEhISMJlMzg5FCHEOuKRXEH8fbOfF6/oREeDB8WIbL/22mwsTlvHfpL0cL5KJoUTboSgKjw59FIAFexaw9/jempUXxYPRA9LWwravnRShEEII0QZVJ9GtZ76tfb9rtz3G1b++9xXarWU5lBed+f5EvSSJLlrX7bfz2YQJ7AFCgF233w67d8Pttzs3LiGEEEIIJ9LrYFJ0Z5Ieu4jXpg3CHORJXomN15L2MPLFpfzft1vZe6zA2WEKAcCI0BHEdI3BrtpJWJdQM6G3Txhc+Ji2vPgZ+eIuhBBCVHEzabdnWomuqpC6VFuOvKT+McF9wdQVKkq13uiiVUgSXbQah+ogryyP3AAfvgAygblBPpR1D3d2aEIIIYQQbYJBr+O6IV1Y8uhFvHHDEPqF+VBqc/DF2kPEvraCWz9Yx/LdmTgc0ipDONfjwx7HRefC2qNrWXpoac2KC/4Gpm5QkAErX3VegEIIIURb0lKV6Jk7oeAIGNyg2wX1j1GUE1q6/HJm+xMNMjg7ANG+2Bw2DuUfYr91P+mF6RTYCthXtp8/DEAFzF/4OT2v70mAWwARvhGYfc0EuAc4O2whhBBCCKfS6xSuGRTG1QNDWbc/lw9W7WfxjmOs2JPFij1ZRAZ5MjG6C+P7daJHsLezwxUdUBfvLtzR/w4StyTyUvJLXNj5QtwMbmB0g/H/hnk3w+r/wZCbwb+7s8MVQgghnKuleqJXVaF3GwVG94bH9boc1r6jTS7qsINOf2b7FXVIEl20CJvDxo6cHWzO3MzR4qOoqoqn0RNPoycqHmyrgNtug48/ziTzYCYlnUvYa92Lj4sPkaZIhgQPIcQzxNmHIYQQQgjhVIqicJ45gPPMARzKKebjvw4wLzmN1KwiXvptNy/9thtzkCfj+4Uwvl8IAzv7otMpzg5bdBB39r+T7/Z9R0ZRBh9t/4h7B92rreh9FZjHar1YFz8N13/uzDCFEEII56tKotuKoKIMDK6nt53UJvqhV+l2Abj5QnE2pCdD1/NPb3+iQZJEF2cssziTVYdXsfv4btwMbnT26oyL3qV6/b60LDzd4NVXYf4ChV1/7OK6uOtQVZX88nw2ZW7CYrVwftj5DAwciFFvdOLRCCGqlJSU4O7eyJluIYQQraprgAfPXNWXR2Ki+GnLEX7bfpRV+7KxZBXxzvJU3lmeSoiPG5HBnhj1Olz0OowG7dZFryPQ24V+Yb70D/Ml3N8dRZFkuzgzHkYPnhj2BE+ueJL3t77PhMgJhHqFapeRX5YA71wAu37SvvB3He3scIUQQgjncfUBFEDVWrp4d6q93uEARwUYXOp5ciVbCRxcrS1HNpFE1xsh6lLYugB2LZIkeiuQJLo4I7tzd/N72u9YS62Ee4fjWs+ZtZ2Wg1xxFfj7wxVXqKxbvJrr4q5DURR8XX3xcfEhuySbJQeWkF6QTmy3WDyMHk44GiFElRUrVnD55Zfx66+/MXq0fAkWQghn8nYzcsOIrtwwoisFpTaW7c7it+1HWb4rk6P5pRzNL21yGz5uBvqF+dIvzIdhEX7E9OmEQS/TI4lTNz5iPF/t/ooNxzbwyoZXePmil7UVwb1hxHTtUvJfnoK7lzs1TiGEEMKpdDpwN2ntXEqtdZPoC2/XJgG9a4n2N7Q+B1dpk4X6dIagXk3vs9cVWhJ99y9w6fP1j1FVWHgnHPoL7vwN/LqdwkF1bJJEF6dtd+5uFh9YTGlpKRUHK9jP/jpjCvMKSUvP5aXJ2v3Jk+DrGw6y/vf1ePl61Rprs9v4efPPFI8sZkLvCZJIF8KJnn327xQXl/Dss39n2bIVTokhKSkJi8XC9OnTnboNIYRoS7zdjFwzKIxrBoVRVmEnef9xcorKKK9wYLOr2OwOyisclNsdpOUWsz0jn91HC8gvreAvSw5/WXJ478/9dPX34P6xkUyM7oKLQZLpovkUReGpEU8x7adp/HbgN6b1msbwkOHayrFPwdb5kL0b3YYPgHCnxiqEEEI4lbuflkQ/uS/6oTWw43tteelzcMMX9T9/X2Url8hLtKu+mtIjBnRGyNkL2XshMKrumG1fw/ZvtOXfn4dJ7zXvWIQk0cXpSStII+lgEg4c7PxlJx++8GGDY7084IortOUrr9Tuz75vdoPjMx7LwOcBHy6LuAy9TIQgxFm3fPly/vjjT+6+G957byXLly9n7NixZz2OxMREzGaz07chhBBtlatBz4VRgU2OK69wsDezgO0Z+Ww7nMdPW45wKLeYp77ZyhtL93Lv2EimDgvHzSifu0Tz9PbvzeSoyczfM58X173IvKvmYdAZtIq7cc/Cjw+jW5GAS9R/nB2qEEII4TwNTS76xwk5sd2LIH09dBlW9/lVk4o21Q+9ipsPdB+ttVXb/TMEPlx7fWke/PZ/Nfe3LoCRD0DYkOZtv4OTshNxykorSlmVvooiWxFhXmGMmzqOy265DIABA2DlStixo+YndT94e2vP9faGfZba61esgP79tfWX3XIZE26awLbsbezI2eGkIxSiY/vnP59hyBA9iYkwZIief/3r2VbdX3x8PLNnzyYuLo4pU6bUWme1WrFYLFitVgAsFgvx8fFMmTKF2bPrnoyrGld1W982hBCio3Ex6OgX5svUYeE8N6E/f8ZfzNNX9iHY25WMvFKe/X47o2cv461l+/hxcwZLdx5jdWo2m9Ks7D1WQIa1BFVVnX0Yoo15cMiD+Lj4sOf4Hr7e83XNiiG3QOgglLJ8+hxZ6LwAhRBCCGerL4mevl5Ljit6rcIctGr0k+WlQ9YuUHTQ/aLm77NXZRXrrp/rrvv9BSg8BgE9oN9E7bHFz2gtXkSTpBJdnLKUYylY8i1E+EQA4OLqwp1P38nAkQN59+9vMu36Uj7/zEFDhaudOmk/AMuWwU036ygqcWPGOw8y7BLtzFtxUTGrM1bT2bsz/m7+rX9QQgigpgr9+++1Fm7//KedCRNarxp94cKFWK1WEhISAKoT40lJSaSkpGAymUhMTCQuLg6TyUR8fDwLFiwgJSWFcePGYTabmTx5MhaLhSlTpjBs2DByc3NZuHAh3377bb3bEEKIjs7DxcDdo83cfH43FqxP453lqWTklfLSb7sbfE6QtysX9gjUfqIC6eTjdhYjFm2Rn5sfDwx+gFnrZvHmpje50nwlXi5eoNPD5bPhg/F0y/mDiiOboOtwZ4crhBBCnH1uJu32xCT6H9p3XwZdr7VBeyMa9v8BluVgHlszLrWylUtYNHicQl6s1+Xw8xOQthaKssGz8qrFwymwbq62fOUr4G/WJiA9sBL2JUFU7GkcYMcilejilOSX57M5ezN+bn4Y9cZa64aNG8bs71/Fr0svLrkEnnkGKirq347NBk8/DePGQUDXXsz+/tXqBDpAiEcI2SXZ7MzZ2ZqHI4Q4SVUV+tVXa/evvrp1q9Fzc3OZP39+dTJ9xowZAMTExBAdHU1MTAwJCQnVLVnmztX+6FetS05OBsBsNjNs2DDmz59PQkICCxYs4Nprr613G0IIITRuRj23jIxg+ZMXkzBpADF9gjmvuz8Du/jSI9iLziZ3TB5GDDqFrIIyvt14mMcXbOa8/ywl9tU/+OcP2/l6QzrrD+SSmV8q1eod0NReU4nwicBaZuWTHZ/UrOh6Po6BN5AadCn4dXdegEIIIYQzVVeiW7Xbwymwd7FWXT76cTB1hWF3auuWPl+7InzfKbZyqeLbBUIGAirs+VV7zGGHnx7VHhswVUvWm7rCeXHa+iXPamNEo6QSXZwSi9XC8dLjRJoi613v38mfZz78B9/N/Y7//PsrVBVeeKHuuH/+E16cBdMeuZ5r77kWnb72+RxFUfBz82NH9g6GBA+RSUaFOAtOrEKvmrNEUVq3Gn369OmkpqZyzz33YLVaiY6OZsOGDQ2OT0pKIjk5mYCAAKxWa60WLSaTiZiYGMxmsyTMhRDiFLgYdEwb3pVpw7vWu77UZifl0HH+3JvNn/uy2Xo4j72ZhezNLKw1zs2oI9zPg24BHgR4uuJm1OFq1ONq0OFm1GNQVDKyFUaX2vA3Guvdlzi3GHQGHhzyIE/88QQfb/+Y63tfX30Vqf2qN9j+yy90c/N1cpRCCCGEk5zczqWqF/qAqRBQmVcb/Ths/BQOr4fdv0DvK7SEtmW5tj7yFJPoAL2vhKNbtO0NuRmS34cjm8DVF8b/u2bc6Mcg5RPI3AGbv4T+007nKDsMpyXRrVYrs2bNAiAlJaXByd+aO060PofqYFv2NjwMHuiUhi9i0Ol1jJsyjvn/nUdERP0VSRERgKIQMzWmTgK9ir+bPwfyDnAg/wB9A/q2wBEIIRpTU4Ve+wz0idXoY8euaNF9WiwWEhISSEhIqG7RkpSURExMTJ2xCxcuJD4+ntTUVABycnLq9Dn395f2T0II0dLcjHouiAzkgshAZgDW4nJWp+awOjUbS1YRB3OKOZJXQqnNUW9yvTY9X7y4nDFRQVw5MJSYvp3wcZOE+rkstlssffz7sDN3J3O3zCV+RLy2ouqMvBBCCNFRnZhEP7IZ9vyiVaGPeaJmjHcnOO9e+PNV+P156HmZVrFeatWS3p2Hnvp+e10By2dpLWFy92vbBYh5FryCa8c35klY/Hf4/d/Q6+rTPtSOwGlJ9HHjxrF06VJMJhNJSUnExsZWJ0ZOZ5xofXlleRwvPY6va9PVJMlJySiKyrXXaveLiuDbb+G668DTE669Fu69V2Vd0jpiptZNlgHodXoAMoszJYkuRCurrwq9SmtWoy9cuJDp06djMpmIjo6uVUXu7+9fK0lusViqe5pbLBYWLlxYK9le38ShJ29DCCHEmTN5uHDFgFCuGBBa/Vh5hYMMawmHcos5mFtMfomNUpudsgoHZZW3xWUVrNubwdESWLork6W7MnHR6xjTM5Dx/UIY0MWX7oGeuBr0Tjw6cap0io6Hox/m3qR7mbd7Hrf2vZVQr9CmnyiEEEK0d+4m7bbkeE0Vev9JEBhVe9yoh2D9+1pF+LavIbcy72m+CPSnkboNGQC+4ZCXBp9eB2X5WjJ+6B11x464B9YlgvUQunVzgJ6nvr8OwilJ9KSkJPz9/auTITExMVgsFlJSUoiOjj7lceLsOF52nOKKYoI9g5scu3bxX4y5SCEwUGXTJpg2VWHPXpWeUQrz5qsMHgxjLtKxbvFfDSbRAdyN7mQUZrTcQQgh6tVQFXqV1qpGN5lMTJkypfp3+om9y6dMmcKUKVOwWCwsWLCAyZMnM2/ePIYOHUpcXBwxMTGsX7+elJQUcnNzSUpKAmDOnDlMnz693m3IxKJCCNE6XAw6IgI9iQj0bHCMzWbj55/TiBo6ht92ZvHz1iPszSwkaWcmSTszAdDrFCICPOgV4k1UsDc9gr1wM+pR0E7qKgooKCgKdDa50z3QE0MDVzWKs+eCsAsYHjKc5KPJvLP5HZ4b9ZyzQxJCCCGcr6oS/chmKM4GFBj9RP3jRj0MS5+DZf+ued6p9kOvoijaBKPr5sDx/Vr1+1WvaZN/n8zgCpc8C9/cjW7167j0fPH09tkBOCWJnpKSUqcli9lsxmKx1EqON3ecODvyy/JRURtt5QJQaC1k25rt/Pd1lTfegCefVOgc2YWnn76NzxZ+zHnnpfPSSyqTJjp45NHtFOYV4uXrVe+2PAwe5JXnUVJRgrvBvTUOS4gOr7Eq9CqtVY0+ffr06oT3yWJiYjh+vGYWc5PJ1Gi/9PquUjp5G0IIIZwvqpMXfbv48WhsT/YcK2DRliP8uS+bPccKKCitIDWriNSsIuBok9tyMeiICvaiV4g3fUJ86B3qzcDOJnw9pEXM2aQoCg9HP8zNP9/M96nfc3v/2wn3CHd2WEIIIYRzVSXDi7O1237XQnDv+seedy+seUdLeh/frz12Ov3Qq1Ql0QFGxEHooIbH9p8Ef/0P5chmeh37Hrj+9PfbjjkliZ6Tk1OnGtBkMpGbm3ta46qUlZVRVlZWfT8/Px/Qql5sNtuZB16Pqu221vbbkrLyMnR2HTQxYe/6pPXYKxx89JHC+vUqV9xyOTc9chOeaZ70vrY3X/z3Cx5++GeGDVOwVzhYn7SesdeOrXdbBgyUV5RTWlaKQW3f8+B2pPfSmZDXqWE2mw1VVVErZ/RWVRWHw9Hk85qqQq9yYjX6mDHLWyJkpzrV16k1OBwOVFXFZrOh19euCpD3uBCiI+jZyZuesd48GtsTVVU5ll/G7mMF7D1WwJ5jBRzILqbc7kAFUFVU7YYKh8qhnCKKyu1sz8hne0Y+cBgAg05hdFQgVw4MI7ZvJ3zdJaF+NgwKGsTY8LEsT1vOmxvfJGFUgrNDEkIIIZyrKoleZcyMhse6eGr9yX+pHBPYE0xncEK624UQ2AtQ4eL/a3ysTgexz8Mn1xCR9Tv2XAt06nX6+26nnJKVbKg/7ckTwjV3XJVZs2bxr3/9q87jixcvxsPD45RiPFVLlixp1e23Fb3oBZmNj0n+bi0Ae/d68PTTjzJs2DBI09Z5pXsxfdJ0hnQdwptvvg4UkfztWi7te2m92/Kv/G9FestOZtiWdZT30pmS16kug8FASEgIRUVFuLi4UFBQ0ORz/vzzzyar0KucWI3+888/c+GFF7ZQ5M7VnNeptZSXl1NSUsKKFSuoqKiota64uNhJUQkhhHMoikKIrxshvm5c1DOoyfEOh8phawk7j+Sz62gBu47msyMjnwM5xSzbncWy3VkY9Ur1JKZjewXj52FEkQkvW81DQx7ij7Q/WHJwCbf1uc3Z4QghhBDOdWISvc810KmJ+f6G3g6r/6f1Mj+TKnQAgwvcvwZUR/P6qpsvwhEZgy41CXXtO3DN62e2/3bIKUn0yMhIkpOT6zx+ctV5c8dVmTlzJo899lj1/fz8fMLDw7n00kvx8fE5o5gbYrPZWLJkCbGxsRiN7bvKZUvWFpYeXEp3U/dGxx3MOMiA8/vxYMJD+AX5UU452MEl1YXyyHLQw6Ceg0iIfYW3nnqDQ+mHKO9ZXu+28srzqLBXcGPvG3E3tu92Lh3pvXQm5HVqWGlpKWlpaXh6emKz2fD29m4yUfDyywmEhip4e6ssX970Pry9ITRU4ZVXZnPFFVe0TOBOoqoqBQUFzXqdWktpaSnu7u6MGTMGNze3WuuqrqYSQghRP51OIdzfg3B/Dy7tF1L9+L7MQn7eeoRFW46w+1hB9SSmAK4GHUHergR7u1beuuFX2frFoYJdVXGoKqqq9Wcf1zuYod38JPHeTFF+UVxpvpKfLD/x5qY3uYqrnB2SEEII4TxuJjB6gK0YLmqkCr2KwRWufQdWvwHn33fm+9fpgObPHWO/5Fl2lATRK/Z5ZJr3upySRDebzcybN6/WYxaLhZiYmNMaV8XV1RVXV9c6jxuNxlZPtp2NfTibycOEqldx6ByN9kV/+cdXcfVwrf/Lhr7yB/AP9efpj/5BWXEZDf3fWWwvJsA9AB+P1jkJ0hZ1hPdSS5DXqS673Y6iKNX/7ymKgk7X8P+rRUVFrF69FptN5ZJLTmVPKtnZaygtLW31q3xaU1ULl6Zep9ak0+lQFKXe97O8v4UQ4vT0CPbioXFRPDQuqrrn+qKtR9iXWUhZhYP04yWkHy9p1rbeWZ5Kn1Afbjm/GxMGh+Hp2r7bC7aE+wffz6/7f2XN0TX09Wyi4k60KfHx8cyZo/XPjYmJYe7cuTIpuxBCnAmDC9zwJdhtEDKgec/pPlr7cYbgvqR2upxeBremx3ZATvkUOHnyZO655x4sFgtms5mUlJRaifHZs2czefLkJseJs8vPzQ83gxslFSV4Gj0bHOfm2fz/2RRFaXR8SUUJYZ5hpxSnEKJ5PD09OXz4MHl5eaf8XF9f33M6gS6EEKJjOLHneqnNTlZBGZkFZWQVlFYvW4tt6JTKk6qKgk7RqtCzCsr4edsRdh7J5/++3cqsn3cyaWgXbj6/Gz2CvZx9aG1WuHc4k3pOYt7ueSwpXcID6gPODkk0Q1JSEhaLhQ0bNmCxWJgyZQr33HMPCxYscHZoQghxbjOPdXYEooU4rZRi6dKlxMfHM3z4cHJycmr9cU5MTMRsNmM2mxsdJ84uXxdf/Fz9OF52vNEkektxqA4cqoNgj+BW35cQHVVQUBBBQU33nRVCCCHOdW5GfXX7l+b6x9X9WLAhjc/WHORATjEfrT7AR6sPEBnkyYDOvgzoYmJAZ1/6hflIlfoJ4gbG8f2+70mzp7EhcwMju4x0dkiiCRaLpbry3Gw2k5CQQHx8vLPDEkIIIdoMp33Si46ObjAhnpqa2qxx4uzS6/T0C+zHrwd+RVXVVu8NmVuai5+bH918urXqfoQQQrQ8q9XKrFmzAEhJSak+QS6EEOcSXw8jd482c+eo7vy5L5tP1xxk6c5jpGYVkZpVxHebMgBt8u3IIC+Gdv3/9u4/to37vv/4i9RPW5Z9puzGseM0OTZOkybFRsroF2uRpDGZYUkbdK0Yr0CHAkNFrgPSAvlDhLA/0gBdBeqPIUi/GEAaBdZuaCGTxook2B8l1RTJOgRfW4c4cbM5iS5J7TpxHEm0ZMuyKIvfPxQykiVKsi2JND/PByDIPJ54n/eJ8uv4uft8bru+fNcO/YW/Qzu2LJ5m0hQ7N+/UU4GndOrNUwp+Jljt5mAVotHogsc+n0+dnZ1Vag0AALWHyyVwTfzb/LKaLY1dHpOv1bdu2ykWixqbGtNXdn9FW5oZLgtstLfeeksPPPCAXn75Ze3bt6/azcFN6MCBAxocHJRlWcrlcgqHwwtOkgPAzcTr9eiBfTv1wL6dGr04reOn8zpx+rxe/9N5vXH6vD4cn9I7H13QOx9d0MCxU5Kke27dqq98rkP/587tOj8tnclf0qxnWoUrs5qemVXhyqwuFa5o9OK0xi5Oa2Te94uXZ3Tnji36wu6tum/PNvl3tqmx4cbv31G4Mquxi9P6+MK0JqdntKm5QVtaGrW5uVFbWhrV2uRdswtluu7q0n++/Z/clPUmNTAwoFgsVvH5y5cv6/Lly+XHpRuiFwoFFQqFdW9frSjValLNEnWbVLeJNUvUbWrdK6ETHdfEarV0/4779cqZV7SteZsavOtzv95zl87JarF07w5uRgRUwy9/+UudPXtWv/rVr/T0009Xuzm4yeRyOfl8vvLNyEKhkFzXleM4CgQC1W0cANwgX1uzvnr3Z/TVuz+dcvCjiSm9cfq8XnVH9F/vjOh/Phgvfx165V1JjdLQK9e0nZdOniv/u6XRq8/vate9u7fp3t1bdc+udt29q13trYtvQj09M6uTH07otdN5vX4qr/dHJvXxxcsavTit/OTyHxK9HqmtpVG3bmvVbmuT9libyt/3bN+kz1fYJuqL4ziS5u5lVklfX5+eeeaZRct/85vfGHnfnGw2W+0mVAV1m8PEmiXqNsXk5OSq1qMTHdesc1en/jjxR52eOK3Pblv7qVYuz1zWxPSE/vKOv9SOTTvW/PUBrOzIkYHydzrRca0cx1k0dYtt23Jdl050AHXpM+2tOnBPqw7cc4sk6eMLl/XfwyP6/dsf67/eOacz+UtqbmxQc4NXTY1eNTV41NTgVWtTg3ybm7W9rUm+thb5Pvne2uTV22cv6M0z4/rDmfO6OH1Fx0+f1/HTC28Gvte3SZ/ftVWf39Wu8UsFHT99Xm9+MK7pmdmKbfV65k4EtLU0anL6iiYvz+ji9BVJ0mxRmpia0cTUBb119sKin/V4pH2faVfgs5b+/PbtCty+XfaONnm9XG1ei1KplIaGhio+7/f71dPTs2BZaTq2laZU7e3t1VNPPVV+PD4+rr179+qRRx7R1q1bb6zhN5FCoaBsNqtwOKymJnNOMFG3OXWbWLNE3abVXRpNtRI60XHNNjdt1pf3fFkvDL+gsxfP6pa2W9bstWdmZ/T++Pv6QscXdN+O+9bsdQGs3smTJ3XixP/qu9+Vfv7z/9Fbb711U0zp4rqu4vG4XNdd9gMj1t/IyEj5KvQSy7I0Ojq65PoMCWfoJHWbwaS6t7V49Vf37tRf3btThcLnPvlA+vB1fSCdnS3qj2OTevPMhN78YEL/e3ZCJz+c0Ifjl3Vq9JJOjV5S9s2zC7e/qVFf3LNN9+/Zpn23bNGOLc3ytTWro61Z2zY1qeGqTu/Z2aIuFa5ocvqKxqdm9MH5KX1w/pL+lJ/SmfNTOpOf286Z81M6eXZCJ89O6Ff/71R5W7u2tqrB61Gj1yPvJ989ks7nvdr/5Unt3GbOlcm19P6+ep7z1eju7l7VPclaWlrU0rJ43v+mpiajOl5KqNssJtZtYs0SdZtitbXSiY7rcue2O/XVvV9V9v2sPrz4oXa17brh1yxcKei98ff0OetzOvDZA2rymvMHC9SSI0eOqK2tQf/8z1eUTnt15MgR9fb2VrtZK7JtWwcPHlQ8Hq92U4yXz+eXXO7zLX0vDYaEf8q0oZMl1G0W6r5+90q6t0NSh3SxIJ2Z9OjMpPTBpEfNDdJntxR1e1tRO1pn5PFMSdNnpVPSiOa+3r6GbbVJ2idpX6ukXXNf49PSexc8em9i7uuPF6Tzl2Z0/tLiq9bnePXb3/1O7QYd1q92SHgtikQiisVicl23nOWWZXFjcAAARCc6bsD9O++Xx+PR7079Tm7e1d72vWpquL4j5NGpUY1cGtG+7fv0yB2PqL25fW0bC2DVjhwZ0KOPzsrnkx59dFZHjgzcFJ3okhZd/Yzq8Pv9Onr06KLllX4/DAk3d+gkdVO3Ceq57umZWb119oLOTxV0ZbaomdmiZj/5Pl0o6LXjb+ixRx7Wlk2t1W7qhlntkPBaE4vFlMlklMlkFixPJBKLpnwBAMBEdKLjhty34z5ZLZZ+/6ffa/j8sLY2b1XHpg41elf31rowfUEfTX6k1sZWPXTbQwrcElBrozkH2UA1TE1NyXEcFYvFRc+Njo7KcV5X6bPSt74lffvbx/XCCy8seRWxx+NRIBBQa+v1/926rqtkMqmOjg5ls1klEonyvNn5fF6jo6PKZDIaGBiQbds6dOjQgs5Y13WVyWQ0PDxMJ3qNsG1bAwMDC5a5rqtQKLTk+gwJ/5SJNUvUbRrqrh9NTdKf37H4/29p7uRB45nXtWVTa93VvZybtdZkMqlkMlntZgAAULPoRMcNu639Nn3jrm/o9Y9e1/GPj+v98ffV4GlQe3O7NjduVmtjq+ZmRZyb83xyZlKTM5OamJ7Q5sbNunv73QruCmpv+94qVwKY4dChQ/rBD35Q8fktW7x69NG5G5I99tjc48cff7zi+s8995yefPLJ62pLPp9XJBLR4OCgLMtSIBDQgQMHNDY2pv7+fsXjcYVCISUSCUWjUQWDQcXj8fKHvP7+flmWpZ6eHjmOo+7u7utqB9ZWV1eXuru75bqubNuW4zgVO9ABAAAAAKh1dKJjTbQ0tGj/rft1/8779e75d/X22Nv6cPJDjU6NampmSt6iV3frbp25cEYtzS2yWiz92c4/013b79Itm2+Rx+NZeSMA1kR3d7fefvst/fSn/1f33+/Rv/xLUR0dnz7f0TGr9k9mVGpvl955Z1bz7wf58cfSP/yDRydOFPXkk0/eUMf14cOH5fP5yleQd3Z2Kp/Py3Vd9fT0KJlMKhKJlK9Mj8Vi5SucHcdRMpnU8PCwJCkQCCiRSCgWi113e7B2BgcHFY/HtX//fo2MjKzqJmUAAAAAANQiOtGxplobW3VPxz26p+MeFa4UlL+c10RhQtPT0zp59qS+dde31LGlQ1uattBxDlRJa2urnnvupwqFwvq7v/uu/uZvLujf/31GDz209Pq33DL3JUkvvSR95zuNunx5i55//hf6+te/fkNtGRoakuu66u/vlzQ3Z3Y6nS7fwMqyrAXTyNi2Xb7RVS6XW3Sjq0o3tMTGCwQCdJwDAAAAAOoCnehYN00NTdq5ead2aqcKhYJO6qT2tO+5aecJBOrN448/ruPHT+g73/m2Hn74Ff3jP0pPPy01LpEMhYL0zDPST34iPfTQX+jf/u2X2rNnzw23wbKs8nQs1/OzruvecBsAAAAAAACW4612AwAA1bNnzx7lci/pxz/+J/3kJx796EdLr/ejH0l9fR79+Mf/pGz2t2vSgS5JBw8elOM4ymQy5WVXd4yPzp9LZp5QKCTXdZVKpSTNXYXODbEAAAAAAMBaoxMdAAzX0NCg733ve5KkO+5Yep3S8u7ubjU0NKzZtgOBgLLZrPr6+hQMBhWLxeQ4jiQplUrJcRyl0+nyMknljnPbtpVOp5VIJOT3+xWPxxWLxRZMDwMAAAAAAHCjmM4FAKBf//rX8nikb3xj7vHFi9J//If0138ttbXNLf/7v59b70ZuJLqUUCikoaGhRcuj0aii0eiCZV1dXSoWiwsed3V1LVhn/vMAAAAAAAA3iivRAQA6ciStBx/0aMcO6bXXpGCwUX/7t3PfX3tN2rlTevBBr44cOVztpgIAAAAAAGwoOtEBwHCjo6P67W9f0je/OavnnpO+9CWvNm26Ry+++KJaW+/Wl77k1XPPSd/85hUNDr6ksbGxajcZAAAAAABgw9CJDgCGe/755zUzc0X/+q8e/fCH0ve//6ReffWoHnvsMb366jF9//tP6oc/lH7+c49mZq7o+eefr3aTAQAAAAAANgyd6ABguCNH0pKk996z9OKLL+rZZ59VS0uLJKm1tVXPPvusXnjhBb33nrVgfQAAAAAAABPQiQ4Ahjtx4oQOHHhIr7/+Bz322GNLrvO1r31Nx4+f0MMPP6gTJ05scAsBAAAAAACqp7HaDQAAVNcbb/xBbW1t8ng8y663e/du5XIv6eLFixvUMgAAAAAAgOqjEx0A6kyxWLym9bds2bLqdT0ezzWtj+Vd6+8KAAAAAABsPKZzAYA60dDQIEkqFApVbglWa3p6WtKnvzsAAAAAAFB7uBIdAOpEY2OjNm/erHPnzmnr1q2ampqS18u50kpmZ2c1PT1dtf00Ozurc+fOafPmzWpsJI4BAAAAAKhVfGoHgDrh8Xh06623ynVdnT59Wps2bVpxnnOTFYtFXbp0qar7yev16vbbb+f3BAAAAABADaMTHQDqSHNzs+68805ls1k9+OCDampqqnaTalahUNDLL7+sBx54oGr7qbm5mdECAAAAAADUODrRAaDOeL1eXblyRa2trXSiL6OhoUEzMzPsJwAAAAAAsCwufwMAAAAAAAAAoAI60QEAAAAAAAAAqIBOdAAAAAAAAAAAKqjrOdGLxaIkaXx8fN22USgUNDk5qfHxcebUXQb7aWXso9VhP62MfbQ6tb6fStlVyjKTbER+15pafz+uF+qmbhNQt1l1m5rfJma3ZO77nLrNqdvEmiXqNq3u1WZ3XXeiT0xMSJL27t1b5ZYAAHB9JiYmtG3btmo3Y0OR3wCAm51p+U12AwBuditlt6dYx6fIZ2dndebMGbW3t8vj8azLNsbHx7V3716dOnVKW7duXZdt1AP208rYR6vDfloZ+2h1an0/FYtFTUxMaPfu3fJ6zZp9bSPyu9bU+vtxvVA3dZuAus2q29T8NjG7JXPf59RtTt0m1ixRt2l1rza76/pKdK/Xq9tuu21DtrV161aj3mDXi/20MvbR6rCfVsY+Wp1a3k8mXcE230bmd62p5ffjeqJus1C3WUys28T8Njm7JTPf5xJ1m8TEmiXqNslqstucU+MAAAAAAAAAAFwjOtEBAAAAAAAAAKiATvQb1NLSoqefflotLS3VbkpNYz+tjH20OuynlbGPVof9hFpi6vuRuqnbBNRtVt0wi6nvc+o2p24Ta5ao27S6V6uubywKAAAAAAAAAMCN4Ep0AAAAAAAAAAAqoBMdAAAAAAAAAIAK6ERfB7lcTsFgUK7rVrspuInwvgEAmIbsAwDg5kJ2AzAVnehrKJ/Py+/3K5lMynGcajenJuTzecXjccXjcYXDYYJ2CbxvVicej2v79u3avn27IpGI8vl8tZtUkzKZjILBoPx+P/tpBa7ryu/3s49QdSZmpcnZZ2qemZ5PpmVOLpdb8JXJZKrdJGBNkd1ktwnIbrIbCzVWuwH1xLIsDQ0NybIseTyeajenJhw4cECDg4OyLEu5XE7hcFjDw8PVblZN4X2zslwuJ9d1NTQ0JNd1FYlE1N3drXQ6Xe2m1RTXdZVMJpVOp5XP5xWJRBSPx5VMJqvdtJqUSCTkuq4sy6p2U2A4E7PS1OwzNc/IJ/MyJxaLLVrW1dVVhZYA64PsJrvJ7vpHdpPdV+NK9DVmyh/XauRyOfl8vvI+CYVCcl3XuLPWq8H7Znmu6+rQoUOybVuhUEiJREK5XK7azao5+Xxe6XRatm0rEAgoFotpdHS02s2qSZlMRpFIpNrNAIzOShOzz9Q8Mz2fTMycUCik4eHhBV9AvSC7zUJ2k92mILtXRic61o3jOLJte8Ey27aNGOqGtRWNRhccsPl8PnV2dlavQTUqEAgs2E/Dw8Pq7e2tXoNqVD6fl+u6i/5/AqqBrDSLqXlmcj6ROUD9IbvNQnbPIbsBOtGxjkZGRhadqbYsy6izl1gfAwMDSw41wpxUKqVIJGLU0LNrkUql1NPTU+1mAJLIStOZlmcm5pOpmeO6rsLhsDwej/x+vxFXbcIcZLfZyO76R3aT3ZUwJ/oKUqmUhoaGKj7v9/uN/ONajUo3X/D5fBvbENSV0jBJ5uaqrLOzU9FoVPF4XMFgUO+++64xBzwrcRxHgUCg2s0AyshKc5mYZ6blk8mZEwgE1NvbK8uyFIvFFA6HNTY2Vte/b5iD7DYX2U121zOye2WeYrFYrHYj6pHH49Hw8LDRwz/6+/t19OjRBTfcCAaDSiQSCoVCVWxZ7eJ9s7x8Pm/ETVzWSj6f1/bt25VOp4060FtOMBgsf/AZHR1VPp+XZVnq7e3lhCiqgqw0M/tMzzNT8onM+ZTH41E2mzXm/zXUN7Kb7DYR2U12gyvRsY5s29bAwMCCZa7r8geI62byQctqXH3WvHTG2NQz6UuZP7LIdV35/X6NjY1VsUUwHVlpJtPyzNR8InM+ZVmWEXMIwwxkt5nIbksS2W0Ssnsx5kRfY7lcrjw/ViwWUyaTqXKLqqerq0uu65ZvsOI4DgcWFfC+WVkkElEsFpPrzt353nEcbt5zlVwut2CfZDIZ9fT0GHWFCHCzMTkrTc0+E/OMfDJLPB5f8DiXy5WHhwP1gOwmu8lu1Buye3WYzgXrynEc9fX1af/+/RoZGVEikah2k3ATisViSqVSi5YnEgnjhlQtx3EcdXd3q7OzU8FgUD6fr66H2t2ITCajZDKpXC6naDSqWCxW91dVoHaRleYwNc9MzyfTMsdxHMXjcdm2LcuyFA6HjelghDnIbnOQ3WQ32Y0SOtEBAAAAAAAAAKiA6VwAAAAAAAAAAKiATnQAAAAAAAAAACqgEx0AAAAAAAAAgAroRAcAAAAAAAAAoAI60QEAAAAAAAAAqIBOdAAAAAAAAAAAKqATHQAAAAAAAACACuhEBwAAAAAAAACgAjrRAayZXC4nx3FueB0AAEwWDocViUQUiUTk9/vl8XgUiUQUi8Xk9/v1i1/8YsOzNBaLLft8JpNRLpfboNYAAFBbyG6g/jVWuwEA6kcymZRt2woEApLmOsxd11U0Gq24DgAAWCgQCCiRSEiS+vv71dfXp3Q6LWnuA+/PfvYzffGLX9ywLI3FYopEIsuu09XVpUgkIp/PR8YDAIxDdgP1z1MsFovVbgSA+hSJRGTbdvlgAgAArCyfz8uyLElSKpVSPB7X2NjYouc2guu6isViymazq1o3EoloaGhoA1oGAEDtILuB+sd0LkAduXp4mOM4i5b19/crGAwqlUqpv79ffr9f4XB4wTAu13UVj8fV39+vSCSieDy+4DVKzy11dtt13QWP8/m8XNdVPp9fcp2VtlX6+VK7I5HIgtcCAKDeLPdBu/Tc1Xnruq5SqZSCwWB5+HYmkykPL786h0vZGw6Hlx1eHo/HF2V9peMA27aVz+eZtg0AYByyGzBAEUBdyGazRcuyil1dXcVisVgcHh4uRqPRReuNjY0VbdsuhkKh4tDQULFYLBaTyWRRUvmxbdvFsbGx8s8EAoFiT09PsVgsFtPp9ILXTSQS5eWWZZWfy2azRdu2yz87PDy8aJ2VtpVIJIqSym0ttX2pugAAqEfJZLJoWVb58dVZOjQ0VM7bbDZbzspAIFBMp9PFsbGxYiAQKB8flB6Xsrd0/FDJ/OOD0vaXOg4o6erqKuc4AAAmIruB+sSV6ECdCIVCGhwcVCaTUSqVUiKRUDKZXLSeZVmyLEvhcLg871k0GlUoFFIymVQmkymvUxKLxdTf3y9JGh0d1eHDh5XJZJTP59XT0yNpbj61J554YkF7AoGAQqGQEomEbNtetM5K2+rp6ZFt24pEIgoEArIsS7FYTMeOHVuz/QYAwM3k6iwNBALlvA2FQrIsS6FQSD6fT11dXeXsLF1hdvjwYfl8vnL2dnZ2lkd9Xa10BZxt2+VllY4DSmzb5mo2AADmIbuB+sCNRYE6UrqZSSwW0/DwcMX15gdwiW3bsixLR48eXbR+Z2dn+d/RaFTDw8Pq7u5WPp9XIBAoz59mWdaKU63MX2elbZXW9/l8C9rJdC4AAJOtlLd+v1+jo6Plx/M/SA8NDZWnSSu9VjqdXrBOSek15h8zLHccIEkdHR3XWxYAAHWL7AZuflyJDtQZ27YVCATKc6qtluu6OnjwoPx+/6Iz2qOjo+WAdl1XiURCY2Nj5TCfP5/6tVhpWwAAYG2VRoD19PSop6dH0WhUXV1dS647P/tLVjoOGB4eJscBAFhDZDdQG+hEB+pILpeT67oaHBzUsWPHymeqlzL/zHMulyt3vj/xxBPK5/PKZDLl57PZrBKJhCSVh4BJc1e+27ZdDtyrz6z7fL5Fy+Y/XmlbJfPPyAMAYLrVjMiqtM7BgwflOM6C7F1qOHiJZVkLnl/uOKD0Wn6/f8X2AQBgErIbuPkxnQtQJzKZjJLJpLLZrCQpnU4rHA7LsixFo9FF6+dyOQWDQdm2rYMHD5bnT7csS0NDQ+ru7tbRo0fl9/u1f//+8pluy7LKc5RLKs93nsvlymezM5mMurq6FIlEFIlE5Lqu0um0jh07tmid5baVSqXkOI7S6bQ6OzvL2yzdxXypugAAqBelbM/n84rH4+rt7V2UpZLkOM6Cq8oGBgbkum45ayWVh4H39PQom80qHo+rr69PnZ2dCofDFa9Ai0ajchxHoVBIUuXjgBLXdSteHQcAQL0ju4H65SkWi8VqNwLAxgqHw4pEInRCAwCAZbmuq0gksmAEWyWO46ivr0/pdHoDWgYAAJZCdgPrg+lcAAAAACypNGJt/hDySvr6+hZNyQYAADYW2Q2sDzrRAQMxxzgAAFitnp6eZedeleamievt7eXGZAAA1ACyG1h7TOcCGCaVSikej6uzs1OJRKI8LxoAAAAAAACAxehEBwAAAAAAAACgAqZzAQAAAAAAAACgAjrRAQAAAAAAAACogE50AAAAAAAAAAAqoBMdAAAAAAAAAIAK6EQHAAAAAAAAAKACOtEBAAAAAAAAAKiATnQAAAAAAAAAACqgEx0AAAAAAAAAgAroRAcAAAAAAAAAoIL/D1ic7w9Ez/ivAAAAAElFTkSuQmCC",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, axs = plt.subplots(1,3, figsize=(15,4)) \n",
+ "\n",
+ "ax = axs[0]\n",
+ "circle1 = plt.Circle((0, 0), 0.2, color='C2', alpha=0.4)\n",
+ "circle2 = plt.Circle(obstacle_center[0], 0.5, color='C1', alpha=0.4)\n",
+ "\n",
+ "ax.add_patch(circle1)\n",
+ "ax.add_patch(circle2)\n",
+ "\n",
+ "N = 250\n",
+ "[ax.plot(*s.T, color=\"k\", alpha=0.2) for s in states_[::N]]\n",
+ "[ax.plot(*s.T, color=\"blue\", label=\"Initial traj\") for s in states_[:1]]\n",
+ "[ax.plot(*s.T, '.-', color=\"r\", markersize=10, label=\"Final traj\") for s in states_[-1:]]\n",
+ "\n",
+ "ax.scatter(states_[-1][0,:1], states_[-1][0,1:], marker=\"^\", c='yellow', edgecolor=\"k\", s=100, label=\"start\", zorder=4)\n",
+ "ax.scatter(states_[-1][-1,:1], states_[-1][-1,1:], marker=\"*\", c='yellow', edgecolor=\"k\", s=200, label=\"end\", zorder=4)\n",
+ "\n",
+ "ax.set_xlabel(\"x position\")\n",
+ "ax.set_ylabel(\"y position\")\n",
+ "ax.grid()\n",
+ "ax.legend()\n",
+ "ax.axis(\"equal\")\n",
+ "ax.set_title(\"Trajectory\")\n",
+ "\n",
+ "# plot x, y\n",
+ "ax = axs[1]\n",
+ "ax.plot(ts, states_[-1][:-1,:1], label=\"x\")\n",
+ "ax.plot(ts, states_[-1][:-1,1:], label=\"y\")\n",
+ "ax.plot(ts, distance_to_origin.predicate_function(states_[-1][1:]).squeeze(), label=\"distance to origin\")\n",
+ "ax.grid()\n",
+ "ax.axis(\"equal\")\n",
+ "ax.legend()\n",
+ "ax.set_xlabel(\"Time (s)\")\n",
+ "ax.set_ylabel(\"Position\")\n",
+ "ax.set_title(\"Position over time\")\n",
+ "\n",
+ "\n",
+ "\n",
+ "# plot control signal\n",
+ "ax = axs[2]\n",
+ "ax.plot(ts, controls[:,:1], label=\"x control\")\n",
+ "ax.plot(ts, controls[:,1:], label=\"y control\")\n",
+ "ax.plot(ts, jnp.linalg.norm(controls, axis=-1).squeeze(), label=\"control norm\")\n",
+ "ax.grid()\n",
+ "ax.axis(\"equal\")\n",
+ "ax.legend(ncols=3)\n",
+ "ax.set_xlabel(\"Time (s)\")\n",
+ "ax.set_ylabel(\"Controls\")\n",
+ "ax.set_title(\"Control sequence\")\n",
+ "\n",
+ "\n",
+ "\n",
+ "plt.tight_layout()\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAf8AAAHqCAYAAAAK6keWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAD/iElEQVR4nOy9d5hcd3n3/TnT607b3ndWqy7LWkku2NhgVqYaCEh2HsMT8pAgAUneNwk8UkwSwIHEkUNJIcAKUkgIxJbsUF7AoBVgLGxjWWtLsmRJ23ub3vt5/xido63Sqmul3+e65pJ2Zk6d3bl/d/vekizLMgKBQCAQCG4aNNf6BAQCgUAgEFxdhPEXCAQCgeAmQxh/gUAgEAhuMoTxFwgEAoHgJkMYf4FAIBAIbjKE8RcIBAKB4CZDGH+BQCAQCG4yhPEXCK5DQqHQtT4FgUBwA6O71icgECwlOjo6aG9vZ9++fQA4nU68Xi8Avb29uN1utm7dyiOPPILT6bygfff29rJr1y46OzsJBAIEg8HLffqCq0BHRwf79+8nFAqxZcsWtm7detm3vZRjCAQAyAKB4IJpa2uTAbmnp2fG81u3bpUBua2t7aL37fV6ZafTeamneEkEg8FrevylytatW+Xdu3fLwWBQPnz4sOx0OuWtW7de1m0v5RgCgYIw/gLBRaAY+dnGX5ZlGZAvZV3d1tZ2zYx/MBiUW1tbhTG5CHbv3j1n0bd3714ZkPfv339Ztr2UYwgE0xE5f4HgMqOkAZYqnZ2duN3ua30aS4729na2bNky4zklHN/e3n5Ztr2UYwgE0xE5f4HgMtPb20tbW9u8r3V2dtLR0UFPTw8bN26kra3tvIuFUChEb28vra2tCx4P5i46Ftpuer64ubmZtra2Oe9ZTL1Cb2/vOc9dOQ7A5s2b5+Slz3ceiznPhdizZw/79++no6ODTZs2sXfv3guuwbgQent7F/yMWltb6ezsvORtL+UYAsFshOcvEFxGtm3bhtPpZO/evXNe27FjB+3t7Wzfvp1du3Zx+PBhmpub2bNnz7z7Uoq5XC4XGzduRJKkGe/ds2cPLpeL5ubmGV5fR0cHzc3NuFwudu3aNe857Nixg127duH3+/nIRz4yY5/KPnbs2MG2bdv43ve+x44dO2hubmbfvn3s2bMHSZJobm5GkiQef/zxec97//79PPLIIzz00EPs2rWLbdu2Lfo8zvf6udixYwder5e9e/fS19dHb2/vjGNfCZQF2HwRE7fbTSAQuORtL+UYAsEcrnXeQSBYiig5/8OHD8s7d+6Ut27dKre2tso7d+6ct1hu586dstfrnfO8Ujh4+PDhGc8pRVzK8/v375edTuec9x4+fFgG5J07d87YbzAYnFN42NPTM2+dwvbt29Vj7N69W91u79698t69e+X9+/er19va2iq3t7fLwWBQ7unpkb1e75xzmq9mQMlL792797zncb7Xz8V8OfGdO3eetwYjGAye93EulOubfh8UlHt3qdteyjEEgtkIz18guAScTicej0dt/du9e/ec8HIoFOLxxx+ftx1r9+7dADz22GNztvnGN76hhnjb2trUaML09y4Udnc6nfOeB8zNDSs/t7W1sX37dqAYRt66dStbt26lra2NHTt2APDQQw+xfft2tcVR2bajo0P9t7Ozc05eWrkOJYx/rvM43+sLEQqF2LVrl3quCh6P55zbAbhcrvM+Zl/TdM7ndZ8r5bDYbS/lGALBbITxFwgukZ07d9LW1kZnZ+ecMDucDdc2NzfPeU0xirPztfMZb6WOQNnfhdLa2kprayuPP/44kiSxceNGdu3adUGCQrMXG5s2bQLA7/fPOLfdu3ezbds29bF79268Xi/Nzc3nPY+LPU8lZTH7HHt6es5rGOVi59M5H0r9wnwoofiFDPS5CigXu+2lHEMgmI0w/gLBZUApKHv88cdVL1hBMYg9PT3zbnshHtt0UaGL4fDhw7S3t6sFYo8//jgul+uii8UWii7s3r2bvXv3qo/29nZ6enrYuXPnos7jYs5TMc6zC+LOVYB5uVDuw3wLlFAodM7PbLHbXsoxBILZCOMvEFwGphf5bdu2bcYX9HQFwPkIhUKLrmJXiukullAoxPbt2zl8+DCyLKtphyeeeOKi9zkd5VoPHTp0SedxMefZ0dEx70Lq5ZdfnpMKmI0kSed9nOu+n+u6e3t7L8u2l3IMgWA2wvgLBJcJJWceCoVmVJe3trbidDrZt2/fHK9NWRA88sgj593/nj178Hq9al4eznqDsxcWHR0dc47V2dnJk08+OeM5xRPfvHnzeY+/GBQPe8+ePQuG6c93HhdznkpEYPYxOzo68Hq95/X8g8HgeR/zdXAoeL1evF7vnKiP0m45u95j9uJwMdte6DEE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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fontsize = 14\n",
+ "fig, ax = plt.subplots(figsize=(5, 5))\n",
+ "\n",
+ "circle1 = plt.Circle((0, 0), 0.2, color='C2', alpha=0.7)\n",
+ "circle2 = plt.Circle(obstacle_center[0], 0.5, color='C1', alpha=0.7)\n",
+ "\n",
+ "N = 250 # show intermediate solutions at everge N iterations\n",
+ "\n",
+ "[ax.plot(*s.T, color=\"blue\", label=\"Initial traj\", alpha=0.6) for s in states_[:1]]\n",
+ "[ax.plot(*s.T, '.-', color=\"r\", label=\"Final traj\", zorder=10, linewidth=2, markersize=8) for s in states_[-1:]]\n",
+ "ax.scatter(states_[-1][0,:1], states_[-1][0,1:], zorder=10, label=\"start\", color=\"yellow\", edgecolor=\"black\", marker=\"^\", s=100)\n",
+ "ax.scatter(states_[-1][-1,:1], states_[-1][-1,1:], zorder=10, label=\"end\", color=\"yellow\", edgecolor=\"black\", marker=\"*\", s=200)\n",
+ "[ax.plot(*s.T, color=\"k\", alpha=0.2, label=\"Iterations\", zorder=0) for s in states_[::N]]\n",
+ "\n",
+ "ax.add_patch(circle1)\n",
+ "ax.add_patch(circle2)\n",
+ "\n",
+ "ax.annotate(\"Goal\", (-0.4, -0.4), fontsize=fontsize-2)\n",
+ "ax.annotate(\"Target\", (-0.4, 2.7), fontsize=fontsize-2)\n",
+ "\n",
+ "ax.set_xlabel(\"$x$ position [m]\", fontsize=fontsize, labelpad=-2)\n",
+ "ax.set_ylabel(\"$y$ position [m]\", fontsize=fontsize)\n",
+ "ax.set_title(\"Robustness $\\\\rho$ = %.2f\"%formula.robustness(states_[-1], t_start=jax.nn.sigmoid(t_start), t_end=jax.nn.sigmoid(t_end), scale=1000.), fontsize=fontsize)\n",
+ "ax.grid(zorder=-6, alpha=0.5)\n",
+ "ax.legend([\"Initial guess\", \"Final trajectory\", \"Start\", \"End\"], ncol=1, fontsize=fontsize-3)\n",
+ "ax.axis(\"equal\")\n",
+ "plt.tight_layout()\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "test",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.12.4"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/stljax/formula.py b/stljax/formula.py
index c793414..da0bf71 100644
--- a/stljax/formula.py
+++ b/stljax/formula.py
@@ -5,186 +5,7 @@
import functools
warnings.simplefilter("default")
-
-
-@jax.jit
-def bar_plus(signal, p=2):
- '''max(0,signal)**p'''
- return jax.nn.relu(signal) ** p
-
-
-@jax.jit
-def bar_minus(signal, p=2):
- '''min(0,signal)**p'''
- return (-jax.nn.relu(-signal)) ** p
-
-@functools.partial(jax.jit, static_argnames=("axis", "keepdims"))
-def M0(signal, eps, weights=None, axis=1, keepdims=True):
- '''Used in gsmr approx method, Eq 4(a) in https://arxiv.org/abs/2405.10996'''
- if weights is None:
- weights = jnp.ones_like(signal)
- sum_w = weights.sum(axis, keepdims=keepdims)
- return (
- eps**sum_w + jnp.prod(signal**weights, axis=axis, keepdims=keepdims)
- ) ** (1 / sum_w)
-
-@functools.partial(jax.jit, static_argnames=("axis", "keepdims"))
-def Mp(signal, eps, p, weights=None, axis=1, keepdims=True):
- '''Used in gsmr approx method, Eq 4(b) in https://arxiv.org/abs/2405.10996'''
- if weights is None:
- weights = jnp.ones_like(signal)
- sum_w = weights.sum(axis, keepdims=keepdims)
- return (
- eps**p + 1 / sum_w * jnp.sum(weights * signal**p, axis=axis, keepdims=keepdims)
- ) ** (1 / p)
-
-@functools.partial(jax.jit, static_argnames=("axis", "keepdims"))
-def gmsr_min(signal, eps, p, weights=None, axis=1, keepdims=True):
- '''Used in gsmr approx method, Eq 3 in https://arxiv.org/abs/2405.10996'''
-
- return (
- M0(bar_plus(signal, 2), eps, weights=weights, axis=axis, keepdims=keepdims)
- ** 0.5
- - Mp(
- bar_minus(signal, 2), eps, p, weights=weights, axis=axis, keepdims=keepdims
- )
- ** 0.5
- )
-
-@functools.partial(jax.jit, static_argnames=("axis", "keepdims"))
-def gmsr_max(signal, eps, p, weights=None, axis=1, keepdims=True):
- '''Used in gsmr approx method, Eq 4(a) but for max in https://arxiv.org/abs/2405.10996'''
-
- return -gmsr_min(-signal, eps, p, weights=weights, axis=axis, keepdims=keepdims)
-
-@functools.partial(jax.jit, static_argnames=("axis", "keepdims"))
-def gmsr_min_turbo(signal, eps, p, weights=None, axis=1, keepdims=True):
- # TODO: (norrisg) make actually turbo (faster than normal `gmsr_min`)
- pos_idx = signal > 0.0
- neg_idx = ~pos_idx
-
- return jnp.where(
- neg_idx.sum(axis, keepdims=keepdims) > 0,
- eps**0.5
- - Mp(
- bar_minus(signal, 2),
- eps,
- p,
- weights=weights,
- axis=axis,
- keepdims=keepdims,
- )
- ** 0.5,
- M0(bar_plus(signal, 2), eps, weights=weights, axis=axis, keepdims=keepdims)
- ** 0.5
- - eps**0.5,
- )
-
-@functools.partial(jax.jit, static_argnames=("axis", "keepdims"))
-def gmsr_max_turbo(signal, eps, p, weights=None, axis=1, keepdims=True):
- return -gmsr_min_turbo(
- -signal, eps, p, weights=weights, axis=axis, keepdims=keepdims
- )
-
-
-def gmsr_min_fast(signal, eps, p):
- # TODO: (norrisg) allow `axis` specification
-
- # Split indices into positive and non-positive values
- pos_idx = signal > 0.0
- neg_idx = ~pos_idx
-
- weights = jnp.ones_like(signal)
-
- # Sum of all weights
- sum_w = weights.sum()
-
- # If there exists a negative element
- if signal[neg_idx].size > 0:
- sums = 0.0
- sums = jnp.sum(weights[neg_idx] * (signal[neg_idx] ** (2 * p)))
- Mp = (eps**p + (sums / sum_w)) ** (1 / p)
- h_min = eps**0.5 - Mp**0.5
-
- # If all values are positive
- else:
- mult = 1.0
- mult = jnp.prod(signal[pos_idx] ** (2 * weights[pos_idx]))
- M0 = (eps**sum_w + mult) ** (1 / sum_w)
- h_min = M0**0.5 - eps**0.5
-
- return jnp.reshape(h_min, (1, 1, 1))
-
-
-def gmsr_max_fast(signal, eps, p):
- return -gmsr_min_fast(-signal, eps, p)
-
-@functools.partial(jax.jit, static_argnames=("axis", "keepdims", "approx_method", "padding"))
-def maxish(signal, axis, keepdims=True, approx_method="true", temperature=None, **kwargs):
- """
- Function to compute max(ish) along an axis.
-
- Args:
- signal: A jnp.array or an Expression
- axis: (Int) axis along to compute max(ish)
- keepdims: (Bool) whether to keep the original array size. Defaults to True
- approx_method: (String) argument to choose the type of max(ish) approximation. possible choices are "true", "logsumexp", "softmax", "gmsr" (https://arxiv.org/abs/2405.10996).
- temperature: Optional, required for approx_method not True.
-
- Returns:
- jnp.array corresponding to the maxish
-
- Raises:
- If Expression does not have a value, or invalid approx_method
-
- """
-
- if isinstance(signal, Expression):
- assert (
- signal.value is not None
- ), "Input Expression does not have numerical values"
- signal = signal.value
-
- match approx_method:
- case "true":
- """jax keeps track of multiple max values and will distribute the gradients across all max values!
- e.g., jax.grad(jnp.max)(jnp.array([0.01, 0.0, 0.01])) # --> Array([0.5, 0. , 0.5], dtype=float32)
- """
- return jnp.max(signal, axis, keepdims=keepdims)
-
- case "logsumexp":
- """https://jax.readthedocs.io/en/latest/_autosummary/jax.scipy.special.logsumexp.html"""
- assert temperature is not None, "need a temperature value"
- return (
- jax.scipy.special.logsumexp(
- temperature * signal, axis=axis, keepdims=keepdims
- )
- / temperature
- )
-
- case "softmax":
- assert temperature is not None, "need a temperature value"
- return (jax.nn.softmax(temperature * signal, axis) * signal).sum(
- axis, keepdims=keepdims
- )
-
- case "gmsr":
- assert (
- temperature is not None
- ), "temperature tuple containing (eps, p) is required"
- (eps, p) = temperature
- return gmsr_max(signal, eps, p, axis=axis, keepdims=keepdims)
-
- case _:
- raise ValueError("Invalid approx_method")
-
-@functools.partial(jax.jit, static_argnames=("axis", "keepdims", "approx_method", "padding"))
-def minish(signal, axis, keepdims=True, approx_method="true", temperature=None, **kwargs):
- '''
- Same as maxish
- '''
- return -maxish(-signal, axis, keepdims, approx_method, temperature, **kwargs)
-
+from .utils import *
class STL_Formula:
'''
@@ -559,10 +380,6 @@ def separate_or(formula, input_, **kwargs):
formula: STL_formula
input_: input of STL_formula
"""
- # if isinstance(input_, tuple):
- # return jnp.concatenate([Or.separate_or(formula.subformula1, input_[0], **kwargs), Or.separate_or(formula.subformula2, input_[1], **kwargs)], axis=-1)
- # else:
- # return jnp.concatenate([Or.separate_or(formula.subformula1, input_, **kwargs), Or.separate_or(formula.subformula2, input_, **kwargs)], axis=-1)
if formula.__class__.__name__ != "Or":
return jnp.expand_dims(formula(input_, **kwargs), -1)
@@ -635,212 +452,117 @@ def _next_function(self):
def __str__(self):
return "(" + str(self.subformula1) + ") ⇒ (" + str(self.subformula2) + ")"
-class Temporal_Operator(STL_Formula):
- """
- Class to compute Eventually and Always. This builds a recurrent cell to perform dynamic programming
+class TemporalOperator(STL_Formula):
- Args:
- subformula: The subformula that the temporal operator is applied to.
- interval: The time interval that the temporal operator operates on. Default: None which means [0, jnp.inf]. Other options car be: [a, b] (b < jnp.inf), [a, jnp.inf] (a > 0)
-
- NOTE: Assume that the interval is describing the INDICES of the desired time interval. The user is responsible for converting the time interval (in time units) into indices (integers) using knowledge of the time step size.
- """
def __init__(self, subformula, interval=None):
super().__init__()
self.subformula = subformula
self.interval = interval
- self._interval = [0, jnp.inf] if self.interval is None else self.interval
- self.hidden_dim = 1 if not self.interval else self.interval[-1] # hidden_dim=1 if interval is [0, ∞) otherwise hidden_dim=end of interval
- if self.hidden_dim == jnp.inf:
- self.hidden_dim = self.interval[0]
- self.steps = 1 if not self.interval else self.interval[-1] - self.interval[0] + 1 # steps=1 if interval is [0, ∞) otherwise steps=length of interval
+
+ if self.interval is None:
+ self.hidden_dim = None
+ self._interval = None
+ elif interval[1] == jnp.inf:
+ self.hidden_dim = None
+ self._interval = [interval[0], interval[1]]
+ else:
+ self.hidden_dim = interval[1] + 1
+ self._interval = [interval[0], interval[1]]
+
+
+ self.LARGE_NUMBER = 1E9
self.operation = None
- # Matrices that shift a vector and add a new entry at the end.
- self.M = jnp.diag(jnp.ones(self.hidden_dim-1), k=1)
- self.b = jnp.zeros(self.hidden_dim)
- self.b = self.b.at[-1].set(1)
+ def _get_interval_indices(self):
+ start_idx = -self.hidden_dim
+ end_idx = -self._interval[0]
- def _initialize_hidden_state(self, signal):
- """
- Compute the initial hidden state.
+ return start_idx, (None if end_idx == 0 else end_idx)
- Args:
- signal: the input signal. Expected size [time_dim,]
+ def _run_cell(self, signal, padding=None, **kwargs):
- Returns:
- h0: initial hidden state is [hidden_dim,]
+ hidden_state = self._initialize_hidden_state(signal, padding=padding) # [hidden_dim]
+ def f_(hidden, state):
+ hidden, o = self._cell(state, hidden, **kwargs)
+ return hidden, o
- Notes:
- Initializing the hidden state requires padding on the signal. Currently, the default is to extend the last value.
- TODO: have option on this padding
+ _, outputs_stack = jax.lax.scan(f_, hidden_state, signal)
+ return outputs_stack
- """
- # Case 1, 2, 4
- # TODO: make this less hard-coded. Assumes signal is [bs, time_dim, signal_dim], and already reversed
- # pads with the signal value at the last time step.
- y = jax.lax.stop_gradient(signal[:1])
- h0 = jnp.ones([self.hidden_dim, *signal.shape[1:]])*y
-
- # Case 3: if self.interval is [a, jnp.inf), then the hidden state is a tuple (like in an LSTM)
- if (self._interval[1] == jnp.inf) & (self._interval[0] > 0):
- c0 = signal[:1]
- return (c0, h0)
- return h0
+ def _initialize_hidden_state(self, signal, padding=None):
+ if padding == "last":
+ pad_value = jax.lax.stop_gradient(signal)[0]
+ elif padding == "mean":
+ pad_value = jax.lax.stop_gradient(signal).mean(0)
+ else:
+ pad_value = -self.LARGE_NUMBER
- def _cell(self, x, hidden_state, **kwargs):
- """
- This function describes the operation that takes place at each recurrent step.
- Args:
- x: the input state at time t [batch_size, 1, ...]
- hidden_state: the hidden state. It is either a tensor, or a tuple of tensors, depending on the interval chosen and other arguments. Generally, the hidden state is of size [batch_size, hidden_dim,...]
+ n_time_steps = signal.shape[0]
- Return:
- output and next hidden_state
- """
- raise NotImplementedError("_cell is not implemented")
+ # compute hidden dim if signal length was needed
+ if (self.interval is None) or (self.interval[1] == jnp.inf):
+ self.hidden_dim = n_time_steps
+ if self.interval is None:
+ self._interval = [0, n_time_steps - 1]
+ elif self.interval[1] == jnp.inf:
+ self._interval[1] = n_time_steps - 1
- def _run_cell(self, signal, **kwargs):
- """
- Function to run a signal through a cell T times, where T is the length of the signal in the time dimension
+ self.M = jnp.diag(jnp.ones(self.hidden_dim-1), k=1)
+ self.b = jnp.zeros(self.hidden_dim)
+ self.b = self.b.at[-1].set(1)
- Args:
- signal: input signal, size = [time_dim,]
- time_dim: axis corresponding to time_dim. Default: 0
- kwargs: Other arguments including time_dim, approx_method, temperature
+ if (self.interval is None) or (self.interval[1] == jnp.inf):
+ pad_value = jnp.concatenate([jnp.ones(self._interval[0] + 1) * pad_value, jnp.ones(self.hidden_dim - self._interval[0] - 1) * self.sign * pad_value])
- Return:
- outputs: list of outputs
- states: list of hidden_states
- """
- time_dim = 0 # assuming signal is [time_dim,...]
- outputs = []
- states = []
- hidden_state = self._initialize_hidden_state(signal) # [hidden_dim]
- signal_split = jnp.split(signal, signal.shape[time_dim], time_dim) # list of x at each time step
- for i in range(signal.shape[time_dim]):
- o, hidden_state = self._cell(signal_split[i], hidden_state, **kwargs)
- outputs.append(o)
- states.append(hidden_state)
- return outputs, states
+ h0 = jnp.ones(self.hidden_dim) * pad_value
+ return h0
- def robustness_trace(self, signal, **kwargs):
- """
- Function to compute robustness trace of a temporal STL formula
- First, compute the robustness trace of the subformula, and use that as the input for the recurrent computation
+ def _cell(self, state, hidden, **kwargs):
- Args:
- signal: input signal, size = [bs, time_dim, ...]
- time_dim: axis corresponding to time_dim. Default: 1
- kwargs: Other arguments including time_dim, approx_method, temperature
+ h_new = self.M @ hidden + self.b * state
+ start_idx, end_idx = self._get_interval_indices()
+ output = self.operation(h_new[start_idx:end_idx], axis=0, keepdims=False, **kwargs)
+
+ return h_new, output
+
+
+ def robustness_trace(self, signal, padding=None, **kwargs):
- Returns:
- robustness_trace: jnp.array. Same size as signal.
- """
- time_dim = 0 # assuming signal is [time_dim,...]
trace = self.subformula(signal, **kwargs)
- outputs, _ = self._run_cell(trace, **kwargs)
- return jnp.concatenate(outputs, axis=time_dim) # [time_dim, ]
+ outputs = self._run_cell(trace, padding, **kwargs)
+ return outputs
+
+ def robustness(self, signal, **kwargs):
+ return self.__call__(signal, **kwargs)[-1]
+
def _next_function(self):
- """ next function is the input subformula. For visualization purposes """
return [self.subformula]
-class AlwaysRecurrent(Temporal_Operator):
- """
- The Always STL formula □_[a,b] subformula
- The robustness value is the minimum value of the input trace over a prespecified time interval
+class AlwaysRecurrent(TemporalOperator):
- Args:
- subformula: subformula that the Always operation is applied on
- interval: time interval [a,b] where a, b are indices along the time dimension. It is up to the user to keep track of what the timestep size is.
- """
def __init__(self, subformula, interval=None):
super().__init__(subformula=subformula, interval=interval)
-
- def _cell(self, x, hidden_state, **kwargs):
- """
- see Temporal_Operator._cell
- """
- time_dim = 0 # assuming signal is [time_dim,...]
- # Case 1, interval = [0, inf]
- if self.interval is None:
- input_ = jnp.concatenate([hidden_state, x], axis=time_dim) # [rnn_dim+1,]
- output = minish(input_, time_dim, keepdims=True, **kwargs) # [1,]
- return output, output
-
- # Case 3: self.interval is [a, np.inf)
- if (self._interval[1] == jnp.inf) & (self._interval[0] > 0):
- c, h = hidden_state
- ch = jnp.concatenate([c, h[:1]], axis=time_dim) # [2,]
- output = minish(ch, time_dim, keepdims=True, **kwargs) # [1,]
- hidden_state_ = (output, self.M @ h + self.b * x)
-
- # Case 2 and 4: self.interval is [a, b]
- else:
- hidden_state_ = self.M @ hidden_state + self.b * x
- hx = jnp.concatenate([hidden_state, x], axis=time_dim) # [rnn_dim+1,]
- input_ = hx[:self.steps] # [self.steps,]
- output = minish(input_, time_dim, **kwargs) # [1,]
- return output, hidden_state_
+ self.operation = minish
+ self.sign = -1.
def __str__(self):
return "◻ " + str(self._interval) + "( " + str(self.subformula) + " )"
+class EventuallyRecurrent(TemporalOperator):
-class EventuallyRecurrent(Temporal_Operator):
- """
- The Eventually STL formula ♢_[a,b] subformula
- The robustness value is the minimum value of the input trace over a prespecified time interval
-
- Args:
- subformula: subformula that the Eventually operation is applied on
- interval: time interval [a,b] where a, b are indices along the time dimension. It is up to the user to keep track of what the timestep size is.
- """
def __init__(self, subformula, interval=None):
super().__init__(subformula=subformula, interval=interval)
-
- def _cell(self, x, hidden_state, **kwargs):
- """
- see Temporal_Operator._cell
- """
- time_dim = 0 # assuming signal is [time_dim,...]
- # Case 1, interval = [0, inf]
- if self.interval is None:
- input_ = jnp.concatenate([hidden_state, x], axis=time_dim) # [rnn_dim+1, ]
- output = maxish(input_, time_dim, keepdims=True, **kwargs) # [1, ]
- return output, output
-
- # Case 3: self.interval is [a, np.inf)
- if (self._interval[1] == jnp.inf) & (self._interval[0] > 0):
- c, h = hidden_state
- ch = jnp.concatenate([c, h[:1]], axis=time_dim) # [2, ]
- output = maxish(ch, time_dim, keepdims=True, **kwargs) # [1, ]
- hidden_state_ = (output, self.M @ h + self.b * x)
-
- # Case 2 and 4: self.interval is [a, b]
- else:
- hidden_state_ = self.M @ hidden_state + self.b * x
- hx = jnp.concatenate([hidden_state, x], axis=time_dim) # [rnn_dim+1, ]
- input_ = hx[:self.steps] # [self.steps, ]
- output = maxish(input_, time_dim, **kwargs) # [1, ]
- return output, hidden_state_
+ self.operation = maxish
+ self.sign = 1.
def __str__(self):
return "♢ " + str(self._interval) + "( " + str(self.subformula) + " )"
class UntilRecurrent(STL_Formula):
- """
- The Until STL operator U. Subformula1 U_[a,b] subformula2
- Arg:
- subformula1: subformula for lhs of the Until operation
- subformula2: subformula for rhs of the Until operation
- interval: time interval [a,b] where a, b are indices along the time dimension. It is up to the user to keep track of what the timestep is.
- overlap: If overlap=True, then the last time step that ϕ is true, ψ starts being true. That is, sₜ ⊧ ϕ and sₜ ⊧ ψ at a common time t. If overlap=False, when ϕ stops being true, ψ starts being true. That is sₜ ⊧ ϕ and sₜ+₁ ⊧ ψ, but sₜ ¬⊧ ψ
- """
def __init__(self, subformula1, subformula2, interval=None, overlap=True):
super().__init__()
@@ -849,64 +571,115 @@ def __init__(self, subformula1, subformula2, interval=None, overlap=True):
self.interval = interval
if overlap == False:
self.subformula2 = Eventually(subformula=subformula2, interval=[0,1])
- self.LARGE_NUMBER = 1E6
+ self.LARGE_NUMBER = 1E9
+ # self.Alw = AlwaysRecurrent(subformula=Identity(name=str(self.subformula1))
+ self.Alw = AlwaysRecurrent(Predicate('x', lambda x: x) > 0.)
- def robustness_trace(self, signal, **kwargs):
- """
- Computing robustness trace of subformula1 U subformula2 (see paper)
-
- Args:
- signal: input signal for the formula. If using Expressions to define the formula, then inputs a tuple of signals corresponding to each subformula. If using Predicates to define the formula, then inputs is just a single jnp.array. Not need for different signals for each subformula. Expected signal is size [batch_size, time_dim, x_dim]
- time_dim: axis for time_dim. Default: 1
- kwargs: Other arguments including time_dim, approx_method, temperature
-
- Returns:
- robustness_trace: jnp.array. Same size as signal.
- """
+ if self.interval is None:
+ self.hidden_dim = None
+ elif interval[1] == jnp.inf:
+ self.hidden_dim = None
+ else:
+ self.hidden_dim = interval[1] + 1
- # TODO (karenl7) this really assumes axis=1 is the time dimension. Can this be generalized?
+ def _initialize_hidden_state(self, signal, padding=None, **kwargs):
time_dim = 0 # assuming signal is [time_dim,...]
- LARGE_NUMBER = self.LARGE_NUMBER
if isinstance(signal, tuple):
# for formula defined using Expression
assert signal[0].shape[time_dim] == signal[1].shape[time_dim]
trace1 = self.subformula1(signal[0], **kwargs)
trace2 = self.subformula2(signal[1], **kwargs)
- n_time_steps = signal[0].shape[time_dim] # TODO: WIP
+ n_time_steps = signal[0].shape[time_dim]
else:
# for formula defined using Predicate
trace1 = self.subformula1(signal, **kwargs)
trace2 = self.subformula2(signal, **kwargs)
- n_time_steps = signal.shape[time_dim] # TODO: WIP
-
- Alw = Always(subformula=Identity(name=str(self.subformula1)))
- LHS = jnp.permute_dims(jnp.repeat(jnp.expand_dims(trace2, -1), n_time_steps, axis=-1), [1,0]) # [sub_signal, t_prime]
- RHS = jnp.ones_like(LHS) * -LARGE_NUMBER # [sub_signal, t_prime]
-
- # Case 1, interval = [0, inf]
- if self.interval == None:
- for i in range(n_time_steps):
- RHS = RHS.at[i:,i].set(Alw(trace1[i:]))
-
- # Case 2 and 4: self.interval is [a, b], a ≥ 0, b < ∞
- elif self.interval[1] < jnp.inf:
- a = self.interval[0]
- b = self.interval[1]
- for i in range(n_time_steps):
- end = i+b+1
- RHS = RHS.at[i+a:end,i].set(Alw(trace1[i:end])[a:])
-
- # Case 3: self.interval is [a, np.inf), a ≂̸ 0
+ n_time_steps = signal.shape[time_dim]
+
+ # compute hidden dim if signal length was needed
+ if self.hidden_dim is None:
+ self.hidden_dim = n_time_steps
+ if self.interval is None:
+ self.interval = [0, n_time_steps - 1]
+ elif self.interval[1] == jnp.inf:
+ self.interval[1] = n_time_steps - 1
+
+ self.ones_array = jnp.ones(self.hidden_dim)
+
+ # set shift operations given hidden_dim
+ self.M = jnp.diag(jnp.ones(self.hidden_dim-1), k=1)
+ self.b = jnp.zeros(self.hidden_dim)
+ self.b = self.b.at[-1].set(1)
+
+ if self.hidden_dim == n_time_steps:
+ pad_value = self.LARGE_NUMBER
else:
- a = self.interval[0]
- for i in range(n_time_steps):
- RHS = RHS.at[i+a:,i].set(Alw(trace1[i:])[a:])
+ pad_value = -self.LARGE_NUMBER
+
+ h1 = pad_value * self.ones_array
+ h2 = -self.LARGE_NUMBER * self.ones_array
+ return (h1, h2), trace1, trace2
+
+ def _get_interval_indices(self):
+ start_idx = -self.hidden_dim
+ end_idx = -self.interval[0]
+
+ return start_idx, (None if end_idx == 0 else end_idx)
+
+ def _cell(self, state, hidden, **kwargs):
+ x1, x2 = state
+ h1, h2 = hidden
+ h1_new = self.M @ h1 + self.b * x1
+ h1_min = jnp.flip(self.Alw(jnp.flip(h1_new), **kwargs))
+ h2_new = self.M @ h2 + self.b * x2
+ start_idx, end_idx = self._get_interval_indices()
+ z = minish(jnp.stack([h1_min, h2_new]), axis=0, keepdims=False, **kwargs)[start_idx:end_idx]
+
+ def g_(carry, x):
+ carry = maxish(jnp.array([carry, x]), axis=0, keepdims=False, **kwargs)
+ return carry, carry
+
+ output, _ = jax.lax.scan(g_, -self.LARGE_NUMBER, z)
- return maxish(minish(jnp.stack([LHS, RHS], axis=-1), axis=-1, keepdims=False, **kwargs), axis=-1, keepdims=False, **kwargs)
+ return output, (h1_new, h2_new)
+
+ def robustness_trace(self, signal, padding=None, **kwargs):
+ """
+ Function to run a signal through a cell T times, where T is the length of the signal in the time dimension
+
+ Args:
+ signal: input signal, size = [time_dim,]
+ time_dim: axis corresponding to time_dim. Default: 0
+ kwargs: Other arguments including time_dim, approx_method, temperature
+
+ Return:
+ outputs: list of outputs
+ states: list of hidden_states
+ """
+ hidden_state, trace1, trace2 = self._initialize_hidden_state(signal, padding=padding, **kwargs)
+ def f_(hidden, state):
+ o, hidden = self._cell(state, hidden, **kwargs)
+ return hidden, o
+ _, outputs_stack = jax.lax.scan(f_, hidden_state, jnp.stack([trace1, trace2], axis=1))
+ return outputs_stack
+
+
+ def robustness(self, signal, **kwargs):
+ """
+ Computes the robustness value. Extracts the last entry along time_dim of robustness trace.
+
+ Args:
+ signal: jnp.array or Expression. Expected size [bs, time_dim, state_dim]
+ kwargs: Other arguments including time_dim, approx_method, temperature
+
+ Return: jnp.array, same as input with the time_dim removed.
+ """
+ return self.__call__(signal, **kwargs)[-1]
+ # return jnp.rollaxis(self.__call__(signal, **kwargs), time_dim)[-1]
def _next_function(self):
""" next function is the input subformulas. For visualization purposes """
return [self.subformula1, self.subformula2]
@@ -916,7 +689,6 @@ def __str__(self):
-
class Expression:
name: str
value: jnp.array
@@ -1110,13 +882,17 @@ def __init__(self, subformula, interval=None):
self.subformula = subformula
self._interval = [0, jnp.inf] if self.interval is None else self.interval
- def robustness_trace(self, signal, padding="last", large_number=1E9, **kwargs):
+ def robustness_trace(self, signal, padding=None, large_number=1E9, **kwargs):
time_dim = 0 # assuming signal is [time_dim,...]
- signal = self.subformula(signal, time_dim=time_dim, padding=padding, large_number=large_number, **kwargs)
+ signal = self.subformula(signal, padding=padding, large_number=large_number, **kwargs)
T = signal.shape[time_dim]
mask_value = -large_number
+ offset = 0
if self.interval is None:
interval = [0,T-1]
+ elif self.interval[1] == jnp.inf:
+ interval = [self.interval[0], T-1]
+ offset = self.interval[0]
else:
interval = self.interval
signal_matrix = signal.reshape([T,1]) @ jnp.ones([1,T])
@@ -1125,11 +901,11 @@ def robustness_trace(self, signal, padding="last", large_number=1E9, **kwargs):
elif padding == "mean":
pad_value = signal.mean(time_dim)
else:
- pad_value = padding
+ pad_value = mask_value
signal_pad = jnp.ones([interval[1]+1, T]) * pad_value
signal_padded = jnp.concatenate([signal_matrix, signal_pad], axis=time_dim)
subsignal_mask = jnp.tril(jnp.ones([T + interval[1]+1,T]))
- time_interval_mask = jnp.triu(jnp.ones([T + interval[1]+1,T]), -interval[-1]) * jnp.tril(jnp.ones([T + interval[1]+1,T]), -interval[0])
+ time_interval_mask = jnp.triu(jnp.ones([T + interval[1]+1,T]), -interval[-1]-offset) * jnp.tril(jnp.ones([T + interval[1]+1,T]), -interval[0])
masked_signal_matrix = jnp.where(time_interval_mask * subsignal_mask, signal_padded, mask_value)
return maxish(masked_signal_matrix, axis=time_dim, keepdims=False, **kwargs)
@@ -1149,26 +925,40 @@ def __init__(self, subformula, interval=None):
self.subformula = subformula
self._interval = [0, jnp.inf] if self.interval is None else self.interval
- def robustness_trace(self, signal, padding="last", large_number=1E9, **kwargs):
+ def robustness_trace(self, signal, padding=None, large_number=1E9, **kwargs):
time_dim = 0 # assuming signal is [time_dim,...]
signal = self.subformula(signal, padding=padding, large_number=large_number, **kwargs)
T = signal.shape[time_dim]
mask_value = large_number
- if self.interval is None:
- interval = [0,T-1]
- else:
- interval = self.interval
+ sign = 1.
+ offset = 0
+ # if self.interval is None:
+ # interval = [0,T-1]
+ # sign = -1.
+ def true_func(_interval, T):
+ return [_interval[0], T-1], -1., _interval[0]
+ def false_func(_interval, T):
+ return _interval, 1., 0
+ operands = (self._interval, T,)
+ interval, sign, offset = cond(self._interval[1] == jnp.inf, true_func, false_func, *operands)
+ # if self._interval[1] == jnp.inf:
+ # interval = [self.interval[0], T-1]
+ # sign = -1.
+ # offset = self.interval[0]
+ # else:
+ # interval = self.interval
signal_matrix = signal.reshape([T,1]) @ jnp.ones([1,T])
if padding == "last":
pad_value = signal[-1]
elif padding == "mean":
pad_value = signal.mean(time_dim)
else:
- pad_value = padding
- signal_pad = jnp.ones([interval[1]+1, T]) * pad_value
+ pad_value = -large_number
+ signal_pad = jnp.concatenate([jnp.ones([interval[1], T]) * sign * pad_value, jnp.ones([1, T]) * pad_value], axis=time_dim)
signal_padded = jnp.concatenate([signal_matrix, signal_pad], axis=time_dim)
subsignal_mask = jnp.tril(jnp.ones([T + interval[1]+1,T]))
- time_interval_mask = jnp.triu(jnp.ones([T + interval[1]+1,T]), -interval[-1]) * jnp.tril(jnp.ones([T + interval[1]+1,T]), -interval[0])
+
+ time_interval_mask = jnp.triu(jnp.ones([T + interval[1]+1,T]), -interval[-1]-offset) * jnp.tril(jnp.ones([T + interval[1]+1,T]), -interval[0])
masked_signal_matrix = jnp.where(time_interval_mask * subsignal_mask, signal_padded, mask_value)
return minish(masked_signal_matrix, axis=time_dim, keepdims=False, **kwargs)
@@ -1189,7 +979,7 @@ def __init__(self, subformula1, subformula2, interval=None):
self._interval = [0, jnp.inf] if self.interval is None else self.interval
- def robustness_trace(self, signal, padding="last", large_number=1E9, **kwargs):
+ def robustness_trace(self, signal, padding=None, large_number=1E9, **kwargs):
time_dim = 0 # assuming signal is [time_dim,...]
if isinstance(signal, tuple):
signal1, signal2 = signal
@@ -1205,6 +995,8 @@ def robustness_trace(self, signal, padding="last", large_number=1E9, **kwargs):
mask_value = large_number
if self.interval is None:
interval = [0,T-1]
+ elif self.interval[1] == jnp.inf:
+ interval = [self.interval[0], T-1]
else:
interval = self.interval
signal1_matrix = signal1.reshape([T,1]) @ jnp.ones([1,T])
@@ -1216,8 +1008,8 @@ def robustness_trace(self, signal, padding="last", large_number=1E9, **kwargs):
signal1_pad = jnp.ones([interval[1]+1, T]) * signal1.mean(time_dim)
signal2_pad = jnp.ones([interval[1]+1, T]) * signal2.mean(time_dim)
else:
- signal1_pad = jnp.ones([interval[1]+1, T]) * padding
- signal2_pad = jnp.ones([interval[1]+1, T]) * padding
+ signal1_pad = jnp.ones([interval[1]+1, T]) * -mask_value
+ signal2_pad = jnp.ones([interval[1]+1, T]) * -mask_value
signal1_padded = jnp.concatenate([signal1_matrix, signal1_pad], axis=time_dim)
signal2_padded = jnp.concatenate([signal2_matrix, signal2_pad], axis=time_dim)
@@ -1227,11 +1019,89 @@ def robustness_trace(self, signal, padding="last", large_number=1E9, **kwargs):
phi2_mask = jnp.stack([jnp.triu(jnp.ones([T + interval[1]+1,T]), -end_idx) * jnp.tril(jnp.ones([T + interval[1]+1,T]), -end_idx) for end_idx in range(interval[0], interval[-1]+1)], 0)
phi1_masked_signal = jnp.stack([jnp.where(m1, signal1_padded, mask_value) for m1 in phi1_mask], 0)
phi2_masked_signal = jnp.stack([jnp.where(m2, signal2_padded, mask_value) for m2 in phi2_mask], 0)
- return maxish(jnp.stack([minish(jnp.stack([minish(s1, axis=0, keepdims=False), minish(s2, axis=0, keepdims=False)], axis=0), axis=0, keepdims=False) for (s1, s2) in zip(phi1_masked_signal, phi2_masked_signal)], axis=0), axis=0, keepdims=False)
+ return maxish(jnp.stack([minish(jnp.stack([minish(s1, axis=0, keepdims=False, **kwargs), minish(s2, axis=0, keepdims=False, **kwargs)], axis=0), axis=0, keepdims=False, **kwargs) for (s1, s2) in zip(phi1_masked_signal, phi2_masked_signal)], axis=0), axis=0, keepdims=False, **kwargs)
+
+
def _next_function(self):
""" next function is the input subformula. For visualization purposes """
return [self.subformula1, self.subformula2]
def __str__(self):
- return "(" + str(self.subformula1) + ")" + " U " + str(self._interval) + "(" + str(self.subformula2) + ")"
\ No newline at end of file
+ return "(" + str(self.subformula1) + ")" + " U " + str(self._interval) + "(" + str(self.subformula2) + ")"
+
+
+class DifferentiableAlways(STL_Formula):
+ def __init__(self, subformula, interval=None):
+ super().__init__()
+
+ self.interval = interval
+ self.subformula = subformula
+ # self._interval = [0, jnp.inf] if self.interval is None else self.interval
+
+ def robustness_trace(self, signal, t_start, t_end, scale=1.0, padding=None, large_number=1E9, delta=1E-3, **kwargs):
+ time_dim = 0 # assuming signal is [time_dim,...]
+ signal = self.subformula(signal, padding=padding, large_number=large_number, **kwargs)
+ T = signal.shape[time_dim]
+ mask_value = large_number
+ signal_matrix = signal.reshape([T,1]) @ jnp.ones([1,T])
+ if padding == "last":
+ pad_value = signal[-1]
+ elif padding == "mean":
+ pad_value = signal.mean(time_dim)
+ else:
+ pad_value = -mask_value
+ signal_pad = jnp.ones([T, T]) * pad_value
+ signal_padded = jnp.concatenate([signal_matrix, signal_pad], axis=time_dim)
+ smooth_time_mask = smooth_mask(T, t_start, t_end, scale)
+ padded_smooth_time_mask = jnp.zeros([2 * T, T])
+ for t in range(T):
+ padded_smooth_time_mask = padded_smooth_time_mask.at[t:t+T,t].set(smooth_time_mask)
+
+ masked_signal_matrix = jnp.where(padded_smooth_time_mask > delta, signal_padded * padded_smooth_time_mask, mask_value)
+ return minish(masked_signal_matrix, axis=time_dim, keepdims=False, **kwargs)
+
+ def _next_function(self):
+ """ next function is the input subformula. For visualization purposes """
+ return [self.subformula]
+
+ def __str__(self):
+ return "◻ [a,b] ( " + str(self.subformula) + " )"
+
+
+class DifferentiableEventually(STL_Formula):
+ def __init__(self, subformula, interval=None):
+ super().__init__()
+
+ self.interval = interval
+ self.subformula = subformula
+ self._interval = [0, jnp.inf] if self.interval is None else self.interval
+
+ def robustness_trace(self, signal, t_start, t_end, scale=1.0, padding=None, large_number=1E9, delta=1E-3, **kwargs):
+ time_dim = 0 # assuming signal is [time_dim,...]
+ signal = self.subformula(signal, padding=padding, large_number=large_number, **kwargs)
+ T = signal.shape[time_dim]
+ mask_value = -large_number
+ signal_matrix = signal.reshape([T,1]) @ jnp.ones([1,T])
+ if padding == "last":
+ pad_value = signal[-1]
+ elif padding == "mean":
+ pad_value = signal.mean(time_dim)
+ else:
+ pad_value = mask_value
+ signal_pad = jnp.ones([T, T]) * pad_value
+ signal_padded = jnp.concatenate([signal_matrix, signal_pad], axis=time_dim)
+ smooth_time_mask = smooth_mask(T, t_start, t_end, scale)
+ padded_smooth_time_mask = jnp.zeros([2 * T, T])
+ for t in range(T):
+ padded_smooth_time_mask = padded_smooth_time_mask.at[t:t+T,t].set(smooth_time_mask)
+
+ masked_signal_matrix = jnp.where(padded_smooth_time_mask > delta, signal_padded * padded_smooth_time_mask, mask_value)
+ return maxish(masked_signal_matrix, axis=time_dim, keepdims=False, **kwargs)
+
+ def _next_function(self):
+ """ next function is the input subformula. For visualization purposes """
+ return [self.subformula]
+
+ def __str__(self):
+ return "♢ [a,b] ( " + str(self.subformula) + " )"
\ No newline at end of file
diff --git a/stljax/tests.py b/stljax/tests.py
new file mode 100644
index 0000000..69afcd9
--- /dev/null
+++ b/stljax/tests.py
@@ -0,0 +1,310 @@
+
+import jax
+import jax.numpy as jnp
+import numpy as np
+from stljax.formula import *
+from stljax.viz import *
+import functools
+
+jax.config.update("jax_enable_x64", True)
+
+def test_always(signal, interval, verbose=True, **kwargs):
+ def true_robustness_trace(signal, interval, **kwargs):
+ T = len(signal)
+ if (interval is None):
+ return jnp.stack([minish(signal[i:], axis=0, keepdims=False, **kwargs) for i in range(len(signal))])
+ else:
+ if interval[1] == jnp.inf:
+ large_number = 1E9
+ start = interval[0]
+ signal_padded = jnp.concat([signal, jnp.ones(T-1) * large_number, jnp.ones(start) * -large_number])
+ return jnp.stack([minish(signal_padded[i+start:i+start+T], axis=0, keepdims=False, **kwargs) for i in range(len(signal))])
+ else:
+ large_number = 1E9
+ signal_padded = jnp.concat([signal, jnp.ones(interval[1]+1) * -large_number])
+ return jnp.stack([minish(signal_padded[i:][interval[0]:interval[1]+1], axis=0, keepdims=False, **kwargs) for i in range(len(signal))])
+
+ def true_robustness(signal, interval, **kwargs):
+ return true_robustness_trace(signal, interval, **kwargs)[0]
+
+ pred = Predicate("identity", lambda x: x)
+ phi = Always(pred > 0., interval=interval)
+ rob = phi.robustness(signal, **kwargs)
+ rob_trace = phi(signal, **kwargs)
+ rob_grad = jax.grad(phi.robustness)(signal, **kwargs)
+
+ true_trace = true_robustness_trace(signal, interval, **kwargs)
+ true_rob = true_robustness(signal, interval, **kwargs)
+ true_grad = jax.grad(true_robustness)(signal, interval, **kwargs)
+
+ rob_correct = jnp.isclose(rob, true_rob)
+ trace_correct = jnp.all(jnp.isclose(rob_trace, true_trace))
+ grad_correct = jnp.all(jnp.isclose(rob_grad, true_grad))
+
+ pass_n = 0
+
+ if rob_correct:
+ if verbose: print("\u2713 Always robustness value match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Always robustness value does not match expected answer")
+
+ if trace_correct:
+ if verbose: print("\u2713 Always robustness trace match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Always robustness trace does not match expected answer")
+
+ if grad_correct:
+ if verbose: print("\u2713 Always robustness gradient match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Always robustness gradient does not match expected answer")
+
+ print("%i/3 test passed for Always formula\n"%pass_n)
+
+
+def test_eventually(signal, interval, verbose=True, **kwargs):
+ def true_robustness_trace(signal, interval, **kwargs):
+ T = len(signal)
+ if (interval is None):
+ return jnp.stack([maxish(signal[i:], axis=0, keepdims=False, **kwargs) for i in range(len(signal))])
+ else:
+ if interval[1] == jnp.inf:
+ large_number = 1E9
+ start = interval[0]
+ signal_padded = jnp.concat([signal, jnp.ones(T) * -large_number])
+ return jnp.stack([maxish(signal_padded[i+start:i+T], axis=0, keepdims=False, **kwargs) for i in range(len(signal))])
+ else:
+ large_number = 1E9
+ signal_padded = jnp.concat([signal, jnp.ones(interval[1]+1) * -large_number])
+ return jnp.stack([maxish(signal_padded[i:][interval[0]:interval[1]+1], axis=0, keepdims=False, **kwargs) for i in range(len(signal))])
+
+ def true_robustness(signal, interval, **kwargs):
+ return true_robustness_trace(signal, interval, **kwargs)[0]
+
+ pred = Predicate("identity", lambda x: x)
+ phi = Eventually(pred > 0., interval=interval)
+ rob = phi.robustness(signal, **kwargs)
+ rob_trace = phi(signal, **kwargs)
+ rob_grad = jax.grad(phi.robustness)(signal, **kwargs)
+
+ true_trace = true_robustness_trace(signal, interval, **kwargs)
+ true_rob = true_robustness(signal, interval, **kwargs)
+ true_grad = jax.grad(true_robustness)(signal, interval, **kwargs)
+
+ rob_correct = jnp.isclose(rob, true_rob)
+ trace_correct = jnp.all(jnp.isclose(rob_trace, true_trace))
+ grad_correct = jnp.all(jnp.isclose(rob_grad, true_grad))
+
+ pass_n = 0
+
+ if rob_correct:
+ if verbose: print("\u2713 Eventually robustness value match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Eventually robustness value does not match expected answer")
+
+ if trace_correct:
+ if verbose: print("\u2713 Eventually robustness trace match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Eventually robustness trace does not match expected answer")
+
+ if grad_correct:
+ if verbose: print("\u2713 Eventually robustness gradient match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Eventually robustness gradient does not match expected answer")
+
+ print("%i/3 test passed for Eventually formula\n"%pass_n)
+
+
+def test_until(signal, interval, verbose=True, **kwargs):
+ pred = Predicate("identity", lambda x: x)
+ phi = Until(pred > 0., pred < 0., interval=interval)
+
+ def true_robustness_trace(signal, interval, **kwargs):
+ signal1, signal2 = phi.subformula1(signal), phi.subformula2(signal)
+ T = len(signal1)
+ if interval is None:
+ interval = [0,T-1]
+ elif interval[1] == jnp.inf:
+ interval = [interval[0], T-1]
+ large_number = 1E9
+ signal1_padded = jnp.concat([signal1, jnp.ones_like(signal1) * -large_number])
+ signal2_padded = jnp.concat([signal2, jnp.ones_like(signal2) * -large_number])
+ return jnp.stack([maxish(jnp.stack([minish(jnp.stack([minish(signal1_padded[i:][:t+1], axis=0, keepdims=False, **kwargs), signal2_padded[i:][t]]), axis=0, keepdims=False, **kwargs) for t in range(interval[0],interval[-1]+1)]), axis=0, keepdims=False, **kwargs) for i in range(T)])
+
+ def true_robustness(signal, interval, **kwargs):
+ return true_robustness_trace(signal, interval, **kwargs)[0]
+
+
+ pred = Predicate("identity", lambda x: x)
+ phi = Until(pred > 0., pred < 0, interval=interval)
+ rob = phi.robustness(signal, **kwargs)
+ rob_trace = phi(signal, **kwargs)
+ rob_grad = jax.grad(phi.robustness)(signal, **kwargs)
+
+ true_trace = true_robustness_trace(signal, interval, **kwargs)
+ true_rob = true_robustness(signal, interval, **kwargs)
+ true_grad = jax.grad(true_robustness)(signal, interval, **kwargs)
+
+ rob_correct = jnp.isclose(rob, true_rob, atol=1E-5)
+ trace_correct = jnp.all(jnp.isclose(rob_trace, true_trace, atol=1E-5))
+ grad_diff = jnp.linalg.norm(rob_grad - true_grad)
+ grad_correct = jnp.all(jnp.isclose(rob_grad, true_grad, atol=1E-5))
+
+ pass_n = 0
+
+ if rob_correct:
+ if verbose: print("\u2713 Until robustness value match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Until robustness value does not match expected answer")
+
+ if trace_correct:
+ if verbose: print("\u2713 Until robustness trace match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Until robustness trace does not match expected answer")
+
+ if grad_correct:
+ if verbose: print("\u2713 Until robustness gradient match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Until robustness gradient does not match expected answer")
+ print(grad_diff)
+ print(rob_grad, true_grad)
+
+ print("%i/3 test passed for Until formula\n"%pass_n)
+
+
+def test_always_mask_recurrent(signal, interval, verbose=True, **kwargs):
+ signal_flip = jnp.flip(signal)
+ pred = Predicate("identity", lambda x: x)
+ mask = Always(pred > 0., interval)
+ rec = AlwaysRecurrent(pred > 0., interval)
+
+ rob_correct = jnp.isclose(mask.robustness(signal, **kwargs), rec.robustness(signal_flip, **kwargs))
+ trace_correct = jnp.all(jnp.isclose(mask(signal, **kwargs), jnp.flip(rec(signal_flip, **kwargs))))
+ grad_correct = jnp.all(jnp.isclose(jax.grad(mask.robustness)(signal, **kwargs), jnp.flip(jax.grad(rec.robustness)(signal_flip, **kwargs))))
+
+ pass_n = 0
+
+ if rob_correct:
+ if verbose: print("\u2713 Always mask vs recurrent robustness value match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Always mask vs recurrent robustness value does not match expected answer")
+
+ if trace_correct:
+ if verbose: print("\u2713 Always mask vs recurrent robustness trace match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Always mask vs recurrent robustness trace does not match expected answer")
+
+ if grad_correct:
+ if verbose: print("\u2713 Always mask vs recurrent robustness gradient match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Always mask vs recurrent robustness gradient does not match expected answer")
+
+
+ print("%i/3 test passed for Always mask vs recurrent formula\n"%pass_n)
+
+
+def test_eventually_mask_recurrent(signal, interval, verbose=True, **kwargs):
+ signal_flip = jnp.flip(signal)
+ pred = Predicate("identity", lambda x: x)
+ mask = Eventually(pred > 0., interval)
+ rec = EventuallyRecurrent(pred > 0., interval)
+
+ rob_correct = jnp.isclose(mask.robustness(signal, **kwargs), rec.robustness(signal_flip, **kwargs))
+ trace_correct = jnp.all(jnp.isclose(mask(signal, **kwargs), jnp.flip(rec(signal_flip, **kwargs))))
+ grad_correct = jnp.all(jnp.isclose(jax.grad(mask.robustness)(signal, **kwargs), jnp.flip(jax.grad(rec.robustness)(signal_flip, **kwargs))))
+
+ pass_n = 0
+
+ if rob_correct:
+ if verbose: print("\u2713 Eventually mask vs recurrent robustness value match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Eventually mask vs recurrent robustness value does not match expected answer")
+
+ if trace_correct:
+ if verbose: print("\u2713 Eventually mask vs recurrent robustness trace match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Eventually mask vs recurrent robustness trace does not match expected answer")
+
+ if grad_correct:
+ if verbose: print("\u2713 Eventually mask vs recurrent robustness gradient match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Eventually mask vs recurrent robustness gradient does not match expected answer")
+
+
+ print("%i/3 test passed for Eventually mask vs recurrent formula\n"%pass_n)
+
+
+def test_until_mask_recurrent(signal, interval, verbose=True, **kwargs):
+ signal_flip = jnp.flip(signal)
+ pred = Predicate("identity", lambda x: x)
+ mask = Until(pred > 0., pred < 0., interval)
+ rec = UntilRecurrent(pred > 0., pred < 0., interval)
+
+ rob_correct = jnp.isclose(mask.robustness(signal, **kwargs), rec.robustness(signal_flip, **kwargs))
+ trace_correct = jnp.all(jnp.isclose(mask(signal, **kwargs), jnp.flip(rec(signal_flip, **kwargs))))
+ grad_correct = jnp.all(jnp.isclose(jax.grad(mask.robustness)(signal, **kwargs), jnp.flip(jax.grad(rec.robustness)(signal_flip, **kwargs))))
+
+ pass_n = 0
+
+ if rob_correct:
+ if verbose: print("\u2713 Until mask vs recurrent robustness value match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Until mask vs recurrent robustness value does not match expected answer")
+
+ if trace_correct:
+ if verbose: print("\u2713 Until mask vs recurrent robustness trace match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Until mask vs recurrent robustness trace does not match expected answer")
+
+ if grad_correct:
+ if verbose: print("\u2713 Until mask vs recurrent robustness gradient match expected answer")
+ pass_n += 1
+ else:
+ print("\u274c Until mask vs recurrent robustness gradient does not match expected answer")
+
+
+ print("%i/3 test passed for Until mask vs recurrent formula\n"%pass_n)
+
+def test_all_settings(test_func, verbose=True, T=10):
+ assert T > 0, "Pick a T larger than 10"
+ signal = jnp.array(np.random.randn(T)) * 1.0
+ # None, [0,b], [a,b], [0, inf], [a, inf]
+ interval_list = [None, [0, T//3], [T//4, T//2], [0, jnp.inf], [T//4, jnp.inf]]
+ approx_method_list = ["true", "logsumexp"]
+ temperature_list = [1., 10., 20., 100.]
+
+ for interval in interval_list:
+ for approx_method in approx_method_list:
+ for temperature in temperature_list:
+ kwargs = {"approx_method": approx_method,
+ "temperature": temperature
+ }
+ print(f"int={interval}\t temp={temperature} \t approx={approx_method} ")
+ test_func(signal, interval, verbose, **kwargs)
+
+if __name__ == "__main__":
+
+ test_all_settings(test_always, verbose=False, T=10)
+ test_all_settings(test_eventually, verbose=False, T=10)
+ test_all_settings(test_until, verbose=False, T=10)
+ test_all_settings(test_always_mask_recurrent, verbose=False, T=10)
+ test_all_settings(test_eventually_mask_recurrent, verbose=False, T=10)
+ test_all_settings(test_until_mask_recurrent, verbose=False, T=10)
+
+
diff --git a/stljax/utils.py b/stljax/utils.py
new file mode 100644
index 0000000..1413399
--- /dev/null
+++ b/stljax/utils.py
@@ -0,0 +1,206 @@
+import jax
+import jax.numpy as jnp
+import functools
+
+def cond(pred, true_fun, false_fun, *operands):
+ if pred:
+ return true_fun(*operands)
+ else:
+ return false_fun(*operands)
+
+def scan(f, init, xs, length=None):
+ if xs is None:
+ xs = [None] * length
+ carry = init
+ ys = []
+ for x in xs:
+ carry, y = f(carry, x)
+ ys.append(y)
+ return carry, jnp.stack(ys)
+
+
+def smooth_mask(T, t_start, t_end, scale):
+ xs = jnp.arange(T) * 1.
+ return jax.nn.sigmoid(scale * (xs - t_start * T)) - jax.nn.sigmoid(scale * (xs - t_end * T))
+
+def anneal(i):
+ return jax.nn.sigmoid(15 * (i - 0.5))
+
+
+@jax.jit
+def bar_plus(signal, p=2):
+ '''max(0,signal)**p'''
+ return jax.nn.relu(signal) ** p
+
+
+@jax.jit
+def bar_minus(signal, p=2):
+ '''min(0,signal)**p'''
+ return (-jax.nn.relu(-signal)) ** p
+
+@functools.partial(jax.jit, static_argnames=("axis", "keepdims"))
+def M0(signal, eps, weights=None, axis=1, keepdims=True):
+ '''Used in gsmr approx method, Eq 4(a) in https://arxiv.org/abs/2405.10996'''
+ if weights is None:
+ weights = jnp.ones_like(signal)
+ sum_w = weights.sum(axis, keepdims=keepdims)
+ return (
+ eps**sum_w + jnp.prod(signal**weights, axis=axis, keepdims=keepdims)
+ ) ** (1 / sum_w)
+
+@functools.partial(jax.jit, static_argnames=("axis", "keepdims"))
+def Mp(signal, eps, p, weights=None, axis=1, keepdims=True):
+ '''Used in gsmr approx method, Eq 4(b) in https://arxiv.org/abs/2405.10996'''
+ if weights is None:
+ weights = jnp.ones_like(signal)
+ sum_w = weights.sum(axis, keepdims=keepdims)
+ return (
+ eps**p + 1 / sum_w * jnp.sum(weights * signal**p, axis=axis, keepdims=keepdims)
+ ) ** (1 / p)
+
+@functools.partial(jax.jit, static_argnames=("axis", "keepdims"))
+def gmsr_min(signal, eps, p, weights=None, axis=1, keepdims=True):
+ '''Used in gsmr approx method, Eq 3 in https://arxiv.org/abs/2405.10996'''
+
+ return (
+ M0(bar_plus(signal, 2), eps, weights=weights, axis=axis, keepdims=keepdims)
+ ** 0.5
+ - Mp(
+ bar_minus(signal, 2), eps, p, weights=weights, axis=axis, keepdims=keepdims
+ )
+ ** 0.5
+ )
+
+@functools.partial(jax.jit, static_argnames=("axis", "keepdims"))
+def gmsr_max(signal, eps, p, weights=None, axis=1, keepdims=True):
+ '''Used in gsmr approx method, Eq 4(a) but for max in https://arxiv.org/abs/2405.10996'''
+
+ return -gmsr_min(-signal, eps, p, weights=weights, axis=axis, keepdims=keepdims)
+
+@functools.partial(jax.jit, static_argnames=("axis", "keepdims"))
+def gmsr_min_turbo(signal, eps, p, weights=None, axis=1, keepdims=True):
+ # TODO: (norrisg) make actually turbo (faster than normal `gmsr_min`)
+ pos_idx = signal > 0.0
+ neg_idx = ~pos_idx
+
+ return jnp.where(
+ neg_idx.sum(axis, keepdims=keepdims) > 0,
+ eps**0.5
+ - Mp(
+ bar_minus(signal, 2),
+ eps,
+ p,
+ weights=weights,
+ axis=axis,
+ keepdims=keepdims,
+ )
+ ** 0.5,
+ M0(bar_plus(signal, 2), eps, weights=weights, axis=axis, keepdims=keepdims)
+ ** 0.5
+ - eps**0.5,
+ )
+
+@functools.partial(jax.jit, static_argnames=("axis", "keepdims"))
+def gmsr_max_turbo(signal, eps, p, weights=None, axis=1, keepdims=True):
+ return -gmsr_min_turbo(
+ -signal, eps, p, weights=weights, axis=axis, keepdims=keepdims
+ )
+
+
+def gmsr_min_fast(signal, eps, p):
+ # TODO: (norrisg) allow `axis` specification
+
+ # Split indices into positive and non-positive values
+ pos_idx = signal > 0.0
+ neg_idx = ~pos_idx
+
+ weights = jnp.ones_like(signal)
+
+ # Sum of all weights
+ sum_w = weights.sum()
+
+ # If there exists a negative element
+ if signal[neg_idx].size > 0:
+ sums = 0.0
+ sums = jnp.sum(weights[neg_idx] * (signal[neg_idx] ** (2 * p)))
+ Mp = (eps**p + (sums / sum_w)) ** (1 / p)
+ h_min = eps**0.5 - Mp**0.5
+
+ # If all values are positive
+ else:
+ mult = 1.0
+ mult = jnp.prod(signal[pos_idx] ** (2 * weights[pos_idx]))
+ M0 = (eps**sum_w + mult) ** (1 / sum_w)
+ h_min = M0**0.5 - eps**0.5
+
+ return jnp.reshape(h_min, (1, 1, 1))
+
+
+def gmsr_max_fast(signal, eps, p):
+ return -gmsr_min_fast(-signal, eps, p)
+
+@functools.partial(jax.jit, static_argnames=("axis", "keepdims", "approx_method", "padding"))
+def maxish(signal, axis, keepdims=True, approx_method="true", temperature=None, **kwargs):
+ """
+ Function to compute max(ish) along an axis.
+
+ Args:
+ signal: A jnp.array or an Expression
+ axis: (Int) axis along to compute max(ish)
+ keepdims: (Bool) whether to keep the original array size. Defaults to True
+ approx_method: (String) argument to choose the type of max(ish) approximation. possible choices are "true", "logsumexp", "softmax", "gmsr" (https://arxiv.org/abs/2405.10996).
+ temperature: Optional, required for approx_method not True.
+
+ Returns:
+ jnp.array corresponding to the maxish
+
+ Raises:
+ If Expression does not have a value, or invalid approx_method
+
+ """
+
+ # if isinstance(signal, Expression):
+ # assert (
+ # signal.value is not None
+ # ), "Input Expression does not have numerical values"
+ # signal = signal.value
+
+ match approx_method:
+ case "true":
+ """jax keeps track of multiple max values and will distribute the gradients across all max values!
+ e.g., jax.grad(jnp.max)(jnp.array([0.01, 0.0, 0.01])) # --> Array([0.5, 0. , 0.5], dtype=float32)
+ """
+ return jnp.max(signal, axis, keepdims=keepdims)
+
+ case "logsumexp":
+ """https://jax.readthedocs.io/en/latest/_autosummary/jax.scipy.special.logsumexp.html"""
+ assert temperature is not None, "need a temperature value"
+ return (
+ jax.scipy.special.logsumexp(
+ temperature * signal, axis=axis, keepdims=keepdims
+ )
+ / temperature
+ )
+
+ case "softmax":
+ assert temperature is not None, "need a temperature value"
+ return (jax.nn.softmax(temperature * signal, axis) * signal).sum(
+ axis, keepdims=keepdims
+ )
+
+ case "gmsr":
+ assert (
+ temperature is not None
+ ), "temperature tuple containing (eps, p) is required"
+ (eps, p) = temperature
+ return gmsr_max(signal, eps, p, axis=axis, keepdims=keepdims)
+
+ case _:
+ raise ValueError("Invalid approx_method")
+
+@functools.partial(jax.jit, static_argnames=("axis", "keepdims", "approx_method", "padding"))
+def minish(signal, axis, keepdims=True, approx_method="true", temperature=None, **kwargs):
+ '''
+ Same as maxish
+ '''
+ return -maxish(-signal, axis, keepdims, approx_method, temperature, **kwargs)
diff --git a/test_timing.py b/test_timing.py
deleted file mode 100644
index 4ebc53c..0000000
--- a/test_timing.py
+++ /dev/null
@@ -1,113 +0,0 @@
-import jax
-import jax.numpy as jnp
-import numpy as np
-from stljax.formula import *
-from stljax.viz import *
-import matplotlib.pyplot as plt
-import timeit
-import statistics
-import pickle
-import sys
-
-if __name__ == "__main__":
-
- args = sys.argv[1:]
- filename = args[0]
- max_T = int(args[1])
-
-
- axis = 0
- pred_rev = Predicate('x', lambda x: x)
- interval = [2, 5]
- mask = Always(pred_rev > 4, interval=interval)
- recurrent = AlwaysRecurrent(pred_rev > 4, interval=interval)
-
-
-
- def grad_mask(signal):
- return jax.vmap(jax.grad(lambda x: mask(x).mean()))(signal)
- def grad_recurrent(signal):
- return jax.vmap(jax.grad(lambda x: recurrent(x).mean()))(signal)
-
- def mask_(signal):
- return jax.vmap(lambda x: mask(x).mean())(signal)
- def recurrent_(signal):
- return jax.vmap(lambda x: recurrent(x).mean())(signal)
-
-
- @jax.jit
- def grad_mask_jit(signal):
- return jax.vmap(jax.grad(lambda x: mask(x).mean()))(signal)
- @jax.jit
- def grad_recurrent_jit(signal):
- return jax.vmap(jax.grad(lambda x: recurrent(x).mean()))(signal)
- @jax.jit
- def mask_jit(signal):
- return jax.vmap(lambda x: mask(x).mean())(signal)
- @jax.jit
- def recurrent_jit(signal):
- return jax.vmap(lambda x: recurrent(x).mean())(signal)
-
- # Number of loops per run
- loops = 100
- # Number of runs
- runs = 25
- T = 2
-
- bs = 256
- means = []
- stds = []
- data = {}
-
- functions = ["mask_", "recurrent_", "grad_mask", "grad_recurrent", "mask_jit", "recurrent_jit", "grad_mask_jit", "grad_recurrent_jit"]
- # functions = ["mask_jit", "recurrent_jit", "grad_mask_jit", "grad_recurrent_jit"]
- # functions = ["mask_jit", "grad_mask_jit"]
-
- Ts = []
- data["functions"] = functions
- data["runs"] = runs
- data["loops"] = loops
- while T <= max_T:
- Ts.append(T)
- data['Ts'] = Ts
- print("running ", T)
- signal = jnp.array(np.random.random([bs, T]))
- times_list = []
- data[str(T)] = {}
-
- for f in functions:
- print("timing ", f)
- timeit.repeat(f + "(signal)", globals=globals(), repeat=1, number=1)
- times = timeit.repeat(f + "(signal)", globals=globals(), repeat=runs, number=loops)
- times_list.append(times)
- print("timing: ", statistics.mean(times), statistics.stdev(times))
- data[str(T)][f] = times
- with open(filename + '.pkl', 'wb') as f:
- pickle.dump(data, f)
-
- T *= 2
-
-
- # means = []
- # stds = []
- # for k in loaded_dict.keys():
- # if k in ["Ts", "functions"]:
- # break
- # mus = []
- # sts = []
- # for f in loaded_dict[k].keys():
- # mus.append(statistics.mean(loaded_dict[k][f])/loaded_dict["loops"])
- # sts.append(statistics.stdev(loaded_dict[k][f])/loaded_dict["loops"])
-
- # means.append(mus)
- # stds.append(sts)
- # means = np.array(means)
- # stds = np.array(stds)
-
- # plt.plot(loaded_dict["Ts"], means * 1E3)
- # plt.yscale("log")
- # plt.legend(loaded_dict["functions"])
- # plt.grid()
- # plt.xlabel("signal length")
- # plt.ylabel("computation time [ms]")
-