{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# MNIST Anomaly Detection\n", "\n", "Baseline from: https://arxiv.org/pdf/2006.02516.pdf\n", "\n", "- 14x14, [$0-1$] range, pixels flattened (dont exploit inherent locality)\n", "- Embedding: TrigonometricEmbedding (p=2)\n", "- Combined loss: $\\mathcal{L} = \\frac{1}{N}\\sum_{i=1}^{N} \\left( \\log \\left\\| P \\Phi({X_i}) \\right\\|_2^2 - 1 \\right)^2 + \\alpha \\cdot \\mathrm{ReLU}\\left(\\log(\\|P\\|_F^2)\\right)$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Imports**" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "nbsphinx": { "title": "# Anomaly detection MNIST - SMPO" } }, "outputs": [], "source": [ "import os\n", "\n", "os.environ[\"KMP_WARNINGS\"] = \"0\"\n", "import jax\n", "import jax.numpy as jnp\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import optax\n", "import tensorflow as tf\n", "from jax.nn.initializers import *\n", "from sklearn.metrics import auc\n", "from tensorflow.keras.datasets import mnist\n", "\n", "from tn4ml.embeddings import *\n", "from tn4ml.eval import *\n", "from tn4ml.initializers import *\n", "from tn4ml.metrics import *\n", "from tn4ml.models.model import *\n", "from tn4ml.models.smpo import *\n", "from tn4ml.util import *" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "jax.config.update(\"jax_enable_x64\", True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Load dataset**" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "train, test = mnist.load_data()\n", "data = {\n", " \"X\": {\"train\": train[0], \"test\": test[0]},\n", " \"y\": {\"train\": train[1], \"test\": test[1]},\n", "}" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "normal_class = 0" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "X = {\n", " \"normal\": data[\"X\"][\"train\"][data[\"y\"][\"train\"] == normal_class] / 255.0,\n", " \"anomaly\": data[\"X\"][\"train\"][data[\"y\"][\"train\"] != normal_class] / 255.0,\n", "}" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "X_test = {\n", " \"normal\": data[\"X\"][\"test\"][data[\"y\"][\"test\"] == normal_class] / 255.0,\n", " \"anomaly\": data[\"X\"][\"test\"][data[\"y\"][\"test\"] != normal_class] / 255.0,\n", "}" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Function to resize images to 14x14\n", "def resize_images(images):\n", " \"\"\"Resize a batch of images to 14x14 pixels.\"\"\"\n", " resized_images = tf.image.resize(\n", " images, [14, 14], method=tf.image.ResizeMethod.AREA\n", " )\n", " return resized_images.numpy()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "X_resized = {\n", " \"normal\": resize_images(np.expand_dims(X[\"normal\"], axis=-1)),\n", " \"anomaly\": resize_images(np.expand_dims(X[\"anomaly\"], axis=-1)),\n", "}\n", "\n", "X_test_resized = {\n", " \"normal\": resize_images(np.expand_dims(X_test[\"normal\"], axis=-1)),\n", " \"anomaly\": resize_images(np.expand_dims(X_test[\"anomaly\"], axis=-1)),\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Rearrange pixels in zig-zag order\n", "- (from https://arxiv.org/pdf/1605.05775.pdf)\n", "\n", "\"MPS" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def zigzag_order(data):\n", " \"\"\"Flatten image rows into a zigzag-compatible feature order.\"\"\"\n", " data = np.squeeze(data)\n", " data_zigzag = []\n", " for x in data:\n", " image = []\n", " for i in x:\n", " image.extend(i)\n", " data_zigzag.append(image)\n", " return np.asarray(data_zigzag)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "zigzag = True" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "if zigzag:\n", " train_normal = zigzag_order(X_resized[\"normal\"])\n", " test_normal = zigzag_order(X_test_resized[\"normal\"])\n", "\n", " train_anomaly = zigzag_order(X_resized[\"anomaly\"])\n", " test_anomaly = zigzag_order(X_test_resized[\"anomaly\"])\n", "else:\n", " train_normal = X_resized[\"normal\"].reshape(\n", " -1, X_resized[\"normal\"].shape[1] * X_resized[\"normal\"].shape[2]\n", " )\n", " test_normal = X_test_resized[\"normal\"].reshape(\n", " -1, X_test_resized[\"normal\"].shape[1] * X_test_resized[\"normal\"].shape[2]\n", " )\n", "\n", " train_anomaly = X_resized[\"anomaly\"].reshape(\n", " -1, X_resized[\"anomaly\"].shape[1] * X_resized[\"anomaly\"].shape[2]\n", " )\n", " test_anomaly = X_test_resized[\"anomaly\"].reshape(\n", " -1, X_test_resized[\"anomaly\"].shape[1] * X_test_resized[\"anomaly\"].shape[2]\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Training setup**  " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "L = 196\n", "initializer = gramschmidt(\"normal\", 1e-1)\n", "key = jax.random.key(42)\n", "shape_method = \"noteven\"\n", "bond_dim = 10\n", "phys_dim = (2, 2)\n", "spacing = 8\n", "add_identity = True\n", "boundary = \"obc\"" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "model = SMPO_initialize(\n", " L=L,\n", " initializer=initializer,\n", " key=key,\n", " shape_method=shape_method,\n", " spacing=spacing,\n", " bond_dim=bond_dim,\n", " phys_dim=phys_dim,\n", " cyclic=False,\n", " compress=True,\n", " add_identity=add_identity,\n", " boundary=boundary,\n", ")" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "alpha = 0.4\n", "\n", "\n", "def loss_combined(*args, **kwargs):\n", " \"\"\"Compute the combined reconstruction and regularization loss.\"\"\"\n", " error = LogQuadNorm\n", " reg = LogReLUFrobNorm\n", " return CombinedLoss(*args, **kwargs, error=error, reg=lambda P: alpha * reg(P))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Define training parameters**" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "epochs = 100\n", "batch_size = 512\n", "optimizer = optax.adam\n", "strategy = \"global\"\n", "loss = loss_combined\n", "train_type = TrainingType.UNSUPERVISED\n", "embedding = TrigonometricEmbedding()\n", "learning_rate = 1e-3\n", "earlystop = EarlyStopping(min_delta=0, patience=5, monitor=\"loss\", mode=\"min\")\n", "\n", "model.configure(\n", " optimizer=optimizer,\n", " strategy=strategy,\n", " loss=loss,\n", " train_type=train_type,\n", " learning_rate=learning_rate,\n", ")" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "epoch: 8%|▊ 8/100 , loss=7000.6899 " ] }, { "name": "stdout", "output_type": "stream", "text": [ "Waiting for 1 epochs.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "epoch: 9%|▉ 9/100 , loss=7024.4809" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Waiting for 2 epochs.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "epoch: 10%|█ 10/100 , loss=7226.5291" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Waiting for 3 epochs.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "epoch: 11%|█ 11/100 , loss=7517.7869" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Waiting for 4 epochs.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "epoch: 12%|█▏ 12/100 , loss=7839.7346" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Training stopped by EarlyStopping on epoch: 7\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "epoch: 13%|█▎ 13/100 , loss=8161.6364\n" ] } ], "source": [ "history = model.train(\n", " train_normal,\n", " epochs=epochs,\n", " batch_size=batch_size,\n", " embedding=embedding,\n", " normalize=True,\n", " earlystop=earlystop,\n", " dtype=jnp.float64,\n", ")" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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pA4dOpicJDzk5ORo/PjxAf+7R+t54403lJmZqR/+8Ifq3Lmzhg0bppdeesnsWCHv29/+tlavXq0vvvhCkrRp0yZ9+OGHuuqqq0xOFj4KCwtVUlIS8N+ahIQEjR49mt+xbczlcslisSgxMdG0DBGmnRnn5ODBg/J4PEpJSQl4PSUlRdu3bzcpVXjxer2aMWOGLrroIg0cONDsOCFv8eLFKigo0Pr1682OEjZ27typ+fPna9asWfrVr36l9evX6xe/+IXsdrumTJlidryQdd9998ntdqtv376y2WzyeDz67W9/q8mTJ5sdLWyUlJRIUrO/Y33H0Pqqq6s1e/Zs3XzzzXI6nabloCQDZyknJ0dbtmzRhx9+aHaUkFdcXKy77rpLq1atUlRUlNlxwobX61VmZqYee+wxSdKwYcO0ZcsWLViwgJLcipYuXapXXnlFr776qgYMGKCNGzdqxowZSktL43NH2Kirq9ONN94owzA0f/58U7Ow3CLIJCcny2azqbS0NOD10tJSpaammpQqfEyfPl3Lly/XmjVr1K1bN7PjhLz8/HyVlZVp+PDhioiIUEREhNauXatnn31WERER8ng8ZkcMSV26dFH//v0DXuvXr5+KiopMShQe7rnnHt13332aNGmSBg0apFtuuUUzZ87U3LlzzY4WNny/R/kdaw5fQd69e7dWrVpl6iyyREkOOna7XSNGjNDq1av9r3m9Xq1evVpZWVkmJgtthmFo+vTpeu211/Tee++pZ8+eZkcKC1dccYU2b96sjRs3+h+ZmZmaPHmyNm7cKJvNZnbEkHTRRRedsMXhF198oYyMDJMShYdjx47Jag38tWyz2eT1ek1KFH569uyp1NTUgN+xbrdb69at43dsK/MV5C+//FLvvvuuOnbsaHYkllsEo1mzZmnKlCnKzMzUqFGj9PTTT6uyslJTp041O1rIysnJ0auvvqp//etfio+P969NS0hIUHR0tMnpQld8fPwJ675jY2PVsWNH1oO3opkzZ+rb3/62HnvsMd14443Ky8vTwoULtXDhQrOjhbRrrrlGv/3tb9W9e3cNGDBAn376qf73f/9XP/nJT8yOFlKOHj2qr776yv+8sLBQGzduVIcOHdS9e3fNmDFDv/nNb9S7d2/17NlTDz30kNLS0jRhwgTzQoeAU33uXbp00Q033KCCggItX75cHo/H/3u2Q4cOstvt5oQ2bV8NnJfnnnvO6N69u2G3241Ro0YZn3zyidmRQpqkZh9/+tOfzI4WdtgCrm28+eabxsCBAw2Hw2H07dvXWLhwodmRQp7b7Tbuuusuo3v37kZUVJRxwQUXGA888IBRU1NjdrSQsmbNmmb/ez5lyhTDMBq2gXvooYeMlJQUw+FwGFdccYWxY8cOc0OHgFN97oWFhSf9PbtmzRrTMlsMg1v5AAAAAMdjTTIAAADQBCUZAAAAaIKSDAAAADRBSQYAAACaoCQDAAAATVCSAQAAgCYoyQAAAEATlGQAwHmzWCx6/fXXzY4BAC2GkgwAQe6//uu/ZLFYTnhceeWVZkcDgKAVYXYAAMD5u/LKK/WnP/0p4DWHw2FSGgAIfswkA0AIcDgcSk1NDXgkJSVJalgKMX/+fF111VWKjo7WBRdcoL///e8B379582Z997vfVXR0tDp27KjbbrtNR48eDRjzxz/+UQMGDJDD4VCXLl00ffr0gOMHDx7Uddddp5iYGPXu3VtvvPGG/9iRI0c0efJkderUSdHR0erdu/cJpR4A2hNKMgCEgYceekgTJ07Upk2bNHnyZE2aNEnbtm2TJFVWVio7O1tJSUlav369li1bpnfffTegBM+fP185OTm67bbbtHnzZr3xxhvq1atXwDn+3//7f7rxxhv12Wef6eqrr9bkyZN1+PBh//k///xzvfPOO9q2bZvmz5+v5OTktvsAAOAsWQzDMMwOAQA4d//1X/+lv/71r4qKigp4/Ve/+pV+9atfyWKx6Pbbb9f8+fP9x8aMGaPhw4frxRdf1EsvvaTZs2eruLhYsbGxkqS3335b11xzjfbt26eUlBR17dpVU6dO1W9+85tmM1gsFj344IP69a9/LamheMfFxemdd97RlVdeqWuvvVbJycn64x//2EqfAgC0LNYkA0AIuPzyywNKsCR16NDB/3VWVlbAsaysLG3cuFGStG3bNg0ZMsRfkCXpoosuktfr1Y4dO2SxWLRv3z5dccUVp8wwePBg/9exsbFyOp0qKyuTJN1xxx2aOHGiCgoKNG7cOE2YMEHf/va3z+lnBYC2QEkGgBAQGxt7wvKHlhIdHX1G4yIjIwOeWywWeb1eSdJVV12l3bt36+2339aqVat0xRVXKCcnR//zP//T4nkBoCWwJhkAwsAnn3xywvN+/fpJkvr166dNmzapsrLSf/yjjz6S1WpVnz59FB8frx49emj16tXnlaFTp06aMmWK/vrXv+rpp5/WwoULz+v9AKA1MZMMACGgpqZGJSUlAa9FRET4L45btmyZMjMzdfHFF+uVV15RXl6e/u///k+SNHnyZD388MOaMmWKHnnkER04cEB33nmnbrnlFqWkpEiSHnnkEd1+++3q3LmzrrrqKlVUVOijjz7SnXfeeUb55syZoxEjRmjAgAGqqanR8uXL/SUdANojSjIAhIAVK1aoS5cuAa/16dNH27dvl9Sw88TixYv185//XF26dNHf/vY39e/fX5IUExOjlStX6q677tLIkSMVExOjiRMn6n//93/97zVlyhRVV1frqaee0t13363k5GTdcMMNZ5zPbrfr/vvv165duxQdHa1LLrlEixcvboGfHABaB7tbAECIs1gseu211zRhwgSzowBA0GBNMgAAANAEJRkAAABogjXJABDiWFUHAGePmWQAAACgCUoyAAAA0AQlGQAAAGiCkgwAAAA0QUkGAAAAmqAkAwAAAE1QkgEAAIAmKMkAAABAE5RkAAAAoIn/D/mrT7HHqOPYAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_loss(history, validation=False, figsize=(8, 6))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Evaluate**" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "indices = list(range(len(test_anomaly)))\n", "rng = np.random.default_rng()\n", "rng.shuffle(indices)\n", "\n", "indices = indices[: len(test_normal)]\n", "test_anomaly = np.take(test_anomaly, indices, axis=0)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "loss = LogQuadNorm\n", "\n", "anomaly_score = model.evaluate(\n", " test_anomaly,\n", " evaluate_type=train_type,\n", " return_list=True,\n", " dtype=jnp.float64,\n", " batch_size=128,\n", " embedding=embedding,\n", " metric=loss,\n", ")\n", "normal_score = model.evaluate(\n", " test_normal,\n", " evaluate_type=train_type,\n", " return_list=True,\n", " dtype=jnp.float64,\n", " batch_size=128,\n", " embedding=embedding,\n", " metric=loss,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Plot anomaly scores and ROC curve**" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "fpr, tpr = get_roc_curve_data(normal_score, anomaly_score, anomaly_det=True)\n", "auc_value = auc(fpr, tpr)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAHDCAYAAACESXgYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABY0ElEQVR4nO3deVxU9foH8M+wzLAJCAiIyOKOuOWOe2Xhkprmdcm1TG+FqVna9Vfmnl7bM7fKtHJLu25p1zJTy9wSRTJJRVEs9wpxRYHn9wd3TnNmhmVgODPA5/16zUvnnO/5LmcOzMNZnq9ORAREREREGnFxdAeIiIioYmHwQURERJpi8EFERESaYvBBREREmmLwQURERJpi8EFERESaYvBBREREmmLwQURERJpi8EFERESaYvBBVAbodDpMnTrV0d0oE5YtWwadToczZ84oyzp16oROnTpp0r75ZzV16lTodDpcvXpVk/ajoqIwfPhwTdoiKi4GH1QuLFiwADqdDq1atXJ0V6ic2LNnD6ZOnYqMjAxHd8WCM/eNqCjcHN0BIntYsWIFoqKicODAAaSmpqJWrVqO7hI5kW+++cbmbfbs2YNp06Zh+PDh8Pf3L/J2t2/fhptb6f5qLahvx48fh4sL/64k58YjlMq8tLQ07NmzB2+99RaqVKmCFStWOLpLVIibN29q2p5er4dery+1+nNzc3Hnzh0AgIeHR6kHHwUxGAxwd3d3WPtERcHgg8q8FStWoHLlyujevTv69u1rNfg4c+YMdDod3njjDXzwwQeoWbMmDAYDWrRogZ9++smi/HfffYf27dvD29sb/v7+6NWrF1JSUlRljNfyT5w4gcGDB8PPzw9VqlTB5MmTISI4d+4cevXqBV9fX4SGhuLNN99UbX/37l28+uqraNasGfz8/ODt7Y327dtjx44dBY53x44d0Ol0WL9+vcW6lStXQqfTYe/evfluf+/ePUybNg21a9eGh4cHAgMD0a5dO2zbtk1V7tdff0W/fv1QpUoVeHp6om7dunj55ZdVZQ4fPoyuXbvC19cXPj4+ePDBB7Fv3z5VGeM9GLt27cKzzz6L4OBghIeHK+v/+9//Kvu6UqVK6N69O3755ZcC94HRL7/8ggceeACenp4IDw/HzJkzkZuba1HO2j0f8+bNQ2xsLLy8vFC5cmU0b94cK1euBJD32U6YMAEAEB0dDZ1Op7qPRKfTYfTo0VixYgViY2NhMBiwdetWZZ21+3OuXr2Kfv36wdfXF4GBgRg7dqwSsAB/H6PLli2z2Na0zsL6Zu2ej9OnT+Mf//gHAgIC4OXlhdatW2PLli2qMjt37oROp8OaNWswa9YshIeHw8PDAw8++CBSU1Mt+kRUErzsQmXeihUr0KdPH+j1egwcOBALFy7ETz/9hBYtWliUXblyJa5fv45//vOf0Ol0mDt3Lvr06YPTp08rfy1+++236Nq1K2rUqIGpU6fi9u3bmDdvHtq2bYtDhw4hKipKVWf//v0RExODOXPmYMuWLZg5cyYCAgKwePFiPPDAA/j3v/+NFStW4MUXX0SLFi3QoUMHAEBmZiY++ugjDBw4ECNHjsT169exZMkSxMfH48CBA2jSpInV8Xbq1AnVq1fHihUr0Lt3b4t9UbNmTcTFxeW7v6ZOnYrZs2fjqaeeQsuWLZGZmYmDBw/i0KFDeOihhwAAycnJaN++Pdzd3TFq1ChERUXh1KlT+PLLLzFr1iwAeV/87du3h6+vLyZOnAh3d3csXrwYnTp1wq5duyzuv3n22WdRpUoVvPrqq8qZj88++wzDhg1DfHw8/v3vf+PWrVtYuHAh2rVrh8OHD1vsa1MXL17E/fffj+zsbPzrX/+Ct7c3PvjgA3h6eua7jdGHH36IMWPGoG/fvkoQkJycjP379+Pxxx9Hnz59cOLECaxatQpvv/02goKCAABVqlRR6vjuu++wZs0ajB49GkFBQQX2FQD69euHqKgozJ49G/v27cN7772Hv/76C59++mmh/TVVlL6ZunTpEtq0aYNbt25hzJgxCAwMxCeffIKePXviiy++sDiG5syZAxcXF7z44ou4du0a5s6di0GDBmH//v029ZOoQEJUhh08eFAAyLZt20REJDc3V8LDw2Xs2LGqcmlpaQJAAgMD5c8//1SWb9y4UQDIl19+qSxr0qSJBAcHyx9//KEsO3LkiLi4uMjQoUOVZVOmTBEAMmrUKGVZdna2hIeHi06nkzlz5ijL//rrL/H09JRhw4apymZlZan6+ddff0lISIg8+eSTquUAZMqUKcr7SZMmicFgkIyMDGXZ5cuXxc3NTVXOmsaNG0v37t0LLNOhQwepVKmSnD17VrU8NzdX+f+jjz4qer1eTp06pSw7f/68VKpUSTp06KAsW7p0qQCQdu3aSXZ2trL8+vXr4u/vLyNHjlS1cfHiRfHz87NYbm7cuHECQPbv368su3z5svj5+QkASUtLU5Z37NhROnbsqLzv1auXxMbGFlj/66+/blGPEQBxcXGRX375xeo608/AeJz07NlTVe7ZZ58VAHLkyBER+fsYXbp0aaF1FtS3yMhI1XFm3E8//PCDsuz69esSHR0tUVFRkpOTIyIiO3bsEAASExOjOi7fffddASA///yzRVtExcXLLlSmrVixAiEhIbj//vsB5J2e7t+/P1avXo2cnByL8v3790flypWV9+3btweQd1oaAC5cuICkpCQMHz4cAQEBSrlGjRrhoYcewldffWVR51NPPaX839XVFc2bN4eIYMSIEcpyf39/1K1bV2nHWNZ4H0Jubi7+/PNPZGdno3nz5jh06FCB4x46dCiysrLwxRdfKMs+//xzZGdnY/DgwQVu6+/vj19++QUnT560uv7KlSv4/vvv8eSTTyIiIkK1TqfTAQBycnLwzTff4NFHH0WNGjWU9VWrVsXjjz+O3bt3IzMzU7XtyJEj4erqqrzftm0bMjIyMHDgQFy9elV5ubq6olWrVoVefvrqq6/QunVrtGzZUllWpUoVDBo0qMDtjPvgt99+s3rJrag6duyI+vXrF7l8QkKC6v1zzz0HAFaPKXv66quv0LJlS7Rr105Z5uPjg1GjRuHMmTM4duyYqvwTTzyhuj/G/GeEyB4YfFCZlZOTg9WrV+P+++9HWloaUlNTkZqailatWuHSpUvYvn27xTbmX6bGQOSvv/4CAJw9exYAULduXYttY2JicPXqVYubJc3r9PPzg4eHh3I63HS5sR2jTz75BI0aNVLuvahSpQq2bNmCa9euFTj2evXqoUWLFqr7W1asWIHWrVsX+qTP9OnTkZGRgTp16qBhw4aYMGECkpOTlfXGL5kGDRrkW8eVK1dw69atfPdTbm4uzp07p1oeHR2tem8Mfh544AFUqVJF9frmm29w+fLlAsdx9uxZ1K5d22K5tT6Ze+mll+Dj44OWLVuidu3aSEhIwI8//ljodqbMx1MY877WrFkTLi4uqnwkpeHs2bP5fk7G9aYK+xkhsgfe80Fl1nfffYcLFy5g9erVWL16tcX6FStW4OGHH1YtM/3L25SIFLsf1uosSjvLly/H8OHD8eijj2LChAkIDg6Gq6srZs+ejVOnThXa7tChQzF27Fj89ttvyMrKwr59+/D+++8Xul2HDh1w6tQpbNy4Ed988w0++ugjvP3221i0aJHqLI69md+LYbwx9LPPPkNoaKhF+dJ8YiQmJgbHjx/H5s2bsXXrVvznP//BggUL8Oqrr2LatGlFqqMo95YUxHgWKb/3RtbO4JWm0vgZITLH4IPKrBUrViA4OBjz58+3WLdu3TqsX78eixYtsulLIjIyEkBergRzv/76K4KCguDt7V38Tpv44osvUKNGDaxbt071xTNlypQibT9gwACMHz8eq1atwu3bt+Hu7o7+/fsXaduAgAA88cQTeOKJJ3Djxg106NABU6dOxVNPPaVcRjl69Gi+21epUgVeXl757icXFxdUr169wD7UrFkTABAcHIzOnTsXqd+mIiMjrV46stYna7y9vdG/f3/0798fd+/eRZ8+fTBr1ixMmjQJHh4e+QYDxXXy5EnV2ZLU1FTk5uYqN6oazzCYJw4zPzMB5B+oWBMZGZnv52RcT6Q1XnahMun27dtYt24dHnnkEfTt29fiNXr0aFy/fh2bNm2yqd6qVauiSZMm+OSTT1RfAkePHsU333yDbt262W0Mxr8wTf+i3L9/f4GPyZoKCgpC165dsXz5cqxYsQJdunSxuNRjzR9//KF67+Pjg1q1aiErKwtAXmDRoUMHfPzxx0hPT1eVNfbV1dUVDz/8MDZu3Ki6bHDp0iWsXLkS7dq1g6+vb4H9iI+Ph6+vL1577TXcu3fPYv2VK1cK3L5bt27Yt28fDhw4oNqmKHlezPeBXq9H/fr1ISJKX4xBpr2yiJoHyfPmzQMAdO3aFQDg6+uLoKAgfP/996pyCxYssKjLlr5169YNBw4cUB1XN2/exAcffICoqCib7lshshee+aAyadOmTbh+/Tp69uxpdX3r1q2VhGNFPRtg9Prrr6Nr166Ii4vDiBEjlEdt/fz87Dq/yiOPPIJ169ahd+/e6N69O9LS0rBo0SLUr18fN27cKFIdQ4cORd++fQEAM2bMKNI29evXR6dOndCsWTMEBATg4MGD+OKLLzB69GilzHvvvYd27dqhadOmGDVqFKKjo3HmzBls2bIFSUlJAICZM2di27ZtaNeuHZ599lm4ublh8eLFyMrKwty5cwvth6+vLxYuXIghQ4agadOmGDBgAKpUqYL09HRs2bIFbdu2LfAy0sSJE/HZZ5+hS5cuGDt2rPKobWRkpOoeFmsefvhhhIaGom3btggJCUFKSgref/99dO/eHZUqVQIANGvWDADw8ssvY8CAAXB3d0ePHj2KfeYrLS0NPXv2RJcuXbB3714sX74cjz/+OBo3bqyUeeqppzBnzhw89dRTaN68Ob7//nucOHHCoi5b+vavf/0Lq1atQteuXTFmzBgEBATgk08+QVpaGv7zn/8wGyo5hgOftCEqth49eoiHh4fcvHkz3zLDhw8Xd3d3uXr1qvIY4+uvv25RDmaPMYqIfPvtt9K2bVvx9PQUX19f6dGjhxw7dkxVxvgI5ZUrV1TLhw0bJt7e3hbtdOzYUfV4Z25urrz22msSGRkpBoNB7rvvPtm8ebMMGzZMIiMjC+2jiEhWVpZUrlxZ/Pz85Pbt2/nuC1MzZ86Uli1bir+/v3h6ekq9evVk1qxZcvfuXVW5o0ePSu/evcXf3188PDykbt26MnnyZFWZQ4cOSXx8vPj4+IiXl5fcf//9smfPHlUZ46O2P/30k9X+7NixQ+Lj48XPz088PDykZs2aMnz4cDl48GChY0lOTpaOHTuKh4eHVKtWTWbMmCFLliwp9FHbxYsXS4cOHSQwMFAMBoPUrFlTJkyYINeuXVPVP2PGDKlWrZq4uLio6gQgCQkJVvtk/lkZj5Njx45J3759pVKlSlK5cmUZPXq0xWd269YtGTFihPj5+UmlSpWkX79+cvnyZauff359M3/UVkTk1KlT0rdvX+WzbNmypWzevFlVxvio7dq1a1XLC3oEmKi4dCK8i4iorMrOzkZYWBh69OiBJUuWOLo7RERFwvNtRGXYhg0bcOXKFQwdOtTRXSEiKjKe+SAqg/bv34/k5GTMmDEDQUFBhSYlIyJyJjzzQVQGLVy4EM888wyCg4NtnhuEiMjReOaDiIiINMUzH0RERKQpp8vzkZubi/Pnz6NSpUp2zzBIREREpUNEcP36dYSFhRWaP8bpgo/z588XmpaZiIiInNO5c+cQHh5eYBmnCz6M2QXPnTtXaHpmIiIicg6ZmZmoXr268j1eEKcLPoyXWnx9fRl8EBERlTFFuWWCN5wSERGRphh8EBERkaYYfBAREZGmnO6eDyIiqlhycnJw7949R3eDikCv1xf6GG1RMPggIiKHEBFcvHgRGRkZju4KFZGLiwuio6Oh1+tLVA+DDyIicghj4BEcHAwvLy8mlnRyxiSgFy5cQERERIk+LwYfRESkuZycHCXwCAwMdHR3qIiqVKmC8+fPIzs7G+7u7sWuhzecEhGR5oz3eHh5eTm4J2QL4+WWnJycEtXD4IOIiByGl1rKFnt9Xgw+iIiISFO854OIiJxLejpw9ap27QUFARER2rVHDD6IiMiJpKcDMTHArVvatenlBaSkVJgApFOnTmjSpAneeecdh/WBwQcRETmPq1fzAo/ly/OCkNKWkgIMHpzXbgUJPpwBgw8iInI+MTFA06aO7gWVEt5wWgGkpwOHDuW90tMd3RsiorJv69ataNeuHfz9/REYGIhHHnkEp06dAgCcOXMGOp0O69atw/333w8vLy80btwYe/fuVdXxn//8B7GxsTAYDIiKisKbb76pWh8VFYWZM2di6NCh8PHxQWRkJDZt2oQrV66gV69e8PHxQaNGjXDw4EFlmz/++AMDBw5EtWrV4OXlhYYNG2LVqlX5jmP69Olo0KCBxfImTZpg8uTJJdlFBWLwUc4ZL582a5b3iolhAEJEVFI3b97E+PHjcfDgQWzfvh0uLi7o3bs3cnNzlTIvv/wyXnzxRSQlJaFOnToYOHAgsrOzAQCJiYno168fBgwYgJ9//hlTp07F5MmTsWzZMlU7b7/9Ntq2bYvDhw+je/fuGDJkCIYOHYrBgwfj0KFDqFmzJoYOHQoRAQDcuXMHzZo1w5YtW3D06FGMGjUKQ4YMwYEDB6yO48knn0RKSgp++uknZdnhw4eRnJyMJ554ws57zYQ4mWvXrgkAuXbtmqO7Ui4kJooAIsuX572AvGVERI50+/ZtOXbsmNy+fVu9wvhLS6tfVHZq78qVKwJAfv75Z0lLSxMA8tFHHynrf/nlFwEgKSkpIiLy+OOPy0MPPaSqY8KECVK/fn3lfWRkpAwePFh5f+HCBQEgkydPVpbt3btXAMiFCxfy7Vv37t3lhRdeUN537NhRxo4dq7zv2rWrPPPMM8r75557Tjp16mS1rnw/N7Ht+5tnPiqImBht7t0iIqoITp48iYEDB6JGjRrw9fVFVFQUACDd5NRyo0aNlP9XrVoVAHD58mUAQEpKCtq2bauqs23btjh58qQqe6hpHSEhIQCAhg0bWiwz1puTk4MZM2agYcOGCAgIgI+PD77++mtVv8yNHDkSq1atwp07d3D37l2sXLkSTz75ZNF3RjHwhlMiIiIb9ejRA5GRkfjwww8RFhaG3NxcNGjQAHfv3lXKmM59YswManpZpiis1VFQva+//jreffddvPPOO2jYsCG8vb0xbtw4Vb+sjcVgMGD9+vXQ6/W4d+8e+vbta1M/bcXgg4iIyAZ//PEHjh8/jg8//BDt27cHAOzevdumOmJiYvDjjz+qlv3444+oU6cOXF1di923H3/8Eb169cLgwYMB5AUlJ06cQP369fPdxs3NDcOGDcPSpUuh1+sxYMAAeHp6FrsPRcHgg4iInE9KitO2U7lyZQQGBuKDDz5A1apVkZ6ejn/961821fHCCy+gRYsWmDFjBvr374+9e/fi/fffx4IFC2zuj6natWvjiy++wJ49e1C5cmW89dZbuHTpUoHBBwA89dRTiPnftXnzoKg0MPggIiLnERSUl3H0f3+5a8LLK6/dInJxccHq1asxZswYNGjQAHXr1sV7772HTp06FbmOpk2bYs2aNXj11VcxY8YMVK1aFdOnT8fw4cNt77+JV155BadPn0Z8fDy8vLwwatQoPProo7h27VqB29WuXRtt2rTBn3/+iVatWpWoD0XB4IOIiJxHRETe2Qgnn9ulc+fOOHbsmGqZ/O9xV/P/A4C/v7/FssceewyPPfZYvm2cOXPGYpl5HVFRUaplAQEB2LBhQ4F937lzp9V6z58/j2effbbAbe3FpuBj4cKFWLhwobJDYmNj8eqrr6Jr164A8p4vfuGFF7B69WpkZWUhPj4eCxYsUO7GJSIiKlREBFOda+jKlStYvXo1Ll68WLq5PUzYFHyEh4djzpw5qF27NkQEn3zyCXr16oXDhw8jNjYWzz//PLZs2YK1a9fCz88Po0ePRp8+fTS5fkRERES2Cw4ORlBQED744ANUrlxZkzZtCj569Oihej9r1iwsXLgQ+/btQ3h4OJYsWYKVK1figQceAAAsXboUMTEx2LdvH1q3bm21zqysLGRlZSnvMzMzbR0DERERFZP5pRwtFDvJWE5ODlavXo2bN28iLi4OiYmJuHfvHjp37qyUqVevHiIiIizy2ZuaPXs2/Pz8lFf16tWL2yUiIiIqA2wOPn7++Wf4+PjAYDDg6aefxvr161G/fn1cvHgRer0e/v7+qvIhISG4ePFivvVNmjQJ165dU17nzp2zeRBERERUdtj8tEvdunWRlJSEa9eu4YsvvsCwYcOwa9euYnfAYDDAYDAUe3siIiIqW2wOPvR6PWrVqgUAaNasGX766Se8++676N+/P+7evYuMjAzV2Y9Lly4hNDTUbh0mIiKisq3EE8vl5uYiKysLzZo1g7u7O7Zv366sO378ONLT0xEXF1fSZoiIiKicsOnMx6RJk9C1a1dERETg+vXrWLlyJXbu3Imvv/4afn5+GDFiBMaPH4+AgAD4+vriueeeQ1xcXL5PuhAREZlLT3f6HGNUQjYFH5cvX8bQoUNx4cIF+Pn5oVGjRvj666/x0EMPAQDefvttuLi44LHHHlMlGSMiIiqK9HQgJga4dUu7Nr288pKqltcAJCoqCuPGjcO4ceMc3RWFTcHHkiVLClzv4eGB+fPnY/78+SXqFBERVUxXr+YFHsuX5wUhpS0lJW8amatXy2/w4Yw4twsRETmdmBigaVNH90Ibd+/ehV6vd3Q3NFXiG06JiIgqkk6dOmHMmDGYOHEiAgICEBoaiqlTpyrr09PT0atXL/j4+MDX1xf9+vXDpUuXlPVTp05FkyZN8NFHHyE6OhoeHh4AAJ1Oh8WLF+ORRx6Bl5cXYmJisHfvXqSmpqJTp07w9vZGmzZtcOrUKaWuU6dOoVevXggJCYGPjw9atGiBb7/9VrN9UVwMPoiIiGz0ySefwNvbG/v378fcuXMxffp0bNu2Dbm5uejVqxf+/PNP7Nq1C9u2bcPp06fRv39/1fapqan4z3/+g3Xr1iEpKUlZPmPGDAwdOhRJSUmoV68eHn/8cfzzn//EpEmTcPDgQYgIRo8erZS/ceMGunXrhu3bt+Pw4cPo0qULevTogfT0dK12RbHwsks5Y3qXeFCQY/tC/2N+6z5vrScq8xo1aoQpU6YAAGrXro33339fSTXx888/Iy0tTZku5NNPP0VsbCx++ukntGjRAkDepZZPP/0UVapUUdX7xBNPoF+/fgCAl156CXFxcZg8eTLi4+MBAGPHjlXNPNu4cWM0btxYeT9jxgysX78emzZtUgUpzobBRzlifpe4lxewYoVj+1ThWbt1v7zfWk9UATRq1Ej1vmrVqrh8+TJSUlJQvXp11Txl9evXh7+/P1JSUpTgIzIy0iLwMK83JCQEANCwYUPVsjt37iAzMxO+vr64ceMGpk6dii1btuDChQvIzs7G7du3eeaDtGN6lzjw9x3c5EDmt+7z1nqicsHd3V31XqfTITc3t8jbe3t7F1qvTqfLd5mxrRdffBHbtm3DG2+8gVq1asHT0xN9+/bF3bt3i9wXR2DwUQ5p8Xga2agi3bpPVIHFxMTg3LlzOHfunHL249ixY8jIyED9+vXt3t6PP/6I4cOHo3fv3gDy7gE5c+aM3duxNwYfRETkdFJSymY7nTt3RsOGDTFo0CC88847yM7OxrPPPouOHTuiefPm9m0MefebrFu3Dj169IBOp8PkyZNtOgPjKAw+iIjIaQQF5d0WNXiwdm16ednvBn2dToeNGzfiueeeQ4cOHeDi4oIuXbpg3rx59mnAzFtvvYUnn3wSbdq0QVBQEF566SVkZmaWSlv2xOCDiIicRkRE3tkIZ57bZefOnRbLNmzYoPw/IiICGzduzHf7qVOnqvKCGImI6n1UVJTFsk6dOqmWRUVF4bvvvlOVSUhIUL13xsswDD6IiMipRETwfuzyjknGiIiISFMMPoiIiEhTDD6IiIhIU7zno5xIT7f+yNjZs9r3hWzE9OtUgZWFx0Lpb+Y3wBYXg49ywDSDt+kjY15ewMyZfy9jtlMnxPTrVEHp9Xq4uLjg/PnzqFKlCvR6vZK9k5yTiODKlSvQ6XQWGV5txeCjHDDN4N2+/d/fWcbH1Yx/SDP4cEJMv04VlIuLC6Kjo3HhwgWcP3/e0d2hItLpdAgPD4erq2uJ6mHwUY7ExKi/r/i4WhnC9OtUAen1ekRERCA7Oxs5OTmO7g4Vgbu7e4kDD4DBBxEROZDxFH5JT+NT2cKnXYiIiEhTDD6IiIhIUww+iIiISFMMPoiIiEhTDD6IiIhIUww+iIiISFN81JaoImJKdyJyIAYfRBUNU7oTkYPxsgtRRWOa0j0xMe/fW7eYf5+INMMzH0QVFVO6E5GD8MwHERERaYrBBxEREWmKwQcRERFpisEHERERaYrBBxEREWmKwQcRERFpisEHERERaYrBBxEREWmKScZIxTjlB6f6KAHTeVNSUhzbFyIiJ8TggxSmU35wqo9iym/elKAgx/WJiMjJ8LILKYxTfrzyCqf6KDbzeVMSExnFERGZ4ZkPshAZ6egelAOcN4WIKF8880FERESaYvBBREREmmLwQURERJpi8EFERESaYvBBREREmrIp+Jg9ezZatGiBSpUqITg4GI8++iiOHz+uKtOpUyfodDrV6+mnn7Zrp4mIiKjssin42LVrFxISErBv3z5s27YN9+7dw8MPP4ybN2+qyo0cORIXLlxQXnPnzrVrp4mIiKjssinPx9atW1Xvly1bhuDgYCQmJqJDhw7Kci8vL4SGhhapzqysLGRlZSnvMzMzbelShWSavRtgBm+7Mt+5gPPnmjfvs7P3l4gqvBIlGbt27RoAICAgQLV8xYoVWL58OUJDQ9GjRw9MnjwZXl5eVuuYPXs2pk2bVpJuVCjWsncDzOBtFwXtXGfNUppfOndn7S8REUoQfOTm5mLcuHFo27YtGjRooCx//PHHERkZibCwMCQnJ+Oll17C8ePHsW7dOqv1TJo0CePHj1feZ2Zmonr16sXtVrlnmr07Jubv5fxj1w6s7dyUFGDw4Lx1zriDzfvs7P0lIkIJgo+EhAQcPXoUu3fvVi0fNWqU8v+GDRuiatWqePDBB3Hq1CnUrFnToh6DwQCDwVDcblRYzN5disrizi2LfSaiCqtYj9qOHj0amzdvxo4dOxAeHl5g2VatWgEAUlNTi9MUERERlTM2nfkQETz33HNYv349du7ciejo6EK3SUpKAgBUrVq1WB0kIiKi8sWm4CMhIQErV67Exo0bUalSJVy8eBEA4OfnB09PT5w6dQorV65Et27dEBgYiOTkZDz//PPo0KEDGjVqVCoDICIiorLFpuBj4cKFAPISiZlaunQphg8fDr1ej2+//RbvvPMObt68ierVq+Oxxx7DK6+8YrcOExERUdlm82WXglSvXh27du0qUYeIiIiofOPcLkRERKQpBh9ERESkKQYfREREpKkSpVcnMmWcYoTZVomIqCAMPsguTKcY4dQiRERUEF52IbswTjHyyit5/5pPDEtERGTE4IPsKjLS0T0gIiJnx+CDiIiINMXgg4iIiDTF4IOIiIg0xeCDiIiINMXgg4iIiDTF4IOIiIg0xeCDiIiINMUMp07I2dKUO1t/HM64Q4xKe8fYoz3TOlJS7Nc3IqJiYPDhZJwtTbmz9cfhTHeIUWnuGHu0l18dQUH27SsRURHxsouTcbY05c7WH4cz7pDly4HExLx/S3PH2KM98zoSExlFEpFD8cyHk3K2NOXO1h+Hi4kBmjYtW+1p3WcionzwzAcRERFpisEHERERaYrBBxEREWmKwQcRERFpisEHERERaYrBBxEREWmKwQcRERFpink+HMw8c3Z+ma+N5bTMjM0s3GWY6YfHD5KInAyDDweylvUasMx8bV6utDNjBwXltTF4sDbtkR2Zf3hG/BCJyIkw+HAg06zXMTF/Lw8KUp8NMS9X2vOYRUTk/bFs7IN5f8iJmX94RpwVkIicCIMPJ2At67W1L3sts2NHRKi/qxh8lCHmHx4RkZPhDadERESkKQYfREREpCkGH0RERKQpBh9ERESkKQYfREREpCkGH0RERKQpBh9ERESkKQYfREREpCkmGSObGKcJKWrCTNO5a0qSZNNYDxN1liLTOWDsvaPNJzHiB0lUoTH4oCKxNt9LSkrB3x/W5qQpbJvC6iluHVQAa/PB2HNHW5vEiB8kUYXGyy5UJMYpQxIT8+aYuXWr8JTrpnPSFHWbgup55ZXi10EFMP1wbfmAi8r0QCiN+omozOGZDyqy4k4ZYjppXklERtqnHrJCi/lgtJyciIicGs98EBERkaYYfBAREZGmGHwQERGRphh8EBERkaZsCj5mz56NFi1aoFKlSggODsajjz6K48ePq8rcuXMHCQkJCAwMhI+PDx577DFcunTJrp0mIiKissum4GPXrl1ISEjAvn37sG3bNty7dw8PP/wwbt68qZR5/vnn8eWXX2Lt2rXYtWsXzp8/jz59+ti940RERFQ22fSo7datW1Xvly1bhuDgYCQmJqJDhw64du0alixZgpUrV+KBBx4AACxduhQxMTHYt28fWrdubb+eExERUZlUojwf165dAwAEBAQAABITE3Hv3j107txZKVOvXj1ERERg7969VoOPrKwsZGVlKe8zMzNL0qVyxzTjtT2ZZ7sublvGekqrn3ZXWmm+jTvAXjuisPrs3Z6trB1Appg+nYgKUOzgIzc3F+PGjUPbtm3RoEEDAMDFixeh1+vh7++vKhsSEoKLFy9arWf27NmYNm1acbtRbllLZx4UZJ+609OB9u3V2a6NbGnHvB579rFUlEaa7/xSkxd3RxRWn73bKw5r+9Ec06cTUQGKHXwkJCTg6NGj2L17d4k6MGnSJIwfP155n5mZierVq5eozvLAmPHaHpOymTPNdm2efdSWdszrCQpy8ozZ5h1OScn7Er96tfg71/yDAkr2YRVWn73bK46CDiDAPvuViMq1YgUfo0ePxubNm/H9998jPDxcWR4aGoq7d+8iIyNDdfbj0qVLCA0NtVqXwWCAwWAoTjfKvdLOeG2vbNem9Th18GFk7zTf9v6gCqtPi1ToRcF06URUTDY97SIiGD16NNavX4/vvvsO0dHRqvXNmjWDu7s7tm/friw7fvw40tPTERcXZ58eExERUZlm05mPhIQErFy5Ehs3bkSlSpWU+zj8/Pzg6ekJPz8/jBgxAuPHj0dAQAB8fX3x3HPPIS4ujk+6EBEREQAbg4+FCxcCADp16qRavnTpUgwfPhwA8Pbbb8PFxQWPPfYYsrKyEB8fjwULFtils0RERFT22RR8iEihZTw8PDB//nzMnz+/2J0iIiKi8otzuxAREZGmGHwQERGRphh8EBERkaZKlF6dyqazZx1XT0pK4TmxjJm7Ncud5ehU5RWV6f5mOnaiCoXBRwVizMw9c6Z9MoDbUo9pVvCCMm+bZu42lis1zpCqvCLKb78zHTtRhcHgowIxzcxtrwzgRa3HuM0PPxSceduYufuVV/KCm1LNmOoMqcorIvP9znTsRBUOg48Kxl6ZuYtTT0SE9alArImMtL1PxeIsqcorGu53ogqNN5wSERGRphh8EBERkaYYfBAREZGmGHwQERGRphh8EBERkaYYfBAREZGmGHwQERGRphh8EBERkaaYZIzIETifDBFVYAw+iLTE+WSIiBh8EGmK88kQETH4INIc5zUhogqON5wSERGRphh8EBERkaYYfBAREZGmGHwQERGRphh8EBERkaYYfBAREZGmGHwQERGRppjng4isM0397oyJ0NLTmayNqIxi8EFEavmlgE9JcZ4v9/R0ICYGuHXr72XO1kciyhcvuxCRmjEFfGJi3mv58rwvedOzDI529Wpen5Yvd94+ElG+eOaDiCyVlRTwMTFA06aO7gUR2YhnPoiIiEhTDD6IiIhIUww+iIiISFMMPoiIiEhTDD6IiIhIUww+iIiISFMMPoiIiEhTzPNBpcI0M3fpVH477//mKbVLK+W2cUClOjAiooqBwQfZlXlmbi+vvGV28ccfAAKBwYMAHP67AWNK7dJIuZ1fqnG7DYqIqOJh8EF2ZczMbTz5YNe5vm7cABAIzJgJdAvNa2jw4LzGIiLUKbdjYizX22NAACcwIyIqIQYfZHelnpk7OhpoGpP/enun3C4rqcaJiMoI3nBKREREmmLwQURERJpi8EFERESaYvBBREREmmLwQURERJqyOfj4/vvv0aNHD4SFhUGn02HDhg2q9cOHD4dOp1O9unTpYq/+EhERURlnc/Bx8+ZNNG7cGPPnz8+3TJcuXXDhwgXltWrVqhJ1koiIiMoPm/N8dO3aFV27di2wjMFgQGhoaLE7RUREROVXqSQZ27lzJ4KDg1G5cmU88MADmDlzJgIDA62WzcrKQlZWlvI+MzOzNLpETsY4RUpJkoWmX3DHVdwHpHjm1VNYY5yXpWRs3Y/c70SUD7sHH126dEGfPn0QHR2NU6dO4f/+7//QtWtX7N27F66urhblZ8+ejWnTptm7G+SkrM39UpypV9LTgZi+9XELh4DB/6tnjbs6AOG8LPZh637kfieiQtg9+BgwYIDy/4YNG6JRo0aoWbMmdu7ciQcffNCi/KRJkzB+/HjlfWZmJqpXr27vbpGTMJ0qpSRTr1y9Cty644rlGATMmInBk6NxNcNNHXxwXhb7sHU/cr8TUSFKfW6XGjVqICgoCKmpqVaDD4PBAIPBUNrdICdiz6lSYpACRN/RprGKzNb9yP1ORAUo9Twfv/32G/744w9UrVq1tJsiIiKiMsDmMx83btxAamqq8j4tLQ1JSUkICAhAQEAApk2bhsceewyhoaE4deoUJk6ciFq1aiE+Pt6uHSciIqKyyebg4+DBg7j//vuV98b7NYYNG4aFCxciOTkZn3zyCTIyMhAWFoaHH34YM2bM4KUVIiIiAlCM4KNTp04QkXzXf/311yXqEBEREZVvnNuFiIiINMXgg4iIiDTF4IOIiIg0Vep5Piq69PS/cy0xz1L+jPuJmbiJiMo/Bh+lKD0diIkBbt3Ke1/cVOLlXXo60L69ej8xEzcRUfnF4KMUXb2a94W6fHne++KmEi/vTPdTTExe4GGamZuIiMoXBh8aiIlxdA/KhpgYoGnTvP8z+CAiKr94wykRERFpisEHERERaYrBBxEREWmKwQcRERFpisEHERERaYrBBxEREWmKwQcRERFpink+7Mg0lTpgPVW46TKmEreTtDQAMf/792/Gz4Np7YmInAuDDzsxT6VuZJoq3MsrL8tpfuupGDw8gcmvAOiW9+//dqjp58G09kREzoXBh52Ypwg3Mv2rOyXFMnMn/yovoS++ADIygMEAlq8A2nsDERG4eijv83jlFWDmTKa1JyJyJgw+7Mw0Rbi5iAh+Adpd1ap5LyBv55vt38hI7btEREQF4w2nREREpCkGH0RERKQpBh9ERESkKQYfREREpCkGH0RERKQpBh9ERESkKQYfREREpCkGH0RERKQpJhkjp8b5byoQ0w+7NFL/mk++ZGsbJd2eiBQMPsgpBQWp58Lx8gKC/LMd2ykqHeYfNmD/CXmsTb5kSxsl3Z6IVBh8kFOKiFDPhRMUBFz94a5jO0Wlw/zDTknJC0TsOSGP+eRLtrZR0u2JSIXBBzkt87lwruZflMo6rSY+KmjyJS22JyIAvOGUiIiINMbgg4iIiDTF4IOIiIg0xeCDiIiINMXgg4iIiDTF4IOIiIg0xeCDiIiINMU8H+RwZ88WsNI0pXXaRQAxWnSJnIF5bv2ipDPPLx9/UfL0M306kWYYfJDDGLNqz5z5v/TpQWYFLFJa3wegG+Dvr21HSVvW0q0DBaczz28b8+0tDrL/Yfp0Ik0x+CCHMc2qbfWPTIuU1p7AYABVqzqiu6QV83TrQOHpzK1tY66gMxlMn06kKQYf5FBFyqrNlNYVT3HSrdsjRTuPNSJN8IZTIiIi0hSDDyIiItIUgw8iIiLSFIMPIiIi0hSDDyIiItKUzcHH999/jx49eiAsLAw6nQ4bNmxQrRcRvPrqq6hatSo8PT3RuXNnnDx50l79JSIiojLO5uDj5s2baNy4MebPn291/dy5c/Hee+9h0aJF2L9/P7y9vREfH487d+6UuLNERERU9tmc56Nr167o2rWr1XUignfeeQevvPIKevXqBQD49NNPERISgg0bNmDAgAEW22RlZSErK0t5n5mZaWuXyJkVlrKaKa3JFsY06UVJl66FgvrBY5koX3ZNMpaWloaLFy+ic+fOyjI/Pz+0atUKe/futRp8zJ49G9OmTbNnN8hZFJaymimtqaispU8vKF26I/pjjscyUb7sGnxcvHgRABASEqJaHhISoqwzN2nSJIwfP155n5mZierVq9uzW+QohaWsZkprKipr6dMdeWahsHTuPJaJCuTw9OoGgwEGg8HR3aDSVFjKaqa0pqKwR/p0e3K2/hCVIXZ91DY0NBQAcOnSJdXyS5cuKeuIiIioYrNr8BEdHY3Q0FBs375dWZaZmYn9+/cjLi7Onk0RERFRGWXzZZcbN24gNTVVeZ+WloakpCQEBAQgIiIC48aNw8yZM1G7dm1ER0dj8uTJCAsLw6OPPmrPfhMREVEZZXPwcfDgQdx///3Ke+PNosOGDcOyZcswceJE3Lx5E6NGjUJGRgbatWuHrVu3wsPDw369JiIiojLL5uCjU6dOEJF81+t0OkyfPh3Tp08vUceIiIiofOLcLkRERKQpBh9ERESkKQYfREREpCmHJxkr64xTkzjLVBMVgb33tfn0MgCn5agwSnuuGPN6CzuwSjrXkbWD2Zb2iTTC4KMEzKcmceRUExWB+XQaxv1d0O/awlibXsZYN6flKMdKe66Y/OZ+KejAKulcR/kdzEVtn0hDDD5KwHxqEv5RUbrMp9Mw7u+SBB/mnyHAaTkqhNKeK8Za/YUdWCWd68jawWyKBzY5EQYfdsCpSbRTWtNp8DOsgEp7bpbi1l/Sg5EHM5UBvOGUiIiINMXgg4iIiDTF4IOIiIg0xeCDiIiINMXgg4iIiDTF4IOIiIg0xeCDiIiINMU8H1RumGayLixbdnHS4ptmrmZCOSKi4mPwQWVeQZmsrWXLLk5afGvbMEs1EVHxMPigMs9aJmsg/3lfipMW33QbgFmqiYhKgsEHlQv5ZbIuaN6X4mShtjZlBhER2YY3nBIREZGmGHwQERGRphh8EBERkaYYfBAREZGmGHwQERGRphh8EBERkaYYfBAREZGmGHwQERGRpphkjJyPccIVWyZeKaL09KJXa8tcMca6r14t3rwvnDeGisT0QAF4sFCZxeCDnIe1SVqKMvFKEZnOz1JQtYXNFWMta6p53bbM+8J5Y6hIzA8UgAcLlVkMPsh5WJukxY5/2ZnOz9K+ff7VFjRXTEREwfPFvPIKMHOmbfO+cN4YKhLzSYlSUniwUJnF4IOcS36TtNhRTEzhTRS3G5GRxesTwHljqIiKMykRkZPhDadERESkKQYfREREpCkGH0RERKQpBh9ERESkKQYfREREpCkGH0RERKQpBh9ERESkKeb5ICpFTJtORGSJwQdRKWHadCIi63jZhaiUmGbDXr487//WUrMTEVU0PPNBVMqYNp2ISI1nPoiIiEhTDD6IiIhIUww+iIiISFMMPoiIiEhTDD6IiIhIU3YPPqZOnQqdTqd61atXz97NEBERURlVKo/axsbG4ttvv/27ETc+0UtERER5SiUqcHNzQ2hoaJHKZmVlISsrS3mfmZlZGl2i4jDNDW4N84XbLCVFvdvS0/OWkZMyfjiO/JAK64Mz9NGU+e8N/p4gK0ol+Dh58iTCwsLg4eGBuLg4zJ49GxH5HHyzZ8/GtGnTSqMbVBLmucGtYb7wIgsKyttdgwf/vduAv3exl1deGWZAdRKmH5iR8UNylj44Qx/NWfu9wd8TZIXdg49WrVph2bJlqFu3Li5cuIBp06ahffv2OHr0KCpVqmRRftKkSRg/frzyPjMzE9WrV7d3t8hWprnBraXoTEnJ+6V39Sp/qRRBRETeLvvhh793G/D3Lm7fPq8Mgw8nYfzAHPkXfGF9cIY+mjP/vcHfE5QPuwcfXbt2Vf7fqFEjtGrVCpGRkVizZg1GjBhhUd5gMMBgMNi7G2QvMTFA06aO7kW5EBFhPY6LieHvZacUEeH4D6awPjhDH63h7w0qRKk/auvv7486deogNTW1tJsiIiKiMqDUg48bN27g1KlTqFq1amk3RURERGWA3YOPF198Ebt27cKZM2ewZ88e9O7dG66urhg4cKC9myIiIqIyyO73fPz2228YOHAg/vjjD1SpUgXt2rXDvn37UKVKFXs3RURERGWQ3YOP1atX27tKIiIiKkc4twsRERFpisEHERERaYrBBxEREWmKM77ZwHzKAmeZSsGhzHdCUTIsOmAuitJoyrROHgtUZKYHi6Mzkjpi/ibO/UJg8FFk+U114uipFBzG2rwSQMHzODhgLgrzJu3RXEFDr5DHAhVNfse/o+Y9ccT8TZz7hf6HwUcR5TfVSYUN2q3NK1HYPA4OmIvCvEl7NGdtGMa6OTcL5cv8wHH0vCeOmL+Jc7/Q/zD4sBGnLDBRnHklHDAXRWk0mV+dDD6oQM44F4sjfqnxF2mFxxtOiYiISFMMPoiIiEhTDD6IiIhIUww+iIiISFMMPoiIiEhTDD6IiIhIUww+iIiISFPM82HGmPm3XCYPKyytsen6kuQLd0D6dKIyS+ufF1vbK84UCkSFYPBhwjTzb7nL+FtYWuP81tuSL9wB6dOJyiytf15sba84UygQFRGDDxPGzL+vvALMnFnOMv4WltbYWqplW//CcUD6dKIyS+ufF1vbK84UCkRFxODDishIR/egFBWW1rikaY+dMX00kbPS+ufF1vb480ylhDecEhERkaYYfBAREZGmGHwQERGRphh8EBERkaYYfBAREZGmGHwQERGRphh8EBERkaYqXJ4PW9KnG7MKl9kEnfZKl042s8fuNs+GD+R/3Fo7rsv1VAHkPEr794wt00JYW09OqUIFH0VNn26eVdjLC1ixQtu+lpg90qWTzawdO8XZ5enpQPv26o/PWJ/5cWvtuAbK8VQB5DxK+/dMcaeF4AHv9CrUZRfT9Om3bln+VWlkzCqcmJiXbbygsk7LNF16YmLeiz+Qpc702CnJLrf28eV3LFo7rot6rBOVSGn/njGv3/yHoLD15LQq1JkPo6KkTy83WYVLmi6dbGbPY8eWj8/acV2upwog51Hav2dKe1oI0lyFOvNBREREjsfgg4iIiDTF4IOIiIg0xeCDiIiINMXgg4iIiDTF4IOIiIg0xeCDiIiINMXgg4iIiDRVIZOMFcfZsw5o1NY5CziXS7lRlOPN+HEX5aM2naeoKAnQTA8la9vYMu+MPRXWL3ttQ4UwHlBF/T1jS/mi/B6ztX1yujlwGHwUwjhXx8yZGk+NYuucBZzLpVwo6vFm/nHnV9baXDOFZb+2VrfpNtYOtaLWXRKF9cte21ABzA8ooOAD1dbyhf0es7U+yuOEc+Aw+CiEca4OzWcHNZ2zICYmrxODB+ctt9YJ8/KAwyNbsl1RjzfzjzsoyPp0Fqb1FXYIWasbsNzG2qFW1LpLorB+2WsbKoDpAWVU0IFqa/nCfo/ZWh/lsfX7RAMMPorAofO82DpnAec4KPNsOd5MP+6CJkoszvFr/N1flLa1VFi/7LUN5cPWA6o4B2BBB1e5mXjLAZzo+4E3nBIREZGmGHwQERGRphh8EBERkaYYfBAREZGmSi34mD9/PqKiouDh4YFWrVrhwIEDpdUUERERlSGlEnx8/vnnGD9+PKZMmYJDhw6hcePGiI+Px+XLl0ujOSIiIipDSiX4eOuttzBy5Eg88cQTqF+/PhYtWgQvLy98/PHHpdEcERERlSF2z/Nx9+5dJCYmYtKkScoyFxcXdO7cGXv37rUon5WVhaysLOX9tWvXAACZmZn27hpu3Mj79/btvH8TE/9eBgDHj/9drhSat42xY8bOGN+bd9rI1s6b1+dUgy+/THe76TJbPzJr29qy3tohZGR6KBiZbmPtUClq3SVRWL+Kug0PcSdi799DWhyIZZH5fjX/frET4/e2iBReWOzs999/FwCyZ88e1fIJEyZIy5YtLcpPmTJFAPDFF1988cUXX+Xgde7cuUJjBYdnOJ00aRLGjx+vvM/NzcWff/6JwMBA6HQ6zfqRmZmJ6tWr49y5c/D19dWsXUfjuCvWuIGKO/aKOm6g4o6d49Z23CKC69evIywsrNCydg8+goKC4OrqikuXLqmWX7p0CaGhoRblDQYDDAaDapm/v7+9u1Vkvr6+FeogNeK4K56KOvaKOm6g4o6d49aOn59fkcrZ/YZTvV6PZs2aYfv27cqy3NxcbN++HXFxcfZujoiIiMqYUrnsMn78eAwbNgzNmzdHy5Yt8c477+DmzZt44oknSqM5IiIiKkNKJfjo378/rly5gldffRUXL15EkyZNsHXrVoSEhJRGc3ZhMBgwZcoUi0tA5R3HXbHGDVTcsVfUcQMVd+wct/OOWydSlGdiiIiIiOyDc7sQERGRphh8EBERkaYYfBAREZGmGHwQERGRphh8EBERkabKVfDx+++/Y/DgwQgMDISnpycaNmyIgwcPKutFBK+++iqqVq0KT09PdO7cGSdPnlTV8eeff2LQoEHw9fWFv78/RowYgRtmExQlJyejffv28PDwQPXq1TF37lxNxmdNTk4OJk+ejOjoaHh6eqJmzZqYMWOGamKf8jLu77//Hj169EBYWBh0Oh02bNigWq/lONeuXYt69erBw8MDDRs2xFdffWX38RoVNO579+7hpZdeQsOGDeHt7Y2wsDAMHToU58+fV9VRFscNFP6Zm3r66aeh0+nwzjvvqJaXxbEXZdwpKSno2bMn/Pz84O3tjRYtWiA9PV1Zf+fOHSQkJCAwMBA+Pj547LHHLDJPp6eno3v37vDy8kJwcDAmTJiA7OxsVZmdO3eiadOmMBgMqFWrFpYtW1YaQ1YUNvYbN25g9OjRCA8Ph6enpzJzuqmyOPbZs2ejRYsWqFSpEoKDg/Hoo4/iuHFCOAeMa/78+YiKioKHhwdatWqFAwcO2HfAJZ9Kzjn8+eefEhkZKcOHD5f9+/fL6dOn5euvv5bU1FSlzJw5c8TPz082bNggR44ckZ49e0p0dLTcvn1bKdOlSxdp3Lix7Nu3T3744QepVauWDBw4UFl/7do1CQkJkUGDBsnRo0dl1apV4unpKYsXL9Z0vEazZs2SwMBA2bx5s6SlpcnatWvFx8dH3n33XaVMeRn3V199JS+//LKsW7dOAMj69etV67Ua548//iiurq4yd+5cOXbsmLzyyivi7u4uP//8s+bjzsjIkM6dO8vnn38uv/76q+zdu1datmwpzZo1U9VRFsdd2NhNrVu3Tho3bixhYWHy9ttvq9aVxbEXNu7U1FQJCAiQCRMmyKFDhyQ1NVU2btwoly5dUso8/fTTUr16ddm+fbscPHhQWrduLW3atFHWZ2dnS4MGDaRz585y+PBh+eqrryQoKEgmTZqklDl9+rR4eXnJ+PHj5dixYzJv3jxxdXWVrVu3lsq4izL2kSNHSs2aNWXHjh2SlpYmixcvFldXV9m4cWOZHnt8fLwsXbpUjh49KklJSdKtWzeJiIiQGzduaD6u1atXi16vl48//lh++eUXGTlypPj7+6uOr5IqN8HHSy+9JO3atct3fW5uroSGhsrrr7+uLMvIyBCDwSCrVq0SEZFjx44JAPnpp5+UMv/9739Fp9PJ77//LiIiCxYskMqVK0tWVpaq7bp169p7SEXSvXt3efLJJ1XL+vTpI4MGDRKR8jtu819KWo6zX79+0r17d1V/WrVqJf/85z/tOkZrCvoCNjpw4IAAkLNnz4pI+Ri3SP5j/+2336RatWpy9OhRiYyMVAUf5WHs1sbdv39/GTx4cL7bZGRkiLu7u6xdu1ZZlpKSIgBk7969IpL3Je/i4iIXL15UyixcuFB8fX2VfTFx4kSJjY21aDs+Pr6kwyoSa2OPjY2V6dOnq5Y1bdpUXn75ZREpP2O/fPmyAJBdu3aJiLbjatmypSQkJCjvc3JyJCwsTGbPnm238ZWbyy6bNm1C8+bN8Y9//APBwcG477778OGHHyrr09LScPHiRXTu3FlZ5ufnh1atWmHv3r0AgL1798Lf3x/NmzdXynTu3BkuLi7Yv3+/UqZDhw7Q6/VKmfj4eBw/fhx//fVXaQ/TQps2bbB9+3acOHECAHDkyBHs3r0bXbt2BVB+x21Oy3Hu3btX1Y6xjLEdR7t27Rp0Op0yQWN5Hndubi6GDBmCCRMmIDY21mJ9eRx7bm4utmzZgjp16iA+Ph7BwcFo1aqV6vJEYmIi7t27p+pzvXr1EBERofp5aNiwoSrzdHx8PDIzM/HLL78oZZxl3EZt2rTBpk2b8Pvvv0NEsGPHDpw4cQIPP/wwgPIz9mvXrgEAAgICAGg3rrt37yIxMVFVxsXFBZ07d7br2MtN8HH69GksXLgQtWvXxtdff41nnnkGY8aMwSeffAIAuHjxIgBYpHgPCQlR1l28eBHBwcGq9W5ubggICFCVsVaHaRta+te//oUBAwagXr16cHd3x3333Ydx48Zh0KBBqj6Vt3Gb03Kc+ZVxhv1w584dvPTSSxg4cKAym2V5Hve///1vuLm5YcyYMVbXl8exX758GTdu3MCcOXPQpUsXfPPNN+jduzf69OmDXbt2Kf3V6/UWM4Sb/zwUd9yZmZm4fft2aQyvUPPmzUP9+vURHh4OvV6PLl26YP78+ejQoQOA8jH23NxcjBs3Dm3btkWDBg2U/mgxrqtXryInJ6fUj/dSmdvFEXJzc9G8eXO89tprAID77rsPR48exaJFizBs2DAH9670rFmzBitWrMDKlSsRGxuLpKQkjBs3DmFhYeV63GTp3r176NevH0QECxcudHR3Sl1iYiLeffddHDp0CDqdztHd0Uxubi4AoFevXnj++ecBAE2aNMGePXuwaNEidOzY0ZHdK3Xz5s3Dvn37sGnTJkRGRuL7779HQkICwsLCLP6iL6sSEhJw9OhR7N6929FdKTXl5sxH1apVUb9+fdWymJgY5e7v0NBQALC4M/jSpUvKutDQUFy+fFm1Pjs7G3/++aeqjLU6TNvQ0oQJE5SzHw0bNsSQIUPw/PPPY/bs2ao+lbdxm9NynPmVceR+MAYeZ8+exbZt25SzHkD5HfcPP/yAy5cvIyIiAm5ubnBzc8PZs2fxwgsvICoqCkD5HHtQUBDc3NwK/X139+5dZGRkqMqY/zwUd9y+vr7w9PS025iK6vbt2/i///s/vPXWW+jRowcaNWqE0aNHo3///njjjTeUPpflsY8ePRqbN2/Gjh07EB4erizXalxBQUFwdXUt9eO93AQfbdu2tXgs6cSJE4iMjAQAREdHIzQ0FNu3b1fWZ2ZmYv/+/YiLiwMAxMXFISMjA4mJiUqZ7777Drm5uWjVqpVS5vvvv8e9e/eUMtu2bUPdunVRuXLlUhtffm7dugUXF/XH6Orqqvx1VF7HbU7LccbFxanaMZYxtqM1Y+Bx8uRJfPvttwgMDFStL6/jHjJkCJKTk5GUlKS8wsLCMGHCBHz99dcAyufY9Xo9WrRoUeDvu2bNmsHd3V3V5+PHjyM9PV318/Dzzz+rgjNj4GoMbJxp3EDesX7v3r0Cf+eV1bGLCEaPHo3169fju+++Q3R0tGq9VuPS6/Vo1qyZqkxubi62b99u37Hb7dZVBztw4IC4ubnJrFmz5OTJk7JixQrx8vKS5cuXK2XmzJkj/v7+snHjRklOTpZevXpZfRTzvvvuk/3798vu3buldu3aqsfyMjIyJCQkRIYMGSJHjx6V1atXi5eXl8MetR02bJhUq1ZNedR23bp1EhQUJBMnTlTKlJdxX79+XQ4fPiyHDx8WAPLWW2/J4cOHlac6tBrnjz/+KG5ubvLGG29ISkqKTJkypVQfuyxo3Hfv3pWePXtKeHi4JCUlyYULF5SX6dMbZXHchY3dGvOnXUTK5tgLG/e6devE3d1dPvjgAzl58qTyuOQPP/yg1PH0009LRESEfPfdd3Lw4EGJi4uTuLg4Zb3xscyHH35YkpKSZOvWrVKlShWrj2VOmDBBUlJSZP78+aX+qG1hY+/YsaPExsbKjh075PTp07J06VLx8PCQBQsWlOmxP/PMM+Ln5yc7d+5U/RzfunVL83GtXr1aDAaDLFu2TI4dOyajRo0Sf39/1VM0JVVugg8RkS+//FIaNGggBoNB6tWrJx988IFqfW5urkyePFlCQkLEYDDIgw8+KMePH1eV+eOPP2TgwIHi4+Mjvr6+8sQTT8j169dVZY4cOSLt2rUTg8Eg1apVkzlz5pT62PKTmZkpY8eOlYiICPHw8JAaNWrIyy+/rPriKS/j3rFjhwCweA0bNkxEtB3nmjVrpE6dOqLX6yU2Nla2bNnikHGnpaVZXQdAduzYUabHXdjYrbEWfJTFsRdl3EuWLJFatWqJh4eHNG7cWDZs2KCq4/bt2/Lss89K5cqVxcvLS3r37i0XLlxQlTlz5ox07dpVPD09JSgoSF544QW5d++eRV+aNGkier1eatSoIUuXLi2tYSvtFTT2CxcuyPDhwyUsLEw8PDykbt268uabb0pubm6ZHnt+P8embWo5rnnz5klERITo9Xpp2bKl7Nu3z67j1f1v0ERERESaKDf3fBAREVHZwOCDiIiINMXgg4iIiDTF4IOIiIg0xeCDSEOFTQtPRFQRMPigMmPv3r1wdXVF9+7dLdbt3LkTOp3OIvsfAERFReGdd95RLduxYwe6deuGwMBAeHl5oX79+njhhRfw+++/W2x/9+5dBAUFYc6cOVb7NWPGDISEhKiSVDkbEcGrr76KqlWrwtPTE507d8bJkycL3Ob69esYN24cIiMj4enpiTZt2uCnn37Kt/zTTz8NnU5nsa+joqKg0+lUL9N9eebMGYv1Op0O+/btU8p06tTJahnzYyElJQU9e/aEn58fvL290aJFCyXrZ371PP3008r6ZcuWWW1Hp9OpEjft3LkTTZs2hcFgQK1atbBs2bJ898ucOXOg0+kwbty4Qses0+mwdu1apdyYMWPQrFkzGAwGNGnSxGr9a9asQZMmTeDl5YXIyEi8/vrrqvW7d+9G27ZtERgYCE9PT9SrVw9vv/22qkxOTg4mT56M6OhoeHp6ombNmpgxYwZMH4a8ceMGRo8ejfDwcHh6eqJ+/fpYtGhRvuMmKpBdH9wlKkUjRoyQsWPHio+PjzIdupExN8Bff/1lsZ157odFixaJi4uLPPHEE7Jjxw5JS0uTXbt2yYgRI+T555+32vbYsWOlTp06Fstzc3OlRo0a8uKLLxZpDMhnWvjSNmfOHPHz85MNGzbIkSNHpGfPnhYJ2Mz169dP6tevL7t27ZKTJ0/KlClTxNfXV3777TeLsuvWrZPGjRtLWFiYRZ6NyMhImT59uipx0o0bN5T1xlwl3377rarM3bt3lTJ//PGHat3Ro0fF1dVVlZ8gNTVVAgICZMKECXLo0CFJTU2VjRs3yqVLl5QyHTt2lJEjR6rqunbtmrL+1q1bqnUXLlyQ+Ph46dixo1LGmKRp/PjxcuzYMSXBl7XkUwcOHJCoqChp1KiRjB07VlmenZ1t0c60adPEx8dHlYPkueeek/fff1+GDBkijRs3tqj/q6++Ejc3N1m4cKGcOnVKNm/eLFWrVpV58+YpZQ4dOiQrV66Uo0ePSlpamnz22WcWSdRmzZolgYGBSrLCtWvXio+Pj7z77rtKmZEjR0rNmjWVn5nFixeLq6urbNy40aJfRIVh8EFlwvXr18XHx0d+/fVX6d+/v8yaNUu1vqjBx7lz50Sv18u4ceOstmNtexGR5ORkAaDKIGnabkpKihw4cEA6d+4sgYGB4uvrKx06dJDExERVedPgw1qfjVkd09LSlGU//PCDtGvXTjw8PCQ8PFyee+451Zd3YXJzcyU0NFRef/11ZVlGRoYYDAZZtWqV1W1u3bolrq6usnnzZtXypk2byssvv6xa9ttvv0m1atXk6NGjVpN8WVtmyhh8HD58uMhjevvtt6VSpUqq/dC/f38ZPHhwgdt17NhRFQQU5vLly+Lu7i6ffvqpsmzixIkSGxurKte/f3+Jj49XLbt+/brUrl1btm3bVqR2mzRpIk8++aTVdVOmTLEafAwcOFD69u2rWvbee+9JeHi4KumWud69e6v2Vffu3S3a7tOnjwwaNEh5HxsbK9OnT1eVsXY8EBUFL7tQmbBmzRrUq1cPdevWxeDBg/Hxxx+rTgkX1dq1a3H37l1MnDjR6nrz6aqNGjZsiBYtWuDjjz9WLV+6dCnatGmDevXq4fr16xg2bBh2796Nffv2oXbt2ujWrRuuX79ucz+NTp06hS5duuCxxx5DcnIyPv/8c+zevRujR49WykydOlWZSM2atLQ0XLx4UTXjp5+fH1q1aoW9e/da3SY7Oxs5OTnw8PBQLff09FTNtJmbm4shQ4ZgwoQJiI2NzbcPc+bMQWBgIO677z68/vrryM7OtijTs2dPBAcHo127dti0aVO+dQHAkiVLMGDAAHh7eyv92LJlC+rUqYP4+HgEBwejVatWVu+vWbFiBYKCgtCgQQNMmjQJt27dyredTz/9FF5eXujbt6+ybO/evRazp8bHx1vsy4SEBHTv3r1IM60mJiYiKSkJI0aMKLSsqaysLKuf0W+//YazZ89a3ebw4cPYs2ePavbbNm3aYPv27Thx4gQA4MiRI9i9eze6du2qKrNp0yb8/vvvEBHs2LEDJ06cwMMPP2xTn4kA8LILlQ1t2rSRd955R0RE7t27J0FBQar04UU98/HMM8+Ir69vsfqwaNEi1WnxzMxM8fLyko8++shq+ZycHKlUqZJ8+eWXyjLYeOZjxIgRMmrUKFW9P/zwg7i4uCiXTObNmycPPPBAvv3+8ccfBYCcP39etfwf//iH9OvXL9/t4uLipGPHjvL7779Ldna2fPbZZ+Li4qK6/PTaa6/JQw89pPyVbe0sx5tvvik7duyQI0eOyMKFC8Xf3191eevKlSvy5ptvyr59++TAgQPy0ksviU6ny/d0/v79+wWA7N+/X1l24cIFASBeXl7KXCCzZ88WnU4nO3fuVMotXrxYtm7dKsnJybJ8+XKpVq2a9O7dO999EBMTI88884xqWe3ateW1115TLduyZYsAUObhWLVqlTRo0ED5jAo78/HMM89ITExMvuvzO/OxePFi8fLykm+//VZycnLk+PHjUq9ePQEge/bsUZWtVq2a6PV6cXFxsTiDkZOTo+x3Nzc30el0FmO8c+eODB06VACIm5ub6PV6+eSTT/LtM1FBGHyQ0/v111/Fzc1Nde0+ISFBddq4qMHH008/LX5+fsXqx7Vr18TT01OWLFkiIiIffvihKhi5ePGiPPXUU1KrVi3x9fUVb29v0el0Mn/+fKUOW4OP5s2bi16vF29vb+Xl5eUlAOTYsWNF6ndxg4/U1FTp0KGDABBXV1dp0aKFDBo0SOrVqyciIgcPHpSQkBDV/TeFXWIRyZuTxM3NTe7cuZNvmSFDhki7du2srhs1apQ0bNhQtez3338XAKoJ40REevToIQMGDMi3ne3btwsASU1NtVi3Z88eASAHDx5ULS8s+EhPT5fg4GA5cuSIsr6g4OPWrVvi5+cnb7zxRr79zC/4yM3NlYkTJ4qHh4e4urpK5cqVZerUqQLAYi6O06dPS3JysnzwwQcSEBAgK1euVNatWrVKwsPDZdWqVZKcnCyffvqpBAQEyLJly5Qyr7/+utSpU0c2bdokR44ckXnz5omPj49s27Yt334T5YfBBzm9CRMmKF+AxpeLi4t4enpKRkaGiIgkJiYKADlz5ozF9n5+fvLxxx+LiMhbb71l9Yu4qEy/FNu0aaO6Th4fHy/NmzeXLVu2yNGjR+XkyZMSFBSk+jI2DT527dolAOTPP/9U1h84cEAVfNSrV0+ee+45OXnypMXLdPLAgpw6dcrqPRUdOnSQMWPGFLr9jRs3lP3Vr18/6datm4jk3Xeh0+lUnwsAcXFxkcjIyHzrO3r0qACQX3/9Nd8y77//voSGhlrti6+vr3IWzCgrK0vc3NxkxowZquUTJ06UNm3aFDg2AFZvFn3yySelSZMmFsvbt29vEUh8/PHHyhm19evXWxyvAJR9lZ2drdr2008/FXd3d7l8+XK+/cwv+DDKzs6W3377TbKysuSrr74SAAXWN2PGDNUZrPDwcHn//fctytStW1dE8gIkd3d3i3uARowYYXGvC1FR8J4PcmrZ2dn49NNP8eabbyIpKUl5HTlyBGFhYVi1ahUAoHbt2nBxcUFiYqJq+9OnT+PatWuoU6cOAKBv377Q6/WYO3eu1fasPaprasSIEdi9ezc2b96MPXv2qK7R//jjjxgzZgy6deuG2NhYGAwGXL16Nd+6qlSpAgC4cOGCsiwpKUlVpmnTpjh27Bhq1apl8dLr9QX21Sg6OhqhoaHYvn27siwzMxP79+9HXFxcodt7e3ujatWq+Ouvv/D111+jV69eAIAhQ4YgOTlZ9bmEhYVhwoQJ+Prrr/OtLykpCS4uLggODi6wTNWqVS2Wr127FllZWRg8eLBquV6vR4sWLXD8+HHV8hMnTiAyMrLAdgBYtHXjxg2sWbPG6j0YcXFxqn0JANu2bVP25YMPPoiff/5ZtV+aN2+OQYMGISkpCa6urqptlyxZgp49eyrHQ3G4urqiWrVq0Ov1WLVqFeLi4gqsLzc3F1lZWcr7W7duwcVF/XXg6uqK3NxcAMC9e/dw7969AssQ2cTR0Q9RQdavXy96vV45w2Fq4sSJ0rx5c+X9qFGjJCoqSjZu3CinT5+WXbt2SevWraV169aqO//nz58vOp1OnnzySdm5c6ecOXNGdu/eLaNGjZLx48cX2J/c3FypVauWVK5cWbn8YHTffffJQw89JMeOHZN9+/ZJ+/btxdPTM98zH3fv3pXq1avLP/7xDzlx4oRs3rxZ6tatqzrzceTIEfH09JSEhAQ5fPiwnDhxQjZs2CAJCQlKnYXd8yGS96itv7+/bNy4UZKTk6VXr14Wj9o+8MADqkc0t27dKv/973/l9OnT8s0330jjxo2lVatWqkdgzZlfdtmzZ4+8/fbbkpSUJKdOnZLly5dLlSpVZOjQoUqZZcuWycqVKyUlJUVSUlJk1qxZ4uLiopytMtWuXTvp37+/1bbXrVsn7u7u8sEHH8jJkyeVR2CNTyilpqbK9OnT5eDBg5KWliYbN26UGjVqSIcOHSzq+uijj8TDw8PqZTzjo7YTJkyQlJQUmT9/fr6P2hrld9nl5MmTotPp5L///a/V7U6ePCmHDx+Wf/7zn1KnTh05fPiwHD58WDnrdeXKFVm4cKGkpKTI4cOHZcyYMeLh4aG6H+b999+XTZs2yYkTJ+TEiRPy0UcfSaVKlVRPqQwbNkyqVaumPGq7bt06CQoKkokTJ6rGEBsbKzt27JDTp0/L0qVLxcPDQxYsWJDvuInyw+CDnNojjzyinOY3Z7zx0Hht/fbt2zJlyhSpV6+eeHp6SnR0tIwaNUquXLlise22bdskPj5eKleuLB4eHlKvXj158cUXi3Q55rXXXhMAMnfuXNXyQ4cOSfPmzcXDw0Nq164ta9eutfgyNg0+RER2794tDRs2FA8PD2nfvr2sXbvW4lHbAwcOyEMPPSQ+Pj7i7e0tjRo1Uj1qPGXKlAIvc4jkBU2TJ0+WkJAQMRgM8uCDD8rx48dVZSIjI2XKlCnK+88//1xq1Kgher1eQkNDJSEhwWoQaF6H6XgTExOlVatW4ufnJx4eHhITEyOvvfaa6n6PZcuWSUxMjHh5eYmvr6+0bNlS1q5da1H3r7/+KgDkm2++ybf9JUuWSK1atcTDw0MaN24sGzZsUNalp6dLhw4dJCAgQAwGg9SqVUsmTJigyvNhFBcXJ48//ni+7ezYsUOaNGkier1eatSooco3Yk1+wcekSZOkevXqkpOTk+92ACxexuPjypUr0rp1a+VeoAcffNDiXo/33ntPYmNjlf173333yYIFC1RtZmZmytixYyUiIkI8PDykRo0a8vLLL6su7V24cEGGDx8uYWFh4uHhIXXr1pU333yzwEd6ifKjEynG84pERERExcR7PoiIiEhTDD6IiIhIUww+iIiISFMMPoiIiEhTDD6IiIhIUww+iIiISFMMPoiIiEhTDD6IiIhIUww+iIiISFMMPoiIiEhTDD6IiIhIU/8P5xwKsgRZejQAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.hist(anomaly_score, bins=100, histtype=\"step\", label=\"anomaly\", color=\"red\")\n", "plt.hist(normal_score, bins=100, histtype=\"step\", label=\"normal\", color=\"blue\")\n", "plt.title(\"Anomaly score distribution\")\n", "plt.legend()\n", "plt.text(\n", " 0.5, -0.1, f\"AUC Value: {auc_value}\", ha=\"center\", transform=plt.gca().transAxes\n", ")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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UvbMmTP89NNP7N+/n8TERJfnnnnmGY8Elpv8/XfanbLz2ZYcIiKSm40aZSUUfn4weDAMHHhxgraISA5wO6lYv349d9xxB2fPnuXMmTMULVqU48ePExwcTIkSJbwuqUhMhIgI17qnn9bGoyIikosMGwbbt1t/1qtndzQikg+5vU/Fs88+S5s2bTh58iQFChTg119/Zd++fdSrV4833ngjO2K01YIFruVnnoG33gIft//mREREPOT776FTJ2snVoBChay1zpVQiIhN3P5ovGHDBp577jl8fHzw9fUlISGBiIgIXn/9dQYOHJgdMdpq717XsuZRiIiIbU6fhieegKgoeP99mDXL7ohERIAsJBX+/v74/P9r+hIlSrB//34AQkJCOHDggGejy2U+/9zuCEREJN9avhxq1oTJk63y009Du3b2xiQi8n9uz6moU6cOv/32G9dccw1NmzZl6NChHD9+nPfee4/qXr7KhMNhdwQiIpLvnDsHgwbBuHHWpnblysGMGdCihd2RiYikcrunYsSIEZQqVQqAV199lbCwMJ544gmOHTvGu+++63YAEydOpHz58gQFBdGwYUPWrFlz2eNjY2N56qmnKFWqFIGBgVSpUoVvv/3W7fuKiIjkCR07wtixVkLRrRts3KiEQkRyHbd7KurXr5/6uESJEixcuDDLN583bx59+vRh8uTJNGzYkHHjxhEVFcX27dspUaJEmuMTExNp1aoVJUqUYP78+ZQpU4Z9+/YRGhqa5RhERERytUGDYO1aa9jT7bfbHY2ISLo8tobRunXruPPOO906580336Rbt2507dqVatWqMXnyZIKDg5kxY0a6x8+YMYMTJ07w+eef06RJE8qXL0/Tpk2pVauWJ16CiIiI7fz+/NN1Ana9erBzpxIKEcnV3OqpWLRoEYsXLyYgIIDHHnuMihUrsm3bNl544QW++uoroqKiMn2txMRE1q5dy4ABA1LrfHx8iIyMZNWqVeme8+WXX9KoUSOeeuopvvjiC4oXL06HDh3o378/vr6+6Z6TkJBAQkJCajk+Ph4Ap9OJ88JSfJdhDFzIvaxzMvkCxas4nU6MMZlqMyKgNiNZkJyMGTWKq15+GQBnvXpQo4b1nK8v+gUk6dF7jWRFdrSXTCcV06dPp1u3bhQtWpSTJ08ybdo03nzzTZ5++mnatWvH5s2bue666zJ94+PH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KhwOB4MGDaJv377s3LmT06dPU61aNQppBREREfusXm0lFEWKwPjxEB1tbWonIiKSA7K8+V1AQADVqlXzZCwiIuKO5GTw+//b+MMPw7590LkzXH21vXGJiEi+43ZS0bx5cxyX+fbrhx9+uKKARETkPxgD06fDG2/AypXW3AmHAwYPtjsyERHJp9xOKmrXru1STkpKYsOGDWzevJno6GhPxSUiIuk5eBC6dYPvvrPKEybA0KH2xiQiIvme20nF2LFj061/8cUXOX369BUHJCIi6TAGPvwQevaE2FgIDIRXXoFnn7U7MhEREfeXlM3Iww8/zIwZMzx1ORERueDYMXjgAWveRGws1K8P69bB88+Dr6/d0YmIiHguqVi1ahVBQUGeupyIiFzw4ouwYIE1Kfull6x5FFooQ0REchG3hz/de++9LmVjDIcPH+b3339nyJAhHgtMRET+75VXYPduGDEC6tSxOxoREZE03E4qQkJCXMo+Pj5ce+21vPTSS9x6660eC0xEJN9auBA++wwmT7ZWdQoLuzgxW0REJBdyK6lISUmha9eu1KhRg7CwsOyKSUQkfzp1Cp57DqZOtcotWkC7dvbGJCIikgluzanw9fXl1ltvJTY2NpvCERHJp378EWrWtBIKhwN694Y2beyOSkREJFPcnqhdvXp1du/enR2xiIjkP2fPQq9eVq/E3r1QoYKVYIwdC8HBdkcnIiKSKW4nFa+88grPP/88X3/9NYcPHyY+Pt7lR0RE3HDfffDWW9bj7t3hjz+gaVN7YxIREXFTpudUvPTSSzz33HPccccdANx11104HI7U540xOBwOUlJSPB+liIi3GjAA/vzTGvYUFWV3NCIiIlmS6aRi+PDh9OjRgx9//DE74xER8W7r1sFff12cgH3LLVY5MNDeuERERK5AppMKYwwATbOhW37ixImMHj2amJgYatWqxdtvv02DBg3+87y5c+fSvn177r77bj7//HOPxyUi4jFJSdY+E6+8AgEBUK8eVK5sPaeEQkRE8ji35lRcOtzJU+bNm0efPn0YNmwY69ato1atWkRFRXH06NHLnrd3716ef/55br75Zo/HJCLiUX/+CTfeaO2MnZwMt98O/9rzR0REJC9zK6moUqUKRYsWveyPu9588026detG165dqVatGpMnTyY4OJgZM2ZkeE5KSgodO3Zk+PDhVKxY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NPxJRHLOgQMQFQXNmsG5c1adry/cd58SChERkTxMSYWIZD9jYNYsqF4dFi+Gffvgt9/sjkpEREQ8REmFiGSvmBi4+27o2hXi4+HGG629KC5sbCciIiJ5npIKEck+H38M118PX30FAQHw2muwYgVUqWJ3ZCIiIuJBmqgtItnDGGs1pxMnoE4dmDPHGv4kIiIiXkdJhYh4VkqKNfna4YDp0625FC+8AP7+dkcmIiIi2UTDn0TEM2JjoUsXePLJi3URETBkiBIKERERL6ekQkSu3PffQ40aMHu2NeTpr7/sjkhERERykJIKEcm606fhiSesvSf+/hsqV4bly+Gaa+yOTERERHKQkgoRyZrly6FWLZg82Sr37GktFdukia1hiYiISM7TRG0Rcd+5c/DAA3D0KFx9NcyYAS1b2h2ViIiI2ERJhYi4r0ABmDgRFi6EN9+EIkXsjkhERERspOFPIvLfEhOtVZwWLLhYd//91qRsJRQiIiL5nnoqROTy/vgDoqOtP4sVg8hICAmxOyoRERHJRdRTISLpS06GESPghhsuJhSTJimhEBERkTTUUyEiaW3bZvVOrFljldu2tVZ5Cg+3NSwRERHJnZRUiIirv/+GunWtFZ5CQuDtt+Hhh8HhsDsyERERyaWUVIiIq7JloVMn2LfPmohdtqzdEYmIiEgup6RCJL8zBqZOhdtus/acAHjrLQgIUO+EiIiIZIomaovkZwcOWMlE9+7w6KNWggEQGKiEQkRERDJNSYVIfmQMzJ4N1avD999DUBDceefFpEJERETEDRr+JJLfxMRYPRNffmmVGza0Eoxrr7U3LhEREcmzlFSI5Cfr10OrVvDPP+DvDy+9BM8/D356KxAREZGs0ycJkfykalUoXhwiIqzeiZo17Y5IREREvICSChFvt2wZ3Hwz+PpCgQKwcCGUKmWt7iQiIiLiAZqoLeKt4uLgkUegeXMYM+ZifblySihERETEo9RTIeKNliyxEooDB6ylYePi7I5IREREvJiSChFvcvo09O8P77xjlStVglmz4KabbA1LREREvJuSChFv8dtv0L497NpllZ96CkaNgoIF7Y1LREREvJ6SChFvUaCANdwpIgJmzIDISLsjEhERkXxCSYVIXnbkCISHW4+rV4fPP4fGjSEkxNawREREJH/R6k8ieVFiIgwZYq3k9NtvF+tvv10JhYiI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nPpTokSJ1OeqV69OpUqVeP/997PltWWJyWfi4uIMYO66K9buUOzTvr0xd9xhzMGDdkeSZ6SkpJjDhw+blJQUu0ORPEJtRrLCm9vNuXPnzJYtW8y5c+fsDsUt0dHR5u6773apu/fee02dOnVSy/v37zf+/v6mT58+ac5/6623DGB+/fVXY4wxq1evNoAZN25cuvc7efJkuvUHDhwwAQEBpnfv3i71TqfTJCYmmhMnThhjjBk2bJipVauWyzFjx4415cqVS/OaXnnlFVOqVClTvnx5M2DAANOgQYM0961Zs6YZPnx4annq1KmmatWqJjAw0Fx77bVm4sSJ6cZ7wSeffGKKFy+e7nMvvviieeihh8zWrVtNSEiIOXv2rMvzTZs2Nb169Upz3syZM01ISEhq+YknnjAFCxY0B9P5XHPq1CmTlJR02Rizql+/fub66693qWvXrp2JiorK8Jz27dub+++/36XurbfeMmXLljVOp9MYY8yPP/5ogAzbwgXDhw83N910U4bPX+7/3MmTJw1g4uLiLnsPd2iitrdzOmHqVGjbFsLDrbrp0yEoCLQCh4iI2Kh+fbhkREeOKVnS6rDPis2bN7Ny5UrKlSuXWjd//nySkpLS9EgAdO/enYEDB/LRRx/RsGFDPvjgAwoVKsSTTz6Z7vX/Pazngk8++YTExET69evn1nkZWbp0KUWKFGHx4sWpdSNHjmTXrl1UqlQJgD///JONGzeyYMECAD744AOGDh3KhAkTqFOnDuvXr6dbt24ULFiQ6OjodO/z888/U69evTT1xhhmzpzJxIkTqVq1KpUrV2b+/Pl06tTJrdfhdDqZO3cuHTt2pHTp0mmeL1SoUIbn/vzzz9x+++2Xvf67775Lx44d031u1apVREZGutRFRUWlO2TrgoSEhDT7tBQoUIC///6bffv2uQwRq127NgkJCVSvXp0XX3yRJk2auJzXoEEDXn31VRISEggMDLzs68gJSiq82f798MgjsHSptVzsp59aicT/N0QRERGxU0wM5OKpAKm+/vprChUqRHJyMgkJCfj4+LgMV9mxYwchISHp7lwcEBBAxYoV2bFjBwB//fUXFStWxN/f360Y/vrrL4oUKeKx3ZELFizItGnTXPYNqVWrFh9++CFDhgwBrCSiYcOGVK5cGYBhw4YxZswY7r33XgAqVKjAli1bePfddzNMKvbt25fuh/0lS5Zw9uxZoqKiAHj44YeZPn2620nF8ePHOXnyJFWrVnXrPID69euzYcOGyx4TfuEL2XTExMSkeT48PJz4+HjOnTuXugHdpaKionj22Wfp0qULzZs3Z+fOnalD1w4fPkz58uUpVaoUkydPpn79+iQkJDBt2jSaNWvG6tWrqVu3buq1SpcuTWJiIjExMS5Jrl2UVHgjY6xdsHv3hlOnrCSiZUu7oxIREXFRsmTeuG/z5s2ZNGkSZ86cYezYsfj5+XHfffdl6d4mi5OGjTEe3XegRo0aaTYi7NixIzNmzGDIkCEYY/joo4/o06cPAGfOnGHXrl08+uijdOvWLfWc5ORkQkJCMrzPuXPnCAoKSlM/Y8YM2rVrh5+f9VG0ffv29O3b16WnJDOy+vcJVg/BhYQpp3Tr1o1du3Zx5513kpSURJEiRejVqxcvvvgiPj7WVOdrr72Wa6+9NvWcxo0bs2vXLsaOHesy5+ZC0nL27NkcfQ0ZUVLhbQ4fhm7d4JtvrHKjRjB7Nlxzjb1xiYiI/EtWhyDltIIFC6Z++JwxYwa1atVymXxcpUoV4uLiOHToUJpv5RMTE9m1axfNmzdPPXbFihUkJSW51Vtx4R6HDx++bG+Fj49Pmg/aSUlJ6b6mf2vfvj39+/dn3bp1nDt3jgMHDtCuXTsATp8+DcDUqVNp2LChy3mX2625WLFinDx50qXuxIkTfPbZZyQlJTFp0qTU+pSUFGbMmMGrr74KQJEiRdKdZB0bG5uayBQvXpzQ0FC2bduWYQwZudLhTyVLluTIkSMudUeOHKFIkSLp9lKAtSHdqFGjGDFiBDExMRQvXpylS5cCULFixQzjaNCgAStWrHCpu7BSWPFcstiOVn/yJqtXw/XXWwlFQACMGgU//6yEQkRExEN8fHwYOHAggwcP5ty5cwDcd999+Pv7p7sC0+TJkzlz5gzt27cHoEOHDpw+fZp33nkn3evHxsamW3///fcTEBDA66+/ftnzihcvTkxMjEti8V9DfC4oW7YsTZs25YMPPuCDDz6gVatWqSsOhYeHU7p0aXbv3k3lypVdfipUqJDhNevUqcOWLVtc6j744APKli3LH3/8wYYNG1J/xowZw6xZs0hJSQGsb+zXrVuX5prr1q2jSpUqgPXv8dBDD/HBBx9w6NChNMeePn2a5OTkdGO7MPzpcj933XVXhq+tUaNGqQnBBYsXL6ZRo0YZnnOBr68vZcqUISAggI8++ohGjRpdNjnYsGFDmmRy8+bNlC1blmLFiv3n/XKEx6Z85xFevfpTfLwx5csbU7euMZs22R2NV/HmFVkke6jNSFZ4c7vxptWfkpKSTJkyZczo0aNT68aOHWt8fHzMwIEDzdatW83OnTvNmDFjTGBgoHnuuedczu/Xr5/x9fU1ffv2NStXrjR79+41S5YsMffff3+Gq0IZY8zEiRONw+EwjzzyiFm2bJnZu3ev+fnnn81jjz1mnn32WWOMMVu2bDEOh8O89tprZufOnWbChAkmLCws3dWf0jN16lRTunRpU6xYMfPee++lea5AgQJm/PjxZvv27Wbjxo1mxowZZsyYMRnGvHHjRuPn55e6OpUxxtSqVcv0798/zbGxsbEmICDAfP3118YYY3bt2mWCgoLM008/bf744w+zbds2M2bMGOPn52e+++671PP++ecfU7VqVVO2bFkze/Zs8+eff5odO3aY6dOnm8qVK//nKkpZtXv3bhMcHGz69u1rtm7daiZOnGh8fX3NwoULU495++23TYsWLVLLx44dM5MmTTJbt24169evN88884wJCgoyq1evTj1m7Nix5vPPPzd//fWX2bRpk+nVq5fx8fExS5Yscbl/dHS0eeSRRzKML6dXf1JSkdctX27M/5cgM8YYs3OnMYmJ9sXjpbz5F71kD7UZyQpvbjfelFQYY8zIkSNN8eLFzenTp1PrvvjiC3PzzTebggULmqCgIFOvXj0zY8aMdK87b948c8stt5jChQubggULmpo1a5qXXnrpPz8AL1682ERFRZmwsDATFBRkqlatavr06eOynOqkSZNMRESEKViwoOncubN59dVXM51UnDx50gQGBprg4GBz6tSpNM9/8MEHpnbt2iYgIMCEhYWZW265xXz66aeXjblBgwZm8uTJxhhjfv/9dwOYNWvWpHvs7bffbu65557U8po1a0yrVq1M8eLFTUhIiGnYsKH57LPP0pwXGxtrXnjhBXPNNdeYgIAAEx4ebiIjI81nn32WulRrdvjxxx9T/z4qVqxoZs6c6fL8sGHDXP7ujx07Zm688UZTsGBBExwcbFq2bJm63PAFo0aNMpUqVTJBQUGmaNGiplmzZuaHH35wOebcuXMmJCTErFq1KsPYcjqpcBiTjdsM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F6KiomjVqhWRkZE8+OCDlCpVyq3YJfspqchuzzxjJRQBAfDSS/D889YcChEREYFL5gOk8e/fl5f7EOzzrxHde/dmOaR/K1iwIJUrVwZgxowZ1KpVi+nTp/Poo48CMHr0aMaPH8+4ceOoUaMGBQsWpHfv3iQmJrpcx9/f36XscDhwOp0ei/Ny93Hn3pUrV8bhcLB9+3aX+ooVKwJQoECB1LoLyYsxJrUuKSnJ5bzTp0/Tpk2bdCe2lypVCl9fXxYvXszKlSv5/vvvefvttxk0aBCrV6+mQoUKzJw5k2eeeYaFCxcyb948Bg8ezOLFi7nxxhv/669CcpDmVGS3N96AZs1g7Vro318JhYiIyKUKFsz4Jygo88de8kH3ssdeIR8fHwYOHMjgwYM59/95HL/88gt33303Dz/8MLVq1aJixYrs2LHDreted911HDhwgMOHD6fW/frrr2mO+eOPP1InMF+4t4+PD9dee+0VvCpXV111Fa1atWLChAku90pP8eLFAVzivnTSNkDdunX5888/KV++PJUrV3b5udDr4nA4aNKkCcOHD2f9+vUEBATw2WefpV6jTp06DBgwgJUrV1K9enU+/PBDD71a8RQlFZ725ZcwaNDF8tVXw48/wiXdjiIiIpJ3PfDAA/j6+jJx4kQArrnmmtRv2rdu3Ur37t05cuSIW9eMjIykSpUqREdH88cff/Dzzz8z6NLPE0DHjh0JCgoiOjqazZs38+OPP/LMM8/QsWNHwsPDPfb6AN555x2Sk5OpX78+8+bNY+vWrWzfvp3333+fbdu24fv/L0kLFCjAjTfeyGuvvcbWrVv56aefGDx4sMu1nnrqKU6cOEH79u357bff2LVrF4sWLaJr166kpKSwevVqRowYwe+//87+/fv59NNPOXbsGNdddx179uxhwIABrFq1in379vH999/z119/cd1113n09cqVU1LhKXFx0LUr3H03jBhhJRIiIiLidfz8/OjZsyevv/46Z86cYfDgwdStW5eoqCiaNWtGyZIladu2rVvX9PHx4bPPPuPcuXM0aNCAxx57jFdffdXlmODgYBYtWsSJEye44YYbuP/++2nRogXjx4/34KuzVKpUifXr1xMZGcmAAQOoVasW9evX5+233+b555/n5ZdfTj12xowZJCcnU69ePXr37s0rr7zicq3SpUvzyy+/kJKSwq23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Y26++WZz991350ywkmu4224SEhJM/fr1zR133GFWrFhh9uzZY5YtW2Y2bNiQw5GLXdxtMx988IEJDAw0H3zwgdmzZ49ZtGiRKVWqlHn22WdzOHKx07fffmsGDRpkPv30UwOYzz777LLH79692wQHB5s+ffqYLVu2mLffftv4+vqahQsXZvqeXpdUNGjQwDz11FOp5ZSUFFO6dGkzcuTIdI9/8MEHTevWrV3qGjZsaLp3756tcUru4m67+bfk5GRTuHBhM3v27OwKUXKZrLSZ5ORk07hxYzNt2jQTHR2tpCIfcrfdTJo0yVSsWNEkJibmVIiSy7jbZp566inTokULl7o+ffqYJk2aZGuckntlJqno16+fuf76613q2rVrZ6KiojJ9H68a/pSYmMjatWuJjIxMrfPx8SEyMpJVq1ale86qVatcjgeIiorK8HjxPllpN/929uxZkpKSKFq0aHaFKblIVtvMSy+9RIkSJXj00UdzIkzJZbLSbr788ksaNWrEU089RXh4ONWrV2fEiBGkpKTkVNhio6y0mcaNG7N27drUIVK7d+/m22+/5Y477siRmCVv8sTn4Vyx+Z2nHD9+nJSUlNTduC8IDw9n27Zt6Z4TExOT7vExMTHZFqfkLllpN//Wv39/SpcuneY/pHinrLSZFStWMH36dDZs2JADEUpulJV2s3v3bn744Qc6duzIt99+y86dO3nyySdJSkpi2LBhORG22CgrbaZDhw4cP36cm266CWMMycnJ9OjRg4EDB+ZEyJJHZfR5OD4+nnPnzlGgQIH/vIZX9VSI2OG1115j7ty5fPbZZwQFBdkdjuRCp06dolOnTkydOpVixYrZHY7kIU6nkxIlSjBlyhTq1atHu3btGDRoEJMnT7Y7NMmlli1bxogRI3jnnXdYt24dn376Kd988w0vv/yy3aGJl/OqnopixYrh6+vLkSNHXOqPHDlCyZIl0z2nZMmSbh0v3icr7eaCN954g9dee40lS5ZQs2bN7AxTchF328yuXbvYu3cvbdq0Sa1zOp0A+Pn5sX37dipVqpS9QYvtsvJeU6pUKfz9/fH19U2tu+6664iJiSExMZGAgIBsjVnslZU2M2TIEDp16sRjjz0GQI0aNThz5gyPP/44gwYNwsdH3ydLWhl9Hi5SpEimeinAy3oqAgICqFevHkuXLk2tczqdLF26lEaNGqV7TqNGjVyOB1i8eHGGx4v3yUq7AXj99dd5+eWXWbhwIfXr18+JUCWXcLfNVK1alU2bNrFhw4bUn7vuuovmzZuzYcMGIiIicjJ8sUlW3muaNGnCzp07U5NQgB07dlCqVCklFPlAVtrM2bNn0yQOF5JSa86uSFoe+Tzs/hzy3G3u3LkmMDDQzJo1y2zZssU8/vjjJjQ01MTExBhjjOnUqZN54YUXUo//5ZdfjJ+fn3njjTfM1q1bzbBhw7SkbD7kbrt57bXXTEBAgJk/f745fPhw6s+pU6fsegmSw9xtM/+m1Z/yJ3fbzf79+03hwoVNz549zfbt283XX39tSpQoYV555RW7XoLkMHfbzLBhw0zhwoXNRx99ZHbv3m2+//57U6lSJfPggw/a9RLEBqdOnTLr168369evN4B58803zfr1682+ffuMMca88MILplOnTqnHX1hStm/fvmbr1q1m4sSJWlLWGGPefvttc/XVV5uAgADToEED8+uvv6Y+17RpUxMdHe1y/Mcff2yqVKliAgICzPXXX2+++eabHI5YcgN32k25cuUMkOZn2LBhOR+42Mbd95pLKanIv9xtNytXrjQNGzY0gYGBpmLFiubVV181ycnJORy12MmdNpOUlGRefPFFU6lSJRMUFGQiIiLMk08+aU6ePJnzgYttfvzxx3Q/p1xoK9HR0aZp06Zpzqldu7YJCAgwFStWNDNnznTrng5j1BcmIiIiIiJZ51VzKkREREREJOcpqRARERERkSuipEJERERERK6IkgoREREREbkiSipEREREROSKKKkQEREREZEroqRCRERERESuiJIKERERERG5IkoqRETyoFmzZvG/9u4/Jur6D+D48w4DzvPQUTq4wB+l3FxpekKl5kqyOJZ1iQrlbf6A1EmI06xcM4QamhU4aP2gOcHoFkirYJFQrKjj2gotYBM9xLiyyWrBBqMgftz7+4fz1ilgdi2o7+uxff74vD/v9+vzen/4h9fn/f7AlClTxjqNv0yj0fDBBx+M2mfjxo08/PDD/0g+Qggh/CNFhRBCjJGNGzei0WiuOFpbW8c6NYqKirz5aLVaIiIi2LRpEz///PPfEr+9vZ34+HgA3G43Go2GhoYGnz55eXkUFRX9LfcbSWZmpneeAQEBREZGsmXLFjo7O68pjhRAQoj/dxPGOgEhhPh/ZrFYKCws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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot ROC curve\n", "plot_ROC_curve_from_data(fpr, tpr)" ] } ], "metadata": {}, "nbformat": 4, "nbformat_minor": 2 }