{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "8wN_a5HUpXq3"
   },
   "source": [
    "# Acknowledgement\n",
    "\n",
    "Parts of this pset were inspired by\n",
    "* Berkeley CS294-158, taught by Pieter Abbeel, Wilson Yan, Kevin Frans, and Philipp Wu;\n",
    "* MIT 6.S184/6.S975, taught by Peter Holderrieth and Ezra Erives;\n",
    "* The [blog post](https://lilianweng.github.io/posts/2021-07-11-diffusion-models/) about diffusion models by Lilian Weng.\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Submission Guideline for Part 2\n",
    "\n",
    "Please include your answer to all problems, including formulas, proofs, and the figures generated in each problem, excluding code. You are required to submit the (single) pdf and all (four) notebooks (one for each problem) with your code and running outputs. Do not include code in the pdf file. \n",
    "\n",
    "Specifically, for Problem 2 in this notebook, the pdf should contain:\n",
    "- The generated figures `results/p2_train_plot.png` and `results/p2_toy_samples.png`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "9f3Fo0bam8QD"
   },
   "source": [
    "# Problem 2: Training Diffusion Models on a Toy Dataset\n",
    "In this problem, we will write the code for training and sampling from a diffusion model on a 2D toy dataset. This part requires GPUs--you can use Google Colab for GPU access. To work on this notebook in Google Colab, copy the `pset-5` directory to your Google Drive and open this notebook. Then, start working on a GPU machine with `Runtime -> Change runtime type -> T4 GPU`."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "2DZudkhDhma4"
   },
   "source": [
    "## Data Generation and Visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 430
    },
    "id": "FfknAoMdnOdI",
    "outputId": "936110ad-e445-4ee6-dca1-7daf7f25e13e"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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H/zgB+LChQs7j9+1a5fYo0cP8ZlnnhEPHz4sLlmyRIyNjRUPHjyo149gCGpfx2XLlon/+te/xMrKSnHfvn3irbfeKsbHx4uHDh3S60fQXVNTU+fnHwDxN7/5jbh//37x+PHjoiiK4sKFC8Uf/OAHncd//vnnYmJioviTn/xEPHz4sLhq1SoxJiZG3Lx5s14/QkQwVSByxx13iAC8vt5///3OYwCIq1evFkVRFFtaWsQbbrhB7N27txgbGysOGjRInDNnTucfarRS+zqKYscW3sWLF4t9+/YVrVareP3114uffvpp+AdvIHV1deKsWbPEnj17isnJyeJdd93VJZirqqrq8rqeOHFCvPrqq8X09HTRarWKQ4cOFX/yk5+IDodDp59AP7///e/FSy65RIyLixPHjh0r7t69u/N711xzjXjHHXd0Of5vf/ubOGzYMDEuLk4cPny4uGnTpjCP2JjUvI4PPvhg57F9+/YVp06dKpaWluowauN4//33fX4WSq/bHXfcIV5zzTVe9ykoKBDj4uLEIUOGdPmcpOAIoiiKYZ6EISIiIgJggF0zREREFL0YiBAREZFuGIgQERGRbhiIEBERkW4YiBAREZFuGIgQERGRbhiIEBERkW4YiBAREZFuGIgQERGRbhiIEBERkW4YiBAREZFuGIgQERGRbv4/SsZseABVIh4AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.datasets import make_s_curve\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "def toy_2d_data(n=100000):\n",
    "    x, _ = make_s_curve(n, noise=0.1)\n",
    "    x = x[:, [0, 2]]\n",
    "    return x.astype('float32')\n",
    "\n",
    "def visualize_toy_2d_dataset():\n",
    "    data = toy_2d_data()\n",
    "    plt.figure()\n",
    "    plt.scatter(data[:, 0], data[:, 1])\n",
    "    plt.show()\n",
    "\n",
    "visualize_toy_2d_dataset()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Training and Sampling of Diffusion Models"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "E1G44tSboPBD"
   },
   "source": [
    "For code simplicity, we will train a continuous-time variant of the diffusion prompt. In practice training objectives and code between discrete-time and continuous-time diffusion models are similar.\n",
    "\n",
    "Given a data element $x$ and neural net $f_\\theta(x, t)$, implement the following diffusion training steps:\n",
    "\n",
    "0. Construct a class `Diffusion`\n",
    "1. Sample the diffusion timestep: $t \\sim \\text{Uniform}(0, 1)$\n",
    "2. Compute the noise-strength following a cosine schedule: $\\alpha_t = \\cos\\left(\\frac{\\pi}{2}t\\right), \\sigma_t = \\sin\\left(\\frac{\\pi}{2}t\\right)$\n",
    "3. Sample noise $\\epsilon \\sim N(0,I)$ (same shape as $x$) and cmpute noised $x_t = \\alpha_t x + \\sigma_t \\epsilon$\n",
    "4. Estimate $\\hat{\\epsilon} = f_\\theta(x_t, t)$\n",
    "5. Optimize the loss $L = \\lVert \\epsilon - \\hat{\\epsilon} \\rVert_2^2$. Here, it suffices to just take the mean over all dimensions.\n",
    "\n",
    "Note that for the case of continuous-time diffusion, the forward process is $x_{0\\to1}$ and reverse process is $x_{1\\to0}$\n",
    "\n",
    "Use an MLP for $f_\\theta$ to optimize the loss. You may find the following details helpful.\n",
    "* Normalize the data using mean and std computed from the train dataset\n",
    "* Train 100 epochs, batch size 1024, Adam with LR 1e-3 (100 warmup steps, cosine decay to 0)\n",
    "* MLP with 4 hidden layers and hidden size 64\n",
    "* Condition on t by concatenating it with input x (i.e. 2D x + 1D t = 3D cat(x, t))\n",
    "* Training 100 epochs takes about 2 minutes on the Google Colab T4 GPU.\n",
    "\n",
    "\n",
    "To sample, implement the standard DDPM sampler. You may find the equation from the [DDIM paper](https://arxiv.org/pdf/2010.02502.pdf) helpful, rewritten and re-formatted here for convenience.\n",
    "$$x_{t-1} = \\alpha_{t-1}\\left(\\frac{x_t - \\sigma_t\\hat{\\epsilon}}{\\alpha_t}\\right) + \\sqrt{\\sigma_{t-1}^2 - \\eta_t^2}\\hat{\\epsilon} + \\eta_t\\epsilon_t$$\n",
    "where $\\epsilon_t \\sim N(0, I)$ is random Gaussian noise. For DDPM, let\n",
    "$$\\eta_t = \\sigma_{t-1}/\\sigma_t\\sqrt{1 - \\alpha_t^2/\\alpha_{t-1}^2}$$\n",
    "*Note*: As a sanity check, when $\\eta_t$ follows the DDPM setting as shown above, the resulted coefficient of $x_t$ and $\\hat{\\epsilon}$ should be the same as $A'$ and $B'$ you derived in Problem 1.2 (6) where $\\alpha_t$ here corresponds to $\\bar{\\alpha_t}$ in Problem 1.\n",
    "\n",
    "To run the reverse process, start from $x_1 \\sim N(0, I)$. Then perform `num_steps` DDPM updates (a hyperparameter), pseudocode below.\n",
    "```\n",
    "ts = linspace(1 - 1e-4, 1e-4, num_steps + 1)\n",
    "x = sample_normal\n",
    "for i in range(num_steps):\n",
    "    t = ts[i]\n",
    "    tm1 = ts[i + 1]\n",
    "    eps_hat = model(x, t)\n",
    "    x = DDPM_UPDATE(x, eps_hat, t, tm1)\n",
    "return x\n",
    "```\n",
    "*Note*: \n",
    "* If you encounter NaNs, you may need to clip $\\sigma_{t-1}^2 - \\eta_t^2$ to 0 if it goes negative, as machine precision issues can make it a very small negative number (e.g. -1e-12) if its too close to 0\n",
    "* For debugging, you can start with trying small number of epochs. To debug your training code, you can check whether the training and testing losses decrease properly. To debug your sampling code, you can check whether the generated distribution is close to the S-shape target distribution with large `num_steps`.\n",
    "* To check your answer, the final text loss is roughly around 0.4."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "id": "3vzaYVRdoQzE"
   },
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "import math\n",
    "import numpy as np\n",
    "\n",
    "class Diffusion:\n",
    "    def __init__(self, model, data_shape):\n",
    "        \"\"\"\n",
    "        model: neural network to estimate eps_hat (MLP in this problem)\n",
    "        data_shape: size of the input data, (2,) in this case\n",
    "        \"\"\"\n",
    "        self.model = model\n",
    "        self.data_shape = data_shape\n",
    "\n",
    "    def loss(self, x):\n",
    "        \"\"\"\n",
    "        x: the input data (without adding noise) from the dataloader\n",
    "        Return:\n",
    "            The loss (as a scalar averaged over all data in the batch)\n",
    "        \"\"\"\n",
    "        raise NotImplementedError(\"Please implement this\")\n",
    "\n",
    "    @torch.no_grad()\n",
    "    def sample(self, n, num_steps):\n",
    "        \"\"\"\n",
    "        n: number of samples to generate\n",
    "        num_steps: number of steps in the diffusion sampling\n",
    "        Return:\n",
    "            The generated sample. Tensor with shape (n, *self.data_shape)\n",
    "        \"\"\"\n",
    "        raise NotImplementedError(\"Please implement this\")\n",
    "\n",
    "    def __getattr__(self, name):\n",
    "        if name in ['train', 'eval', 'parameters', 'state_dict', 'load_state_dict']:\n",
    "            return getattr(self.model, name)\n",
    "        return self.__getattribute__(name)\n",
    "\n",
    "\n",
    "class MLP(nn.Module):\n",
    "    def __init__(self, input_dim, hidden_dim, n_hidden_layers, timestep_dim=1):\n",
    "        super().__init__()\n",
    "        self.timestep_dim = timestep_dim\n",
    "        prev_dim = input_dim + timestep_dim\n",
    "        net = []\n",
    "        dims = [hidden_dim] * n_hidden_layers + [input_dim]\n",
    "        for i, dim in enumerate(dims):\n",
    "            net.append(nn.Linear(prev_dim, dim))\n",
    "            if i < len(dims) - 1:\n",
    "                net.append(nn.ReLU())\n",
    "            prev_dim = dim\n",
    "        self.net = nn.Sequential(*net)\n",
    "\n",
    "    def forward(self, x, t):\n",
    "        x = torch.cat([x, t[:, None]], dim=1)\n",
    "        return self.net(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "id": "ksapA-iaoQgU"
   },
   "outputs": [],
   "source": [
    "import torch.optim as optim\n",
    "from torch.utils.data import DataLoader\n",
    "from tqdm import tqdm\n",
    "\n",
    "def train(model, train_loader, optimizer, scheduler):\n",
    "    \"\"\"\n",
    "    model: model to train, the Diffusion class in this case.\n",
    "    train_loader: dataloader for the train_data after normalization\n",
    "    optimizer: use torch.optim.Adam\n",
    "    scheduler: use optim.lr_scheduler.LambdaLR(\n",
    "        optimizer,\n",
    "        lr_lambda=lambda step: get_lr(step, total_steps, warmup_steps, use_cos_decay)\n",
    "    )\n",
    "    Return:\n",
    "        Tensor with train loss of each batch\n",
    "    \"\"\"\n",
    "    raise NotImplementedError(\"Please implement this\")\n",
    "\n",
    "@torch.no_grad()\n",
    "def eval_loss(model, data_loader):\n",
    "    \"\"\"\n",
    "    model: model to train, the Diffusion class in this case.\n",
    "    data_loader: dataloader for the test_data after normalization\n",
    "    Return:\n",
    "        Scalar with the average test loss of each batch\n",
    "    \"\"\"\n",
    "    raise NotImplementedError(\"Please implement this\")\n",
    "\n",
    "def get_lr(step, total_steps, warmup_steps, use_cos_decay):\n",
    "    \"\"\"\n",
    "    Function that returns the learning rate for the specific step, used in defining the scheduler:\n",
    "        scheduler = optim.lr_scheduler.LambdaLR(\n",
    "            optimizer,\n",
    "            lr_lambda=lambda step: get_lr(step, total_steps, warmup_steps, use_cos_decay)\n",
    "        )\n",
    "    \"\"\"\n",
    "    raise NotImplementedError(\"Please implement this\")\n",
    "\n",
    "def train_epochs(model, train_loader, test_loader, train_args):\n",
    "    \"\"\"\n",
    "    model: model to train, the Diffusion class in this case.\n",
    "    train_loader: dataloader for the train_data after normalization\n",
    "    test_loader: dataloader for the test_data after normalization\n",
    "    Return:\n",
    "        Two np.array for all the train losses and test losses at each step\n",
    "    \"\"\"\n",
    "    epochs, lr = train_args['epochs'], train_args['lr']\n",
    "    warmup_steps = train_args.get('warmup', 0)\n",
    "    use_cos_decay = train_args.get('use_cos_decay', False)\n",
    "    raise NotImplementedError(\"Please implement this\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "id": "bbr4DxGGoQdM"
   },
   "outputs": [],
   "source": [
    "import torch.utils.data as data\n",
    "\n",
    "def toy_diffusion(train_data, test_data):\n",
    "    \"\"\"\n",
    "    train_data: A (100000, 2) numpy array of 2D points\n",
    "    test_data: A (10000, 2) numpy array of 2D points\n",
    "\n",
    "    Returns\n",
    "    - a (# of training iterations,) numpy array of train losses evaluated every minibatch\n",
    "    - a (# of num_epochs + 1,) numpy array of test losses evaluated at the start of training and the end of every epoch\n",
    "    - a numpy array of size (9, 2000, 2) of samples drawn from your model.\n",
    "      Draw 2000 samples for each of 9 different number of diffusion sampling steps\n",
    "      of evenly logarithmically spaced integers 1 to 512\n",
    "      hint: np.power(2, np.linspace(0, 9, 9)).astype(int)\n",
    "    \"\"\"\n",
    "    raise NotImplementedError(\"Please implement this\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "id": "YQWzFjaqrDks"
   },
   "outputs": [],
   "source": [
    "import os\n",
    "from os.path import exists, dirname\n",
    "\n",
    "def savefig(fname: str, show_figure: bool = True) -> None:\n",
    "    if not exists(dirname(fname)):\n",
    "        os.makedirs(dirname(fname))\n",
    "    plt.tight_layout()\n",
    "    plt.savefig(fname)\n",
    "    if show_figure:\n",
    "        plt.show()\n",
    "\n",
    "\n",
    "def save_training_plot(\n",
    "    train_losses: np.ndarray, test_losses: np.ndarray, title: str, fname: str\n",
    ") -> None:\n",
    "    plt.figure()\n",
    "    n_epochs = len(test_losses) - 1\n",
    "    x_train = np.linspace(0, n_epochs, len(train_losses))\n",
    "    x_test = np.arange(n_epochs + 1)\n",
    "\n",
    "    plt.plot(x_train, train_losses, label=\"train loss\")\n",
    "    plt.plot(x_test, test_losses, label=\"test loss\")\n",
    "    plt.legend()\n",
    "    plt.title(title)\n",
    "    plt.xlabel(\"Epoch\")\n",
    "    plt.ylabel(\"NLL\")\n",
    "    savefig(fname)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "id": "35stTh5Zqo89"
   },
   "outputs": [],
   "source": [
    "def save_multi_scatter_2d(data: np.ndarray) -> None:\n",
    "    fig, axs = plt.subplots(3, 3, figsize=(10, 10))\n",
    "    num_steps = np.power(2, np.linspace(0, 9, 9)).astype(int)\n",
    "    for i in range(3):\n",
    "        for j in range(3):\n",
    "            axs[i, j].scatter(data[i * 3 + j, :, 0], data[i * 3 + j, :, 1])\n",
    "            axs[i, j].set_title(f'Steps = {num_steps[i * 3 + j]}')\n",
    "    savefig(\"results/p2_toy_samples.png\")\n",
    "\n",
    "\n",
    "def toy_save_results(fn):\n",
    "    train_data = toy_2d_data(n=100000)\n",
    "    test_data = toy_2d_data(n=10000)\n",
    "    train_losses, test_losses, samples = fn(train_data, test_data)\n",
    "\n",
    "    print(f\"Final Test Loss: {test_losses[-1]:.4f}\")\n",
    "\n",
    "    save_training_plot(\n",
    "        train_losses,\n",
    "        test_losses,\n",
    "        f\"P2 Train Plot\",\n",
    "        f\"results/p2_train_plot.png\"\n",
    "    )\n",
    "\n",
    "    save_multi_scatter_2d(samples)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "toy_save_results(toy_diffusion)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Submission Guideline for Part 2\n",
    "\n",
    "Please include your answer to all problems, including formulas, proofs, and the figures generated in each problem, excluding code. You are required to submit the (single) pdf and all (four) notebooks (one for each problem) with your code and running outputs. Do not include code in the pdf file. \n",
    "\n",
    "Specifically, for Problem 2 in this notebook, the pdf should contain:\n",
    "- The generated figures `results/p2_train_plot.png` and `results/p2_toy_samples.png`"
   ]
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "gpuType": "T4",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "name": "python3"
  },
  "language_info": {
   "name": "python"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "01d3c22ebc274d04937ff8b3839f517d": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_72d642b60f0a4e95815e7e4748cf1241",
      "max": 143101489,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_c087261d082640c69ea0724f12064a2e",
      "value": 143101489
     }
    },
    "023b4638434041a8b54ed012a874c0b6": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_5e8a5f83f0f54bb5946b946d334ec10c",
      "max": 50,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_29946f6fcc6d4ddaab9a14de20254c10",
      "value": 50
     }
    },
    "033266e3aa5242439adaf46688c5ac7b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_f1db5deec09a45aa90d82db305804214",
      "max": 10,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_7f54abde8c174d8bb1f556091b8ac46b",
      "value": 10
     }
    },
    "04de5b5781ab459d83cc3a156aad00de": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "0969e5005fc948fca879c59f59e83343": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_96b1fc477894450fada6efdde8ede47f",
      "placeholder": "​",
      "style": "IPY_MODEL_3ee8719849484ed1861b4872a39501be",
      "value": "scheduler_config.json: 100%"
     }
    },
    "0d53e186fab14d40abf935d0f469b565": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "0fa26f6ce26e41cfb73bb14c5cb09f7e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "13a6211cc4544998bccf5a27ef4101a0": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_191a3a7889d845bfb3d6e3457729c583",
       "IPY_MODEL_628ac2061be0498d85996a1544d406ad",
       "IPY_MODEL_ffb88c99306b4ee4968c9ccbd2622db1"
      ],
      "layout": "IPY_MODEL_7b1b3635e1c54b4da3a721e6ed539ae7"
     }
    },
    "143231bf84904e3b8d7dfa0bcae0a7da": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "14512da3ce994ea39ba093c0873bc04a": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "1584fc0bcf7741ec8b3bb550d496ae8f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_bb7e54c919864bf9a4aa77acc3178eb8",
       "IPY_MODEL_023b4638434041a8b54ed012a874c0b6",
       "IPY_MODEL_c72e69d64bc848da90161776e2901d1d"
      ],
      "layout": "IPY_MODEL_179bc36f513c4ea5a88e52ce73629080"
     }
    },
    "17545bdf221f4e9b98fe800ff2948fc0": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_c7ed86204f2e454b8dcc56dd66065b4a",
      "max": 250,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_b14aaf0c6d2e4823aca5333e1176a469",
      "value": 250
     }
    },
    "179bc36f513c4ea5a88e52ce73629080": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "18689fe688e549f4a047f8a686233dd1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_470799434ab342ea85fba5cf8751633f",
       "IPY_MODEL_033266e3aa5242439adaf46688c5ac7b",
       "IPY_MODEL_d2f1aef4b02e4043a5ab60b72eea067f"
      ],
      "layout": "IPY_MODEL_dc60b6b7f0c04700ac066f7a97e53c4d"
     }
    },
    "186c5f8869944a27b3adfb39e3fd1254": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_e0b6c8cebaa24ba392ca82aaecde6abd",
      "max": 256,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_5d10ae4a3e544cdab81f188f423f69b8",
      "value": 256
     }
    },
    "191a3a7889d845bfb3d6e3457729c583": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_b924c7c9e3f7416c8ad04995fd1563a1",
      "placeholder": "​",
      "style": "IPY_MODEL_70b7769ecbc640c69f87221aff35c309",
      "value": "Loading pipeline components...: 100%"
     }
    },
    "1c1ec00780cd488d9ff6e8e93a7f413b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "1e8b9c5a38a04b5d826bdf38419fcd6f": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "2000a0ddb1ee43a09082c03ae1bc6a23": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "204cca3e64e3434da170aa4a2fe9df8e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_cc4036c052dd4e7bac00ebf268c9ef52",
      "placeholder": "​",
      "style": "IPY_MODEL_8a6e09c0ce424532b2880ac4e3d1c225",
      "value": "model_index.json: 100%"
     }
    },
    "2084e321eb264a4da075fef4d4e81a33": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "23f925018d1d45938abdbf178a569491": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "246e7502210e46e991992f0fb6db7f04": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "2479aa34f87d441d809624b726ecd032": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "248d532fe8464a12aff1d3394d17a4c8": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "28c04c4511374244b618c21955ba6b6f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "297fab90338a4896b0b3b428928e3cad": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "29946f6fcc6d4ddaab9a14de20254c10": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "2ca4d08b775341e893062497dcb14fb1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_96f21550ca724622a950d4ba41bc6459",
      "placeholder": "​",
      "style": "IPY_MODEL_797c66b97bfc4c738cbb4de02855f798",
      "value": "Fetching 4 files: 100%"
     }
    },
    "30efed3826a147879d67c98cd9cdf57b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_bbcb9b43b759487ea56aaf723e145928",
      "placeholder": "​",
      "style": "IPY_MODEL_28c04c4511374244b618c21955ba6b6f",
      "value": "100%"
     }
    },
    "352807c8862a44cca5b7fd0b15389653": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "3dd300c264344f248d62b657602222b1": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "3ebda39328254ece814cd2dbbb2b4cab": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "3ee8719849484ed1861b4872a39501be": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "3f858c6389bc424d9a550ac9ea03e8be": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_b48e3a3d17794c3994f25c6747f44f54",
       "IPY_MODEL_a4a4e4f95b89431b9d217a883960db57",
       "IPY_MODEL_b19f59b280af4304841a5c96d17143aa"
      ],
      "layout": "IPY_MODEL_9cc0c2470bfe4efeb985dd182803c749"
     }
    },
    "414318889905456d822f1788c958ab28": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "440173a91b8246aebd123307219f03e4": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "44b99010ec704e13b3d6ce8e696d7049": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "457b0b6fbd5c4006be67e4db3900df52": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "470799434ab342ea85fba5cf8751633f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_96ea442bf1fe42c8a64c554ec14b7bef",
      "placeholder": "​",
      "style": "IPY_MODEL_724fcc8ce12443989bb9c38cec88068b",
      "value": "100%"
     }
    },
    "473ccfab2fab451b8409b55f2376daad": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_d47361b722894464883bcb29213e276c",
       "IPY_MODEL_01d3c22ebc274d04937ff8b3839f517d",
       "IPY_MODEL_8135dd22e8e84a2ab8f101930011cdad"
      ],
      "layout": "IPY_MODEL_5bfa3055e60447fe9bfe7efc63cd872e"
     }
    },
    "5424b6beb6f04938bb4dc4f3eace8751": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "598b269f798546dcbf785e778096637b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_143231bf84904e3b8d7dfa0bcae0a7da",
      "placeholder": "​",
      "style": "IPY_MODEL_5e0b3f3edf9d4902b569478146aabc6a",
      "value": " 50/50 [00:02&lt;00:00, 20.80it/s]"
     }
    },
    "5aeb65b87af94a7f99536c6c9d5714d2": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "5bfa3055e60447fe9bfe7efc63cd872e": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "5d10ae4a3e544cdab81f188f423f69b8": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "5e0b3f3edf9d4902b569478146aabc6a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "5e8a5f83f0f54bb5946b946d334ec10c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "628ac2061be0498d85996a1544d406ad": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_0d53e186fab14d40abf935d0f469b565",
      "max": 2,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_eed3bbeafd2349acaea4d92aea9cec30",
      "value": 2
     }
    },
    "6326080ec91041b299ab0b1a0a52fee7": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "649ad6b354db427a8051b8feb26b3b44": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "64e4f0db11fe400d81fa4802f8b45c8e": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "65398874179842a4995b8a5f8f501480": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_71637282e3fc4be0a61cb9411b10e119",
       "IPY_MODEL_b48433ab88794b01ae61b97f1ab05b1f",
       "IPY_MODEL_aac1836f1e894cc29bd9f2bded159b46"
      ],
      "layout": "IPY_MODEL_2084e321eb264a4da075fef4d4e81a33"
     }
    },
    "662ebfe2f80a467ea08b335008ee8b1d": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "66c6cd0b646548bbb1f23e29fdd7f498": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "6a8c904c8f3a4f599a10b2b735d5ec8e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "70b7769ecbc640c69f87221aff35c309": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "71637282e3fc4be0a61cb9411b10e119": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_248d532fe8464a12aff1d3394d17a4c8",
      "placeholder": "​",
      "style": "IPY_MODEL_2479aa34f87d441d809624b726ecd032",
      "value": "100%"
     }
    },
    "724fcc8ce12443989bb9c38cec88068b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "72d642b60f0a4e95815e7e4748cf1241": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "752a13f3acac44329ebbbd7812ccf60f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "7559e519fa3d4201bece741c995780a3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_3dd300c264344f248d62b657602222b1",
      "placeholder": "​",
      "style": "IPY_MODEL_752a13f3acac44329ebbbd7812ccf60f",
      "value": "config.json: 100%"
     }
    },
    "755d488b3d754d13aab400f272a9f6d0": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_bf5c98211a7d4f0aa96c368e493a1c17",
      "placeholder": "​",
      "style": "IPY_MODEL_f89b5635ca7642f69ccd37793f3bb795",
      "value": " 699/699 [00:00&lt;00:00, 33.5kB/s]"
     }
    },
    "790e3430b0e247cc954ccfd839274629": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "797c66b97bfc4c738cbb4de02855f798": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "7b1b3635e1c54b4da3a721e6ed539ae7": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "7cb4665b6ffa4403a6e2da5944551794": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "7f54abde8c174d8bb1f556091b8ac46b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "8135dd22e8e84a2ab8f101930011cdad": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_7cb4665b6ffa4403a6e2da5944551794",
      "placeholder": "​",
      "style": "IPY_MODEL_04de5b5781ab459d83cc3a156aad00de",
      "value": " 143M/143M [00:00&lt;00:00, 233MB/s]"
     }
    },
    "86c2c1d9b4ef4ec791e1a592b29f327b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_9cea0a0008f04413b10ccb5dae041c90",
      "placeholder": "​",
      "style": "IPY_MODEL_649ad6b354db427a8051b8feb26b3b44",
      "value": " 256/256 [00:00&lt;00:00, 18.6kB/s]"
     }
    },
    "874e97b38c69440998b77d60dc532c24": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "89d24a90513a465eb16da8b0ed3c107f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "8a6e09c0ce424532b2880ac4e3d1c225": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "8ae16a52a0a0486cab3444097264711e": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "8b89446ec2ab4836a52b38fc48e33e09": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "8c21e8c458b043648ed3e98f5aa1d233": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "8cbcca060e7646c2a93cda41574ae5ba": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "8ce6ee9e74164dbf8195c5483bd57702": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "8e06f614332d4ca0b9a09369df81d10b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "96b1fc477894450fada6efdde8ede47f": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "96ea442bf1fe42c8a64c554ec14b7bef": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "96f21550ca724622a950d4ba41bc6459": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "9cc0c2470bfe4efeb985dd182803c749": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "9cea0a0008f04413b10ccb5dae041c90": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "a0569725bfe74a10ac2057f6670f10c8": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_440173a91b8246aebd123307219f03e4",
      "placeholder": "​",
      "style": "IPY_MODEL_da0391496d6248069f7d2be7f836ae19",
      "value": "100%"
     }
    },
    "a076ca25e9944829918eb6e87faca714": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_790e3430b0e247cc954ccfd839274629",
      "max": 50,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_8ce6ee9e74164dbf8195c5483bd57702",
      "value": 50
     }
    },
    "a4a4e4f95b89431b9d217a883960db57": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_8cbcca060e7646c2a93cda41574ae5ba",
      "max": 250,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_facfb058f64346eb9459a2a71b8ecee4",
      "value": 250
     }
    },
    "a8be231f87f74d9ba4f9701ff9abc49d": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_14512da3ce994ea39ba093c0873bc04a",
      "max": 4,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_8b89446ec2ab4836a52b38fc48e33e09",
      "value": 4
     }
    },
    "a972dafd5e274395b3c81198745a70ea": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "aac1836f1e894cc29bd9f2bded159b46": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_414318889905456d822f1788c958ab28",
      "placeholder": "​",
      "style": "IPY_MODEL_23f925018d1d45938abdbf178a569491",
      "value": " 10/10 [00:00&lt;00:00, 20.38it/s]"
     }
    },
    "ad403bb27cb349d4aaecbbd5750778cd": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_0969e5005fc948fca879c59f59e83343",
       "IPY_MODEL_186c5f8869944a27b3adfb39e3fd1254",
       "IPY_MODEL_86c2c1d9b4ef4ec791e1a592b29f327b"
      ],
      "layout": "IPY_MODEL_d10c7078dd654d14892af6309782d77a"
     }
    },
    "ae709aa501834819843c4cccae0d1fc8": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "b14aaf0c6d2e4823aca5333e1176a469": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "b19f59b280af4304841a5c96d17143aa": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_c3a88fc2f9154a43b37195ac70a0d3ad",
      "placeholder": "​",
      "style": "IPY_MODEL_0fa26f6ce26e41cfb73bb14c5cb09f7e",
      "value": " 250/250 [00:23&lt;00:00, 11.52it/s]"
     }
    },
    "b3d7a64c470747eb9feea430137193c7": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_204cca3e64e3434da170aa4a2fe9df8e",
       "IPY_MODEL_f1effc9fdddc4cc2afe6f88d008072a3",
       "IPY_MODEL_cdea21fc70164cb9ba415f57b2f18c09"
      ],
      "layout": "IPY_MODEL_a972dafd5e274395b3c81198745a70ea"
     }
    },
    "b48433ab88794b01ae61b97f1ab05b1f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_bb7f5390ce4a4c3f8d945404eeaa1be7",
      "max": 10,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_874e97b38c69440998b77d60dc532c24",
      "value": 10
     }
    },
    "b48e3a3d17794c3994f25c6747f44f54": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_457b0b6fbd5c4006be67e4db3900df52",
      "placeholder": "​",
      "style": "IPY_MODEL_5424b6beb6f04938bb4dc4f3eace8751",
      "value": "100%"
     }
    },
    "b82702516d774e63a68147affacecec1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_2ca4d08b775341e893062497dcb14fb1",
       "IPY_MODEL_a8be231f87f74d9ba4f9701ff9abc49d",
       "IPY_MODEL_c2595537b9a54b3a9d2854bcca6f2236"
      ],
      "layout": "IPY_MODEL_6326080ec91041b299ab0b1a0a52fee7"
     }
    },
    "b924c7c9e3f7416c8ad04995fd1563a1": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "ba0b64ed046144db911d7a65d781c21e": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "badac46639d6439fb4c01c683179811a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_246e7502210e46e991992f0fb6db7f04",
      "max": 699,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_662ebfe2f80a467ea08b335008ee8b1d",
      "value": 699
     }
    },
    "bb2d9b3937ff4bd387e5348b049fdf19": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "bb7e54c919864bf9a4aa77acc3178eb8": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_d84c680ec0ec47c298c7a6324dc146d7",
      "placeholder": "​",
      "style": "IPY_MODEL_8c21e8c458b043648ed3e98f5aa1d233",
      "value": "100%"
     }
    },
    "bb7f5390ce4a4c3f8d945404eeaa1be7": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "bbcb9b43b759487ea56aaf723e145928": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "bf5c98211a7d4f0aa96c368e493a1c17": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "c087261d082640c69ea0724f12064a2e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "c2595537b9a54b3a9d2854bcca6f2236": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_64e4f0db11fe400d81fa4802f8b45c8e",
      "placeholder": "​",
      "style": "IPY_MODEL_6a8c904c8f3a4f599a10b2b735d5ec8e",
      "value": " 4/4 [00:00&lt;00:00,  1.87it/s]"
     }
    },
    "c3a88fc2f9154a43b37195ac70a0d3ad": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "c5a27d9cdd1849369b6cacc44611bc25": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "c72e69d64bc848da90161776e2901d1d": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_1c1ec00780cd488d9ff6e8e93a7f413b",
      "placeholder": "​",
      "style": "IPY_MODEL_3ebda39328254ece814cd2dbbb2b4cab",
      "value": " 50/50 [00:04&lt;00:00, 10.94it/s]"
     }
    },
    "c7ed86204f2e454b8dcc56dd66065b4a": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "cc4036c052dd4e7bac00ebf268c9ef52": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "cdea21fc70164cb9ba415f57b2f18c09": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_66c6cd0b646548bbb1f23e29fdd7f498",
      "placeholder": "​",
      "style": "IPY_MODEL_297fab90338a4896b0b3b428928e3cad",
      "value": " 180/180 [00:00&lt;00:00, 11.4kB/s]"
     }
    },
    "d10c7078dd654d14892af6309782d77a": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "d2f1aef4b02e4043a5ab60b72eea067f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_bb2d9b3937ff4bd387e5348b049fdf19",
      "placeholder": "​",
      "style": "IPY_MODEL_5aeb65b87af94a7f99536c6c9d5714d2",
      "value": " 10/10 [00:00&lt;00:00, 10.42it/s]"
     }
    },
    "d36f4e2ee6cc44ac97c7495fbcec8fc5": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "d3f2fb60c00045b281cce201c44d111d": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_a0569725bfe74a10ac2057f6670f10c8",
       "IPY_MODEL_17545bdf221f4e9b98fe800ff2948fc0",
       "IPY_MODEL_f3d8720688104d78bd6bff60df083c7e"
      ],
      "layout": "IPY_MODEL_8ae16a52a0a0486cab3444097264711e"
     }
    },
    "d47361b722894464883bcb29213e276c": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_44b99010ec704e13b3d6ce8e696d7049",
      "placeholder": "​",
      "style": "IPY_MODEL_8e06f614332d4ca0b9a09369df81d10b",
      "value": "diffusion_pytorch_model.bin: 100%"
     }
    },
    "d5cbd8f38cba4db6834e35e1e55a79c6": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_30efed3826a147879d67c98cd9cdf57b",
       "IPY_MODEL_a076ca25e9944829918eb6e87faca714",
       "IPY_MODEL_598b269f798546dcbf785e778096637b"
      ],
      "layout": "IPY_MODEL_c5a27d9cdd1849369b6cacc44611bc25"
     }
    },
    "d84c680ec0ec47c298c7a6324dc146d7": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "da0391496d6248069f7d2be7f836ae19": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "dc60b6b7f0c04700ac066f7a97e53c4d": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "e0b6c8cebaa24ba392ca82aaecde6abd": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "ebbfbdf57683484b9ea0e49092e2586e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_7559e519fa3d4201bece741c995780a3",
       "IPY_MODEL_badac46639d6439fb4c01c683179811a",
       "IPY_MODEL_755d488b3d754d13aab400f272a9f6d0"
      ],
      "layout": "IPY_MODEL_2000a0ddb1ee43a09082c03ae1bc6a23"
     }
    },
    "eed3bbeafd2349acaea4d92aea9cec30": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "f1db5deec09a45aa90d82db305804214": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "f1effc9fdddc4cc2afe6f88d008072a3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_ba0b64ed046144db911d7a65d781c21e",
      "max": 180,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_d36f4e2ee6cc44ac97c7495fbcec8fc5",
      "value": 180
     }
    },
    "f3d8720688104d78bd6bff60df083c7e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_1e8b9c5a38a04b5d826bdf38419fcd6f",
      "placeholder": "​",
      "style": "IPY_MODEL_352807c8862a44cca5b7fd0b15389653",
      "value": " 250/250 [00:12&lt;00:00, 20.11it/s]"
     }
    },
    "f89b5635ca7642f69ccd37793f3bb795": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "facfb058f64346eb9459a2a71b8ecee4": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "ffb88c99306b4ee4968c9ccbd2622db1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_ae709aa501834819843c4cccae0d1fc8",
      "placeholder": "​",
      "style": "IPY_MODEL_89d24a90513a465eb16da8b0ed3c107f",
      "value": " 2/2 [00:00&lt;00:00,  2.41it/s]"
     }
    }
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
