Created
January 30, 2025 23:30
-
-
Save avivajpeyi/bfa87f9d16c4c16b3580c2da3a33c20d to your computer and use it in GitHub Desktop.
testing_vae_continuous.ipynb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"nbformat": 4, | |
"nbformat_minor": 0, | |
"metadata": { | |
"colab": { | |
"provenance": [], | |
"authorship_tag": "ABX9TyPoBUofCojwEVnLA8NGeZEc", | |
"include_colab_link": true | |
}, | |
"kernelspec": { | |
"name": "python3", | |
"display_name": "Python 3" | |
}, | |
"language_info": { | |
"name": "python" | |
} | |
}, | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "view-in-github", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"<a href=\"https://colab.research.google.com/gist/avivajpeyi/bfa87f9d16c4c16b3580c2da3a33c20d/testing_vae_continuous.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"source": [ | |
"# VAE on 1d continuous data\n", | |
"\n", | |
"\n", | |
"Code taken from https://github.com/theorashid/jax-vae/blob/main/vae-continuous.py\n", | |
"\n" | |
], | |
"metadata": { | |
"id": "PGF4cDjtgMFF" | |
} | |
}, | |
{ | |
"cell_type": "code", | |
"source": [ | |
"! pip install dm-haiku tinygp" | |
], | |
"metadata": { | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"id": "mvDmNce3gyA-", | |
"outputId": "de9aa222-242e-41fd-e6da-df571c2602c9" | |
}, | |
"execution_count": 2, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"Collecting dm-haiku\n", | |
" Downloading dm_haiku-0.0.13-py3-none-any.whl.metadata (19 kB)\n", | |
"Collecting tinygp\n", | |
" Downloading tinygp-0.3.0-py3-none-any.whl.metadata (2.5 kB)\n", | |
"Requirement already satisfied: absl-py>=0.7.1 in /usr/local/lib/python3.11/dist-packages (from dm-haiku) (1.4.0)\n", | |
"Collecting jmp>=0.0.2 (from dm-haiku)\n", | |
" Downloading jmp-0.0.4-py3-none-any.whl.metadata (8.9 kB)\n", | |
"Requirement already satisfied: numpy>=1.18.0 in /usr/local/lib/python3.11/dist-packages (from dm-haiku) (1.26.4)\n", | |
"Requirement already satisfied: tabulate>=0.8.9 in /usr/local/lib/python3.11/dist-packages (from dm-haiku) (0.9.0)\n", | |
"Collecting equinox (from tinygp)\n", | |
" Downloading equinox-0.11.11-py3-none-any.whl.metadata (18 kB)\n", | |
"Requirement already satisfied: jax in /usr/local/lib/python3.11/dist-packages (from tinygp) (0.4.33)\n", | |
"Requirement already satisfied: jaxlib in /usr/local/lib/python3.11/dist-packages (from tinygp) (0.4.33)\n", | |
"Collecting jax (from tinygp)\n", | |
" Downloading jax-0.5.0-py3-none-any.whl.metadata (22 kB)\n", | |
"Collecting jaxtyping>=0.2.20 (from equinox->tinygp)\n", | |
" Downloading jaxtyping-0.2.37-py3-none-any.whl.metadata (6.6 kB)\n", | |
"Requirement already satisfied: typing-extensions>=4.5.0 in /usr/local/lib/python3.11/dist-packages (from equinox->tinygp) (4.12.2)\n", | |
"Collecting jaxlib (from tinygp)\n", | |
" Downloading jaxlib-0.5.0-cp311-cp311-manylinux2014_x86_64.whl.metadata (978 bytes)\n", | |
"Requirement already satisfied: ml_dtypes>=0.4.0 in /usr/local/lib/python3.11/dist-packages (from jax->tinygp) (0.4.1)\n", | |
"Requirement already satisfied: opt_einsum in /usr/local/lib/python3.11/dist-packages (from jax->tinygp) (3.4.0)\n", | |
"Requirement already satisfied: scipy>=1.11.1 in /usr/local/lib/python3.11/dist-packages (from jax->tinygp) (1.13.1)\n", | |
"Collecting wadler-lindig>=0.1.3 (from jaxtyping>=0.2.20->equinox->tinygp)\n", | |
" Downloading wadler_lindig-0.1.3-py3-none-any.whl.metadata (17 kB)\n", | |
"Downloading dm_haiku-0.0.13-py3-none-any.whl (373 kB)\n", | |
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m373.9/373.9 kB\u001b[0m \u001b[31m17.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", | |
"\u001b[?25hDownloading tinygp-0.3.0-py3-none-any.whl (44 kB)\n", | |
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m44.0/44.0 kB\u001b[0m \u001b[31m3.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", | |
"\u001b[?25hDownloading jmp-0.0.4-py3-none-any.whl (18 kB)\n", | |
"Downloading equinox-0.11.11-py3-none-any.whl (179 kB)\n", | |
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m179.2/179.2 kB\u001b[0m \u001b[31m14.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", | |
"\u001b[?25hDownloading jax-0.5.0-py3-none-any.whl (2.3 MB)\n", | |
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.3/2.3 MB\u001b[0m \u001b[31m51.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", | |
"\u001b[?25hDownloading jaxlib-0.5.0-cp311-cp311-manylinux2014_x86_64.whl (102.0 MB)\n", | |
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m102.0/102.0 MB\u001b[0m \u001b[31m8.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", | |
"\u001b[?25hDownloading jaxtyping-0.2.37-py3-none-any.whl (56 kB)\n", | |
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.3/56.3 kB\u001b[0m \u001b[31m4.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", | |
"\u001b[?25hDownloading wadler_lindig-0.1.3-py3-none-any.whl (20 kB)\n", | |
"Installing collected packages: wadler-lindig, jmp, jaxtyping, jaxlib, dm-haiku, jax, equinox, tinygp\n", | |
" Attempting uninstall: jaxlib\n", | |
" Found existing installation: jaxlib 0.4.33\n", | |
" Uninstalling jaxlib-0.4.33:\n", | |
" Successfully uninstalled jaxlib-0.4.33\n", | |
" Attempting uninstall: jax\n", | |
" Found existing installation: jax 0.4.33\n", | |
" Uninstalling jax-0.4.33:\n", | |
" Successfully uninstalled jax-0.4.33\n", | |
"Successfully installed dm-haiku-0.0.13 equinox-0.11.11 jax-0.5.0 jaxlib-0.5.0 jaxtyping-0.2.37 jmp-0.0.4 tinygp-0.3.0 wadler-lindig-0.1.3\n" | |
] | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"source": [ | |
"\"\"\"Variational Autoencoder example on continuous Gaussian process priors.\"\"\"\n", | |
"\n", | |
"from typing import Iterator, NamedTuple, Sequence, Tuple, Type\n", | |
"\n", | |
"import haiku as hk\n", | |
"import jax\n", | |
"import jax.numpy as jnp\n", | |
"import numpy as np\n", | |
"import optax\n", | |
"from tinygp import GaussianProcess, kernels\n", | |
"\n", | |
"\n", | |
"class flags(NamedTuple):\n", | |
" train_size: int = 16000\n", | |
" test_size: int = 4000\n", | |
" batch_size: int = 128\n", | |
" learning_rate: float = 0.001\n", | |
"\n", | |
" training_steps: int = 10000\n", | |
" eval_frequency: int = 100\n", | |
" random_seed: int = 42\n", | |
" alsologtostderr: bool = True\n", | |
"\n", | |
"\n", | |
"FLAGS = flags()\n", | |
"\n", | |
"\n", | |
"\n", | |
"PRNGKey = jnp.ndarray\n", | |
"Batch = Type[jnp.ndarray]\n", | |
"\n", | |
"SAMPLE_SHAPE: Sequence[int] = (100, 1)\n", | |
"\n", | |
"\n", | |
"def generate_gp_samples(\n", | |
" X: jnp.ndarray,\n", | |
" var: float,\n", | |
" scale: float,\n", | |
" num_draws: int,\n", | |
" batch_size: int,\n", | |
" sample_shape: Sequence[int] = SAMPLE_SHAPE,\n", | |
" seed: int = 1,\n", | |
") -> Iterator[Batch]:\n", | |
" kernel = var * kernels.ExpSquared(scale=scale)\n", | |
" gp = GaussianProcess(kernel, X)\n", | |
"\n", | |
" draws = gp.sample(\n", | |
" jax.random.PRNGKey(seed=seed),\n", | |
" shape=(\n", | |
" num_draws,\n", | |
" batch_size,\n", | |
" ),\n", | |
" )\n", | |
"\n", | |
" draws = jnp.reshape(draws, (-1, *(batch_size, *sample_shape)))\n", | |
"\n", | |
" return iter(draws)\n", | |
"\n", | |
"\n", | |
"class Encoder(hk.Module):\n", | |
" \"\"\"Encoder model.\"\"\"\n", | |
"\n", | |
" def __init__(\n", | |
" self,\n", | |
" hidden_size1: int = 50,\n", | |
" hidden_size2: int = 25,\n", | |
" latent_size: int = 10,\n", | |
" ):\n", | |
" super().__init__()\n", | |
" self._hidden_size1 = hidden_size1\n", | |
" self._hidden_size2 = hidden_size2\n", | |
" self._latent_size = latent_size\n", | |
" self.act = jax.nn.relu\n", | |
"\n", | |
" def __call__(self, x: jnp.ndarray) -> Tuple[jnp.ndarray, jnp.ndarray]:\n", | |
" x = hk.Flatten()(x)\n", | |
" x = hk.Sequential(\n", | |
" [\n", | |
" hk.Linear(self._hidden_size1),\n", | |
" self.act,\n", | |
" hk.Linear(self._hidden_size2),\n", | |
" self.act,\n", | |
" ]\n", | |
" )(x)\n", | |
"\n", | |
" mean = hk.Linear(self._latent_size)(x)\n", | |
" log_stddev = hk.Linear(self._latent_size)(x)\n", | |
" stddev = jnp.exp(log_stddev)\n", | |
"\n", | |
" return mean, stddev\n", | |
"\n", | |
"\n", | |
"class Decoder(hk.Module):\n", | |
" \"\"\"Decoder model.\"\"\"\n", | |
"\n", | |
" def __init__(\n", | |
" self,\n", | |
" hidden_size1: int = 25,\n", | |
" hidden_size2: int = 50,\n", | |
" output_shape: Sequence[int] = SAMPLE_SHAPE,\n", | |
" ):\n", | |
" super().__init__()\n", | |
" self._hidden_size1 = hidden_size1\n", | |
" self._hidden_size2 = hidden_size2\n", | |
" self._output_shape = output_shape\n", | |
" self.act = jax.nn.relu\n", | |
"\n", | |
" def __call__(self, z: jnp.ndarray) -> jnp.ndarray:\n", | |
" output = hk.Sequential(\n", | |
" [\n", | |
" hk.Linear(self._hidden_size1),\n", | |
" self.act,\n", | |
" hk.Linear(self._hidden_size2),\n", | |
" self.act,\n", | |
" hk.Linear(np.prod(self._output_shape)),\n", | |
" ]\n", | |
" )(z)\n", | |
"\n", | |
" output = jnp.reshape(output, (-1, *self._output_shape))\n", | |
"\n", | |
" return output\n", | |
"\n", | |
"\n", | |
"class VAEOutput(NamedTuple):\n", | |
" mean: jnp.ndarray\n", | |
" stddev: jnp.ndarray\n", | |
" output: jnp.ndarray\n", | |
"\n", | |
"\n", | |
"class VariationalAutoEncoder(hk.Module):\n", | |
" \"\"\"Main VAE model class, uses Encoder & Decoder under the hood.\"\"\"\n", | |
"\n", | |
" def __init__(\n", | |
" self,\n", | |
" hidden_size1: int = 50,\n", | |
" hidden_size2: int = 25,\n", | |
" latent_size: int = 10,\n", | |
" output_shape: Sequence[int] = SAMPLE_SHAPE,\n", | |
" ):\n", | |
" super().__init__()\n", | |
" self._hidden_size1 = hidden_size1\n", | |
" self._hidden_size2 = hidden_size2\n", | |
" self._latent_size = latent_size\n", | |
" self._output_shape = output_shape\n", | |
"\n", | |
" def __call__(self, x: jnp.ndarray) -> VAEOutput:\n", | |
" x = x.astype(jnp.float32)\n", | |
" mean, stddev = Encoder(\n", | |
" self._hidden_size1, self._hidden_size2, self._latent_size\n", | |
" )(x)\n", | |
" z = mean + stddev * jax.random.normal(hk.next_rng_key(), mean.shape)\n", | |
" output = Decoder(\n", | |
" self._hidden_size2,\n", | |
" self._hidden_size1,\n", | |
" self._output_shape,\n", | |
" )(z)\n", | |
"\n", | |
" return VAEOutput(mean, stddev, output)\n", | |
"\n", | |
"\n", | |
"def mean_squared_error(x1: jnp.ndarray, x2: jnp.ndarray) -> jnp.ndarray:\n", | |
" \"\"\"Calculate mean squared error between two tensors.\n", | |
"\n", | |
" Args:\n", | |
" x1: variable tensor\n", | |
" x2: variable tensor, must be of same shape as x1\n", | |
"\n", | |
" Returns:\n", | |
" A scalar representing mean square error for the two input tensors.\n", | |
" \"\"\"\n", | |
" if x1.shape != x2.shape:\n", | |
" raise ValueError(\"x1 and x2 must be of the same shape\")\n", | |
"\n", | |
" x1 = jnp.reshape(x1, (x1.shape[0], -1))\n", | |
" x2 = jnp.reshape(x2, (x2.shape[0], -1))\n", | |
"\n", | |
" return jnp.mean(jnp.square(x1 - x2), axis=-1)\n", | |
"\n", | |
"\n", | |
"def kl_gaussian(mean: jnp.ndarray, var: jnp.ndarray) -> jnp.ndarray:\n", | |
" r\"\"\"Calculate KL divergence between given and standard gaussian distributions.\n", | |
"\n", | |
" KL(p, q) = H(p, q) - H(p) = -\\int p(x)log(q(x))dx - -\\int p(x)log(p(x))dx\n", | |
" = 0.5 * [log(|s2|/|s1|) - 1 + tr(s1/s2) + (m1-m2)^2/s2]\n", | |
" = 0.5 * [-log(|s1|) - 1 + tr(s1) + m1^2] (if m2 = 0, s2 = 1)\n", | |
"\n", | |
" Args:\n", | |
" mean: mean vector of the first distribution\n", | |
" var: diagonal vector of covariance matrix of the first distribution\n", | |
"\n", | |
" Returns:\n", | |
" A scalar representing KL divergence of the two Gaussian distributions.\n", | |
" \"\"\"\n", | |
" return 0.5 * jnp.sum(-jnp.log(var) - 1.0 + var + jnp.square(mean), axis=-1)\n", | |
"\n", | |
"\n", | |
"\n" | |
], | |
"metadata": { | |
"id": "21PP8Q9DgTFi" | |
}, | |
"execution_count": 3, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"source": [ | |
"## MAIN\n", | |
"\n", | |
"model = hk.transform(\n", | |
" lambda x: VariationalAutoEncoder()(x)\n", | |
") # pylint: disable=unnecessary-lambda\n", | |
"optimizer = optax.adam(FLAGS.learning_rate)\n", | |
"\n", | |
"val_losses = []\n", | |
"\n", | |
"@jax.jit\n", | |
"def loss_fn(\n", | |
" params: hk.Params,\n", | |
" rng_key: PRNGKey,\n", | |
" batch: Batch,\n", | |
") -> jnp.ndarray:\n", | |
" \"\"\"ELBO: E_p[log(x)] - KL(d||q), where p ~ Be(0.5) and q ~ N(0,1).\"\"\"\n", | |
" outputs: VAEOutput = model.apply(params, rng_key, batch)\n", | |
"\n", | |
" log_likelihood = -mean_squared_error(batch, outputs.output)\n", | |
" kl = kl_gaussian(outputs.mean, jnp.square(outputs.stddev))\n", | |
" elbo = log_likelihood - kl\n", | |
"\n", | |
" return -jnp.mean(elbo)\n", | |
"\n", | |
"@jax.jit\n", | |
"def update(\n", | |
" params: hk.Params,\n", | |
" rng_key: PRNGKey,\n", | |
" opt_state: optax.OptState,\n", | |
" batch: Batch,\n", | |
") -> Tuple[hk.Params, optax.OptState]:\n", | |
" \"\"\"Single SGD update step.\"\"\"\n", | |
" grads = jax.grad(loss_fn)(params, rng_key, batch)\n", | |
" updates, new_opt_state = optimizer.update(grads, opt_state)\n", | |
" new_params = optax.apply_updates(params, updates)\n", | |
" return new_params, new_opt_state\n", | |
"\n", | |
"rng_seq = hk.PRNGSequence(FLAGS.random_seed)\n", | |
"params = model.init(next(rng_seq), np.zeros((1, *SAMPLE_SHAPE)))\n", | |
"opt_state = optimizer.init(params)\n", | |
"\n", | |
"X = jnp.linspace(0, 10, 100)\n", | |
"\n", | |
"train_ds = generate_gp_samples(\n", | |
" X,\n", | |
" var=1.0,\n", | |
" scale=1.0,\n", | |
" num_draws=FLAGS.train_size,\n", | |
" batch_size=FLAGS.batch_size,\n", | |
")\n", | |
"valid_ds = generate_gp_samples(\n", | |
" X,\n", | |
" var=1.0,\n", | |
" scale=1.0,\n", | |
" num_draws=FLAGS.test_size,\n", | |
" batch_size=FLAGS.batch_size,\n", | |
")\n", | |
"\n", | |
"for step in range(FLAGS.training_steps):\n", | |
" params, opt_state = update(\n", | |
" params,\n", | |
" next(rng_seq),\n", | |
" opt_state,\n", | |
" next(train_ds),\n", | |
" )\n", | |
"\n", | |
" if step % FLAGS.eval_frequency == 0:\n", | |
" val_loss = loss_fn(params, next(rng_seq), next(valid_ds))\n", | |
" val_losses.append([step, val_loss])\n", | |
" print(f\"STEP: {step}; Validation ELBO: {-val_loss:.3f}\")\n" | |
], | |
"metadata": { | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"id": "eUD5TbgEgtXU", | |
"outputId": "5d8c26dd-7d72-4140-c6ff-04ee4302fcb6" | |
}, | |
"execution_count": 5, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"STEP: 0; Validation ELBO: -2.123\n", | |
"STEP: 100; Validation ELBO: -1.000\n", | |
"STEP: 200; Validation ELBO: -1.017\n", | |
"STEP: 300; Validation ELBO: -1.015\n", | |
"STEP: 400; Validation ELBO: -1.094\n", | |
"STEP: 500; Validation ELBO: -0.986\n", | |
"STEP: 600; Validation ELBO: -1.120\n", | |
"STEP: 700; Validation ELBO: -1.007\n", | |
"STEP: 800; Validation ELBO: -0.904\n", | |
"STEP: 900; Validation ELBO: -1.028\n", | |
"STEP: 1000; Validation ELBO: -1.011\n", | |
"STEP: 1100; Validation ELBO: -1.037\n", | |
"STEP: 1200; Validation ELBO: -0.992\n", | |
"STEP: 1300; Validation ELBO: -1.002\n", | |
"STEP: 1400; Validation ELBO: -0.976\n", | |
"STEP: 1500; Validation ELBO: -1.071\n", | |
"STEP: 1600; Validation ELBO: -1.028\n", | |
"STEP: 1700; Validation ELBO: -1.039\n", | |
"STEP: 1800; Validation ELBO: -0.927\n", | |
"STEP: 1900; Validation ELBO: -0.960\n", | |
"STEP: 2000; Validation ELBO: -0.990\n", | |
"STEP: 2100; Validation ELBO: -0.953\n", | |
"STEP: 2200; Validation ELBO: -1.076\n", | |
"STEP: 2300; Validation ELBO: -0.984\n", | |
"STEP: 2400; Validation ELBO: -0.966\n", | |
"STEP: 2500; Validation ELBO: -1.084\n", | |
"STEP: 2600; Validation ELBO: -0.977\n", | |
"STEP: 2700; Validation ELBO: -1.025\n", | |
"STEP: 2800; Validation ELBO: -0.975\n", | |
"STEP: 2900; Validation ELBO: -0.948\n", | |
"STEP: 3000; Validation ELBO: -1.046\n", | |
"STEP: 3100; Validation ELBO: -0.953\n", | |
"STEP: 3200; Validation ELBO: -0.963\n", | |
"STEP: 3300; Validation ELBO: -0.971\n", | |
"STEP: 3400; Validation ELBO: -0.998\n", | |
"STEP: 3500; Validation ELBO: -0.957\n", | |
"STEP: 3600; Validation ELBO: -1.029\n", | |
"STEP: 3700; Validation ELBO: -0.940\n", | |
"STEP: 3800; Validation ELBO: -0.936\n", | |
"STEP: 3900; Validation ELBO: -0.936\n", | |
"STEP: 4000; Validation ELBO: -1.013\n", | |
"STEP: 4100; Validation ELBO: -1.111\n", | |
"STEP: 4200; Validation ELBO: -0.948\n", | |
"STEP: 4300; Validation ELBO: -0.891\n", | |
"STEP: 4400; Validation ELBO: -0.975\n", | |
"STEP: 4500; Validation ELBO: -0.998\n", | |
"STEP: 4600; Validation ELBO: -0.935\n", | |
"STEP: 4700; Validation ELBO: -1.082\n", | |
"STEP: 4800; Validation ELBO: -1.068\n", | |
"STEP: 4900; Validation ELBO: -0.982\n", | |
"STEP: 5000; Validation ELBO: -1.067\n", | |
"STEP: 5100; Validation ELBO: -0.975\n", | |
"STEP: 5200; Validation ELBO: -0.988\n", | |
"STEP: 5300; Validation ELBO: -1.039\n", | |
"STEP: 5400; Validation ELBO: -0.959\n", | |
"STEP: 5500; Validation ELBO: -1.003\n", | |
"STEP: 5600; Validation ELBO: -0.961\n", | |
"STEP: 5700; Validation ELBO: -1.057\n", | |
"STEP: 5800; Validation ELBO: -0.971\n", | |
"STEP: 5900; Validation ELBO: -0.908\n", | |
"STEP: 6000; Validation ELBO: -1.001\n", | |
"STEP: 6100; Validation ELBO: -0.877\n", | |
"STEP: 6200; Validation ELBO: -0.914\n", | |
"STEP: 6300; Validation ELBO: -0.937\n", | |
"STEP: 6400; Validation ELBO: -0.964\n", | |
"STEP: 6500; Validation ELBO: -0.932\n", | |
"STEP: 6600; Validation ELBO: -1.000\n", | |
"STEP: 6700; Validation ELBO: -1.032\n", | |
"STEP: 6800; Validation ELBO: -1.022\n", | |
"STEP: 6900; Validation ELBO: -0.993\n", | |
"STEP: 7000; Validation ELBO: -1.069\n", | |
"STEP: 7100; Validation ELBO: -0.983\n", | |
"STEP: 7200; Validation ELBO: -1.052\n", | |
"STEP: 7300; Validation ELBO: -1.029\n", | |
"STEP: 7400; Validation ELBO: -0.990\n", | |
"STEP: 7500; Validation ELBO: -0.986\n", | |
"STEP: 7600; Validation ELBO: -1.111\n", | |
"STEP: 7700; Validation ELBO: -0.953\n", | |
"STEP: 7800; Validation ELBO: -0.997\n", | |
"STEP: 7900; Validation ELBO: -1.051\n", | |
"STEP: 8000; Validation ELBO: -0.986\n", | |
"STEP: 8100; Validation ELBO: -0.999\n", | |
"STEP: 8200; Validation ELBO: -0.910\n", | |
"STEP: 8300; Validation ELBO: -1.035\n", | |
"STEP: 8400; Validation ELBO: -0.993\n", | |
"STEP: 8500; Validation ELBO: -0.960\n", | |
"STEP: 8600; Validation ELBO: -1.011\n", | |
"STEP: 8700; Validation ELBO: -1.008\n", | |
"STEP: 8800; Validation ELBO: -1.010\n", | |
"STEP: 8900; Validation ELBO: -0.992\n", | |
"STEP: 9000; Validation ELBO: -1.072\n", | |
"STEP: 9100; Validation ELBO: -0.925\n", | |
"STEP: 9200; Validation ELBO: -1.018\n", | |
"STEP: 9300; Validation ELBO: -1.065\n", | |
"STEP: 9400; Validation ELBO: -0.987\n", | |
"STEP: 9500; Validation ELBO: -0.985\n", | |
"STEP: 9600; Validation ELBO: -1.096\n", | |
"STEP: 9700; Validation ELBO: -1.015\n", | |
"STEP: 9800; Validation ELBO: -0.962\n", | |
"STEP: 9900; Validation ELBO: -0.991\n" | |
] | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"source": [ | |
"import matplotlib.pyplot as plt\n", | |
"\n", | |
"\n", | |
"def plot_losses(val_losses):\n", | |
" steps, losses = np.array(val_losses).T\n", | |
" plt.plot(steps, -losses)\n", | |
" plt.xlabel(\"Steps\")\n", | |
" plt.ylabel(\"Validataion ELBO\")\n", | |
" plt.show()\n", | |
"\n", | |
"\n", | |
"plot_losses(val_losses)" | |
], | |
"metadata": { | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 449 | |
}, | |
"id": "1Qv9cFP0g72t", | |
"outputId": "07f76d5c-c6c3-49ea-e279-6791a3fafab1" | |
}, | |
"execution_count": 10, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": [ | |
"<Figure size 640x480 with 1 Axes>" | |
], | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkYAAAGwCAYAAABM/qr1AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAb4hJREFUeJzt3Xl8U1X6P/DPTdOk+0JbWpYWKAXKKgVkqQooKLihiIjKqKCjI6OiyM+FUXF0BlFn3GXADdGvuCsKo6Oyi8giS9kpOy0tLUvpvqRJzu+P5N4kbdImJem9pZ/369UXtFl6epvmPvc5z3mOJIQQICIiIiLo1B4AERERkVYwMCIiIiKyY2BEREREZMfAiIiIiMiOgRERERGRHQMjIiIiIjsGRkRERER2erUHoHVWqxX5+fmIjIyEJElqD4eIiIi8IIRAWVkZ2rdvD53O+zwQA6NG5OfnIzk5We1hEBERURPk5uaiY8eOXt+fgVEjIiMjAdgObFRUlMqjISIiIm+UlpYiOTlZOY97i4FRI+Tps6ioKAZGRERELYyvZTAsviYiIiKyY2BEREREZMfAiIiIiMiOgRERERGRHQMjIiIiIjsGRkRERER2DIyIiIiI7BgYEREREdkxMCIiIiKyY2BEREREZMfAiIiIiMiOgRERERGRHQMjIqILSI3ZovYQiFo0BkZERBeIhb8dRe/ZP2PlvkK1h0LUYjEwIiK6QKzOPgWzVeBfP2dDCKH2cIhaJAZGREQXiONnKwEA+wvKsO7gGZVHQ9QyMTAiItXVmC3YdOQsrFZmOZqq1mJFXnGV8vm7vx5RcTRELRcDIyJS3Uv/y8akdzfi660n1B5Ki5VfXAWLVSA4SEKQTsJvh85gd16J2sMianEYGBGRqqxWgWU78wEAvx3i9E9T5RTZptE6xYXjmr7tAADvrWPWiMhXDIyISFW780twuqzG9n9mOJpMri/q1CYMfxmeCgD4786TOHGuUs1hEbU4DIwIACCEwD2L/sBdCzezzoOa1Yp9p5T/HzlTgdLqWhVH03LJGaOUuDD06RCNzK5xsFgFFv52TN2BEbUwDIwIAJBfUo2V+09h7YHTyC+pavwBRH6yar9rz509eaUqjUTbvtl6ApPe2YCz5TVubz9+tgKALWMEAPfZs0af/5GDkkoGm82hutaCMgb2LR4DIwIAHCwsU/4vX3kSBVpBSTV255VCkoDBndsAAHblFas7KA0SQuDV5Qew6WgRftx10u19lKm0uHAAwIjuCeiRGIlKkwWLNx9vtrG2VkIIXPvmOlz+7zWoMrH7eEvGwIgAAIdOlSv/zznLwIiax6r9tmm0/skxGNEjAQCwixmjeo6drVSW4u8rKKt3uxDCZSoNACRJwr32rNHC346iqMLUTKNtnXKLqnD4dAXOlJtw+HR54w8gzWJgRACAg4WOP+TjzBhRM5G3rhjdMxF9O0QDAHadKFZxRNrkvFpv38n6geOZchMqTRZIEtAxNlT5+riL2qNrQjjOlJvw6JdZrB8MoD35joUDzLq3bAyMCABw8JTTVBozRtQMqkwW5YR/RXpbJTA6drYSJVWs03D228HTyv+zC8rqBTjyibhdVAiM+iDl6wa9DvMmD4BRr8Oa7NN4h00fA2ZPviNg1XJgVGkysw6qEQyMCEIIHDzlnDGqUHE0vjl6pgJ3LdyMLceK1B4K+ej3w2dQY7aiQ0wo0pMiERtuULIde7hsX2GxCvx++KzyeaXJgtw6S/Bz7H+z8jSas/SkKDw3rjcA4N+/ZOMP/q0ExF6nTN5xjV5cCiFw3Zu/sQ6qEQyMCKfKalBWbVY+b0kZo88352DtgdN47OudMFusag+HfLDSXl90RXpbSJIEAOjX0T6dxsBIsfNEMcqqzYgM0aNXuygAwL6TrnVGjh5G4W6fY9LFybixf3tYrAIPfbq90XojIQQ2HTmL8hpzg/cjB9epNG1eXJ6rrMWRM7Y6qH0FrOXzhIERKfVF7aJDAACl1WYUV7aMQs3Dp21vQEfPVGDJ9jyVR3NhO1lShf/uzMf3WXn4ZU8B1h08jS3HilBYWu3zcwkhsMrev2hUz7bK1/vYp9N2ehkYbc85h9XZpxq/Ywu23j7dmNk1Dr3by4GR60lNvphxlzECbIXYc8b3RWpCOApKqxutN1q4/hgmvbsR//zvXn/8CBe8M+U1KCx1tFHQ6lRavtNeeu5q1chGr/YASH1yfVHfDtGwWAVOldXg+NlKxIQZVB5Z446ccUwBvrnqIG7M6IDgIMb7/lBlsmD9oTP47dAZrDt4WglC69LrJCx/dAS6xLvPVrizJ78UBaXVCDMEYWhqnPL1fh1iAHjXAbvGbMGdCzej0mTB+ieuQJI9sL/QyHVYl6bFw2SxBTP761ztH1e2A3EfGAFAuFGPebcPwI3z1mNN9mksXH8Uf74std79yqpr8daqgwBsqwaFEEpGj9yT64uiQ4NRUlWL/OJq1Fqsmnsvcg6M9p+sv7qRbLT1WyNVyPVF3RIjlDfWlrAyzWyxKlfKEUY9couq8NUWbkLqL7e8swF//ngLFv1+DIdPV0An2YLnYalx6J8cg/SkSEQY9TBbhUtxsDfkZfqXpsUjJNhRLNyngy0jcvxsZaNNCbceP4eyajMsVoFjZ7U5dXG+Kk1mbD1+DgBwabcE9GwXCQDYX+DbVJqsZ7soPHNdLwDAq8sPuJwoZe+vO4pi+7E/VVaDYy1oal0t8jTapd3iERKsg8UqkHdOe41yXQIjTqV5xMCIcMg+ldatbSSS7V1zc1rAiSb3XBXMVoGQYB1mXNkdAPD2qoOoMbfMosLyGjOE0MZy6jPlNdiVVwJJAiYPScH8yQOw/ZmrsOyhS/HZfUPx3QOX4KdHhuOeS7sAALbnFPv0/PIyfedpNACICTMgxf4a3J3fcNbot4OOJewnL9Bu7ZuPFqHWItAhJhSd48KQnuQIHCvs9T+VJjPO2Lthe5pKc3b74BQM7BSLSpMFzy9znSorqjDhg9+OAgAijbYJhY1HztZ7DnIlZ4z6tI9WXr9avLg8WeKY9t5/skwz7zdaw8ColRNC4IB9Ki2tbYRyxanVVRXOjtqn0TrHhWPykBQkRYUgv6Qan2/OVXlkvluxtxAZz/+Cf/2crfZQADje6LvEhWPO+L64um87RIcF17tfRkoMAGB7brHXz32mvAY7TtiCnsvT29a7XV62v/NEI4GRU2+f/GLf65xagvVO02iSJKFNuAGJUUYAQLa9W71czxIdGozo0Pq/o7p0OglzxvdBkE7CT3sKsHq/o0ZrwdrDKK8xo0+HKNyV2RkAsImBUaP22v9eerePUgIjLdYZ5TsFRmU1ZpzQYFZLCxgYtXJnK0worqyFJAFdExxTaVr8o67riL3mpWtCBEKCg/DAFWkAgHmrD6G6tuGs0bfbTuDRL7M0kV2qqDHj6e92o9YilCkmd8wWK95YcRDLduQHvFGf/Ebf017s60n/5BgAtuL3c152VpZ/byltwtA2sn5dUF/7yrSG6ozOVZhcVq65mxK6EKyzZ8Uu6RavfE3OGsnFs46tQBrPFjk/h5ztm710N6pMFhSUVOOj348BAP7fVT0wrKut9mvT0aILKrOw5VgRXv5pf6PvEd4qrzHj6Bnba9oWGNkuLrWYda/7d8ICbPcYGLVy8oq05NgwhBqClFR8SwiM5GJgueh30qBkdIgJxamyGnyy0fPeUOcqTPjbkl34dlsefj1wxuP9msubKw+iwL6y68jpCtR6aDuw9sBpvLbiAB76bDvG/2f9efWj+WTjcXy5xXNmTa6Z6N1IYBQTZkBqgu34Z3mZNZJ/Vk/F0krGqIE9034/fBbO52qtBEZCCJwqrfZLIHG6rEapJcrs6ihQT5frjOzFs8qKtDbeB0YA8PCobmgfHYLcoirMW30Ib606iBqzFRd3jsWI7gkYkBKL4CAJJ0uqkVukjePrDy/+bz/+s+Zwg+8RvpCDi6SoEMRFGB11mhrMup+0/53If7N1a9XIhoFRK3fIPo3WrW0EAMfO3AWl1X67ogoUeSpN/iM36HWYPsqWNZq/5rBSg1HXJxuPo7rWFnwcV/mq7kBhmVLToZMAk8XqcUzOnXV3nCjBxAUbMO2TrT7/DLtOlODp73bjiW92KrUpdcnN6nq3j270+TKSYwHYls5745QcGEW5D4z62L9nblGVx7YRvx2yFXun2V+3zrUTavp2Wx4Gv7ASC9cf83gfq1Xgf7tO4qyHYy/7/bAtaO/VLgrxEUbl63IvI7l4Vm7I6kvGCLCtUpt9va3x4zu/HsYXf9gC5cfGpEOSJIQagtCvYwyAC6vOSJ4++nJLrl8CWLkZqXwR4etUWnGlCY9+kYXlewvPeywNMVusykXJFT1sU9hqFGCXVdei0qTt/lgMjFo5eUVaWqLtBNMm3IBwQxCEAE6c094VjzN5SiY1IUL52k0DOqJzXBjOVpjwrpvtD2rMFny0wXGl6GtmrNZi9du0ghACT3+3G2arwJW9EpWTUHaB+w0o5SvTv4xIxW2DU6CTgP/tLsDoV9fi6e92eV2ALF8pCwFsOVY/mKlwmhqQT8IN8bXOqMAexMi1MnVFhwUrJ3l3jR6FEMoU06RByQCgbLCqtp/3FAAAPlh3BBYP050L1x/FtMXbMOfHfQ0+l1xcfqnTNBrgmEqTi2e9XZHmzpjeibgivS1qLQJmq8CI7gkY3KWNcvvQVNv/Nx69MAIji1XgtD0gPVBY3mgdmzf2ONUXAXDJunvzXvH6ioP4dnsenv1+d0CnyE+V1cAqbO01Lutu27C5bqPQQCuprMXIf63BdW/+pungiIFRK3fQaUUaYGsElxKn/QLssupanCqzvcE5988JDtLhsTHpAIB3fz2iZCdk32flu2RJfPkZ9+aX4pIXV+Gej7acz9AVS7bnYfPRIoQE6/Ds9b3Q3R6cykW1dcmB0WVpCZh7U1/87+HhGNE9AbUWgU825mDEy2vw96V7Gmy4WFJZi+93OBphbj1efzpuf0EphADaRhqREOk+eHEmB0ZZOcVevbEX2n9viR4yRoBjOs1dYHT8bCVOnKtCcJCEGzM6AADKqrWx/9MO+wa4+SXVSsbHmdUq8H/2wLShlXxCCJfCa2epCeEIDpKU4lk5uPdmRVpdkiThuXG9ERKsgyTZaoucDelirzM6cmFsI3KmvMYlYG1oOtlbcmDUy57p7BgbCkmybd1yprzhurv84ip8uinH9v+SauX1EwjydHNSdIgSxB07W9GsAcryfYU4W2HCkTMVeHvVoWb7vr5iYNTKKT2M2jqyLvJ0mpYDo2NnbGOLjzDUW4lzTd8kZKTEoKrWgtdWHFC+LoTAB+ts01Yje9iumLzNGB05XY47F27CqbIarMk+BZP5/LYfKamqxQv2jMFDV3RDx9gwdE+0BacH3QRGFTVmZfmvXGPSIykSH909GF/cNxRDurSByWLFot+PYfjLq/HO2sNuv+/X206gutaKIJ2tYd8fbjJGe+tcATemR2IkQoODUFZjxuHT7rNdzgqVjJEXgZGbK3p5NVpGSiwSIo3K71/t6bSCkmqX7sdfuumptf7wGeXv6tjZCo/7VR05U4H8kmoYgnS4uHMbl9uCg3RIs1/I7MkvUfrl+DqVJktuE4av78/EZ/cOVQrfZQM7xSJIJyGvuAq5LaDusDHya0TuV7l0R/55lQyYzFalQa7892LUB6Gd/bXd2NYgb68+BJNTTeGPu042eSyNkVektY8ORXyEEfERRghhy5w1l592Fyj/f2/dERzx4v1CDQyMWrFzFSYle9LVOTBqhgLskspaLN9b2OTUsdzxOjU+ot5tkiThqWt6AgC++CMXB+yBxq8HzyC7sAzhhiA8MdaWVTpxrtLjlIcsr7gKf3p/k3L1ZxUNH5tzFaZGV2i98ks2zpSb0DUhHPfauw/3SLKd7NxljLILyyAEkBBpdKk3AYAhqXH4/L6h+PTPQzCwUyxqzFbM/d9+bDjsOv1htQplGk3+nrvzSuqdnB1XwN4FRvognbLHmTf9jArLGi6+Bhwr03aeKKk3HSFPMV1mz6TIW9n4swDbYhV4+rtd+M+aQ42+PmRy8XlUiK3/z897CurVSDkX/Arh6Dpfl9zUsX9KDEINQfVu72l/razafwpmq4BBr0OimxV+3urTIdqlA7ks3KhXfrebjrb8rJE8jduvQzQ6xISirNqsTH82xYHCMtRaBKJC9MoGyAC8WsSSW1SJL+11XXdfYlsh+OOugoCtAJQLr9vH2F4ncrPQ5lqZVlFjxq/2RrA9EiNRaxH4+7K9mlzxyMCoFTtkj9Y7xIQiwujYHSbQK9PMFismf7AR9368pclvSkfqrEira1DnNhjTOxFWYVuFAgDvr7PVHE26OAXdEyMRHCSh1iIaPKGeKqvG5Pc2Ir+kGqkJ4eisrDhxfyVYY7bgmjfX4eo31nlMUZdU1Sq9lp6/oQ8MetufYQ97xujYmYp6V7Hym1e6/YRYlyRJyEyLx9f3D8Ntg1MAALO+3enyPL8fPoujZyoQYdTjwSvSkBQVArNV1FtN5qiZaLzwWpaRYi/Azm24AFsI4agxauBE3rdDNAxBOuQVV+Ezp75Utp3mXWtvOsTYTkj+7GW0LeccPtmYg5d/ysZdCzc3WigNOKbRru7TDulJkTCZrVi6I1+5vaCkGivs+8PJY/a0Kkgu6L2oo/vfQU977Zf8fMmxodDpArNth2M6reXXGcnTzO1jQnHzwI4Azm86ba/TRYTztine9IN7c+VBmK0Cl3WLx2NjeiA0OAh5xVUB20BZfp9rZ3/tya+h/c0UGK3JPg2T2You8eFYcMdAGIJ0+PXAafwS4KLzpmBg1IrJ9UVpbV2zLkrn1gCt2Hpv3VHszrP9MW7zciVTXUfOyIXXngtOnxibDr1Owqr9p7Dwt6NYd/AMdBIw9ZLOCNJJSI5tOAAsrjThzg8249jZSnSICcXiPw9RggW5OLmuY2cqcbKkGgWl1Vi5z31PouV7C2GyWNE9MQKXONWPJEQaERMWDKtAvSkpeWl2Y8XQkiRh1jXpSIwy4tjZSry+4qBy2/9tPAYAuGlAB0QY9RjU2RbMbHFa9l9rsSoZK28Kr2VKAXYjGaPSKjNq7NOQbT0UXwNAZEgwZl5l62b+3LI9SmC480QxSqvNiArRK8Xq7exXwN4WnxdVmHDTf9ZjoX01oDt7nVYA/nboDK5/67dG2xHssN/ePyUGt9iLwp23qPn8jxxYrAKDO7fBVb0TAQDZHgIj+eQob6pblzydWmTPTHaK873w2ltDmqEA+8stuQGdRpKddJrGlQOj3w+fbfI0oafVm8rFpYfA6MjpcnyzzfbaePTK7gg1BOEKexf4HwJ0HBxTaba/F/kiq6kF2Caz1adpyJ/sF8FX9U5El/hw3DvcliV7ftlej1PKamFgdAHaevwcnlqyq9G9pg7WWaovk692cs9V+X2VxJHT5S51P03toyHPTTe0cWlqQgRuH2LLnjxv3yX86j7tlG1PUhrpNzLnh33YX1CGhEgjFv95CNpFh6JzvO0xnvbmcg5ovs/Kd3uf/+60ff3avu1dvi5JklJndKDOdJocGPT0IliJCgnGP2/sC8A2j787rwQnS6qU5cB/GtoJAJTalS3HHcHp4dPlMJmtiDDqfeqLk2Fv9JhdWIZyD20SAEcPo5iwYJc90ty597JUXN4jATVmKx74dBsqaszKNFpm13ilTqq9/QrY25Vpv+wpwLacYrerFmXy8b62Xzukxocjv6QatyzYgE835bhN/VutQlnhdFHHGPtmxhJ25ZVgb34pzBarkiWcPDRFOSm5C4wsVtFouwR5ZZrM1x5GvhhkrzPKLaoKSL+o3KJKPP71Tjz02XaUNqGAvspkwR/HivDer0fwwKfb8OQ3O2H20Aus0KmHVnKbMFySFgchoAQpnpgtVty1cDP+/NEfOF3myB566vfV2JL9N1YehFUAV6S3VbKt1/RpBwD4X4Cm0/KVqTTXjNG+gtJGv1+txYr31x3Bo19m4ZYFGzBs7kr0eOZ/yHh+OY55uEh0Vl1rwSr7NkBjeycBAB64PA3to0OQV1yF+Wu0VYjdYgKjOXPmIDMzE2FhYYiJifHqMUIIzJ49G+3atUNoaChGjx6NgwcPNv7AFu71FQeweFMOlu10f2KWHXLaPNZZ+5gQ6HUSTGZH3wtfmC3urySsVoEnv9kFk9mqvHE0JTASQigZG+el+u48PKqbyzThny/rovxfKTL3UCAp11S8NKEvOtsDsE6NrNiTjykArD1wql5weq7CpJzcr+3Xrt7j5ek05yX7QgjlOMmZgsZc2SsR1/ZtB4tV4IlvduL/NhyHVQBDurRRgq+BnWxvyNuOn1PqaJSpgXZRPk3NtI0KQYeYUAgB7Gwgs1LYSA8jZzqdhFdu6Y/EKCOOnK7AM9/vxrpD9TtBt4+2vdGf9HIqTd6DraC02uUk50wOjK7p0w7fP3gJxvROhMlixd+W7MKynfWv6I+cKUd5jRkhwTp0T4xAm3ADruxlywp9tTUXK/efQkFpNdqEGzC2TxJ6yEvu3bz+j5wuR3WtFWGGII+Bv63WzKB83tTCa29EhgSjj/3EvykAWSM5O2axCpfsZWOOnqnADW//hj5//xkTF2zAnB/34YedJ/H5H7luFxUAjqyiXJfmnNlr6CJwe24x1h44jRX7TuG6t9Zh6/FzsFqF00IF1wC2oc24DxSWKVOsj9r3eASAy9MTEBKsQ05RpUvPMl8UV5o8TuHL2bJ29r+XrgkR0OsklFWbXbYKcefnPQX45w/78O22PGw+VoSTJdUQAqiqtWC9m9WXdf1++AwqTBYkRYXgInumN8ygVzY0XvDrEdV7yjlrMYGRyWTCxIkTMW3aNK8f8/LLL+PNN9/EggULsGnTJoSHh2PMmDGortZGM7hAkafIGksPO6bSXE+2+iAdOtgLCZtSZ/TolzvQ+9mf8Y//7nXJHizenIPNx4oQZgjCB3cNAmDr7utN/YazwtIaVJosCNJJjV4px0UYMW1kVwDAxZ1jlaszAEpbAnfp7rLqWuVn75/seIx8ovI0leacMaq1CPy0x/Uk+sveApitAulJkfWmMAGge1L9jNGJc1UorzHDEKRD10YCQWd/H9cb0aHB2JNfivn2VWp3DOuk3J6eFIkIox5lNWYlc+Fr4bUzb/oZyYFRWy8CI8DWV+vNWzOgk2zNEzfbg9XLnKYg5SvgfC+n0nblOU467jaqtViFMp3Ys10kIkOCseBPA3Gn/dh95aYmJSvX9jx9O0RDH2R7W51oP+l+tz0Pi+wNHycO6gijPgjdEyMgSbbl43WbbMpj6tUuSsmKueOcPQxkYATYCvwBYONh3wqwT5VWY8xrv+Lp73Z5vI/z1i++tAV4c+VB7DhRAotVoG2kEVf1SlRqAD2tBpNXDcorIsf0TkJkiB55xVXY0EANlfNChsLSGtz67ga8/HM2KkwWGPU6dK0zpS9n3U+X1dQLVN5YcRBC2DInzlOlYQY9Lrc3XmzKtOLW40W49KXVuO6t3+plgKpMFmXaVa5vM+h1ynvQvkYCMbnf2WXd4vHmbRlY8tdM3Hqx7fUt13s2RF6NNqZ3ossF19g+Sbg0LR4msxVzf9zvzY/ZLFpMYPTcc89hxowZ6Nu3r1f3F0Lg9ddfx9NPP40bbrgB/fr1w8cff4z8/Hx89913gR1sE5ktVo/dmr1VXmNWsjy5DTRoLK2uVe7n7gStpIJ9XLJ/4lwllu7Ih8Uq8MFvRzHqlTVYtiMfecVVeNG+PP2JsenolhipvJl7qrPwRF6RlhwbqhQuN+T+EV3x1m0ZmHf7AJevN9SWQB5TYpQRbcLrX5nnF1e53WdNDozkPcSci28B4L/2bMP1F7lOo8kcGSPHMZGnVdLaRiA4yPs/2YRII56+1rY6T17RdlWvJOV2fZBOCWa22PsZyVMDTQuMGu+A7cgYNd4fSTYkNQ4zRjuurDvGhroEAvLV/8mS6kanfmstVpdVOLvdtAM4eqYC1bVWhAYHKRlCSZKUvcV+P3y2XjAv1xfJV8MAMLxbApKiQnCuslY56U4ebAuuwgyOqcq6r3+5/s5TfZHMuRA/pQnNHX0xxN700deM0Yv/24/swjJ8vjnXYz3KbqeTsrcr306VVitT0p/fNxSb/jYK7945CJd1s7XhcPc37Vz4L2csQ4KDMM7+t9hQEbZc8D/r6nRc27cdai0CC+wXG+lJkUowLIsOC1ZWJzpfXOYXV+F/u23vAY9c2a3e97m6ry2L/OOukz5Np+3JL8GUD/9AeY0ZR05X1Pv55UxZmCEIUaGODHrPOl3UPZEvdiYOSsa4i9ojIyVWeX02tuTebLEqiwTG9ElyuU2SJPx9XG+M7Z2Ep+zvVVrQYgIjXx09ehQFBQUYPXq08rXo6GgMGTIEGzZs8Pi4mpoalJaWunw0lykf/oGhL6w8r9Ufzi/ShnZOlqd8EqOMbnfkTmlkmsmTb7fZmgf2sAc+haU1eOiz7bj69V9RYbJgYKdY3GGvcZGDgH2+BkZuOl43JEgn4fqL2tfLUnRqoEOtp5qehAgjwg1BsArU2z/KahU4fMo2tkdG2970fj98Vmkyeba8Br/brzyv7Vt/Gg2A0uQxr7hKaVgoF157O43m7OaBHZUGgZOHpNQLJOU6oz+OnYMQwuceRs6cC7A9vanXvWL31l8vT8MlabasxcgeCS4rgJKiQyBJtmLQs420SZBrqGTuMkby775HUqRLxqZTXDj6dIiCxSrw8x7XlTTyirSL7AExYHvdTRjYQfl8ePcElyaM8uu/7nTa7kYKr2VynZEkwWWpeCAM6twGOgk4drbS61qubTnn8O122/uB2SrcbgoshFBW4AG2aTVvLg4/2XgctRaBgZ1iMTQ1Tnk9NNRqpLTKjCp7cObcKkLO7C3fW+g2eKuutWCbfVHB6F6JePv2DDx1TU/IL41eHurAOrnJSH/xR64ypV23Tgyw1RwZ9DocO1vpdVH04dPluPODzSirdhy3uo0iHdNoIS5/O0oBdgPvwdW1Fuy1/51kOL2+5YUvRxqpMfrj2DkUVZgQGxaMwXV6cgG2C74FdwxUaj+14IINjAoKbKm7xMREl68nJiYqt7kzd+5cREdHKx/JyckBHaez3fklKKsx4+5Ff3i971RdzlM5DU2lHarT8bqupmyEKITA11ttRYz3j0zFz48Mx4zR3WHQ61BabZsKemlCXyWVmm4POrJ93K9HCYwaKLz2hvyHWF5jVtLMsr0n5akU1zcvSZKUN7y6RYcFpdWoqrVAr5NwSVo8MlJiIIQjS/TTngJYrAJ9OkQpNUt1xYQZlK0y5Oab8onal1VizuNdcMdAvH17Bh64PK3e7fLKtK3HinDiXBVKq80IDpI8vi4a0rt9FAxBOpytMHncdLTAx6k0WZBOwvw/DcQ/buiNR6907c4cHKRDW3uH7sZWpsnZmDB7b6DdefVfew0VussF8z/scmQCq2stymP6O504AGDiQMf7x5/sCwFkjgJsxxisVqFMZ/bp0PDvWw7CusSHN1rIfr6iQ4MxqJPtpPauh+ahzqxWgeeW7nH5mrsVqCdLqnG2woQgnYTEKCMsVqH0cPKkutaCxfZu0VMv6exyW3IDRc+eCv8v6hiN9tEhqDRZlG7jLuM+fg4msxVtI41IjQ+HJEm4d3gqFv95KK6/qD3uubRzvccA9duemC1WZT+6yUM7uX1MhFGPkfbtOuTMUkNyiyrxp/c34WyFCX06ROGmAbZAfEeuaxCaV6fwWia/BzfUy2jvyVLUWgTiIwwuAbg8rZ9bVOk2ey6TW7Jc2SuxXmZNq1Qd5ZNPPglJkhr82L+/eecdZ82ahZKSEuUjN/f8W8Z7y2KxXWVXmCy4a+FmZVrDF3LGAgDOVdZ6XCEkr0hzN40GOFLzdd9ghBAeuz7/cewccooqEWHUY0zvJIQEB+Hh0d2wfMZw3DG0E968rb9LPZPcpM7XAmx589guDSzV90ZIcJCSUq9bJNnQyVGuM6q7Mk3OwnWKC0NwkA432FP08nTaD/YA6bp+7qfRZMrKNPtx2Vcg9zDyPTACbG+21/Vr73Yarn9yDPQ6Cfkl1VhhXzXSrW2kV1OUdRn1QcoUnKc2DI1tINuQqJBg3DGss8vUpkypM2okmyFnLa6zF77nFVfVC4odgWj94FDO9G04fFapDdpnP3G0CTfUy9x0jg/HzCu7409DU3BFeluX2+QCbOeptONFlSivMcOo1yGtkYxoWtsIfHz3YLx7x6AG7+cv8tTP4k05jRbKfr3tBHacKEGEUY8/26cgtx0vrnc/+ffRra2jdUVj03XLduTjbIUJ7aNDlBVOsoYyRgUeXnuSJCmF8r/UyQQCUKZBM7vGuWRbhnWNw1u3ZdSr0ZSl1JmqX+VUgD+md6LbxwDANfbX2A+7TuL3w2cwb/Uh3L3oDwz8x3IMnrMCN8//HY9+kYXXlh/Anz7YhJMl1eiaEI6Ppg7GZfZFCfUyRsWOrtfO5CaPx8547sIut+Donxzj8vO3jXRkzz2VXFitQqkvGltnGk3LVA2MZs6ciX379jX4kZqa2qTnTkqy/RIKC11f6IWFhcpt7hiNRkRFRbl8NBezvT4iNT4cpdVm3PHB5nrbQwghGqyjqNv/xtNGsHLWpauHwMhdxuhMeQ1umLceI/612m026uuttiDy2r7tEGZwzGN3igvHP27sg7F9XKePejgVGnvbXRhw6mHkpuu1r9z1G7FYhXKycndy9LRkXz72crB5bb/20Em2jshbjxcpO5R7mkaTKXVGhWW2rUDsY+vZhKm0xoQZ9Ohtn7L52L65blPqi2SO6TT3gZF8cvK0gWxTyW/4jTV5lE/Ew7rGKYW6dad49nnIFgK210u/jtGwCseVsKO+KNrlxCF7aFQ3/PPGvvWulh2v/3Llb1oeS3q7KK+urod3T/B4ceNvmV3jMaJ7AsxWgX//csDj/cqqa/HyT9kAgOmj0nCVPXjZlnOu3hTrbiU7Fo2h9kaSmxuoMxJC4EN7IfsdwzrXO0Zyb7LiylqUVLmuCC0ocewVVpc8xhX7Cuu9F8nT38O61u8M3pBOdbJXn262ZbkmDrQV4HsyqmdbGIJ0OHK6Are/twn/+jkbq/afwtkKE06V1WDLcdsU5RsrD+L42Up0jA3F4j8PRVyEUalx251XglqnlgV1l+rLEiKMiAs3wCrqtwiRyf276mZDJUlSyhkOeyjA3plXgoLSakQY9cjsGu/2PlqkamCUkJCA9PT0Bj8MhvpXh97o0qULkpKSsHLlSuVrpaWl2LRpE4YNG+avH8Gv5D/I+X8aiH4do1FUYcLt72/C3B/34f7/24qr31iHPs/+jMEvrPB4ZVwvMPIwpSGvqurqYUpHvtopqapFSWUtiipM+NP7m7DzRAlOllTjqe92u7zJVZrMSkbk5kEdvfp5O8WFIyRYh+paq9dLNWvMFiUoa6i5o7fcFWAfP1uBqlrbapPObhrnOabSXIND+djLKeaESKPyZjDzyx2wCtv0R2Nz6c4r0+RsWttII+Ii/BtMyAbZl+3Lr4mm1BfJ5AJsd80QLVahLI9vSsaoIfI2Bw1ljJz7A/VpH63U8DjXGZ2rMCnBW7qHqUs5sJVf7zvk/kV1ThyN6RwXBoNeh6pai3LylMfS5zx+B4H0xNh0SJIta+NuHzsAeHvVIZwpr0FqfDimZHaxrdTTSThVVlNvWbhST9U+SmkkuSO3xGOh9uajRdh7shQhwTrcNrh+mUO4Ua9smVM3i1FQ4vm1N7hLG0SF6HG2wuQS1FfUmJXA19cTu/NUWm5RJdYesG2HIXem9yQyJBg3Ztiyyu2jQ3Bdv3Z49vpe+O6BS7D0wUvw9u0ZeHxsD9w2OBnXX9Qen/55qBLsdY4LR1SIHjVmq0ugI6/YlJuhyiRJUmoXPRVgy8fDeUWvTH4P9rRKV84WjeyREPDpXn9qGRN+AHJycpCVlYWcnBxYLBZkZWUhKysL5eWOQCA9PR1LliwBYPuFP/LII/jnP/+JpUuXYteuXbjzzjvRvn173HjjjSr9FA2z2AONmLBgfDR1MNKTInG6rAbv/HoEP+0pwL6Tpaiw79i8an/9rspmi1U5Wcv1Ce5WptVarMobsafpKNsbjC0o3ZlXjMnvb1KaHRr0tlbu32U5dmn/aXcBKkwWdIoLU060jQnSORoaersyLbeoElYBhBuClLqS8+HoN+L4w5YzBu5WmwCep9LkaUznJfXyipdj9jfp6930LqrLuZeRshVIE+qLvHVxZ9ffly9bgdQl10E5Z0FkZ8prYBW237u/gzy5N0tDG8kePVOBSpMFIcE6pCZEKBvVOmeM5OOd0ibMpf+VM3mqY+ORszhdVuPIGPkYGOmDdEpzVTkA3uPlijS19GofhRv72+pYXvqpfpnDkdPlWLje1lH8met6waDXIdQQpGTfttWpH3IuNE9pE4bEKCNMFqvHqVg5WzQ+oyNiwtxfNHuaTitwau5YV3CQDqN62qfTnLao+ONYEcxWgQ4xoT4XB8sXUCfOVWLxphwIAVyaFu+xvtDZizf1w47ZV+H3WaPw9u0DMPWSLuifHIN+HWNwXb/2+OvINMy9qR/eui3DpaBfp5OUjvDOdUYnS9xPpQFAT/uUrrveSafLanDiXBUkCcqeec7krL2nlWlylnxUz7Zub9eqFhMYzZ49GxkZGXj22WdRXl6OjIwMZGRkYMuWLcp9srOzUVLieDE8/vjjeOihh3Dffffh4osvRnl5OX766SeEhPj3atUfhBBKxihIJyE23ID/u2cIbh+SgimZnfHs9b2wcMogpZOzuyvyE+eqYLJYYdTrlP2N3K1Myy2qhNkqEBoc1OB+VXLW6K+fbMO+k6WIjzDis3uH4uFRtlqD55ftVZYty0XXNw/o6HY6wRNvVkU4O+y0Is2X7+OJu15GjXWZ9rRkX8kYOU1tjOmTBINTcHVNI9NogKPh5pnyGqV/SiCm0WQDO7muFDmf7+WcBakblMtL9RMijA3252kKb7pf76nTH0gOPpz3ptrbyJ50gK3A9yL7dNqXW3KVqV3npfreSneqMxJCKBmjvhoNjABbU0JDkA6/HTqDdfZNQQFg9f5TmLroD9RaBC7vkYDLnWqqBtinWJ0DnlOl1ThVVgNJcuw15tiXrf50Wm5RJX7Za8tA1C26duZpRa0yleYhWynXGf28x9F5Wv77y/RxGk3+PvJ+jB9vOAYAyvt3Y3Q6CdFh9VcLe+OiZNtrRw7YhRBOU2n1f3Z5AcYKN5t6y+eZbm0jEBlSfzwNrUwzma3KKlfnXnAtQYsJjBYtWgQhRL2PkSNHKvcRQmDKlCnK55Ik4fnnn0dBQQGqq6uxYsUKdO/evf6Ta4DzvLbeftJIiDTihfF98fdxvTH1ki64Ij0RV9gbgO1wExjJJ+bUhAjlzcFdLZCc9uwSH95gd2P5iqesxoy4cAM+vXcI0tpG4L7hqUhPisS5ylo8/9+9OHGuEr8fPgtJAm4a6N00msxRgFr/aqW40oSPNxxTeo/UHbs/OLpfO47T3kYCI9cl+7bHlVbX4pR9msh5ii86NBgje9hWmQzsFFtvjt8d5x43ckF0U1akeSsh0qgcz05xYW7fAL2lD3IUDdfNAiqbx/q5vghwvOE3tCpNzk7IQUcfe2Yst6hK6VAuZ24a23pF7lq+YI1thVZKmzC3ReGNUVamFZbixLkqFFfW2lYFJjZP3VBTJLcJUxqFvvi//Thyuhx3L/oDUxf9geNnK5EYZcTfx/V2eYyjx1Wx8jU5Q9E1IUKpSZSn09zVGf3fRlv39su6xSuZZnc8vfcVyK0i3GSMAFu9lkGvw/GzlcqKULnw2tf6IgAu+zFWmixIiDQqwVcgyQG6XIBdWmVGpb2wup2bjNHIHm0RGaJHfkl1vf3wsuybQtetL5IpgZGbjFF2QRlMFiuiQvRKPV9L0WICowud2Skwauhqup/9auDQ6XKlz43MUeMSjuQ2tj8AdxkjJbhopEZH7uYaGxaMxfcOUd6MgoN0eGlCP+gk235gj3+9E4DtqqqDFyd+Zw2tTHvqu92Y/f0eXPnqWnyy8TisVqH8AfqjvghwZH+cO9Q2ljGSJElJh8tTl4ed+kJF1QksHrqiG3q1i1Iybd6Qj7W84WpTV6R5S57+PJ/6IlkPN927AaCwrGk9jLwhB5ynymo8rpqUM0NysXl0WLByEpUzNd7uSSdn/srsqz59nUaT9XB6/csZre6JkQ0W52rBA5enIdKox578Uox6dS1W7T+F4CAJfxmeipUzR9bb1HaAPTDak++oH9rlVF8kkzNG23LOuWRjc4sq8amHJfp11V0NJiuosx1IXRFGvdLz65c9BSipqnUp1m8K52muWwZ19KlBa1PJQcyBwjJUmsxKFrVNuAGhhvqvq5DgIGWV5pJteS63yRkjd/VFgOMC9VxlLc7VWd3p3NvLH9n95sTASCNcM0aefy1tIx17Uu2qs5rGucalo/1KxV2N0WEv+wDdPqQTHrw8DV/dP6zeifmi5BjcfYmjEzAAZbdqX8gnhpyiSpfW+WfLa/CLfdVPWY0ZT3+3G5Pe3aA0WvO2uWNjYsIMLh1qiytNynx8Qw0V5aJsuc5IPqbutuzo2zEaPz58GYbb+5N4o0eS43kMQTq/BYKe3JXZGb3aRSkbzJ6PHh6C3UKnnc39LS7cAINeByEcU3bOrFbhqN9xqqGSa/HkVTzyNjmNZeg6xoa5XEVf5Kb+whtyxujYmQpl24U+51Hj1VzahBtwv32rHSGAEd0T8NMjwzHrmp5ua7OS24QiPsKAWotQAkB3jSy7JoQjPsKAGrNV2ZS31mLF9M+3o7zGjIGdYjGye8P1Ku5qjKprLThnzwo2VPh/lT2js3xvITYfLYJV2N4n3WVavCEHaZIE3Hqxd9No56ttVAjaRYfAKmx9uuruD+fO+Azbe/f/dhcoy/YtVqHUKXnKGIUZ9Ghvf155RwKZu27wLQUDI43wNmMEOM8h1wmMnGpc5H4qZdXmestW5T5AjZ1s24Qb8P/G9PDYp+PRq7ormSm5d5Gv4iKMSIg0Qghbwa5syfY81FoE+naIxrPX90KYIQh/HDun9Ao63+aOzpw3hpWn0TrGhtbL/DiTl+zL2be6K9LOl/NUga9bgTRFnw624M0fS2rl4vF6GaMGil/PlyRJyhu0u5VpuecqUWbfb855msq5zujI6QqYLFZEGPVedZJ2brvg6cTRmIRII2LDgmEVjn5XjTV21Ip7L0vFU9f0xIdTLsaiqRc3+NqXJEmpM5Gn0/bk1y80lyQJg+XtR+zTWK+vOIDtOcWIDNHjjVv7N7q5sRyM5BdXKdnDU/ZpNKNe57bTv2xUz0RIkm2l4ZLttrrJoU3MFgGOTO/I7gnN2tlZLpTekVus/D00FNwN6hSLDjGhKK8xY7l9+v7wadvGyGGGoAanLj0t2ZcDW3dF21rHwEgjrD4ERvKbsDz/K3OeSgsz6BFnr3moO9fuqNM5v5N4mEGPlydchDBDEKZkdnbpXeQL+ap5vz0oEUIo+xZNujgZUy/pgl9mDMfl9lodg17ntxojwLWXUUM9bJw5B1OAYyqt7maSTdXDqfi3sbFojdxu4MjpCpdpLaXrtR9WE7rT0Mo0ucN1ertIlyBTrjfak1/qWAGYFNnoyRcArunXDnqdhDBDUJNX8kmSpPyu5Rq13houvHZm0Otw7/BUXJ7e1qupkgGdYgDYpsmKKkzKFE/dvllKAfbRIvx+6Az+Y6/jevGmfkomvCEJkUaEBttqAOXv4Zw1aWisCZFGDLRPG/24y5axbkrhtezmgR3x0oS+eOWW/k1+jqaQp3azThQrLRI6uCm8lul0EsZn2FYbfmffxkVept+vY3SD5yRHnZEjMKqoMStNhJt60aCmpp3JyO+cM0aNvSdf5GY5ZlGFSUkVy0soO7YJw9kKE06cq1KuysprzMp+Vf4ILoZ1jcOuv485r1VG6UmRWHfwjDL1sj23GAcKyxESrMO4/rbl7h1jw7BwysVYc+A0jEE6hHtYSt0UnZxWsVTX2k7kjQUj8rGrlzHyU7O91PgI6HUSzFYR0BVpgdA+OgSRRj3Kasw4eqbCceK3v+4CkTECGl6ZpvQHqhN0yNNWR89UYPMxW8Gvt4Foh5hQLP7zEATbl6Q3VXpSFDbaV2EF6aSAFtqrSa4z2na8WJlG6xwXVi8zKxdgbz1+Do98kQUhgNsGJysF742RJAkpbcKQXViGnKJKdIkPd2os2vhr78peidji1FZgaGrTAyODXodJzTSF5qy/co4oRrD9vbldI/Wf4wd0wNurD2HtgdM4U17j1Nix4RVl8nuhcwH27rwSWIVt2tLX7X+0gBkjjZBrjPQ6qdGrrz4doqGTbFfg8kof+cTcISZUeZOWpwOcu1/L+3vFRxgaTCn74nyXXssr0+QGY1/a9xO6pk87lzdNSZJweY+2yEzzbwdV5y7fDW0H4UyuMcovqXLpTu2vLsQGvU65kvZU+KhVkiQpWSPnpnG+nJyaoqGVaY5Ggq6BUWy4QVkwsMw+leVLhm5Iapxywm8q5+xgWkJEi2qE5ws581BQWo3l9l5B7vo1dW8biZiwYFSaLDhVVoO0thGYfV3vevdriLJnmr0G0Jdp3KucSgJ6JEYqDSNbkj4doyFJtsU3cnfxxlbEdk2IwEUdo2GxCizbka9Mecrd7D2Rp9Kcl+w7Cq9bRvazLgZGGmG22jIV3gQZ4Ua9MucrvwCVqRynE7O8VNR5ZdoRPy939wfHZpq2LTDkE9QtFzfPBr7yvnBHTlcoxbeNnRzjIwwINwRBCGDdwTMwWwXCDEF+7ej8+qT+eO/OQRjoZcNMLelep86outai1LoFLjByvy2IEMKp0Lf+71WeTpN3J2/uDJ1zYNS7hdQXNUWYQa/8rX+7zVa/4y4w0ukkXGzfhd2g1+Gt2zJ8zsjVLcCWp1e9CYy6xIcrjTebuhpNbVEhwUrNl1yX2d6Ln12eTvtsc47yt5vRyFSYXO95/GwFzPZtSHYo9UUNP1arGBhphHPGyBvyvK1c+e9cXySTM0bONUZHT2svMEprG4EgnYRzlbX4cP1RVJgs6BwXhiFd2jT+YD+Q30Tzim0NMsMNQUpQ6Ynzkv2V9mLFrn5qOilLTYholr4ngdAjUe5lZHtdylfsIcE6ZRWgv7XzUHydX1KNc5W10Dt1WnfmHCxJkmug0hycx9QSVqSdDzm7VmFf+eTp5500KBlRIXr888Y+Taqxq7tkv9DHzYsfGtUNXRPCvW7IqEV1i54bm0oDgOsvao8gnWTrXC9sMxCNTYV1iAmFUa9DrUUoF+E77RfsLbG+CGBgpBlmp67X3lCK65TAqP5ycTmd7JoxcjSB1IqQ4CAlUJMLLW+5OLnZel8kRYW47Caf3i7Kq+JbeTptdbZtexZ/FV5fCJTGnYW2NL5c15YU1XDx6/nooGSMXAMjZQf3xEi301TOWYsuceFNXkTQVBFGvbKSryVmB30hF2DLPPXNGt0rETuevQq3DGpa1jilTsZILjnwNjAad1F7rJw5ssHVWFrnHJToJCDRi0UPcRFGjHBqK+JNYKPTSY46ozPlOFteg1z7Hp1a3dqmMQyMNELJGHm5LFsuwN55ogRWq3C7XFzJGJ2rVFrc+7tztL/IV+mVJguCdBJuHuB7T6Sm0ukkJDstz/Z2KkVesn+m3NbYzF9L9S8E3e0Zo9wiWw2WsiItgIWY8hVxabUZ5TWOnlh73DQSdOb85q3WCsB5kzPw/p2DmtwosqXIcCrk7RgbitgGuoWfTwCd4rSzvRDCERgFqPBfi5z7ByVGhXh9bpGn04DG64tkzivTdtr/3lLjw/1Wx9rcGBhphBwY6bx8M+ieGIHQ4CCU15ix92SpMl3Wta0j4JGvoCtNtuZmQghlKs2ffYD8oafT9MXlPRKafSWDc6deb0+Onet09/VX4fWFIC7CqBStHjxVjlM+TmU0RYRRr0zTnbRnjYQQ2GpfdtzXQz+V+AijMg2n1grAtLaRGN1Cp0190SnOsXVKIKcNO8aGQpJs732ny2uUVgitKTBKbxep7NPozVZEsit7JSLSvup3gJcZTHkl9OHTFU3eVFlLGBhphK81RvognVI0unRHPqwCiAzRI8FpBUVIsGMH+tyiSpwur0FZjRk6ybVVvRb0cOqsrcby1hSn5mveLpeuu0u2v5bqXyjk7t3ZBaVKjUcg9klzphRgl1SjutaCmV/uwPpDtkaBgzp5rlkb0zsJep2EkT1a1i7gLY0kScp0oadA1R+M+iBlJ/ltx4thtgroJLi8P17ojPog9LRnSRvqel1XSHAQ3r1zEOaM7+P1ikvnPdNacmNHGfsYaYSvNUaAbSnk5mNFWGJvyOWu+LdjbChOldXgxLkqZY+ijrFhmtuL6aLkaIQGByEh0qg0cmxOcgG2L8W3zhkjneR4DrLpkRiF9YfOIrugHKfLA7dPmrP2MaHYX1CG7Tnn8Oov2dhxogRBOgmzr+tVr5Ggs6ev7YkZo7s3eUdz8t7frumJbm0jcFdm54B+n+Q2ocgrrlI2pE2INHo9nXShGJgSix25xfWy240Z1jXOpxV5zkv25WbFLTljxMBIIyz25fr6IF8CoxgAtg1QAfc1LsltwrAtpxgnzlUqm85qrb4IsO0B99MjlyHMoFflzUs+ds47fTdGXrJfYbIgpY32gk21yRmjA4W2XbaBwAdG8pXx6ysOAgBiwoIx7/YBuKSR3lf6IB2iw1rXSVMtXeLD8fjY9IB/n05twrHxSBE2H7NlDAM5jatV00Z2RdsoIyY2YR9LX8gZI/lcpG/hjUoZGGmE2eJ7xqjuigHn+iKZcwF2UYXt1x3oDUmbqu6O3M3pkrR4PHpld59aBMhL9vfkl7Lw2g15RU92YRnC7H1oAl3j4VxL0T0xAu/febHmpo2peci/9732BoeBDsq1KCHSiPtHdA3494kKCUZ8hBFn7Jnh9HbuV4C2FAyMNMLXGiPAVlwdH2FocFWUc5NHvc52Ray1wmstCNJJmD6qm8+P6xxnD4xYX1RPN3tgdLqsRgn4EyMDe3LK7BoHo16HUT3b4uWbL3K70zu1DnLdoLzbki91NuS71IRwJTBqqY0dZXzX0AiLkDNG3qfzJUnCRR1jsHK/3Een/slZ3nTRucnj+W4eSw6Th6bgdFkNJjRje4GWIsKoR3KbUOQWVSmBf9sAF19npMRi19/HuPSlotYppc5u9okMjAKqa0K4Us/Vn4ER+YOj+Nq3x12UbAuM9DrJbfFvcht5v7QqWO3Bl1an0lqizK7xyOzq373bLiQ9EiOVZm8xYcHNkl5nUERA/cUQzBgFVqrTBXe/FrpHmozvIBphsfieMQKg7CmU1jYCwW6iqnbRtn4eNWYrai0CIcG6VlmESOpw7hzM1x01p5gwg8v2M62xxqg5yYt6wgxB6Na25XYMB5gx0gxzE2qMAGBoahu8estFSE9yvwLAoNehXVQI8u2dXzvHhXu13QWRPzi3Pmjupp1EKXFh2J1nK75mYB5Yw7rGYWhqGwxNjfNpEZEWMTDSCEsT+hgBtjqjmxqpb+kYG6YERlw9Rc3JOTBKCnB9EVFdndqEOwIjTqUFVLhRj8/vG6b2MPyCU2kaYZb7GAUg0u7YxrGEWYs9jOjClRofobymOZVBzU3eSDsqRN/smwNTy8XASCOamjHyhrwyDWBgRM3LoNcprzkGRtTc5AJsZovIFwyMNCKQgZHzzvFckUbNbfyADoiPMPi0xQCRP1zSNR7RocG4shVs0Ev+w9yiRjSlwaO3mDEiNf11ZBqmjehabx8/okBLiQvD9meu5IIT8gkDI41oyiay3uqeGAFDkA4dYkMRE2bw+/MTNYZBEamFQRH5ioGRRjgyRv6f3YyLMOLHhy9z6elBRERE9fFMqRGBzBgBtgaQRERE1DAWX2uEJYDL9YmIiMg7DIw0wmKLi1p8x1AiIqKWjIGRRsgZIwZGRERE6mFgpBGBrjEiIiKixjEw0ohA9jEiIiIi7zAw0ghHxoi/EiIiIrXwLKwRSsYoiBkjIiIitTAw0gizhTVGREREamNgpBFWwRojIiIitTEw0gizfbm+jntKERERqYaBkUZwVRoREZH6GBhphFJjxOJrIiIi1TAw0ghmjIiIiNTHwEgj2MeIiIhIfTwLawQzRkREROprMYHRnDlzkJmZibCwMMTExDR6/9raWjzxxBPo27cvwsPD0b59e9x5553Iz88P/GCbQA6MdAyMiIiIVNNiAiOTyYSJEydi2rRpXt2/srIS27ZtwzPPPINt27bh22+/RXZ2NsaNGxfgkTaNmRkjIiIi1enVHoC3nnvuOQDAokWLvLp/dHQ0li9f7vK1t99+G4MHD0ZOTg5SUlL8PcTzYrH3MWLnayIiIvW0mMDIH0pKSiBJUoNTcTU1NaipqVE+Ly0tbYaRMWNERESkBS1mKu18VVdX44knnsBtt92GqKgoj/ebO3cuoqOjlY/k5ORmGZ/Fyr3SiIiI1KZqYPTkk09CkqQGP/bv33/e36e2tha33HILhBCYP39+g/edNWsWSkpKlI/c3Nzz/v7ecGSMWk2sSkREpDmqTqXNnDkTU6ZMafA+qamp5/U95KDo+PHjWLVqVYPZIgAwGo0wGo3n9T2bwsqMERERkepUDYwSEhKQkJAQsOeXg6KDBw9i9erViIuLC9j3Ol9mBkZERESqazHzNjk5OcjKykJOTg4sFguysrKQlZWF8vJy5T7p6elYsmQJAFtQdPPNN2PLli1YvHgxLBYLCgoKUFBQAJPJpNaP4REbPBIREamvxaxKmz17Nj766CPl84yMDADA6tWrMXLkSABAdnY2SkpKAAB5eXlYunQpAKB///4uz+X8GK1gxoiIiEh9LSYwWrRoUaM9jIQQyv87d+7s8rnWyX2MmDEiIiJST4uZSrvQMWNERESkPgZGGqHUGAUxMCIiIlILAyONcDR45K+EiIhILTwLa4QSGEnMGBEREamFgZFGsMaIiIhIfQyMNII1RkREROpjYKQRZottuT4zRkREROphYKQR7HxNRESkPgZGGmERrDEiIiJSGwMjjbCw+JqIiEh1DIw0gqvSiIiI1MfASAOsVgF5Wzc9GzwSERGphmdhDZCzRQAzRkRERGpiYKQBFqfAiKvSiIiI1MPASAPMVqvyf2aMiIiI1MPASAOc4iJmjIiIiFTEwEgDmDEiIiLSBp8Do6+++go33XQT+vTpgz59+uCmm27C119/HYixtRpyjZFOAiSJgREREZFavA6MrFYrJk2ahEmTJmHv3r1IS0tDWloa9uzZg0mTJuHWW2+FEKLxJ6J6zMp2IEzgERERqUnv7R3feOMNrFixAkuXLsV1113nctvSpUsxdepUvPHGG3jkkUf8PcYLHrteExERaYPXKYoPP/wQ//rXv+oFRQAwbtw4vPzyy1i4cKFfB9damLmBLBERkSZ4HRgdPHgQo0eP9nj76NGjcfDgQb8MqrVRMkZBDIyIiIjU5HVgFBoaiuLiYo+3l5aWIiQkxB9janUszBgRERFpgteB0bBhwzB//nyPt8+bNw/Dhg3zy6BaG3m5vo4r0oiIiFTldfH1U089hZEjR+Ls2bP4f//v/yE9PR1CCOzbtw+vvPIKvv/+e6xevTqQY71gMWNERESkDV4HRpmZmfjiiy9w33334ZtvvnG5LTY2Fp999hkuueQSvw+wNTCzxoiIiEgTvA6MAGD8+PEYM2YMfv75Z6XQunv37rjqqqsQFhYWkAG2Bhb2MSIiItIEnwIjAAgLC8P48eMDMZZWy2xhHyMiIiIt8ClFsXr1arzyyitYv349AOCdd95BSkoKEhIScO+996Kqqiogg7zQWQVrjIiIiLTA64zRe++9h2nTpqFLly546qmn8Oyzz2LOnDm44447oNPp8MknnyAuLg4vvvhiIMd7QTIre6UxMCIiIlKT1xmjN954A6+99hoOHjyI7777DrNnz8a8efMwf/58zJs3D++//z43k20ii325vp7F10RERKryOjA6cuQIxo0bBwAYO3YsJEnC4MGDlduHDBmC3Nxc/4+wFWCNERERkTZ4HRhVV1cjNDRU+dxoNMJoNLp8bjab/Tu6VoJ9jIiIiLTB6xojSZJQVlaGkJAQCCEgSRLKy8tRWloKAMq/5DuljxEDIyIiIlV5HRgJIdC9e3eXzzMyMlw+l1g83CTsY0RERKQNXgdG3O4jcCzMGBEREWmC14HRiBEjGry9srISWVlZ5zueVomBERERkTb4be7m4MGDuOyyy/z1dK0Ka4yIiIi0gUUtGqD0MWJgREREpCoGRhrAjBEREZE2MDDSAPYxIiIi0gavi6+XLl3a4O1Hjx4978G0Vo7ia8apREREavI6MLrxxhsbvQ/7GDWNmRkjIiIiTfA6RWG1Whv9sFgsARvonDlzkJmZibCwMMTExPj8+Pvvvx+SJOH111/3+9jOl5wx0jEwIiIiUlWLmbsxmUyYOHEipk2b5vNjlyxZgo0bN6J9+/YBGNn5Y8aIiIhIG7wOjP7617+ivLxc+fyzzz5DRUWF8nlxcTGuueYa/47OyXPPPYcZM2agb9++Pj0uLy8PDz30EBYvXozg4OAAje78yMv1uSqNiIhIXV4HRu+88w4qKyuVz//yl7+gsLBQ+bympgY///yzf0d3nqxWK+644w489thj6N27t1ePqampQWlpqctHoDFjREREpA1eB0ZCiAY/16KXXnoJer0e06dP9/oxc+fORXR0tPKRnJwcwBHaWCz2VWlBDIyIiIjUpGqN0ZNPPglJkhr82L9/f5Oee+vWrXjjjTewaNEin1bLzZo1CyUlJcpHbm5uk76/LyyCGSMiIiIt8Hq5fiDMnDkTU6ZMafA+qampTXrudevW4dSpU0hJSVG+ZrFYMHPmTLz++us4duyY28cZjUYYjcYmfc+mUvoYsd0BERGRqnwKjGbPno2wsDAAtlVic+bMQXR0NAC41B95KyEhAQkJCT4/zht33HEHRo8e7fK1MWPG4I477sDUqVMD8j2byswGj0RERJrgdWA0fPhwZGdnK59nZmbiyJEj9e4TKDk5OSgqKkJOTg4sFguysrIAAGlpaYiIiAAApKenY+7cuRg/fjzi4uIQFxfn8hzBwcFISkpCjx49AjbOppBrjPSsMSIiIlKV14HRmjVrAjiMxs2ePRsfffSR8nlGRgYAYPXq1Rg5ciQAIDs7GyUlJWoM77xwE1kiIiJtULXGyBeLFi3CokWLGrxPYyvlPNUVqU3uY8TiayIiInWxqEUD7DNpzBgRERGpjIGRBjBjREREpA0MjDTAbOEmskRERFrAwEgDLNwShIiISBOaVHxdXFyMzZs349SpU7Dap4Fkd955p18G1pqwjxEREZE2+BwYLVu2DJMnT0Z5eTmioqJcttuQJImBURMwY0RERKQNPqcoZs6cibvvvhvl5eUoLi7GuXPnlI+ioqJAjPGCZ7Zn3bgqjYiISF0+B0Z5eXmYPn26sjUInT95NpIZIyIiInX5HBiNGTMGW7ZsCcRYWi1mjIiIiLTB5xqja6+9Fo899hj27t2Lvn37Ijg42OX2cePG+W1wrYWFW4IQERFpgs+B0b333gsAeP755+vdJkkSLBbL+Y+qleFeaURERNrgc2BUd3k+nT/HqjQu1yciIlITz8QawIwRERGRNjQpMFq7di2uv/56pKWlIS0tDePGjcO6dev8PbZWwypnjIIYGBEREanJ58Dok08+wejRoxEWFobp06dj+vTpCA0NxahRo/Dpp58GYowXPGaMiIiItMHnGqM5c+bg5ZdfxowZM5SvTZ8+Ha+++ir+8Y9/4Pbbb/frAFsDZVWaxMCIiIhITT5njI4cOYLrr7++3tfHjRuHo0eP+mVQrQ37GBEREWmDz4FRcnIyVq5cWe/rK1asQHJysl8G1dpYWGNERESkCT5Ppc2cORPTp09HVlYWMjMzAQDr16/HokWL8MYbb/h9gK2BmZvIEhERaYLPgdG0adOQlJSEV155BV9++SUAoGfPnvjiiy9www03+H2ArYHFIhdfs3sCERGRmnwOjABg/PjxGD9+vL/H0mpZBDNGREREWsAUhQZwuT4REZE2eJUxatOmDQ4cOID4+HjExsZCamBZeVFRkd8G11pwE1kiIiJt8Coweu211xAZGQkAeP311wM5nlZHCMHAiIiISCO8Cozuuusut/+n8ycHRQBrjIiIiNTWpOJrWXV1NUwmk8vXoqKizmtArY3ZKTBixoiIiEhdPhdfV1RU4MEHH0Tbtm0RHh6O2NhYlw/yjWvGiLXwREREavL5TPz4449j1apVmD9/PoxGI95//30899xzaN++PT7++ONAjPGCJi/VB5gxIiIiUpvPU2nLli3Dxx9/jJEjR2Lq1Km47LLLkJaWhk6dOmHx4sWYPHlyIMZ5wZKbOwKsMSIiIlKbzxmjoqIipKamArDVE8nL8y+99FL8+uuv/h1dK+BcY6RjYERERKQqnwOj1NRUHD16FACQnp6ubAuybNkyxMTE+HVwrYGF+6QRERFphs+B0dSpU7Fjxw4AwJNPPol58+YhJCQEM2bMwGOPPeb3AV7ozFYrANYXERERaYHPNUYzZsxQ/j969Gjs378fW7duRVpaGvr16+fXwbUGzBgRERFph88Zo48//hg1NTXK5506dcJNN92E9PR0rkprAna9JiIi0o4mTaWVlJTU+3pZWRmmTp3ql0G1JkrGKIg9jIiIiNTm89lYCOF2E9kTJ04gOjraL4NqTeRVaboGNuYlIiKi5uF1jVFGRgYkSYIkSRg1ahT0esdDLRYLjh49irFjxwZkkBcy1hgRERFph9eB0Y033ggAyMrKwpgxYxAREaHcZjAY0LlzZ0yYMMHvA7zQmVljREREpBleB0bPPvssAKBz586YNGkSQkJCAjao1sRiX66vD2JgREREpDafl+vfddddgRhHq2W2MGNERESkFT4HRhaLBa+99hq+/PJL5OTkwGQyudwubxFC3pE3kWWNERERkfp8XpX23HPP4dVXX8WkSZNQUlKCRx99FDfddBN0Oh3+/ve/B2CIFzZHHyMu1yciIlKbz2fjxYsX47333sPMmTOh1+tx22234f3338fs2bOxcePGQIzxguYovlZ5IEREROR7YFRQUIC+ffsCACIiIpRmj9dddx1++OEH/47OyZw5c5CZmYmwsDCfNqvdt28fxo0bh+joaISHh+Piiy9GTk5OwMbpK4uFGSMiIiKt8Pls3LFjR5w8eRIA0LVrV/zyyy8AgD/++ANGo9G/o3NiMpkwceJETJs2zevHHD58GJdeeinS09OxZs0a7Ny5E88884ymVtSZ2ceIiIhIM3wuvh4/fjxWrlyJIUOG4KGHHsKf/vQnfPDBB8jJyXHZYNbfnnvuOQDAokWLvH7MU089hWuuuQYvv/yy8rWuXbv6e2jnhXulERERaYfPgdGLL76o/H/SpElISUnBhg0b0K1bN1x//fV+Hdz5sFqt+OGHH/D4449jzJgx2L59O7p06YJZs2YpzSrdqampcdkkt7S0NKDj5Ko0IiIi7TjvwpZhw4bh0Ucf1VRQBACnTp1CeXk5XnzxRYwdOxa//PILxo8fj5tuuglr1671+Li5c+ciOjpa+UhOTg7oOOUGj8wYERERqc+rjNHSpUu9fsJx48Z5fd8nn3wSL730UoP32bdvH9LT071+TpnVHnDccMMNyhRf//798fvvv2PBggUYMWKE28fNmjULjz76qPJ5aWlpQIMjucEjM0ZERETq8yowqjv1JEkShH0KyPlrgK0BpLdmzpyJKVOmNHif1NRUr5/PWXx8PPR6PXr16uXy9Z49e+K3337z+Dij0RjQIvK6WGNERESkHV4FRnL2BQBWrFiBJ554Ai+88AKGDRsGANiwYQOefvppvPDCCz5984SEBCQkJPj0GG8ZDAZcfPHFyM7Odvn6gQMH0KlTp4B8z6bgJrJERETa4XPx9SOPPIIFCxbg0ksvVb42ZswYhIWF4b777sO+ffv8OkBZTk4OioqKkJOTA4vFgqysLABAWloaIiIiAADp6emYO3cuxo8fDwB47LHHMGnSJAwfPhyXX345fvrpJyxbtgxr1qwJyBibwqIs12cfIyIiIrX5HBgdPnzYbYPF6OhoHDt2zA9Dcm/27Nn46KOPlM8zMjIAAKtXr8bIkSMBANnZ2UrDScDWWmDBggWYO3cupk+fjh49euCbb75xCerUxowRERGRdkiibrFQI4YPH46QkBD83//9HxITEwEAhYWFuPPOO1FdXd3giq+WqLS0FNHR0SgpKUFUVJTfn/+9X49gzo/7cFNGB7w6qb/fn5+IiKg1aur52+f5m4ULF+LkyZNISUlBWloa0tLSkJKSgry8PHzwwQe+Pl2rx4wRERGRdvg8lZaWloadO3di+fLl2L9/PwDbSq/Ro0crK9PIe+xjREREpB0+B0aAbWn+VVddhauuusrf42l1mDEiIiLSDq8CozfffBP33XcfQkJC8OabbzZ43+nTp/tlYK2FhZvIEhERaYZXgdFrr72GyZMnIyQkBK+99prH+0mSxMDIR46MEZfrExERqc2rwOjo0aNu/0/nzypnjIKYMSIiIlIb0xQqY40RERGRdniVMXLeVLUxr776apMH0xqxxoiIiEg7vAqMtm/f7tWTcbm+78z25fo6HjsiIiLVeRUYrV69OtDjaLWYMSIiItIO1hipzGyx1xix+JqIiEh1TWrwuGXLFnz55ZfIycmByWRyue3bb7/1y8BaC2aMiIiItMPnjNHnn3+OzMxM7Nu3D0uWLEFtbS327NmDVatWITo6OhBjvKBZBPsYERERaYXPZ+MXXngBr732GpYtWwaDwYA33ngD+/fvxy233IKUlJRAjPGCZmbGiIiISDN8DowOHz6Ma6+9FgBgMBhQUVEBSZIwY8YMvPvuu34f4IXOYmEfIyIiIq3wOTCKjY1FWVkZAKBDhw7YvXs3AKC4uBiVlZX+HV0rwAaPRERE2uFz8fXw4cOxfPly9O3bFxMnTsTDDz+MVatWYfny5Rg1alQgxnhBs9j7GDEwIiIiUp/XgdHu3bvRp08fvP3226iurgYAPPXUUwgODsbvv/+OCRMm4Omnnw7YQC9UrDEiIiLSDq8Do379+uHiiy/Gn//8Z9x6660AAJ1OhyeffDJgg2sNLJxKIyIi0gyva4zWrl2L3r17Y+bMmWjXrh3uuusurFu3LpBjaxUcfYy4XJ+IiEhtXp+NL7vsMixcuBAnT57EW2+9hWPHjmHEiBHo3r07XnrpJRQUFARynBcsZoyIiIi0w+c0RXh4OKZOnYq1a9fiwIEDmDhxIubNm4eUlBSMGzcuEGO8oLHGiIiISDvOa/4mLS0Nf/vb3/D0008jMjISP/zwg7/G1WowY0RERKQdTdorDQB+/fVXLFy4EN988w10Oh1uueUW3HPPPf4cW6vAPkZERETa4VNglJ+fj0WLFmHRokU4dOgQMjMz8eabb+KWW25BeHh4oMZ4QZP7GHEqjYiISH1eB0ZXX301VqxYgfj4eNx55524++670aNHj0COrVXgVBoREZF2eB0YBQcH4+uvv8Z1112HoKCgQI6pVVGW6wcxMCIiIlKb14HR0qVLAzmOVstRY8Q+RkRERGrj2VhlylSaxIwRERGR2hgYqYyr0oiIiLSDgZHKWGNERESkHQyMVGa22JbrM2NERESkPgZGKrMnjNjHiIiISAMYGKnMbGXGiIiISCsYGKlMqTHicn0iIiLV8WysMnlVGuMiIiIi9fF0rCKrVUAoNUb8VRAREamNZ2MVydkigDVGREREWsDASEVW4QiMuCqNiIhIfQyMVMSMERERkbYwMFKRxcKMERERkZYwMFKR3MMIYMaIiIhICxgYqUjuYaSTAEliYERERKS2FhMYzZkzB5mZmQgLC0NMTIxXjykvL8eDDz6Ijh07IjQ0FL169cKCBQsCO1AfmNnckYiISFNazBnZZDJh4sSJmDZtmtePefTRR/HTTz/hk08+wb59+/DII4/gwQcfxNKlSwM4Uu/JGSNOoxEREWlDiwmMnnvuOcyYMQN9+/b1+jG///477rrrLowcORKdO3fGfffdh4suugibN28O4Ei959gOhIERERGRFrSYwKgpMjMzsXTpUuTl5UEIgdWrV+PAgQO46qqrPD6mpqYGpaWlLh+BIk+lBQUxMCIiItKCCzoweuutt9CrVy907NgRBoMBY8eOxbx58zB8+HCPj5k7dy6io6OVj+Tk5ICNjxkjIiIibVE1MHryySchSVKDH/v372/y87/11lvYuHEjli5diq1bt+KVV17BAw88gBUrVnh8zKxZs1BSUqJ85ObmNvn7N0Zerq/jijQiIiJN0Kv5zWfOnIkpU6Y0eJ/U1NQmPXdVVRX+9re/YcmSJbj22msBAP369UNWVhb+/e9/Y/To0W4fZzQaYTQam/Q9fcWMERERkbaoGhglJCQgISEhIM9dW1uL2tpa6OoshQ8KCoLVqbGimlhjREREpC0tpsYoJycHWVlZyMnJgcViQVZWFrKyslBeXq7cJz09HUuWLAEAREVFYcSIEXjsscewZs0aHD16FIsWLcLHH3+M8ePHq/VjuLCyjxEREZGmqJox8sXs2bPx0UcfKZ9nZGQAAFavXo2RI0cCALKzs1FSUqLc5/PPP8esWbMwefJkFBUVoVOnTpgzZw7uv//+Zh27J2b2MSIiItKUFhMYLVq0CIsWLWrwPkIIl8+TkpLw4YcfBnBU54c1RkRERNrCORwVMWNERESkLQyMVGSxF4EzMCIiItIGBkYqMluYMSIiItISBkYqYo0RERGRtjAwUpFFMGNERESkJQyMVGRhHyMiIiJN4RlZRawxIiIi0hYGRipijREREZG2MDBSkdzHSMfAiIiISBMYGKlI7mPEjBEREZE2MDBSETtfExERaQsDIxWxxoiIiEhbGBipyKJkjPhrICIi0gKekVVkZsaIiIhIUxgYqcjCVWlERESawsBIRcwYERERaQsDIxXJy/W5Ko2IiEgbGBipyGKLi5gxIiIi0ggGRipSMkZBDIyIiIi0gIGRilhjREREpC0MjFTEPkZERETawjOyipQtQSRmjIiIiLSAgZGKLBb7VBprjIiIiDSBgZGKuIksERGRtjAwUpFVsPiaiIhISxgYqYgZIyIiIm1hYKQiuY8RM0ZERETawMBIRWYLl+sTERFpCc/IKnL0MVJ5IERERASAgZGqzGzwSEREpCk8I6uIq9KIiIi0hYGRihw1RgyMiIiItICBkYos3ESWiIhIUxgYqchsX67PjBEREZE2MDBSkYUNHomIiDSFgZGK2PmaiIhIWxgYqchRY8RfAxERkRbwjKwiTqURERFpCwMjFSkZoyAGRkRERFrAwEhFrDEiIiLSFgZGKmIfIyIiIm1hYKQiuY+RTmJgREREpAUMjFTEGiMiIiJtaRGB0bFjx3DPPfegS5cuCA0NRdeuXfHss8/CZDI1+Ljq6mo88MADiIuLQ0REBCZMmIDCwsJmGnXjOJVGRESkLS0iMNq/fz+sViveeecd7NmzB6+99hoWLFiAv/3tbw0+bsaMGVi2bBm++uorrF27Fvn5+bjpppuaadSNcxRft4hfAxER0QVPr/YAvDF27FiMHTtW+Tw1NRXZ2dmYP38+/v3vf7t9TElJCT744AN8+umnuOKKKwAAH374IXr27ImNGzdi6NChzTL2hjBjREREpC0tNlVRUlKCNm3aeLx969atqK2txejRo5WvpaenIyUlBRs2bPD4uJqaGpSWlrp8BAqX6xMREWlLiwyMDh06hLfeegt/+ctfPN6noKAABoMBMTExLl9PTExEQUGBx8fNnTsX0dHRykdycrK/hl0PM0ZERETaompg9OSTT0KSpAY/9u/f7/KYvLw8jB07FhMnTsS9997r9zHNmjULJSUlykdubq7fvwcACCGUwEjHwIiIiEgTVK0xmjlzJqZMmdLgfVJTU5X/5+fn4/LLL0dmZibefffdBh+XlJQEk8mE4uJil6xRYWEhkpKSPD7OaDTCaDR6Nf7zIQdFADNGREREWqFqYJSQkICEhASv7puXl4fLL78cAwcOxIcffghdIyu5Bg4ciODgYKxcuRITJkwAAGRnZyMnJwfDhg0777GfL4twBEasMSIiItKGFlFjlJeXh5EjRyIlJQX//ve/cfr0aRQUFLjUCuXl5SE9PR2bN28GAERHR+Oee+7Bo48+itWrV2Pr1q2YOnUqhg0bpqkVaQCg53J9IiIiTWgRy/WXL1+OQ4cO4dChQ+jYsaPLbcKeeamtrUV2djYqKyuV21577TXodDpMmDABNTU1GDNmDP7zn/8069g9MVuZMSIiItIaSQinOR2qp7S0FNHR0SgpKUFUVJTfnvdchQkZ/1gOADjywjUswCYiIvKjpp6/OYejEueMEYMiIiIibWBgpBL2MCIiItIeBkYqMVutAFhfREREpCUMjFRij4uYMSIiItIQBkYqYcaIiIhIexgYqUSpMQrir4CIiEgreFZWibwqjRkjIiIi7WBgpBI5YxQkMTAiIiLSCgZGKmHGiIiISHsYGKnEUWPEwIiIiEgrGBipxMKMERERkeYwMFKJvFyffYyIiIi0g4GRShwZI/4KiIiItIJnZZWYuVcaERGR5jAwUonFYguMdAyMiIiINIOBkUqYMSIiItIeBkYqsQquSiMiItIaBkYqYcaIiIhIexgYqcRiX67PjBEREZF2MDBSidnCjBEREZHWMDBSCTtfExERaQ8DI5VwE1kiIiLtYWCkEnlVmp6dr4mIiDSDZ2WVyDVGzBgRERFpBwMjlVi4XJ+IiEhzGBiphDVGRERE2sPASCU6CQgJ1sGg56+AiIhIKyQh7FXA5FZpaSmio6NRUlKCqKgotYdDREREXmjq+ZvpCiIiIiI7BkZEREREdgyMiIiIiOwYGBERERHZMTAiIiIismNgRERERGTHwIiIiIjIjoERERERkR0DIyIiIiI7BkZEREREdgyMiIiIiOwYGBERERHZMTAiIiIismNgRERERGSnV3sAWieEAACUlpaqPBIiIiLylnzels/j3mJg1IiysjIAQHJyssojISIiIl+VlZUhOjra6/tLwtdQqpWxWq3Iz89HZGQkJEny63OXlpYiOTkZubm5iIqK8utzkyse6+bDY918eKybD4918/HXsRZCoKysDO3bt4dO533lEDNGjdDpdOjYsWNAv0dUVBT/0JoJj3Xz4bFuPjzWzYfHuvn441j7kimSsfiaiIiIyI6BEREREZEdAyMVGY1GPPvsszAajWoP5YLHY918eKybD4918+Gxbj5qH2sWXxMRERHZMWNEREREZMfAiIiIiMiOgRERERGRHQMjIiIiIjsGRiqZN28eOnfujJCQEAwZMgSbN29We0iaNnfuXFx88cWIjIxE27ZtceONNyI7O9vlPtXV1XjggQcQFxeHiIgITJgwAYWFhS73ycnJwbXXXouwsDC0bdsWjz32GMxms8t91qxZgwEDBsBoNCItLQ2LFi0K9I+naS+++CIkScIj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8Oabb2Lp0qX48ssvkZ2djcWLF7sEXkTUcklCCKH2IIiImuKbb77Bvffei6qqKgwYMAAjRozArbfein79+gGwZX6WLFmCG2+8UXnM6NGjMWrUKMyaNUv52ieffILHH38c+fn5yuPuv/9+zJ8/X7nP0KFDMWDAAPznP//B9OnTsWfPHqxYsQKSJDXPD0tEzYIZIyJqsSZMmID8/HwsXboUY8eOxZo1azBgwAAsWrTI42N27NiB559/Xsk4RURE4N5778XJkydRWVmp3G/YsGEujxs2bJiSMZoyZQqysrLQo0cPTJ8+Hb/88ktAfj4ian4MjIioRQsJCcGVV16JZ555Br///jumTJmCZ5991uP9y8vL8dxzzyErK0v52LVrFw4ePIiQkBCvvueAAQNw9OhR/OMf/0BVVRVuueUW3Hzzzf76kYhIRQyMiOiC0qtXL1RUVAAAgoODYbFYXG4fMGAAsrOzkZaWVu9Dp3O8JW7cuNHlcRs3bkTPnj2Vz6OiojBp0iS89957+OKLL/DNN9+gqKgogD8ZETUHLtcnohbp7NmzmDhxIu6++27069cPkZGR2LJlC15++WXccMMNAIDOnTtj5cqVuOSSS2A0GhEbG4vZs2fjuuuuQ0pKCm6++WbodDrs2LEDu3fvxj//+U/l+b/66isMGjQIl156KRYvXozNmzfjgw8+AAC8+uqraNeuHTIyMqDT6fDVV18hKSkJMTExahwKIvInQUTUAlVXV4snn3xSDBgwQERHR4uwsDDRo0cP8fTTT4vKykohhBBLly4VaWlpQq/Xi06dOimP/emnn0RmZqYIDQ0VUVFRYvDgweLdd99Vbgcg5s2bJ6688kphNBpF586dxRdffKHc/u6774r+/fuL8PBwERUVJUaNGiW2bdvWbD87EQUOV6UREdXhbjUbEbUOrDEiIiIismNgRERERGTH4msiojpYYUDUejFjRERERGTHwIiIiIjIjoERERERkR0DIyIiIiI7BkZEREREdgyMiIiIiOwYGBERERHZMTAiIiIisvv/UXuiUguBNEIAAAAASUVORK5CYII=\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"source": [], | |
"metadata": { | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"id": "_h0VznNShWhu", | |
"outputId": "eab6917d-7cd8-4709-8b93-225f918cd3c9" | |
}, | |
"execution_count": 8, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"array([[0.00000000e+00, 1.00000000e+02, 2.00000000e+02, 3.00000000e+02,\n", | |
" 4.00000000e+02, 5.00000000e+02, 6.00000000e+02, 7.00000000e+02,\n", | |
" 8.00000000e+02, 9.00000000e+02, 1.00000000e+03, 1.10000000e+03,\n", | |
" 1.20000000e+03, 1.30000000e+03, 1.40000000e+03, 1.50000000e+03,\n", | |
" 1.60000000e+03, 1.70000000e+03, 1.80000000e+03, 1.90000000e+03,\n", | |
" 2.00000000e+03, 2.10000000e+03, 2.20000000e+03, 2.30000000e+03,\n", | |
" 2.40000000e+03, 2.50000000e+03, 2.60000000e+03, 2.70000000e+03,\n", | |
" 2.80000000e+03, 2.90000000e+03, 3.00000000e+03, 3.10000000e+03,\n", | |
" 3.20000000e+03, 3.30000000e+03, 3.40000000e+03, 3.50000000e+03,\n", | |
" 3.60000000e+03, 3.70000000e+03, 3.80000000e+03, 3.90000000e+03,\n", | |
" 4.00000000e+03, 4.10000000e+03, 4.20000000e+03, 4.30000000e+03,\n", | |
" 4.40000000e+03, 4.50000000e+03, 4.60000000e+03, 4.70000000e+03,\n", | |
" 4.80000000e+03, 4.90000000e+03, 5.00000000e+03, 5.10000000e+03,\n", | |
" 5.20000000e+03, 5.30000000e+03, 5.40000000e+03, 5.50000000e+03,\n", | |
" 5.60000000e+03, 5.70000000e+03, 5.80000000e+03, 5.90000000e+03,\n", | |
" 6.00000000e+03, 6.10000000e+03, 6.20000000e+03, 6.30000000e+03,\n", | |
" 6.40000000e+03, 6.50000000e+03, 6.60000000e+03, 6.70000000e+03,\n", | |
" 6.80000000e+03, 6.90000000e+03, 7.00000000e+03, 7.10000000e+03,\n", | |
" 7.20000000e+03, 7.30000000e+03, 7.40000000e+03, 7.50000000e+03,\n", | |
" 7.60000000e+03, 7.70000000e+03, 7.80000000e+03, 7.90000000e+03,\n", | |
" 8.00000000e+03, 8.10000000e+03, 8.20000000e+03, 8.30000000e+03,\n", | |
" 8.40000000e+03, 8.50000000e+03, 8.60000000e+03, 8.70000000e+03,\n", | |
" 8.80000000e+03, 8.90000000e+03, 9.00000000e+03, 9.10000000e+03,\n", | |
" 9.20000000e+03, 9.30000000e+03, 9.40000000e+03, 9.50000000e+03,\n", | |
" 9.60000000e+03, 9.70000000e+03, 9.80000000e+03, 9.90000000e+03],\n", | |
" [2.12302637e+00, 9.99525905e-01, 1.01709914e+00, 1.01476967e+00,\n", | |
" 1.09447312e+00, 9.86405730e-01, 1.11957288e+00, 1.00677228e+00,\n", | |
" 9.03819323e-01, 1.02800286e+00, 1.01082420e+00, 1.03712881e+00,\n", | |
" 9.92117643e-01, 1.00238907e+00, 9.76334572e-01, 1.07137012e+00,\n", | |
" 1.02780819e+00, 1.03860843e+00, 9.26625848e-01, 9.59651232e-01,\n", | |
" 9.90324736e-01, 9.52687860e-01, 1.07620740e+00, 9.84351337e-01,\n", | |
" 9.66414928e-01, 1.08449459e+00, 9.76938486e-01, 1.02538371e+00,\n", | |
" 9.75432575e-01, 9.47643876e-01, 1.04604673e+00, 9.53336358e-01,\n", | |
" 9.62800860e-01, 9.71372604e-01, 9.97625828e-01, 9.56852436e-01,\n", | |
" 1.02912521e+00, 9.40208673e-01, 9.35671449e-01, 9.36323881e-01,\n", | |
" 1.01344752e+00, 1.11106837e+00, 9.47826743e-01, 8.91282439e-01,\n", | |
" 9.75206256e-01, 9.97945905e-01, 9.35161948e-01, 1.08165908e+00,\n", | |
" 1.06789613e+00, 9.81801093e-01, 1.06721389e+00, 9.75085139e-01,\n", | |
" 9.88278747e-01, 1.03863251e+00, 9.58567619e-01, 1.00275397e+00,\n", | |
" 9.61375415e-01, 1.05719841e+00, 9.71031070e-01, 9.07814860e-01,\n", | |
" 1.00135756e+00, 8.77296329e-01, 9.14272428e-01, 9.36788321e-01,\n", | |
" 9.64334786e-01, 9.32047009e-01, 1.00033331e+00, 1.03161788e+00,\n", | |
" 1.02169251e+00, 9.92682040e-01, 1.06889462e+00, 9.82906163e-01,\n", | |
" 1.05177510e+00, 1.02857947e+00, 9.89680469e-01, 9.86090541e-01,\n", | |
" 1.11118913e+00, 9.53116179e-01, 9.97361183e-01, 1.05149746e+00,\n", | |
" 9.85543489e-01, 9.98808086e-01, 9.10445154e-01, 1.03497601e+00,\n", | |
" 9.93169904e-01, 9.60192680e-01, 1.01141238e+00, 1.00759196e+00,\n", | |
" 1.00983500e+00, 9.91928697e-01, 1.07226229e+00, 9.25239801e-01,\n", | |
" 1.01844692e+00, 1.06501722e+00, 9.87044334e-01, 9.84877408e-01,\n", | |
" 1.09594595e+00, 1.01509380e+00, 9.62336659e-01, 9.90623474e-01]])" | |
] | |
}, | |
"metadata": {}, | |
"execution_count": 8 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"source": [ | |
"def plot_reconstruction(xs, x_hats):\n", | |
" fig, axs = plt.subplots(3, 3, figsize=(5, 5))\n", | |
"\n", | |
" for i, ax in enumerate(axs.flatten()):\n", | |
" ax.plot(xs[i], label='True', lw=1, alpha=1, color='black')\n", | |
" ax.plot(x_hats[i], label='Reconstructed', lw=0.5, alpha=0.3, color='tab:red')\n", | |
" ax.axis(\"off\")\n", | |
" # remove all space between subplots\n", | |
" plt.suptitle(\"Reconstructions\")\n", | |
" plt.subplots_adjust(wspace=0, hspace=0)\n", | |
"\n", | |
"\n", | |
"valid_databatch = next(valid_ds)\n", | |
"model_outputs: VAEOutput = model.apply(params, next(rng_seq), valid_databatch)\n", | |
"plot_reconstruction(valid_databatch, model_outputs.output)" | |
], | |
"metadata": { | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 472 | |
}, | |
"id": "6IqddkS9hWvN", | |
"outputId": "63cfeee4-66fd-435f-ac6d-a1307f2676e4" | |
}, | |
"execution_count": 22, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": [ | |
"<Figure size 500x500 with 9 Axes>" | |
], | |
"image/png": "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9SHJf5Pu7u612l5bWxuWlpY0XBoRTsPlhx9+AMuymD17dtljDMPA0dERv/76Kzw9PTFu3DhkZ2fXus0rV64gICAAzs7OcHBwwL1797B27VpcuXIFly9fRocOHeDr64upU6fizZs3XL4chSdZfKk+Q42qqqrw8vLClStXpK7D1NQUDx8+lLodqvG4ffs29PT06vTFx9PTE6GhobIripIvwpF79+4RhmHI//73vyq3SUlJIdra2mTgwIGkuLi42vZyc3PJ1KlTiZKSEvHz8yMFBQUkPT2d7N27l7AsW7Zdeno6Wb58OWnevDlp3rw56d69O4mJieHqZSmsgoICoqysTP788896t/HDDz8QfX39Cu9nfWzatIkIhUIiEomkaodqPAICAkivXr3qtM9///1HAJCUlBQZVUXJE2fhMn/+fNKyZcsaQyMoKIgoKysTNzc3smrVqko/2LKzs4mfnx/R0tIiv//+O8nLy6ux/7S0NPLtt98SMzMz4uXlRcRicb1fS0Nw9epVAoBERETUu42zZ88SACQuLk6qWk6dOkUAkMePH0vVDtU4sCxLWrRoQZYsWVKn/bKzs4mKigpZs2aNjCqj5ImTcBGLxaRt27bks88+q9X2Z86cIX369CEAyI0bNyo8d/78edK2bVuipaVFLl++XOdaQkNDCQCyevXqOu/bkKxcuZJoampKdbSQm5tL1NXVyapVq6SqJTY2lgCo198X1fgkJCQQAOT06dN13rdv376ke/fuMqiKkjdOzrlcv34dqampGDNmTK227927N4KCgmBhYYE1a9YgMjISBw4cwCeffILevXvDxsYGMTEx9Vrv3cfHBwsWLMD8+fPx6aefNtpzAdevX4enp6dUlxFramqiT58+CAwMlKoWExMTAMDjx4+laodqHG7cuAGgdFLKuurZsydu3LhBpxNqBDgJl507d6Jdu3Y1TvNQoWOBAHPnzsW///4LV1dXjBkzBufPn8fPP/+Ms2fPln1g1cfKlSuxdu1aHDp0CI6Ojjh06FC921JEhBDcuHED3t7eUrc1bNgw3Lp1C6mpqfVuQ1NTEy1atKDhQgEoDRd7e3vo6urWeV9nZ2cUFhYiMTGR+8IouZI6XDIzM7F//37MmDEDAkHdmpsxYwZWrFiBkJAQZGRkICUlBT/88AOEQqFUNTEMg88//xyPHz/GgAEDMGrUKDx4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\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"source": [], | |
"metadata": { | |
"id": "p8_i2UecjJAB" | |
}, | |
"execution_count": null, | |
"outputs": [] | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment