{"cells":[{"metadata":{},"cell_type":"markdown","source":"#### The aim of this notebook is twofold - \n1. To give some insights on EgoDataset and AgentDataset, which I believe would help one gain an intuition about the input data to the model. The data in this competitions is a bit complex and I found L5kit to be an amazing tool but a blackbox. So hope this clarifies a few things.\n2. Raise certain question about what is the 'image' in a frame of EgoDataset or AgentDataset.\n\nSo, let's begin."},{"metadata":{},"cell_type":"markdown","source":"# Imports and Configs"},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import numpy as np\nimport os\nimport torch\n\nfrom torch import nn, optim\nfrom torch.utils.data import DataLoader\nfrom torchvision.models.resnet import resnet18\nfrom tqdm import tqdm\nfrom typing import Dict\n\nfrom l5kit.data import LocalDataManager, ChunkedDataset\nfrom l5kit.dataset import AgentDataset, EgoDataset\nfrom l5kit.rasterization import build_rasterizer\nfrom l5kit.geometry import transform_points\nfrom l5kit.visualization import draw_trajectory, TARGET_POINTS_COLOR","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import matplotlib.pyplot as plt\nfrom IPython.display import display, clear_output\nfrom IPython.core.display import HTML\nimport PIL\nfrom matplotlib import animation, rc","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"DIR_INPUT = \"/kaggle/input/lyft-motion-prediction-autonomous-vehicles\"\n\nSINGLE_MODE_SUBMISSION = f\"{DIR_INPUT}/single_mode_sample_submission.csv\"\nMULTI_MODE_SUBMISSION = f\"{DIR_INPUT}/multi_mode_sample_submission.csv\"\n\nDEBUG = True","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"cfg = {\n    'format_version': 4,\n    'model_params': {\n        'model_architecture': 'resnet50',\n        'history_num_frames': 10,\n        'history_step_size': 1,\n        'history_delta_time': 0.1,\n        'future_num_frames': 50,\n        'future_step_size': 1,\n        'future_delta_time': 0.1\n    },\n    \n    'raster_params': {\n        'raster_size': [224, 224],\n        'pixel_size': [0.5, 0.5],\n        'ego_center': [0.25, 0.5],\n        'map_type': 'py_semantic',\n        'satellite_map_key': 'aerial_map/aerial_map.png',\n        'semantic_map_key': 'semantic_map/semantic_map.pb',\n        'dataset_meta_key': 'meta.json',\n        'filter_agents_threshold': 0.5\n    },\n    \n    'train_data_loader': {\n        'key': 'scenes/train.zarr',\n        'batch_size': 12,\n        'shuffle': True,\n        'num_workers': 4\n    },\n    \n    'train_params': {\n        'max_num_steps': 100 if DEBUG else 10000,\n        'checkpoint_every_n_steps': 5000,\n        \n        # 'eval_every_n_steps': -1\n    }\n}","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# set env variable for data\nos.environ[\"L5KIT_DATA_FOLDER\"] = DIR_INPUT\ndm = LocalDataManager(None)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Util Functions"},{"metadata":{"trusted":true},"cell_type":"code","source":"def animate_solution(images, timestamps=None):\n    def animate(i):\n        changed_artifacts = [im]\n        im.set_data(images[i])\n        if timestamps is not None:\n            time_text.set_text(timestamps[i])\n            changed_artifacts.append(im)\n        return tuple(changed_artifacts)\n\n    \n    fig, ax = plt.subplots()\n    im = ax.imshow(images[0])\n    if timestamps is not None:\n        time_text = ax.text(0.02, 0.95, \"\", transform=ax.transAxes)\n\n    anim = animation.FuncAnimation(fig, animate, frames=len(images), interval=60, blit=True)\n    \n    # To prevent plotting image inline.\n    plt.close()\n    return anim\n\ndef create_animate_for_indexes(dataset, indexes):\n    images = []\n    timestamps = []\n\n    for idx in indexes:\n        data = dataset[idx]\n        im = data[\"image\"].transpose(1, 2, 0)\n        im = dataset.rasterizer.to_rgb(im)\n        target_positions_pixels = transform_points(data[\"target_positions\"], data[\"raster_from_agent\"])\n        center_in_pixels = np.asarray(cfg[\"raster_params\"][\"ego_center\"]) * cfg[\"raster_params\"][\"raster_size\"]\n        draw_trajectory(im, target_positions_pixels, rgb_color=TARGET_POINTS_COLOR,  yaws=data[\"target_yaws\"])\n        clear_output(wait=True)\n        images.append(PIL.Image.fromarray(im[::-1]))\n        timestamps.append(data[\"timestamp\"])\n\n    anim = animate_solution(images, timestamps)\n    return anim\n\ndef create_animate_for_scene(dataset, scene_idx):\n    indexes = dataset.get_scene_indices(scene_idx)\n    return create_animate_for_indexes(dataset, indexes)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Understanding AgentDataset and EgoDataset"},{"metadata":{},"cell_type":"markdown","source":"I will use train.zarr here which has"},{"metadata":{"trusted":true},"cell_type":"code","source":"# ===== INIT DATASET\ntrain_cfg = cfg[\"train_data_loader\"]\n\n# Rasterizer\nrasterizer = build_rasterizer(cfg, dm)\n\n# Train dataset/dataloader\ntrain_zarr = ChunkedDataset(dm.require(train_cfg[\"key\"])).open()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"#### Let's understand the high-level structure of each Agent and Ego Dataset. Thanks to @[corochann](https://www.kaggle.com/corochann/lyft-deep-into-the-l5kit-library/notebook#1.-Understanding-Rasterizer-class) for this.\n### EgoDataset\n![image.png](attachment:image.png)\n1. Here the subject is the ego car (all the data is for the ego car)\n2. EgoDataset (for train.zarr) has a total length of 4,039,527 and each element is a frame. \n3. There are 16,265 scenes and each scene has around 247-248 frames. \n4. Each element (which is a frame in this case) can be identified by a unique timestamp.","attachments":{"image.png":{"image/png":"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iO+2bdusV69e1qFDB3viiSfsvPPOs+eff94OHDhQljZBnJcvXx6sszt37izKXQR5yf/BBx/YSSedZIMHDy6LjLVWKMR79+7d9oc//MEuuOCCcF1rbZC8QkAICIFCERDxLhQppRMCQqDqEIDMHjx4MFhJN2zYYPfdd589++yztnfv3rLISl0Q51tvvdWWLFlStGUdkrl06VJ766237LPPPiuLjLVWKJjs378/bESGDBkSrmutDZJXCAgBIVAoAiLehSKldEKghhGA3OBHC3HEGsz50KFDzV5og8iSFsss6fntwS223OMgnd/38j0f5XO43zXxHse15+Ps9UXjqdPveRn89nxRmchP2Zs3b7b777+/IOIdLZu8jgl1UV48eHoI/YABA+yGG26wBQsWBJJIHpeRvHEZKcvbSDpIJtbyXFZ50kfLjWLjshDnaZLqJY4+jrcvSb54e4v97TJRH+2K4omcSfI5Lo7Jvn37jIMycgXqirbdMfCz15dUhud1TJCT+siTKyTlowzqzNa2XOXpnhAQAscuAiLex27fq+XHAAJOiCClH374YXDDePLJJ+25556zd9991xYuXBgsr/hKO7nAIjt+/HgbO3ZscOVwmCCds2fPtnHjxoVjzZo1gXRAPFatWhXipk+fbrNmzbKuXbvaM888E+rcsmWLffzxx9axY8dQ74QJE5pIJ4Rn6tSpIe8nn3xi27dvD3IgCwSVF+6ob/LkyUY51JUUKAe3kwcffDAv8aZsCNOiRYsMCyuyPvXUU0E2/MVdhmg95FmxYoWNHDkyuLT8+c9/trfffttGjRoV5ENG2rVy5cpQdjQv11u3bg0YgCtpwYM+SQq0cd68eSEdfUD6GTNmBH920tNW8hPv99kE0Cbk5CDNsmXLrG/fvsENp127dqGdyFisi0ySjPE4yCt6884774T60LHOnTsHfNEZXiiN9x2/sfo7JpznzJmTlwSjFxMnTmxqOzhED+6hm/FAfbi0gN3LL79sYNK+fXvr3bt30AUwA7t4IA6CzoufvEtAvqefftq6desW4igPEq4gBISAECgEARHvQlBSGiFQowg4wcQS/PDDDweSgatEz549g1vGH//4x+BXC3mAPEEgRo8eHSzHZ599diAp3nTII8QK4gHx7NevX8hDHZCdW265xc455xz71a9+FYjsSy+9FF6Yu+aaa+ziiy8O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"}}},{"metadata":{"trusted":true},"cell_type":"code","source":"ego_train_dataset = EgoDataset(cfg, train_zarr, rasterizer)\nprint(ego_train_dataset)\nprint(\"Ego dataset length: \", len(ego_train_dataset))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Before we take a look at AgentDataset, you should understand what the internal data structure of a frame is (Also this is the same for Ego and Agent Dataset)"},{"metadata":{"trusted":true},"cell_type":"code","source":"data = ego_train_dataset[0]\n\nprint(\"agent_dataset[0]=data is \", type(data))\n\ndef _describe(value):\n    if hasattr(value, \"shape\"):\n        return f\"{type(value).__name__:20} shape={value.shape}\"\n    else:\n        return f\"{type(value).__name__:20} value={value}\"\n\nfor key, value in data.items():\n    print(\"  \", f\"{key:25}\", _describe(value))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Each attribute represents follows: \n* image: image drawn by Rasterizer. As you saw on the top of this kernel. This is usually be the input image for CNN\n* target_positions: The \"Ego car\" or \"Agent (car/cyclist/pedestrian etc)\"'s future position. This is the value to predict in this competition (not for Ego car's, but for Agents).\n* target_yaws: The Ego car's future yaw, to represent heading direction.\n* target_availabilities: flag to represent this is valid or not. Only flag=1 is used for competition evaluation.\n* history_positions: Past positions\n* history_yaws: Past yaws\n* history_availabilities:\n* world_to_image: 3x3 transformation matrix to convert world-coordinate into pixel-coordinate.\n* track_id: Unique ID for each Agent. None for Ego car.\n* timestamp: timestamp for current frame.\n* centroid: current center position\n* yaw: current direction\n* extent: Ego car or Agent's size. The car is not represented as point, but should be cared as dot box to include size information on the map."},{"metadata":{},"cell_type":"markdown","source":"### AgentDataset\n![image.png](attachment:image.png)\n\n1. Here the subject is the agent car (all the data is for the agent car)\n2. AgentDataset (for train.zarr) has a total length of 22,496,709 and each element again is a frame (so the data structure of each element is exactly the same as of EgoDataset). \n3. There are 16,265 scenes and each scene has one of the three-\n    *   less number of frames than the corresponding scene in EgoDataset.\n    *   equal number of frames than the corresponding scene in EgoDataset.\n    *   more number of frames than the corresponding scene in EgoDataset.\n    For instance, scene-0 has 35 frames, scene-1 has 63 frames, scene-1001 has 2118 frames.\n4. Each element can be identified by a unique (timestamp + track_id) .","attachments":{"image.png":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAtAAAAGVCAYAAADXKsbeAAAgAElEQVR4AeydB5gUxdaGQQliQFTMmAMGFH/lilnwqtdEElQURbkKIkYQBRURSddAUBAUEQElJyNBEERyZskZlrjkuCywLJz/+Upr7Glmurp3e2Zner56nt0O5/Spqreru09Xna4pIEwkQAIkQAIkQAIkQAIkQAKuCRRwrUlFEiABEiABEiABEiABEiABoQPNRkACJEACJEACJEACJEACHgjQgfYAi6okQAIkQAIkQAIkQAIkQAeabYAESIAESIAESIAESIAEPBCgA+0BFlVJgARIgARIgARIgARIgA402wAJkAAJkAAJkAAJkAAJeCBAB9oDLKqSAAmQAAmQAAmQAAmQAB1otgESIAESIAESIAESIAES8ECADrQHWFQlARIgARIgARIgARIgATrQbAMkQAIkQAIkQAIkQAIk4IEAHWgPsKhKAiRAAiRAAiRAAiRAAnSg2QZIgARIgARIgARIgARIwAMBOtAeYFGVBEiABEiABEiABEiABOhAsw2QAAmQAAmQAAmQAAmQgAcCdKA9wKIqCZAACZAACZAACZAACdCBZhsgARIgARIgARIgARIgAQ8E6EB7gEVVEiABEiABEiABEiABEqADzTZAAiRAAiRAAiRAAiRAAh4I0IH2AIuqJEACJEACJEACJEACJEAHmm2ABEiABEiABEiABEiABDwQoAPtARZVSYAESIAESIAESIAESIAONNsACZAACZAACZAACZAACXggQAfaAyyqkgAJkAAJkAAJkAAJkAAdaLYBEiABEiABEiABEiABEvBAgA60B1hUJQESIAESIAESIAESIAE60GwDJEACJEACJEACJEACJOCBAB1oD7CoSgIkQAIkQAIkQAIkQAJ0oNkGSIAESIAESIAESIAESMADATrQHmBRlQRIgARIgARIgARIgAToQLMNkAAJkAAJkAAJkAAJkIAHAnSgPcCiKgmQAAmQAAmQAAmQAAnQgWYbIAESIAESIAESIAESIAEPBOhAe4BFVRIgARIgARIgARIgARKgA802QAIkQAIkQAIkQAIkQAIeCNCB9gCLqiRAAiRAAiRAAiRAAiRAB5ptgARIgARIgARIgARIgAQ8EKAD7QEWVUmABEiABEiABEiABEiADjTbAAmQAAmQAAmQAAmQAAl4IEAH2gMsqpIACZAACZAACZAACZAAHWi2ARIgARIgARIgARIgARLwQIAOtAdYVCUBEiABEiABEiABEiABOtBsAyRAAiRAAiRAAiRAAiTggQAdaA+wqEoCJEACJEACJEACJEACdKDZBkiABEiABEiABEiABEjAAwE60B5gUZUESIAESIAESIAESIAE6ECzDZAACZAACZAACZAACZCABwJ0oD3AoioJkAAJkAAJkAAJkAAJ0IFmGyABEiABEiABEiABEiABDwToQHuARVUSIAESIAESIAESIAESoAPNNkACJEACJEACJEACJEACHgjQgfYAi6okQAIkQAIkQAIkQAIkQAeabYAESIAESIAESIAESIAEPBCgA+0BFlVJgARIgARIgARIgARIgA402wAJkAAJkAAJkAAJkAAJeCBAB9oDLKqSAAmQAAmQAAmQAAmQAB1otgESIAESIAESIAESIAES8ECADrQHWFQlARIgARIgARIgARIgATrQbAMkQAIkQAIkQAIkQAIk4IEAHWgPsKhKAiRAAiRAAiRAAiRAAnSg2QZIgARIgARIgARIgARIwAMBOtAeYFGVBEiABEiABEiABEiABOhAsw2QAAmQAAmQAAmQAAmQgAcCdKA9wKIqCZAACZAACZAACZAACdCBZhsgARIgARIgARIgARIgAQ8E6EB7gEVVEiABEiABEiABEiABEqADzTZAAiRAAiRAAiRAAiRAAh4I0IH2AIuqJEACJEACJEACJEACJEAHmm2ABEiABEiABEiABEiABDwQoAPtARZVSYAESIAESIAESIAESIAONNsACZAACZAACZAACZAACXggQAfaAyyqkgAJkAAJkAAJkAAJkAAdaLYBEiABEiABEiABEiABEvBAgA60B1hUJQESIAESIAESIAESIAE60GwDJEACJEACJEACgSGwcuVKeeCBB6REiRJyySWXSNeuXfO1bjk5OdK+fXu58MILZfXq1WFl2b59u9StW1cuuugiOf300+X1119X8s2bN8szzzwjZ511lpx77rny2muvyeHDh0PHTps2Te655x4588wzpVSpUjJixIiQDCvp6ely1VVXSa1atcL2c8M/AnSg/WNJSySQ8gQS7cGFEzJhwgS58cYbpVOnTil/fgiABFKBwF133aUc0czMTFm8eLF88803+VbtvXv3ys033yy1a9eWAgUKyJIlS8LKcscdd8gLL7wgW7ZskUOHDsnSpUuVfOTIkdKxY0dZu3atjBo1SooWLRqqx/Lly+WMM86QPn36yIEDBwRO+KZNm8LsPvroo3LbbbfJ7bffHrafG/4RoAPtH0taIoGUJ5BIDy6cjPfee09uuukmuf7666Vly5Ypf34IgARSgcDZZ58tQ4cOjVjV0aNHK+f63XfflTVr1iidI0eOSI8ePeTll1+Wdu3ayb59+0LHtm7dWnbs2CEff/yxNGrUSObOnRuSOR2nlWBrxowZqvfY7kCPHz9ezjvvvLCeZX2cfXnrrbfKm2++qXY3aNBAldWuo7dRR9z3UCc60JqK/0s60C6YDhkyRMqUKSOnnHKK3HLLLWEXkIvDfVcZPHiwlCtXTg3tVK5cWb25+p4JDZJALgg4PbgwpNi8eXN148cNXqeJEyeqBwMeaAsXLtS7xenBBaVox4UMiAgeUHjIVa1alQ60FQzXSSDABJ5//nkV1vDzzz+H1bJnz54qTAIv07i/1KhRQ8lr1qwp1atXFzzrq1Wrpp7zR48eVbKTTjpJbrjhBvnwww+V4w0/YOfOncbjwjIWiehAt2rVSp544gk1StatWzdBrzPCPewJ+xDKAYcYCR0CvXv3VuXFvnnz5oUOyc7OlquvvlqmTp0qvXr1ogMdIuP/Ch1oA9MNGzaooZMxY8bI/v37VZwRhoTzK82cOVNOPfVU+fPPPwXDUxgWuu+++/KrOMyXBMIIRHtwbdy4UU477TR56qmn5Ouvv1YhFXgI4WXw8ssvlwEDBsj777+vHm7Lli1TNp0eXE7HhRXo7w060JGocB8JBJMAQiGaNGkixYoVU/eaOXPmqIqWLl06LJQLTjJCJooXL65CIaCEHuMiRYpIWlqaOgb3oR9++CEECrHKiDc2HRc64O8VxC/be6DR433iiSfKY489Jm+//bZce+218sgjj9gPlc8++0zFcsMHQYIzfcEFFwh6ol955RVVfrwcIH3yySfy3HPPqXU60ApDzP7RgTaghaOKixAXpD1hX5cuXaR+/frSuXNnOXjwoFKJNqyD+FA0aPSyvfXWW4K3T8RH6ZSRkaH2vfrqq1GHn3DB1atXTx8iK1askOOOO062bdsW2scVEsgvAtEeXM2aNZM777wzVCzdu3PdddfJjz/+GNpfpUoVFXaBHdEeXJA5HRcyZlmhA22BwVUSSBECW7dulccff1xKliypeo2PP/54mT17dljthw0bpjrJMMqs/3DvmTx5stLD+oIFC0LHIJ4ZL/ym40IH/L0SyYGG8/vss8+GVNevX6+cbIzW6TRp0iT1MSR6lHXCSN/w4cP1pvpA8V//+pfAh8AHhfgAEYkOdAhRTFboQBuw4m0UMUr4ohfOqjU99NBDamjnq6++UhcBetaQog0H4a0VtsqXL68cbnw8gAc7EhxgNPyPPvpIDdPgTRlf7dpTxYoV5YsvvgjthiNSuHDhY24KIQWukEA+ELA+uPCSiB6Wpk2bhpVEt130QOsHFx4MiDNEivbgMh0XlsnfG3SgI1HhPhIIPgH02qLnF3HI6AzD0powuoze3GjJfh/C8xsOtOk4u71IDnSbNm3kP//5T0gVHRAoKz4SRJo/f76aZcPayYD9CCmxfhiJjwnLli0rv/zyi3oZwAeH+CtUqJAULFhQfXAYyoQrvhGgA+0CpZ5ZAG+vderUUb3GiDlCQ8cbn054sDsN68CBxtCLjp+aPn26nHzyyepw9EZbp5vBBXHFFVdo06ElYp/0UI3eial6xo0bpze5JIGEIGB9cCHUqHHjxseUC20X0zFFStEeXNB1Oi6SLTrQkahwHwkEjwB6X7t37x4KyUC4F+4lu3fvlvvvv18QZoZnNTrHEEeM5zHCIq3TwOmPC0En2n3IdJydbCQHGr3KJ5xwgsDHQMKI9qWXXqrioLEPHW7wBewJnQx33323IN4ZTjfCOCPdX9kDbSfn7zYdaA888aC/7LLLlKM7aNAg1dDthzsN6+ACxbyMOmF6GjjhCPl48skn1Zum7olDrxxirewJ09IgXMSa8FZtH5ayyrlOAvEg4PTgwgPt4osvDoUa9evXTz248OEOHmi4BpDQW40pmZCiPbggczpOHWz7RwfaBoSbJBBQAnv27BGM1MIxxRzJ6F1GzywSppC75pprVEgH5lxGDzAS5BgBxsgvnr2YwUJ/zIePBhctWqT08A+zYeD5bzpOHwDHHS/8iLPG8x6dZpjXWSeMzGEf5ohG2WbNmqVE+CYE+tY/lBkJs4LAF0BoCjrlMMJnDQfVtr/77ruw0Dm9n0t/CNCB9sgRb3RwbHHBRXJwnYZ1nBxoxDXroWunIuFCadiwYUgFHzmiZ1w7HSEBV0ggzgScHlzoKcEHhHCKccPHAw491OvWrRNMfYcHCuKa8RDB7BpITg8up+Os1cYX9XhwYSgTQ5pYt84AYtXlOgmQQHAIwKHE3MqREkImMX+yPUEf9zFrwr3LmtCTbE+RjrPrOG1nZWWFRqad9OwyPPf1t1d2GbbR0x6pvJF0uc87ATrQBmaYwFw/0HEhIcwCvVnobcMbLqadQcJk7QijcBrWcXKgEVOFX0xC7CgSGj56qO0Jwzl4U9Z6cLoRi81EAolCwOnBBacZvSf2hOFU/eGLlrl5cEU6Th/PJQmQAAmQAAnEigAdaANZzCOLnmbESKFHrEKFCoJeXyT0RqNHC3FK6DmbMmWK2h9tOAjOOKap0Qlf3CLAH8PXcJjhDGOqL8Q5n3/++WrOXK2rl9DFrB/IFzqYJN3ueGhdLkmABEiABEiABEiABPwnQAfaJVMM0aC3y57g0OJDQjjA9hRpWMfeq2bfRtwV5szFhwFOCfJIMU9Ox1BGAiRAAiRAAiRAAiSQdwJ0oPPOkBZIgARIgARIgARIgARSiAAd6BQ62awqCZAACZAACZAACZBA3gnQgc47Q1ogARIgARIgARIgARJIIQJ0oFPoZLOqJEACJEACJEACJEACeSdABzrvDGmBBEiABEiABEiABEgghQjQgU6hk82qkgAJkAAJkAAJkAAJ5J0AHei8M6QFEiABEiABEiABEiCBFCKQKwe6TKUvhH9kkNs2kELXF6tKAiRAAq4I5PZ+yuP4LGYbiF8bsF7MuXagrUa4TgJuCeBCj5Z4E4jfTYCsyTpIbSDaPSWZ9jvdG5OpHiwrCQSVgP0apQMd1DOdoPWyN0BrMZ1kVj2ukwAJkIAmEJT7RlDqoc8LlyQQNAL2a5QOdNDOcILXx94ArcV1kln1uE4CJEACmkBQ7htBqYc+L1ySQNAI2K9ROtBBO8MJXh97A7QW10lm1eM6CZAACWgCQblvBKUe+rxwSQJBI2C/RulAB+0MJ3h97A3QWlwnmVWP6yRAAiSgCQTlvhGUeujzwiUJBI2A/RqlAx20M5zg9bE3QGtxnWRWPa6TAAmQgCYQlPtGUOqhzwuXJBA0AvZrlA500M5wgtfH3gCtxXWSWfW4TgIkQAKaQFDuG0Gphz4vXJJA0AjYr1E60EE7wwleH3sDtBbXSWbV4zoJkAAJaAJBuW8EpR76vHBJAkEjYL9G6UAH7QwneH3sDdBaXCeZVY/rJEACJKAJBOW+EZR66PPCJQkEjYD9GvXdgUYGfv45nQA/89G2nPILukwz8HNpZwbb0ZJd5mc57LbtZYhnXsg7nvnFMy87V26nHoF4tzfkF4TktR5+czbl73d+Tucsnnk5lYOyxCWQH23Efo3ExIH2C7m9sHa7Jrld37Tttz1Tfokm97v+kexF2qc52GX2ba2Xm6XJlknuJU83ttzouM3TZMskd5sP9Py05SVf6iYPAT/biBtbbnSSgZ7XenjVNzEw2TPJTfatcpMtk9xqy7Tupy1TXpTHj4Cf59WtLbseHWjL+bbDsYhSYtXv+keyF2mfhmuX2be1Xm6WJlsmuZc83dhyo+M2T5Mtk9xtPtDz05aXfKmbPAT8bCNubLnRSQZ6XuvhVd/EwGTPJDfZt8pNtkxyqy3Tup+2THlRHj8Cfp5Xt7bsenSgLefbDsciSolVv+sfyV6kfRquXWbf1nq5WZpsmeRe8nRjy42O2zxNtkxyt/lAz09bXvKlbvIQ8LONuLHlRicZ6Hmth1d9EwOTPZPcZN8qN9kyya22TOt+2jLlRXn8CPh5Xt3asuvRgbacbzsciyglVv2ufyR7kfZpuHaZfVvr5WZpsmWSe8nTjS03Om7zNNkyyd3mAz0/bXnJl7rJQ8DPNuLGlhudZKDntR5e9U0MTPZMcpN9q9xkyyS32jKt+2nLlBfl8SPg53l1a8uuRwfacr7tcCyilFj1u/6R7EXap+HaZfZtrZebpcmWSe4lTze23Oi4zdNkyyR3mw/0/LTlJV/qJg8BP9uIG1tudJKBntd6eNU3MTDZM8lN9q1yky2T3GrLtO6nLVNeb7zxhlxxxRXy/fffh6nWr19frrzyShkyZEjY/qefflpKly4tw4cPD9uflpYm11xzjZQrV0527tzpWhamGPANP8+rW1t2PTrQlkZmh2MRpcSq3/WPZC/SPg3XLrNva73cLE22THIvebqx5UbHbZ4mWya523yg56ctL/lSN3kI+NlG3Nhyo5MM9LzWw6u+iYHJnklusm+Vm2yZ5FZbpnU/bZnyOumkk6RAgQJSuXLlkOrhw4elUKFCan+tWrVC+/fu3av2Qb9evXqh/Vjp0KFDSDZ27FjXsjDFgG/4eV7d2rLr0YG2NDI7HIso16t+vZGiAK+99ppceOGF8vnnn4eVx+ltNUzRsOF3/SPZi7RPF8sus29rvdwsTbZMci95urHlRsdtniZbJrnbfKDnpy0v+eZGF9dF2bJlpUKFCnLo0KGQienTp8t1110n999/vxw5ciS0/48//lC9PlWqVAnt0yvRrj3InWT6+FRa+tlG3Nhyo5MM/L3Ww6u+iYHJnklusm+Vm2yZ5FZbpnU/bZnyqlixohQsWFDatm0bplq+fHk57rjjpFOnTmH7r776ajn++OOlR48eYfvHjRsnRYsWlRIlSkhGRoZrWZhiwDf8PK9ubdn16EBbGpkdjkWU61W/3khRgOLFi6u30jvvvDOsPE5vq2GKhg2/6x/JXqR9ulh2mX1b6+VmabJlknvJ040tNzpu8zTZMsnd5gM9P215yTc3up9++mmoF2fOnDkhEy1atAjtX7FiRWh/o0aNQvs3bdoU2o+VaNeeSRZmJEU2/Gwjbmy50UkG9F7r4VXfxMBkzyQ32bfKTbZMcqst07qftkx5Qb5v376IatH2Z2ZmRtTPysqSnJwcz7KIBwRwp5/n1a0tux4daEvDssOxiHK96tcbKQpw3333qbfbJk2ahJXH6W01TNGw4Xf9I9mLtE8Xyy6zb2u93CxNtkxyL3m6seVGx22eJlsmudt8oOenLS/55kZ3zJgxUqRIESlZsqRYH1I//fSTFC5cWM477zzJzs4Ome7bt68aar300kvl6NGjof1YiXbtmWRhRlJkw8824saWGx0reoxG/P777zJw4EDZsWOHVRRaR7vAiMSAAQNk27Ztof3WFQzNT5gwQfr16ydbtmyxinK17rUeXvVNhTLZM8lN9q1yky2T3GrLtO6nLVNelMePgJ/n1a0tux4daMv5tsOxiPK0Gu3NM9p+68PennG0Y5zeVu02om37Xf9I9iLt0+Wxy+zbWi83S5Mtk9xLnm5sudFxm6fJlknuNh/o+WnLS7651d2/f39YmIa2g/12JxkyXHuR9kMW7dozyXSeqbL0s424seVGx8oeIT2IO8UfRhYinddHHnkkpHPiiSce8yEX7NWoUSOkgxc1+1C7NU83617r4VXfVAaTPZPcZN8qN9kyya22TOt+2jLlRXn8CPh5Xt3asuvRgbacbzsciyglVv2ufyR7kfZpuHaZfVvr5WZpsmWSe8nTjS03Om7zNNkyyd3mAz0/bXnJl7rJQ8DPNuLGlhsdKz0dVqed6Llz51rFav3ss88OOcfQmzp16jE6F110UZgORjzykrzWw6u+qWwmeya5yb5VbrJlklttmdb9tGXKi/L4EfDzvLq1ZdejA20533Y4FlFKrPpd/0j2Iu3TcO0y+7bWy83SZMsk95KnG1tudNzmabJlkrvNB3p+2vKSL3WTh4CfbcSNLTc6Vnr4MEs7z1guXrzYKlbrpUqVCtOJ5GRffvnlYToTJ048xo6XHV7r4VXfVBaTPZPcZN8qN9kyya22TOt+2jLlRXn8CPh5Xt3asuvRgbacbzsciyglVv2ufyR7kfZpuHaZfVvr5WZpsmWSe8nTjS03Om7zNNkyyd3mAz0/bXnJl7rJQ8DPNuLGlhsdK72GDRuqGQ4wK8K9994b8UOtZs2aSbFixdQ3J3fddVdYrLy21bJlS0F4B2ZduOWWWwRhdHlJXuvhVd9UNpM9k9xk3yo32TLJrbZM637aMuVFefwI+Hle3dqy69GBtpxvOxyLKCVW/a5/JHuR9mm4dpl9W+vlZmmyZZJ7ydONLTc6bvM02TLJ3eYDPT9tecmXuslDwM824saWGx07PcTAR/uAUOvCIY72AaHWOXDggGzdulVv5mnptR5e9U2FM9kzyU32rXKTLZPcasu07qctU16Ux4+An+fVrS27Hh1oy/m2w7GIUmLV7/pHshdpn4Zrl9m3tV5uliZbJrmXPN3YcqPjNk+TLZPcbT7Q89OWl3ypmzwE/Gwjbmy50UkGel7r4VXfxMBkzyQ32bfKTbZMcqst07qftkx5UR4/An6eV7e27Hp0oC3n2w7HIkqJVb/rH8lepH0arl1m39Z6uVmabJnkXvJ0Y8uNjts8TbZMcrf5QM9PW17ypW7yEPCzjbix5UYnGeh5rYdXfRMDkz2T3GTfKjfZMsmttkzrftoy5UV5/Aj4eV7d2rLr0YG2nG87HIsoJVb9rn8ke5H2abh2mX1b6+VmabJlknvJ040tNzpu8zTZMsnd5gM9P215yZe6yUPAzzbixpYbnWSg57UeXvVNDEz2THKTfavcZMskt9oyrftpy5QX5fEj4Od5dWvLrkcH2nK+7XAsopRYRf39/rODc2Jsl8W6LNayxTMv5BvP/OKZl5Up11OTQLzbG/ILQvJaD785m/L3Oz+ncxbPvJzKQVniEjC1Vy8ld2vLrhcTB9rc+LvKzbWGunIinCCY8/HuEDrlR1neCdgboNWik8yqx3USIAES0ASCct8ISj30eeGSBGJJANeLn39uymq/Rn13oN0UYuL8XdKw81I3qtQJGAF7A7RWz0lm1eM6CZAACWgCQblvBKUe+rxwSQJBI2C/RvPFgW7XP10Gjt0cNLasjwsC9gZoPcRJZtXjOgmQAAloAkG5bwSlHvq8cEkCQSNgv0bzxYF+vFmarN2ct0nng3ZiUqU+9gZorbeTzKrHdRIgARLQBIJy3whKPfR54ZIEgkbAfo3G3YFetTFLajafFzSurI9LAvYGaD3MSWbV4zoJkAAJaAJBuW8EpR76vHBJAkEjYL9G4+5A9x2dIZ8NXhs0rqyPSwL2Bmg9zElm1eM6CZAACWgCQblvBKUe+rxwSQJBI2C/RuPuQL/SYYlMW7w7aFxZH5cE7A3QepiTzKrHdRIgARLQBIJy3whKPfR54ZIEgkbAfo3G1YHel5UjDzWaLYeyjwSNK+vjkoC9AVoPc5JZ9bhOAiRAAppAUO4bQamHPi9ckkDQCNiv0bg60GNn7ZAmXy0PGlPWxwMBewO0Huoks+pxnQRIgAQ0gaDcN4JSD31euCSBoBGwX6O5dqBhyOvfLc+OkJueHOj5OK/5UN/7uYkns2gXVTzLwLwSu43w/PD8eGkD0e4pybTfS32py+uDbSB/2oD1npIrB9pqwO360aNHpWrTuZKx46DbQ6hHAiRAAiRAAiRAAiRAAglHIG4O9KI1mfJcm4UJB4AFIgESIAESIAESIAESIAEvBOLmQPf4daN8+eN6L2WjLgmQAAmQAAmQAAmQAAkkHIG4OdB1P14kaSv2JhwAFogESIAESIAESIAESIAEvBCIiwO9c2+2PPLWbMnJOeqlbNQlARIgARIgARIgARIggYQjEBcHevjUbdKix8qEqzwLRAIkQAIkQAIkQAIkQAJeCcTFgW7+zUoZOW2717JRnwRIgARIgARSnkB2dvYxDA4fPnzMPjc7oh0XKQ+rPbscM2vl5ORYVdR6pH3HKHFHShCwtxlUOlr7MwGJdlykPEy2jhw59sf8otl3shVzBxphGwjfQBgH0uDBg6VcuXJy1llnSeXKlWXLli1O5cuzbMKECXLjjTdKp06d8myLBhKHwObNm+XJJ5+UM888U84++2x56aWXQjfzr7/+WkqXLh36u/rqq+XQoUOeCz927Fi59dZbpXjx4nLllVfKgAEDwmxMmzZN7rnnHlWGUqVKyYgRI8Lk3CABEiCBvBBYt26d3HnnnfJ///d/6h60YMECZa569epy0003Ce47/fv3j5hFRkaGnHPOOdKqVSsl/+mnn6R8+fJy++23y1NPPSXaiRgzZozccsst8p///EfdR+3GIsnbtGkj//rXv+Suu+6SunXrqkPS0tKUnQoVKkilSpUkMzPTbjEA4OsAACAASURBVIrbKULgt99+U34Xnr1oD7ot+NluO3ToIDfffLPcf//9gme+NTVu3FhuuOEG9XfVVVep5zTk3333nToGz/WmTZuqQ0aOHKnK+sADD6j2vGvXLqspx/WYO9Bzl++Vep8sVoWYOXOmnHrqqfLnn38qoLVr15b77rvPsYB5Eb733nvqJnP99ddLy5Yt82IqpY91clY1mPT0dEFDrVWrlt4V0yWc22+//Vb27t0rc+bMkZNPPln69Omj8nznnXfUg2D+/PmCv0WLFuWqLO3bt5fJkydLVlaWfPrpp1K0aFGVH4wtX75czjjjDJXngQMHZPv27bJp06Zc5cODSCDIBOCotW7dWjmAJUuWVC+++oGKe7T1ZRfruI/s2LEjyEhc1w33lW3btin9999/X+rXr6/Wly5dqpa4D4JXpITn64svvijvvvuuEl9wwQXqPoWNhx9+WEaNGiX79u1T/KN1ZEWSozMC51H32F166aWqjLfddpvMmzdP5fX666/Ll19+GalY3JcCBFavXi26ZxgvgLrzya92O3HiROU7uhnt+Pjjj6VFixayZ88eueKKK2T//v2C0RM42EuWLJE77rhDZs2apc7Kf//7X9XJ6/YUxdyB7vrDOvl2xEZVnpdfflnq1asXKtuKFSvkuOOOC90gQgKfVsaPH6/esqtWrUoHOg9MnZxVbfbRRx8V3EDRu5EfCT00cHKR4EB/8MEHvhZj5cqVUqBAAcGLAlKDBg0E7ZmJBEjAmcBXX32lnOe1a9fKzp071T0CDhYSeknRc6n/PvnkEzn33HNDzpmz5dSSfvjhh9KkSZOwSqMzCr3K9jRp0iSBM9CzZ0/lQMPpxWidTm3btpX//e9/8vPPPysnG44vnAjtFGu9aHL0PqM375dfflE95AcPHpTzzjtPHybDhg2TOnXqhLa5kroEKlasKOjltaa8tttGjRpJ7969ZerUqaKdcqt9vQ4nHi946AQcPXq0ennXstdee03ZePPNN9WzHNcA/IiNG//yV7We0zLmDnTt1gtkSfpfQzkA+cUXX4TKg7eAwoULy+zZs0P7YrFCB9pfqlZnFZbRMDGc2KNHj7g70Oj97du3r5x22mmCFzIkONDVqlWTXr16ybhx40JvwrmlgB6gZ599Vg1FaRsY1cAFPGTIEFVv3fOi5VySAAn8ReCRRx4ROGw64ZpBb2ikhJAoOIpM4QTw4nHZZZfJqlWrQgI8Px988MFjQjjQ449hc/QqawcaByFkEk41HGfcv9Arh15i2IVj/vzzz4fd43BMNPncuXNVLzTC23CPhYOC0QOd0OmC4Xqm1CYwZcoU1dZ0bzRo+NFun3jiCeVroKMM94xoHWYYlcZIDBJ6wTEioxNGdDp37qx6pq+55hopUaJE2H1K6zktY+pA42e78fPdAIaEixYXtDWh0LgAY5noQPtDN5KzigsDcU54E4TDGs8eaFwYJ510khrFeOutt0Jxzr/++qvqIcZw57XXXqtu7HoY1AsJ9KogVh8veei9QQyhTtgPJwA90a+88oqKk7a3ba3LJQmkMgGECyBUQyeEXGE0x97biV5ohElFCyfQx6faEr3H9957rwwcODCs6s2aNYs4CoaeYTCH84ARXzjOixcvVt+IoGcavX8I6+jevbt88803gt48neAEW0PRIskRh122bFnBMD0cehyDTjCMHOiEe+ULL7ygN7lMQQKI37/uuuuO6SH2o90+/fTTavQEWDGKhW+UIiV8/6Y7aIcPHx7WA92wYUN1jegecoQr4bpBR6DbFFMH+ocJW6Tt96tDZcEQPzx+aypWrFiogtb9fq7Tgc47zWjOKoZcn3vuOZVBvB1oXatly5YpRxk9KPaEhzTeLhGDmduEHh30mhUpUkTFDcIOPlzEBakT4qUxrMlEAiQQTgAOHTpK2rVrJ127dpV///vfyoHGC7k14R6j7yXW/am8jhhP9OR26dIlDEPHjh2lZs2aoQ8BIQRPhMngRQRhM/gDU/RSY59OcBTQmbVhwwZBD+Hdd9+tRPjWA50CsLNmzRrVIRFJjthpOB06IXwPDjNisfUoIJwTPA+YUpMARiQwKo0P7a0pUrtF5xa+efDSbjGipXudZ8yYEWqPut0iT4TwIr5ZJ4RmYLQFnX7o1EX50F4xioK4aCRMNoG26zbF1IFu0nW5jJu7M1SWxx57LKxwuICPP/740IcNIUWfV+hA+wfU6qzizQ9fgeNiQcovBxp54+GMWKdIqUqVKvL2229HEnnah1hDHYOIDxDQO6MTenvQK8NEAiRwLAHM5IBeT3zMjevmlFNOCVNCrydeUNE7zfQPAcxahU4m3HvwhxkHtm7dKgULFlQzB+j96AnGLEAIl7Em3JPR44cEZxrOLnrl9MwdcCQef/xx5USjA0CPomF2A8RER5LDwYZTDucEw+eYcQP70KGAEb+HHnpI8KzHCB5TahLA90HoZNLtE2GV0dotns14fluTqd3CFkJJ0d7RbvVHgLrdwhbCOIcOHWo1K82bNw/NHoOZZJAwOlamTBnVjjFDHCYIcJti5kAfyj4iDzWaLfuy/pknEk4GHC5UHglDR7jYYp3oQPtLWDur+IAEQ676r1ChQurGjtkpYp3wQMYQERJ6TjDEiZs2EmbO0GFDiE3GGyb0vSY8ZGAbCR8q4KE/aNAgtY22i54bvM1iiBWzyWDqHCYSIAFnAuhNtc++BOcaU6Ix5Z4APoqyT6WJ+6Cerg5LzOqh743WnDCbkdbDywx6mPU29KxyfRxmUtE9d3ofbNv3aRmXJBCJAJ6j1rAh6Lhtt7t37w6ZtLfbaDN04MXOGpMNA3iGe5m+TmcaMwd6yqJd8lrHJToftcQFibhUODTnn3++ipfVvZdhij5t4A0EecGxg5OHdXzwxuSNgJOzarUUzx5ofMCHuGQMOeK84oGsL0JckPio8MILL1Q69rAha5md1jFXKmxfdNFFynnGW7ROGHJCSBKmc0I8NJx3PGSYSIAEwgngutBO28KFC9W93+roweE6/fTTj+ktCrfCLRMBTOvpR8IUYToUww97tEEC0QjgmY2QID9SfrTbmDnQHQelS78xGRG5wNunsxERTULudHJWrQVGrCPmfIxXwgsZLkDdS2zNF+3Lj5czDE0iD2tvjDUf9OhwqNJKhOskEE4Acc940bz44ovVy6Y19Ama+BEEhF9F6zEKt8YtEiABEkgMAjFzoGs2nyerN4V/JJIYVWYpckPAyVnV9tDLZP+yXsu4JAESSF0CeKGNNrsG7i10nlO3bbDmJJCsBGLiQK/JyJLHm/3z1W+ywmG5SYAESIAESIAESIAESMBOICYOdP/fN0uHgX/9Yps9Q26TAAmQAAmQAAmQAAmQQDITiIkD/frnS2XKgn++jkxmQCx7/hFYuzlLuv+yQb76cb10GbZOOg1ZKwtX78u/AjFnEiCBuBLIPnxEFqzaJ/gofczMHYLfFpgwb1dcy8DMSIAESCASAd8d6MwDOfJgo9ly4NA/09dFypj7SMBE4MiRo9K4yzKp0GCG+kO7sk6LaDqechIggeQmgO8qXvp0cegecM+rM2TZur9+9CC5a8bSkwAJJDsB3x3o8Wk7ldOT7GBY/sQgsHv/YXn8/XnqAXrvazPlg29XycoNf83NnBglZClIgARiRSAzK0dd8/oluttP62OVFe2SAAmQgCcCvjvQH/VZI0P//OuHUjyVhMokEIXA0rX75ZG3ZsvGbQcF8fXV302Td7qtkEVrMqMcwd0kQALJTACjT8OnbJNq78yVj/uukeY9VkrtVgvk0OEjyVwtlp0ESCBABHx1oDHc9ug7c5WjEyBGrEoCEFi/9Z8pEfEQ/XHCFnni/XnSsPNSmbN8TwKUkEUgARLwg8D8lfvkhY8WySsdlsjyv8M1duzJlsXpfGH2gy9tkAAJ+EPAVwcaPYXPtFrgT8lohQQMBHJyjsrIadtVm0Oc5JSF/HDVgIxiEkhYAlt2HZKWvVfLY83S1AeDCVtQFowESIAERMRXB7rXyE3yxbB1BEsCcSWA4d5xc3fK8x8tkv+2XShj5+wU7GMiARJIfAKHso9I71GbpNLbc9SsO/wAPfHPGUtIAiTgswNd/9PFMnsZh9PZsPKPAKa7atB+idRqOV9GTN0mh3MYM5l/Z4M5k4AzgfFpu1Qo1vvdV0rGjoPOypSSAAmQQAIR8K0Heve+w/Lwm7PpsCTQyU3losxdvlfFR2MGD8wdi14uJhIggcQgsGpjluD3Auq0XSi4VplIgARIINkI+OZAj5q+Xd7vviLZ6s/yBpzAkvRMNWMHPm7t93uGZB3k/OQBP+WsXgIT2JN5WDoOSpeqTeeqF9schlol8Nli0UiABJwI+OZAf/jtKvl1yjanvCgjgXwjgB6vlj1XSZUmc+TbERsF80szkQAJxIcAHGWMBMFx/mxQuuzdzxfZ+JBnLiRAArEi4IsDjZtjpcZzZNue7FiVk3ZJwBcCmA4P88qivXb9Yb1geiwmEiCB2BGYtXSPPNdmoQqpWr3pn+koY5cjLZMACZBA7An44kBj3k7MgMBEAslCAFNmfT54rXKkMaTMD5iS5cyxnMlCAD98hLC+ms3nyZ/zdiVLsVlOEiABEnBFwBcHGj+v2v2XDa4ypBIJJBKBnXuzBe0XU2jhVzTXbWYPWSKdH5Yl+QjgOwM8Dyo3maOmp+OvBybfOWSJSYAEzAR8caDxJfXC1fvMuVGDBBKUwL6sHME85ojRbNFjpazYkJWgJWWxSCAxCeCXaMfM3CE13ktTP4iydfehxCwoS0UCJEACPhDIswONoXD0NPCHK3w4GzSR7wTQezZw7Gap/m6aNPlqOV8M8/2MsADJQGDJ2kx5qd0SqffJYlm4hj+5nQznjGUkARLIG4E8O9A/T9qqehvyVgweTQKJRQDDzj9O3KLiN9/otFTwIRQTCZBAOAGEQOGjXLxwDp+yTdALzUQCJEACqUAgzw70O91WqGG7VIDFOqYegZyco4I5zmu3WiD4pc1JC3bTSUi9ZsAa2wjgFz4HjN2sRh+7/rBO9h/gtJA2RNwkARIIOIE8OdDopcOvD3JO3YC3ElZPOc3j03bKCx8tUr+eNnbWDoYtsV2kJIEpi3ZJrZbzpcmXy2XdFn50m5KNgJUmARKQPDnQ05fslpfbLyZGEkgpAlMX7ZFXOi6WWi3mq2Fr9MYxkUDQCazdnCVvdV0mz7RaINMW7w56dVk/EiABEnAkkCcHutOQtfLdb5scM6CQBIJKIG3FXmn8xTJ5vFmaDP1zqxzM5q+rBfVcp3K9MrNypMuwdepXPPGBLV8YU7k1sO4kQAKaQJ4caPTAcbovjZLLVCWAGQje/XqFVHtnrvQZk8F40FRtCAGrN2ZW+nXKNtWuP+mXLrv2Mc45YKeY1SEBEsgDgVw70Ih9w5fXTCRAAn8RwM8Ut+y9Wn1Y1ePXjfw2gA0jaQnMX7VP6n68SIUqLV+3P2nrwYKTAAmQQKwI5NqBHvjHFvm0X3qsykW7JJC0BDZsPaCujUqN5whmKNi2Jztp68KCpxYBzOvfqucqeaxZGmdXSq1Tz9qSAAl4JODZgcYX2K99vkSe/nCBDPtzq8fsqE4CqUMAv8SG7wTgSHcYmC6bdhxMncqzpklF4FD2EfWz2/hJ+2+Gb5ADhxjPn1QnkIUlARKIOwHPDjScgAoNZoT+8HEJEwmQQHQCiB39+ucNAuek7ferJT2DPxMenRYl8SYwPm2XPPH+PHm/+0rJ4EtevPEzPxIggSQl4NmBRj0x9zOc6Iadl0r2YU7hlaTnnsWOMwHMZtB71Cap2nSuNO+xUpavZ2xpnE8Bs7MQWLUxS17/fKma13zu8r0WCVdJgARIgARMBHLlQGMOXPwqW9ZBDvOZAFNOAnYCGB4fNG6z+gi3SdflsmDVPrsKt0kgZgTww1cdB6WrF7kfJmyRnCP8+e2YwaZhEiCBwBLIlQONmy5/fTCwbYIVixMBjN78PGmr1Gw+T31XMGvpnjjlzGxSkQAcZXy3ghGQzwaly9797ABJxXbAOpMACfhDIFcOtD9Z0woJkAAIwLH5bcZ2qd16gbz4yWKZOH+X+ulw0iEBvwjMXrZHnmuzUIXdYbpFJhIgARIggbwRoAOdN348mgR8I3D06FH5c94uNf8unJ0xM3dweN03uqlpaOO2g/J+9xVqlANti4kESIAESMAfAnSg/eFIKyTgK4Fpi3fLKx2WyFMfzFe/Bhfkj3WXLl0qmZmZvvJLdWP4PqX7LxvUj/p899smOcSPvVO9SbD+JEACPhNQDvTmzZvl2muvldKlS4f+vvnmG5+zojkSIAGvBOat3CuNuyxTP2wxZPwWOZjtX9zqnDlzpF27dvLGG29Iz549Zf/+/JkV5MILL5TBgwd7RaP0Fy9eLE8++aQcOBD/sIT8zNsJ1ugZ26XGe2nSutdqwVzkTCRAAiRAAv4TUA70kiVLpECBArJo0SJZtmyZ+tuzhx80+Y+bFkkgdwSWrt2vhuLxAVjf0RmSeSBvjnTr1q3lhBNOkMcff1waNWok//rXv+TWW2/NXeHyeJQXB7pq1aoCx1+nhQsXqjrkhwOdn3nr+luXaCMN2i+Rep8sloWrObOLlQ3XSYAESMBvAmEO9OHDh4+xjwft6tWr5dVXX5VBgwYJeqs//vhjqVu3rrRs2VK2bv3r1whXrlwpvXr1knnz5qkHctu2bVWv0OzZs+Xll1+WDh06SHb2Pz9pnJGRIa1atVJ2hw4deky+3EECJHAsgTWbDqiexcpN5qgh+j2Zx16zxx4Vvmfy5MlSsGBBGTNmTJgA+70mhF7k5PzjzKMX23qdu7EXyYGGnUgv8aeffrqMHDnSjdmoOpHsRlW2CPbu3Zunnm6nfLdv3y5HjuRuTv2de7Plo75r5NF35srwqdv4AarlnHGVBEiABGJFwOhAn3TSSXLNNddIs2bNpF+/fsoZhlM9bNgweeyxx+Suu+5SZRsxYoScd955qherc+fOctVVV8ndd98t5cqVE73dtGlTpbtt2zYpVaqUfPTRR9KjRw8VNtK+fftY1ZF2SSBwBPBxWLv+6epnwr8Yts7TUD2u2wceeCAqE4R0PP/88yH5xo0bpVChQrJlyxa1D9fxK6+8IjVq1JAiRYoInNqxY8dK8+bNpVixYlK0aFH55JNPQseb7Fkd6DVr1sidd94pp556qhQvXlzdezAqtm/fPjnxxBPVSBnyRO85QijQG438kH744Qc544wz5ODBf34yHfeVO+64Q8kHDhyo7jslS5aUs88+W/r37x8qo9MKOgnQO497Fux/8cUXSt2aN3bgnody6b+uXbsqPad88TJw/vnny6WXXirnnnuuGv1zKotdNmr6dhXn3PWH9bL/gPeXKbs9bpMACZAACbgjEOZA4wGg/yZOnKgswIGGkxsprVixQgoXLqx6POBAn3XWWbJr119feqM32r6NYWIk9DzXqlUrZLJPnz5yxRVXhLa5QgIk4I4AYlw7D10njzdLc/2hGL53gLMbLTVo0ECeeeaZkHjdunXKcd20aZPa17hxYzn++OPlyy+/lEOHDknt2rWV0/j000/L7t27pW/fvuq+sGPHDqVvsmd1oOEU416CGUnQs/3II49InTp1lB2EaZx22mny448/SlbWXz+HPn36dNWbDgX0Wp988snKkVYHiMhNN90kcKIRpoZ7GZxe2B4wYIByvNevX69Voy4/+OADqVSpkpKjd3358uVq3Zo3dqBM6KXGfrxIzJ8/35gvOie+++47ZQ98d+7cqdbd/lucninrtsQ//ttt+ahHAiRAAkElEOZA42t4hGLgDw9GJDx0FixYEKr/hg0bVIjGvffeKzfccIN6sOJBh4cenG+dsH311VfrTfn1119D2/jo58wzz5QyZcqov8svv1wuuuiikC5XSIAEvBHwMksHemA7duwYNQOTwwsHulq1aqHjcW3jPqFDOeBkIkRkxowZSsdkz+pAh4z+7ZAiTKxixYqh3fYQDrsTC8e/Zs2aSh/3MTj6cEzhBN9zzz2Snp6u/tDTDWccjrQpdenSRVBGXR+tb88b++Gc33777aJH20z5VqhQQapXrx4KhdO2uSQBEiABEkhsAmEOdKQYaLsDXbZsWWnRooWgdwmx0fj40KsDXa9ePeWEJzYalo4EgkngxhtvdLz+TA4vHGh8fKgTwjdOOeUUvamWCPmYNGmSWjfZszrQ6EVG+Aj24QUbYWEIBdPJ5ECPGjVKOfOw06ZNG7nvvvvUof/973/ViBjCOax/48eP16ajLnFffO+991RYyW233RbqUIjkQMPZxmia/qjRlC8c+sqVK6sea9wXUW4mEiABEiCBxCfgyYFG7wriDf/44w9VMww95saBRq/PJZdcEup1gd21a9cmPi2WkAQCQODFF19U11+kF2ZUD7NyoFdUJ/2ibA3h8OJAm+xZHWj02JYvXz7kgCL8wu5ADx8+XBdNhUugt1snvMwjvhlxx3jZ7927txK98847jnHf+ninJT6YfPbZZwUvIEh2BxrhIIjbHjduXMiM23wRDnfZZZep70JCB3OFBEiABEggYQkoBxoxfXgIRXqgomcJ09vp9OGHH6o4w+uuu07Qu6KHbtHzg9hKnezbCOnQcjjMeKhiCPX6669XH9E4xWRqm1ySAAnknQBeVhGji48Jce2j1/P3339X27DerVs31VuLGXfw4SBCKPCinFsH2mTP6kCjtxofJmNGCsxaAefZ6kAj3AsjYLhXwVm2O7EoPz5aRHgZPjpETDLSlClT1AeP1plGEA+te4qVUpR/cIh1zzA+DETPOJI9b/QkP/fcc6psKB/uc075Que3335TtqCLEBOErDCRAAmQAAkkPgHlQKOY0aaeirQfPTH4Kh7J6nTbdU3beADiC38db534uFhCEggGATiPN998s5pdA84xvkHo3r27qhyub8Tm4gNhxEvjI9/jjjtOTWEJhbfffjsUZ4xtjEiVKFEiDAxmypg6daorexiNwqw+SPjY7+KLL1YOPBzrl156KSwGGrHbeNnHizs+OJw5c6aKc7ZmjqkzoWP9UBlyzAaE2T0w6wXqhR5q/dGz9Xj7OsI30LOMHmLMlDF69GilYs0bDjBeSsBS/+mZTKLli/seyoAe83POOUcQHoLp7JhIgARIgAQSn0DIgU78orKEJEACfhPAlG96tgy7bezHSy6S9WUYvcN6vz7G/hJs34ZeNHtW29CDfcwTD6cUyfqSjm28vFsd30h5YZ8+Xhn5+x/2oScds4V4SXipwMu+fa7mSHlHsuuUL3r5o52DSLa4jwRIgARIIP8J0IHO/3PAEpAACeQjgbS0NPn5558j/iEEg4kESIAESIAE7AToQNuJcJsESCClCLRr1059NIkPJ+1/ejq6lALCypIACZAACRgJ0IE2IqICCZAACZAACZAACZAACfxDgA70Pyy4RgIkQAIkQAIkQAIkQAJGAnl2oDduO2jMhAokQAIkQAIkQAIkQAIkEBQCeXagG3ZeKmPn7AwKD9aDBEiABEiABEiABEiABBwJ5MmBzsk5Kg80nCX3vz5Llq7lT9A6kqaQBEiABEiABEiABEggEATy5EAvTs+UCg1mqL/q76bJ1t2HAgGFlSABEiABEiABEiABEiCBaATy5EAPGLs55EC36LFSZi3dEy0f7icBEiABEiABEiABEiCBQBDIkwO9fN1+ydhxUGq3WiDL1zOEIxAtgpUgARIgARIgARIgARJwJJAnB1pb/rRfugz9c6ve5JIESIAESIAESIAESIAEAkvAFwd61PTt8sG3qwILiRUjARIgARIgARIgARIgAU3AFwcac0HjI0ImEiABEiABEiABEiABEgg6AV8caEB69J25smkHf1Ql6A2G9SMBEiABEiABEiCBVCfgmwPdvMdK+W3G9lTnyfqTAAmQAAmQAAmQAAkEnIBvDvSQ8VukXf/0gONi9UiABEiABEiABEiABFKdgG8O9LJ1++XZ1gtSnSfrTwIkQAIkQAIkQAIkEHACvjnQOUeOykONZsve/TkBR8bqkQAJkAAJkAAJkAAJpDIB3xxoQGz0xVKZsmB3KvNk3UmABEiABEiABEiABAJOwFcHuufIjfLVj+sDjozVIwESIAESIAESIAESSGUCvjrQs5ftkZfbL05lnqw7CZAACZAACZAACZBAwAn46kBnHcyRBxrOkkOHjwQcG6tHAiRAAiRAAiRAAiSQqgR8daABsd4ni2X+yn2pypP1JgESIAESIAESIAESCDgB3x3ozkPXSd/RGQHHxuqRAAmQAAmQAAmQAAmkKgHfHejxabukyZfLU5Un600CJEACJEACJEACJBBwAr470Dv3Zssjb82Wo0ePBhwdq0cCJEACJEACJEACJJCKBHx3oAGxVov5smpjViryZJ1JgARIgARIgARIgAQCTiAmDvRHfdbIjxO3BBwdq0cCJEACJEACJEACJJCKBGLiQA+fsk1a9l6dijxZZxIgARIgARIgARIggYATiIkDvW7zAXn8/XkBR8fqkQAJkAAJkAAJkAAJpCKBmDjQAFm16VzZsutQKjJlnUmABEiABEiABEiABAJMIGYOdLOvV8jvs3cEGB2rRgIkQAIkQAIkQAIk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AAmQAAmQQNwI0IGOG2pmRAIkQAIkQAIkQAIkEAQCdKCDcBZZBxIgARIgARIgARIggbgRoAMdN9TBzKhGjRpy2WWXyY4dO4JZQdaKBEiABEggEATGjh0rt956qxQvXlyuvPJKGTBgQKhe6enp8tBDD8mZZ54p5cqVk99++y0k4woJRCIQdwc6JydHGjZsKJdccolceuml0qxZMzl69GiksnFfghPo37+/3HbbbVKgQAHZtGmT76X9+uuvpXTp0qG/q6++Wg4dOuR7PjSYXAQ2b94sTz75pNx3331hBecDMAwHN0iABGwE2rdvL5MnT5asrCz59NNPpWjRorJ3717lg1xxxRXy4Ycfyr59+2Tw4MFKtmXLFpsFbsabQOvWreXyyy+XU089VSpWrCgrVqw4pgjffvutXHTRRdKvX79jZLHcEXcH+p133pE77rhDNmzYIKtXr5aLL75YunfvHss60nYMCGRmZqpzN2vWrJg50GgrL730ksyfP1/9LVq0KAY1oclkIjB+/Hg14lGlShUpU6ZMqOh4CecDMISDKyRAAgYCK1euVM8uvHj/+eefcsYZZ4R15t1www3SrVs3gxWKY0kAHWaNGzeWtWvXqlHue+65RypXrhyW5bZt26RUqVJStmxZ+eyzz8Jksd6IqwONh9zZZ58tv//+e6hebdu2lX//+9+hba4kB4GmTZvKm2++Kfv374+pA/3BBx8kBxCWMi4E8DK1detW1dNgdaD5AIwLfmZCAoEgAKfr2WeflQoVKqj6dO3aVe6+++6wumGUC885psQh8L///U9uvvnmsALVrVtX4Ec+/PDDwXagt2/frpwtPAB1GjZsmArl0NtcJj6BZcuWqeESDH3F2oGuVq2a9OrVS8aNGyfZ2dmJD4cljAsBDNVZHWg+AOOCnZmQQFITOHjwoJx11llSuHBhFev8008/qfq0atVKxT9bKwfHrH79+tZdXM8nAkeOHJF58+apUcYuXbqESjFz5kwV4onzGngHeunSpcqBhtOl0+jRo9XQid7mMvEJ4EOL7777ThVUO9AbN270veC//vqrNGjQQN3Err32WnWhoOeAiQTsDjQfgGwTJEACbgnAIRsyZIgUKVJERo0aJR07dpS77ror7PDatWuzBzqMSP5sDB06VEqUKCEFCxZU4b8IuUFCREP58uVl+PDhajvwDjTinvHBmTUw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"}}},{"metadata":{"trusted":true},"cell_type":"code","source":"agent_train_dataset = AgentDataset(cfg, train_zarr, rasterizer)\nprint(agent_train_dataset)\nprint(\"Agent dataset length: \", len(agent_train_dataset))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Now, to understand the relation between EgoDataset and AgentDataset, let us consider scene 0. \nScene 0 in EgoDataset has 248 frames and we can visualize it as follows:"},{"metadata":{"trusted":true},"cell_type":"code","source":"ego_scene_0 = ego_train_dataset.get_scene_dataset(0)\nanim = create_animate_for_indexes(ego_scene_0, np.arange(len(ego_scene_0)))\nHTML(anim.to_jshtml())","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# The frames in the scene are in a sequence and each frame has a unique timestamp and has track_id = -1 (-1 is for ego_car)\nfor i in range(len(ego_scene_0)):\n    print(\"Track ID: \", ego_scene_0[i]['track_id'], \" Frame ID: \",  ego_scene_0[i]['timestamp'])\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Scene 0 in AgentDataset has 35 frames where the first 5 frames are for agent with track_id=1, next 6 frames for agent with track_id=328 and so on. It is important to note that each element of a scene in the AgentDataset corrsponds to some element in the same scene of EgoDataset. (And this relation can be seen using timestamp as each frame is identified using timestamp)\n\nFor instance, the 1st elemet of scene 0 of AgentDataset (track_id=1 and timestamp=1572643685901838786) corresponds to the 12th element of scene 0 of EgoDataset (track_id=-1 and timestamp=1572643685901838786)"},{"metadata":{"trusted":true},"cell_type":"code","source":"agent_scene_0 = agent_train_dataset.get_scene_dataset(0)\n\nfor i in range(len(agent_scene_0)):\n    print(\"Track ID: \", agent_scene_0[i]['track_id'], \" Frame ID: \",  agent_scene_0[i]['timestamp'])","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"To understand this visualization for scene 0 of AgentDataset, press next button one by one (Do not press \"play\" button). You will notice that the first 5 frames are for **agent_1**, the next 6 frames are for **agent_328** and so on. \n\nNote: Here the green car is the subject agent car and the blue cars could be other agent cars or the Ego car."},{"metadata":{"trusted":true},"cell_type":"code","source":"anim = create_animate_for_indexes(agent_scene_0, np.arange(len(agent_scene_0)))\nHTML(anim.to_jshtml())","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Hopefully this clarifies what the relation between EgoDataset and AgentDataset is and my first point!"},{"metadata":{},"cell_type":"markdown","source":"Coming up next: The input to the CNN: (batch_size, 25, 224, 224). What does this 25 (in_channel) denote?"}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}