Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save rquintel/621e413cfb58b19df27a32f613401f5b to your computer and use it in GitHub Desktop.
Save rquintel/621e413cfb58b19df27a32f613401f5b to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<a href=\"https://cognitiveclass.ai\"><img src = \"https://ibm.box.com/shared/static/9gegpsmnsoo25ikkbl4qzlvlyjbgxs5x.png\" width = 400> </a>\n",
"\n",
"<h1 align=center><font size = 5>Generating Maps with Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## Introduction\n",
"\n",
"In this lab, we will learn how to create maps for different objectives. To do that, we will part ways with Matplotlib and work with another Python visualization library, namely **Folium**. What is nice about **Folium** is that it was developed for the sole purpose of visualizing geospatial data. While other libraries are available to visualize geospatial data, such as **plotly**, they might have a cap on how many API calls you can make within a defined time frame. **Folium**, on the other hand, is completely free."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## Table of Contents\n",
"\n",
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"\n",
"1. [Exploring Datasets with *p*andas](#0)<br>\n",
"2. [Downloading and Prepping Data](#2)<br>\n",
"3. [Introduction to Folium](#4) <br>\n",
"4. [Map with Markers](#6) <br>\n",
"5. [Choropleth Maps](#8) <br>\n",
"</div>\n",
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Exploring Datasets with *pandas* and Matplotlib<a id=\"0\"></a>\n",
"\n",
"Toolkits: This lab heavily relies on [*pandas*](http://pandas.pydata.org/) and [**Numpy**](http://www.numpy.org/) for data wrangling, analysis, and visualization. The primary plotting library we will explore in this lab is [**Folium**](https://github.com/python-visualization/folium/).\n",
"\n",
"Datasets: \n",
"\n",
"1. San Francisco Police Department Incidents for the year 2016 - [Police Department Incidents](https://data.sfgov.org/Public-Safety/Police-Department-Incidents-Previous-Year-2016-/ritf-b9ki) from San Francisco public data portal. Incidents derived from San Francisco Police Department (SFPD) Crime Incident Reporting system. Updated daily, showing data for the entire year of 2016. Address and location has been anonymized by moving to mid-block or to an intersection. \n",
"\n",
"2. Immigration to Canada from 1980 to 2013 - [International migration flows to and from selected countries - The 2015 revision](http://www.un.org/en/development/desa/population/migration/data/empirical2/migrationflows.shtml) from United Nation's website. The dataset contains annual data on the flows of international migrants as recorded by the countries of destination. The data presents both inflows and outflows according to the place of birth, citizenship or place of previous / next residence both for foreigners and nationals. For this lesson, we will focus on the Canadian Immigration data"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Downloading and Prepping Data <a id=\"2\"></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Import Primary Modules:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"import numpy as np # useful for many scientific computing in Python\n",
"import pandas as pd # primary data structure library"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Introduction to Folium <a id=\"4\"></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Folium is a powerful Python library that helps you create several types of Leaflet maps. The fact that the Folium results are interactive makes this library very useful for dashboard building.\n",
"\n",
"From the official Folium documentation page:\n",
"\n",
"> Folium builds on the data wrangling strengths of the Python ecosystem and the mapping strengths of the Leaflet.js library. Manipulate your data in Python, then visualize it in on a Leaflet map via Folium.\n",
"\n",
"> Folium makes it easy to visualize data that's been manipulated in Python on an interactive Leaflet map. It enables both the binding of data to a map for choropleth visualizations as well as passing Vincent/Vega visualizations as markers on the map.\n",
"\n",
"> The library has a number of built-in tilesets from OpenStreetMap, Mapbox, and Stamen, and supports custom tilesets with Mapbox or Cloudmade API keys. Folium supports both GeoJSON and TopoJSON overlays, as well as the binding of data to those overlays to create choropleth maps with color-brewer color schemes."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"#### Let's install **Folium**"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"**Folium** is not available by default. So, we first need to install it before we are able to import it."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting package metadata: done\n",
"Solving environment: done\n",
"\n",
"# All requested packages already installed.\n",
"\n",
"Folium installed and imported!\n"
]
}
],
"source": [
"!conda install -c conda-forge folium=0.5.0 --yes\n",
"import folium\n",
"\n",
"print('Folium installed and imported!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Generating the world map is straigtforward in **Folium**. You simply create a **Folium** *Map* object and then you display it. What is attactive about **Folium** maps is that they are interactive, so you can zoom into any region of interest despite the initial zoom level. "
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNjI0M2M1ZWU4MGQ4NDBkYTgzNjVmYWEyYjAxN2Y3MTkgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzYyNDNjNWVlODBkODQwZGE4MzY1ZmFhMmIwMTdmNzE5IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF82MjQzYzVlZTgwZDg0MGRhODM2NWZhYTJiMDE3ZjcxOSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF82MjQzYzVlZTgwZDg0MGRhODM2NWZhYTJiMDE3ZjcxOScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMCwwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb206IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzczZTM2NWU5OTBhODQyYzg4ZDhmMTE2ZGU0NTVkOTJlID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgICAgICAgICAgewogICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICJtYXhab29tIjogMTgsCiAgIm1pblpvb20iOiAxLAogICJub1dyYXAiOiBmYWxzZSwKICAic3ViZG9tYWlucyI6ICJhYmMiCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzYyNDNjNWVlODBkODQwZGE4MzY1ZmFhMmIwMTdmNzE5KTsKICAgICAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fa39fac1c88>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# define the world map\n",
"world_map = folium.Map()\n",
"\n",
"# display world map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Go ahead. Try zooming in and out of the rendered map above."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"You can customize this default definition of the world map by specifying the centre of your map and the intial zoom level. \n",
"\n",
"All locations on a map are defined by their respective *Latitude* and *Longitude* values. So you can create a map and pass in a center of *Latitude* and *Longitude* values of **[0, 0]**. \n",
"\n",
"For a defined center, you can also define the intial zoom level into that location when the map is rendered. **The higher the zoom level the more the map is zoomed into the center**.\n",
"\n",
"Let's create a map centered around Canada and play with the zoom level to see how it affects the rendered map."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfOGMwMzU4OTc0Mjg1NDgxMzk1MTYwNjQwYmY3YzdiMTcgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzhjMDM1ODk3NDI4NTQ4MTM5NTE2MDY0MGJmN2M3YjE3IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF84YzAzNTg5NzQyODU0ODEzOTUxNjA2NDBiZjdjN2IxNyA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF84YzAzNTg5NzQyODU0ODEzOTUxNjA2NDBiZjdjN2IxNycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl9mYzU4ZjhhNTdkMzM0MzVlOTMxNGYzMGZmOTdhMTRiOCA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84YzAzNTg5NzQyODU0ODEzOTUxNjA2NDBiZjdjN2IxNyk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fa39e87c080>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# define the world map centered around Canada with a low zoom level\n",
"world_map = folium.Map(location=[56.130, -106.35], zoom_start=4)\n",
"\n",
"# display world map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create the map again with a higher zoom level"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZDdiM2Q2MGU5MTc3NDZlZjk0ZmU4N2EyMDk2NmZiZjEgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2Q3YjNkNjBlOTE3NzQ2ZWY5NGZlODdhMjA5NjZmYmYxIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9kN2IzZDYwZTkxNzc0NmVmOTRmZTg3YTIwOTY2ZmJmMSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9kN2IzZDYwZTkxNzc0NmVmOTRmZTg3YTIwOTY2ZmJmMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl80MDM4NWQzMmEwNzg0MjU0YWQ0MTViOTRhYzE4NzkwMSA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9kN2IzZDYwZTkxNzc0NmVmOTRmZTg3YTIwOTY2ZmJmMSk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fa39e87c8d0>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# define the world map centered around Canada with a higher zoom level\n",
"world_map = folium.Map(location=[56.130, -106.35], zoom_start=8)\n",
"\n",
"# display world map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"As you can see, the higher the zoom level the more the map is zoomed into the given center."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"**Question**: Create a map of Mexico with a zoom level of 4."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfMGVkMjBiMDU5MzEzNDU1NzhiYTE4MDcxOWM3OTRiOTEgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzBlZDIwYjA1OTMxMzQ1NTc4YmExODA3MTljNzk0YjkxIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8wZWQyMGIwNTkzMTM0NTU3OGJhMTgwNzE5Yzc5NGI5MSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8wZWQyMGIwNTkzMTM0NTU3OGJhMTgwNzE5Yzc5NGI5MScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMjMuNjM0NSwtMTAyLjU1MjhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfM2UwOGZlMGYxMzcxNDg2MTgwNTU4NWQzN2Q0NzZmZTUgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGVkMjBiMDU5MzEzNDU1NzhiYTE4MDcxOWM3OTRiOTEpOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fa39e887cf8>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"### type your answer here\n",
"mexico_latitude = 23.6345 \n",
"mexico_longitude = -102.5528\n",
"\n",
"mexico_map = folium.Map(location=[mexico_latitude, mexico_longitude], zoom_start=4)\n",
"\n",
"mexico_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Double-click __here__ for the solution.\n",
"<!-- The correct answer is:\n",
"\\\\ # define Mexico's geolocation coordinates\n",
"mexico_latitude = 23.6345 \n",
"mexico_longitude = -102.5528\n",
"-->\n",
"\n",
"<!--\n",
"\\\\ # define the world map centered around Canada with a higher zoom level\n",
"mexico_map = folium.Map(location=[mexico_latitude, mexico_longitude], zoom_start=4)\n",
"-->\n",
"\n",
"<!--\n",
"\\\\ # display world map\n",
"mexico_map\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Another cool feature of **Folium** is that you can generate different map styles."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### A. Stamen Toner Maps\n",
"\n",
"These are high-contrast B+W (black and white) maps. They are perfect for data mashups and exploring river meanders and coastal zones. "
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create a Stamen Toner map of canada with a zoom level of 4."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfOThiODQ1YzgyMGFlNDAwN2IwNjRkNTUzN2ViMjNiY2EgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzk4Yjg0NWM4MjBhZTQwMDdiMDY0ZDU1MzdlYjIzYmNhIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF85OGI4NDVjODIwYWU0MDA3YjA2NGQ1NTM3ZWIyM2JjYSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF85OGI4NDVjODIwYWU0MDA3YjA2NGQ1NTM3ZWIyM2JjYScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl9jNTFhNTVmNDcwYjE0YzY4YWM1NDQ0MTBhYzRlZTFjNyA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8vc3RhbWVuLXRpbGVzLXtzfS5hLnNzbC5mYXN0bHkubmV0L3RvbmVyL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOThiODQ1YzgyMGFlNDAwN2IwNjRkNTUzN2ViMjNiY2EpOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fa39e887208>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create a Stamen Toner map of the world centered around Canada\n",
"world_map = folium.Map(location=[56.130, -106.35], zoom_start=4, tiles='Stamen Toner')\n",
"\n",
"# display map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Feel free to zoom in and out to see how this style compares to the default one."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### B. Stamen Terrain Maps\n",
"\n",
"These are maps that feature hill shading and natural vegetation colors. They showcase advanced labeling and linework generalization of dual-carriageway roads."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create a Stamen Terrain map of Canada with zoom level 4."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZDQwNzllMWVlZTA5NDBhNWI2MzRjMGZiMjRmNzkxZWQgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2Q0MDc5ZTFlZWUwOTQwYTViNjM0YzBmYjI0Zjc5MWVkIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9kNDA3OWUxZWVlMDk0MGE1YjYzNGMwZmIyNGY3OTFlZCA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9kNDA3OWUxZWVlMDk0MGE1YjYzNGMwZmIyNGY3OTFlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl9kNTY5YjdhZDAxOTA0ZDM0YTYxMDYwMDA1NzdkYTEyMCA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8vc3RhbWVuLXRpbGVzLXtzfS5hLnNzbC5mYXN0bHkubmV0L3RlcnJhaW4ve3p9L3t4fS97eX0uanBnJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9kNDA3OWUxZWVlMDk0MGE1YjYzNGMwZmIyNGY3OTFlZCk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fa39e816588>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create a Stamen Toner map of the world centered around Canada\n",
"world_map = folium.Map(location=[56.130, -106.35], zoom_start=4, tiles='Stamen Terrain')\n",
"\n",
"# display map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Feel free to zoom in and out to see how this style compares to Stamen Toner and the default style."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### C. Mapbox Bright Maps\n",
"\n",
"These are maps that quite similar to the default style, except that the borders are not visible with a low zoom level. Furthermore, unlike the default style where country names are displayed in each country's native language, *Mapbox Bright* style displays all country names in English."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create a world map with this style."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfODdhMjVmZDk0ZTdhNGUzNzkxNjYwNzE5NWRjZjM3ZjEgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzg3YTI1ZmQ5NGU3YTRlMzc5MTY2MDcxOTVkY2YzN2YxIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF84N2EyNWZkOTRlN2E0ZTM3OTE2NjA3MTk1ZGNmMzdmMSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF84N2EyNWZkOTRlN2E0ZTM3OTE2NjA3MTk1ZGNmMzdmMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMCwwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb206IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzg1YjY4NzFlYjcwZDRjY2Y5MmEyOWE4OGM1Y2EzZDViID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZXMubWFwYm94LmNvbS92My9tYXBib3gud29ybGQtYnJpZ2h0L3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfODdhMjVmZDk0ZTdhNGUzNzkxNjYwNzE5NWRjZjM3ZjEpOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fa39e85d9e8>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create a world map with a Mapbox Bright style.\n",
"world_map = folium.Map(tiles='Mapbox Bright')\n",
"\n",
"# display the map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Zoom in and notice how the borders start showing as you zoom in, and the displayed country names are in English."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"**Question**: Create a map of Mexico to visualize its hill shading and natural vegetation. Use a zoom level of 6."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNmQ1NTA1YTczMWQ4NDg5ODg4ZjhmZDQ5NDAwMWVhY2EgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzZkNTUwNWE3MzFkODQ4OTg4OGY4ZmQ0OTQwMDFlYWNhIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF82ZDU1MDVhNzMxZDg0ODk4ODhmOGZkNDk0MDAxZWFjYSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF82ZDU1MDVhNzMxZDg0ODk4ODhmOGZkNDk0MDAxZWFjYScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMjMuNjM0NSwtMTAyLjU1MjhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfZWUyOGI2ZGY1YjVhNDhlNjliZjJhN2UxNGI0NGUzZGIgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3N0YW1lbi10aWxlcy17c30uYS5zc2wuZmFzdGx5Lm5ldC90ZXJyYWluL3t6fS97eH0ve3l9LmpwZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNmQ1NTA1YTczMWQ4NDg5ODg4ZjhmZDQ5NDAwMWVhY2EpOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fa39e824a58>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"### type your answer here\n",
"mexico_latitude = 23.6345 \n",
"mexico_longitude = -102.5528\n",
"\n",
"mexico_map = folium.Map(location=[mexico_latitude, mexico_longitude], zoom_start=6, tiles='Stamen Terrain')\n",
"\n",
"mexico_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Double-click __here__ for the solution.\n",
"<!-- The correct answer is:\n",
"\\\\ # define Mexico's geolocation coordinates\n",
"mexico_latitude = 23.6345 \n",
"mexico_longitude = -102.5528\n",
"-->\n",
"\n",
"<!--\n",
"\\\\ # define the world map centered around Canada with a higher zoom level\n",
"mexico_map = folium.Map(location=[mexico_latitude, mexico_longitude], zoom_start=6, tiles='Stamen Terrain')\n",
"-->\n",
"\n",
"<!--\n",
"\\\\ # display world map\n",
"mexico_map\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Maps with Markers <a id=\"6\"></a>\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's download and import the data on police department incidents using *pandas* `read_csv()` method."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Download the dataset and read it into a *pandas* dataframe:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dataset downloaded and read into a pandas dataframe!\n"
]
}
],
"source": [
"df_incidents = pd.read_csv('https://ibm.box.com/shared/static/nmcltjmocdi8sd5tk93uembzdec8zyaq.csv')\n",
"\n",
"print('Dataset downloaded and read into a pandas dataframe!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's take a look at the first five items in our dataset."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>IncidntNum</th>\n",
" <th>Category</th>\n",
" <th>Descript</th>\n",
" <th>DayOfWeek</th>\n",
" <th>Date</th>\n",
" <th>Time</th>\n",
" <th>PdDistrict</th>\n",
" <th>Resolution</th>\n",
" <th>Address</th>\n",
" <th>X</th>\n",
" <th>Y</th>\n",
" <th>Location</th>\n",
" <th>PdId</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>120058272</td>\n",
" <td>WEAPON LAWS</td>\n",
" <td>POSS OF PROHIBITED WEAPON</td>\n",
" <td>Friday</td>\n",
" <td>01/29/2016 12:00:00 AM</td>\n",
" <td>11:00</td>\n",
" <td>SOUTHERN</td>\n",
" <td>ARREST, BOOKED</td>\n",
" <td>800 Block of BRYANT ST</td>\n",
" <td>-122.403405</td>\n",
" <td>37.775421</td>\n",
" <td>(37.775420706711, -122.403404791479)</td>\n",
" <td>12005827212120</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>120058272</td>\n",
" <td>WEAPON LAWS</td>\n",
" <td>FIREARM, LOADED, IN VEHICLE, POSSESSION OR USE</td>\n",
" <td>Friday</td>\n",
" <td>01/29/2016 12:00:00 AM</td>\n",
" <td>11:00</td>\n",
" <td>SOUTHERN</td>\n",
" <td>ARREST, BOOKED</td>\n",
" <td>800 Block of BRYANT ST</td>\n",
" <td>-122.403405</td>\n",
" <td>37.775421</td>\n",
" <td>(37.775420706711, -122.403404791479)</td>\n",
" <td>12005827212168</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>141059263</td>\n",
" <td>WARRANTS</td>\n",
" <td>WARRANT ARREST</td>\n",
" <td>Monday</td>\n",
" <td>04/25/2016 12:00:00 AM</td>\n",
" <td>14:59</td>\n",
" <td>BAYVIEW</td>\n",
" <td>ARREST, BOOKED</td>\n",
" <td>KEITH ST / SHAFTER AV</td>\n",
" <td>-122.388856</td>\n",
" <td>37.729981</td>\n",
" <td>(37.7299809672996, -122.388856204292)</td>\n",
" <td>14105926363010</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>160013662</td>\n",
" <td>NON-CRIMINAL</td>\n",
" <td>LOST PROPERTY</td>\n",
" <td>Tuesday</td>\n",
" <td>01/05/2016 12:00:00 AM</td>\n",
" <td>23:50</td>\n",
" <td>TENDERLOIN</td>\n",
" <td>NONE</td>\n",
" <td>JONES ST / OFARRELL ST</td>\n",
" <td>-122.412971</td>\n",
" <td>37.785788</td>\n",
" <td>(37.7857883766888, -122.412970537591)</td>\n",
" <td>16001366271000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>160002740</td>\n",
" <td>NON-CRIMINAL</td>\n",
" <td>LOST PROPERTY</td>\n",
" <td>Friday</td>\n",
" <td>01/01/2016 12:00:00 AM</td>\n",
" <td>00:30</td>\n",
" <td>MISSION</td>\n",
" <td>NONE</td>\n",
" <td>16TH ST / MISSION ST</td>\n",
" <td>-122.419672</td>\n",
" <td>37.765050</td>\n",
" <td>(37.7650501214668, -122.419671780296)</td>\n",
" <td>16000274071000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" IncidntNum Category Descript \\\n",
"0 120058272 WEAPON LAWS POSS OF PROHIBITED WEAPON \n",
"1 120058272 WEAPON LAWS FIREARM, LOADED, IN VEHICLE, POSSESSION OR USE \n",
"2 141059263 WARRANTS WARRANT ARREST \n",
"3 160013662 NON-CRIMINAL LOST PROPERTY \n",
"4 160002740 NON-CRIMINAL LOST PROPERTY \n",
"\n",
" DayOfWeek Date Time PdDistrict Resolution \\\n",
"0 Friday 01/29/2016 12:00:00 AM 11:00 SOUTHERN ARREST, BOOKED \n",
"1 Friday 01/29/2016 12:00:00 AM 11:00 SOUTHERN ARREST, BOOKED \n",
"2 Monday 04/25/2016 12:00:00 AM 14:59 BAYVIEW ARREST, BOOKED \n",
"3 Tuesday 01/05/2016 12:00:00 AM 23:50 TENDERLOIN NONE \n",
"4 Friday 01/01/2016 12:00:00 AM 00:30 MISSION NONE \n",
"\n",
" Address X Y \\\n",
"0 800 Block of BRYANT ST -122.403405 37.775421 \n",
"1 800 Block of BRYANT ST -122.403405 37.775421 \n",
"2 KEITH ST / SHAFTER AV -122.388856 37.729981 \n",
"3 JONES ST / OFARRELL ST -122.412971 37.785788 \n",
"4 16TH ST / MISSION ST -122.419672 37.765050 \n",
"\n",
" Location PdId \n",
"0 (37.775420706711, -122.403404791479) 12005827212120 \n",
"1 (37.775420706711, -122.403404791479) 12005827212168 \n",
"2 (37.7299809672996, -122.388856204292) 14105926363010 \n",
"3 (37.7857883766888, -122.412970537591) 16001366271000 \n",
"4 (37.7650501214668, -122.419671780296) 16000274071000 "
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_incidents.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"So each row consists of 13 features:\n",
"> 1. **IncidntNum**: Incident Number\n",
"> 2. **Category**: Category of crime or incident\n",
"> 3. **Descript**: Description of the crime or incident\n",
"> 4. **DayOfWeek**: The day of week on which the incident occurred\n",
"> 5. **Date**: The Date on which the incident occurred\n",
"> 6. **Time**: The time of day on which the incident occurred\n",
"> 7. **PdDistrict**: The police department district\n",
"> 8. **Resolution**: The resolution of the crime in terms whether the perpetrator was arrested or not\n",
"> 9. **Address**: The closest address to where the incident took place\n",
"> 10. **X**: The longitude value of the crime location \n",
"> 11. **Y**: The latitude value of the crime location\n",
"> 12. **Location**: A tuple of the latitude and the longitude values\n",
"> 13. **PdId**: The police department ID"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's find out how many entries there are in our dataset."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(150500, 13)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_incidents.shape"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"So the dataframe consists of 150,500 crimes, which took place in the year 2016. In order to reduce computational cost, let's just work with the first 100 incidents in this dataset."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"# get the first 100 crimes in the df_incidents dataframe\n",
"limit = 100\n",
"df_incidents = df_incidents.iloc[0:limit, :]"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's confirm that our dataframe now consists only of 100 crimes."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(100, 13)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_incidents.shape"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now that we reduced the data a little bit, let's visualize where these crimes took place in the city of San Francisco. We will use the default style and we will initialize the zoom level to 12. "
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"# San Francisco latitude and longitude values\n",
"latitude = 37.77\n",
"longitude = -122.42"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfYTMyZjA1M2Q3NGZjNDBkY2JmODE0N2NjOTEwODljZGQgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fa397ea2dd8>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create map and display it\n",
"sanfran_map = folium.Map(location=[latitude, longitude], zoom_start=12)\n",
"\n",
"# display the map of San Francisco\n",
"sanfran_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now let's superimpose the locations of the crimes onto the map. The way to do that in **Folium** is to create a *feature group* with its own features and style and then add it to the sanfran_map."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfYTMyZjA1M2Q3NGZjNDBkY2JmODE0N2NjOTEwODljZGQgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzE2Nzg5NTc4YTYwNDIwZmEzM2RmN2IxZThkNzRiZTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJkZDFjZDhiNjI3YTQ5MmM5OTVkODQxNzc1NGMwZGJlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84OWVmNWI1NzI0MDc0Yjk5OWE2ZWRkMTVjYzdjZTEyYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI5Yzk5YWI5ZmNiZDQ0NmU5NmY1MjZiMWRmMWNhYWY2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xMjg0YjljMzg3MDE0MDljYmVlODFiMTA0ZGYyOWFiMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84ODM5MDQzYTBjNWQ0ZTczODFhN2ExNjkzNDYwZDk0YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDYzYjZiNGZmNzdhNDg2NDhhZTc1NmEzZTJhZWU0YjEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzhhNGI5NmNlZjk0NDAxN2JhYzJhNmY5NTY3NmY5ZmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDYzNjJjOTQ4ZmYzNDEyNGI2NjU3NjBjOGJhNDg4NjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lY2IzYjMwZWY2MDU0ODEzYTljM2NkMjBlMWNmMTcyZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xZWQ2ZTVmNDRlMzc0MGU2YWE0N2I3N2JhMGM5MGFjMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDJhNWFjNTQxNzZiNDQyNzkwMGU2YzUxMTA0NTgwY2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kZjQ2NTQ1YTNlZWY0ZmY5YTIzNTEzNjg2OWIyNjI1MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTVhYTE1OWY1Mzc5NGJjYzkyYjU1ODI3OWZhOGJiOTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDA5NGU4NDgxYTY2NDM1MDkzNGM3ZWNjMjVjYjRjNTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAyZjU0NDg3ZTQzYjRiM2Q5YTEzYjRiN2YyNWQxMDE2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y5MWFiMjFiM2FmZDQyNTA5MmNmZTgxYTQ2NDNmMTUwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2Y2YWRkM2ZiNDEyNDIyNTg3NjQyZTdiMDFjYjM0NDkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83YjM0NjA1YzZmYjU0YTgxOTU5YWRlMDY4ZjI1NWM1MCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NhNzgzMjVlYmIzZjRlMWViMjMxNjBlNTBmMjVlODE3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y5NDBiMDQzNGQzZTRiYWFhNTNlODJjMGFiNDExMjRlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjMyYWMzYTgxNDkzNDY2YTk0M2ZiMDE3Zjc5MzllNTcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E2MDY5OWQ5MDA4NTRjZmVhYzY5YzBmYjE1MjU5ZmVhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMjAxOWY4ZTZjYmM0ZDgzYmM4MDFkNjlmN2VmNjNmZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWY4ZTI1YjY1ZDYwNDYwZmIzZTEzMjU2YzM4OTE1Y2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kODk4OWU1MWJlOWU0NmExODk3OTM5YTIzNTIyNjM2YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWRmOTM0M2YzZjdiNDg4OGFkYzEwYmIyZTFjMDUyNDAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTQyOTFiMGU2MWJmNGU2ZGIwNzI3MGEzOWVhOWQ0OWYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWYxYzQzNjNhZGU2NGMyNTk4YjY4OTAwNmY2OGJmOWEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yMDZiZjQxMzA1MTQ0ZjgyYTAwZDBlMmVkNzFlZGQyNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMjhiMjZmYTA3Yjc0MDQyYTUxNzg3NDc4ZDgwNGEzOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUxNDRiYzlkNjU0ZDQ5M2I5ZmJkOTczZDZjNDkwZmRlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzkxNWRiNTFkNjhhZDQ4NTFhM2E3MzQ5YmZkNDE5N2U1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U3ZWFjMGM1OGM5YjQxOTJhZWY4Y2M3ZTZjYzIxYmY0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJkYTM4ZThjNTdmZjQ4Nzc5NDc3Zjk2NmQ3ZjEwMzlmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjkwYzY0ZGY0NTIzNGYyYzg5ODc3YzZmYzk2YjkzODAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jODU3ODk3OGE4ODY0MzJiOWE4MzY5ZTRmYzc1NDU4MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk5OGQ0MjFhYzhhNjRmZDFhZWUwOTc1OTc2ZGM2MGU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MyOTBkNDQ0NmFjZDRjZmRiOGVlNmRjYjFiNDg0NjdhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjc4MzE3M2M2NGQyNGVlZThkNzgwZTU5NDczOTQ5NjcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kN2ZiZDgwNTU1ZjA0OGQxOTYyNzJjOGM5MmNkYzA0YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xYjM2NWU1OGRjMTA0YWEzYjdkYjI1Y2YzOGYwZWY2YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wYzIwNmYyMjUzMDY0OGZkYjRmZWIyNGFhZTEzNWIyNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83NDFlOTljYmU4Njc0NmYxYWU1ZTNhMjY0MjJhZWIzOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGI3ZmEwODBhZWZjNGZiYmFmMWI3OWQ4Y2U2MDE4YjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84NWVmMzllMzJiNTc0OTBkYTBhNzA0Y2I2YzE3MGQyMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q1MzExMTBmMTVlZTQxYTBiODE4YTI1Y2YyNWY3Njk5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU4MmIwNzRlZDI5NjRiNzJiNDJkZDE1ZDc4YzhkZWIyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk2YmY4NWFiMTMwMTRkN2VhY2ZjM2NmMWM4MWY5OWIxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M2NmYwNzkzNTU5YTQ4ZDRiOTU1YzcyYzM1NzNjNDA0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE3N2MzNzc4MjM0MTRmMTg5NDI0NjRjNzNkMDUxZTMwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmZlMDYzYjNiYmMzNGRhMzgyY2RjMWY1MmNhZDk2ZmUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80ODU0YzBiOWIwMjE0MDMxOTJiMTg5NDAzMGRmNWJmOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNjkwMWUyYzQzNmM0YTY5YTFkMTkwMWYxMTRmYmYxMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zYzgzY2YxNzI0Yjc0MTgwOWY3ZjUxM2QzNjYzOTgwYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y1OGNiMWEyYjkxNTRlMTA5YWJlZWI5ZDI5MDdiMWM2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M3MTFiNGRlNzc5YjQxYzNhNDA5ZWNiZGFmZThhZTExID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzViZTgxM2M2MjMxNGNkMDlhOTcyNjNlNTU1NTI1NGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDIxMGU5Y2VmZTk3NGQxOGIwZDhlZmVmNTgzZTllZjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVmN2QxMjJkNWQzNTQxOTRiY2U0MDA3MmM0Yjc3ZjdjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hYzhjMjEyYzhjZTQ0ODMzOGI4NWIwNTNmMzA5MzkwNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGU2NDBjZmRjNGM4NGUzYzlhYzVhZjk4YmE5OGFhNWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTFjMzQ1MTY0ZTVmNDg2ZTkzMTIyMGFhMDYxYzlhZjAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTE4M2JjZmU3Y2IxNDY5ODgzMTU1NTMxZGJiZjNkMDYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTlmMjBmNDE0MGU1NDhlNDhmNzEyN2ZhZTkwZjA0YjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2Q4YjczOWJiZWYwNDY3Yjk5MDRkMTk4YTk1MmY2MjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84NjEzNjcyYjVmNzk0NjQzOThlZTE3NjkwOWJlNjI0YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lYTRmZmI3NDQ0YTU0NDc2YTY3MjFhMThiZjM1MjA5ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYzYjZlMWRmY2E3YzQyMDJhNDBhZWNmODU4ZjQzMGZkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U1N2U4M2NlYTcxOTRiZTQ5NjY2MjMxNzU4ZGU2MzhhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJmNGMxOGJhODZhNjQyNTg4YjEwNzYxNDg5NTUxYzQ4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yMDFiMTVjNzE0MjM0ZTk0ODc0Y2YwNzdiMzllNWY0YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmU0MWQzNDMzZDRkNDQwMGJhNWRlMDA1YmM3MTg3ODQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M1M2E1ODhmNzc4ZjRiMjhiYzc5ODIwMjQ5NDA5MGFlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2RlZDFmYzgxZTY2NGE5MmEwMmI0ZTdkZWY1OThjZTQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTllODE1YjJhNDQ5NDI1ODk2OWU5YTc1ZDY2YTYzZGEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83NjJjZTgwYjNkNjI0N2ZhYjg5MGM1NDdmNDU4YTRhYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTFiMGQwYzcwY2RjNGRmMGIyZmU2NmQzZTU0NTBkY2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVmNTUxNjc4MmY1NDRmNjZhZWJjNjI1NGZlYTQzZjIzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82NTlhZmNlZjY2NTc0NjJjYjZiMzgwMmRmZmY5MGI3NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y1NGRlZGVhNjgyNDRjMjQ5Y2ZmZTA1YWYwMTRkNGMzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFhYjcxNGI4ZTYyNDRhZTdiOTk5ODQyZjU1ZjRlZmYwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQwYzY2N2MzZmY3NjQ4MzZiZWUzOTM4ODQ0M2EyMTMwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MTIyMGMyYjYwN2U0ZDZkYWFmNjM2OGFhMTg0ZTA2ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUyZGJjYTAyZTk3MDRhOTZiMmJkZDhiYjQ4YjllMWRmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI4YjUyYjgzNzRmMzQ1NzFiNDNiNTAyZWU4ZjkyYjcxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIxZDBlZWZkMWI5ODRkMmU5YzNkM2E5YTY5ZmM4YTQwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kYjRmMThkZjY4ZWI0OTg4OTIwZTEzNGI2NjBlYjdmMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNGQ0YWJkZDk0ZDI0YjJmYTU0MGY3YjZkN2QxYjFlNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVjZmVjNzg4ZDZjZjRkYmFiZjk5YzJkNmZiNGZkYzU2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDU5YmM5OTYyNTY1NDAxYzhjZDBhMzZiNThjMjY1YjYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83YTZkZDE1MmQ3M2I0OTYzOTJlZWE2ZTdiMmI5NDljNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ5NWJhODNkZjdiNzRhYzRiMzhkNmY2YzhkM2ZjMzUyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzhjYzBhMGI1MDg0NDcyOTljZTMwYzA1YzkyYjdmNmUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80ODQ5MDM2ODllZTc0OTJmOGNhZjViNjI4ZTUzNTdhZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83ZWFkNzI2YjRjNzI0MGJmOWYxMDEzNDhjYWE3N2IzZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E5YjUxZjE3YTc4ODQ5NzZhYzFiMmVmNTI4OWRjOGNmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWEzNjJhNmNlNjcxNGZlOWI1YjBiMDM5YzU0ZWQ5NGEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGZhNzMzOTJhNjFkNGU5YWI1ZWMyOTg2MmY3YmQ2MjcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2ZkMmNlNDg3NjU3NDRkOGIwMjc1NDFhNTU0NjU2NDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fa397ea2dd8>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# instantiate a feature group for the incidents in the dataframe\n",
"incidents = folium.map.FeatureGroup()\n",
"\n",
"# loop through the 100 crimes and add each to the incidents feature group\n",
"for lat, lng, in zip(df_incidents.Y, df_incidents.X):\n",
" incidents.add_child(\n",
" folium.features.CircleMarker(\n",
" [lat, lng],\n",
" radius=5, # define how big you want the circle markers to be\n",
" color='yellow',\n",
" fill=True,\n",
" fill_color='blue',\n",
" fill_opacity=0.6\n",
" )\n",
" )\n",
"\n",
"# add incidents to map\n",
"sanfran_map.add_child(incidents)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"You can also add some pop-up text that would get displayed when you hover over a marker. Let's make each marker display the category of the crime when hovered over."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfYTMyZjA1M2Q3NGZjNDBkY2JmODE0N2NjOTEwODljZGQgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzE2Nzg5NTc4YTYwNDIwZmEzM2RmN2IxZThkNzRiZTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJkZDFjZDhiNjI3YTQ5MmM5OTVkODQxNzc1NGMwZGJlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84OWVmNWI1NzI0MDc0Yjk5OWE2ZWRkMTVjYzdjZTEyYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI5Yzk5YWI5ZmNiZDQ0NmU5NmY1MjZiMWRmMWNhYWY2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xMjg0YjljMzg3MDE0MDljYmVlODFiMTA0ZGYyOWFiMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84ODM5MDQzYTBjNWQ0ZTczODFhN2ExNjkzNDYwZDk0YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDYzYjZiNGZmNzdhNDg2NDhhZTc1NmEzZTJhZWU0YjEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzhhNGI5NmNlZjk0NDAxN2JhYzJhNmY5NTY3NmY5ZmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDYzNjJjOTQ4ZmYzNDEyNGI2NjU3NjBjOGJhNDg4NjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lY2IzYjMwZWY2MDU0ODEzYTljM2NkMjBlMWNmMTcyZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xZWQ2ZTVmNDRlMzc0MGU2YWE0N2I3N2JhMGM5MGFjMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDJhNWFjNTQxNzZiNDQyNzkwMGU2YzUxMTA0NTgwY2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kZjQ2NTQ1YTNlZWY0ZmY5YTIzNTEzNjg2OWIyNjI1MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTVhYTE1OWY1Mzc5NGJjYzkyYjU1ODI3OWZhOGJiOTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDA5NGU4NDgxYTY2NDM1MDkzNGM3ZWNjMjVjYjRjNTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAyZjU0NDg3ZTQzYjRiM2Q5YTEzYjRiN2YyNWQxMDE2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y5MWFiMjFiM2FmZDQyNTA5MmNmZTgxYTQ2NDNmMTUwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2Y2YWRkM2ZiNDEyNDIyNTg3NjQyZTdiMDFjYjM0NDkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83YjM0NjA1YzZmYjU0YTgxOTU5YWRlMDY4ZjI1NWM1MCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NhNzgzMjVlYmIzZjRlMWViMjMxNjBlNTBmMjVlODE3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y5NDBiMDQzNGQzZTRiYWFhNTNlODJjMGFiNDExMjRlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjMyYWMzYTgxNDkzNDY2YTk0M2ZiMDE3Zjc5MzllNTcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E2MDY5OWQ5MDA4NTRjZmVhYzY5YzBmYjE1MjU5ZmVhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMjAxOWY4ZTZjYmM0ZDgzYmM4MDFkNjlmN2VmNjNmZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWY4ZTI1YjY1ZDYwNDYwZmIzZTEzMjU2YzM4OTE1Y2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kODk4OWU1MWJlOWU0NmExODk3OTM5YTIzNTIyNjM2YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWRmOTM0M2YzZjdiNDg4OGFkYzEwYmIyZTFjMDUyNDAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTQyOTFiMGU2MWJmNGU2ZGIwNzI3MGEzOWVhOWQ0OWYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWYxYzQzNjNhZGU2NGMyNTk4YjY4OTAwNmY2OGJmOWEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yMDZiZjQxMzA1MTQ0ZjgyYTAwZDBlMmVkNzFlZGQyNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMjhiMjZmYTA3Yjc0MDQyYTUxNzg3NDc4ZDgwNGEzOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUxNDRiYzlkNjU0ZDQ5M2I5ZmJkOTczZDZjNDkwZmRlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzkxNWRiNTFkNjhhZDQ4NTFhM2E3MzQ5YmZkNDE5N2U1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U3ZWFjMGM1OGM5YjQxOTJhZWY4Y2M3ZTZjYzIxYmY0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJkYTM4ZThjNTdmZjQ4Nzc5NDc3Zjk2NmQ3ZjEwMzlmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjkwYzY0ZGY0NTIzNGYyYzg5ODc3YzZmYzk2YjkzODAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jODU3ODk3OGE4ODY0MzJiOWE4MzY5ZTRmYzc1NDU4MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk5OGQ0MjFhYzhhNjRmZDFhZWUwOTc1OTc2ZGM2MGU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MyOTBkNDQ0NmFjZDRjZmRiOGVlNmRjYjFiNDg0NjdhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjc4MzE3M2M2NGQyNGVlZThkNzgwZTU5NDczOTQ5NjcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kN2ZiZDgwNTU1ZjA0OGQxOTYyNzJjOGM5MmNkYzA0YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xYjM2NWU1OGRjMTA0YWEzYjdkYjI1Y2YzOGYwZWY2YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wYzIwNmYyMjUzMDY0OGZkYjRmZWIyNGFhZTEzNWIyNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83NDFlOTljYmU4Njc0NmYxYWU1ZTNhMjY0MjJhZWIzOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGI3ZmEwODBhZWZjNGZiYmFmMWI3OWQ4Y2U2MDE4YjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84NWVmMzllMzJiNTc0OTBkYTBhNzA0Y2I2YzE3MGQyMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q1MzExMTBmMTVlZTQxYTBiODE4YTI1Y2YyNWY3Njk5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU4MmIwNzRlZDI5NjRiNzJiNDJkZDE1ZDc4YzhkZWIyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk2YmY4NWFiMTMwMTRkN2VhY2ZjM2NmMWM4MWY5OWIxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M2NmYwNzkzNTU5YTQ4ZDRiOTU1YzcyYzM1NzNjNDA0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE3N2MzNzc4MjM0MTRmMTg5NDI0NjRjNzNkMDUxZTMwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmZlMDYzYjNiYmMzNGRhMzgyY2RjMWY1MmNhZDk2ZmUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80ODU0YzBiOWIwMjE0MDMxOTJiMTg5NDAzMGRmNWJmOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNjkwMWUyYzQzNmM0YTY5YTFkMTkwMWYxMTRmYmYxMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zYzgzY2YxNzI0Yjc0MTgwOWY3ZjUxM2QzNjYzOTgwYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y1OGNiMWEyYjkxNTRlMTA5YWJlZWI5ZDI5MDdiMWM2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M3MTFiNGRlNzc5YjQxYzNhNDA5ZWNiZGFmZThhZTExID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzViZTgxM2M2MjMxNGNkMDlhOTcyNjNlNTU1NTI1NGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDIxMGU5Y2VmZTk3NGQxOGIwZDhlZmVmNTgzZTllZjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVmN2QxMjJkNWQzNTQxOTRiY2U0MDA3MmM0Yjc3ZjdjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hYzhjMjEyYzhjZTQ0ODMzOGI4NWIwNTNmMzA5MzkwNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGU2NDBjZmRjNGM4NGUzYzlhYzVhZjk4YmE5OGFhNWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTFjMzQ1MTY0ZTVmNDg2ZTkzMTIyMGFhMDYxYzlhZjAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTE4M2JjZmU3Y2IxNDY5ODgzMTU1NTMxZGJiZjNkMDYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTlmMjBmNDE0MGU1NDhlNDhmNzEyN2ZhZTkwZjA0YjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2Q4YjczOWJiZWYwNDY3Yjk5MDRkMTk4YTk1MmY2MjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84NjEzNjcyYjVmNzk0NjQzOThlZTE3NjkwOWJlNjI0YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lYTRmZmI3NDQ0YTU0NDc2YTY3MjFhMThiZjM1MjA5ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYzYjZlMWRmY2E3YzQyMDJhNDBhZWNmODU4ZjQzMGZkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U1N2U4M2NlYTcxOTRiZTQ5NjY2MjMxNzU4ZGU2MzhhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJmNGMxOGJhODZhNjQyNTg4YjEwNzYxNDg5NTUxYzQ4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yMDFiMTVjNzE0MjM0ZTk0ODc0Y2YwNzdiMzllNWY0YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmU0MWQzNDMzZDRkNDQwMGJhNWRlMDA1YmM3MTg3ODQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M1M2E1ODhmNzc4ZjRiMjhiYzc5ODIwMjQ5NDA5MGFlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2RlZDFmYzgxZTY2NGE5MmEwMmI0ZTdkZWY1OThjZTQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTllODE1YjJhNDQ5NDI1ODk2OWU5YTc1ZDY2YTYzZGEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83NjJjZTgwYjNkNjI0N2ZhYjg5MGM1NDdmNDU4YTRhYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTFiMGQwYzcwY2RjNGRmMGIyZmU2NmQzZTU0NTBkY2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVmNTUxNjc4MmY1NDRmNjZhZWJjNjI1NGZlYTQzZjIzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82NTlhZmNlZjY2NTc0NjJjYjZiMzgwMmRmZmY5MGI3NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y1NGRlZGVhNjgyNDRjMjQ5Y2ZmZTA1YWYwMTRkNGMzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFhYjcxNGI4ZTYyNDRhZTdiOTk5ODQyZjU1ZjRlZmYwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQwYzY2N2MzZmY3NjQ4MzZiZWUzOTM4ODQ0M2EyMTMwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MTIyMGMyYjYwN2U0ZDZkYWFmNjM2OGFhMTg0ZTA2ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUyZGJjYTAyZTk3MDRhOTZiMmJkZDhiYjQ4YjllMWRmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI4YjUyYjgzNzRmMzQ1NzFiNDNiNTAyZWU4ZjkyYjcxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIxZDBlZWZkMWI5ODRkMmU5YzNkM2E5YTY5ZmM4YTQwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kYjRmMThkZjY4ZWI0OTg4OTIwZTEzNGI2NjBlYjdmMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNGQ0YWJkZDk0ZDI0YjJmYTU0MGY3YjZkN2QxYjFlNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVjZmVjNzg4ZDZjZjRkYmFiZjk5YzJkNmZiNGZkYzU2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDU5YmM5OTYyNTY1NDAxYzhjZDBhMzZiNThjMjY1YjYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83YTZkZDE1MmQ3M2I0OTYzOTJlZWE2ZTdiMmI5NDljNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ5NWJhODNkZjdiNzRhYzRiMzhkNmY2YzhkM2ZjMzUyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzhjYzBhMGI1MDg0NDcyOTljZTMwYzA1YzkyYjdmNmUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80ODQ5MDM2ODllZTc0OTJmOGNhZjViNjI4ZTUzNTdhZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83ZWFkNzI2YjRjNzI0MGJmOWYxMDEzNDhjYWE3N2IzZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8wNzU2MTliMDhlZTk0ZDgzOGZjMzg0YThiMWJhNTEyNik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E5YjUxZjE3YTc4ODQ5NzZhYzFiMmVmNTI4OWRjOGNmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWEzNjJhNmNlNjcxNGZlOWI1YjBiMDM5YzU0ZWQ5NGEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGZhNzMzOTJhNjFkNGU5YWI1ZWMyOTg2MmY3YmQ2MjcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzA3NTYxOWIwOGVlOTRkODM4ZmMzODRhOGIxYmE1MTI2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2ZkMmNlNDg3NjU3NDRkOGIwMjc1NDFhNTU0NjU2NDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMDc1NjE5YjA4ZWU5NGQ4MzhmYzM4NGE4YjFiYTUxMjYpOwogICAgICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zYTQwZDBmYmYzODI0ZWUzOTVmYjJiNzVmN2RkNWZmYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTdlMzMwMjkwMTMzNDhkODhiZGIwNTE0NWMzMWJiMGEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTJhOTliNjMzMjMxNDJjMmFiNzg3YWI5YzBjNGJlN2QgPSAkKCc8ZGl2IGlkPSJodG1sXzUyYTk5YjYzMzIzMTQyYzJhYjc4N2FiOWMwYzRiZTdkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XRUFQT04gTEFXUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTdlMzMwMjkwMTMzNDhkODhiZGIwNTE0NWMzMWJiMGEuc2V0Q29udGVudChodG1sXzUyYTk5YjYzMzIzMTQyYzJhYjc4N2FiOWMwYzRiZTdkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfM2E0MGQwZmJmMzgyNGVlMzk1ZmIyYjc1ZjdkZDVmZmEuYmluZFBvcHVwKHBvcHVwXzU3ZTMzMDI5MDEzMzQ4ZDg4YmRiMDUxNDVjMzFiYjBhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2JjNmI5NDBjYWI2ODQ5MzU4YTZmMmNhMTA4NjM4ZjMzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81MTAxNmQ3MWUzYzc0OTNhYTJkMWNlMTEyOTJlODE2ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zYjRiMTc3YTg5YWQ0NGJiOTA2M2U3ZTJiNTczZjAzZSA9ICQoJzxkaXYgaWQ9Imh0bWxfM2I0YjE3N2E4OWFkNDRiYjkwNjNlN2UyYjU3M2YwM2UiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81MTAxNmQ3MWUzYzc0OTNhYTJkMWNlMTEyOTJlODE2ZC5zZXRDb250ZW50KGh0bWxfM2I0YjE3N2E4OWFkNDRiYjkwNjNlN2UyYjU3M2YwM2UpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iYzZiOTQwY2FiNjg0OTM1OGE2ZjJjYTEwODYzOGYzMy5iaW5kUG9wdXAocG9wdXBfNTEwMTZkNzFlM2M3NDkzYWEyZDFjZTExMjkyZTgxNmQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTVjOTk3NGZmMWQ2NDllZGJkNDBhZjA3YmEzN2JjYzEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjk5ODA5NjcyOTk1OTYsLTEyMi4zODg4NTYyMDQyOTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMWFjMzgyNDAzMmU0YmM2YjE4YmRlNTY3Mzg0MTg0ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hNzYzMzc5MWYwZmQ0MDRiODZlYzk2NmUxNmYxN2U4ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfYTc2MzM3OTFmMGZkNDA0Yjg2ZWM5NjZlMTZmMTdlOGQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMWFjMzgyNDAzMmU0YmM2YjE4YmRlNTY3Mzg0MTg0ZS5zZXRDb250ZW50KGh0bWxfYTc2MzM3OTFmMGZkNDA0Yjg2ZWM5NjZlMTZmMTdlOGQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81NWM5OTc0ZmYxZDY0OWVkYmQ0MGFmMDdiYTM3YmNjMS5iaW5kUG9wdXAocG9wdXBfMzFhYzM4MjQwMzJlNGJjNmIxOGJkZTU2NzM4NDE4NGUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDVkM2JjOTJlZjE0NDY3YmFjYTA0NjdmMTE0NzZmNmQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU3ODgzNzY2ODg3OSwtMTIyLjQxMjk3MDUzNzU5MV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU4MGMyYmIzYTJkODQwNmI4ZGJkYjY0MDZjMmExNzY2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk1MzYzMWUyYTA5YjQzYmY4ZGQ0ODU3NTBmZTI1M2JjID0gJCgnPGRpdiBpZD0iaHRtbF85NTM2MzFlMmEwOWI0M2JmOGRkNDg1NzUwZmUyNTNiYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81ODBjMmJiM2EyZDg0MDZiOGRiZGI2NDA2YzJhMTc2Ni5zZXRDb250ZW50KGh0bWxfOTUzNjMxZTJhMDliNDNiZjhkZDQ4NTc1MGZlMjUzYmMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80NWQzYmM5MmVmMTQ0NjdiYWNhMDQ2N2YxMTQ3NmY2ZC5iaW5kUG9wdXAocG9wdXBfNTgwYzJiYjNhMmQ4NDA2YjhkYmRiNjQwNmMyYTE3NjYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMWJlNjQxNWNmMWFmNDNmYTkwMGQ5MjJmZjI1YzMyMDIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjUwNTAxMjE0NjY4LC0xMjIuNDE5NjcxNzgwMjk2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjMyOTBmMDNhMDczNDBhMGJhMTBiMTI2MmJjNmFiZGUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGEzYTdhM2U0YjIxNGI5NWIzYjVlN2ZjM2UxMTMyNTMgPSAkKCc8ZGl2IGlkPSJodG1sX2RhM2E3YTNlNGIyMTRiOTViM2I1ZTdmYzNlMTEzMjUzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzYzMjkwZjAzYTA3MzQwYTBiYTEwYjEyNjJiYzZhYmRlLnNldENvbnRlbnQoaHRtbF9kYTNhN2EzZTRiMjE0Yjk1YjNiNWU3ZmMzZTExMzI1Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzFiZTY0MTVjZjFhZjQzZmE5MDBkOTIyZmYyNWMzMjAyLmJpbmRQb3B1cChwb3B1cF82MzI5MGYwM2EwNzM0MGEwYmExMGIxMjYyYmM2YWJkZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80ZGU2ODMzY2ZiY2I0ZWNhYmI1Nzg3N2E0YjBiMDliOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjE5OWVjMmRjYTI0NDEzNTk2NzUyYjg4MzdiZTRjM2EgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmVlMDgwYTllYjVhNDJlN2I2MDQxNzZhYTY1ZTVmNTggPSAkKCc8ZGl2IGlkPSJodG1sXzJlZTA4MGE5ZWI1YTQyZTdiNjA0MTc2YWE2NWU1ZjU4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yMTk5ZWMyZGNhMjQ0MTM1OTY3NTJiODgzN2JlNGMzYS5zZXRDb250ZW50KGh0bWxfMmVlMDgwYTllYjVhNDJlN2I2MDQxNzZhYTY1ZTVmNTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80ZGU2ODMzY2ZiY2I0ZWNhYmI1Nzg3N2E0YjBiMDliOC5iaW5kUG9wdXAocG9wdXBfMjE5OWVjMmRjYTI0NDEzNTk2NzUyYjg4MzdiZTRjM2EpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzU4YTk4ZWExYTY2NGM3N2E3YjI3MzZiMmY5OWY3ZGMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTFkYjExYjA5Y2JlNDdiNmJjZDE3NjI1OWE4N2U5NDkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDNjYzNiZmQ0N2UwNDM0ZGI3ZjU4NGIwMTU2YmY5ZTAgPSAkKCc8ZGl2IGlkPSJodG1sXzQzY2MzYmZkNDdlMDQzNGRiN2Y1ODRiMDE1NmJmOWUwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTFkYjExYjA5Y2JlNDdiNmJjZDE3NjI1OWE4N2U5NDkuc2V0Q29udGVudChodG1sXzQzY2MzYmZkNDdlMDQzNGRiN2Y1ODRiMDE1NmJmOWUwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYzU4YTk4ZWExYTY2NGM3N2E3YjI3MzZiMmY5OWY3ZGMuYmluZFBvcHVwKHBvcHVwXzExZGIxMWIwOWNiZTQ3YjZiY2QxNzYyNTlhODdlOTQ5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ZjMzM3MmRjOWQ1MzQ4OGQ4ODM1ZGM5ODJkN2I4NjMyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzOTgwNTU5MjYzNCwtMTIyLjQxMTc3ODI5NTk5Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzJjZTNhNDgyMTAxNTRiMDFiZjljMGNkODcwMGFlNzNhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RkNjZkZmMxZjA0MjQ4OGViYzUwMTlhOTA0NDExZDhmID0gJCgnPGRpdiBpZD0iaHRtbF9kZDY2ZGZjMWYwNDI0ODhlYmM1MDE5YTkwNDQxMWQ4ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yY2UzYTQ4MjEwMTU0YjAxYmY5YzBjZDg3MDBhZTczYS5zZXRDb250ZW50KGh0bWxfZGQ2NmRmYzFmMDQyNDg4ZWJjNTAxOWE5MDQ0MTFkOGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mYzMzNzJkYzlkNTM0ODhkODgzNWRjOTgyZDdiODYzMi5iaW5kUG9wdXAocG9wdXBfMmNlM2E0ODIxMDE1NGIwMWJmOWMwY2Q4NzAwYWU3M2EpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOGFjMzk3NTdkNzU0NGIyOWExNGVhYmQ3MjBkZjI1MTQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMzlhNzgyY2YwZWQ0Yjk2ODRjNTc4MmQ0OGM0NWU3NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iZDRhMWFmZWE5NzI0MWRkYWY5YjVlNTY1ODNlZDI5NyA9ICQoJzxkaXYgaWQ9Imh0bWxfYmQ0YTFhZmVhOTcyNDFkZGFmOWI1ZTU2NTgzZWQyOTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMzlhNzgyY2YwZWQ0Yjk2ODRjNTc4MmQ0OGM0NWU3NC5zZXRDb250ZW50KGh0bWxfYmQ0YTFhZmVhOTcyNDFkZGFmOWI1ZTU2NTgzZWQyOTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84YWMzOTc1N2Q3NTQ0YjI5YTE0ZWFiZDcyMGRmMjUxNC5iaW5kUG9wdXAocG9wdXBfMzM5YTc4MmNmMGVkNGI5Njg0YzU3ODJkNDhjNDVlNzQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzgxMTkxOGFiYWNiNDY1ZmI4OWE2OWI0OTc1YTBlMDUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjA5NjY5NjE1NDk5LC0xMjIuMzg3MTgxNjM1OTk1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmM5ZmU5NGFkMWJhNDRiZDkxN2UyZTZkMGZjYTMwMmQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjlkYWNhMWM2MzNlNDE1NGE1MjU4YmFhYWQ5ZTZlODYgPSAkKCc8ZGl2IGlkPSJodG1sX2Y5ZGFjYTFjNjMzZTQxNTRhNTI1OGJhYWFkOWU2ZTg2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmM5ZmU5NGFkMWJhNDRiZDkxN2UyZTZkMGZjYTMwMmQuc2V0Q29udGVudChodG1sX2Y5ZGFjYTFjNjMzZTQxNTRhNTI1OGJhYWFkOWU2ZTg2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMzgxMTkxOGFiYWNiNDY1ZmI4OWE2OWI0OTc1YTBlMDUuYmluZFBvcHVwKHBvcHVwXzJjOWZlOTRhZDFiYTQ0YmQ5MTdlMmU2ZDBmY2EzMDJkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzc1MDE3YmU4MjY0MjRiMTJhYTZkMjFlYTRhMGMzYjVhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDc4MTU3ODY5NTA1LC0xMjIuNDc3Mzc2NTI0MDAyOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80YjFjOWRmYzE0ZmU0MTVkOWY5NmIwOTIzYzUwMDRjMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kMjkyZGYzZGM3ODg0MDdkOTE4OWQwM2M1MWNiZGEyOSA9ICQoJzxkaXYgaWQ9Imh0bWxfZDI5MmRmM2RjNzg4NDA3ZDkxODlkMDNjNTFjYmRhMjkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzRiMWM5ZGZjMTRmZTQxNWQ5Zjk2YjA5MjNjNTAwNGMzLnNldENvbnRlbnQoaHRtbF9kMjkyZGYzZGM3ODg0MDdkOTE4OWQwM2M1MWNiZGEyOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzc1MDE3YmU4MjY0MjRiMTJhYTZkMjFlYTRhMGMzYjVhLmJpbmRQb3B1cChwb3B1cF80YjFjOWRmYzE0ZmU0MTVkOWY5NmIwOTIzYzUwMDRjMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lZDY2OGFjZmYxZjM0NjZiYjIwNDQyMjY1OGQ4ZTlmOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NTczODk0Mjk2NTQ5NSwtMTIyLjQ3Nzk2MDMyNzI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU4ZGQ3OWU5MTFhZDQyY2Y5N2FhOGQ3MzE5YmM1Mzg1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzRkY2UwMzRkN2M0YzRiN2Q4OWM5NmU4NGE5MTE0YTJlID0gJCgnPGRpdiBpZD0iaHRtbF80ZGNlMDM0ZDdjNGM0YjdkODljOTZlODRhOTExNGEyZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81OGRkNzllOTExYWQ0MmNmOTdhYThkNzMxOWJjNTM4NS5zZXRDb250ZW50KGh0bWxfNGRjZTAzNGQ3YzRjNGI3ZDg5Yzk2ZTg0YTkxMTRhMmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lZDY2OGFjZmYxZjM0NjZiYjIwNDQyMjY1OGQ4ZTlmOS5iaW5kUG9wdXAocG9wdXBfNThkZDc5ZTkxMWFkNDJjZjk3YWE4ZDczMTliYzUzODUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTQyMDc2ZDhmNTc3NDU1OGJhYmQ1NjhkNDgxODhlMDggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzU2OTcwMjc1NDgyMDYsLTEyMi4zNzY3NTc2NTU1MzAwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzIzZTFlNzIxMmZkNTRkNDg5ZGQwODc5NjcyODQ2OTZmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI2NzMxYTFjNGQ1MDQ3ZmJhMWZkYjk0Zjg3ZTBhZjZkID0gJCgnPGRpdiBpZD0iaHRtbF8yNjczMWExYzRkNTA0N2ZiYTFmZGI5NGY4N2UwYWY2ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzIzZTFlNzIxMmZkNTRkNDg5ZGQwODc5NjcyODQ2OTZmLnNldENvbnRlbnQoaHRtbF8yNjczMWExYzRkNTA0N2ZiYTFmZGI5NGY4N2UwYWY2ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzU0MjA3NmQ4ZjU3NzQ1NThiYWJkNTY4ZDQ4MTg4ZTA4LmJpbmRQb3B1cChwb3B1cF8yM2UxZTcyMTJmZDU0ZDQ4OWRkMDg3OTY3Mjg0Njk2Zik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yNDQzMTQwOWY4Y2I0ZGFjYTU2ODg3YmQzNGIwMzdhYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTI3MDUxOTk1OTIsLTEyMi40MzIzMjU4NzEwMjhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82MDE2YzUxNjMwOGE0MjQyOTkxZWEwMDE0YmQ4ODk1OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yMzM1NDAwMGIyZDE0MTdkOGExOTQ2MGEyMjk3MWUyYiA9ICQoJzxkaXYgaWQ9Imh0bWxfMjMzNTQwMDBiMmQxNDE3ZDhhMTk0NjBhMjI5NzFlMmIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzYwMTZjNTE2MzA4YTQyNDI5OTFlYTAwMTRiZDg4OTU4LnNldENvbnRlbnQoaHRtbF8yMzM1NDAwMGIyZDE0MTdkOGExOTQ2MGEyMjk3MWUyYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzI0NDMxNDA5ZjhjYjRkYWNhNTY4ODdiZDM0YjAzN2FjLmJpbmRQb3B1cChwb3B1cF82MDE2YzUxNjMwOGE0MjQyOTkxZWEwMDE0YmQ4ODk1OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hODY3YjY3MmI1MTA0YjQ4OTZkNGU3NDUwODlhMjlhZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MTY0Mjk4MjM4NCwtMTIyLjQwMDkwODY5ODg4OTk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTQ3YzNjZjVhNGM2NDk4NjhiMjg4ZDI3ZDRlNzE4MTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTEzOTM3M2Y4ZGIzNDdlNzk0YzVlMDg5YjM3Y2E4NWEgPSAkKCc8ZGl2IGlkPSJodG1sX2ExMzkzNzNmOGRiMzQ3ZTc5NGM1ZTA4OWIzN2NhODVhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTQ3YzNjZjVhNGM2NDk4NjhiMjg4ZDI3ZDRlNzE4MTQuc2V0Q29udGVudChodG1sX2ExMzkzNzNmOGRiMzQ3ZTc5NGM1ZTA4OWIzN2NhODVhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYTg2N2I2NzJiNTEwNGI0ODk2ZDRlNzQ1MDg5YTI5YWYuYmluZFBvcHVwKHBvcHVwXzU0N2MzY2Y1YTRjNjQ5ODY4YjI4OGQyN2Q0ZTcxODE0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzg5MDQwMWM2NjI5MzRkNjBiYmM2ZjljYjZlNDg5M2Y5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2MyOTI2OTkzMDI0YjRiNmNhMTc4NGFiZTc4ODFjYmYxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2UyYjI3YjY2MmI5YjRiYTI4ODQzZmU5NmFkYzEyYTVjID0gJCgnPGRpdiBpZD0iaHRtbF9lMmIyN2I2NjJiOWI0YmEyODg0M2ZlOTZhZGMxMmE1YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1RPTEVOIFBST1BFUlRZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jMjkyNjk5MzAyNGI0YjZjYTE3ODRhYmU3ODgxY2JmMS5zZXRDb250ZW50KGh0bWxfZTJiMjdiNjYyYjliNGJhMjg4NDNmZTk2YWRjMTJhNWMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84OTA0MDFjNjYyOTM0ZDYwYmJjNmY5Y2I2ZTQ4OTNmOS5iaW5kUG9wdXAocG9wdXBfYzI5MjY5OTMwMjRiNGI2Y2ExNzg0YWJlNzg4MWNiZjEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTkyOTQ0MzI0NjY0NGExMzkzNzgzNDI2NTBlODQzMTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTcyODk1OTA0NTc3OTUsLTEyMi40MDY4NzA0MDIwODJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xYjA3MDNjOGJlYTU0NTAzYjhhNGI5M2ExYzFmZTRkMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80YTk0MDVjOTQzM2E0NDRmODc5Y2M5ZTc4N2IwMzcxOCA9ICQoJzxkaXYgaWQ9Imh0bWxfNGE5NDA1Yzk0MzNhNDQ0Zjg3OWNjOWU3ODdiMDM3MTgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFiMDcwM2M4YmVhNTQ1MDNiOGE0YjkzYTFjMWZlNGQzLnNldENvbnRlbnQoaHRtbF80YTk0MDVjOTQzM2E0NDRmODc5Y2M5ZTc4N2IwMzcxOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2E5Mjk0NDMyNDY2NDRhMTM5Mzc4MzQyNjUwZTg0MzE5LmJpbmRQb3B1cChwb3B1cF8xYjA3MDNjOGJlYTU0NTAzYjhhNGI5M2ExYzFmZTRkMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85OGE4NWFiM2Y1Mzk0N2E0YjY1N2VjMDJhNGRmMjRiMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0ODkwNjMwNTE4MjksLTEyMi40MjAzNTQ3ODA4NjA5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMxZjkyZjg1NTA4MDQ2MWZhZDZjYzZhYjE3YTk2MWRkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2FhNTllMzViYzUyMTRjMzBhY2MxODc2MGFmMTk4OGQxID0gJCgnPGRpdiBpZD0iaHRtbF9hYTU5ZTM1YmM1MjE0YzMwYWNjMTg3NjBhZjE5ODhkMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzFmOTJmODU1MDgwNDYxZmFkNmNjNmFiMTdhOTYxZGQuc2V0Q29udGVudChodG1sX2FhNTllMzViYzUyMTRjMzBhY2MxODc2MGFmMTk4OGQxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOThhODVhYjNmNTM5NDdhNGI2NTdlYzAyYTRkZjI0YjAuYmluZFBvcHVwKHBvcHVwXzMxZjkyZjg1NTA4MDQ2MWZhZDZjYzZhYjE3YTk2MWRkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzFkOTFjMDE5ZjRjNzQwNjZiY2JmNWNmYjA3NDYwNTcxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE1NzY1NDI2OTk1LC0xMjIuNDM5OTA5NzY2NzcyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODUxMDc5NTg5NzM4NGEyN2EzMzQ0ZTkzM2ZhY2VhOTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDcyYjY0OGFjYjIwNDg3YzlhNjU4MGU5ZjNmZTg1MDQgPSAkKCc8ZGl2IGlkPSJodG1sX2Q3MmI2NDhhY2IyMDQ4N2M5YTY1ODBlOWYzZmU4NTA0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84NTEwNzk1ODk3Mzg0YTI3YTMzNDRlOTMzZmFjZWE5MS5zZXRDb250ZW50KGh0bWxfZDcyYjY0OGFjYjIwNDg3YzlhNjU4MGU5ZjNmZTg1MDQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xZDkxYzAxOWY0Yzc0MDY2YmNiZjVjZmIwNzQ2MDU3MS5iaW5kUG9wdXAocG9wdXBfODUxMDc5NTg5NzM4NGEyN2EzMzQ0ZTkzM2ZhY2VhOTEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjhlYjU1NmI1OTVhNGRmYzhkZmFhMDZiZWRlZGU3YWYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM1Njk5Mzg2OTE4LC0xMjIuNDA4NDIxMTE2OTIyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2JiOTg2ZGE5YmZhNGU1MjgwNmFlMzk2ZmM4OGEyNmIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjBkOTVlY2I3NWExNDVjNDk2YjhkYzZlYmUzZjYwOTUgPSAkKCc8ZGl2IGlkPSJodG1sXzYwZDk1ZWNiNzVhMTQ1YzQ5NmI4ZGM2ZWJlM2Y2MDk1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83YmI5ODZkYTliZmE0ZTUyODA2YWUzOTZmYzg4YTI2Yi5zZXRDb250ZW50KGh0bWxfNjBkOTVlY2I3NWExNDVjNDk2YjhkYzZlYmUzZjYwOTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yOGViNTU2YjU5NWE0ZGZjOGRmYWEwNmJlZGVkZTdhZi5iaW5kUG9wdXAocG9wdXBfN2JiOTg2ZGE5YmZhNGU1MjgwNmFlMzk2ZmM4OGEyNmIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfODgyY2I3OGY2NjVmNGJlMWJlNjc4NDI4OGEwZWJjYWQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzM2MTg2Mjc2NDU2MDQsLTEyMi40MjIzMTU2NzA3NDldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82NWUxZjk3NzQxYTc0ZDg5Yjg0OTQzMzVkMTk0ZWQ4OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80MDVlY2M0ZDg0ZDQ0OTNiYTY1MzNhMmY3ZTgzNjZhMyA9ICQoJzxkaXYgaWQ9Imh0bWxfNDA1ZWNjNGQ4NGQ0NDkzYmE2NTMzYTJmN2U4MzY2YTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZSQVVEPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82NWUxZjk3NzQxYTc0ZDg5Yjg0OTQzMzVkMTk0ZWQ4OC5zZXRDb250ZW50KGh0bWxfNDA1ZWNjNGQ4NGQ0NDkzYmE2NTMzYTJmN2U4MzY2YTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84ODJjYjc4ZjY2NWY0YmUxYmU2Nzg0Mjg4YTBlYmNhZC5iaW5kUG9wdXAocG9wdXBfNjVlMWY5Nzc0MWE3NGQ4OWI4NDk0MzM1ZDE5NGVkODgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWY5MmY3NjZjY2NkNDZlM2EyZDg2M2NkODM4ODBiMzMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JiMDU0OTNlNGY4ZjQ0YzI5YmY0MGU4MjkxNThlZDRmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2ZiZjY2MDJjMDBhNTQzOWE4YzQzZWMzNWU5YTIxN2U2ID0gJCgnPGRpdiBpZD0iaHRtbF9mYmY2NjAyYzAwYTU0MzlhOGM0M2VjMzVlOWEyMTdlNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JiMDU0OTNlNGY4ZjQ0YzI5YmY0MGU4MjkxNThlZDRmLnNldENvbnRlbnQoaHRtbF9mYmY2NjAyYzAwYTU0MzlhOGM0M2VjMzVlOWEyMTdlNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2VmOTJmNzY2Y2NjZDQ2ZTNhMmQ4NjNjZDgzODgwYjMzLmJpbmRQb3B1cChwb3B1cF9iYjA1NDkzZTRmOGY0NGMyOWJmNDBlODI5MTU4ZWQ0Zik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82ZjIxYjNhMzQ3OWE0NDY4OTBkMzZjZDdjNjUzMjMwZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjZlMGFlMWY2OWUzNDYyZThhYmUxZGNjYzVhNmNkZmYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzI2OWMzOWVmZGZiNGNiNmJkODAxYTMzM2ZlOWRkYmUgPSAkKCc8ZGl2IGlkPSJodG1sXzMyNjljMzllZmRmYjRjYjZiZDgwMWEzMzNmZTlkZGJlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82NmUwYWUxZjY5ZTM0NjJlOGFiZTFkY2NjNWE2Y2RmZi5zZXRDb250ZW50KGh0bWxfMzI2OWMzOWVmZGZiNGNiNmJkODAxYTMzM2ZlOWRkYmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82ZjIxYjNhMzQ3OWE0NDY4OTBkMzZjZDdjNjUzMjMwZC5iaW5kUG9wdXAocG9wdXBfNjZlMGFlMWY2OWUzNDYyZThhYmUxZGNjYzVhNmNkZmYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzNhMmQwYTI4YWZlNDI0NDgxODg5NGVmZTg3YWQ0OTggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZmZTE0YmU1NWNkNDRkMDA4YzA2NjA0ODdlNGQyMzZjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ4MTBiMjE3NDRiMjQ1YWFiMDQwZGYxNDQ5NTcwZTU4ID0gJCgnPGRpdiBpZD0iaHRtbF80ODEwYjIxNzQ0YjI0NWFhYjA0MGRmMTQ0OTU3MGU1OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZmZTE0YmU1NWNkNDRkMDA4YzA2NjA0ODdlNGQyMzZjLnNldENvbnRlbnQoaHRtbF80ODEwYjIxNzQ0YjI0NWFhYjA0MGRmMTQ0OTU3MGU1OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2MzYTJkMGEyOGFmZTQyNDQ4MTg4OTRlZmU4N2FkNDk4LmJpbmRQb3B1cChwb3B1cF82ZmUxNGJlNTVjZDQ0ZDAwOGMwNjYwNDg3ZTRkMjM2Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wY2U4OTkxMGU0MTE0MTM4OWY3NjE4NDc5ZDg4OGEwZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3MTQ5Mzk5Njk0MTYsLTEyMi41MDc3NTAxMzEwMDQwMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2E5MmM4ZDBmZmFmNTRiY2FiZjhkZjNiMjYwMTkxNTQ3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc3ODdhMGM2ODBjNjQwZThhOWI1OWQ0ZWI3OTExM2U5ID0gJCgnPGRpdiBpZD0iaHRtbF83Nzg3YTBjNjgwYzY0MGU4YTliNTlkNGViNzkxMTNlOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTkyYzhkMGZmYWY1NGJjYWJmOGRmM2IyNjAxOTE1NDcuc2V0Q29udGVudChodG1sXzc3ODdhMGM2ODBjNjQwZThhOWI1OWQ0ZWI3OTExM2U5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMGNlODk5MTBlNDExNDEzODlmNzYxODQ3OWQ4ODhhMGUuYmluZFBvcHVwKHBvcHVwX2E5MmM4ZDBmZmFmNTRiY2FiZjhkZjNiMjYwMTkxNTQ3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzE1OTUwMDdmY2QxOTRkYjc5NGI2ZjZmNjhlMzNlOTMxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE4MzAyMjA0NzY2MDA1LC0xMjIuNDc0NDQ0NjM5NTk0OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wZjM0M2M2NWZlYTU0Y2Q2OTM4NmVjNDgzNWU4Y2Q5ZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kMzVmMWFmNDY3MmY0NjgwOTMzYzBkMzBmMGRiMWVkMCA9ICQoJzxkaXYgaWQ9Imh0bWxfZDM1ZjFhZjQ2NzJmNDY4MDkzM2MwZDMwZjBkYjFlZDAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wZjM0M2M2NWZlYTU0Y2Q2OTM4NmVjNDgzNWU4Y2Q5Zi5zZXRDb250ZW50KGh0bWxfZDM1ZjFhZjQ2NzJmNDY4MDkzM2MwZDMwZjBkYjFlZDApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xNTk1MDA3ZmNkMTk0ZGI3OTRiNmY2ZjY4ZTMzZTkzMS5iaW5kUG9wdXAocG9wdXBfMGYzNDNjNjVmZWE1NGNkNjkzODZlYzQ4MzVlOGNkOWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNmJlZWIwN2FmZjhlNDI0MjhiM2QxZjZhMjEyMjJmYTMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGViNThmOThmNjAzNGI5ZmI4NGQxNjI3YjRkYzExZDkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjIxY2FkNjhhMzYyNGUzNmEwNTY5NjIzZDEyMjNlY2EgPSAkKCc8ZGl2IGlkPSJodG1sX2YyMWNhZDY4YTM2MjRlMzZhMDU2OTYyM2QxMjIzZWNhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGViNThmOThmNjAzNGI5ZmI4NGQxNjI3YjRkYzExZDkuc2V0Q29udGVudChodG1sX2YyMWNhZDY4YTM2MjRlMzZhMDU2OTYyM2QxMjIzZWNhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNmJlZWIwN2FmZjhlNDI0MjhiM2QxZjZhMjEyMjJmYTMuYmluZFBvcHVwKHBvcHVwXzBlYjU4Zjk4ZjYwMzRiOWZiODRkMTYyN2I0ZGMxMWQ5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ZjNzViMzY0MWUyZDQ0YTA5MzViM2VlMzY2ZTE1MWM1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NDM3ODMwOTExMiwtMTIyLjQxOTIwMzAwNDI2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI2ZjI2NzNjYTJkZjQ3ZGM4YTQ4ZDc5YzhiZWYyYzA0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFhMzA5YTkwZjk4NzQ4YWE4MjYwYmUzMzBkNTUyOWUxID0gJCgnPGRpdiBpZD0iaHRtbF8xYTMwOWE5MGY5ODc0OGFhODI2MGJlMzMwZDU1MjllMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI2ZjI2NzNjYTJkZjQ3ZGM4YTQ4ZDc5YzhiZWYyYzA0LnNldENvbnRlbnQoaHRtbF8xYTMwOWE5MGY5ODc0OGFhODI2MGJlMzMwZDU1MjllMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2ZjNzViMzY0MWUyZDQ0YTA5MzViM2VlMzY2ZTE1MWM1LmJpbmRQb3B1cChwb3B1cF8yNmYyNjczY2EyZGY0N2RjOGE0OGQ3OWM4YmVmMmMwNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xYzRhNTdmZmUyNTM0YWExYWVmYWUxMTJkNmMzYzQwMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTM2ODgyODQ1MzIsLTEyMi40MTI2OTAxNDIzMDgwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2MzNzJiZDljMzZkMjRhNjhiNjE1YjJiMDk3NzRkOTZiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJhYjJkNzNjYjQ1YjRlYTNiNjcxMDUxOWNjZmJhNmMxID0gJCgnPGRpdiBpZD0iaHRtbF8yYWIyZDczY2I0NWI0ZWEzYjY3MTA1MTljY2ZiYTZjMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2MzNzJiZDljMzZkMjRhNjhiNjE1YjJiMDk3NzRkOTZiLnNldENvbnRlbnQoaHRtbF8yYWIyZDczY2I0NWI0ZWEzYjY3MTA1MTljY2ZiYTZjMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzFjNGE1N2ZmZTI1MzRhYTFhZWZhZTExMmQ2YzNjNDAxLmJpbmRQb3B1cChwb3B1cF9jMzcyYmQ5YzM2ZDI0YTY4YjYxNWIyYjA5Nzc0ZDk2Yik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yYjg2ZTNlZWE2YjQ0ZjBjOWE0NDBiNmY1Y2ZhZjdkNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mNTgxYzRjMjY0YWU0N2RlYjFlM2I3MGU5MjlhYmE5MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kMjNmMTIwNTdmYjc0YWMzYmU2ODcwNDA3NGQwN2QwOCA9ICQoJzxkaXYgaWQ9Imh0bWxfZDIzZjEyMDU3ZmI3NGFjM2JlNjg3MDQwNzRkMDdkMDgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjU4MWM0YzI2NGFlNDdkZWIxZTNiNzBlOTI5YWJhOTIuc2V0Q29udGVudChodG1sX2QyM2YxMjA1N2ZiNzRhYzNiZTY4NzA0MDc0ZDA3ZDA4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMmI4NmUzZWVhNmI0NGYwYzlhNDQwYjZmNWNmYWY3ZDQuYmluZFBvcHVwKHBvcHVwX2Y1ODFjNGMyNjRhZTQ3ZGViMWUzYjcwZTkyOWFiYTkyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2NhYjlmNzM4MGFjYjQwNjI4OTRhZjVhNjYyYjRiZTc1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3OTIwOTM3NTUzMjk1LC0xMjIuNDEwODgyODI1NTUxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDBhNjhiNjg4YjFjNDk3OTk5ODQ1OTk0ZTc1NThlNDAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWUzZjcxNzZjZDhkNDQ3N2JhZTJlNDE5MDlkODRiMmIgPSAkKCc8ZGl2IGlkPSJodG1sXzVlM2Y3MTc2Y2Q4ZDQ0NzdiYWUyZTQxOTA5ZDg0YjJiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wMGE2OGI2ODhiMWM0OTc5OTk4NDU5OTRlNzU1OGU0MC5zZXRDb250ZW50KGh0bWxfNWUzZjcxNzZjZDhkNDQ3N2JhZTJlNDE5MDlkODRiMmIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jYWI5ZjczODBhY2I0MDYyODk0YWY1YTY2MmI0YmU3NS5iaW5kUG9wdXAocG9wdXBfMDBhNjhiNjg4YjFjNDk3OTk5ODQ1OTk0ZTc1NThlNDApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmM4MWU3NDEzOWZmNGE0MTk5NGNlYWFlNzAzODQwMGIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy44MDA0NTY2NDcxMDM4OSwtMTIyLjQwMTQzMjc1NDcyMjAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzQwZmRiMzRiMmFlNDczMWExMzgwZmVhNTVhZmE3ZWYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGQ0MTUwZDE1ODA0NDZmNmFjYmZkMzFkMzMyYmNiOWIgPSAkKCc8ZGl2IGlkPSJodG1sXzhkNDE1MGQxNTgwNDQ2ZjZhY2JmZDMxZDMzMmJjYjliIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zNDBmZGIzNGIyYWU0NzMxYTEzODBmZWE1NWFmYTdlZi5zZXRDb250ZW50KGh0bWxfOGQ0MTUwZDE1ODA0NDZmNmFjYmZkMzFkMzMyYmNiOWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iYzgxZTc0MTM5ZmY0YTQxOTk0Y2VhYWU3MDM4NDAwYi5iaW5kUG9wdXAocG9wdXBfMzQwZmRiMzRiMmFlNDczMWExMzgwZmVhNTVhZmE3ZWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjM1MTM1ZmQ4OTllNDlhYWFhZjNjY2ZiOTYxNmJlNzUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDM1NTUwNTQyMjY1LC0xMjIuNDIxMTI4MDI5NTA1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTZiODg0NDZjMWU4NDRhMWE1NTlhZmEzZTlkNzc1ODggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzBhZDk1ODhmM2RmNDllZWE5YzdiNzU2YjJlNzk0NTIgPSAkKCc8ZGl2IGlkPSJodG1sXzcwYWQ5NTg4ZjNkZjQ5ZWVhOWM3Yjc1NmIyZTc5NDUyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xNmI4ODQ0NmMxZTg0NGExYTU1OWFmYTNlOWQ3NzU4OC5zZXRDb250ZW50KGh0bWxfNzBhZDk1ODhmM2RmNDllZWE5YzdiNzU2YjJlNzk0NTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yMzUxMzVmZDg5OWU0OWFhYWFmM2NjZmI5NjE2YmU3NS5iaW5kUG9wdXAocG9wdXBfMTZiODg0NDZjMWU4NDRhMWE1NTlhZmEzZTlkNzc1ODgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMGJhYTBjMjRmMjIxNDkzZTkyMWM2ZTBlNDNjYjRmNGEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODY1NjQ3NjA3Njg1LC0xMjIuNDA3MjQ0MDg3MDMyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2U4ZmI2ZWMzNjEwNGU0NmEzNmZiNjY3M2E4Y2Q4MDEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTc0OWQ1YmY2ODllNDllNTg5MGNkMDdiZmQ4ZjYzZjEgPSAkKCc8ZGl2IGlkPSJodG1sX2U3NDlkNWJmNjg5ZTQ5ZTU4OTBjZDA3YmZkOGY2M2YxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83ZThmYjZlYzM2MTA0ZTQ2YTM2ZmI2NjczYThjZDgwMS5zZXRDb250ZW50KGh0bWxfZTc0OWQ1YmY2ODllNDllNTg5MGNkMDdiZmQ4ZjYzZjEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wYmFhMGMyNGYyMjE0OTNlOTIxYzZlMGU0M2NiNGY0YS5iaW5kUG9wdXAocG9wdXBfN2U4ZmI2ZWMzNjEwNGU0NmEzNmZiNjY3M2E4Y2Q4MDEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYWJiYzNlOTAwYjRhNDY5ZmI2NDg2OGEwZTc0NmY3NmUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jN2Q5OThiYzY3NTY0MDY3ODRiYjRkOTAzMTkyZWVlNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jOThkNDg4Y2RhOTA0Njg3YTIwNjdmMDdkNjQ2ZjBmMCA9ICQoJzxkaXYgaWQ9Imh0bWxfYzk4ZDQ4OGNkYTkwNDY4N2EyMDY3ZjA3ZDY0NmYwZjAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jN2Q5OThiYzY3NTY0MDY3ODRiYjRkOTAzMTkyZWVlNi5zZXRDb250ZW50KGh0bWxfYzk4ZDQ4OGNkYTkwNDY4N2EyMDY3ZjA3ZDY0NmYwZjApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hYmJjM2U5MDBiNGE0NjlmYjY0ODY4YTBlNzQ2Zjc2ZS5iaW5kUG9wdXAocG9wdXBfYzdkOTk4YmM2NzU2NDA2Nzg0YmI0ZDkwMzE5MmVlZTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDI3MjIwNzMzMjI0NGFkYjkyMDc3YjJhY2U5NmEwOTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMWQyMjdhMzMxZDU0MmU2YjEyOWY1MTc3OTgyYWY1NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83ZjFhNWE5YzNjY2E0ZjBmYmEyNjFhYjVlMjA4ZTY4OSA9ICQoJzxkaXYgaWQ9Imh0bWxfN2YxYTVhOWMzY2NhNGYwZmJhMjYxYWI1ZTIwOGU2ODkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMWQyMjdhMzMxZDU0MmU2YjEyOWY1MTc3OTgyYWY1NS5zZXRDb250ZW50KGh0bWxfN2YxYTVhOWMzY2NhNGYwZmJhMjYxYWI1ZTIwOGU2ODkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kMjcyMjA3MzMyMjQ0YWRiOTIwNzdiMmFjZTk2YTA5OS5iaW5kUG9wdXAocG9wdXBfMzFkMjI3YTMzMWQ1NDJlNmIxMjlmNTE3Nzk4MmFmNTUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWEwNzdmMThkYWIwNGQ4MzllOTIwMGNlMTcyZTIzMDUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDQxOTI3NTA4OTMyMDUsLTEyMi40NDQ2ODU0ODIyNzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kMDBhN2QxOTgyOWM0NzdjYjEyMTNiYTMwZjI2ZmM4NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wODMyODQ0YTA0ZWE0ZTAwOTFiOTdiODFhZjE4YTQyYSA9ICQoJzxkaXYgaWQ9Imh0bWxfMDgzMjg0NGEwNGVhNGUwMDkxYjk3YjgxYWYxOGE0MmEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDAwYTdkMTk4MjljNDc3Y2IxMjEzYmEzMGYyNmZjODUuc2V0Q29udGVudChodG1sXzA4MzI4NDRhMDRlYTRlMDA5MWI5N2I4MWFmMThhNDJhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZWEwNzdmMThkYWIwNGQ4MzllOTIwMGNlMTcyZTIzMDUuYmluZFBvcHVwKHBvcHVwX2QwMGE3ZDE5ODI5YzQ3N2NiMTIxM2JhMzBmMjZmYzg1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzY3ZWJkNjY3NmEzMjRkYjNiYjM4ZmExNDE0NDc1ZTljID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBiNTBmZTI0MTJmMzRkNDJhMmY1ZmIzZDgyNjZkN2YzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc2N2Q1OWY2ZmY0YTQ0YWFhZWMyYjE4YzM4NTNlZjU0ID0gJCgnPGRpdiBpZD0iaHRtbF83NjdkNTlmNmZmNGE0NGFhYWVjMmIxOGMzODUzZWY1NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wYjUwZmUyNDEyZjM0ZDQyYTJmNWZiM2Q4MjY2ZDdmMy5zZXRDb250ZW50KGh0bWxfNzY3ZDU5ZjZmZjRhNDRhYWFlYzJiMThjMzg1M2VmNTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82N2ViZDY2NzZhMzI0ZGIzYmIzOGZhMTQxNDQ3NWU5Yy5iaW5kUG9wdXAocG9wdXBfMGI1MGZlMjQxMmYzNGQ0MmEyZjVmYjNkODI2NmQ3ZjMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzMzNGJkNjhkOTEyNGYxNmJmNGQwNGQ1NjM2Nzg4ZTQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjg1MjgwNjI3NDY1LC0xMjIuNDc1NjQ3NDYwNzg1OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jMzZiYmJkNmYyMGI0MDQzODcwZGM0YmQyNGQ2MWY3MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wMjdlYjRjNTBhNzA0NWI4YjJhM2I1NDc1YTQ3NTQyYyA9ICQoJzxkaXYgaWQ9Imh0bWxfMDI3ZWI0YzUwYTcwNDViOGIyYTNiNTQ3NWE0NzU0MmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2MzNmJiYmQ2ZjIwYjQwNDM4NzBkYzRiZDI0ZDYxZjcyLnNldENvbnRlbnQoaHRtbF8wMjdlYjRjNTBhNzA0NWI4YjJhM2I1NDc1YTQ3NTQyYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzMzMzRiZDY4ZDkxMjRmMTZiZjRkMDRkNTYzNjc4OGU0LmJpbmRQb3B1cChwb3B1cF9jMzZiYmJkNmYyMGI0MDQzODcwZGM0YmQyNGQ2MWY3Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hM2U3Y2Y2NzE2MTk0Y2VjYjY4NGU5N2E4ZGNjNTIwZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0Mjg1MTczNzQ0NDg5NCwtMTIyLjQyMDk2NzQ0MDU2NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2UyYzg3N2ExNDFlMjRmMDZiNTExNWJlODY2NjVlMjU4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YxZjBkNWZlNDk4YzQyMGRhZmVjZDM0NDVjMzk1MDU0ID0gJCgnPGRpdiBpZD0iaHRtbF9mMWYwZDVmZTQ5OGM0MjBkYWZlY2QzNDQ1YzM5NTA1NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UyYzg3N2ExNDFlMjRmMDZiNTExNWJlODY2NjVlMjU4LnNldENvbnRlbnQoaHRtbF9mMWYwZDVmZTQ5OGM0MjBkYWZlY2QzNDQ1YzM5NTA1NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2EzZTdjZjY3MTYxOTRjZWNiNjg0ZTk3YThkY2M1MjBlLmJpbmRQb3B1cChwb3B1cF9lMmM4NzdhMTQxZTI0ZjA2YjUxMTViZTg2NjY1ZTI1OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mYTgxNDVkNjg0MGU0ZGMwODdjZGY3NjRlMTVjYzg1YiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kOTNhMmI3ODFmZmI0YTc4OThmN2RiZDBlZjdhMjUzZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80ZjQ5OTdlN2I2YjM0Y2FkYTljMTlhODllZWYzYTMwNSA9ICQoJzxkaXYgaWQ9Imh0bWxfNGY0OTk3ZTdiNmIzNGNhZGE5YzE5YTg5ZWVmM2EzMDUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDkzYTJiNzgxZmZiNGE3ODk4ZjdkYmQwZWY3YTI1M2Uuc2V0Q29udGVudChodG1sXzRmNDk5N2U3YjZiMzRjYWRhOWMxOWE4OWVlZjNhMzA1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZmE4MTQ1ZDY4NDBlNGRjMDg3Y2RmNzY0ZTE1Y2M4NWIuYmluZFBvcHVwKHBvcHVwX2Q5M2EyYjc4MWZmYjRhNzg5OGY3ZGJkMGVmN2EyNTNlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2FkNjgxMTZkNzhmMzQ3OTI5MTJkNWIxMWQ0ZjE0YTY3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc5MTY3NDIxODk2MywtMTIyLjQwNjM0NjQyNTYzMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RiYjM4M2EwMmVhMTQ3Njg4YjFhYTliYjMwN2I4MmMxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhhZjFkZmViNDc1NzQ5OGZiNTMyMmQ1MjA5NDM2ZDM1ID0gJCgnPGRpdiBpZD0iaHRtbF84YWYxZGZlYjQ3NTc0OThmYjUzMjJkNTIwOTQzNmQzNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGJiMzgzYTAyZWExNDc2ODhiMWFhOWJiMzA3YjgyYzEuc2V0Q29udGVudChodG1sXzhhZjFkZmViNDc1NzQ5OGZiNTMyMmQ1MjA5NDM2ZDM1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYWQ2ODExNmQ3OGYzNDc5MjkxMmQ1YjExZDRmMTRhNjcuYmluZFBvcHVwKHBvcHVwX2RiYjM4M2EwMmVhMTQ3Njg4YjFhYTliYjMwN2I4MmMxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzEyYWU2MjU1YmU0NTRlMmM4YmIzMDM2ZTExMjI4ZWE0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY1NzE4NDM5NTI4MiwtMTIyLjQwOTUyOTkxMzI3OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzYzMjM4MmYwNzQzZDRkZmJhYWZhOTFmODVhNmNkMGFmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFmMTE0MDdjNDU1ODQ1MGY4MDE2OTMwNGE0ODU1YjAwID0gJCgnPGRpdiBpZD0iaHRtbF8xZjExNDA3YzQ1NTg0NTBmODAxNjkzMDRhNDg1NWIwMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjMyMzgyZjA3NDNkNGRmYmFhZmE5MWY4NWE2Y2QwYWYuc2V0Q29udGVudChodG1sXzFmMTE0MDdjNDU1ODQ1MGY4MDE2OTMwNGE0ODU1YjAwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTJhZTYyNTViZTQ1NGUyYzhiYjMwMzZlMTEyMjhlYTQuYmluZFBvcHVwKHBvcHVwXzYzMjM4MmYwNzQzZDRkZmJhYWZhOTFmODVhNmNkMGFmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Q4NTY3NjNjM2E2MzQ5MmI5YmY2MTdlYmFiNDViOGZkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kNWIzMmFjNTUwOGM0OTBmOWRmMGYyNDUwNjA5YTNiNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85N2E3NTkyMzg1MjU0ZGQ2YTIwOGE0NWRiYmI5YTlkNiA9ICQoJzxkaXYgaWQ9Imh0bWxfOTdhNzU5MjM4NTI1NGRkNmEyMDhhNDVkYmJiOWE5ZDYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDViMzJhYzU1MDhjNDkwZjlkZjBmMjQ1MDYwOWEzYjUuc2V0Q29udGVudChodG1sXzk3YTc1OTIzODUyNTRkZDZhMjA4YTQ1ZGJiYjlhOWQ2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDg1Njc2M2MzYTYzNDkyYjliZjYxN2ViYWI0NWI4ZmQuYmluZFBvcHVwKHBvcHVwX2Q1YjMyYWM1NTA4YzQ5MGY5ZGYwZjI0NTA2MDlhM2I1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2I2OWZhNGI2ZWM4NTRkYjE5MDQ0MjU0OWNkMWViMWYyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjIyODMwZTBiYmMxNDBlMmExYzMyYjgwOWNlZTk5ZWMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzkyYjhjMjljNTJhNDI4ZWIyMWJiMjE0OWQ1NjcxMmEgPSAkKCc8ZGl2IGlkPSJodG1sXzc5MmI4YzI5YzUyYTQyOGViMjFiYjIxNDlkNTY3MTJhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjIyODMwZTBiYmMxNDBlMmExYzMyYjgwOWNlZTk5ZWMuc2V0Q29udGVudChodG1sXzc5MmI4YzI5YzUyYTQyOGViMjFiYjIxNDlkNTY3MTJhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYjY5ZmE0YjZlYzg1NGRiMTkwNDQyNTQ5Y2QxZWIxZjIuYmluZFBvcHVwKHBvcHVwXzIyMjgzMGUwYmJjMTQwZTJhMWMzMmI4MDljZWU5OWVjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzkwMjlhMGIxODNiMDQ1NTdiMGFiZTQxNTk5YmM5NGM3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODMxZDY2ZTMxNGY0NDZiOTk1OTRmNWQxMGZhZjFhNTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjk1MjJjZDFiYzRjNDNiOTk3OWJhYmYwYjkwNjU4ZDEgPSAkKCc8ZGl2IGlkPSJodG1sX2I5NTIyY2QxYmM0YzQzYjk5NzliYWJmMGI5MDY1OGQxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODMxZDY2ZTMxNGY0NDZiOTk1OTRmNWQxMGZhZjFhNTguc2V0Q29udGVudChodG1sX2I5NTIyY2QxYmM0YzQzYjk5NzliYWJmMGI5MDY1OGQxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOTAyOWEwYjE4M2IwNDU1N2IwYWJlNDE1OTliYzk0YzcuYmluZFBvcHVwKHBvcHVwXzgzMWQ2NmUzMTRmNDQ2Yjk5NTk0ZjVkMTBmYWYxYTU4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQyNTcwMGY3M2IwYjQ3MjI4M2RlNjg4NmQ1OGEwOGRmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU2MDEwMWM3YWYzMTRhZWE4NGM2NjIyNDVmNmM3YmM5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E3YjdlNmNhZDgwMTQ1YzZhYjU0NjE1YTM0MjkzMTY2ID0gJCgnPGRpdiBpZD0iaHRtbF9hN2I3ZTZjYWQ4MDE0NWM2YWI1NDYxNWEzNDI5MzE2NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU2MDEwMWM3YWYzMTRhZWE4NGM2NjIyNDVmNmM3YmM5LnNldENvbnRlbnQoaHRtbF9hN2I3ZTZjYWQ4MDE0NWM2YWI1NDYxNWEzNDI5MzE2Nik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQyNTcwMGY3M2IwYjQ3MjI4M2RlNjg4NmQ1OGEwOGRmLmJpbmRQb3B1cChwb3B1cF81NjAxMDFjN2FmMzE0YWVhODRjNjYyMjQ1ZjZjN2JjOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hZjdhMTFhZTg2Yjc0ZTNlYTQyYzhhNjhlZTgyYjViNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82NDIwM2JjYzlhZjM0N2JmYWY4OTAyN2Q3MWYzNTA3ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82ZTYxM2ViZGNkYmE0ZmM5OGVmNjRiMTkyM2QyYzM0NSA9ICQoJzxkaXYgaWQ9Imh0bWxfNmU2MTNlYmRjZGJhNGZjOThlZjY0YjE5MjNkMmMzNDUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVUcvTkFSQ09USUM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY0MjAzYmNjOWFmMzQ3YmZhZjg5MDI3ZDcxZjM1MDdkLnNldENvbnRlbnQoaHRtbF82ZTYxM2ViZGNkYmE0ZmM5OGVmNjRiMTkyM2QyYzM0NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2FmN2ExMWFlODZiNzRlM2VhNDJjOGE2OGVlODJiNWI0LmJpbmRQb3B1cChwb3B1cF82NDIwM2JjYzlhZjM0N2JmYWY4OTAyN2Q3MWYzNTA3ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kY2ZiOWYwZjU2OTE0MmNmOTFmYzc5YzE3Njg2NTFkYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NjAxNjAxMTQxMDMsLTEyMi40MDM2NDQ2MjA0MzldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jYzc3ZGM4OWFhYzQ0NDkzYjAzYWRiOTBiODQwZjViZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xY2EyZWQ4MzdiMGU0Njg4YmY3ZTBiNDIyNGQ2ODZmZSA9ICQoJzxkaXYgaWQ9Imh0bWxfMWNhMmVkODM3YjBlNDY4OGJmN2UwYjQyMjRkNjg2ZmUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jYzc3ZGM4OWFhYzQ0NDkzYjAzYWRiOTBiODQwZjViZi5zZXRDb250ZW50KGh0bWxfMWNhMmVkODM3YjBlNDY4OGJmN2UwYjQyMjRkNjg2ZmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kY2ZiOWYwZjU2OTE0MmNmOTFmYzc5YzE3Njg2NTFkYy5iaW5kUG9wdXAocG9wdXBfY2M3N2RjODlhYWM0NDQ5M2IwM2FkYjkwYjg0MGY1YmYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZjUxYWRiZTZiYjcwNDI4MDkyNjU2Mjk2M2MzNWY2ZGIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjYwMTYwMTE0MTAzLC0xMjIuNDAzNjQ0NjIwNDM5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzYyZDJjNzM4ZTJiNGIwMDhiZDczNjM2NzQwMWU5ZGIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGZkZWMzNDFhZWNmNDZkZWFiYzRlMmZiZThlZTQ0NzggPSAkKCc8ZGl2IGlkPSJodG1sX2RmZGVjMzQxYWVjZjQ2ZGVhYmM0ZTJmYmU4ZWU0NDc4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzYyZDJjNzM4ZTJiNGIwMDhiZDczNjM2NzQwMWU5ZGIuc2V0Q29udGVudChodG1sX2RmZGVjMzQxYWVjZjQ2ZGVhYmM0ZTJmYmU4ZWU0NDc4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZjUxYWRiZTZiYjcwNDI4MDkyNjU2Mjk2M2MzNWY2ZGIuYmluZFBvcHVwKHBvcHVwXzM2MmQyYzczOGUyYjRiMDA4YmQ3MzYzNjc0MDFlOWRiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzBlOGJmYzkxZDczMTQwNWU4Yzc1NDRlM2E3MDgzOGEzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGI2ZWQ5NGEyYjYwNDAyZWIxMGE5ZGEyYjE1NjNiODAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDM2MDJhNGM3Y2JlNGJkMGEzMWE2OWIxMWUxYWNiN2UgPSAkKCc8ZGl2IGlkPSJodG1sX2QzNjAyYTRjN2NiZTRiZDBhMzFhNjliMTFlMWFjYjdlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kYjZlZDk0YTJiNjA0MDJlYjEwYTlkYTJiMTU2M2I4MC5zZXRDb250ZW50KGh0bWxfZDM2MDJhNGM3Y2JlNGJkMGEzMWE2OWIxMWUxYWNiN2UpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wZThiZmM5MWQ3MzE0MDVlOGM3NTQ0ZTNhNzA4MzhhMy5iaW5kUG9wdXAocG9wdXBfZGI2ZWQ5NGEyYjYwNDAyZWIxMGE5ZGEyYjE1NjNiODApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzJlOWYyMDJkY2UyNDJkNWI4NmFjYjFmOGUxNmM5MmMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hMTNlZWUwZWViNDk0ODgwODhjYmZkYTNmMjhmYWQyNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MTFjZWViYzg2M2M0MTY5YTFkMDA0ZTA3N2YyYjZhZiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjExY2VlYmM4NjNjNDE2OWExZDAwNGUwNzdmMmI2YWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hMTNlZWUwZWViNDk0ODgwODhjYmZkYTNmMjhmYWQyNy5zZXRDb250ZW50KGh0bWxfNjExY2VlYmM4NjNjNDE2OWExZDAwNGUwNzdmMmI2YWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83MmU5ZjIwMmRjZTI0MmQ1Yjg2YWNiMWY4ZTE2YzkyYy5iaW5kUG9wdXAocG9wdXBfYTEzZWVlMGVlYjQ5NDg4MDg4Y2JmZGEzZjI4ZmFkMjcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjZhMjZhMmIwMjhiNDI5YmE0NDczNGU5NWI5YTZiZGEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzc1MTE4ODk1Njk1LC0xMjIuNDE4MDQ1NDUyNzY4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjJkNmE4MGQzNmY3NGQ2OGEwYTE2ZTg4MzA3NjQ4OWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjU1N2EwYjEwMTM4NGE4MTlhMzEwMzUzODFhZWJiN2QgPSAkKCc8ZGl2IGlkPSJodG1sXzY1NTdhMGIxMDEzODRhODE5YTMxMDM1MzgxYWViYjdkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82MmQ2YTgwZDM2Zjc0ZDY4YTBhMTZlODgzMDc2NDg5ZC5zZXRDb250ZW50KGh0bWxfNjU1N2EwYjEwMTM4NGE4MTlhMzEwMzUzODFhZWJiN2QpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iNmEyNmEyYjAyOGI0MjliYTQ0NzM0ZTk1YjlhNmJkYS5iaW5kUG9wdXAocG9wdXBfNjJkNmE4MGQzNmY3NGQ2OGEwYTE2ZTg4MzA3NjQ4OWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTY5MmUyZjBkNjhkNDcwNzkzZTE5OTRkN2JhMWU4MjggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIwMjM4NDc4OTc1LC0xMjIuNDAxMTYxNTU1NjAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTIwOTQyOWVlZDUzNDUwNDhmYzU3YzdkNGY2OTUzMjMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2U1OGU5MWIyMjk3NGEwOTg4N2NhNjdkY2ZkOGQ2ZTcgPSAkKCc8ZGl2IGlkPSJodG1sXzNlNThlOTFiMjI5NzRhMDk4ODdjYTY3ZGNmZDhkNmU3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTIwOTQyOWVlZDUzNDUwNDhmYzU3YzdkNGY2OTUzMjMuc2V0Q29udGVudChodG1sXzNlNThlOTFiMjI5NzRhMDk4ODdjYTY3ZGNmZDhkNmU3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZTY5MmUyZjBkNjhkNDcwNzkzZTE5OTRkN2JhMWU4MjguYmluZFBvcHVwKHBvcHVwXzkyMDk0MjllZWQ1MzQ1MDQ4ZmM1N2M3ZDRmNjk1MzIzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2RmN2Q1NWM1YjI1OTRjNTZhZDMyY2YyZmUwZDIwNTQ5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI3MDA1MzE5NjI5OTk1LC0xMjIuNDAzNDA4NjY5MTkxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDBjNzkyODA4Y2Q5NGI4NzhjYmY0ZDU5YTgzMzEwMzEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGVmNzY5MzIyZTZlNDlmNGE5YWM4ZjMxNWQ1YTk1N2IgPSAkKCc8ZGl2IGlkPSJodG1sXzBlZjc2OTMyMmU2ZTQ5ZjRhOWFjOGYzMTVkNWE5NTdiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDBjNzkyODA4Y2Q5NGI4NzhjYmY0ZDU5YTgzMzEwMzEuc2V0Q29udGVudChodG1sXzBlZjc2OTMyMmU2ZTQ5ZjRhOWFjOGYzMTVkNWE5NTdiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZGY3ZDU1YzViMjU5NGM1NmFkMzJjZjJmZTBkMjA1NDkuYmluZFBvcHVwKHBvcHVwXzAwYzc5MjgwOGNkOTRiODc4Y2JmNGQ1OWE4MzMxMDMxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2NjNjg5OTIxMzdkNzQxOWM4MzExMjQ3NDE2MTM1YWFhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFhMGZlYzM5MjBkYjQ1MGJhZGIzODhlMGJhOTY5YTJmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQwMTc2NTA4NzQ1ZjRlZmZiZjdmMTRlNDY3MjRlNmFiID0gJCgnPGRpdiBpZD0iaHRtbF80MDE3NjUwODc0NWY0ZWZmYmY3ZjE0ZTQ2NzI0ZTZhYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xYTBmZWMzOTIwZGI0NTBiYWRiMzg4ZTBiYTk2OWEyZi5zZXRDb250ZW50KGh0bWxfNDAxNzY1MDg3NDVmNGVmZmJmN2YxNGU0NjcyNGU2YWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jYzY4OTkyMTM3ZDc0MTljODMxMTI0NzQxNjEzNWFhYS5iaW5kUG9wdXAocG9wdXBfMWEwZmVjMzkyMGRiNDUwYmFkYjM4OGUwYmE5NjlhMmYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTNiYjQ5NGY5YjlmNDBiODkxZjFlYTcwZTQ3MGNlNTEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTMwMTg2NTM3NDQ2MDQsLTEyMi40MTg1ODcxNzIyMTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mMjA5ODlkZGNmN2M0YjM3OGM3MmU3MjcyZGU3MzZlMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xNzQ4ZDhiYmNhMDg0ZjA2YWNkOWIyZThhOTFkMTM4MiA9ICQoJzxkaXYgaWQ9Imh0bWxfMTc0OGQ4YmJjYTA4NGYwNmFjZDliMmU4YTkxZDEzODIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjIwOTg5ZGRjZjdjNGIzNzhjNzJlNzI3MmRlNzM2ZTAuc2V0Q29udGVudChodG1sXzE3NDhkOGJiY2EwODRmMDZhY2Q5YjJlOGE5MWQxMzgyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTNiYjQ5NGY5YjlmNDBiODkxZjFlYTcwZTQ3MGNlNTEuYmluZFBvcHVwKHBvcHVwX2YyMDk4OWRkY2Y3YzRiMzc4YzcyZTcyNzJkZTczNmUwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzVkZTI2ZTE1MjcxODQyMzA4OTJkZDAyZmM3ZDU0NWU2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0MDQxODM4NTA0MSwtMTIyLjQxNDM3MDYyNzQ5NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U5OTgwZWM2YmQ1MjRhMGJhYmRkYzY0MDAwY2JiN2E2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2NjMDM1MDFiNDM1MDRmMGNhZmU2MjI4NGUzZDQzZWYwID0gJCgnPGRpdiBpZD0iaHRtbF9jYzAzNTAxYjQzNTA0ZjBjYWZlNjIyODRlM2Q0M2VmMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RlJBVUQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U5OTgwZWM2YmQ1MjRhMGJhYmRkYzY0MDAwY2JiN2E2LnNldENvbnRlbnQoaHRtbF9jYzAzNTAxYjQzNTA0ZjBjYWZlNjIyODRlM2Q0M2VmMCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzVkZTI2ZTE1MjcxODQyMzA4OTJkZDAyZmM3ZDU0NWU2LmJpbmRQb3B1cChwb3B1cF9lOTk4MGVjNmJkNTI0YTBiYWJkZGM2NDAwMGNiYjdhNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iZTMxYTVhNjQ4YWI0NzhiOTI0MzkzMjBiNTZiY2Q0MyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MDUzODk5MzcyNSwtMTIyLjQwMzkxNTY4MTU3MTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTVjODU0OTcwNjc2NDk4MGI5ZTlkYmYzY2QwMmNlMGIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzY0NThiZjNjMDkzNDQwZGIzZTc5ZWQ4MzQ5NzAwY2IgPSAkKCc8ZGl2IGlkPSJodG1sXzc2NDU4YmYzYzA5MzQ0MGRiM2U3OWVkODM0OTcwMGNiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hNWM4NTQ5NzA2NzY0OTgwYjllOWRiZjNjZDAyY2UwYi5zZXRDb250ZW50KGh0bWxfNzY0NThiZjNjMDkzNDQwZGIzZTc5ZWQ4MzQ5NzAwY2IpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iZTMxYTVhNjQ4YWI0NzhiOTI0MzkzMjBiNTZiY2Q0My5iaW5kUG9wdXAocG9wdXBfYTVjODU0OTcwNjc2NDk4MGI5ZTlkYmYzY2QwMmNlMGIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDBhYTRkZjQ2YTc4NDJlNGFhOWExZDA1YmM3NzNlNTggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODMwOTk4MjQ0NTkyMSwtMTIyLjQxOTE4MzA5NjM2Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y1ZWJiYjU5ZWNlMTQ5NDE4MTc5YTRjZDA4MmViNTBhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQxOWQ1YjM4MWJkNDQ4ZGY5ZDAzNDI3YjNjMmMwYTUzID0gJCgnPGRpdiBpZD0iaHRtbF80MTlkNWIzODFiZDQ0OGRmOWQwMzQyN2IzYzJjMGE1MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y1ZWJiYjU5ZWNlMTQ5NDE4MTc5YTRjZDA4MmViNTBhLnNldENvbnRlbnQoaHRtbF80MTlkNWIzODFiZDQ0OGRmOWQwMzQyN2IzYzJjMGE1Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2QwYWE0ZGY0NmE3ODQyZTRhYTlhMWQwNWJjNzczZTU4LmJpbmRQb3B1cChwb3B1cF9mNWViYmI1OWVjZTE0OTQxODE3OWE0Y2QwODJlYjUwYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mNDEyNDNmYzQ4N2I0Y2NmYmYzZDY0YWUzMzdkY2FlOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzAyZmY2ODUwMTlmNDQ2YWI1OWQ1M2E1YTQwOGEyODkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjBmNDIyNTUwNTE3NDFmNTg0YzVjM2I2MmNkMTA1YTMgPSAkKCc8ZGl2IGlkPSJodG1sX2IwZjQyMjU1MDUxNzQxZjU4NGM1YzNiNjJjZDEwNWEzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzAyZmY2ODUwMTlmNDQ2YWI1OWQ1M2E1YTQwOGEyODkuc2V0Q29udGVudChodG1sX2IwZjQyMjU1MDUxNzQxZjU4NGM1YzNiNjJjZDEwNWEzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZjQxMjQzZmM0ODdiNGNjZmJmM2Q2NGFlMzM3ZGNhZTkuYmluZFBvcHVwKHBvcHVwXzcwMmZmNjg1MDE5ZjQ0NmFiNTlkNTNhNWE0MDhhMjg5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzRlNTljMzUyYWUwODRlMjk5ODZjMTY4ZTJlOWFiNjNmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0OTkxMjk0NDM2NiwtMTIyLjQzNzc5OTcwMzQ2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2IxMDI4MzYzNDUxZDQ3YzE5OGQ1Njc0ZmViNDI1MTcwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI3MDdjOTUxMDMzNTQ0N2ZiMjQ4MDQ1NjA3M2ZhNmRlID0gJCgnPGRpdiBpZD0iaHRtbF8yNzA3Yzk1MTAzMzU0NDdmYjI0ODA0NTYwNzNmYTZkZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjEwMjgzNjM0NTFkNDdjMTk4ZDU2NzRmZWI0MjUxNzAuc2V0Q29udGVudChodG1sXzI3MDdjOTUxMDMzNTQ0N2ZiMjQ4MDQ1NjA3M2ZhNmRlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNGU1OWMzNTJhZTA4NGUyOTk4NmMxNjhlMmU5YWI2M2YuYmluZFBvcHVwKHBvcHVwX2IxMDI4MzYzNDUxZDQ3YzE5OGQ1Njc0ZmViNDI1MTcwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2EzZGFmNWJjNTc0YTRhMGFiYmI0OWQ2MjE1NjlhNTM0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzE3MWFkZTcwZGZkMDQ4NDZiNTc0NGFjMDVjY2I0N2Q5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU4NDc0YTYwNTVkODQ2ZTNhNjQ3ZTc3NzViZmY0M2Q5ID0gJCgnPGRpdiBpZD0iaHRtbF81ODQ3NGE2MDU1ZDg0NmUzYTY0N2U3Nzc1YmZmNDNkOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE3MWFkZTcwZGZkMDQ4NDZiNTc0NGFjMDVjY2I0N2Q5LnNldENvbnRlbnQoaHRtbF81ODQ3NGE2MDU1ZDg0NmUzYTY0N2U3Nzc1YmZmNDNkOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2EzZGFmNWJjNTc0YTRhMGFiYmI0OWQ2MjE1NjlhNTM0LmJpbmRQb3B1cChwb3B1cF8xNzFhZGU3MGRmZDA0ODQ2YjU3NDRhYzA1Y2NiNDdkOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83OGFiYzJkMDMyNGQ0MGFkYjNiZGVmYzA0ZDRiZDFlNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzA5MDI3NDM2NjksLTEyMi40MjEzMzI2ODQ2MzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mNGVmNGQzMGM2YjI0MjY2YWY5Yzg3OGZmNDVhOTY5MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81NjVkNDlmN2RiMTk0YzlkYmNlMDU1MTRhNmVlNjBiYiA9ICQoJzxkaXYgaWQ9Imh0bWxfNTY1ZDQ5ZjdkYjE5NGM5ZGJjZTA1NTE0YTZlZTYwYmIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mNGVmNGQzMGM2YjI0MjY2YWY5Yzg3OGZmNDVhOTY5MS5zZXRDb250ZW50KGh0bWxfNTY1ZDQ5ZjdkYjE5NGM5ZGJjZTA1NTE0YTZlZTYwYmIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83OGFiYzJkMDMyNGQ0MGFkYjNiZGVmYzA0ZDRiZDFlNy5iaW5kUG9wdXAocG9wdXBfZjRlZjRkMzBjNmIyNDI2NmFmOWM4NzhmZjQ1YTk2OTEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTM0ZDcyZTFhZmU1NGVmNDgzZjI0NThmMDVhNmE1ZWEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDI2NGU3MWQ3MDFiNDFmMWE2MDYyYTk4ZTdhYmY0MGUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODVhNTkyNDY3MWZhNGQ2MGJhNzA4ZGU5NTU3MzBhNzEgPSAkKCc8ZGl2IGlkPSJodG1sXzg1YTU5MjQ2NzFmYTRkNjBiYTcwOGRlOTU1NzMwYTcxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDI2NGU3MWQ3MDFiNDFmMWE2MDYyYTk4ZTdhYmY0MGUuc2V0Q29udGVudChodG1sXzg1YTU5MjQ2NzFmYTRkNjBiYTcwOGRlOTU1NzMwYTcxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOTM0ZDcyZTFhZmU1NGVmNDgzZjI0NThmMDVhNmE1ZWEuYmluZFBvcHVwKHBvcHVwX2QyNjRlNzFkNzAxYjQxZjFhNjA2MmE5OGU3YWJmNDBlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA4NDEyMTZkOWU4MjQ4ZGFiNmZlOGM1YmE3NzlhMGUwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwMDM3OTk5NTEyNzk1LC0xMjIuNDA0NTk0MTQwNjM0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2Q4MDA4ZGU5YjFiNGQ4OGJiYWVkMTMxODAxOTViYzQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDJhNDE0Nzk4MzczNDcwYzg2ZWNmOGZlZGExMDFiYWMgPSAkKCc8ZGl2IGlkPSJodG1sXzQyYTQxNDc5ODM3MzQ3MGM4NmVjZjhmZWRhMTAxYmFjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdkODAwOGRlOWIxYjRkODhiYmFlZDEzMTgwMTk1YmM0LnNldENvbnRlbnQoaHRtbF80MmE0MTQ3OTgzNzM0NzBjODZlY2Y4ZmVkYTEwMWJhYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzA4NDEyMTZkOWU4MjQ4ZGFiNmZlOGM1YmE3NzlhMGUwLmJpbmRQb3B1cChwb3B1cF83ZDgwMDhkZTliMWI0ZDg4YmJhZWQxMzE4MDE5NWJjNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xMTQ5MDc4YjVmMjc0OTNiYWI2YTQ1YTIxMjk1NzY2YyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83ZjNjZDNiNWQzYjE0YWZhOGMzYzk2MzE4ZTg5NDcxOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zOGRhMTAwM2Q5NDM0N2JlOWExMDU4ZThlYWI4ZTNkYiA9ICQoJzxkaXYgaWQ9Imh0bWxfMzhkYTEwMDNkOTQzNDdiZTlhMTA1OGU4ZWFiOGUzZGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2YzY2QzYjVkM2IxNGFmYThjM2M5NjMxOGU4OTQ3MTguc2V0Q29udGVudChodG1sXzM4ZGExMDAzZDk0MzQ3YmU5YTEwNThlOGVhYjhlM2RiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTE0OTA3OGI1ZjI3NDkzYmFiNmE0NWEyMTI5NTc2NmMuYmluZFBvcHVwKHBvcHVwXzdmM2NkM2I1ZDNiMTRhZmE4YzNjOTYzMThlODk0NzE4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQ0N2Q3ZWQ1YTI3NzQ3NjY5NzY0OGMzNWIwZjFiYWU4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NTE1ODc0MTYyMjk1LC0xMjIuNDA3NDM0OTg5NTIzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjI5YzU3NGM1ZjQ4NGQ4NGFkOGM4YjNmYjVlOTA5YmYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTIxZTdjYWQ3MjQ5NDU3YjhjODdiZGQ1ZmVlODQwMTEgPSAkKCc8ZGl2IGlkPSJodG1sXzEyMWU3Y2FkNzI0OTQ1N2I4Yzg3YmRkNWZlZTg0MDExIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjI5YzU3NGM1ZjQ4NGQ4NGFkOGM4YjNmYjVlOTA5YmYuc2V0Q29udGVudChodG1sXzEyMWU3Y2FkNzI0OTQ1N2I4Yzg3YmRkNWZlZTg0MDExKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDQ3ZDdlZDVhMjc3NDc2Njk3NjQ4YzM1YjBmMWJhZTguYmluZFBvcHVwKHBvcHVwX2YyOWM1NzRjNWY0ODRkODRhZDhjOGIzZmI1ZTkwOWJmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2U3MGEwMzBjMDlkYTQ5OGJiNzBkMmIzNmEzNzk1NmY4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBhZDZjMDhkZDYyODRmZDliOWE3YTIyNTU5YWUxM2NkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I3ZWJjYWFlYjRhZDQ1YjJhNjg0NmFlM2JmMDMwM2NkID0gJCgnPGRpdiBpZD0iaHRtbF9iN2ViY2FhZWI0YWQ0NWIyYTY4NDZhZTNiZjAzMDNjZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UFJPU1RJVFVUSU9OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wYWQ2YzA4ZGQ2Mjg0ZmQ5YjlhN2EyMjU1OWFlMTNjZC5zZXRDb250ZW50KGh0bWxfYjdlYmNhYWViNGFkNDViMmE2ODQ2YWUzYmYwMzAzY2QpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lNzBhMDMwYzA5ZGE0OThiYjcwZDJiMzZhMzc5NTZmOC5iaW5kUG9wdXAocG9wdXBfMGFkNmMwOGRkNjI4NGZkOWI5YTdhMjI1NTlhZTEzY2QpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmQxODhjM2FhZGRkNGExZjkyYTg2ZjQ5ODMxOTRlMGUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzg1MjMzNzc2MDMyLC0xMjIuNDAzNDY0MDgwMDMzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDAxODkxMTI0NDk1NGJlMTkxYzMwYWVjNWJiOGQ0MjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODM0M2NkYThiYzMxNDJiNjhlZWM1MmQxODIxMmYyZjQgPSAkKCc8ZGl2IGlkPSJodG1sXzgzNDNjZGE4YmMzMTQyYjY4ZWVjNTJkMTgyMTJmMmY0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDAxODkxMTI0NDk1NGJlMTkxYzMwYWVjNWJiOGQ0Mjcuc2V0Q29udGVudChodG1sXzgzNDNjZGE4YmMzMTQyYjY4ZWVjNTJkMTgyMTJmMmY0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMmQxODhjM2FhZGRkNGExZjkyYTg2ZjQ5ODMxOTRlMGUuYmluZFBvcHVwKHBvcHVwXzAwMTg5MTEyNDQ5NTRiZTE5MWMzMGFlYzViYjhkNDI3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2MwMjkxMDVhZTNhMjRhNDc4OTRlMThkMTQ0ZTI2NzM0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lNzg4Y2Q0NWEwZDE0MDcwYTdkNTYwNWQ1ZmUzYWM5NiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jMzk4OWE3OWU5ODI0YTI3OTg0ZjRkM2MwNTI5NjYzMCA9ICQoJzxkaXYgaWQ9Imh0bWxfYzM5ODlhNzllOTgyNGEyNzk4NGY0ZDNjMDUyOTY2MzAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTc4OGNkNDVhMGQxNDA3MGE3ZDU2MDVkNWZlM2FjOTYuc2V0Q29udGVudChodG1sX2MzOTg5YTc5ZTk4MjRhMjc5ODRmNGQzYzA1Mjk2NjMwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYzAyOTEwNWFlM2EyNGE0Nzg5NGUxOGQxNDRlMjY3MzQuYmluZFBvcHVwKHBvcHVwX2U3ODhjZDQ1YTBkMTQwNzBhN2Q1NjA1ZDVmZTNhYzk2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzMwNzAxYzA3YTc2MTQ4NzA5ZGQyMmEwNzY1ZmIwYzAzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83ZmM5NDA4MjU4MGQ0NDlhOTBkZDM3ODc5NjY1NmM3ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yNDE5M2Y5ODdhYjQ0NWYzODIxYzY0NGVlZTlmOGNhZSA9ICQoJzxkaXYgaWQ9Imh0bWxfMjQxOTNmOTg3YWI0NDVmMzgyMWM2NDRlZWU5ZjhjYWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVUcvTkFSQ09USUM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdmYzk0MDgyNTgwZDQ0OWE5MGRkMzc4Nzk2NjU2YzdkLnNldENvbnRlbnQoaHRtbF8yNDE5M2Y5ODdhYjQ0NWYzODIxYzY0NGVlZTlmOGNhZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzMwNzAxYzA3YTc2MTQ4NzA5ZGQyMmEwNzY1ZmIwYzAzLmJpbmRQb3B1cChwb3B1cF83ZmM5NDA4MjU4MGQ0NDlhOTBkZDM3ODc5NjY1NmM3ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kNzc2OWMxYzMzODA0MTJlYjAzOGJjOTRlYjAyMGI4MSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmQ4YjMyZWY1MzUyNDAzMDg2OGQzOTA5NTY5OTU0MzQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmRiZDlhZTAwOWM5NDBkZGJkZTViMWMwMDVhYTlmN2YgPSAkKCc8ZGl2IGlkPSJodG1sX2ZkYmQ5YWUwMDljOTQwZGRiZGU1YjFjMDA1YWE5ZjdmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmQ4YjMyZWY1MzUyNDAzMDg2OGQzOTA5NTY5OTU0MzQuc2V0Q29udGVudChodG1sX2ZkYmQ5YWUwMDljOTQwZGRiZGU1YjFjMDA1YWE5ZjdmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDc3NjljMWMzMzgwNDEyZWIwMzhiYzk0ZWIwMjBiODEuYmluZFBvcHVwKHBvcHVwX2JkOGIzMmVmNTM1MjQwMzA4NjhkMzkwOTU2OTk1NDM0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA2YjA2OWI1Mzg1OTRmZWE4YWVmNTQ0ODg5ODJjMTVlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmNlZGZlM2VhMDliNDgwYWI5MjFlZjBiOTI5NTNiZjAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2ZhZWZjNzVhMmVkNDFmMjkxYjhiMDg0ZWZlOTEzMTIgPSAkKCc8ZGl2IGlkPSJodG1sXzNmYWVmYzc1YTJlZDQxZjI5MWI4YjA4NGVmZTkxMzEyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82Y2VkZmUzZWEwOWI0ODBhYjkyMWVmMGI5Mjk1M2JmMC5zZXRDb250ZW50KGh0bWxfM2ZhZWZjNzVhMmVkNDFmMjkxYjhiMDg0ZWZlOTEzMTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wNmIwNjliNTM4NTk0ZmVhOGFlZjU0NDg4OTgyYzE1ZS5iaW5kUG9wdXAocG9wdXBfNmNlZGZlM2VhMDliNDgwYWI5MjFlZjBiOTI5NTNiZjApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmFiOTYwNGYyMGJiNGY5NmI1NTZjOGFjMzliNjVmMmYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWE1NzBjMTM5MWYxNDA5MzlkYmQzOWU4Yzc5YjM5NjUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTkyYTgxZGFlMDQwNDFlNWJkNTM1OTkxNDc5NzgzNzkgPSAkKCc8ZGl2IGlkPSJodG1sXzk5MmE4MWRhZTA0MDQxZTViZDUzNTk5MTQ3OTc4Mzc5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWE1NzBjMTM5MWYxNDA5MzlkYmQzOWU4Yzc5YjM5NjUuc2V0Q29udGVudChodG1sXzk5MmE4MWRhZTA0MDQxZTViZDUzNTk5MTQ3OTc4Mzc5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMmFiOTYwNGYyMGJiNGY5NmI1NTZjOGFjMzliNjVmMmYuYmluZFBvcHVwKHBvcHVwXzFhNTcwYzEzOTFmMTQwOTM5ZGJkMzllOGM3OWIzOTY1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2U3YmE5NTMwNGY5OTQ3MzU5OTliNGFjMTc3Zjk2N2JiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MDA2NTMyNDM5MjA1LC0xMjIuMzk5ODAyMTQ1Nzk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTE1YjAxNzQ0OTY4NGRlOGEwZWUyYzZmMTIzMTA5ODUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmY1YmMzZjI3MTMzNDgyOThlMzJhOWVjZGE5MjdjMjQgPSAkKCc8ZGl2IGlkPSJodG1sX2ZmNWJjM2YyNzEzMzQ4Mjk4ZTMyYTllY2RhOTI3YzI0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hMTViMDE3NDQ5Njg0ZGU4YTBlZTJjNmYxMjMxMDk4NS5zZXRDb250ZW50KGh0bWxfZmY1YmMzZjI3MTMzNDgyOThlMzJhOWVjZGE5MjdjMjQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lN2JhOTUzMDRmOTk0NzM1OTk5YjRhYzE3N2Y5NjdiYi5iaW5kUG9wdXAocG9wdXBfYTE1YjAxNzQ0OTY4NGRlOGEwZWUyYzZmMTIzMTA5ODUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNGYzMmI4ZDQ2OTJkNGRiMjk3MzIwNDAwZmZjNzYwZjEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2E4ZDVhNWJlNDJjZjQ5YmFiYzBkMjc0OWJkM2E5MmQyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzdlMzYyNDQ3YjA4MzQ0YmViOWYxZTVkODBhYzM4YjM3ID0gJCgnPGRpdiBpZD0iaHRtbF83ZTM2MjQ0N2IwODM0NGJlYjlmMWU1ZDgwYWMzOGIzNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hOGQ1YTViZTQyY2Y0OWJhYmMwZDI3NDliZDNhOTJkMi5zZXRDb250ZW50KGh0bWxfN2UzNjI0NDdiMDgzNDRiZWI5ZjFlNWQ4MGFjMzhiMzcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80ZjMyYjhkNDY5MmQ0ZGIyOTczMjA0MDBmZmM3NjBmMS5iaW5kUG9wdXAocG9wdXBfYThkNWE1YmU0MmNmNDliYWJjMGQyNzQ5YmQzYTkyZDIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzU2NzA5NDNhMTcyNDcxNTgwZDNiYzFlNmRkNzhjZWIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMzODE1OWJiZmExNTQ1MzU4Y2M0Y2IzYmM4NDU1NGJmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I2YmI0MGRjOGUwMzQ2Y2E4ZjgwY2UyZjJmZGUzNjE5ID0gJCgnPGRpdiBpZD0iaHRtbF9iNmJiNDBkYzhlMDM0NmNhOGY4MGNlMmYyZmRlMzYxOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1VTUElDSU9VUyBPQ0M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMzODE1OWJiZmExNTQ1MzU4Y2M0Y2IzYmM4NDU1NGJmLnNldENvbnRlbnQoaHRtbF9iNmJiNDBkYzhlMDM0NmNhOGY4MGNlMmYyZmRlMzYxOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzM1NjcwOTQzYTE3MjQ3MTU4MGQzYmMxZTZkZDc4Y2ViLmJpbmRQb3B1cChwb3B1cF8zMzgxNTliYmZhMTU0NTM1OGNjNGNiM2JjODQ1NTRiZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80ZWI1YWY5NDVhNjE0ZTFjODc2NTUwYjEzNmM0MDgwZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjcwYWQxYjM2MWU5NDk4Y2E3OWU3MzAxYjZjZGIzZWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODlkMjEwMTA1NDI0NGY2NGJhYzIyZDQ2OThjODMyOTcgPSAkKCc8ZGl2IGlkPSJodG1sXzg5ZDIxMDEwNTQyNDRmNjRiYWMyMmQ0Njk4YzgzMjk3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjcwYWQxYjM2MWU5NDk4Y2E3OWU3MzAxYjZjZGIzZWUuc2V0Q29udGVudChodG1sXzg5ZDIxMDEwNTQyNDRmNjRiYWMyMmQ0Njk4YzgzMjk3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNGViNWFmOTQ1YTYxNGUxYzg3NjU1MGIxMzZjNDA4MGYuYmluZFBvcHVwKHBvcHVwX2I3MGFkMWIzNjFlOTQ5OGNhNzllNzMwMWI2Y2RiM2VlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA0YzhiZDZiNzg5YjRmNTliYmVjMjQ5Y2ViMGI3YmUwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MzIzNTQ0OTkwNCwtMTIyLjQxMTg1NzAzMjU0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNGRhMmU1MmJjYTEwNDQ4NjkyZGQzYmIyMWI5MmMzNzcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjdlMmI0NTIxZDY5NDI4NzgyMjhhN2Y4OTIzZmI1Y2EgPSAkKCc8ZGl2IGlkPSJodG1sXzY3ZTJiNDUyMWQ2OTQyODc4MjI4YTdmODkyM2ZiNWNhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80ZGEyZTUyYmNhMTA0NDg2OTJkZDNiYjIxYjkyYzM3Ny5zZXRDb250ZW50KGh0bWxfNjdlMmI0NTIxZDY5NDI4NzgyMjhhN2Y4OTIzZmI1Y2EpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wNGM4YmQ2Yjc4OWI0ZjU5YmJlYzI0OWNlYjBiN2JlMC5iaW5kUG9wdXAocG9wdXBfNGRhMmU1MmJjYTEwNDQ4NjkyZGQzYmIyMWI5MmMzNzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTQ4NTQzM2YyNjFmNDMzNThkZWFjMzE3ODY1Y2U0MmYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTU5OTc3MzM5ODU2LC0xMjIuNDA5NDM1NjE3MTA2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzEyMzY3ZmFiOTVmNDkzZTk5NTNjM2EzMTkyOTVhZDMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDVmOGMyNTcyNmRmNDlkY2I3ZGJmY2VmMjA2MzkyOGUgPSAkKCc8ZGl2IGlkPSJodG1sXzQ1ZjhjMjU3MjZkZjQ5ZGNiN2RiZmNlZjIwNjM5MjhlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzEyMzY3ZmFiOTVmNDkzZTk5NTNjM2EzMTkyOTVhZDMuc2V0Q29udGVudChodG1sXzQ1ZjhjMjU3MjZkZjQ5ZGNiN2RiZmNlZjIwNjM5MjhlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTQ4NTQzM2YyNjFmNDMzNThkZWFjMzE3ODY1Y2U0MmYuYmluZFBvcHVwKHBvcHVwXzcxMjM2N2ZhYjk1ZjQ5M2U5OTUzYzNhMzE5Mjk1YWQzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzg1ZDUxNjEwODJlYTQxY2RhZDFlYTZjNDJlZjdiOTg5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2IxYjViNzVlYWI0MjQ1YjM4ZmMxN2U4NzIyYWVhYzc3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzY5YzYzNzA2NmVmZDQ1YTZiYTg2Mzc0NDc4ZTFmODNiID0gJCgnPGRpdiBpZD0iaHRtbF82OWM2MzcwNjZlZmQ0NWE2YmE4NjM3NDQ3OGUxZjgzYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iMWI1Yjc1ZWFiNDI0NWIzOGZjMTdlODcyMmFlYWM3Ny5zZXRDb250ZW50KGh0bWxfNjljNjM3MDY2ZWZkNDVhNmJhODYzNzQ0NzhlMWY4M2IpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84NWQ1MTYxMDgyZWE0MWNkYWQxZWE2YzQyZWY3Yjk4OS5iaW5kUG9wdXAocG9wdXBfYjFiNWI3NWVhYjQyNDViMzhmYzE3ZTg3MjJhZWFjNzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYWI0YTYzODI1MzIzNDNmNWJmMjAyMjg1OTg1ODU0NWYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzYwMzc0NDY2ODYyMDQsLTEyMi40MTUxMjY1NDMwMDEwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzVlMjRhYzE0NWEzZDQwODA5NTRmMTJmMjQ0Y2IxZjIwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzBkNTg5MDY3OWM1ZjQzNjU5OTA3Yjk1ZjQwMmMzY2JiID0gJCgnPGRpdiBpZD0iaHRtbF8wZDU4OTA2NzljNWY0MzY1OTkwN2I5NWY0MDJjM2NiYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81ZTI0YWMxNDVhM2Q0MDgwOTU0ZjEyZjI0NGNiMWYyMC5zZXRDb250ZW50KGh0bWxfMGQ1ODkwNjc5YzVmNDM2NTk5MDdiOTVmNDAyYzNjYmIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hYjRhNjM4MjUzMjM0M2Y1YmYyMDIyODU5ODU4NTQ1Zi5iaW5kUG9wdXAocG9wdXBfNWUyNGFjMTQ1YTNkNDA4MDk1NGYxMmYyNDRjYjFmMjApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmNjNmY3ZDRlMzY2NGY4NWFkNDVjZjNiZWRhNTBhZjUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTI3Njc4ODQ4MjEsLTEyMi40MzE5MjgwMTEwODldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mNzc1Yzk1OWUxMTE0ZDU0YjM4YzE2OWZhYTNhY2UwNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hNTg1ZGM5YTYwZjI0MmUzYmYxZGQ0ZTlhZTVmNDViMiA9ICQoJzxkaXYgaWQ9Imh0bWxfYTU4NWRjOWE2MGYyNDJlM2JmMWRkNGU5YWU1ZjQ1YjIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mNzc1Yzk1OWUxMTE0ZDU0YjM4YzE2OWZhYTNhY2UwNS5zZXRDb250ZW50KGh0bWxfYTU4NWRjOWE2MGYyNDJlM2JmMWRkNGU5YWU1ZjQ1YjIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iY2M2ZjdkNGUzNjY0Zjg1YWQ0NWNmM2JlZGE1MGFmNS5iaW5kUG9wdXAocG9wdXBfZjc3NWM5NTllMTExNGQ1NGIzOGMxNjlmYWEzYWNlMDUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzFjMjlhZWZmODI5NDU0OWI1ZmY3OTA1ODdhMmNhMDIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODk1NzEwMjU1ODYzLC0xMjIuNDAyMTYzNzEzNjE4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTRhYzcxZGY0ZWI1NDJhNTlmYjY0ZWMxMTI3NGY5ODAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDQ1ZTNkYjI5NzJjNDM5MTgxMjlhMTI0ZTBmYmJiODUgPSAkKCc8ZGl2IGlkPSJodG1sX2Q0NWUzZGIyOTcyYzQzOTE4MTI5YTEyNGUwZmJiYjg1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVOS0VOTkVTUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTRhYzcxZGY0ZWI1NDJhNTlmYjY0ZWMxMTI3NGY5ODAuc2V0Q29udGVudChodG1sX2Q0NWUzZGIyOTcyYzQzOTE4MTI5YTEyNGUwZmJiYjg1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYzFjMjlhZWZmODI5NDU0OWI1ZmY3OTA1ODdhMmNhMDIuYmluZFBvcHVwKHBvcHVwXzE0YWM3MWRmNGViNTQyYTU5ZmI2NGVjMTEyNzRmOTgwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzMzNjhhNTQ3MGFkZjRjNDQ4ZTcwZDdiNTQ1MGE4NjBiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2IxNjI5ZTUyODdkOTQ2NjY5NjNiMWE5Mjc3NmU2YmZhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U3OWVmMDlkOWQxZjQyNjE5NDE1YmQ5MWI2MzQwMGNhID0gJCgnPGRpdiBpZD0iaHRtbF9lNzllZjA5ZDlkMWY0MjYxOTQxNWJkOTFiNjM0MDBjYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2IxNjI5ZTUyODdkOTQ2NjY5NjNiMWE5Mjc3NmU2YmZhLnNldENvbnRlbnQoaHRtbF9lNzllZjA5ZDlkMWY0MjYxOTQxNWJkOTFiNjM0MDBjYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzMzNjhhNTQ3MGFkZjRjNDQ4ZTcwZDdiNTQ1MGE4NjBiLmJpbmRQb3B1cChwb3B1cF9iMTYyOWU1Mjg3ZDk0NjY2OTYzYjFhOTI3NzZlNmJmYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iZTZjOWQyNzc1NzE0NGJiOGRiNTZhMDNlNzdmMGQ0NCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNjU1NjUzNDc5NCwtMTIyLjQxMzc5MDk3Mjc4MDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYWE4MDUyYWQ5YzZmNGY5NDg1MmIwZmVmOWIyYzNkZmEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDM4MDE1NjQ5MTI1NDcyYTk4MjJmZjVkOTE4YWNkNjYgPSAkKCc8ZGl2IGlkPSJodG1sXzAzODAxNTY0OTEyNTQ3MmE5ODIyZmY1ZDkxOGFjZDY2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WQU5EQUxJU008L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FhODA1MmFkOWM2ZjRmOTQ4NTJiMGZlZjliMmMzZGZhLnNldENvbnRlbnQoaHRtbF8wMzgwMTU2NDkxMjU0NzJhOTgyMmZmNWQ5MThhY2Q2Nik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2JlNmM5ZDI3NzU3MTQ0YmI4ZGI1NmEwM2U3N2YwZDQ0LmJpbmRQb3B1cChwb3B1cF9hYTgwNTJhZDljNmY0Zjk0ODUyYjBmZWY5YjJjM2RmYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84N2MxZjcxY2UzYWI0ZmZiOGI2ZTQzNzVlY2QyOWYyYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82NTk4YTRjNzZkODg0YTc5OWVhNDBjN2EzNjI0ZTdlMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kZDBiYWNhZWNjNDE0NWQyOWQyNjM1YWE2NDNlMzQwNCA9ICQoJzxkaXYgaWQ9Imh0bWxfZGQwYmFjYWVjYzQxNDVkMjlkMjYzNWFhNjQzZTM0MDQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82NTk4YTRjNzZkODg0YTc5OWVhNDBjN2EzNjI0ZTdlMS5zZXRDb250ZW50KGh0bWxfZGQwYmFjYWVjYzQxNDVkMjlkMjYzNWFhNjQzZTM0MDQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84N2MxZjcxY2UzYWI0ZmZiOGI2ZTQzNzVlY2QyOWYyYS5iaW5kUG9wdXAocG9wdXBfNjU5OGE0Yzc2ZDg4NGE3OTllYTQwYzdhMzYyNGU3ZTEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzQxZjhjYzFkZmNiNDZlZGFjNGRjMDYxMmUwMjEwMWQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzczNjIzNjA1MjEyOTYsLTEyMi40MjIwNjcxODQ5MzddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zNDExYjg0NTM5YTc0ZjU2OWIxM2IyODc2OGJiZjBlNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zMzRiMzE5ZTAzNWU0MmYwYTU1NDNhNjA0NzA4ZDY4ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfMzM0YjMxOWUwMzVlNDJmMGE1NTQzYTYwNDcwOGQ2OGUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzQxMWI4NDUzOWE3NGY1NjliMTNiMjg3NjhiYmYwZTUuc2V0Q29udGVudChodG1sXzMzNGIzMTllMDM1ZTQyZjBhNTU0M2E2MDQ3MDhkNjhlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNzQxZjhjYzFkZmNiNDZlZGFjNGRjMDYxMmUwMjEwMWQuYmluZFBvcHVwKHBvcHVwXzM0MTFiODQ1MzlhNzRmNTY5YjEzYjI4NzY4YmJmMGU1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzU3MTZiZWZiZDJlMDRiZmRiZGMyYjk5YTZhMmRjZDNiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWQ5ZjEwZDRjMjQ4NDhkZGEzODJiMDIzNjEwOWVkOGYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmI2YmFlMWIzZjJhNGViYjg2OTNiNDM2OGZiMWQ3OTIgPSAkKCc8ZGl2IGlkPSJodG1sXzJiNmJhZTFiM2YyYTRlYmI4NjkzYjQzNjhmYjFkNzkyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WQU5EQUxJU008L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFkOWYxMGQ0YzI0ODQ4ZGRhMzgyYjAyMzYxMDllZDhmLnNldENvbnRlbnQoaHRtbF8yYjZiYWUxYjNmMmE0ZWJiODY5M2I0MzY4ZmIxZDc5Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzU3MTZiZWZiZDJlMDRiZmRiZGMyYjk5YTZhMmRjZDNiLmJpbmRQb3B1cChwb3B1cF8xZDlmMTBkNGMyNDg0OGRkYTM4MmIwMjM2MTA5ZWQ4Zik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yZTRkNWU1NTFlNDA0N2MzOTM2ODBkMGRiOGJjMTZjOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTk5ODgzMjM3OTc5NiwtMTIyLjQxMTc0NzM3MTkyNF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY0NzZkOGExZmFhYzQxZWE4MmZmMTUyM2Q0MDRjM2QyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzUzYjIyZDUxMjNkYTQwZjJhNDhlZTcwY2ZjNGNlOWUxID0gJCgnPGRpdiBpZD0iaHRtbF81M2IyMmQ1MTIzZGE0MGYyYTQ4ZWU3MGNmYzRjZTllMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1VTUElDSU9VUyBPQ0M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY0NzZkOGExZmFhYzQxZWE4MmZmMTUyM2Q0MDRjM2QyLnNldENvbnRlbnQoaHRtbF81M2IyMmQ1MTIzZGE0MGYyYTQ4ZWU3MGNmYzRjZTllMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzJlNGQ1ZTU1MWU0MDQ3YzM5MzY4MGQwZGI4YmMxNmM4LmJpbmRQb3B1cChwb3B1cF82NDc2ZDhhMWZhYWM0MWVhODJmZjE1MjNkNDA0YzNkMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yZTA0NzFlMmVmYzE0MDdjOGQ3ZWQyYjlkYjIyMGFhMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdkN2Q1ZmExYjMzZjQ0NTc4NTExNTBjMWM5NWViMGY1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzA3NzJkZDRiZWFkODQ5YjY4ZDBlNWQ4YzQ5MjAzMzg5ID0gJCgnPGRpdiBpZD0iaHRtbF8wNzcyZGQ0YmVhZDg0OWI2OGQwZTVkOGM0OTIwMzM4OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdkN2Q1ZmExYjMzZjQ0NTc4NTExNTBjMWM5NWViMGY1LnNldENvbnRlbnQoaHRtbF8wNzcyZGQ0YmVhZDg0OWI2OGQwZTVkOGM0OTIwMzM4OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzJlMDQ3MWUyZWZjMTQwN2M4ZDdlZDJiOWRiMjIwYWExLmJpbmRQb3B1cChwb3B1cF83ZDdkNWZhMWIzM2Y0NDU3ODUxMTUwYzFjOTVlYjBmNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81Y2RkNzYwMzVkYWM0NTc0OGM0ZTcwOGY3NWI4OGI0ZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTAyMjY2MjI3ODYsLTEyMi40MTE5ODc2NDM1OTUwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM0N2IyNTdjMmQ3OTQ2Mjc5Y2E5Njg0YTU0ZGVjOWNjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM3YTRiZTc3ZjViZTQxZWVhMjQ5OWRhZGU4ZThhM2Y5ID0gJCgnPGRpdiBpZD0iaHRtbF8zN2E0YmU3N2Y1YmU0MWVlYTI0OTlkYWRlOGU4YTNmOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zNDdiMjU3YzJkNzk0NjI3OWNhOTY4NGE1NGRlYzljYy5zZXRDb250ZW50KGh0bWxfMzdhNGJlNzdmNWJlNDFlZWEyNDk5ZGFkZThlOGEzZjkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81Y2RkNzYwMzVkYWM0NTc0OGM0ZTcwOGY3NWI4OGI0ZC5iaW5kUG9wdXAocG9wdXBfMzQ3YjI1N2MyZDc5NDYyNzljYTk2ODRhNTRkZWM5Y2MpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTYzMzMyNTg1N2ZhNGFjMjlmNTVhNjI5OWMyMTU5NjMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xNmZjZWFjOWNlNmQ0MTg0OWM0YjhmYmQ0MTg3MDI3NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80N2U1NTJkZDQzNmQ0ZmExOTc3MjE0YzRkMmIyNTQxMyA9ICQoJzxkaXYgaWQ9Imh0bWxfNDdlNTUyZGQ0MzZkNGZhMTk3NzIxNGM0ZDJiMjU0MTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xNmZjZWFjOWNlNmQ0MTg0OWM0YjhmYmQ0MTg3MDI3NS5zZXRDb250ZW50KGh0bWxfNDdlNTUyZGQ0MzZkNGZhMTk3NzIxNGM0ZDJiMjU0MTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81NjMzMzI1ODU3ZmE0YWMyOWY1NWE2Mjk5YzIxNTk2My5iaW5kUG9wdXAocG9wdXBfMTZmY2VhYzljZTZkNDE4NDljNGI4ZmJkNDE4NzAyNzUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTcwM2I3OWVkZjc4NDQzNzg5NWNkOWM2MGE1NmEzYzAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzUxOTE4MjY3MjE3LC0xMjIuNDY2NTU4NzgwNjgzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjRkYmIzMjU2MzUzNGQ3YzhmODdkNDZkYWVhOTEzYjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDYzOTQwMGUwMGI5NDc4YzlkMzZhZDZiODdjOWM1NjEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDQ0NDhmNjk5MDhkNDMzMjhjMDU5OTNmMzJhNzY0MGYgPSAkKCc8ZGl2IGlkPSJodG1sX2Q0NDQ4ZjY5OTA4ZDQzMzI4YzA1OTkzZjMyYTc2NDBmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kNjM5NDAwZTAwYjk0NzhjOWQzNmFkNmI4N2M5YzU2MS5zZXRDb250ZW50KGh0bWxfZDQ0NDhmNjk5MDhkNDMzMjhjMDU5OTNmMzJhNzY0MGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lNzAzYjc5ZWRmNzg0NDM3ODk1Y2Q5YzYwYTU2YTNjMC5iaW5kUG9wdXAocG9wdXBfZDYzOTQwMGUwMGI5NDc4YzlkMzZhZDZiODdjOWM1NjEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTc2OTY5NzFiNWM4NDJhNmE5MjU0OTkxZmY1NzYyYWQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkwODQxNzI5MDI4LC0xMjIuNDg2OTI1OTYwMTE0MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82YWViYTNhYmQzNzc0MWQwYjAwYWQ3OTdmZGYxNzk5ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80MTZlYTc5YWY4OTM0NGU3OTdiNGNjZDc5OTQxZmJjNSA9ICQoJzxkaXYgaWQ9Imh0bWxfNDE2ZWE3OWFmODkzNDRlNzk3YjRjY2Q3OTk0MWZiYzUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82YWViYTNhYmQzNzc0MWQwYjAwYWQ3OTdmZGYxNzk5ZS5zZXRDb250ZW50KGh0bWxfNDE2ZWE3OWFmODkzNDRlNzk3YjRjY2Q3OTk0MWZiYzUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81NzY5Njk3MWI1Yzg0MmE2YTkyNTQ5OTFmZjU3NjJhZC5iaW5kUG9wdXAocG9wdXBfNmFlYmEzYWJkMzc3NDFkMGIwMGFkNzk3ZmRmMTc5OWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZGFmNTJlNmI3ZjI5NDg5NWE2ZDIzOGU3YTllZTY3YjcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njg1MzYwMTIzNTgzLC0xMjIuNDE1NjE2MzM4MzE5OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83OTZlOTUxZDdiZWQ0MDk3YjkzYTBiMmY2YTdkOGQ4MyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80N2I1Yzg1NTZlNTk0NGFlOWEwN2YxNTk2YzUxYmViOCA9ICQoJzxkaXYgaWQ9Imh0bWxfNDdiNWM4NTU2ZTU5NDRhZTlhMDdmMTU5NmM1MWJlYjgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzk2ZTk1MWQ3YmVkNDA5N2I5M2EwYjJmNmE3ZDhkODMuc2V0Q29udGVudChodG1sXzQ3YjVjODU1NmU1OTQ0YWU5YTA3ZjE1OTZjNTFiZWI4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZGFmNTJlNmI3ZjI5NDg5NWE2ZDIzOGU3YTllZTY3YjcuYmluZFBvcHVwKHBvcHVwXzc5NmU5NTFkN2JlZDQwOTdiOTNhMGIyZjZhN2Q4ZDgzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzViMmQyYTlhNjY2NTRlOWNiY2Q1OThkOGVmNDM1MDhjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDI5NzcxNDA3NCwtMTIyLjQ0OTc1MTY1MjU2M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkzMWU2YThjMDdiNzQ0NmNiOGFjMDliM2E5MmM0ZjlkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ2NzYxMTg5NGIxODRmN2FhMmU1YzY0NTUyN2Q4MDIzID0gJCgnPGRpdiBpZD0iaHRtbF80Njc2MTE4OTRiMTg0ZjdhYTJlNWM2NDU1MjdkODAyMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzkzMWU2YThjMDdiNzQ0NmNiOGFjMDliM2E5MmM0ZjlkLnNldENvbnRlbnQoaHRtbF80Njc2MTE4OTRiMTg0ZjdhYTJlNWM2NDU1MjdkODAyMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzViMmQyYTlhNjY2NTRlOWNiY2Q1OThkOGVmNDM1MDhjLmJpbmRQb3B1cChwb3B1cF85MzFlNmE4YzA3Yjc0NDZjYjhhYzA5YjNhOTJjNGY5ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83ZWQwMjJiODUyM2U0NDhiYjZhNWVkNDExZWZkMmYxYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84Yjg4ZDg4NzAxNDM0MDcxYWI2MmEzNmM4MDE5YjZjNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lMmNlZWZmMTQ4OGQ0YjIxOWRmMzU1MzE1N2ZkN2YyYiA9ICQoJzxkaXYgaWQ9Imh0bWxfZTJjZWVmZjE0ODhkNGIyMTlkZjM1NTMxNTdmZDdmMmIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhiODhkODg3MDE0MzQwNzFhYjYyYTM2YzgwMTliNmM2LnNldENvbnRlbnQoaHRtbF9lMmNlZWZmMTQ4OGQ0YjIxOWRmMzU1MzE1N2ZkN2YyYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzdlZDAyMmI4NTIzZTQ0OGJiNmE1ZWQ0MTFlZmQyZjFiLmJpbmRQb3B1cChwb3B1cF84Yjg4ZDg4NzAxNDM0MDcxYWI2MmEzNmM4MDE5YjZjNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80NDQwZjgxNjA2ZWI0ZjI3OTUwYTRkMGI3MjQwM2VkNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTI2ODE0NjkwODM5NiwtMTIyLjQ3MjcxNTc1OTYzMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2I0ZGJiMzI1NjM1MzRkN2M4Zjg3ZDQ2ZGFlYTkxM2I1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzgxNDVkY2Y4ZjU1MTQ4ZDBiNGRlN2MwOWI5YzIxYmQ1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM1NTQ2ZThjNDhhOTQyNGQ4OGIyMWRmNjU2YzEzZmY2ID0gJCgnPGRpdiBpZD0iaHRtbF8zNTU0NmU4YzQ4YTk0MjRkODhiMjFkZjY1NmMxM2ZmNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODE0NWRjZjhmNTUxNDhkMGI0ZGU3YzA5YjljMjFiZDUuc2V0Q29udGVudChodG1sXzM1NTQ2ZThjNDhhOTQyNGQ4OGIyMWRmNjU2YzEzZmY2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDQ0MGY4MTYwNmViNGYyNzk1MGE0ZDBiNzI0MDNlZDQuYmluZFBvcHVwKHBvcHVwXzgxNDVkY2Y4ZjU1MTQ4ZDBiNGRlN2MwOWI5YzIxYmQ1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9iNGRiYjMyNTYzNTM0ZDdjOGY4N2Q0NmRhZWE5MTNiNSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjZiY2IxOGJkOTk3NDkwZTg3YTRlY2JjMWYxNmFkMGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZjZDFkYjY1ODBjNDQyZjA4YTAwMDk3YWU1ZDcyYTBjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80Y2YwMTM4MTg4YWE0MjcwOGE3OTBhODVmZDg0NWUzZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRkYjIzNjZhNDUwYTQ1YTFiYjIzNzM5N2YzNmQ3MjlmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82M2E5ODQzYmJmOGI0NmUwODNmNDdjZmY4Y2Y4ZjYyMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNDhlNDhmOTQ4ZTc0MDgwOTgxNzZhNmQyYmFlZjI2MyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzhjZTFiZjAyZWIyNGEwYTlkM2IzZjJmNTc2OGY4MWYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWFjYTY3ZWYxZDYyNDdhNzlkNWYyZWFmMTYwMGFkMzYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMmFkMzQ3ZGM1M2UwNGU1ZWI2OTI3OGEzNDUwM2JkNmYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lOTBjMmY0OTQ2Nzk0MjhiYThlNTYxOTQyYTZmN2M1ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xMTFhMGI5YjkyYzA0M2YxOWEzOWY2NzE0MmE5MzM0NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTkxODYwNWQ4YzEwNGY4NmFkZDlmODc0MjI0NzQ0NDkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iMjJiNjBhMTQ3MmY0ZjA4OTRhMWU2MjBhZWJlMjJjOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDc5MGExZmUzNDdkNDRhZDgwMTQ2M2Y4ODk3YmUxZDYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTI1NGZiMzY3MjRiNDc3MjhjNmU4ZjMwOTM1YjZhZmYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FmN2U5ZmI1NDNmNzRkOWVhYTUyMDdhMDA4ODg0MDFjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM2NTdhZmZjM2FmNjRmMzlhMTE3OTIwN2NmMmFmMzkxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmQ2YmRhMGNjYWUzNGVhMjllOGM0OWE0ZWQxNWIxMTMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85OTVkMGYxMTUyZTA0YjE1YTdlMmNlZjY0MzVmNDg2OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY2MjU1MjUzMzM1NTQxNDhiOWI1YTdlZjQzMTQ4ZWI0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JjOGViNmY4YzcwZTRhZTRhODM1YmI5NGM1NTBmNTQ1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTkxYmFlNzU4OGVkNGIzNWExZDg1ZGJiZDgyM2ZiMzUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2YyMTFjZmVmZmMzZTQzZGNiYWYzOGI3YzAzYTYzYWMwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80YjcyN2U3MjcxOTM0OTU2YWQ4MzU2OTE5ZDliMGRhOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjE5MWFiOGIxMmExNDBkOGJiMGVmODY0MzQ2NzhmNGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jZDAzZDFkODM0ZjA0MzVkOTJmZGUwMjAyODE4Zjg2YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWJiNmQzYjFhZjgxNDJjYzg3MTIwYzYyYmE1MDJhNTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDk3ODA4OGFiMjJiNGZjMDk1MzZjN2ZhYjhhYjk1YTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTMxNDhkMWM3MjA3NGFlNjgyNGMxYzI3NTliMzgyMDggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81ZjNhYmNiMzhlMTI0OTNlYTFlOTgzZTEyMzc3YmJmMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNGE4ZmMzOWI0OTQ0ZTdiODlhY2IzYzRkZDA4YmZlYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q4MzU5ZWUyNzk4OTQ0ZGY4NTE0NjAyNWZhNTdlYzVhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2UxNWNlYTFlOTQ1YjQ5M2Q5YjExOTQ2Y2I5YzI1MTg1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhjOTVhZjA4M2ZlNjRkMmFhYTQyYjNhZmJiODMwYzdlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJhODY4OTMxZDdjNTQ5YTlhOTY5YWNkOWE3YjgzYmQ0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYWNjNTQ0ZmY0YzkwNGMyZGFjZTE2OThmNzg3ZDc3NTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lMWM4MDgzNTk5OWM0YmYzYjk3OTNjN2M5MGVhNDA4NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NiZjYwNjBlYmExYzQwZGI5ZDBmNWUzMWYwNGFlOWYwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYwZDY5YjlmNmNhODQyODlhNGQ5NGE1ZjQwY2MwOGIyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDZlZDNlMzRkODRhNDA5NmJiZmY1MjI2MjUzOTcxOGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iZjdjODFlNDgwYjQ0NTc2YjMyYjZmMzlhNzVmMmMyMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80NGNkMmI3MjA5NzE0M2MyOGJhYzQ4ZDRlNjI2YTUwMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81OTUwMjM1ZWVmZTM0YTU2OTJlNThlNjY1N2Y5NmU0NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMzU3Nzg0NjVmMjI0Y2M0YmJhOTFhY2EzNWRlYTY2OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTQzYTQ2YWUzNDAyNDQ2ZDhlM2UwMWMxYzNmMDI5Y2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNDMwYjliNmI4Zjg0MjFjYTc1MmQ0NGVmNjdiZjM1NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIzNDFmMjkwNWMwYzRmYzk5ZDYwZTJiYTY0ZDQwY2RjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUzYjZjZjFmY2MwODQ4NTRhYmUwY2YxMjlhNTM4ZTEzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2YzM2QxZmJjNDNlYTQ0MmZhY2I3MzhhZDMyMGQ4YTVlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk4NDRhOGRmN2M1NDRhMmM5ODQ0YjliYWJmMGFiNmUxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIyMjZiOTdkODYzYjQ2YThiZTc2OWMzMWQ1NWViM2U3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjA5OTc0OTcxOGNlNGZmNWFlNDI5ZWNkY2QyMmM2ZGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85MWNiNDAyNjU0ZGY0NDQxYWI2NDFlNWRiOGYyNjA5OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82ZTg1Y2Q4Y2Y5N2M0YjIzOWVjNTU5YzQ2YjUzNjI5OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lYzI3ZWJhNDJjYTY0NzI1YjBjZTRmNjQ2MGYwMDQ1NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY1YTU0MWYzNTU0OTQzZGE5ZjBlYjQ3NDE4Yjc3MzY1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU4NmE5NDUxMzQ3YzQ0ODhiY2YzZDcwMmRkMTExOTYwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjQxMTc3NDg3YjI1NGI2OWE5N2Q5YTA1NDQ2NDk0ZmQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTM5YzNhNWQ1ODBjNDNhN2I2NTFjZmM4M2Q0YTY1ZDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2UwOGM5ZWQ1ZGQwMDQwZmNhOTUwNGM2NGM1YjJjZjdlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kOWZmOTQ3MTkzMmQ0YjE2ODA4NTdiYThiMjU5NDNkYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzNhYmIyNmQzOTNkNDdhMDlkMzkwNGFmYWNhY2UwZjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWZlNmY4OTU0N2Q1NDZiMTg1Zjc0ZTQ3NTA1M2Q1MzYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDYyM2M5NTNhMWM4NDM5YTgwOTk1OTFmMzZhZjQxNzkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYWUwZDRhNjM4N2Q4NDAxY2EwNGYwMDJkY2U3NTEyY2YgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2Y2NzU4ZWQ3MGY4NDU1NmJhZjA5MzljYjdjODg2ZTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMjgyNDdhYmQ2YzM0OTk3OTEwNmFmN2U1ODljZWNiNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zOGViMzc2ODYwMmI0OTFhYTllZDQ0ZTVkMGRjMWE1MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MxYmQ0MWQ0NGNkOTRmYjNiMzBiYjNjYTgyNTdmNmRlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRmY2U0MmI0ZTllYTQzOTQ4ZjlkZjRjYzJhYTljYjk0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdiNzFkZmU5YjY3NjRiMjE4MTBiMWZjODRmNDNmNTM0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zMjA0MjA1ZDg3YWI0OTFiOGM3NzVkYTU1YTVmMjQ5ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTllY2RmZmNjMzNjNDY1MDk4ZGNjODNjMGNlZmQ2OGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y3NWQ1ZGUxZDU2YTQ2ZTdhMzY0MTk3MDM5MWU1NWY4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTI5Mjg1MzA4ODY5NDFiZjgxNzNjN2U0NjRjYWM0YTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjcwYjAzMmE5NzU4NDZhZjgyYTRjMGU1NDc3YTA0MjcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84NTBkNjJmYmI4MzI0ZjcyYWM4NWQ0NWM4MDNlNDdmYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWMwZTVlZWE5YjkzNDlmNTgwMzgzZjBhM2Y2OWQ0M2IgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FkNzlkMTNiNGI0NTQ4NmZhZmJhZmI2YzY5ZjhlZjBiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iMjE5YTYyNjYzMzc0Y2UyYmUwZDY5MmYzYmM3ZTQ0YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y0YzY3Mzg3NjU3ZjQzZmQ4ZWYzZjdmODBhYzViNzQ0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYxNDhlYzJlYzVjZDQ2YTlhZWViMTc0MDlmYzRiMDBlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U3ZmRmM2UwNzI4MjRmODM5ODExM2M1ZTRkY2QzMWU0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mNTJiMTQzZTQ2OGI0ODliYmU5ZmNjZGRhZDgyMGRiMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzMwZDI5MjIyZWNiMDRiOWZiOGUzMmY1ZTZiYzBjODIwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAxMWNiZGM3MWRhMjRlODE5ZjRkODVhZjhlMGRlZTU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzc4MzNmMTFlN2E3ODRiNjBiZDRmYTAxYzViZDFmOTlhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83ZmNmZWE0MWVmMmE0YjNjYWZjYzFmODY1ZjAwZmViYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84ZTY3OWExNmI4YWQ0M2M4YmQ2MDdiNmQ4YzUwODRmMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y3MzM1NTExMDAxODRhYWJhZmY3NDQ0OWJkYTg0ZTUzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDgwOGUxMmE2ZmE0NDYwZWIwOTcyZjE1MDNmZjg5NDMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82YmQ3ZGRkMmE3NzU0MDc2YmIxZDZiYTRmZDJlYWRkMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFkMWJmYTE3MDhlMjQ2NzliNjhjZDU5NTA1OTYzZjZiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzA1MTdhZTk0ZmZhNDhmODg4ZWRhYTNjNjRhZWZiN2YgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80N2NmZGY4NDBhMzI0YzM1OGFjYzcwM2ZjMTUyODIxZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85MGY1NDM2NTFiNmE0MGJlOGZhNmZiNWJkNTMzMDFiOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9hMzNiY2MyOWI4YzU0ZjdkOTkzOGU1ZDYyODBjMzBmMCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUwNzcwYjE4ZWU5MzQ0NzBiYWNjZGZlOTY4ODk1ODc3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGViNDM2OTllM2YxNGVmMTg3NzExMjFhMzJjYThkMDYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzA3ODJmNzNhOTRhNGU1MGIwZmU3NDNmZDFlYzJmODUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2EzM2JjYzI5YjhjNTRmN2Q5OTM4ZTVkNjI4MGMzMGYwKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGEwN2ExMzcyMGI3NDA4ODk4MjUwMzk4NGU1YTIxYmUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYTMzYmNjMjliOGM1NGY3ZDk5MzhlNWQ2MjgwYzMwZjApOwogICAgICAgICAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fa397ea2dd8>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# instantiate a feature group for the incidents in the dataframe\n",
"incidents = folium.map.FeatureGroup()\n",
"\n",
"# loop through the 100 crimes and add each to the incidents feature group\n",
"for lat, lng, in zip(df_incidents.Y, df_incidents.X):\n",
" incidents.add_child(\n",
" folium.features.CircleMarker(\n",
" [lat, lng],\n",
" radius=5, # define how big you want the circle markers to be\n",
" color='yellow',\n",
" fill=True,\n",
" fill_color='blue',\n",
" fill_opacity=0.6\n",
" )\n",
" )\n",
"\n",
"# add pop-up text to each marker on the map\n",
"latitudes = list(df_incidents.Y)\n",
"longitudes = list(df_incidents.X)\n",
"labels = list(df_incidents.Category)\n",
"\n",
"for lat, lng, label in zip(latitudes, longitudes, labels):\n",
" folium.Marker([lat, lng], popup=label).add_to(sanfran_map) \n",
" \n",
"# add incidents to map\n",
"sanfran_map.add_child(incidents)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Isn't this really cool? Now you are able to know what crime category occurred at each marker.\n",
"\n",
"If you find the map to be so congested will all these markers, there are two remedies to this problem. The simpler solution is to remove these location markers and just add the text to the circle markers themselves as follows:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfZDQ1Nzc3OGY2MzdlNDZlZjliNmRiZjNlYzc1YjQ0NTMgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzkxMTI3YzE2ZjM1NjQ5ODBhYjI1YjlmZDkzM2VjZjVkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lOTdmNTNjYTI4N2Q0MzExYTVhNTRlMGIyODgxZGE4ZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hZmI1MzUxZmJlMDA0NzM5YTFmMzkwZmNhYjgzOGVmNCA9ICQoJzxkaXYgaWQ9Imh0bWxfYWZiNTM1MWZiZTAwNDczOWExZjM5MGZjYWI4MzhlZjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lOTdmNTNjYTI4N2Q0MzExYTVhNTRlMGIyODgxZGE4Zi5zZXRDb250ZW50KGh0bWxfYWZiNTM1MWZiZTAwNDczOWExZjM5MGZjYWI4MzhlZjQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTExMjdjMTZmMzU2NDk4MGFiMjViOWZkOTMzZWNmNWQuYmluZFBvcHVwKHBvcHVwX2U5N2Y1M2NhMjg3ZDQzMTFhNWE1NGUwYjI4ODFkYThmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q3OWNmY2RkZGZmMTRmYmRhZDk2NDc1OGZjNzc4OTE1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82NDA1Mzk3MGQyNmI0YTQyOGQ0MjQ3YjQ5NzM0YTdiZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MTRmNWIxMTYyODI0ODZhYjUwNGY1OWU0M2MxNDgyNSA9ICQoJzxkaXYgaWQ9Imh0bWxfNjE0ZjViMTE2MjgyNDg2YWI1MDRmNTllNDNjMTQ4MjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82NDA1Mzk3MGQyNmI0YTQyOGQ0MjQ3YjQ5NzM0YTdiZC5zZXRDb250ZW50KGh0bWxfNjE0ZjViMTE2MjgyNDg2YWI1MDRmNTllNDNjMTQ4MjUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDc5Y2ZjZGRkZmYxNGZiZGFkOTY0NzU4ZmM3Nzg5MTUuYmluZFBvcHVwKHBvcHVwXzY0MDUzOTcwZDI2YjRhNDI4ZDQyNDdiNDk3MzRhN2JkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y2MDllMjZmZWRiNDRhNzc4MzU5YjlkOTJhNTU5MmFiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI5OTgwOTY3Mjk5NTk2LC0xMjIuMzg4ODU2MjA0MjkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjljNjdiYmRjNGYzNDI1Njk4YzRmMzI3NTllNjkzYWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmE1ZDliMDk4OTY2NDM4NDhlYzlkYzRhYzA5NGQ5YTIgPSAkKCc8ZGl2IGlkPSJodG1sX2JhNWQ5YjA5ODk2NjQzODQ4ZWM5ZGM0YWMwOTRkOWEyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjljNjdiYmRjNGYzNDI1Njk4YzRmMzI3NTllNjkzYWUuc2V0Q29udGVudChodG1sX2JhNWQ5YjA5ODk2NjQzODQ4ZWM5ZGM0YWMwOTRkOWEyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Y2MDllMjZmZWRiNDRhNzc4MzU5YjlkOTJhNTU5MmFiLmJpbmRQb3B1cChwb3B1cF9mOWM2N2JiZGM0ZjM0MjU2OThjNGYzMjc1OWU2OTNhZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zYWFjMGIwZjY2NzE0OTkzODg4NDY2ZmUxZjllYjEzZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTc4ODM3NjY4ODc5LC0xMjIuNDEyOTcwNTM3NTkxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWU0NTI0MzU2MjQzNDFkMWI1YzViMDE5MzU2MDE3MGEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjcyZGY3M2E0MTdkNGE3ZmE0OGExZTg3ZDkxODg1OTQgPSAkKCc8ZGl2IGlkPSJodG1sXzI3MmRmNzNhNDE3ZDRhN2ZhNDhhMWU4N2Q5MTg4NTk0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VlNDUyNDM1NjI0MzQxZDFiNWM1YjAxOTM1NjAxNzBhLnNldENvbnRlbnQoaHRtbF8yNzJkZjczYTQxN2Q0YTdmYTQ4YTFlODdkOTE4ODU5NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zYWFjMGIwZjY2NzE0OTkzODg4NDY2ZmUxZjllYjEzZC5iaW5kUG9wdXAocG9wdXBfZWU0NTI0MzU2MjQzNDFkMWI1YzViMDE5MzU2MDE3MGEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2FiNjQ2ZGQyMmQ4NGM4YzlhNWUyNmIxM2FjOGNhYWYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjUwNTAxMjE0NjY4LC0xMjIuNDE5NjcxNzgwMjk2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDExM2EzNTIwNjhlNDU5MjgzNWYxZDZmMGQxYzg0YzEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTA5NGYzOTc3M2FjNDE4ZThjZmViNzc5MTVmMjhjMmUgPSAkKCc8ZGl2IGlkPSJodG1sXzEwOTRmMzk3NzNhYzQxOGU4Y2ZlYjc3OTE1ZjI4YzJlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2QxMTNhMzUyMDY4ZTQ1OTI4MzVmMWQ2ZjBkMWM4NGMxLnNldENvbnRlbnQoaHRtbF8xMDk0ZjM5NzczYWM0MThlOGNmZWI3NzkxNWYyOGMyZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zYWI2NDZkZDIyZDg0YzhjOWE1ZTI2YjEzYWM4Y2FhZi5iaW5kUG9wdXAocG9wdXBfZDExM2EzNTIwNjhlNDU5MjgzNWYxZDZmMGQxYzg0YzEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmY0ZGNkMmM1NGFlNGYxNDhiMGQ3NzgzNzFlNjk0MTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMTg1NTU4MjksLTEyMi40MjYwNzcxNzczNzQ5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdlN2Q0MjQzMzQ2MTQ4OGM4MGM5MTUxODIwMThhZWIwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg0YzRlZWU2NzcxMjQxM2U4YTliYjk3NWMxZmM1MzcxID0gJCgnPGRpdiBpZD0iaHRtbF84NGM0ZWVlNjc3MTI0MTNlOGE5YmI5NzVjMWZjNTM3MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2U3ZDQyNDMzNDYxNDg4YzgwYzkxNTE4MjAxOGFlYjAuc2V0Q29udGVudChodG1sXzg0YzRlZWU2NzcxMjQxM2U4YTliYjk3NWMxZmM1MzcxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2JmNGRjZDJjNTRhZTRmMTQ4YjBkNzc4MzcxZTY5NDEwLmJpbmRQb3B1cChwb3B1cF83ZTdkNDI0MzM0NjE0ODhjODBjOTE1MTgyMDE4YWViMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYTRjZjhmMGUxMDg0NjMzOGYyMzM0YzMyMWYzNTRiNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDg3ODkzNjAyMTQsLTEyMi40MDU3MjE0NTQ1NjddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yMTVjMWNhMWQ5MWU0YTk3OTM0NDQ3Y2RjMTJkYzQ2NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82YTA5ODQ1NTg0Zjg0NzEyYTVmMjE0MTk4YmVjMDliMCA9ICQoJzxkaXYgaWQ9Imh0bWxfNmEwOTg0NTU4NGY4NDcxMmE1ZjIxNDE5OGJlYzA5YjAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yMTVjMWNhMWQ5MWU0YTk3OTM0NDQ3Y2RjMTJkYzQ2Ny5zZXRDb250ZW50KGh0bWxfNmEwOTg0NTU4NGY4NDcxMmE1ZjIxNDE5OGJlYzA5YjApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfY2E0Y2Y4ZjBlMTA4NDYzMzhmMjMzNGMzMjFmMzU0YjQuYmluZFBvcHVwKHBvcHVwXzIxNWMxY2ExZDkxZTRhOTc5MzQ0NDdjZGMxMmRjNDY3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzEyNmIxNDYzZjM0ZjQzNThiNWUyY2QxMWUwYTBmNjg2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzOTgwNTU5MjYzNCwtMTIyLjQxMTc3ODI5NTk5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2MyNzkyZjZiZTBhNTRkMjA5NjhjYmNmMjExZWUzNmQ1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJmNDRlZjI4MjY4NzQzMmY5MWIxOTdhMGJlZTk0MmZkID0gJCgnPGRpdiBpZD0iaHRtbF8yZjQ0ZWYyODI2ODc0MzJmOTFiMTk3YTBiZWU5NDJmZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jMjc5MmY2YmUwYTU0ZDIwOTY4Y2JjZjIxMWVlMzZkNS5zZXRDb250ZW50KGh0bWxfMmY0NGVmMjgyNjg3NDMyZjkxYjE5N2EwYmVlOTQyZmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMTI2YjE0NjNmMzRmNDM1OGI1ZTJjZDExZTBhMGY2ODYuYmluZFBvcHVwKHBvcHVwX2MyNzkyZjZiZTBhNTRkMjA5NjhjYmNmMjExZWUzNmQ1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I2ZmM1NGIyMDA3YzRkMDNiNTgxOThmZjYwNmRjMWI4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1Nzg3NjIxODI5Mjk1LC0xMjIuMzkzMzU3MjQxNDUxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzEwMTMzMmZkNzRjNDU4NTk4YzkwMWYzNTdhMDE1OTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjE0NWUxYWRmMzBlNDljMjliYTlhN2M3N2NjMzBiZGUgPSAkKCc8ZGl2IGlkPSJodG1sX2YxNDVlMWFkZjMwZTQ5YzI5YmE5YTdjNzdjYzMwYmRlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzEwMTMzMmZkNzRjNDU4NTk4YzkwMWYzNTdhMDE1OTcuc2V0Q29udGVudChodG1sX2YxNDVlMWFkZjMwZTQ5YzI5YmE5YTdjNzdjYzMwYmRlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2I2ZmM1NGIyMDA3YzRkMDNiNTgxOThmZjYwNmRjMWI4LmJpbmRQb3B1cChwb3B1cF83MTAxMzMyZmQ3NGM0NTg1OThjOTAxZjM1N2EwMTU5Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lNTJmNTgwMjQ2OWM0YTlkODRmMmU1ZTIzN2FiMGMzOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NWU4YzJiM2MzMDk0OGI1OWM4ODYzZjJhMGZmZjZhYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yN2E3MzcyYzgwNDA0ZDI1YmU0ODhlODYwNjY2NjRjYSA9ICQoJzxkaXYgaWQ9Imh0bWxfMjdhNzM3MmM4MDQwNGQyNWJlNDg4ZTg2MDY2NjY0Y2EiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NWU4YzJiM2MzMDk0OGI1OWM4ODYzZjJhMGZmZjZhYy5zZXRDb250ZW50KGh0bWxfMjdhNzM3MmM4MDQwNGQyNWJlNDg4ZTg2MDY2NjY0Y2EpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTUyZjU4MDI0NjljNGE5ZDg0ZjJlNWUyMzdhYjBjMzguYmluZFBvcHVwKHBvcHVwXzU1ZThjMmIzYzMwOTQ4YjU5Yzg4NjNmMmEwZmZmNmFjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYwNDg5ODI3OGQ2YjQ3NjliY2E1YmViNjhmNWRkOTk2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDc4MTU3ODY5NTA1LC0xMjIuNDc3Mzc2NTI0MDAyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84MDY4OTlmNjNhYWQ0OTMxYmNjMTgxOTYxMjE2MTBiNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MWM0ZDhlOWZjODM0MGJiYjRhN2YxMzFiNjg0MWY0YyA9ICQoJzxkaXYgaWQ9Imh0bWxfNjFjNGQ4ZTlmYzgzNDBiYmI0YTdmMTMxYjY4NDFmNGMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzgwNjg5OWY2M2FhZDQ5MzFiY2MxODE5NjEyMTYxMGI3LnNldENvbnRlbnQoaHRtbF82MWM0ZDhlOWZjODM0MGJiYjRhN2YxMzFiNjg0MWY0Yyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82MDQ4OTgyNzhkNmI0NzY5YmNhNWJlYjY4ZjVkZDk5Ni5iaW5kUG9wdXAocG9wdXBfODA2ODk5ZjYzYWFkNDkzMWJjYzE4MTk2MTIxNjEwYjcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDZkY2UwNjE2YjExNDc1ZTljYjdmMmIzN2JmMTBmYzEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82NDBhNDM5NjA0NzM0MGU0YTliZDlmMTQ1ZmZkNzM3NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zNjkyM2NkZjg1Zjc0YWMwOTkzODcwOTk0ZTc5ODYxZCA9ICQoJzxkaXYgaWQ9Imh0bWxfMzY5MjNjZGY4NWY3NGFjMDk5Mzg3MDk5NGU3OTg2MWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjQwYTQzOTYwNDczNDBlNGE5YmQ5ZjE0NWZmZDczNzQuc2V0Q29udGVudChodG1sXzM2OTIzY2RmODVmNzRhYzA5OTM4NzA5OTRlNzk4NjFkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Q2ZGNlMDYxNmIxMTQ3NWU5Y2I3ZjJiMzdiZjEwZmMxLmJpbmRQb3B1cChwb3B1cF82NDBhNDM5NjA0NzM0MGU0YTliZDlmMTQ1ZmZkNzM3NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NTRhZWQwMThlNjM0ZDdlOTViMzc2YWZkYzBjZTY2OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTc4OWRlNjI2Zjg1NGIwOGI0NThhZTZiNDVjZTc3Y2IgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzY3YTY4YjBkMTU5NDRhMjhlNzA0ZDFlMDlmM2IwMjEgPSAkKCc8ZGl2IGlkPSJodG1sXzM2N2E2OGIwZDE1OTQ0YTI4ZTcwNGQxZTA5ZjNiMDIxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTc4OWRlNjI2Zjg1NGIwOGI0NThhZTZiNDVjZTc3Y2Iuc2V0Q29udGVudChodG1sXzM2N2E2OGIwZDE1OTQ0YTI4ZTcwNGQxZTA5ZjNiMDIxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzU1NGFlZDAxOGU2MzRkN2U5NWIzNzZhZmRjMGNlNjY4LmJpbmRQb3B1cChwb3B1cF9hNzg5ZGU2MjZmODU0YjA4YjQ1OGFlNmI0NWNlNzdjYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xYTdlZjM4NWU3MTI0NTY0YjA3ZDY3N2Q1ZTE5OWY5MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTI3MDUxOTk1OTIsLTEyMi40MzIzMjU4NzEwMjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jZjI0ZmNiNDlmYTY0YTEwOWFhOTA0NzYzYzUwMzFiMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ZjY3MWYzNTBkMmY0NDNlOTFhZDZmMzFiMTI4Zjc5ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfNWY2NzFmMzUwZDJmNDQzZTkxYWQ2ZjMxYjEyOGY3OWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NmMjRmY2I0OWZhNjRhMTA5YWE5MDQ3NjNjNTAzMWIwLnNldENvbnRlbnQoaHRtbF81ZjY3MWYzNTBkMmY0NDNlOTFhZDZmMzFiMTI4Zjc5ZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xYTdlZjM4NWU3MTI0NTY0YjA3ZDY3N2Q1ZTE5OWY5Mi5iaW5kUG9wdXAocG9wdXBfY2YyNGZjYjQ5ZmE2NGExMDlhYTkwNDc2M2M1MDMxYjApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmIwNzgxZGUzYmY5NDQ1N2JiYTE4NmEwYjY3NTA2MjMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMxNmI3ODI5YTZjNzQ5ZjE5MjdlNGY5NTIzNjgzZGMwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E4OGEwNTAyN2ZlODRkM2NhZTk3YzQyYzMwY2FkNjc1ID0gJCgnPGRpdiBpZD0iaHRtbF9hODhhMDUwMjdmZTg0ZDNjYWU5N2M0MmMzMGNhZDY3NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMxNmI3ODI5YTZjNzQ5ZjE5MjdlNGY5NTIzNjgzZGMwLnNldENvbnRlbnQoaHRtbF9hODhhMDUwMjdmZTg0ZDNjYWU5N2M0MmMzMGNhZDY3NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mYjA3ODFkZTNiZjk0NDU3YmJhMTg2YTBiNjc1MDYyMy5iaW5kUG9wdXAocG9wdXBfMzE2Yjc4MjlhNmM3NDlmMTkyN2U0Zjk1MjM2ODNkYzApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTgxMTkyMjAzMWJmNGNiMzkwMzVmZTkwOWRhMTFiYmUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM3MDY5MzAxNTQ1LC0xMjIuNDA4NTk1MTEwODY5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTFmNGRiMDkwODc3NDQ3NzlhMTQxZmY4NDdiOWRiMGUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODQ4M2I0ZDFmYjU0NGVjM2JkNDFiODUzMTY4ODdmYjIgPSAkKCc8ZGl2IGlkPSJodG1sXzg0ODNiNGQxZmI1NDRlYzNiZDQxYjg1MzE2ODg3ZmIyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVE9MRU4gUFJPUEVSVFk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzUxZjRkYjA5MDg3NzQ0Nzc5YTE0MWZmODQ3YjlkYjBlLnNldENvbnRlbnQoaHRtbF84NDgzYjRkMWZiNTQ0ZWMzYmQ0MWI4NTMxNjg4N2ZiMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xODExOTIyMDMxYmY0Y2IzOTAzNWZlOTA5ZGExMWJiZS5iaW5kUG9wdXAocG9wdXBfNTFmNGRiMDkwODc3NDQ3NzlhMTQxZmY4NDdiOWRiMGUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2M0ZWE1ZDNhNDhkNGUwMDkzNDNlYjcwYWE1M2I0NTcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTcyODk1OTA0NTc3OTUsLTEyMi40MDY4NzA0MDIwODJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mZTVhZWYxMmU2ZmY0ZmEwYTlkNDQwMWZhMjM4MzgxZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wM2Y5NGQ1OWEzYTQ0MTU1ODZkMDY4MzA2N2U2Y2M3YSA9ICQoJzxkaXYgaWQ9Imh0bWxfMDNmOTRkNTlhM2E0NDE1NTg2ZDA2ODMwNjdlNmNjN2EiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZlNWFlZjEyZTZmZjRmYTBhOWQ0NDAxZmEyMzgzODFmLnNldENvbnRlbnQoaHRtbF8wM2Y5NGQ1OWEzYTQ0MTU1ODZkMDY4MzA2N2U2Y2M3YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zYzRlYTVkM2E0OGQ0ZTAwOTM0M2ViNzBhYTUzYjQ1Ny5iaW5kUG9wdXAocG9wdXBfZmU1YWVmMTJlNmZmNGZhMGE5ZDQ0MDFmYTIzODM4MWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjVkZDZlOWZjYmZkNGQ4YmI3YjUwYTdhODVkZmY2ZGEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83NTYzZWNmZDg2NDU0YWI0OWQ2YzE5NDU5MTUwZTIxMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kOGZhNDdlMTliMDY0MDk5OTFjYWZkMzA4NTQ3MjJjYSA9ICQoJzxkaXYgaWQ9Imh0bWxfZDhmYTQ3ZTE5YjA2NDA5OTkxY2FmZDMwODU0NzIyY2EiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc1NjNlY2ZkODY0NTRhYjQ5ZDZjMTk0NTkxNTBlMjEwLnNldENvbnRlbnQoaHRtbF9kOGZhNDdlMTliMDY0MDk5OTFjYWZkMzA4NTQ3MjJjYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82NWRkNmU5ZmNiZmQ0ZDhiYjdiNTBhN2E4NWRmZjZkYS5iaW5kUG9wdXAocG9wdXBfNzU2M2VjZmQ4NjQ1NGFiNDlkNmMxOTQ1OTE1MGUyMTApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYWYwODJiNWMyZjZlNDI1YTgxYzU3OTcyNDJkYjRhOGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTU3NjU0MjY5OTUsLTEyMi40Mzk5MDk3NjY3NzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wODFiOWEwNzk0NGI0ZTFiYTdlYTY4OWI0MDhiYjczZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82M2QxNGZjNWFiNjE0MzI5YTE2ZTBlMDY0YWQ0ZGYyNiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjNkMTRmYzVhYjYxNDMyOWExNmUwZTA2NGFkNGRmMjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzA4MWI5YTA3OTQ0YjRlMWJhN2VhNjg5YjQwOGJiNzNmLnNldENvbnRlbnQoaHRtbF82M2QxNGZjNWFiNjE0MzI5YTE2ZTBlMDY0YWQ0ZGYyNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hZjA4MmI1YzJmNmU0MjVhODFjNTc5NzI0MmRiNGE4Zi5iaW5kUG9wdXAocG9wdXBfMDgxYjlhMDc5NDRiNGUxYmE3ZWE2ODliNDA4YmI3M2YpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMmM5NTEzZjIwYThjNGU0MmJlNjIwNzNlODRiZDExZGEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM1Njk5Mzg2OTE4LC0xMjIuNDA4NDIxMTE2OTIyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzQwZWIxYWU2NDk2NGFiYzg5ZGU4NjNjYzE5ZWJjZGMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODliYTE2MWI0MjU2NGU1OThlZDE2YTMxNGMzZWFlYTIgPSAkKCc8ZGl2IGlkPSJodG1sXzg5YmExNjFiNDI1NjRlNTk4ZWQxNmEzMTRjM2VhZWEyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83NDBlYjFhZTY0OTY0YWJjODlkZTg2M2NjMTllYmNkYy5zZXRDb250ZW50KGh0bWxfODliYTE2MWI0MjU2NGU1OThlZDE2YTMxNGMzZWFlYTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMmM5NTEzZjIwYThjNGU0MmJlNjIwNzNlODRiZDExZGEuYmluZFBvcHVwKHBvcHVwXzc0MGViMWFlNjQ5NjRhYmM4OWRlODYzY2MxOWViY2RjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhlOGVhZTgwMTNmOTQwY2ZiN2MwNzZjN2ZmNGI5OWE0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTFhOTM2ZDkzODk1NDk4NmEzNTY2NTBlZDE5MTVkMzQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2QwMTRiYjBhYmQ4NDRjN2IzYzRhZmQ3NmIwODJiZTkgPSAkKCc8ZGl2IGlkPSJodG1sX2NkMDE0YmIwYWJkODQ0YzdiM2M0YWZkNzZiMDgyYmU5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GUkFVRDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTFhOTM2ZDkzODk1NDk4NmEzNTY2NTBlZDE5MTVkMzQuc2V0Q29udGVudChodG1sX2NkMDE0YmIwYWJkODQ0YzdiM2M0YWZkNzZiMDgyYmU5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzhlOGVhZTgwMTNmOTQwY2ZiN2MwNzZjN2ZmNGI5OWE0LmJpbmRQb3B1cChwb3B1cF8xMWE5MzZkOTM4OTU0OTg2YTM1NjY1MGVkMTkxNWQzNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80Y2YzYWY2NDM5YTA0NThjOWMwYzI5YzU2NzkyYWQ4YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5Mjg0MTI4NDA0NDcwNSwtMTIyLjQyNDUxOTgzNTAwOTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTY4ZDE1NTExZmVlNGUyNDk5NDM3OWMxZGYyMjE3MzkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTYwMzU2MGEwNzIxNDA0NzlhZTUzNWU1ZmY5NzU2M2UgPSAkKCc8ZGl2IGlkPSJodG1sXzE2MDM1NjBhMDcyMTQwNDc5YWU1MzVlNWZmOTc1NjNlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTY4ZDE1NTExZmVlNGUyNDk5NDM3OWMxZGYyMjE3Mzkuc2V0Q29udGVudChodG1sXzE2MDM1NjBhMDcyMTQwNDc5YWU1MzVlNWZmOTc1NjNlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzRjZjNhZjY0MzlhMDQ1OGM5YzBjMjljNTY3OTJhZDhjLmJpbmRQb3B1cChwb3B1cF9hNjhkMTU1MTFmZWU0ZTI0OTk0Mzc5YzFkZjIyMTczOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNGMzNGQxMWU0YmY0YjFkODkxMWJiMzU2YzkxYTg2NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTlhMGFlMDc3YmEzNDkwZjgwMGRjNTE3YjY0OTg4ZTMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTYzMjJjYzJlYjhkNGE3YjlhNzE1NWY5OTRjNDFmZmYgPSAkKCc8ZGl2IGlkPSJodG1sXzU2MzIyY2MyZWI4ZDRhN2I5YTcxNTVmOTk0YzQxZmZmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85OWEwYWUwNzdiYTM0OTBmODAwZGM1MTdiNjQ5ODhlMy5zZXRDb250ZW50KGh0bWxfNTYzMjJjYzJlYjhkNGE3YjlhNzE1NWY5OTRjNDFmZmYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjRjMzRkMTFlNGJmNGIxZDg5MTFiYjM1NmM5MWE4NjYuYmluZFBvcHVwKHBvcHVwXzk5YTBhZTA3N2JhMzQ5MGY4MDBkYzUxN2I2NDk4OGUzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y3MTkwZGM3NDRkNzQ2OTBiYTMzYmM5ZjUxNWZjZGIxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84Y2JlZWJmNTExNDg0ZTZkYmRlZjM2NTBkZWE0MDFmOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lNzNkMDk1NzBhNmQ0MzA4YTJmNDYxZjc2OTI0YmYxYyA9ICQoJzxkaXYgaWQ9Imh0bWxfZTczZDA5NTcwYTZkNDMwOGEyZjQ2MWY3NjkyNGJmMWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84Y2JlZWJmNTExNDg0ZTZkYmRlZjM2NTBkZWE0MDFmOS5zZXRDb250ZW50KGh0bWxfZTczZDA5NTcwYTZkNDMwOGEyZjQ2MWY3NjkyNGJmMWMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZjcxOTBkYzc0NGQ3NDY5MGJhMzNiYzlmNTE1ZmNkYjEuYmluZFBvcHVwKHBvcHVwXzhjYmVlYmY1MTE0ODRlNmRiZGVmMzY1MGRlYTQwMWY5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M5N2UyNTBhZWE0YTRjZWNhNWY3NGZlNGUyNDAzNGZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzcxNDkzOTk2OTQxNiwtMTIyLjUwNzc1MDEzMTAwNDAyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjk1YjE3Yzg0OWMzNDNlY2EzOTQzZWVlN2I3ZDI0ZmIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTBiOGQ1NWMzNDM0NDAzM2JiMzE3NTFlOTQ3ZmQ0YTggPSAkKCc8ZGl2IGlkPSJodG1sXzkwYjhkNTVjMzQzNDQwMzNiYjMxNzUxZTk0N2ZkNGE4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yOTViMTdjODQ5YzM0M2VjYTM5NDNlZWU3YjdkMjRmYi5zZXRDb250ZW50KGh0bWxfOTBiOGQ1NWMzNDM0NDAzM2JiMzE3NTFlOTQ3ZmQ0YTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzk3ZTI1MGFlYTRhNGNlY2E1Zjc0ZmU0ZTI0MDM0ZmEuYmluZFBvcHVwKHBvcHVwXzI5NWIxN2M4NDljMzQzZWNhMzk0M2VlZTdiN2QyNGZiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzkwMDRhOTc0NjUyMzQ0OTBhZjI4NjM2YjNjZDliZDY3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE4MzAyMjA0NzY2MDA1LC0xMjIuNDc0NDQ0NjM5NTk0OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jMzgwYzYyYWUyY2Y0MGNlYjQ0OWFmMDhkMWYyMWRlNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jZTU1ZGI2NmY4NDE0YWUzOGVhNWQxYmQ3N2IyZWIxMSA9ICQoJzxkaXYgaWQ9Imh0bWxfY2U1NWRiNjZmODQxNGFlMzhlYTVkMWJkNzdiMmViMTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jMzgwYzYyYWUyY2Y0MGNlYjQ0OWFmMDhkMWYyMWRlNy5zZXRDb250ZW50KGh0bWxfY2U1NWRiNjZmODQxNGFlMzhlYTVkMWJkNzdiMmViMTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTAwNGE5NzQ2NTIzNDQ5MGFmMjg2MzZiM2NkOWJkNjcuYmluZFBvcHVwKHBvcHVwX2MzODBjNjJhZTJjZjQwY2ViNDQ5YWYwOGQxZjIxZGU3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ4ODY2ZDljYzJiZDQ0Zjk4MGFkZmIxNDZiNzZjMjFiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NTc1MjMxNzYxNSwtMTIyLjQyNzU2MjU5Njk4NV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZmNmRhZTIwMTU2ODQyMmY5MWUzMTQ5ZDdiMTE0YzA0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE4YjM5NWJhMDg3ZjRkNDVhYzk2N2ZiMTllYmFiNDBhID0gJCgnPGRpdiBpZD0iaHRtbF8xOGIzOTViYTA4N2Y0ZDQ1YWM5NjdmYjE5ZWJhYjQwYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZmNmRhZTIwMTU2ODQyMmY5MWUzMTQ5ZDdiMTE0YzA0LnNldENvbnRlbnQoaHRtbF8xOGIzOTViYTA4N2Y0ZDQ1YWM5NjdmYjE5ZWJhYjQwYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80ODg2NmQ5Y2MyYmQ0NGY5ODBhZGZiMTQ2Yjc2YzIxYi5iaW5kUG9wdXAocG9wdXBfNmY2ZGFlMjAxNTY4NDIyZjkxZTMxNDlkN2IxMTRjMDQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGRhMzZkMTQxZWRkNGEwZmEwYjY0MTY2OGQ0YTUwZGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjBmODZkMzgyODQ3NDA1YmE1ZDA0MWNjNTM3NTI5MTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzNjMjY3ZDFhYmMwNDkzMWIwZDBhMDYwZjdlZWIyMWIgPSAkKCc8ZGl2IGlkPSJodG1sXzczYzI2N2QxYWJjMDQ5MzFiMGQwYTA2MGY3ZWViMjFiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjBmODZkMzgyODQ3NDA1YmE1ZDA0MWNjNTM3NTI5MTguc2V0Q29udGVudChodG1sXzczYzI2N2QxYWJjMDQ5MzFiMGQwYTA2MGY3ZWViMjFiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzBkYTM2ZDE0MWVkZDRhMGZhMGI2NDE2NjhkNGE1MGRiLmJpbmRQb3B1cChwb3B1cF8yMGY4NmQzODI4NDc0MDViYTVkMDQxY2M1Mzc1MjkxOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yY2QzODVmZmJhOGQ0ZGFkYjVkOGVkNGFmMThmNTk0ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTM2ODgyODQ1MzIsLTEyMi40MTI2OTAxNDIzMDgwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBmNzFiNGNmN2QxMjQ5NzRiYWU4MWUzZTk5OGJjZTMwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2FmN2JkYzRlYTlhZTRjZDBhZjVjM2I1YjU0OGFjZWU0ID0gJCgnPGRpdiBpZD0iaHRtbF9hZjdiZGM0ZWE5YWU0Y2QwYWY1YzNiNWI1NDhhY2VlNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBmNzFiNGNmN2QxMjQ5NzRiYWU4MWUzZTk5OGJjZTMwLnNldENvbnRlbnQoaHRtbF9hZjdiZGM0ZWE5YWU0Y2QwYWY1YzNiNWI1NDhhY2VlNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yY2QzODVmZmJhOGQ0ZGFkYjVkOGVkNGFmMThmNTk0ZS5iaW5kUG9wdXAocG9wdXBfMGY3MWI0Y2Y3ZDEyNDk3NGJhZTgxZTNlOTk4YmNlMzApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWZkY2YzMWYzMjcwNDUwNGI0NDNiNWVhNWVkMjY3OGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MDkyMDEwNDYyMzc5LC0xMjIuNDM0NjA5MjgwMzUyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWZhMWI1MzRmZmQ0NGM5Yzg0NjU4MTUwMmQxOWQ0MmEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjFjNjQ0NDFiNmJjNGI0YmJhODdmMWM3ZDU1MTBmNjQgPSAkKCc8ZGl2IGlkPSJodG1sX2IxYzY0NDQxYjZiYzRiNGJiYTg3ZjFjN2Q1NTEwZjY0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VmYTFiNTM0ZmZkNDRjOWM4NDY1ODE1MDJkMTlkNDJhLnNldENvbnRlbnQoaHRtbF9iMWM2NDQ0MWI2YmM0YjRiYmE4N2YxYzdkNTUxMGY2NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81ZmRjZjMxZjMyNzA0NTA0YjQ0M2I1ZWE1ZWQyNjc4Zi5iaW5kUG9wdXAocG9wdXBfZWZhMWI1MzRmZmQ0NGM5Yzg0NjU4MTUwMmQxOWQ0MmEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWE3ZjYxZjcxOTYwNGUyMGFkYzA5MWQwYzlmYzg2MWEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc5MjA5Mzc1NTMyOTUsLTEyMi40MTA4ODI4MjU1NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81MDBmODZkYWE0MjY0YjRhYjg0MDA2ZDYxZjFmYjU4YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80YTc0NTNlOWVlZjM0Yzg2OGU1ZDhjNWU0MDdhNWE5NCA9ICQoJzxkaXYgaWQ9Imh0bWxfNGE3NDUzZTllZWYzNGM4NjhlNWQ4YzVlNDA3YTVhOTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZFSElDTEUgVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzUwMGY4NmRhYTQyNjRiNGFiODQwMDZkNjFmMWZiNThjLnNldENvbnRlbnQoaHRtbF80YTc0NTNlOWVlZjM0Yzg2OGU1ZDhjNWU0MDdhNWE5NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lYTdmNjFmNzE5NjA0ZTIwYWRjMDkxZDBjOWZjODYxYS5iaW5kUG9wdXAocG9wdXBfNTAwZjg2ZGFhNDI2NGI0YWI4NDAwNmQ2MWYxZmI1OGMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2YyYjIwYWQ5YjA4NDdlZWE1ODk4OWQzYzA5YTA1Y2MgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy44MDA0NTY2NDcxMDM4OSwtMTIyLjQwMTQzMjc1NDcyMjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjc0NjJkODAwMGFkNGQ1YTkyMWQ1OTk5NzJiZTIyMzIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYWJlNTFlOWVhNWU3NDRhOWI2NDhmYzgwNDFkZTY2YjcgPSAkKCc8ZGl2IGlkPSJodG1sX2FiZTUxZTllYTVlNzQ0YTliNjQ4ZmM4MDQxZGU2NmI3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yNzQ2MmQ4MDAwYWQ0ZDVhOTIxZDU5OTk3MmJlMjIzMi5zZXRDb250ZW50KGh0bWxfYWJlNTFlOWVhNWU3NDRhOWI2NDhmYzgwNDFkZTY2YjcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfY2YyYjIwYWQ5YjA4NDdlZWE1ODk4OWQzYzA5YTA1Y2MuYmluZFBvcHVwKHBvcHVwXzI3NDYyZDgwMDBhZDRkNWE5MjFkNTk5OTcyYmUyMjMyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRmNTQxMTk0MjdkYTRlYmY4MDU1Y2M2MGM3MTI5YjIwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI1NmQwYzFlOWE5ZjRlMjE4NzI0YTJjNTQyZjc1ZWZiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U0MGZkMmViNjA1NTQ5OTBiZTEyMjRiYzVmOWQwNzA0ID0gJCgnPGRpdiBpZD0iaHRtbF9lNDBmZDJlYjYwNTU0OTkwYmUxMjI0YmM1ZjlkMDcwNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjU2ZDBjMWU5YTlmNGUyMTg3MjRhMmM1NDJmNzVlZmIuc2V0Q29udGVudChodG1sX2U0MGZkMmViNjA1NTQ5OTBiZTEyMjRiYzVmOWQwNzA0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzRmNTQxMTk0MjdkYTRlYmY4MDU1Y2M2MGM3MTI5YjIwLmJpbmRQb3B1cChwb3B1cF8yNTZkMGMxZTlhOWY0ZTIxODcyNGEyYzU0MmY3NWVmYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNjMwMDg4MDZiMGI0MTIyYjZkZjE0Y2Y1NzBiM2FmNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NjU2NDc2MDc2ODUsLTEyMi40MDcyNDQwODcwMzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mZTBmYzJkZGY5N2E0ODYxYWMzM2ZiNzI5Mjg0NDM0MyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hYjk3NWE5NDRjNmI0NDY5OTkwMTkwY2Y0YzRlYTc4NCA9ICQoJzxkaXYgaWQ9Imh0bWxfYWI5NzVhOTQ0YzZiNDQ2OTk5MDE5MGNmNGM0ZWE3ODQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZlMGZjMmRkZjk3YTQ4NjFhYzMzZmI3MjkyODQ0MzQzLnNldENvbnRlbnQoaHRtbF9hYjk3NWE5NDRjNmI0NDY5OTkwMTkwY2Y0YzRlYTc4NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yNjMwMDg4MDZiMGI0MTIyYjZkZjE0Y2Y1NzBiM2FmNi5iaW5kUG9wdXAocG9wdXBfZmUwZmMyZGRmOTdhNDg2MWFjMzNmYjcyOTI4NDQzNDMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTBhZDE1Y2Y0MzEwNDU0OGIxOGVhMjFjNjBjZTE2YjcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84MGQ1NDVkYTZkMTI0ZDhkYjkyYTE1YTljN2M4NGI3ZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83YTMxYzdiZDBlM2Q0OTQ5YTBjMzMxZmNjNWE1YjZmNiA9ICQoJzxkaXYgaWQ9Imh0bWxfN2EzMWM3YmQwZTNkNDk0OWEwYzMzMWZjYzVhNWI2ZjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84MGQ1NDVkYTZkMTI0ZDhkYjkyYTE1YTljN2M4NGI3Zi5zZXRDb250ZW50KGh0bWxfN2EzMWM3YmQwZTNkNDk0OWEwYzMzMWZjYzVhNWI2ZjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTBhZDE1Y2Y0MzEwNDU0OGIxOGVhMjFjNjBjZTE2YjcuYmluZFBvcHVwKHBvcHVwXzgwZDU0NWRhNmQxMjRkOGRiOTJhMTVhOWM3Yzg0YjdmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE0NTkyZjI2OGIzMDQwZGVhMWIzOGEwOGRhNDc2MDlkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjgxZmZjMTlmZTEwNDEzZjk5YzkzNzA2YmM1OTdiYTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzZlZjA1ZTI2MjQ3NDcwN2FjNWY1NTZmNDBiNTk2ODUgPSAkKCc8ZGl2IGlkPSJodG1sXzc2ZWYwNWUyNjI0NzQ3MDdhYzVmNTU2ZjQwYjU5Njg1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjgxZmZjMTlmZTEwNDEzZjk5YzkzNzA2YmM1OTdiYTcuc2V0Q29udGVudChodG1sXzc2ZWYwNWUyNjI0NzQ3MDdhYzVmNTU2ZjQwYjU5Njg1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzE0NTkyZjI2OGIzMDQwZGVhMWIzOGEwOGRhNDc2MDlkLmJpbmRQb3B1cChwb3B1cF82ODFmZmMxOWZlMTA0MTNmOTljOTM3MDZiYzU5N2JhNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81Yzk5MDc2MTcyNzk0YmViOWM0YThmYTEzNmU0MmE4YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM0NTk3ZTg0YjViMzQ2MWY4MmEyYzEzMDg1NmRiN2YwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M4MDY3N2YxNDNhZDRhNDM5NTFhMTIyYWFiZDEyNmQyID0gJCgnPGRpdiBpZD0iaHRtbF9jODA2NzdmMTQzYWQ0YTQzOTUxYTEyMmFhYmQxMjZkMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zNDU5N2U4NGI1YjM0NjFmODJhMmMxMzA4NTZkYjdmMC5zZXRDb250ZW50KGh0bWxfYzgwNjc3ZjE0M2FkNGE0Mzk1MWExMjJhYWJkMTI2ZDIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNWM5OTA3NjE3Mjc5NGJlYjljNGE4ZmExMzZlNDJhOGMuYmluZFBvcHVwKHBvcHVwXzM0NTk3ZTg0YjViMzQ2MWY4MmEyYzEzMDg1NmRiN2YwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QwZWFjODdkN2FmZDQzNTY4Mjc2ZGMyNDM4NzcwYjU4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU5NThmM2M3MTJlMDQ3MjdiN2U1YmM3MTFmN2U4YTNhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I2MTU2MTk0ODljMTQyMDM4OTE5MTIxYjEzNTliOTBkID0gJCgnPGRpdiBpZD0iaHRtbF9iNjE1NjE5NDg5YzE0MjAzODkxOTEyMWIxMzU5YjkwZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81OTU4ZjNjNzEyZTA0NzI3YjdlNWJjNzExZjdlOGEzYS5zZXRDb250ZW50KGh0bWxfYjYxNTYxOTQ4OWMxNDIwMzg5MTkxMjFiMTM1OWI5MGQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDBlYWM4N2Q3YWZkNDM1NjgyNzZkYzI0Mzg3NzBiNTguYmluZFBvcHVwKHBvcHVwXzU5NThmM2M3MTJlMDQ3MjdiN2U1YmM3MTFmN2U4YTNhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE2MjJmYThjODFkMzRlYzI5OTZiMGYwNDJkNGI4ZTkyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDI0NGE1M2IwOWU1NDUzMTlhMjc3ZWY3ZjQzNzMwMTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTNkZDRmZDkzNDkxNDdjODkyNDI5YmNhN2M5ZmJmNTEgPSAkKCc8ZGl2IGlkPSJodG1sX2EzZGQ0ZmQ5MzQ5MTQ3Yzg5MjQyOWJjYTdjOWZiZjUxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kMjQ0YTUzYjA5ZTU0NTMxOWEyNzdlZjdmNDM3MzAxMC5zZXRDb250ZW50KGh0bWxfYTNkZDRmZDkzNDkxNDdjODkyNDI5YmNhN2M5ZmJmNTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMTYyMmZhOGM4MWQzNGVjMjk5NmIwZjA0MmQ0YjhlOTIuYmluZFBvcHVwKHBvcHVwX2QyNDRhNTNiMDllNTQ1MzE5YTI3N2VmN2Y0MzczMDEwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZlNDVjM2YwMGExOTQ5ZGFhZDY4MDRkMjA0YzA1MzJmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQyODUxNzM3NDQ0ODk0LC0xMjIuNDIwOTY3NDQwNTY0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjQ2NTI5ZTYzY2MzNDc2MWFmNTAwZDc0ZTg1ZjkxZWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmJhZmEyYjNmMWRmNDlmMWJhNTgwODU2YTAyODdkNTEgPSAkKCc8ZGl2IGlkPSJodG1sX2ZiYWZhMmIzZjFkZjQ5ZjFiYTU4MDg1NmEwMjg3ZDUxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjQ2NTI5ZTYzY2MzNDc2MWFmNTAwZDc0ZTg1ZjkxZWEuc2V0Q29udGVudChodG1sX2ZiYWZhMmIzZjFkZjQ5ZjFiYTU4MDg1NmEwMjg3ZDUxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2ZlNDVjM2YwMGExOTQ5ZGFhZDY4MDRkMjA0YzA1MzJmLmJpbmRQb3B1cChwb3B1cF8yNDY1MjllNjNjYzM0NzYxYWY1MDBkNzRlODVmOTFlYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82NThhYmI1MGM1ODM0MWFlOWUxMmEzNDk4MzgxMWUwNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jMDAyY2ZlYjVjZmM0MWZhYmI0MzlmNzY5OGUyNzQwMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xN2YwNGM3NDE0N2I0ZTRmYmFmM2FjM2ViNWM4OWQ4ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfMTdmMDRjNzQxNDdiNGU0ZmJhZjNhYzNlYjVjODlkOGQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzAwMmNmZWI1Y2ZjNDFmYWJiNDM5Zjc2OThlMjc0MDAuc2V0Q29udGVudChodG1sXzE3ZjA0Yzc0MTQ3YjRlNGZiYWYzYWMzZWI1Yzg5ZDhkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzY1OGFiYjUwYzU4MzQxYWU5ZTEyYTM0OTgzODExZTA2LmJpbmRQb3B1cChwb3B1cF9jMDAyY2ZlYjVjZmM0MWZhYmI0MzlmNzY5OGUyNzQwMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zODczYzViNzhkZDE0NTJiYTE0YzVjYTk2YTk0ZmI5NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82ZTUxNzJmN2U0Zjk0ZjIwOTFmODNhZmU1NTI0NmY3NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kMTU4NDNiZDg2Nzk0ZTEwOWVkMjczOGE5YTI5MDY3OSA9ICQoJzxkaXYgaWQ9Imh0bWxfZDE1ODQzYmQ4Njc5NGUxMDllZDI3MzhhOWEyOTA2NzkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZlNTE3MmY3ZTRmOTRmMjA5MWY4M2FmZTU1MjQ2Zjc0LnNldENvbnRlbnQoaHRtbF9kMTU4NDNiZDg2Nzk0ZTEwOWVkMjczOGE5YTI5MDY3OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zODczYzViNzhkZDE0NTJiYTE0YzVjYTk2YTk0ZmI5NC5iaW5kUG9wdXAocG9wdXBfNmU1MTcyZjdlNGY5NGYyMDkxZjgzYWZlNTUyNDZmNzQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTg3NTM4NTg3MjQzNDA1Yzg4YmZiNWEyOTIyZjdlNWYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjU3MTg0Mzk1MjgyLC0xMjIuNDA5NTI5OTEzMjc4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTc4MTVlNmU4YmZhNDk3NDg5NzRlYTA1MmJkYzZkZTIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNmRjNmFiZDBjOGVhNDlmNmFlODcwMDRjNDY1ZmIwODMgPSAkKCc8ZGl2IGlkPSJodG1sXzZkYzZhYmQwYzhlYTQ5ZjZhZTg3MDA0YzQ2NWZiMDgzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lNzgxNWU2ZThiZmE0OTc0ODk3NGVhMDUyYmRjNmRlMi5zZXRDb250ZW50KGh0bWxfNmRjNmFiZDBjOGVhNDlmNmFlODcwMDRjNDY1ZmIwODMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTg3NTM4NTg3MjQzNDA1Yzg4YmZiNWEyOTIyZjdlNWYuYmluZFBvcHVwKHBvcHVwX2U3ODE1ZTZlOGJmYTQ5NzQ4OTc0ZWEwNTJiZGM2ZGUyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzMzYzVjYWU5Y2JiOTQ5MTg4OGU3MjUzNjFiODg2MTE0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yZTZkYTQ1NDY2NGM0ZTlmOWQ5NzQzYzFiMGJjNzI5YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yNTJhNGQ5NDQxOGE0N2ZiYTRiZmU3MDBlYmIwMGQxZSA9ICQoJzxkaXYgaWQ9Imh0bWxfMjUyYTRkOTQ0MThhNDdmYmE0YmZlNzAwZWJiMDBkMWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmU2ZGE0NTQ2NjRjNGU5ZjlkOTc0M2MxYjBiYzcyOWMuc2V0Q29udGVudChodG1sXzI1MmE0ZDk0NDE4YTQ3ZmJhNGJmZTcwMGViYjAwZDFlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzMzYzVjYWU5Y2JiOTQ5MTg4OGU3MjUzNjFiODg2MTE0LmJpbmRQb3B1cChwb3B1cF8yZTZkYTQ1NDY2NGM0ZTlmOWQ5NzQzYzFiMGJjNzI5Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNDI1N2M1NWU5N2U0ZGFjOWFlOGZhN2IzYTM3NjE1MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzViMWFiODcwZDAwYjQwMjViZjE2NGFiYmZjMGY2NWQzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2IwODgyZjNmOGQ5NzQxMTE4YjYwMDQ4NjdhNzAyZjA0ID0gJCgnPGRpdiBpZD0iaHRtbF9iMDg4MmYzZjhkOTc0MTExOGI2MDA0ODY3YTcwMmYwNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzViMWFiODcwZDAwYjQwMjViZjE2NGFiYmZjMGY2NWQzLnNldENvbnRlbnQoaHRtbF9iMDg4MmYzZjhkOTc0MTExOGI2MDA0ODY3YTcwMmYwNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yNDI1N2M1NWU5N2U0ZGFjOWFlOGZhN2IzYTM3NjE1MS5iaW5kUG9wdXAocG9wdXBfNWIxYWI4NzBkMDBiNDAyNWJmMTY0YWJiZmMwZjY1ZDMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTYxZDQ0NTYyZmE0NDRhODg4Y2ZlNzk4ODZlNjQxMWQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hNjMxOGE1OGJmZmM0NmZlOGI3MDEwMjliYTExYWRmNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMjhkZDdmZWI0OTY0NGY5YmZmZjMzYTBlNDU4OWI5NiA9ICQoJzxkaXYgaWQ9Imh0bWxfYTI4ZGQ3ZmViNDk2NDRmOWJmZmYzM2EwZTQ1ODliOTYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hNjMxOGE1OGJmZmM0NmZlOGI3MDEwMjliYTExYWRmNC5zZXRDb250ZW50KGh0bWxfYTI4ZGQ3ZmViNDk2NDRmOWJmZmYzM2EwZTQ1ODliOTYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTYxZDQ0NTYyZmE0NDRhODg4Y2ZlNzk4ODZlNjQxMWQuYmluZFBvcHVwKHBvcHVwX2E2MzE4YTU4YmZmYzQ2ZmU4YjcwMTAyOWJhMTFhZGY0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzllYmI5MjY5MjYyMDQwOTRhY2YwNmE0YjNmNDJiZGVjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y0NmI0NjFhM2FkZDRlMWE5NTFhMjFjOGViYTc5YzRlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2IxZmE2Y2ZjZDUxYzQwN2RhNDNlOGEwMWYwODkwMDNkID0gJCgnPGRpdiBpZD0iaHRtbF9iMWZhNmNmY2Q1MWM0MDdkYTQzZThhMDFmMDg5MDAzZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y0NmI0NjFhM2FkZDRlMWE5NTFhMjFjOGViYTc5YzRlLnNldENvbnRlbnQoaHRtbF9iMWZhNmNmY2Q1MWM0MDdkYTQzZThhMDFmMDg5MDAzZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85ZWJiOTI2OTI2MjA0MDk0YWNmMDZhNGIzZjQyYmRlYy5iaW5kUG9wdXAocG9wdXBfZjQ2YjQ2MWEzYWRkNGUxYTk1MWEyMWM4ZWJhNzljNGUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTk4MjdmOTMwY2M1NGMyYzk2MDNmMDdiYTlkNDk5MWMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTMxMDgzNDMzMjY0LC0xMjIuNDQ0MzE0MDI1MTg4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjY5NGJmMDk5MzFlNDIxMGFiNGFiYjhhOGYzNTIwOTMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTExN2EwYTBkODA1NGMyY2FiODkzMmFjZDE3YWQwY2UgPSAkKCc8ZGl2IGlkPSJodG1sXzUxMTdhMGEwZDgwNTRjMmNhYjg5MzJhY2QxN2FkMGNlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yNjk0YmYwOTkzMWU0MjEwYWI0YWJiOGE4ZjM1MjA5My5zZXRDb250ZW50KGh0bWxfNTExN2EwYTBkODA1NGMyY2FiODkzMmFjZDE3YWQwY2UpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTk4MjdmOTMwY2M1NGMyYzk2MDNmMDdiYTlkNDk5MWMuYmluZFBvcHVwKHBvcHVwXzI2OTRiZjA5OTMxZTQyMTBhYjRhYmI4YThmMzUyMDkzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNhZWJhYmJjMzQ1MzQ2NmY5YTk5YzE1MTNlMGFkNzc1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzk0NjJhNjMxYmU3MzQ3ZjZiMjYyNmUwYTNmMTFjYmY4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ3YWNjYTQ1NDIzNzQ2ZTVhM2JlMzI3ZTZjMWZiODhhID0gJCgnPGRpdiBpZD0iaHRtbF80N2FjY2E0NTQyMzc0NmU1YTNiZTMyN2U2YzFmYjg4YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzk0NjJhNjMxYmU3MzQ3ZjZiMjYyNmUwYTNmMTFjYmY4LnNldENvbnRlbnQoaHRtbF80N2FjY2E0NTQyMzc0NmU1YTNiZTMyN2U2YzFmYjg4YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zYWViYWJiYzM0NTM0NjZmOWE5OWMxNTEzZTBhZDc3NS5iaW5kUG9wdXAocG9wdXBfOTQ2MmE2MzFiZTczNDdmNmIyNjI2ZTBhM2YxMWNiZjgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDEyMjhjYzY0YzYyNDhkNDhjNDI2N2RlNjkxYzRjOGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjYwMTYwMTE0MTAzLC0xMjIuNDAzNjQ0NjIwNDM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTIyYWM4YmVlMzk1NDU5YTg1NWNjNTdlZjVhMDY1MDcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODkwMTc0YWZlZDRlNDRlOGI5NWMyNzNmYTI2NGRkYjIgPSAkKCc8ZGl2IGlkPSJodG1sXzg5MDE3NGFmZWQ0ZTQ0ZThiOTVjMjczZmEyNjRkZGIyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTIyYWM4YmVlMzk1NDU5YTg1NWNjNTdlZjVhMDY1MDcuc2V0Q29udGVudChodG1sXzg5MDE3NGFmZWQ0ZTQ0ZThiOTVjMjczZmEyNjRkZGIyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzQxMjI4Y2M2NGM2MjQ4ZDQ4YzQyNjdkZTY5MWM0YzhmLmJpbmRQb3B1cChwb3B1cF85MjJhYzhiZWUzOTU0NTlhODU1Y2M1N2VmNWEwNjUwNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yMzc0NjUwNGEwNmQ0ZmI2YTQ5YmY2ZWQ4ZTFjNjY3MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkzODFjNjZjZWFkMjQwOGViNDhjZDk0NGM0NjMyYzYyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzBlZGE3YWRkOThjNjRiMzhiZGY5ZTcwNDYwYjI1ZTJiID0gJCgnPGRpdiBpZD0iaHRtbF8wZWRhN2FkZDk4YzY0YjM4YmRmOWU3MDQ2MGIyNWUyYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTM4MWM2NmNlYWQyNDA4ZWI0OGNkOTQ0YzQ2MzJjNjIuc2V0Q29udGVudChodG1sXzBlZGE3YWRkOThjNjRiMzhiZGY5ZTcwNDYwYjI1ZTJiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzIzNzQ2NTA0YTA2ZDRmYjZhNDliZjZlZDhlMWM2NjcyLmJpbmRQb3B1cChwb3B1cF85MzgxYzY2Y2VhZDI0MDhlYjQ4Y2Q5NDRjNDYzMmM2Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xMWMzMGVjZjY4YzM0OTlmOTI2OWIyNDViMzE2NzJkNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBhZGJkNGE4ODQwMjQ4M2M5M2UzZjQ3MDRjOGU0OTg5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNmOWIxYTQ0ZGQwOTQ0NjFhYzNhZmQxMjZjNmZlODIyID0gJCgnPGRpdiBpZD0iaHRtbF8zZjliMWE0NGRkMDk0NDYxYWMzYWZkMTI2YzZmZTgyMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBhZGJkNGE4ODQwMjQ4M2M5M2UzZjQ3MDRjOGU0OTg5LnNldENvbnRlbnQoaHRtbF8zZjliMWE0NGRkMDk0NDYxYWMzYWZkMTI2YzZmZTgyMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xMWMzMGVjZjY4YzM0OTlmOTI2OWIyNDViMzE2NzJkNS5iaW5kUG9wdXAocG9wdXBfMGFkYmQ0YTg4NDAyNDgzYzkzZTNmNDcwNGM4ZTQ5ODkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODNmMTMwN2VkYzRlNGViMmJmODIyZjQ0ZWY1YmZlMDggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzc1MTE4ODk1Njk1LC0xMjIuNDE4MDQ1NDUyNzY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTk0MDQxOGMxNDQwNDRlZWI0NWVjYjkzODQ5MDdkMGMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMThkMzE3YTlmODhjNDQwN2E2NWI1NzM2MTQwMjg0N2IgPSAkKCc8ZGl2IGlkPSJodG1sXzE4ZDMxN2E5Zjg4YzQ0MDdhNjViNTczNjE0MDI4NDdiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81OTQwNDE4YzE0NDA0NGVlYjQ1ZWNiOTM4NDkwN2QwYy5zZXRDb250ZW50KGh0bWxfMThkMzE3YTlmODhjNDQwN2E2NWI1NzM2MTQwMjg0N2IpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODNmMTMwN2VkYzRlNGViMmJmODIyZjQ0ZWY1YmZlMDguYmluZFBvcHVwKHBvcHVwXzU5NDA0MThjMTQ0MDQ0ZWViNDVlY2I5Mzg0OTA3ZDBjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU4MTdjMmMxNTcxOTRkZGY5Mjc0MGFmZjFiZmMzYTRmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgyMDIzODQ3ODk3NSwtMTIyLjQwMTE2MTU1NTYwMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzgwZDNhYjY0MDI1MTQ0M2RhYmQwMTU0YmNmMTMxYjlkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzUyMGYwMjgwOGQ5YTQwMmM4ZWU3ZTk5N2I0Y2MwZDc4ID0gJCgnPGRpdiBpZD0iaHRtbF81MjBmMDI4MDhkOWE0MDJjOGVlN2U5OTdiNGNjMGQ3OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzgwZDNhYjY0MDI1MTQ0M2RhYmQwMTU0YmNmMTMxYjlkLnNldENvbnRlbnQoaHRtbF81MjBmMDI4MDhkOWE0MDJjOGVlN2U5OTdiNGNjMGQ3OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81ODE3YzJjMTU3MTk0ZGRmOTI3NDBhZmYxYmZjM2E0Zi5iaW5kUG9wdXAocG9wdXBfODBkM2FiNjQwMjUxNDQzZGFiZDAxNTRiY2YxMzFiOWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTYzYTlmNjg5NzZmNDQ5Njk4ZWVhMWQ4ZGJiOGZhN2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjcwMDUzMTk2Mjk5OTUsLTEyMi40MDM0MDg2NjkxOTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kMmY0NGY0N2EzMDA0MjZhOGQyZDY4Y2QyNDg0M2QxMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMzIxZTU5ZmFmMWQ0NGVmOWNlM2UxZjUwZjk5MTMwYSA9ICQoJzxkaXYgaWQ9Imh0bWxfYTMyMWU1OWZhZjFkNDRlZjljZTNlMWY1MGY5OTEzMGEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kMmY0NGY0N2EzMDA0MjZhOGQyZDY4Y2QyNDg0M2QxMy5zZXRDb250ZW50KGh0bWxfYTMyMWU1OWZhZjFkNDRlZjljZTNlMWY1MGY5OTEzMGEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNTYzYTlmNjg5NzZmNDQ5Njk4ZWVhMWQ4ZGJiOGZhN2UuYmluZFBvcHVwKHBvcHVwX2QyZjQ0ZjQ3YTMwMDQyNmE4ZDJkNjhjZDI0ODQzZDEzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQzMjI1MmE0ZWM3ZjQxMzk5ZThkZjA5YzY1YWFhZTA2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY2ZTVjOTVkZjA3MzQ0NjdiZWNjOTMyMzlkYzVmMmE0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM3Nzg0ZmYyYmFlOTRlNWRhYzAyY2E2MGZmMDZiNmFjID0gJCgnPGRpdiBpZD0iaHRtbF8zNzc4NGZmMmJhZTk0ZTVkYWMwMmNhNjBmZjA2YjZhYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82NmU1Yzk1ZGYwNzM0NDY3YmVjYzkzMjM5ZGM1ZjJhNC5zZXRDb250ZW50KGh0bWxfMzc3ODRmZjJiYWU5NGU1ZGFjMDJjYTYwZmYwNmI2YWMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNDMyMjUyYTRlYzdmNDEzOTllOGRmMDljNjVhYWFlMDYuYmluZFBvcHVwKHBvcHVwXzY2ZTVjOTVkZjA3MzQ0NjdiZWNjOTMyMzlkYzVmMmE0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg2M2EwMDg0NWJkOTQ1Mjk5MDBlN2QwODFiZjEzZjk2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmJmMWViZjg4ZWM1NDFmYThhNDJiYmZlYmI2NjUxZTIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjg1OGZiZWQ2M2IyNDBkODk1NGYxYTk4OTkyNjE5ZDggPSAkKCc8ZGl2IGlkPSJodG1sX2Y4NThmYmVkNjNiMjQwZDg5NTRmMWE5ODk5MjYxOWQ4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzJiZjFlYmY4OGVjNTQxZmE4YTQyYmJmZWJiNjY1MWUyLnNldENvbnRlbnQoaHRtbF9mODU4ZmJlZDYzYjI0MGQ4OTU0ZjFhOTg5OTI2MTlkOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84NjNhMDA4NDViZDk0NTI5OTAwZTdkMDgxYmYxM2Y5Ni5iaW5kUG9wdXAocG9wdXBfMmJmMWViZjg4ZWM1NDFmYThhNDJiYmZlYmI2NjUxZTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODc3MzY5YTkzZTA0NDQyNWExNDAxYzMyNjBmMTc2NGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTM5MmRmMjExMWYyNGE0YmE0Nzk2OTY3OTZmNDAxMmYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTQ4OGM3YzY1YmI0NDAxZTljNTVmZGFjNDBhYzc5YmMgPSAkKCc8ZGl2IGlkPSJodG1sX2U0ODhjN2M2NWJiNDQwMWU5YzU1ZmRhYzQwYWM3OWJjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GUkFVRDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTM5MmRmMjExMWYyNGE0YmE0Nzk2OTY3OTZmNDAxMmYuc2V0Q29udGVudChodG1sX2U0ODhjN2M2NWJiNDQwMWU5YzU1ZmRhYzQwYWM3OWJjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzg3NzM2OWE5M2UwNDQ0MjVhMTQwMWMzMjYwZjE3NjRmLmJpbmRQb3B1cChwb3B1cF85MzkyZGYyMTExZjI0YTRiYTQ3OTY5Njc5NmY0MDEyZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80MjNjZjlhODg2OTc0ZjgxODc5ZDA1ODhhNDVhY2NlNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MDUzODk5MzcyNSwtMTIyLjQwMzkxNTY4MTU3MTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWZlYzY1OTA2Yjk3NDM5Y2I5ZWNjZjE0OGU2NTFlNjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjQ3NjMwNGNmM2E3NDE4YmJmNjUzYTQ3MDMxNmQ1MGQgPSAkKCc8ZGl2IGlkPSJodG1sX2Y0NzYzMDRjZjNhNzQxOGJiZjY1M2E0NzAzMTZkNTBkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85ZmVjNjU5MDZiOTc0MzljYjllY2NmMTQ4ZTY1MWU2Mi5zZXRDb250ZW50KGh0bWxfZjQ3NjMwNGNmM2E3NDE4YmJmNjUzYTQ3MDMxNmQ1MGQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNDIzY2Y5YTg4Njk3NGY4MTg3OWQwNTg4YTQ1YWNjZTQuYmluZFBvcHVwKHBvcHVwXzlmZWM2NTkwNmI5NzQzOWNiOWVjY2YxNDhlNjUxZTYyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NlOTBiMTY3Y2IzMTRjZWFiOTVkMDlhMjQwOWUxZDNjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMjY1MzdlNTA2NmU0ZTY1YjE0NjUwM2Y5NmI3NmM0MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83MzViMDk2OWNjYzg0YTQyYTI2MzU5NDY3M2U4NjY4NiA9ICQoJzxkaXYgaWQ9Imh0bWxfNzM1YjA5NjljY2M4NGE0MmEyNjM1OTQ2NzNlODY2ODYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMjY1MzdlNTA2NmU0ZTY1YjE0NjUwM2Y5NmI3NmM0MC5zZXRDb250ZW50KGh0bWxfNzM1YjA5NjljY2M4NGE0MmEyNjM1OTQ2NzNlODY2ODYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfY2U5MGIxNjdjYjMxNGNlYWI5NWQwOWEyNDA5ZTFkM2MuYmluZFBvcHVwKHBvcHVwXzMyNjUzN2U1MDY2ZTRlNjViMTQ2NTAzZjk2Yjc2YzQwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzMzYzkzMmMyOTk0MTQzNDM5NGIxODExMjFmMTFlOGQ0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQwNzM2MDU0ODM1NzksLTEyMi4zODg3NTMwNDY5OTddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xZmU2ZjgwZWJkZDc0NWZhYTQ2OGMzNjdhOWFmMzM4ZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xOGFjNDUwZWQ3ZDc0YWI4OGJjZGM1OTlhN2U3YmE3OSA9ICQoJzxkaXYgaWQ9Imh0bWxfMThhYzQ1MGVkN2Q3NGFiODhiY2RjNTk5YTdlN2JhNzkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xZmU2ZjgwZWJkZDc0NWZhYTQ2OGMzNjdhOWFmMzM4Zi5zZXRDb250ZW50KGh0bWxfMThhYzQ1MGVkN2Q3NGFiODhiY2RjNTk5YTdlN2JhNzkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzNjOTMyYzI5OTQxNDM0Mzk0YjE4MTEyMWYxMWU4ZDQuYmluZFBvcHVwKHBvcHVwXzFmZTZmODBlYmRkNzQ1ZmFhNDY4YzM2N2E5YWYzMzhmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYyNmY1ZDI3MTFkMTRjNWZiZTIxYjEyZWEyMzc4MjRiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0OTkxMjk0NDM2NiwtMTIyLjQzNzc5OTcwMzQ2OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzNhNTgzYTVhOTRlNzRhY2U4NjFhMzdlY2I5ZmRkZDFlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzIzNjZjMWY1ZDFhNDQ0MDU5ZmYzZTk1MjBmZTU0ZDhhID0gJCgnPGRpdiBpZD0iaHRtbF8yMzY2YzFmNWQxYTQ0NDA1OWZmM2U5NTIwZmU1NGQ4YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfM2E1ODNhNWE5NGU3NGFjZTg2MWEzN2VjYjlmZGRkMWUuc2V0Q29udGVudChodG1sXzIzNjZjMWY1ZDFhNDQ0MDU5ZmYzZTk1MjBmZTU0ZDhhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzYyNmY1ZDI3MTFkMTRjNWZiZTIxYjEyZWEyMzc4MjRiLmJpbmRQb3B1cChwb3B1cF8zYTU4M2E1YTk0ZTc0YWNlODYxYTM3ZWNiOWZkZGQxZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iMTQzOTk4YzEyOTU0NGMzYTk5ODk1Yjk4MmJhMzM5NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzA5MDI3NDM2NjksLTEyMi40MjEzMzI2ODQ2MzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jOGM5NDJmNzI2Yjg0YWZjODM0NTdmYmVmN2ZmNzNhYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wOGRkMDdhOGUzMGU0YmRiOWQ4NGRmNTkwNzY4M2Q3ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfMDhkZDA3YThlMzBlNGJkYjlkODRkZjU5MDc2ODNkN2QiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jOGM5NDJmNzI2Yjg0YWZjODM0NTdmYmVmN2ZmNzNhYy5zZXRDb250ZW50KGh0bWxfMDhkZDA3YThlMzBlNGJkYjlkODRkZjU5MDc2ODNkN2QpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjE0Mzk5OGMxMjk1NDRjM2E5OTg5NWI5ODJiYTMzOTQuYmluZFBvcHVwKHBvcHVwX2M4Yzk0MmY3MjZiODRhZmM4MzQ1N2ZiZWY3ZmY3M2FjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZhZGVkNGI4NDUzNzRhMzBiYjg4YzNiZWM4OTMwOWM1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY3NTExMTM5N2QzNDQ4MmNiYzUxYjVkZTk3Mjk2YWEzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JhZmYxZWM4ZjBiNDRiOTA4YmU0MTdkZDY5ZjQxZGQzID0gJCgnPGRpdiBpZD0iaHRtbF9iYWZmMWVjOGYwYjQ0YjkwOGJlNDE3ZGQ2OWY0MWRkMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY3NTExMTM5N2QzNDQ4MmNiYzUxYjVkZTk3Mjk2YWEzLnNldENvbnRlbnQoaHRtbF9iYWZmMWVjOGYwYjQ0YjkwOGJlNDE3ZGQ2OWY0MWRkMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82YWRlZDRiODQ1Mzc0YTMwYmI4OGMzYmVjODkzMDljNS5iaW5kUG9wdXAocG9wdXBfNjc1MTExMzk3ZDM0NDgyY2JjNTFiNWRlOTcyOTZhYTMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTFhNTE4MDY5NjRkNDY2OGEyOTNiY2UzYjZmZjc5M2QgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDZmMGRlMWMwZGE5NDE2Njg2MjRiYjliZDMwYzA0N2MgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjNlMDY4ZDcyZjc2NGJjN2FmNDc1YzBmNWM4ZWRiOTQgPSAkKCc8ZGl2IGlkPSJodG1sXzYzZTA2OGQ3MmY3NjRiYzdhZjQ3NWMwZjVjOGVkYjk0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDZmMGRlMWMwZGE5NDE2Njg2MjRiYjliZDMwYzA0N2Muc2V0Q29udGVudChodG1sXzYzZTA2OGQ3MmY3NjRiYzdhZjQ3NWMwZjVjOGVkYjk0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2ExYTUxODA2OTY0ZDQ2NjhhMjkzYmNlM2I2ZmY3OTNkLmJpbmRQb3B1cChwb3B1cF80NmYwZGUxYzBkYTk0MTY2ODYyNGJiOWJkMzBjMDQ3Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82ZDcwOWY2N2NlODY0MGFhODIxZTAyMmQyNTc0MmYxMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDAzNzk5OTUxMjc5NSwtMTIyLjQwNDU5NDE0MDYzNF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM4ZjMwYmFkMDBiZDRjMjU4NTNkY2E0MDdlOGEzMDc2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y4NThkMjE3NzRiZjRiYjBhZjE4ODc2MGUzZTYxMDEzID0gJCgnPGRpdiBpZD0iaHRtbF9mODU4ZDIxNzc0YmY0YmIwYWYxODg3NjBlM2U2MTAxMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zOGYzMGJhZDAwYmQ0YzI1ODUzZGNhNDA3ZThhMzA3Ni5zZXRDb250ZW50KGh0bWxfZjg1OGQyMTc3NGJmNGJiMGFmMTg4NzYwZTNlNjEwMTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNmQ3MDlmNjdjZTg2NDBhYTgyMWUwMjJkMjU3NDJmMTAuYmluZFBvcHVwKHBvcHVwXzM4ZjMwYmFkMDBiZDRjMjU4NTNkY2E0MDdlOGEzMDc2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I5NzZlYWYzODAzMzQxZmU5MjFjMzk5ODQzMjFlM2ZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzk1MzMzODI2NzQzNiwtMTIyLjM5NzM3Mzc0MDA2Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M2YzAzYWI1ZjdjZTQyMDZhMmM2N2ZlY2NkNzUzY2EwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzVhNGEyZTMxNTFmMjRlZjVhOTFhZTliNzY3ZGExNTE2ID0gJCgnPGRpdiBpZD0iaHRtbF81YTRhMmUzMTUxZjI0ZWY1YTkxYWU5Yjc2N2RhMTUxNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jNmMwM2FiNWY3Y2U0MjA2YTJjNjdmZWNjZDc1M2NhMC5zZXRDb250ZW50KGh0bWxfNWE0YTJlMzE1MWYyNGVmNWE5MWFlOWI3NjdkYTE1MTYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjk3NmVhZjM4MDMzNDFmZTkyMWMzOTk4NDMyMWUzZmEuYmluZFBvcHVwKHBvcHVwX2M2YzAzYWI1ZjdjZTQyMDZhMmM2N2ZlY2NkNzUzY2EwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFlYzY0ODY0MGM2YTQ4NGE4ZDY4ZTkzNjBjZTNiOWJkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NTE1ODc0MTYyMjk1LC0xMjIuNDA3NDM0OTg5NTIzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTk5NzAyMDcxNWE5NDA4N2JjZjhmNGFiNzZmMmIwOTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzU0OTFhMTlhODQ3NGYxZGI2ZDE5Mzg2Y2MzYmRhNmYgPSAkKCc8ZGl2IGlkPSJodG1sXzM1NDkxYTE5YTg0NzRmMWRiNmQxOTM4NmNjM2JkYTZmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTk5NzAyMDcxNWE5NDA4N2JjZjhmNGFiNzZmMmIwOTcuc2V0Q29udGVudChodG1sXzM1NDkxYTE5YTg0NzRmMWRiNmQxOTM4NmNjM2JkYTZmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzFlYzY0ODY0MGM2YTQ4NGE4ZDY4ZTkzNjBjZTNiOWJkLmJpbmRQb3B1cChwb3B1cF9lOTk3MDIwNzE1YTk0MDg3YmNmOGY0YWI3NmYyYjA5Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNjFiZDQ2NDUyZTQ0NjQwYWRlM2M4ZmE5NzhiNzU2OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NDY3OTMyMGNjNDE0NDZlYjc0NzdiNTA1Yzg1NGY3NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mYzQyNDI4NGRlYjk0YjRhOTcwZjRlZWQwOGE3YTc3NyA9ICQoJzxkaXYgaWQ9Imh0bWxfZmM0MjQyODRkZWI5NGI0YTk3MGY0ZWVkMDhhN2E3NzciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlBST1NUSVRVVElPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTQ2NzkzMjBjYzQxNDQ2ZWI3NDc3YjUwNWM4NTRmNzcuc2V0Q29udGVudChodG1sX2ZjNDI0Mjg0ZGViOTRiNGE5NzBmNGVlZDA4YTdhNzc3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzA2MWJkNDY0NTJlNDQ2NDBhZGUzYzhmYTk3OGI3NTY5LmJpbmRQb3B1cChwb3B1cF81NDY3OTMyMGNjNDE0NDZlYjc0NzdiNTA1Yzg1NGY3Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iODY2ZjZlZmZmNjM0YWFlYmJkZjcwNDdmYzY0OTc4ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wMWFjMWNkNjk0Y2U0ZWFmYjdkZDA0NTIwNzA2YzMyNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84YjE2ZTMyZWFkNTY0MzQ4ODY3ODljNjNkYjQ3ODQ1NCA9ICQoJzxkaXYgaWQ9Imh0bWxfOGIxNmUzMmVhZDU2NDM0ODg2Nzg5YzYzZGI0Nzg0NTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wMWFjMWNkNjk0Y2U0ZWFmYjdkZDA0NTIwNzA2YzMyNi5zZXRDb250ZW50KGh0bWxfOGIxNmUzMmVhZDU2NDM0ODg2Nzg5YzYzZGI0Nzg0NTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjg2NmY2ZWZmZjYzNGFhZWJiZGY3MDQ3ZmM2NDk3OGQuYmluZFBvcHVwKHBvcHVwXzAxYWMxY2Q2OTRjZTRlYWZiN2RkMDQ1MjA3MDZjMzI2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVkNWYyMjA4Y2EzMDQ5NzE4OWFlN2JlYzM0Y2UzNDQ4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ZjE4NmU1NTgxMTc0NDEwYjFlNGUyZGFlZjRmOGMzOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NmMyMjE3MWM3M2Q0ZGJhOTUzNjBmZjU4NTAzZmQyNiA9ICQoJzxkaXYgaWQ9Imh0bWxfOTZjMjIxNzFjNzNkNGRiYTk1MzYwZmY1ODUwM2ZkMjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNGYxODZlNTU4MTE3NDQxMGIxZTRlMmRhZWY0ZjhjMzguc2V0Q29udGVudChodG1sXzk2YzIyMTcxYzczZDRkYmE5NTM2MGZmNTg1MDNmZDI2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzVkNWYyMjA4Y2EzMDQ5NzE4OWFlN2JlYzM0Y2UzNDQ4LmJpbmRQb3B1cChwb3B1cF80ZjE4NmU1NTgxMTc0NDEwYjFlNGUyZGFlZjRmOGMzOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kMjkxMDEzODUwMWQ0ZjExOGViYmJhMjc1MzlmOTdiNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWIwMDVjMDY4OGQ3NDY2ODhiZmM3ZTYwZGRmMTAyMWYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTc5NmEwMTY1ZTY1NDI5OTlkNjhlZmY0NzhmZDI4OWIgPSAkKCc8ZGl2IGlkPSJodG1sXzE3OTZhMDE2NWU2NTQyOTk5ZDY4ZWZmNDc4ZmQyODliIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xYjAwNWMwNjg4ZDc0NjY4OGJmYzdlNjBkZGYxMDIxZi5zZXRDb250ZW50KGh0bWxfMTc5NmEwMTY1ZTY1NDI5OTlkNjhlZmY0NzhmZDI4OWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDI5MTAxMzg1MDFkNGYxMThlYmJiYTI3NTM5Zjk3YjcuYmluZFBvcHVwKHBvcHVwXzFiMDA1YzA2ODhkNzQ2Njg4YmZjN2U2MGRkZjEwMjFmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIzZDVmYjMyY2Q5NjRmYWY4MzM2NmQxZTBjODYwNDhjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yMTI0NTE0ZWNjNmI0NGMzODUzYTVhODRlMDNlZTU0YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kNDg2ZDNmMmNlYTg0MDFkYmQ2MjMxZmNmNWJjNzg2MyA9ICQoJzxkaXYgaWQ9Imh0bWxfZDQ4NmQzZjJjZWE4NDAxZGJkNjIzMWZjZjViYzc4NjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yMTI0NTE0ZWNjNmI0NGMzODUzYTVhODRlMDNlZTU0Yi5zZXRDb250ZW50KGh0bWxfZDQ4NmQzZjJjZWE4NDAxZGJkNjIzMWZjZjViYzc4NjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMjNkNWZiMzJjZDk2NGZhZjgzMzY2ZDFlMGM4NjA0OGMuYmluZFBvcHVwKHBvcHVwXzIxMjQ1MTRlY2M2YjQ0YzM4NTNhNWE4NGUwM2VlNTRiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MyOTIzNjI4NTI5MTQxOTZhODc3NTM2MDYxZGM3YWEzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODE0NzdhNTZiM2I5NGY2OTlhNzM5NGJjMzZmMDNhNzggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzRiMTNkYWZmYjE4NDVlZGJiZDczMTE5MjFlMTM1ZjkgPSAkKCc8ZGl2IGlkPSJodG1sX2M0YjEzZGFmZmIxODQ1ZWRiYmQ3MzExOTIxZTEzNWY5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84MTQ3N2E1NmIzYjk0ZjY5OWE3Mzk0YmMzNmYwM2E3OC5zZXRDb250ZW50KGh0bWxfYzRiMTNkYWZmYjE4NDVlZGJiZDczMTE5MjFlMTM1ZjkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzI5MjM2Mjg1MjkxNDE5NmE4Nzc1MzYwNjFkYzdhYTMuYmluZFBvcHVwKHBvcHVwXzgxNDc3YTU2YjNiOTRmNjk5YTczOTRiYzM2ZjAzYTc4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ1NTA2YmUxNDEzYzRhYTU5MmE0ZTY2MDc1NDBiM2EwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI5MjExNDY0NzM1OSwtMTIyLjQwMDgzNDI4MzAzMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA1NWIwY2QxYWZjYjQ3ODVhMGYzNDMwZWY0NjJkNjIxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2FkNmQ5NzkwODlmOTQ0NzliNjZkNzE5OTVjYjM3YmE5ID0gJCgnPGRpdiBpZD0iaHRtbF9hZDZkOTc5MDg5Zjk0NDc5YjY2ZDcxOTk1Y2IzN2JhOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzA1NWIwY2QxYWZjYjQ3ODVhMGYzNDMwZWY0NjJkNjIxLnNldENvbnRlbnQoaHRtbF9hZDZkOTc5MDg5Zjk0NDc5YjY2ZDcxOTk1Y2IzN2JhOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80NTUwNmJlMTQxM2M0YWE1OTJhNGU2NjA3NTQwYjNhMC5iaW5kUG9wdXAocG9wdXBfMDU1YjBjZDFhZmNiNDc4NWEwZjM0MzBlZjQ2MmQ2MjEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmE5YWJmOTkwYzA5NDNiZDg5YjM3MmZjMTc5Y2E0NTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82NWM0ZjU2NGNlZTc0ZjFmODgxZjQzOTFhZTM5N2EwMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zMDc2MzIyOWMzMzY0NjJlOGI5NzBkZDUzNmNjZmRiNSA9ICQoJzxkaXYgaWQ9Imh0bWxfMzA3NjMyMjljMzM2NDYyZThiOTcwZGQ1MzZjY2ZkYjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY1YzRmNTY0Y2VlNzRmMWY4ODFmNDM5MWFlMzk3YTAxLnNldENvbnRlbnQoaHRtbF8zMDc2MzIyOWMzMzY0NjJlOGI5NzBkZDUzNmNjZmRiNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mYTlhYmY5OTBjMDk0M2JkODliMzcyZmMxNzljYTQ1NS5iaW5kUG9wdXAocG9wdXBfNjVjNGY1NjRjZWU3NGYxZjg4MWY0MzkxYWUzOTdhMDEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTQwOTQ2YzM3ZDdlNDRkMGJiMmFkNmRjZmUxNmJlNmQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2EyMzY5ODkwNDUyMjQ5YzlhZTE0OTc4OTJlMzFjYTM2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzA1NjBmYzk3NWU4ZjQ3M2ViN2E5ZDFlMTQxMWFhZjRjID0gJCgnPGRpdiBpZD0iaHRtbF8wNTYwZmM5NzVlOGY0NzNlYjdhOWQxZTE0MTFhYWY0YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hMjM2OTg5MDQ1MjI0OWM5YWUxNDk3ODkyZTMxY2EzNi5zZXRDb250ZW50KGh0bWxfMDU2MGZjOTc1ZThmNDczZWI3YTlkMWUxNDExYWFmNGMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNTQwOTQ2YzM3ZDdlNDRkMGJiMmFkNmRjZmUxNmJlNmQuYmluZFBvcHVwKHBvcHVwX2EyMzY5ODkwNDUyMjQ5YzlhZTE0OTc4OTJlMzFjYTM2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg3NDY0N2MxZjE4YTRiZTY5MjdlMGNhM2YzYWIwYWFlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hZTdmNTA3NzI2ZDk0ZTkzOGUwN2Q2MWM4ZDA3YTVkZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xZjU5NGRmZTI2OTU0OTk3OGU4M2JjMThjZWYyNDlkNSA9ICQoJzxkaXYgaWQ9Imh0bWxfMWY1OTRkZmUyNjk1NDk5NzhlODNiYzE4Y2VmMjQ5ZDUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNVU1BJQ0lPVVMgT0NDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hZTdmNTA3NzI2ZDk0ZTkzOGUwN2Q2MWM4ZDA3YTVkZC5zZXRDb250ZW50KGh0bWxfMWY1OTRkZmUyNjk1NDk5NzhlODNiYzE4Y2VmMjQ5ZDUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODc0NjQ3YzFmMThhNGJlNjkyN2UwY2EzZjNhYjBhYWUuYmluZFBvcHVwKHBvcHVwX2FlN2Y1MDc3MjZkOTRlOTM4ZTA3ZDYxYzhkMDdhNWRkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk4MzE1ZTI4YzJhODRlNDBiMDlkYzA2YWE1YWYxYTY4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NjZiNjU3NDAxYjY0ODY1OTUwMWEzZTE4ZmY3OTgwNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yMzFlN2YzNzNmOGI0NDIwODBlMjlhZGM0MGM3OGEwNyA9ICQoJzxkaXYgaWQ9Imh0bWxfMjMxZTdmMzczZjhiNDQyMDgwZTI5YWRjNDBjNzhhMDciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NjZiNjU3NDAxYjY0ODY1OTUwMWEzZTE4ZmY3OTgwNC5zZXRDb250ZW50KGh0bWxfMjMxZTdmMzczZjhiNDQyMDgwZTI5YWRjNDBjNzhhMDcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTgzMTVlMjhjMmE4NGU0MGIwOWRjMDZhYTVhZjFhNjguYmluZFBvcHVwKHBvcHVwXzU2NmI2NTc0MDFiNjQ4NjU5NTAxYTNlMThmZjc5ODA0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NiMDVkYWQ4YjdjODQ4NGY4NmI5Mjk5OWQ4YmEyMGE4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MzIzNTQ0OTkwNCwtMTIyLjQxMTg1NzAzMjU0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjg5MmFmNDY0YTRkNDg0MDk4NzFkOWMzMjYwMmU4ZmUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDcyZGI1ZmE0M2E1NDNjZmIyZDRkMDQ3NTM0NDA1YTYgPSAkKCc8ZGl2IGlkPSJodG1sX2Q3MmRiNWZhNDNhNTQzY2ZiMmQ0ZDA0NzUzNDQwNWE2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iODkyYWY0NjRhNGQ0ODQwOTg3MWQ5YzMyNjAyZThmZS5zZXRDb250ZW50KGh0bWxfZDcyZGI1ZmE0M2E1NDNjZmIyZDRkMDQ3NTM0NDA1YTYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfY2IwNWRhZDhiN2M4NDg0Zjg2YjkyOTk5ZDhiYTIwYTguYmluZFBvcHVwKHBvcHVwX2I4OTJhZjQ2NGE0ZDQ4NDA5ODcxZDljMzI2MDJlOGZlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcyMjc3NWFhZGIwZDRmYjU4ZTMzYWI3MmEwZDQ3M2NmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzNlODMzYjczNzQ5YzRiZjliZDFlODFmMDM5NzJkZDkyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzEwNGQ2NjA1OGFhMjRiMjk4ZTg3YmJiZjVhN2FlODQxID0gJCgnPGRpdiBpZD0iaHRtbF8xMDRkNjYwNThhYTI0YjI5OGU4N2JiYmY1YTdhZTg0MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzNlODMzYjczNzQ5YzRiZjliZDFlODFmMDM5NzJkZDkyLnNldENvbnRlbnQoaHRtbF8xMDRkNjYwNThhYTI0YjI5OGU4N2JiYmY1YTdhZTg0MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83MjI3NzVhYWRiMGQ0ZmI1OGUzM2FiNzJhMGQ0NzNjZi5iaW5kUG9wdXAocG9wdXBfM2U4MzNiNzM3NDljNGJmOWJkMWU4MWYwMzk3MmRkOTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjhhNWEyYTdmYmQ0NGY5YzhiMzM0OWNmZmQ5YTAyMjMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODcwNzk4MTQ0NDQzLC0xMjIuNDI1ODgzMzU4MTQ4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODAzNmQzYjMyMjRiNDE1YTk4NjFkNzc5N2U1MTY2NDYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjI1MTQ2ZmY0ZGY5NDRlMmJkZjM1ZmYyNWRiNDViYTUgPSAkKCc8ZGl2IGlkPSJodG1sX2YyNTE0NmZmNGRmOTQ0ZTJiZGYzNWZmMjVkYjQ1YmE1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzgwMzZkM2IzMjI0YjQxNWE5ODYxZDc3OTdlNTE2NjQ2LnNldENvbnRlbnQoaHRtbF9mMjUxNDZmZjRkZjk0NGUyYmRmMzVmZjI1ZGI0NWJhNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82OGE1YTJhN2ZiZDQ0ZjljOGIzMzQ5Y2ZmZDlhMDIyMy5iaW5kUG9wdXAocG9wdXBfODAzNmQzYjMyMjRiNDE1YTk4NjFkNzc5N2U1MTY2NDYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGJjOWVlOGUxNmEzNDI1ZmI1YmFmOTM5ODAzODZjMmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzYwMzc0NDY2ODYyMDQsLTEyMi40MTUxMjY1NDMwMDEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzViODQwZDIxZTk1MTQ5NTU4NzVmOTM2ODliYjEwYWJhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg1NmRjMWQ5NWI5ZDRiMjk5Mjg2OGM1ZDRhNGU4ZGIxID0gJCgnPGRpdiBpZD0iaHRtbF84NTZkYzFkOTViOWQ0YjI5OTI4NjhjNWQ0YTRlOGRiMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81Yjg0MGQyMWU5NTE0OTU1ODc1ZjkzNjg5YmIxMGFiYS5zZXRDb250ZW50KGh0bWxfODU2ZGMxZDk1YjlkNGIyOTkyODY4YzVkNGE0ZThkYjEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOGJjOWVlOGUxNmEzNDI1ZmI1YmFmOTM5ODAzODZjMmEuYmluZFBvcHVwKHBvcHVwXzViODQwZDIxZTk1MTQ5NTU4NzVmOTM2ODliYjEwYWJhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZkM2Q1OTM2MWRhNTQ0ZWM4YWQ4NzhhOWI1MWQzNTkzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEyNzY3ODg0ODIxLC0xMjIuNDMxOTI4MDExMDg5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjk3MWMzMWYxMDdkNDg2ZGFjNGQzN2NjZTNmNjVlN2QgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzcxNzkzOWQ0YzFkNDZiYjhiMzBjYjQ2N2JjMDNiZTAgPSAkKCc8ZGl2IGlkPSJodG1sX2M3MTc5MzlkNGMxZDQ2YmI4YjMwY2I0NjdiYzAzYmUwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjk3MWMzMWYxMDdkNDg2ZGFjNGQzN2NjZTNmNjVlN2Quc2V0Q29udGVudChodG1sX2M3MTc5MzlkNGMxZDQ2YmI4YjMwY2I0NjdiYzAzYmUwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzZkM2Q1OTM2MWRhNTQ0ZWM4YWQ4NzhhOWI1MWQzNTkzLmJpbmRQb3B1cChwb3B1cF8yOTcxYzMxZjEwN2Q0ODZkYWM0ZDM3Y2NlM2Y2NWU3ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNGEwYTk0ZThhNTQ0Y2FhOGRhMjg2ZTBjMTFhZTkyNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4OTU3MTAyNTU4NjMsLTEyMi40MDIxNjM3MTM2MThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iNzIzODNkNWExOGY0NjVkYjdmODkzY2NmODhhZDRjYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85ODZjNGY4YzEyYzE0MjcwODE4NzE1MGY2OWQ4Nzg1ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfOTg2YzRmOGMxMmMxNDI3MDgxODcxNTBmNjlkODc4NWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVU5LRU5ORVNTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iNzIzODNkNWExOGY0NjVkYjdmODkzY2NmODhhZDRjYS5zZXRDb250ZW50KGh0bWxfOTg2YzRmOGMxMmMxNDI3MDgxODcxNTBmNjlkODc4NWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDRhMGE5NGU4YTU0NGNhYThkYTI4NmUwYzExYWU5MjcuYmluZFBvcHVwKHBvcHVwX2I3MjM4M2Q1YTE4ZjQ2NWRiN2Y4OTNjY2Y4OGFkNGNhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RjMzhkMjFjMTNjZTRmMmU4NmZlMTRmZmY3OTE1OTBlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2EyY2MyMTc0MDc1YTQ2NDc5ZmNiNzIxMDUzODMyMjI1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzY5NTNiMTk5MjIxNzQxZDA4N2MxOTJlZjg0ZGY0ZTY1ID0gJCgnPGRpdiBpZD0iaHRtbF82OTUzYjE5OTIyMTc0MWQwODdjMTkyZWY4NGRmNGU2NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2EyY2MyMTc0MDc1YTQ2NDc5ZmNiNzIxMDUzODMyMjI1LnNldENvbnRlbnQoaHRtbF82OTUzYjE5OTIyMTc0MWQwODdjMTkyZWY4NGRmNGU2NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kYzM4ZDIxYzEzY2U0ZjJlODZmZTE0ZmZmNzkxNTkwZS5iaW5kUG9wdXAocG9wdXBfYTJjYzIxNzQwNzVhNDY0NzlmY2I3MjEwNTM4MzIyMjUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGY4ZmIwODFiOTEyNGVlMGI3ZTBlZmVkODc2YzM4YjAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM4MzY1NTY1MzQ3OTQsLTEyMi40MTM3OTA5NzI3ODA5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU1NjU5ODNkNTUzMDRhMWM5ZDU3NTY2YmZmMTJmMWM0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg1ZjllM2JlMTE2ZTQ5ODdhYTdlN2NlNmI3YWRmNmZhID0gJCgnPGRpdiBpZD0iaHRtbF84NWY5ZTNiZTExNmU0OTg3YWE3ZTdjZTZiN2FkZjZmYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NTY1OTgzZDU1MzA0YTFjOWQ1NzU2NmJmZjEyZjFjNC5zZXRDb250ZW50KGh0bWxfODVmOWUzYmUxMTZlNDk4N2FhN2U3Y2U2YjdhZGY2ZmEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZGY4ZmIwODFiOTEyNGVlMGI3ZTBlZmVkODc2YzM4YjAuYmluZFBvcHVwKHBvcHVwXzU1NjU5ODNkNTUzMDRhMWM5ZDU3NTY2YmZmMTJmMWM0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg2NmZhOGU2MTkzZDQzOWI5ZGJkNDk0NWUxYmZlYjU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FiNmRhMjkyN2RjNzQ4MmRhN2RjZDY4YmFiYzEzOTNiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzEzOTFjZWI1OGY3NTQwMDU4NjBkZWJlNzIzYWZhNTAyID0gJCgnPGRpdiBpZD0iaHRtbF8xMzkxY2ViNThmNzU0MDA1ODYwZGViZTcyM2FmYTUwMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FiNmRhMjkyN2RjNzQ4MmRhN2RjZDY4YmFiYzEzOTNiLnNldENvbnRlbnQoaHRtbF8xMzkxY2ViNThmNzU0MDA1ODYwZGViZTcyM2FmYTUwMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84NjZmYThlNjE5M2Q0MzliOWRiZDQ5NDVlMWJmZWI1NS5iaW5kUG9wdXAocG9wdXBfYWI2ZGEyOTI3ZGM3NDgyZGE3ZGNkNjhiYWJjMTM5M2IpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjg5OWY0ZDRhYzZkNDMzYTk2ZWNiZDIzOTgxMTU0MjYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzczNjIzNjA1MjEyOTYsLTEyMi40MjIwNjcxODQ5MzddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82Y2M5MmFiYWMyNGE0YmVlYmE3NGU5ZDdiZGI5MzZhMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84YWFmZTFjZmY1MDc0YTRlYTYyMjllMWZkN2FkMTdmOSA9ICQoJzxkaXYgaWQ9Imh0bWxfOGFhZmUxY2ZmNTA3NGE0ZWE2MjI5ZTFmZDdhZDE3ZjkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmNjOTJhYmFjMjRhNGJlZWJhNzRlOWQ3YmRiOTM2YTIuc2V0Q29udGVudChodG1sXzhhYWZlMWNmZjUwNzRhNGVhNjIyOWUxZmQ3YWQxN2Y5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzY4OTlmNGQ0YWM2ZDQzM2E5NmVjYmQyMzk4MTE1NDI2LmJpbmRQb3B1cChwb3B1cF82Y2M5MmFiYWMyNGE0YmVlYmE3NGU5ZDdiZGI5MzZhMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MmUwYThlZTk1Njk0MDM1YmJjMzA5YWE0MWFlMTJhOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdlOGFhM2NhOGNhOTQ3ZDVhYjVjNDNiNTU5YjUxYjA0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzliZDY1NDFiMzQ4MjQ0YzlhMDMyOWNjOWMzNTRmODlmID0gJCgnPGRpdiBpZD0iaHRtbF85YmQ2NTQxYjM0ODI0NGM5YTAzMjljYzljMzU0Zjg5ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83ZThhYTNjYThjYTk0N2Q1YWI1YzQzYjU1OWI1MWIwNC5zZXRDb250ZW50KGh0bWxfOWJkNjU0MWIzNDgyNDRjOWEwMzI5Y2M5YzM1NGY4OWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODJlMGE4ZWU5NTY5NDAzNWJiYzMwOWFhNDFhZTEyYTkuYmluZFBvcHVwKHBvcHVwXzdlOGFhM2NhOGNhOTQ3ZDVhYjVjNDNiNTU5YjUxYjA0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZhMTBhYWJhOGVjZDQ5Y2Q4NzkwOTFmZWQxMjBmYTVmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1OTk4ODMyMzc5Nzk2LC0xMjIuNDExNzQ3MzcxOTI0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDEzM2EwYWEyYWQ3NGQ1Yjk4ZDM0NTA5ODQ4YTY2NDggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDU4NGU2NjNhM2RiNDdlZTljMjE3YjJkN2M4ZWVmMjEgPSAkKCc8ZGl2IGlkPSJodG1sXzA1ODRlNjYzYTNkYjQ3ZWU5YzIxN2IyZDdjOGVlZjIxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVVNQSUNJT1VTIE9DQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDEzM2EwYWEyYWQ3NGQ1Yjk4ZDM0NTA5ODQ4YTY2NDguc2V0Q29udGVudChodG1sXzA1ODRlNjYzYTNkYjQ3ZWU5YzIxN2IyZDdjOGVlZjIxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2ZhMTBhYWJhOGVjZDQ5Y2Q4NzkwOTFmZWQxMjBmYTVmLmJpbmRQb3B1cChwb3B1cF8wMTMzYTBhYTJhZDc0ZDViOThkMzQ1MDk4NDhhNjY0OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xZTY1NzkxZDlmMGI0NWIwODIxMjAzZjVhZWRkZDI3ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc3NDI0MzZjOTUxYzRhZTlhOWQ3NzMzMGVjZWU3Y2U5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E0ZTFhOWQwYmM2MzRhMTViY2ExZDk5MzFiYjE1MjQ4ID0gJCgnPGRpdiBpZD0iaHRtbF9hNGUxYTlkMGJjNjM0YTE1YmNhMWQ5OTMxYmIxNTI0OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc3NDI0MzZjOTUxYzRhZTlhOWQ3NzMzMGVjZWU3Y2U5LnNldENvbnRlbnQoaHRtbF9hNGUxYTlkMGJjNjM0YTE1YmNhMWQ5OTMxYmIxNTI0OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xZTY1NzkxZDlmMGI0NWIwODIxMjAzZjVhZWRkZDI3Zi5iaW5kUG9wdXAocG9wdXBfNzc0MjQzNmM5NTFjNGFlOWE5ZDc3MzMwZWNlZTdjZTkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWFiMDdhODA2OGQ4NGE1YmE3NGMwYjk1NjBlOWRmM2MgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODUwMjI2NjIyNzg2LC0xMjIuNDExOTg3NjQzNTk1MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF84ZjdlMzkwYmI4M2U0ODgzYmJjMmExMjVhNzcyZjZmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iZGFmNmZkODkzNjQ0ZjgxYjgxYTM3YTkzOTMwOTI2YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84YjY0YzNhYWY5YjA0ZWQzYTA3YjdmYjIzOTUwMjEzNCA9ICQoJzxkaXYgaWQ9Imh0bWxfOGI2NGMzYWFmOWIwNGVkM2EwN2I3ZmIyMzk1MDIxMzQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmRhZjZmZDg5MzY0NGY4MWI4MWEzN2E5MzkzMDkyNmMuc2V0Q29udGVudChodG1sXzhiNjRjM2FhZjliMDRlZDNhMDdiN2ZiMjM5NTAyMTM0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzVhYjA3YTgwNjhkODRhNWJhNzRjMGI5NTYwZTlkZjNjLmJpbmRQb3B1cChwb3B1cF9iZGFmNmZkODkzNjQ0ZjgxYjgxYTM3YTkzOTMwOTI2Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xM2MzNDgyZmI2OWE0OGNkYWI2MTUzMzhlOTNiMGYyNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDYyMDY0OTEwNjQ5NSwtMTIyLjUwMDM4MDQyNzkxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZhZWY0YjY3ZTI4NTQxOTA5MzMzZTE4OGI4Y2ZiYjc1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JjMmE0NGQ1ZjA1YzRmYzk4YzI5OGY1ZTNhNGU5Y2ExID0gJCgnPGRpdiBpZD0iaHRtbF9iYzJhNDRkNWYwNWM0ZmM5OGMyOThmNWUzYTRlOWNhMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZhZWY0YjY3ZTI4NTQxOTA5MzMzZTE4OGI4Y2ZiYjc1LnNldENvbnRlbnQoaHRtbF9iYzJhNDRkNWYwNWM0ZmM5OGMyOThmNWUzYTRlOWNhMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xM2MzNDgyZmI2OWE0OGNkYWI2MTUzMzhlOTNiMGYyNi5iaW5kUG9wdXAocG9wdXBfNmFlZjRiNjdlMjg1NDE5MDkzMzNlMTg4YjhjZmJiNzUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjE5YTg4YjJjZWU1NGQ1Y2IzNjNmYzkwZDFmNzA4NDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzUxOTE4MjY3MjE3LC0xMjIuNDY2NTU4NzgwNjgzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOGVjNmU1NTkwYWY4NDg1MzgxYWQ0NDcyZmYzZjY4NzggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTQ0ODI3NDA0OTIyNGQwZjk3NTcxZmIwY2E2M2I1NDkgPSAkKCc8ZGl2IGlkPSJodG1sXzk0NDgyNzQwNDkyMjRkMGY5NzU3MWZiMGNhNjNiNTQ5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84ZWM2ZTU1OTBhZjg0ODUzODFhZDQ0NzJmZjNmNjg3OC5zZXRDb250ZW50KGh0bWxfOTQ0ODI3NDA0OTIyNGQwZjk3NTcxZmIwY2E2M2I1NDkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjE5YTg4YjJjZWU1NGQ1Y2IzNjNmYzkwZDFmNzA4NDIuYmluZFBvcHVwKHBvcHVwXzhlYzZlNTU5MGFmODQ4NTM4MWFkNDQ3MmZmM2Y2ODc4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYxNGU1NDRkNmI0MDRiZWFhYjFlN2I2MmNkOTQ5MmE3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQ5MDg0MTcyOTAyOCwtMTIyLjQ4NjkyNTk2MDExNDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDRmNmRmZDQyNDM0NDhjMjlkMTNkNzhlZGVlZjBhYmYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjRlZjY4YTQyNzNmNGZmZjk1M2U1MmY5NjM0M2M2MGMgPSAkKCc8ZGl2IGlkPSJodG1sXzY0ZWY2OGE0MjczZjRmZmY5NTNlNTJmOTYzNDNjNjBjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDRmNmRmZDQyNDM0NDhjMjlkMTNkNzhlZGVlZjBhYmYuc2V0Q29udGVudChodG1sXzY0ZWY2OGE0MjczZjRmZmY5NTNlNTJmOTYzNDNjNjBjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzYxNGU1NDRkNmI0MDRiZWFhYjFlN2I2MmNkOTQ5MmE3LmJpbmRQb3B1cChwb3B1cF80NGY2ZGZkNDI0MzQ0OGMyOWQxM2Q3OGVkZWVmMGFiZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yZDUyYWE5YmJjNzQ0OGE5YTc2ZTUyYTg2ZGQxNzg3YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2ODUzNjAxMjM1ODMsLTEyMi40MTU2MTYzMzgzMTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY0NzhhOWMwM2FlYTRjMGM4YjY3MmM3NmMzODJiMTU0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2EyMWVkZmRmZTZmNDQ2NThiYTBmN2E1MDcxZTFlYjU5ID0gJCgnPGRpdiBpZD0iaHRtbF9hMjFlZGZkZmU2ZjQ0NjU4YmEwZjdhNTA3MWUxZWI1OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82NDc4YTljMDNhZWE0YzBjOGI2NzJjNzZjMzgyYjE1NC5zZXRDb250ZW50KGh0bWxfYTIxZWRmZGZlNmY0NDY1OGJhMGY3YTUwNzFlMWViNTkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMmQ1MmFhOWJiYzc0NDhhOWE3NmU1MmE4NmRkMTc4N2EuYmluZFBvcHVwKHBvcHVwXzY0NzhhOWMwM2FlYTRjMGM4YjY3MmM3NmMzODJiMTU0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzMxNjI1ZGM0ZDJkYzQxYmU4MDhlMzQ0ODUyMDE0YzlkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDI5NzcxNDA3NCwtMTIyLjQ0OTc1MTY1MjU2M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzhmN2UzOTBiYjgzZTQ4ODNiYmMyYTEyNWE3NzJmNmY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JkNDZiYjJkZmVmODQ3MzdiMDU2NmRiZDYxMjg3ODlmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2VhOTZmMjM2MGRiODQzNWI4ZGUzYTYyZjM4MmJkNWRjID0gJCgnPGRpdiBpZD0iaHRtbF9lYTk2ZjIzNjBkYjg0MzViOGRlM2E2MmYzODJiZDVkYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JkNDZiYjJkZmVmODQ3MzdiMDU2NmRiZDYxMjg3ODlmLnNldENvbnRlbnQoaHRtbF9lYTk2ZjIzNjBkYjg0MzViOGRlM2E2MmYzODJiZDVkYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zMTYyNWRjNGQyZGM0MWJlODA4ZTM0NDg1MjAxNGM5ZC5iaW5kUG9wdXAocG9wdXBfYmQ0NmJiMmRmZWY4NDczN2IwNTY2ZGJkNjEyODc4OWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2RhZWI4M2VlZDcyNGUwZGEyMTAzYWJjOTgzYjBkYjAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTQ0NjU4OWU0ZWQzNGRiMDg5M2I5NzRkNzdmYmE1OTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGE2Mzc0ZWVjMmU0NDhiYWE2MTlmNTg5MTE1MzliZDYgPSAkKCc8ZGl2IGlkPSJodG1sXzRhNjM3NGVlYzJlNDQ4YmFhNjE5ZjU4OTExNTM5YmQ2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NDQ2NTg5ZTRlZDM0ZGIwODkzYjk3NGQ3N2ZiYTU5MS5zZXRDb250ZW50KGh0bWxfNGE2Mzc0ZWVjMmU0NDhiYWE2MTlmNTg5MTE1MzliZDYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfM2RhZWI4M2VlZDcyNGUwZGEyMTAzYWJjOTgzYjBkYjAuYmluZFBvcHVwKHBvcHVwXzU0NDY1ODllNGVkMzRkYjA4OTNiOTc0ZDc3ZmJhNTkxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzlmYmZmZmFlODUwYTQzYmRiNmEzNjk2ZTVjODk5ZDNmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM1MjY4MTQ2OTA4Mzk2LC0xMjIuNDcyNzE1NzU5NjMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOGY3ZTM5MGJiODNlNDg4M2JiYzJhMTI1YTc3MmY2ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDBlN2M1NmI4NzljNDM2M2FlODVlYThhZTgxNDkxODAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTRkMjA2ZmRhNmE3NDgwMDkzNWQ3NThhYmI4ODkyNGQgPSAkKCc8ZGl2IGlkPSJodG1sXzk0ZDIwNmZkYTZhNzQ4MDA5MzVkNzU4YWJiODg5MjRkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80MGU3YzU2Yjg3OWM0MzYzYWU4NWVhOGFlODE0OTE4MC5zZXRDb250ZW50KGh0bWxfOTRkMjA2ZmRhNmE3NDgwMDkzNWQ3NThhYmI4ODkyNGQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOWZiZmZmYWU4NTBhNDNiZGI2YTM2OTZlNWM4OTlkM2YuYmluZFBvcHVwKHBvcHVwXzQwZTdjNTZiODc5YzQzNjNhZTg1ZWE4YWU4MTQ5MTgwKTsKCiAgICAgICAgICAgIAogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fa39e247c50>"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create map and display it\n",
"sanfran_map = folium.Map(location=[latitude, longitude], zoom_start=12)\n",
"\n",
"# loop through the 100 crimes and add each to the map\n",
"for lat, lng, label in zip(df_incidents.Y, df_incidents.X, df_incidents.Category):\n",
" folium.features.CircleMarker(\n",
" [lat, lng],\n",
" radius=5, # define how big you want the circle markers to be\n",
" color='yellow',\n",
" fill=True,\n",
" popup=label,\n",
" fill_color='blue',\n",
" fill_opacity=0.6\n",
" ).add_to(sanfran_map)\n",
"\n",
"# show map\n",
"sanfran_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"The other proper remedy is to group the markers into different clusters. Each cluster is then represented by the number of crimes in each neighborhood. These clusters can be thought of as pockets of San Francisco which you can then analyze separately.\n",
"\n",
"To implement this, we start off by instantiating a *MarkerCluster* object and adding all the data points in the dataframe to this object."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNWNlNmE5OTk4NDQ2NDE2NmFjODQzNjljNGIyZjFkNWUgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2xlYWZsZXQubWFya2VyY2x1c3Rlci8xLjEuMC9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMS4xLjAvTWFya2VyQ2x1c3Rlci5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzEuMS4wL01hcmtlckNsdXN0ZXIuRGVmYXVsdC5jc3MiLz4KPC9oZWFkPgo8Ym9keT4gICAgCiAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9saXVtLW1hcCIgaWQ9Im1hcF81Y2U2YTk5OTg0NDY0MTY2YWM4NDM2OWM0YjJmMWQ1ZSIgPjwvZGl2PgogICAgICAgIAo8L2JvZHk+CjxzY3JpcHQ+ICAgIAogICAgCgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXBfNWNlNmE5OTk4NDQ2NDE2NmFjODQzNjljNGIyZjFkNWUgPSBMLm1hcCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXBfNWNlNmE5OTk4NDQ2NDE2NmFjODQzNjljNGIyZjFkNWUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NlbnRlcjogWzM3Ljc3LC0xMjIuNDJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzBiNDkxYzdlMTJhMDQ3YzI4MDU0YTJhNjgwZWQzYzAyID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgICAgICAgICAgewogICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICJtYXhab29tIjogMTgsCiAgIm1pblpvb20iOiAxLAogICJub1dyYXAiOiBmYWxzZSwKICAic3ViZG9tYWlucyI6ICJhYmMiCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzVjZTZhOTk5ODQ0NjQxNjZhYzg0MzY5YzRiMmYxZDVlKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODggPSBMLm1hcmtlckNsdXN0ZXJHcm91cCh7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIG1hcF81Y2U2YTk5OTg0NDY0MTY2YWM4NDM2OWM0YjJmMWQ1ZS5hZGRMYXllcihtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2MzMjZiYTVhOGYzYTQ3MTQ5ZTk5MjNiMDU4ZDBmOWI0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VkMTA5ZTdhMTZjYjRmNmJhYzdjMjAxODU3ZjA3MGNiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzZiMzI5ZTcwNTkwNzQ0OWJhMTZmNDYzOTgyODMzMTIzID0gJCgnPGRpdiBpZD0iaHRtbF82YjMyOWU3MDU5MDc0NDliYTE2ZjQ2Mzk4MjgzMzEyMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0VBUE9OIExBV1M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VkMTA5ZTdhMTZjYjRmNmJhYzdjMjAxODU3ZjA3MGNiLnNldENvbnRlbnQoaHRtbF82YjMyOWU3MDU5MDc0NDliYTE2ZjQ2Mzk4MjgzMzEyMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2MzMjZiYTVhOGYzYTQ3MTQ5ZTk5MjNiMDU4ZDBmOWI0LmJpbmRQb3B1cChwb3B1cF9lZDEwOWU3YTE2Y2I0ZjZiYWM3YzIwMTg1N2YwNzBjYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jOTI4MGM5Yzg1NDE0NmMzODgzOWM1ZmVjN2FiMWY0OSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mNWIyMDYyMjZkMDg0YWJkYWQ1OGZkYTg3NDQ2MjgzNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85ZDU1NDg1YjM5MzQ0YTc2OWZhMDI0YmYzYTZjZGQwMCA9ICQoJzxkaXYgaWQ9Imh0bWxfOWQ1NTQ4NWIzOTM0NGE3NjlmYTAyNGJmM2E2Y2RkMDAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mNWIyMDYyMjZkMDg0YWJkYWQ1OGZkYTg3NDQ2MjgzNy5zZXRDb250ZW50KGh0bWxfOWQ1NTQ4NWIzOTM0NGE3NjlmYTAyNGJmM2E2Y2RkMDApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jOTI4MGM5Yzg1NDE0NmMzODgzOWM1ZmVjN2FiMWY0OS5iaW5kUG9wdXAocG9wdXBfZjViMjA2MjI2ZDA4NGFiZGFkNThmZGE4NzQ0NjI4MzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDdiY2M1OWZhNTYyNGZjMzhjZGE3NmMwMDI1ZWQwM2UgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjk5ODA5NjcyOTk1OTYsLTEyMi4zODg4NTYyMDQyOTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM0MTM2MWJiMWI2MjQ3ZDBhMDc3NTRjZGE1MzFjNGI1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ5OGIwNjA0MTc3NzQyNWFiM2U3YWZkY2JhMTBhNjExID0gJCgnPGRpdiBpZD0iaHRtbF80OThiMDYwNDE3Nzc0MjVhYjNlN2FmZGNiYTEwYTYxMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM0MTM2MWJiMWI2MjQ3ZDBhMDc3NTRjZGE1MzFjNGI1LnNldENvbnRlbnQoaHRtbF80OThiMDYwNDE3Nzc0MjVhYjNlN2FmZGNiYTEwYTYxMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQ3YmNjNTlmYTU2MjRmYzM4Y2RhNzZjMDAyNWVkMDNlLmJpbmRQb3B1cChwb3B1cF8zNDEzNjFiYjFiNjI0N2QwYTA3NzU0Y2RhNTMxYzRiNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yOTU5MjAyNDgzMzk0Y2Y1OTk0N2I4MTg4ZjY2ZjJjMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTc4ODM3NjY4ODc5LC0xMjIuNDEyOTcwNTM3NTkxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kZjU1ZTNmM2I0Njc0ZTA4ODBlMjBmNjk0NTU2NGE4ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82NDIxOTY3ZGFiYTk0YjIyYmEwMTMxNWQ3ZjNiMjkwMCA9ICQoJzxkaXYgaWQ9Imh0bWxfNjQyMTk2N2RhYmE5NGIyMmJhMDEzMTVkN2YzYjI5MDAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGY1NWUzZjNiNDY3NGUwODgwZTIwZjY5NDU1NjRhOGQuc2V0Q29udGVudChodG1sXzY0MjE5NjdkYWJhOTRiMjJiYTAxMzE1ZDdmM2IyOTAwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjk1OTIwMjQ4MzM5NGNmNTk5NDdiODE4OGY2NmYyYzEuYmluZFBvcHVwKHBvcHVwX2RmNTVlM2YzYjQ2NzRlMDg4MGUyMGY2OTQ1NTY0YThkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzlmYTYyNjY2MmQ5MjRiYzc4ZDQwN2U2MTIxODAxZDhjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY1MDUwMTIxNDY2OCwtMTIyLjQxOTY3MTc4MDI5Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTU0ZjA3YmI3ZGM3NDBlYmI1NTY0ODQzZTJkYTQwOGQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDI1ZDU5NTNlNDdlNDMyMjgxZjYyNzFiNjMyYjRkYjAgPSAkKCc8ZGl2IGlkPSJodG1sXzAyNWQ1OTUzZTQ3ZTQzMjI4MWY2MjcxYjYzMmI0ZGIwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE1NGYwN2JiN2RjNzQwZWJiNTU2NDg0M2UyZGE0MDhkLnNldENvbnRlbnQoaHRtbF8wMjVkNTk1M2U0N2U0MzIyODFmNjI3MWI2MzJiNGRiMCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzlmYTYyNjY2MmQ5MjRiYzc4ZDQwN2U2MTIxODAxZDhjLmJpbmRQb3B1cChwb3B1cF8xNTRmMDdiYjdkYzc0MGViYjU1NjQ4NDNlMmRhNDA4ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80ODQ0MTFjNGI1YTI0N2UwOWFiNTM4OWMyMmEyMGQ4ZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jNTJhMDIxOTdiZmY0OWUzOGU3ZGExNTc4YWU5MDVjMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83NGQ1YmJjNTZkZmE0MDU5YWU4YWVmZjU0MTkzYTI3ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfNzRkNWJiYzU2ZGZhNDA1OWFlOGFlZmY1NDE5M2EyN2UiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2M1MmEwMjE5N2JmZjQ5ZTM4ZTdkYTE1NzhhZTkwNWMyLnNldENvbnRlbnQoaHRtbF83NGQ1YmJjNTZkZmE0MDU5YWU4YWVmZjU0MTkzYTI3ZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQ4NDQxMWM0YjVhMjQ3ZTA5YWI1Mzg5YzIyYTIwZDhlLmJpbmRQb3B1cChwb3B1cF9jNTJhMDIxOTdiZmY0OWUzOGU3ZGExNTc4YWU5MDVjMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hOTUzNWVhN2I4MmE0ZDUxYWQ2Yzg3ZDcxZGVkMDQ3YyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDg3ODkzNjAyMTQsLTEyMi40MDU3MjE0NTQ1NjddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FjYzlmZjcyM2UzNTQzMzc4Y2I0NmIyMTQ1MjdiZjc5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg3M2FhZDE0ZjNmYjQ4NmRiMGZhMDk1OWI5NjljYjk5ID0gJCgnPGRpdiBpZD0iaHRtbF84NzNhYWQxNGYzZmI0ODZkYjBmYTA5NTliOTY5Y2I5OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FjYzlmZjcyM2UzNTQzMzc4Y2I0NmIyMTQ1MjdiZjc5LnNldENvbnRlbnQoaHRtbF84NzNhYWQxNGYzZmI0ODZkYjBmYTA5NTliOTY5Y2I5OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2E5NTM1ZWE3YjgyYTRkNTFhZDZjODdkNzFkZWQwNDdjLmJpbmRQb3B1cChwb3B1cF9hY2M5ZmY3MjNlMzU0MzM3OGNiNDZiMjE0NTI3YmY3OSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jNThiOWQyOTZjN2I0NzkyOGRkZmVhMDVkMDcwYjg1OSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4Mzk4MDU1OTI2MzQsLTEyMi40MTE3NzgyOTU5OTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQ4OTc4NzZhMzAzZTQyMDJhODkyZDZjNWU5ZWQ2NDQzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzcwM2RlYjc1NmI5NzQ0MGE4MTQyY2FkNWY2YjIxYmJhID0gJCgnPGRpdiBpZD0iaHRtbF83MDNkZWI3NTZiOTc0NDBhODE0MmNhZDVmNmIyMWJiYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80ODk3ODc2YTMwM2U0MjAyYTg5MmQ2YzVlOWVkNjQ0My5zZXRDb250ZW50KGh0bWxfNzAzZGViNzU2Yjk3NDQwYTgxNDJjYWQ1ZjZiMjFiYmEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jNThiOWQyOTZjN2I0NzkyOGRkZmVhMDVkMDcwYjg1OS5iaW5kUG9wdXAocG9wdXBfNDg5Nzg3NmEzMDNlNDIwMmE4OTJkNmM1ZTllZDY0NDMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmNmOTU5MDM5Mjk0NDZkYmI1MDMwMmU3MTFjYTE3M2MgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdkMGUwNjI3MTg2NjQ0YWU4NWI1YWIwZDUzNjY5MDYyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFjMzM1Mjc2N2MyZDQ1NGQ4M2E4N2RkZjRhNGVmMmNiID0gJCgnPGRpdiBpZD0iaHRtbF8xYzMzNTI3NjdjMmQ0NTRkODNhODdkZGY0YTRlZjJjYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdkMGUwNjI3MTg2NjQ0YWU4NWI1YWIwZDUzNjY5MDYyLnNldENvbnRlbnQoaHRtbF8xYzMzNTI3NjdjMmQ0NTRkODNhODdkZGY0YTRlZjJjYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2JjZjk1OTAzOTI5NDQ2ZGJiNTAzMDJlNzExY2ExNzNjLmJpbmRQb3B1cChwb3B1cF83ZDBlMDYyNzE4NjY0NGFlODViNWFiMGQ1MzY2OTA2Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hN2RlMzFlMDI2ZWM0ZTE4ODIyZTAxNTgzMWZjMGM5MCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMyODZkNGZlODEyZTRjOTFiMzY1Y2MzMzQ5NmZkNGI5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzA3YzRiN2JjNzM5ZjQ5YWNiMzk4M2RiODE5ZGNiNGQ5ID0gJCgnPGRpdiBpZD0iaHRtbF8wN2M0YjdiYzczOWY0OWFjYjM5ODNkYjgxOWRjYjRkOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMyODZkNGZlODEyZTRjOTFiMzY1Y2MzMzQ5NmZkNGI5LnNldENvbnRlbnQoaHRtbF8wN2M0YjdiYzczOWY0OWFjYjM5ODNkYjgxOWRjYjRkOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2E3ZGUzMWUwMjZlYzRlMTg4MjJlMDE1ODMxZmMwYzkwLmJpbmRQb3B1cChwb3B1cF8zMjg2ZDRmZTgxMmU0YzkxYjM2NWNjMzM0OTZmZDRiOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84ZjBhZjBmOGIxMGQ0MWEzODkwYmRlMjU0NGExMTZmZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84NGVlZDJhZWNjMjM0YzUyYTE4ZjAwYTQ0OTQ0MmM4YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lMjlhOGZmNzRjZTE0MTViYWJmMGJmNDk5MGY2MWUzMyA9ICQoJzxkaXYgaWQ9Imh0bWxfZTI5YThmZjc0Y2UxNDE1YmFiZjBiZjQ5OTBmNjFlMzMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg0ZWVkMmFlY2MyMzRjNTJhMThmMDBhNDQ5NDQyYzhjLnNldENvbnRlbnQoaHRtbF9lMjlhOGZmNzRjZTE0MTViYWJmMGJmNDk5MGY2MWUzMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzhmMGFmMGY4YjEwZDQxYTM4OTBiZGUyNTQ0YTExNmZkLmJpbmRQb3B1cChwb3B1cF84NGVlZDJhZWNjMjM0YzUyYTE4ZjAwYTQ0OTQ0MmM4Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85NTlmNTNjNmJhMTk0MWUxOGE3ODRmODI3MGE4MDY4MyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NTczODk0Mjk2NTQ5NSwtMTIyLjQ3Nzk2MDMyNzI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzY1NTU3Zjc4NmQxNDlmMWFiMTU2MjQ4ZTQ0ZTdkNzQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTMxNWFjZDdjMWY3NGFiMGI1MjhhOTRiNGE0YmNjZmQgPSAkKCc8ZGl2IGlkPSJodG1sXzkzMTVhY2Q3YzFmNzRhYjBiNTI4YTk0YjRhNGJjY2ZkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM2NTU1N2Y3ODZkMTQ5ZjFhYjE1NjI0OGU0NGU3ZDc0LnNldENvbnRlbnQoaHRtbF85MzE1YWNkN2MxZjc0YWIwYjUyOGE5NGI0YTRiY2NmZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzk1OWY1M2M2YmExOTQxZTE4YTc4NGY4MjcwYTgwNjgzLmJpbmRQb3B1cChwb3B1cF8zNjU1NTdmNzg2ZDE0OWYxYWIxNTYyNDhlNDRlN2Q3NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yNTI1MTAxZTFmNTI0NjY4YmQ3ZDRjZjI0NzdhMmU3ZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84NGM4MmEwY2Y4NjI0YWYzOTk3ZjVmNDI3NmNkNjYxNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yYTEyMDVlMWY0YjE0ZTVlYjc4ZWE2Y2RjMTkyMjJhNSA9ICQoJzxkaXYgaWQ9Imh0bWxfMmExMjA1ZTFmNGIxNGU1ZWI3OGVhNmNkYzE5MjIyYTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84NGM4MmEwY2Y4NjI0YWYzOTk3ZjVmNDI3NmNkNjYxNy5zZXRDb250ZW50KGh0bWxfMmExMjA1ZTFmNGIxNGU1ZWI3OGVhNmNkYzE5MjIyYTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yNTI1MTAxZTFmNTI0NjY4YmQ3ZDRjZjI0NzdhMmU3ZS5iaW5kUG9wdXAocG9wdXBfODRjODJhMGNmODYyNGFmMzk5N2Y1ZjQyNzZjZDY2MTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2EyYWViZGI1ZTRhNGM5NWI2NjUyOWIwYTIxOTg1ZmUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84NDY2MTYyNjAwYmE0MWJjYWYzY2Y1ZWYyZTkyNTFjNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jZjgxNWZhYzQ1NGE0NTQ2ODM2NTIxZTMwNmQ1NDU2MSA9ICQoJzxkaXYgaWQ9Imh0bWxfY2Y4MTVmYWM0NTRhNDU0NjgzNjUyMWUzMDZkNTQ1NjEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg0NjYxNjI2MDBiYTQxYmNhZjNjZjVlZjJlOTI1MWM3LnNldENvbnRlbnQoaHRtbF9jZjgxNWZhYzQ1NGE0NTQ2ODM2NTIxZTMwNmQ1NDU2MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2NhMmFlYmRiNWU0YTRjOTViNjY1MjliMGEyMTk4NWZlLmJpbmRQb3B1cChwb3B1cF84NDY2MTYyNjAwYmE0MWJjYWYzY2Y1ZWYyZTkyNTFjNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wMGQ1ZTA0ZTdiYTM0ODYyODVkMzllMGNkZGU2MWQxNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MTY0Mjk4MjM4NCwtMTIyLjQwMDkwODY5ODg4OTk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iNTA0ZGMzMWVjZDI0M2Q4YWJjOTU4YmYzN2M1OTE1NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iY2Q2MzZhYjRlNzI0MzZmOWY3NTI5MjYwNDM4OTM0NCA9ICQoJzxkaXYgaWQ9Imh0bWxfYmNkNjM2YWI0ZTcyNDM2ZjlmNzUyOTI2MDQzODkzNDQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iNTA0ZGMzMWVjZDI0M2Q4YWJjOTU4YmYzN2M1OTE1NC5zZXRDb250ZW50KGh0bWxfYmNkNjM2YWI0ZTcyNDM2ZjlmNzUyOTI2MDQzODkzNDQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wMGQ1ZTA0ZTdiYTM0ODYyODVkMzllMGNkZGU2MWQxNC5iaW5kUG9wdXAocG9wdXBfYjUwNGRjMzFlY2QyNDNkOGFiYzk1OGJmMzdjNTkxNTQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzQyMTBiNWE1N2NjNDE0MTkxZjc3ZTVjMWY4ZjA3YjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM3MDY5MzAxNTQ1LC0xMjIuNDA4NTk1MTEwODY5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mYTZhODIyZWY2Mjg0Y2E3OTZlZmQyNmIxNzcyNTJhMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iMmQwMzJlZGRiZjg0YTliYThkM2FiNzBmY2U3MThjYyA9ICQoJzxkaXYgaWQ9Imh0bWxfYjJkMDMyZWRkYmY4NGE5YmE4ZDNhYjcwZmNlNzE4Y2MiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNUT0xFTiBQUk9QRVJUWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZmE2YTgyMmVmNjI4NGNhNzk2ZWZkMjZiMTc3MjUyYTEuc2V0Q29udGVudChodG1sX2IyZDAzMmVkZGJmODRhOWJhOGQzYWI3MGZjZTcxOGNjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMzQyMTBiNWE1N2NjNDE0MTkxZjc3ZTVjMWY4ZjA3YjkuYmluZFBvcHVwKHBvcHVwX2ZhNmE4MjJlZjYyODRjYTc5NmVmZDI2YjE3NzI1MmExKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzllODNiMDljYWE4NTRjMDY5YjYzZmE1OWM4ZjE2MzQwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85YmUzNjYyMGYxZTY0MGVjOTk3YjI4MmM4OWU0MjcwNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jNmUzNWVjNzAyMjU0OGUzODA5MmVjMzVmZDYzNmRlYiA9ICQoJzxkaXYgaWQ9Imh0bWxfYzZlMzVlYzcwMjI1NDhlMzgwOTJlYzM1ZmQ2MzZkZWIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzliZTM2NjIwZjFlNjQwZWM5OTdiMjgyYzg5ZTQyNzA1LnNldENvbnRlbnQoaHRtbF9jNmUzNWVjNzAyMjU0OGUzODA5MmVjMzVmZDYzNmRlYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzllODNiMDljYWE4NTRjMDY5YjYzZmE1OWM4ZjE2MzQwLmJpbmRQb3B1cChwb3B1cF85YmUzNjYyMGYxZTY0MGVjOTk3YjI4MmM4OWU0MjcwNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82ZDMxNmI4Y2FjY2I0OGU2ODNhYWExZjZhNDU5ZWJiYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0ODkwNjMwNTE4MjksLTEyMi40MjAzNTQ3ODA4NjA5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDhjNmY4ZTEyZTMyNDVkNzlmMmJiYjgxZGYyZTk4MDkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTZkMzEzYTE2NTQyNGI1ZWIwY2UzMDQ5MGUzYjU0MDggPSAkKCc8ZGl2IGlkPSJodG1sXzU2ZDMxM2ExNjU0MjRiNWViMGNlMzA0OTBlM2I1NDA4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wOGM2ZjhlMTJlMzI0NWQ3OWYyYmJiODFkZjJlOTgwOS5zZXRDb250ZW50KGh0bWxfNTZkMzEzYTE2NTQyNGI1ZWIwY2UzMDQ5MGUzYjU0MDgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82ZDMxNmI4Y2FjY2I0OGU2ODNhYWExZjZhNDU5ZWJiYi5iaW5kUG9wdXAocG9wdXBfMDhjNmY4ZTEyZTMyNDVkNzlmMmJiYjgxZGYyZTk4MDkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTdhZmY5NWVjYWRkNGNjZTg0Yzk3M2NhOGRjOGNkOGYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTU3NjU0MjY5OTUsLTEyMi40Mzk5MDk3NjY3NzJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzRiMWVlOWE5NTFlYjQ1MjJhOWZiYThjMDJjM2I0MTY5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg0NTIxOWVjMmFiNzQ3YzhhMjlkYTUyOWI4NjU0YzI1ID0gJCgnPGRpdiBpZD0iaHRtbF84NDUyMTllYzJhYjc0N2M4YTI5ZGE1MjliODY1NGMyNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNGIxZWU5YTk1MWViNDUyMmE5ZmJhOGMwMmMzYjQxNjkuc2V0Q29udGVudChodG1sXzg0NTIxOWVjMmFiNzQ3YzhhMjlkYTUyOWI4NjU0YzI1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZTdhZmY5NWVjYWRkNGNjZTg0Yzk3M2NhOGRjOGNkOGYuYmluZFBvcHVwKHBvcHVwXzRiMWVlOWE5NTFlYjQ1MjJhOWZiYThjMDJjM2I0MTY5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzBmNzQ4MTdlN2Y2NzRjNjNhNmJmNWFiZDY5YzIxZjgwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjI1ZmYwNGJiYjQ4NDIwNjlkYzFlNGFmY2ViNGNhYmYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjc1ZWJmYTkxMGMxNGE4N2IxYjdkMzQwMjIzZGZjN2IgPSAkKCc8ZGl2IGlkPSJodG1sX2Y3NWViZmE5MTBjMTRhODdiMWI3ZDM0MDIyM2RmYzdiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iMjVmZjA0YmJiNDg0MjA2OWRjMWU0YWZjZWI0Y2FiZi5zZXRDb250ZW50KGh0bWxfZjc1ZWJmYTkxMGMxNGE4N2IxYjdkMzQwMjIzZGZjN2IpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wZjc0ODE3ZTdmNjc0YzYzYTZiZjVhYmQ2OWMyMWY4MC5iaW5kUG9wdXAocG9wdXBfYjI1ZmYwNGJiYjQ4NDIwNjlkYzFlNGFmY2ViNGNhYmYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzFhNGIxN2U2OTUyNGFhMGIzNWM1ODI5ODY2YzcyZDUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzM2MTg2Mjc2NDU2MDQsLTEyMi40MjIzMTU2NzA3NDldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NmODc2YzBiMDY3ODQ4M2FiZGQ4M2Q1MGE4YjgwZGM1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y0ZDk4Mzk2OGY5YzQwZDFiNjNjMGFkNjMyMWZhY2NiID0gJCgnPGRpdiBpZD0iaHRtbF9mNGQ5ODM5NjhmOWM0MGQxYjYzYzBhZDYzMjFmYWNjYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RlJBVUQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NmODc2YzBiMDY3ODQ4M2FiZGQ4M2Q1MGE4YjgwZGM1LnNldENvbnRlbnQoaHRtbF9mNGQ5ODM5NjhmOWM0MGQxYjYzYzBhZDYzMjFmYWNjYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzcxYTRiMTdlNjk1MjRhYTBiMzVjNTgyOTg2NmM3MmQ1LmJpbmRQb3B1cChwb3B1cF9jZjg3NmMwYjA2Nzg0ODNhYmRkODNkNTBhOGI4MGRjNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mZGExYjU2NTU5NWE0YTk4YTBmZWZjNjQ4MDUyZDEzYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5Mjg0MTI4NDA0NDcwNSwtMTIyLjQyNDUxOTgzNTAwOTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85M2M2NzgyMzEwOTA0MDk2OTRkZThlNDg3OTBlMGM1MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xYzA2Y2EyM2NmZjg0YzZlYjlhMDM5MmIwZTgyNTg0OCA9ICQoJzxkaXYgaWQ9Imh0bWxfMWMwNmNhMjNjZmY4NGM2ZWI5YTAzOTJiMGU4MjU4NDgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85M2M2NzgyMzEwOTA0MDk2OTRkZThlNDg3OTBlMGM1Mi5zZXRDb250ZW50KGh0bWxfMWMwNmNhMjNjZmY4NGM2ZWI5YTAzOTJiMGU4MjU4NDgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mZGExYjU2NTU5NWE0YTk4YTBmZWZjNjQ4MDUyZDEzYy5iaW5kUG9wdXAocG9wdXBfOTNjNjc4MjMxMDkwNDA5Njk0ZGU4ZTQ4NzkwZTBjNTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTkyODQ5N2I3Zjc1NDQ1YWI4YTU1OTM2NjMwNDhmYTEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzg2MDRkZmVkYWE5NGVlMzk0M2U5NTliODUwMDFmY2EgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDVkOGFmMzE5NDJmNDgyYmIwNGViYmExZTg0OGViMmUgPSAkKCc8ZGl2IGlkPSJodG1sXzQ1ZDhhZjMxOTQyZjQ4MmJiMDRlYmJhMWU4NDhlYjJlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83ODYwNGRmZWRhYTk0ZWUzOTQzZTk1OWI4NTAwMWZjYS5zZXRDb250ZW50KGh0bWxfNDVkOGFmMzE5NDJmNDgyYmIwNGViYmExZTg0OGViMmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xOTI4NDk3YjdmNzU0NDVhYjhhNTU5MzY2MzA0OGZhMS5iaW5kUG9wdXAocG9wdXBfNzg2MDRkZmVkYWE5NGVlMzk0M2U5NTliODUwMDFmY2EpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmJiZDgxZGIxYjJkNDkxYzgyYjA4NWJiMzJiZjUwYzUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTZjZWQwNWM3OWFlNDA5OWExNmU0NTUwNjIzOWU1N2IgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWM3NzdlMDY2ZjFiNGIyZjkyYzQ1ZWFjZjJiMjkyYmMgPSAkKCc8ZGl2IGlkPSJodG1sXzFjNzc3ZTA2NmYxYjRiMmY5MmM0NWVhY2YyYjI5MmJjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTZjZWQwNWM3OWFlNDA5OWExNmU0NTUwNjIzOWU1N2Iuc2V0Q29udGVudChodG1sXzFjNzc3ZTA2NmYxYjRiMmY5MmM0NWVhY2YyYjI5MmJjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMmJiZDgxZGIxYjJkNDkxYzgyYjA4NWJiMzJiZjUwYzUuYmluZFBvcHVwKHBvcHVwXzk2Y2VkMDVjNzlhZTQwOTlhMTZlNDU1MDYyMzllNTdiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzY4ODMwNmMzZjVkNjRjMWZiMjIyMmE1NDFkZDgyNTY4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzcxNDkzOTk2OTQxNiwtMTIyLjUwNzc1MDEzMTAwNDAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82MTE3YzNhYjk1M2E0ZGE0YjcwYTBlYWQ0ODU1NTI0MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ZGVkMmNkYTBlNjY0YzVmOWI4MzZmMmYwZjUwYTM0YSA9ICQoJzxkaXYgaWQ9Imh0bWxfNWRlZDJjZGEwZTY2NGM1ZjliODM2ZjJmMGY1MGEzNGEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzYxMTdjM2FiOTUzYTRkYTRiNzBhMGVhZDQ4NTU1MjQxLnNldENvbnRlbnQoaHRtbF81ZGVkMmNkYTBlNjY0YzVmOWI4MzZmMmYwZjUwYTM0YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzY4ODMwNmMzZjVkNjRjMWZiMjIyMmE1NDFkZDgyNTY4LmJpbmRQb3B1cChwb3B1cF82MTE3YzNhYjk1M2E0ZGE0YjcwYTBlYWQ0ODU1NTI0MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85Y2FkN2E1NTViOGM0YTQ1YWM2NjliYjJlMmUxZjU4MSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hOWNlZTM2YWIyYzM0OWZkYTlhNzJlZmE5M2VjMGU2YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82ZjA4OTJjZjQ5MTM0ODExYjc0ZjNlMWFjNWY0N2MwZSA9ICQoJzxkaXYgaWQ9Imh0bWxfNmYwODkyY2Y0OTEzNDgxMWI3NGYzZTFhYzVmNDdjMGUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hOWNlZTM2YWIyYzM0OWZkYTlhNzJlZmE5M2VjMGU2Yy5zZXRDb250ZW50KGh0bWxfNmYwODkyY2Y0OTEzNDgxMWI3NGYzZTFhYzVmNDdjMGUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85Y2FkN2E1NTViOGM0YTQ1YWM2NjliYjJlMmUxZjU4MS5iaW5kUG9wdXAocG9wdXBfYTljZWUzNmFiMmMzNDlmZGE5YTcyZWZhOTNlYzBlNmMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTA3MjUwZjEwODIwNDVjNjlhZTJmMWRhN2M3MWU3YmQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iMGEzMWJiYzgxZWM0ZGJhYjJiMTA0OGZiZWJkYzliYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wMjQwZGFlYzEwMjA0MjEzYjc3YWQyYTNiYmZjMTRmNiA9ICQoJzxkaXYgaWQ9Imh0bWxfMDI0MGRhZWMxMDIwNDIxM2I3N2FkMmEzYmJmYzE0ZjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iMGEzMWJiYzgxZWM0ZGJhYjJiMTA0OGZiZWJkYzliYS5zZXRDb250ZW50KGh0bWxfMDI0MGRhZWMxMDIwNDIxM2I3N2FkMmEzYmJmYzE0ZjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hMDcyNTBmMTA4MjA0NWM2OWFlMmYxZGE3YzcxZTdiZC5iaW5kUG9wdXAocG9wdXBfYjBhMzFiYmM4MWVjNGRiYWIyYjEwNDhmYmViZGM5YmEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfODZiZGU4OWU4YWZkNDhiMWFjOGNmNGRmMzAxZWY5NmMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zOWYyZDlkZmVjNjI0YmY4Yjk4YmQ2ZWMwMGE2YWU2MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mNjQ2Y2E0NDRlODA0Nzc5ODk2ODRkODkzMTg1YzM2MyA9ICQoJzxkaXYgaWQ9Imh0bWxfZjY0NmNhNDQ0ZTgwNDc3OTg5Njg0ZDg5MzE4NWMzNjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zOWYyZDlkZmVjNjI0YmY4Yjk4YmQ2ZWMwMGE2YWU2MS5zZXRDb250ZW50KGh0bWxfZjY0NmNhNDQ0ZTgwNDc3OTg5Njg0ZDg5MzE4NWMzNjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84NmJkZTg5ZThhZmQ0OGIxYWM4Y2Y0ZGYzMDFlZjk2Yy5iaW5kUG9wdXAocG9wdXBfMzlmMmQ5ZGZlYzYyNGJmOGI5OGJkNmVjMDBhNmFlNjEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZjNkNDQ1YTk5NzMxNGRjNmJjMzU0Y2Y2MzFhN2U1MTYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RiMzg4OGFmNWFiZTQwNTY5YjU3MDZjOTNjM2Q3NjNlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2QwNmE4ZGFkMTMzZTQ1ZjZiMjBiMjNhN2Q0NzlhYzExID0gJCgnPGRpdiBpZD0iaHRtbF9kMDZhOGRhZDEzM2U0NWY2YjIwYjIzYTdkNDc5YWMxMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RiMzg4OGFmNWFiZTQwNTY5YjU3MDZjOTNjM2Q3NjNlLnNldENvbnRlbnQoaHRtbF9kMDZhOGRhZDEzM2U0NWY2YjIwYjIzYTdkNDc5YWMxMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2YzZDQ0NWE5OTczMTRkYzZiYzM1NGNmNjMxYTdlNTE2LmJpbmRQb3B1cChwb3B1cF9kYjM4ODhhZjVhYmU0MDU2OWI1NzA2YzkzYzNkNzYzZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lYzkwZDgyYjU1ODc0YjIwOTdkMTkyMzk3MGU5NGJiOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2I2NjhlYzZlNDU4NzRiYjViMzIxMjk3OGJhZTFjYTllID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzYyZmZmODU5ZDUyMTQzNTZhMDU2MzVjNTE0YzA3MjE0ID0gJCgnPGRpdiBpZD0iaHRtbF82MmZmZjg1OWQ1MjE0MzU2YTA1NjM1YzUxNGMwNzIxNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iNjY4ZWM2ZTQ1ODc0YmI1YjMyMTI5NzhiYWUxY2E5ZS5zZXRDb250ZW50KGh0bWxfNjJmZmY4NTlkNTIxNDM1NmEwNTYzNWM1MTRjMDcyMTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lYzkwZDgyYjU1ODc0YjIwOTdkMTkyMzk3MGU5NGJiOC5iaW5kUG9wdXAocG9wdXBfYjY2OGVjNmU0NTg3NGJiNWIzMjEyOTc4YmFlMWNhOWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTgwMzIxMDhlMWM1NDc3ZmFjYjBhZmFhODY5YTI3ZDQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc5MjA5Mzc1NTMyOTUsLTEyMi40MTA4ODI4MjU1NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzExYjI2YmFkNDAxYzRlY2RhNjVlZDM0YzdmY2Y0MzEzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg5NzZmOTc3MzEzYzRmOGJiZjdhMmRhYTQxN2I3Yjc2ID0gJCgnPGRpdiBpZD0iaHRtbF84OTc2Zjk3NzMxM2M0ZjhiYmY3YTJkYWE0MTdiN2I3NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkVISUNMRSBUSEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTFiMjZiYWQ0MDFjNGVjZGE2NWVkMzRjN2ZjZjQzMTMuc2V0Q29udGVudChodG1sXzg5NzZmOTc3MzEzYzRmOGJiZjdhMmRhYTQxN2I3Yjc2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNTgwMzIxMDhlMWM1NDc3ZmFjYjBhZmFhODY5YTI3ZDQuYmluZFBvcHVwKHBvcHVwXzExYjI2YmFkNDAxYzRlY2RhNjVlZDM0YzdmY2Y0MzEzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2MwNDZiMTBmOGFlMTRjOTVhM2YxMTNlMGY5ZmJkMTEwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDU2MmU1MDc2N2VmNDkyYWIwMTIwOWU3NTVlN2JhOTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDZlMzYyMzZmZDNiNDAwMDkwOTQ0MjUzZTllOGU1MmQgPSAkKCc8ZGl2IGlkPSJodG1sX2Q2ZTM2MjM2ZmQzYjQwMDA5MDk0NDI1M2U5ZThlNTJkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wNTYyZTUwNzY3ZWY0OTJhYjAxMjA5ZTc1NWU3YmE5MC5zZXRDb250ZW50KGh0bWxfZDZlMzYyMzZmZDNiNDAwMDkwOTQ0MjUzZTllOGU1MmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jMDQ2YjEwZjhhZTE0Yzk1YTNmMTEzZTBmOWZiZDExMC5iaW5kUG9wdXAocG9wdXBfMDU2MmU1MDc2N2VmNDkyYWIwMTIwOWU3NTVlN2JhOTApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTU3MWU3MDJkZWU2NDFhYzg3YWJhYWRhMGY4NWNlMzcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDM1NTUwNTQyMjY1LC0xMjIuNDIxMTI4MDI5NTA1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wYjIzNTZiM2Q1MmI0YTE0ODI2NjZlYjE2NWMxNGQwOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ZDVhYjBjODJkNTk0NTE3OTI0ZjM4ZDA1MzNlMDAyNiA9ICQoJzxkaXYgaWQ9Imh0bWxfNWQ1YWIwYzgyZDU5NDUxNzkyNGYzOGQwNTMzZTAwMjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBiMjM1NmIzZDUyYjRhMTQ4MjY2NmViMTY1YzE0ZDA5LnNldENvbnRlbnQoaHRtbF81ZDVhYjBjODJkNTk0NTE3OTI0ZjM4ZDA1MzNlMDAyNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzk1NzFlNzAyZGVlNjQxYWM4N2FiYWFkYTBmODVjZTM3LmJpbmRQb3B1cChwb3B1cF8wYjIzNTZiM2Q1MmI0YTE0ODI2NjZlYjE2NWMxNGQwOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82YzQ1NjQ2MGNkZDU0MDA0YWU1NThiY2I2NjAyZWU4ZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NjU2NDc2MDc2ODUsLTEyMi40MDcyNDQwODcwMzJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JhYjJmODQwOTkyMjQ1MGRiNDJkZjllZWNmMjViYzQzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JlYWNkMmU2ZmFjMjQ3MjBiMzdjZjc5MDU5MWNhZmM2ID0gJCgnPGRpdiBpZD0iaHRtbF9iZWFjZDJlNmZhYzI0NzIwYjM3Y2Y3OTA1OTFjYWZjNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmFiMmY4NDA5OTIyNDUwZGI0MmRmOWVlY2YyNWJjNDMuc2V0Q29udGVudChodG1sX2JlYWNkMmU2ZmFjMjQ3MjBiMzdjZjc5MDU5MWNhZmM2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNmM0NTY0NjBjZGQ1NDAwNGFlNTU4YmNiNjYwMmVlOGUuYmluZFBvcHVwKHBvcHVwX2JhYjJmODQwOTkyMjQ1MGRiNDJkZjllZWNmMjViYzQzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzAxODIwYTI4YmE0OTQ0ZDVhZTU0MDc2YWE1YmVkNWFjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81ZTVlMGQxMDRiYTM0NDkyODJmYTM2M2E0NzY0NzJiZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zZTBjMWVhMTQ1Zjc0ZTc1OWQ5YjU5ODExYjYyY2QyZSA9ICQoJzxkaXYgaWQ9Imh0bWxfM2UwYzFlYTE0NWY3NGU3NTlkOWI1OTgxMWI2MmNkMmUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81ZTVlMGQxMDRiYTM0NDkyODJmYTM2M2E0NzY0NzJiZi5zZXRDb250ZW50KGh0bWxfM2UwYzFlYTE0NWY3NGU3NTlkOWI1OTgxMWI2MmNkMmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wMTgyMGEyOGJhNDk0NGQ1YWU1NDA3NmFhNWJlZDVhYy5iaW5kUG9wdXAocG9wdXBfNWU1ZTBkMTA0YmEzNDQ5MjgyZmEzNjNhNDc2NDcyYmYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNWJmMDdiNjVkZWZmNGY1YTk1OWE5OWIxMzE3MWFiNTAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzNiZjhlZWI1OWYxZjQ2NGRhYjEwOTljNjM5NzkwZmIyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc1Mzc0YzQ4ZGQ4ZjQ3MzFiYjNlYzAwZWFjOTY1NWZhID0gJCgnPGRpdiBpZD0iaHRtbF83NTM3NGM0OGRkOGY0NzMxYmIzZWMwMGVhYzk2NTVmYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzNiZjhlZWI1OWYxZjQ2NGRhYjEwOTljNjM5NzkwZmIyLnNldENvbnRlbnQoaHRtbF83NTM3NGM0OGRkOGY0NzMxYmIzZWMwMGVhYzk2NTVmYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzViZjA3YjY1ZGVmZjRmNWE5NTlhOTliMTMxNzFhYjUwLmJpbmRQb3B1cChwb3B1cF8zYmY4ZWViNTlmMWY0NjRkYWIxMDk5YzYzOTc5MGZiMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iNmQ3ODZiN2Q3ZmU0YmRmODgyN2VmZDIyOTllODY4NiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjdkZDZiNWNiOTIyNDU3YWJjNThiMzI3YWMyNjAxYWMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDg5NTdlZDYwOWFiNGFlMzllYjdlZWNiZGU0MTc5YzUgPSAkKCc8ZGl2IGlkPSJodG1sX2Q4OTU3ZWQ2MDlhYjRhZTM5ZWI3ZWVjYmRlNDE3OWM1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY3ZGQ2YjVjYjkyMjQ1N2FiYzU4YjMyN2FjMjYwMWFjLnNldENvbnRlbnQoaHRtbF9kODk1N2VkNjA5YWI0YWUzOWViN2VlY2JkZTQxNzljNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2I2ZDc4NmI3ZDdmZTRiZGY4ODI3ZWZkMjI5OWU4Njg2LmJpbmRQb3B1cChwb3B1cF82N2RkNmI1Y2I5MjI0NTdhYmM1OGIzMjdhYzI2MDFhYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81NDNkMjlmODhmZGE0YTMwYWUyYjRkMmM1ZTE0YjM2MiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQ2OTI4MjAwNDEsLTEyMi40MTU3NTcwMzkxOTZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2IyMzRmMmYwMmZmMTQxNzU4YjFjYTUxZmY4MGE3YmY1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U0NmRkNWFkMmMwMzQ4MTBhYzg4YWY4MGQzNmIyODkzID0gJCgnPGRpdiBpZD0iaHRtbF9lNDZkZDVhZDJjMDM0ODEwYWM4OGFmODBkMzZiMjg5MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iMjM0ZjJmMDJmZjE0MTc1OGIxY2E1MWZmODBhN2JmNS5zZXRDb250ZW50KGh0bWxfZTQ2ZGQ1YWQyYzAzNDgxMGFjODhhZjgwZDM2YjI4OTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81NDNkMjlmODhmZGE0YTMwYWUyYjRkMmM1ZTE0YjM2Mi5iaW5kUG9wdXAocG9wdXBfYjIzNGYyZjAyZmYxNDE3NThiMWNhNTFmZjgwYTdiZjUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjkyOWZmOTM5ZTFjNGZlYjkzYzkzMGVhNGRkMzc3ZTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjg1MjgwNjI3NDY1LC0xMjIuNDc1NjQ3NDYwNzg1OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VlYzVkMmFlZmM3ZTQxMGQ4OGQ1OTBkNmE5Yjg1ZDdkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM0Y2I0ODhlM2M5OTRjMTc5Yzc5NzIzOWU1NGJiNjZiID0gJCgnPGRpdiBpZD0iaHRtbF8zNGNiNDg4ZTNjOTk0YzE3OWM3OTcyMzllNTRiYjY2YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Uk9CQkVSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWVjNWQyYWVmYzdlNDEwZDg4ZDU5MGQ2YTliODVkN2Quc2V0Q29udGVudChodG1sXzM0Y2I0ODhlM2M5OTRjMTc5Yzc5NzIzOWU1NGJiNjZiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYjkyOWZmOTM5ZTFjNGZlYjkzYzkzMGVhNGRkMzc3ZTkuYmluZFBvcHVwKHBvcHVwX2VlYzVkMmFlZmM3ZTQxMGQ4OGQ1OTBkNmE5Yjg1ZDdkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzAwMDA5YjY0ZjI2ZjQ0MDdiZmYyOTZhZjVjODY2ZDAyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQyODUxNzM3NDQ0ODk0LC0xMjIuNDIwOTY3NDQwNTY0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wYjg5MmRmMDNlOWY0YmQ0OGFhNzY2MTE5ZmQ1Mjc3ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mZTU3ZDFlMTY1MDg0Y2I3YTgxZjg1MGY4Mjc1ZDg2OCA9ICQoJzxkaXYgaWQ9Imh0bWxfZmU1N2QxZTE2NTA4NGNiN2E4MWY4NTBmODI3NWQ4NjgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wYjg5MmRmMDNlOWY0YmQ0OGFhNzY2MTE5ZmQ1Mjc3ZC5zZXRDb250ZW50KGh0bWxfZmU1N2QxZTE2NTA4NGNiN2E4MWY4NTBmODI3NWQ4NjgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wMDAwOWI2NGYyNmY0NDA3YmZmMjk2YWY1Yzg2NmQwMi5iaW5kUG9wdXAocG9wdXBfMGI4OTJkZjAzZTlmNGJkNDhhYTc2NjExOWZkNTI3N2QpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzQzYTQwMmRmZWQ3NGI1ZWIxZDFkNDk2ODljN2VjY2EgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIxMTk4NDg4OTMxLC0xMjIuNDE1NjY5NjYxNDQzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wMzk2YzNhNGQzMzA0ZDFiYTA0MzIxZGZkOWYyMzE1NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80MThkYWQzOTJjOTU0MGVlYTVlMzVjODdhZDk1OGI3MiA9ICQoJzxkaXYgaWQ9Imh0bWxfNDE4ZGFkMzkyYzk1NDBlZWE1ZTM1Yzg3YWQ5NThiNzIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDM5NmMzYTRkMzMwNGQxYmEwNDMyMWRmZDlmMjMxNTQuc2V0Q29udGVudChodG1sXzQxOGRhZDM5MmM5NTQwZWVhNWUzNWM4N2FkOTU4YjcyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNzQzYTQwMmRmZWQ3NGI1ZWIxZDFkNDk2ODljN2VjY2EuYmluZFBvcHVwKHBvcHVwXzAzOTZjM2E0ZDMzMDRkMWJhMDQzMjFkZmQ5ZjIzMTU0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzM4NGEwNmJjNGJlODRmZmQ4MTM3NjNmYmUzM2YwMTZlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc5MTY3NDIxODk2MywtMTIyLjQwNjM0NjQyNTYzMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjQzZGM4YThmNzY2NGIyMDgxNjU2Y2FjYmFmMzVhMDcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODY5YmZhNTkwMDEzNDc2ZTlkMDNjYWE5MjI1NzRlZTMgPSAkKCc8ZGl2IGlkPSJodG1sXzg2OWJmYTU5MDAxMzQ3NmU5ZDAzY2FhOTIyNTc0ZWUzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iNDNkYzhhOGY3NjY0YjIwODE2NTZjYWNiYWYzNWEwNy5zZXRDb250ZW50KGh0bWxfODY5YmZhNTkwMDEzNDc2ZTlkMDNjYWE5MjI1NzRlZTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zODRhMDZiYzRiZTg0ZmZkODEzNzYzZmJlMzNmMDE2ZS5iaW5kUG9wdXAocG9wdXBfYjQzZGM4YThmNzY2NGIyMDgxNjU2Y2FjYmFmMzVhMDcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfM2NkOTBlMzQ5Yjg1NGM4MmIwMDc0OTliNDA1Mzc5MmQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjU3MTg0Mzk1MjgyLC0xMjIuNDA5NTI5OTEzMjc4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81YWFkOTg1Njk1ZmI0YTAwOGE3MDE1NmNhNzNhNzQ0MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mMjg2MTdhNDUyNmI0MDNhYWUxOTNhY2M1ZDk0MWYwZiA9ICQoJzxkaXYgaWQ9Imh0bWxfZjI4NjE3YTQ1MjZiNDAzYWFlMTkzYWNjNWQ5NDFmMGYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzVhYWQ5ODU2OTVmYjRhMDA4YTcwMTU2Y2E3M2E3NDQxLnNldENvbnRlbnQoaHRtbF9mMjg2MTdhNDUyNmI0MDNhYWUxOTNhY2M1ZDk0MWYwZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzNjZDkwZTM0OWI4NTRjODJiMDA3NDk5YjQwNTM3OTJkLmJpbmRQb3B1cChwb3B1cF81YWFkOTg1Njk1ZmI0YTAwOGE3MDE1NmNhNzNhNzQ0MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84ZDE5YWU0NTdmMTY0NGI0ODAwZWYxZDk1NzY4MzYyMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jZDE0MGYxZTkxYWE0MGYxOTA4MDE3NjQ3ZTU5OWRjMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81MTNlZGFhM2E2MzY0ZDlhYWVjZTNhMTY3NmI2MGJhOCA9ICQoJzxkaXYgaWQ9Imh0bWxfNTEzZWRhYTNhNjM2NGQ5YWFlY2UzYTE2NzZiNjBiYTgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2QxNDBmMWU5MWFhNDBmMTkwODAxNzY0N2U1OTlkYzAuc2V0Q29udGVudChodG1sXzUxM2VkYWEzYTYzNjRkOWFhZWNlM2ExNjc2YjYwYmE4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOGQxOWFlNDU3ZjE2NDRiNDgwMGVmMWQ5NTc2ODM2MjAuYmluZFBvcHVwKHBvcHVwX2NkMTQwZjFlOTFhYTQwZjE5MDgwMTc2NDdlNTk5ZGMwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzhmYTVhM2RjMzFkODQwYTFhYzA4OGZkOGQ5ZmE0NTAxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85ODAzMTljNzE1MGU0NWQ2YjFlZjI1MTBiZDQ4NzlhMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82NDIwMThmOWUwZTA0NzMwYjdhZWI4NjViOWNiM2I2YSA9ICQoJzxkaXYgaWQ9Imh0bWxfNjQyMDE4ZjllMGUwNDczMGI3YWViODY1YjljYjNiNmEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85ODAzMTljNzE1MGU0NWQ2YjFlZjI1MTBiZDQ4NzlhMS5zZXRDb250ZW50KGh0bWxfNjQyMDE4ZjllMGUwNDczMGI3YWViODY1YjljYjNiNmEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84ZmE1YTNkYzMxZDg0MGExYWMwODhmZDhkOWZhNDUwMS5iaW5kUG9wdXAocG9wdXBfOTgwMzE5YzcxNTBlNDVkNmIxZWYyNTEwYmQ0ODc5YTEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjRjZWIwM2RhOTFlNGRmM2JiYzQ5YzIwMDQ3MDA5ZDcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc1MjViZGI4NTMwYTQ3MTdhZDFlMTc1NTM1Mjg0YTcwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y5ZGVmYzRhYjI1NTQ3ZmQ4OWM4M2JkNjVkNTM5NzA1ID0gJCgnPGRpdiBpZD0iaHRtbF9mOWRlZmM0YWIyNTU0N2ZkODljODNiZDY1ZDUzOTcwNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc1MjViZGI4NTMwYTQ3MTdhZDFlMTc1NTM1Mjg0YTcwLnNldENvbnRlbnQoaHRtbF9mOWRlZmM0YWIyNTU0N2ZkODljODNiZDY1ZDUzOTcwNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzI0Y2ViMDNkYTkxZTRkZjNiYmM0OWMyMDA0NzAwOWQ3LmJpbmRQb3B1cChwb3B1cF83NTI1YmRiODUzMGE0NzE3YWQxZTE3NTUzNTI4NGE3MCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84ZDU5ZDRhNjk5MzY0OWJmYTg0MmRiYTdlN2MyMzRkYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2MzMzZmMGE5NzkwNzQyMTA5MTFhYTg0Y2YzZWM3ZmZjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2VjZjk5YTY0NDI2MzQ2MTE4MGE1OGZhNzg0NDBkMDgxID0gJCgnPGRpdiBpZD0iaHRtbF9lY2Y5OWE2NDQyNjM0NjExODBhNThmYTc4NDQwZDA4MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2MzMzZmMGE5NzkwNzQyMTA5MTFhYTg0Y2YzZWM3ZmZjLnNldENvbnRlbnQoaHRtbF9lY2Y5OWE2NDQyNjM0NjExODBhNThmYTc4NDQwZDA4MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzhkNTlkNGE2OTkzNjQ5YmZhODQyZGJhN2U3YzIzNGRhLmJpbmRQb3B1cChwb3B1cF9jMzM2ZjBhOTc5MDc0MjEwOTExYWE4NGNmM2VjN2ZmYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80YWM3Zjc0ZDQzMWU0MWNiOTg5NmYyOTI1MGUwNDE5YSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Q4MTU1MDIxY2M3NzQ4ZDFiMzIzYzhhM2VmYzVkNmEwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E4NWY5Nzc1OGFlYzRmMzFhODc2MmE5Y2Q0ZGFjNGVkID0gJCgnPGRpdiBpZD0iaHRtbF9hODVmOTc3NThhZWM0ZjMxYTg3NjJhOWNkNGRhYzRlZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVRy9OQVJDT1RJQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDgxNTUwMjFjYzc3NDhkMWIzMjNjOGEzZWZjNWQ2YTAuc2V0Q29udGVudChodG1sX2E4NWY5Nzc1OGFlYzRmMzFhODc2MmE5Y2Q0ZGFjNGVkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNGFjN2Y3NGQ0MzFlNDFjYjk4OTZmMjkyNTBlMDQxOWEuYmluZFBvcHVwKHBvcHVwX2Q4MTU1MDIxY2M3NzQ4ZDFiMzIzYzhhM2VmYzVkNmEwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2IxZDhmYzRhY2E1ZTRlMzliOGJlY2E0OTlhNTFhMTQ3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTI5MmIzYTBkN2YzNDM4NTk5OGQ2YjZmZmZmZGUwYzcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDAzOWQzYTNmOTQyNDA3MWI4ZjhmNTVmOTJlMDdhMTggPSAkKCc8ZGl2IGlkPSJodG1sXzQwMzlkM2EzZjk0MjQwNzFiOGY4ZjU1ZjkyZTA3YTE4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTI5MmIzYTBkN2YzNDM4NTk5OGQ2YjZmZmZmZGUwYzcuc2V0Q29udGVudChodG1sXzQwMzlkM2EzZjk0MjQwNzFiOGY4ZjU1ZjkyZTA3YTE4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYjFkOGZjNGFjYTVlNGUzOWI4YmVjYTQ5OWE1MWExNDcuYmluZFBvcHVwKHBvcHVwXzkyOTJiM2EwZDdmMzQzODU5OThkNmI2ZmZmZmRlMGM3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA0YTc1OGViM2E5YjQ2NTJhNjhkNmNmYjM0YmRkY2U4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzUxNWRiOGYzNjhjNDc2NGIzYmNiMWE2Y2U0NGFlNWIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTNkMjJiMjg4ZWRkNDhkY2EyYzYzYjFjZWRiNjVlN2IgPSAkKCc8ZGl2IGlkPSJodG1sX2UzZDIyYjI4OGVkZDQ4ZGNhMmM2M2IxY2VkYjY1ZTdiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzUxNWRiOGYzNjhjNDc2NGIzYmNiMWE2Y2U0NGFlNWIuc2V0Q29udGVudChodG1sX2UzZDIyYjI4OGVkZDQ4ZGNhMmM2M2IxY2VkYjY1ZTdiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMDRhNzU4ZWIzYTliNDY1MmE2OGQ2Y2ZiMzRiZGRjZTguYmluZFBvcHVwKHBvcHVwX2M1MTVkYjhmMzY4YzQ3NjRiM2JjYjFhNmNlNDRhZTViKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Q0ZDA3ZTU1NzI4MDRmZDliNTFhMzUzODgxNzdlYmRjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81MTE2MGVlYzkwMGI0NDgyOTdmYzczZDI3M2VlMTM0MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zNDA3N2E4MmY1Yzk0MzQxYTFjNjdlZGQ1Yjk5ZmQ0OSA9ICQoJzxkaXYgaWQ9Imh0bWxfMzQwNzdhODJmNWM5NDM0MWExYzY3ZWRkNWI5OWZkNDkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzUxMTYwZWVjOTAwYjQ0ODI5N2ZjNzNkMjczZWUxMzQxLnNldENvbnRlbnQoaHRtbF8zNDA3N2E4MmY1Yzk0MzQxYTFjNjdlZGQ1Yjk5ZmQ0OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Q0ZDA3ZTU1NzI4MDRmZDliNTFhMzUzODgxNzdlYmRjLmJpbmRQb3B1cChwb3B1cF81MTE2MGVlYzkwMGI0NDgyOTdmYzczZDI3M2VlMTM0MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kNDM1YzY4NDJkNGY0YzJjYWQ4YTg5YmUzM2UzOWYxOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjg2ZDg4OThjYjQxNDJmYmFiYzZjNWEwYmZjMTYxN2EgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGUwZmY0MTlhZmZlNDkyM2I3MThmOWQzYTBjMmI2NmMgPSAkKCc8ZGl2IGlkPSJodG1sXzBlMGZmNDE5YWZmZTQ5MjNiNzE4ZjlkM2EwYzJiNjZjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjg2ZDg4OThjYjQxNDJmYmFiYzZjNWEwYmZjMTYxN2Euc2V0Q29udGVudChodG1sXzBlMGZmNDE5YWZmZTQ5MjNiNzE4ZjlkM2EwYzJiNjZjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDQzNWM2ODQyZDRmNGMyY2FkOGE4OWJlMzNlMzlmMTkuYmluZFBvcHVwKHBvcHVwXzI4NmQ4ODk4Y2I0MTQyZmJhYmM2YzVhMGJmYzE2MTdhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzI1NzRlYzAyYmE5ZDRhYzFiMTBjYWNiNjliODA2N2ViID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3NTExODg5NTY5NSwtMTIyLjQxODA0NTQ1Mjc2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTQwYmRkYTQ5YjVhNDdiZWI0NDY2ODlmZmM2NzYwOTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2M2OTUxNjdlOGM4NDExYjg1YmY5N2I1NTY0ZjJjNjkgPSAkKCc8ZGl2IGlkPSJodG1sXzNjNjk1MTY3ZThjODQxMWI4NWJmOTdiNTU2NGYyYzY5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NDBiZGRhNDliNWE0N2JlYjQ0NjY4OWZmYzY3NjA5NC5zZXRDb250ZW50KGh0bWxfM2M2OTUxNjdlOGM4NDExYjg1YmY5N2I1NTY0ZjJjNjkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yNTc0ZWMwMmJhOWQ0YWMxYjEwY2FjYjY5YjgwNjdlYi5iaW5kUG9wdXAocG9wdXBfNTQwYmRkYTQ5YjVhNDdiZWI0NDY2ODlmZmM2NzYwOTQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfM2VjNDU3ZjA1NDcwNDNiYzljZThkY2JlNjc4MmU2MjYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIwMjM4NDc4OTc1LC0xMjIuNDAxMTYxNTU1NjAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xNDcxODJlMzcyMzY0ZjkzYjM5M2JiMDdhMTNmMzNkYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMzlmMDQ4ODcyZDY0MjlhYmY5ZjU3NzM0MWFmMzU0YSA9ICQoJzxkaXYgaWQ9Imh0bWxfYTM5ZjA0ODg3MmQ2NDI5YWJmOWY1NzczNDFhZjM1NGEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xNDcxODJlMzcyMzY0ZjkzYjM5M2JiMDdhMTNmMzNkYy5zZXRDb250ZW50KGh0bWxfYTM5ZjA0ODg3MmQ2NDI5YWJmOWY1NzczNDFhZjM1NGEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zZWM0NTdmMDU0NzA0M2JjOWNlOGRjYmU2NzgyZTYyNi5iaW5kUG9wdXAocG9wdXBfMTQ3MTgyZTM3MjM2NGY5M2IzOTNiYjA3YTEzZjMzZGMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfODQ4N2QzMmMyNGIzNGIxM2E2OTYwMTg5MWU5MDE4MmEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjcwMDUzMTk2Mjk5OTUsLTEyMi40MDM0MDg2NjkxOTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc3NjQ5ZmU2YmRiNDRmNGNhMjBiOTBkYjhhMjQ1MTgzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2MxYjJiNmIwN2FlYTQ3YzBiM2NlNGU4YzA3ODcwMGFmID0gJCgnPGRpdiBpZD0iaHRtbF9jMWIyYjZiMDdhZWE0N2MwYjNjZTRlOGMwNzg3MDBhZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc3NjQ5ZmU2YmRiNDRmNGNhMjBiOTBkYjhhMjQ1MTgzLnNldENvbnRlbnQoaHRtbF9jMWIyYjZiMDdhZWE0N2MwYjNjZTRlOGMwNzg3MDBhZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzg0ODdkMzJjMjRiMzRiMTNhNjk2MDE4OTFlOTAxODJhLmJpbmRQb3B1cChwb3B1cF83NzY0OWZlNmJkYjQ0ZjRjYTIwYjkwZGI4YTI0NTE4Myk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82Nzg1OGIwZDM1ZTA0NmM4YmVmNjMwMDRiYjNjNWI2OSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNDQzNzQxNDEsLTEyMi40MTI5MzA1MjIwNTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg2MDZjODE4ZTZmMjQwYzRiMmQzMzEzYWYwOTlmMjZjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E4MGJkODFmMzBlNzQ2YTY5MTVkOGE3MTdiNTM0NjA5ID0gJCgnPGRpdiBpZD0iaHRtbF9hODBiZDgxZjMwZTc0NmE2OTE1ZDhhNzE3YjUzNDYwOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84NjA2YzgxOGU2ZjI0MGM0YjJkMzMxM2FmMDk5ZjI2Yy5zZXRDb250ZW50KGh0bWxfYTgwYmQ4MWYzMGU3NDZhNjkxNWQ4YTcxN2I1MzQ2MDkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82Nzg1OGIwZDM1ZTA0NmM4YmVmNjMwMDRiYjNjNWI2OS5iaW5kUG9wdXAocG9wdXBfODYwNmM4MThlNmYyNDBjNGIyZDMzMTNhZjA5OWYyNmMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMGU3YzRhOWU5NTQ0NDZjMGI1MDNkZTIwODU3MGEyZmUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTMwMTg2NTM3NDQ2MDQsLTEyMi40MTg1ODcxNzIyMTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU4MzQ2NjlmNGU3MDRmMzdhYWNiZGM3ZmYwN2EyZmFhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I1NzNjMjUxNjU0YjQyNGU5NTNiNmE2ODc3MWUyNzg5ID0gJCgnPGRpdiBpZD0iaHRtbF9iNTczYzI1MTY1NGI0MjRlOTUzYjZhNjg3NzFlMjc4OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81ODM0NjY5ZjRlNzA0ZjM3YWFjYmRjN2ZmMDdhMmZhYS5zZXRDb250ZW50KGh0bWxfYjU3M2MyNTE2NTRiNDI0ZTk1M2I2YTY4NzcxZTI3ODkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wZTdjNGE5ZTk1NDQ0NmMwYjUwM2RlMjA4NTcwYTJmZS5iaW5kUG9wdXAocG9wdXBfNTgzNDY2OWY0ZTcwNGYzN2FhY2JkYzdmZjA3YTJmYWEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNjFkZGRhZjY5NjJhNDNlNDlkZjg3NmZkYTM5NWYyMGIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hMjg2ZjJkMGQ1YmU0OWVhODAxNjhkOTk1ZmYyOWE0YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wNWE0NzI5YjdlZmU0NzhmYjU3ZjllNzRjN2VlNDEzNSA9ICQoJzxkaXYgaWQ9Imh0bWxfMDVhNDcyOWI3ZWZlNDc4ZmI1N2Y5ZTc0YzdlZTQxMzUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZSQVVEPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hMjg2ZjJkMGQ1YmU0OWVhODAxNjhkOTk1ZmYyOWE0Yi5zZXRDb250ZW50KGh0bWxfMDVhNDcyOWI3ZWZlNDc4ZmI1N2Y5ZTc0YzdlZTQxMzUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82MWRkZGFmNjk2MmE0M2U0OWRmODc2ZmRhMzk1ZjIwYi5iaW5kUG9wdXAocG9wdXBfYTI4NmYyZDBkNWJlNDllYTgwMTY4ZDk5NWZmMjlhNGIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmM4ZjJmNGRmZjlmNDVjM2I0MzUwNTJkNGM4NjhkMzkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTFkOGQ3ZjQxNTFhNGE0ZGJhMzFlNTA3ZGVjYTIxM2YgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzA0NzFhMjUzNzY0NDk4YzhkZTRmNDlkNjE3NzkzY2UgPSAkKCc8ZGl2IGlkPSJodG1sXzMwNDcxYTI1Mzc2NDQ5OGM4ZGU0ZjQ5ZDYxNzc5M2NlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81MWQ4ZDdmNDE1MWE0YTRkYmEzMWU1MDdkZWNhMjEzZi5zZXRDb250ZW50KGh0bWxfMzA0NzFhMjUzNzY0NDk4YzhkZTRmNDlkNjE3NzkzY2UpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iYzhmMmY0ZGZmOWY0NWMzYjQzNTA1MmQ0Yzg2OGQzOS5iaW5kUG9wdXAocG9wdXBfNTFkOGQ3ZjQxNTFhNGE0ZGJhMzFlNTA3ZGVjYTIxM2YpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfM2RhNjgyY2M5ZTc4NGIzODg1MDZmYzE2NTk1ZDMwZjggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODMwOTk4MjQ0NTkyMSwtMTIyLjQxOTE4MzA5NjM2Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWVkMzY0MzI5ZTFlNDQ1NWIxOWU4Y2E4ODMwMzZhMTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzNkM2E0MWYzYTcyNDc3MDliNTU1NWU4ZWUzZjNkNDYgPSAkKCc8ZGl2IGlkPSJodG1sX2MzZDNhNDFmM2E3MjQ3NzA5YjU1NTVlOGVlM2YzZDQ2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWVkMzY0MzI5ZTFlNDQ1NWIxOWU4Y2E4ODMwMzZhMTEuc2V0Q29udGVudChodG1sX2MzZDNhNDFmM2E3MjQ3NzA5YjU1NTVlOGVlM2YzZDQ2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfM2RhNjgyY2M5ZTc4NGIzODg1MDZmYzE2NTk1ZDMwZjguYmluZFBvcHVwKHBvcHVwX2VlZDM2NDMyOWUxZTQ0NTViMTllOGNhODgzMDM2YTExKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQ1ZjVhNTExNmQ5MzRmYjNhOTQ5ODMyOTM0Yjk5OWE5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQwNzM2MDU0ODM1NzksLTEyMi4zODg3NTMwNDY5OTddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc1MGFiMWFkZTRkODQ3ZDRhMTRmYTNmMjM4ZDlmZDBkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzYzODViNjYyNmUxNDQ0MzBhOWQ5NTkzYmNhMGQwZTliID0gJCgnPGRpdiBpZD0iaHRtbF82Mzg1YjY2MjZlMTQ0NDMwYTlkOTU5M2JjYTBkMGU5YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc1MGFiMWFkZTRkODQ3ZDRhMTRmYTNmMjM4ZDlmZDBkLnNldENvbnRlbnQoaHRtbF82Mzg1YjY2MjZlMTQ0NDMwYTlkOTU5M2JjYTBkMGU5Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQ1ZjVhNTExNmQ5MzRmYjNhOTQ5ODMyOTM0Yjk5OWE5LmJpbmRQb3B1cChwb3B1cF83NTBhYjFhZGU0ZDg0N2Q0YTE0ZmEzZjIzOGQ5ZmQwZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wNDY1NDNjZDE4Njg0ZmNjYWUyOWI3OGFlN2ExZTMxZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDk5MTI5NDQzNjYsLTEyMi40Mzc3OTk3MDM0NjhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzlmZTFiMTMxZjM4ZDQ4ZjZhYWUyNWIxMDkyNDBhMzk4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgwYjRjYTFhNTQ3ODQyZGFhODVmOWFkN2ViMmNmYWZjID0gJCgnPGRpdiBpZD0iaHRtbF84MGI0Y2ExYTU0Nzg0MmRhYTg1ZjlhZDdlYjJjZmFmYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWZlMWIxMzFmMzhkNDhmNmFhZTI1YjEwOTI0MGEzOTguc2V0Q29udGVudChodG1sXzgwYjRjYTFhNTQ3ODQyZGFhODVmOWFkN2ViMmNmYWZjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMDQ2NTQzY2QxODY4NGZjY2FlMjliNzhhZTdhMWUzMWQuYmluZFBvcHVwKHBvcHVwXzlmZTFiMTMxZjM4ZDQ4ZjZhYWUyNWIxMDkyNDBhMzk4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ZkNWYyODBiMjcwNjQwZmRiNTAxOGRlMzJlOWY4ZTJlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfM2NiZGMyZTZmZWZiNDFlMzhlOTM5NThiYWFlN2RmZDggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTcyMmQ0NmRjNDY3NGQ0MmE2Njg2Mzg0NTdkMDY2Y2IgPSAkKCc8ZGl2IGlkPSJodG1sX2U3MjJkNDZkYzQ2NzRkNDJhNjY4NjM4NDU3ZDA2NmNiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfM2NiZGMyZTZmZWZiNDFlMzhlOTM5NThiYWFlN2RmZDguc2V0Q29udGVudChodG1sX2U3MjJkNDZkYzQ2NzRkNDJhNjY4NjM4NDU3ZDA2NmNiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZmQ1ZjI4MGIyNzA2NDBmZGI1MDE4ZGUzMmU5ZjhlMmUuYmluZFBvcHVwKHBvcHVwXzNjYmRjMmU2ZmVmYjQxZTM4ZTkzOTU4YmFhZTdkZmQ4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzM3ODhkYmM4ZTM5NTRmZTNiNThiY2VkYzc2YWUzYzllID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2E3OGQ0MzM4MmFlNDZlNmFjNzUwNjZlYTg1ZTJkN2MgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDc1NjcyZTZlNzhhNDExMTg5MzllNTJiZmJmODc0OWIgPSAkKCc8ZGl2IGlkPSJodG1sXzA3NTY3MmU2ZTc4YTQxMTE4OTM5ZTUyYmZiZjg3NDliIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2E3OGQ0MzM4MmFlNDZlNmFjNzUwNjZlYTg1ZTJkN2Muc2V0Q29udGVudChodG1sXzA3NTY3MmU2ZTc4YTQxMTE4OTM5ZTUyYmZiZjg3NDliKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMzc4OGRiYzhlMzk1NGZlM2I1OGJjZWRjNzZhZTNjOWUuYmluZFBvcHVwKHBvcHVwXzdhNzhkNDMzODJhZTQ2ZTZhYzc1MDY2ZWE4NWUyZDdjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQ3ZGE0NzM0MzJiOTQzZDM5NWZkNWRmMTZhNTQ4NjBjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgyMjQ1ODIyMzkxNywtMTIyLjQ0NjYxMjk3ODgzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDlkMjZhYjVkYzllNGY0MGEyODExZWY2OGNkMmY2ZDIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGNjNjYyNTZkNmI4NGRlZDkyOGRhYWI3NTk1NDEyMDYgPSAkKCc8ZGl2IGlkPSJodG1sXzBjYzY2MjU2ZDZiODRkZWQ5MjhkYWFiNzU5NTQxMjA2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDlkMjZhYjVkYzllNGY0MGEyODExZWY2OGNkMmY2ZDIuc2V0Q29udGVudChodG1sXzBjYzY2MjU2ZDZiODRkZWQ5MjhkYWFiNzU5NTQxMjA2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDdkYTQ3MzQzMmI5NDNkMzk1ZmQ1ZGYxNmE1NDg2MGMuYmluZFBvcHVwKHBvcHVwXzQ5ZDI2YWI1ZGM5ZTRmNDBhMjgxMWVmNjhjZDJmNmQyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2E5NmVlZTEyNTdlMTQ3MjZiZjE3YjA4ZWViOTkzMTZkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwMDM3OTk5NTEyNzk1LC0xMjIuNDA0NTk0MTQwNjM0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lYzg1OGIwZjkzYzA0MmZlYTc1ODgwZmRiNTA5ODBiYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80N2RlYmU0ZWQ5MGQ0YjNiODhiZGQ0MTAzZTc1NjFhNyA9ICQoJzxkaXYgaWQ9Imh0bWxfNDdkZWJlNGVkOTBkNGIzYjg4YmRkNDEwM2U3NTYxYTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWM4NThiMGY5M2MwNDJmZWE3NTg4MGZkYjUwOTgwYmIuc2V0Q29udGVudChodG1sXzQ3ZGViZTRlZDkwZDRiM2I4OGJkZDQxMDNlNzU2MWE3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYTk2ZWVlMTI1N2UxNDcyNmJmMTdiMDhlZWI5OTMxNmQuYmluZFBvcHVwKHBvcHVwX2VjODU4YjBmOTNjMDQyZmVhNzU4ODBmZGI1MDk4MGJiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzYxMGY1YzU3ZjcyNTQ0ZTVhOWE5MmJiZWMyMWNjYTE3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzk1MzMzODI2NzQzNiwtMTIyLjM5NzM3Mzc0MDA2Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjc3N2JhMzJiNDBlNDljMTgyMjcxYmE1MTg0YmYyODIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTZiYWQxYjg5ZDdkNDZjN2EyMGY4ZDBjMDYxZDk4NDggPSAkKCc8ZGl2IGlkPSJodG1sX2U2YmFkMWI4OWQ3ZDQ2YzdhMjBmOGQwYzA2MWQ5ODQ4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY3NzdiYTMyYjQwZTQ5YzE4MjI3MWJhNTE4NGJmMjgyLnNldENvbnRlbnQoaHRtbF9lNmJhZDFiODlkN2Q0NmM3YTIwZjhkMGMwNjFkOTg0OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzYxMGY1YzU3ZjcyNTQ0ZTVhOWE5MmJiZWMyMWNjYTE3LmJpbmRQb3B1cChwb3B1cF82Nzc3YmEzMmI0MGU0OWMxODIyNzFiYTUxODRiZjI4Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kNzdkMzNlZjRjOTM0YWEwODgzZTA1NjhhMGM4NThmMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzBlZWUyNTIzNzRlNDczMjk4ZDZhNTE2Yzk2ODdhYzEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGFlMTYyOTMzODk4NDE1OTg0YTFmYjA3NTYzOTc1MjYgPSAkKCc8ZGl2IGlkPSJodG1sXzRhZTE2MjkzMzg5ODQxNTk4NGExZmIwNzU2Mzk3NTI2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzBlZWUyNTIzNzRlNDczMjk4ZDZhNTE2Yzk2ODdhYzEuc2V0Q29udGVudChodG1sXzRhZTE2MjkzMzg5ODQxNTk4NGExZmIwNzU2Mzk3NTI2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDc3ZDMzZWY0YzkzNGFhMDg4M2UwNTY4YTBjODU4ZjEuYmluZFBvcHVwKHBvcHVwX2MwZWVlMjUyMzc0ZTQ3MzI5OGQ2YTUxNmM5Njg3YWMxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA1MDI4ZjU2NGY2NzQ0ZGNhZWY4MjQyMTNlNWJmZWRlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzhjYjZiNTIyODAyNGY1Mjg2YTM4MThmYWZhNTU2NjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTQyMTVkMDM4NWVkNGI0MGIxNWE5YzBiYThkYTIzNTkgPSAkKCc8ZGl2IGlkPSJodG1sX2U0MjE1ZDAzODVlZDRiNDBiMTVhOWMwYmE4ZGEyMzU5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5QUk9TVElUVVRJT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2M4Y2I2YjUyMjgwMjRmNTI4NmEzODE4ZmFmYTU1NjYyLnNldENvbnRlbnQoaHRtbF9lNDIxNWQwMzg1ZWQ0YjQwYjE1YTljMGJhOGRhMjM1OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzA1MDI4ZjU2NGY2NzQ0ZGNhZWY4MjQyMTNlNWJmZWRlLmJpbmRQb3B1cChwb3B1cF9jOGNiNmI1MjI4MDI0ZjUyODZhMzgxOGZhZmE1NTY2Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82Yzk1ZTU3YjljOGU0MzhhODdhMjA2MjM0MTI1NmY4OCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA1OTVmOGRiMWQwNzRiMDI4ZDRmZDA4ZjJhZjdmZGRkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzMwODUwOTg5ZWY0NjRjNjFhZTVhYjJkNGI0MzliOTYyID0gJCgnPGRpdiBpZD0iaHRtbF8zMDg1MDk4OWVmNDY0YzYxYWU1YWIyZDRiNDM5Yjk2MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzA1OTVmOGRiMWQwNzRiMDI4ZDRmZDA4ZjJhZjdmZGRkLnNldENvbnRlbnQoaHRtbF8zMDg1MDk4OWVmNDY0YzYxYWU1YWIyZDRiNDM5Yjk2Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzZjOTVlNTdiOWM4ZTQzOGE4N2EyMDYyMzQxMjU2Zjg4LmJpbmRQb3B1cChwb3B1cF8wNTk1ZjhkYjFkMDc0YjAyOGQ0ZmQwOGYyYWY3ZmRkZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80Yzc0MWRiOTQ4YTA0YWEwOGM2M2UyYjVkYjJmMTg5NCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3MzI5MTgwNjkwMjk5NiwtMTIyLjQzNjYxNDE4MTMzMTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zYzdhNTU1ZWRkZTY0ZDUyOGNhNmFkZmI1M2NiMTUyMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81MWVkNDM1MzhiYzQ0NmE4YTE2MTk2YmU4YTAyNzExNCA9ICQoJzxkaXYgaWQ9Imh0bWxfNTFlZDQzNTM4YmM0NDZhOGExNjE5NmJlOGEwMjcxMTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfM2M3YTU1NWVkZGU2NGQ1MjhjYTZhZGZiNTNjYjE1MjAuc2V0Q29udGVudChodG1sXzUxZWQ0MzUzOGJjNDQ2YThhMTYxOTZiZThhMDI3MTE0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNGM3NDFkYjk0OGEwNGFhMDhjNjNlMmI1ZGIyZjE4OTQuYmluZFBvcHVwKHBvcHVwXzNjN2E1NTVlZGRlNjRkNTI4Y2E2YWRmYjUzY2IxNTIwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2JlMzJmOWIwYWM3YTQzODdiNzAzMzcxMDhhMGY4ZTAyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzlmMTg0NjI3MGVmNDQ1OTdiMTRjMTJkNTI5NzYyYTlhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgxZGI3OTA5MDE4MjQ0ZjdhZjkyZjA4N2ZlMGFhYzY0ID0gJCgnPGRpdiBpZD0iaHRtbF84MWRiNzkwOTAxODI0NGY3YWY5MmYwODdmZTBhYWM2NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVRy9OQVJDT1RJQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWYxODQ2MjcwZWY0NDU5N2IxNGMxMmQ1Mjk3NjJhOWEuc2V0Q29udGVudChodG1sXzgxZGI3OTA5MDE4MjQ0ZjdhZjkyZjA4N2ZlMGFhYzY0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYmUzMmY5YjBhYzdhNDM4N2I3MDMzNzEwOGEwZjhlMDIuYmluZFBvcHVwKHBvcHVwXzlmMTg0NjI3MGVmNDQ1OTdiMTRjMTJkNTI5NzYyYTlhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzAzODA4NWViZDk4NTQ3N2E4MjRkYzgxNTdjODIxYmM1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JlMjI3MTdjYmY1MTQ1YTA4NTZlOGU4ZjkwODEwY2U0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNiMTA4ZmMyNDAzODQzNzliODU2ZTc4ZWUzYmNiNmU1ID0gJCgnPGRpdiBpZD0iaHRtbF8zYjEwOGZjMjQwMzg0Mzc5Yjg1NmU3OGVlM2JjYjZlNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JlMjI3MTdjYmY1MTQ1YTA4NTZlOGU4ZjkwODEwY2U0LnNldENvbnRlbnQoaHRtbF8zYjEwOGZjMjQwMzg0Mzc5Yjg1NmU3OGVlM2JjYjZlNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzAzODA4NWViZDk4NTQ3N2E4MjRkYzgxNTdjODIxYmM1LmJpbmRQb3B1cChwb3B1cF9iZTIyNzE3Y2JmNTE0NWEwODU2ZThlOGY5MDgxMGNlNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80OGYxM2I3NGJmYWY0YWY3YjRjM2NjY2QwYTBmZWMyZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyODQxODA3MDY2MDIwNCwtMTIyLjQ1MDAwMDc5MDQ0NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjRhNGI5NGY5ZmYzNDc3OGI5MmMyYjAzNDAyNmM3ZDkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzQyMGY5YzczYmNjNDhiNmJlZDYxYzU5MzE3NDBlMDkgPSAkKCc8ZGl2IGlkPSJodG1sX2M0MjBmOWM3M2JjYzQ4YjZiZWQ2MWM1OTMxNzQwZTA5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82NGE0Yjk0ZjlmZjM0Nzc4YjkyYzJiMDM0MDI2YzdkOS5zZXRDb250ZW50KGh0bWxfYzQyMGY5YzczYmNjNDhiNmJlZDYxYzU5MzE3NDBlMDkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80OGYxM2I3NGJmYWY0YWY3YjRjM2NjY2QwYTBmZWMyZC5iaW5kUG9wdXAocG9wdXBfNjRhNGI5NGY5ZmYzNDc3OGI5MmMyYjAzNDAyNmM3ZDkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmIwNjg1M2U2ZmRiNDkzOTllZDFlOTdjMWQzYjE0NmUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84MDgyZDE0Yzk5ZmY0YWIzOGFhODQyYzNiOTQzNWYwNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zZDJhZDcyZTM0YTc0NmQzYmZiYmM5YjM5NjFhZjhmZiA9ICQoJzxkaXYgaWQ9Imh0bWxfM2QyYWQ3MmUzNGE3NDZkM2JmYmJjOWIzOTYxYWY4ZmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84MDgyZDE0Yzk5ZmY0YWIzOGFhODQyYzNiOTQzNWYwNC5zZXRDb250ZW50KGh0bWxfM2QyYWQ3MmUzNGE3NDZkM2JmYmJjOWIzOTYxYWY4ZmYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iYjA2ODUzZTZmZGI0OTM5OWVkMWU5N2MxZDNiMTQ2ZS5iaW5kUG9wdXAocG9wdXBfODA4MmQxNGM5OWZmNGFiMzhhYTg0MmMzYjk0MzVmMDQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTZmYWQwYzMzNDgzNDc5Zjk3Y2RkYjQ2ZDI0NDY0NzAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY5NmZlYTBkMGMzNzQ2YWFiZjZlM2E3NzFlZDAyMTMzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E3ZjFhNGMxMDA1MzQ5Y2NiYWYxOGMxMDU4NDQzM2JiID0gJCgnPGRpdiBpZD0iaHRtbF9hN2YxYTRjMTAwNTM0OWNjYmFmMThjMTA1ODQ0MzNiYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjk2ZmVhMGQwYzM3NDZhYWJmNmUzYTc3MWVkMDIxMzMuc2V0Q29udGVudChodG1sX2E3ZjFhNGMxMDA1MzQ5Y2NiYWYxOGMxMDU4NDQzM2JiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYTZmYWQwYzMzNDgzNDc5Zjk3Y2RkYjQ2ZDI0NDY0NzAuYmluZFBvcHVwKHBvcHVwXzY5NmZlYTBkMGMzNzQ2YWFiZjZlM2E3NzFlZDAyMTMzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA5ZjcwYzJiYjJkZTRhZjc4YzY2MzRjYmVjY2VkY2JmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzIxYzA4Y2JlYzJhNDQxOGVhYjdhODFkNDdmMTIzNmRjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzVkMDUwNjI0MjI5ZTQwY2FhZDYzYTdmY2I1NTJiOTA4ID0gJCgnPGRpdiBpZD0iaHRtbF81ZDA1MDYyNDIyOWU0MGNhYWQ2M2E3ZmNiNTUyYjkwOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yMWMwOGNiZWMyYTQ0MThlYWI3YTgxZDQ3ZjEyMzZkYy5zZXRDb250ZW50KGh0bWxfNWQwNTA2MjQyMjllNDBjYWFkNjNhN2ZjYjU1MmI5MDgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wOWY3MGMyYmIyZGU0YWY3OGM2NjM0Y2JlY2NlZGNiZi5iaW5kUG9wdXAocG9wdXBfMjFjMDhjYmVjMmE0NDE4ZWFiN2E4MWQ0N2YxMjM2ZGMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjQxYzBkNjIwN2E4NGM4MDlmY2Q3YjBkNDExODgzMGEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjBjYjA3OTNkMTdiNGQ5OGFkOTZkNzBjMTVkMmMxYmQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDZiNmFhMzc4NDI5NGQ0NmE2NGQ0NjcyOTk3MDNhY2UgPSAkKCc8ZGl2IGlkPSJodG1sXzA2YjZhYTM3ODQyOTRkNDZhNjRkNDY3Mjk5NzAzYWNlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVVNQSUNJT1VTIE9DQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjBjYjA3OTNkMTdiNGQ5OGFkOTZkNzBjMTVkMmMxYmQuc2V0Q29udGVudChodG1sXzA2YjZhYTM3ODQyOTRkNDZhNjRkNDY3Mjk5NzAzYWNlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYjQxYzBkNjIwN2E4NGM4MDlmY2Q3YjBkNDExODgzMGEuYmluZFBvcHVwKHBvcHVwXzYwY2IwNzkzZDE3YjRkOThhZDk2ZDcwYzE1ZDJjMWJkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzRjNTU1YWQ2M2Y3NjQ2YmViNjRmYTFkNDUzNWI5ZjliID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMwMTg5MDQ4OTllODQxZTBiYjdmMTMzOGNmZmMyZjI1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2ViOTViNDViOTdiMDQ5NjJiNTYwOGQ3OGFkNjEzNzk4ID0gJCgnPGRpdiBpZD0iaHRtbF9lYjk1YjQ1Yjk3YjA0OTYyYjU2MDhkNzhhZDYxMzc5OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMwMTg5MDQ4OTllODQxZTBiYjdmMTMzOGNmZmMyZjI1LnNldENvbnRlbnQoaHRtbF9lYjk1YjQ1Yjk3YjA0OTYyYjU2MDhkNzhhZDYxMzc5OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzRjNTU1YWQ2M2Y3NjQ2YmViNjRmYTFkNDUzNWI5ZjliLmJpbmRQb3B1cChwb3B1cF8zMDE4OTA0ODk5ZTg0MWUwYmI3ZjEzMzhjZmZjMmYyNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kODZiYTExNjNmMGM0NTcxOWVhOGZmMWY1MmE1ODBiYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjU4ZDZjNzQ4ZDUxNDYxYzg0NjMzZTM2NzIxM2JjMjkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmFhOGY1NjhiNGFiNGRmYTlhMTZjY2ZhMGI4NzljMjAgPSAkKCc8ZGl2IGlkPSJodG1sX2JhYThmNTY4YjRhYjRkZmE5YTE2Y2NmYTBiODc5YzIwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iNThkNmM3NDhkNTE0NjFjODQ2MzNlMzY3MjEzYmMyOS5zZXRDb250ZW50KGh0bWxfYmFhOGY1NjhiNGFiNGRmYTlhMTZjY2ZhMGI4NzljMjApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kODZiYTExNjNmMGM0NTcxOWVhOGZmMWY1MmE1ODBiYy5iaW5kUG9wdXAocG9wdXBfYjU4ZDZjNzQ4ZDUxNDYxYzg0NjMzZTM2NzIxM2JjMjkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTcyMjc0YzA2NTQyNGU1Y2E5YTk5NjM0MDUyNWM0NWQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTU5OTc3MzM5ODU2LC0xMjIuNDA5NDM1NjE3MTA2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82ZGMzNzNhMjZhMTI0ODE0ODBhMzY4Y2E3OWQ1NjJmZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iNDc1OWVjMDhiZTM0NGQ2YWJjNjE5NjNkNDhjOTE0YyA9ICQoJzxkaXYgaWQ9Imh0bWxfYjQ3NTllYzA4YmUzNDRkNmFiYzYxOTYzZDQ4YzkxNGMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82ZGMzNzNhMjZhMTI0ODE0ODBhMzY4Y2E3OWQ1NjJmZC5zZXRDb250ZW50KGh0bWxfYjQ3NTllYzA4YmUzNDRkNmFiYzYxOTYzZDQ4YzkxNGMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hNzIyNzRjMDY1NDI0ZTVjYTlhOTk2MzQwNTI1YzQ1ZC5iaW5kUG9wdXAocG9wdXBfNmRjMzczYTI2YTEyNDgxNDgwYTM2OGNhNzlkNTYyZmQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTI0NjVlODliMWI5NGYwN2IyNzk3ZjA3YzczMzU1YWYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODcwNzk4MTQ0NDQzLC0xMjIuNDI1ODgzMzU4MTQ4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lNWQ4YmIyNmVkMTA0M2NlODhhZDgyMGI0ZjVlNTI0ZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85MTU5YTZhMTAxNWE0NjAyYWI5MzY2Njk0OGE0YmUzYSA9ICQoJzxkaXYgaWQ9Imh0bWxfOTE1OWE2YTEwMTVhNDYwMmFiOTM2NjY5NDhhNGJlM2EiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTVkOGJiMjZlZDEwNDNjZTg4YWQ4MjBiNGY1ZTUyNGYuc2V0Q29udGVudChodG1sXzkxNTlhNmExMDE1YTQ2MDJhYjkzNjY2OTQ4YTRiZTNhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTI0NjVlODliMWI5NGYwN2IyNzk3ZjA3YzczMzU1YWYuYmluZFBvcHVwKHBvcHVwX2U1ZDhiYjI2ZWQxMDQzY2U4OGFkODIwYjRmNWU1MjRmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzhjODUwNGU5OTNlODRiYWI4MTFjNDg4YTRjMzZhYWQ5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2I2NzUwNTJkOWNkZTQzMDY4NjdhZDc4MDg3YTk3ZjNjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzczNWRkNDQ3ZmM2ZTQ5YzViZjIzY2VjNTE0MzJjZDkwID0gJCgnPGRpdiBpZD0iaHRtbF83MzVkZDQ0N2ZjNmU0OWM1YmYyM2NlYzUxNDMyY2Q5MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iNjc1MDUyZDljZGU0MzA2ODY3YWQ3ODA4N2E5N2YzYy5zZXRDb250ZW50KGh0bWxfNzM1ZGQ0NDdmYzZlNDljNWJmMjNjZWM1MTQzMmNkOTApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84Yzg1MDRlOTkzZTg0YmFiODExYzQ4OGE0YzM2YWFkOS5iaW5kUG9wdXAocG9wdXBfYjY3NTA1MmQ5Y2RlNDMwNjg2N2FkNzgwODdhOTdmM2MpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYWQ5NGY4ZGQwNjVkNDRmNWE2NGY4NWY5YWE4NjJiN2IgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTI3Njc4ODQ4MjEsLTEyMi40MzE5MjgwMTEwODldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdjOTI1NTMxYWExYTQyNTJhYmEyMzBmZDUwMmIzYjllID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2QzNTU5OTEzNDk1MjQ1NDQ5OTA4YzIwN2Y1YmU0Y2JhID0gJCgnPGRpdiBpZD0iaHRtbF9kMzU1OTkxMzQ5NTI0NTQ0OTkwOGMyMDdmNWJlNGNiYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdjOTI1NTMxYWExYTQyNTJhYmEyMzBmZDUwMmIzYjllLnNldENvbnRlbnQoaHRtbF9kMzU1OTkxMzQ5NTI0NTQ0OTkwOGMyMDdmNWJlNGNiYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2FkOTRmOGRkMDY1ZDQ0ZjVhNjRmODVmOWFhODYyYjdiLmJpbmRQb3B1cChwb3B1cF83YzkyNTUzMWFhMWE0MjUyYWJhMjMwZmQ1MDJiM2I5ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mYzY1ZDhjZmY4N2M0ZDBjOTI3MjFhNWJjNDZiZjk0OSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4OTU3MTAyNTU4NjMsLTEyMi40MDIxNjM3MTM2MThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFkZjczNGE1ZjBiOTQzYjM5MTgzZWVkNzUxYmUxMTQxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U0YzViYjM2NjE0MDQ1MzNhMjM0ZWQwMTg0MzUzODA5ID0gJCgnPGRpdiBpZD0iaHRtbF9lNGM1YmIzNjYxNDA0NTMzYTIzNGVkMDE4NDM1MzgwOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVTktFTk5FU1M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFkZjczNGE1ZjBiOTQzYjM5MTgzZWVkNzUxYmUxMTQxLnNldENvbnRlbnQoaHRtbF9lNGM1YmIzNjYxNDA0NTMzYTIzNGVkMDE4NDM1MzgwOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2ZjNjVkOGNmZjg3YzRkMGM5MjcyMWE1YmM0NmJmOTQ5LmJpbmRQb3B1cChwb3B1cF8xZGY3MzRhNWYwYjk0M2IzOTE4M2VlZDc1MWJlMTE0MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82ZTJmZThjNzkyMjM0YzYwYmIxOTlkMjc5YTJhMTE4YyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBiOTM2ODMxYzY5YjQ3Y2NiZTJiYjdiMmMyMjY3YzYyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y5MGFiMThmZDA0OTQ5NTBiOGRkYzhmM2UyNzUwNTYzID0gJCgnPGRpdiBpZD0iaHRtbF9mOTBhYjE4ZmQwNDk0OTUwYjhkZGM4ZjNlMjc1MDU2MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBiOTM2ODMxYzY5YjQ3Y2NiZTJiYjdiMmMyMjY3YzYyLnNldENvbnRlbnQoaHRtbF9mOTBhYjE4ZmQwNDk0OTUwYjhkZGM4ZjNlMjc1MDU2Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzZlMmZlOGM3OTIyMzRjNjBiYjE5OWQyNzlhMmExMThjLmJpbmRQb3B1cChwb3B1cF8wYjkzNjgzMWM2OWI0N2NjYmUyYmI3YjJjMjI2N2M2Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83ODAzMzE1MGYzNTQ0MDNhODAyNzQ5ZjgyZWMyNzQ0NiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNjU1NjUzNDc5NCwtMTIyLjQxMzc5MDk3Mjc4MDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kZmIxOTYzNDllZWU0ZDA1YTU0NDQyNmM3NmI1OTVhZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85ZDVjYWIzNDEyMWU0YmU5ODZkYTFjZjc5NzVhZmYyYyA9ICQoJzxkaXYgaWQ9Imh0bWxfOWQ1Y2FiMzQxMjFlNGJlOTg2ZGExY2Y3OTc1YWZmMmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGZiMTk2MzQ5ZWVlNGQwNWE1NDQ0MjZjNzZiNTk1YWQuc2V0Q29udGVudChodG1sXzlkNWNhYjM0MTIxZTRiZTk4NmRhMWNmNzk3NWFmZjJjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNzgwMzMxNTBmMzU0NDAzYTgwMjc0OWY4MmVjMjc0NDYuYmluZFBvcHVwKHBvcHVwX2RmYjE5NjM0OWVlZTRkMDVhNTQ0NDI2Yzc2YjU5NWFkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzUxMmQyMmFmOTlmMzQ0YjZhNjFmNjYwOWY1N2U2OGU4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzE3OGNlZDlmNzQ0NGQ2MmJlZWRlNzVjMmUyYzFiODAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGY0ZDA1YmYyZDAwNGJkZjllZGUyZjMxMjg2ZDlhMTkgPSAkKCc8ZGl2IGlkPSJodG1sXzBmNGQwNWJmMmQwMDRiZGY5ZWRlMmYzMTI4NmQ5YTE5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzE3OGNlZDlmNzQ0NGQ2MmJlZWRlNzVjMmUyYzFiODAuc2V0Q29udGVudChodG1sXzBmNGQwNWJmMmQwMDRiZGY5ZWRlMmYzMTI4NmQ5YTE5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNTEyZDIyYWY5OWYzNDRiNmE2MWY2NjA5ZjU3ZTY4ZTguYmluZFBvcHVwKHBvcHVwX2MxNzhjZWQ5Zjc0NDRkNjJiZWVkZTc1YzJlMmMxYjgwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzM1Y2U1MmZiYjA0YzQ4YjI5MTZlYWY0ZDBlZGI4NTg2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hY2QzMGFmOTMyYTQ0YWJmYWFlYWU1NWJjMGIwNDEzZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xNzEzNzA4OWI4MjM0OTNiYjAxZDllY2M1MDUyYTFjNSA9ICQoJzxkaXYgaWQ9Imh0bWxfMTcxMzcwODliODIzNDkzYmIwMWQ5ZWNjNTA1MmExYzUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYWNkMzBhZjkzMmE0NGFiZmFhZWFlNTViYzBiMDQxM2Quc2V0Q29udGVudChodG1sXzE3MTM3MDg5YjgyMzQ5M2JiMDFkOWVjYzUwNTJhMWM1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMzVjZTUyZmJiMDRjNDhiMjkxNmVhZjRkMGVkYjg1ODYuYmluZFBvcHVwKHBvcHVwX2FjZDMwYWY5MzJhNDRhYmZhYWVhZTU1YmMwYjA0MTNkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2VhMTIyY2NiMGUwNzQzOTFhNDFmYWQ4NzhmNDg0MTY3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jZTMxMjA3OGRjZjA0MmVhYWNiOTY4M2M2Yjk4MzU5NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mMWVhNGNmMzBjYTc0OTE3YTczYzkxMzRjZTQ0ODFiMCA9ICQoJzxkaXYgaWQ9Imh0bWxfZjFlYTRjZjMwY2E3NDkxN2E3M2M5MTM0Y2U0NDgxYjAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2UzMTIwNzhkY2YwNDJlYWFjYjk2ODNjNmI5ODM1OTcuc2V0Q29udGVudChodG1sX2YxZWE0Y2YzMGNhNzQ5MTdhNzNjOTEzNGNlNDQ4MWIwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZWExMjJjY2IwZTA3NDM5MWE0MWZhZDg3OGY0ODQxNjcuYmluZFBvcHVwKHBvcHVwX2NlMzEyMDc4ZGNmMDQyZWFhY2I5NjgzYzZiOTgzNTk3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ZkOWRkZTFkNGVmZDQyZGI4MzNhZDI4OWU1OTY3ODhkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1OTk4ODMyMzc5Nzk2LC0xMjIuNDExNzQ3MzcxOTI0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ZDFkYjgwOWMxZTY0ZDhlOWNkODQ0NjRmZDQ4NDY3OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lNWY3MGI4N2E3NmE0ZjZkODNkYmU5ZWI5MmIyNzVmZSA9ICQoJzxkaXYgaWQ9Imh0bWxfZTVmNzBiODdhNzZhNGY2ZDgzZGJlOWViOTJiMjc1ZmUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNVU1BJQ0lPVVMgT0NDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80ZDFkYjgwOWMxZTY0ZDhlOWNkODQ0NjRmZDQ4NDY3OC5zZXRDb250ZW50KGh0bWxfZTVmNzBiODdhNzZhNGY2ZDgzZGJlOWViOTJiMjc1ZmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mZDlkZGUxZDRlZmQ0MmRiODMzYWQyODllNTk2Nzg4ZC5iaW5kUG9wdXAocG9wdXBfNGQxZGI4MDljMWU2NGQ4ZTljZDg0NDY0ZmQ0ODQ2NzgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjQ0MzJhNDE1ZTdhNDhlODlhMTE1N2ExYTEzODcyM2YgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjMzNzU4MDU4MDU5LC0xMjIuNDIwNDM0NzI0NTUyOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2YyNmZhZmY3YzY0YjQwNDRiMzRmNmNkMWI4NzkyMDM0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzdiMzllODFlNzRlOTRkZTM5NWIzOTg3NWVmMGVkMzkzID0gJCgnPGRpdiBpZD0iaHRtbF83YjM5ZTgxZTc0ZTk0ZGUzOTViMzk4NzVlZjBlZDM5MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2YyNmZhZmY3YzY0YjQwNDRiMzRmNmNkMWI4NzkyMDM0LnNldENvbnRlbnQoaHRtbF83YjM5ZTgxZTc0ZTk0ZGUzOTViMzk4NzVlZjBlZDM5Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzI0NDMyYTQxNWU3YTQ4ZTg5YTExNTdhMWExMzg3MjNmLmJpbmRQb3B1cChwb3B1cF9mMjZmYWZmN2M2NGI0MDQ0YjM0ZjZjZDFiODc5MjAzNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mOGE1NDM5OTRjMDM0MjhmOTgwMTI0MTMxNGY1Y2E3NiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTAyMjY2MjI3ODYsLTEyMi40MTE5ODc2NDM1OTUwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDQwMzdjZDRjZjlmNDIxZDliZDA5ZTNjYTkyYzk4OGMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGVhMDY1NGFhZjg5NGRlZmExM2JmYWVjYTI1MWQzYjMgPSAkKCc8ZGl2IGlkPSJodG1sXzhlYTA2NTRhYWY4OTRkZWZhMTNiZmFlY2EyNTFkM2IzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q0MDM3Y2Q0Y2Y5ZjQyMWQ5YmQwOWUzY2E5MmM5ODhjLnNldENvbnRlbnQoaHRtbF84ZWEwNjU0YWFmODk0ZGVmYTEzYmZhZWNhMjUxZDNiMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Y4YTU0Mzk5NGMwMzQyOGY5ODAxMjQxMzE0ZjVjYTc2LmJpbmRQb3B1cChwb3B1cF9kNDAzN2NkNGNmOWY0MjFkOWJkMDllM2NhOTJjOTg4Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jZWQ2NGI2ZThlOWM0ZjZlYjRiMjY1ODc3MjNjN2NlZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDYyMDY0OTEwNjQ5NSwtMTIyLjUwMDM4MDQyNzkxNV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWNmMDRmMzcxNTRhNDE2M2JkNjM0ZDM5M2I5NGEzYzUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZWI1YmU4OWYxYzRlNDhiMWJjMjc1NzUwYmE1MWVhYTUgPSAkKCc8ZGl2IGlkPSJodG1sX2ViNWJlODlmMWM0ZTQ4YjFiYzI3NTc1MGJhNTFlYWE1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWNmMDRmMzcxNTRhNDE2M2JkNjM0ZDM5M2I5NGEzYzUuc2V0Q29udGVudChodG1sX2ViNWJlODlmMWM0ZTQ4YjFiYzI3NTc1MGJhNTFlYWE1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfY2VkNjRiNmU4ZTljNGY2ZWI0YjI2NTg3NzIzYzdjZWYuYmluZFBvcHVwKHBvcHVwX2VjZjA0ZjM3MTU0YTQxNjNiZDYzNGQzOTNiOTRhM2M1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzUyYmFhMDJhYjY4ZTQ0ZDY5ZGUzOTQzZjI2NWM4MTQ0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1MTkxODI2NzIxNywtMTIyLjQ2NjU1ODc4MDY4M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2Q1ODliZjUwNTBkNGEzZWIwMWYwMDU2MTgyZTQ1MDAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTA4MTg1OGY4NmQzNGZjMDliMzQ0NzFlMmZmM2YxMDcgPSAkKCc8ZGl2IGlkPSJodG1sXzEwODE4NThmODZkMzRmYzA5YjM0NDcxZTJmZjNmMTA3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jZDU4OWJmNTA1MGQ0YTNlYjAxZjAwNTYxODJlNDUwMC5zZXRDb250ZW50KGh0bWxfMTA4MTg1OGY4NmQzNGZjMDliMzQ0NzFlMmZmM2YxMDcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81MmJhYTAyYWI2OGU0NGQ2OWRlMzk0M2YyNjVjODE0NC5iaW5kUG9wdXAocG9wdXBfY2Q1ODliZjUwNTBkNGEzZWIwMWYwMDU2MTgyZTQ1MDApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDUwNTlkYTk4NzM1NDg2Y2JkZjgyMDhlNWZjZDI1NTAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkwODQxNzI5MDI4LC0xMjIuNDg2OTI1OTYwMTE0MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FmNTZjOGQwMDgxYjQ4NWViMTVlNTdlOWI5OGEyNjAwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzljMGI4ZGIwYWI2NTRmM2FhYTZmMTQwNjYzNmM0YWYwID0gJCgnPGRpdiBpZD0iaHRtbF85YzBiOGRiMGFiNjU0ZjNhYWE2ZjE0MDY2MzZjNGFmMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FmNTZjOGQwMDgxYjQ4NWViMTVlNTdlOWI5OGEyNjAwLnNldENvbnRlbnQoaHRtbF85YzBiOGRiMGFiNjU0ZjNhYWE2ZjE0MDY2MzZjNGFmMCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzA1MDU5ZGE5ODczNTQ4NmNiZGY4MjA4ZTVmY2QyNTUwLmJpbmRQb3B1cChwb3B1cF9hZjU2YzhkMDA4MWI0ODVlYjE1ZTU3ZTliOThhMjYwMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84OGQyNGY4NDA0ZmY0MDU3YjVlN2NmODVjOGNlNTViMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2ODUzNjAxMjM1ODMsLTEyMi40MTU2MTYzMzgzMTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWVhODIzOWI0YjAyNDljMmI0Y2RlNzNhZDRjOTM5ODgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzY1ZGM3M2U4OGE1NDk3Nzk0NmY2OWQ4MWY4NTljMTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjVhZWZmNmI5YzZlNDViYTkwMjRhNDkxYmM1MTViMGYgPSAkKCc8ZGl2IGlkPSJodG1sX2I1YWVmZjZiOWM2ZTQ1YmE5MDI0YTQ5MWJjNTE1YjBmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM2NWRjNzNlODhhNTQ5Nzc5NDZmNjlkODFmODU5YzExLnNldENvbnRlbnQoaHRtbF9iNWFlZmY2YjljNmU0NWJhOTAyNGE0OTFiYzUxNWIwZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzg4ZDI0Zjg0MDRmZjQwNTdiNWU3Y2Y4NWM4Y2U1NWIzLmJpbmRQb3B1cChwb3B1cF8zNjVkYzczZTg4YTU0OTc3OTQ2ZjY5ZDgxZjg1OWMxMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81N2Y3ODBiOGUzMGM0YjE3OWQ1MzZiYmQ2NDkyNmM4OSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VkMzRmM2YzYzFiMzQzZDg5ZDM2ZTUzZmMzNDU0OTQ0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg1ZTJmYzhmNTRjOTQ4ZGRhODJhMmQ2MmI1YzMyYzY1ID0gJCgnPGRpdiBpZD0iaHRtbF84NWUyZmM4ZjU0Yzk0OGRkYTgyYTJkNjJiNWMzMmM2NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VkMzRmM2YzYzFiMzQzZDg5ZDM2ZTUzZmMzNDU0OTQ0LnNldENvbnRlbnQoaHRtbF84NWUyZmM4ZjU0Yzk0OGRkYTgyYTJkNjJiNWMzMmM2NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzU3Zjc4MGI4ZTMwYzRiMTc5ZDUzNmJiZDY0OTI2Yzg5LmJpbmRQb3B1cChwb3B1cF9lZDM0ZjNmM2MxYjM0M2Q4OWQzNmU1M2ZjMzQ1NDk0NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82NWI1M2NkYjQyMDk0ODgwOWRhZDA3MTExNTczMjE3MyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FlYTgyMzliNGIwMjQ5YzJiNGNkZTczYWQ0YzkzOTg4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VjNTkyZGIyMWNlOTQwMTRhZTE2ZDgwNjVhM2I4ODAzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc1Y2UyMjQwOTkwZDQ2MzdhMDI5NTMyNzJlMTI3ODUwID0gJCgnPGRpdiBpZD0iaHRtbF83NWNlMjI0MDk5MGQ0NjM3YTAyOTUzMjcyZTEyNzg1MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWM1OTJkYjIxY2U5NDAxNGFlMTZkODA2NWEzYjg4MDMuc2V0Q29udGVudChodG1sXzc1Y2UyMjQwOTkwZDQ2MzdhMDI5NTMyNzJlMTI3ODUwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNjViNTNjZGI0MjA5NDg4MDlkYWQwNzExMTU3MzIxNzMuYmluZFBvcHVwKHBvcHVwX2VjNTkyZGIyMWNlOTQwMTRhZTE2ZDgwNjVhM2I4ODAzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2RhNjI5MzA1OGQ1ZTQ2MjA5MTBhM2JlZmJhZDg4ODU0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM1MjY4MTQ2OTA4Mzk2LC0xMjIuNDcyNzE1NzU5NjMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZWE4MjM5YjRiMDI0OWMyYjRjZGU3M2FkNGM5Mzk4OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yN2UwMDQyZjQ0OTE0MWExODU4MmI3MjA1ZWRiMzUxZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85ZmVlZGE1MGM5ZTI0MTlmODFjZmI3MDQzYTZkNmU1MyA9ICQoJzxkaXYgaWQ9Imh0bWxfOWZlZWRhNTBjOWUyNDE5ZjgxY2ZiNzA0M2E2ZDZlNTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI3ZTAwNDJmNDQ5MTQxYTE4NTgyYjcyMDVlZGIzNTFmLnNldENvbnRlbnQoaHRtbF85ZmVlZGE1MGM5ZTI0MTlmODFjZmI3MDQzYTZkNmU1Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2RhNjI5MzA1OGQ1ZTQ2MjA5MTBhM2JlZmJhZDg4ODU0LmJpbmRQb3B1cChwb3B1cF8yN2UwMDQyZjQ0OTE0MWExODU4MmI3MjA1ZWRiMzUxZik7CgogICAgICAgICAgICAKICAgICAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fa39c57ec18>"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from folium import plugins\n",
"\n",
"# let's start again with a clean copy of the map of San Francisco\n",
"sanfran_map = folium.Map(location = [latitude, longitude], zoom_start = 12)\n",
"\n",
"# instantiate a mark cluster object for the incidents in the dataframe\n",
"incidents = plugins.MarkerCluster().add_to(sanfran_map)\n",
"\n",
"# loop through the dataframe and add each data point to the mark cluster\n",
"for lat, lng, label, in zip(df_incidents.Y, df_incidents.X, df_incidents.Category):\n",
" folium.Marker(\n",
" location=[lat, lng],\n",
" icon=None,\n",
" popup=label,\n",
" ).add_to(incidents)\n",
"\n",
"# display map\n",
"sanfran_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Notice how when you zoom out all the way, all markers are grouped into one cluster, *the global cluster*, of 100 markers or crimes, which is the total number of crimes in our dataframe. Once you start zooming in, the *global cluster* will start breaking up into smaller clusters. Zooming in all the way will result in individual markers."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Choropleth Maps <a id=\"8\"></a>\n",
"\n",
"A `Choropleth` map is a thematic map in which areas are shaded or patterned in proportion to the measurement of the statistical variable being displayed on the map, such as population density or per-capita income. The choropleth map provides an easy way to visualize how a measurement varies across a geographic area or it shows the level of variability within a region. Below is a `Choropleth` map of the US depicting the population by square mile per state.\n",
"\n",
"<img src = \"https://ibm.box.com/shared/static/2kzaknzdf6crt3n5rx6haskg3wiaklxl.png\" width = 600> "
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now, let's create our own `Choropleth` map of the world depicting immigration from various countries to Canada.\n",
"\n",
"Let's first download and import our primary Canadian immigration dataset using *pandas* `read_excel()` method. Normally, before we can do that, we would need to download a module which *pandas* requires to read in excel files. This module is **xlrd**. For your convenience, we have pre-installed this module, so you would not have to worry about that. Otherwise, you would need to run the following line of code to install the **xlrd** module:\n",
"```\n",
"!conda install -c anaconda xlrd --yes\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Download the dataset and read it into a *pandas* dataframe:"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Data downloaded and read into a dataframe!\n"
]
}
],
"source": [
"df_can = pd.read_excel('https://ibm.box.com/shared/static/lw190pt9zpy5bd1ptyg2aw15awomz9pu.xlsx',\n",
" sheet_name='Canada by Citizenship',\n",
" skiprows=range(20),\n",
" skipfooter=2)\n",
"\n",
"print('Data downloaded and read into a dataframe!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's take a look at the first five items in our dataset."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Type</th>\n",
" <th>Coverage</th>\n",
" <th>OdName</th>\n",
" <th>AREA</th>\n",
" <th>AreaName</th>\n",
" <th>REG</th>\n",
" <th>RegName</th>\n",
" <th>DEV</th>\n",
" <th>DevName</th>\n",
" <th>1980</th>\n",
" <th>...</th>\n",
" <th>2004</th>\n",
" <th>2005</th>\n",
" <th>2006</th>\n",
" <th>2007</th>\n",
" <th>2008</th>\n",
" <th>2009</th>\n",
" <th>2010</th>\n",
" <th>2011</th>\n",
" <th>2012</th>\n",
" <th>2013</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>Afghanistan</td>\n",
" <td>935</td>\n",
" <td>Asia</td>\n",
" <td>5501</td>\n",
" <td>Southern Asia</td>\n",
" <td>902</td>\n",
" <td>Developing regions</td>\n",
" <td>16</td>\n",
" <td>...</td>\n",
" <td>2978</td>\n",
" <td>3436</td>\n",
" <td>3009</td>\n",
" <td>2652</td>\n",
" <td>2111</td>\n",
" <td>1746</td>\n",
" <td>1758</td>\n",
" <td>2203</td>\n",
" <td>2635</td>\n",
" <td>2004</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>Albania</td>\n",
" <td>908</td>\n",
" <td>Europe</td>\n",
" <td>925</td>\n",
" <td>Southern Europe</td>\n",
" <td>901</td>\n",
" <td>Developed regions</td>\n",
" <td>1</td>\n",
" <td>...</td>\n",
" <td>1450</td>\n",
" <td>1223</td>\n",
" <td>856</td>\n",
" <td>702</td>\n",
" <td>560</td>\n",
" <td>716</td>\n",
" <td>561</td>\n",
" <td>539</td>\n",
" <td>620</td>\n",
" <td>603</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>Algeria</td>\n",
" <td>903</td>\n",
" <td>Africa</td>\n",
" <td>912</td>\n",
" <td>Northern Africa</td>\n",
" <td>902</td>\n",
" <td>Developing regions</td>\n",
" <td>80</td>\n",
" <td>...</td>\n",
" <td>3616</td>\n",
" <td>3626</td>\n",
" <td>4807</td>\n",
" <td>3623</td>\n",
" <td>4005</td>\n",
" <td>5393</td>\n",
" <td>4752</td>\n",
" <td>4325</td>\n",
" <td>3774</td>\n",
" <td>4331</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>American Samoa</td>\n",
" <td>909</td>\n",
" <td>Oceania</td>\n",
" <td>957</td>\n",
" <td>Polynesia</td>\n",
" <td>902</td>\n",
" <td>Developing regions</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>Andorra</td>\n",
" <td>908</td>\n",
" <td>Europe</td>\n",
" <td>925</td>\n",
" <td>Southern Europe</td>\n",
" <td>901</td>\n",
" <td>Developed regions</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 43 columns</p>\n",
"</div>"
],
"text/plain": [
" Type Coverage OdName AREA AreaName REG \\\n",
"0 Immigrants Foreigners Afghanistan 935 Asia 5501 \n",
"1 Immigrants Foreigners Albania 908 Europe 925 \n",
"2 Immigrants Foreigners Algeria 903 Africa 912 \n",
"3 Immigrants Foreigners American Samoa 909 Oceania 957 \n",
"4 Immigrants Foreigners Andorra 908 Europe 925 \n",
"\n",
" RegName DEV DevName 1980 ... 2004 2005 2006 \\\n",
"0 Southern Asia 902 Developing regions 16 ... 2978 3436 3009 \n",
"1 Southern Europe 901 Developed regions 1 ... 1450 1223 856 \n",
"2 Northern Africa 902 Developing regions 80 ... 3616 3626 4807 \n",
"3 Polynesia 902 Developing regions 0 ... 0 0 1 \n",
"4 Southern Europe 901 Developed regions 0 ... 0 0 1 \n",
"\n",
" 2007 2008 2009 2010 2011 2012 2013 \n",
"0 2652 2111 1746 1758 2203 2635 2004 \n",
"1 702 560 716 561 539 620 603 \n",
"2 3623 4005 5393 4752 4325 3774 4331 \n",
"3 0 0 0 0 0 0 0 \n",
"4 1 0 0 0 0 1 1 \n",
"\n",
"[5 rows x 43 columns]"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_can.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's find out how many entries there are in our dataset."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(195, 43)\n"
]
}
],
"source": [
"# print the dimensions of the dataframe\n",
"print(df_can.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Clean up data. We will make some modifications to the original dataset to make it easier to create our visualizations. Refer to *Introduction to Matplotlib and Line Plots* and *Area Plots, Histograms, and Bar Plots* notebooks for a detailed description of this preprocessing."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"data dimensions: (195, 39)\n"
]
}
],
"source": [
"# clean up the dataset to remove unnecessary columns (eg. REG) \n",
"df_can.drop(['AREA','REG','DEV','Type','Coverage'], axis=1, inplace=True)\n",
"\n",
"# let's rename the columns so that they make sense\n",
"df_can.rename(columns={'OdName':'Country', 'AreaName':'Continent','RegName':'Region'}, inplace=True)\n",
"\n",
"# for sake of consistency, let's also make all column labels of type string\n",
"df_can.columns = list(map(str, df_can.columns))\n",
"\n",
"# add total column\n",
"df_can['Total'] = df_can.sum(axis=1)\n",
"\n",
"# years that we will be using in this lesson - useful for plotting later on\n",
"years = list(map(str, range(1980, 2014)))\n",
"print ('data dimensions:', df_can.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's take a look at the first five items of our cleaned dataframe."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Country</th>\n",
" <th>Continent</th>\n",
" <th>Region</th>\n",
" <th>DevName</th>\n",
" <th>1980</th>\n",
" <th>1981</th>\n",
" <th>1982</th>\n",
" <th>1983</th>\n",
" <th>1984</th>\n",
" <th>1985</th>\n",
" <th>...</th>\n",
" <th>2005</th>\n",
" <th>2006</th>\n",
" <th>2007</th>\n",
" <th>2008</th>\n",
" <th>2009</th>\n",
" <th>2010</th>\n",
" <th>2011</th>\n",
" <th>2012</th>\n",
" <th>2013</th>\n",
" <th>Total</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Afghanistan</td>\n",
" <td>Asia</td>\n",
" <td>Southern Asia</td>\n",
" <td>Developing regions</td>\n",
" <td>16</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>47</td>\n",
" <td>71</td>\n",
" <td>340</td>\n",
" <td>...</td>\n",
" <td>3436</td>\n",
" <td>3009</td>\n",
" <td>2652</td>\n",
" <td>2111</td>\n",
" <td>1746</td>\n",
" <td>1758</td>\n",
" <td>2203</td>\n",
" <td>2635</td>\n",
" <td>2004</td>\n",
" <td>58639</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Albania</td>\n",
" <td>Europe</td>\n",
" <td>Southern Europe</td>\n",
" <td>Developed regions</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>1223</td>\n",
" <td>856</td>\n",
" <td>702</td>\n",
" <td>560</td>\n",
" <td>716</td>\n",
" <td>561</td>\n",
" <td>539</td>\n",
" <td>620</td>\n",
" <td>603</td>\n",
" <td>15699</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Algeria</td>\n",
" <td>Africa</td>\n",
" <td>Northern Africa</td>\n",
" <td>Developing regions</td>\n",
" <td>80</td>\n",
" <td>67</td>\n",
" <td>71</td>\n",
" <td>69</td>\n",
" <td>63</td>\n",
" <td>44</td>\n",
" <td>...</td>\n",
" <td>3626</td>\n",
" <td>4807</td>\n",
" <td>3623</td>\n",
" <td>4005</td>\n",
" <td>5393</td>\n",
" <td>4752</td>\n",
" <td>4325</td>\n",
" <td>3774</td>\n",
" <td>4331</td>\n",
" <td>69439</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>American Samoa</td>\n",
" <td>Oceania</td>\n",
" <td>Polynesia</td>\n",
" <td>Developing regions</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Andorra</td>\n",
" <td>Europe</td>\n",
" <td>Southern Europe</td>\n",
" <td>Developed regions</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>15</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 39 columns</p>\n",
"</div>"
],
"text/plain": [
" Country Continent Region DevName 1980 1981 \\\n",
"0 Afghanistan Asia Southern Asia Developing regions 16 39 \n",
"1 Albania Europe Southern Europe Developed regions 1 0 \n",
"2 Algeria Africa Northern Africa Developing regions 80 67 \n",
"3 American Samoa Oceania Polynesia Developing regions 0 1 \n",
"4 Andorra Europe Southern Europe Developed regions 0 0 \n",
"\n",
" 1982 1983 1984 1985 ... 2005 2006 2007 2008 2009 2010 2011 \\\n",
"0 39 47 71 340 ... 3436 3009 2652 2111 1746 1758 2203 \n",
"1 0 0 0 0 ... 1223 856 702 560 716 561 539 \n",
"2 71 69 63 44 ... 3626 4807 3623 4005 5393 4752 4325 \n",
"3 0 0 0 0 ... 0 1 0 0 0 0 0 \n",
"4 0 0 0 0 ... 0 1 1 0 0 0 0 \n",
"\n",
" 2012 2013 Total \n",
"0 2635 2004 58639 \n",
"1 620 603 15699 \n",
"2 3774 4331 69439 \n",
"3 0 0 6 \n",
"4 1 1 15 \n",
"\n",
"[5 rows x 39 columns]"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_can.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"In order to create a `Choropleth` map, we need a GeoJSON file that defines the areas/boundaries of the state, county, or country that we are interested in. In our case, since we are endeavoring to create a world map, we want a GeoJSON that defines the boundaries of all world countries. For your convenience, we will be providing you with this file, so let's go ahead and download it. Let's name it **world_countries.json**."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"GeoJSON file downloaded!\n"
]
}
],
"source": [
"# download countries geojson file\n",
"!wget --quiet https://ibm.box.com/shared/static/cto2qv7nx6yq19logfcissyy4euo8lho.json -O world_countries.json\n",
" \n",
"print('GeoJSON file downloaded!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now that we have the GeoJSON file, let's create a world map, centered around **[0, 0]** *latitude* and *longitude* values, with an intial zoom level of 2, and using *Mapbox Bright* style."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZDAzMDdhMmY5NDM4NDk3NjkzNWE5NjRhMzFhOGM2NGEgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2QwMzA3YTJmOTQzODQ5NzY5MzVhOTY0YTMxYThjNjRhIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9kMDMwN2EyZjk0Mzg0OTc2OTM1YTk2NGEzMWE4YzY0YSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9kMDMwN2EyZjk0Mzg0OTc2OTM1YTk2NGEzMWE4YzY0YScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMCwwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb206IDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzMzNTgyZjBjYmI3NTQwYzE4OWViMGNkMDk0NTc3Mjk0ID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZXMubWFwYm94LmNvbS92My9tYXBib3gud29ybGQtYnJpZ2h0L3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZDAzMDdhMmY5NDM4NDk3NjkzNWE5NjRhMzFhOGM2NGEpOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fa39e238b00>"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"world_geo = r'world_countries.json' # geojson file\n",
"\n",
"# create a plain world map\n",
"world_map = folium.Map(location=[0, 0], zoom_start=2, tiles='Mapbox Bright')\n",
"\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And now to create a `Choropleth` map, we will use the *choropleth* method with the following main parameters:\n",
"\n",
"1. geo_data, which is the GeoJSON file.\n",
"2. data, which is the dataframe containing the data.\n",
"3. columns, which represents the columns in the dataframe that will be used to create the `Choropleth` map.\n",
"4. key_on, which is the key or variable in the GeoJSON file that contains the name of the variable of interest. To determine that, you will need to open the GeoJSON file using any text editor and note the name of the key or variable that contains the name of the countries, since the countries are our variable of interest. In this case, **name** is the key in the GeoJSON file that contains the name of the countries. Note that this key is case_sensitive, so you need to pass exactly as it exists in the GeoJSON file."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZDAzMDdhMmY5NDM4NDk3NjkzNWE5NjRhMzFhOGM2NGEgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2QzLzMuNS41L2QzLm1pbi5qcyI+PC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvbGl1bS1tYXAiIGlkPSJtYXBfZDAzMDdhMmY5NDM4NDk3NjkzNWE5NjRhMzFhOGM2NGEiID48L2Rpdj4KICAgICAgICAKPC9ib2R5Pgo8c2NyaXB0PiAgICAKICAgIAoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgYm91bmRzID0gbnVsbDsKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFwX2QwMzA3YTJmOTQzODQ5NzY5MzVhOTY0YTMxYThjNjRhID0gTC5tYXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFwX2QwMzA3YTJmOTQzODQ5NzY5MzVhOTY0YTMxYThjNjRhJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjZW50ZXI6IFswLDBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfMzM1ODJmMGNiYjc1NDBjMTg5ZWIwY2QwOTQ1NzcyOTQgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlcy5tYXBib3guY29tL3YzL21hcGJveC53b3JsZC1icmlnaHQve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9kMDMwN2EyZjk0Mzg0OTc2OTM1YTk2NGEzMWE4YzY0YSk7CiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBnZW9fanNvbl8xMTg4MzlhMjFhOWQ0MWZmYjViZmQwMGE3MjhlZWNhZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNjEuMjEwODE3LCAzNS42NTAwNzJdLCBbNjIuMjMwNjUxLCAzNS4yNzA2NjRdLCBbNjIuOTg0NjYyLCAzNS40MDQwNDFdLCBbNjMuMTkzNTM4LCAzNS44NTcxNjZdLCBbNjMuOTgyODk2LCAzNi4wMDc5NTddLCBbNjQuNTQ2NDc5LCAzNi4zMTIwNzNdLCBbNjQuNzQ2MTA1LCAzNy4xMTE4MThdLCBbNjUuNTg4OTQ4LCAzNy4zMDUyMTddLCBbNjUuNzQ1NjMxLCAzNy42NjExNjRdLCBbNjYuMjE3Mzg1LCAzNy4zOTM3OV0sIFs2Ni41MTg2MDcsIDM3LjM2Mjc4NF0sIFs2Ny4wNzU3ODIsIDM3LjM1NjE0NF0sIFs2Ny44MywgMzcuMTQ0OTk0XSwgWzY4LjEzNTU2MiwgMzcuMDIzMTE1XSwgWzY4Ljg1OTQ0NiwgMzcuMzQ0MzM2XSwgWzY5LjE5NjI3MywgMzcuMTUxMTQ0XSwgWzY5LjUxODc4NSwgMzcuNjA4OTk3XSwgWzcwLjExNjU3OCwgMzcuNTg4MjIzXSwgWzcwLjI3MDU3NCwgMzcuNzM1MTY1XSwgWzcwLjM3NjMwNCwgMzguMTM4Mzk2XSwgWzcwLjgwNjgyMSwgMzguNDg2MjgyXSwgWzcxLjM0ODEzMSwgMzguMjU4OTA1XSwgWzcxLjIzOTQwNCwgMzcuOTUzMjY1XSwgWzcxLjU0MTkxOCwgMzcuOTA1Nzc0XSwgWzcxLjQ0ODY5MywgMzcuMDY1NjQ1XSwgWzcxLjg0NDYzOCwgMzYuNzM4MTcxXSwgWzcyLjE5MzA0MSwgMzYuOTQ4Mjg4XSwgWzcyLjYzNjg5LCAzNy4wNDc1NThdLCBbNzMuMjYwMDU2LCAzNy40OTUyNTddLCBbNzMuOTQ4Njk2LCAzNy40MjE1NjZdLCBbNzQuOTgwMDAyLCAzNy40MTk5OV0sIFs3NS4xNTgwMjgsIDM3LjEzMzAzMV0sIFs3NC41NzU4OTMsIDM3LjAyMDg0MV0sIFs3NC4wNjc1NTIsIDM2LjgzNjE3Nl0sIFs3Mi45MjAwMjUsIDM2LjcyMDAwN10sIFs3MS44NDYyOTIsIDM2LjUwOTk0Ml0sIFs3MS4yNjIzNDgsIDM2LjA3NDM4OF0sIFs3MS40OTg3NjgsIDM1LjY1MDU2M10sIFs3MS42MTMwNzYsIDM1LjE1MzIwM10sIFs3MS4xMTUwMTksIDM0LjczMzEyNl0sIFs3MS4xNTY3NzMsIDM0LjM0ODkxMV0sIFs3MC44ODE4MDMsIDMzLjk4ODg1Nl0sIFs2OS45MzA1NDMsIDM0LjAyMDEyXSwgWzcwLjMyMzU5NCwgMzMuMzU4NTMzXSwgWzY5LjY4NzE0NywgMzMuMTA1NDk5XSwgWzY5LjI2MjUyMiwgMzIuNTAxOTQ0XSwgWzY5LjMxNzc2NCwgMzEuOTAxNDEyXSwgWzY4LjkyNjY3NywgMzEuNjIwMTg5XSwgWzY4LjU1NjkzMiwgMzEuNzEzMzFdLCBbNjcuNzkyNjg5LCAzMS41ODI5M10sIFs2Ny42ODMzOTQsIDMxLjMwMzE1NF0sIFs2Ni45Mzg4OTEsIDMxLjMwNDkxMV0sIFs2Ni4zODE0NTgsIDMwLjczODg5OV0sIFs2Ni4zNDY0NzMsIDI5Ljg4Nzk0M10sIFs2NS4wNDY4NjIsIDI5LjQ3MjE4MV0sIFs2NC4zNTA0MTksIDI5LjU2MDAzMV0sIFs2NC4xNDgwMDIsIDI5LjM0MDgxOV0sIFs2My41NTAyNjEsIDI5LjQ2ODMzMV0sIFs2Mi41NDk4NTcsIDI5LjMxODU3Ml0sIFs2MC44NzQyNDgsIDI5LjgyOTIzOV0sIFs2MS43ODEyMjIsIDMwLjczNTg1XSwgWzYxLjY5OTMxNCwgMzEuMzc5NTA2XSwgWzYwLjk0MTk0NSwgMzEuNTQ4MDc1XSwgWzYwLjg2MzY1NSwgMzIuMTgyOTJdLCBbNjAuNTM2MDc4LCAzMi45ODEyNjldLCBbNjAuOTYzNywgMzMuNTI4ODMyXSwgWzYwLjUyODQzLCAzMy42NzY0NDZdLCBbNjAuODAzMTkzLCAzNC40MDQxMDJdLCBbNjEuMjEwODE3LCAzNS42NTAwNzJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkFGRyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQWZnaGFuaXN0YW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxNi4zMjY1MjgsIC01Ljg3NzQ3XSwgWzE2LjU3MzE4LCAtNi42MjI2NDVdLCBbMTYuODYwMTkxLCAtNy4yMjIyOThdLCBbMTcuMDg5OTk2LCAtNy41NDU2ODldLCBbMTcuNDcyOTcsIC04LjA2ODU1MV0sIFsxOC4xMzQyMjIsIC03Ljk4NzY3OF0sIFsxOC40NjQxNzYsIC03Ljg0NzAxNF0sIFsxOS4wMTY3NTIsIC03Ljk4ODI0Nl0sIFsxOS4xNjY2MTMsIC03LjczODE4NF0sIFsxOS40MTc1MDIsIC03LjE1NTQyOV0sIFsyMC4wMzc3MjMsIC03LjExNjM2MV0sIFsyMC4wOTE2MjIsIC02Ljk0MzA5XSwgWzIwLjYwMTgyMywgLTYuOTM5MzE4XSwgWzIwLjUxNDc0OCwgLTcuMjk5NjA2XSwgWzIxLjcyODExMSwgLTcuMjkwODcyXSwgWzIxLjc0NjQ1NiwgLTcuOTIwMDg1XSwgWzIxLjk0OTEzMSwgLTguMzA1OTAxXSwgWzIxLjgwMTgwMSwgLTguOTA4NzA3XSwgWzIxLjg3NTE4MiwgLTkuNTIzNzA4XSwgWzIyLjIwODc1MywgLTkuODk0Nzk2XSwgWzIyLjE1NTI2OCwgLTExLjA4NDgwMV0sIFsyMi40MDI3OTgsIC0xMC45OTMwNzVdLCBbMjIuODM3MzQ1LCAtMTEuMDE3NjIyXSwgWzIzLjQ1Njc5MSwgLTEwLjg2Nzg2M10sIFsyMy45MTIyMTUsIC0xMC45MjY4MjZdLCBbMjQuMDE3ODk0LCAtMTEuMjM3Mjk4XSwgWzIzLjkwNDE1NCwgLTExLjcyMjI4Ml0sIFsyNC4wNzk5MDUsIC0xMi4xOTEyOTddLCBbMjMuOTMwOTIyLCAtMTIuNTY1ODQ4XSwgWzI0LjAxNjEzNywgLTEyLjkxMTA0Nl0sIFsyMS45MzM4ODYsIC0xMi44OTg0MzddLCBbMjEuODg3ODQzLCAtMTYuMDgwMzFdLCBbMjIuNTYyNDc4LCAtMTYuODk4NDUxXSwgWzIzLjIxNTA0OCwgLTE3LjUyMzExNl0sIFsyMS4zNzcxNzYsIC0xNy45MzA2MzZdLCBbMTguOTU2MTg3LCAtMTcuNzg5MDk1XSwgWzE4LjI2MzMwOSwgLTE3LjMwOTk1MV0sIFsxNC4yMDk3MDcsIC0xNy4zNTMxMDFdLCBbMTQuMDU4NTAxLCAtMTcuNDIzMzgxXSwgWzEzLjQ2MjM2MiwgLTE2Ljk3MTIxMl0sIFsxMi44MTQwODEsIC0xNi45NDEzNDNdLCBbMTIuMjE1NDYxLCAtMTcuMTExNjY4XSwgWzExLjczNDE5OSwgLTE3LjMwMTg4OV0sIFsxMS42NDAwOTYsIC0xNi42NzMxNDJdLCBbMTEuNzc4NTM3LCAtMTUuNzkzODE2XSwgWzEyLjEyMzU4MSwgLTE0Ljg3ODMxNl0sIFsxMi4xNzU2MTksIC0xNC40NDkxNDRdLCBbMTIuNTAwMDk1LCAtMTMuNTQ3N10sIFsxMi43Mzg0NzksIC0xMy4xMzc5MDZdLCBbMTMuMzEyOTE0LCAtMTIuNDgzNjNdLCBbMTMuNjMzNzIxLCAtMTIuMDM4NjQ1XSwgWzEzLjczODcyOCwgLTExLjI5Nzg2M10sIFsxMy42ODYzNzksIC0xMC43MzEwNzZdLCBbMTMuMzg3MzI4LCAtMTAuMzczNTc4XSwgWzEzLjEyMDk4OCwgLTkuNzY2ODk3XSwgWzEyLjg3NTM3LCAtOS4xNjY5MzRdLCBbMTIuOTI5MDYxLCAtOC45NTkwOTFdLCBbMTMuMjM2NDMzLCAtOC41NjI2MjldLCBbMTIuOTMzMDQsIC03LjU5NjUzOV0sIFsxMi43MjgyOTgsIC02LjkyNzEyMl0sIFsxMi4yMjczNDcsIC02LjI5NDQ0OF0sIFsxMi4zMjI0MzIsIC02LjEwMDA5Ml0sIFsxMi43MzUxNzEsIC01Ljk2NTY4Ml0sIFsxMy4wMjQ4NjksIC01Ljk4NDM4OV0sIFsxMy4zNzU1OTcsIC01Ljg2NDI0MV0sIFsxNi4zMjY1MjgsIC01Ljg3NzQ3XV1dLCBbW1sxMi40MzY2ODgsIC01LjY4NDMwNF0sIFsxMi4xODIzMzcsIC01Ljc4OTkzMV0sIFsxMS45MTQ5NjMsIC01LjAzNzk4N10sIFsxMi4zMTg2MDgsIC00LjYwNjIzXSwgWzEyLjYyMDc2LCAtNC40MzgwMjNdLCBbMTIuOTk1NTE3LCAtNC43ODExMDNdLCBbMTIuNjMxNjEyLCAtNC45OTEyNzFdLCBbMTIuNDY4MDA0LCAtNS4yNDgzNjJdLCBbMTIuNDM2Njg4LCAtNS42ODQzMDRdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkFHTyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQW5nb2xhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1syMC41OTAyNDcsIDQxLjg1NTQwNF0sIFsyMC40NjMxNzUsIDQxLjUxNTA4OV0sIFsyMC42MDUxODIsIDQxLjA4NjIyNl0sIFsyMS4wMjAwNCwgNDAuODQyNzI3XSwgWzIwLjk5OTk5LCA0MC41ODAwMDRdLCBbMjAuNjc0OTk3LCA0MC40MzVdLCBbMjAuNjE1LCA0MC4xMTAwMDddLCBbMjAuMTUwMDE2LCAzOS42MjQ5OThdLCBbMTkuOTgsIDM5LjY5NDk5M10sIFsxOS45NjAwMDIsIDM5LjkxNTAwNl0sIFsxOS40MDYwODIsIDQwLjI1MDc3M10sIFsxOS4zMTkwNTksIDQwLjcyNzIzXSwgWzE5LjQwMzU1LCA0MS40MDk1NjZdLCBbMTkuNTQwMDI3LCA0MS43MTk5ODZdLCBbMTkuMzcxNzY5LCA0MS44Nzc1NDhdLCBbMTkuMzA0NDg2LCA0Mi4xOTU3NDVdLCBbMTkuNzM4MDUxLCA0Mi42ODgyNDddLCBbMTkuODAxNjEzLCA0Mi41MDAwOTNdLCBbMjAuMDcwNywgNDIuNTg4NjNdLCBbMjAuMjgzNzU1LCA0Mi4zMjAyNl0sIFsyMC41MjI5NSwgNDIuMjE3ODddLCBbMjAuNTkwMjQ3LCA0MS44NTU0MDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkFMQiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQWxiYW5pYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNTEuNTc5NTE5LCAyNC4yNDU0OTddLCBbNTEuNzU3NDQxLCAyNC4yOTQwNzNdLCBbNTEuNzk0Mzg5LCAyNC4wMTk4MjZdLCBbNTIuNTc3MDgxLCAyNC4xNzc0MzldLCBbNTMuNDA0MDA3LCAyNC4xNTEzMTddLCBbNTQuMDA4MDAxLCAyNC4xMjE3NThdLCBbNTQuNjkzMDI0LCAyNC43OTc4OTJdLCBbNTUuNDM5MDI1LCAyNS40MzkxNDVdLCBbNTYuMDcwODIxLCAyNi4wNTU0NjRdLCBbNTYuMjYxMDQyLCAyNS43MTQ2MDZdLCBbNTYuMzk2ODQ3LCAyNC45MjQ3MzJdLCBbNTUuODg2MjMzLCAyNC45MjA4MzFdLCBbNTUuODA0MTE5LCAyNC4yNjk2MDRdLCBbNTUuOTgxMjE0LCAyNC4xMzA1NDNdLCBbNTUuNTI4NjMyLCAyMy45MzM2MDRdLCBbNTUuNTI1ODQxLCAyMy41MjQ4NjldLCBbNTUuMjM0NDg5LCAyMy4xMTA5OTNdLCBbNTUuMjA4MzQxLCAyMi43MDgzM10sIFs1NS4wMDY4MDMsIDIyLjQ5Njk0OF0sIFs1Mi4wMDA3MzMsIDIzLjAwMTE1NF0sIFs1MS42MTc3MDgsIDI0LjAxNDIxOV0sIFs1MS41Nzk1MTksIDI0LjI0NTQ5N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQVJFIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJVbml0ZWQgQXJhYiBFbWlyYXRlcyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWy02NS41LCAtNTUuMl0sIFstNjYuNDUsIC01NS4yNV0sIFstNjYuOTU5OTIsIC01NC44OTY4MV0sIFstNjcuNTYyNDQsIC01NC44NzAwMV0sIFstNjguNjMzMzUsIC01NC44Njk1XSwgWy02OC42MzQwMSwgLTUyLjYzNjM3XSwgWy02OC4yNSwgLTUzLjFdLCBbLTY3Ljc1LCAtNTMuODVdLCBbLTY2LjQ1LCAtNTQuNDVdLCBbLTY1LjA1LCAtNTQuN10sIFstNjUuNSwgLTU1LjJdXV0sIFtbWy02NC45NjQ4OTIsIC0yMi4wNzU4NjJdLCBbLTY0LjM3NzAyMSwgLTIyLjc5ODA5MV0sIFstNjMuOTg2ODM4LCAtMjEuOTkzNjQ0XSwgWy02Mi44NDY0NjgsIC0yMi4wMzQ5ODVdLCBbLTYyLjY4NTA1NywgLTIyLjI0OTAyOV0sIFstNjAuODQ2NTY1LCAtMjMuODgwNzEzXSwgWy02MC4wMjg5NjYsIC0yNC4wMzI3OTZdLCBbLTU4LjgwNzEyOCwgLTI0Ljc3MTQ1OV0sIFstNTcuNzc3MjE3LCAtMjUuMTYyMzRdLCBbLTU3LjYzMzY2LCAtMjUuNjAzNjU3XSwgWy01OC42MTgxNzQsIC0yNy4xMjM3MTldLCBbLTU3LjYwOTc2LCAtMjcuMzk1ODk5XSwgWy01Ni40ODY3MDIsIC0yNy41NDg0OTldLCBbLTU1LjY5NTg0NiwgLTI3LjM4NzgzN10sIFstNTQuNzg4Nzk1LCAtMjYuNjIxNzg2XSwgWy01NC42MjUyOTEsIC0yNS43MzkyNTVdLCBbLTU0LjEzMDA1LCAtMjUuNTQ3NjM5XSwgWy01My42MjgzNDksIC0yNi4xMjQ4NjVdLCBbLTUzLjY0ODczNSwgLTI2LjkyMzQ3M10sIFstNTQuNDkwNzI1LCAtMjcuNDc0NzU3XSwgWy01NS4xNjIyODYsIC0yNy44ODE5MTVdLCBbLTU2LjI5MDksIC0yOC44NTI3NjFdLCBbLTU3LjYyNTEzMywgLTMwLjIxNjI5NV0sIFstNTcuODc0OTM3LCAtMzEuMDE2NTU2XSwgWy01OC4xNDI0NCwgLTMyLjA0NDUwNF0sIFstNTguMTMyNjQ4LCAtMzMuMDQwNTY3XSwgWy01OC4zNDk2MTEsIC0zMy4yNjMxODldLCBbLTU4LjQyNzA3NCwgLTMzLjkwOTQ1NF0sIFstNTguNDk1NDQyLCAtMzQuNDMxNDldLCBbLTU3LjIyNTgzLCAtMzUuMjg4MDI3XSwgWy01Ny4zNjIzNTksIC0zNS45NzczOV0sIFstNTYuNzM3NDg3LCAtMzYuNDEzMTI2XSwgWy01Ni43ODgyODUsIC0zNi45MDE1NzJdLCBbLTU3Ljc0OTE1NywgLTM4LjE4Mzg3MV0sIFstNTkuMjMxODU3LCAtMzguNzIwMjJdLCBbLTYxLjIzNzQ0NSwgLTM4LjkyODQyNV0sIFstNjIuMzM1OTU3LCAtMzguODI3NzA3XSwgWy02Mi4xMjU3NjMsIC0zOS40MjQxMDVdLCBbLTYyLjMzMDUzMSwgLTQwLjE3MjU4Nl0sIFstNjIuMTQ1OTk0LCAtNDAuNjc2ODk3XSwgWy02Mi43NDU4MDMsIC00MS4wMjg3NjFdLCBbLTYzLjc3MDQ5NSwgLTQxLjE2Njc4OV0sIFstNjQuNzMyMDksIC00MC44MDI2NzddLCBbLTY1LjExODAzNSwgLTQxLjA2NDMxNV0sIFstNjQuOTc4NTYxLCAtNDIuMDU4MDAxXSwgWy02NC4zMDM0MDgsIC00Mi4zNTkwMTZdLCBbLTYzLjc1NTk0OCwgLTQyLjA0MzY4N10sIFstNjMuNDU4MDU5LCAtNDIuNTYzMTM4XSwgWy02NC4zNzg4MDQsIC00Mi44NzM1NThdLCBbLTY1LjE4MTgwNCwgLTQzLjQ5NTM4MV0sIFstNjUuMzI4ODIzLCAtNDQuNTAxMzY2XSwgWy02NS41NjUyNjksIC00NS4wMzY3ODZdLCBbLTY2LjUwOTk2NiwgLTQ1LjAzOTYyOF0sIFstNjcuMjkzNzk0LCAtNDUuNTUxODk2XSwgWy02Ny41ODA1NDYsIC00Ni4zMDE3NzNdLCBbLTY2LjU5NzA2NiwgLTQ3LjAzMzkyNV0sIFstNjUuNjQxMDI3LCAtNDcuMjM2MTM1XSwgWy02NS45ODUwODgsIC00OC4xMzMyODldLCBbLTY3LjE2NjE3OSwgLTQ4LjY5NzMzN10sIFstNjcuODE2MDg4LCAtNDkuODY5NjY5XSwgWy02OC43Mjg3NDUsIC01MC4yNjQyMThdLCBbLTY5LjEzODUzOSwgLTUwLjczMjUxXSwgWy02OC44MTU1NjEsIC01MS43NzExMDRdLCBbLTY4LjE0OTk5NSwgLTUyLjM0OTk4M10sIFstNjguNTcxNTQ1LCAtNTIuMjk5NDQ0XSwgWy02OS40OTgzNjIsIC01Mi4xNDI3NjFdLCBbLTcxLjkxNDgwNCwgLTUyLjAwOTAyMl0sIFstNzIuMzI5NDA0LCAtNTEuNDI1OTU2XSwgWy03Mi4zMDk5NzQsIC01MC42NzcwMV0sIFstNzIuOTc1NzQ3LCAtNTAuNzQxNDVdLCBbLTczLjMyODA1MSwgLTUwLjM3ODc4NV0sIFstNzMuNDE1NDM2LCAtNDkuMzE4NDM2XSwgWy03Mi42NDgyNDcsIC00OC44Nzg2MThdLCBbLTcyLjMzMTE2MSwgLTQ4LjI0NDIzOF0sIFstNzIuNDQ3MzU1LCAtNDcuNzM4NTMzXSwgWy03MS45MTcyNTgsIC00Ni44ODQ4MzhdLCBbLTcxLjU1MjAwOSwgLTQ1LjU2MDczM10sIFstNzEuNjU5MzE2LCAtNDQuOTczNjg5XSwgWy03MS4yMjI3NzksIC00NC43ODQyNDNdLCBbLTcxLjMyOTgwMSwgLTQ0LjQwNzUyMl0sIFstNzEuNzkzNjIzLCAtNDQuMjA3MTcyXSwgWy03MS40NjQwNTYsIC00My43ODc2MTFdLCBbLTcxLjkxNTQyNCwgLTQzLjQwODU2NV0sIFstNzIuMTQ4ODk4LCAtNDIuMjU0ODg4XSwgWy03MS43NDY4MDQsIC00Mi4wNTEzODZdLCBbLTcxLjkxNTczNCwgLTQwLjgzMjMzOV0sIFstNzEuNjgwNzYxLCAtMzkuODA4MTY0XSwgWy03MS40MTM1MTcsIC0zOC45MTYwMjJdLCBbLTcwLjgxNDY2NCwgLTM4LjU1Mjk5NV0sIFstNzEuMTE4NjI1LCAtMzcuNTc2ODI3XSwgWy03MS4xMjE4ODEsIC0zNi42NTgxMjRdLCBbLTcwLjM2NDc2OSwgLTM2LjAwNTA4OV0sIFstNzAuMzg4MDQ5LCAtMzUuMTY5Njg4XSwgWy02OS44MTczMDksIC0zNC4xOTM1NzFdLCBbLTY5LjgxNDc3NywgLTMzLjI3Mzg4Nl0sIFstNzAuMDc0Mzk5LCAtMzMuMDkxMjFdLCBbLTcwLjUzNTA2OSwgLTMxLjM2NTAxXSwgWy02OS45MTkwMDgsIC0zMC4zMzYzMzldLCBbLTcwLjAxMzU1LCAtMjkuMzY3OTIzXSwgWy02OS42NTYxMywgLTI4LjQ1OTE0MV0sIFstNjkuMDAxMjM1LCAtMjcuNTIxMjE0XSwgWy02OC4yOTU1NDIsIC0yNi44OTkzNF0sIFstNjguNTk0OCwgLTI2LjUwNjkwOV0sIFstNjguMzg2MDAxLCAtMjYuMTg1MDE2XSwgWy02OC40MTc2NTMsIC0yNC41MTg1NTVdLCBbLTY3LjMyODQ0MywgLTI0LjAyNTMwM10sIFstNjYuOTg1MjM0LCAtMjIuOTg2MzQ5XSwgWy02Ny4xMDY2NzQsIC0yMi43MzU5MjVdLCBbLTY2LjI3MzMzOSwgLTIxLjgzMjMxXSwgWy02NC45NjQ4OTIsIC0yMi4wNzU4NjJdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkFSRyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQXJnZW50aW5hIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s0My41ODI3NDYsIDQxLjA5MjE0M10sIFs0NC45NzI0OCwgNDEuMjQ4MTI5XSwgWzQ1LjE3OTQ5NiwgNDAuOTg1MzU0XSwgWzQ1LjU2MDM1MSwgNDAuODEyMjldLCBbNDUuMzU5MTc1LCA0MC41NjE1MDRdLCBbNDUuODkxOTA3LCA0MC4yMTg0NzZdLCBbNDUuNjEwMDEyLCAzOS44OTk5OTRdLCBbNDYuMDM0NTM0LCAzOS42MjgwMjFdLCBbNDYuNDgzNDk5LCAzOS40NjQxNTVdLCBbNDYuNTA1NzIsIDM4Ljc3MDYwNV0sIFs0Ni4xNDM2MjMsIDM4Ljc0MTIwMV0sIFs0NS43MzUzNzksIDM5LjMxOTcxOV0sIFs0NS43Mzk5NzgsIDM5LjQ3Mzk5OV0sIFs0NS4yOTgxNDUsIDM5LjQ3MTc1MV0sIFs0NS4wMDE5ODcsIDM5Ljc0MDAwNF0sIFs0NC43OTM5OSwgMzkuNzEzMDAzXSwgWzQ0LjQwMDAwOSwgNDAuMDA1XSwgWzQzLjY1NjQzNiwgNDAuMjUzNTY0XSwgWzQzLjc1MjY1OCwgNDAuNzQwMjAxXSwgWzQzLjU4Mjc0NiwgNDEuMDkyMTQzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJBUk0iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkFybWVuaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1stNTkuNTcyMDk1LCAtODAuMDQwMTc5XSwgWy01OS44NjU4NDksIC04MC41NDk2NTddLCBbLTYwLjE1OTY1NiwgLTgxLjAwMDMyN10sIFstNjIuMjU1MzkzLCAtODAuODYzMTc4XSwgWy02NC40ODgxMjUsIC04MC45MjE5MzRdLCBbLTY1Ljc0MTY2NiwgLTgwLjU4ODgyN10sIFstNjUuNzQxNjY2LCAtODAuNTQ5NjU3XSwgWy02Ni4yOTAwMzEsIC04MC4yNTU3NzNdLCBbLTY0LjAzNzY4OCwgLTgwLjI5NDk0NF0sIFstNjEuODgzMjQ2LCAtODAuMzkyODddLCBbLTYxLjEzODk3NiwgLTc5Ljk4MTM3MV0sIFstNjAuNjEwMTE5LCAtNzkuNjI4Njc5XSwgWy01OS41NzIwOTUsIC04MC4wNDAxNzldXV0sIFtbWy0xNTkuMjA4MTg0LCAtNzkuNDk3MDU5XSwgWy0xNjEuMTI3NjAxLCAtNzkuNjM0MjA5XSwgWy0xNjIuNDM5ODQ3LCAtNzkuMjgxNDY1XSwgWy0xNjMuMDI3NDA4LCAtNzguOTI4Nzc0XSwgWy0xNjMuMDY2NjA0LCAtNzguODY5OTY2XSwgWy0xNjMuNzEyODk2LCAtNzguNTk1NjY3XSwgWy0xNjMuNzEyODk2LCAtNzguNTk1NjY3XSwgWy0xNjMuMTA1ODAxLCAtNzguMjIzMzM4XSwgWy0xNjEuMjQ1MTEzLCAtNzguMzgwMTc2XSwgWy0xNjAuMjQ2MjA4LCAtNzguNjkzNjQ1XSwgWy0xNTkuNDgyNDA1LCAtNzkuMDQ2MzM4XSwgWy0xNTkuMjA4MTg0LCAtNzkuNDk3MDU5XV1dLCBbW1stNDUuMTU0NzU4LCAtNzguMDQ3MDddLCBbLTQzLjkyMDgyOCwgLTc4LjQ3ODEwM10sIFstNDMuNDg5OTUsIC03OS4wODU1Nl0sIFstNDMuMzcyNDM4LCAtNzkuNTE2NjQ1XSwgWy00My4zMzMyNjcsIC04MC4wMjYxMjNdLCBbLTQ0Ljg4MDUzNywgLTgwLjMzOTY0NF0sIFstNDYuNTA2MTc0LCAtODAuNTk0MzU3XSwgWy00OC4zODY0MjEsIC04MC44Mjk0ODVdLCBbLTUwLjQ4MjEwNywgLTgxLjAyNTQ0Ml0sIFstNTIuODUxOTg4LCAtODAuOTY2Njg1XSwgWy01NC4xNjQyNTksIC04MC42MzM1MjhdLCBbLTUzLjk4Nzk5MSwgLTgwLjIyMjAyOF0sIFstNTEuODUzMTM0LCAtNzkuOTQ3NzNdLCBbLTUwLjk5MTMyNiwgLTc5LjYxNDYyM10sIFstNTAuMzY0NTk1LCAtNzkuMTgzNDg3XSwgWy00OS45MTQxMzEsIC03OC44MTEyMDldLCBbLTQ5LjMwNjk1OSwgLTc4LjQ1ODU2OV0sIFstNDguNjYwNjE2LCAtNzguMDQ3MDE4XSwgWy00OC42NjA2MTYsIC03OC4wNDcwMTldLCBbLTQ4LjE1MTM5NiwgLTc4LjA0NzA3XSwgWy00Ni42NjI4NTcsIC03Ny44MzE0NzZdLCBbLTQ1LjE1NDc1OCwgLTc4LjA0NzA3XV1dLCBbW1stMTIxLjIxMTUxMSwgLTczLjUwMDk5XSwgWy0xMTkuOTE4ODUxLCAtNzMuNjU3NzI1XSwgWy0xMTguNzI0MTQzLCAtNzMuNDgxMzUzXSwgWy0xMTkuMjkyMTE5LCAtNzMuODM0MDk3XSwgWy0xMjAuMjMyMjE3LCAtNzQuMDg4ODFdLCBbLTEyMS42MjI4MywgLTc0LjAxMDQ2OF0sIFstMTIyLjYyMTczNSwgLTczLjY1Nzc3OF0sIFstMTIyLjYyMTczNSwgLTczLjY1Nzc3N10sIFstMTIyLjQwNjI0NSwgLTczLjMyNDYxOV0sIFstMTIxLjIxMTUxMSwgLTczLjUwMDk5XV1dLCBbW1stMTI1LjU1OTU2NiwgLTczLjQ4MTM1M10sIFstMTI0LjAzMTg4MiwgLTczLjg3MzI2OF0sIFstMTI0LjYxOTQ2OSwgLTczLjgzNDA5N10sIFstMTI1LjkxMjE4MSwgLTczLjczNjExOF0sIFstMTI3LjI4MzEzLCAtNzMuNDYxNzY5XSwgWy0xMjcuMjgzMTMsIC03My40NjE3NjhdLCBbLTEyNi41NTg0NzIsIC03My4yNDYyMjZdLCBbLTEyNS41NTk1NjYsIC03My40ODEzNTNdXV0sIFtbWy05OC45ODE1NSwgLTcxLjkzMzMzNF0sIFstOTcuODg0NzQzLCAtNzIuMDcwNTM1XSwgWy05Ni43ODc5MzcsIC03MS45NTI5NzFdLCBbLTk2LjIwMDM1LCAtNzIuNTIxMjA1XSwgWy05Ni45ODM3NjUsIC03Mi40NDI4NjRdLCBbLTk4LjE5ODA4MywgLTcyLjQ4MjAzNV0sIFstOTkuNDMyMDEzLCAtNzIuNDQyODY0XSwgWy0xMDAuNzgzNDU1LCAtNzIuNTAxNjJdLCBbLTEwMS44MDE4NjgsIC03Mi4zMDU2NjNdLCBbLTEwMi4zMzA3MjUsIC03MS44OTQxNjRdLCBbLTEwMi4zMzA3MjUsIC03MS44OTQxNjRdLCBbLTEwMS43MDM5NjcsIC03MS43MTc3OTJdLCBbLTEwMC40MzA5MTksIC03MS44NTQ5OTNdLCBbLTk4Ljk4MTU1LCAtNzEuOTMzMzM0XV1dLCBbW1stNjguNDUxMzQ2LCAtNzAuOTU1ODIzXSwgWy02OC4zMzM4MzQsIC03MS40MDY0OTNdLCBbLTY4LjUxMDEyOCwgLTcxLjc5ODQwN10sIFstNjguNzg0Mjk3LCAtNzIuMTcwNzM2XSwgWy02OS45NTk0NzEsIC03Mi4zMDc4ODVdLCBbLTcxLjA3NTg4OSwgLTcyLjUwMzg0Ml0sIFstNzIuMzg4MTM0LCAtNzIuNDg0MjU3XSwgWy03MS44OTg1LCAtNzIuMDkyMzQzXSwgWy03My4wNzM2MjIsIC03Mi4yMjk0OTJdLCBbLTc0LjE5MDA0LCAtNzIuMzY2NjkzXSwgWy03NC45NTM4OTUsIC03Mi4wNzI3NTddLCBbLTc1LjAxMjYyNSwgLTcxLjY2MTI1OF0sIFstNzMuOTE1ODE5LCAtNzEuMjY5MzQ1XSwgWy03My45MTU4MTksIC03MS4yNjkzNDRdLCBbLTczLjIzMDMzMSwgLTcxLjE1MTc4XSwgWy03Mi4wNzQ3MTcsIC03MS4xOTA5NTFdLCBbLTcxLjc4MDk2MiwgLTcwLjY4MTQ3M10sIFstNzEuNzIyMTgsIC03MC4zMDkxOTZdLCBbLTcxLjc0MTc5MSwgLTY5LjUwNTc4Ml0sIFstNzEuMTczODE1LCAtNjkuMDM1NDc1XSwgWy03MC4yNTMyNTIsIC02OC44Nzg3NF0sIFstNjkuNzI0NDQ3LCAtNjkuMjUxMDE3XSwgWy02OS40ODk0MjIsIC02OS42MjMzNDZdLCBbLTY5LjA1ODUxOCwgLTcwLjA3NDAxNl0sIFstNjguNzI1NTQxLCAtNzAuNTA1MTUzXSwgWy02OC40NTEzNDYsIC03MC45NTU4MjNdXV0sIFtbWy01OC42MTQxNDMsIC02NC4xNTI0NjddLCBbLTU5LjA0NTA3MywgLTY0LjM2ODAxXSwgWy01OS43ODkzNDIsIC02NC4yMTEyMjNdLCBbLTYwLjYxMTkyOCwgLTY0LjMwOTIwMl0sIFstNjEuMjk3NDE2LCAtNjQuNTQ0MzNdLCBbLTYyLjAyMjEsIC02NC43OTkwOTRdLCBbLTYyLjUxMTc2LCAtNjUuMDkzMDNdLCBbLTYyLjY0ODg1OCwgLTY1LjQ4NDk0Ml0sIFstNjIuNTkwMTI4LCAtNjUuODU3MjE5XSwgWy02Mi4xMjAwNzksIC02Ni4xOTAzMjZdLCBbLTYyLjgwNTU2NywgLTY2LjQyNTUwNV0sIFstNjMuNzQ1NjksIC02Ni41MDM4NDddLCBbLTY0LjI5NDEwNiwgLTY2LjgzNzAwNF0sIFstNjQuODgxNjkzLCAtNjcuMTUwNDc0XSwgWy02NS41MDg0MjUsIC02Ny41ODE2MV0sIFstNjUuNjY1MDgyLCAtNjcuOTUzODg3XSwgWy02NS4zMTI1NDUsIC02OC4zNjUzMzVdLCBbLTY0Ljc4MzcxNSwgLTY4LjY3ODkwOF0sIFstNjMuOTYxMTAzLCAtNjguOTEzOTg0XSwgWy02My4xOTczLCAtNjkuMjI3NTU2XSwgWy02Mi43ODU5NTUsIC02OS42MTk0MTldLCBbLTYyLjU3MDUxNiwgLTY5Ljk5MTc0N10sIFstNjIuMjc2NzM2LCAtNzAuMzgzNjYxXSwgWy02MS44MDY2NjEsIC03MC43MTY3NjhdLCBbLTYxLjUxMjkwNiwgLTcxLjA4OTA0NV0sIFstNjEuMzc1ODA5LCAtNzIuMDEwMDc0XSwgWy02MS4wODE5NzcsIC03Mi4zODIzNTFdLCBbLTYxLjAwMzY2MSwgLTcyLjc3NDI2NV0sIFstNjAuNjkwMjY5LCAtNzMuMTY2MTc5XSwgWy02MC44MjczNjcsIC03My42OTUyNDJdLCBbLTYxLjM3NTgwOSwgLTc0LjEwNjc0Ml0sIFstNjEuOTYzMzcsIC03NC40Mzk4NDhdLCBbLTYzLjI5NTIwMSwgLTc0LjU3Njk5N10sIFstNjMuNzQ1NjksIC03NC45Mjk3NF0sIFstNjQuMzUyODM2LCAtNzUuMjYyODQ3XSwgWy02NS44NjA5ODcsIC03NS42MzUxMjRdLCBbLTY3LjE5MjgxOCwgLTc1Ljc5MTkxXSwgWy02OC40NDYyODIsIC03Ni4wMDc0NTJdLCBbLTY5Ljc5NzcyNCwgLTc2LjIyMjk5NV0sIFstNzAuNjAwNzI0LCAtNzYuNjM0NDk0XSwgWy03Mi4yMDY3NzYsIC03Ni42NzM2NjVdLCBbLTczLjk2OTUzNiwgLTc2LjYzNDQ5NF0sIFstNzUuNTU1OTc3LCAtNzYuNzEyODg3XSwgWy03Ny4yNDAzNywgLTc2LjcxMjg4N10sIFstNzYuOTI2OTc5LCAtNzcuMTA0ODAyXSwgWy03NS4zOTkyOTQsIC03Ny4yODEwN10sIFstNzQuMjgyODc2LCAtNzcuNTU1NDJdLCBbLTczLjY1NjExOSwgLTc3LjkwODExMl0sIFstNzQuNzcyNTM2LCAtNzguMjIxNjMzXSwgWy03Ni40OTYxLCAtNzguMTIzNjU0XSwgWy03Ny45MjU4NTgsIC03OC4zNzg0MTldLCBbLTc3Ljk4NDY2NiwgLTc4Ljc4OTkxOF0sIFstNzguMDIzNzg1LCAtNzkuMTgxODMzXSwgWy03Ni44NDg2MzcsIC03OS41MTQ5MzldLCBbLTc2LjYzMzIyNCwgLTc5Ljg4NzIxNl0sIFstNzUuMzYwMDk3LCAtODAuMjU5NTQ1XSwgWy03My4yNDQ4NTIsIC04MC40MTYzMzFdLCBbLTcxLjQ0Mjk0NiwgLTgwLjY5MDYzXSwgWy03MC4wMTMxNjMsIC04MS4wMDQxNTFdLCBbLTY4LjE5MTY0NiwgLTgxLjMxNzY3Ml0sIFstNjUuNzA0Mjc5LCAtODEuNDc0NDU4XSwgWy02My4yNTYwMywgLTgxLjc0ODc1N10sIFstNjEuNTUyMDI2LCAtODIuMDQyNjkyXSwgWy01OS42OTE0MTYsIC04Mi4zNzU4NV0sIFstNTguNzEyMTIxLCAtODIuODQ2MTA2XSwgWy01OC4yMjI0ODcsIC04My4yMTg0MzRdLCBbLTU3LjAwODExNywgLTgyLjg2NTY5MV0sIFstNTUuMzYyODk0LCAtODIuNTcxNzU1XSwgWy01My42MTk3NzEsIC04Mi4yNTgyMzVdLCBbLTUxLjU0MzY0NCwgLTgyLjAwMzUyMV0sIFstNDkuNzYxMzUsIC04MS43MjkxNzFdLCBbLTQ3LjI3MzkzMSwgLTgxLjcwOTU4Nl0sIFstNDQuODI1NzA4LCAtODEuODQ2NzM1XSwgWy00Mi44MDgzNjMsIC04Mi4wODE5MTVdLCBbLTQyLjE2MjAyLCAtODEuNjUwODNdLCBbLTQwLjc3MTQzMywgLTgxLjM1Njg5NF0sIFstMzguMjQ0ODE4LCAtODEuMzM3MzA5XSwgWy0zNi4yNjY2NywgLTgxLjEyMTcxNV0sIFstMzQuMzg2Mzk3LCAtODAuOTA2MTcyXSwgWy0zMi4zMTAyOTYsIC04MC43NjkwMjNdLCBbLTMwLjA5NzA5OCwgLTgwLjU5MjY1MV0sIFstMjguNTQ5ODAyLCAtODAuMzM3OTM4XSwgWy0yOS4yNTQ5MDEsIC03OS45ODUxOTVdLCBbLTI5LjY4NTgwNSwgLTc5LjYzMjUwM10sIFstMjkuNjg1ODA1LCAtNzkuMjYwMjI2XSwgWy0zMS42MjQ4MDgsIC03OS4yOTkzOTddLCBbLTMzLjY4MTMyNCwgLTc5LjQ1NjEzMl0sIFstMzUuNjM5OTEyLCAtNzkuNDU2MTMyXSwgWy0zNS45MTQxMDcsIC03OS4wODM4NTVdLCBbLTM1Ljc3NzAxLCAtNzguMzM5MjQ4XSwgWy0zNS4zMjY1NDYsIC03OC4xMjM2NTRdLCBbLTMzLjg5Njc2MywgLTc3Ljg4ODUyNl0sIFstMzIuMjEyMzY5LCAtNzcuNjUzNDVdLCBbLTMwLjk5ODA1MSwgLTc3LjM1OTUxNV0sIFstMjkuNzgzNzMyLCAtNzcuMDY1NTc5XSwgWy0yOC44ODI3NzksIC03Ni42NzM2NjVdLCBbLTI3LjUxMTc1MiwgLTc2LjQ5NzM0NV0sIFstMjYuMTYwMzM2LCAtNzYuMzYwMTQ0XSwgWy0yNS40NzQ4MjIsIC03Ni4yODE4MDNdLCBbLTIzLjkyNzU1MiwgLTc2LjI0MjU4XSwgWy0yMi40NTg1OTgsIC03Ni4xMDU0MzFdLCBbLTIxLjIyNDY5NCwgLTc1LjkwOTQ3NF0sIFstMjAuMDEwMzc1LCAtNzUuNjc0MzQ2XSwgWy0xOC45MTM1NDMsIC03NS40MzkyMThdLCBbLTE3LjUyMjk4MiwgLTc1LjEyNTY5OF0sIFstMTYuNjQxNTg5LCAtNzQuNzkyNTRdLCBbLTE1LjcwMTQ5MSwgLTc0LjQ5ODYwNF0sIFstMTUuNDA3NzEsIC03NC4xMDY3NDJdLCBbLTE2LjQ2NTMyLCAtNzMuODcxNjE0XSwgWy0xNi4xMTI3ODQsIC03My40NjAxMTRdLCBbLTE1LjQ0Njg1NSwgLTczLjE0NjU0Ml0sIFstMTQuNDA4ODA1LCAtNzIuOTUwNTg1XSwgWy0xMy4zMTE5NzMsIC03Mi43MTU0NTddLCBbLTEyLjI5MzUwOCwgLTcyLjQwMTkzNl0sIFstMTEuNTEwMDY3LCAtNzIuMDEwMDc0XSwgWy0xMS4wMjA0MzMsIC03MS41Mzk3NjddLCBbLTEwLjI5NTc3NCwgLTcxLjI2NTQxNl0sIFstOS4xMDEwMTUsIC03MS4zMjQyMjRdLCBbLTguNjExMzgxLCAtNzEuNjU3MzNdLCBbLTcuNDE2NjIyLCAtNzEuNjk2NTAxXSwgWy03LjM3NzQ1MSwgLTcxLjMyNDIyNF0sIFstNi44NjgyMzIsIC03MC45MzIzMV0sIFstNS43OTA5ODUsIC03MS4wMzAyODldLCBbLTUuNTM2Mzc1LCAtNzEuNDAyNjE3XSwgWy00LjM0MTY2NywgLTcxLjQ2MTM3M10sIFstMy4wNDg5ODEsIC03MS4yODUwNTNdLCBbLTEuNzk1NDkyLCAtNzEuMTY3NDM4XSwgWy0wLjY1OTQ4OSwgLTcxLjIyNjI0Nl0sIFstMC4yMjg2MzcsIC03MS42Mzc3NDVdLCBbMC44NjgxOTUsIC03MS4zMDQ2MzldLCBbMS44ODY2ODYsIC03MS4xMjgyNjddLCBbMy4wMjI2MzgsIC03MC45OTExMThdLCBbNC4xMzkwNTUsIC03MC44NTM5MTddLCBbNS4xNTc1NDYsIC03MC42MTg3ODldLCBbNi4yNzM5MTIsIC03MC40NjIwNTVdLCBbNy4xMzU3MiwgLTcwLjI0NjUxMl0sIFs3Ljc0Mjg2NiwgLTY5Ljg5Mzc2OV0sIFs4LjQ4NzExLCAtNzAuMTQ4NTM0XSwgWzkuNTI1MTM1LCAtNzAuMDExMzMzXSwgWzEwLjI0OTg0NSwgLTcwLjQ4MTY0XSwgWzEwLjgxNzgyMSwgLTcwLjgzNDMzMl0sIFsxMS45NTM4MjQsIC03MC42MzgzNzVdLCBbMTIuNDA0Mjg3LCAtNzAuMjQ2NTEyXSwgWzEzLjQyMjc3OCwgLTY5Ljk3MjE2Ml0sIFsxNC43MzQ5OTgsIC03MC4wMzA5MThdLCBbMTUuMTI2NzU3LCAtNzAuNDAzMjQ3XSwgWzE1Ljk0OTM0MiwgLTcwLjAzMDkxOF0sIFsxNy4wMjY1ODksIC02OS45MTMzNTRdLCBbMTguMjAxNzExLCAtNjkuODc0MTgzXSwgWzE5LjI1OTM3MywgLTY5Ljg5Mzc2OV0sIFsyMC4zNzU3MzksIC03MC4wMTEzMzNdLCBbMjEuNDUyOTg1LCAtNzAuMDcwMTRdLCBbMjEuOTIzMDM0LCAtNzAuNDAzMjQ3XSwgWzIyLjU2OTQwMywgLTcwLjY5NzE4Ml0sIFsyMy42NjYxODQsIC03MC41MjA4MTFdLCBbMjQuODQxMzU3LCAtNzAuNDgxNjRdLCBbMjUuOTc3MzA5LCAtNzAuNDgxNjRdLCBbMjcuMDkzNzI2LCAtNzAuNDYyMDU1XSwgWzI4LjA5MjU4LCAtNzAuMzI0ODU0XSwgWzI5LjE1MDI0MiwgLTcwLjIwNzI5XSwgWzMwLjAzMTU4MywgLTY5LjkzMjk0XSwgWzMwLjk3MTczMywgLTY5Ljc1NjYyXSwgWzMxLjk5MDE3MiwgLTY5LjY1ODY0MV0sIFszMi43NTQwNTMsIC02OS4zODQyOTFdLCBbMzMuMzAyNDQzLCAtNjguODM1NjQyXSwgWzMzLjg3MDQxOSwgLTY4LjUwMjU4OF0sIFszNC45MDg0OTUsIC02OC42NTkyNzFdLCBbMzUuMzAwMjAyLCAtNjkuMDEyMDE0XSwgWzM2LjE2MjAxLCAtNjkuMjQ3MTQyXSwgWzM3LjIwMDAzNSwgLTY5LjE2ODc0OF0sIFszNy45MDUxMDgsIC02OS41MjE0NF0sIFszOC42NDk0MDQsIC02OS43NzYyMDVdLCBbMzkuNjY3ODk0LCAtNjkuNTQxMDc3XSwgWzQwLjAyMDQzMSwgLTY5LjEwOTk0MV0sIFs0MC45MjEzNTgsIC02OC45MzM2MjFdLCBbNDEuOTU5NDM0LCAtNjguNjAwNTE0XSwgWzQyLjkzODcwMiwgLTY4LjQ2MzMxM10sIFs0NC4xMTM4NzYsIC02OC4yNjc0MDhdLCBbNDQuODk3MjkxLCAtNjguMDUxODY2XSwgWzQ1LjcxOTkyOCwgLTY3LjgxNjczOF0sIFs0Ni41MDMzNDMsIC02Ny42MDExOTZdLCBbNDcuNDQzNDQsIC02Ny43MTg3NTldLCBbNDguMzQ0NDE5LCAtNjcuMzY2MDY4XSwgWzQ4Ljk5MDczNiwgLTY3LjA5MTcxOF0sIFs0OS45MzA4ODUsIC02Ny4xMTEzMDNdLCBbNTAuNzUzNDcxLCAtNjYuODc2MTc1XSwgWzUwLjk0OTMyNSwgLTY2LjUyMzQ4NF0sIFs1MS43OTE1NDcsIC02Ni4yNDkxMzNdLCBbNTIuNjE0MTMzLCAtNjYuMDUzMTc2XSwgWzUzLjYxMzAzOCwgLTY1Ljg5NjM5XSwgWzU0LjUzMzU1LCAtNjUuODE4MDQ5XSwgWzU1LjQxNDk0MywgLTY1Ljg3NjgwNV0sIFs1Ni4zNTUwNDEsIC02NS45NzQ3ODNdLCBbNTcuMTU4MDkzLCAtNjYuMjQ5MTMzXSwgWzU3LjI1NTk2OCwgLTY2LjY4MDIxOF0sIFs1OC4xMzczNjEsIC02Ny4wMTMzMjRdLCBbNTguNzQ0NTA4LCAtNjcuMjg3Njc1XSwgWzU5LjkzOTMxOCwgLTY3LjQwNTIzOV0sIFs2MC42MDUyMjEsIC02Ny42Nzk1ODldLCBbNjEuNDI3ODA2LCAtNjcuOTUzODg3XSwgWzYyLjM4NzQ4OSwgLTY4LjAxMjY5NV0sIFs2My4xOTA0OSwgLTY3LjgxNjczOF0sIFs2NC4wNTIzNDksIC02Ny40MDUyMzldLCBbNjQuOTkyNDQ3LCAtNjcuNjIwNzI5XSwgWzY1Ljk3MTcxNSwgLTY3LjczODM0NV0sIFs2Ni45MTE4NjQsIC02Ny44NTU5MDldLCBbNjcuODkxMTMzLCAtNjcuOTM0MzAyXSwgWzY4Ljg5MDAzOCwgLTY3LjkzNDMwMl0sIFs2OS43MTI2MjQsIC02OC45NzI3OTFdLCBbNjkuNjczNDUzLCAtNjkuMjI3NTU2XSwgWzY5LjU1NTk0MSwgLTY5LjY3ODIyNl0sIFs2OC41OTYyNTgsIC02OS45MzI5NF0sIFs2Ny44MTI3NCwgLTcwLjMwNTI2OF0sIFs2Ny45NDk4ODksIC03MC42OTcxODJdLCBbNjkuMDY2MzA3LCAtNzAuNjc3NTQ1XSwgWzY4LjkyOTE1NywgLTcxLjA2OTQ1OV0sIFs2OC40MTk5ODksIC03MS40NDE3ODhdLCBbNjcuOTQ5ODg5LCAtNzEuODUzMjg3XSwgWzY4LjcxMzc3LCAtNzIuMTY2ODA4XSwgWzY5Ljg2OTMwNywgLTcyLjI2NDc4N10sIFs3MS4wMjQ4OTUsIC03Mi4wODg0MTVdLCBbNzEuNTczMjg1LCAtNzEuNjk2NTAxXSwgWzcxLjkwNjI4OCwgLTcxLjMyNDIyNF0sIFs3Mi40NTQ2MjcsIC03MS4wMTA3MDNdLCBbNzMuMDgxNDEsIC03MC43MTY3NjhdLCBbNzMuMzM2MDIsIC03MC4zNjQwMjRdLCBbNzMuODY0ODc3LCAtNjkuODc0MTgzXSwgWzc0LjQ5MTU1NywgLTY5Ljc3NjIwNV0sIFs3NS42Mjc1NiwgLTY5LjczNzAzNF0sIFs3Ni42MjY0NjUsIC02OS42MTk0MTldLCBbNzcuNjQ0OTA0LCAtNjkuNDYyNjg0XSwgWzc4LjEzNDUzOSwgLTY5LjA3MDc3XSwgWzc4LjQyODM3MSwgLTY4LjY5ODQ0MV0sIFs3OS4xMTM4NTksIC02OC4zMjYyMTZdLCBbODAuMDkzMTI3LCAtNjguMDcxNTAzXSwgWzgwLjkzNTM1LCAtNjcuODc1NTQ2XSwgWzgxLjQ4Mzc5MiwgLTY3LjU0MjM4OF0sIFs4Mi4wNTE3NjcsIC02Ny4zNjYwNjhdLCBbODIuNzc2NDI2LCAtNjcuMjA5MjgyXSwgWzgzLjc3NTMzMSwgLTY3LjMwNzI2XSwgWzg0LjY3NjIwNiwgLTY3LjIwOTI4Ml0sIFs4NS42NTU1MjcsIC02Ny4wOTE3MThdLCBbODYuNzUyMzU5LCAtNjcuMTUwNDc0XSwgWzg3LjQ3NzAxNywgLTY2Ljg3NjE3NV0sIFs4Ny45ODYyODksIC02Ni4yMDk5MTFdLCBbODguMzU4NDExLCAtNjYuNDg0MjYxXSwgWzg4LjgyODQwOCwgLTY2Ljk1NDU2OF0sIFs4OS42NzA2MywgLTY3LjE1MDQ3NF0sIFs5MC42MzAzNjUsIC02Ny4yMjg4NjddLCBbOTEuNTkwMSwgLTY3LjExMTMwM10sIFs5Mi42MDg1MzksIC02Ny4xODk2OTZdLCBbOTMuNTQ4NjM3LCAtNjcuMjA5MjgyXSwgWzk0LjE3NTQyLCAtNjcuMTExMzAzXSwgWzk1LjAxNzU5MSwgLTY3LjE3MDExMV0sIFs5NS43ODE0NzIsIC02Ny4zODU2NTNdLCBbOTYuNjgyMzk5LCAtNjcuMjQ4NTA0XSwgWzk3Ljc1OTY0NiwgLTY3LjI0ODUwNF0sIFs5OC42ODAyMSwgLTY3LjExMTMwM10sIFs5OS43MTgxODIsIC02Ny4yNDg1MDRdLCBbMTAwLjM4NDE4OCwgLTY2LjkxNTM0Nl0sIFsxMDAuODkzMzU2LCAtNjYuNTgyMjRdLCBbMTAxLjU3ODg5NiwgLTY2LjMwNzg5XSwgWzEwMi44MzI0MTEsIC02NS41NjMyODRdLCBbMTAzLjQ3ODY3NiwgLTY1LjcwMDQ4NV0sIFsxMDQuMjQyNTU3LCAtNjUuOTc0NzgzXSwgWzEwNC45MDg0NiwgLTY2LjMyNzUyN10sIFsxMDYuMTgxNTYxLCAtNjYuOTM0OTMxXSwgWzEwNy4xNjA4ODEsIC02Ni45NTQ1NjhdLCBbMTA4LjA4MTM5MywgLTY2Ljk1NDU2OF0sIFsxMDkuMTU4NjQsIC02Ni44MzcwMDRdLCBbMTEwLjIzNTgzNSwgLTY2LjY5OTgwNF0sIFsxMTEuMDU4NDcyLCAtNjYuNDI1NTA1XSwgWzExMS43NDM5NiwgLTY2LjEzMTU3XSwgWzExMi44NjAzNzgsIC02Ni4wOTIzNDddLCBbMTEzLjYwNDY3MywgLTY1Ljg3NjgwNV0sIFsxMTQuMzg4MDg4LCAtNjYuMDcyNzYyXSwgWzExNC44OTczMDgsIC02Ni4zODYyODNdLCBbMTE1LjYwMjM4MSwgLTY2LjY5OTgwNF0sIFsxMTYuNjk5MTYxLCAtNjYuNjYwNjMzXSwgWzExNy4zODQ3MDEsIC02Ni45MTUzNDZdLCBbMTE4LjU3OTQ2LCAtNjcuMTcwMTExXSwgWzExOS44MzI5MjQsIC02Ny4yNjgwODldLCBbMTIwLjg3MSwgLTY3LjE4OTY5Nl0sIFsxMjEuNjU0NDE1LCAtNjYuODc2MTc1XSwgWzEyMi4zMjAzNjksIC02Ni41NjI2NTRdLCBbMTIzLjIyMTI5NiwgLTY2LjQ4NDI2MV0sIFsxMjQuMTIyMjc0LCAtNjYuNjIxNDYyXSwgWzEyNS4xNjAyNDcsIC02Ni43MTkzODldLCBbMTI2LjEwMDM5NiwgLTY2LjU2MjY1NF0sIFsxMjcuMDAxNDI3LCAtNjYuNTYyNjU0XSwgWzEyNy44ODI3NjgsIC02Ni42NjA2MzNdLCBbMTI4LjgwMzI4LCAtNjYuNzU4NjExXSwgWzEyOS43MDQyNTksIC02Ni41ODIyNF0sIFsxMzAuNzgxNDU0LCAtNjYuNDI1NTA1XSwgWzEzMS43OTk5NDUsIC02Ni4zODYyODNdLCBbMTMyLjkzNTg5NiwgLTY2LjM4NjI4M10sIFsxMzMuODU2NDYsIC02Ni4yODgzMDRdLCBbMTM0Ljc1NzM4NywgLTY2LjIwOTk2M10sIFsxMzUuMDMxNTgyLCAtNjUuNzIwMDddLCBbMTM1LjA3MDc1MywgLTY1LjMwODU3MV0sIFsxMzUuNjk3NDg1LCAtNjUuNTgyODY5XSwgWzEzNS44NzM4MDUsIC02Ni4wMzM1OTFdLCBbMTM2LjIwNjcwNSwgLTY2LjQ0NTA5XSwgWzEzNi42MTgwNDksIC02Ni43NzgxOTddLCBbMTM3LjQ2MDI3MSwgLTY2Ljk1NDU2OF0sIFsxMzguNTk2MjIzLCAtNjYuODk1NzYxXSwgWzEzOS45MDg0NDIsIC02Ni44NzYxNzVdLCBbMTQwLjgwOTQyMSwgLTY2LjgxNzM2N10sIFsxNDIuMTIxNjkyLCAtNjYuODE3MzY3XSwgWzE0My4wNjE4NDIsIC02Ni43OTc3ODJdLCBbMTQ0LjM3NDA2MSwgLTY2LjgzNzAwNF0sIFsxNDUuNDkwNDI3LCAtNjYuOTE1MzQ2XSwgWzE0Ni4xOTU1NTIsIC02Ny4yMjg4NjddLCBbMTQ1Ljk5OTY5OSwgLTY3LjYwMTE5Nl0sIFsxNDYuNjQ2MDY3LCAtNjcuODk1MTMxXSwgWzE0Ny43MjMyNjMsIC02OC4xMzAyNTldLCBbMTQ4LjgzOTYyOSwgLTY4LjM4NTAyNF0sIFsxNTAuMTMyMzE0LCAtNjguNTYxMjkyXSwgWzE1MS40ODM3MDUsIC02OC43MTgxM10sIFsxNTIuNTAyMjQ3LCAtNjguODc0ODEzXSwgWzE1My42MzgxOTksIC02OC44OTQ1MDJdLCBbMTU0LjI4NDU2NywgLTY4LjU2MTI5Ml0sIFsxNTUuMTY1ODU3LCAtNjguODM1NjQyXSwgWzE1NS45Mjk3OSwgLTY5LjE0OTIxNV0sIFsxNTYuODExMTMyLCAtNjkuMzg0MjkxXSwgWzE1OC4wMjU1MjgsIC02OS40ODIyNjldLCBbMTU5LjE4MTAxMywgLTY5LjU5OTgzM10sIFsxNTkuNjcwNjk5LCAtNjkuOTkxNzQ3XSwgWzE2MC44MDY2NSwgLTcwLjIyNjg3NV0sIFsxNjEuNTcwNDc5LCAtNzAuNTc5NjE4XSwgWzE2Mi42ODY4OTcsIC03MC43MzYzNTNdLCBbMTYzLjg0MjQzNCwgLTcwLjcxNjc2OF0sIFsxNjQuOTE5NjgxLCAtNzAuNzc1NTI0XSwgWzE2Ni4xMTQ0NCwgLTcwLjc1NTkzOF0sIFsxNjcuMzA5MDk1LCAtNzAuODM0MzMyXSwgWzE2OC40MjU2MTYsIC03MC45NzE0ODFdLCBbMTY5LjQ2MzU4OSwgLTcxLjIwNjY2XSwgWzE3MC41MDE2NjUsIC03MS40MDI2MTddLCBbMTcxLjIwNjc5LCAtNzEuNjk2NTAxXSwgWzE3MS4wODkyMjcsIC03Mi4wODg0MTVdLCBbMTcwLjU2MDQyMiwgLTcyLjQ0MTE1OV0sIFsxNzAuMTA5OTU4LCAtNzIuODkxODI5XSwgWzE2OS43NTczNywgLTczLjI0NDUyXSwgWzE2OS4yODczMjEsIC03My42NTYwMl0sIFsxNjcuOTc1MTAxLCAtNzMuODEyODA2XSwgWzE2Ny4zODc0ODksIC03NC4xNjU0OThdLCBbMTY2LjA5NDgwMywgLTc0LjM4MTA0XSwgWzE2NS42NDQzOTEsIC03NC43NzI5NTRdLCBbMTY0Ljk1ODg1MSwgLTc1LjE0NTI4M10sIFsxNjQuMjM0MTkzLCAtNzUuNDU4ODA0XSwgWzE2My44MjI3OTcsIC03NS44NzAzMDNdLCBbMTYzLjU2ODIzOSwgLTc2LjI0MjU4XSwgWzE2My40NzAyNiwgLTc2LjY5MzMwMl0sIFsxNjMuNDg5ODk3LCAtNzcuMDY1NTc5XSwgWzE2NC4wNTc4NzMsIC03Ny40NTc0NDJdLCBbMTY0LjI3MzM2MywgLTc3LjgyOTc3XSwgWzE2NC43NDM0NjQsIC03OC4xODI1MTRdLCBbMTY2LjYwNDEyNiwgLTc4LjMxOTYxMV0sIFsxNjYuOTk1NzgxLCAtNzguNzUwNzQ4XSwgWzE2NS4xOTM4NzYsIC03OC45MDc0ODNdLCBbMTYzLjY2NjIxNywgLTc5LjEyMzAyNV0sIFsxNjEuNzY2Mzg1LCAtNzkuMTYyMjQ4XSwgWzE2MC45MjQxNjIsIC03OS43MzA0ODJdLCBbMTYwLjc0Nzg5NCwgLTgwLjIwMDczN10sIFsxNjAuMzE2OTY0LCAtODAuNTczMDY2XSwgWzE1OS43ODgyMTEsIC04MC45NDUzOTVdLCBbMTYxLjEyMDAxNiwgLTgxLjI3ODUwMV0sIFsxNjEuNjI5Mjg3LCAtODEuNjkwMDAxXSwgWzE2Mi40OTA5OTIsIC04Mi4wNjIyNzhdLCBbMTYzLjcwNTMzNiwgLTgyLjM5NTQzNV0sIFsxNjUuMDk1OTQ5LCAtODIuNzA4OTU2XSwgWzE2Ni42MDQxMjYsIC04My4wMjI0NzddLCBbMTY4Ljg5NTY2NSwgLTgzLjMzNTk5OF0sIFsxNjkuNDA0NzgyLCAtODMuODI1ODkxXSwgWzE3Mi4yODM5MzQsIC04NC4wNDE0MzNdLCBbMTcyLjQ3NzA0OSwgLTg0LjExNzkxNF0sIFsxNzMuMjI0MDgzLCAtODQuNDEzNzFdLCBbMTc1Ljk4NTY3MiwgLTg0LjE1ODk5N10sIFsxNzguMjc3MjEyLCAtODQuNDcyNTE4XSwgWzE4MCwgLTg0LjcxMzM4XSwgWy0xNzkuOTQyNDk5LCAtODQuNzIxNDQzXSwgWy0xNzkuMDU4Njc3LCAtODQuMTM5NDEyXSwgWy0xNzcuMjU2NzcyLCAtODQuNDUyOTMzXSwgWy0xNzcuMTQwODA3LCAtODQuNDE3OTQxXSwgWy0xNzYuMDg0NjczLCAtODQuMDk5MjU5XSwgWy0xNzUuOTQ3MjM1LCAtODQuMTEwNDQ5XSwgWy0xNzUuODI5ODgyLCAtODQuMTE3OTE0XSwgWy0xNzQuMzgyNTAzLCAtODQuNTM0MzIzXSwgWy0xNzMuMTE2NTU5LCAtODQuMTE3OTE0XSwgWy0xNzIuODg5MTA2LCAtODQuMDYxMDE5XSwgWy0xNjkuOTUxMjIzLCAtODMuODg0NjQ3XSwgWy0xNjguOTk5OTg5LCAtODQuMTE3OTE0XSwgWy0xNjguNTMwMTk5LCAtODQuMjM3MzldLCBbLTE2Ny4wMjIwOTksIC04NC41NzA0OTddLCBbLTE2NC4xODIxNDQsIC04NC44MjUyMV0sIFstMTYxLjkyOTc3NSwgLTg1LjEzODczMV0sIFstMTU4LjA3MTM4LCAtODUuMzczOTFdLCBbLTE1NS4xOTIyNTMsIC04NS4wOTk1Nl0sIFstMTUwLjk0MjA5OSwgLTg1LjI5NTUxN10sIFstMTQ4LjUzMzA3MywgLTg1LjYwOTAzOF0sIFstMTQ1Ljg4ODkxOCwgLTg1LjMxNTEwMl0sIFstMTQzLjEwNzcxOCwgLTg1LjA0MDc1Ml0sIFstMTQyLjg5MjI3OSwgLTg0LjU3MDQ5N10sIFstMTQ2LjgyOTA2OCwgLTg0LjUzMTI3NF0sIFstMTUwLjA2MDczMiwgLTg0LjI5NjE0Nl0sIFstMTUwLjkwMjkyOCwgLTgzLjkwNDIzMl0sIFstMTUzLjU4NjIwMSwgLTgzLjY4ODY5XSwgWy0xNTMuNDA5OTA3LCAtODMuMjM4MDJdLCBbLTE1My4wMzc3NTksIC04Mi44MjY1Ml0sIFstMTUyLjY2NTYzNywgLTgyLjQ1NDE5Ml0sIFstMTUyLjg2MTUxNywgLTgyLjA0MjY5Ml0sIFstMTU0LjUyNjI5OSwgLTgxLjc2ODM5NF0sIFstMTU1LjI5MDE4LCAtODEuNDE1NjVdLCBbLTE1Ni44Mzc0NSwgLTgxLjEwMjEyOV0sIFstMTU0LjQwODc4NywgLTgxLjE2MDkzN10sIFstMTUyLjA5NzY2MiwgLTgxLjAwNDE1MV0sIFstMTUwLjY0ODI5MywgLTgxLjMzNzMwOV0sIFstMTQ4Ljg2NTk5OCwgLTgxLjA0MzM3M10sIFstMTQ3LjIyMDc1LCAtODAuNjcxMDQ1XSwgWy0xNDYuNDE3NzQ5LCAtODAuMzM3OTM4XSwgWy0xNDYuNzcwMjg2LCAtNzkuOTI2NDM5XSwgWy0xNDguMDYyOTQ3LCAtNzkuNjUyMDg5XSwgWy0xNDkuNTMxOTAxLCAtNzkuMzU4MjA1XSwgWy0xNTEuNTg4NDE2LCAtNzkuMjk5Mzk3XSwgWy0xNTMuMzkwMzIyLCAtNzkuMTYyMjQ4XSwgWy0xNTUuMzI5Mzc2LCAtNzkuMDY0MjY5XSwgWy0xNTUuOTc1NjY4LCAtNzguNjkxOTRdLCBbLTE1Ny4yNjgzMDIsIC03OC4zNzg0MTldLCBbLTE1OC4wNTE3NjgsIC03OC4wMjU2NzZdLCBbLTE1OC4zNjUxMzQsIC03Ni44ODkyMDddLCBbLTE1Ny44NzU0NzQsIC03Ni45ODcyMzhdLCBbLTE1Ni45NzQ1NzMsIC03Ny4zMDA3NTldLCBbLTE1NS4zMjkzNzYsIC03Ny4yMDI3MjhdLCBbLTE1My43NDI4MzIsIC03Ny4wNjU1NzldLCBbLTE1Mi45MjAyNDcsIC03Ny40OTY2NjRdLCBbLTE1MS4zMzM3OCwgLTc3LjM5ODczN10sIFstMTUwLjAwMTk1LCAtNzcuMTgzMTQzXSwgWy0xNDguNzQ4NDg2LCAtNzYuOTA4ODQ1XSwgWy0xNDcuNjEyNDgzLCAtNzYuNTc1NzM4XSwgWy0xNDYuMTA0NDA5LCAtNzYuNDc3NzZdLCBbLTE0Ni4xNDM1MjgsIC03Ni4xMDU0MzFdLCBbLTE0Ni40OTYwOTEsIC03NS43MzMxNTRdLCBbLTE0Ni4yMDIzMSwgLTc1LjM4MDQxMV0sIFstMTQ0LjkwOTYyNCwgLTc1LjIwNDAzOV0sIFstMTQ0LjMyMjAzNywgLTc1LjUzNzE5N10sIFstMTQyLjc5NDM1MywgLTc1LjM0MTI0XSwgWy0xNDEuNjM4NzY0LCAtNzUuMDg2NDc1XSwgWy0xNDAuMjA5MDA3LCAtNzUuMDY2ODldLCBbLTEzOC44NTc1OSwgLTc0Ljk2ODkxMV0sIFstMTM3LjUwNjIsIC03NC43MzM3ODNdLCBbLTEzNi40Mjg5MDEsIC03NC41MTgyNDFdLCBbLTEzNS4yMTQ1ODMsIC03NC4zMDI2OTldLCBbLTEzNC40MzExOTQsIC03NC4zNjE0NTVdLCBbLTEzMy43NDU2NTQsIC03NC40Mzk4NDhdLCBbLTEzMi4yNTcxNjgsIC03NC4zMDI2OTldLCBbLTEzMC45MjUzMTEsIC03NC40NzkwMTldLCBbLTEyOS41NTQyODQsIC03NC40NTk0MzNdLCBbLTEyOC4yNDIwMzgsIC03NC4zMjIyODRdLCBbLTEyNi44OTA2MjIsIC03NC40MjAyNjNdLCBbLTEyNS40MDIwODIsIC03NC41MTgyNDFdLCBbLTEyNC4wMTE0OTYsIC03NC40NzkwMTldLCBbLTEyMi41NjIxNTIsIC03NC40OTg2MDRdLCBbLTEyMS4wNzM2MTMsIC03NC41MTgyNDFdLCBbLTExOS43MDI1NiwgLTc0LjQ3OTAxOV0sIFstMTE4LjY4NDE0NSwgLTc0LjE4NTA4M10sIFstMTE3LjQ2OTgwMSwgLTc0LjAyODM0OF0sIFstMTE2LjIxNjMxMiwgLTc0LjI0Mzg5MV0sIFstMTE1LjAyMTU1MiwgLTc0LjA2NzUxOV0sIFstMTEzLjk0NDMzMSwgLTczLjcxNDgyOF0sIFstMTEzLjI5Nzk4OCwgLTc0LjAyODM0OF0sIFstMTEyLjk0NTQ1MiwgLTc0LjM4MTA0XSwgWy0xMTIuMjk5MDgzLCAtNzQuNzE0MTk4XSwgWy0xMTEuMjYxMDU5LCAtNzQuNDIwMjYzXSwgWy0xMTAuMDY2MzI1LCAtNzQuNzkyNTRdLCBbLTEwOC43MTQ5MDksIC03NC45MTAxMDNdLCBbLTEwNy41NTkzNDYsIC03NS4xODQ0NTRdLCBbLTEwNi4xNDkxNDgsIC03NS4xMjU2OThdLCBbLTEwNC44NzYwNzQsIC03NC45NDkzMjZdLCBbLTEwMy4zNjc5NDksIC03NC45ODg0OTddLCBbLTEwMi4wMTY1MDcsIC03NS4xMjU2OThdLCBbLTEwMC42NDU1MzEsIC03NS4zMDIwMThdLCBbLTEwMC4xMTY3LCAtNzQuODcwOTMzXSwgWy0xMDAuNzYzMDQzLCAtNzQuNTM3ODI2XSwgWy0xMDEuMjUyNzAzLCAtNzQuMTg1MDgzXSwgWy0xMDIuNTQ1MzM3LCAtNzQuMTA2NzQyXSwgWy0xMDMuMTEzMzEzLCAtNzMuNzM0NDEzXSwgWy0xMDMuMzI4NzUyLCAtNzMuMzYyMDg0XSwgWy0xMDMuNjgxMjg5LCAtNzIuNjE3NTNdLCBbLTEwMi45MTc0ODUsIC03Mi43NTQ2NzldLCBbLTEwMS42MDUyNCwgLTcyLjgxMzQzNl0sIFstMTAwLjMxMjUyOCwgLTcyLjc1NDY3OV0sIFstOTkuMTM3MzgsIC03Mi45MTE0MTRdLCBbLTk4LjExODg4OSwgLTczLjIwNTM1XSwgWy05Ny42ODgwMzcsIC03My41NTgwNDFdLCBbLTk2LjMzNjU5NSwgLTczLjYxNjg0OV0sIFstOTUuMDQzOTYxLCAtNzMuNDc5N10sIFstOTMuNjcyOTA3LCAtNzMuMjgzNzQzXSwgWy05Mi40MzkwMDMsIC03My4xNjYxNzldLCBbLTkxLjQyMDU2NCwgLTczLjQwMTMwN10sIFstOTAuMDg4NzMzLCAtNzMuMzIyOTE0XSwgWy04OS4yMjY5NTEsIC03Mi41NTg3MjJdLCBbLTg4LjQyMzk1MSwgLTczLjAwOTM5M10sIFstODcuMjY4MzM3LCAtNzMuMTg1NzY0XSwgWy04Ni4wMTQ4MjIsIC03My4wODc3ODZdLCBbLTg1LjE5MjIzNiwgLTczLjQ3OTddLCBbLTgzLjg3OTk5MSwgLTczLjUxODg3MV0sIFstODIuNjY1NjQ2LCAtNzMuNjM2NDM0XSwgWy04MS40NzA5MTMsIC03My44NTE5NzddLCBbLTgwLjY4NzQ0NywgLTczLjQ3OTddLCBbLTgwLjI5NTc5MSwgLTczLjEyNjk1Nl0sIFstNzkuMjk2ODg2LCAtNzMuNTE4ODcxXSwgWy03Ny45MjU4NTgsIC03My40MjA4OTJdLCBbLTc2LjkwNzM2NywgLTczLjYzNjQzNF0sIFstNzYuMjIxODc5LCAtNzMuOTY5NTQxXSwgWy03NC44OTAwNDksIC03My44NzE2MTRdLCBbLTczLjg1MjAyNCwgLTczLjY1NjAyXSwgWy03Mi44MzM1MzMsIC03My40MDEzMDddLCBbLTcxLjYxOTIxNSwgLTczLjI2NDE1N10sIFstNzAuMjA5MDQyLCAtNzMuMTQ2NTQyXSwgWy02OC45MzU5MTYsIC03My4wMDkzOTNdLCBbLTY3Ljk1NjYyMiwgLTcyLjc5Mzg1XSwgWy02Ny4zNjkwNjEsIC03Mi40ODAzMjldLCBbLTY3LjEzNDAzNiwgLTcyLjA0OTI0NF0sIFstNjcuMjUxNTQ4LCAtNzEuNjM3NzQ1XSwgWy02Ny41NjQ5NCwgLTcxLjI0NTgzMV0sIFstNjcuOTE3NDc3LCAtNzAuODUzOTE3XSwgWy02OC4yMzA4NDMsIC03MC40NjIwNTVdLCBbLTY4LjQ4NTQ1MiwgLTcwLjEwOTMxMV0sIFstNjguNTQ0MjA5LCAtNjkuNzE3Mzk3XSwgWy02OC40NDYyODIsIC02OS4zMjU1MzVdLCBbLTY3Ljk3NjIzMywgLTY4Ljk1MzIwNl0sIFstNjcuNTg0NSwgLTY4LjU0MTcwN10sIFstNjcuNDI3ODQzLCAtNjguMTQ5ODQ0XSwgWy02Ny42MjM2NywgLTY3LjcxODc1OV0sIFstNjcuNzQxMTgzLCAtNjcuMzI2ODQ1XSwgWy02Ny4yNTE1NDgsIC02Ni44NzYxNzVdLCBbLTY2LjcwMzE4NCwgLTY2LjU4MjI0XSwgWy02Ni4wNTY4MTUsIC02Ni4yMDk5NjNdLCBbLTY1LjM3MTMyNywgLTY1Ljg5NjM5XSwgWy02NC41NjgyNzYsIC02NS42MDI1MDZdLCBbLTY0LjE3NjU0MiwgLTY1LjE3MTQyM10sIFstNjMuNjI4MTUyLCAtNjQuODk3MDczXSwgWy02My4wMDEzOTQsIC02NC42NDIzMDhdLCBbLTYyLjA0MTY4NiwgLTY0LjU4MzU1Ml0sIFstNjEuNDE0OTI4LCAtNjQuMjcwMDMxXSwgWy02MC43MDk4NTUsIC02NC4wNzQwNzRdLCBbLTU5Ljg4NzI2OSwgLTYzLjk1NjUxXSwgWy01OS4xNjI1ODUsIC02My43MDE3NDVdLCBbLTU4LjU5NDU1NywgLTYzLjM4ODIyNF0sIFstNTcuODExMTQzLCAtNjMuMjcwNjZdLCBbLTU3LjIyMzU4MiwgLTYzLjUyNTQyNV0sIFstNTcuNTk1NzMsIC02My44NTg1MzJdLCBbLTU4LjYxNDE0MywgLTY0LjE1MjQ2N11dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQVRBIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJBbnRhcmN0aWNhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s2OC45MzUsIC00OC42MjVdLCBbNjkuNTgsIC00OC45NF0sIFs3MC41MjUsIC00OS4wNjVdLCBbNzAuNTYsIC00OS4yNTVdLCBbNzAuMjgsIC00OS43MV0sIFs2OC43NDUsIC00OS43NzVdLCBbNjguNzIsIC00OS4yNDI1XSwgWzY4Ljg2NzUsIC00OC44M10sIFs2OC45MzUsIC00OC42MjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkFURiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRnJlbmNoIFNvdXRoZXJuIGFuZCBBbnRhcmN0aWMgTGFuZHMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxNDUuMzk3OTc4LCAtNDAuNzkyNTQ5XSwgWzE0Ni4zNjQxMjEsIC00MS4xMzc2OTVdLCBbMTQ2LjkwODU4NCwgLTQxLjAwMDU0Nl0sIFsxNDcuNjg5MjU5LCAtNDAuODA4MjU4XSwgWzE0OC4yODkwNjgsIC00MC44NzU0MzhdLCBbMTQ4LjM1OTg2NSwgLTQyLjA2MjQ0NV0sIFsxNDguMDE3MzAxLCAtNDIuNDA3MDI0XSwgWzE0Ny45MTQwNTIsIC00My4yMTE1MjJdLCBbMTQ3LjU2NDU2NCwgLTQyLjkzNzY4OV0sIFsxNDYuODcwMzQzLCAtNDMuNjM0NTk3XSwgWzE0Ni42NjMzMjcsIC00My41ODA4NTRdLCBbMTQ2LjA0ODM3OCwgLTQzLjU0OTc0NV0sIFsxNDUuNDMxOTMsIC00Mi42OTM3NzZdLCBbMTQ1LjI5NTA5LCAtNDIuMDMzNjFdLCBbMTQ0LjcxODA3MSwgLTQxLjE2MjU1Ml0sIFsxNDQuNzQzNzU1LCAtNDAuNzAzOTc1XSwgWzE0NS4zOTc5NzgsIC00MC43OTI1NDldXV0sIFtbWzE0My41NjE4MTEsIC0xMy43NjM2NTZdLCBbMTQzLjkyMjA5OSwgLTE0LjU0ODMxMV0sIFsxNDQuNTYzNzE0LCAtMTQuMTcxMTc2XSwgWzE0NC44OTQ5MDgsIC0xNC41OTQ0NThdLCBbMTQ1LjM3NDcyNCwgLTE0Ljk4NDk3Nl0sIFsxNDUuMjcxOTkxLCAtMTUuNDI4MjA1XSwgWzE0NS40ODUyNiwgLTE2LjI4NTY3Ml0sIFsxNDUuNjM3MDMzLCAtMTYuNzg0OTE4XSwgWzE0NS44ODg5MDQsIC0xNi45MDY5MjZdLCBbMTQ2LjE2MDMwOSwgLTE3Ljc2MTY1NV0sIFsxNDYuMDYzNjc0LCAtMTguMjgwMDczXSwgWzE0Ni4zODc0NzgsIC0xOC45NTgyNzRdLCBbMTQ3LjQ3MTA4MiwgLTE5LjQ4MDcyM10sIFsxNDguMTc3NjAyLCAtMTkuOTU1OTM5XSwgWzE0OC44NDg0MTQsIC0yMC4zOTEyMV0sIFsxNDguNzE3NDY1LCAtMjAuNjMzNDY5XSwgWzE0OS4yODk0MiwgLTIxLjI2MDUxMV0sIFsxNDkuNjc4MzM3LCAtMjIuMzQyNTEyXSwgWzE1MC4wNzczODIsIC0yMi4xMjI3ODRdLCBbMTUwLjQ4MjkzOSwgLTIyLjU1NjE0Ml0sIFsxNTAuNzI3MjY1LCAtMjIuNDAyNDA1XSwgWzE1MC44OTk1NTQsIC0yMy40NjIyMzddLCBbMTUxLjYwOTE3NSwgLTI0LjA3NjI1Nl0sIFsxNTIuMDczNTQsIC0yNC40NTc4ODddLCBbMTUyLjg1NTE5NywgLTI1LjI2NzUwMV0sIFsxNTMuMTM2MTYyLCAtMjYuMDcxMTczXSwgWzE1My4xNjE5NDksIC0yNi42NDEzMTldLCBbMTUzLjA5MjkwOSwgLTI3LjI2MDNdLCBbMTUzLjU2OTQ2OSwgLTI4LjExMDA2N10sIFsxNTMuNTEyMTA4LCAtMjguOTk1MDc3XSwgWzE1My4zMzkwOTUsIC0yOS40NTgyMDJdLCBbMTUzLjA2OTI0MSwgLTMwLjM1MDI0XSwgWzE1My4wODk2MDIsIC0zMC45MjM2NDJdLCBbMTUyLjg5MTU3OCwgLTMxLjY0MDQ0Nl0sIFsxNTIuNDUwMDAyLCAtMzIuNTUwMDAzXSwgWzE1MS43MDkxMTcsIC0zMy4wNDEzNDJdLCBbMTUxLjM0Mzk3MiwgLTMzLjgxNjAyM10sIFsxNTEuMDEwNTU1LCAtMzQuMzEwMzZdLCBbMTUwLjcxNDEzOSwgLTM1LjE3MzQ2XSwgWzE1MC4zMjgyMiwgLTM1LjY3MTg3OV0sIFsxNTAuMDc1MjEyLCAtMzYuNDIwMjA2XSwgWzE0OS45NDYxMjQsIC0zNy4xMDkwNTJdLCBbMTQ5Ljk5NzI4NCwgLTM3LjQyNTI2MV0sIFsxNDkuNDIzODgyLCAtMzcuNzcyNjgxXSwgWzE0OC4zMDQ2MjIsIC0zNy44MDkwNjFdLCBbMTQ3LjM4MTczMywgLTM4LjIxOTIxN10sIFsxNDYuOTIyMTIzLCAtMzguNjA2NTMyXSwgWzE0Ni4zMTc5MjIsIC0zOS4wMzU3NTddLCBbMTQ1LjQ4OTY1MiwgLTM4LjU5Mzc2OF0sIFsxNDQuODc2OTc2LCAtMzguNDE3NDQ4XSwgWzE0NS4wMzIyMTIsIC0zNy44OTYxODhdLCBbMTQ0LjQ4NTY4MiwgLTM4LjA4NTMyNF0sIFsxNDMuNjA5OTc0LCAtMzguODA5NDY1XSwgWzE0Mi43NDU0MjcsIC0zOC41MzgyNjhdLCBbMTQyLjE3ODMzLCAtMzguMzgwMDM0XSwgWzE0MS42MDY1ODIsIC0zOC4zMDg1MTRdLCBbMTQwLjYzODU3OSwgLTM4LjAxOTMzM10sIFsxMzkuOTkyMTU4LCAtMzcuNDAyOTM2XSwgWzEzOS44MDY1ODgsIC0zNi42NDM2MDNdLCBbMTM5LjU3NDE0OCwgLTM2LjEzODM2Ml0sIFsxMzkuMDgyODA4LCAtMzUuNzMyNzU0XSwgWzEzOC4xMjA3NDgsIC0zNS42MTIyOTZdLCBbMTM4LjQ0OTQ2MiwgLTM1LjEyNzI2MV0sIFsxMzguMjA3NTY0LCAtMzQuMzg0NzIzXSwgWzEzNy43MTkxNywgLTM1LjA3NjgyNV0sIFsxMzYuODI5NDA2LCAtMzUuMjYwNTM1XSwgWzEzNy4zNTIzNzEsIC0zNC43MDczMzldLCBbMTM3LjUwMzg4NiwgLTM0LjEzMDI2OF0sIFsxMzcuODkwMTE2LCAtMzMuNjQwNDc5XSwgWzEzNy44MTAzMjgsIC0zMi45MDAwMDddLCBbMTM2Ljk5NjgzNywgLTMzLjc1Mjc3MV0sIFsxMzYuMzcyMDY5LCAtMzQuMDk0NzY2XSwgWzEzNS45ODkwNDMsIC0zNC44OTAxMThdLCBbMTM1LjIwODIxMywgLTM0LjQ3ODY3XSwgWzEzNS4yMzkyMTgsIC0zMy45NDc5NTNdLCBbMTM0LjYxMzQxNywgLTMzLjIyMjc3OF0sIFsxMzQuMDg1OTA0LCAtMzIuODQ4MDcyXSwgWzEzNC4yNzM5MDMsIC0zMi42MTcyMzRdLCBbMTMyLjk5MDc3NywgLTMyLjAxMTIyNF0sIFsxMzIuMjg4MDgxLCAtMzEuOTgyNjQ3XSwgWzEzMS4zMjYzMzEsIC0zMS40OTU4MDNdLCBbMTI5LjUzNTc5NCwgLTMxLjU5MDQyM10sIFsxMjguMjQwOTM4LCAtMzEuOTQ4NDg5XSwgWzEyNy4xMDI4NjcsIC0zMi4yODIyNjddLCBbMTI2LjE0ODcxNCwgLTMyLjIxNTk2Nl0sIFsxMjUuMDg4NjIzLCAtMzIuNzI4NzUxXSwgWzEyNC4yMjE2NDgsIC0zMi45NTk0ODddLCBbMTI0LjAyODk0NywgLTMzLjQ4Mzg0N10sIFsxMjMuNjU5NjY3LCAtMzMuODkwMTc5XSwgWzEyMi44MTEwMzYsIC0zMy45MTQ0NjddLCBbMTIyLjE4MzA2NCwgLTM0LjAwMzQwMl0sIFsxMjEuMjk5MTkxLCAtMzMuODIxMDM2XSwgWzEyMC41ODAyNjgsIC0zMy45MzAxNzddLCBbMTE5Ljg5MzY5NSwgLTMzLjk3NjA2NV0sIFsxMTkuMjk4ODk5LCAtMzQuNTA5MzY2XSwgWzExOS4wMDczNDEsIC0zNC40NjQxNDldLCBbMTE4LjUwNTcxOCwgLTM0Ljc0NjgxOV0sIFsxMTguMDI0OTcyLCAtMzUuMDY0NzMzXSwgWzExNy4yOTU1MDcsIC0zNS4wMjU0NTldLCBbMTE2LjYyNTEwOSwgLTM1LjAyNTA5N10sIFsxMTUuNTY0MzQ3LCAtMzQuMzg2NDI4XSwgWzExNS4wMjY4MDksIC0zNC4xOTY1MTddLCBbMTE1LjA0ODYxNiwgLTMzLjYyMzQyNV0sIFsxMTUuNTQ1MTIzLCAtMzMuNDg3MjU4XSwgWzExNS43MTQ2NzQsIC0zMy4yNTk1NzJdLCBbMTE1LjY3OTM3OSwgLTMyLjkwMDM2OV0sIFsxMTUuODAxNjQ1LCAtMzIuMjA1MDYyXSwgWzExNS42ODk2MTEsIC0zMS42MTI0MzddLCBbMTE1LjE2MDkwOSwgLTMwLjYwMTU5NF0sIFsxMTQuOTk3MDQzLCAtMzAuMDMwNzI1XSwgWzExNS4wNDAwMzgsIC0yOS40NjEwOTVdLCBbMTE0LjY0MTk3NCwgLTI4LjgxMDIzMV0sIFsxMTQuNjE2NDk4LCAtMjguNTE2Mzk5XSwgWzExNC4xNzM1NzksIC0yOC4xMTgwNzddLCBbMTE0LjA0ODg4NCwgLTI3LjMzNDc2NV0sIFsxMTMuNDc3NDk4LCAtMjYuNTQzMTM0XSwgWzExMy4zMzg5NTMsIC0yNi4xMTY1NDVdLCBbMTEzLjc3ODM1OCwgLTI2LjU0OTAyNV0sIFsxMTMuNDQwOTYyLCAtMjUuNjIxMjc4XSwgWzExMy45MzY5MDEsIC0yNS45MTEyMzVdLCBbMTE0LjIzMjg1MiwgLTI2LjI5ODQ0Nl0sIFsxMTQuMjE2MTYxLCAtMjUuNzg2MjgxXSwgWzExMy43MjEyNTUsIC0yNC45OTg5MzldLCBbMTEzLjYyNTM0NCwgLTI0LjY4Mzk3MV0sIFsxMTMuMzkzNTIzLCAtMjQuMzg0NzY0XSwgWzExMy41MDIwNDQsIC0yMy44MDYzNV0sIFsxMTMuNzA2OTkzLCAtMjMuNTYwMjE1XSwgWzExMy44NDM0MTgsIC0yMy4wNTk5ODddLCBbMTEzLjczNjU1MiwgLTIyLjQ3NTQ3NV0sIFsxMTQuMTQ5NzU2LCAtMjEuNzU1ODgxXSwgWzExNC4yMjUzMDcsIC0yMi41MTc0ODhdLCBbMTE0LjY0Nzc2MiwgLTIxLjgyOTUyXSwgWzExNS40NjAxNjcsIC0yMS40OTUxNzNdLCBbMTE1Ljk0NzM3MywgLTIxLjA2ODY4OF0sIFsxMTYuNzExNjE1LCAtMjAuNzAxNjgyXSwgWzExNy4xNjYzMTYsIC0yMC42MjM1OTldLCBbMTE3LjQ0MTU0NSwgLTIwLjc0Njg5OV0sIFsxMTguMjI5NTU5LCAtMjAuMzc0MjA4XSwgWzExOC44MzYwODUsIC0yMC4yNjMzMTFdLCBbMTE4Ljk4NzgwNywgLTIwLjA0NDIwM10sIFsxMTkuMjUyNDk0LCAtMTkuOTUyOTQyXSwgWzExOS44MDUyMjUsIC0xOS45NzY1MDZdLCBbMTIwLjg1NjIyLCAtMTkuNjgzNzA4XSwgWzEyMS4zOTk4NTYsIC0xOS4yMzk3NTZdLCBbMTIxLjY1NTEzOCwgLTE4LjcwNTMxOF0sIFsxMjIuMjQxNjY1LCAtMTguMTk3NjQ5XSwgWzEyMi4yODY2MjQsIC0xNy43OTg2MDNdLCBbMTIyLjMxMjc3MiwgLTE3LjI1NDk2N10sIFsxMjMuMDEyNTc0LCAtMTYuNDA1Ml0sIFsxMjMuNDMzNzg5LCAtMTcuMjY4NTU4XSwgWzEyMy44NTkzNDUsIC0xNy4wNjkwMzVdLCBbMTIzLjUwMzI0MiwgLTE2LjU5NjUwNl0sIFsxMjMuODE3MDczLCAtMTYuMTExMzE2XSwgWzEyNC4yNTgyODcsIC0xNi4zMjc5NDRdLCBbMTI0LjM3OTcyNiwgLTE1LjU2NzA2XSwgWzEyNC45MjYxNTMsIC0xNS4wNzUxXSwgWzEyNS4xNjcyNzUsIC0xNC42ODAzOTZdLCBbMTI1LjY3MDA4NywgLTE0LjUxMDA3XSwgWzEyNS42ODU3OTYsIC0xNC4yMzA2NTZdLCBbMTI2LjEyNTE0OSwgLTE0LjM0NzM0MV0sIFsxMjYuMTQyODIzLCAtMTQuMDk1OTg3XSwgWzEyNi41ODI1ODksIC0xMy45NTI3OTFdLCBbMTI3LjA2NTg2NywgLTEzLjgxNzk2OF0sIFsxMjcuODA0NjMzLCAtMTQuMjc2OTA2XSwgWzEyOC4zNTk2OSwgLTE0Ljg2OTE3XSwgWzEyOC45ODU1NDMsIC0xNC44NzU5OTFdLCBbMTI5LjYyMTQ3MywgLTE0Ljk2OTc4NF0sIFsxMjkuNDA5NiwgLTE0LjQyMDY3XSwgWzEyOS44ODg2NDEsIC0xMy42MTg3MDNdLCBbMTMwLjMzOTQ2NiwgLTEzLjM1NzM3Nl0sIFsxMzAuMTgzNTA2LCAtMTMuMTA3NTJdLCBbMTMwLjYxNzc5NSwgLTEyLjUzNjM5Ml0sIFsxMzEuMjIzNDk1LCAtMTIuMTgzNjQ5XSwgWzEzMS43MzUwOTEsIC0xMi4zMDI0NTNdLCBbMTMyLjU3NTI5OCwgLTEyLjExNDA0MV0sIFsxMzIuNTU3MjEyLCAtMTEuNjAzMDEyXSwgWzEzMS44MjQ2OTgsIC0xMS4yNzM3ODJdLCBbMTMyLjM1NzIyNCwgLTExLjEyODUxOV0sIFsxMzMuMDE5NTYxLCAtMTEuMzc2NDExXSwgWzEzMy41NTA4NDYsIC0xMS43ODY1MTVdLCBbMTM0LjM5MzA2OCwgLTEyLjA0MjM2NV0sIFsxMzQuNjc4NjMyLCAtMTEuOTQxMTgzXSwgWzEzNS4yOTg0OTEsIC0xMi4yNDg2MDZdLCBbMTM1Ljg4MjY5MywgLTExLjk2MjI2N10sIFsxMzYuMjU4MzgxLCAtMTIuMDQ5MzQyXSwgWzEzNi40OTI0NzUsIC0xMS44NTcyMDldLCBbMTM2Ljk1MTYyLCAtMTIuMzUxOTU5XSwgWzEzNi42ODUxMjUsIC0xMi44ODcyMjNdLCBbMTM2LjMwNTQwNywgLTEzLjI5MTIzXSwgWzEzNS45NjE3NTgsIC0xMy4zMjQ1MDldLCBbMTM2LjA3NzYxNywgLTEzLjcyNDI3OF0sIFsxMzUuNzgzODM2LCAtMTQuMjIzOTg5XSwgWzEzNS40Mjg2NjQsIC0xNC43MTU0MzJdLCBbMTM1LjUwMDE4NCwgLTE0Ljk5Nzc0MV0sIFsxMzYuMjk1MTc1LCAtMTUuNTUwMjY1XSwgWzEzNy4wNjUzNiwgLTE1Ljg3MDc2Ml0sIFsxMzcuNTgwNDcxLCAtMTYuMjE1MDgyXSwgWzEzOC4zMDMyMTcsIC0xNi44MDc2MDRdLCBbMTM4LjU4NTE2NCwgLTE2LjgwNjYyMl0sIFsxMzkuMTA4NTQzLCAtMTcuMDYyNjc5XSwgWzEzOS4yNjA1NzUsIC0xNy4zNzE2MDFdLCBbMTQwLjIxNTI0NSwgLTE3LjcxMDgwNV0sIFsxNDAuODc1NDYzLCAtMTcuMzY5MDY5XSwgWzE0MS4wNzExMSwgLTE2LjgzMjA0N10sIFsxNDEuMjc0MDk1LCAtMTYuMzg4ODddLCBbMTQxLjM5ODIyMiwgLTE1Ljg0MDUzMl0sIFsxNDEuNzAyMTgzLCAtMTUuMDQ0OTIxXSwgWzE0MS41NjMzOCwgLTE0LjU2MTMzM10sIFsxNDEuNjM1NTIsIC0xNC4yNzAzOTVdLCBbMTQxLjUxOTg2OSwgLTEzLjY5ODA3OF0sIFsxNDEuNjUwOTIsIC0xMi45NDQ2ODhdLCBbMTQxLjg0MjY5MSwgLTEyLjc0MTU0OF0sIFsxNDEuNjg2OTksIC0xMi40MDc2MTRdLCBbMTQxLjkyODYyOSwgLTExLjg3NzQ2Nl0sIFsxNDIuMTE4NDg4LCAtMTEuMzI4MDQyXSwgWzE0Mi4xNDM3MDYsIC0xMS4wNDI3MzddLCBbMTQyLjUxNTI2LCAtMTAuNjY4MTg2XSwgWzE0Mi43OTczMSwgLTExLjE1NzM1NV0sIFsxNDIuODY2NzYzLCAtMTEuNzg0NzA3XSwgWzE0My4xMTU5NDcsIC0xMS45MDU2M10sIFsxNDMuMTU4NjMyLCAtMTIuMzI1NjU2XSwgWzE0My41MjIxMjQsIC0xMi44MzQzNThdLCBbMTQzLjU5NzE1OCwgLTEzLjQwMDQyMl0sIFsxNDMuNTYxODExLCAtMTMuNzYzNjU2XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJBVVMiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkF1c3RyYWxpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTYuOTc5NjY3LCA0OC4xMjM0OTddLCBbMTYuOTAzNzU0LCA0Ny43MTQ4NjZdLCBbMTYuMzQwNTg0LCA0Ny43MTI5MDJdLCBbMTYuNTM0MjY4LCA0Ny40OTYxNzFdLCBbMTYuMjAyMjk4LCA0Ni44NTIzODZdLCBbMTYuMDExNjY0LCA0Ni42ODM2MTFdLCBbMTUuMTM3MDkyLCA0Ni42NTg3MDNdLCBbMTQuNjMyNDcyLCA0Ni40MzE4MTddLCBbMTMuODA2NDc1LCA0Ni41MDkzMDZdLCBbMTIuMzc2NDg1LCA0Ni43Njc1NTldLCBbMTIuMTUzMDg4LCA0Ny4xMTUzOTNdLCBbMTEuMTY0ODI4LCA0Ni45NDE1NzldLCBbMTEuMDQ4NTU2LCA0Ni43NTEzNTldLCBbMTAuNDQyNzAxLCA0Ni44OTM1NDZdLCBbOS45MzI0NDgsIDQ2LjkyMDcyOF0sIFs5LjQ3OTk3LCA0Ny4xMDI4MV0sIFs5LjYzMjkzMiwgNDcuMzQ3NjAxXSwgWzkuNTk0MjI2LCA0Ny41MjUwNThdLCBbOS44OTYwNjgsIDQ3LjU4MDE5N10sIFsxMC40MDIwODQsIDQ3LjMwMjQ4OF0sIFsxMC41NDQ1MDQsIDQ3LjU2NjM5OV0sIFsxMS40MjY0MTQsIDQ3LjUyMzc2Nl0sIFsxMi4xNDEzNTcsIDQ3LjcwMzA4M10sIFsxMi42MjA3NiwgNDcuNjcyMzg4XSwgWzEyLjkzMjYyNywgNDcuNDY3NjQ2XSwgWzEzLjAyNTg1MSwgNDcuNjM3NTg0XSwgWzEyLjg4NDEwMywgNDguMjg5MTQ2XSwgWzEzLjI0MzM1NywgNDguNDE2MTE1XSwgWzEzLjU5NTk0NiwgNDguODc3MTcyXSwgWzE0LjMzODg5OCwgNDguNTU1MzA1XSwgWzE0LjkwMTQ0NywgNDguOTY0NDAyXSwgWzE1LjI1MzQxNiwgNDkuMDM5MDc0XSwgWzE2LjAyOTY0NywgNDguNzMzODk5XSwgWzE2LjQ5OTI4MywgNDguNzg1ODA4XSwgWzE2Ljk2MDI4OCwgNDguNTk2OTgyXSwgWzE2Ljg3OTk4MywgNDguNDcwMDEzXSwgWzE2Ljk3OTY2NywgNDguMTIzNDk3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJBVVQiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkF1c3RyaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1s0NS4wMDE5ODcsIDM5Ljc0MDAwNF0sIFs0NS4yOTgxNDUsIDM5LjQ3MTc1MV0sIFs0NS43Mzk5NzgsIDM5LjQ3Mzk5OV0sIFs0NS43MzUzNzksIDM5LjMxOTcxOV0sIFs0Ni4xNDM2MjMsIDM4Ljc0MTIwMV0sIFs0NS40NTc3MjIsIDM4Ljg3NDEzOV0sIFs0NC45NTI2ODgsIDM5LjMzNTc2NV0sIFs0NC43OTM5OSwgMzkuNzEzMDAzXSwgWzQ1LjAwMTk4NywgMzkuNzQwMDA0XV1dLCBbW1s0Ny4zNzMzMTUsIDQxLjIxOTczMl0sIFs0Ny44MTU2NjYsIDQxLjE1MTQxNl0sIFs0Ny45ODcyODMsIDQxLjQwNTgxOV0sIFs0OC41ODQzNTMsIDQxLjgwODg3XSwgWzQ5LjExMDI2NCwgNDEuMjgyMjg3XSwgWzQ5LjYxODkxNSwgNDAuNTcyOTI0XSwgWzUwLjA4NDgzLCA0MC41MjYxNTddLCBbNTAuMzkyODIxLCA0MC4yNTY1NjFdLCBbNDkuNTY5MjAyLCA0MC4xNzYxMDFdLCBbNDkuMzk1MjU5LCAzOS4zOTk0ODJdLCBbNDkuMjIzMjI4LCAzOS4wNDkyMTldLCBbNDguODU2NTMyLCAzOC44MTU0ODZdLCBbNDguODgzMjQ5LCAzOC4zMjAyNDVdLCBbNDguNjM0Mzc1LCAzOC4yNzAzNzhdLCBbNDguMDEwNzQ0LCAzOC43OTQwMTVdLCBbNDguMzU1NTI5LCAzOS4yODg3NjVdLCBbNDguMDYwMDk1LCAzOS41ODIyMzVdLCBbNDcuNjg1MDc5LCAzOS41MDgzNjRdLCBbNDYuNTA1NzIsIDM4Ljc3MDYwNV0sIFs0Ni40ODM0OTksIDM5LjQ2NDE1NV0sIFs0Ni4wMzQ1MzQsIDM5LjYyODAyMV0sIFs0NS42MTAwMTIsIDM5Ljg5OTk5NF0sIFs0NS44OTE5MDcsIDQwLjIxODQ3Nl0sIFs0NS4zNTkxNzUsIDQwLjU2MTUwNF0sIFs0NS41NjAzNTEsIDQwLjgxMjI5XSwgWzQ1LjE3OTQ5NiwgNDAuOTg1MzU0XSwgWzQ0Ljk3MjQ4LCA0MS4yNDgxMjldLCBbNDUuMjE3NDI2LCA0MS40MTE0NTJdLCBbNDUuOTYyNjAxLCA0MS4xMjM4NzNdLCBbNDYuNTAxNjM3LCA0MS4wNjQ0NDVdLCBbNDYuNjM3OTA4LCA0MS4xODE2NzNdLCBbNDYuMTQ1NDMyLCA0MS43MjI4MDJdLCBbNDYuNDA0OTUxLCA0MS44NjA2NzVdLCBbNDYuNjg2MDcxLCA0MS44MjcxMzddLCBbNDcuMzczMzE1LCA0MS4yMTk3MzJdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkFaRSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQXplcmJhaWphbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMjkuMzM5OTk4LCAtNC40OTk5ODNdLCBbMjkuMjc2Mzg0LCAtMy4yOTM5MDddLCBbMjkuMDI0OTI2LCAtMi44MzkyNThdLCBbMjkuNjMyMTc2LCAtMi45MTc4NThdLCBbMjkuOTM4MzU5LCAtMi4zNDg0ODddLCBbMzAuNDY5Njk2LCAtMi40MTM4NThdLCBbMzAuNTI3Njc3LCAtMi44MDc2MzJdLCBbMzAuNzQzMDEzLCAtMy4wMzQyODVdLCBbMzAuNzUyMjYzLCAtMy4zNTkzM10sIFszMC41MDU1NiwgLTMuNTY4NTY3XSwgWzMwLjExNjMzMywgLTQuMDkwMTM4XSwgWzI5Ljc1MzUxMiwgLTQuNDUyMzg5XSwgWzI5LjMzOTk5OCwgLTQuNDk5OTgzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCREkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJ1cnVuZGkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzMuMzE0OTcxLCA1MS4zNDU3ODFdLCBbNC4wNDcwNzEsIDUxLjI2NzI1OV0sIFs0Ljk3Mzk5MSwgNTEuNDc1MDI0XSwgWzUuNjA2OTc2LCA1MS4wMzcyOThdLCBbNi4xNTY2NTgsIDUwLjgwMzcyMV0sIFs2LjA0MzA3MywgNTAuMTI4MDUyXSwgWzUuNzgyNDE3LCA1MC4wOTAzMjhdLCBbNS42NzQwNTIsIDQ5LjUyOTQ4NF0sIFs0Ljc5OTIyMiwgNDkuOTg1MzczXSwgWzQuMjg2MDIzLCA0OS45MDc0OTddLCBbMy41ODgxODQsIDUwLjM3ODk5Ml0sIFszLjEyMzI1MiwgNTAuNzgwMzYzXSwgWzIuNjU4NDIyLCA1MC43OTY4NDhdLCBbMi41MTM1NzMsIDUxLjE0ODUwNl0sIFszLjMxNDk3MSwgNTEuMzQ1NzgxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCRUwiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJlbGdpdW0iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzIuNjkxNzAyLCA2LjI1ODgxN10sIFsxLjg2NTI0MSwgNi4xNDIxNThdLCBbMS42MTg5NTEsIDYuODMyMDM4XSwgWzEuNjY0NDc4LCA5LjEyODU5XSwgWzEuNDYzMDQzLCA5LjMzNDYyNF0sIFsxLjQyNTA2MSwgOS44MjUzOTVdLCBbMS4wNzc3OTUsIDEwLjE3NTYwN10sIFswLjc3MjMzNiwgMTAuNDcwODA4XSwgWzAuODk5NTYzLCAxMC45OTczMzldLCBbMS4yNDM0NywgMTEuMTEwNTExXSwgWzEuNDQ3MTc4LCAxMS41NDc3MTldLCBbMS45MzU5ODYsIDExLjY0MTE1XSwgWzIuMTU0NDc0LCAxMS45NDAxNV0sIFsyLjQ5MDE2NCwgMTIuMjMzMDUyXSwgWzIuODQ4NjQzLCAxMi4yMzU2MzZdLCBbMy42MTExOCwgMTEuNjYwMTY3XSwgWzMuNTcyMjE2LCAxMS4zMjc5MzldLCBbMy43OTcxMTIsIDEwLjczNDc0Nl0sIFszLjYwMDA3LCAxMC4zMzIxODZdLCBbMy43MDU0MzgsIDEwLjA2MzIxXSwgWzMuMjIwMzUyLCA5LjQ0NDE1M10sIFsyLjkxMjMwOCwgOS4xMzc2MDhdLCBbMi43MjM3OTMsIDguNTA2ODQ1XSwgWzIuNzQ5MDYzLCA3Ljg3MDczNF0sIFsyLjY5MTcwMiwgNi4yNTg4MTddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkJFTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQmVuaW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjgyNzQ5NiwgOS42NDI0NjFdLCBbLTMuNTExODk5LCA5LjkwMDMyNl0sIFstMy45ODA0NDksIDkuODYyMzQ0XSwgWy00LjMzMDI0NywgOS42MTA4MzVdLCBbLTQuNzc5ODg0LCA5LjgyMTk4NV0sIFstNC45NTQ2NTMsIDEwLjE1MjcxNF0sIFstNS40MDQzNDIsIDEwLjM3MDczN10sIFstNS40NzA1NjUsIDEwLjk1MTI3XSwgWy01LjE5Nzg0MywgMTEuMzc1MTQ2XSwgWy01LjIyMDk0MiwgMTEuNzEzODU5XSwgWy00LjQyNzE2NiwgMTIuNTQyNjQ2XSwgWy00LjI4MDQwNSwgMTMuMjI4NDQ0XSwgWy00LjAwNjM5MSwgMTMuNDcyNDg1XSwgWy0zLjUyMjgwMywgMTMuMzM3NjYyXSwgWy0zLjEwMzcwNywgMTMuNTQxMjY3XSwgWy0yLjk2NzY5NCwgMTMuNzk4MTVdLCBbLTIuMTkxODI1LCAxNC4yNDY0MThdLCBbLTIuMDAxMDM1LCAxNC41NTkwMDhdLCBbLTEuMDY2MzYzLCAxNC45NzM4MTVdLCBbLTAuNTE1ODU0LCAxNS4xMTYxNThdLCBbLTAuMjY2MjU3LCAxNC45MjQzMDldLCBbMC4zNzQ4OTIsIDE0LjkyODkwOF0sIFswLjI5NTY0NiwgMTQuNDQ0MjM1XSwgWzAuNDI5OTI4LCAxMy45ODg3MzNdLCBbMC45OTMwNDYsIDEzLjMzNTc1XSwgWzEuMDI0MTAzLCAxMi44NTE4MjZdLCBbMi4xNzcxMDgsIDEyLjYyNTAxOF0sIFsyLjE1NDQ3NCwgMTEuOTQwMTVdLCBbMS45MzU5ODYsIDExLjY0MTE1XSwgWzEuNDQ3MTc4LCAxMS41NDc3MTldLCBbMS4yNDM0NywgMTEuMTEwNTExXSwgWzAuODk5NTYzLCAxMC45OTczMzldLCBbMC4wMjM4MDMsIDExLjAxODY4Ml0sIFstMC40Mzg3MDIsIDExLjA5ODM0MV0sIFstMC43NjE1NzYsIDEwLjkzNjkzXSwgWy0xLjIwMzM1OCwgMTEuMDA5ODE5XSwgWy0yLjk0MDQwOSwgMTAuOTYyNjldLCBbLTIuOTYzODk2LCAxMC4zOTUzMzVdLCBbLTIuODI3NDk2LCA5LjY0MjQ2MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkZBIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCdXJraW5hIEZhc28iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkyLjY3MjcyMSwgMjIuMDQxMjM5XSwgWzkyLjY1MjI1NywgMjEuMzI0MDQ4XSwgWzkyLjMwMzIzNCwgMjEuNDc1NDg1XSwgWzkyLjM2ODU1NCwgMjAuNjcwODgzXSwgWzkyLjA4Mjg4NiwgMjEuMTkyMTk1XSwgWzkyLjAyNTIxNSwgMjEuNzAxNTddLCBbOTEuODM0ODkxLCAyMi4xODI5MzZdLCBbOTEuNDE3MDg3LCAyMi43NjUwMTldLCBbOTAuNDk2MDA2LCAyMi44MDUwMTddLCBbOTAuNTg2OTU3LCAyMi4zOTI3OTRdLCBbOTAuMjcyOTcxLCAyMS44MzYzNjhdLCBbODkuODQ3NDY3LCAyMi4wMzkxNDZdLCBbODkuNzAyMDUsIDIxLjg1NzExNl0sIFs4OS40MTg4NjMsIDIxLjk2NjE3OV0sIFs4OS4wMzE5NjEsIDIyLjA1NTcwOF0sIFs4OC44NzYzMTIsIDIyLjg3OTE0Nl0sIFs4OC41Mjk3NywgMjMuNjMxMTQyXSwgWzg4LjY5OTk0LCAyNC4yMzM3MTVdLCBbODguMDg0NDIyLCAyNC41MDE2NTddLCBbODguMzA2MzczLCAyNC44NjYwNzldLCBbODguOTMxNTU0LCAyNS4yMzg2OTJdLCBbODguMjA5Nzg5LCAyNS43NjgwNjZdLCBbODguNTYzMDQ5LCAyNi40NDY1MjZdLCBbODkuMzU1MDk0LCAyNi4wMTQ0MDddLCBbODkuODMyNDgxLCAyNS45NjUwODJdLCBbODkuOTIwNjkzLCAyNS4yNjk3NV0sIFs5MC44NzIyMTEsIDI1LjEzMjYwMV0sIFs5MS43OTk1OTYsIDI1LjE0NzQzMl0sIFs5Mi4zNzYyMDIsIDI0Ljk3NjY5M10sIFs5MS45MTUwOTMsIDI0LjEzMDQxNF0sIFs5MS40Njc3MywgMjQuMDcyNjM5XSwgWzkxLjE1ODk2MywgMjMuNTAzNTI3XSwgWzkxLjcwNjQ3NSwgMjIuOTg1MjY0XSwgWzkxLjg2OTkyOCwgMjMuNjI0MzQ2XSwgWzkyLjE0NjAzNSwgMjMuNjI3NDk5XSwgWzkyLjY3MjcyMSwgMjIuMDQxMjM5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCR0QiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJhbmdsYWRlc2giLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzIyLjY1NzE1LCA0NC4yMzQ5MjNdLCBbMjIuOTQ0ODMyLCA0My44MjM3ODVdLCBbMjMuMzMyMzAyLCA0My44OTcwMTFdLCBbMjQuMTAwNjc5LCA0My43NDEwNTFdLCBbMjUuNTY5MjcyLCA0My42ODg0NDVdLCBbMjYuMDY1MTU5LCA0My45NDM0OTRdLCBbMjcuMjQyNCwgNDQuMTc1OTg2XSwgWzI3Ljk3MDEwNywgNDMuODEyNDY4XSwgWzI4LjU1ODA4MSwgNDMuNzA3NDYyXSwgWzI4LjAzOTA5NSwgNDMuMjkzMTcyXSwgWzI3LjY3Mzg5OCwgNDIuNTc3ODkyXSwgWzI3Ljk5NjcyLCA0Mi4wMDczNTldLCBbMjcuMTM1NzM5LCA0Mi4xNDE0ODVdLCBbMjYuMTE3MDQyLCA0MS44MjY5MDVdLCBbMjYuMTA2MTM4LCA0MS4zMjg4OTldLCBbMjUuMTk3MjAxLCA0MS4yMzQ0ODZdLCBbMjQuNDkyNjQ1LCA0MS41ODM4OTZdLCBbMjMuNjkyMDc0LCA0MS4zMDkwODFdLCBbMjIuOTUyMzc3LCA0MS4zMzc5OTRdLCBbMjIuODgxMzc0LCA0MS45OTkyOTddLCBbMjIuMzgwNTI2LCA0Mi4zMjAyNl0sIFsyMi41NDUwMTIsIDQyLjQ2MTM2Ml0sIFsyMi40MzY1OTUsIDQyLjU4MDMyMV0sIFsyMi42MDQ4MDEsIDQyLjg5ODUxOV0sIFsyMi45ODYwMTksIDQzLjIxMTE2MV0sIFsyMi41MDAxNTcsIDQzLjY0MjgxNF0sIFsyMi40MTA0NDYsIDQ0LjAwODA2M10sIFsyMi42NTcxNSwgNDQuMjM0OTIzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCR1IiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJ1bGdhcmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbLTc3LjUzNDY2LCAyMy43NTk3NV0sIFstNzcuNzgsIDIzLjcxXSwgWy03OC4wMzQwNSwgMjQuMjg2MTVdLCBbLTc4LjQwODQ4LCAyNC41NzU2NF0sIFstNzguMTkwODcsIDI1LjIxMDNdLCBbLTc3Ljg5LCAyNS4xN10sIFstNzcuNTQsIDI0LjM0XSwgWy03Ny41MzQ2NiwgMjMuNzU5NzVdXV0sIFtbWy03Ny44MiwgMjYuNThdLCBbLTc4LjkxLCAyNi40Ml0sIFstNzguOTgsIDI2Ljc5XSwgWy03OC41MSwgMjYuODddLCBbLTc3Ljg1LCAyNi44NF0sIFstNzcuODIsIDI2LjU4XV1dLCBbW1stNzcsIDI2LjU5XSwgWy03Ny4xNzI1NSwgMjUuODc5MThdLCBbLTc3LjM1NjQxLCAyNi4wMDczNV0sIFstNzcuMzQsIDI2LjUzXSwgWy03Ny43ODgwMiwgMjYuOTI1MTZdLCBbLTc3Ljc5LCAyNy4wNF0sIFstNzcsIDI2LjU5XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJCSFMiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlRoZSBCYWhhbWFzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxOS4wMDU0ODYsIDQ0Ljg2MDIzNF0sIFsxOS4zNjgwMywgNDQuODYzXSwgWzE5LjExNzYxLCA0NC40MjMwN10sIFsxOS41OTk3NiwgNDQuMDM4NDddLCBbMTkuNDU0LCA0My41NjgxXSwgWzE5LjIxODUyLCA0My41MjM4NF0sIFsxOS4wMzE2NSwgNDMuNDMyNTNdLCBbMTguNzA2NDgsIDQzLjIwMDExXSwgWzE4LjU2LCA0Mi42NV0sIFsxNy42NzQ5MjIsIDQzLjAyODU2M10sIFsxNy4yOTczNzMsIDQzLjQ0NjM0MV0sIFsxNi45MTYxNTYsIDQzLjY2NzcyMl0sIFsxNi40NTY0NDMsIDQ0LjA0MTI0XSwgWzE2LjIzOTY2LCA0NC4zNTExNDNdLCBbMTUuNzUwMDI2LCA0NC44MTg3MTJdLCBbMTUuOTU5MzY3LCA0NS4yMzM3NzddLCBbMTYuMzE4MTU3LCA0NS4wMDQxMjddLCBbMTYuNTM0OTM5LCA0NS4yMTE2MDhdLCBbMTcuMDAyMTQ2LCA0NS4yMzM3NzddLCBbMTcuODYxNzgzLCA0NS4wNjc3NF0sIFsxOC41NTMyMTQsIDQ1LjA4MTU5XSwgWzE5LjAwNTQ4NiwgNDQuODYwMjM0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCSUgiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJvc25pYSBhbmQgSGVyemVnb3ZpbmEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzIzLjQ4NDEyOCwgNTMuOTEyNDk4XSwgWzI0LjQ1MDY4NCwgNTMuOTA1NzAyXSwgWzI1LjUzNjM1NCwgNTQuMjgyNDIzXSwgWzI1Ljc2ODQzMywgNTQuODQ2OTYzXSwgWzI2LjU4ODI3OSwgNTUuMTY3MTc2XSwgWzI2LjQ5NDMzMSwgNTUuNjE1MTA3XSwgWzI3LjEwMjQ2LCA1NS43ODMzMTRdLCBbMjguMTc2NzA5LCA1Ni4xNjkxM10sIFsyOS4yMjk1MTMsIDU1LjkxODM0NF0sIFsyOS4zNzE1NzIsIDU1LjY3MDA5MV0sIFsyOS44OTYyOTQsIDU1Ljc4OTQ2M10sIFszMC44NzM5MDksIDU1LjU1MDk3Nl0sIFszMC45NzE4MzYsIDU1LjA4MTU0OF0sIFszMC43NTc1MzQsIDU0LjgxMTc3MV0sIFszMS4zODQ0NzIsIDU0LjE1NzA1Nl0sIFszMS43OTE0MjQsIDUzLjk3NDYzOV0sIFszMS43MzEyNzMsIDUzLjc5NDAyOV0sIFszMi40MDU1OTksIDUzLjYxODA0NV0sIFszMi42OTM2NDMsIDUzLjM1MTQyMV0sIFszMi4zMDQ1MTksIDUzLjEzMjcyNl0sIFszMS40OTc2NDQsIDUzLjE2NzQyN10sIFszMS4zMDUyMDEsIDUzLjA3Mzk5Nl0sIFszMS41NDAwMTgsIDUyLjc0MjA1Ml0sIFszMS43ODU5OTgsIDUyLjEwMTY3OF0sIFszMC45Mjc1NDksIDUyLjA0MjM1M10sIFszMC42MTk0NTQsIDUxLjgyMjgwNl0sIFszMC41NTUxMTcsIDUxLjMxOTUwM10sIFszMC4xNTczNjQsIDUxLjQxNjEzOF0sIFsyOS4yNTQ5MzgsIDUxLjM2ODIzNF0sIFsyOC45OTI4MzUsIDUxLjYwMjA0NF0sIFsyOC42MTc2MTMsIDUxLjQyNzcxNF0sIFsyOC4yNDE2MTUsIDUxLjU3MjIyN10sIFsyNy40NTQwNjYsIDUxLjU5MjMwM10sIFsyNi4zMzc5NTksIDUxLjgzMjI4OV0sIFsyNS4zMjc3ODgsIDUxLjkxMDY1Nl0sIFsyNC41NTMxMDYsIDUxLjg4ODQ2MV0sIFsyNC4wMDUwNzgsIDUxLjYxNzQ0NF0sIFsyMy41MjcwNzEsIDUxLjU3ODQ1NF0sIFsyMy41MDgwMDIsIDUyLjAyMzY0N10sIFsyMy4xOTk0OTQsIDUyLjQ4Njk3N10sIFsyMy43OTkxOTksIDUyLjY5MTA5OV0sIFsyMy44MDQ5MzUsIDUzLjA4OTczMV0sIFsyMy41Mjc1MzYsIDUzLjQ3MDEyMl0sIFsyMy40ODQxMjgsIDUzLjkxMjQ5OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkxSIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCZWxhcnVzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stODkuMTQzMDgsIDE3LjgwODMxOV0sIFstODkuMTUwOTA5LCAxNy45NTU0NjhdLCBbLTg5LjAyOTg1NywgMTguMDAxNTExXSwgWy04OC44NDgzNDQsIDE3Ljg4MzE5OF0sIFstODguNDkwMTIzLCAxOC40ODY4MzFdLCBbLTg4LjMwMDAzMSwgMTguNDk5OTgyXSwgWy04OC4yOTYzMzYsIDE4LjM1MzI3M10sIFstODguMTA2ODEzLCAxOC4zNDg2NzRdLCBbLTg4LjEyMzQ3OSwgMTguMDc2Njc1XSwgWy04OC4yODUzNTUsIDE3LjY0NDE0M10sIFstODguMTk3ODY3LCAxNy40ODk0NzVdLCBbLTg4LjMwMjY0MSwgMTcuMTMxNjk0XSwgWy04OC4yMzk1MTgsIDE3LjAzNjA2Nl0sIFstODguMzU1NDI4LCAxNi41MzA3NzRdLCBbLTg4LjU1MTgyNSwgMTYuMjY1NDY3XSwgWy04OC43MzI0MzQsIDE2LjIzMzYzNV0sIFstODguOTMwNjEzLCAxNS44ODcyNzNdLCBbLTg5LjIyOTEyMiwgMTUuODg2OTM4XSwgWy04OS4xNTA4MDYsIDE3LjAxNTU3N10sIFstODkuMTQzMDgsIDE3LjgwODMxOV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkxaIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCZWxpemUiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02Mi44NDY0NjgsIC0yMi4wMzQ5ODVdLCBbLTYzLjk4NjgzOCwgLTIxLjk5MzY0NF0sIFstNjQuMzc3MDIxLCAtMjIuNzk4MDkxXSwgWy02NC45NjQ4OTIsIC0yMi4wNzU4NjJdLCBbLTY2LjI3MzMzOSwgLTIxLjgzMjMxXSwgWy02Ny4xMDY2NzQsIC0yMi43MzU5MjVdLCBbLTY3LjgyODE4LCAtMjIuODcyOTE5XSwgWy02OC4yMTk5MTMsIC0yMS40OTQzNDddLCBbLTY4Ljc1NzE2NywgLTIwLjM3MjY1OF0sIFstNjguNDQyMjI1LCAtMTkuNDA1MDY4XSwgWy02OC45NjY4MTgsIC0xOC45ODE2ODNdLCBbLTY5LjEwMDI0NywgLTE4LjI2MDEyNV0sIFstNjkuNTkwNDI0LCAtMTcuNTgwMDEyXSwgWy02OC45NTk2MzUsIC0xNi41MDA2OThdLCBbLTY5LjM4OTc2NCwgLTE1LjY2MDEyOV0sIFstNjkuMTYwMzQ3LCAtMTUuMzIzOTc0XSwgWy02OS4zMzk1MzUsIC0xNC45NTMxOTVdLCBbLTY4Ljk0ODg4NywgLTE0LjQ1MzYzOV0sIFstNjguOTI5MjI0LCAtMTMuNjAyNjg0XSwgWy02OC44ODAwOCwgLTEyLjg5OTcyOV0sIFstNjguNjY1MDgsIC0xMi41NjEzXSwgWy02OS41Mjk2NzgsIC0xMC45NTE3MzRdLCBbLTY4Ljc4NjE1OCwgLTExLjAzNjM4XSwgWy02OC4yNzEyNTQsIC0xMS4wMTQ1MjFdLCBbLTY4LjA0ODE5MiwgLTEwLjcxMjA1OV0sIFstNjcuMTczODAxLCAtMTAuMzA2ODEyXSwgWy02Ni42NDY5MDgsIC05LjkzMTMzMV0sIFstNjUuMzM4NDM1LCAtOS43NjE5ODhdLCBbLTY1LjQ0NDgzNywgLTEwLjUxMTQ1MV0sIFstNjUuMzIxODk5LCAtMTAuODk1ODcyXSwgWy02NS40MDIyODEsIC0xMS41NjYyN10sIFstNjQuMzE2MzUzLCAtMTIuNDYxOTc4XSwgWy02My4xOTY0OTksIC0xMi42MjcwMzNdLCBbLTYyLjgwMzA2LCAtMTMuMDAwNjUzXSwgWy02Mi4xMjcwODEsIC0xMy4xOTg3ODFdLCBbLTYxLjcxMzIwNCwgLTEzLjQ4OTIwMl0sIFstNjEuMDg0MTIxLCAtMTMuNDc5Mzg0XSwgWy02MC41MDMzMDQsIC0xMy43NzU5NTVdLCBbLTYwLjQ1OTE5OCwgLTE0LjM1NDAwN10sIFstNjAuMjY0MzI2LCAtMTQuNjQ1OTc5XSwgWy02MC4yNTExNDksIC0xNS4wNzcyMTldLCBbLTYwLjU0Mjk2NiwgLTE1LjA5MzkxXSwgWy02MC4xNTgzOSwgLTE2LjI1ODI4NF0sIFstNTguMjQxMjIsIC0xNi4yOTk1NzNdLCBbLTU4LjM4ODA1OCwgLTE2Ljg3NzEwOV0sIFstNTguMjgwODA0LCAtMTcuMjcxNzFdLCBbLTU3LjczNDU1OCwgLTE3LjU1MjQ2OF0sIFstNTcuNDk4MzcxLCAtMTguMTc0MTg4XSwgWy01Ny42NzYwMDksIC0xOC45NjE4NF0sIFstNTcuOTQ5OTk3LCAtMTkuNDAwMDA0XSwgWy01Ny44NTM4MDIsIC0xOS45Njk5OTVdLCBbLTU4LjE2NjM5MiwgLTIwLjE3NjcwMV0sIFstNTguMTgzNDcxLCAtMTkuODY4Mzk5XSwgWy01OS4xMTUwNDIsIC0xOS4zNTY5MDZdLCBbLTYwLjA0MzU2NSwgLTE5LjM0Mjc0N10sIFstNjEuNzg2MzI2LCAtMTkuNjMzNzM3XSwgWy02Mi4yNjU5NjEsIC0yMC41MTM3MzVdLCBbLTYyLjI5MTE3OSwgLTIxLjA1MTYzNV0sIFstNjIuNjg1MDU3LCAtMjIuMjQ5MDI5XSwgWy02Mi44NDY0NjgsIC0yMi4wMzQ5ODVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkJPTCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQm9saXZpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTU3LjYyNTEzMywgLTMwLjIxNjI5NV0sIFstNTYuMjkwOSwgLTI4Ljg1Mjc2MV0sIFstNTUuMTYyMjg2LCAtMjcuODgxOTE1XSwgWy01NC40OTA3MjUsIC0yNy40NzQ3NTddLCBbLTUzLjY0ODczNSwgLTI2LjkyMzQ3M10sIFstNTMuNjI4MzQ5LCAtMjYuMTI0ODY1XSwgWy01NC4xMzAwNSwgLTI1LjU0NzYzOV0sIFstNTQuNjI1MjkxLCAtMjUuNzM5MjU1XSwgWy01NC40Mjg5NDYsIC0yNS4xNjIxODVdLCBbLTU0LjI5MzQ3NiwgLTI0LjU3MDhdLCBbLTU0LjI5Mjk2LCAtMjQuMDIxMDE0XSwgWy01NC42NTI4MzQsIC0yMy44Mzk1NzhdLCBbLTU1LjAyNzkwMiwgLTI0LjAwMTI3NF0sIFstNTUuNDAwNzQ3LCAtMjMuOTU2OTM1XSwgWy01NS41MTc2MzksIC0yMy41NzE5OThdLCBbLTU1LjYxMDY4MywgLTIyLjY1NTYxOV0sIFstNTUuNzk3OTU4LCAtMjIuMzU2OTNdLCBbLTU2LjQ3MzMxNywgLTIyLjA4NjNdLCBbLTU2Ljg4MTUxLCAtMjIuMjgyMTU0XSwgWy01Ny45MzcxNTYsIC0yMi4wOTAxNzZdLCBbLTU3Ljg3MDY3NCwgLTIwLjczMjY4OF0sIFstNTguMTY2MzkyLCAtMjAuMTc2NzAxXSwgWy01Ny44NTM4MDIsIC0xOS45Njk5OTVdLCBbLTU3Ljk0OTk5NywgLTE5LjQwMDAwNF0sIFstNTcuNjc2MDA5LCAtMTguOTYxODRdLCBbLTU3LjQ5ODM3MSwgLTE4LjE3NDE4OF0sIFstNTcuNzM0NTU4LCAtMTcuNTUyNDY4XSwgWy01OC4yODA4MDQsIC0xNy4yNzE3MV0sIFstNTguMzg4MDU4LCAtMTYuODc3MTA5XSwgWy01OC4yNDEyMiwgLTE2LjI5OTU3M10sIFstNjAuMTU4MzksIC0xNi4yNTgyODRdLCBbLTYwLjU0Mjk2NiwgLTE1LjA5MzkxXSwgWy02MC4yNTExNDksIC0xNS4wNzcyMTldLCBbLTYwLjI2NDMyNiwgLTE0LjY0NTk3OV0sIFstNjAuNDU5MTk4LCAtMTQuMzU0MDA3XSwgWy02MC41MDMzMDQsIC0xMy43NzU5NTVdLCBbLTYxLjA4NDEyMSwgLTEzLjQ3OTM4NF0sIFstNjEuNzEzMjA0LCAtMTMuNDg5MjAyXSwgWy02Mi4xMjcwODEsIC0xMy4xOTg3ODFdLCBbLTYyLjgwMzA2LCAtMTMuMDAwNjUzXSwgWy02My4xOTY0OTksIC0xMi42MjcwMzNdLCBbLTY0LjMxNjM1MywgLTEyLjQ2MTk3OF0sIFstNjUuNDAyMjgxLCAtMTEuNTY2MjddLCBbLTY1LjMyMTg5OSwgLTEwLjg5NTg3Ml0sIFstNjUuNDQ0ODM3LCAtMTAuNTExNDUxXSwgWy02NS4zMzg0MzUsIC05Ljc2MTk4OF0sIFstNjYuNjQ2OTA4LCAtOS45MzEzMzFdLCBbLTY3LjE3MzgwMSwgLTEwLjMwNjgxMl0sIFstNjguMDQ4MTkyLCAtMTAuNzEyMDU5XSwgWy02OC4yNzEyNTQsIC0xMS4wMTQ1MjFdLCBbLTY4Ljc4NjE1OCwgLTExLjAzNjM4XSwgWy02OS41Mjk2NzgsIC0xMC45NTE3MzRdLCBbLTcwLjA5Mzc1MiwgLTExLjEyMzk3Ml0sIFstNzAuNTQ4Njg2LCAtMTEuMDA5MTQ3XSwgWy03MC40ODE4OTQsIC05LjQ5MDExOF0sIFstNzEuMzAyNDEyLCAtMTAuMDc5NDM2XSwgWy03Mi4xODQ4OTEsIC0xMC4wNTM1OThdLCBbLTcyLjU2MzAzMywgLTkuNTIwMTk0XSwgWy03My4yMjY3MTMsIC05LjQ2MjIxM10sIFstNzMuMDE1MzgzLCAtOS4wMzI4MzNdLCBbLTczLjU3MTA1OSwgLTguNDI0NDQ3XSwgWy03My45ODcyMzUsIC03LjUyMzgzXSwgWy03My43MjM0MDEsIC03LjM0MDk5OV0sIFstNzMuNzI0NDg3LCAtNi45MTg1OTVdLCBbLTczLjEyMDAyNywgLTYuNjI5OTMxXSwgWy03My4yMTk3MTEsIC02LjA4OTE4OV0sIFstNzIuOTY0NTA3LCAtNS43NDEyNTFdLCBbLTcyLjg5MTkyOCwgLTUuMjc0NTYxXSwgWy03MS43NDg0MDYsIC00LjU5Mzk4M10sIFstNzAuOTI4ODQzLCAtNC40MDE1OTFdLCBbLTcwLjc5NDc2OSwgLTQuMjUxMjY1XSwgWy02OS44OTM2MzUsIC00LjI5ODE4N10sIFstNjkuNDQ0MTAyLCAtMS41NTYyODddLCBbLTY5LjQyMDQ4NiwgLTEuMTIyNjE5XSwgWy02OS41NzcwNjUsIC0wLjU0OTk5Ml0sIFstNzAuMDIwNjU2LCAtMC4xODUxNTZdLCBbLTcwLjAxNTU2NiwgMC41NDE0MTRdLCBbLTY5LjQ1MjM5NiwgMC43MDYxNTldLCBbLTY5LjI1MjQzNCwgMC42MDI2NTFdLCBbLTY5LjIxODYzOCwgMC45ODU2NzddLCBbLTY5LjgwNDU5NywgMS4wODkwODFdLCBbLTY5LjgxNjk3MywgMS43MTQ4MDVdLCBbLTY3Ljg2ODU2NSwgMS42OTI0NTVdLCBbLTY3LjUzNzgxLCAyLjAzNzE2M10sIFstNjcuMjU5OTk4LCAxLjcxOTk5OV0sIFstNjcuMDY1MDQ4LCAxLjEzMDExMl0sIFstNjYuODc2MzI2LCAxLjI1MzM2MV0sIFstNjYuMzI1NzY1LCAwLjcyNDQ1Ml0sIFstNjUuNTQ4MjY3LCAwLjc4OTI1NF0sIFstNjUuMzU0NzEzLCAxLjA5NTI4Ml0sIFstNjQuNjExMDEyLCAxLjMyODczMV0sIFstNjQuMTk5MzA2LCAxLjQ5Mjg1NV0sIFstNjQuMDgzMDg1LCAxLjkxNjM2OV0sIFstNjMuMzY4Nzg4LCAyLjIwMDldLCBbLTYzLjQyMjg2NywgMi40MTEwNjhdLCBbLTY0LjI2OTk5OSwgMi40OTcwMDZdLCBbLTY0LjQwODgyOCwgMy4xMjY3ODZdLCBbLTY0LjM2ODQ5NCwgMy43OTcyMV0sIFstNjQuODE2MDY0LCA0LjA1NjQ0NV0sIFstNjQuNjI4NjU5LCA0LjE0ODQ4MV0sIFstNjMuODg4MzQzLCA0LjAyMDUzXSwgWy02My4wOTMxOTgsIDMuNzcwNTcxXSwgWy02Mi44MDQ1MzMsIDQuMDA2OTY1XSwgWy02Mi4wODU0MywgNC4xNjIxMjRdLCBbLTYwLjk2Njg5MywgNC41MzY0NjhdLCBbLTYwLjYwMTE3OSwgNC45MTgwOThdLCBbLTYwLjczMzU3NCwgNS4yMDAyNzddLCBbLTYwLjIxMzY4MywgNS4yNDQ0ODZdLCBbLTU5Ljk4MDk1OSwgNS4wMTQwNjFdLCBbLTYwLjExMTAwMiwgNC41NzQ5NjddLCBbLTU5Ljc2NzQwNiwgNC40MjM1MDNdLCBbLTU5LjUzODA0LCAzLjk1ODgwM10sIFstNTkuODE1NDEzLCAzLjYwNjQ5OV0sIFstNTkuOTc0NTI1LCAyLjc1NTIzM10sIFstNTkuNzE4NTQ2LCAyLjI0OTYzXSwgWy01OS42NDYwNDQsIDEuNzg2ODk0XSwgWy01OS4wMzA4NjIsIDEuMzE3Njk4XSwgWy01OC41NDAwMTMsIDEuMjY4MDg4XSwgWy01OC40Mjk0NzcsIDEuNDYzOTQyXSwgWy01OC4xMTM0NSwgMS41MDcxOTVdLCBbLTU3LjY2MDk3MSwgMS42ODI1ODVdLCBbLTU3LjMzNTgyMywgMS45NDg1MzhdLCBbLTU2Ljc4MjcwNCwgMS44NjM3MTFdLCBbLTU2LjUzOTM4NiwgMS44OTk1MjNdLCBbLTU1Ljk5NTY5OCwgMS44MTc2NjddLCBbLTU1LjkwNTYsIDIuMDIxOTk2XSwgWy01Ni4wNzMzNDIsIDIuMjIwNzk1XSwgWy01NS45NzMzMjIsIDIuNTEwMzY0XSwgWy01NS41Njk3NTUsIDIuNDIxNTA2XSwgWy01NS4wOTc1ODcsIDIuNTIzNzQ4XSwgWy01NC41MjQ3NTQsIDIuMzExODQ5XSwgWy01NC4wODgwNjMsIDIuMTA1NTU3XSwgWy01My43Nzg1MjEsIDIuMzc2NzAzXSwgWy01My41NTQ4MzksIDIuMzM0ODk3XSwgWy01My40MTg0NjUsIDIuMDUzMzg5XSwgWy01Mi45Mzk2NTcsIDIuMTI0ODU4XSwgWy01Mi41NTY0MjUsIDIuNTA0NzA1XSwgWy01Mi4yNDkzMzgsIDMuMjQxMDk0XSwgWy01MS42NTc3OTcsIDQuMTU2MjMyXSwgWy01MS4zMTcxNDYsIDQuMjAzNDkxXSwgWy01MS4wNjk3NzEsIDMuNjUwMzk4XSwgWy01MC41MDg4NzUsIDEuOTAxNTY0XSwgWy00OS45NzQwNzYsIDEuNzM2NDgzXSwgWy00OS45NDcxMDEsIDEuMDQ2MTldLCBbLTUwLjY5OTI1MSwgMC4yMjI5ODRdLCBbLTUwLjM4ODIxMSwgLTAuMDc4NDQ1XSwgWy00OC42MjA1NjcsIC0wLjIzNTQ4OV0sIFstNDguNTg0NDk3LCAtMS4yMzc4MDVdLCBbLTQ3LjgyNDk1NiwgLTAuNTgxNjE4XSwgWy00Ni41NjY1ODQsIC0wLjk0MTAyOF0sIFstNDQuOTA1NzAzLCAtMS41NTE3NF0sIFstNDQuNDE3NjE5LCAtMi4xMzc3NV0sIFstNDQuNTgxNTg5LCAtMi42OTEzMDhdLCBbLTQzLjQxODc5MSwgLTIuMzgzMTFdLCBbLTQxLjQ3MjY1NywgLTIuOTEyMDE4XSwgWy0zOS45Nzg2NjUsIC0yLjg3MzA1NF0sIFstMzguNTAwMzgzLCAtMy43MDA2NTJdLCBbLTM3LjIyMzI1MiwgLTQuODIwOTQ2XSwgWy0zNi40NTI5MzcsIC01LjEwOTQwNF0sIFstMzUuNTk3Nzk2LCAtNS4xNDk1MDRdLCBbLTM1LjIzNTM4OSwgLTUuNDY0OTM3XSwgWy0zNC44OTYwMywgLTYuNzM4MTkzXSwgWy0zNC43Mjk5OTMsIC03LjM0MzIyMV0sIFstMzUuMTI4MjEyLCAtOC45OTY0MDFdLCBbLTM1LjYzNjk2NywgLTkuNjQ5MjgyXSwgWy0zNy4wNDY1MTksIC0xMS4wNDA3MjFdLCBbLTM3LjY4MzYxMiwgLTEyLjE3MTE5NV0sIFstMzguNDIzODc3LCAtMTMuMDM4MTE5XSwgWy0zOC42NzM4ODcsIC0xMy4wNTc2NTJdLCBbLTM4Ljk1MzI3NiwgLTEzLjc5MzM3XSwgWy0zOC44ODIyOTgsIC0xNS42NjcwNTRdLCBbLTM5LjE2MTA5MiwgLTE3LjIwODQwN10sIFstMzkuMjY3MzM5LCAtMTcuODY3NzQ2XSwgWy0zOS41ODM1MjEsIC0xOC4yNjIyOTZdLCBbLTM5Ljc2MDgyMywgLTE5LjU5OTExM10sIFstNDAuNzc0NzQxLCAtMjAuOTA0NTEyXSwgWy00MC45NDQ3NTYsIC0yMS45MzczMTddLCBbLTQxLjc1NDE2NCwgLTIyLjM3MDY3Nl0sIFstNDEuOTg4Mjg0LCAtMjIuOTcwMDddLCBbLTQzLjA3NDcwNCwgLTIyLjk2NzY5M10sIFstNDQuNjQ3ODEyLCAtMjMuMzUxOTU5XSwgWy00NS4zNTIxMzYsIC0yMy43OTY4NDJdLCBbLTQ2LjQ3MjA5MywgLTI0LjA4ODk2OV0sIFstNDcuNjQ4OTcyLCAtMjQuODg1MTk5XSwgWy00OC40OTU0NTgsIC0yNS44NzcwMjVdLCBbLTQ4LjY0MTAwNSwgLTI2LjYyMzY5OF0sIFstNDguNDc0NzM2LCAtMjcuMTc1OTEyXSwgWy00OC42NjE1MiwgLTI4LjE4NjEzNV0sIFstNDguODg4NDU3LCAtMjguNjc0MTE1XSwgWy00OS41ODczMjksIC0yOS4yMjQ0NjldLCBbLTUwLjY5Njg3NCwgLTMwLjk4NDQ2NV0sIFstNTEuNTc2MjI2LCAtMzEuNzc3Njk4XSwgWy01Mi4yNTYwODEsIC0zMi4yNDUzN10sIFstNTIuNzEyMSwgLTMzLjE5NjU3OF0sIFstNTMuMzczNjYyLCAtMzMuNzY4Mzc4XSwgWy01My42NTA1NDQsIC0zMy4yMDIwMDRdLCBbLTUzLjIwOTU4OSwgLTMyLjcyNzY2Nl0sIFstNTMuNzg3OTUyLCAtMzIuMDQ3MjQzXSwgWy01NC41NzI0NTIsIC0zMS40OTQ1MTFdLCBbLTU1LjYwMTUxLCAtMzAuODUzODc5XSwgWy01NS45NzMyNDUsIC0zMC44ODMwNzZdLCBbLTU2Ljk3NjAyNiwgLTMwLjEwOTY4Nl0sIFstNTcuNjI1MTMzLCAtMzAuMjE2Mjk1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCUkEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJyYXppbCIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTE0LjIwNDAxNywgNC41MjU4NzRdLCBbMTE0LjU5OTk2MSwgNC45MDAwMTFdLCBbMTE1LjQ1MDcxLCA1LjQ0NzczXSwgWzExNS40MDU3LCA0Ljk1NTIyOF0sIFsxMTUuMzQ3NDYxLCA0LjMxNjYzNl0sIFsxMTQuODY5NTU3LCA0LjM0ODMxNF0sIFsxMTQuNjU5NTk2LCA0LjAwNzYzN10sIFsxMTQuMjA0MDE3LCA0LjUyNTg3NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQlJOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCcnVuZWkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkxLjY5NjY1NywgMjcuNzcxNzQyXSwgWzkyLjEwMzcxMiwgMjcuNDUyNjE0XSwgWzkyLjAzMzQ4NCwgMjYuODM4MzFdLCBbOTEuMjE3NTEzLCAyNi44MDg2NDhdLCBbOTAuMzczMjc1LCAyNi44NzU3MjRdLCBbODkuNzQ0NTI4LCAyNi43MTk0MDNdLCBbODguODM1NjQzLCAyNy4wOTg5NjZdLCBbODguODE0MjQ4LCAyNy4yOTkzMTZdLCBbODkuNDc1ODEsIDI4LjA0Mjc1OV0sIFs5MC4wMTU4MjksIDI4LjI5NjQzOV0sIFs5MC43MzA1MTQsIDI4LjA2NDk1NF0sIFs5MS4yNTg4NTQsIDI4LjA0MDYxNF0sIFs5MS42OTY2NTcsIDI3Ljc3MTc0Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQlROIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCaHV0YW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzI1LjY0OTE2MywgLTE4LjUzNjAyNl0sIFsyNS44NTAzOTEsIC0xOC43MTQ0MTNdLCBbMjYuMTY0NzkxLCAtMTkuMjkzMDg2XSwgWzI3LjI5NjUwNSwgLTIwLjM5MTUyXSwgWzI3LjcyNDc0NywgLTIwLjQ5OTA1OV0sIFsyNy43MjcyMjgsIC0yMC44NTE4MDJdLCBbMjguMDIxMzcsIC0yMS40ODU5NzVdLCBbMjguNzk0NjU2LCAtMjEuNjM5NDU0XSwgWzI5LjQzMjE4OCwgLTIyLjA5MTMxM10sIFsyOC4wMTcyMzYsIC0yMi44Mjc3NTRdLCBbMjcuMTE5NDEsIC0yMy41NzQzMjNdLCBbMjYuNzg2NDA3LCAtMjQuMjQwNjkxXSwgWzI2LjQ4NTc1MywgLTI0LjYxNjMyN10sIFsyNS45NDE2NTIsIC0yNC42OTYzNzNdLCBbMjUuNzY1ODQ5LCAtMjUuMTc0ODQ1XSwgWzI1LjY2NDY2NiwgLTI1LjQ4NjgxNl0sIFsyNS4wMjUxNzEsIC0yNS43MTk2N10sIFsyNC4yMTEyNjcsIC0yNS42NzAyMTZdLCBbMjMuNzMzNTcsIC0yNS4zOTAxMjldLCBbMjMuMzEyMDk3LCAtMjUuMjY4NjldLCBbMjIuODI0MjcxLCAtMjUuNTAwNDU5XSwgWzIyLjU3OTUzMiwgLTI1Ljk3OTQ0OF0sIFsyMi4xMDU5NjksIC0yNi4yODAyNTZdLCBbMjEuNjA1ODk2LCAtMjYuNzI2NTM0XSwgWzIwLjg4OTYwOSwgLTI2LjgyODU0M10sIFsyMC42NjY0NywgLTI2LjQ3NzQ1M10sIFsyMC43NTg2MDksIC0yNS44NjgxMzZdLCBbMjAuMTY1NzI2LCAtMjQuOTE3OTYyXSwgWzE5Ljg5NTc2OCwgLTI0Ljc2Nzc5XSwgWzE5Ljg5NTQ1OCwgLTIxLjg0OTE1N10sIFsyMC44ODExMzQsIC0yMS44MTQzMjddLCBbMjAuOTEwNjQxLCAtMTguMjUyMjE5XSwgWzIxLjY1NTA0LCAtMTguMjE5MTQ2XSwgWzIzLjE5Njg1OCwgLTE3Ljg2OTAzOF0sIFsyMy41NzkwMDYsIC0xOC4yODEyNjFdLCBbMjQuMjE3MzY1LCAtMTcuODg5MzQ3XSwgWzI0LjUyMDcwNSwgLTE3Ljg4NzEyNV0sIFsyNS4wODQ0NDMsIC0xNy42NjE4MTZdLCBbMjUuMjY0MjI2LCAtMTcuNzM2NTRdLCBbMjUuNjQ5MTYzLCAtMTguNTM2MDI2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCV0EiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJvdHN3YW5hIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxNS4yNzk0NiwgNy40MjE5MjVdLCBbMTYuMTA2MjMyLCA3LjQ5NzA4OF0sIFsxNi4yOTA1NjIsIDcuNzU0MzA3XSwgWzE2LjQ1NjE4NSwgNy43MzQ3NzRdLCBbMTYuNzA1OTg4LCA3LjUwODMyOF0sIFsxNy45NjQ5MywgNy44OTA5MTRdLCBbMTguMzg5NTU1LCA4LjI4MTMwNF0sIFsxOC45MTEwMjIsIDguNjMwODk1XSwgWzE4LjgxMjAxLCA4Ljk4MjkxNV0sIFsxOS4wOTQwMDgsIDkuMDc0ODQ3XSwgWzIwLjA1OTY4NSwgOS4wMTI3MDZdLCBbMjEuMDAwODY4LCA5LjQ3NTk4NV0sIFsyMS43MjM4MjIsIDEwLjU2NzA1Nl0sIFsyMi4yMzExMjksIDEwLjk3MTg4OV0sIFsyMi44NjQxNjUsIDExLjE0MjM5NV0sIFsyMi45Nzc1NDQsIDEwLjcxNDQ2M10sIFsyMy41NTQzMDQsIDEwLjA4OTI1NV0sIFsyMy41NTcyNSwgOS42ODEyMThdLCBbMjMuMzk0Nzc5LCA5LjI2NTA2OF0sIFsyMy40NTkwMTMsIDguOTU0Mjg2XSwgWzIzLjgwNTgxMywgOC42NjYzMTldLCBbMjQuNTY3MzY5LCA4LjIyOTE4OF0sIFsyNS4xMTQ5MzIsIDcuODI1MTA0XSwgWzI1LjEyNDEzMSwgNy41MDAwODVdLCBbMjUuNzk2NjQ4LCA2Ljk3OTMxNl0sIFsyNi4yMTM0MTgsIDYuNTQ2NjAzXSwgWzI2LjQ2NTkwOSwgNS45NDY3MTddLCBbMjcuMjEzNDA5LCA1LjU1MDk1M10sIFsyNy4zNzQyMjYsIDUuMjMzOTQ0XSwgWzI3LjA0NDA2NSwgNS4xMjc4NTNdLCBbMjYuNDAyNzYxLCA1LjE1MDg3NV0sIFsyNS42NTA0NTUsIDUuMjU2MDg4XSwgWzI1LjI3ODc5OCwgNS4xNzA0MDhdLCBbMjUuMTI4ODMzLCA0LjkyNzI0NV0sIFsyNC44MDUwMjksIDQuODk3MjQ3XSwgWzI0LjQxMDUzMSwgNS4xMDg3ODRdLCBbMjMuMjk3MjE0LCA0LjYwOTY5M10sIFsyMi44NDE0OCwgNC43MTAxMjZdLCBbMjIuNzA0MTI0LCA0LjYzMzA1MV0sIFsyMi40MDUxMjQsIDQuMDI5MTZdLCBbMjEuNjU5MTIzLCA0LjIyNDM0Ml0sIFsyMC45Mjc1OTEsIDQuMzIyNzg2XSwgWzIwLjI5MDY3OSwgNC42OTE2NzhdLCBbMTkuNDY3Nzg0LCA1LjAzMTUyOF0sIFsxOC45MzIzMTIsIDQuNzA5NTA2XSwgWzE4LjU0Mjk4MiwgNC4yMDE3ODVdLCBbMTguNDUzMDY1LCAzLjUwNDM4Nl0sIFsxNy44MDk5LCAzLjU2MDE5Nl0sIFsxNy4xMzMwNDIsIDMuNzI4MTk3XSwgWzE2LjUzNzA1OCwgMy4xOTgyNTVdLCBbMTYuMDEyODUyLCAyLjI2NzY0XSwgWzE1LjkwNzM4MSwgMi41NTczODldLCBbMTUuODYyNzMyLCAzLjAxMzUzN10sIFsxNS40MDUzOTYsIDMuMzM1MzAxXSwgWzE1LjAzNjIyLCAzLjg1MTM2N10sIFsxNC45NTA5NTMsIDQuMjEwMzg5XSwgWzE0LjQ3ODM3MiwgNC43MzI2MDVdLCBbMTQuNTU4OTM2LCA1LjAzMDU5OF0sIFsxNC40NTk0MDcsIDUuNDUxNzYxXSwgWzE0LjUzNjU2LCA2LjIyNjk1OV0sIFsxNC43NzY1NDUsIDYuNDA4NDk4XSwgWzE1LjI3OTQ2LCA3LjQyMTkyNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ0FGIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1stNjMuNjY0NSwgNDYuNTUwMDFdLCBbLTYyLjkzOTMsIDQ2LjQxNTg3XSwgWy02Mi4wMTIwOCwgNDYuNDQzMTRdLCBbLTYyLjUwMzkxLCA0Ni4wMzMzOV0sIFstNjIuODc0MzMsIDQ1Ljk2ODE4XSwgWy02NC4xNDI4LCA0Ni4zOTI2NV0sIFstNjQuMzkyNjEsIDQ2LjcyNzQ3XSwgWy02NC4wMTQ4NiwgNDcuMDM2MDFdLCBbLTYzLjY2NDUsIDQ2LjU1MDAxXV1dLCBbW1stNjEuODA2MzA1LCA0OS4xMDUwNl0sIFstNjIuMjkzMTgsIDQ5LjA4NzE3XSwgWy02My41ODkyNiwgNDkuNDAwNjldLCBbLTY0LjUxOTEyLCA0OS44NzMwNF0sIFstNjQuMTczMjIsIDQ5Ljk1NzE4XSwgWy02Mi44NTgyOSwgNDkuNzA2NDFdLCBbLTYxLjgzNTU4NSwgNDkuMjg4NTVdLCBbLTYxLjgwNjMwNSwgNDkuMTA1MDZdXV0sIFtbWy0xMjMuNTEwMDAyLCA0OC41MTAwMTFdLCBbLTEyNC4wMTI4OTEsIDQ4LjM3MDg0Nl0sIFstMTI1LjY1NTAxMywgNDguODI1MDA1XSwgWy0xMjUuOTU0OTk0LCA0OS4xNzk5OTZdLCBbLTEyNi44NTAwMDQsIDQ5LjUzXSwgWy0xMjcuMDI5OTkzLCA0OS44MTQ5OTZdLCBbLTEyOC4wNTkzMzYsIDQ5Ljk5NDk1OV0sIFstMTI4LjQ0NDU4NCwgNTAuNTM5MTM4XSwgWy0xMjguMzU4NDE0LCA1MC43NzA2NDhdLCBbLTEyNy4zMDg1ODEsIDUwLjU1MjU3NF0sIFstMTI2LjY5NTAwMSwgNTAuNDAwOTAzXSwgWy0xMjUuNzU1MDA3LCA1MC4yOTUwMThdLCBbLTEyNS40MTUwMDIsIDQ5Ljk1MDAwMV0sIFstMTI0LjkyMDc2OCwgNDkuNDc1Mjc1XSwgWy0xMjMuOTIyNTA5LCA0OS4wNjI0ODRdLCBbLTEyMy41MTAwMDIsIDQ4LjUxMDAxMV1dXSwgW1tbLTU2LjEzNDAzNiwgNTAuNjg3MDFdLCBbLTU2Ljc5NTg4MiwgNDkuODEyMzA5XSwgWy01Ni4xNDMxMDUsIDUwLjE1MDExN10sIFstNTUuNDcxNDkyLCA0OS45MzU4MTVdLCBbLTU1LjgyMjQwMSwgNDkuNTg3MTI5XSwgWy01NC45MzUxNDMsIDQ5LjMxMzAxMV0sIFstNTQuNDczNzc1LCA0OS41NTY2OTFdLCBbLTUzLjQ3NjU0OSwgNDkuMjQ5MTM5XSwgWy01My43ODYwMTQsIDQ4LjUxNjc4MV0sIFstNTMuMDg2MTM0LCA0OC42ODc4MDRdLCBbLTUyLjk1ODY0OCwgNDguMTU3MTY0XSwgWy01Mi42NDgwOTksIDQ3LjUzNTU0OF0sIFstNTMuMDY5MTU4LCA0Ni42NTU0OTldLCBbLTUzLjUyMTQ1NiwgNDYuNjE4MjkyXSwgWy01NC4xNzg5MzYsIDQ2LjgwNzA2Nl0sIFstNTMuOTYxODY5LCA0Ny42MjUyMDddLCBbLTU0LjI0MDQ4MiwgNDcuNzUyMjc5XSwgWy01NS40MDA3NzMsIDQ2Ljg4NDk5NF0sIFstNTUuOTk3NDgxLCA0Ni45MTk3Ml0sIFstNTUuMjkxMjE5LCA0Ny4zODk1NjJdLCBbLTU2LjI1MDc5OSwgNDcuNjMyNTQ1XSwgWy01Ny4zMjUyMjksIDQ3LjU3MjgwN10sIFstNTkuMjY2MDE1LCA0Ny42MDMzNDhdLCBbLTU5LjQxOTQ5NCwgNDcuODk5NDU0XSwgWy01OC43OTY1ODYsIDQ4LjI1MTUyNV0sIFstNTkuMjMxNjI1LCA0OC41MjMxODhdLCBbLTU4LjM5MTgwNSwgNDkuMTI1NTgxXSwgWy01Ny4zNTg2OSwgNTAuNzE4Mjc0XSwgWy01Ni43Mzg2NSwgNTEuMjg3NDM4XSwgWy01NS44NzA5NzcsIDUxLjYzMjA5NF0sIFstNTUuNDA2OTc0LCA1MS41ODgyNzNdLCBbLTU1LjYwMDIxOCwgNTEuMzE3MDc1XSwgWy01Ni4xMzQwMzYsIDUwLjY4NzAxXV1dLCBbW1stMTMyLjcxMDAwOCwgNTQuMDQwMDA5XSwgWy0xMzIuNzEwMDA5LCA1NC4wNDAwMDldLCBbLTEzMi43MTAwMDgsIDU0LjA0MDAwOV0sIFstMTMyLjcxMDAwOCwgNTQuMDQwMDA5XSwgWy0xMzEuNzQ5OTksIDU0LjEyMDAwNF0sIFstMTMyLjA0OTQ4LCA1Mi45ODQ2MjFdLCBbLTEzMS4xNzkwNDMsIDUyLjE4MDQzM10sIFstMTMxLjU3NzgzLCA1Mi4xODIzNzFdLCBbLTEzMi4xODA0MjgsIDUyLjYzOTcwN10sIFstMTMyLjU0OTk5MiwgNTMuMTAwMDE1XSwgWy0xMzMuMDU0NjExLCA1My40MTE0NjldLCBbLTEzMy4yMzk2NjQsIDUzLjg1MTA4XSwgWy0xMzMuMTgwMDA0LCA1NC4xNjk5NzVdLCBbLTEzMi43MTAwMDgsIDU0LjA0MDAwOV1dXSwgW1tbLTc5LjI2NTgyLCA2Mi4xNTg2NzVdLCBbLTc5LjY1NzUyLCA2MS42MzMwOF0sIFstODAuMDk5NTYsIDYxLjcxODFdLCBbLTgwLjM2MjE1LCA2Mi4wMTY0OV0sIFstODAuMzE1Mzk1LCA2Mi4wODU1NjVdLCBbLTc5LjkyOTM5LCA2Mi4zODU2XSwgWy03OS41MjAwMiwgNjIuMzYzNzFdLCBbLTc5LjI2NTgyLCA2Mi4xNTg2NzVdXV0sIFtbWy04MS44OTgyNSwgNjIuNzEwOF0sIFstODMuMDY4NTcsIDYyLjE1OTIyXSwgWy04My43NzQ2MiwgNjIuMTgyMzFdLCBbLTgzLjk5MzY3LCA2Mi40NTI4XSwgWy04My4yNTA0OCwgNjIuOTE0MDldLCBbLTgxLjg3Njk5LCA2Mi45MDQ1OF0sIFstODEuODk4MjUsIDYyLjcxMDhdXV0sIFtbWy04NS4xNjEzMDgsIDY1LjY1NzI4NV0sIFstODQuOTc1NzY0LCA2NS4yMTc1MThdLCBbLTg0LjQ2NDAxMiwgNjUuMzcxNzcyXSwgWy04My44ODI2MjYsIDY1LjEwOTYxOF0sIFstODIuNzg3NTc3LCA2NC43NjY2OTNdLCBbLTgxLjY0MjAxNCwgNjQuNDU1MTM2XSwgWy04MS41NTM0NCwgNjMuOTc5NjA5XSwgWy04MC44MTczNjEsIDY0LjA1NzQ4Nl0sIFstODAuMTAzNDUxLCA2My43MjU5ODFdLCBbLTgwLjk5MTAyLCA2My40MTEyNDZdLCBbLTgyLjU0NzE3OCwgNjMuNjUxNzIyXSwgWy04My4xMDg3OTgsIDY0LjEwMTg3Nl0sIFstODQuMTAwNDE3LCA2My41Njk3MTJdLCBbLTg1LjUyMzQwNSwgNjMuMDUyMzc5XSwgWy04NS44NjY3NjksIDYzLjYzNzI1M10sIFstODcuMjIxOTgzLCA2My41NDEyMzhdLCBbLTg2LjM1Mjc2LCA2NC4wMzU4MzNdLCBbLTg2LjIyNDg4NiwgNjQuODIyOTE3XSwgWy04NS44ODM4NDgsIDY1LjczODc3OF0sIFstODUuMTYxMzA4LCA2NS42NTcyODVdXV0sIFtbWy03NS44NjU4OCwgNjcuMTQ4ODZdLCBbLTc2Ljk4Njg3LCA2Ny4wOTg3M10sIFstNzcuMjM2NCwgNjcuNTg4MDldLCBbLTc2LjgxMTY2LCA2OC4xNDg1Nl0sIFstNzUuODk1MjEsIDY4LjI4NzIxXSwgWy03NS4xMTQ1LCA2OC4wMTAzNl0sIFstNzUuMTAzMzMsIDY3LjU4MjAyXSwgWy03NS4yMTU5NywgNjcuNDQ0MjVdLCBbLTc1Ljg2NTg4LCA2Ny4xNDg4Nl1dXSwgW1tbLTk1LjY0NzY4MSwgNjkuMTA3NjldLCBbLTk2LjI2OTUyMSwgNjguNzU3MDRdLCBbLTk3LjYxNzQwMSwgNjkuMDYwMDNdLCBbLTk4LjQzMTgwMSwgNjguOTUwN10sIFstOTkuNzk3NDAxLCA2OS40MDAwM10sIFstOTguOTE3NDAxLCA2OS43MTAwM10sIFstOTguMjE4MjYxLCA3MC4xNDM1NF0sIFstOTcuMTU3NDAxLCA2OS44NjAwM10sIFstOTYuNTU3NDAxLCA2OS42ODAwM10sIFstOTYuMjU3NDAxLCA2OS40OTAwM10sIFstOTUuNjQ3NjgxLCA2OS4xMDc2OV1dXSwgW1tbLTkwLjU0NzEsIDY5LjQ5NzY2XSwgWy05MC41NTE1MSwgNjguNDc0OTldLCBbLTg5LjIxNTE1LCA2OS4yNTg3M10sIFstODguMDE5NjYsIDY4LjYxNTA4XSwgWy04OC4zMTc0OSwgNjcuODczMzhdLCBbLTg3LjM1MDE3LCA2Ny4xOTg3Ml0sIFstODYuMzA2MDcsIDY3LjkyMTQ2XSwgWy04NS41NzY2NCwgNjguNzg0NTZdLCBbLTg1LjUyMTk3LCA2OS44ODIxMV0sIFstODQuMTAwODEsIDY5LjgwNTM5XSwgWy04Mi42MjI1OCwgNjkuNjU4MjZdLCBbLTgxLjI4MDQzLCA2OS4xNjIwMl0sIFstODEuMjIwMiwgNjguNjY1NjddLCBbLTgxLjk2NDM2LCA2OC4xMzI1M10sIFstODEuMjU5MjgsIDY3LjU5NzE2XSwgWy04MS4zODY1MywgNjcuMTEwNzhdLCBbLTgzLjM0NDU2LCA2Ni40MTE1NF0sIFstODQuNzM1NDIsIDY2LjI1NzNdLCBbLTg1Ljc2OTQzLCA2Ni41NTgzM10sIFstODYuMDY3NiwgNjYuMDU2MjVdLCBbLTg3LjAzMTQzLCA2NS4yMTI5N10sIFstODcuMzIzMjQsIDY0Ljc3NTYzXSwgWy04OC40ODI5NiwgNjQuMDk4OTddLCBbLTg5LjkxNDQ0LCA2NC4wMzI3M10sIFstOTAuNzAzOTgsIDYzLjYxMDE3XSwgWy05MC43NzAwNCwgNjIuOTYwMjFdLCBbLTkxLjkzMzQyLCA2Mi44MzUwOF0sIFstOTMuMTU2OTgsIDYyLjAyNDY5XSwgWy05NC4yNDE1MywgNjAuODk4NjVdLCBbLTk0LjYyOTMxLCA2MC4xMTAyMV0sIFstOTQuNjg0NiwgNTguOTQ4ODJdLCBbLTkzLjIxNTAyLCA1OC43ODIxMl0sIFstOTIuNzY0NjIsIDU3Ljg0NTcxXSwgWy05Mi4yOTcwMywgNTcuMDg3MDldLCBbLTkwLjg5NzY5LCA1Ny4yODQ2OF0sIFstODkuMDM5NTMsIDU2Ljg1MTcyXSwgWy04OC4wMzk3OCwgNTYuNDcxNjJdLCBbLTg3LjMyNDIxLCA1NS45OTkxNF0sIFstODYuMDcxMjEsIDU1LjcyMzgzXSwgWy04NS4wMTE4MSwgNTUuMzAyNl0sIFstODMuMzYwNTUsIDU1LjI0NDg5XSwgWy04Mi4yNzI4NSwgNTUuMTQ4MzJdLCBbLTgyLjQzNjIsIDU0LjI4MjI3XSwgWy04Mi4xMjUwMiwgNTMuMjc3MDNdLCBbLTgxLjQwMDc1LCA1Mi4xNTc4OF0sIFstNzkuOTEyODksIDUxLjIwODQyXSwgWy03OS4xNDMwMSwgNTEuNTMzOTNdLCBbLTc4LjYwMTkxLCA1Mi41NjIwOF0sIFstNzkuMTI0MjEsIDU0LjE0MTQ1XSwgWy03OS44Mjk1OCwgNTQuNjY3NzJdLCBbLTc4LjIyODc0LCA1NS4xMzY0NV0sIFstNzcuMDk1NiwgNTUuODM3NDFdLCBbLTc2LjU0MTM3LCA1Ni41MzQyM10sIFstNzYuNjIzMTksIDU3LjIwMjYzXSwgWy03Ny4zMDIyNiwgNTguMDUyMDldLCBbLTc4LjUxNjg4LCA1OC44MDQ1OF0sIFstNzcuMzM2NzYsIDU5Ljg1MjYxXSwgWy03Ny43NzI3MiwgNjAuNzU3ODhdLCBbLTc4LjEwNjg3LCA2Mi4zMTk2NF0sIFstNzcuNDEwNjcsIDYyLjU1MDUzXSwgWy03NS42OTYyMSwgNjIuMjc4NF0sIFstNzQuNjY4MiwgNjIuMTgxMTFdLCBbLTczLjgzOTg4LCA2Mi40NDM4XSwgWy03Mi45MDg1MywgNjIuMTA1MDddLCBbLTcxLjY3NzA4LCA2MS41MjUzNV0sIFstNzEuMzczNjksIDYxLjEzNzE3XSwgWy02OS41OTA0MiwgNjEuMDYxNDFdLCBbLTY5LjYyMDMzLCA2MC4yMjEyNV0sIFstNjkuMjg3OSwgNTguOTU3MzZdLCBbLTY4LjM3NDU1LCA1OC44MDEwNl0sIFstNjcuNjQ5NzYsIDU4LjIxMjA2XSwgWy02Ni4yMDE3OCwgNTguNzY3MzFdLCBbLTY1LjI0NTE3LCA1OS44NzA3MV0sIFstNjQuNTgzNTIsIDYwLjMzNTU4XSwgWy02My44MDQ3NSwgNTkuNDQyNl0sIFstNjIuNTAyMzYsIDU4LjE2NzA4XSwgWy02MS4zOTY1NSwgNTYuOTY3NDVdLCBbLTYxLjc5ODY2LCA1Ni4zMzk0NV0sIFstNjAuNDY4NTMsIDU1Ljc3NTQ4XSwgWy01OS41Njk2MiwgNTUuMjA0MDddLCBbLTU3Ljk3NTA4LCA1NC45NDU0OV0sIFstNTcuMzMzMiwgNTQuNjI2NV0sIFstNTYuOTM2ODksIDUzLjc4MDMyXSwgWy01Ni4xNTgxMSwgNTMuNjQ3NDldLCBbLTU1Ljc1NjMyLCA1My4yNzAzNl0sIFstNTUuNjgzMzgsIDUyLjE0NjY0XSwgWy01Ni40MDkxNiwgNTEuNzcwN10sIFstNTcuMTI2OTEsIDUxLjQxOTcyXSwgWy01OC43NzQ4MiwgNTEuMDY0M10sIFstNjAuMDMzMDksIDUwLjI0Mjc3XSwgWy02MS43MjM2NiwgNTAuMDgwNDZdLCBbLTYzLjg2MjUxLCA1MC4yOTA5OV0sIFstNjUuMzYzMzEsIDUwLjI5ODJdLCBbLTY2LjM5OTA1LCA1MC4yMjg5N10sIFstNjcuMjM2MzEsIDQ5LjUxMTU2XSwgWy02OC41MTExNCwgNDkuMDY4MzZdLCBbLTY5Ljk1MzYyLCA0Ny43NDQ4OF0sIFstNzEuMTA0NTgsIDQ2LjgyMTcxXSwgWy03MC4yNTUyMiwgNDYuOTg2MDZdLCBbLTY4LjY1LCA0OC4zXSwgWy02Ni41NTI0MywgNDkuMTMzMV0sIFstNjUuMDU2MjYsIDQ5LjIzMjc4XSwgWy02NC4xNzA5OSwgNDguNzQyNDhdLCBbLTY1LjExNTQ1LCA0OC4wNzA4NV0sIFstNjQuNzk4NTQsIDQ2Ljk5Mjk3XSwgWy02NC40NzIxOSwgNDYuMjM4NDldLCBbLTYzLjE3MzI5LCA0NS43MzkwMl0sIFstNjEuNTIwNzIsIDQ1Ljg4Mzc3XSwgWy02MC41MTgxNSwgNDcuMDA3OTNdLCBbLTYwLjQ0ODYsIDQ2LjI4MjY0XSwgWy01OS44MDI4NywgNDUuOTIwNF0sIFstNjEuMDM5ODgsIDQ1LjI2NTI1XSwgWy02My4yNTQ3MSwgNDQuNjcwMTRdLCBbLTY0LjI0NjU2LCA0NC4yNjU1M10sIFstNjUuMzY0MDYsIDQzLjU0NTIzXSwgWy02Ni4xMjM0LCA0My42MTg2N10sIFstNjYuMTYxNzMsIDQ0LjQ2NTEyXSwgWy02NC40MjU0OSwgNDUuMjkyMDRdLCBbLTY2LjAyNjA1LCA0NS4yNTkzMV0sIFstNjcuMTM3NDEsIDQ1LjEzNzUzXSwgWy02Ny43OTEzNCwgNDUuNzAyODFdLCBbLTY3Ljc5MDQ2LCA0Ny4wNjYzNl0sIFstNjguMjM0NDQsIDQ3LjM1NDg2XSwgWy02OC45MDUsIDQ3LjE4NV0sIFstNjkuMjM3MjE2LCA0Ny40NDc3ODFdLCBbLTY5Ljk5OTk3LCA0Ni42OTMwN10sIFstNzAuMzA1LCA0NS45MTVdLCBbLTcwLjY2LCA0NS40Nl0sIFstNzEuMDg0ODIsIDQ1LjMwNTI0XSwgWy03MS40MDUsIDQ1LjI1NV0sIFstNzEuNTA1MDYsIDQ1LjAwODJdLCBbLTczLjM0NzgzLCA0NS4wMDczOF0sIFstNzQuODY3LCA0NS4wMDA0OF0sIFstNzUuMzE4MjEsIDQ0LjgxNjQ1XSwgWy03Ni4zNzUsIDQ0LjA5NjMxXSwgWy03Ni41LCA0NC4wMTg0NTldLCBbLTc2LjgyMDAzNCwgNDMuNjI4Nzg0XSwgWy03Ny43Mzc4ODUsIDQzLjYyOTA1Nl0sIFstNzguNzIwMjgsIDQzLjYyNTA4OV0sIFstNzkuMTcxNjc0LCA0My40NjYzMzldLCBbLTc5LjAxLCA0My4yN10sIFstNzguOTIsIDQyLjk2NV0sIFstNzguOTM5MzYyLCA0Mi44NjM2MTFdLCBbLTgwLjI0NzQ0OCwgNDIuMzY2Ml0sIFstODEuMjc3NzQ3LCA0Mi4yMDkwMjZdLCBbLTgyLjQzOTI3OCwgNDEuNjc1MTA1XSwgWy04Mi42OTAwODksIDQxLjY3NTEwNV0sIFstODMuMDI5ODEsIDQxLjgzMjc5Nl0sIFstODMuMTQyLCA0MS45NzU2ODFdLCBbLTgzLjEyLCA0Mi4wOF0sIFstODIuOSwgNDIuNDNdLCBbLTgyLjQzLCA0Mi45OF0sIFstODIuMTM3NjQyLCA0My41NzEwODhdLCBbLTgyLjMzNzc2MywgNDQuNDRdLCBbLTgyLjU1MDkyNSwgNDUuMzQ3NTE3XSwgWy04My41OTI4NTEsIDQ1LjgxNjg5NF0sIFstODMuNDY5NTUxLCA0NS45OTQ2ODZdLCBbLTgzLjYxNjEzMSwgNDYuMTE2OTI3XSwgWy04My44OTA3NjUsIDQ2LjExNjkyN10sIFstODQuMDkxODUxLCA0Ni4yNzU0MTldLCBbLTg0LjE0MjEyLCA0Ni41MTIyMjZdLCBbLTg0LjMzNjcsIDQ2LjQwODc3XSwgWy04NC42MDQ5LCA0Ni40Mzk2XSwgWy04NC41NDM3NDksIDQ2LjUzODY4NF0sIFstODQuNzc5MjM4LCA0Ni42MzcxMDJdLCBbLTg0Ljg3NjA4LCA0Ni45MDAwODNdLCBbLTg1LjY1MjM2MywgNDcuMjIwMjE5XSwgWy04Ni40NjE5OTEsIDQ3LjU1MzMzOF0sIFstODcuNDM5NzkzLCA0Ny45NF0sIFstODguMzc4MTE0LCA0OC4zMDI5MThdLCBbLTg5LjI3MjkxNywgNDguMDE5ODA4XSwgWy04OS42LCA0OC4wMV0sIFstOTAuODMsIDQ4LjI3XSwgWy05MS42NCwgNDguMTRdLCBbLTkyLjYxLCA0OC40NV0sIFstOTMuNjMwODcsIDQ4LjYwOTI2XSwgWy05NC4zMjkxNCwgNDguNjcwNzRdLCBbLTk0LjY0LCA0OC44NF0sIFstOTQuODE3NTgsIDQ5LjM4OTA1XSwgWy05NS4xNTYwOSwgNDkuMzg0MjVdLCBbLTk1LjE1OTA3LCA0OV0sIFstOTcuMjI4NzIsIDQ5LjAwMDddLCBbLTEwMC42NSwgNDldLCBbLTEwNC4wNDgyNiwgNDguOTk5ODZdLCBbLTEwNy4wNSwgNDldLCBbLTExMC4wNSwgNDldLCBbLTExMywgNDldLCBbLTExNi4wNDgxOCwgNDldLCBbLTExNy4wMzEyMSwgNDldLCBbLTEyMCwgNDldLCBbLTEyMi44NCwgNDldLCBbLTEyMi45NzQyMSwgNDkuMDAyNTM4XSwgWy0xMjQuOTEwMjQsIDQ5Ljk4NDU2XSwgWy0xMjUuNjI0NjEsIDUwLjQxNjU2XSwgWy0xMjcuNDM1NjEsIDUwLjgzMDYxXSwgWy0xMjcuOTkyNzYsIDUxLjcxNTgzXSwgWy0xMjcuODUwMzIsIDUyLjMyOTYxXSwgWy0xMjkuMTI5NzksIDUyLjc1NTM4XSwgWy0xMjkuMzA1MjMsIDUzLjU2MTU5XSwgWy0xMzAuNTE0OTcsIDU0LjI4NzU3XSwgWy0xMzAuNTM2MTEsIDU0LjgwMjc4XSwgWy0xMjkuOTgsIDU1LjI4NV0sIFstMTMwLjAwNzc4LCA1NS45MTU4M10sIFstMTMxLjcwNzgxLCA1Ni41NTIxMl0sIFstMTMyLjczMDQyLCA1Ny42OTI4OV0sIFstMTMzLjM1NTU2LCA1OC40MTAyOF0sIFstMTM0LjI3MTExLCA1OC44NjExMV0sIFstMTM0Ljk0NSwgNTkuMjcwNTZdLCBbLTEzNS40NzU4MywgNTkuNzg3NzhdLCBbLTEzNi40Nzk3MiwgNTkuNDYzODldLCBbLTEzNy40NTI1LCA1OC45MDVdLCBbLTEzOC4zNDA4OSwgNTkuNTYyMTFdLCBbLTEzOS4wMzksIDYwXSwgWy0xNDAuMDEzLCA2MC4yNzY4Ml0sIFstMTQwLjk5Nzc4LCA2MC4zMDYzOV0sIFstMTQwLjk5MjUsIDY2LjAwMDAzXSwgWy0xNDAuOTg2LCA2OS43MTJdLCBbLTEzOS4xMjA1MiwgNjkuNDcxMDJdLCBbLTEzNy41NDYzNiwgNjguOTkwMDJdLCBbLTEzNi41MDM1OCwgNjguODk4MDRdLCBbLTEzNS42MjU3NiwgNjkuMzE1MTJdLCBbLTEzNC40MTQ2NCwgNjkuNjI3NDNdLCBbLTEzMi45MjkyNSwgNjkuNTA1MzRdLCBbLTEzMS40MzEzNiwgNjkuOTQ0NTFdLCBbLTEyOS43OTQ3MSwgNzAuMTkzNjldLCBbLTEyOS4xMDc3MywgNjkuNzc5MjddLCBbLTEyOC4zNjE1NiwgNzAuMDEyODZdLCBbLTEyOC4xMzgxNywgNzAuNDgzODRdLCBbLTEyNy40NDcxMiwgNzAuMzc3MjFdLCBbLTEyNS43NTYzMiwgNjkuNDgwNThdLCBbLTEyNC40MjQ4MywgNzAuMTU4NF0sIFstMTI0LjI4OTY4LCA2OS4zOTk2OV0sIFstMTIzLjA2MTA4LCA2OS41NjM3Ml0sIFstMTIyLjY4MzUsIDY5Ljg1NTUzXSwgWy0xMjEuNDcyMjYsIDY5Ljc5Nzc4XSwgWy0xMTkuOTQyODgsIDY5LjM3Nzg2XSwgWy0xMTcuNjAyNjgsIDY5LjAxMTI4XSwgWy0xMTYuMjI2NDMsIDY4Ljg0MTUxXSwgWy0xMTUuMjQ2OSwgNjguOTA1OTFdLCBbLTExMy44OTc5NCwgNjguMzk4OV0sIFstMTE1LjMwNDg5LCA2Ny45MDI2MV0sIFstMTEzLjQ5NzI3LCA2Ny42ODgxNV0sIFstMTEwLjc5OCwgNjcuODA2MTJdLCBbLTEwOS45NDYxOSwgNjcuOTgxMDRdLCBbLTEwOC44ODAyLCA2Ny4zODE0NF0sIFstMTA3Ljc5MjM5LCA2Ny44ODczNl0sIFstMTA4LjgxMjk5LCA2OC4zMTE2NF0sIFstMTA4LjE2NzIxLCA2OC42NTM5Ml0sIFstMTA2Ljk1LCA2OC43XSwgWy0xMDYuMTUsIDY4LjhdLCBbLTEwNS4zNDI4MiwgNjguNTYxMjJdLCBbLTEwNC4zMzc5MSwgNjguMDE4XSwgWy0xMDMuMjIxMTUsIDY4LjA5Nzc1XSwgWy0xMDEuNDU0MzMsIDY3LjY0Njg5XSwgWy05OS45MDE5NSwgNjcuODA1NjZdLCBbLTk4LjQ0MzIsIDY3Ljc4MTY1XSwgWy05OC41NTg2LCA2OC40MDM5NF0sIFstOTcuNjY5NDgsIDY4LjU3ODY0XSwgWy05Ni4xMTk5MSwgNjguMjM5MzldLCBbLTk2LjEyNTg4LCA2Ny4yOTMzOF0sIFstOTUuNDg5NDMsIDY4LjA5MDddLCBbLTk0LjY4NSwgNjguMDYzODNdLCBbLTk0LjIzMjgyLCA2OS4wNjkwM10sIFstOTUuMzA0MDgsIDY5LjY4NTcxXSwgWy05Ni40NzEzMSwgNzAuMDg5NzZdLCBbLTk2LjM5MTE1LCA3MS4xOTQ4Ml0sIFstOTUuMjA4OCwgNzEuOTIwNTNdLCBbLTkzLjg4OTk3LCA3MS43NjAxNV0sIFstOTIuODc4MTgsIDcxLjMxODY5XSwgWy05MS41MTk2NCwgNzAuMTkxMjldLCBbLTkyLjQwNjkyLCA2OS42OTk5N10sIFstOTAuNTQ3MSwgNjkuNDk3NjZdXV0sIFtbWy0xMTQuMTY3MTcsIDczLjEyMTQ1XSwgWy0xMTQuNjY2MzQsIDcyLjY1Mjc3XSwgWy0xMTIuNDQxMDIsIDcyLjk1NTRdLCBbLTExMS4wNTAzOSwgNzIuNDUwNF0sIFstMTA5LjkyMDM1LCA3Mi45NjExM10sIFstMTA5LjAwNjU0LCA3Mi42MzMzNV0sIFstMTA4LjE4ODM1LCA3MS42NTA4OV0sIFstMTA3LjY4NTk5LCA3Mi4wNjU0OF0sIFstMTA4LjM5NjM5LCA3My4wODk1M10sIFstMTA3LjUxNjQ1LCA3My4yMzU5OF0sIFstMTA2LjUyMjU5LCA3My4wNzYwMV0sIFstMTA1LjQwMjQ2LCA3Mi42NzI1OV0sIFstMTA0Ljc3NDg0LCA3MS42OTg0XSwgWy0xMDQuNDY0NzYsIDcwLjk5Mjk3XSwgWy0xMDIuNzg1MzcsIDcwLjQ5Nzc2XSwgWy0xMDAuOTgwNzgsIDcwLjAyNDMyXSwgWy0xMDEuMDg5MjksIDY5LjU4NDQ3XSwgWy0xMDIuNzMxMTYsIDY5LjUwNDAyXSwgWy0xMDIuMDkzMjksIDY5LjExOTYyXSwgWy0xMDIuNDMwMjQsIDY4Ljc1MjgyXSwgWy0xMDQuMjQsIDY4LjkxXSwgWy0xMDUuOTYsIDY5LjE4XSwgWy0xMDcuMTIyNTQsIDY5LjExOTIyXSwgWy0xMDksIDY4Ljc4XSwgWy0xMTEuNTM0MTQ5LCA2OC42MzAwNTldLCBbLTExMy4zMTMyLCA2OC41MzU1NF0sIFstMTEzLjg1NDk2LCA2OS4wMDc0NF0sIFstMTE1LjIyLCA2OS4yOF0sIFstMTE2LjEwNzk0LCA2OS4xNjgyMV0sIFstMTE3LjM0LCA2OS45Nl0sIFstMTE2LjY3NDczLCA3MC4wNjY1NV0sIFstMTE1LjEzMTEyLCA3MC4yMzczXSwgWy0xMTMuNzIxNDEsIDcwLjE5MjM3XSwgWy0xMTIuNDE2MSwgNzAuMzY2MzhdLCBbLTExNC4zNSwgNzAuNl0sIFstMTE2LjQ4Njg0LCA3MC41MjA0NV0sIFstMTE3LjkwNDgsIDcwLjU0MDU2XSwgWy0xMTguNDMyMzgsIDcwLjkwOTJdLCBbLTExNi4xMTMxMSwgNzEuMzA5MThdLCBbLTExNy42NTU2OCwgNzEuMjk1Ml0sIFstMTE5LjQwMTk5LCA3MS41NTg1OV0sIFstMTE4LjU2MjY3LCA3Mi4zMDc4NV0sIFstMTE3Ljg2NjQyLCA3Mi43MDU5NF0sIFstMTE1LjE4OTA5LCA3My4zMTQ1OV0sIFstMTE0LjE2NzE3LCA3My4xMjE0NV1dXSwgW1tbLTEwNC41LCA3My40Ml0sIFstMTA1LjM4LCA3Mi43Nl0sIFstMTA2Ljk0LCA3My40Nl0sIFstMTA2LjYsIDczLjZdLCBbLTEwNS4yNiwgNzMuNjRdLCBbLTEwNC41LCA3My40Ml1dXSwgW1tbLTc2LjM0LCA3My4xMDI2ODVdLCBbLTc2LjI1MTQwNCwgNzIuODI2Mzg1XSwgWy03Ny4zMTQ0MzgsIDcyLjg1NTU0NV0sIFstNzguMzkxNjcsIDcyLjg3NjY1Nl0sIFstNzkuNDg2MjUyLCA3Mi43NDIyMDNdLCBbLTc5Ljc3NTgzMywgNzIuODAyOTAyXSwgWy04MC44NzYwOTksIDczLjMzMzE4M10sIFstODAuODMzODg1LCA3My42OTMxODRdLCBbLTgwLjM1MzA1OCwgNzMuNzU5NzJdLCBbLTc4LjA2NDQzOCwgNzMuNjUxOTMyXSwgWy03Ni4zNCwgNzMuMTAyNjg1XV1dLCBbW1stODYuNTYyMTc5LCA3My4xNTc0NDddLCBbLTg1Ljc3NDM3MSwgNzIuNTM0MTI2XSwgWy04NC44NTAxMTIsIDczLjM0MDI3OF0sIFstODIuMzE1NTksIDczLjc1MDk1MV0sIFstODAuNjAwMDg4LCA3Mi43MTY1NDRdLCBbLTgwLjc0ODk0MiwgNzIuMDYxOTA3XSwgWy03OC43NzA2MzksIDcyLjM1MjE3M10sIFstNzcuODI0NjI0LCA3Mi43NDk2MTddLCBbLTc1LjYwNTg0NSwgNzIuMjQzNjc4XSwgWy03NC4yMjg2MTYsIDcxLjc2NzE0NF0sIFstNzQuMDk5MTQxLCA3MS4zMzA4NF0sIFstNzIuMjQyMjI2LCA3MS41NTY5MjVdLCBbLTcxLjIwMDAxNSwgNzAuOTIwMDEzXSwgWy02OC43ODYwNTQsIDcwLjUyNTAyNF0sIFstNjcuOTE0OTcsIDcwLjEyMTk0OF0sIFstNjYuOTY5MDMzLCA2OS4xODYwODddLCBbLTY4LjgwNTEyMywgNjguNzIwMTk4XSwgWy02Ni40NDk4NjYsIDY4LjA2NzE2M10sIFstNjQuODYyMzE0LCA2Ny44NDc1MzldLCBbLTYzLjQyNDkzNCwgNjYuOTI4NDczXSwgWy02MS44NTE5ODEsIDY2Ljg2MjEyMV0sIFstNjIuMTYzMTc3LCA2Ni4xNjAyNTFdLCBbLTYzLjkxODQ0NCwgNjQuOTk4NjY5XSwgWy02NS4xNDg4NiwgNjUuNDI2MDMzXSwgWy02Ni43MjEyMTksIDY2LjM4ODA0MV0sIFstNjguMDE1MDE2LCA2Ni4yNjI3MjZdLCBbLTY4LjE0MTI4NywgNjUuNjg5Nzg5XSwgWy02Ny4wODk2NDYsIDY1LjEwODQ1NV0sIFstNjUuNzMyMDgsIDY0LjY0ODQwNl0sIFstNjUuMzIwMTY4LCA2NC4zODI3MzddLCBbLTY0LjY2OTQwNiwgNjMuMzkyOTI3XSwgWy02NS4wMTM4MDQsIDYyLjY3NDE4NV0sIFstNjYuMjc1MDQ1LCA2Mi45NDUwOTldLCBbLTY4Ljc4MzE4NiwgNjMuNzQ1NjddLCBbLTY3LjM2OTY4MSwgNjIuODgzOTY2XSwgWy02Ni4zMjgyOTcsIDYyLjI4MDA3NV0sIFstNjYuMTY1NTY4LCA2MS45MzA4OTddLCBbLTY4Ljg3NzM2NywgNjIuMzMwMTQ5XSwgWy03MS4wMjM0MzcsIDYyLjkxMDcwOF0sIFstNzIuMjM1Mzc5LCA2My4zOTc4MzZdLCBbLTcxLjg4NjI3OCwgNjMuNjc5OTg5XSwgWy03My4zNzgzMDYsIDY0LjE5Mzk2M10sIFstNzQuODM0NDE5LCA2NC42NzkwNzZdLCBbLTc0LjgxODUwMywgNjQuMzg5MDkzXSwgWy03Ny43MDk5OCwgNjQuMjI5NTQyXSwgWy03OC41NTU5NDksIDY0LjU3MjkwNl0sIFstNzcuODk3MjgxLCA2NS4zMDkxOTJdLCBbLTc2LjAxODI3NCwgNjUuMzI2OTY5XSwgWy03My45NTk3OTUsIDY1LjQ1NDc2NV0sIFstNzQuMjkzODgzLCA2NS44MTE3NzFdLCBbLTczLjk0NDkxMiwgNjYuMzEwNTc4XSwgWy03Mi42NTExNjcsIDY3LjI4NDU3Nl0sIFstNzIuOTI2MDYsIDY3LjcyNjkyNl0sIFstNzMuMzExNjE4LCA2OC4wNjk0MzddLCBbLTc0Ljg0MzMwNywgNjguNTU0NjI3XSwgWy03Ni44NjkxMDEsIDY4Ljg5NDczNl0sIFstNzYuMjI4NjQ5LCA2OS4xNDc3NjldLCBbLTc3LjI4NzM3LCA2OS43Njk1NF0sIFstNzguMTY4NjM0LCA2OS44MjY0ODhdLCBbLTc4Ljk1NzI0MiwgNzAuMTY2ODhdLCBbLTc5LjQ5MjQ1NSwgNjkuODcxODA4XSwgWy04MS4zMDU0NzEsIDY5Ljc0MzE4NV0sIFstODQuOTQ0NzA2LCA2OS45NjY2MzRdLCBbLTg3LjA2MDAwMywgNzAuMjYwMDAxXSwgWy04OC42ODE3MTMsIDcwLjQxMDc0MV0sIFstODkuNTEzNDIsIDcwLjc2MjAzOF0sIFstODguNDY3NzIxLCA3MS4yMTgxODZdLCBbLTg5Ljg4ODE1MSwgNzEuMjIyNTUyXSwgWy05MC4yMDUxNiwgNzIuMjM1MDc0XSwgWy04OS40MzY1NzcsIDczLjEyOTQ2NF0sIFstODguNDA4MjQyLCA3My41Mzc4ODldLCBbLTg1LjgyNjE1MSwgNzMuODAzODE2XSwgWy04Ni41NjIxNzksIDczLjE1NzQ0N11dXSwgW1tbLTEwMC4zNTY0MiwgNzMuODQzODldLCBbLTk5LjE2Mzg3LCA3My42MzMzOV0sIFstOTcuMzgsIDczLjc2XSwgWy05Ny4xMiwgNzMuNDddLCBbLTk4LjA1MzU5LCA3Mi45OTA1Ml0sIFstOTYuNTQsIDcyLjU2XSwgWy05Ni43MiwgNzEuNjZdLCBbLTk4LjM1OTY2LCA3MS4yNzI4NV0sIFstOTkuMzIyODYsIDcxLjM1NjM5XSwgWy0xMDAuMDE0ODIsIDcxLjczODI3XSwgWy0xMDIuNSwgNzIuNTFdLCBbLTEwMi40OCwgNzIuODNdLCBbLTEwMC40MzgzNiwgNzIuNzA1ODhdLCBbLTEwMS41NCwgNzMuMzZdLCBbLTEwMC4zNTY0MiwgNzMuODQzODldXV0sIFtbWy05My4xOTYyOTYsIDcyLjc3MTk5Ml0sIFstOTQuMjY5MDQ3LCA3Mi4wMjQ1OTZdLCBbLTk1LjQwOTg1NiwgNzIuMDYxODgxXSwgWy05Ni4wMzM3NDUsIDcyLjk0MDI3N10sIFstOTYuMDE4MjY4LCA3My40Mzc0M10sIFstOTUuNDk1NzkzLCA3My44NjI0MTddLCBbLTk0LjUwMzY1OCwgNzQuMTM0OTA3XSwgWy05Mi40MjAwMTIsIDc0LjEwMDAyNV0sIFstOTAuNTA5NzkzLCA3My44NTY3MzJdLCBbLTkyLjAwMzk2NSwgNzIuOTY2MjQ0XSwgWy05My4xOTYyOTYsIDcyLjc3MTk5Ml1dXSwgW1tbLTEyMC40NiwgNzEuMzgzNjAyXSwgWy0xMjMuMDkyMTksIDcwLjkwMTY0XSwgWy0xMjMuNjIsIDcxLjM0XSwgWy0xMjUuOTI4OTQ5LCA3MS44Njg2ODhdLCBbLTEyNS41LCA3Mi4yOTIyNjFdLCBbLTEyNC44MDcyOSwgNzMuMDIyNTZdLCBbLTEyMy45NCwgNzMuNjhdLCBbLTEyNC45MTc3NSwgNzQuMjkyNzVdLCBbLTEyMS41Mzc4OCwgNzQuNDQ4OTNdLCBbLTEyMC4xMDk3OCwgNzQuMjQxMzVdLCBbLTExNy41NTU2NCwgNzQuMTg1NzddLCBbLTExNi41ODQ0MiwgNzMuODk2MDddLCBbLTExNS41MTA4MSwgNzMuNDc1MTldLCBbLTExNi43Njc5NCwgNzMuMjIyOTJdLCBbLTExOS4yMiwgNzIuNTJdLCBbLTEyMC40NiwgNzEuODJdLCBbLTEyMC40NiwgNzEuMzgzNjAyXV1dLCBbW1stOTMuNjEyNzU2LCA3NC45Nzk5OTddLCBbLTk0LjE1NjkwOSwgNzQuNTkyMzQ3XSwgWy05NS42MDg2ODEsIDc0LjY2Njg2NF0sIFstOTYuODIwOTMyLCA3NC45Mjc2MjNdLCBbLTk2LjI4ODU4NywgNzUuMzc3ODI4XSwgWy05NC44NTA4MiwgNzUuNjQ3MjE4XSwgWy05My45Nzc3NDcsIDc1LjI5NjQ5XSwgWy05My42MTI3NTYsIDc0Ljk3OTk5N11dXSwgW1tbLTk4LjUsIDc2LjcyXSwgWy05Ny43MzU1ODUsIDc2LjI1NjU2XSwgWy05Ny43MDQ0MTUsIDc1Ljc0MzQ0XSwgWy05OC4xNiwgNzVdLCBbLTk5LjgwODc0LCA3NC44OTc0NF0sIFstMTAwLjg4MzY2LCA3NS4wNTczNl0sIFstMTAwLjg2MjkyLCA3NS42NDA3NV0sIFstMTAyLjUwMjA5LCA3NS41NjM4XSwgWy0xMDIuNTY1NTIsIDc2LjMzNjZdLCBbLTEwMS40ODk3MywgNzYuMzA1MzddLCBbLTk5Ljk4MzQ5LCA3Ni42NDYzNF0sIFstOTguNTc2OTksIDc2LjU4ODU5XSwgWy05OC41LCA3Ni43Ml1dXSwgW1tbLTEwOC4yMTE0MSwgNzYuMjAxNjhdLCBbLTEwNy44MTk0MywgNzUuODQ1NTJdLCBbLTEwNi45Mjg5MywgNzYuMDEyODJdLCBbLTEwNS44ODEsIDc1Ljk2OTRdLCBbLTEwNS43MDQ5OCwgNzUuNDc5NTFdLCBbLTEwNi4zMTM0NywgNzUuMDA1MjddLCBbLTEwOS43LCA3NC44NV0sIFstMTEyLjIyMzA3LCA3NC40MTY5Nl0sIFstMTEzLjc0MzgxLCA3NC4zOTQyN10sIFstMTEzLjg3MTM1LCA3NC43MjAyOV0sIFstMTExLjc5NDIxLCA3NS4xNjI1XSwgWy0xMTYuMzEyMjEsIDc1LjA0MzQzXSwgWy0xMTcuNzEwNCwgNzUuMjIyMl0sIFstMTE2LjM0NjAyLCA3Ni4xOTkwM10sIFstMTE1LjQwNDg3LCA3Ni40Nzg4N10sIFstMTEyLjU5MDU2LCA3Ni4xNDEzNF0sIFstMTEwLjgxNDIyLCA3NS41NDkxOV0sIFstMTA5LjA2NzEsIDc1LjQ3MzIxXSwgWy0xMTAuNDk3MjYsIDc2LjQyOTgyXSwgWy0xMDkuNTgxMSwgNzYuNzk0MTddLCBbLTEwOC41NDg1OSwgNzYuNjc4MzJdLCBbLTEwOC4yMTE0MSwgNzYuMjAxNjhdXV0sIFtbWy05NC42ODQwODYsIDc3LjA5Nzg3OF0sIFstOTMuNTczOTIxLCA3Ni43NzYyOTZdLCBbLTkxLjYwNTAyMywgNzYuNzc4NTE4XSwgWy05MC43NDE4NDYsIDc2LjQ0OTU5N10sIFstOTAuOTY5NjYxLCA3Ni4wNzQwMTNdLCBbLTg5LjgyMjIzOCwgNzUuODQ3Nzc0XSwgWy04OS4xODcwODMsIDc1LjYxMDE2Nl0sIFstODcuODM4Mjc2LCA3NS41NjYxODldLCBbLTg2LjM3OTE5MiwgNzUuNDgyNDIxXSwgWy04NC43ODk2MjUsIDc1LjY5OTIwNF0sIFstODIuNzUzNDQ1LCA3NS43ODQzMTVdLCBbLTgxLjEyODUzMSwgNzUuNzEzOTgzXSwgWy04MC4wNTc1MTEsIDc1LjMzNjg0OV0sIFstNzkuODMzOTMzLCA3NC45MjMxMjddLCBbLTgwLjQ1Nzc3MSwgNzQuNjU3MzA0XSwgWy04MS45NDg4NDMsIDc0LjQ0MjQ1OV0sIFstODMuMjI4ODk0LCA3NC41NjQwMjhdLCBbLTg2LjA5NzQ1MiwgNzQuNDEwMDMyXSwgWy04OC4xNTAzNSwgNzQuMzkyMzA3XSwgWy04OS43NjQ3MjIsIDc0LjUxNTU1NV0sIFstOTIuNDIyNDQxLCA3NC44Mzc3NThdLCBbLTkyLjc2ODI4NSwgNzUuMzg2ODJdLCBbLTkyLjg4OTkwNiwgNzUuODgyNjU1XSwgWy05My44OTM4MjQsIDc2LjMxOTI0NF0sIFstOTUuOTYyNDU3LCA3Ni40NDEzODFdLCBbLTk3LjEyMTM3OSwgNzYuNzUxMDc4XSwgWy05Ni43NDUxMjMsIDc3LjE2MTM4OV0sIFstOTQuNjg0MDg2LCA3Ny4wOTc4NzhdXV0sIFtbWy0xMTYuMTk4NTg3LCA3Ny42NDUyODddLCBbLTExNi4zMzU4MTMsIDc2Ljg3Njk2Ml0sIFstMTE3LjEwNjA1MSwgNzYuNTMwMDMyXSwgWy0xMTguMDQwNDEyLCA3Ni40ODExNzJdLCBbLTExOS44OTkzMTgsIDc2LjA1MzIxM10sIFstMTIxLjQ5OTk5NSwgNzUuOTAwMDE5XSwgWy0xMjIuODU0OTI0LCA3Ni4xMTY1NDNdLCBbLTEyMi44NTQ5MjUsIDc2LjExNjU0M10sIFstMTIxLjE1NzUzNSwgNzYuODY0NTA4XSwgWy0xMTkuMTAzOTM5LCA3Ny41MTIyMl0sIFstMTE3LjU3MDEzMSwgNzcuNDk4MzE5XSwgWy0xMTYuMTk4NTg3LCA3Ny42NDUyODddXV0sIFtbWy05My44NDAwMDMsIDc3LjUxOTk5N10sIFstOTQuMjk1NjA4LCA3Ny40OTEzNDNdLCBbLTk2LjE2OTY1NCwgNzcuNTU1MTExXSwgWy05Ni40MzYzMDQsIDc3LjgzNDYyOV0sIFstOTQuNDIyNTc3LCA3Ny44MjAwMDVdLCBbLTkzLjcyMDY1NiwgNzcuNjM0MzMxXSwgWy05My44NDAwMDMsIDc3LjUxOTk5N11dXSwgW1tbLTExMC4xODY5MzgsIDc3LjY5NzAxNV0sIFstMTEyLjA1MTE5MSwgNzcuNDA5MjI5XSwgWy0xMTMuNTM0Mjc5LCA3Ny43MzIyMDddLCBbLTExMi43MjQ1ODcsIDc4LjA1MTA1XSwgWy0xMTEuMjY0NDQzLCA3OC4xNTI5NTZdLCBbLTEwOS44NTQ0NTIsIDc3Ljk5NjMyNV0sIFstMTEwLjE4NjkzOCwgNzcuNjk3MDE1XV1dLCBbW1stMTA5LjY2MzE0NiwgNzguNjAxOTczXSwgWy0xMTAuODgxMzE0LCA3OC40MDY5Ml0sIFstMTEyLjU0MjA5MSwgNzguNDA3OTAyXSwgWy0xMTIuNTI1ODkxLCA3OC41NTA1NTVdLCBbLTExMS41MDAwMSwgNzguODQ5OTk0XSwgWy0xMTAuOTYzNjYxLCA3OC44MDQ0NDFdLCBbLTEwOS42NjMxNDYsIDc4LjYwMTk3M11dXSwgW1tbLTk1LjgzMDI5NSwgNzguMDU2OTQxXSwgWy05Ny4zMDk4NDMsIDc3Ljg1MDU5N10sIFstOTguMTI0Mjg5LCA3OC4wODI4NTddLCBbLTk4LjU1Mjg2OCwgNzguNDU4MTA1XSwgWy05OC42MzE5ODQsIDc4Ljg3MTkzXSwgWy05Ny4zMzcyMzEsIDc4LjgzMTk4NF0sIFstOTYuNzU0Mzk5LCA3OC43NjU4MTNdLCBbLTk1LjU1OTI3OCwgNzguNDE4MzE1XSwgWy05NS44MzAyOTUsIDc4LjA1Njk0MV1dXSwgW1tbLTEwMC4wNjAxOTIsIDc4LjMyNDc1NF0sIFstOTkuNjcwOTM5LCA3Ny45MDc1NDVdLCBbLTEwMS4zMDM5NCwgNzguMDE4OTg1XSwgWy0xMDIuOTQ5ODA5LCA3OC4zNDMyMjldLCBbLTEwNS4xNzYxMzMsIDc4LjM4MDMzMl0sIFstMTA0LjIxMDQyOSwgNzguNjc3NDJdLCBbLTEwNS40MTk1OCwgNzguOTE4MzM2XSwgWy0xMDUuNDkyMjg5LCA3OS4zMDE1OTRdLCBbLTEwMy41MjkyODIsIDc5LjE2NTM0OV0sIFstMTAwLjgyNTE1OCwgNzguODAwNDYyXSwgWy0xMDAuMDYwMTkyLCA3OC4zMjQ3NTRdXV0sIFtbWy04Ny4wMiwgNzkuNjZdLCBbLTg1LjgxNDM1LCA3OS4zMzY5XSwgWy04Ny4xODc1NiwgNzkuMDM5M10sIFstODkuMDM1MzUsIDc4LjI4NzIzXSwgWy05MC44MDQzNiwgNzguMjE1MzNdLCBbLTkyLjg3NjY5LCA3OC4zNDMzM10sIFstOTMuOTUxMTYsIDc4Ljc1MDk5XSwgWy05My45MzU3NCwgNzkuMTEzNzNdLCBbLTkzLjE0NTI0LCA3OS4zODAxXSwgWy05NC45NzQsIDc5LjM3MjQ4XSwgWy05Ni4wNzYxNCwgNzkuNzA1MDJdLCBbLTk2LjcwOTcyLCA4MC4xNTc3N10sIFstOTYuMDE2NDQsIDgwLjYwMjMzXSwgWy05NS4zMjM0NSwgODAuOTA3MjldLCBbLTk0LjI5ODQzLCA4MC45NzcyN10sIFstOTQuNzM1NDIsIDgxLjIwNjQ2XSwgWy05Mi40MDk4NCwgODEuMjU3MzldLCBbLTkxLjEzMjg5LCA4MC43MjM0NV0sIFstODkuNDUsIDgwLjUwOTMyMl0sIFstODcuODEsIDgwLjMyXSwgWy04Ny4wMiwgNzkuNjZdXV0sIFtbWy02OC41LCA4My4xMDYzMjJdLCBbLTY1LjgyNzM1LCA4My4wMjgwMV0sIFstNjMuNjgsIDgyLjldLCBbLTYxLjg1LCA4Mi42Mjg2XSwgWy02MS44OTM4OCwgODIuMzYxNjVdLCBbLTY0LjMzNCwgODEuOTI3NzVdLCBbLTY2Ljc1MzQyLCA4MS43MjUyN10sIFstNjcuNjU3NTUsIDgxLjUwMTQxXSwgWy02NS40ODAzMSwgODEuNTA2NTddLCBbLTY3Ljg0LCA4MC45XSwgWy02OS40Njk3LCA4MC42MTY4M10sIFstNzEuMTgsIDc5LjhdLCBbLTczLjI0MjgsIDc5LjYzNDE1XSwgWy03My44OCwgNzkuNDMwMTYyXSwgWy03Ni45MDc3MywgNzkuMzIzMDldLCBbLTc1LjUyOTI0LCA3OS4xOTc2Nl0sIFstNzYuMjIwNDYsIDc5LjAxOTA3XSwgWy03NS4zOTM0NSwgNzguNTI1ODFdLCBbLTc2LjM0MzU0LCA3OC4xODI5Nl0sIFstNzcuODg4NTEsIDc3Ljg5OTkxXSwgWy03OC4zNjI2OSwgNzcuNTA4NTldLCBbLTc5Ljc1OTUxLCA3Ny4yMDk2OF0sIFstNzkuNjE5NjUsIDc2Ljk4MzM2XSwgWy03Ny45MTA4OSwgNzcuMDIyMDQ1XSwgWy03Ny44ODkxMSwgNzYuNzc3OTU1XSwgWy04MC41NjEyNSwgNzYuMTc4MTJdLCBbLTgzLjE3NDM5LCA3Ni40NTQwM10sIFstODYuMTExODQsIDc2LjI5OTAxXSwgWy04Ny42LCA3Ni40Ml0sIFstODkuNDkwNjgsIDc2LjQ3MjM5XSwgWy04OS42MTYxLCA3Ni45NTIxM10sIFstODcuNzY3MzksIDc3LjE3ODMzXSwgWy04OC4yNiwgNzcuOV0sIFstODcuNjUsIDc3Ljk3MDIyMl0sIFstODQuOTc2MzQsIDc3LjUzODczXSwgWy04Ni4zNCwgNzguMThdLCBbLTg3Ljk2MTkyLCA3OC4zNzE4MV0sIFstODcuMTUxOTgsIDc4Ljc1ODY3XSwgWy04NS4zNzg2OCwgNzguOTk2OV0sIFstODUuMDk0OTUsIDc5LjM0NTQzXSwgWy04Ni41MDczNCwgNzkuNzM2MjRdLCBbLTg2LjkzMTc5LCA4MC4yNTE0NV0sIFstODQuMTk4NDQsIDgwLjIwODM2XSwgWy04My40MDg2OTYsIDgwLjFdLCBbLTgxLjg0ODIzLCA4MC40NjQ0Ml0sIFstODQuMSwgODAuNThdLCBbLTg3LjU5ODk1LCA4MC41MTYyN10sIFstODkuMzY2NjMsIDgwLjg1NTY5XSwgWy05MC4yLCA4MS4yNl0sIFstOTEuMzY3ODYsIDgxLjU1MzFdLCBbLTkxLjU4NzAyLCA4MS44OTQyOV0sIFstOTAuMSwgODIuMDg1XSwgWy04OC45MzIyNywgODIuMTE3NTFdLCBbLTg2Ljk3MDI0LCA4Mi4yNzk2MV0sIFstODUuNSwgODIuNjUyMjczXSwgWy04NC4yNjAwMDUsIDgyLjZdLCBbLTgzLjE4LCA4Mi4zMl0sIFstODIuNDIsIDgyLjg2XSwgWy04MS4xLCA4My4wMl0sIFstNzkuMzA2NjQsIDgzLjEzMDU2XSwgWy03Ni4yNSwgODMuMTcyMDU5XSwgWy03NS43MTg3OCwgODMuMDY0MDRdLCBbLTcyLjgzMTUzLCA4My4yMzMyNF0sIFstNzAuNjY1NzY1LCA4My4xNjk3ODFdLCBbLTY4LjUsIDgzLjEwNjMyMl1dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQ0FOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDYW5hZGEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkuNTk0MjI2LCA0Ny41MjUwNThdLCBbOS42MzI5MzIsIDQ3LjM0NzYwMV0sIFs5LjQ3OTk3LCA0Ny4xMDI4MV0sIFs5LjkzMjQ0OCwgNDYuOTIwNzI4XSwgWzEwLjQ0MjcwMSwgNDYuODkzNTQ2XSwgWzEwLjM2MzM3OCwgNDYuNDgzNTcxXSwgWzkuOTIyODM3LCA0Ni4zMTQ4OTldLCBbOS4xODI4ODIsIDQ2LjQ0MDIxNV0sIFs4Ljk2NjMwNiwgNDYuMDM2OTMyXSwgWzguNDg5OTUyLCA0Ni4wMDUxNTFdLCBbOC4zMTY2MywgNDYuMTYzNjQyXSwgWzcuNzU1OTkyLCA0NS44MjQ0OV0sIFs3LjI3Mzg1MSwgNDUuNzc2OTQ4XSwgWzYuODQzNTkzLCA0NS45OTExNDddLCBbNi41MDAxLCA0Ni40Mjk2NzNdLCBbNi4wMjI2MDksIDQ2LjI3Mjk5XSwgWzYuMDM3Mzg5LCA0Ni43MjU3NzldLCBbNi43Njg3MTQsIDQ3LjI4NzcwOF0sIFs2LjczNjU3MSwgNDcuNTQxODAxXSwgWzcuMTkyMjAyLCA0Ny40NDk3NjZdLCBbNy40NjY3NTksIDQ3LjYyMDU4Ml0sIFs4LjMxNzMwMSwgNDcuNjEzNThdLCBbOC41MjI2MTIsIDQ3LjgzMDgyOF0sIFs5LjU5NDIyNiwgNDcuNTI1MDU4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDSEUiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlN3aXR6ZXJsYW5kIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbLTY4LjYzNDAxLCAtNTIuNjM2MzddLCBbLTY4LjYzMzM1LCAtNTQuODY5NV0sIFstNjcuNTYyNDQsIC01NC44NzAwMV0sIFstNjYuOTU5OTIsIC01NC44OTY4MV0sIFstNjcuMjkxMDMsIC01NS4zMDEyNF0sIFstNjguMTQ4NjMsIC01NS42MTE4M10sIFstNjguNjM5OTkxLCAtNTUuNTgwMDE4XSwgWy02OS4yMzIxLCAtNTUuNDk5MDZdLCBbLTY5Ljk1ODA5LCAtNTUuMTk4NDNdLCBbLTcxLjAwNTY4LCAtNTUuMDUzODNdLCBbLTcyLjI2MzksIC01NC40OTUxNF0sIFstNzMuMjg1MiwgLTUzLjk1NzUyXSwgWy03NC42NjI1MywgLTUyLjgzNzQ5XSwgWy03My44MzgxLCAtNTMuMDQ3NDNdLCBbLTcyLjQzNDE4LCAtNTMuNzE1NF0sIFstNzEuMTA3NzMsIC01NC4wNzQzM10sIFstNzAuNTkxNzgsIC01My42MTU4M10sIFstNzAuMjY3NDgsIC01Mi45MzEyM10sIFstNjkuMzQ1NjUsIC01Mi41MTgzXSwgWy02OC42MzQwMSwgLTUyLjYzNjM3XV1dLCBbW1stNjguMjE5OTEzLCAtMjEuNDk0MzQ3XSwgWy02Ny44MjgxOCwgLTIyLjg3MjkxOV0sIFstNjcuMTA2Njc0LCAtMjIuNzM1OTI1XSwgWy02Ni45ODUyMzQsIC0yMi45ODYzNDldLCBbLTY3LjMyODQ0MywgLTI0LjAyNTMwM10sIFstNjguNDE3NjUzLCAtMjQuNTE4NTU1XSwgWy02OC4zODYwMDEsIC0yNi4xODUwMTZdLCBbLTY4LjU5NDgsIC0yNi41MDY5MDldLCBbLTY4LjI5NTU0MiwgLTI2Ljg5OTM0XSwgWy02OS4wMDEyMzUsIC0yNy41MjEyMTRdLCBbLTY5LjY1NjEzLCAtMjguNDU5MTQxXSwgWy03MC4wMTM1NSwgLTI5LjM2NzkyM10sIFstNjkuOTE5MDA4LCAtMzAuMzM2MzM5XSwgWy03MC41MzUwNjksIC0zMS4zNjUwMV0sIFstNzAuMDc0Mzk5LCAtMzMuMDkxMjFdLCBbLTY5LjgxNDc3NywgLTMzLjI3Mzg4Nl0sIFstNjkuODE3MzA5LCAtMzQuMTkzNTcxXSwgWy03MC4zODgwNDksIC0zNS4xNjk2ODhdLCBbLTcwLjM2NDc2OSwgLTM2LjAwNTA4OV0sIFstNzEuMTIxODgxLCAtMzYuNjU4MTI0XSwgWy03MS4xMTg2MjUsIC0zNy41NzY4MjddLCBbLTcwLjgxNDY2NCwgLTM4LjU1Mjk5NV0sIFstNzEuNDEzNTE3LCAtMzguOTE2MDIyXSwgWy03MS42ODA3NjEsIC0zOS44MDgxNjRdLCBbLTcxLjkxNTczNCwgLTQwLjgzMjMzOV0sIFstNzEuNzQ2ODA0LCAtNDIuMDUxMzg2XSwgWy03Mi4xNDg4OTgsIC00Mi4yNTQ4ODhdLCBbLTcxLjkxNTQyNCwgLTQzLjQwODU2NV0sIFstNzEuNDY0MDU2LCAtNDMuNzg3NjExXSwgWy03MS43OTM2MjMsIC00NC4yMDcxNzJdLCBbLTcxLjMyOTgwMSwgLTQ0LjQwNzUyMl0sIFstNzEuMjIyNzc5LCAtNDQuNzg0MjQzXSwgWy03MS42NTkzMTYsIC00NC45NzM2ODldLCBbLTcxLjU1MjAwOSwgLTQ1LjU2MDczM10sIFstNzEuOTE3MjU4LCAtNDYuODg0ODM4XSwgWy03Mi40NDczNTUsIC00Ny43Mzg1MzNdLCBbLTcyLjMzMTE2MSwgLTQ4LjI0NDIzOF0sIFstNzIuNjQ4MjQ3LCAtNDguODc4NjE4XSwgWy03My40MTU0MzYsIC00OS4zMTg0MzZdLCBbLTczLjMyODA1MSwgLTUwLjM3ODc4NV0sIFstNzIuOTc1NzQ3LCAtNTAuNzQxNDVdLCBbLTcyLjMwOTk3NCwgLTUwLjY3NzAxXSwgWy03Mi4zMjk0MDQsIC01MS40MjU5NTZdLCBbLTcxLjkxNDgwNCwgLTUyLjAwOTAyMl0sIFstNjkuNDk4MzYyLCAtNTIuMTQyNzYxXSwgWy02OC41NzE1NDUsIC01Mi4yOTk0NDRdLCBbLTY5LjQ2MTI4NCwgLTUyLjI5MTk1MV0sIFstNjkuOTQyNzgsIC01Mi41Mzc5MzFdLCBbLTcwLjg0NTEwMiwgLTUyLjg5OTIwMV0sIFstNzEuMDA2MzMyLCAtNTMuODMzMjUyXSwgWy03MS40Mjk3OTUsIC01My44NTY0NTVdLCBbLTcyLjU1Nzk0MywgLTUzLjUzMTQxXSwgWy03My43MDI3NTcsIC01Mi44MzUwNjldLCBbLTczLjcwMjc1NywgLTUyLjgzNTA3XSwgWy03NC45NDY3NjMsIC01Mi4yNjI3NTRdLCBbLTc1LjI2MDAyNiwgLTUxLjYyOTM1NV0sIFstNzQuOTc2NjMyLCAtNTEuMDQzMzk2XSwgWy03NS40Nzk3NTQsIC01MC4zNzgzNzJdLCBbLTc1LjYwODAxNSwgLTQ4LjY3Mzc3M10sIFstNzUuMTgyNzcsIC00Ny43MTE5MTldLCBbLTc0LjEyNjU4MSwgLTQ2LjkzOTI1M10sIFstNzUuNjQ0Mzk1LCAtNDYuNjQ3NjQzXSwgWy03NC42OTIxNTQsIC00NS43NjM5NzZdLCBbLTc0LjM1MTcwOSwgLTQ0LjEwMzA0NF0sIFstNzMuMjQwMzU2LCAtNDQuNDU0OTYxXSwgWy03Mi43MTc4MDQsIC00Mi4zODMzNTZdLCBbLTczLjM4ODksIC00Mi4xMTc1MzJdLCBbLTczLjcwMTMzNiwgLTQzLjM2NTc3Nl0sIFstNzQuMzMxOTQzLCAtNDMuMjI0OTU4XSwgWy03NC4wMTc5NTcsIC00MS43OTQ4MTNdLCBbLTczLjY3NzA5OSwgLTM5Ljk0MjIxM10sIFstNzMuMjE3NTkzLCAtMzkuMjU4Njg5XSwgWy03My41MDU1NTksIC0zOC4yODI4ODNdLCBbLTczLjU4ODA2MSwgLTM3LjE1NjI4NV0sIFstNzMuMTY2NzE3LCAtMzcuMTIzNzhdLCBbLTcyLjU1MzEzNywgLTM1LjUwODg0XSwgWy03MS44NjE3MzIsIC0zMy45MDkwOTNdLCBbLTcxLjQzODQ1LCAtMzIuNDE4ODk5XSwgWy03MS42Njg3MjEsIC0zMC45MjA2NDVdLCBbLTcxLjM3MDA4MywgLTMwLjA5NTY4Ml0sIFstNzEuNDg5ODk0LCAtMjguODYxNDQyXSwgWy03MC45MDUxMjQsIC0yNy42NDAzOF0sIFstNzAuNzI0OTU0LCAtMjUuNzA1OTI0XSwgWy03MC40MDM5NjYsIC0yMy42Mjg5OTddLCBbLTcwLjA5MTI0NiwgLTIxLjM5MzMxOV0sIFstNzAuMTY0NDIsIC0xOS43NTY0NjhdLCBbLTcwLjM3MjU3MiwgLTE4LjM0Nzk3NV0sIFstNjkuODU4NDQ0LCAtMTguMDkyNjk0XSwgWy02OS41OTA0MjQsIC0xNy41ODAwMTJdLCBbLTY5LjEwMDI0NywgLTE4LjI2MDEyNV0sIFstNjguOTY2ODE4LCAtMTguOTgxNjgzXSwgWy02OC40NDIyMjUsIC0xOS40MDUwNjhdLCBbLTY4Ljc1NzE2NywgLTIwLjM3MjY1OF0sIFstNjguMjE5OTEzLCAtMjEuNDk0MzQ3XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJDSEwiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkNoaWxlIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbMTEwLjMzOTE4OCwgMTguNjc4Mzk1XSwgWzEwOS40NzUyMSwgMTguMTk3NzAxXSwgWzEwOC42NTUyMDgsIDE4LjUwNzY4Ml0sIFsxMDguNjI2MjE3LCAxOS4zNjc4ODhdLCBbMTA5LjExOTA1NiwgMTkuODIxMDM5XSwgWzExMC4yMTE1OTksIDIwLjEwMTI1NF0sIFsxMTAuNzg2NTUxLCAyMC4wNzc1MzRdLCBbMTExLjAxMDA1MSwgMTkuNjk1OTNdLCBbMTEwLjU3MDY0NywgMTkuMjU1ODc5XSwgWzExMC4zMzkxODgsIDE4LjY3ODM5NV1dXSwgW1tbMTI3LjY1NzQwNywgNDkuNzYwMjddLCBbMTI5LjM5NzgxOCwgNDkuNDQwNl0sIFsxMzAuNTgyMjkzLCA0OC43Mjk2ODddLCBbMTMwLjk4NzI4MiwgNDcuNzkwMTMyXSwgWzEzMi41MDY2NzIsIDQ3Ljc4ODk3XSwgWzEzMy4zNzM1OTYsIDQ4LjE4MzQ0Ml0sIFsxMzUuMDI2MzExLCA0OC40NzgyM10sIFsxMzQuNTAwODE0LCA0Ny41Nzg0NF0sIFsxMzQuMTEyMzYyLCA0Ny4yMTI0NjddLCBbMTMzLjc2OTY0NCwgNDYuMTE2OTI3XSwgWzEzMy4wOTcxMjcsIDQ1LjE0NDA2Nl0sIFsxMzEuODgzNDU0LCA0NS4zMjExNjJdLCBbMTMxLjAyNTIxMiwgNDQuOTY3OTUzXSwgWzEzMS4yODg1NTUsIDQ0LjExMTUyXSwgWzEzMS4xNDQ2ODgsIDQyLjkyOTk5XSwgWzEzMC42MzM4NjYsIDQyLjkwMzAxNV0sIFsxMzAuNjQwMDE2LCA0Mi4zOTUwMDldLCBbMTI5Ljk5NDI2NywgNDIuOTg1Mzg3XSwgWzEyOS41OTY2NjksIDQyLjQyNDk4Ml0sIFsxMjguMDUyMjE1LCA0MS45OTQyODVdLCBbMTI4LjIwODQzMywgNDEuNDY2NzcyXSwgWzEyNy4zNDM3ODMsIDQxLjUwMzE1Ml0sIFsxMjYuODY5MDgzLCA0MS44MTY1NjldLCBbMTI2LjE4MjA0NSwgNDEuMTA3MzM2XSwgWzEyNS4wNzk5NDIsIDQwLjU2OTgyNF0sIFsxMjQuMjY1NjI1LCAzOS45Mjg0OTNdLCBbMTIyLjg2NzU3LCAzOS42Mzc3ODhdLCBbMTIyLjEzMTM4OCwgMzkuMTcwNDUyXSwgWzEyMS4wNTQ1NTQsIDM4Ljg5NzQ3MV0sIFsxMjEuNTg1OTk1LCAzOS4zNjA4NTRdLCBbMTIxLjM3Njc1NywgMzkuNzUwMjYxXSwgWzEyMi4xNjg1OTUsIDQwLjQyMjQ0M10sIFsxMjEuNjQwMzU5LCA0MC45NDYzOV0sIFsxMjAuNzY4NjI5LCA0MC41OTMzODhdLCBbMTE5LjYzOTYwMiwgMzkuODk4MDU2XSwgWzExOS4wMjM0NjQsIDM5LjI1MjMzM10sIFsxMTguMDQyNzQ5LCAzOS4yMDQyNzRdLCBbMTE3LjUzMjcwMiwgMzguNzM3NjM2XSwgWzExOC4wNTk2OTksIDM4LjA2MTQ3Nl0sIFsxMTguODc4MTUsIDM3Ljg5NzMyNV0sIFsxMTguOTExNjM2LCAzNy40NDg0NjRdLCBbMTE5LjcwMjgwMiwgMzcuMTU2Mzg5XSwgWzEyMC44MjM0NTcsIDM3Ljg3MDQyOF0sIFsxMjEuNzExMjU5LCAzNy40ODExMjNdLCBbMTIyLjM1NzkzNywgMzcuNDU0NDg0XSwgWzEyMi41MTk5OTUsIDM2LjkzMDYxNF0sIFsxMjEuMTA0MTY0LCAzNi42NTEzMjldLCBbMTIwLjYzNzAwOSwgMzYuMTExNDRdLCBbMTE5LjY2NDU2MiwgMzUuNjA5NzkxXSwgWzExOS4xNTEyMDgsIDM0LjkwOTg1OV0sIFsxMjAuMjI3NTI1LCAzNC4zNjAzMzJdLCBbMTIwLjYyMDM2OSwgMzMuMzc2NzIzXSwgWzEyMS4yMjkwMTQsIDMyLjQ2MDMxOV0sIFsxMjEuOTA4MTQ2LCAzMS42OTIxNzRdLCBbMTIxLjg5MTkxOSwgMzAuOTQ5MzUyXSwgWzEyMS4yNjQyNTcsIDMwLjY3NjI2N10sIFsxMjEuNTAzNTE5LCAzMC4xNDI5MTVdLCBbMTIyLjA5MjExNCwgMjkuODMyNTJdLCBbMTIxLjkzODQyOCwgMjkuMDE4MDIyXSwgWzEyMS42ODQ0MzksIDI4LjIyNTUxM10sIFsxMjEuMTI1NjYxLCAyOC4xMzU2NzNdLCBbMTIwLjM5NTQ3MywgMjcuMDUzMjA3XSwgWzExOS41ODU0OTcsIDI1Ljc0MDc4MV0sIFsxMTguNjU2ODcxLCAyNC41NDczOTFdLCBbMTE3LjI4MTYwNiwgMjMuNjI0NTAxXSwgWzExNS44OTA3MzUsIDIyLjc4Mjg3M10sIFsxMTQuNzYzODI3LCAyMi42NjgwNzRdLCBbMTE0LjE1MjU0NywgMjIuMjIzNzZdLCBbMTEzLjgwNjc4LCAyMi41NDgzNF0sIFsxMTMuMjQxMDc4LCAyMi4wNTEzNjddLCBbMTExLjg0MzU5MiwgMjEuNTUwNDk0XSwgWzExMC43ODU0NjYsIDIxLjM5NzE0NF0sIFsxMTAuNDQ0MDM5LCAyMC4zNDEwMzNdLCBbMTA5Ljg4OTg2MSwgMjAuMjgyNDU3XSwgWzEwOS42Mjc2NTUsIDIxLjAwODIyN10sIFsxMDkuODY0NDg4LCAyMS4zOTUwNTFdLCBbMTA4LjUyMjgxMywgMjEuNzE1MjEyXSwgWzEwOC4wNTAxOCwgMjEuNTUyMzhdLCBbMTA3LjA0MzQyLCAyMS44MTE4OTldLCBbMTA2LjU2NzI3MywgMjIuMjE4MjA1XSwgWzEwNi43MjU0MDMsIDIyLjc5NDI2OF0sIFsxMDUuODExMjQ3LCAyMi45NzY4OTJdLCBbMTA1LjMyOTIwOSwgMjMuMzUyMDYzXSwgWzEwNC40NzY4NTgsIDIyLjgxOTE1XSwgWzEwMy41MDQ1MTUsIDIyLjcwMzc1N10sIFsxMDIuNzA2OTkyLCAyMi43MDg3OTVdLCBbMTAyLjE3MDQzNiwgMjIuNDY0NzUzXSwgWzEwMS42NTIwMTgsIDIyLjMxODE5OV0sIFsxMDEuODAzMTIsIDIxLjE3NDM2N10sIFsxMDEuMjcwMDI2LCAyMS4yMDE2NTJdLCBbMTAxLjE4MDAwNSwgMjEuNDM2NTczXSwgWzEwMS4xNTAwMzMsIDIxLjg0OTk4NF0sIFsxMDAuNDE2NTM4LCAyMS41NTg4MzldLCBbOTkuOTgzNDg5LCAyMS43NDI5MzddLCBbOTkuMjQwODk5LCAyMi4xMTgzMTRdLCBbOTkuNTMxOTkyLCAyMi45NDkwMzldLCBbOTguODk4NzQ5LCAyMy4xNDI3MjJdLCBbOTguNjYwMjYyLCAyNC4wNjMyODZdLCBbOTcuNjA0NzIsIDIzLjg5NzQwNV0sIFs5Ny43MjQ2MDksIDI1LjA4MzYzN10sIFs5OC42NzE4MzgsIDI1LjkxODcwM10sIFs5OC43MTIwOTQsIDI2Ljc0MzUzNl0sIFs5OC42ODI2OSwgMjcuNTA4ODEyXSwgWzk4LjI0NjIzMSwgMjcuNzQ3MjIxXSwgWzk3LjkxMTk4OCwgMjguMzM1OTQ1XSwgWzk3LjMyNzExNCwgMjguMjYxNTgzXSwgWzk2LjI0ODgzMywgMjguNDExMDMxXSwgWzk2LjU4NjU5MSwgMjguODMwOThdLCBbOTYuMTE3Njc5LCAyOS40NTI4MDJdLCBbOTUuNDA0ODAyLCAyOS4wMzE3MTddLCBbOTQuNTY1OTksIDI5LjI3NzQzOF0sIFs5My40MTMzNDgsIDI4LjY0MDYyOV0sIFs5Mi41MDMxMTksIDI3Ljg5Njg3Nl0sIFs5MS42OTY2NTcsIDI3Ljc3MTc0Ml0sIFs5MS4yNTg4NTQsIDI4LjA0MDYxNF0sIFs5MC43MzA1MTQsIDI4LjA2NDk1NF0sIFs5MC4wMTU4MjksIDI4LjI5NjQzOV0sIFs4OS40NzU4MSwgMjguMDQyNzU5XSwgWzg4LjgxNDI0OCwgMjcuMjk5MzE2XSwgWzg4LjczMDMyNiwgMjguMDg2ODY1XSwgWzg4LjEyMDQ0MSwgMjcuODc2NTQyXSwgWzg2Ljk1NDUxNywgMjcuOTc0MjYyXSwgWzg1LjgyMzMyLCAyOC4yMDM1NzZdLCBbODUuMDExNjM4LCAyOC42NDI3NzRdLCBbODQuMjM0NTgsIDI4LjgzOTg5NF0sIFs4My44OTg5OTMsIDI5LjMyMDIyNl0sIFs4My4zMzcxMTUsIDI5LjQ2MzczMl0sIFs4Mi4zMjc1MTMsIDMwLjExNTI2OF0sIFs4MS41MjU4MDQsIDMwLjQyMjcxN10sIFs4MS4xMTEyNTYsIDMwLjE4MzQ4MV0sIFs3OS43MjEzNjcsIDMwLjg4MjcxNV0sIFs3OC43Mzg4OTQsIDMxLjUxNTkwNl0sIFs3OC40NTg0NDYsIDMyLjYxODE2NF0sIFs3OS4xNzYxMjksIDMyLjQ4Mzc4XSwgWzc5LjIwODg5MiwgMzIuOTk0Mzk1XSwgWzc4LjgxMTA4NiwgMzMuNTA2MTk4XSwgWzc4LjkxMjI2OSwgMzQuMzIxOTM2XSwgWzc3LjgzNzQ1MSwgMzUuNDk0MDFdLCBbNzYuMTkyODQ4LCAzNS44OTg0MDNdLCBbNzUuODk2ODk3LCAzNi42NjY4MDZdLCBbNzUuMTU4MDI4LCAzNy4xMzMwMzFdLCBbNzQuOTgwMDAyLCAzNy40MTk5OV0sIFs3NC44Mjk5ODYsIDM3Ljk5MDAwN10sIFs3NC44NjQ4MTYsIDM4LjM3ODg0Nl0sIFs3NC4yNTc1MTQsIDM4LjYwNjUwN10sIFs3My45Mjg4NTIsIDM4LjUwNTgxNV0sIFs3My42NzUzNzksIDM5LjQzMTIzN10sIFs3My45NjAwMTMsIDM5LjY2MDAwOF0sIFs3My44MjIyNDQsIDM5Ljg5Mzk3M10sIFs3NC43NzY4NjIsIDQwLjM2NjQyNV0sIFs3NS40Njc4MjgsIDQwLjU2MjA3Ml0sIFs3Ni41MjYzNjgsIDQwLjQyNzk0Nl0sIFs3Ni45MDQ0ODQsIDQxLjA2NjQ4Nl0sIFs3OC4xODcxOTcsIDQxLjE4NTMxNl0sIFs3OC41NDM2NjEsIDQxLjU4MjI0M10sIFs4MC4xMTk0MywgNDIuMTIzOTQxXSwgWzgwLjI1OTk5LCA0Mi4zNDk5OTldLCBbODAuMTgwMTUsIDQyLjkyMDA2OF0sIFs4MC44NjYyMDYsIDQzLjE4MDM2Ml0sIFs3OS45NjYxMDYsIDQ0LjkxNzUxN10sIFs4MS45NDcwNzEsIDQ1LjMxNzAyN10sIFs4Mi40NTg5MjYsIDQ1LjUzOTY1XSwgWzgzLjE4MDQ4NCwgNDcuMzMwMDMxXSwgWzg1LjE2NDI5LCA0Ny4wMDA5NTZdLCBbODUuNzIwNDg0LCA0Ny40NTI5NjldLCBbODUuNzY4MjMzLCA0OC40NTU3NTFdLCBbODYuNTk4Nzc2LCA0OC41NDkxODJdLCBbODcuMzU5OTcsIDQ5LjIxNDk4MV0sIFs4Ny43NTEyNjQsIDQ5LjI5NzE5OF0sIFs4OC4wMTM4MzIsIDQ4LjU5OTQ2M10sIFs4OC44NTQyOTgsIDQ4LjA2OTA4Ml0sIFs5MC4yODA4MjYsIDQ3LjY5MzU0OV0sIFs5MC45NzA4MDksIDQ2Ljg4ODE0Nl0sIFs5MC41ODU3NjgsIDQ1LjcxOTcxNl0sIFs5MC45NDU1NCwgNDUuMjg2MDczXSwgWzkyLjEzMzg5MSwgNDUuMTE1MDc2XSwgWzkzLjQ4MDczNCwgNDQuOTc1NDcyXSwgWzk0LjY4ODkyOSwgNDQuMzUyMzMyXSwgWzk1LjMwNjg3NSwgNDQuMjQxMzMxXSwgWzk1Ljc2MjQ1NSwgNDMuMzE5NDQ5XSwgWzk2LjM0OTM5NiwgNDIuNzI1NjM1XSwgWzk3LjQ1MTc1NywgNDIuNzQ4ODldLCBbOTkuNTE1ODE3LCA0Mi41MjQ2OTFdLCBbMTAwLjg0NTg2NiwgNDIuNjYzODA0XSwgWzEwMS44MzMwNCwgNDIuNTE0ODczXSwgWzEwMy4zMTIyNzgsIDQxLjkwNzQ2OF0sIFsxMDQuNTIyMjgyLCA0MS45MDgzNDddLCBbMTA0Ljk2NDk5NCwgNDEuNTk3NDFdLCBbMTA2LjEyOTMxNiwgNDIuMTM0MzI4XSwgWzEwNy43NDQ3NzMsIDQyLjQ4MTUxNl0sIFsxMDkuMjQzNTk2LCA0Mi41MTk0NDZdLCBbMTEwLjQxMjEwMywgNDIuODcxMjM0XSwgWzExMS4xMjk2ODIsIDQzLjQwNjgzNF0sIFsxMTEuODI5NTg4LCA0My43NDMxMThdLCBbMTExLjY2NzczNywgNDQuMDczMTc2XSwgWzExMS4zNDgzNzcsIDQ0LjQ1NzQ0Ml0sIFsxMTEuODczMzA2LCA0NS4xMDIwNzldLCBbMTEyLjQzNjA2MiwgNDUuMDExNjQ2XSwgWzExMy40NjM5MDcsIDQ0LjgwODg5M10sIFsxMTQuNDYwMzMyLCA0NS4zMzk4MTddLCBbMTE1Ljk4NTA5NiwgNDUuNzI3MjM1XSwgWzExNi43MTc4NjgsIDQ2LjM4ODIwMl0sIFsxMTcuNDIxNzAxLCA0Ni42NzI3MzNdLCBbMTE4Ljg3NDMyNiwgNDYuODA1NDEyXSwgWzExOS42NjMyNywgNDYuNjkyNjhdLCBbMTE5Ljc3MjgyNCwgNDcuMDQ4MDU5XSwgWzExOC44NjY1NzQsIDQ3Ljc0NzA2XSwgWzExOC4wNjQxNDMsIDQ4LjA2NjczXSwgWzExNy4yOTU1MDcsIDQ3LjY5NzcwOV0sIFsxMTYuMzA4OTUzLCA0Ny44NTM0MV0sIFsxMTUuNzQyODM3LCA0Ny43MjY1NDVdLCBbMTE1LjQ4NTI4MiwgNDguMTM1MzgzXSwgWzExNi4xOTE4MDIsIDQ5LjEzNDU5OF0sIFsxMTYuNjc4ODAxLCA0OS44ODg1MzFdLCBbMTE3Ljg3OTI0NCwgNDkuNTEwOTgzXSwgWzExOS4yODg0NjEsIDUwLjE0Mjg4M10sIFsxMTkuMjc5MzY2LCA1MC41ODI5MDhdLCBbMTIwLjE4MjA1LCA1MS42NDM1NjZdLCBbMTIwLjczODE5MSwgNTEuOTY0MTE1XSwgWzEyMC43MjU3ODksIDUyLjUxNjIyNl0sIFsxMjAuMTc3MDg5LCA1Mi43NTM4ODZdLCBbMTIxLjAwMzA4NSwgNTMuMjUxNDAxXSwgWzEyMi4yNDU3NDgsIDUzLjQzMTcyNl0sIFsxMjMuNTcxNTA3LCA1My40NTg4MDRdLCBbMTI1LjA2ODIxMSwgNTMuMTYxMDQ1XSwgWzEyNS45NDYzNDksIDUyLjc5Mjc5OV0sIFsxMjYuNTY0Mzk5LCA1MS43ODQyNTVdLCBbMTI2LjkzOTE1NywgNTEuMzUzODk0XSwgWzEyNy4yODc0NTYsIDUwLjczOTc5N10sIFsxMjcuNjU3NDA3LCA0OS43NjAyN11dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQ0hOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDaGluYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNiMTAwMjYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuODU2MTI1LCA0Ljk5NDQ3Nl0sIFstMy4zMTEwODQsIDQuOTg0Mjk2XSwgWy00LjAwODgyLCA1LjE3OTgxM10sIFstNC42NDk5MTcsIDUuMTY4MjY0XSwgWy01LjgzNDQ5NiwgNC45OTM3MDFdLCBbLTYuNTI4NzY5LCA0LjcwNTA4OF0sIFstNy41MTg5NDEsIDQuMzM4Mjg4XSwgWy03LjcxMjE1OSwgNC4zNjQ1NjZdLCBbLTcuNjM1MzY4LCA1LjE4ODE1OV0sIFstNy41Mzk3MTUsIDUuMzEzMzQ1XSwgWy03LjU3MDE1MywgNS43MDczNTJdLCBbLTcuOTkzNjkzLCA2LjEyNjE5XSwgWy04LjMxMTM0OCwgNi4xOTMwMzNdLCBbLTguNjAyODgsIDYuNDY3NTY0XSwgWy04LjM4NTQ1MiwgNi45MTE4MDFdLCBbLTguNDg1NDQ2LCA3LjM5NTIwOF0sIFstOC40MzkyOTgsIDcuNjg2MDQzXSwgWy04LjI4MDcwMywgNy42ODcxOF0sIFstOC4yMjE3OTIsIDguMTIzMzI5XSwgWy04LjI5OTA0OSwgOC4zMTY0NDRdLCBbLTguMjAzNDk5LCA4LjQ1NTQ1M10sIFstNy44MzIxLCA4LjU3NTcwNF0sIFstOC4wNzkxMTQsIDkuMzc2MjI0XSwgWy04LjMwOTYxNiwgOS43ODk1MzJdLCBbLTguMjI5MzM3LCAxMC4xMjkwMl0sIFstOC4wMjk5NDQsIDEwLjIwNjUzNV0sIFstNy44OTk1OSwgMTAuMjk3MzgyXSwgWy03LjYyMjc1OSwgMTAuMTQ3MjM2XSwgWy02Ljg1MDUwNywgMTAuMTM4OTk0XSwgWy02LjY2NjQ2MSwgMTAuNDMwODExXSwgWy02LjQ5Mzk2NSwgMTAuNDExMzAzXSwgWy02LjIwNTIyMywgMTAuNTI0MDYxXSwgWy02LjA1MDQ1MiwgMTAuMDk2MzYxXSwgWy01LjgxNjkyNiwgMTAuMjIyNTU1XSwgWy01LjQwNDM0MiwgMTAuMzcwNzM3XSwgWy00Ljk1NDY1MywgMTAuMTUyNzE0XSwgWy00Ljc3OTg4NCwgOS44MjE5ODVdLCBbLTQuMzMwMjQ3LCA5LjYxMDgzNV0sIFstMy45ODA0NDksIDkuODYyMzQ0XSwgWy0zLjUxMTg5OSwgOS45MDAzMjZdLCBbLTIuODI3NDk2LCA5LjY0MjQ2MV0sIFstMi41NjIxOSwgOC4yMTk2MjhdLCBbLTIuOTgzNTg1LCA3LjM3OTcwNV0sIFstMy4yNDQzNywgNi4yNTA0NzJdLCBbLTIuODEwNzAxLCA1LjM4OTA1MV0sIFstMi44NTYxMjUsIDQuOTk0NDc2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDSVYiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkl2b3J5IENvYXN0IiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxMy4wNzU4MjIsIDIuMjY3MDk3XSwgWzEyLjk1MTMzNCwgMi4zMjE2MTZdLCBbMTIuMzU5MzgsIDIuMTkyODEyXSwgWzExLjc1MTY2NSwgMi4zMjY3NThdLCBbMTEuMjc2NDQ5LCAyLjI2MTA1MV0sIFs5LjY0OTE1OCwgMi4yODM4NjZdLCBbOS43OTUxOTYsIDMuMDczNDA0XSwgWzkuNDA0MzY3LCAzLjczNDUyN10sIFs4Ljk0ODExNiwgMy45MDQxMjldLCBbOC43NDQ5MjQsIDQuMzUyMjE1XSwgWzguNDg4ODE2LCA0LjQ5NTYxN10sIFs4LjUwMDI4OCwgNC43NzE5ODNdLCBbOC43NTc1MzMsIDUuNDc5NjY2XSwgWzkuMjMzMTYzLCA2LjQ0NDQ5MV0sIFs5LjUyMjcwNiwgNi40NTM0ODJdLCBbMTAuMTE4Mjc3LCA3LjAzODc3XSwgWzEwLjQ5NzM3NSwgNy4wNTUzNThdLCBbMTEuMDU4Nzg4LCA2LjY0NDQyN10sIFsxMS43NDU3NzQsIDYuOTgxMzgzXSwgWzExLjgzOTMwOSwgNy4zOTcwNDJdLCBbMTIuMDYzOTQ2LCA3Ljc5OTgwOF0sIFsxMi4yMTg4NzIsIDguMzA1ODI0XSwgWzEyLjc1MzY3MiwgOC43MTc3NjNdLCBbMTIuOTU1NDY4LCA5LjQxNzc3Ml0sIFsxMy4xNjc2LCA5LjY0MDYyNl0sIFsxMy4zMDg2NzYsIDEwLjE2MDM2Ml0sIFsxMy41NzI5NSwgMTAuNzk4NTY2XSwgWzE0LjQxNTM3OSwgMTEuNTcyMzY5XSwgWzE0LjQ2ODE5MiwgMTEuOTA0NzUyXSwgWzE0LjU3NzE3OCwgMTIuMDg1MzYxXSwgWzE0LjE4MTMzNiwgMTIuNDgzNjU3XSwgWzE0LjIxMzUzMSwgMTIuODAyMDM1XSwgWzE0LjQ5NTc4NywgMTIuODU5Mzk2XSwgWzE0Ljg5MzM4NiwgMTIuMjE5MDQ4XSwgWzE0Ljk2MDE1MiwgMTEuNTU1NTc0XSwgWzE0LjkyMzU2NSwgMTAuODkxMzI1XSwgWzE1LjQ2Nzg3MywgOS45ODIzMzddLCBbMTQuOTA5MzU0LCA5Ljk5MjEyOV0sIFsxNC42MjcyMDEsIDkuOTIwOTE5XSwgWzE0LjE3MTQ2NiwgMTAuMDIxMzc4XSwgWzEzLjk1NDIxOCwgOS41NDk0OTVdLCBbMTQuNTQ0NDY3LCA4Ljk2NTg2MV0sIFsxNC45Nzk5OTYsIDguNzk2MTA0XSwgWzE1LjEyMDg2NiwgOC4zODIxNV0sIFsxNS40MzYwOTIsIDcuNjkyODEyXSwgWzE1LjI3OTQ2LCA3LjQyMTkyNV0sIFsxNC43NzY1NDUsIDYuNDA4NDk4XSwgWzE0LjUzNjU2LCA2LjIyNjk1OV0sIFsxNC40NTk0MDcsIDUuNDUxNzYxXSwgWzE0LjU1ODkzNiwgNS4wMzA1OThdLCBbMTQuNDc4MzcyLCA0LjczMjYwNV0sIFsxNC45NTA5NTMsIDQuMjEwMzg5XSwgWzE1LjAzNjIyLCAzLjg1MTM2N10sIFsxNS40MDUzOTYsIDMuMzM1MzAxXSwgWzE1Ljg2MjczMiwgMy4wMTM1MzddLCBbMTUuOTA3MzgxLCAyLjU1NzM4OV0sIFsxNi4wMTI4NTIsIDIuMjY3NjRdLCBbMTUuOTQwOTE5LCAxLjcyNzY3M10sIFsxNS4xNDYzNDIsIDEuOTY0MDE1XSwgWzE0LjMzNzgxMywgMi4yMjc4NzVdLCBbMTMuMDc1ODIyLCAyLjI2NzA5N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ01SIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDYW1lcm9vbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMzAuODMzODYsIDMuNTA5MTY2XSwgWzMwLjc3MzM0NywgMi4zMzk4ODNdLCBbMzEuMTc0MTQ5LCAyLjIwNDQ2NV0sIFszMC44NTI2NywgMS44NDkzOTZdLCBbMzAuNDY4NTA4LCAxLjU4MzgwNV0sIFszMC4wODYxNTQsIDEuMDYyMzEzXSwgWzI5Ljg3NTc3OSwgMC41OTczOF0sIFsyOS44MTk1MDMsIC0wLjIwNTMxXSwgWzI5LjU4NzgzOCwgLTAuNTg3NDA2XSwgWzI5LjU3OTQ2NiwgLTEuMzQxMzEzXSwgWzI5LjI5MTg4NywgLTEuNjIwMDU2XSwgWzI5LjI1NDgzNSwgLTIuMjE1MTFdLCBbMjkuMTE3NDc5LCAtMi4yOTIyMTFdLCBbMjkuMDI0OTI2LCAtMi44MzkyNThdLCBbMjkuMjc2Mzg0LCAtMy4yOTM5MDddLCBbMjkuMzM5OTk4LCAtNC40OTk5ODNdLCBbMjkuNTE5OTg3LCAtNS40MTk5NzldLCBbMjkuNDE5OTkzLCAtNS45Mzk5OTldLCBbMjkuNjIwMDMyLCAtNi41MjAwMTVdLCBbMzAuMTk5OTk3LCAtNy4wNzk5ODFdLCBbMzAuNzQwMDE1LCAtOC4zNDAwMDddLCBbMzAuMzQ2MDg2LCAtOC4yMzgyNTddLCBbMjkuMDAyOTEyLCAtOC40MDcwMzJdLCBbMjguNzM0ODY3LCAtOC41MjY1NTldLCBbMjguNDQ5ODcxLCAtOS4xNjQ5MThdLCBbMjguNjczNjgyLCAtOS42MDU5MjVdLCBbMjguNDk2MDcsIC0xMC43ODk4ODRdLCBbMjguMzcyMjUzLCAtMTEuNzkzNjQ3XSwgWzI4LjY0MjQxNywgLTExLjk3MTU2OV0sIFsyOS4zNDE1NDgsIC0xMi4zNjA3NDRdLCBbMjkuNjE2MDAxLCAtMTIuMTc4ODk1XSwgWzI5LjY5OTYxNCwgLTEzLjI1NzIyN10sIFsyOC45MzQyODYsIC0xMy4yNDg5NThdLCBbMjguNTIzNTYyLCAtMTIuNjk4NjA0XSwgWzI4LjE1NTEwOSwgLTEyLjI3MjQ4MV0sIFsyNy4zODg3OTksIC0xMi4xMzI3NDddLCBbMjcuMTY0NDIsIC0xMS42MDg3NDhdLCBbMjYuNTUzMDg4LCAtMTEuOTI0NDRdLCBbMjUuNzUyMzEsIC0xMS43ODQ5NjVdLCBbMjUuNDE4MTE4LCAtMTEuMzMwOTM2XSwgWzI0Ljc4MzE3LCAtMTEuMjM4Njk0XSwgWzI0LjMxNDUxNiwgLTExLjI2MjgyNl0sIFsyNC4yNTcxNTUsIC0xMC45NTE5OTNdLCBbMjMuOTEyMjE1LCAtMTAuOTI2ODI2XSwgWzIzLjQ1Njc5MSwgLTEwLjg2Nzg2M10sIFsyMi44MzczNDUsIC0xMS4wMTc2MjJdLCBbMjIuNDAyNzk4LCAtMTAuOTkzMDc1XSwgWzIyLjE1NTI2OCwgLTExLjA4NDgwMV0sIFsyMi4yMDg3NTMsIC05Ljg5NDc5Nl0sIFsyMS44NzUxODIsIC05LjUyMzcwOF0sIFsyMS44MDE4MDEsIC04LjkwODcwN10sIFsyMS45NDkxMzEsIC04LjMwNTkwMV0sIFsyMS43NDY0NTYsIC03LjkyMDA4NV0sIFsyMS43MjgxMTEsIC03LjI5MDg3Ml0sIFsyMC41MTQ3NDgsIC03LjI5OTYwNl0sIFsyMC42MDE4MjMsIC02LjkzOTMxOF0sIFsyMC4wOTE2MjIsIC02Ljk0MzA5XSwgWzIwLjAzNzcyMywgLTcuMTE2MzYxXSwgWzE5LjQxNzUwMiwgLTcuMTU1NDI5XSwgWzE5LjE2NjYxMywgLTcuNzM4MTg0XSwgWzE5LjAxNjc1MiwgLTcuOTg4MjQ2XSwgWzE4LjQ2NDE3NiwgLTcuODQ3MDE0XSwgWzE4LjEzNDIyMiwgLTcuOTg3Njc4XSwgWzE3LjQ3Mjk3LCAtOC4wNjg1NTFdLCBbMTcuMDg5OTk2LCAtNy41NDU2ODldLCBbMTYuODYwMTkxLCAtNy4yMjIyOThdLCBbMTYuNTczMTgsIC02LjYyMjY0NV0sIFsxNi4zMjY1MjgsIC01Ljg3NzQ3XSwgWzEzLjM3NTU5NywgLTUuODY0MjQxXSwgWzEzLjAyNDg2OSwgLTUuOTg0Mzg5XSwgWzEyLjczNTE3MSwgLTUuOTY1NjgyXSwgWzEyLjMyMjQzMiwgLTYuMTAwMDkyXSwgWzEyLjE4MjMzNywgLTUuNzg5OTMxXSwgWzEyLjQzNjY4OCwgLTUuNjg0MzA0XSwgWzEyLjQ2ODAwNCwgLTUuMjQ4MzYyXSwgWzEyLjYzMTYxMiwgLTQuOTkxMjcxXSwgWzEyLjk5NTUxNywgLTQuNzgxMTAzXSwgWzEzLjI1ODI0LCAtNC44ODI5NTddLCBbMTMuNjAwMjM1LCAtNC41MDAxMzhdLCBbMTQuMTQ0OTU2LCAtNC41MTAwMDldLCBbMTQuMjA5MDM1LCAtNC43OTMwOTJdLCBbMTQuNTgyNjA0LCAtNC45NzAyMzldLCBbMTUuMTcwOTkyLCAtNC4zNDM1MDddLCBbMTUuNzUzNTQsIC0zLjg1NTE2NV0sIFsxNi4wMDYyOSwgLTMuNTM1MTMzXSwgWzE1Ljk3MjgwMywgLTIuNzEyMzkyXSwgWzE2LjQwNzA5MiwgLTEuNzQwOTI3XSwgWzE2Ljg2NTMwNywgLTEuMjI1ODE2XSwgWzE3LjUyMzcxNiwgLTAuNzQzODNdLCBbMTcuNjM4NjQ1LCAtMC40MjQ4MzJdLCBbMTcuNjYzNTUzLCAtMC4wNTgwODRdLCBbMTcuODI2NTQsIDAuMjg4OTIzXSwgWzE3Ljc3NDE5MiwgMC44NTU2NTldLCBbMTcuODk4ODM1LCAxLjc0MTgzMl0sIFsxOC4wOTQyNzYsIDIuMzY1NzIyXSwgWzE4LjM5Mzc5MiwgMi45MDA0NDNdLCBbMTguNDUzMDY1LCAzLjUwNDM4Nl0sIFsxOC41NDI5ODIsIDQuMjAxNzg1XSwgWzE4LjkzMjMxMiwgNC43MDk1MDZdLCBbMTkuNDY3Nzg0LCA1LjAzMTUyOF0sIFsyMC4yOTA2NzksIDQuNjkxNjc4XSwgWzIwLjkyNzU5MSwgNC4zMjI3ODZdLCBbMjEuNjU5MTIzLCA0LjIyNDM0Ml0sIFsyMi40MDUxMjQsIDQuMDI5MTZdLCBbMjIuNzA0MTI0LCA0LjYzMzA1MV0sIFsyMi44NDE0OCwgNC43MTAxMjZdLCBbMjMuMjk3MjE0LCA0LjYwOTY5M10sIFsyNC40MTA1MzEsIDUuMTA4Nzg0XSwgWzI0LjgwNTAyOSwgNC44OTcyNDddLCBbMjUuMTI4ODMzLCA0LjkyNzI0NV0sIFsyNS4yNzg3OTgsIDUuMTcwNDA4XSwgWzI1LjY1MDQ1NSwgNS4yNTYwODhdLCBbMjYuNDAyNzYxLCA1LjE1MDg3NV0sIFsyNy4wNDQwNjUsIDUuMTI3ODUzXSwgWzI3LjM3NDIyNiwgNS4yMzM5NDRdLCBbMjcuOTc5OTc3LCA0LjQwODQxM10sIFsyOC40Mjg5OTQsIDQuMjg3MTU1XSwgWzI4LjY5NjY3OCwgNC40NTUwNzddLCBbMjkuMTU5MDc4LCA0LjM4OTI2N10sIFsyOS43MTU5OTUsIDQuNjAwODA1XSwgWzI5Ljk1MzUsIDQuMTczNjk5XSwgWzMwLjgzMzg2LCAzLjUwOTE2Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ09EIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZSBDb25nbyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTIuOTk1NTE3LCAtNC43ODExMDNdLCBbMTIuNjIwNzYsIC00LjQzODAyM10sIFsxMi4zMTg2MDgsIC00LjYwNjIzXSwgWzExLjkxNDk2MywgLTUuMDM3OTg3XSwgWzExLjA5Mzc3MywgLTMuOTc4ODI3XSwgWzExLjg1NTEyMiwgLTMuNDI2ODcxXSwgWzExLjQ3ODAzOSwgLTIuNzY1NjE5XSwgWzExLjgyMDk2NCwgLTIuNTE0MTYxXSwgWzEyLjQ5NTcwMywgLTIuMzkxNjg4XSwgWzEyLjU3NTI4NCwgLTEuOTQ4NTExXSwgWzEzLjEwOTYxOSwgLTIuNDI4NzRdLCBbMTMuOTkyNDA3LCAtMi40NzA4MDVdLCBbMTQuMjk5MjEsIC0xLjk5ODI3Nl0sIFsxNC40MjU0NTYsIC0xLjMzMzQwN10sIFsxNC4zMTY0MTgsIC0wLjU1MjYyN10sIFsxMy44NDMzMjEsIDAuMDM4NzU4XSwgWzE0LjI3NjI2NiwgMS4xOTY5M10sIFsxNC4wMjY2NjksIDEuMzk1Njc3XSwgWzEzLjI4MjYzMSwgMS4zMTQxODRdLCBbMTMuMDAzMTE0LCAxLjgzMDg5Nl0sIFsxMy4wNzU4MjIsIDIuMjY3MDk3XSwgWzE0LjMzNzgxMywgMi4yMjc4NzVdLCBbMTUuMTQ2MzQyLCAxLjk2NDAxNV0sIFsxNS45NDA5MTksIDEuNzI3NjczXSwgWzE2LjAxMjg1MiwgMi4yNjc2NF0sIFsxNi41MzcwNTgsIDMuMTk4MjU1XSwgWzE3LjEzMzA0MiwgMy43MjgxOTddLCBbMTcuODA5OSwgMy41NjAxOTZdLCBbMTguNDUzMDY1LCAzLjUwNDM4Nl0sIFsxOC4zOTM3OTIsIDIuOTAwNDQzXSwgWzE4LjA5NDI3NiwgMi4zNjU3MjJdLCBbMTcuODk4ODM1LCAxLjc0MTgzMl0sIFsxNy43NzQxOTIsIDAuODU1NjU5XSwgWzE3LjgyNjU0LCAwLjI4ODkyM10sIFsxNy42NjM1NTMsIC0wLjA1ODA4NF0sIFsxNy42Mzg2NDUsIC0wLjQyNDgzMl0sIFsxNy41MjM3MTYsIC0wLjc0MzgzXSwgWzE2Ljg2NTMwNywgLTEuMjI1ODE2XSwgWzE2LjQwNzA5MiwgLTEuNzQwOTI3XSwgWzE1Ljk3MjgwMywgLTIuNzEyMzkyXSwgWzE2LjAwNjI5LCAtMy41MzUxMzNdLCBbMTUuNzUzNTQsIC0zLjg1NTE2NV0sIFsxNS4xNzA5OTIsIC00LjM0MzUwN10sIFsxNC41ODI2MDQsIC00Ljk3MDIzOV0sIFsxNC4yMDkwMzUsIC00Ljc5MzA5Ml0sIFsxNC4xNDQ5NTYsIC00LjUxMDAwOV0sIFsxMy42MDAyMzUsIC00LjUwMDEzOF0sIFsxMy4yNTgyNCwgLTQuODgyOTU3XSwgWzEyLjk5NTUxNywgLTQuNzgxMTAzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDT0ciLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlJlcHVibGljIG9mIHRoZSBDb25nbyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTc1LjM3MzIyMywgLTAuMTUyMDMyXSwgWy03NS44MDE0NjYsIDAuMDg0ODAxXSwgWy03Ni4yOTIzMTQsIDAuNDE2MDQ3XSwgWy03Ni41NzYzOCwgMC4yNTY5MzZdLCBbLTc3LjQyNDk4NCwgMC4zOTU2ODddLCBbLTc3LjY2ODYxMywgMC44MjU4OTNdLCBbLTc3Ljg1NTA2MSwgMC44MDk5MjVdLCBbLTc4Ljg1NTI1OSwgMS4zODA5MjRdLCBbLTc4Ljk5MDkzNSwgMS42OTEzN10sIFstNzguNjE3ODMxLCAxLjc2NjQwNF0sIFstNzguNjYyMTE4LCAyLjI2NzM1NV0sIFstNzguNDI3NjEsIDIuNjI5NTU2XSwgWy03Ny45MzE1NDMsIDIuNjk2NjA2XSwgWy03Ny41MTA0MzEsIDMuMzI1MDE3XSwgWy03Ny4xMjc2OSwgMy44NDk2MzZdLCBbLTc3LjQ5NjI3MiwgNC4wODc2MDZdLCBbLTc3LjMwNzYwMSwgNC42Njc5ODRdLCBbLTc3LjUzMzIyMSwgNS41ODI4MTJdLCBbLTc3LjMxODgxNSwgNS44NDUzNTRdLCBbLTc3LjQ3NjY2MSwgNi42OTExMTZdLCBbLTc3Ljg4MTU3MSwgNy4yMjM3NzFdLCBbLTc3Ljc1MzQxNCwgNy43MDk4NF0sIFstNzcuNDMxMTA4LCA3LjYzODA2MV0sIFstNzcuMjQyNTY2LCA3LjkzNTI3OF0sIFstNzcuNDc0NzIzLCA4LjUyNDI4Nl0sIFstNzcuMzUzMzYxLCA4LjY3MDUwNV0sIFstNzYuODM2Njc0LCA4LjYzODc0OV0sIFstNzYuMDg2Mzg0LCA5LjMzNjgyMV0sIFstNzUuNjc0NiwgOS40NDMyNDhdLCBbLTc1LjY2NDcwNCwgOS43NzQwMDNdLCBbLTc1LjQ4MDQyNiwgMTAuNjE4OTldLCBbLTc0LjkwNjg5NSwgMTEuMDgzMDQ1XSwgWy03NC4yNzY3NTMsIDExLjEwMjAzNl0sIFstNzQuMTk3MjIzLCAxMS4zMTA0NzNdLCBbLTczLjQxNDc2NCwgMTEuMjI3MDE1XSwgWy03Mi42Mjc4MzUsIDExLjczMTk3Ml0sIFstNzIuMjM4MTk1LCAxMS45NTU1NV0sIFstNzEuNzU0MDksIDEyLjQzNzMwM10sIFstNzEuMzk5ODIyLCAxMi4zNzYwNDFdLCBbLTcxLjEzNzQ2MSwgMTIuMTEyOTgyXSwgWy03MS4zMzE1ODQsIDExLjc3NjI4NF0sIFstNzEuOTczOTIyLCAxMS42MDg2NzJdLCBbLTcyLjIyNzU3NSwgMTEuMTA4NzAyXSwgWy03Mi42MTQ2NTgsIDEwLjgyMTk3NV0sIFstNzIuOTA1Mjg2LCAxMC40NTAzNDRdLCBbLTczLjAyNzYwNCwgOS43MzY3N10sIFstNzMuMzA0OTUyLCA5LjE1Ml0sIFstNzIuNzg4NzMsIDkuMDg1MDI3XSwgWy03Mi42NjA0OTUsIDguNjI1Mjg4XSwgWy03Mi40Mzk4NjIsIDguNDA1Mjc1XSwgWy03Mi4zNjA5MDEsIDguMDAyNjM4XSwgWy03Mi40Nzk2NzksIDcuNjMyNTA2XSwgWy03Mi40NDQ0ODcsIDcuNDIzNzg1XSwgWy03Mi4xOTgzNTIsIDcuMzQwNDMxXSwgWy03MS45NjAxNzYsIDYuOTkxNjE1XSwgWy03MC42NzQyMzQsIDcuMDg3Nzg1XSwgWy03MC4wOTMzMTMsIDYuOTYwMzc2XSwgWy02OS4zODk0OCwgNi4wOTk4NjFdLCBbLTY4Ljk4NTMxOSwgNi4yMDY4MDVdLCBbLTY4LjI2NTA1MiwgNi4xNTMyNjhdLCBbLTY3LjY5NTA4NywgNi4yNjczMThdLCBbLTY3LjM0MTQ0LCA2LjA5NTQ2OF0sIFstNjcuNTIxNTMyLCA1LjU1Njg3XSwgWy02Ny43NDQ2OTcsIDUuMjIxMTI5XSwgWy02Ny44MjMwMTIsIDQuNTAzOTM3XSwgWy02Ny42MjE4MzYsIDMuODM5NDgyXSwgWy02Ny4zMzc1NjQsIDMuNTQyMzQyXSwgWy02Ny4zMDMxNzMsIDMuMzE4NDU0XSwgWy02Ny44MDk5MzgsIDIuODIwNjU1XSwgWy02Ny40NDcwOTIsIDIuNjAwMjgxXSwgWy02Ny4xODEyOTQsIDIuMjUwNjM4XSwgWy02Ni44NzYzMjYsIDEuMjUzMzYxXSwgWy02Ny4wNjUwNDgsIDEuMTMwMTEyXSwgWy02Ny4yNTk5OTgsIDEuNzE5OTk5XSwgWy02Ny41Mzc4MSwgMi4wMzcxNjNdLCBbLTY3Ljg2ODU2NSwgMS42OTI0NTVdLCBbLTY5LjgxNjk3MywgMS43MTQ4MDVdLCBbLTY5LjgwNDU5NywgMS4wODkwODFdLCBbLTY5LjIxODYzOCwgMC45ODU2NzddLCBbLTY5LjI1MjQzNCwgMC42MDI2NTFdLCBbLTY5LjQ1MjM5NiwgMC43MDYxNTldLCBbLTcwLjAxNTU2NiwgMC41NDE0MTRdLCBbLTcwLjAyMDY1NiwgLTAuMTg1MTU2XSwgWy02OS41NzcwNjUsIC0wLjU0OTk5Ml0sIFstNjkuNDIwNDg2LCAtMS4xMjI2MTldLCBbLTY5LjQ0NDEwMiwgLTEuNTU2Mjg3XSwgWy02OS44OTM2MzUsIC00LjI5ODE4N10sIFstNzAuMzk0MDQ0LCAtMy43NjY1OTFdLCBbLTcwLjY5MjY4MiwgLTMuNzQyODcyXSwgWy03MC4wNDc3MDksIC0yLjcyNTE1Nl0sIFstNzAuODEzNDc2LCAtMi4yNTY4NjVdLCBbLTcxLjQxMzY0NiwgLTIuMzQyODAyXSwgWy03MS43NzQ3NjEsIC0yLjE2OTc5XSwgWy03Mi4zMjU3ODcsIC0yLjQzNDIxOF0sIFstNzMuMDcwMzkyLCAtMi4zMDg5NTRdLCBbLTczLjY1OTUwNCwgLTEuMjYwNDkxXSwgWy03NC4xMjIzOTUsIC0xLjAwMjgzM10sIFstNzQuNDQxNjAxLCAtMC41MzA4Ml0sIFstNzUuMTA2NjI1LCAtMC4wNTcyMDVdLCBbLTc1LjM3MzIyMywgLTAuMTUyMDMyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDT0wiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkNvbG9tYmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stODIuOTY1NzgzLCA4LjIyNTAyOF0sIFstODMuNTA4NDM3LCA4LjQ0NjkyN10sIFstODMuNzExNDc0LCA4LjY1NjgzNl0sIFstODMuNTk2MzEzLCA4LjgzMDQ0M10sIFstODMuNjMyNjQyLCA5LjA1MTM4Nl0sIFstODMuOTA5ODg2LCA5LjI5MDgwM10sIFstODQuMzAzNDAyLCA5LjQ4NzM1NF0sIFstODQuNjQ3NjQ0LCA5LjYxNTUzN10sIFstODQuNzEzMzUxLCA5LjkwODA1Ml0sIFstODQuOTc1NjYsIDEwLjA4NjcyM10sIFstODQuOTExMzc1LCA5Ljc5NTk5Ml0sIFstODUuMTEwOTIzLCA5LjU1NzA0XSwgWy04NS4zMzk0ODgsIDkuODM0NTQyXSwgWy04NS42NjA3ODcsIDkuOTMzMzQ3XSwgWy04NS43OTc0NDUsIDEwLjEzNDg4Nl0sIFstODUuNzkxNzA5LCAxMC40MzkzMzddLCBbLTg1LjY1OTMxNCwgMTAuNzU0MzMxXSwgWy04NS45NDE3MjUsIDEwLjg5NTI3OF0sIFstODUuNzEyNTQsIDExLjA4ODQ0NV0sIFstODUuNTYxODUyLCAxMS4yMTcxMTldLCBbLTg0LjkwMzAwMywgMTAuOTUyMzAzXSwgWy04NC42NzMwNjksIDExLjA4MjY1N10sIFstODQuMzU1OTMxLCAxMC45OTkyMjZdLCBbLTg0LjE5MDE3OSwgMTAuNzkzNDVdLCBbLTgzLjg5NTA1NCwgMTAuNzI2ODM5XSwgWy04My42NTU2MTIsIDEwLjkzODc2NF0sIFstODMuNDAyMzIsIDEwLjM5NTQzOF0sIFstODMuMDE1Njc3LCA5Ljk5Mjk4Ml0sIFstODIuNTQ2MTk2LCA5LjU2NjEzNV0sIFstODIuOTMyODkxLCA5LjQ3NjgxMl0sIFstODIuOTI3MTU1LCA5LjA3NDMzXSwgWy04Mi43MTkxODMsIDguOTI1NzA5XSwgWy04Mi44Njg2NTcsIDguODA3MjY2XSwgWy04Mi44Mjk3NzEsIDguNjI2Mjk1XSwgWy04Mi45MTMxNzYsIDguNDIzNTE3XSwgWy04Mi45NjU3ODMsIDguMjI1MDI4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDUkkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkNvc3RhIFJpY2EiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy04Mi4yNjgxNTEsIDIzLjE4ODYxMV0sIFstODEuNDA0NDU3LCAyMy4xMTcyNzFdLCBbLTgwLjYxODc2OSwgMjMuMTA1OThdLCBbLTc5LjY3OTUyNCwgMjIuNzY1MzAzXSwgWy03OS4yODE0ODYsIDIyLjM5OTIwMl0sIFstNzguMzQ3NDM0LCAyMi41MTIxNjZdLCBbLTc3Ljk5MzI5NiwgMjIuMjc3MTk0XSwgWy03Ny4xNDY0MjIsIDIxLjY1Nzg1MV0sIFstNzYuNTIzODI1LCAyMS4yMDY4Ml0sIFstNzYuMTk0NjIsIDIxLjIyMDU2NV0sIFstNzUuNTk4MjIyLCAyMS4wMTY2MjRdLCBbLTc1LjY3MTA2LCAyMC43MzUwOTFdLCBbLTc0LjkzMzg5NiwgMjAuNjkzOTA1XSwgWy03NC4xNzgwMjUsIDIwLjI4NDYyOF0sIFstNzQuMjk2NjQ4LCAyMC4wNTAzNzldLCBbLTc0Ljk2MTU5NSwgMTkuOTIzNDM1XSwgWy03NS42MzQ2OCwgMTkuODczNzc0XSwgWy03Ni4zMjM2NTYsIDE5Ljk1Mjg5MV0sIFstNzcuNzU1NDgxLCAxOS44NTU0ODFdLCBbLTc3LjA4NTEwOCwgMjAuNDEzMzU0XSwgWy03Ny40OTI2NTUsIDIwLjY3MzEwNV0sIFstNzguMTM3MjkyLCAyMC43Mzk5NDldLCBbLTc4LjQ4MjgyNywgMjEuMDI4NjEzXSwgWy03OC43MTk4NjcsIDIxLjU5ODExNF0sIFstNzkuMjg1LCAyMS41NTkxNzVdLCBbLTgwLjIxNzQ3NSwgMjEuODI3MzI0XSwgWy04MC41MTc1MzUsIDIyLjAzNzA3OV0sIFstODEuODIwOTQzLCAyMi4xOTIwNTddLCBbLTgyLjE2OTk5MiwgMjIuMzg3MTA5XSwgWy04MS43OTUwMDIsIDIyLjYzNjk2NV0sIFstODIuNzc1ODk4LCAyMi42ODgxNV0sIFstODMuNDk0NDU5LCAyMi4xNjg1MThdLCBbLTgzLjkwODgsIDIyLjE1NDU2NV0sIFstODQuMDUyMTUxLCAyMS45MTA1NzVdLCBbLTg0LjU0NzAzLCAyMS44MDEyMjhdLCBbLTg0Ljk3NDkxMSwgMjEuODk2MDI4XSwgWy04NC40NDcwNjIsIDIyLjIwNDk1XSwgWy04NC4yMzAzNTcsIDIyLjU2NTc1NV0sIFstODMuNzc4MjQsIDIyLjc4ODExOF0sIFstODMuMjY3NTQ4LCAyMi45ODMwNDJdLCBbLTgyLjUxMDQzNiwgMjMuMDc4NzQ3XSwgWy04Mi4yNjgxNTEsIDIzLjE4ODYxMV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ1VCIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDdWJhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szMi43MzE3OCwgMzUuMTQwMDI2XSwgWzMyLjgwMjQ3NCwgMzUuMTQ1NTA0XSwgWzMyLjk0Njk2MSwgMzUuMzg2NzAzXSwgWzMzLjY2NzIyNywgMzUuMzczMjE2XSwgWzM0LjU3NjQ3NCwgMzUuNjcxNTk2XSwgWzMzLjkwMDgwNCwgMzUuMjQ1NzU2XSwgWzMzLjk3MzYxNywgMzUuMDU4NTA2XSwgWzMzLjg2NjQ0LCAzNS4wOTM1OTVdLCBbMzMuNjc1MzkyLCAzNS4wMTc4NjNdLCBbMzMuNTI1Njg1LCAzNS4wMzg2ODhdLCBbMzMuNDc1ODE3LCAzNS4wMDAzNDVdLCBbMzMuNDU1OTIyLCAzNS4xMDE0MjRdLCBbMzMuMzgzODMzLCAzNS4xNjI3MTJdLCBbMzMuMTkwOTc3LCAzNS4xNzMxMjVdLCBbMzIuOTE5NTcyLCAzNS4wODc4MzNdLCBbMzIuNzMxNzgsIDM1LjE0MDAyNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiLTk5IiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJOb3J0aGVybiBDeXBydXMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzMzLjk3MzYxNywgMzUuMDU4NTA2XSwgWzM0LjAwNDg4MSwgMzQuOTc4MDk4XSwgWzMyLjk3OTgyNywgMzQuNTcxODY5XSwgWzMyLjQ5MDI5NiwgMzQuNzAxNjU1XSwgWzMyLjI1NjY2NywgMzUuMTAzMjMyXSwgWzMyLjczMTc4LCAzNS4xNDAwMjZdLCBbMzIuOTE5NTcyLCAzNS4wODc4MzNdLCBbMzMuMTkwOTc3LCAzNS4xNzMxMjVdLCBbMzMuMzgzODMzLCAzNS4xNjI3MTJdLCBbMzMuNDU1OTIyLCAzNS4xMDE0MjRdLCBbMzMuNDc1ODE3LCAzNS4wMDAzNDVdLCBbMzMuNTI1Njg1LCAzNS4wMzg2ODhdLCBbMzMuNjc1MzkyLCAzNS4wMTc4NjNdLCBbMzMuODY2NDQsIDM1LjA5MzU5NV0sIFszMy45NzM2MTcsIDM1LjA1ODUwNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ1lQIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDeXBydXMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzE2Ljk2MDI4OCwgNDguNTk2OTgyXSwgWzE2LjQ5OTI4MywgNDguNzg1ODA4XSwgWzE2LjAyOTY0NywgNDguNzMzODk5XSwgWzE1LjI1MzQxNiwgNDkuMDM5MDc0XSwgWzE0LjkwMTQ0NywgNDguOTY0NDAyXSwgWzE0LjMzODg5OCwgNDguNTU1MzA1XSwgWzEzLjU5NTk0NiwgNDguODc3MTcyXSwgWzEzLjAzMTMyOSwgNDkuMzA3MDY4XSwgWzEyLjUyMTAyNCwgNDkuNTQ3NDE1XSwgWzEyLjQxNTE5MSwgNDkuOTY5MTIxXSwgWzEyLjI0MDExMSwgNTAuMjY2MzM4XSwgWzEyLjk2NjgzNywgNTAuNDg0MDc2XSwgWzEzLjMzODEzMiwgNTAuNzMzMjM0XSwgWzE0LjA1NjIyOCwgNTAuOTI2OTE4XSwgWzE0LjMwNzAxMywgNTEuMTE3MjY4XSwgWzE0LjU3MDcxOCwgNTEuMDAyMzM5XSwgWzE1LjAxNjk5NiwgNTEuMTA2Njc0XSwgWzE1LjQ5MDk3MiwgNTAuNzg0NzNdLCBbMTYuMjM4NjI3LCA1MC42OTc3MzNdLCBbMTYuMTc2MjUzLCA1MC40MjI2MDddLCBbMTYuNzE5NDc2LCA1MC4yMTU3NDddLCBbMTYuODY4NzY5LCA1MC40NzM5NzRdLCBbMTcuNTU0NTY3LCA1MC4zNjIxNDZdLCBbMTcuNjQ5NDQ1LCA1MC4wNDkwMzhdLCBbMTguMzkyOTE0LCA0OS45ODg2MjldLCBbMTguODUzMTQ0LCA0OS40OTYyM10sIFsxOC41NTQ5NzEsIDQ5LjQ5NTAxNV0sIFsxOC4zOTk5OTQsIDQ5LjMxNTAwMV0sIFsxOC4xNzA0OTgsIDQ5LjI3MTUxNV0sIFsxOC4xMDQ5NzMsIDQ5LjA0Mzk4M10sIFsxNy45MTM1MTIsIDQ4Ljk5NjQ5M10sIFsxNy44ODY0ODUsIDQ4LjkwMzQ3NV0sIFsxNy41NDUwMDcsIDQ4LjgwMDAxOV0sIFsxNy4xMDE5ODUsIDQ4LjgxNjk2OV0sIFsxNi45NjAyODgsIDQ4LjU5Njk4Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ1pFIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDemVjaCBSZXB1YmxpYyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbOS45MjE5MDYsIDU0Ljk4MzEwNF0sIFs5LjkzOTU4LCA1NC41OTY2NDJdLCBbMTAuOTUwMTEyLCA1NC4zNjM2MDddLCBbMTAuOTM5NDY3LCA1NC4wMDg2OTNdLCBbMTEuOTU2MjUyLCA1NC4xOTY0ODZdLCBbMTIuNTE4NDQsIDU0LjQ3MDM3MV0sIFsxMy42NDc0NjcsIDU0LjA3NTUxMV0sIFsxNC4xMTk2ODYsIDUzLjc1NzAyOV0sIFsxNC4zNTMzMTUsIDUzLjI0ODE3MV0sIFsxNC4wNzQ1MjEsIDUyLjk4MTI2M10sIFsxNC40Mzc2LCA1Mi42MjQ4NV0sIFsxNC42ODUwMjYsIDUyLjA4OTk0N10sIFsxNC42MDcwOTgsIDUxLjc0NTE4OF0sIFsxNS4wMTY5OTYsIDUxLjEwNjY3NF0sIFsxNC41NzA3MTgsIDUxLjAwMjMzOV0sIFsxNC4zMDcwMTMsIDUxLjExNzI2OF0sIFsxNC4wNTYyMjgsIDUwLjkyNjkxOF0sIFsxMy4zMzgxMzIsIDUwLjczMzIzNF0sIFsxMi45NjY4MzcsIDUwLjQ4NDA3Nl0sIFsxMi4yNDAxMTEsIDUwLjI2NjMzOF0sIFsxMi40MTUxOTEsIDQ5Ljk2OTEyMV0sIFsxMi41MjEwMjQsIDQ5LjU0NzQxNV0sIFsxMy4wMzEzMjksIDQ5LjMwNzA2OF0sIFsxMy41OTU5NDYsIDQ4Ljg3NzE3Ml0sIFsxMy4yNDMzNTcsIDQ4LjQxNjExNV0sIFsxMi44ODQxMDMsIDQ4LjI4OTE0Nl0sIFsxMy4wMjU4NTEsIDQ3LjYzNzU4NF0sIFsxMi45MzI2MjcsIDQ3LjQ2NzY0Nl0sIFsxMi42MjA3NiwgNDcuNjcyMzg4XSwgWzEyLjE0MTM1NywgNDcuNzAzMDgzXSwgWzExLjQyNjQxNCwgNDcuNTIzNzY2XSwgWzEwLjU0NDUwNCwgNDcuNTY2Mzk5XSwgWzEwLjQwMjA4NCwgNDcuMzAyNDg4XSwgWzkuODk2MDY4LCA0Ny41ODAxOTddLCBbOS41OTQyMjYsIDQ3LjUyNTA1OF0sIFs4LjUyMjYxMiwgNDcuODMwODI4XSwgWzguMzE3MzAxLCA0Ny42MTM1OF0sIFs3LjQ2Njc1OSwgNDcuNjIwNTgyXSwgWzcuNTkzNjc2LCA0OC4zMzMwMTldLCBbOC4wOTkyNzksIDQ5LjAxNzc4NF0sIFs2LjY1ODIzLCA0OS4yMDE5NThdLCBbNi4xODYzMiwgNDkuNDYzODAzXSwgWzYuMjQyNzUxLCA0OS45MDIyMjZdLCBbNi4wNDMwNzMsIDUwLjEyODA1Ml0sIFs2LjE1NjY1OCwgNTAuODAzNzIxXSwgWzUuOTg4NjU4LCA1MS44NTE2MTZdLCBbNi41ODkzOTcsIDUxLjg1MjAyOV0sIFs2Ljg0Mjg3LCA1Mi4yMjg0NF0sIFs3LjA5MjA1MywgNTMuMTQ0MDQzXSwgWzYuOTA1MTQsIDUzLjQ4MjE2Ml0sIFs3LjEwMDQyNSwgNTMuNjkzOTMyXSwgWzcuOTM2MjM5LCA1My43NDgyOTZdLCBbOC4xMjE3MDYsIDUzLjUyNzc5Ml0sIFs4LjgwMDczNCwgNTQuMDIwNzg2XSwgWzguNTcyMTE4LCA1NC4zOTU2NDZdLCBbOC41MjYyMjksIDU0Ljk2Mjc0NF0sIFs5LjI4MjA0OSwgNTQuODMwODY1XSwgWzkuOTIxOTA2LCA1NC45ODMxMDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkRFVSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR2VybWFueSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNDMuMDgxMjI2LCAxMi42OTk2MzldLCBbNDMuMzE3ODUyLCAxMi4zOTAxNDhdLCBbNDMuMjg2MzgxLCAxMS45NzQ5MjhdLCBbNDIuNzE1ODc0LCAxMS43MzU2NDFdLCBbNDMuMTQ1MzA1LCAxMS40NjIwNF0sIFs0Mi43NzY4NTIsIDEwLjkyNjg3OV0sIFs0Mi41NTQ5MywgMTEuMTA1MTFdLCBbNDIuMzE0MTQsIDExLjAzNDJdLCBbNDEuNzU1NTcsIDExLjA1MDkxXSwgWzQxLjczOTU5LCAxMS4zNTUxMV0sIFs0MS42NjE3NiwgMTEuNjMxMl0sIFs0MiwgMTIuMV0sIFs0Mi4zNTE1NiwgMTIuNTQyMjNdLCBbNDIuNzc5NjQyLCAxMi40NTU0MTZdLCBbNDMuMDgxMjI2LCAxMi42OTk2MzldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkRKSSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRGppYm91dGkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxMi42OTAwMDYsIDU1LjYwOTk5MV0sIFsxMi4wODk5OTEsIDU0LjgwMDAxNV0sIFsxMS4wNDM1NDMsIDU1LjM2NDg2NF0sIFsxMC45MDM5MTQsIDU1Ljc3OTk1NV0sIFsxMi4zNzA5MDQsIDU2LjExMTQwN10sIFsxMi42OTAwMDYsIDU1LjYwOTk5MV1dXSwgW1tbMTAuOTEyMTgyLCA1Ni40NTg2MjFdLCBbMTAuNjY3ODA0LCA1Ni4wODEzODNdLCBbMTAuMzY5OTkzLCA1Ni4xOTAwMDddLCBbOS42NDk5ODUsIDU1LjQ2OTk5OV0sIFs5LjkyMTkwNiwgNTQuOTgzMTA0XSwgWzkuMjgyMDQ5LCA1NC44MzA4NjVdLCBbOC41MjYyMjksIDU0Ljk2Mjc0NF0sIFs4LjEyMDMxMSwgNTUuNTE3NzIzXSwgWzguMDg5OTc3LCA1Ni41NDAwMTJdLCBbOC4yNTY1ODIsIDU2LjgwOTk2OV0sIFs4LjU0MzQzOCwgNTcuMTEwMDAzXSwgWzkuNDI0NDY5LCA1Ny4xNzIwNjZdLCBbOS43NzU1NTksIDU3LjQ0Nzk0MV0sIFsxMC41ODAwMDYsIDU3LjczMDAxN10sIFsxMC41NDYxMDYsIDU3LjIxNTczM10sIFsxMC4yNSwgNTYuODkwMDE2XSwgWzEwLjM2OTk5MywgNTYuNjA5OTgyXSwgWzEwLjkxMjE4MiwgNTYuNDU4NjIxXV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJETksiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkRlbm1hcmsiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03MS43MTIzNjEsIDE5LjcxNDQ1Nl0sIFstNzEuNTg3MzA0LCAxOS44ODQ5MTFdLCBbLTcwLjgwNjcwNiwgMTkuODgwMjg2XSwgWy03MC4yMTQzNjUsIDE5LjYyMjg4NV0sIFstNjkuOTUwODE1LCAxOS42NDhdLCBbLTY5Ljc2OTI1LCAxOS4yOTMyNjddLCBbLTY5LjIyMjEyNiwgMTkuMzEzMjE0XSwgWy02OS4yNTQzNDYsIDE5LjAxNTE5Nl0sIFstNjguODA5NDEyLCAxOC45NzkwNzRdLCBbLTY4LjMxNzk0MywgMTguNjEyMTk4XSwgWy02OC42ODkzMTYsIDE4LjIwNTE0Ml0sIFstNjkuMTY0OTQ2LCAxOC40MjI2NDhdLCBbLTY5LjYyMzk4OCwgMTguMzgwNzEzXSwgWy02OS45NTI5MzQsIDE4LjQyODMwN10sIFstNzAuMTMzMjMzLCAxOC4yNDU5MTVdLCBbLTcwLjUxNzEzNywgMTguMTg0MjkxXSwgWy03MC42NjkyOTgsIDE4LjQyNjg4Nl0sIFstNzAuOTk5OTUsIDE4LjI4MzMyOV0sIFstNzEuNDAwMjEsIDE3LjU5ODU2NF0sIFstNzEuNjU3NjYyLCAxNy43NTc1NzNdLCBbLTcxLjcwODMwNSwgMTguMDQ0OTk3XSwgWy03MS42ODc3MzgsIDE4LjMxNjY2XSwgWy03MS45NDUxMTIsIDE4LjYxNjldLCBbLTcxLjcwMTMwMywgMTguNzg1NDE3XSwgWy03MS42MjQ4NzMsIDE5LjE2OTgzOF0sIFstNzEuNzEyMzYxLCAxOS43MTQ0NTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkRPTSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRG9taW5pY2FuIFJlcHVibGljIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxMS45OTk1MDYsIDIzLjQ3MTY2OF0sIFs4LjU3Mjg5MywgMjEuNTY1NjYxXSwgWzUuNjc3NTY2LCAxOS42MDEyMDddLCBbNC4yNjc0MTksIDE5LjE1NTI2NV0sIFszLjE1ODEzMywgMTkuMDU3MzY0XSwgWzMuMTQ2NjYxLCAxOS42OTM1NzldLCBbMi42ODM1ODgsIDE5Ljg1NjIzXSwgWzIuMDYwOTkxLCAyMC4xNDIyMzNdLCBbMS44MjMyMjgsIDIwLjYxMDgwOV0sIFstMS41NTAwNTUsIDIyLjc5MjY2Nl0sIFstNC45MjMzMzcsIDI0Ljk3NDU3NF0sIFstOC42ODQ0LCAyNy4zOTU3NDRdLCBbLTguNjY1MTI0LCAyNy41ODk0NzldLCBbLTguNjY1NTksIDI3LjY1NjQyNl0sIFstOC42NzQxMTYsIDI4Ljg0MTI4OV0sIFstNy4wNTkyMjgsIDI5LjU3OTIyOF0sIFstNi4wNjA2MzIsIDI5LjczMTddLCBbLTUuMjQyMTI5LCAzMC4wMDA0NDNdLCBbLTQuODU5NjQ2LCAzMC41MDExODhdLCBbLTMuNjkwNDQxLCAzMC44OTY5NTJdLCBbLTMuNjQ3NDk4LCAzMS42MzcyOTRdLCBbLTMuMDY4OTgsIDMxLjcyNDQ5OF0sIFstMi42MTY2MDUsIDMyLjA5NDM0Nl0sIFstMS4zMDc4OTksIDMyLjI2Mjg4OV0sIFstMS4xMjQ1NTEsIDMyLjY1MTUyMl0sIFstMS4zODgwNDksIDMyLjg2NDAxNV0sIFstMS43MzM0NTUsIDMzLjkxOTcxM10sIFstMS43OTI5ODYsIDM0LjUyNzkxOV0sIFstMi4xNjk5MTQsIDM1LjE2ODM5Nl0sIFstMS4yMDg2MDMsIDM1LjcxNDg0OV0sIFstMC4xMjc0NTQsIDM1Ljg4ODY2Ml0sIFswLjUwMzg3NywgMzYuMzAxMjczXSwgWzEuNDY2OTE5LCAzNi42MDU2NDddLCBbMy4xNjE2OTksIDM2Ljc4MzkwNV0sIFs0LjgxNTc1OCwgMzYuODY1MDM3XSwgWzUuMzIwMTIsIDM2LjcxNjUxOV0sIFs2LjI2MTgyLCAzNy4xMTA2NTVdLCBbNy4zMzAzODUsIDM3LjExODM4MV0sIFs3LjczNzA3OCwgMzYuODg1NzA4XSwgWzguNDIwOTY0LCAzNi45NDY0MjddLCBbOC4yMTc4MjQsIDM2LjQzMzE3N10sIFs4LjM3NjM2OCwgMzUuNDc5ODc2XSwgWzguMTQwOTgxLCAzNC42NTUxNDZdLCBbNy41MjQ0ODIsIDM0LjA5NzM3Nl0sIFs3LjYxMjY0MiwgMzMuMzQ0MTE1XSwgWzguNDMwNDczLCAzMi43NDgzMzddLCBbOC40MzkxMDMsIDMyLjUwNjI4NV0sIFs5LjA1NTYwMywgMzIuMTAyNjkyXSwgWzkuNDgyMTQsIDMwLjMwNzU1Nl0sIFs5LjgwNTYzNCwgMjkuNDI0NjM4XSwgWzkuODU5OTk4LCAyOC45NTk5OV0sIFs5LjY4Mzg4NSwgMjguMTQ0MTc0XSwgWzkuNzU2MTI4LCAyNy42ODgyNTldLCBbOS42MjkwNTYsIDI3LjE0MDk1M10sIFs5LjcxNjI4NiwgMjYuNTEyMjA2XSwgWzkuMzE5NDExLCAyNi4wOTQzMjVdLCBbOS45MTA2OTMsIDI1LjM2NTQ1NV0sIFs5Ljk0ODI2MSwgMjQuOTM2OTU0XSwgWzEwLjMwMzg0NywgMjQuMzc5MzEzXSwgWzEwLjc3MTM2NCwgMjQuNTYyNTMyXSwgWzExLjU2MDY2OSwgMjQuMDk3OTA5XSwgWzExLjk5OTUwNiwgMjMuNDcxNjY4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJEWkEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkFsZ2VyaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy04MC4zMDI1NjEsIC0zLjQwNDg1Nl0sIFstNzkuNzcwMjkzLCAtMi42NTc1MTJdLCBbLTc5Ljk4NjU1OSwgLTIuMjIwNzk0XSwgWy04MC4zNjg3ODQsIC0yLjY4NTE1OV0sIFstODAuOTY3NzY1LCAtMi4yNDY5NDNdLCBbLTgwLjc2NDgwNiwgLTEuOTY1MDQ4XSwgWy04MC45MzM2NTksIC0xLjA1NzQ1NV0sIFstODAuNTgzMzcsIC0wLjkwNjY2M10sIFstODAuMzk5MzI1LCAtMC4yODM3MDNdLCBbLTgwLjAyMDg5OCwgMC4zNjAzNF0sIFstODAuMDkwNjEsIDAuNzY4NDI5XSwgWy03OS41NDI3NjIsIDAuOTgyOTM4XSwgWy03OC44NTUyNTksIDEuMzgwOTI0XSwgWy03Ny44NTUwNjEsIDAuODA5OTI1XSwgWy03Ny42Njg2MTMsIDAuODI1ODkzXSwgWy03Ny40MjQ5ODQsIDAuMzk1Njg3XSwgWy03Ni41NzYzOCwgMC4yNTY5MzZdLCBbLTc2LjI5MjMxNCwgMC40MTYwNDddLCBbLTc1LjgwMTQ2NiwgMC4wODQ4MDFdLCBbLTc1LjM3MzIyMywgLTAuMTUyMDMyXSwgWy03NS4yMzM3MjMsIC0wLjkxMTQxN10sIFstNzUuNTQ0OTk2LCAtMS41NjE2MV0sIFstNzYuNjM1Mzk0LCAtMi42MDg2NzhdLCBbLTc3LjgzNzkwNSwgLTMuMDAzMDIxXSwgWy03OC40NTA2ODQsIC0zLjg3MzA5N10sIFstNzguNjM5ODk3LCAtNC41NDc3ODRdLCBbLTc5LjIwNTI4OSwgLTQuOTU5MTI5XSwgWy03OS42MjQ5NzksIC00LjQ1NDE5OF0sIFstODAuMDI4OTA4LCAtNC4zNDYwOTFdLCBbLTgwLjQ0MjI0MiwgLTQuNDI1NzI0XSwgWy04MC40NjkyOTUsIC00LjA1OTI4N10sIFstODAuMTg0MDE1LCAtMy44MjExNjJdLCBbLTgwLjMwMjU2MSwgLTMuNDA0ODU2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJFQ1UiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkVjdWFkb3IiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzM0LjkyMjYsIDI5LjUwMTMzXSwgWzM0LjY0MTc0LCAyOS4wOTk0Ml0sIFszNC40MjY1NSwgMjguMzQzOTldLCBbMzQuMTU0NTEsIDI3LjgyMzNdLCBbMzMuOTIxMzYsIDI3LjY0ODddLCBbMzMuNTg4MTEsIDI3Ljk3MTM2XSwgWzMzLjEzNjc2LCAyOC40MTc2NV0sIFszMi40MjMyMywgMjkuODUxMDhdLCBbMzIuMzIwNDYsIDI5Ljc2MDQzXSwgWzMyLjczNDgyLCAyOC43MDUyM10sIFszMy4zNDg3NiwgMjcuNjk5ODldLCBbMzQuMTA0NTUsIDI2LjE0MjI3XSwgWzM0LjQ3Mzg3LCAyNS41OTg1Nl0sIFszNC43OTUwNywgMjUuMDMzNzVdLCBbMzUuNjkyNDEsIDIzLjkyNjcxXSwgWzM1LjQ5MzcyLCAyMy43NTIzN10sIFszNS41MjU5OCwgMjMuMTAyNDRdLCBbMzYuNjkwNjksIDIyLjIwNDg1XSwgWzM2Ljg2NjIzLCAyMl0sIFszMi45LCAyMl0sIFsyOS4wMiwgMjJdLCBbMjUsIDIyXSwgWzI1LCAyNS42ODI1XSwgWzI1LCAyOS4yMzg2NTVdLCBbMjQuNzAwMDcsIDMwLjA0NDE5XSwgWzI0Ljk1NzYyLCAzMC42NjE2XSwgWzI0LjgwMjg3LCAzMS4wODkyOV0sIFsyNS4xNjQ4MiwgMzEuNTY5MTVdLCBbMjYuNDk1MzMsIDMxLjU4NTY4XSwgWzI3LjQ1NzYyLCAzMS4zMjEyNl0sIFsyOC40NTA0OCwgMzEuMDI1NzddLCBbMjguOTEzNTMsIDMwLjg3MDA1XSwgWzI5LjY4MzQyLCAzMS4xODY4Nl0sIFszMC4wOTUwMywgMzEuNDczNF0sIFszMC45NzY5MywgMzEuNTU1ODZdLCBbMzEuNjg3OTYsIDMxLjQyOTZdLCBbMzEuOTYwNDEsIDMwLjkzMzZdLCBbMzIuMTkyNDcsIDMxLjI2MDM0XSwgWzMyLjk5MzkyLCAzMS4wMjQwN10sIFszMy43NzM0LCAzMC45Njc0Nl0sIFszNC4yNjU0NCwgMzEuMjE5MzZdLCBbMzQuOTIyNiwgMjkuNTAxMzNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkVHWSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRWd5cHQiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzQyLjM1MTU2LCAxMi41NDIyM10sIFs0Mi4wMDk3NSwgMTIuODY1ODJdLCBbNDEuNTk4NTYsIDEzLjQ1MjA5XSwgWzQxLjE1NTE5NCwgMTMuNzczMzJdLCBbNDAuODk2NiwgMTQuMTE4NjRdLCBbNDAuMDI2MjE5LCAxNC41MTk1NzldLCBbMzkuMzQwNjEsIDE0LjUzMTU1XSwgWzM5LjA5OTQsIDE0Ljc0MDY0XSwgWzM4LjUxMjk1LCAxNC41MDU0N10sIFszNy45MDYwNywgMTQuOTU5NDNdLCBbMzcuNTkzNzcsIDE0LjIxMzFdLCBbMzYuNDI5NTEsIDE0LjQyMjExXSwgWzM2LjMyMzE4OSwgMTQuODIyNDgxXSwgWzM2Ljc1Mzg2LCAxNi4yOTE4NzRdLCBbMzYuODUyNTMsIDE2Ljk1NjU1XSwgWzM3LjE2NzQ3LCAxNy4yNjMxNF0sIFszNy45MDQsIDE3LjQyNzU0XSwgWzM4LjQxMDA5LCAxNy45OTgzMDddLCBbMzguOTkwNjIzLCAxNi44NDA2MjZdLCBbMzkuMjY2MTEsIDE1LjkyMjcyM10sIFszOS44MTQyOTQsIDE1LjQzNTY0N10sIFs0MS4xNzkyNzUsIDE0LjQ5MTA4XSwgWzQxLjczNDk1MiwgMTMuOTIxMDM3XSwgWzQyLjI3NjgzMSwgMTMuMzQzOTkyXSwgWzQyLjU4OTU3NiwgMTMuMDAwNDIxXSwgWzQzLjA4MTIyNiwgMTIuNjk5NjM5XSwgWzQyLjc3OTY0MiwgMTIuNDU1NDE2XSwgWzQyLjM1MTU2LCAxMi41NDIyM11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRVJJIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJFcml0cmVhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stOS4wMzQ4MTgsIDQxLjg4MDU3MV0sIFstOC45ODQ0MzMsIDQyLjU5Mjc3NV0sIFstOS4zOTI4ODQsIDQzLjAyNjYyNV0sIFstNy45NzgxOSwgNDMuNzQ4MzM4XSwgWy02Ljc1NDQ5MiwgNDMuNTY3OTA5XSwgWy01LjQxMTg4NiwgNDMuNTc0MjRdLCBbLTQuMzQ3ODQzLCA0My40MDM0NDldLCBbLTMuNTE3NTMyLCA0My40NTU5MDFdLCBbLTEuOTAxMzUxLCA0My40MjI4MDJdLCBbLTEuNTAyNzcxLCA0My4wMzQwMTRdLCBbMC4zMzgwNDcsIDQyLjU3OTU0Nl0sIFswLjcwMTU5MSwgNDIuNzk1NzM0XSwgWzEuODI2NzkzLCA0Mi4zNDMzODVdLCBbMi45ODU5OTksIDQyLjQ3MzAxNV0sIFszLjAzOTQ4NCwgNDEuODkyMTJdLCBbMi4wOTE4NDIsIDQxLjIyNjA4OV0sIFswLjgxMDUyNSwgNDEuMDE0NzMyXSwgWzAuNzIxMzMxLCA0MC42NzgzMThdLCBbMC4xMDY2OTIsIDQwLjEyMzkzNF0sIFstMC4yNzg3MTEsIDM5LjMwOTk3OF0sIFswLjExMTI5MSwgMzguNzM4NTE0XSwgWy0wLjQ2NzEyNCwgMzguMjkyMzY2XSwgWy0wLjY4MzM4OSwgMzcuNjQyMzU0XSwgWy0xLjQzODM4MiwgMzcuNDQzMDY0XSwgWy0yLjE0NjQ1MywgMzYuNjc0MTQ0XSwgWy0zLjQxNTc4MSwgMzYuNjU4OV0sIFstNC4zNjg5MDEsIDM2LjY3NzgzOV0sIFstNC45OTUyMTksIDM2LjMyNDcwOF0sIFstNS4zNzcxNiwgMzUuOTQ2ODVdLCBbLTUuODY2NDMyLCAzNi4wMjk4MTddLCBbLTYuMjM2Njk0LCAzNi4zNjc2NzddLCBbLTYuNTIwMTkxLCAzNi45NDI5MTNdLCBbLTcuNDUzNzI2LCAzNy4wOTc3ODhdLCBbLTcuNTM3MTA1LCAzNy40Mjg5MDRdLCBbLTcuMTY2NTA4LCAzNy44MDM4OTRdLCBbLTcuMDI5MjgxLCAzOC4wNzU3NjRdLCBbLTcuMzc0MDkyLCAzOC4zNzMwNTldLCBbLTcuMDk4MDM3LCAzOS4wMzAwNzNdLCBbLTcuNDk4NjMyLCAzOS42Mjk1NzFdLCBbLTcuMDY2NTkyLCAzOS43MTE4OTJdLCBbLTcuMDI2NDEzLCA0MC4xODQ1MjRdLCBbLTYuODY0MDIsIDQwLjMzMDg3Ml0sIFstNi44NTExMjcsIDQxLjExMTA4M10sIFstNi4zODkwODgsIDQxLjM4MTgxNV0sIFstNi42Njg2MDYsIDQxLjg4MzM4N10sIFstNy4yNTEzMDksIDQxLjkxODM0Nl0sIFstNy40MjI1MTMsIDQxLjc5MjA3NV0sIFstOC4wMTMxNzUsIDQxLjc5MDg4Nl0sIFstOC4yNjM4NTcsIDQyLjI4MDQ2OV0sIFstOC42NzE5NDYsIDQyLjEzNDY4OV0sIFstOS4wMzQ4MTgsIDQxLjg4MDU3MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRVNQIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJTcGFpbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMjQuMzEyODYzLCA1Ny43OTM0MjRdLCBbMjQuNDI4OTI4LCA1OC4zODM0MTNdLCBbMjQuMDYxMTk4LCA1OC4yNTczNzVdLCBbMjMuNDI2NTYsIDU4LjYxMjc1M10sIFsyMy4zMzk3OTUsIDU5LjE4NzI0XSwgWzI0LjYwNDIxNCwgNTkuNDY1ODU0XSwgWzI1Ljg2NDE4OSwgNTkuNjExMDldLCBbMjYuOTQ5MTM2LCA1OS40NDU4MDNdLCBbMjcuOTgxMTE0LCA1OS40NzUzODhdLCBbMjguMTMxNjk5LCA1OS4zMDA4MjVdLCBbMjcuNDIwMTY2LCA1OC43MjQ1ODFdLCBbMjcuNzE2Njg2LCA1Ny43OTE4OTldLCBbMjcuMjg4MTg1LCA1Ny40NzQ1MjhdLCBbMjYuNDYzNTMyLCA1Ny40NzYzODldLCBbMjUuNjAyODEsIDU3Ljg0NzUyOV0sIFsyNS4xNjQ1OTQsIDU3Ljk3MDE1N10sIFsyNC4zMTI4NjMsIDU3Ljc5MzQyNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRVNUIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJFc3RvbmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szNy45MDYwNywgMTQuOTU5NDNdLCBbMzguNTEyOTUsIDE0LjUwNTQ3XSwgWzM5LjA5OTQsIDE0Ljc0MDY0XSwgWzM5LjM0MDYxLCAxNC41MzE1NV0sIFs0MC4wMjYyNSwgMTQuNTE5NTldLCBbNDAuODk2NiwgMTQuMTE4NjRdLCBbNDEuMTU1MiwgMTMuNzczMzNdLCBbNDEuNTk4NTYsIDEzLjQ1MjA5XSwgWzQyLjAwOTc1LCAxMi44NjU4Ml0sIFs0Mi4zNTE1NiwgMTIuNTQyMjNdLCBbNDIsIDEyLjFdLCBbNDEuNjYxNzYsIDExLjYzMTJdLCBbNDEuNzM5NTksIDExLjM1NTExXSwgWzQxLjc1NTU3LCAxMS4wNTA5MV0sIFs0Mi4zMTQxNCwgMTEuMDM0Ml0sIFs0Mi41NTQ5MywgMTEuMTA1MTFdLCBbNDIuNzc2ODUyLCAxMC45MjY4NzldLCBbNDIuNTU4NzYsIDEwLjU3MjU4XSwgWzQyLjkyODEyLCAxMC4wMjE5NF0sIFs0My4yOTY5OSwgOS41NDA0OF0sIFs0My42Nzg3NSwgOS4xODM1OF0sIFs0Ni45NDgzNCwgNy45OTY4OF0sIFs0Ny43ODk0MiwgOC4wMDNdLCBbNDQuOTYzNiwgNS4wMDE2Ml0sIFs0My42NjA4NywgNC45NTc1NV0sIFs0Mi43Njk2NywgNC4yNTI1OV0sIFs0Mi4xMjg2MSwgNC4yMzQxM10sIFs0MS44NTUwODMsIDMuOTE4OTEyXSwgWzQxLjE3MTgsIDMuOTE5MDldLCBbNDAuNzY4NDgsIDQuMjU3MDJdLCBbMzkuODU0OTQsIDMuODM4NzldLCBbMzkuNTU5Mzg0LCAzLjQyMjA2XSwgWzM4Ljg5MjUxLCAzLjUwMDc0XSwgWzM4LjY3MTE0LCAzLjYxNjA3XSwgWzM4LjQzNjk3LCAzLjU4ODUxXSwgWzM4LjEyMDkxNSwgMy41OTg2MDVdLCBbMzYuODU1MDkzLCA0LjQ0Nzg2NF0sIFszNi4xNTkwNzksIDQuNDQ3ODY0XSwgWzM1LjgxNzQ0OCwgNC43NzY5NjZdLCBbMzUuODE3NDQ4LCA1LjMzODIzMl0sIFszNS4yOTgwMDcsIDUuNTA2XSwgWzM0LjcwNzAyLCA2LjU5NDIyXSwgWzM0LjI1MDMyLCA2LjgyNjA3XSwgWzM0LjA3NTEsIDcuMjI1OTVdLCBbMzMuNTY4MjksIDcuNzEzMzRdLCBbMzIuOTU0MTgsIDcuNzg0OTddLCBbMzMuMjk0OCwgOC4zNTQ1OF0sIFszMy44MjU1LCA4LjM3OTE2XSwgWzMzLjk3NDk4LCA4LjY4NDU2XSwgWzMzLjk2MTYyLCA5LjU4MzU4XSwgWzM0LjI1NzQ1LCAxMC42MzAwOV0sIFszNC43MzExNSwgMTAuOTEwMTddLCBbMzQuODMxNjMsIDExLjMxODk2XSwgWzM1LjI2MDQ5LCAxMi4wODI4Nl0sIFszNS44NjM2MywgMTIuNTc4MjhdLCBbMzYuMjcwMjIsIDEzLjU2MzMzXSwgWzM2LjQyOTUxLCAxNC40MjIxMV0sIFszNy41OTM3NywgMTQuMjEzMV0sIFszNy45MDYwNywgMTQuOTU5NDNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkVUSCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRXRoaW9waWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzI4LjU5MTkzLCA2OS4wNjQ3NzddLCBbMjguNDQ1OTQ0LCA2OC4zNjQ2MTNdLCBbMjkuOTc3NDI2LCA2Ny42OTgyOTddLCBbMjkuMDU0NTg5LCA2Ni45NDQyODZdLCBbMzAuMjE3NjUsIDY1LjgwNTk4XSwgWzI5LjU0NDQzLCA2NC45NDg2NzJdLCBbMzAuNDQ0Njg1LCA2NC4yMDQ0NTNdLCBbMzAuMDM1ODcyLCA2My41NTI4MTRdLCBbMzEuNTE2MDkyLCA2Mi44Njc2ODddLCBbMzEuMTM5OTkxLCA2Mi4zNTc2OTNdLCBbMzAuMjExMTA3LCA2MS43ODAwMjhdLCBbMjguMDY5OTk4LCA2MC41MDM1MTddLCBbMjYuMjU1MTczLCA2MC40MjM5NjFdLCBbMjQuNDk2NjI0LCA2MC4wNTczMTZdLCBbMjIuODY5Njk1LCA1OS44NDYzNzNdLCBbMjIuMjkwNzY0LCA2MC4zOTE5MjFdLCBbMjEuMzIyMjQ0LCA2MC43MjAxN10sIFsyMS41NDQ4NjYsIDYxLjcwNTMyOV0sIFsyMS4wNTkyMTEsIDYyLjYwNzM5M10sIFsyMS41MzYwMjksIDYzLjE4OTczNV0sIFsyMi40NDI3NDQsIDYzLjgxNzgxXSwgWzI0LjczMDUxMiwgNjQuOTAyMzQ0XSwgWzI1LjM5ODA2OCwgNjUuMTExNDI3XSwgWzI1LjI5NDA0MywgNjUuNTM0MzQ2XSwgWzIzLjkwMzM3OSwgNjYuMDA2OTI3XSwgWzIzLjU2NTg4LCA2Ni4zOTYwNTFdLCBbMjMuNTM5NDczLCA2Ny45MzYwMDldLCBbMjEuOTc4NTM1LCA2OC42MTY4NDZdLCBbMjAuNjQ1NTkzLCA2OS4xMDYyNDddLCBbMjEuMjQ0OTM2LCA2OS4zNzA0NDNdLCBbMjIuMzU2MjM4LCA2OC44NDE3NDFdLCBbMjMuNjYyMDUsIDY4Ljg5MTI0N10sIFsyNC43MzU2NzksIDY4LjY0OTU1N10sIFsyNS42ODkyMTMsIDY5LjA5MjExNF0sIFsyNi4xNzk2MjIsIDY5LjgyNTI5OV0sIFsyNy43MzIyOTIsIDcwLjE2NDE5M10sIFsyOS4wMTU1NzMsIDY5Ljc2NjQ5MV0sIFsyOC41OTE5MywgNjkuMDY0Nzc3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJGSU4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkZpbmxhbmQiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxNzguMzczNiwgLTE3LjMzOTkyXSwgWzE3OC43MTgwNiwgLTE3LjYyODQ2XSwgWzE3OC41NTI3MSwgLTE4LjE1MDU5XSwgWzE3Ny45MzI2NiwgLTE4LjI4Nzk5XSwgWzE3Ny4zODE0NiwgLTE4LjE2NDMyXSwgWzE3Ny4yODUwNCwgLTE3LjcyNDY1XSwgWzE3Ny42NzA4NywgLTE3LjM4MTE0XSwgWzE3OC4xMjU1NywgLTE3LjUwNDgxXSwgWzE3OC4zNzM2LCAtMTcuMzM5OTJdXV0sIFtbWzE3OS4zNjQxNDMsIC0xNi44MDEzNTRdLCBbMTc4LjcyNTA1OSwgLTE3LjAxMjA0Ml0sIFsxNzguNTk2ODM5LCAtMTYuNjM5MTVdLCBbMTc5LjA5NjYwOSwgLTE2LjQzMzk4NF0sIFsxNzkuNDEzNTA5LCAtMTYuMzc5MDU0XSwgWzE4MCwgLTE2LjA2NzEzM10sIFsxODAsIC0xNi41NTUyMTddLCBbMTc5LjM2NDE0MywgLTE2LjgwMTM1NF1dXSwgW1tbLTE3OS45MTczNjksIC0xNi41MDE3ODNdLCBbLTE4MCwgLTE2LjU1NTIxN10sIFstMTgwLCAtMTYuMDY3MTMzXSwgWy0xNzkuNzkzMzIsIC0xNi4wMjA4ODJdLCBbLTE3OS45MTczNjksIC0xNi41MDE3ODNdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkZKSSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRmlqaSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYxLjIsIC01MS44NV0sIFstNjAsIC01MS4yNV0sIFstNTkuMTUsIC01MS41XSwgWy01OC41NSwgLTUxLjFdLCBbLTU3Ljc1LCAtNTEuNTVdLCBbLTU4LjA1LCAtNTEuOV0sIFstNTkuNCwgLTUyLjJdLCBbLTU5Ljg1LCAtNTEuODVdLCBbLTYwLjcsIC01Mi4zXSwgWy02MS4yLCAtNTEuODVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkZMSyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRmFsa2xhbmQgSXNsYW5kcyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWy01Mi41NTY0MjUsIDIuNTA0NzA1XSwgWy01Mi45Mzk2NTcsIDIuMTI0ODU4XSwgWy01My40MTg0NjUsIDIuMDUzMzg5XSwgWy01My41NTQ4MzksIDIuMzM0ODk3XSwgWy01My43Nzg1MjEsIDIuMzc2NzAzXSwgWy01NC4wODgwNjMsIDIuMTA1NTU3XSwgWy01NC41MjQ3NTQsIDIuMzExODQ5XSwgWy01NC4yNzEyMywgMi43Mzg3NDhdLCBbLTU0LjE4NDI4NCwgMy4xOTQxNzJdLCBbLTU0LjAxMTUwNCwgMy42MjI1N10sIFstNTQuMzk5NTQyLCA0LjIxMjYxMV0sIFstNTQuNDc4NjMzLCA0Ljg5Njc1Nl0sIFstNTMuOTU4MDQ1LCA1Ljc1NjU0OF0sIFstNTMuNjE4NDUzLCA1LjY0NjUyOV0sIFstNTIuODgyMTQxLCA1LjQwOTg1MV0sIFstNTEuODIzMzQzLCA0LjU2NTc2OF0sIFstNTEuNjU3Nzk3LCA0LjE1NjIzMl0sIFstNTIuMjQ5MzM4LCAzLjI0MTA5NF0sIFstNTIuNTU2NDI1LCAyLjUwNDcwNV1dXSwgW1tbOS41NjAwMTYsIDQyLjE1MjQ5Ml0sIFs5LjIyOTc1MiwgNDEuMzgwMDA3XSwgWzguNzc1NzIzLCA0MS41ODM2MTJdLCBbOC41NDQyMTMsIDQyLjI1NjUxN10sIFs4Ljc0NjAwOSwgNDIuNjI4MTIyXSwgWzkuMzkwMDAxLCA0My4wMDk5ODVdLCBbOS41NjAwMTYsIDQyLjE1MjQ5Ml1dXSwgW1tbMy41ODgxODQsIDUwLjM3ODk5Ml0sIFs0LjI4NjAyMywgNDkuOTA3NDk3XSwgWzQuNzk5MjIyLCA0OS45ODUzNzNdLCBbNS42NzQwNTIsIDQ5LjUyOTQ4NF0sIFs1Ljg5Nzc1OSwgNDkuNDQyNjY3XSwgWzYuMTg2MzIsIDQ5LjQ2MzgwM10sIFs2LjY1ODIzLCA0OS4yMDE5NThdLCBbOC4wOTkyNzksIDQ5LjAxNzc4NF0sIFs3LjU5MzY3NiwgNDguMzMzMDE5XSwgWzcuNDY2NzU5LCA0Ny42MjA1ODJdLCBbNy4xOTIyMDIsIDQ3LjQ0OTc2Nl0sIFs2LjczNjU3MSwgNDcuNTQxODAxXSwgWzYuNzY4NzE0LCA0Ny4yODc3MDhdLCBbNi4wMzczODksIDQ2LjcyNTc3OV0sIFs2LjAyMjYwOSwgNDYuMjcyOTldLCBbNi41MDAxLCA0Ni40Mjk2NzNdLCBbNi44NDM1OTMsIDQ1Ljk5MTE0N10sIFs2LjgwMjM1NSwgNDUuNzA4NThdLCBbNy4wOTY2NTIsIDQ1LjMzMzA5OV0sIFs2Ljc0OTk1NSwgNDUuMDI4NTE4XSwgWzcuMDA3NTYyLCA0NC4yNTQ3NjddLCBbNy41NDk1OTYsIDQ0LjEyNzkwMV0sIFs3LjQzNTE4NSwgNDMuNjkzODQ1XSwgWzYuNTI5MjQ1LCA0My4xMjg4OTJdLCBbNC41NTY5NjMsIDQzLjM5OTY1MV0sIFszLjEwMDQxMSwgNDMuMDc1MjAxXSwgWzIuOTg1OTk5LCA0Mi40NzMwMTVdLCBbMS44MjY3OTMsIDQyLjM0MzM4NV0sIFswLjcwMTU5MSwgNDIuNzk1NzM0XSwgWzAuMzM4MDQ3LCA0Mi41Nzk1NDZdLCBbLTEuNTAyNzcxLCA0My4wMzQwMTRdLCBbLTEuOTAxMzUxLCA0My40MjI4MDJdLCBbLTEuMzg0MjI1LCA0NC4wMjI2MV0sIFstMS4xOTM3OTgsIDQ2LjAxNDkxOF0sIFstMi4yMjU3MjQsIDQ3LjA2NDM2M10sIFstMi45NjMyNzYsIDQ3LjU3MDMyN10sIFstNC40OTE1NTUsIDQ3Ljk1NDk1NF0sIFstNC41OTIzNSwgNDguNjg0MTZdLCBbLTMuMjk1ODE0LCA0OC45MDE2OTJdLCBbLTEuNjE2NTExLCA0OC42NDQ0MjFdLCBbLTEuOTMzNDk0LCA0OS43NzYzNDJdLCBbLTAuOTg5NDY5LCA0OS4zNDczNzZdLCBbMS4zMzg3NjEsIDUwLjEyNzE3M10sIFsxLjYzOTAwMSwgNTAuOTQ2NjA2XSwgWzIuNTEzNTczLCA1MS4xNDg1MDZdLCBbMi42NTg0MjIsIDUwLjc5Njg0OF0sIFszLjEyMzI1MiwgNTAuNzgwMzYzXSwgWzMuNTg4MTg0LCA1MC4zNzg5OTJdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkZSQSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRnJhbmNlIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxMS4wOTM3NzMsIC0zLjk3ODgyN10sIFsxMC4wNjYxMzUsIC0yLjk2OTQ4M10sIFs5LjQwNTI0NSwgLTIuMTQ0MzEzXSwgWzguNzk3OTk2LCAtMS4xMTEzMDFdLCBbOC44MzAwODcsIC0wLjc3OTA3NF0sIFs5LjA0ODQyLCAtMC40NTkzNTFdLCBbOS4yOTEzNTEsIDAuMjY4NjY2XSwgWzkuNDkyODg5LCAxLjAxMDEyXSwgWzkuODMwMjg0LCAxLjA2Nzg5NF0sIFsxMS4yODUwNzksIDEuMDU3NjYyXSwgWzExLjI3NjQ0OSwgMi4yNjEwNTFdLCBbMTEuNzUxNjY1LCAyLjMyNjc1OF0sIFsxMi4zNTkzOCwgMi4xOTI4MTJdLCBbMTIuOTUxMzM0LCAyLjMyMTYxNl0sIFsxMy4wNzU4MjIsIDIuMjY3MDk3XSwgWzEzLjAwMzExNCwgMS44MzA4OTZdLCBbMTMuMjgyNjMxLCAxLjMxNDE4NF0sIFsxNC4wMjY2NjksIDEuMzk1Njc3XSwgWzE0LjI3NjI2NiwgMS4xOTY5M10sIFsxMy44NDMzMjEsIDAuMDM4NzU4XSwgWzE0LjMxNjQxOCwgLTAuNTUyNjI3XSwgWzE0LjQyNTQ1NiwgLTEuMzMzNDA3XSwgWzE0LjI5OTIxLCAtMS45OTgyNzZdLCBbMTMuOTkyNDA3LCAtMi40NzA4MDVdLCBbMTMuMTA5NjE5LCAtMi40Mjg3NF0sIFsxMi41NzUyODQsIC0xLjk0ODUxMV0sIFsxMi40OTU3MDMsIC0yLjM5MTY4OF0sIFsxMS44MjA5NjQsIC0yLjUxNDE2MV0sIFsxMS40NzgwMzksIC0yLjc2NTYxOV0sIFsxMS44NTUxMjIsIC0zLjQyNjg3MV0sIFsxMS4wOTM3NzMsIC0zLjk3ODgyN11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR0FCIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHYWJvbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWy01LjY2MTk0OSwgNTQuNTU0NjAzXSwgWy02LjE5Nzg4NSwgNTMuODY3NTY1XSwgWy02Ljk1MzczLCA1NC4wNzM3MDJdLCBbLTcuNTcyMTY4LCA1NC4wNTk5NTZdLCBbLTcuMzY2MDMxLCA1NC41OTU4NDFdLCBbLTcuNTcyMTY4LCA1NS4xMzE2MjJdLCBbLTYuNzMzODQ3LCA1NS4xNzI4Nl0sIFstNS42NjE5NDksIDU0LjU1NDYwM11dXSwgW1tbLTMuMDA1MDA1LCA1OC42MzVdLCBbLTQuMDczODI4LCA1Ny41NTMwMjVdLCBbLTMuMDU1MDAyLCA1Ny42OTAwMTldLCBbLTEuOTU5MjgxLCA1Ny42ODQ4XSwgWy0yLjIxOTk4OCwgNTYuODcwMDE3XSwgWy0zLjExOTAwMywgNTUuOTczNzkzXSwgWy0yLjA4NTAwOSwgNTUuOTA5OTk4XSwgWy0yLjAwNTY3NiwgNTUuODA0OTAzXSwgWy0xLjExNDk5MSwgNTQuNjI0OTg2XSwgWy0wLjQzMDQ4NSwgNTQuNDY0Mzc2XSwgWzAuMTg0OTgxLCA1My4zMjUwMTRdLCBbMC40Njk5NzcsIDUyLjkyOTk5OV0sIFsxLjY4MTUzMSwgNTIuNzM5NTJdLCBbMS41NTk5ODgsIDUyLjA5OTk5OF0sIFsxLjA1MDU2MiwgNTEuODA2NzYxXSwgWzEuNDQ5ODY1LCA1MS4yODk0MjhdLCBbMC41NTAzMzQsIDUwLjc2NTczOV0sIFstMC43ODc1MTcsIDUwLjc3NDk4OV0sIFstMi40ODk5OTgsIDUwLjUwMDAxOV0sIFstMi45NTYyNzQsIDUwLjY5Njg4XSwgWy0zLjYxNzQ0OCwgNTAuMjI4MzU2XSwgWy00LjU0MjUwOCwgNTAuMzQxODM3XSwgWy01LjI0NTAyMywgNDkuOTZdLCBbLTUuNzc2NTY3LCA1MC4xNTk2NzhdLCBbLTQuMzA5OTksIDUxLjIxMDAwMV0sIFstMy40MTQ4NTEsIDUxLjQyNjAwOV0sIFstMy40MjI3MTksIDUxLjQyNjg0OF0sIFstNC45ODQzNjcsIDUxLjU5MzQ2Nl0sIFstNS4yNjcyOTYsIDUxLjk5MTRdLCBbLTQuMjIyMzQ3LCA1Mi4zMDEzNTZdLCBbLTQuNzcwMDEzLCA1Mi44NDAwMDVdLCBbLTQuNTc5OTk5LCA1My40OTUwMDRdLCBbLTMuMDkzODMxLCA1My40MDQ1NDddLCBbLTMuMDkyMDgsIDUzLjQwNDQ0MV0sIFstMi45NDUwMDksIDUzLjk4NV0sIFstMy42MTQ3MDEsIDU0LjYwMDkzN10sIFstMy42MzAwMDUsIDU0LjYxNTAxM10sIFstNC44NDQxNjksIDU0Ljc5MDk3MV0sIFstNS4wODI1MjcsIDU1LjA2MTYwMV0sIFstNC43MTkxMTIsIDU1LjUwODQ3M10sIFstNS4wNDc5ODEsIDU1Ljc4Mzk4Nl0sIFstNS41ODYzOTgsIDU1LjMxMTE0Nl0sIFstNS42NDQ5OTksIDU2LjI3NTAxNV0sIFstNi4xNDk5ODEsIDU2Ljc4NTAxXSwgWy01Ljc4NjgyNSwgNTcuODE4ODQ4XSwgWy01LjAwOTk5OSwgNTguNjMwMDEzXSwgWy00LjIxMTQ5NSwgNTguNTUwODQ1XSwgWy0zLjAwNTAwNSwgNTguNjM1XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJHQlIiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlVuaXRlZCBLaW5nZG9tIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s0MS41NTQwODQsIDQxLjUzNTY1Nl0sIFs0MS43MDMxNzEsIDQxLjk2Mjk0M10sIFs0MS40NTM0NywgNDIuNjQ1MTIzXSwgWzQwLjg3NTQ2OSwgNDMuMDEzNjI4XSwgWzQwLjMyMTM5NCwgNDMuMTI4NjM0XSwgWzM5Ljk1NTAwOSwgNDMuNDM0OTk4XSwgWzQwLjA3Njk2NSwgNDMuNTUzMTA0XSwgWzQwLjkyMjE4NSwgNDMuMzgyMTU5XSwgWzQyLjM5NDM5NSwgNDMuMjIwMzA4XSwgWzQzLjc1NjAxNywgNDIuNzQwODI4XSwgWzQzLjkzMTIsIDQyLjU1NDk3NF0sIFs0NC41Mzc2MjMsIDQyLjcxMTk5M10sIFs0NS40NzAyNzksIDQyLjUwMjc4MV0sIFs0NS43NzY0MSwgNDIuMDkyNDQ0XSwgWzQ2LjQwNDk1MSwgNDEuODYwNjc1XSwgWzQ2LjE0NTQzMiwgNDEuNzIyODAyXSwgWzQ2LjYzNzkwOCwgNDEuMTgxNjczXSwgWzQ2LjUwMTYzNywgNDEuMDY0NDQ1XSwgWzQ1Ljk2MjYwMSwgNDEuMTIzODczXSwgWzQ1LjIxNzQyNiwgNDEuNDExNDUyXSwgWzQ0Ljk3MjQ4LCA0MS4yNDgxMjldLCBbNDMuNTgyNzQ2LCA0MS4wOTIxNDNdLCBbNDIuNjE5NTQ5LCA0MS41ODMxNzNdLCBbNDEuNTU0MDg0LCA0MS41MzU2NTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkdFTyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR2VvcmdpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMS4wNjAxMjIsIDUuOTI4ODM3XSwgWy0wLjUwNzYzOCwgNS4zNDM0NzNdLCBbLTEuMDYzNjI1LCA1LjAwMDU0OF0sIFstMS45NjQ3MDcsIDQuNzEwNDYyXSwgWy0yLjg1NjEyNSwgNC45OTQ0NzZdLCBbLTIuODEwNzAxLCA1LjM4OTA1MV0sIFstMy4yNDQzNywgNi4yNTA0NzJdLCBbLTIuOTgzNTg1LCA3LjM3OTcwNV0sIFstMi41NjIxOSwgOC4yMTk2MjhdLCBbLTIuODI3NDk2LCA5LjY0MjQ2MV0sIFstMi45NjM4OTYsIDEwLjM5NTMzNV0sIFstMi45NDA0MDksIDEwLjk2MjY5XSwgWy0xLjIwMzM1OCwgMTEuMDA5ODE5XSwgWy0wLjc2MTU3NiwgMTAuOTM2OTNdLCBbLTAuNDM4NzAyLCAxMS4wOTgzNDFdLCBbMC4wMjM4MDMsIDExLjAxODY4Ml0sIFstMC4wNDk3ODUsIDEwLjcwNjkxOF0sIFswLjM2NzU4LCAxMC4xOTEyMTNdLCBbMC4zNjU5MDEsIDkuNDY1MDA0XSwgWzAuNDYxMTkyLCA4LjY3NzIyM10sIFswLjcxMjAyOSwgOC4zMTI0NjVdLCBbMC40OTA5NTcsIDcuNDExNzQ0XSwgWzAuNTcwMzg0LCA2LjkxNDM1OV0sIFswLjgzNjkzMSwgNi4yNzk5NzldLCBbMS4wNjAxMjIsIDUuOTI4ODM3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHSEEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkdoYW5hIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stOC40MzkyOTgsIDcuNjg2MDQzXSwgWy04LjcyMjEyNCwgNy43MTE2NzRdLCBbLTguOTI2MDY1LCA3LjMwOTAzN10sIFstOS4yMDg3ODYsIDcuMzEzOTIxXSwgWy05LjQwMzM0OCwgNy41MjY5MDVdLCBbLTkuMzM3MjgsIDcuOTI4NTM0XSwgWy05Ljc1NTM0MiwgOC41NDEwNTVdLCBbLTEwLjAxNjU2NywgOC40Mjg1MDRdLCBbLTEwLjIzMDA5NCwgOC40MDYyMDZdLCBbLTEwLjUwNTQ3NywgOC4zNDg4OTZdLCBbLTEwLjQ5NDMxNSwgOC43MTU1NDFdLCBbLTEwLjY1NDc3LCA4Ljk3NzE3OF0sIFstMTAuNjIyMzk1LCA5LjI2NzkxXSwgWy0xMC44MzkxNTIsIDkuNjg4MjQ2XSwgWy0xMS4xMTc0ODEsIDEwLjA0NTg3M10sIFstMTEuOTE3Mjc3LCAxMC4wNDY5ODRdLCBbLTEyLjE1MDMzOCwgOS44NTg1NzJdLCBbLTEyLjQyNTkyOSwgOS44MzU4MzRdLCBbLTEyLjU5NjcxOSwgOS42MjAxODhdLCBbLTEyLjcxMTk1OCwgOS4zNDI3MTJdLCBbLTEzLjI0NjU1LCA4LjkwMzA0OV0sIFstMTMuNjg1MTU0LCA5LjQ5NDc0NF0sIFstMTQuMDc0MDQ1LCA5Ljg4NjE2N10sIFstMTQuMzMwMDc2LCAxMC4wMTU3Ml0sIFstMTQuNTc5Njk5LCAxMC4yMTQ0NjddLCBbLTE0LjY5MzIzMiwgMTAuNjU2MzAxXSwgWy0xNC44Mzk1NTQsIDEwLjg3NjU3Ml0sIFstMTUuMTMwMzExLCAxMS4wNDA0MTJdLCBbLTE0LjY4NTY4NywgMTEuNTI3ODI0XSwgWy0xNC4zODIxOTIsIDExLjUwOTI3Ml0sIFstMTQuMTIxNDA2LCAxMS42NzcxMTddLCBbLTEzLjkwMDgsIDExLjY3ODcxOV0sIFstMTMuNzQzMTYxLCAxMS44MTEyNjldLCBbLTEzLjgyODI3MiwgMTIuMTQyNjQ0XSwgWy0xMy43MTg3NDQsIDEyLjI0NzE4Nl0sIFstMTMuNzAwNDc2LCAxMi41ODYxODNdLCBbLTEzLjIxNzgxOCwgMTIuNTc1ODc0XSwgWy0xMi40OTkwNTEsIDEyLjMzMjA5XSwgWy0xMi4yNzg1OTksIDEyLjM1NDQ0XSwgWy0xMi4yMDM1NjUsIDEyLjQ2NTY0OF0sIFstMTEuNjU4MzAxLCAxMi4zODY1ODNdLCBbLTExLjUxMzk0MywgMTIuNDQyOTg4XSwgWy0xMS40NTYxNjksIDEyLjA3NjgzNF0sIFstMTEuMjk3NTc0LCAxMi4wNzc5NzFdLCBbLTExLjAzNjU1NiwgMTIuMjExMjQ1XSwgWy0xMC44NzA4MywgMTIuMTc3ODg3XSwgWy0xMC41OTMyMjQsIDExLjkyMzk3NV0sIFstMTAuMTY1MjE0LCAxMS44NDQwODRdLCBbLTkuODkwOTkzLCAxMi4wNjA0NzldLCBbLTkuNTY3OTEyLCAxMi4xOTQyNDNdLCBbLTkuMzI3NjE2LCAxMi4zMzQyODZdLCBbLTkuMTI3NDc0LCAxMi4zMDgwNl0sIFstOC45MDUyNjUsIDEyLjA4ODM1OF0sIFstOC43ODYwOTksIDExLjgxMjU2MV0sIFstOC4zNzYzMDUsIDExLjM5MzY0Nl0sIFstOC41ODEzMDUsIDExLjEzNjI0Nl0sIFstOC42MjAzMjEsIDEwLjgxMDg5MV0sIFstOC40MDczMTEsIDEwLjkwOTI1N10sIFstOC4yODIzNTcsIDEwLjc5MjU5N10sIFstOC4zMzUzNzcsIDEwLjQ5NDgxMl0sIFstOC4wMjk5NDQsIDEwLjIwNjUzNV0sIFstOC4yMjkzMzcsIDEwLjEyOTAyXSwgWy04LjMwOTYxNiwgOS43ODk1MzJdLCBbLTguMDc5MTE0LCA5LjM3NjIyNF0sIFstNy44MzIxLCA4LjU3NTcwNF0sIFstOC4yMDM0OTksIDguNDU1NDUzXSwgWy04LjI5OTA0OSwgOC4zMTY0NDRdLCBbLTguMjIxNzkyLCA4LjEyMzMyOV0sIFstOC4yODA3MDMsIDcuNjg3MThdLCBbLTguNDM5Mjk4LCA3LjY4NjA0M11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR0lOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHdWluZWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xNi44NDE1MjUsIDEzLjE1MTM5NF0sIFstMTYuNzEzNzI5LCAxMy41OTQ5NTldLCBbLTE1LjYyNDU5NiwgMTMuNjIzNTg3XSwgWy0xNS4zOTg3NywgMTMuODYwMzY5XSwgWy0xNS4wODE3MzUsIDEzLjg3NjQ5Ml0sIFstMTQuNjg3MDMxLCAxMy42MzAzNTddLCBbLTE0LjM3NjcxNCwgMTMuNjI1NjhdLCBbLTE0LjA0Njk5MiwgMTMuNzk0MDY4XSwgWy0xMy44NDQ5NjMsIDEzLjUwNTA0Ml0sIFstMTQuMjc3NzAyLCAxMy4yODA1ODVdLCBbLTE0LjcxMjE5NywgMTMuMjk4MjA3XSwgWy0xNS4xNDExNjMsIDEzLjUwOTUxMl0sIFstMTUuNTExODEzLCAxMy4yNzg1N10sIFstMTUuNjkxMDAxLCAxMy4yNzAzNTNdLCBbLTE1LjkzMTI5NiwgMTMuMTMwMjg0XSwgWy0xNi44NDE1MjUsIDEzLjE1MTM5NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR01CIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHYW1iaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xNS4xMzAzMTEsIDExLjA0MDQxMl0sIFstMTUuNjY0MTgsIDExLjQ1ODQ3NF0sIFstMTYuMDg1MjE0LCAxMS41MjQ1OTRdLCBbLTE2LjMxNDc4NywgMTEuODA2NTE1XSwgWy0xNi4zMDg5NDcsIDExLjk1ODcwMl0sIFstMTYuNjEzODM4LCAxMi4xNzA5MTFdLCBbLTE2LjY3NzQ1MiwgMTIuMzg0ODUyXSwgWy0xNi4xNDc3MTcsIDEyLjU0Nzc2Ml0sIFstMTUuODE2NTc0LCAxMi41MTU1NjddLCBbLTE1LjU0ODQ3NywgMTIuNjI4MTddLCBbLTEzLjcwMDQ3NiwgMTIuNTg2MTgzXSwgWy0xMy43MTg3NDQsIDEyLjI0NzE4Nl0sIFstMTMuODI4MjcyLCAxMi4xNDI2NDRdLCBbLTEzLjc0MzE2MSwgMTEuODExMjY5XSwgWy0xMy45MDA4LCAxMS42Nzg3MTldLCBbLTE0LjEyMTQwNiwgMTEuNjc3MTE3XSwgWy0xNC4zODIxOTIsIDExLjUwOTI3Ml0sIFstMTQuNjg1Njg3LCAxMS41Mjc4MjRdLCBbLTE1LjEzMDMxMSwgMTEuMDQwNDEyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHTkIiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkd1aW5lYSBCaXNzYXUiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkuNDkyODg5LCAxLjAxMDEyXSwgWzkuMzA1NjEzLCAxLjE2MDkxMV0sIFs5LjY0OTE1OCwgMi4yODM4NjZdLCBbMTEuMjc2NDQ5LCAyLjI2MTA1MV0sIFsxMS4yODUwNzksIDEuMDU3NjYyXSwgWzkuODMwMjg0LCAxLjA2Nzg5NF0sIFs5LjQ5Mjg4OSwgMS4wMTAxMl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR05RIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJFcXVhdG9yaWFsIEd1aW5lYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWzIzLjY5OTk4LCAzNS43MDUwMDRdLCBbMjQuMjQ2NjY1LCAzNS4zNjgwMjJdLCBbMjUuMDI1MDE1LCAzNS40MjQ5OTZdLCBbMjUuNzY5MjA4LCAzNS4zNTQwMThdLCBbMjUuNzQ1MDIzLCAzNS4xNzk5OThdLCBbMjYuMjkwMDAzLCAzNS4yOTk5OV0sIFsyNi4xNjQ5OTgsIDM1LjAwNDk5NV0sIFsyNC43MjQ5ODIsIDM0LjkxOTk4OF0sIFsyNC43MzUwMDcsIDM1LjA4NDk5MV0sIFsyMy41MTQ5NzgsIDM1LjI3OTk5Ml0sIFsyMy42OTk5OCwgMzUuNzA1MDA0XV1dLCBbW1syNi42MDQxOTYsIDQxLjU2MjExNV0sIFsyNi4yOTQ2MDIsIDQwLjkzNjI2MV0sIFsyNi4wNTY5NDIsIDQwLjgyNDEyM10sIFsyNS40NDc2NzcsIDQwLjg1MjU0NV0sIFsyNC45MjU4NDgsIDQwLjk0NzA2Ml0sIFsyMy43MTQ4MTEsIDQwLjY4NzEyOV0sIFsyNC40MDc5OTksIDQwLjEyNDk5M10sIFsyMy44OTk5NjgsIDM5Ljk2MjAwNl0sIFsyMy4zNDI5OTksIDM5Ljk2MDk5OF0sIFsyMi44MTM5ODgsIDQwLjQ3NjAwNV0sIFsyMi42MjYyOTksIDQwLjI1NjU2MV0sIFsyMi44NDk3NDgsIDM5LjY1OTMxMV0sIFsyMy4zNTAwMjcsIDM5LjE5MDAxMV0sIFsyMi45NzMwOTksIDM4Ljk3MDkwM10sIFsyMy41MzAwMTYsIDM4LjUxMDAwMV0sIFsyNC4wMjUwMjUsIDM4LjIxOTk5M10sIFsyNC4wNDAwMTEsIDM3LjY1NTAxNV0sIFsyMy4xMTUwMDMsIDM3LjkyMDAxMV0sIFsyMy40MDk5NzIsIDM3LjQwOTk5MV0sIFsyMi43NzQ5NzIsIDM3LjMwNTAxXSwgWzIzLjE1NDIyNSwgMzYuNDIyNTA2XSwgWzIyLjQ5MDAyOCwgMzYuNDFdLCBbMjEuNjcwMDI2LCAzNi44NDQ5ODZdLCBbMjEuMjk1MDExLCAzNy42NDQ5ODldLCBbMjEuMTIwMDM0LCAzOC4zMTAzMjNdLCBbMjAuNzMwMDMyLCAzOC43Njk5ODVdLCBbMjAuMjE3NzEyLCAzOS4zNDAyMzVdLCBbMjAuMTUwMDE2LCAzOS42MjQ5OThdLCBbMjAuNjE1LCA0MC4xMTAwMDddLCBbMjAuNjc0OTk3LCA0MC40MzVdLCBbMjAuOTk5OTksIDQwLjU4MDAwNF0sIFsyMS4wMjAwNCwgNDAuODQyNzI3XSwgWzIxLjY3NDE2MSwgNDAuOTMxMjc1XSwgWzIyLjA1NTM3OCwgNDEuMTQ5ODY2XSwgWzIyLjU5NzMwOCwgNDEuMTMwNDg3XSwgWzIyLjc2MTc3LCA0MS4zMDQ4XSwgWzIyLjk1MjM3NywgNDEuMzM3OTk0XSwgWzIzLjY5MjA3NCwgNDEuMzA5MDgxXSwgWzI0LjQ5MjY0NSwgNDEuNTgzODk2XSwgWzI1LjE5NzIwMSwgNDEuMjM0NDg2XSwgWzI2LjEwNjEzOCwgNDEuMzI4ODk5XSwgWzI2LjExNzA0MiwgNDEuODI2OTA1XSwgWzI2LjYwNDE5NiwgNDEuNTYyMTE1XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJHUkMiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkdyZWVjZSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQ2Ljc2Mzc5LCA4Mi42Mjc5Nl0sIFstNDMuNDA2NDQsIDgzLjIyNTE2XSwgWy0zOS44OTc1MywgODMuMTgwMThdLCBbLTM4LjYyMjE0LCA4My41NDkwNV0sIFstMzUuMDg3ODcsIDgzLjY0NTEzXSwgWy0yNy4xMDA0NiwgODMuNTE5NjZdLCBbLTIwLjg0NTM5LCA4Mi43MjY2OV0sIFstMjIuNjkxODIsIDgyLjM0MTY1XSwgWy0yNi41MTc1MywgODIuMjk3NjVdLCBbLTMxLjksIDgyLjJdLCBbLTMxLjM5NjQ2LCA4Mi4wMjE1NF0sIFstMjcuODU2NjYsIDgyLjEzMTc4XSwgWy0yNC44NDQ0OCwgODEuNzg2OTddLCBbLTIyLjkwMzI4LCA4Mi4wOTMxN10sIFstMjIuMDcxNzUsIDgxLjczNDQ5XSwgWy0yMy4xNjk2MSwgODEuMTUyNzFdLCBbLTIwLjYyMzYzLCA4MS41MjQ2Ml0sIFstMTUuNzY4MTgsIDgxLjkxMjQ1XSwgWy0xMi43NzAxOCwgODEuNzE4ODVdLCBbLTEyLjIwODU1LCA4MS4yOTE1NF0sIFstMTYuMjg1MzMsIDgwLjU4MDA0XSwgWy0xNi44NSwgODAuMzVdLCBbLTIwLjA0NjI0LCA4MC4xNzcwOF0sIFstMTcuNzMwMzUsIDgwLjEyOTEyXSwgWy0xOC45LCA3OS40XSwgWy0xOS43MDQ5OSwgNzguNzUxMjhdLCBbLTE5LjY3MzUzLCA3Ny42Mzg1OV0sIFstMTguNDcyODUsIDc2Ljk4NTY1XSwgWy0yMC4wMzUwMywgNzYuOTQ0MzRdLCBbLTIxLjY3OTQ0LCA3Ni42Mjc5NV0sIFstMTkuODM0MDcsIDc2LjA5ODA4XSwgWy0xOS41OTg5NiwgNzUuMjQ4MzhdLCBbLTIwLjY2ODE4LCA3NS4xNTU4NV0sIFstMTkuMzcyODEsIDc0LjI5NTYxXSwgWy0yMS41OTQyMiwgNzQuMjIzODJdLCBbLTIwLjQzNDU0LCA3My44MTcxM10sIFstMjAuNzYyMzQsIDczLjQ2NDM2XSwgWy0yMi4xNzIyMSwgNzMuMzA5NTVdLCBbLTIzLjU2NTkzLCA3My4zMDY2M10sIFstMjIuMzEzMTEsIDcyLjYyOTI4XSwgWy0yMi4yOTk1NCwgNzIuMTg0MDldLCBbLTI0LjI3ODM0LCA3Mi41OTc4OF0sIFstMjQuNzkyOTYsIDcyLjMzMDJdLCBbLTIzLjQ0Mjk2LCA3Mi4wODAxNl0sIFstMjIuMTMyODEsIDcxLjQ2ODk4XSwgWy0yMS43NTM1NiwgNzAuNjYzNjldLCBbLTIzLjUzNjAzLCA3MC40NzFdLCBbLTI0LjMwNzAyLCA3MC44NTY0OV0sIFstMjUuNTQzNDEsIDcxLjQzMDk0XSwgWy0yNS4yMDEzNSwgNzAuNzUyMjZdLCBbLTI2LjM2Mjc2LCA3MC4yMjY0Nl0sIFstMjMuNzI3NDIsIDcwLjE4NDAxXSwgWy0yMi4zNDkwMiwgNzAuMTI5NDZdLCBbLTI1LjAyOTI3LCA2OS4yNTg4XSwgWy0yNy43NDczNywgNjguNDcwNDZdLCBbLTMwLjY3MzcxLCA2OC4xMjUwM10sIFstMzEuNzc2NjUsIDY4LjEyMDc4XSwgWy0zMi44MTEwNSwgNjcuNzM1NDddLCBbLTM0LjIwMTk2LCA2Ni42Nzk3NF0sIFstMzYuMzUyODQsIDY1Ljk3ODldLCBbLTM3LjA0Mzc4LCA2NS45Mzc2OF0sIFstMzguMzc1MDUsIDY1LjY5MjEzXSwgWy0zOS44MTIyMiwgNjUuNDU4NDhdLCBbLTQwLjY2ODk5LCA2NC44Mzk5N10sIFstNDAuNjgyODEsIDY0LjEzOTAyXSwgWy00MS4xODg3LCA2My40ODI0Nl0sIFstNDIuODE5MzgsIDYyLjY4MjMzXSwgWy00Mi40MTY2NiwgNjEuOTAwOTNdLCBbLTQyLjg2NjE5LCA2MS4wNzQwNF0sIFstNDMuMzc4NCwgNjAuMDk3NzJdLCBbLTQ0Ljc4NzUsIDYwLjAzNjc2XSwgWy00Ni4yNjM2NCwgNjAuODUzMjhdLCBbLTQ4LjI2Mjk0LCA2MC44NTg0M10sIFstNDkuMjMzMDgsIDYxLjQwNjgxXSwgWy00OS45MDAzOSwgNjIuMzgzMzZdLCBbLTUxLjYzMzI1LCA2My42MjY5MV0sIFstNTIuMTQwMTQsIDY0LjI3ODQyXSwgWy01Mi4yNzY1OSwgNjUuMTc2N10sIFstNTMuNjYxNjYsIDY2LjA5OTU3XSwgWy01My4zMDE2MSwgNjYuODM2NV0sIFstNTMuOTY5MTEsIDY3LjE4ODk5XSwgWy01Mi45ODA0LCA2OC4zNTc1OV0sIFstNTEuNDc1MzYsIDY4LjcyOTU4XSwgWy01MS4wODA0MSwgNjkuMTQ3ODFdLCBbLTUwLjg3MTIyLCA2OS45MjkxXSwgWy01Mi4wMTM1ODUsIDY5LjU3NDkyNV0sIFstNTIuNTU3OTIsIDY5LjQyNjE2XSwgWy01My40NTYyOSwgNjkuMjgzNjI1XSwgWy01NC42ODMzNiwgNjkuNjEwMDNdLCBbLTU0Ljc1MDAxLCA3MC4yODkzMl0sIFstNTQuMzU4ODQsIDcwLjgyMTMxNV0sIFstNTMuNDMxMzE1LCA3MC44MzU3NTVdLCBbLTUxLjM5MDE0LCA3MC41Njk3OF0sIFstNTMuMTA5MzcsIDcxLjIwNDg1XSwgWy01NC4wMDQyMiwgNzEuNTQ3MTldLCBbLTU1LCA3MS40MDY1MzddLCBbLTU1LjgzNDY4LCA3MS42NTQ0NF0sIFstNTQuNzE4MTksIDcyLjU4NjI1XSwgWy01NS4zMjYzNCwgNzIuOTU4NjFdLCBbLTU2LjEyMDAzLCA3My42NDk3N10sIFstNTcuMzIzNjMsIDc0LjcxMDI2XSwgWy01OC41OTY3OSwgNzUuMDk4NjFdLCBbLTU4LjU4NTE2LCA3NS41MTcyN10sIFstNjEuMjY4NjEsIDc2LjEwMjM4XSwgWy02My4zOTE2NSwgNzYuMTc1Ml0sIFstNjYuMDY0MjcsIDc2LjEzNDg2XSwgWy02OC41MDQzOCwgNzYuMDYxNDFdLCBbLTY5LjY2NDg1LCA3Ni4zNzk3NV0sIFstNzEuNDAyNTcsIDc3LjAwODU3XSwgWy02OC43NzY3MSwgNzcuMzIzMTJdLCBbLTY2Ljc2Mzk3LCA3Ny4zNzU5NV0sIFstNzEuMDQyOTMsIDc3LjYzNTk1XSwgWy03My4yOTcsIDc4LjA0NDE5XSwgWy03My4xNTkzOCwgNzguNDMyNzFdLCBbLTY5LjM3MzQ1LCA3OC45MTM4OF0sIFstNjUuNzEwNywgNzkuMzk0MzZdLCBbLTY1LjMyMzksIDc5Ljc1ODE0XSwgWy02OC4wMjI5OCwgODAuMTE3MjFdLCBbLTY3LjE1MTI5LCA4MC41MTU4Ml0sIFstNjMuNjg5MjUsIDgxLjIxMzk2XSwgWy02Mi4yMzQ0NCwgODEuMzIxMV0sIFstNjIuNjUxMTYsIDgxLjc3MDQyXSwgWy02MC4yODI0OSwgODIuMDMzNjNdLCBbLTU3LjIwNzQ0LCA4Mi4xOTA3NF0sIFstNTQuMTM0NDIsIDgyLjE5OTYyXSwgWy01My4wNDMyOCwgODEuODg4MzNdLCBbLTUwLjM5MDYxLCA4Mi40Mzg4M10sIFstNDguMDAzODYsIDgyLjA2NDgxXSwgWy00Ni41OTk4NCwgODEuOTg1OTQ1XSwgWy00NC41MjMsIDgxLjY2MDddLCBbLTQ2LjkwMDcsIDgyLjE5OTc5XSwgWy00Ni43NjM3OSwgODIuNjI3OTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkdSTCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR3JlZW5sYW5kIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stOTAuMDk1NTU1LCAxMy43MzUzMzhdLCBbLTkwLjYwODYyNCwgMTMuOTA5NzcxXSwgWy05MS4yMzI0MSwgMTMuOTI3ODMyXSwgWy05MS42ODk3NDcsIDE0LjEyNjIxOF0sIFstOTIuMjI3NzUsIDE0LjUzODgyOV0sIFstOTIuMjAzMjMsIDE0LjgzMDEwM10sIFstOTIuMDg3MjE2LCAxNS4wNjQ1ODVdLCBbLTkyLjIyOTI0OSwgMTUuMjUxNDQ3XSwgWy05MS43NDc5NiwgMTYuMDY2NTY1XSwgWy05MC40NjQ0NzMsIDE2LjA2OTU2Ml0sIFstOTAuNDM4ODY3LCAxNi40MTAxMV0sIFstOTAuNjAwODQ3LCAxNi40NzA3NzhdLCBbLTkwLjcxMTgyMiwgMTYuNjg3NDgzXSwgWy05MS4wODE2NywgMTYuOTE4NDc3XSwgWy05MS40NTM5MjEsIDE3LjI1MjE3N10sIFstOTEuMDAyMjY5LCAxNy4yNTQ2NThdLCBbLTkxLjAwMTUyLCAxNy44MTc1OTVdLCBbLTkwLjA2NzkzNCwgMTcuODE5MzI2XSwgWy04OS4xNDMwOCwgMTcuODA4MzE5XSwgWy04OS4xNTA4MDYsIDE3LjAxNTU3N10sIFstODkuMjI5MTIyLCAxNS44ODY5MzhdLCBbLTg4LjkzMDYxMywgMTUuODg3MjczXSwgWy04OC42MDQ1ODYsIDE1LjcwNjM4XSwgWy04OC41MTgzNjQsIDE1Ljg1NTM4OV0sIFstODguMjI1MDIzLCAxNS43Mjc3MjJdLCBbLTg4LjY4MDY4LCAxNS4zNDYyNDddLCBbLTg5LjE1NDgxMSwgMTUuMDY2NDE5XSwgWy04OS4yMjUyMiwgMTQuODc0Mjg2XSwgWy04OS4xNDU1MzUsIDE0LjY3ODAxOV0sIFstODkuMzUzMzI2LCAxNC40MjQxMzNdLCBbLTg5LjU4NzM0MywgMTQuMzYyNTg2XSwgWy04OS41MzQyMTksIDE0LjI0NDgxNl0sIFstODkuNzIxOTM0LCAxNC4xMzQyMjhdLCBbLTkwLjA2NDY3OCwgMTMuODgxOTddLCBbLTkwLjA5NTU1NSwgMTMuNzM1MzM4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHVE0iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkd1YXRlbWFsYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTU5Ljc1ODI4NSwgOC4zNjcwMzVdLCBbLTU5LjEwMTY4NCwgNy45OTkyMDJdLCBbLTU4LjQ4Mjk2MiwgNy4zNDc2OTFdLCBbLTU4LjQ1NDg3NiwgNi44MzI3ODddLCBbLTU4LjA3ODEwMywgNi44MDkwOTRdLCBbLTU3LjU0MjIxOSwgNi4zMjEyNjhdLCBbLTU3LjE0NzQzNiwgNS45NzMxNV0sIFstNTcuMzA3MjQ2LCA1LjA3MzU2N10sIFstNTcuOTE0Mjg5LCA0LjgxMjYyNl0sIFstNTcuODYwMjEsIDQuNTc2ODAxXSwgWy01OC4wNDQ2OTQsIDQuMDYwODY0XSwgWy01Ny42MDE1NjksIDMuMzM0NjU1XSwgWy01Ny4yODE0MzMsIDMuMzMzNDkyXSwgWy01Ny4xNTAwOTgsIDIuNzY4OTI3XSwgWy01Ni41MzkzODYsIDEuODk5NTIzXSwgWy01Ni43ODI3MDQsIDEuODYzNzExXSwgWy01Ny4zMzU4MjMsIDEuOTQ4NTM4XSwgWy01Ny42NjA5NzEsIDEuNjgyNTg1XSwgWy01OC4xMTM0NSwgMS41MDcxOTVdLCBbLTU4LjQyOTQ3NywgMS40NjM5NDJdLCBbLTU4LjU0MDAxMywgMS4yNjgwODhdLCBbLTU5LjAzMDg2MiwgMS4zMTc2OThdLCBbLTU5LjY0NjA0NCwgMS43ODY4OTRdLCBbLTU5LjcxODU0NiwgMi4yNDk2M10sIFstNTkuOTc0NTI1LCAyLjc1NTIzM10sIFstNTkuODE1NDEzLCAzLjYwNjQ5OV0sIFstNTkuNTM4MDQsIDMuOTU4ODAzXSwgWy01OS43Njc0MDYsIDQuNDIzNTAzXSwgWy02MC4xMTEwMDIsIDQuNTc0OTY3XSwgWy01OS45ODA5NTksIDUuMDE0MDYxXSwgWy02MC4yMTM2ODMsIDUuMjQ0NDg2XSwgWy02MC43MzM1NzQsIDUuMjAwMjc3XSwgWy02MS40MTAzMDMsIDUuOTU5MDY4XSwgWy02MS4xMzk0MTUsIDYuMjM0Mjk3XSwgWy02MS4xNTkzMzYsIDYuNjk2MDc3XSwgWy02MC41NDM5OTksIDYuODU2NTg0XSwgWy02MC4yOTU2NjgsIDcuMDQzOTExXSwgWy02MC42Mzc5NzMsIDcuNDE1XSwgWy02MC41NTA1ODgsIDcuNzc5NjAzXSwgWy01OS43NTgyODUsIDguMzY3MDM1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHVVkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkd1eWFuYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTg3LjMxNjY1NCwgMTIuOTg0Njg2XSwgWy04Ny40ODk0MDksIDEzLjI5NzUzNV0sIFstODcuNzkzMTExLCAxMy4zODQ0OF0sIFstODcuNzIzNTAzLCAxMy43ODUwNV0sIFstODcuODU5NTE1LCAxMy44OTMzMTJdLCBbLTg4LjA2NTM0MywgMTMuOTY0NjI2XSwgWy04OC41MDM5OTgsIDEzLjg0NTQ4Nl0sIFstODguNTQxMjMxLCAxMy45ODAxNTVdLCBbLTg4Ljg0MzA3MywgMTQuMTQwNTA3XSwgWy04OS4wNTg1MTIsIDE0LjM0MDAyOV0sIFstODkuMzUzMzI2LCAxNC40MjQxMzNdLCBbLTg5LjE0NTUzNSwgMTQuNjc4MDE5XSwgWy04OS4yMjUyMiwgMTQuODc0Mjg2XSwgWy04OS4xNTQ4MTEsIDE1LjA2NjQxOV0sIFstODguNjgwNjgsIDE1LjM0NjI0N10sIFstODguMjI1MDIzLCAxNS43Mjc3MjJdLCBbLTg4LjEyMTE1MywgMTUuNjg4NjU1XSwgWy04Ny45MDE4MTMsIDE1Ljg2NDQ1OF0sIFstODcuNjE1NjgsIDE1Ljg3ODc5OV0sIFstODcuNTIyOTIxLCAxNS43OTcyNzldLCBbLTg3LjM2Nzc2MiwgMTUuODQ2OTRdLCBbLTg2LjkwMzE5MSwgMTUuNzU2NzEzXSwgWy04Ni40NDA5NDYsIDE1Ljc4MjgzNV0sIFstODYuMTE5MjM0LCAxNS44OTM0NDldLCBbLTg2LjAwMTk1NCwgMTYuMDA1NDA2XSwgWy04NS42ODMzMTcsIDE1Ljk1MzY1Ml0sIFstODUuNDQ0MDA0LCAxNS44ODU3NDldLCBbLTg1LjE4MjQ0NCwgMTUuOTA5MTU4XSwgWy04NC45ODM3MjIsIDE1Ljk5NTkyM10sIFstODQuNTI2OTgsIDE1Ljg1NzIyNF0sIFstODQuMzY4MjU2LCAxNS44MzUxNThdLCBbLTg0LjA2MzA1NSwgMTUuNjQ4MjQ0XSwgWy04My43NzM5NzcsIDE1LjQyNDA3Ml0sIFstODMuNDEwMzgxLCAxNS4yNzA5MDNdLCBbLTgzLjE0NzIxOSwgMTQuOTk1ODI5XSwgWy04My40ODk5ODksIDE1LjAxNjI2N10sIFstODMuNjI4NTg1LCAxNC44ODAwNzRdLCBbLTgzLjk3NTcyMSwgMTQuNzQ5NDM2XSwgWy04NC4yMjgzNDIsIDE0Ljc0ODc2NF0sIFstODQuNDQ5MzM2LCAxNC42MjE2MTRdLCBbLTg0LjY0OTU4MiwgMTQuNjY2ODA1XSwgWy04NC44MjAwMzcsIDE0LjgxOTU4N10sIFstODQuOTI0NTAxLCAxNC43OTA0OTNdLCBbLTg1LjA1Mjc4NywgMTQuNTUxNTQxXSwgWy04NS4xNDg3NTEsIDE0LjU2MDE5N10sIFstODUuMTY1MzY1LCAxNC4zNTQzN10sIFstODUuNTE0NDEzLCAxNC4wNzkwMTJdLCBbLTg1LjY5ODY2NSwgMTMuOTYwMDc4XSwgWy04NS44MDEyOTUsIDEzLjgzNjA1NV0sIFstODYuMDk2MjY0LCAxNC4wMzgxODddLCBbLTg2LjMxMjE0MiwgMTMuNzcxMzU2XSwgWy04Ni41MjA3MDgsIDEzLjc3ODQ4N10sIFstODYuNzU1MDg3LCAxMy43NTQ4NDVdLCBbLTg2LjczMzgyMiwgMTMuMjYzMDkzXSwgWy04Ni44ODA1NTcsIDEzLjI1NDIwNF0sIFstODcuMDA1NzY5LCAxMy4wMjU3OTRdLCBbLTg3LjMxNjY1NCwgMTIuOTg0Njg2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJITkQiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkhvbmR1cmFzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxOC44Mjk4MzgsIDQ1LjkwODg3OF0sIFsxOS4wNzI3NjksIDQ1LjUyMTUxMV0sIFsxOS4zOTA0NzYsIDQ1LjIzNjUxNl0sIFsxOS4wMDU0ODYsIDQ0Ljg2MDIzNF0sIFsxOC41NTMyMTQsIDQ1LjA4MTU5XSwgWzE3Ljg2MTc4MywgNDUuMDY3NzRdLCBbMTcuMDAyMTQ2LCA0NS4yMzM3NzddLCBbMTYuNTM0OTM5LCA0NS4yMTE2MDhdLCBbMTYuMzE4MTU3LCA0NS4wMDQxMjddLCBbMTUuOTU5MzY3LCA0NS4yMzM3NzddLCBbMTUuNzUwMDI2LCA0NC44MTg3MTJdLCBbMTYuMjM5NjYsIDQ0LjM1MTE0M10sIFsxNi40NTY0NDMsIDQ0LjA0MTI0XSwgWzE2LjkxNjE1NiwgNDMuNjY3NzIyXSwgWzE3LjI5NzM3MywgNDMuNDQ2MzQxXSwgWzE3LjY3NDkyMiwgNDMuMDI4NTYzXSwgWzE4LjU2LCA0Mi42NV0sIFsxOC40NTAwMTYsIDQyLjQ3OTk5MV0sIFsxNy41MDk5NywgNDIuODQ5OTk1XSwgWzE2LjkzMDAwNiwgNDMuMjA5OTk4XSwgWzE2LjAxNTM4NSwgNDMuNTA3MjE1XSwgWzE1LjE3NDQ1NCwgNDQuMjQzMTkxXSwgWzE1LjM3NjI1LCA0NC4zMTc5MTVdLCBbMTQuOTIwMzA5LCA0NC43Mzg0ODRdLCBbMTQuOTAxNjAyLCA0NS4wNzYwNl0sIFsxNC4yNTg3NDgsIDQ1LjIzMzc3N10sIFsxMy45NTIyNTUsIDQ0LjgwMjEyNF0sIFsxMy42NTY5NzYsIDQ1LjEzNjkzNV0sIFsxMy42Nzk0MDMsIDQ1LjQ4NDE0OV0sIFsxMy43MTUwNiwgNDUuNTAwMzI0XSwgWzE0LjQxMTk2OCwgNDUuNDY2MTY2XSwgWzE0LjU5NTEwOSwgNDUuNjM0OTQxXSwgWzE0LjkzNTI0NCwgNDUuNDcxNjk1XSwgWzE1LjMyNzY3NSwgNDUuNDUyMzE2XSwgWzE1LjMyMzk1NCwgNDUuNzMxNzgzXSwgWzE1LjY3MTUzLCA0NS44MzQxNTRdLCBbMTUuNzY4NzMzLCA0Ni4yMzgxMDhdLCBbMTYuNTY0ODA4LCA0Ni41MDM3NTFdLCBbMTYuODgyNTE1LCA0Ni4zODA2MzJdLCBbMTcuNjMwMDY2LCA0NS45NTE3NjldLCBbMTguNDU2MDYyLCA0NS43NTk0ODFdLCBbMTguODI5ODM4LCA0NS45MDg4NzhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkhSViIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQ3JvYXRpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTczLjE4OTc5MSwgMTkuOTE1Njg0XSwgWy03Mi41Nzk2NzMsIDE5Ljg3MTUwMV0sIFstNzEuNzEyMzYxLCAxOS43MTQ0NTZdLCBbLTcxLjYyNDg3MywgMTkuMTY5ODM4XSwgWy03MS43MDEzMDMsIDE4Ljc4NTQxN10sIFstNzEuOTQ1MTEyLCAxOC42MTY5XSwgWy03MS42ODc3MzgsIDE4LjMxNjY2XSwgWy03MS43MDgzMDUsIDE4LjA0NDk5N10sIFstNzIuMzcyNDc2LCAxOC4yMTQ5NjFdLCBbLTcyLjg0NDQxMSwgMTguMTQ1NjExXSwgWy03My40NTQ1NTUsIDE4LjIxNzkwNl0sIFstNzMuOTIyNDMzLCAxOC4wMzA5OTNdLCBbLTc0LjQ1ODAzNCwgMTguMzQyNTVdLCBbLTc0LjM2OTkyNSwgMTguNjY0OTA4XSwgWy03My40NDk1NDIsIDE4LjUyNjA1M10sIFstNzIuNjk0OTM3LCAxOC40NDU3OTldLCBbLTcyLjMzNDg4MiwgMTguNjY4NDIyXSwgWy03Mi43OTE2NSwgMTkuMTAxNjI1XSwgWy03Mi43ODQxMDUsIDE5LjQ4MzU5MV0sIFstNzMuNDE1MDIyLCAxOS42Mzk1NTFdLCBbLTczLjE4OTc5MSwgMTkuOTE1Njg0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJIVEkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkhhaXRpIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxNi4yMDIyOTgsIDQ2Ljg1MjM4Nl0sIFsxNi41MzQyNjgsIDQ3LjQ5NjE3MV0sIFsxNi4zNDA1ODQsIDQ3LjcxMjkwMl0sIFsxNi45MDM3NTQsIDQ3LjcxNDg2Nl0sIFsxNi45Nzk2NjcsIDQ4LjEyMzQ5N10sIFsxNy40ODg0NzMsIDQ3Ljg2NzQ2Nl0sIFsxNy44NTcxMzMsIDQ3Ljc1ODQyOV0sIFsxOC42OTY1MTMsIDQ3Ljg4MDk1NF0sIFsxOC43NzcwMjUsIDQ4LjA4MTc2OF0sIFsxOS4xNzQzNjUsIDQ4LjExMTM3OV0sIFsxOS42NjEzNjQsIDQ4LjI2NjYxNV0sIFsxOS43Njk0NzEsIDQ4LjIwMjY5MV0sIFsyMC4yMzkwNTQsIDQ4LjMyNzU2N10sIFsyMC40NzM1NjIsIDQ4LjU2Mjg1XSwgWzIwLjgwMTI5NCwgNDguNjIzODU0XSwgWzIxLjg3MjIzNiwgNDguMzE5OTcxXSwgWzIyLjA4NTYwOCwgNDguNDIyMjY0XSwgWzIyLjY0MDgyLCA0OC4xNTAyNF0sIFsyMi43MTA1MzEsIDQ3Ljg4MjE5NF0sIFsyMi4wOTk3NjgsIDQ3LjY3MjQzOV0sIFsyMS42MjY1MTUsIDQ2Ljk5NDIzOF0sIFsyMS4wMjE5NTIsIDQ2LjMxNjA4OF0sIFsyMC4yMjAxOTIsIDQ2LjEyNzQ2OV0sIFsxOS41OTYwNDUsIDQ2LjE3MTczXSwgWzE4LjgyOTgzOCwgNDUuOTA4ODc4XSwgWzE4LjQ1NjA2MiwgNDUuNzU5NDgxXSwgWzE3LjYzMDA2NiwgNDUuOTUxNzY5XSwgWzE2Ljg4MjUxNSwgNDYuMzgwNjMyXSwgWzE2LjU2NDgwOCwgNDYuNTAzNzUxXSwgWzE2LjM3MDUwNSwgNDYuODQxMzI3XSwgWzE2LjIwMjI5OCwgNDYuODUyMzg2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJIVU4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkh1bmdhcnkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxMjAuNzE1NjA5LCAtMTAuMjM5NTgxXSwgWzEyMC4yOTUwMTQsIC0xMC4yNTg2NV0sIFsxMTguOTY3ODA4LCAtOS41NTc5NjldLCBbMTE5LjkwMDMxLCAtOS4zNjEzNF0sIFsxMjAuNDI1NzU2LCAtOS42NjU5MjFdLCBbMTIwLjc3NTUwMiwgLTkuOTY5Njc1XSwgWzEyMC43MTU2MDksIC0xMC4yMzk1ODFdXV0sIFtbWzEyNC40MzU5NSwgLTEwLjE0MDAwMV0sIFsxMjMuNTc5OTgyLCAtMTAuMzU5OTg3XSwgWzEyMy40NTk5ODksIC0xMC4yMzk5OTVdLCBbMTIzLjU1MDAwOSwgLTkuOTAwMDE2XSwgWzEyMy45ODAwMDksIC05LjI5MDAyN10sIFsxMjQuOTY4NjgyLCAtOC44OTI3OV0sIFsxMjUuMDcwMDIsIC05LjA4OTk4N10sIFsxMjUuMDg4NTIsIC05LjM5MzE3M10sIFsxMjQuNDM1OTUsIC0xMC4xNDAwMDFdXV0sIFtbWzExNy45MDAwMTgsIC04LjA5NTY4MV0sIFsxMTguMjYwNjE2LCAtOC4zNjIzODNdLCBbMTE4Ljg3ODQ2LCAtOC4yODA2ODNdLCBbMTE5LjEyNjUwNywgLTguNzA1ODI1XSwgWzExNy45NzA0MDIsIC04LjkwNjYzOV0sIFsxMTcuMjc3NzMxLCAtOS4wNDA4OTVdLCBbMTE2Ljc0MDE0MSwgLTkuMDMyOTM3XSwgWzExNy4wODM3MzcsIC04LjQ1NzE1OF0sIFsxMTcuNjMyMDI0LCAtOC40NDkzMDNdLCBbMTE3LjkwMDAxOCwgLTguMDk1NjgxXV1dLCBbW1sxMjIuOTAzNTM3LCAtOC4wOTQyMzRdLCBbMTIyLjc1Njk4MywgLTguNjQ5ODA4XSwgWzEyMS4yNTQ0OTEsIC04LjkzMzY2Nl0sIFsxMTkuOTI0MzkxLCAtOC44MTA0MThdLCBbMTE5LjkyMDkyOSwgLTguNDQ0ODU5XSwgWzEyMC43MTUwOTIsIC04LjIzNjk2NV0sIFsxMjEuMzQxNjY5LCAtOC41MzY3NF0sIFsxMjIuMDA3MzY1LCAtOC40NjA2Ml0sIFsxMjIuOTAzNTM3LCAtOC4wOTQyMzRdXV0sIFtbWzEwOC42MjM0NzksIC02Ljc3NzY3NF0sIFsxMTAuNTM5MjI3LCAtNi44NzczNThdLCBbMTEwLjc1OTU3NiwgLTYuNDY1MTg2XSwgWzExMi42MTQ4MTEsIC02Ljk0NjAzNl0sIFsxMTIuOTc4NzY4LCAtNy41OTQyMTNdLCBbMTE0LjQ3ODkzNSwgLTcuNzc2NTI4XSwgWzExNS43MDU1MjcsIC04LjM3MDgwN10sIFsxMTQuNTY0NTExLCAtOC43NTE4MTddLCBbMTEzLjQ2NDczNCwgLTguMzQ4OTQ3XSwgWzExMi41NTk2NzIsIC04LjM3NjE4MV0sIFsxMTEuNTIyMDYxLCAtOC4zMDIxMjldLCBbMTEwLjU4NjE1LCAtOC4xMjI2MDVdLCBbMTA5LjQyNzY2NywgLTcuNzQwNjY0XSwgWzEwOC42OTM2NTUsIC03LjY0MTZdLCBbMTA4LjI3Nzc2MywgLTcuNzY2NjU3XSwgWzEwNi40NTQxMDIsIC03LjM1NDldLCBbMTA2LjI4MDYyNCwgLTYuOTI0OV0sIFsxMDUuMzY1NDg2LCAtNi44NTE0MTZdLCBbMTA2LjA1MTY0NiwgLTUuODk1OTE5XSwgWzEwNy4yNjUwMDksIC01Ljk1NDk4NV0sIFsxMDguMDcyMDkxLCAtNi4zNDU3NjJdLCBbMTA4LjQ4Njg0NiwgLTYuNDIxOTg1XSwgWzEwOC42MjM0NzksIC02Ljc3NzY3NF1dXSwgW1tbMTM0LjcyNDYyNCwgLTYuMjE0NDAxXSwgWzEzNC4yMTAxMzQsIC02Ljg5NTIzOF0sIFsxMzQuMTEyNzc2LCAtNi4xNDI0NjddLCBbMTM0LjI5MDMzNiwgLTUuNzgzMDU4XSwgWzEzNC40OTk2MjUsIC01LjQ0NTA0Ml0sIFsxMzQuNzI3MDAyLCAtNS43Mzc1ODJdLCBbMTM0LjcyNDYyNCwgLTYuMjE0NDAxXV1dLCBbW1sxMjcuMjQ5MjE1LCAtMy40NTkwNjVdLCBbMTI2Ljg3NDkyMywgLTMuNzkwOTgzXSwgWzEyNi4xODM4MDIsIC0zLjYwNzM3Nl0sIFsxMjUuOTg5MDM0LCAtMy4xNzcyNzNdLCBbMTI3LjAwMDY1MSwgLTMuMTI5MzE4XSwgWzEyNy4yNDkyMTUsIC0zLjQ1OTA2NV1dXSwgW1tbMTMwLjQ3MTM0NCwgLTMuMDkzNzY0XSwgWzEzMC44MzQ4MzYsIC0zLjg1ODQ3Ml0sIFsxMjkuOTkwNTQ3LCAtMy40NDYzMDFdLCBbMTI5LjE1NTI0OSwgLTMuMzYyNjM3XSwgWzEyOC41OTA2ODQsIC0zLjQyODY3OV0sIFsxMjcuODk4ODkxLCAtMy4zOTM0MzZdLCBbMTI4LjEzNTg3OSwgLTIuODQzNjVdLCBbMTI5LjM3MDk5OCwgLTIuODAyMTU0XSwgWzEzMC40NzEzNDQsIC0zLjA5Mzc2NF1dXSwgW1tbMTM0LjE0MzM2OCwgLTEuMTUxODY3XSwgWzEzNC40MjI2MjcsIC0yLjc2OTE4NV0sIFsxMzUuNDU3NjAzLCAtMy4zNjc3NTNdLCBbMTM2LjI5MzMxNCwgLTIuMzA3MDQyXSwgWzEzNy40NDA3MzgsIC0xLjcwMzUxM10sIFsxMzguMzI5NzI3LCAtMS43MDI2ODZdLCBbMTM5LjE4NDkyMSwgLTIuMDUxMjk2XSwgWzEzOS45MjY2ODQsIC0yLjQwOTA1Ml0sIFsxNDEuMDAwMjEsIC0yLjYwMDE1MV0sIFsxNDEuMDE3MDU3LCAtNS44NTkwMjJdLCBbMTQxLjAzMzg1MiwgLTkuMTE3ODkzXSwgWzE0MC4xNDM0MTUsIC04LjI5NzE2OF0sIFsxMzkuMTI3NzY3LCAtOC4wOTYwNDNdLCBbMTM4Ljg4MTQ3NywgLTguMzgwOTM1XSwgWzEzNy42MTQ0NzQsIC04LjQxMTY4M10sIFsxMzguMDM5MDk5LCAtNy41OTc4ODJdLCBbMTM4LjY2ODYyMSwgLTcuMzIwMjI1XSwgWzEzOC40MDc5MTQsIC02LjIzMjg0OV0sIFsxMzcuOTI3ODQsIC01LjM5MzM2Nl0sIFsxMzUuOTg5MjUsIC00LjU0NjU0NF0sIFsxMzUuMTY0NTk4LCAtNC40NjI5MzFdLCBbMTMzLjY2Mjg4LCAtMy41Mzg4NTNdLCBbMTMzLjM2NzcwNSwgLTQuMDI0ODE5XSwgWzEzMi45ODM5NTYsIC00LjExMjk3OV0sIFsxMzIuNzU2OTQxLCAtMy43NDYyODNdLCBbMTMyLjc1Mzc4OSwgLTMuMzExNzg3XSwgWzEzMS45ODk4MDQsIC0yLjgyMDU1MV0sIFsxMzMuMDY2ODQ1LCAtMi40NjA0MThdLCBbMTMzLjc4MDAzMSwgLTIuNDc5ODQ4XSwgWzEzMy42OTYyMTIsIC0yLjIxNDU0Ml0sIFsxMzIuMjMyMzczLCAtMi4yMTI1MjZdLCBbMTMxLjgzNjIyMiwgLTEuNjE3MTYyXSwgWzEzMC45NDI4NCwgLTEuNDMyNTIyXSwgWzEzMC41MTk1NTgsIC0wLjkzNzcyXSwgWzEzMS44Njc1MzgsIC0wLjY5NTQ2MV0sIFsxMzIuMzgwMTE2LCAtMC4zNjk1MzhdLCBbMTMzLjk4NTU0OCwgLTAuNzgwMjFdLCBbMTM0LjE0MzM2OCwgLTEuMTUxODY3XV1dLCBbW1sxMjUuMjQwNTAxLCAxLjQxOTgzNl0sIFsxMjQuNDM3MDM1LCAwLjQyNzg4MV0sIFsxMjMuNjg1NTA1LCAwLjIzNTU5M10sIFsxMjIuNzIzMDgzLCAwLjQzMTEzN10sIFsxMjEuMDU2NzI1LCAwLjM4MTIxN10sIFsxMjAuMTgzMDgzLCAwLjIzNzI0N10sIFsxMjAuMDQwODcsIC0wLjUxOTY1OF0sIFsxMjAuOTM1OTA1LCAtMS40MDg5MDZdLCBbMTIxLjQ3NTgyMSwgLTAuOTU1OTYyXSwgWzEyMy4zNDA1NjUsIC0wLjYxNTY3M10sIFsxMjMuMjU4Mzk5LCAtMS4wNzYyMTNdLCBbMTIyLjgyMjcxNSwgLTAuOTMwOTUxXSwgWzEyMi4zODg1MywgLTEuNTE2ODU4XSwgWzEyMS41MDgyNzQsIC0xLjkwNDQ4M10sIFsxMjIuNDU0NTcyLCAtMy4xODYwNThdLCBbMTIyLjI3MTg5NiwgLTMuNTI5NV0sIFsxMjMuMTcwOTYzLCAtNC42ODM2OTNdLCBbMTIzLjE2MjMzMywgLTUuMzQwNjA0XSwgWzEyMi42Mjg1MTUsIC01LjYzNDU5MV0sIFsxMjIuMjM2Mzk0LCAtNS4yODI5MzNdLCBbMTIyLjcxOTU2OSwgLTQuNDY0MTcyXSwgWzEyMS43MzgyMzQsIC00Ljg1MTMzMV0sIFsxMjEuNDg5NDYzLCAtNC41NzQ1NTNdLCBbMTIxLjYxOTE3MSwgLTQuMTg4NDc4XSwgWzEyMC44OTgxODIsIC0zLjYwMjEwNV0sIFsxMjAuOTcyMzg5LCAtMi42Mjc2NDNdLCBbMTIwLjMwNTQ1MywgLTIuOTMxNjA0XSwgWzEyMC4zOTAwNDcsIC00LjA5NzU3OV0sIFsxMjAuNDMwNzE3LCAtNS41MjgyNDFdLCBbMTE5Ljc5NjU0MywgLTUuNjczNF0sIFsxMTkuMzY2OTA2LCAtNS4zNzk4NzhdLCBbMTE5LjY1MzYwNiwgLTQuNDU5NDE3XSwgWzExOS40OTg4MzUsIC0zLjQ5NDQxMl0sIFsxMTkuMDc4MzQ0LCAtMy40ODcwMjJdLCBbMTE4Ljc2Nzc2OSwgLTIuODAxOTk5XSwgWzExOS4xODA5NzQsIC0yLjE0NzEwNF0sIFsxMTkuMzIzMzk0LCAtMS4zNTMxNDddLCBbMTE5LjgyNTk5OSwgMC4xNTQyNTRdLCBbMTIwLjAzNTcwMiwgMC41NjY0NzddLCBbMTIwLjg4NTc3OSwgMS4zMDkyMjNdLCBbMTIxLjY2NjgxNywgMS4wMTM5NDRdLCBbMTIyLjkyNzU2NywgMC44NzUxOTJdLCBbMTI0LjA3NzUyMiwgMC45MTcxMDJdLCBbMTI1LjA2NTk4OSwgMS42NDMyNTldLCBbMTI1LjI0MDUwMSwgMS40MTk4MzZdXV0sIFtbWzEyOC42ODgyNDksIDEuMTMyMzg2XSwgWzEyOC42MzU5NTIsIDAuMjU4NDg2XSwgWzEyOC4xMjAxNywgMC4zNTY0MTNdLCBbMTI3Ljk2ODAzNCwgLTAuMjUyMDc3XSwgWzEyOC4zNzk5OTksIC0wLjc4MDAwNF0sIFsxMjguMTAwMDE2LCAtMC44OTk5OTZdLCBbMTI3LjY5NjQ3NSwgLTAuMjY2NTk4XSwgWzEyNy4zOTk0OSwgMS4wMTE3MjJdLCBbMTI3LjYwMDUxMiwgMS44MTA2OTFdLCBbMTI3LjkzMjM3OCwgMi4xNzQ1OTZdLCBbMTI4LjAwNDE1NiwgMS42Mjg1MzFdLCBbMTI4LjU5NDU1OSwgMS41NDA4MTFdLCBbMTI4LjY4ODI0OSwgMS4xMzIzODZdXV0sIFtbWzExNy44NzU2MjcsIDEuODI3NjQxXSwgWzExOC45OTY3NDcsIDAuOTAyMjE5XSwgWzExNy44MTE4NTgsIDAuNzg0MjQyXSwgWzExNy40NzgzMzksIDAuMTAyNDc1XSwgWzExNy41MjE2NDQsIC0wLjgwMzcyM10sIFsxMTYuNTYwMDQ4LCAtMS40ODc2NjFdLCBbMTE2LjUzMzc5NywgLTIuNDgzNTE3XSwgWzExNi4xNDgwODQsIC00LjAxMjcyNl0sIFsxMTYuMDAwODU4LCAtMy42NTcwMzddLCBbMTE0Ljg2NDgwMywgLTQuMTA2OTg0XSwgWzExNC40Njg2NTIsIC0zLjQ5NTcwNF0sIFsxMTMuNzU1NjcyLCAtMy40MzkxN10sIFsxMTMuMjU2OTk0LCAtMy4xMTg3NzZdLCBbMTEyLjA2ODEyNiwgLTMuNDc4MzkyXSwgWzExMS43MDMyOTEsIC0yLjk5NDQ0Ml0sIFsxMTEuMDQ4MjQsIC0zLjA0OTQyNl0sIFsxMTAuMjIzODQ2LCAtMi45MzQwMzJdLCBbMTEwLjA3MDkzNiwgLTEuNTkyODc0XSwgWzEwOS41NzE5NDgsIC0xLjMxNDkwN10sIFsxMDkuMDkxODc0LCAtMC40NTk1MDddLCBbMTA4Ljk1MjY1OCwgMC40MTUzNzVdLCBbMTA5LjA2OTEzNiwgMS4zNDE5MzRdLCBbMTA5LjY2MzI2LCAyLjAwNjQ2N10sIFsxMDkuODMwMjI3LCAxLjMzODEzNl0sIFsxMTAuNTE0MDYxLCAwLjc3MzEzMV0sIFsxMTEuMTU5MTM4LCAwLjk3NjQ3OF0sIFsxMTEuNzk3NTQ4LCAwLjkwNDQ0MV0sIFsxMTIuMzgwMjUyLCAxLjQxMDEyMV0sIFsxMTIuODU5ODA5LCAxLjQ5Nzc5XSwgWzExMy44MDU4NSwgMS4yMTc1NDldLCBbMTE0LjYyMTM1NSwgMS40MzA2ODhdLCBbMTE1LjEzNDAzNywgMi44MjE0ODJdLCBbMTE1LjUxOTA3OCwgMy4xNjkyMzhdLCBbMTE1Ljg2NTUxNywgNC4zMDY1NTldLCBbMTE3LjAxNTIxNCwgNC4zMDYwOTRdLCBbMTE3Ljg4MjAzNSwgNC4xMzc1NTFdLCBbMTE3LjMxMzIzMiwgMy4yMzQ0MjhdLCBbMTE4LjA0ODMzLCAyLjI4NzY5XSwgWzExNy44NzU2MjcsIDEuODI3NjQxXV1dLCBbW1sxMDUuODE3NjU1LCAtNS44NTIzNTZdLCBbMTA0LjcxMDM4NCwgLTUuODczMjg1XSwgWzEwMy44NjgyMTMsIC01LjAzNzMxNV0sIFsxMDIuNTg0MjYxLCAtNC4yMjAyNTldLCBbMTAyLjE1NjE3MywgLTMuNjE0MTQ2XSwgWzEwMS4zOTkxMTMsIC0yLjc5OTc3N10sIFsxMDAuOTAyNTAzLCAtMi4wNTAyNjJdLCBbMTAwLjE0MTk4MSwgLTAuNjUwMzQ4XSwgWzk5LjI2Mzc0LCAwLjE4MzE0Ml0sIFs5OC45NzAwMTEsIDEuMDQyODgyXSwgWzk4LjYwMTM1MSwgMS44MjM1MDddLCBbOTcuNjk5NTk4LCAyLjQ1MzE4NF0sIFs5Ny4xNzY5NDIsIDMuMzA4NzkxXSwgWzk2LjQyNDAxNywgMy44Njg4Nl0sIFs5NS4zODA4NzYsIDQuOTcwNzgyXSwgWzk1LjI5MzAyNiwgNS40Nzk4MjFdLCBbOTUuOTM2ODYzLCA1LjQzOTUxM10sIFs5Ny40ODQ4ODIsIDUuMjQ2MzIxXSwgWzk4LjM2OTE2OSwgNC4yNjgzN10sIFs5OS4xNDI1NTksIDMuNTkwMzVdLCBbOTkuNjkzOTk4LCAzLjE3NDMyOV0sIFsxMDAuNjQxNDM0LCAyLjA5OTM4MV0sIFsxMDEuNjU4MDEyLCAyLjA4MzY5N10sIFsxMDIuNDk4MjcxLCAxLjM5ODddLCBbMTAzLjA3Njg0LCAwLjU2MTM2MV0sIFsxMDMuODM4Mzk2LCAwLjEwNDU0Ml0sIFsxMDMuNDM3NjQ1LCAtMC43MTE5NDZdLCBbMTA0LjAxMDc4OSwgLTEuMDU5MjEyXSwgWzEwNC4zNjk5OTEsIC0xLjA4NDg0M10sIFsxMDQuNTM5NDksIC0xLjc4MjM3Ml0sIFsxMDQuODg3ODkzLCAtMi4zNDA0MjVdLCBbMTA1LjYyMjExMSwgLTIuNDI4ODQ0XSwgWzEwNi4xMDg1OTMsIC0zLjA2MTc3N10sIFsxMDUuODU3NDQ2LCAtNC4zMDU1MjVdLCBbMTA1LjgxNzY1NSwgLTUuODUyMzU2XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJJRE4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkluZG9uZXNpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNzcuODM3NDUxLCAzNS40OTQwMV0sIFs3OC45MTIyNjksIDM0LjMyMTkzNl0sIFs3OC44MTEwODYsIDMzLjUwNjE5OF0sIFs3OS4yMDg4OTIsIDMyLjk5NDM5NV0sIFs3OS4xNzYxMjksIDMyLjQ4Mzc4XSwgWzc4LjQ1ODQ0NiwgMzIuNjE4MTY0XSwgWzc4LjczODg5NCwgMzEuNTE1OTA2XSwgWzc5LjcyMTM2NywgMzAuODgyNzE1XSwgWzgxLjExMTI1NiwgMzAuMTgzNDgxXSwgWzgwLjQ3NjcyMSwgMjkuNzI5ODY1XSwgWzgwLjA4ODQyNSwgMjguNzk0NDddLCBbODEuMDU3MjAzLCAyOC40MTYwOTVdLCBbODEuOTk5OTg3LCAyNy45MjU0NzldLCBbODMuMzA0MjQ5LCAyNy4zNjQ1MDZdLCBbODQuNjc1MDE4LCAyNy4yMzQ5MDFdLCBbODUuMjUxNzc5LCAyNi43MjYxOThdLCBbODYuMDI0MzkzLCAyNi42MzA5ODVdLCBbODcuMjI3NDcyLCAyNi4zOTc4OThdLCBbODguMDYwMjM4LCAyNi40MTQ2MTVdLCBbODguMTc0ODA0LCAyNi44MTA0MDVdLCBbODguMDQzMTMzLCAyNy40NDU4MTldLCBbODguMTIwNDQxLCAyNy44NzY1NDJdLCBbODguNzMwMzI2LCAyOC4wODY4NjVdLCBbODguODE0MjQ4LCAyNy4yOTkzMTZdLCBbODguODM1NjQzLCAyNy4wOTg5NjZdLCBbODkuNzQ0NTI4LCAyNi43MTk0MDNdLCBbOTAuMzczMjc1LCAyNi44NzU3MjRdLCBbOTEuMjE3NTEzLCAyNi44MDg2NDhdLCBbOTIuMDMzNDg0LCAyNi44MzgzMV0sIFs5Mi4xMDM3MTIsIDI3LjQ1MjYxNF0sIFs5MS42OTY2NTcsIDI3Ljc3MTc0Ml0sIFs5Mi41MDMxMTksIDI3Ljg5Njg3Nl0sIFs5My40MTMzNDgsIDI4LjY0MDYyOV0sIFs5NC41NjU5OSwgMjkuMjc3NDM4XSwgWzk1LjQwNDgwMiwgMjkuMDMxNzE3XSwgWzk2LjExNzY3OSwgMjkuNDUyODAyXSwgWzk2LjU4NjU5MSwgMjguODMwOThdLCBbOTYuMjQ4ODMzLCAyOC40MTEwMzFdLCBbOTcuMzI3MTE0LCAyOC4yNjE1ODNdLCBbOTcuNDAyNTYxLCAyNy44ODI1MzZdLCBbOTcuMDUxOTg5LCAyNy42OTkwNTldLCBbOTcuMTMzOTk5LCAyNy4wODM3NzRdLCBbOTYuNDE5MzY2LCAyNy4yNjQ1ODldLCBbOTUuMTI0NzY4LCAyNi41NzM1NzJdLCBbOTUuMTU1MTUzLCAyNi4wMDEzMDddLCBbOTQuNjAzMjQ5LCAyNS4xNjI0OTVdLCBbOTQuNTUyNjU4LCAyNC42NzUyMzhdLCBbOTQuMTA2NzQyLCAyMy44NTA3NDFdLCBbOTMuMzI1MTg4LCAyNC4wNzg1NTZdLCBbOTMuMjg2MzI3LCAyMy4wNDM2NThdLCBbOTMuMDYwMjk0LCAyMi43MDMxMTFdLCBbOTMuMTY2MTI4LCAyMi4yNzg0Nl0sIFs5Mi42NzI3MjEsIDIyLjA0MTIzOV0sIFs5Mi4xNDYwMzUsIDIzLjYyNzQ5OV0sIFs5MS44Njk5MjgsIDIzLjYyNDM0Nl0sIFs5MS43MDY0NzUsIDIyLjk4NTI2NF0sIFs5MS4xNTg5NjMsIDIzLjUwMzUyN10sIFs5MS40Njc3MywgMjQuMDcyNjM5XSwgWzkxLjkxNTA5MywgMjQuMTMwNDE0XSwgWzkyLjM3NjIwMiwgMjQuOTc2NjkzXSwgWzkxLjc5OTU5NiwgMjUuMTQ3NDMyXSwgWzkwLjg3MjIxMSwgMjUuMTMyNjAxXSwgWzg5LjkyMDY5MywgMjUuMjY5NzVdLCBbODkuODMyNDgxLCAyNS45NjUwODJdLCBbODkuMzU1MDk0LCAyNi4wMTQ0MDddLCBbODguNTYzMDQ5LCAyNi40NDY1MjZdLCBbODguMjA5Nzg5LCAyNS43NjgwNjZdLCBbODguOTMxNTU0LCAyNS4yMzg2OTJdLCBbODguMzA2MzczLCAyNC44NjYwNzldLCBbODguMDg0NDIyLCAyNC41MDE2NTddLCBbODguNjk5OTQsIDI0LjIzMzcxNV0sIFs4OC41Mjk3NywgMjMuNjMxMTQyXSwgWzg4Ljg3NjMxMiwgMjIuODc5MTQ2XSwgWzg5LjAzMTk2MSwgMjIuMDU1NzA4XSwgWzg4Ljg4ODc2NiwgMjEuNjkwNTg4XSwgWzg4LjIwODQ5NywgMjEuNzAzMTcyXSwgWzg2Ljk3NTcwNCwgMjEuNDk1NTYyXSwgWzg3LjAzMzE2OSwgMjAuNzQzMzA4XSwgWzg2LjQ5OTM1MSwgMjAuMTUxNjM4XSwgWzg1LjA2MDI2NiwgMTkuNDc4NTc5XSwgWzgzLjk0MTAwNiwgMTguMzAyMDFdLCBbODMuMTg5MjE3LCAxNy42NzEyMjFdLCBbODIuMTkyNzkyLCAxNy4wMTY2MzZdLCBbODIuMTkxMjQyLCAxNi41NTY2NjRdLCBbODEuNjkyNzE5LCAxNi4zMTAyMTldLCBbODAuNzkxOTk5LCAxNS45NTE5NzJdLCBbODAuMzI0ODk2LCAxNS44OTkxODVdLCBbODAuMDI1MDY5LCAxNS4xMzY0MTVdLCBbODAuMjMzMjc0LCAxMy44MzU3NzFdLCBbODAuMjg2Mjk0LCAxMy4wMDYyNjFdLCBbNzkuODYyNTQ3LCAxMi4wNTYyMTVdLCBbNzkuODU3OTk5LCAxMC4zNTcyNzVdLCBbNzkuMzQwNTEyLCAxMC4zMDg4NTRdLCBbNzguODg1MzQ1LCA5LjU0NjEzNl0sIFs3OS4xODk3MiwgOS4yMTY1NDRdLCBbNzguMjc3OTQxLCA4LjkzMzA0N10sIFs3Ny45NDExNjUsIDguMjUyOTU5XSwgWzc3LjUzOTg5OCwgNy45NjU1MzVdLCBbNzYuNTkyOTc5LCA4Ljg5OTI3Nl0sIFs3Ni4xMzAwNjEsIDEwLjI5OTYzXSwgWzc1Ljc0NjQ2NywgMTEuMzA4MjUxXSwgWzc1LjM5NjEwMSwgMTEuNzgxMjQ1XSwgWzc0Ljg2NDgxNiwgMTIuNzQxOTM2XSwgWzc0LjYxNjcxNywgMTMuOTkyNTgzXSwgWzc0LjQ0Mzg1OSwgMTQuNjE3MjIyXSwgWzczLjUzNDE5OSwgMTUuOTkwNjUyXSwgWzczLjExOTkwOSwgMTcuOTI4NTddLCBbNzIuODIwOTA5LCAxOS4yMDgyMzRdLCBbNzIuODI0NDc1LCAyMC40MTk1MDNdLCBbNzIuNjMwNTMzLCAyMS4zNTYwMDldLCBbNzEuMTc1MjczLCAyMC43NTc0NDFdLCBbNzAuNDcwNDU5LCAyMC44NzczMzFdLCBbNjkuMTY0MTMsIDIyLjA4OTI5OF0sIFs2OS42NDQ5MjgsIDIyLjQ1MDc3NV0sIFs2OS4zNDk1OTcsIDIyLjg0MzE4XSwgWzY4LjE3NjY0NSwgMjMuNjkxOTY1XSwgWzY4Ljg0MjU5OSwgMjQuMzU5MTM0XSwgWzcxLjA0MzI0LCAyNC4zNTY1MjRdLCBbNzAuODQ0Njk5LCAyNS4yMTUxMDJdLCBbNzAuMjgyODczLCAyNS43MjIyMjldLCBbNzAuMTY4OTI3LCAyNi40OTE4NzJdLCBbNjkuNTE0MzkzLCAyNi45NDA5NjZdLCBbNzAuNjE2NDk2LCAyNy45ODkxOTZdLCBbNzEuNzc3NjY2LCAyNy45MTMxOF0sIFs3Mi44MjM3NTIsIDI4Ljk2MTU5Ml0sIFs3My40NTA2MzgsIDI5Ljk3NjQxM10sIFs3NC40MjEzOCwgMzAuOTc5ODE1XSwgWzc0LjQwNTkyOSwgMzEuNjkyNjM5XSwgWzc1LjI1ODY0MiwgMzIuMjcxMTA1XSwgWzc0LjQ1MTU1OSwgMzIuNzY0OV0sIFs3NC4xMDQyOTQsIDMzLjQ0MTQ3M10sIFs3My43NDk5NDgsIDM0LjMxNzY5OV0sIFs3NC4yNDAyMDMsIDM0Ljc0ODg4N10sIFs3NS43NTcwNjEsIDM0LjUwNDkyM10sIFs3Ni44NzE3MjIsIDM0LjY1MzU0NF0sIFs3Ny44Mzc0NTEsIDM1LjQ5NDAxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJTkQiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkluZGlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2IxMDAyNiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi4xOTc4ODUsIDUzLjg2NzU2NV0sIFstNi4wMzI5ODUsIDUzLjE1MzE2NF0sIFstNi43ODg4NTcsIDUyLjI2MDExOF0sIFstOC41NjE2MTcsIDUxLjY2OTMwMV0sIFstOS45NzcwODYsIDUxLjgyMDQ1NV0sIFstOS4xNjYyODMsIDUyLjg2NDYyOV0sIFstOS42ODg1MjUsIDUzLjg4MTM2M10sIFstOC4zMjc5ODcsIDU0LjY2NDUxOV0sIFstNy41NzIxNjgsIDU1LjEzMTYyMl0sIFstNy4zNjYwMzEsIDU0LjU5NTg0MV0sIFstNy41NzIxNjgsIDU0LjA1OTk1Nl0sIFstNi45NTM3MywgNTQuMDczNzAyXSwgWy02LjE5Nzg4NSwgNTMuODY3NTY1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJUkwiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklyZWxhbmQiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzUzLjkyMTU5OCwgMzcuMTk4OTE4XSwgWzU0LjgwMDMwNCwgMzcuMzkyNDIxXSwgWzU1LjUxMTU3OCwgMzcuOTY0MTE3XSwgWzU2LjE4MDM3NSwgMzcuOTM1MTI3XSwgWzU2LjYxOTM2NiwgMzguMTIxMzk0XSwgWzU3LjMzMDQzNCwgMzguMDI5MjI5XSwgWzU4LjQzNjE1NCwgMzcuNTIyMzA5XSwgWzU5LjIzNDc2MiwgMzcuNDEyOTg4XSwgWzYwLjM3NzYzOCwgMzYuNTI3MzgzXSwgWzYxLjEyMzA3MSwgMzYuNDkxNTk3XSwgWzYxLjIxMDgxNywgMzUuNjUwMDcyXSwgWzYwLjgwMzE5MywgMzQuNDA0MTAyXSwgWzYwLjUyODQzLCAzMy42NzY0NDZdLCBbNjAuOTYzNywgMzMuNTI4ODMyXSwgWzYwLjUzNjA3OCwgMzIuOTgxMjY5XSwgWzYwLjg2MzY1NSwgMzIuMTgyOTJdLCBbNjAuOTQxOTQ1LCAzMS41NDgwNzVdLCBbNjEuNjk5MzE0LCAzMS4zNzk1MDZdLCBbNjEuNzgxMjIyLCAzMC43MzU4NV0sIFs2MC44NzQyNDgsIDI5LjgyOTIzOV0sIFs2MS4zNjkzMDksIDI5LjMwMzI3Nl0sIFs2MS43NzE4NjgsIDI4LjY5OTMzNF0sIFs2Mi43Mjc4MywgMjguMjU5NjQ1XSwgWzYyLjc1NTQyNiwgMjcuMzc4OTIzXSwgWzYzLjIzMzg5OCwgMjcuMjE3MDQ3XSwgWzYzLjMxNjYzMiwgMjYuNzU2NTMyXSwgWzYxLjg3NDE4NywgMjYuMjM5OTc1XSwgWzYxLjQ5NzM2MywgMjUuMDc4MjM3XSwgWzU5LjYxNjEzNCwgMjUuMzgwMTU3XSwgWzU4LjUyNTc2MSwgMjUuNjA5OTYyXSwgWzU3LjM5NzI1MSwgMjUuNzM5OTAyXSwgWzU2Ljk3MDc2NiwgMjYuOTY2MTA2XSwgWzU2LjQ5MjEzOSwgMjcuMTQzMzA1XSwgWzU1LjcyMzcxLCAyNi45NjQ2MzNdLCBbNTQuNzE1MDksIDI2LjQ4MDY1OF0sIFs1My40OTMwOTcsIDI2LjgxMjM2OV0sIFs1Mi40ODM1OTgsIDI3LjU4MDg0OV0sIFs1MS41MjA3NjMsIDI3Ljg2NTY5XSwgWzUwLjg1Mjk0OCwgMjguODE0NTIxXSwgWzUwLjExNTAwOSwgMzAuMTQ3NzczXSwgWzQ5LjU3Njg1LCAyOS45ODU3MTVdLCBbNDguOTQxMzMzLCAzMC4zMTcwOV0sIFs0OC41Njc5NzEsIDI5LjkyNjc3OF0sIFs0OC4wMTQ1NjgsIDMwLjQ1MjQ1N10sIFs0OC4wMDQ2OTgsIDMwLjk4NTEzN10sIFs0Ny42ODUyODYsIDMwLjk4NDg1M10sIFs0Ny44NDkyMDQsIDMxLjcwOTE3Nl0sIFs0Ny4zMzQ2NjEsIDMyLjQ2OTE1NV0sIFs0Ni4xMDkzNjIsIDMzLjAxNzI4N10sIFs0NS40MTY2OTEsIDMzLjk2Nzc5OF0sIFs0NS42NDg0NiwgMzQuNzQ4MTM4XSwgWzQ2LjE1MTc4OCwgMzUuMDkzMjU5XSwgWzQ2LjA3NjM0LCAzNS42NzczODNdLCBbNDUuNDIwNjE4LCAzNS45Nzc1NDZdLCBbNDQuNzcyNjcsIDM3LjE3MDQ1XSwgWzQ0LjIyNTc1NiwgMzcuOTcxNTg0XSwgWzQ0LjQyMTQwMywgMzguMjgxMjgxXSwgWzQ0LjEwOTIyNSwgMzkuNDI4MTM2XSwgWzQ0Ljc5Mzk5LCAzOS43MTMwMDNdLCBbNDQuOTUyNjg4LCAzOS4zMzU3NjVdLCBbNDUuNDU3NzIyLCAzOC44NzQxMzldLCBbNDYuMTQzNjIzLCAzOC43NDEyMDFdLCBbNDYuNTA1NzIsIDM4Ljc3MDYwNV0sIFs0Ny42ODUwNzksIDM5LjUwODM2NF0sIFs0OC4wNjAwOTUsIDM5LjU4MjIzNV0sIFs0OC4zNTU1MjksIDM5LjI4ODc2NV0sIFs0OC4wMTA3NDQsIDM4Ljc5NDAxNV0sIFs0OC42MzQzNzUsIDM4LjI3MDM3OF0sIFs0OC44ODMyNDksIDM4LjMyMDI0NV0sIFs0OS4xOTk2MTIsIDM3LjU4Mjg3NF0sIFs1MC4xNDc3NzEsIDM3LjM3NDU2N10sIFs1MC44NDIzNTQsIDM2Ljg3MjgxNF0sIFs1Mi4yNjQwMjUsIDM2LjcwMDQyMl0sIFs1My44MjU3OSwgMzYuOTY1MDMxXSwgWzUzLjkyMTU5OCwgMzcuMTk4OTE4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJUk4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklyYW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzQ1LjQyMDYxOCwgMzUuOTc3NTQ2XSwgWzQ2LjA3NjM0LCAzNS42NzczODNdLCBbNDYuMTUxNzg4LCAzNS4wOTMyNTldLCBbNDUuNjQ4NDYsIDM0Ljc0ODEzOF0sIFs0NS40MTY2OTEsIDMzLjk2Nzc5OF0sIFs0Ni4xMDkzNjIsIDMzLjAxNzI4N10sIFs0Ny4zMzQ2NjEsIDMyLjQ2OTE1NV0sIFs0Ny44NDkyMDQsIDMxLjcwOTE3Nl0sIFs0Ny42ODUyODYsIDMwLjk4NDg1M10sIFs0OC4wMDQ2OTgsIDMwLjk4NTEzN10sIFs0OC4wMTQ1NjgsIDMwLjQ1MjQ1N10sIFs0OC41Njc5NzEsIDI5LjkyNjc3OF0sIFs0Ny45NzQ1MTksIDI5Ljk3NTgxOV0sIFs0Ny4zMDI2MjIsIDMwLjA1OTA3XSwgWzQ2LjU2ODcxMywgMjkuMDk5MDI1XSwgWzQ0LjcwOTQ5OSwgMjkuMTc4ODkxXSwgWzQxLjg4OTk4MSwgMzEuMTkwMDA5XSwgWzQwLjM5OTk5NCwgMzEuODg5OTkyXSwgWzM5LjE5NTQ2OCwgMzIuMTYxMDA5XSwgWzM4Ljc5MjM0MSwgMzMuMzc4Njg2XSwgWzQxLjAwNjE1OSwgMzQuNDE5MzcyXSwgWzQxLjM4Mzk2NSwgMzUuNjI4MzE3XSwgWzQxLjI4OTcwNywgMzYuMzU4ODE1XSwgWzQxLjgzNzA2NCwgMzYuNjA1ODU0XSwgWzQyLjM0OTU5MSwgMzcuMjI5ODczXSwgWzQyLjc3OTEyNiwgMzcuMzg1MjY0XSwgWzQzLjk0MjI1OSwgMzcuMjU2MjI4XSwgWzQ0LjI5MzQ1MiwgMzcuMDAxNTE0XSwgWzQ0Ljc3MjY5OSwgMzcuMTcwNDQ1XSwgWzQ1LjQyMDYxOCwgMzUuOTc3NTQ2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJUlEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklyYXEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xNC41MDg2OTUsIDY2LjQ1NTg5Ml0sIFstMTQuNzM5NjM3LCA2NS44MDg3NDhdLCBbLTEzLjYwOTczMiwgNjUuMTI2NjcxXSwgWy0xNC45MDk4MzQsIDY0LjM2NDA4Ml0sIFstMTcuNzk0NDM4LCA2My42Nzg3NDldLCBbLTE4LjY1NjI0NiwgNjMuNDk2MzgzXSwgWy0xOS45NzI3NTUsIDYzLjY0MzYzNV0sIFstMjIuNzYyOTcyLCA2My45NjAxNzldLCBbLTIxLjc3ODQ4NCwgNjQuNDAyMTE2XSwgWy0yMy45NTUwNDQsIDY0Ljg5MTEzXSwgWy0yMi4xODQ0MDMsIDY1LjA4NDk2OF0sIFstMjIuMjI3NDIzLCA2NS4zNzg1OTRdLCBbLTI0LjMyNjE4NCwgNjUuNjExMTg5XSwgWy0yMy42NTA1MTUsIDY2LjI2MjUxOV0sIFstMjIuMTM0OTIyLCA2Ni40MTA0NjldLCBbLTIwLjU3NjI4NCwgNjUuNzMyMTEyXSwgWy0xOS4wNTY4NDIsIDY2LjI3NjYwMV0sIFstMTcuNzk4NjI0LCA2NS45OTM4NTNdLCBbLTE2LjE2NzgxOSwgNjYuNTI2NzkyXSwgWy0xNC41MDg2OTUsIDY2LjQ1NTg5Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiSVNMIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJJY2VsYW5kIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szNS43MTk5MTgsIDMyLjcwOTE5Ml0sIFszNS41NDU2NjUsIDMyLjM5Mzk5Ml0sIFszNS4xODM5MywgMzIuNTMyNTExXSwgWzM0Ljk3NDY0MSwgMzEuODY2NTgyXSwgWzM1LjIyNTg5MiwgMzEuNzU0MzQxXSwgWzM0Ljk3MDUwNywgMzEuNjE2Nzc4XSwgWzM0LjkyNzQwOCwgMzEuMzUzNDM1XSwgWzM1LjM5NzU2MSwgMzEuNDg5MDg2XSwgWzM1LjQyMDkxOCwgMzEuMTAwMDY2XSwgWzM0LjkyMjYwMywgMjkuNTAxMzI2XSwgWzM0LjI2NTQzMywgMzEuMjE5MzYxXSwgWzM0LjU1NjM3MiwgMzEuNTQ4ODI0XSwgWzM0LjQ4ODEwNywgMzEuNjA1NTM5XSwgWzM0Ljc1MjU4NywgMzIuMDcyOTI2XSwgWzM0Ljk1NTQxNywgMzIuODI3Mzc2XSwgWzM1LjA5ODQ1NywgMzMuMDgwNTM5XSwgWzM1LjEyNjA1MywgMzMuMDkwOV0sIFszNS40NjA3MDksIDMzLjA4OTA0XSwgWzM1LjU1Mjc5NywgMzMuMjY0Mjc1XSwgWzM1LjgyMTEwMSwgMzMuMjc3NDI2XSwgWzM1LjgzNjM5NywgMzIuODY4MTIzXSwgWzM1LjcwMDc5OCwgMzIuNzE2MDE0XSwgWzM1LjcxOTkxOCwgMzIuNzA5MTkyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJU1IiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklzcmFlbCIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWzE1LjUyMDM3NiwgMzguMjMxMTU1XSwgWzE1LjE2MDI0MywgMzcuNDQ0MDQ2XSwgWzE1LjMwOTg5OCwgMzcuMTM0MjE5XSwgWzE1LjA5OTk4OCwgMzYuNjE5OTg3XSwgWzE0LjMzNTIyOSwgMzYuOTk2NjMxXSwgWzEzLjgyNjczMywgMzcuMTA0NTMxXSwgWzEyLjQzMTAwNCwgMzcuNjEyOTVdLCBbMTIuNTcwOTQ0LCAzOC4xMjYzODFdLCBbMTMuNzQxMTU2LCAzOC4wMzQ5NjZdLCBbMTQuNzYxMjQ5LCAzOC4xNDM4NzRdLCBbMTUuNTIwMzc2LCAzOC4yMzExNTVdXV0sIFtbWzkuMjEwMDEyLCA0MS4yMDk5OTFdLCBbOS44MDk5NzUsIDQwLjUwMDAwOV0sIFs5LjY2OTUxOSwgMzkuMTc3Mzc2XSwgWzkuMjE0ODE4LCAzOS4yNDA0NzNdLCBbOC44MDY5MzYsIDM4LjkwNjYxOF0sIFs4LjQyODMwMiwgMzkuMTcxODQ3XSwgWzguMzg4MjUzLCA0MC4zNzgzMTFdLCBbOC4xNTk5OTgsIDQwLjk1MDAwN10sIFs4LjcwOTk5MSwgNDAuODk5OTg0XSwgWzkuMjEwMDEyLCA0MS4yMDk5OTFdXV0sIFtbWzEyLjM3NjQ4NSwgNDYuNzY3NTU5XSwgWzEzLjgwNjQ3NSwgNDYuNTA5MzA2XSwgWzEzLjY5ODExLCA0Ni4wMTY3NzhdLCBbMTMuOTM3NjMsIDQ1LjU5MTAxNl0sIFsxMy4xNDE2MDYsIDQ1LjczNjY5Ml0sIFsxMi4zMjg1ODEsIDQ1LjM4MTc3OF0sIFsxMi4zODM4NzUsIDQ0Ljg4NTM3NF0sIFsxMi4yNjE0NTMsIDQ0LjYwMDQ4Ml0sIFsxMi41ODkyMzcsIDQ0LjA5MTM2Nl0sIFsxMy41MjY5MDYsIDQzLjU4NzcyN10sIFsxNC4wMjk4MjEsIDQyLjc2MTAwOF0sIFsxNS4xNDI1NywgNDEuOTU1MTRdLCBbMTUuOTI2MTkxLCA0MS45NjEzMTVdLCBbMTYuMTY5ODk3LCA0MS43NDAyOTVdLCBbMTUuODg5MzQ2LCA0MS41NDEwODJdLCBbMTYuNzg1MDAyLCA0MS4xNzk2MDZdLCBbMTcuNTE5MTY5LCA0MC44NzcxNDNdLCBbMTguMzc2Njg3LCA0MC4zNTU2MjVdLCBbMTguNDgwMjQ3LCA0MC4xNjg4NjZdLCBbMTguMjkzMzg1LCAzOS44MTA3NzRdLCBbMTcuNzM4MzgsIDQwLjI3NzY3MV0sIFsxNi44Njk1OTYsIDQwLjQ0MjIzNV0sIFsxNi40NDg3NDMsIDM5Ljc5NTQwMV0sIFsxNy4xNzE0OSwgMzkuNDI0N10sIFsxNy4wNTI4NDEsIDM4LjkwMjg3MV0sIFsxNi42MzUwODgsIDM4Ljg0MzU3Ml0sIFsxNi4xMDA5NjEsIDM3Ljk4NTg5OV0sIFsxNS42ODQwODcsIDM3LjkwODg0OV0sIFsxNS42ODc5NjMsIDM4LjIxNDU5M10sIFsxNS44OTE5ODEsIDM4Ljc1MDk0Ml0sIFsxNi4xMDkzMzIsIDM4Ljk2NDU0N10sIFsxNS43MTg4MTQsIDM5LjU0NDA3Ml0sIFsxNS40MTM2MTMsIDQwLjA0ODM1N10sIFsxNC45OTg0OTYsIDQwLjE3Mjk0OV0sIFsxNC43MDMyNjgsIDQwLjYwNDU1XSwgWzE0LjA2MDY3MiwgNDAuNzg2MzQ4XSwgWzEzLjYyNzk4NSwgNDEuMTg4Mjg3XSwgWzEyLjg4ODA4MiwgNDEuMjUzMDldLCBbMTIuMTA2NjgzLCA0MS43MDQ1MzVdLCBbMTEuMTkxOTA2LCA0Mi4zNTU0MjVdLCBbMTAuNTExOTQ4LCA0Mi45MzE0NjNdLCBbMTAuMjAwMDI5LCA0My45MjAwMDddLCBbOS43MDI0ODgsIDQ0LjAzNjI3OV0sIFs4Ljg4ODk0NiwgNDQuMzY2MzM2XSwgWzguNDI4NTYxLCA0NC4yMzEyMjhdLCBbNy44NTA3NjcsIDQzLjc2NzE0OF0sIFs3LjQzNTE4NSwgNDMuNjkzODQ1XSwgWzcuNTQ5NTk2LCA0NC4xMjc5MDFdLCBbNy4wMDc1NjIsIDQ0LjI1NDc2N10sIFs2Ljc0OTk1NSwgNDUuMDI4NTE4XSwgWzcuMDk2NjUyLCA0NS4zMzMwOTldLCBbNi44MDIzNTUsIDQ1LjcwODU4XSwgWzYuODQzNTkzLCA0NS45OTExNDddLCBbNy4yNzM4NTEsIDQ1Ljc3Njk0OF0sIFs3Ljc1NTk5MiwgNDUuODI0NDldLCBbOC4zMTY2MywgNDYuMTYzNjQyXSwgWzguNDg5OTUyLCA0Ni4wMDUxNTFdLCBbOC45NjYzMDYsIDQ2LjAzNjkzMl0sIFs5LjE4Mjg4MiwgNDYuNDQwMjE1XSwgWzkuOTIyODM3LCA0Ni4zMTQ4OTldLCBbMTAuMzYzMzc4LCA0Ni40ODM1NzFdLCBbMTAuNDQyNzAxLCA0Ni44OTM1NDZdLCBbMTEuMDQ4NTU2LCA0Ni43NTEzNTldLCBbMTEuMTY0ODI4LCA0Ni45NDE1NzldLCBbMTIuMTUzMDg4LCA0Ny4xMTUzOTNdLCBbMTIuMzc2NDg1LCA0Ni43Njc1NTldXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIklUQSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSXRhbHkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03Ny41Njk2MDEsIDE4LjQ5MDUyNV0sIFstNzYuODk2NjE5LCAxOC40MDA4NjddLCBbLTc2LjM2NTM1OSwgMTguMTYwNzAxXSwgWy03Ni4xOTk2NTksIDE3Ljg4Njg2N10sIFstNzYuOTAyNTYxLCAxNy44NjgyMzhdLCBbLTc3LjIwNjM0MSwgMTcuNzAxMTE2XSwgWy03Ny43NjYwMjMsIDE3Ljg2MTU5N10sIFstNzguMzM3NzE5LCAxOC4yMjU5NjhdLCBbLTc4LjIxNzcyNywgMTguNDU0NTMzXSwgWy03Ny43OTczNjUsIDE4LjUyNDIxOF0sIFstNzcuNTY5NjAxLCAxOC40OTA1MjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkpBTSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSmFtYWljYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMzUuNTQ1NjY1LCAzMi4zOTM5OTJdLCBbMzUuNzE5OTE4LCAzMi43MDkxOTJdLCBbMzYuODM0MDYyLCAzMi4zMTI5MzhdLCBbMzguNzkyMzQxLCAzMy4zNzg2ODZdLCBbMzkuMTk1NDY4LCAzMi4xNjEwMDldLCBbMzkuMDA0ODg2LCAzMi4wMTAyMTddLCBbMzcuMDAyMTY2LCAzMS41MDg0MTNdLCBbMzcuOTk4ODQ5LCAzMC41MDg1XSwgWzM3LjY2ODEyLCAzMC4zMzg2NjVdLCBbMzcuNTAzNTgyLCAzMC4wMDM3NzZdLCBbMzYuNzQwNTI4LCAyOS44NjUyODNdLCBbMzYuNTAxMjE0LCAyOS41MDUyNTRdLCBbMzYuMDY4OTQxLCAyOS4xOTc0OTVdLCBbMzQuOTU2MDM3LCAyOS4zNTY1NTVdLCBbMzQuOTIyNjAzLCAyOS41MDEzMjZdLCBbMzUuNDIwOTE4LCAzMS4xMDAwNjZdLCBbMzUuMzk3NTYxLCAzMS40ODkwODZdLCBbMzUuNTQ1MjUyLCAzMS43ODI1MDVdLCBbMzUuNTQ1NjY1LCAzMi4zOTM5OTJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkpPUiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSm9yZGFuIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbMTM0LjYzODQyOCwgMzQuMTQ5MjM0XSwgWzEzNC43NjYzNzksIDMzLjgwNjMzNV0sIFsxMzQuMjAzNDE2LCAzMy4yMDExNzhdLCBbMTMzLjc5Mjk1LCAzMy41MjE5ODVdLCBbMTMzLjI4MDI2OCwgMzMuMjg5NTddLCBbMTMzLjAxNDg1OCwgMzIuNzA0NTY3XSwgWzEzMi4zNjMxMTUsIDMyLjk4OTM4Ml0sIFsxMzIuMzcxMTc2LCAzMy40NjM2NDJdLCBbMTMyLjkyNDM3MywgMzQuMDYwMjk5XSwgWzEzMy40OTI5NjgsIDMzLjk0NDYyMV0sIFsxMzMuOTA0MTA2LCAzNC4zNjQ5MzFdLCBbMTM0LjYzODQyOCwgMzQuMTQ5MjM0XV1dLCBbW1sxNDAuOTc2Mzg4LCAzNy4xNDIwNzRdLCBbMTQwLjU5OTc3LCAzNi4zNDM5ODNdLCBbMTQwLjc3NDA3NCwgMzUuODQyODc3XSwgWzE0MC4yNTMyNzksIDM1LjEzODExNF0sIFsxMzguOTc1NTI4LCAzNC42Njc2XSwgWzEzNy4yMTc1OTksIDM0LjYwNjI4Nl0sIFsxMzUuNzkyOTgzLCAzMy40NjQ4MDVdLCBbMTM1LjEyMDk4MywgMzMuODQ5MDcxXSwgWzEzNS4wNzk0MzUsIDM0LjU5NjU0NV0sIFsxMzMuMzQwMzE2LCAzNC4zNzU5MzhdLCBbMTMyLjE1Njc3MSwgMzMuOTA0OTMzXSwgWzEzMC45ODYxNDUsIDMzLjg4NTc2MV0sIFsxMzIuMDAwMDM2LCAzMy4xNDk5OTJdLCBbMTMxLjMzMjc5LCAzMS40NTAzNTVdLCBbMTMwLjY4NjMxOCwgMzEuMDI5NTc5XSwgWzEzMC4yMDI0MiwgMzEuNDE4MjM4XSwgWzEzMC40NDc2NzYsIDMyLjMxOTQ3NV0sIFsxMjkuODE0NjkyLCAzMi42MTAzMV0sIFsxMjkuNDA4NDYzLCAzMy4yOTYwNTZdLCBbMTMwLjM1MzkzNSwgMzMuNjA0MTUxXSwgWzEzMC44Nzg0NTEsIDM0LjIzMjc0M10sIFsxMzEuODg0MjI5LCAzNC43NDk3MTRdLCBbMTMyLjYxNzY3MywgMzUuNDMzMzkzXSwgWzEzNC42MDgzMDEsIDM1LjczMTYxOF0sIFsxMzUuNjc3NTM4LCAzNS41MjcxMzRdLCBbMTM2LjcyMzgzMSwgMzcuMzA0OTg0XSwgWzEzNy4zOTA2MTIsIDM2LjgyNzM5MV0sIFsxMzguODU3NjAyLCAzNy44Mjc0ODVdLCBbMTM5LjQyNjQwNSwgMzguMjE1OTYyXSwgWzE0MC4wNTQ3OSwgMzkuNDM4ODA3XSwgWzEzOS44ODMzNzksIDQwLjU2MzMxMl0sIFsxNDAuMzA1NzgzLCA0MS4xOTUwMDVdLCBbMTQxLjM2ODk3MywgNDEuMzc4NTZdLCBbMTQxLjkxNDI2MywgMzkuOTkxNjE2XSwgWzE0MS44ODQ2MDEsIDM5LjE4MDg2NV0sIFsxNDAuOTU5NDg5LCAzOC4xNzQwMDFdLCBbMTQwLjk3NjM4OCwgMzcuMTQyMDc0XV1dLCBbW1sxNDMuOTEwMTYyLCA0NC4xNzQxXSwgWzE0NC42MTM0MjcsIDQzLjk2MDg4M10sIFsxNDUuMzIwODI1LCA0NC4zODQ3MzNdLCBbMTQ1LjU0MzEzNywgNDMuMjYyMDg4XSwgWzE0NC4wNTk2NjIsIDQyLjk4ODM1OF0sIFsxNDMuMTgzODUsIDQxLjk5NTIxNV0sIFsxNDEuNjExNDkxLCA0Mi42Nzg3OTFdLCBbMTQxLjA2NzI4NiwgNDEuNTg0NTk0XSwgWzEzOS45NTUxMDYsIDQxLjU2OTU1Nl0sIFsxMzkuODE3NTQ0LCA0Mi41NjM3NTldLCBbMTQwLjMxMjA4NywgNDMuMzMzMjczXSwgWzE0MS4zODA1NDksIDQzLjM4ODgyNV0sIFsxNDEuNjcxOTUyLCA0NC43NzIxMjVdLCBbMTQxLjk2NzY0NSwgNDUuNTUxNDgzXSwgWzE0My4xNDI4NywgNDQuNTEwMzU4XSwgWzE0My45MTAxNjIsIDQ0LjE3NDFdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkpQTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSmFwYW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzcwLjk2MjMxNSwgNDIuMjY2MTU0XSwgWzcwLjM4ODk2NSwgNDIuMDgxMzA4XSwgWzY5LjA3MDAyNywgNDEuMzg0MjQ0XSwgWzY4LjYzMjQ4MywgNDAuNjY4NjgxXSwgWzY4LjI1OTg5NiwgNDAuNjYyMzI1XSwgWzY3Ljk4NTg1NiwgNDEuMTM1OTkxXSwgWzY2LjcxNDA0NywgNDEuMTY4NDQ0XSwgWzY2LjUxMDY0OSwgNDEuOTg3NjQ0XSwgWzY2LjAyMzM5MiwgNDEuOTk0NjQ2XSwgWzY2LjA5ODAxMiwgNDIuOTk3NjZdLCBbNjQuOTAwODI0LCA0My43MjgwODFdLCBbNjMuMTg1Nzg3LCA0My42NTAwNzVdLCBbNjIuMDEzMywgNDMuNTA0NDc3XSwgWzYxLjA1ODMyLCA0NC40MDU4MTddLCBbNjAuMjM5OTcyLCA0NC43ODQwMzddLCBbNTguNjg5OTg5LCA0NS41MDAwMTRdLCBbNTguNTAzMTI3LCA0NS41ODY4MDRdLCBbNTUuOTI4OTE3LCA0NC45OTU4NThdLCBbNTUuOTY4MTkxLCA0MS4zMDg2NDJdLCBbNTUuNDU1MjUxLCA0MS4yNTk4NTldLCBbNTQuNzU1MzQ1LCA0Mi4wNDM5NzFdLCBbNTQuMDc5NDE4LCA0Mi4zMjQxMDldLCBbNTIuOTQ0MjkzLCA0Mi4xMTYwMzRdLCBbNTIuNTAyNDYsIDQxLjc4MzMxNl0sIFs1Mi40NDYzMzksIDQyLjAyNzE1MV0sIFs1Mi42OTIxMTIsIDQyLjQ0Mzg5NV0sIFs1Mi41MDE0MjYsIDQyLjc5MjI5OF0sIFs1MS4zNDI0MjcsIDQzLjEzMjk3NV0sIFs1MC44OTEyOTIsIDQ0LjAzMTAzNF0sIFs1MC4zMzkxMjksIDQ0LjI4NDAxNl0sIFs1MC4zMDU2NDMsIDQ0LjYwOTgzNl0sIFs1MS4yNzg1MDMsIDQ0LjUxNDg1NF0sIFs1MS4zMTY4OTksIDQ1LjI0NTk5OF0sIFs1Mi4xNjczOSwgNDUuNDA4MzkxXSwgWzUzLjA0MDg3NiwgNDUuMjU5MDQ3XSwgWzUzLjIyMDg2NiwgNDYuMjM0NjQ2XSwgWzUzLjA0MjczNywgNDYuODUzMDA2XSwgWzUyLjA0MjAyMywgNDYuODA0NjM3XSwgWzUxLjE5MTk0NSwgNDcuMDQ4NzA1XSwgWzUwLjAzNDA4MywgNDYuNjA4OTldLCBbNDkuMTAxMTYsIDQ2LjM5OTMzXSwgWzQ4LjU5MzI0MSwgNDYuNTYxMDM0XSwgWzQ4LjY5NDczNCwgNDcuMDc1NjI4XSwgWzQ4LjA1NzI1MywgNDcuNzQzNzUzXSwgWzQ3LjMxNTIzMSwgNDcuNzE1ODQ3XSwgWzQ2LjQ2NjQ0NiwgNDguMzk0MTUyXSwgWzQ3LjA0MzY3MiwgNDkuMTUyMDM5XSwgWzQ2Ljc1MTU5NiwgNDkuMzU2MDA2XSwgWzQ3LjU0OTQ4LCA1MC40NTQ2OThdLCBbNDguNTc3ODQxLCA0OS44NzQ3Nl0sIFs0OC43MDIzODIsIDUwLjYwNTEyOF0sIFs1MC43NjY2NDgsIDUxLjY5Mjc2Ml0sIFs1Mi4zMjg3MjQsIDUxLjcxODY1Ml0sIFs1NC41MzI4NzgsIDUxLjAyNjI0XSwgWzU1LjcxNjk0MSwgNTAuNjIxNzE3XSwgWzU2Ljc3Nzk2MSwgNTEuMDQzNTUxXSwgWzU4LjM2MzI5MSwgNTEuMDYzNjUzXSwgWzU5LjY0MjI4MiwgNTAuNTQ1NDQyXSwgWzU5LjkzMjgwNywgNTAuODQyMTk0XSwgWzYxLjMzNzQyNCwgNTAuNzk5MDddLCBbNjEuNTg4MDAzLCA1MS4yNzI2NTldLCBbNTkuOTY3NTM0LCA1MS45NjA0Ml0sIFs2MC45MjcyNjksIDUyLjQ0NzU0OF0sIFs2MC43Mzk5OTMsIDUyLjcxOTk4Nl0sIFs2MS42OTk5ODYsIDUyLjk3OTk5Nl0sIFs2MC45NzgwNjYsIDUzLjY2NDk5M10sIFs2MS40MzY1OTEsIDU0LjAwNjI2NV0sIFs2NS4xNzg1MzQsIDU0LjM1NDIyOF0sIFs2NS42NjY4NzYsIDU0LjYwMTI2N10sIFs2OC4xNjkxLCA1NC45NzAzOTJdLCBbNjkuMDY4MTY3LCA1NS4zODUyNV0sIFs3MC44NjUyNjcsIDU1LjE2OTczNF0sIFs3MS4xODAxMzEsIDU0LjEzMzI4NV0sIFs3Mi4yMjQxNSwgNTQuMzc2NjU1XSwgWzczLjUwODUxNiwgNTQuMDM1NjE3XSwgWzczLjQyNTY3OSwgNTMuNDg5ODFdLCBbNzQuMzg0ODQ1LCA1My41NDY4NjFdLCBbNzYuODkxMSwgNTQuNDkwNTI0XSwgWzc2LjUyNTE3OSwgNTQuMTc3MDAzXSwgWzc3LjgwMDkxNiwgNTMuNDA0NDE1XSwgWzgwLjAzNTU2LCA1MC44NjQ3NTFdLCBbODAuNTY4NDQ3LCA1MS4zODgzMzZdLCBbODEuOTQ1OTg2LCA1MC44MTIxOTZdLCBbODMuMzgzMDA0LCA1MS4wNjkxODNdLCBbODMuOTM1MTE1LCA1MC44ODkyNDZdLCBbODQuNDE2Mzc3LCA1MC4zMTE0XSwgWzg1LjExNTU2LCA1MC4xMTczMDNdLCBbODUuNTQxMjcsIDQ5LjY5Mjg1OV0sIFs4Ni44MjkzNTcsIDQ5LjgyNjY3NV0sIFs4Ny4zNTk5NywgNDkuMjE0OTgxXSwgWzg2LjU5ODc3NiwgNDguNTQ5MTgyXSwgWzg1Ljc2ODIzMywgNDguNDU1NzUxXSwgWzg1LjcyMDQ4NCwgNDcuNDUyOTY5XSwgWzg1LjE2NDI5LCA0Ny4wMDA5NTZdLCBbODMuMTgwNDg0LCA0Ny4zMzAwMzFdLCBbODIuNDU4OTI2LCA0NS41Mzk2NV0sIFs4MS45NDcwNzEsIDQ1LjMxNzAyN10sIFs3OS45NjYxMDYsIDQ0LjkxNzUxN10sIFs4MC44NjYyMDYsIDQzLjE4MDM2Ml0sIFs4MC4xODAxNSwgNDIuOTIwMDY4XSwgWzgwLjI1OTk5LCA0Mi4zNDk5OTldLCBbNzkuNjQzNjQ1LCA0Mi40OTY2ODNdLCBbNzkuMTQyMTc3LCA0Mi44NTYwOTJdLCBbNzcuNjU4MzkyLCA0Mi45NjA2ODZdLCBbNzYuMDAwMzU0LCA0Mi45ODgwMjJdLCBbNzUuNjM2OTY1LCA0Mi44Nzc5XSwgWzc0LjIxMjg2NiwgNDMuMjk4MzM5XSwgWzczLjY0NTMwNCwgNDMuMDkxMjcyXSwgWzczLjQ4OTc1OCwgNDIuNTAwODk0XSwgWzcxLjg0NDYzOCwgNDIuODQ1Mzk1XSwgWzcxLjE4NjI4MSwgNDIuNzA0MjkzXSwgWzcwLjk2MjMxNSwgNDIuMjY2MTU0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJLQVoiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkthemFraHN0YW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzQwLjk5MywgLTAuODU4MjldLCBbNDEuNTg1MTMsIC0xLjY4MzI1XSwgWzQwLjg4NDc3LCAtMi4wODI1NV0sIFs0MC42Mzc4NSwgLTIuNDk5NzldLCBbNDAuMjYzMDQsIC0yLjU3MzA5XSwgWzQwLjEyMTE5LCAtMy4yNzc2OF0sIFszOS44MDAwNiwgLTMuNjgxMTZdLCBbMzkuNjA0ODksIC00LjM0NjUzXSwgWzM5LjIwMjIyLCAtNC42NzY3N10sIFszNy43NjY5LCAtMy42NzcxMl0sIFszNy42OTg2OSwgLTMuMDk2OTldLCBbMzQuMDcyNjIsIC0xLjA1OTgyXSwgWzMzLjkwMzcxMSwgLTAuOTVdLCBbMzMuODkzNTY5LCAwLjEwOTgxNF0sIFszNC4xOCwgMC41MTVdLCBbMzQuNjcyMSwgMS4xNzY5NF0sIFszNS4wMzU5OSwgMS45MDU4NF0sIFszNC41OTYwNywgMy4wNTM3NF0sIFszNC40NzkxMywgMy41NTU2XSwgWzM0LjAwNSwgNC4yNDk4ODVdLCBbMzQuNjIwMTk2LCA0Ljg0NzEyM10sIFszNS4yOTgwMDcsIDUuNTA2XSwgWzM1LjgxNzQ0OCwgNS4zMzgyMzJdLCBbMzUuODE3NDQ4LCA0Ljc3Njk2Nl0sIFszNi4xNTkwNzksIDQuNDQ3ODY0XSwgWzM2Ljg1NTA5MywgNC40NDc4NjRdLCBbMzguMTIwOTE1LCAzLjU5ODYwNV0sIFszOC40MzY5NywgMy41ODg1MV0sIFszOC42NzExNCwgMy42MTYwN10sIFszOC44OTI1MSwgMy41MDA3NF0sIFszOS41NTkzODQsIDMuNDIyMDZdLCBbMzkuODU0OTQsIDMuODM4NzldLCBbNDAuNzY4NDgsIDQuMjU3MDJdLCBbNDEuMTcxOCwgMy45MTkwOV0sIFs0MS44NTUwODMsIDMuOTE4OTEyXSwgWzQwLjk4MTA1LCAyLjc4NDUyXSwgWzQwLjk5MywgLTAuODU4MjldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIktFTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiS2VueWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzcwLjk2MjMxNSwgNDIuMjY2MTU0XSwgWzcxLjE4NjI4MSwgNDIuNzA0MjkzXSwgWzcxLjg0NDYzOCwgNDIuODQ1Mzk1XSwgWzczLjQ4OTc1OCwgNDIuNTAwODk0XSwgWzczLjY0NTMwNCwgNDMuMDkxMjcyXSwgWzc0LjIxMjg2NiwgNDMuMjk4MzM5XSwgWzc1Lj
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment