Created
January 17, 2019 22:39
-
-
Save egy1st/74db2bd8a2c8088fc033e75d840eab6d to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Introduction/Business Problem" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## What is this business-case going to answer and where?\n", | |
"\n", | |
"### The place:\n", | |
"New York city, a USA state.\n", | |
"\n", | |
"### The problem:\n", | |
"A stakeholder has restaurant in Manhattan, he wants to expand his business by openening a new branch in the same state, New York. Where would he be recommended to open? \n", | |
"The stakeholder asked me to help him in finding the best place to open his new branch\n", | |
"\n", | |
"### The Dataset:\n", | |
"As a data analyst I got New York data from NYU spatial data repository and find that it gas 5 boroughs:\n", | |
"\n", | |
"* Manhattan with 40 neighbors\n", | |
"* Bronx with 52 neighbors\n", | |
"* Staten with Island 63 neighbors\n", | |
"* Brooklyn with 70 neighbors\n", | |
"* Queens with 81 neighbors\n", | |
"\n", | |
"\n", | |
"### The Methodology:\n", | |
"I planned my task as following by dividing it into two main methods:\n", | |
"1. which borough is more similar to Manhattan, thus it would be more appropriate to open there, if all other boroughs show great dissimilarity then I would recommend to open in the same borough, Manhattan, but in different place.\n", | |
"2. Then my task will be to choose the best place the restaurant would be placed in based on many criteria, mainly, competitors surrounding, competitors ratings and trending." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## The Process:\n", | |
"We are going to work on \"New York\" state in USA\n", | |
"* First we will extract all Newyork neighbors usind data provided by NYU spatial data repository at https://geo.nyu.edu \n", | |
"* Second, We will use Foursquare API provided by https://developer.foursquare.com/ to retrieve all needed location, Borough, Categories, Rating, and Trending information\n", | |
"this is the main data we will use for cleaning, wrangling and put for further investigations\n", | |
"\n", | |
"* Thirdly, We will use skilearn library from python to analysis our data using proper machine learning algorithms. There are many algorithms to use i.e k-nearest neighbors, k-means, DBScan, and and decision tree. We will use an algorithm best suits our case analysis and investigations.\n", | |
"\n", | |
"* Then we will use matplotlib library to visualize the investigated results on maps using Foluim library for python\n", | |
"\n", | |
"* Finally, we will put it all together in a simple way, such that stackholders can make their decision easily based on our data analysis investigation for this business case." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# import pandas library to work with dataframe\n", | |
"import pandas as pd\n", | |
"import numpy as np\n", | |
"import matplotlib as mat" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# @hidden_cell\n", | |
"CLIENT_ID = '2UABPTQXVSFUWXVMSQYXON4FACFMLWPELLQFVBYK3S0TLBNV' # your Foursquare ID\n", | |
"CLIENT_SECRET = 'AFKQI22J5NIJ1JSMPU0ZJ2TGHMPAIT04BAPUUD1MOAOIYVLE' # your Foursquare Secret\n", | |
"VERSION = '20180604'" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 45, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Requirement already satisfied: geopy in /home/jupyterlab/conda/lib/python3.6/site-packages (1.18.1)\n", | |
"Requirement already satisfied: geographiclib<2,>=1.49 in /home/jupyterlab/conda/lib/python3.6/site-packages (from geopy) (1.49)\n", | |
"Requirement already satisfied: folium in /home/jupyterlab/conda/lib/python3.6/site-packages (0.5.0)\n", | |
"Requirement already satisfied: branca in /home/jupyterlab/conda/lib/python3.6/site-packages (from folium) (0.3.1)\n", | |
"Requirement already satisfied: jinja2 in /home/jupyterlab/conda/lib/python3.6/site-packages (from folium) (2.10)\n", | |
"Requirement already satisfied: requests in /home/jupyterlab/conda/lib/python3.6/site-packages (from folium) (2.20.1)\n", | |
"Requirement already satisfied: six in /home/jupyterlab/conda/lib/python3.6/site-packages (from folium) (1.11.0)\n", | |
"Requirement already satisfied: MarkupSafe>=0.23 in /home/jupyterlab/conda/lib/python3.6/site-packages (from jinja2->folium) (1.1.0)\n", | |
"Requirement already satisfied: certifi>=2017.4.17 in /home/jupyterlab/conda/lib/python3.6/site-packages (from requests->folium) (2018.11.29)\n", | |
"Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /home/jupyterlab/conda/lib/python3.6/site-packages (from requests->folium) (3.0.4)\n", | |
"Requirement already satisfied: urllib3<1.25,>=1.21.1 in /home/jupyterlab/conda/lib/python3.6/site-packages (from requests->folium) (1.23)\n", | |
"Requirement already satisfied: idna<2.8,>=2.5 in /home/jupyterlab/conda/lib/python3.6/site-packages (from requests->folium) (2.7)\n", | |
"Folium installed\n", | |
"Libraries imported.\n" | |
] | |
} | |
], | |
"source": [ | |
"#!conda install -c conda-forge geopy --yes \n", | |
"!pip install geopy \n", | |
"from geopy.geocoders import Nominatim # module to convert an address into latitude and longitude values\n", | |
"import requests # library to handle requests\n", | |
"\n", | |
"pd.set_option('display.max_columns', None)\n", | |
"pd.set_option('display.max_rows', None)\n", | |
"\n", | |
"import json # library to handle JSON files\n", | |
"\n", | |
"# libraries for displaying images\n", | |
"from IPython.display import Image \n", | |
"from IPython.core.display import HTML \n", | |
" \n", | |
"# tranforming json file into a pandas dataframe library\n", | |
"from pandas.io.json import json_normalize\n", | |
"\n", | |
"#!conda install -c conda-forge folium=0.5.0 --yes\n", | |
"!pip install folium\n", | |
"import folium # plotting library\n", | |
"\n", | |
"import matplotlib.pyplot as plt\n", | |
"import matplotlib.image as mpimg\n", | |
"\n", | |
"print('Folium installed')\n", | |
"print('Libraries imported.')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Function for creating map of any borough using latitude and longitude values\n", | |
"def print_map (my_data, zoom=11):\n", | |
" my_map = folium.Map(location=[latitude, longitude], zoom_start=zoom)\n", | |
" for lat, lng, label in zip(my_data['Latitude'], my_data['Longitude'], my_data['Neighborhood']):\n", | |
" label = folium.Popup(label, parse_html=True)\n", | |
" folium.CircleMarker(\n", | |
" [lat, lng],\n", | |
" radius=5,\n", | |
" popup=label,\n", | |
" color='blue',\n", | |
" fill=True,\n", | |
" fill_color='#3186cc',\n", | |
" fill_opacity=0.7,\n", | |
" parse_html=False).add_to(my_map)\n", | |
" return my_map" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Data downloaded!\n" | |
] | |
} | |
], | |
"source": [ | |
"!wget -q -O 'newyork_data.json' https://geo.nyu.edu/download/file/nyu-2451-34572-geojson.json\n", | |
"print('Data downloaded!')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"with open('newyork_data.json') as json_data:\n", | |
" df_newyork = json.load(json_data)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"df_newyork = df_newyork['features']" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"{'type': 'Feature',\n", | |
" 'id': 'nyu_2451_34572.1',\n", | |
" 'geometry': {'type': 'Point',\n", | |
" 'coordinates': [-73.84720052054902, 40.89470517661]},\n", | |
" 'geometry_name': 'geom',\n", | |
" 'properties': {'name': 'Wakefield',\n", | |
" 'stacked': 1,\n", | |
" 'annoline1': 'Wakefield',\n", | |
" 'annoline2': None,\n", | |
" 'annoline3': None,\n", | |
" 'annoangle': 0.0,\n", | |
" 'borough': 'Bronx',\n", | |
" 'bbox': [-73.84720052054902,\n", | |
" 40.89470517661,\n", | |
" -73.84720052054902,\n", | |
" 40.89470517661]}}" | |
] | |
}, | |
"execution_count": 9, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"#let us have a look\n", | |
"df_newyork[0]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# define the dataframe columns\n", | |
"column_names = ['Borough', 'Neighborhood', 'Latitude', 'Longitude'] \n", | |
"\n", | |
"# instantiate the dataframe\n", | |
"newyork_data = pd.DataFrame(columns=column_names)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"306" | |
] | |
}, | |
"execution_count": 11, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"len(df_newyork)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# let us populate it\n", | |
"for data in df_newyork:\n", | |
" borough = neighborhood_name = data['properties']['borough'] \n", | |
" neighborhood_name = data['properties']['name']\n", | |
" \n", | |
" neighborhood_latlon = data['geometry']['coordinates']\n", | |
" neighborhood_lat = neighborhood_latlon[1]\n", | |
" neighborhood_lon = neighborhood_latlon[0]\n", | |
" \n", | |
" newyork_data = newyork_data.append({'Borough': borough,\n", | |
" 'Neighborhood': neighborhood_name,\n", | |
" 'Latitude': neighborhood_lat,\n", | |
" 'Longitude': neighborhood_lon}, ignore_index=True)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": {}, | |
"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>Borough</th>\n", | |
" <th>Neighborhood</th>\n", | |
" <th>Latitude</th>\n", | |
" <th>Longitude</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>Bronx</td>\n", | |
" <td>Wakefield</td>\n", | |
" <td>40.894705</td>\n", | |
" <td>-73.847201</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>Bronx</td>\n", | |
" <td>Co-op City</td>\n", | |
" <td>40.874294</td>\n", | |
" <td>-73.829939</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>Bronx</td>\n", | |
" <td>Eastchester</td>\n", | |
" <td>40.887556</td>\n", | |
" <td>-73.827806</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>Bronx</td>\n", | |
" <td>Fieldston</td>\n", | |
" <td>40.895437</td>\n", | |
" <td>-73.905643</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>Bronx</td>\n", | |
" <td>Riverdale</td>\n", | |
" <td>40.890834</td>\n", | |
" <td>-73.912585</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Borough Neighborhood Latitude Longitude\n", | |
"0 Bronx Wakefield 40.894705 -73.847201\n", | |
"1 Bronx Co-op City 40.874294 -73.829939\n", | |
"2 Bronx Eastchester 40.887556 -73.827806\n", | |
"3 Bronx Fieldston 40.895437 -73.905643\n", | |
"4 Bronx Riverdale 40.890834 -73.912585" | |
] | |
}, | |
"execution_count": 13, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"newyork_data.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 28, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "-" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The dataframe has 5 boroughs and 306 neighborhoods.\n" | |
] | |
}, | |
{ | |
"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>Neighborhood</th>\n", | |
" <th>Latitude</th>\n", | |
" <th>Longitude</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>Borough</th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>Bronx</th>\n", | |
" <td>52</td>\n", | |
" <td>52</td>\n", | |
" <td>52</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>Brooklyn</th>\n", | |
" <td>70</td>\n", | |
" <td>70</td>\n", | |
" <td>70</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>Manhattan</th>\n", | |
" <td>40</td>\n", | |
" <td>40</td>\n", | |
" <td>40</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>Queens</th>\n", | |
" <td>81</td>\n", | |
" <td>81</td>\n", | |
" <td>81</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>Staten Island</th>\n", | |
" <td>63</td>\n", | |
" <td>63</td>\n", | |
" <td>63</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Neighborhood Latitude Longitude\n", | |
"Borough \n", | |
"Bronx 52 52 52\n", | |
"Brooklyn 70 70 70\n", | |
"Manhattan 40 40 40\n", | |
"Queens 81 81 81\n", | |
"Staten Island 63 63 63" | |
] | |
}, | |
"execution_count": 28, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"print('The dataframe has {} boroughs and {} neighborhoods.'.format(\n", | |
" len(newyork_data['Borough'].unique()),\n", | |
" newyork_data.shape[0]\n", | |
" )\n", | |
")\n", | |
"\n", | |
"#how many neighborhood each borough has\n", | |
"df_groups = newyork_data.groupby (['Borough']).count()\n", | |
"df_groups" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The geograpical coordinate of New York City are 40.7308619, -73.9871558.\n" | |
] | |
} | |
], | |
"source": [ | |
"# Use geopy library to get the latitude and longitude values of New York City.\n", | |
"address = 'New York City, NY'\n", | |
"geolocator = Nominatim()\n", | |
"location = geolocator.geocode(address)\n", | |
"latitude = location.latitude\n", | |
"longitude = location.longitude\n", | |
"print('The geograpical coordinate of New York City are {}, {}.'.format(latitude, longitude))\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"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+ICNtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNDAuNzMwODYxOSwtNzMuOTg3MTU1OF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfMWRiZmVjYzhjOTA1NDE4NzkwOWJkY2VjN2QyYWY2NjkgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYxZDZmMjljMjczYzRiNTJiZjcxZGI3MTU1ZWVlNDYwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODk0NzA1MTc2NjEsLTczLjg0NzIwMDUyMDU0OTAyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2IxZWY5ZWJkNjY4YTRlYTA4M2U0MjczNjZiOTBmNDQwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RjNWQwN2FkNjMyMjRlNWQ5NDJkMDdhMGY0N2NmNjBmID0gJCgnPGRpdiBpZD0iaHRtbF9kYzVkMDdhZDYzMjI0ZTVkOTQyZDA3YTBmNDdjZjYwZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V2FrZWZpZWxkPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iMWVmOWViZDY2OGE0ZWEwODNlNDI3MzY2YjkwZjQ0MC5zZXRDb250ZW50KGh0bWxfZGM1ZDA3YWQ2MzIyNGU1ZDk0MmQwN2EwZjQ3Y2Y2MGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjFkNmYyOWMyNzNjNGI1MmJmNzFkYjcxNTVlZWU0NjAuYmluZFBvcHVwKHBvcHVwX2IxZWY5ZWJkNjY4YTRlYTA4M2U0MjczNjZiOTBmNDQwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2EyMzRmNGNiMDhjMTQ5ZWViOTEyNTE4Y2FjNmI1MDc5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODc0Mjk0MTkzMDMwMTIsLTczLjgyOTkzOTEwODEyMzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQwOGQ4YjY1YjI4MzQxNDdhNGRmNzA2OWUyOWYxNzE2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzlmNDBmZDJlZWI3OTQyYjRhMDliYWQ3NjQ2YzlkODI2ID0gJCgnPGRpdiBpZD0iaHRtbF85ZjQwZmQyZWViNzk0MmI0YTA5YmFkNzY0NmM5ZDgyNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q28tb3AgQ2l0eTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDA4ZDhiNjViMjgzNDE0N2E0ZGY3MDY5ZTI5ZjE3MTYuc2V0Q29udGVudChodG1sXzlmNDBmZDJlZWI3OTQyYjRhMDliYWQ3NjQ2YzlkODI2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2EyMzRmNGNiMDhjMTQ5ZWViOTEyNTE4Y2FjNmI1MDc5LmJpbmRQb3B1cChwb3B1cF80MDhkOGI2NWIyODM0MTQ3YTRkZjcwNjllMjlmMTcxNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MzEwYmJmNzFlMTE0ZTdlODNlMmM1YTYyODJjZDkwNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg4NzU1NTY3NzM1MDc3NSwtNzMuODI3ODA2NDQ3MTY0MTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2I2NTQ2OGFkOTljNGE5YzlmNmQ1NGM3OGQzZTA4MTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGY5NGM0ODE0OWFmNGYzYTg4ZDUwZjI3MjJlY2VhYWMgPSAkKCc8ZGl2IGlkPSJodG1sX2RmOTRjNDgxNDlhZjRmM2E4OGQ1MGYyNzIyZWNlYWFjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FYXN0Y2hlc3RlcjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2I2NTQ2OGFkOTljNGE5YzlmNmQ1NGM3OGQzZTA4MTEuc2V0Q29udGVudChodG1sX2RmOTRjNDgxNDlhZjRmM2E4OGQ1MGYyNzIyZWNlYWFjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzgzMTBiYmY3MWUxMTRlN2U4M2UyYzVhNjI4MmNkOTA3LmJpbmRQb3B1cChwb3B1cF9jYjY1NDY4YWQ5OWM0YTljOWY2ZDU0Yzc4ZDNlMDgxMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lY2RhOWMxNTM2YmQ0ZGI0OWM0ZGMxNDRjYjdlZGU4YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg5NTQzNzQyNjkwMzgzLC03My45MDU2NDI1OTU5MTY4Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82YmRjZmY5MjJkNDA0NWEwOGI2Zjk0ODdmNmZkYTg0OSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84ZDZlYTMxMjBkY2Q0ODM1YWQyMjdhM2I1NjRhZTY4MCA9ICQoJzxkaXYgaWQ9Imh0bWxfOGQ2ZWEzMTIwZGNkNDgzNWFkMjI3YTNiNTY0YWU2ODAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZpZWxkc3RvbjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmJkY2ZmOTIyZDQwNDVhMDhiNmY5NDg3ZjZmZGE4NDkuc2V0Q29udGVudChodG1sXzhkNmVhMzEyMGRjZDQ4MzVhZDIyN2EzYjU2NGFlNjgwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2VjZGE5YzE1MzZiZDRkYjQ5YzRkYzE0NGNiN2VkZThiLmJpbmRQb3B1cChwb3B1cF82YmRjZmY5MjJkNDA0NWEwOGI2Zjk0ODdmNmZkYTg0OSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hYjJiM2VlZjcyNGI0NzY2OWNiZmFmMTcyZWRkZmM3ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg5MDgzNDQ5Mzg5MTMwNSwtNzMuOTEyNTg1NDYxMDg1N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81Y2UxY2EzODMxZTY0NDRiYjJlZjVmYjBkYzlhNjdmYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yMWU5NTlkNDdjNGM0MWUxODY3YzA4OTIzY2NlNGQ4YyA9ICQoJzxkaXYgaWQ9Imh0bWxfMjFlOTU5ZDQ3YzRjNDFlMTg2N2MwODkyM2NjZTRkOGMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJpdmVyZGFsZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNWNlMWNhMzgzMWU2NDQ0YmIyZWY1ZmIwZGM5YTY3ZmIuc2V0Q29udGVudChodG1sXzIxZTk1OWQ0N2M0YzQxZTE4NjdjMDg5MjNjY2U0ZDhjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2FiMmIzZWVmNzI0YjQ3NjY5Y2JmYWYxNzJlZGRmYzdmLmJpbmRQb3B1cChwb3B1cF81Y2UxY2EzODMxZTY0NDRiYjJlZjVmYjBkYzlhNjdmYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zNGY3MWQ1OTQxZjY0OWQ3YmUxNWM4NjlmNDExZmU0MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg4MTY4NzM3MTIwNTIxLC03My45MDI4MTc5ODcyNDYwNF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iOTE1ZjVhNTc4NWE0ODZkYmRhNDM5MDYwZjhmMzhjOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mNTE2Mzg5ZWIzNDk0NWZjYjJkZjUxNTZiOTljNzdlYSA9ICQoJzxkaXYgaWQ9Imh0bWxfZjUxNjM4OWViMzQ5NDVmY2IyZGY1MTU2Yjk5Yzc3ZWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPktpbmdzYnJpZGdlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iOTE1ZjVhNTc4NWE0ODZkYmRhNDM5MDYwZjhmMzhjOS5zZXRDb250ZW50KGh0bWxfZjUxNjM4OWViMzQ5NDVmY2IyZGY1MTU2Yjk5Yzc3ZWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzRmNzFkNTk0MWY2NDlkN2JlMTVjODY5ZjQxMWZlNDEuYmluZFBvcHVwKHBvcHVwX2I5MTVmNWE1Nzg1YTQ4NmRiZGE0MzkwNjBmOGYzOGM5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzExYzM5NWNjZmRjZjRkODQ4ODhmZDM3ZDRmNmVmMjg1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODc2NTUwNzc4Nzk5NjQsLTczLjkxMDY1OTY1ODYyOTgxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2UyMTgyNTk2Y2E2YzQwMTg5ZWYyMjMxYjc1YmNjMmNlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2UzYjczZjM5Y2NkZjRiZTg4YjEyOGI0NDc0ZmQwYjUzID0gJCgnPGRpdiBpZD0iaHRtbF9lM2I3M2YzOWNjZGY0YmU4OGIxMjhiNDQ3NGZkMGI1MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWFyYmxlIEhpbGw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UyMTgyNTk2Y2E2YzQwMTg5ZWYyMjMxYjc1YmNjMmNlLnNldENvbnRlbnQoaHRtbF9lM2I3M2YzOWNjZGY0YmU4OGIxMjhiNDQ3NGZkMGI1Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xMWMzOTVjY2ZkY2Y0ZDg0ODg4ZmQzN2Q0ZjZlZjI4NS5iaW5kUG9wdXAocG9wdXBfZTIxODI1OTZjYTZjNDAxODllZjIyMzFiNzViY2MyY2UpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTk4YTAwZGJkMmI3NDRmN2I1ZDZlYmI5NGM4MzI1YTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44OTgyNzI2MTIxMzgwNSwtNzMuODY3MzE0OTY4MTQxNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzgzYjk1N2MxMzI4NGQ3MDhmOGY0ZGU3ZDAwMjVhMzUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGRjZWNhYjMzNjg2NGVjZDhiZThmOTkwMTE2YWJmZjAgPSAkKCc8ZGl2IGlkPSJodG1sXzRkY2VjYWIzMzY4NjRlY2Q4YmU4Zjk5MDExNmFiZmYwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Xb29kbGF3bjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzgzYjk1N2MxMzI4NGQ3MDhmOGY0ZGU3ZDAwMjVhMzUuc2V0Q29udGVudChodG1sXzRkY2VjYWIzMzY4NjRlY2Q4YmU4Zjk5MDExNmFiZmYwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzU5OGEwMGRiZDJiNzQ0ZjdiNWQ2ZWJiOTRjODMyNWEwLmJpbmRQb3B1cChwb3B1cF8zODNiOTU3YzEzMjg0ZDcwOGY4ZjRkZTdkMDAyNWEzNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hYTBhYzVkNjc1MDQ0OTU3YWVlMmM4Njc2ODM0YmNmMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg3NzIyNDE1NTk5NDQ2LC03My44NzkzOTA3Mzk1NjgxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ZiYzllYTJjNDM0MTQ4MjBiZDA2NDRjZmYyYTU4Y2E3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI1YjdlOGVkM2RlMjQ1NTFiMWQwMDI5MGYwNTZkZTRkID0gJCgnPGRpdiBpZD0iaHRtbF8yNWI3ZThlZDNkZTI0NTUxYjFkMDAyOTBmMDU2ZGU0ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tm9yd29vZDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZmJjOWVhMmM0MzQxNDgyMGJkMDY0NGNmZjJhNThjYTcuc2V0Q29udGVudChodG1sXzI1YjdlOGVkM2RlMjQ1NTFiMWQwMDI5MGYwNTZkZTRkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2FhMGFjNWQ2NzUwNDQ5NTdhZWUyYzg2NzY4MzRiY2YzLmJpbmRQb3B1cChwb3B1cF9mYmM5ZWEyYzQzNDE0ODIwYmQwNjQ0Y2ZmMmE1OGNhNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82MGMzYzM1ZDVlZWE0NTAyODJlNGJiNDk5ZWJiMGM5OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg4MTAzODg3ODE5MjExLC03My44NTc0NDY0Mjk3NDIwN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iMTNjMWM1YmY1ZWQ0ODNiOWVkOWQwY2Q5MWZjODdiMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lOWRhNzhjMWIzMzc0NmE0YWIzZjIzODMzZjQ1ZDYzNCA9ICQoJzxkaXYgaWQ9Imh0bWxfZTlkYTc4YzFiMzM3NDZhNGFiM2YyMzgzM2Y0NWQ2MzQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldpbGxpYW1zYnJpZGdlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iMTNjMWM1YmY1ZWQ0ODNiOWVkOWQwY2Q5MWZjODdiMy5zZXRDb250ZW50KGh0bWxfZTlkYTc4YzFiMzM3NDZhNGFiM2YyMzgzM2Y0NWQ2MzQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjBjM2MzNWQ1ZWVhNDUwMjgyZTRiYjQ5OWViYjBjOTguYmluZFBvcHVwKHBvcHVwX2IxM2MxYzViZjVlZDQ4M2I5ZWQ5ZDBjZDkxZmM4N2IzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzgxYzIwZTcwNzBjNDRiZDhhMmM3ZmI1MDcxNGMxYTk0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODY2ODU4MTA3MjUyNjk2LC03My44MzU3OTc1OTgwODExN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iNWVhMTZiNDQ2YmU0NzI2ODgyMjFjODQzZTY0OWQwZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mMzQxZDM0MTkzOTY0ZjdkYjRmZmFkMmY2NjI5MDU2YyA9ICQoJzxkaXYgaWQ9Imh0bWxfZjM0MWQzNDE5Mzk2NGY3ZGI0ZmZhZDJmNjYyOTA1NmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJheWNoZXN0ZXI8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2I1ZWExNmI0NDZiZTQ3MjY4ODIyMWM4NDNlNjQ5ZDBmLnNldENvbnRlbnQoaHRtbF9mMzQxZDM0MTkzOTY0ZjdkYjRmZmFkMmY2NjI5MDU2Yyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84MWMyMGU3MDcwYzQ0YmQ4YTJjN2ZiNTA3MTRjMWE5NC5iaW5kUG9wdXAocG9wdXBfYjVlYTE2YjQ0NmJlNDcyNjg4MjIxYzg0M2U2NDlkMGYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTI0YzlhNGZhOTdmNGQ5Mjg3Y2Y5OWVlYjg2NTYxNGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44NTc0MTM0OTgwODg2NSwtNzMuODU0NzU1NjQwMTc5OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTA3Y2ZkZGEwZmE0NGJjZGI0NjBhNTQ4MWJkZGM3Y2YgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODhkNzhmMWRkNmJkNGUxZDhkZjE1YmQ2MzVhZTVmNDQgPSAkKCc8ZGl2IGlkPSJodG1sXzg4ZDc4ZjFkZDZiZDRlMWQ4ZGYxNWJkNjM1YWU1ZjQ0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5QZWxoYW0gUGFya3dheTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTA3Y2ZkZGEwZmE0NGJjZGI0NjBhNTQ4MWJkZGM3Y2Yuc2V0Q29udGVudChodG1sXzg4ZDc4ZjFkZDZiZDRlMWQ4ZGYxNWJkNjM1YWU1ZjQ0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2UyNGM5YTRmYTk3ZjRkOTI4N2NmOTllZWI4NjU2MTRiLmJpbmRQb3B1cChwb3B1cF8xMDdjZmRkYTBmYTQ0YmNkYjQ2MGE1NDgxYmRkYzdjZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zZjgzMzg3NDEzYTU0OTdiYWYxMzQzZTljYmJiMWM0NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg0NzI0NjcwNDkxODEzLC03My43ODY0ODg0NTI2NzQxM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xYzFiODcxYTMyMDQ0ZTA4OWRlMGNkNWNiMWMxNTVmOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wNzQ4NDk3ZGE1ZjQ0YTc1OWZhMzYxNTc5ZGQ2ZjdkZiA9ICQoJzxkaXYgaWQ9Imh0bWxfMDc0ODQ5N2RhNWY0NGE3NTlmYTM2MTU3OWRkNmY3ZGYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNpdHkgSXNsYW5kPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xYzFiODcxYTMyMDQ0ZTA4OWRlMGNkNWNiMWMxNTVmOS5zZXRDb250ZW50KGh0bWxfMDc0ODQ5N2RhNWY0NGE3NTlmYTM2MTU3OWRkNmY3ZGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfM2Y4MzM4NzQxM2E1NDk3YmFmMTM0M2U5Y2JiYjFjNDcuYmluZFBvcHVwKHBvcHVwXzFjMWI4NzFhMzIwNDRlMDg5ZGUwY2Q1Y2IxYzE1NWY5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzc0OTc5OWY4ZjUxZTQxZDhiNDM3MmFjNzcyMzQ1MGQzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODcwMTg1MTY0OTc1MzI1LC03My44ODU1MTIxODQxOTEzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQ4Y2JlMzAwNDNlNzRmOTk5M2JhMDQ4YmE4YzZiN2I4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2ViODg1ZGViNmJjNTQ2NTI5NWZjMmUyMzUxNjIwNmNmID0gJCgnPGRpdiBpZD0iaHRtbF9lYjg4NWRlYjZiYzU0NjUyOTVmYzJlMjM1MTYyMDZjZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QmVkZm9yZCBQYXJrPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80OGNiZTMwMDQzZTc0Zjk5OTNiYTA0OGJhOGM2YjdiOC5zZXRDb250ZW50KGh0bWxfZWI4ODVkZWI2YmM1NDY1Mjk1ZmMyZTIzNTE2MjA2Y2YpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNzQ5Nzk5ZjhmNTFlNDFkOGI0MzcyYWM3NzIzNDUwZDMuYmluZFBvcHVwKHBvcHVwXzQ4Y2JlMzAwNDNlNzRmOTk5M2JhMDQ4YmE4YzZiN2I4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI0NDg4ZjBmMzc2ZDRkNzg5ODIyY2E3MTllZTQzNWUzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODU1NzI3MDc3MTk2NjQsLTczLjkxMDQxNTk2MTkxMzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDdmZTFhMjY1NzU2NGIwZmEwMjJiODY1Mzg3MDI3NWIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTRkMDMyZWNjNzczNDhjMjhmNTMzZDNiNGMzNTU4N2MgPSAkKCc8ZGl2IGlkPSJodG1sXzU0ZDAzMmVjYzc3MzQ4YzI4ZjUzM2QzYjRjMzU1ODdjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Vbml2ZXJzaXR5IEhlaWdodHM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQ3ZmUxYTI2NTc1NjRiMGZhMDIyYjg2NTM4NzAyNzViLnNldENvbnRlbnQoaHRtbF81NGQwMzJlY2M3NzM0OGMyOGY1MzNkM2I0YzM1NTg3Yyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yNDQ4OGYwZjM3NmQ0ZDc4OTgyMmNhNzE5ZWU0MzVlMy5iaW5kUG9wdXAocG9wdXBfNDdmZTFhMjY1NzU2NGIwZmEwMjJiODY1Mzg3MDI3NWIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDM2NDU4OWJkYzhkNDNkMGFiZGI0YWIwZDJlMWZkYmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44NDc4OTc5MjYwNjI3MSwtNzMuOTE5NjcxNTkxMTk1NjVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmYwM2YwN2M4NGY1NDQyYmFlOWE3MjU1NzNiMjczMTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZWY2MTQyNjczZDFkNDVkNmEyM2UxYzc0ZDI5MTkyNDAgPSAkKCc8ZGl2IGlkPSJodG1sX2VmNjE0MjY3M2QxZDQ1ZDZhMjNlMWM3NGQyOTE5MjQwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Nb3JyaXMgSGVpZ2h0czwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmYwM2YwN2M4NGY1NDQyYmFlOWE3MjU1NzNiMjczMTUuc2V0Q29udGVudChodG1sX2VmNjE0MjY3M2QxZDQ1ZDZhMjNlMWM3NGQyOTE5MjQwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzQzNjQ1ODliZGM4ZDQzZDBhYmRiNGFiMGQyZTFmZGJhLmJpbmRQb3B1cChwb3B1cF82ZjAzZjA3Yzg0ZjU0NDJiYWU5YTcyNTU3M2IyNzMxNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xNThjNDIxOTliN2M0YmI2OWI0M2RkZTI3YjZlZDAwNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg2MDk5Njc5NjM4NjU0LC03My44OTY0MjY1NTk4MTYyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yMjUxYjExYTY4Y2E0ZWI2OWExMjk3NmM3YTNhOTQyZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mNjkwZTg2ZWEyMzQ0ZjUxYTEwZjBiZDg2ZWNjNmU1YiA9ICQoJzxkaXYgaWQ9Imh0bWxfZjY5MGU4NmVhMjM0NGY1MWExMGYwYmQ4NmVjYzZlNWIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZvcmRoYW08L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzIyNTFiMTFhNjhjYTRlYjY5YTEyOTc2YzdhM2E5NDJkLnNldENvbnRlbnQoaHRtbF9mNjkwZTg2ZWEyMzQ0ZjUxYTEwZjBiZDg2ZWNjNmU1Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xNThjNDIxOTliN2M0YmI2OWI0M2RkZTI3YjZlZDAwNS5iaW5kUG9wdXAocG9wdXBfMjI1MWIxMWE2OGNhNGViNjlhMTI5NzZjN2EzYTk0MmQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWFiNmE3OTMwMTc3NDdjM2IyNmMxZTVjM2M5ODRkOWEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44NDI2OTYxNTc4NjA1MywtNzMuODg3MzU2MTc1MzIzMzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDc1MTdiYTA2ZDE4NDNkMDliNWQwNTY1OWVjOTg1ZDcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjA0ODEzNGMwMDMwNDZhYWI4YjMzOGY3MjJkMjFjMmQgPSAkKCc8ZGl2IGlkPSJodG1sXzYwNDgxMzRjMDAzMDQ2YWFiOGIzMzhmNzIyZDIxYzJkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FYXN0IFRyZW1vbnQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q3NTE3YmEwNmQxODQzZDA5YjVkMDU2NTllYzk4NWQ3LnNldENvbnRlbnQoaHRtbF82MDQ4MTM0YzAwMzA0NmFhYjhiMzM4ZjcyMmQyMWMyZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81YWI2YTc5MzAxNzc0N2MzYjI2YzFlNWMzYzk4NGQ5YS5iaW5kUG9wdXAocG9wdXBfZDc1MTdiYTA2ZDE4NDNkMDliNWQwNTY1OWVjOTg1ZDcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTRmMWE5YmQ3ZjgwNDZiMmFkZGRjZTY0Yzg1MjJhMGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44Mzk0NzUwNTY3MjY1MywtNzMuODc3NzQ0NzQ5MTA1NDVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDViMGIyYjgwNDA1NDhmYWIyOGIyMTcyYjkyYWEwMWYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZWUzMmRkNjU1NmY5NDJmODg1NTVmZDE1MWUwMDExYmYgPSAkKCc8ZGl2IGlkPSJodG1sX2VlMzJkZDY1NTZmOTQyZjg4NTU1ZmQxNTFlMDAxMWJmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XZXN0IEZhcm1zPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wNWIwYjJiODA0MDU0OGZhYjI4YjIxNzJiOTJhYTAxZi5zZXRDb250ZW50KGh0bWxfZWUzMmRkNjU1NmY5NDJmODg1NTVmZDE1MWUwMDExYmYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTRmMWE5YmQ3ZjgwNDZiMmFkZGRjZTY0Yzg1MjJhMGYuYmluZFBvcHVwKHBvcHVwXzA1YjBiMmI4MDQwNTQ4ZmFiMjhiMjE3MmI5MmFhMDFmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZmMzNhOGQxMjEyODQwNzFhYzNjOTMyMDA0OGQ2Yjk0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODM2NjIzMDEwNzA2MDU2LC03My45MjYxMDIwOTM1ODEzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA2OTE3NzI2NmExMTQ5MDQ5MWZiYzY3MjBmMWI2ZjZlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzY3MDg2NTBmMTE0MTQwM2M5ZDAyYWZmOTZiZDhmNzI3ID0gJCgnPGRpdiBpZD0iaHRtbF82NzA4NjUwZjExNDE0MDNjOWQwMmFmZjk2YmQ4ZjcyNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SGlnaCAgQnJpZGdlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wNjkxNzcyNjZhMTE0OTA0OTFmYmM2NzIwZjFiNmY2ZS5zZXRDb250ZW50KGh0bWxfNjcwODY1MGYxMTQxNDAzYzlkMDJhZmY5NmJkOGY3MjcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZmYzM2E4ZDEyMTI4NDA3MWFjM2M5MzIwMDQ4ZDZiOTQuYmluZFBvcHVwKHBvcHVwXzA2OTE3NzI2NmExMTQ5MDQ5MWZiYzY3MjBmMWI2ZjZlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U2MDhiYmM4OTMxMTQ5YmM4ZGI3MDcyMDM0YTJiYjZlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODE5NzU0MzcwNTk0OTM2LC03My45MDk0MjE2MDc1NzQzNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMzU2OTViNjFkNmM0ZWI2OTFmNWE3ZTRiYzYxZDE1YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yMjFiYmUzYmQ3Yjk0MGJjYWRiMWNmYzM4NmY4NzQyNSA9ICQoJzxkaXYgaWQ9Imh0bWxfMjIxYmJlM2JkN2I5NDBiY2FkYjFjZmMzODZmODc0MjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1lbHJvc2U8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMzNTY5NWI2MWQ2YzRlYjY5MWY1YTdlNGJjNjFkMTVhLnNldENvbnRlbnQoaHRtbF8yMjFiYmUzYmQ3Yjk0MGJjYWRiMWNmYzM4NmY4NzQyNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lNjA4YmJjODkzMTE0OWJjOGRiNzA3MjAzNGEyYmI2ZS5iaW5kUG9wdXAocG9wdXBfMzM1Njk1YjYxZDZjNGViNjkxZjVhN2U0YmM2MWQxNWEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGUzYThjN2YwNmEwNDI3ZmEyMWQ0ZGJjMTcwNTc1NzggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44MDYyMzg3NDkzNTE3NywtNzMuOTE2MDk5ODc0ODc1NzVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWJkMzcxMTMyODFlNGZlMmIxZjIxMGZhNWVhOGVjMjggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTg4ZjZhZjVmNTBjNGMxZjk0OTM2M2QwNjM5M2VjNTMgPSAkKCc8ZGl2IGlkPSJodG1sX2U4OGY2YWY1ZjUwYzRjMWY5NDkzNjNkMDYzOTNlYzUzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Nb3R0IEhhdmVuPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lYmQzNzExMzI4MWU0ZmUyYjFmMjEwZmE1ZWE4ZWMyOC5zZXRDb250ZW50KGh0bWxfZTg4ZjZhZjVmNTBjNGMxZjk0OTM2M2QwNjM5M2VjNTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOGUzYThjN2YwNmEwNDI3ZmEyMWQ0ZGJjMTcwNTc1NzguYmluZFBvcHVwKHBvcHVwX2ViZDM3MTEzMjgxZTRmZTJiMWYyMTBmYTVlYThlYzI4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I2OTE0MmRlMDE5YjQ3OThiN2YxNTVjMzMwY2UwYmJkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODAxNjYzNjI3NzU2MjA2LC03My45MTMyMjEzOTM4NjEzNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84NmQ2MzE4OWQ0MTQ0MTcxODMwY2ZhNmM3MmFmMWRjYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yMDc5ZTc5YWMzMWM0MWY2YWE5Y2E2MmZlZTFhYWE2YSA9ICQoJzxkaXYgaWQ9Imh0bWxfMjA3OWU3OWFjMzFjNDFmNmFhOWNhNjJmZWUxYWFhNmEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlBvcnQgTW9ycmlzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84NmQ2MzE4OWQ0MTQ0MTcxODMwY2ZhNmM3MmFmMWRjYS5zZXRDb250ZW50KGh0bWxfMjA3OWU3OWFjMzFjNDFmNmFhOWNhNjJmZWUxYWFhNmEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjY5MTQyZGUwMTliNDc5OGI3ZjE1NWMzMzBjZTBiYmQuYmluZFBvcHVwKHBvcHVwXzg2ZDYzMTg5ZDQxNDQxNzE4MzBjZmE2YzcyYWYxZGNhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzlhYWRmYjdiMGY0MDRlMDFhM2NlNDY3YzMyNWY2ZmZmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODE1MDk5MDQ1NDU4MjIsLTczLjg5NTc4ODIwMDk0NDZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTE0N2E1ZTA0OGNhNGNjYTljOTIzNmQ3NTQ5MDlkNmEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGE3ODRmNjgyYzU2NGJjMDgxODU5NGU0MzExZjc1NGUgPSAkKCc8ZGl2IGlkPSJodG1sXzhhNzg0ZjY4MmM1NjRiYzA4MTg1OTRlNDMxMWY3NTRlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Mb25nd29vZDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTE0N2E1ZTA0OGNhNGNjYTljOTIzNmQ3NTQ5MDlkNmEuc2V0Q29udGVudChodG1sXzhhNzg0ZjY4MmM1NjRiYzA4MTg1OTRlNDMxMWY3NTRlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzlhYWRmYjdiMGY0MDRlMDFhM2NlNDY3YzMyNWY2ZmZmLmJpbmRQb3B1cChwb3B1cF8xMTQ3YTVlMDQ4Y2E0Y2NhOWM5MjM2ZDc1NDkwOWQ2YSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iYTJkMjNmNDYxOGM0NzNmODUzYWNmYjhkMTM2ODI1MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgwOTcyOTg3OTM4NzA5LC03My44ODMzMTUwNTk1NTI5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iYTYzZDRjMDRjZmE0N2RhYWFlYWZlMjVlYjYzZjRhMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lMTYyODY1ZjQ4ZmU0MjAzODVhYzQzOTZjNWJmM2MxMCA9ICQoJzxkaXYgaWQ9Imh0bWxfZTE2Mjg2NWY0OGZlNDIwMzg1YWM0Mzk2YzViZjNjMTAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkh1bnRzIFBvaW50PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iYTYzZDRjMDRjZmE0N2RhYWFlYWZlMjVlYjYzZjRhMy5zZXRDb250ZW50KGh0bWxfZTE2Mjg2NWY0OGZlNDIwMzg1YWM0Mzk2YzViZjNjMTApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYmEyZDIzZjQ2MThjNDczZjg1M2FjZmI4ZDEzNjgyNTEuYmluZFBvcHVwKHBvcHVwX2JhNjNkNGMwNGNmYTQ3ZGFhYWVhZmUyNWViNjNmNGEzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJiZTlhODEwYjBiYjQ3ZDdhMWVkZjE3ZTgzNmVkYTdjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODIzNTkxOTg1ODU1MzQsLTczLjkwMTUwNjQ4OTQzMDU5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZhM2Q2MzFkMjJlNDQ5ZDhiZWRhMWQ5MGZiNDZlNWYyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2ExMWMxNzM5MGJiNTQ4OWE5ZDU1N2FlZmQyODBjMGEzID0gJCgnPGRpdiBpZD0iaHRtbF9hMTFjMTczOTBiYjU0ODlhOWQ1NTdhZWZkMjgwYzBhMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TW9ycmlzYW5pYTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmEzZDYzMWQyMmU0NDlkOGJlZGExZDkwZmI0NmU1ZjIuc2V0Q29udGVudChodG1sX2ExMWMxNzM5MGJiNTQ4OWE5ZDU1N2FlZmQyODBjMGEzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzJiZTlhODEwYjBiYjQ3ZDdhMWVkZjE3ZTgzNmVkYTdjLmJpbmRQb3B1cChwb3B1cF82YTNkNjMxZDIyZTQ0OWQ4YmVkYTFkOTBmYjQ2ZTVmMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mMWFiNDIwN2NhMjQ0NGUyYTgyNmNlNzU0ZjVhZDJiYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgyMTAxMjE5NzkxNDAxNSwtNzMuODY1NzQ2MDk1NTQ5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfM2RmZWE2MWZjZGI3NDMzODhlOTVlYTIyMWU0OGQ5ZmUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTBlMjNiODA0NDg3NDkwNGJkZjVlOWQzOTMwNmQ5Y2QgPSAkKCc8ZGl2IGlkPSJodG1sX2EwZTIzYjgwNDQ4NzQ5MDRiZGY1ZTlkMzkzMDZkOWNkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Tb3VuZHZpZXc8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzNkZmVhNjFmY2RiNzQzMzg4ZTk1ZWEyMjFlNDhkOWZlLnNldENvbnRlbnQoaHRtbF9hMGUyM2I4MDQ0ODc0OTA0YmRmNWU5ZDM5MzA2ZDljZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mMWFiNDIwN2NhMjQ0NGUyYTgyNmNlNzU0ZjVhZDJiYS5iaW5kUG9wdXAocG9wdXBfM2RmZWE2MWZjZGI3NDMzODhlOTVlYTIyMWU0OGQ5ZmUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWZhNTMyZjNhZGZlNDdhYzhlMGQwMTU3YTNkMmZlYTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44MDY1NTExMjAwMzU4OSwtNzMuODU0MTQ0MTYxODkyNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2Q0MzFiN2JhYmY3NGU0NzljNzdlZTMzMTZkM2JlYzYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjFlYWI0MzlhYmQ1NDVlZWFjYmRkMDdiMjYxMTk3MTEgPSAkKCc8ZGl2IGlkPSJodG1sX2YxZWFiNDM5YWJkNTQ1ZWVhY2JkZDA3YjI2MTE5NzExIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5DbGFzb24gUG9pbnQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NkNDMxYjdiYWJmNzRlNDc5Yzc3ZWUzMzE2ZDNiZWM2LnNldENvbnRlbnQoaHRtbF9mMWVhYjQzOWFiZDU0NWVlYWNiZGQwN2IyNjExOTcxMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xZmE1MzJmM2FkZmU0N2FjOGUwZDAxNTdhM2QyZmVhOS5iaW5kUG9wdXAocG9wdXBfY2Q0MzFiN2JhYmY3NGU0NzljNzdlZTMzMTZkM2JlYzYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDM2MjRlNDNhNTE5NGVlYmE0OWU4YjMyNDAxY2YzOTQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44MTUxMDkyNTgwNDAwNSwtNzMuODE2MzUwMDIxNTg0NDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmE5NjUyMTRkMDIwNDU0ZmI2OTA3ZDZmYjlhZTU3N2YgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfN2VlNmE3YTQ2YzlmNDAyYWI5YmI4OTg3ZmZmNjFlMTMgPSAkKCc8ZGl2IGlkPSJodG1sXzdlZTZhN2E0NmM5ZjQwMmFiOWJiODk4N2ZmZjYxZTEzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaHJvZ3MgTmVjazwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmE5NjUyMTRkMDIwNDU0ZmI2OTA3ZDZmYjlhZTU3N2Yuc2V0Q29udGVudChodG1sXzdlZTZhN2E0NmM5ZjQwMmFiOWJiODk4N2ZmZjYxZTEzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2QzNjI0ZTQzYTUxOTRlZWJhNDllOGIzMjQwMWNmMzk0LmJpbmRQb3B1cChwb3B1cF82YTk2NTIxNGQwMjA0NTRmYjY5MDdkNmZiOWFlNTc3Zik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wZTU2OTFhYzE0OWY0NzQzOWFmMGRlOTQzNzIyYzI1MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg0NDI0NTkzNjk0NzM3NCwtNzMuODI0MDk5MjY3NTM4NV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mNzUxNjI1NWJkMWM0YzRkYjU3MGI0YjcyN2RkMGIzNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83Nzc3NWFmZGQxOTg0MDg2OWNhMjU5ZTI3MTFmMTdhYSA9ICQoJzxkaXYgaWQ9Imh0bWxfNzc3NzVhZmRkMTk4NDA4NjljYTI1OWUyNzExZjE3YWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNvdW50cnkgQ2x1YjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjc1MTYyNTViZDFjNGM0ZGI1NzBiNGI3MjdkZDBiMzQuc2V0Q29udGVudChodG1sXzc3Nzc1YWZkZDE5ODQwODY5Y2EyNTllMjcxMWYxN2FhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzBlNTY5MWFjMTQ5ZjQ3NDM5YWYwZGU5NDM3MjJjMjUxLmJpbmRQb3B1cChwb3B1cF9mNzUxNjI1NWJkMWM0YzRkYjU3MGI0YjcyN2RkMGIzNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zMWQyNmNiNDA4ODQ0MzY4ODI4ZGUxZGYwOGY5N2Q1MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgzNzkzNzgyMjI2NzI4NiwtNzMuODU2MDAzMTA1MzU3ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWM1NWRlZWZmOTc3NDdiYzhhZjI4ZTBjNDM4NjQzNzkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODJjYmU4M2QyMGMxNDY5NjlkNDc2NTFkOTA4ZTYxMzQgPSAkKCc8ZGl2IGlkPSJodG1sXzgyY2JlODNkMjBjMTQ2OTY5ZDQ3NjUxZDkwOGU2MTM0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5QYXJrY2hlc3RlcjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWM1NWRlZWZmOTc3NDdiYzhhZjI4ZTBjNDM4NjQzNzkuc2V0Q29udGVudChodG1sXzgyY2JlODNkMjBjMTQ2OTY5ZDQ3NjUxZDkwOGU2MTM0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzMxZDI2Y2I0MDg4NDQzNjg4MjhkZTFkZjA4Zjk3ZDUyLmJpbmRQb3B1cChwb3B1cF85YzU1ZGVlZmY5Nzc0N2JjOGFmMjhlMGM0Mzg2NDM3OSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yZTYzNmVmMzUxOGQ0OGUyODBjZjZiMjM3ZGQyMTQ2OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg0MDYxOTQ5NjQzMjcsLTczLjg0MjE5NDA3NjA0NDQ0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQ1NDFkZjM4MmIzYTRhYjViOGFkOGM4ZTUxYjI5YTZiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzA5YzE4OWU1ZmY3MDQ2YjNiZmRmY2MwMjZkMWMyMmU0ID0gJCgnPGRpdiBpZD0iaHRtbF8wOWMxODllNWZmNzA0NmIzYmZkZmNjMDI2ZDFjMjJlNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V2VzdGNoZXN0ZXIgU3F1YXJlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80NTQxZGYzODJiM2E0YWI1YjhhZDhjOGU1MWIyOWE2Yi5zZXRDb250ZW50KGh0bWxfMDljMTg5ZTVmZjcwNDZiM2JmZGZjYzAyNmQxYzIyZTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMmU2MzZlZjM1MThkNDhlMjgwY2Y2YjIzN2RkMjE0NjguYmluZFBvcHVwKHBvcHVwXzQ1NDFkZjM4MmIzYTRhYjViOGFkOGM4ZTUxYjI5YTZiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2EwMDdmNGNiODM2OTQ0YTBhNTNjMTM2OThiNGE2NDAwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODQzNjA4NDcxMjQ3MTgsLTczLjg2NjI5OTE4MDc1NjFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTc0MGVjNmY5Y2VmNDkzN2JiOTc2MjYxMzU3ODVhZjggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjEwNTBlZWY5ZjQ1NGMzNDljYmQ5NjFjNzBhMTIwMGUgPSAkKCc8ZGl2IGlkPSJodG1sXzIxMDUwZWVmOWY0NTRjMzQ5Y2JkOTYxYzcwYTEyMDBlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WYW4gTmVzdDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTc0MGVjNmY5Y2VmNDkzN2JiOTc2MjYxMzU3ODVhZjguc2V0Q29udGVudChodG1sXzIxMDUwZWVmOWY0NTRjMzQ5Y2JkOTYxYzcwYTEyMDBlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2EwMDdmNGNiODM2OTQ0YTBhNTNjMTM2OThiNGE2NDAwLmJpbmRQb3B1cChwb3B1cF8xNzQwZWM2ZjljZWY0OTM3YmI5NzYyNjEzNTc4NWFmOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xZmI2Y2ZlYjNjYmY0MjI4ODhjNmRiNjE2YjQ5NTJmYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg0NzU0OTA2MzUzNjMzNCwtNzMuODUwNDAxNzgwMzA0MjFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjg3MzY1M2M3NDFiNGZiMWEwMjdkMTJiNWE3OWJkMjMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTIzZDU1MzEwMDViNGJlMzg4MWY5ZjMxYWQ1YjQ1M2QgPSAkKCc8ZGl2IGlkPSJodG1sXzEyM2Q1NTMxMDA1YjRiZTM4ODFmOWYzMWFkNWI0NTNkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Nb3JyaXMgUGFyazwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjg3MzY1M2M3NDFiNGZiMWEwMjdkMTJiNWE3OWJkMjMuc2V0Q29udGVudChodG1sXzEyM2Q1NTMxMDA1YjRiZTM4ODFmOWYzMWFkNWI0NTNkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzFmYjZjZmViM2NiZjQyMjg4OGM2ZGI2MTZiNDk1MmZiLmJpbmRQb3B1cChwb3B1cF9iODczNjUzYzc0MWI0ZmIxYTAyN2QxMmI1YTc5YmQyMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NWM2MzBkYTcyMTk0ZDQ4YTJlNGM1YmZiMDcwZmE5ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg1NzI3NzEwMDczODk1LC03My44ODg0NTE5NjEzNDgwNF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82NmU3ZDA4YWQzNjc0ODdlYWNjNWIxNmQ3YTUyZWIzNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lYzZiNTdlYTdlOTY0ZDBjODM0YjlhNDE2NzNkYTA5ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfZWM2YjU3ZWE3ZTk2NGQwYzgzNGI5YTQxNjczZGEwOWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJlbG1vbnQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY2ZTdkMDhhZDM2NzQ4N2VhY2M1YjE2ZDdhNTJlYjM1LnNldENvbnRlbnQoaHRtbF9lYzZiNTdlYTdlOTY0ZDBjODM0YjlhNDE2NzNkYTA5Zik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81NWM2MzBkYTcyMTk0ZDQ4YTJlNGM1YmZiMDcwZmE5ZC5iaW5kUG9wdXAocG9wdXBfNjZlN2QwOGFkMzY3NDg3ZWFjYzViMTZkN2E1MmViMzUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzdjZGYyYWU2YjY2NDMzYmE3ZDZjNzVhZjQzMTI5OGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44ODEzOTQ5NzcyNzA4NiwtNzMuOTE3MTkwNDgyMTAzOTNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDRkOTE5Yjc5YTE5NGQwNzlhMTJhNjEzMDE2MzQ1MzkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzhmZjA4MmNhY2FmNDZjYzkxYjFmNjMzOWYwMDdjZDQgPSAkKCc8ZGl2IGlkPSJodG1sX2M4ZmYwODJjYWNhZjQ2Y2M5MWIxZjYzMzlmMDA3Y2Q0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TcHV5dGVuIER1eXZpbDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDRkOTE5Yjc5YTE5NGQwNzlhMTJhNjEzMDE2MzQ1Mzkuc2V0Q29udGVudChodG1sX2M4ZmYwODJjYWNhZjQ2Y2M5MWIxZjYzMzlmMDA3Y2Q0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzM3Y2RmMmFlNmI2NjQzM2JhN2Q2Yzc1YWY0MzEyOThlLmJpbmRQb3B1cChwb3B1cF8wNGQ5MTliNzlhMTk0ZDA3OWExMmE2MTMwMTYzNDUzOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80MjQzYWMyYzg4MmI0ZjNhYmIyNDVjZTEyMzFjMGQyNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjkwODU0MjgyOTUwNjY2LC03My45MDQ1MzA1NDkwODkyN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mMjJjMTRiNTljNzQ0ZWI2YTQ1ZDRjMTMyOTdkZDQ0NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lNzUzMWY5NzQzOWQ0MjdkYjYyM2E0YzEyZDUwNTk5ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfZTc1MzFmOTc0MzlkNDI3ZGI2MjNhNGMxMmQ1MDU5OWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5vcnRoIFJpdmVyZGFsZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjIyYzE0YjU5Yzc0NGViNmE0NWQ0YzEzMjk3ZGQ0NDcuc2V0Q29udGVudChodG1sX2U3NTMxZjk3NDM5ZDQyN2RiNjIzYTRjMTJkNTA1OTllKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzQyNDNhYzJjODgyYjRmM2FiYjI0NWNlMTIzMWMwZDI3LmJpbmRQb3B1cChwb3B1cF9mMjJjMTRiNTljNzQ0ZWI2YTQ1ZDRjMTMyOTdkZDQ0Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lYTQwYzQ0ZjFhNDk0OGU4YWE0ZjJiODk3NTA4NDk1YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg1MDY0MTQwOTQwMzM1LC03My44MzIwNzM3ODI0MDQ3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VkMzAwODljZDVkMzQ0M2NiOTQwYmY4NzA4M2ZkZWNiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI1YmQ1M2NlYjRkNzQxNGNiYThiZjNhMjFlNjkwMDJhID0gJCgnPGRpdiBpZD0iaHRtbF8yNWJkNTNjZWI0ZDc0MTRjYmE4YmYzYTIxZTY5MDAyYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UGVsaGFtIEJheTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWQzMDA4OWNkNWQzNDQzY2I5NDBiZjg3MDgzZmRlY2Iuc2V0Q29udGVudChodG1sXzI1YmQ1M2NlYjRkNzQxNGNiYThiZjNhMjFlNjkwMDJhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2VhNDBjNDRmMWE0OTQ4ZThhYTRmMmI4OTc1MDg0OTViLmJpbmRQb3B1cChwb3B1cF9lZDMwMDg5Y2Q1ZDM0NDNjYjk0MGJmODcwODNmZGVjYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mNjRhYTJiYjFjMTk0N2EwODFiNmIyMmE4YTExNjM0NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgyNjU3OTUxNjg2OTIyLC03My44MjYyMDI3NTk5NDA3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yODhiMjg4MjgxOTU0MWQzYTlmZTNlOWNhMGIyZWM0MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xODFkODBiZDA0MGM0NzJjYWNjYzA1ZTE2MTM0MTNiMSA9ICQoJzxkaXYgaWQ9Imh0bWxfMTgxZDgwYmQwNDBjNDcyY2FjY2MwNWUxNjEzNDEzYjEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNjaHV5bGVydmlsbGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI4OGIyODgyODE5NTQxZDNhOWZlM2U5Y2EwYjJlYzQyLnNldENvbnRlbnQoaHRtbF8xODFkODBiZDA0MGM0NzJjYWNjYzA1ZTE2MTM0MTNiMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mNjRhYTJiYjFjMTk0N2EwODFiNmIyMmE4YTExNjM0NS5iaW5kUG9wdXAocG9wdXBfMjg4YjI4ODI4MTk1NDFkM2E5ZmUzZTljYTBiMmVjNDIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTY4YWU1YTE0M2Q2NDU0ZWFkZmJmOTY4MzZhOGI4ODUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44MjE5ODYxMTgxNjM0OTQsLTczLjgxMzg4NTE0NDI4NjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkyNmNmMmQ5MTNhYTRlMjU4MDdiYjJkNTI5YzkyMDBkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q2NjQ5ODljNTI2MDRjZDI4MmMyMDc1YzdlNGZlMTA5ID0gJCgnPGRpdiBpZD0iaHRtbF9kNjY0OTg5YzUyNjA0Y2QyODJjMjA3NWM3ZTRmZTEwOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RWRnZXdhdGVyIFBhcms8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzkyNmNmMmQ5MTNhYTRlMjU4MDdiYjJkNTI5YzkyMDBkLnNldENvbnRlbnQoaHRtbF9kNjY0OTg5YzUyNjA0Y2QyODJjMjA3NWM3ZTRmZTEwOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hNjhhZTVhMTQzZDY0NTRlYWRmYmY5NjgzNmE4Yjg4NS5iaW5kUG9wdXAocG9wdXBfOTI2Y2YyZDkxM2FhNGUyNTgwN2JiMmQ1MjljOTIwMGQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzE1MTUzMWJlZGFlNGU3NzhkMzVjMmJhZmE2YmNhMzUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44MTkwMTQzNzY5ODgzMTQsLTczLjg0ODAyNzI5NTgyNzM1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2E3M2RlYTJlMGY0MDQzOTliYmQ2MmYzNjAyYTUxNGFlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE2ODQ3MGZiMGZlMzRlZWI4NjBlZDlmMTBhMjA2NDQ3ID0gJCgnPGRpdiBpZD0iaHRtbF8xNjg0NzBmYjBmZTM0ZWViODYwZWQ5ZjEwYTIwNjQ0NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q2FzdGxlIEhpbGw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E3M2RlYTJlMGY0MDQzOTliYmQ2MmYzNjAyYTUxNGFlLnNldENvbnRlbnQoaHRtbF8xNjg0NzBmYjBmZTM0ZWViODYwZWQ5ZjEwYTIwNjQ0Nyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jMTUxNTMxYmVkYWU0ZTc3OGQzNWMyYmFmYTZiY2EzNS5iaW5kUG9wdXAocG9wdXBfYTczZGVhMmUwZjQwNDM5OWJiZDYyZjM2MDJhNTE0YWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjBlY2MwOGE0YjQxNGI2YWIxOWJhZWEyNzk1ODJmNzEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44NzEzNzA3ODE5MjM3MSwtNzMuODYzMzIzNjE2NTI3NzddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjdjZDE5MTY4MzM3NDFjODhlZmM5ODE4ODE4Mzk2ZjAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTQxYzY0OTc1NGM5NDAwMTliNmQ1MjkyNmJiMWUyYzQgPSAkKCc8ZGl2IGlkPSJodG1sXzk0MWM2NDk3NTRjOTQwMDE5YjZkNTI5MjZiYjFlMmM0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PbGludmlsbGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y3Y2QxOTE2ODMzNzQxYzg4ZWZjOTgxODgxODM5NmYwLnNldENvbnRlbnQoaHRtbF85NDFjNjQ5NzU0Yzk0MDAxOWI2ZDUyOTI2YmIxZTJjNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82MGVjYzA4YTRiNDE0YjZhYjE5YmFlYTI3OTU4MmY3MS5iaW5kUG9wdXAocG9wdXBfZjdjZDE5MTY4MzM3NDFjODhlZmM5ODE4ODE4Mzk2ZjApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTM1MmNkMDY0ZWNhNGM2NTk4YjllN2YzYTg0YmE1NjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44NjI5NjU2MjQ3Nzk5OCwtNzMuODQxNjExOTQ4MzEyMjNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDA0MTg5N2I4YjM2NGNiZGEyNmRkM2Y4ZmNjNjY5NDggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGI0NGZhMTBlMjlhNGZmZGJjMDk0MDRlNTAwZWM4Y2MgPSAkKCc8ZGl2IGlkPSJodG1sXzhiNDRmYTEwZTI5YTRmZmRiYzA5NDA0ZTUwMGVjOGNjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5QZWxoYW0gR2FyZGVuczwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDA0MTg5N2I4YjM2NGNiZGEyNmRkM2Y4ZmNjNjY5NDguc2V0Q29udGVudChodG1sXzhiNDRmYTEwZTI5YTRmZmRiYzA5NDA0ZTUwMGVjOGNjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2UzNTJjZDA2NGVjYTRjNjU5OGI5ZTdmM2E4NGJhNTYyLmJpbmRQb3B1cChwb3B1cF80MDQxODk3YjhiMzY0Y2JkYTI2ZGQzZjhmY2M2Njk0OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85MTU4YzQzNTNiMDg0Mzg3OGM0OWM3MWM3NGY4ODA2ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgzNDI4MzgwNzMzODUxLC03My45MTU1ODk0MTc3MzQ0NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84ODJhZGY5OTI2ZGI0Y2UyYTcyYmM4NTIxNTU3ZjQxNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wNzgxMjg0NTAyYTc0ZDQ0YjAzOTg5ZDU0ZjBlOTRlYyA9ICQoJzxkaXYgaWQ9Imh0bWxfMDc4MTI4NDUwMmE3NGQ0NGIwMzk4OWQ1NGYwZTk0ZWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNvbmNvdXJzZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODgyYWRmOTkyNmRiNGNlMmE3MmJjODUyMTU1N2Y0MTUuc2V0Q29udGVudChodG1sXzA3ODEyODQ1MDJhNzRkNDRiMDM5ODlkNTRmMGU5NGVjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzkxNThjNDM1M2IwODQzODc4YzQ5YzcxYzc0Zjg4MDZlLmJpbmRQb3B1cChwb3B1cF84ODJhZGY5OTI2ZGI0Y2UyYTcyYmM4NTIxNTU3ZjQxNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jNTdiNDljZWVjZTE0NGQ0YmRlZDcxYzU1YWJlMTg3ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgyOTc3NDI5Nzg3MTYxLC03My44NTA1MzUyNDQ1MTkzNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jZTFiN2Q3YWY4ZmM0MzkxYjkzZjZlZDA2NDE5ZDdiOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lNDE5NWUxMjYzZjE0YzJiODdmZWM3OTZkYTQ3ZGMyMCA9ICQoJzxkaXYgaWQ9Imh0bWxfZTQxOTVlMTI2M2YxNGMyYjg3ZmVjNzk2ZGE0N2RjMjAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlVuaW9ucG9ydDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2UxYjdkN2FmOGZjNDM5MWI5M2Y2ZWQwNjQxOWQ3Yjguc2V0Q29udGVudChodG1sX2U0MTk1ZTEyNjNmMTRjMmI4N2ZlYzc5NmRhNDdkYzIwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2M1N2I0OWNlZWNlMTQ0ZDRiZGVkNzFjNTVhYmUxODdkLmJpbmRQb3B1cChwb3B1cF9jZTFiN2Q3YWY4ZmM0MzkxYjkzZjZlZDA2NDE5ZDdiOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82YjMxNWE3NjUyMTE0ZWFkOWVjMmQ0OGM2OThmOTEyNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg4NDU2MTMwMzAzNzMyLC03My44NDgwODI3MTg3NzE2OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84ZjI1ZDJkN2IwYWE0NzE4YTAyMjc4ZTcwNjBjOTM0MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80OGM4MmQyNDVjY2M0Y2RhOWMxMThmOGFhN2E4Y2IxMSA9ICQoJzxkaXYgaWQ9Imh0bWxfNDhjODJkMjQ1Y2NjNGNkYTljMTE4ZjhhYTdhOGNiMTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkVkZW53YWxkPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84ZjI1ZDJkN2IwYWE0NzE4YTAyMjc4ZTcwNjBjOTM0MS5zZXRDb250ZW50KGh0bWxfNDhjODJkMjQ1Y2NjNGNkYTljMTE4ZjhhYTdhOGNiMTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNmIzMTVhNzY1MjExNGVhZDllYzJkNDhjNjk4ZjkxMjQuYmluZFBvcHVwKHBvcHVwXzhmMjVkMmQ3YjBhYTQ3MThhMDIyNzhlNzA2MGM5MzQxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcwYzk0OTg1MDAxZDRlZjY5NGUzYzc5MTgxYWIxZWJkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjI1ODAxMDY1MDEwNjU2LC03NC4wMzA2MjA2OTM1MzgxM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83YzAwNjhlYjA5NWE0MGNiOTIwMmEzMzQwOTA0ODk3MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80YTg2NTdiNDg2ZTM0NDNhYmM4MjBhNWM3NTQxMjEyYyA9ICQoJzxkaXYgaWQ9Imh0bWxfNGE4NjU3YjQ4NmUzNDQzYWJjODIwYTVjNzU0MTIxMmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJheSBSaWRnZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2MwMDY4ZWIwOTVhNDBjYjkyMDJhMzM0MDkwNDg5NzAuc2V0Q29udGVudChodG1sXzRhODY1N2I0ODZlMzQ0M2FiYzgyMGE1Yzc1NDEyMTJjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzcwYzk0OTg1MDAxZDRlZjY5NGUzYzc5MTgxYWIxZWJkLmJpbmRQb3B1cChwb3B1cF83YzAwNjhlYjA5NWE0MGNiOTIwMmEzMzQwOTA0ODk3MCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84ZTJlNTcyODliOWY0NTY1YWI1OGRjZWQzMTZjOTE0MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjYxMTAwODkwMjAyMDQ0LC03My45OTUxNzk5ODM4MDcyOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iMDlmNjA4YWFhMWM0OTc4ODJhN2Y1ZTViZjAyZjQ0NiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kNjM0MWRhZWI1NzU0MDhjODIyYWRlNTdiNWNkZGI2MSA9ICQoJzxkaXYgaWQ9Imh0bWxfZDYzNDFkYWViNTc1NDA4YzgyMmFkZTU3YjVjZGRiNjEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJlbnNvbmh1cnN0PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iMDlmNjA4YWFhMWM0OTc4ODJhN2Y1ZTViZjAyZjQ0Ni5zZXRDb250ZW50KGh0bWxfZDYzNDFkYWViNTc1NDA4YzgyMmFkZTU3YjVjZGRiNjEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOGUyZTU3Mjg5YjlmNDU2NWFiNThkY2VkMzE2YzkxNDEuYmluZFBvcHVwKHBvcHVwX2IwOWY2MDhhYWExYzQ5Nzg4MmE3ZjVlNWJmMDJmNDQ2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2UyYjBlYTViMjQ3ZDQ3ZDY4NGE2NjE5ODFhYWUzMWJiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjQ1MTAyOTQ5MjU0MjksLTc0LjAxMDMxNjE4NTI3Nzg0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2MzYjM4MmEzYjgxNzQ5Y2E4YTJmMjkxNzc4ODliYWJjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q4OTg2MGRlMWIxOTRlZGE4ZmIzNmZmNDBmNDllYWM0ID0gJCgnPGRpdiBpZD0iaHRtbF9kODk4NjBkZTFiMTk0ZWRhOGZiMzZmZjQwZjQ5ZWFjNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U3Vuc2V0IFBhcms8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2MzYjM4MmEzYjgxNzQ5Y2E4YTJmMjkxNzc4ODliYWJjLnNldENvbnRlbnQoaHRtbF9kODk4NjBkZTFiMTk0ZWRhOGZiMzZmZjQwZjQ5ZWFjNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lMmIwZWE1YjI0N2Q0N2Q2ODRhNjYxOTgxYWFlMzFiYi5iaW5kUG9wdXAocG9wdXBfYzNiMzgyYTNiODE3NDljYThhMmYyOTE3Nzg4OWJhYmMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzNkNTRjYjY2NjZhNDBkZmEyYmU4MzJiMmI1NDc1ZjQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MzAyMDA5ODQ4NjQ3LC03My45NTQyNDA5MzEyNzM5M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80YTM3M2EwNWU3NWM0YWVmYjRkZTE3NjQyMjU1MmUyMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kNjA0NzkyNmNlYWU0MjIyOGEyY2YyOGYwYThhYTExNCA9ICQoJzxkaXYgaWQ9Imh0bWxfZDYwNDc5MjZjZWFlNDIyMjhhMmNmMjhmMGE4YWExMTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkdyZWVucG9pbnQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzRhMzczYTA1ZTc1YzRhZWZiNGRlMTc2NDIyNTUyZTIzLnNldENvbnRlbnQoaHRtbF9kNjA0NzkyNmNlYWU0MjIyOGEyY2YyOGYwYThhYTExNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83M2Q1NGNiNjY2NmE0MGRmYTJiZTgzMmIyYjU0NzVmNC5iaW5kUG9wdXAocG9wdXBfNGEzNzNhMDVlNzVjNGFlZmI0ZGUxNzY0MjI1NTJlMjMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGY0MjYzM2ZiMjRiNGJiNzliYTk4NjFkMTc3ZjNkZTQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41OTUyNjAwMTMwNjU5MywtNzMuOTczNDcwODc3MDg0NDVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTA4NmVlZDM2NzI5NDJmOGFjMTQ1ZjYxYjE5ZWIwZGQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDk5MGIyNDRkZmEyNGYzY2JkOTdmNDVmMWMzOGM4OWQgPSAkKCc8ZGl2IGlkPSJodG1sX2Q5OTBiMjQ0ZGZhMjRmM2NiZDk3ZjQ1ZjFjMzhjODlkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5HcmF2ZXNlbmQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzkwODZlZWQzNjcyOTQyZjhhYzE0NWY2MWIxOWViMGRkLnNldENvbnRlbnQoaHRtbF9kOTkwYjI0NGRmYTI0ZjNjYmQ5N2Y0NWYxYzM4Yzg5ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84ZjQyNjMzZmIyNGI0YmI3OWJhOTg2MWQxNzdmM2RlNC5iaW5kUG9wdXAocG9wdXBfOTA4NmVlZDM2NzI5NDJmOGFjMTQ1ZjYxYjE5ZWIwZGQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDM3ZmQwMThjMjFiNGVlNGJiNjQ5OTA4NDc2NjIyOWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41NzY4MjUwNjU2NjYwNCwtNzMuOTY1MDk0NDg3ODUzMzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWU3MDNmNGMxOTg2NDgxODgxZTkzZjE1ZjRmZjBjZTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjM3MGUxMWRjYTk0NGFiYmFkZDgxNTNmMzRmY2Q0NWYgPSAkKCc8ZGl2IGlkPSJodG1sXzIzNzBlMTFkY2E5NDRhYmJhZGQ4MTUzZjM0ZmNkNDVmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CcmlnaHRvbiBCZWFjaDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWU3MDNmNGMxOTg2NDgxODgxZTkzZjE1ZjRmZjBjZTcuc2V0Q29udGVudChodG1sXzIzNzBlMTFkY2E5NDRhYmJhZGQ4MTUzZjM0ZmNkNDVmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzQzN2ZkMDE4YzIxYjRlZTRiYjY0OTkwODQ3NjYyMjliLmJpbmRQb3B1cChwb3B1cF9lZTcwM2Y0YzE5ODY0ODE4ODFlOTNmMTVmNGZmMGNlNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jOGIwMjExN2QwNWI0YzAxOWYwNzIzMzI4ZmJjYjU1ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU4Njg5MDEyNjc4Mzg0LC03My45NDMxODY0MDQ4Mjk3OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80Nzg0ZDRjYTYyMzk0Mjk1YjU1YjlkOWI1NWQ5MjRmZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85MDU1OWNmZTI0ZTc0MTRiYTRkNjBhYTI2NTRkMzA2YyA9ICQoJzxkaXYgaWQ9Imh0bWxfOTA1NTljZmUyNGU3NDE0YmE0ZDYwYWEyNjU0ZDMwNmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNoZWVwc2hlYWQgQmF5PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80Nzg0ZDRjYTYyMzk0Mjk1YjU1YjlkOWI1NWQ5MjRmZC5zZXRDb250ZW50KGh0bWxfOTA1NTljZmUyNGU3NDE0YmE0ZDYwYWEyNjU0ZDMwNmMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzhiMDIxMTdkMDViNGMwMTlmMDcyMzMyOGZiY2I1NWYuYmluZFBvcHVwKHBvcHVwXzQ3ODRkNGNhNjIzOTQyOTViNTViOWQ5YjU1ZDkyNGZkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzEzZTdlOGQzMmEyYTQyZjQ4YWE2NWVlNWRiNWJmODc5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjE0NDMyNTEzMzUwOTgsLTczLjk1NzQzODQwNTU5OTM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M1YWI2YzYzZDgzNjRhMWFhZmY5MjUyNjM1YWMzM2Y1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E0ODQwYTI4MjBiNjQ2MWViN2VkYjYzNDg2NmZiMDkzID0gJCgnPGRpdiBpZD0iaHRtbF9hNDg0MGEyODIwYjY0NjFlYjdlZGI2MzQ4NjZmYjA5MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWFuaGF0dGFuIFRlcnJhY2U8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2M1YWI2YzYzZDgzNjRhMWFhZmY5MjUyNjM1YWMzM2Y1LnNldENvbnRlbnQoaHRtbF9hNDg0MGEyODIwYjY0NjFlYjdlZGI2MzQ4NjZmYjA5Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xM2U3ZThkMzJhMmE0MmY0OGFhNjVlZTVkYjViZjg3OS5iaW5kUG9wdXAocG9wdXBfYzVhYjZjNjNkODM2NGExYWFmZjkyNTI2MzVhYzMzZjUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjVjZDk2NTQ3MGViNGNkOGIzM2MyMTJjNzQ1OTJhN2QgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MzYzMjU4OTAyNjY3NywtNzMuOTU4NDAxMDY1MzM5MDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjdhOGYyMzBkZGUyNGZhMzk2YzM5ODRhY2M3MjY5MDYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZWEzZmZmZjI2M2MxNDAyNDliZDVkZTdiODZhYTIwYWUgPSAkKCc8ZGl2IGlkPSJodG1sX2VhM2ZmZmYyNjNjMTQwMjQ5YmQ1ZGU3Yjg2YWEyMGFlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GbGF0YnVzaDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjdhOGYyMzBkZGUyNGZhMzk2YzM5ODRhY2M3MjY5MDYuc2V0Q29udGVudChodG1sX2VhM2ZmZmYyNjNjMTQwMjQ5YmQ1ZGU3Yjg2YWEyMGFlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzI1Y2Q5NjU0NzBlYjRjZDhiMzNjMjEyYzc0NTkyYTdkLmJpbmRQb3B1cChwb3B1cF9mN2E4ZjIzMGRkZTI0ZmEzOTZjMzk4NGFjYzcyNjkwNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wZGEyMDExMzQ2YjU0MWJmYjE3Mzk0ZWNmNjgwZjY0YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY3MDgyOTE3Njk1Mjk0LC03My45NDMyOTExOTA3MzU4Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hZTc0ZjJlMDQ1Y2U0N2ViODYyYzcwMjk2NzA1YTc5NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hOTYxOTViM2FjOTI0YjAxYmQ3M2E0MGVjOTg4MGVlOSA9ICQoJzxkaXYgaWQ9Imh0bWxfYTk2MTk1YjNhYzkyNGIwMWJkNzNhNDBlYzk4ODBlZTkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNyb3duIEhlaWdodHM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FlNzRmMmUwNDVjZTQ3ZWI4NjJjNzAyOTY3MDVhNzk0LnNldENvbnRlbnQoaHRtbF9hOTYxOTViM2FjOTI0YjAxYmQ3M2E0MGVjOTg4MGVlOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wZGEyMDExMzQ2YjU0MWJmYjE3Mzk0ZWNmNjgwZjY0YS5iaW5kUG9wdXAocG9wdXBfYWU3NGYyZTA0NWNlNDdlYjg2MmM3MDI5NjcwNWE3OTQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWJhNDVkNGY3YjE5NDdmZDk1ZGM3Mzk1ZjBlY2E5Y2MgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42NDE3MTc3NjY2ODk2MSwtNzMuOTM2MTAyNTYxODU4MzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjUzN2JmZWI1OTMyNDZjZmJkZDhhMjc5YjgxZmY3ZmQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODNhZGIwMTJlZTcyNDU4YjgzMjIwYmE2MDdhMTVhYmYgPSAkKCc8ZGl2IGlkPSJodG1sXzgzYWRiMDEyZWU3MjQ1OGI4MzIyMGJhNjA3YTE1YWJmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FYXN0IEZsYXRidXNoPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mNTM3YmZlYjU5MzI0NmNmYmRkOGEyNzliODFmZjdmZC5zZXRDb250ZW50KGh0bWxfODNhZGIwMTJlZTcyNDU4YjgzMjIwYmE2MDdhMTVhYmYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNWJhNDVkNGY3YjE5NDdmZDk1ZGM3Mzk1ZjBlY2E5Y2MuYmluZFBvcHVwKHBvcHVwX2Y1MzdiZmViNTkzMjQ2Y2ZiZGQ4YTI3OWI4MWZmN2ZkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUzM2U0ZTI3OWY3ODRmNzBiNmQ5OWNiOGE0ZTFjYTFlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjQyMzgxOTU4MDAzNTI2LC03My45ODA0MjExMDU1OTQ3NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82ZDBhZWZmYzQ5MDg0MzAxYmJlOGY4NDg2MzQ3YjVkYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jYzY0NjRhMzFmOGU0ZWRlYmQ4ZTdlNDhjYTJhMGI5MSA9ICQoJzxkaXYgaWQ9Imh0bWxfY2M2NDY0YTMxZjhlNGVkZWJkOGU3ZTQ4Y2EyYTBiOTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPktlbnNpbmd0b248L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZkMGFlZmZjNDkwODQzMDFiYmU4Zjg0ODYzNDdiNWRjLnNldENvbnRlbnQoaHRtbF9jYzY0NjRhMzFmOGU0ZWRlYmQ4ZTdlNDhjYTJhMGI5MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81MzNlNGUyNzlmNzg0ZjcwYjZkOTljYjhhNGUxY2ExZS5iaW5kUG9wdXAocG9wdXBfNmQwYWVmZmM0OTA4NDMwMWJiZThmODQ4NjM0N2I1ZGMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTkyNjU5YWY4Mzk1NDgwYzhlNDgwYWU3YmQxOGM4NzIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42NTY5NDU4MzU3NTEwNCwtNzMuOTgwMDczNDA0MzAxNzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGYyMTkyYjUzMzJkNDJhOWFkZDM5YzBjMzQwNGE1NDUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjdhNjliNGI2MDZjNGNhZWE4ZDVhZWU5NTgzN2ViOTQgPSAkKCc8ZGl2IGlkPSJodG1sXzI3YTY5YjRiNjA2YzRjYWVhOGQ1YWVlOTU4MzdlYjk0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XaW5kc29yIFRlcnJhY2U8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBmMjE5MmI1MzMyZDQyYTlhZGQzOWMwYzM0MDRhNTQ1LnNldENvbnRlbnQoaHRtbF8yN2E2OWI0YjYwNmM0Y2FlYThkNWFlZTk1ODM3ZWI5NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81OTI2NTlhZjgzOTU0ODBjOGU0ODBhZTdiZDE4Yzg3Mi5iaW5kUG9wdXAocG9wdXBfMGYyMTkyYjUzMzJkNDJhOWFkZDM5YzBjMzQwNGE1NDUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTA3ZGE2NjUyYmEyNDIzM2FhZGRiYTViOWVmZGM3NGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42NzY4MjIyNjIyNTQ3MjQsLTczLjk2NDg1OTI0MjYyNjldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjRjZTBiZTQ2MTVmNGNlNzg4NDA5NzY1ZWIxMzUxMjYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGRhYWEzNDRlYjY2NGNiMzlhMzU1NTNiNDU1NDg4YTQgPSAkKCc8ZGl2IGlkPSJodG1sXzRkYWFhMzQ0ZWI2NjRjYjM5YTM1NTUzYjQ1NTQ4OGE0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Qcm9zcGVjdCBIZWlnaHRzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yNGNlMGJlNDYxNWY0Y2U3ODg0MDk3NjVlYjEzNTEyNi5zZXRDb250ZW50KGh0bWxfNGRhYWEzNDRlYjY2NGNiMzlhMzU1NTNiNDU1NDg4YTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTA3ZGE2NjUyYmEyNDIzM2FhZGRiYTViOWVmZGM3NGMuYmluZFBvcHVwKHBvcHVwXzI0Y2UwYmU0NjE1ZjRjZTc4ODQwOTc2NWViMTM1MTI2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU3ODRjMDNmZmE4YjRkZTRhNDIxMTA0NDJiOTMxMjUwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjYzOTQ5OTQzMzk3NTUsLTczLjkxMDIzNTM2MTc2NjA3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzljNTQ3MDYwZGJiNDRhNzI4NjRjYmYzNTBhZTIyNDAzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzA1MGY2NTUwMDNmYjQ4OGZiYzQ4NzJlNWE3NGFkZDBiID0gJCgnPGRpdiBpZD0iaHRtbF8wNTBmNjU1MDAzZmI0ODhmYmM0ODcyZTVhNzRhZGQwYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QnJvd25zdmlsbGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzljNTQ3MDYwZGJiNDRhNzI4NjRjYmYzNTBhZTIyNDAzLnNldENvbnRlbnQoaHRtbF8wNTBmNjU1MDAzZmI0ODhmYmM0ODcyZTVhNzRhZGQwYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81Nzg0YzAzZmZhOGI0ZGU0YTQyMTEwNDQyYjkzMTI1MC5iaW5kUG9wdXAocG9wdXBfOWM1NDcwNjBkYmI0NGE3Mjg2NGNiZjM1MGFlMjI0MDMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWEyYjhiNDAzMTk4NDU5MjlkN2FjZWJiZDBkYzgxYjQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MDcxNDQzOTM0NDI1MSwtNzMuOTU4MTE1MjkyMjA5MjddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzc1ZDljMjIxMzk0NDUyM2I0ZmYzOTAwYzFlZWI1NDggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmUwNzcxNmE4ZTNlNDE2MmIzYTFkZTA3MTQzYmMyODUgPSAkKCc8ZGl2IGlkPSJodG1sXzJlMDc3MTZhOGUzZTQxNjJiM2ExZGUwNzE0M2JjMjg1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XaWxsaWFtc2J1cmc8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc3NWQ5YzIyMTM5NDQ1MjNiNGZmMzkwMGMxZWViNTQ4LnNldENvbnRlbnQoaHRtbF8yZTA3NzE2YThlM2U0MTYyYjNhMWRlMDcxNDNiYzI4NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xYTJiOGI0MDMxOTg0NTkyOWQ3YWNlYmJkMGRjODFiNC5iaW5kUG9wdXAocG9wdXBfNzc1ZDljMjIxMzk0NDUyM2I0ZmYzOTAwYzFlZWI1NDgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDVkY2Y3Mzc1MDIxNDVkZDkxMDFjM2UyMzY1ODM5YzQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42OTgxMTYxMTAxNzkwMSwtNzMuOTI1MjU3OTc0ODcwNDVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzU5NTRjZDA0YmU5NDNiMGE5YjdmYWYxM2M0Yjk0MzYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTBlOTdjZDEwYWE1NDJiOWE2ZWQyMWU3MGY2MzE4YWYgPSAkKCc8ZGl2IGlkPSJodG1sX2UwZTk3Y2QxMGFhNTQyYjlhNmVkMjFlNzBmNjMxOGFmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CdXNod2ljazwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzU5NTRjZDA0YmU5NDNiMGE5YjdmYWYxM2M0Yjk0MzYuc2V0Q29udGVudChodG1sX2UwZTk3Y2QxMGFhNTQyYjlhNmVkMjFlNzBmNjMxOGFmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzQ1ZGNmNzM3NTAyMTQ1ZGQ5MTAxYzNlMjM2NTgzOWM0LmJpbmRQb3B1cChwb3B1cF83NTk1NGNkMDRiZTk0M2IwYTliN2ZhZjEzYzRiOTQzNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wYjEzNTQ2ZWU4YjY0Mjk1YWU1NmZjNDY3YzQ4ZDk5MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY4NzIzMTYwNzcyMDQ1NiwtNzMuOTQxNzg0ODg2OTAyOTddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWUzMGU0NDYzYWNlNDIyMWE1NzQ2NGJiOGNkZDgyNmYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDE5ZGFhYWIzNDE2NGVlZDljNTUyNzkxZDAxYTE0NTQgPSAkKCc8ZGl2IGlkPSJodG1sXzQxOWRhYWFiMzQxNjRlZWQ5YzU1Mjc5MWQwMWExNDU0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CZWRmb3JkIFN0dXl2ZXNhbnQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzllMzBlNDQ2M2FjZTQyMjFhNTc0NjRiYjhjZGQ4MjZmLnNldENvbnRlbnQoaHRtbF80MTlkYWFhYjM0MTY0ZWVkOWM1NTI3OTFkMDFhMTQ1NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wYjEzNTQ2ZWU4YjY0Mjk1YWU1NmZjNDY3YzQ4ZDk5Mi5iaW5kUG9wdXAocG9wdXBfOWUzMGU0NDYzYWNlNDIyMWE1NzQ2NGJiOGNkZDgyNmYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTgxNzdiY2ZmZTA1NGNiMmIxZWE5N2VkNjFiYjAwZTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42OTU4NjM3MjI3MjQwODQsLTczLjk5Mzc4MjI1NDk2NDI0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzEyZDYzNDQ2MzRkNjRiYzE5ZWI5NTBjZTdjMTBhY2NlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzUwOWQwOWFjOGQ3YzRlNDE4NjE4NGUwZGQyYzhlMWM2ID0gJCgnPGRpdiBpZD0iaHRtbF81MDlkMDlhYzhkN2M0ZTQxODYxODRlMGRkMmM4ZTFjNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QnJvb2tseW4gSGVpZ2h0czwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTJkNjM0NDYzNGQ2NGJjMTllYjk1MGNlN2MxMGFjY2Uuc2V0Q29udGVudChodG1sXzUwOWQwOWFjOGQ3YzRlNDE4NjE4NGUwZGQyYzhlMWM2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzU4MTc3YmNmZmUwNTRjYjJiMWVhOTdlZDYxYmIwMGUyLmJpbmRQb3B1cChwb3B1cF8xMmQ2MzQ0NjM0ZDY0YmMxOWViOTUwY2U3YzEwYWNjZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iZWM2MWRkMTgwOWY0MGEyYTNhOWZjM2RhMjRmOTdmYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY4NzkxOTcyMjQ4NTU3NCwtNzMuOTk4NTYxMzkyMTg0NjNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjFjODA1ZjIxZjAyNDM4ZGI3MmNlMTJmMjQ3N2NhMTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGNlZGMxOTY3ZDYxNDFjNzliZjdkNzdhMDdlMmYyODYgPSAkKCc8ZGl2IGlkPSJodG1sX2RjZWRjMTk2N2Q2MTQxYzc5YmY3ZDc3YTA3ZTJmMjg2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Db2JibGUgSGlsbDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjFjODA1ZjIxZjAyNDM4ZGI3MmNlMTJmMjQ3N2NhMTguc2V0Q29udGVudChodG1sX2RjZWRjMTk2N2Q2MTQxYzc5YmY3ZDc3YTA3ZTJmMjg2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2JlYzYxZGQxODA5ZjQwYTJhM2E5ZmMzZGEyNGY5N2ZiLmJpbmRQb3B1cChwb3B1cF8yMWM4MDVmMjFmMDI0MzhkYjcyY2UxMmYyNDc3Y2ExOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81ZTdlMmY0ZGVkZjY0ZDVlOWQ1ODg0MjM2ODk1ZDUwMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY4MDU0MDIzMTA3NjQ4NSwtNzMuOTk0NjUzNzI4MjgwMDZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzE0ZDk1NmMwM2ZjNDAwODg0ZjBhYjVjYTlkOGJkMDEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmMwYWU5YzAyMzEwNDlmYjg2OTgyZDkyODcxZmQ0ZWEgPSAkKCc8ZGl2IGlkPSJodG1sX2JjMGFlOWMwMjMxMDQ5ZmI4Njk4MmQ5Mjg3MWZkNGVhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5DYXJyb2xsIEdhcmRlbnM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMxNGQ5NTZjMDNmYzQwMDg4NGYwYWI1Y2E5ZDhiZDAxLnNldENvbnRlbnQoaHRtbF9iYzBhZTljMDIzMTA0OWZiODY5ODJkOTI4NzFmZDRlYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81ZTdlMmY0ZGVkZjY0ZDVlOWQ1ODg0MjM2ODk1ZDUwMi5iaW5kUG9wdXAocG9wdXBfMzE0ZDk1NmMwM2ZjNDAwODg0ZjBhYjVjYTlkOGJkMDEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGE0MTRmNzk3OWEzNGNkNmE2ZjE0ODc1ZjgxOGYwMDEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42NzYyNTMyMzAyNTA4ODYsLTc0LjAxMjc1ODk3NDczNTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTczNmNhYjFhODA0NDZmZTg2NDAyOGFjOGM1MjhmOWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTk2ODU4N2U5N2I4NDk5NWFhNGVlN2IwNTQ1NWZjNjIgPSAkKCc8ZGl2IGlkPSJodG1sXzU5Njg1ODdlOTdiODQ5OTVhYTRlZTdiMDU0NTVmYzYyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5SZWQgSG9vazwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTczNmNhYjFhODA0NDZmZTg2NDAyOGFjOGM1MjhmOWUuc2V0Q29udGVudChodG1sXzU5Njg1ODdlOTdiODQ5OTVhYTRlZTdiMDU0NTVmYzYyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2RhNDE0Zjc5NzlhMzRjZDZhNmYxNDg3NWY4MThmMDAxLmJpbmRQb3B1cChwb3B1cF9hNzM2Y2FiMWE4MDQ0NmZlODY0MDI4YWM4YzUyOGY5ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xZjhkMDMxZDU2NjY0M2QxOGYwNWRmYTYxOWQ4NzZhNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY3MzkzMTE0MzE4NzE1NCwtNzMuOTk0NDQwODcxNDUzMzldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGMwZGQ4YWYxYWQ3NDdkNGIxMzIyN2MwYzg0ODBmMTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTVkNmJhMjJhM2ZmNDU3MzljNTZkZTAyOGZkZTFkODIgPSAkKCc8ZGl2IGlkPSJodG1sX2E1ZDZiYTIyYTNmZjQ1NzM5YzU2ZGUwMjhmZGUxZDgyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Hb3dhbnVzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wYzBkZDhhZjFhZDc0N2Q0YjEzMjI3YzBjODQ4MGYxNC5zZXRDb250ZW50KGh0bWxfYTVkNmJhMjJhM2ZmNDU3MzljNTZkZTAyOGZkZTFkODIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMWY4ZDAzMWQ1NjY2NDNkMThmMDVkZmE2MTlkODc2YTQuYmluZFBvcHVwKHBvcHVwXzBjMGRkOGFmMWFkNzQ3ZDRiMTMyMjdjMGM4NDgwZjE0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2VjMTczZWU3NjhiYjQ1ODBhODk3MTcwMDhiY2I5MzVjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjg4NTI3MjYwMTg5NzcsLTczLjk3MjkwNTc0MzY5MDkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY5NjAxNzI2YzhlYzRiOGY5MDE5YjVlNmZmOTZhYjE1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQzOTM3YjU0OTZhZjQ3ZjBiMTA5MjEyOTM5N2M3ZjljID0gJCgnPGRpdiBpZD0iaHRtbF80MzkzN2I1NDk2YWY0N2YwYjEwOTIxMjkzOTdjN2Y5YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Rm9ydCBHcmVlbmU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY5NjAxNzI2YzhlYzRiOGY5MDE5YjVlNmZmOTZhYjE1LnNldENvbnRlbnQoaHRtbF80MzkzN2I1NDk2YWY0N2YwYjEwOTIxMjkzOTdjN2Y5Yyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lYzE3M2VlNzY4YmI0NTgwYTg5NzE3MDA4YmNiOTM1Yy5iaW5kUG9wdXAocG9wdXBfNjk2MDE3MjZjOGVjNGI4ZjkwMTliNWU2ZmY5NmFiMTUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjg5N2ZjYmQ0MDhiNDhlODg5Y2Q5ZTg0YTRkNzQ5N2QgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42NzIzMjA1MjI2ODE5NywtNzMuOTc3MDUwMzAxODM5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTE2YzQzYWEyOTM2NDhiYTk5ZDBkYWZhNTY3ZjkzYmUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjhhY2U2NzIyYmNkNDgzNmIzZjhmMDM2YTY5NzJhNjMgPSAkKCc8ZGl2IGlkPSJodG1sXzI4YWNlNjcyMmJjZDQ4MzZiM2Y4ZjAzNmE2OTcyYTYzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5QYXJrIFNsb3BlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hMTZjNDNhYTI5MzY0OGJhOTlkMGRhZmE1NjdmOTNiZS5zZXRDb250ZW50KGh0bWxfMjhhY2U2NzIyYmNkNDgzNmIzZjhmMDM2YTY5NzJhNjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjg5N2ZjYmQ0MDhiNDhlODg5Y2Q5ZTg0YTRkNzQ5N2QuYmluZFBvcHVwKHBvcHVwX2ExNmM0M2FhMjkzNjQ4YmE5OWQwZGFmYTU2N2Y5M2JlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FmNmUzM2QwZDFhMzQ2YTk5YTk3MmFiYTE3ZjU4ZWNhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjgyMzkxMDExNDQyMTEsLTczLjg3NjYxNTk2NDU3Mjk2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzk2OTRiNWE5ZTFkZjQ4ZGVhZGNkYTFkOTVjZjgyNTdjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2UzNjc5OGFlMTg4NTRiYjE5YzM2NTE3OTZmNTdmNWY1ID0gJCgnPGRpdiBpZD0iaHRtbF9lMzY3OThhZTE4ODU0YmIxOWMzNjUxNzk2ZjU3ZjVmNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q3lwcmVzcyBIaWxsczwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTY5NGI1YTllMWRmNDhkZWFkY2RhMWQ5NWNmODI1N2Muc2V0Q29udGVudChodG1sX2UzNjc5OGFlMTg4NTRiYjE5YzM2NTE3OTZmNTdmNWY1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2FmNmUzM2QwZDFhMzQ2YTk5YTk3MmFiYTE3ZjU4ZWNhLmJpbmRQb3B1cChwb3B1cF85Njk0YjVhOWUxZGY0OGRlYWRjZGExZDk1Y2Y4MjU3Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yZDRlODNjZjcxYjM0MmI2YmI4ZDI1NmNiMDkxMmQwMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY2OTkyNTcwMDg0NzA0NSwtNzMuODgwNjk4NjM5MTczNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2M3N2JjOTg1ZGEzNDM5ZmE5NGNjYzY2OTU0ZWUzZmIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjgwNjdmMzE4MTJkNDM4Y2FkMDdhNzgwOWJkOTcxYWQgPSAkKCc8ZGl2IGlkPSJodG1sX2I4MDY3ZjMxODEyZDQzOGNhZDA3YTc4MDliZDk3MWFkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FYXN0IE5ldyBZb3JrPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83Yzc3YmM5ODVkYTM0MzlmYTk0Y2NjNjY5NTRlZTNmYi5zZXRDb250ZW50KGh0bWxfYjgwNjdmMzE4MTJkNDM4Y2FkMDdhNzgwOWJkOTcxYWQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMmQ0ZTgzY2Y3MWIzNDJiNmJiOGQyNTZjYjA5MTJkMDEuYmluZFBvcHVwKHBvcHVwXzdjNzdiYzk4NWRhMzQzOWZhOTRjY2M2Njk1NGVlM2ZiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RiZTcxNGM4YjhkYTQzZjZhMGYwMTFmMDM0MzA0YTU2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjQ3NTg5MDUyMzA4NzQsLTczLjg3OTM2OTcwMDQ1ODc1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg3NTVhMjJkMzE1NDRkNmVhMmU2MzNhYWZjMmUxMDdlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2ViZGU4ZWU0M2MzMzQ0NzNhMTRmZGM5MmZjZjg4MjRmID0gJCgnPGRpdiBpZD0iaHRtbF9lYmRlOGVlNDNjMzM0NDczYTE0ZmRjOTJmY2Y4ODI0ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U3RhcnJldHQgQ2l0eTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODc1NWEyMmQzMTU0NGQ2ZWEyZTYzM2FhZmMyZTEwN2Uuc2V0Q29udGVudChodG1sX2ViZGU4ZWU0M2MzMzQ0NzNhMTRmZGM5MmZjZjg4MjRmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2RiZTcxNGM4YjhkYTQzZjZhMGYwMTFmMDM0MzA0YTU2LmJpbmRQb3B1cChwb3B1cF84NzU1YTIyZDMxNTQ0ZDZlYTJlNjMzYWFmYzJlMTA3ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kNDM0ZmFkYTczOWI0N2E5YmZiM2NiYzY3NmYyNDRkMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjYzNTU2NDMyNzk3NDI4LC03My45MDIwOTI2OTc3ODk2Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yZjViZGU3YTBmZmE0Nzg0OTVlMmQ5YjA5MWUzM2U1NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80OGE5NWUxYzY4NDA0MzdiYjI1NmU4ODgzZDRkNzNmNyA9ICQoJzxkaXYgaWQ9Imh0bWxfNDhhOTVlMWM2ODQwNDM3YmIyNTZlODg4M2Q0ZDczZjciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNhbmFyc2llPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yZjViZGU3YTBmZmE0Nzg0OTVlMmQ5YjA5MWUzM2U1NS5zZXRDb250ZW50KGh0bWxfNDhhOTVlMWM2ODQwNDM3YmIyNTZlODg4M2Q0ZDczZjcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDQzNGZhZGE3MzliNDdhOWJmYjNjYmM2NzZmMjQ0ZDAuYmluZFBvcHVwKHBvcHVwXzJmNWJkZTdhMGZmYTQ3ODQ5NWUyZDliMDkxZTMzZTU1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RiMDk4MGFlMDE4MzRmZWFhOTkzMjY2NzQ1ZjQ2ZDhlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjMwNDQ2MDQzNzU3NDY2LC03My45MjkxMTMwMjY0NDY3NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81MTk1MTM2MTc3NzY0MDhjOTY3MjQ4YjA5OGYxM2VlMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lY2EyNGVhNTI1MGQ0MzdiOWZjYzJmY2VkNWUzZWQ1MSA9ICQoJzxkaXYgaWQ9Imh0bWxfZWNhMjRlYTUyNTBkNDM3YjlmY2MyZmNlZDVlM2VkNTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZsYXRsYW5kczwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTE5NTEzNjE3Nzc2NDA4Yzk2NzI0OGIwOThmMTNlZTIuc2V0Q29udGVudChodG1sX2VjYTI0ZWE1MjUwZDQzN2I5ZmNjMmZjZWQ1ZTNlZDUxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2RiMDk4MGFlMDE4MzRmZWFhOTkzMjY2NzQ1ZjQ2ZDhlLmJpbmRQb3B1cChwb3B1cF81MTk1MTM2MTc3NzY0MDhjOTY3MjQ4YjA5OGYxM2VlMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNWExN2NkYjUxNzQ0NWVjOWE4NzMzY2UxYjgyOGM4MyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjYwNjMzNjQyMTY4NTYyNiwtNzMuOTA4MTg1NzE3Nzc0MjNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfM2YwYzFlYWFmNWQxNGE4NGE5YTRhODg3MjEzZGY3MGQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmMyYTFiMTZjNmJhNDg1Y2I4MjE4NzkzYWM0Yzg3NjIgPSAkKCc8ZGl2IGlkPSJodG1sXzJjMmExYjE2YzZiYTQ4NWNiODIxODc5M2FjNGM4NzYyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NaWxsIElzbGFuZDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfM2YwYzFlYWFmNWQxNGE4NGE5YTRhODg3MjEzZGY3MGQuc2V0Q29udGVudChodG1sXzJjMmExYjE2YzZiYTQ4NWNiODIxODc5M2FjNGM4NzYyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzI1YTE3Y2RiNTE3NDQ1ZWM5YTg3MzNjZTFiODI4YzgzLmJpbmRQb3B1cChwb3B1cF8zZjBjMWVhYWY1ZDE0YTg0YTlhNGE4ODcyMTNkZjcwZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wZGY1NDM0ZWY3NjQ0MmMxODhhMGFlNjJkZmIwZmM3YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU3NzkxMzUwMzA4NjU3LC03My45NDM1MzcyMjg5MTg4Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lNTljYmRhY2E3NGY0ODQ3OWE5ODMzMzllNjZhOGIxYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84ZGZkMjYzMmZmMWM0NTE2YWVlMjliMTdhYjE1YTcyNCA9ICQoJzxkaXYgaWQ9Imh0bWxfOGRmZDI2MzJmZjFjNDUxNmFlZTI5YjE3YWIxNWE3MjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1hbmhhdHRhbiBCZWFjaDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTU5Y2JkYWNhNzRmNDg0NzlhOTgzMzM5ZTY2YThiMWEuc2V0Q29udGVudChodG1sXzhkZmQyNjMyZmYxYzQ1MTZhZWUyOWIxN2FiMTVhNzI0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzBkZjU0MzRlZjc2NDQyYzE4OGEwYWU2MmRmYjBmYzdhLmJpbmRQb3B1cChwb3B1cF9lNTljYmRhY2E3NGY0ODQ3OWE5ODMzMzllNjZhOGIxYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNTFkNjY4YjI3ZDQ0NDk3OTdmYjBjNTU2YjgxZDUzYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU3NDI5MjU2NDcxNjAxLC03My45ODg2ODI5NTgyMTYzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kNjVjMGY3ZGE1ZTQ0Mjc2ODIzOTllMjdhNmQ1YmI2NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kZjIxM2YxOTE1NDg0ZjI1YWQwOWY4YWJhZjU5ZmU1MCA9ICQoJzxkaXYgaWQ9Imh0bWxfZGYyMTNmMTkxNTQ4NGYyNWFkMDlmOGFiYWY1OWZlNTAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNvbmV5IElzbGFuZDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDY1YzBmN2RhNWU0NDI3NjgyMzk5ZTI3YTZkNWJiNjQuc2V0Q29udGVudChodG1sX2RmMjEzZjE5MTU0ODRmMjVhZDA5ZjhhYmFmNTlmZTUwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2I1MWQ2NjhiMjdkNDQ0OTc5N2ZiMGM1NTZiODFkNTNhLmJpbmRQb3B1cChwb3B1cF9kNjVjMGY3ZGE1ZTQ0Mjc2ODIzOTllMjdhNmQ1YmI2NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NWZhYzFiOWQxN2U0NGM5OWUyYWI1MWI4MGJjNDI2YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU5OTUxODcwMjgyMjM4LC03My45OTg3NTIyMTQ0MzUxOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lMzZhYWYzYmI0YjE0ZDcyYjQzNWEzYWMxZDBhNThiMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hOTY4MmM3MmY5ZDI0OGQ2YjIxMDZjYzVlYjA1YTY3MSA9ICQoJzxkaXYgaWQ9Imh0bWxfYTk2ODJjNzJmOWQyNDhkNmIyMTA2Y2M1ZWIwNWE2NzEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJhdGggQmVhY2g8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UzNmFhZjNiYjRiMTRkNzJiNDM1YTNhYzFkMGE1OGIwLnNldENvbnRlbnQoaHRtbF9hOTY4MmM3MmY5ZDI0OGQ2YjIxMDZjYzVlYjA1YTY3MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85NWZhYzFiOWQxN2U0NGM5OWUyYWI1MWI4MGJjNDI2Yi5iaW5kUG9wdXAocG9wdXBfZTM2YWFmM2JiNGIxNGQ3MmI0MzVhM2FjMWQwYTU4YjApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDk0NWJjMGMwNmUxNDc2NzgzNWMxNWExYzlhN2RjZGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MzMxMzA1MTI3NTgwMTUsLTczLjk5MDQ5ODIzMDQ0ODExXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg4N2YyYjRmNzM4ZjRiYmM5NGQ2N2E4Y2IxOGYxNTcyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2UyNmM0ZmQ1YTU2YzQxYjFiOTEzNGUzNTEzYjMzMzk5ID0gJCgnPGRpdiBpZD0iaHRtbF9lMjZjNGZkNWE1NmM0MWIxYjkxMzRlMzUxM2IzMzM5OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Qm9yb3VnaCBQYXJrPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84ODdmMmI0ZjczOGY0YmJjOTRkNjdhOGNiMThmMTU3Mi5zZXRDb250ZW50KGh0bWxfZTI2YzRmZDVhNTZjNDFiMWI5MTM0ZTM1MTNiMzMzOTkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDk0NWJjMGMwNmUxNDc2NzgzNWMxNWExYzlhN2RjZGMuYmluZFBvcHVwKHBvcHVwXzg4N2YyYjRmNzM4ZjRiYmM5NGQ2N2E4Y2IxOGYxNTcyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRkMTUyNmY1NGNkNjRkNzU4YTA4ZTNjYWNiYWU4ZDRjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjE5MjE5NDU3NzIyNjM2LC03NC4wMTkzMTM3NTYzNjAyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lZmYzN2U1OTg3MDQ0MTMwYTk3ZjNjZWY0ODU1NjQ2MyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yYzg0ZDU0ZTZiYjY0NGIxODVmMGFmY2RiNzQ4YjA1MCA9ICQoJzxkaXYgaWQ9Imh0bWxfMmM4NGQ1NGU2YmI2NDRiMTg1ZjBhZmNkYjc0OGIwNTAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkR5a2VyIEhlaWdodHM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VmZjM3ZTU5ODcwNDQxMzBhOTdmM2NlZjQ4NTU2NDYzLnNldENvbnRlbnQoaHRtbF8yYzg0ZDU0ZTZiYjY0NGIxODVmMGFmY2RiNzQ4YjA1MCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80ZDE1MjZmNTRjZDY0ZDc1OGEwOGUzY2FjYmFlOGQ0Yy5iaW5kUG9wdXAocG9wdXBfZWZmMzdlNTk4NzA0NDEzMGE5N2YzY2VmNDg1NTY0NjMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWUyOWFkYjQ4NTBkNDgwODljMzgxYjk5YWQ2ODMyM2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41OTA4NDg0MzM5MDIwNDYsLTczLjkzMDEwMTcwNjkxMTk2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RkNmQwOTc1Njk1YzQ3NjQ5YzkwODQ0ODIxOWRiMjVkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk2YTZkMWVlMGRlYzRmMWY4NWFhMDQ0NDRiMmRlNTYyID0gJCgnPGRpdiBpZD0iaHRtbF85NmE2ZDFlZTBkZWM0ZjFmODVhYTA0NDQ0YjJkZTU2MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+R2Vycml0c2VuIEJlYWNoPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kZDZkMDk3NTY5NWM0NzY0OWM5MDg0NDgyMTlkYjI1ZC5zZXRDb250ZW50KGh0bWxfOTZhNmQxZWUwZGVjNGYxZjg1YWEwNDQ0NGIyZGU1NjIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMWUyOWFkYjQ4NTBkNDgwODljMzgxYjk5YWQ2ODMyM2EuYmluZFBvcHVwKHBvcHVwX2RkNmQwOTc1Njk1YzQ3NjQ5YzkwODQ0ODIxOWRiMjVkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU3NzU5Y2JiNTEzYTQ1MTdhMjU2MGQ1Y2NjMjIwZjEyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjA5NzQ3Nzc5ODk0NjA0LC03My45MzEzNDQwNDEwODQ5N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zNDQ1Y2MyNWZlYjE0NDMwYWY0ZWUwMWEwNTMzZDY2YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iNmZhOTI0ZmVkMjU0ZmZhOTMyMjk5NTkwMWJhYmRlNyA9ICQoJzxkaXYgaWQ9Imh0bWxfYjZmYTkyNGZlZDI1NGZmYTkzMjI5OTU5MDFiYWJkZTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1hcmluZSBQYXJrPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zNDQ1Y2MyNWZlYjE0NDMwYWY0ZWUwMWEwNTMzZDY2Yi5zZXRDb250ZW50KGh0bWxfYjZmYTkyNGZlZDI1NGZmYTkzMjI5OTU5MDFiYWJkZTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNTc3NTljYmI1MTNhNDUxN2EyNTYwZDVjY2MyMjBmMTIuYmluZFBvcHVwKHBvcHVwXzM0NDVjYzI1ZmViMTQ0MzBhZjRlZTAxYTA1MzNkNjZiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY1ZTY5NTIxNjQwMzQ0NzY5ZDZiM2ViMTM3NGJiZDA5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjkzMjI5NDIxODgxNTA0LC03My45Njc4NDMwNjIxNjM2N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ZDg2MTdiM2NkMjQ0NTkwYWVlZTRiMzhjYWU4ZDcyNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xMDczOGE4OGI2MjE0YzE2ODM1NTUwNzRhZmQ1MzRlNyA9ICQoJzxkaXYgaWQ9Imh0bWxfMTA3MzhhODhiNjIxNGMxNjgzNTU1MDc0YWZkNTM0ZTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNsaW50b24gSGlsbDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNGQ4NjE3YjNjZDI0NDU5MGFlZWU0YjM4Y2FlOGQ3MjUuc2V0Q29udGVudChodG1sXzEwNzM4YTg4YjYyMTRjMTY4MzU1NTA3NGFmZDUzNGU3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzY1ZTY5NTIxNjQwMzQ0NzY5ZDZiM2ViMTM3NGJiZDA5LmJpbmRQb3B1cChwb3B1cF80ZDg2MTdiM2NkMjQ0NTkwYWVlZTRiMzhjYWU4ZDcyNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wODFiYWI2ZTQxYmQ0NGU0OTQ0YjI4ZDQ4MTVkMTc3NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU3NjM3NTM3ODkwMjI0LC03NC4wMDc4NzMxMTIwMDI0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY3YTI5MTMzMjZlMTQzNjU4Y2YxOTRiMzliMDc2OGQwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ1OThiNjQ2MmVlNTQ2MDU5OGJkYjg5NzFmNDUwOGY4ID0gJCgnPGRpdiBpZD0iaHRtbF80NTk4YjY0NjJlZTU0NjA1OThiZGI4OTcxZjQ1MDhmOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U2VhIEdhdGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY3YTI5MTMzMjZlMTQzNjU4Y2YxOTRiMzliMDc2OGQwLnNldENvbnRlbnQoaHRtbF80NTk4YjY0NjJlZTU0NjA1OThiZGI4OTcxZjQ1MDhmOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wODFiYWI2ZTQxYmQ0NGU0OTQ0YjI4ZDQ4MTVkMTc3Ni5iaW5kUG9wdXAocG9wdXBfNjdhMjkxMzMyNmUxNDM2NThjZjE5NGIzOWIwNzY4ZDApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzdiMDA4N2MzZWE3NDgyY2FjYWQ5YWVlNTA4ZmZkNWMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42OTA4NDQwMjEwOTgwMiwtNzMuOTgzNDYzMzc0MzEwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDA1MDZjZDc5ZWYxNDYyNWEzMThiZjJmN2I5ZGVhZjUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTNjYmQ3M2Y5OTNjNDk5M2JlYTYwZjMwNDYzM2Y5ZDMgPSAkKCc8ZGl2IGlkPSJodG1sXzEzY2JkNzNmOTkzYzQ5OTNiZWE2MGYzMDQ2MzNmOWQzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Eb3dudG93bjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDA1MDZjZDc5ZWYxNDYyNWEzMThiZjJmN2I5ZGVhZjUuc2V0Q29udGVudChodG1sXzEzY2JkNzNmOTkzYzQ5OTNiZWE2MGYzMDQ2MzNmOWQzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzc3YjAwODdjM2VhNzQ4MmNhY2FkOWFlZTUwOGZmZDVjLmJpbmRQb3B1cChwb3B1cF80MDUwNmNkNzllZjE0NjI1YTMxOGJmMmY3YjlkZWFmNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82ZWIwYmE0MDRmMDg0NTViYThkMGVlMWY3MWNhODEwZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY4NTY4MjkxMjA5MTQ0NCwtNzMuOTgzNzQ4MjQxMTU3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDliMDVlMDA3NjljNDVlMjg2MWZiZmU3YzUyNjAwMDkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDIxYTg5ZTZiYzgyNGVkMDkwNjBkNTlkOGExMzNjNzAgPSAkKCc8ZGl2IGlkPSJodG1sXzAyMWE4OWU2YmM4MjRlZDA5MDYwZDU5ZDhhMTMzYzcwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Cb2VydW0gSGlsbDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDliMDVlMDA3NjljNDVlMjg2MWZiZmU3YzUyNjAwMDkuc2V0Q29udGVudChodG1sXzAyMWE4OWU2YmM4MjRlZDA5MDYwZDU5ZDhhMTMzYzcwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzZlYjBiYTQwNGYwODQ1NWJhOGQwZWUxZjcxY2E4MTBmLmJpbmRQb3B1cChwb3B1cF8wOWIwNWUwMDc2OWM0NWUyODYxZmJmZTdjNTI2MDAwOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80ZjVmNzMyZTM0NWU0MDViYmY1ZTUzMWZlNTAyMzU5OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY1ODQyMDAxNzQ2OTgxNSwtNzMuOTU0ODk4NjcwNzc3MTNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTM3Y2Q3N2E0OGRlNGNhZmE4YTNjMGYzNDExMTQ0YjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2M1ZWM0NzU0NzYyNGU1YTgzNzg5MTRlNzFjMzM5MWEgPSAkKCc8ZGl2IGlkPSJodG1sXzNjNWVjNDc1NDc2MjRlNWE4Mzc4OTE0ZTcxYzMzOTFhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Qcm9zcGVjdCBMZWZmZXJ0cyBHYXJkZW5zPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hMzdjZDc3YTQ4ZGU0Y2FmYThhM2MwZjM0MTExNDRiMi5zZXRDb250ZW50KGh0bWxfM2M1ZWM0NzU0NzYyNGU1YTgzNzg5MTRlNzFjMzM5MWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNGY1ZjczMmUzNDVlNDA1YmJmNWU1MzFmZTUwMjM1OTguYmluZFBvcHVwKHBvcHVwX2EzN2NkNzdhNDhkZTRjYWZhOGEzYzBmMzQxMTE0NGIyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE2OWZjY2E4M2E1MzRjZmRiOTA1YzkyYzY2MTljMmIzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjc4NDAyNTU0Nzk1MzU1LC03My45MTMwNjgzMTc4NzM5NV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83YmJiOTNiZWU0NmM0MDA2OWE5M2U2NzFiZTY5MzBhZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMTQ0ODkyMGYyOGE0MDI4YTc5MjY1ZDMyZTIwOWRjOSA9ICQoJzxkaXYgaWQ9Imh0bWxfYTE0NDg5MjBmMjhhNDAyOGE3OTI2NWQzMmUyMDlkYzkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9jZWFuIEhpbGw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdiYmI5M2JlZTQ2YzQwMDY5YTkzZTY3MWJlNjkzMGFkLnNldENvbnRlbnQoaHRtbF9hMTQ0ODkyMGYyOGE0MDI4YTc5MjY1ZDMyZTIwOWRjOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xNjlmY2NhODNhNTM0Y2ZkYjkwNWM5MmM2NjE5YzJiMy5iaW5kUG9wdXAocG9wdXBfN2JiYjkzYmVlNDZjNDAwNjlhOTNlNjcxYmU2OTMwYWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMmViMGI4Y2VlZjZjNGEyMWFjNjAxOTlkYmEzNTk5OGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42Nzg1Njk5NTcyNzQ3OSwtNzMuODY3OTc1OTgwODEzMzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTgwMjcyMDQ3M2ZlNDVkMjhmMDAzNjU0ODY2ODQyNjUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjdjNzNmMWYzZmJmNGJlZjkyOTMwY2VkMDdjZDQxNTYgPSAkKCc8ZGl2IGlkPSJodG1sXzY3YzczZjFmM2ZiZjRiZWY5MjkzMGNlZDA3Y2Q0MTU2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5DaXR5IExpbmU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E4MDI3MjA0NzNmZTQ1ZDI4ZjAwMzY1NDg2Njg0MjY1LnNldENvbnRlbnQoaHRtbF82N2M3M2YxZjNmYmY0YmVmOTI5MzBjZWQwN2NkNDE1Nik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yZWIwYjhjZWVmNmM0YTIxYWM2MDE5OWRiYTM1OTk4ZS5iaW5kUG9wdXAocG9wdXBfYTgwMjcyMDQ3M2ZlNDVkMjhmMDAzNjU0ODY2ODQyNjUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGFiYzA0ZWU4YjlhNDhkNmJiNzdhYzg3ODRhZGFmODAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MTUxNDk1NTA0NTMwOCwtNzMuODk4NTU2MzM2MzAzMTddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTgxNDQyYWQ2ODliNGRkNDk1Y2JiYWE1NmViYjc4NzEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzQ5MmUyYWFmNTgxNDk1MmEwYjU0ZmM0NGIxMjQzMmEgPSAkKCc8ZGl2IGlkPSJodG1sXzM0OTJlMmFhZjU4MTQ5NTJhMGI1NGZjNDRiMTI0MzJhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CZXJnZW4gQmVhY2g8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE4MTQ0MmFkNjg5YjRkZDQ5NWNiYmFhNTZlYmI3ODcxLnNldENvbnRlbnQoaHRtbF8zNDkyZTJhYWY1ODE0OTUyYTBiNTRmYzQ0YjEyNDMyYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wYWJjMDRlZThiOWE0OGQ2YmI3N2FjODc4NGFkYWY4MC5iaW5kUG9wdXAocG9wdXBfMTgxNDQyYWQ2ODliNGRkNDk1Y2JiYWE1NmViYjc4NzEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODE4ZWYxZDUxNGE3NDBkN2E5MTI5MTBiOGE3ZTNmNWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MjU1OTU4OTg2OTg0MywtNzMuOTU3NTk1MjM0ODk4MzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTkxNWRkYjMxMzRmNDkyZWFmNjg0ZmFmM2Q0NDEwMmQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGI5MzQyMTFlYWM3NGM5ZTkzMmMyMGU3MTYxYWQwYWYgPSAkKCc8ZGl2IGlkPSJodG1sXzRiOTM0MjExZWFjNzRjOWU5MzJjMjBlNzE2MWFkMGFmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NaWR3b29kPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hOTE1ZGRiMzEzNGY0OTJlYWY2ODRmYWYzZDQ0MTAyZC5zZXRDb250ZW50KGh0bWxfNGI5MzQyMTFlYWM3NGM5ZTkzMmMyMGU3MTYxYWQwYWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODE4ZWYxZDUxNGE3NDBkN2E5MTI5MTBiOGE3ZTNmNWUuYmluZFBvcHVwKHBvcHVwX2E5MTVkZGIzMTM0ZjQ5MmVhZjY4NGZhZjNkNDQxMDJkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZlYzhmZDQ0ZGY2NzQ4YWM5MTg2MTg3MTc2NTljYjBiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjQ3MDA4NjAzMTg1MTg1LC03My45NjI2MTMxNjcxNjA0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kOTE5ZjkyNDM1NTY0ZGU0YjhhOTJmMTlmYWE4ZDVlMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xZmI4N2E4MmE0ZjA0OWUyYjk2MjhjMTQ1MWI0MzJmYSA9ICQoJzxkaXYgaWQ9Imh0bWxfMWZiODdhODJhNGYwNDllMmI5NjI4YzE0NTFiNDMyZmEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlByb3NwZWN0IFBhcmsgU291dGg8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q5MTlmOTI0MzU1NjRkZTRiOGE5MmYxOWZhYThkNWUwLnNldENvbnRlbnQoaHRtbF8xZmI4N2E4MmE0ZjA0OWUyYjk2MjhjMTQ1MWI0MzJmYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82ZWM4ZmQ0NGRmNjc0OGFjOTE4NjE4NzE3NjU5Y2IwYi5iaW5kUG9wdXAocG9wdXBfZDkxOWY5MjQzNTU2NGRlNGI4YTkyZjE5ZmFhOGQ1ZTApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjgzZDNiYmJkNzM1NDFhMWFkNDE1NTMzZjk1MWNkYjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MjM4NDUyNDQ3ODQxOSwtNzMuOTE2MDc0ODM5NTEzMjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTUzOTk0Nzk1OTVlNDBkNTk2NTU4YmZlNjRjOGRiNGMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGMzOGZkNDc0Mzc1NDcxZWJhY2NmOGFmMzExYmJhMTggPSAkKCc8ZGl2IGlkPSJodG1sXzhjMzhmZDQ3NDM3NTQ3MWViYWNjZjhhZjMxMWJiYTE4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5HZW9yZ2V0b3duPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xNTM5OTQ3OTU5NWU0MGQ1OTY1NThiZmU2NGM4ZGI0Yy5zZXRDb250ZW50KGh0bWxfOGMzOGZkNDc0Mzc1NDcxZWJhY2NmOGFmMzExYmJhMTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjgzZDNiYmJkNzM1NDFhMWFkNDE1NTMzZjk1MWNkYjIuYmluZFBvcHVwKHBvcHVwXzE1Mzk5NDc5NTk1ZTQwZDU5NjU1OGJmZTY0YzhkYjRjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MxNTFiZjU1NmMyMTQwNDM5NGM1OGJhZjg0YjVmZWE5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzA4NDkyNDEwNDE1NDgsLTczLjkzODg1ODE1MjY5MTk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y4MjdjNGNlMmUwOTRhYmRiMDUxMDQ3YTJkMDRjZTA3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzdjMDA4NTZiNWIzOTQ3ZTg5YjYyZTkxMmM5ZDI3YmYwID0gJCgnPGRpdiBpZD0iaHRtbF83YzAwODU2YjViMzk0N2U4OWI2MmU5MTJjOWQyN2JmMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RWFzdCBXaWxsaWFtc2J1cmc8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y4MjdjNGNlMmUwOTRhYmRiMDUxMDQ3YTJkMDRjZTA3LnNldENvbnRlbnQoaHRtbF83YzAwODU2YjViMzk0N2U4OWI2MmU5MTJjOWQyN2JmMCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jMTUxYmY1NTZjMjE0MDQzOTRjNThiYWY4NGI1ZmVhOS5iaW5kUG9wdXAocG9wdXBfZjgyN2M0Y2UyZTA5NGFiZGIwNTEwNDdhMmQwNGNlMDcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2IyMmI3YzA5ZWM3NGJmMWI2ODdmMGVjMjFlNTlmYzMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MTQ4MjI5MDY1MzIwMTQsLTczLjk1ODgwODU3NTg3NTgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2MwYTllMzUzZDI4NDRjMDk5ZjdlOTdkOWMwYmRiNTFlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzEzNjkzNWUxMTU0MjRlYThhOGU0YjY3MDFkYTU3MzI5ID0gJCgnPGRpdiBpZD0iaHRtbF8xMzY5MzVlMTE1NDI0ZWE4YThlNGI2NzAxZGE1NzMyOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tm9ydGggU2lkZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzBhOWUzNTNkMjg0NGMwOTlmN2U5N2Q5YzBiZGI1MWUuc2V0Q29udGVudChodG1sXzEzNjkzNWUxMTU0MjRlYThhOGU0YjY3MDFkYTU3MzI5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2NiMjJiN2MwOWVjNzRiZjFiNjg3ZjBlYzIxZTU5ZmMzLmJpbmRQb3B1cChwb3B1cF9jMGE5ZTM1M2QyODQ0YzA5OWY3ZTk3ZDljMGJkYjUxZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83ZmJiZjYxOTAxNjM0YzAzYjgwMWZmNTAxYWU3OTU5ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjcxMDg2MTQ3MjY1MDY0LC03My45NTgwMDA5NTE1MzMzMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zNDExNWU0ZDczYTc0MWMzYTEzNmYzYjgyYzQ3NWU2OSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zZTAzODE1Mjg5OGU0MTk1OTU5MzkyYjMwNjkwNWRkYyA9ICQoJzxkaXYgaWQ9Imh0bWxfM2UwMzgxNTI4OThlNDE5NTk1OTM5MmIzMDY5MDVkZGMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNvdXRoIFNpZGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM0MTE1ZTRkNzNhNzQxYzNhMTM2ZjNiODJjNDc1ZTY5LnNldENvbnRlbnQoaHRtbF8zZTAzODE1Mjg5OGU0MTk1OTU5MzkyYjMwNjkwNWRkYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83ZmJiZjYxOTAxNjM0YzAzYjgwMWZmNTAxYWU3OTU5ZC5iaW5kUG9wdXAocG9wdXBfMzQxMTVlNGQ3M2E3NDFjM2ExMzZmM2I4MmM0NzVlNjkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODExMTJjMTQzYWZmNDI3NjhhZjY0NjMwNzliYjJlYjQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MTMwNTk3NjY2Nzk0MiwtNzMuOTY4MzY2NzgwMzU1NDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTUyNGY5Y2MyMmUwNDUzMDg1YTgzYWE3ZjI3NGQ1N2IgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWRkODdhZWIwYzhiNDU4ZmFjZjVmYzEyZDVmZDYyM2YgPSAkKCc8ZGl2IGlkPSJodG1sXzVkZDg3YWViMGM4YjQ1OGZhY2Y1ZmMxMmQ1ZmQ2MjNmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PY2VhbiBQYXJrd2F5PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xNTI0ZjljYzIyZTA0NTMwODVhODNhYTdmMjc0ZDU3Yi5zZXRDb250ZW50KGh0bWxfNWRkODdhZWIwYzhiNDU4ZmFjZjVmYzEyZDVmZDYyM2YpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODExMTJjMTQzYWZmNDI3NjhhZjY0NjMwNzliYjJlYjQuYmluZFBvcHVwKHBvcHVwXzE1MjRmOWNjMjJlMDQ1MzA4NWE4M2FhN2YyNzRkNTdiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI5ZmZhOGFiOTkzMjRiYWQ4ODNjYzNlMTdiOTc0MTU3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjE0NzY4MTI2OTQyMjYsLTc0LjAzMTk3OTE0NTM3OTg0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI4MDUxYzZiMThmNTQzNmM4NzkwOTBiMGM1YjJhNjEwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JjZDFjMGZiMGY2NTQ4NTdhZTlmYzJkNWU1ZDRiZGFmID0gJCgnPGRpdiBpZD0iaHRtbF9iY2QxYzBmYjBmNjU0ODU3YWU5ZmMyZDVlNWQ0YmRhZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Rm9ydCBIYW1pbHRvbjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjgwNTFjNmIxOGY1NDM2Yzg3OTA5MGIwYzViMmE2MTAuc2V0Q29udGVudChodG1sX2JjZDFjMGZiMGY2NTQ4NTdhZTlmYzJkNWU1ZDRiZGFmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzI5ZmZhOGFiOTkzMjRiYWQ4ODNjYzNlMTdiOTc0MTU3LmJpbmRQb3B1cChwb3B1cF8yODA1MWM2YjE4ZjU0MzZjODc5MDkwYjBjNWIyYTYxMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lNDBmOGNlZWEyODE0MjUzYTk3ODdlNTc1YmY3YzYyZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjcxNTYxODQyMjMxNDMyLC03My45OTQyNzkzNjI1NTk3OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mZjZjNTE4OTA2ZmU0MDQ4YTFiYmNkZjI3NDlhNWMxOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lMDMxYmExYzMxYjA0NjAwODY3NTViMjY3NTEwMTMxNCA9ICQoJzxkaXYgaWQ9Imh0bWxfZTAzMWJhMWMzMWIwNDYwMDg2NzU1YjI2NzUxMDEzMTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNoaW5hdG93bjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZmY2YzUxODkwNmZlNDA0OGExYmJjZGYyNzQ5YTVjMTguc2V0Q29udGVudChodG1sX2UwMzFiYTFjMzFiMDQ2MDA4Njc1NWIyNjc1MTAxMzE0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2U0MGY4Y2VlYTI4MTQyNTNhOTc4N2U1NzViZjdjNjJlLmJpbmRQb3B1cChwb3B1cF9mZjZjNTE4OTA2ZmU0MDQ4YTFiYmNkZjI3NDlhNWMxOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wZTZmOGI5Zjk2OWM0MDZkOTc2NGU5Mzc5MDE2OTk4YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg1MTkwMjUyNTU1MzA1LC03My45MzY5MDAyNzk4NTIzNF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hZjU3ZmE3ZjcwMGU0YmNkOGQxYmExM2RjN2Y3ZGY5ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zMThiNjA4ZTFiY2M0ODQzYjZjYjc1ZmE5OGNiNDk2ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfMzE4YjYwOGUxYmNjNDg0M2I2Y2I3NWZhOThjYjQ5NmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldhc2hpbmd0b24gSGVpZ2h0czwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYWY1N2ZhN2Y3MDBlNGJjZDhkMWJhMTNkYzdmN2RmOWUuc2V0Q29udGVudChodG1sXzMxOGI2MDhlMWJjYzQ4NDNiNmNiNzVmYTk4Y2I0OTZmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzBlNmY4YjlmOTY5YzQwNmQ5NzY0ZTkzNzkwMTY5OThhLmJpbmRQb3B1cChwb3B1cF9hZjU3ZmE3ZjcwMGU0YmNkOGQxYmExM2RjN2Y3ZGY5ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85MzIzZDI2OTVhZmI0NzVjODU5NGU0NmRhOWFlYzg3NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg2NzY4Mzk2NDQ5OTE1LC03My45MjEyMTA0MjIwMzg5N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lMzA1NTcyZDZmMDk0NTdkOGQ5OTk2MGVhNDYzNjU2MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83YTA2ZmQ4ZjI5ZTE0NzZlOTNhZDY4ZmFhMWNjNTVhNiA9ICQoJzxkaXYgaWQ9Imh0bWxfN2EwNmZkOGYyOWUxNDc2ZTkzYWQ2OGZhYTFjYzU1YTYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPklud29vZDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTMwNTU3MmQ2ZjA5NDU3ZDhkOTk5NjBlYTQ2MzY1NjIuc2V0Q29udGVudChodG1sXzdhMDZmZDhmMjllMTQ3NmU5M2FkNjhmYWExY2M1NWE2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzkzMjNkMjY5NWFmYjQ3NWM4NTk0ZTQ2ZGE5YWVjODc2LmJpbmRQb3B1cChwb3B1cF9lMzA1NTcyZDZmMDk0NTdkOGQ5OTk2MGVhNDYzNjU2Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84ZDcyYzllNzIyNzY0ZmExOTZiOWUxYmZhOWRhNDJmZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgyMzYwNDI4NDgxMTkzNSwtNzMuOTQ5Njg3OTE4ODMzNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjQ0ZjE3NmU5MjQyNDIwZWEyZmFkOGJkMzY1ZDAxZGUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2RkYTJmNjVkZTZmNDYxOTliYTI3NGNlN2U5ZWRkNzkgPSAkKCc8ZGl2IGlkPSJodG1sXzNkZGEyZjY1ZGU2ZjQ2MTk5YmEyNzRjZTdlOWVkZDc5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5IYW1pbHRvbiBIZWlnaHRzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82NDRmMTc2ZTkyNDI0MjBlYTJmYWQ4YmQzNjVkMDFkZS5zZXRDb250ZW50KGh0bWxfM2RkYTJmNjVkZTZmNDYxOTliYTI3NGNlN2U5ZWRkNzkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOGQ3MmM5ZTcyMjc2NGZhMTk2YjllMWJmYTlkYTQyZmQuYmluZFBvcHVwKHBvcHVwXzY0NGYxNzZlOTI0MjQyMGVhMmZhZDhiZDM2NWQwMWRlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzMyODkxNTFlZmNlZTRiMzBhYmZlMDRjZjU2MDdiYmQxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODE2OTM0NDI5NDk3OCwtNzMuOTU3Mzg1MzkzNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83YjI4ODlkMWY3NGI0YjAzYWUwYTFmOGZkNmNkNjlkMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xMjJiNDhiMmVhMjg0Y2Q1YTFmODA4MDYwMWNkOTk4NyA9ICQoJzxkaXYgaWQ9Imh0bWxfMTIyYjQ4YjJlYTI4NGNkNWExZjgwODA2MDFjZDk5ODciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1hbmhhdHRhbnZpbGxlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83YjI4ODlkMWY3NGI0YjAzYWUwYTFmOGZkNmNkNjlkMy5zZXRDb250ZW50KGh0bWxfMTIyYjQ4YjJlYTI4NGNkNWExZjgwODA2MDFjZDk5ODcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzI4OTE1MWVmY2VlNGIzMGFiZmUwNGNmNTYwN2JiZDEuYmluZFBvcHVwKHBvcHVwXzdiMjg4OWQxZjc0YjRiMDNhZTBhMWY4ZmQ2Y2Q2OWQzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q5NTZmYjhkMDg1NTQ2NzdiNjRjMTVjOWM2ODBlNDlhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODE1OTc2MDY3NDI0MTQsLTczLjk0MzIxMTEyNjAzOTA1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RiZDk3MThjNDFlYjQ2ZmJiMjRmZWM4NmE5MDUyZmU3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQxNThmZmQ2NDEyZTQ3NGNhNDQxNWY0M2Q2MWMyOTYxID0gJCgnPGRpdiBpZD0iaHRtbF80MTU4ZmZkNjQxMmU0NzRjYTQ0MTVmNDNkNjFjMjk2MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q2VudHJhbCBIYXJsZW08L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RiZDk3MThjNDFlYjQ2ZmJiMjRmZWM4NmE5MDUyZmU3LnNldENvbnRlbnQoaHRtbF80MTU4ZmZkNjQxMmU0NzRjYTQ0MTVmNDNkNjFjMjk2MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kOTU2ZmI4ZDA4NTU0Njc3YjY0YzE1YzljNjgwZTQ5YS5iaW5kUG9wdXAocG9wdXBfZGJkOTcxOGM0MWViNDZmYmIyNGZlYzg2YTkwNTJmZTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTNiN2RhODlhYmRmNGRmOWJkYTUwZmJkMjdlNTEwNTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43OTIyNDk0NjY2MzAzMywtNzMuOTQ0MTgyMjMxNDg1MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjViM2VjM2IzNGJkNDU1N2I4NGJlMzNmNmQxMjVkMGUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTE5YmYzN2M2ODhmNDk3YjkwZmUzYThhNmVkMDU5NWIgPSAkKCc8ZGl2IGlkPSJodG1sXzkxOWJmMzdjNjg4ZjQ5N2I5MGZlM2E4YTZlZDA1OTViIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FYXN0IEhhcmxlbTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjViM2VjM2IzNGJkNDU1N2I4NGJlMzNmNmQxMjVkMGUuc2V0Q29udGVudChodG1sXzkxOWJmMzdjNjg4ZjQ5N2I5MGZlM2E4YTZlZDA1OTViKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzUzYjdkYTg5YWJkZjRkZjliZGE1MGZiZDI3ZTUxMDUyLmJpbmRQb3B1cChwb3B1cF8yNWIzZWMzYjM0YmQ0NTU3Yjg0YmUzM2Y2ZDEyNWQwZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zZTA2NGQ1YmFlYjI0OTgxODlkMmExMjM1Nzc1YmQ0NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc3NTYzODU3MzMwMTgwNSwtNzMuOTYwNTA3NjMxMzVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYWE3NDQ3ZGI4YzI5NDNkYzlmNDkxMDdhNTZkZjllMjQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzk5YjUyMDZhMGE3NDA3YzhiMWM2ZWVhZGU2OGE3YzQgPSAkKCc8ZGl2IGlkPSJodG1sXzc5OWI1MjA2YTBhNzQwN2M4YjFjNmVlYWRlNjhhN2M0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5VcHBlciBFYXN0IFNpZGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FhNzQ0N2RiOGMyOTQzZGM5ZjQ5MTA3YTU2ZGY5ZTI0LnNldENvbnRlbnQoaHRtbF83OTliNTIwNmEwYTc0MDdjOGIxYzZlZWFkZTY4YTdjNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zZTA2NGQ1YmFlYjI0OTgxODlkMmExMjM1Nzc1YmQ0Ni5iaW5kUG9wdXAocG9wdXBfYWE3NDQ3ZGI4YzI5NDNkYzlmNDkxMDdhNTZkZjllMjQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzU4OTZkNDAwYjgzNGEzZDljNDRhYmRlM2U5ZTQwN2IgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43NzU5Mjk4NDk4ODQ4NzUsLTczLjk0NzExNzg0NDcxODI2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhlZjcxZGVlYzhlODQzM2M4N2Q5ODU3MTI0N2M2ZTVhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzllM2QwYWUzZmY3ZTQ3MzI4ZWVmY2U0NjBjYjZhZmNhID0gJCgnPGRpdiBpZD0iaHRtbF85ZTNkMGFlM2ZmN2U0NzMyOGVlZmNlNDYwY2I2YWZjYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+WW9ya3ZpbGxlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84ZWY3MWRlZWM4ZTg0MzNjODdkOTg1NzEyNDdjNmU1YS5zZXRDb250ZW50KGh0bWxfOWUzZDBhZTNmZjdlNDczMjhlZWZjZTQ2MGNiNmFmY2EpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzU4OTZkNDAwYjgzNGEzZDljNDRhYmRlM2U5ZTQwN2IuYmluZFBvcHVwKHBvcHVwXzhlZjcxZGVlYzhlODQzM2M4N2Q5ODU3MTI0N2M2ZTVhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E2ZWE3NGQwMDdhMzRjYjY5NTNjYzFmNDI2MDE1ZGZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzY4MTEyNjU4Mjg3MzMsLTczLjk1ODg1OTY4ODEzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfM2ZiMjkwOWZmZjA4NDQ2MDljZjc5MTQ0ZmExYmQ1NGUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWY5MmI1NDhhOWFkNGMwZjg0MDI1NmZlYjZmMzM5MTggPSAkKCc8ZGl2IGlkPSJodG1sXzlmOTJiNTQ4YTlhZDRjMGY4NDAyNTZmZWI2ZjMzOTE4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MZW5veCBIaWxsPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zZmIyOTA5ZmZmMDg0NDYwOWNmNzkxNDRmYTFiZDU0ZS5zZXRDb250ZW50KGh0bWxfOWY5MmI1NDhhOWFkNGMwZjg0MDI1NmZlYjZmMzM5MTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYTZlYTc0ZDAwN2EzNGNiNjk1M2NjMWY0MjYwMTVkZmEuYmluZFBvcHVwKHBvcHVwXzNmYjI5MDlmZmYwODQ0NjA5Y2Y3OTE0NGZhMWJkNTRlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ5OTg5NmI3YjA3ZjQ4YjlhODM5ZDI1MWFiM2VkMmI1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzYyMTU5NjA1NzYyODMsLTczLjk0OTE2NzY5MjI3OTUzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NiNDBiZjA0YmFhMTQ5NGZiOGUzMmQ1OThhN2M0ZjhkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgwMzQ0M2YyMzk1NzRiNzE4ZTk4OTgzZDI0NDc2OWY3ID0gJCgnPGRpdiBpZD0iaHRtbF84MDM0NDNmMjM5NTc0YjcxOGU5ODk4M2QyNDQ3NjlmNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Um9vc2V2ZWx0IElzbGFuZDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2I0MGJmMDRiYWExNDk0ZmI4ZTMyZDU5OGE3YzRmOGQuc2V0Q29udGVudChodG1sXzgwMzQ0M2YyMzk1NzRiNzE4ZTk4OTgzZDI0NDc2OWY3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzQ5OTg5NmI3YjA3ZjQ4YjlhODM5ZDI1MWFiM2VkMmI1LmJpbmRQb3B1cChwb3B1cF9jYjQwYmYwNGJhYTE0OTRmYjhlMzJkNTk4YTdjNGY4ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mZDFjYWRjMzM5ZDY0OGE4YWMyOWY2YWQxNTA0NjAyMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc4NzY1Nzk5ODUzNDg1NCwtNzMuOTc3MDU5MjM2MzA2MDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDVhZjJjZGUzNmQwNDhiYWI3OWRkMDcwZGVhMWE3MmQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2Q4ODBhMWIwMTI3NGYxNzk4ODEyODY5OGQxMzY4ZjggPSAkKCc8ZGl2IGlkPSJodG1sX2NkODgwYTFiMDEyNzRmMTc5ODgxMjg2OThkMTM2OGY4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5VcHBlciBXZXN0IFNpZGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzA1YWYyY2RlMzZkMDQ4YmFiNzlkZDA3MGRlYTFhNzJkLnNldENvbnRlbnQoaHRtbF9jZDg4MGExYjAxMjc0ZjE3OTg4MTI4Njk4ZDEzNjhmOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mZDFjYWRjMzM5ZDY0OGE4YWMyOWY2YWQxNTA0NjAyMS5iaW5kUG9wdXAocG9wdXBfMDVhZjJjZGUzNmQwNDhiYWI3OWRkMDcwZGVhMWE3MmQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTdhNDMyYWVhMDIwNGJhY2E1ODI3OTdmNDkwZmRlMGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43NzM1Mjg4ODk0MjE2NiwtNzMuOTg1MzM3NzcwMDEyNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWRjYTc0YmQxYjhkNGVmODk1YWI5YzliNGRiZjlmN2UgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMThhMDExNTU5MjEzNDExZmFmNTM5NTljMjMyNzYyYzUgPSAkKCc8ZGl2IGlkPSJodG1sXzE4YTAxMTU1OTIxMzQxMWZhZjUzOTU5YzIzMjc2MmM1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MaW5jb2xuIFNxdWFyZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWRjYTc0YmQxYjhkNGVmODk1YWI5YzliNGRiZjlmN2Uuc2V0Q29udGVudChodG1sXzE4YTAxMTU1OTIxMzQxMWZhZjUzOTU5YzIzMjc2MmM1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2E3YTQzMmFlYTAyMDRiYWNhNTgyNzk3ZjQ5MGZkZTBiLmJpbmRQb3B1cChwb3B1cF85ZGNhNzRiZDFiOGQ0ZWY4OTVhYjljOWI0ZGJmOWY3ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iYWM2OWMwYjZhMGU0MDc3ODYwYzhjMTA3Yzg3MjMzMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc1OTEwMDg5MTQ2MjEyLC03My45OTYxMTkzNjMwOTQ3OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84ODFlMDQ0MzIyNzA0NDM2ODZmNGFmNTczN2MwNDJkOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jM2VkZmQ1YzhhMmI0ZmI0OTE5YTdmZGM2NDUyMDU0ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfYzNlZGZkNWM4YTJiNGZiNDkxOWE3ZmRjNjQ1MjA1NGYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNsaW50b248L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg4MWUwNDQzMjI3MDQ0MzY4NmY0YWY1NzM3YzA0MmQ5LnNldENvbnRlbnQoaHRtbF9jM2VkZmQ1YzhhMmI0ZmI0OTE5YTdmZGM2NDUyMDU0Zik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iYWM2OWMwYjZhMGU0MDc3ODYwYzhjMTA3Yzg3MjMzMS5iaW5kUG9wdXAocG9wdXBfODgxZTA0NDMyMjcwNDQzNjg2ZjRhZjU3MzdjMDQyZDkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDlmNzA2NzUyNmY3NGVjYTlkNjcyYzkwN2ViYzUzN2YgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43NTQ2OTExMDI3MDYyMywtNzMuOTgxNjY4ODI3MzAzMDRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNGI1ZTg1YmFlNTdiNDEzNmI1MTJlNmY1NmMwMzgyOWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmM1ODkxMGEwZDQwNGQ0NjhlMzdmYzQyY2JiMzcxY2MgPSAkKCc8ZGl2IGlkPSJodG1sX2ZjNTg5MTBhMGQ0MDRkNDY4ZTM3ZmM0MmNiYjM3MWNjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NaWR0b3duPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80YjVlODViYWU1N2I0MTM2YjUxMmU2ZjU2YzAzODI5YS5zZXRDb250ZW50KGh0bWxfZmM1ODkxMGEwZDQwNGQ0NjhlMzdmYzQyY2JiMzcxY2MpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNDlmNzA2NzUyNmY3NGVjYTlkNjcyYzkwN2ViYzUzN2YuYmluZFBvcHVwKHBvcHVwXzRiNWU4NWJhZTU3YjQxMzZiNTEyZTZmNTZjMDM4MjlhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZlODhhZDlhYjlhNjQ4YTk5NTI5NzY1NDQ4M2Q2YmJmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzQ4MzAzMDc3MjUyMTc0LC03My45NzgzMzIwNzkyNDEyN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81N2NkNzQxMWRhZWY0NTI1OTI1MjgzYjkwMjhiYWM4ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iYWJmNjk0ZTEwMTg0MTE0YTA0MWQ1MmQwZDZmNjA3NyA9ICQoJzxkaXYgaWQ9Imh0bWxfYmFiZjY5NGUxMDE4NDExNGEwNDFkNTJkMGQ2ZjYwNzciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk11cnJheSBIaWxsPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81N2NkNzQxMWRhZWY0NTI1OTI1MjgzYjkwMjhiYWM4ZC5zZXRDb250ZW50KGh0bWxfYmFiZjY5NGUxMDE4NDExNGEwNDFkNTJkMGQ2ZjYwNzcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNmU4OGFkOWFiOWE2NDhhOTk1Mjk3NjU0NDgzZDZiYmYuYmluZFBvcHVwKHBvcHVwXzU3Y2Q3NDExZGFlZjQ1MjU5MjUyODNiOTAyOGJhYzhkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I3MjVmM2Q1YTFiMjQ2NGViYWE1Y2ZmOTZlMGJkNDVlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzQ0MDM0NzA2NzQ3OTc1LC03NC4wMDMxMTYzMzQ3MjgxM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMmVmMGYyNTE3MDY0YzRmYjE4YzhkMWQ3NWM0NGI3YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kMWE5MTY3MThlYjg0ZWFhYmRiNDdmOTFlMjE2MDNjZCA9ICQoJzxkaXYgaWQ9Imh0bWxfZDFhOTE2NzE4ZWI4NGVhYWJkYjQ3ZjkxZTIxNjAzY2QiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNoZWxzZWE8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMyZWYwZjI1MTcwNjRjNGZiMThjOGQxZDc1YzQ0YjdiLnNldENvbnRlbnQoaHRtbF9kMWE5MTY3MThlYjg0ZWFhYmRiNDdmOTFlMjE2MDNjZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iNzI1ZjNkNWExYjI0NjRlYmFhNWNmZjk2ZTBiZDQ1ZS5iaW5kUG9wdXAocG9wdXBfMzJlZjBmMjUxNzA2NGM0ZmIxOGM4ZDFkNzVjNDRiN2IpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGFmNjA4YmM0MDcwNDdkMzhkOWRjZmMwMDgwODJhMWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MjY5MzI4ODUzNjEyOCwtNzMuOTk5OTE0MDI5NDU5MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODAxZTJmYjMwY2NlNDNlM2E0OWM4OTYzYTU5NWYxYjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmZjOTcwNzNkYjBhNDlhZmI3YzViYmE2MjRmYTIwNzEgPSAkKCc8ZGl2IGlkPSJodG1sX2ZmYzk3MDczZGIwYTQ5YWZiN2M1YmJhNjI0ZmEyMDcxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5HcmVlbndpY2ggVmlsbGFnZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODAxZTJmYjMwY2NlNDNlM2E0OWM4OTYzYTU5NWYxYjIuc2V0Q29udGVudChodG1sX2ZmYzk3MDczZGIwYTQ5YWZiN2M1YmJhNjI0ZmEyMDcxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2RhZjYwOGJjNDA3MDQ3ZDM4ZDlkY2ZjMDA4MDgyYTFlLmJpbmRQb3B1cChwb3B1cF84MDFlMmZiMzBjY2U0M2UzYTQ5Yzg5NjNhNTk1ZjFiMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81ZDJlMTk4NGQwZDQ0ODM2OTAwNjM4NDA0ZTJjZWQ0NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjcyNzg0Njc3NzI3MDI0NCwtNzMuOTgyMjI2MTY1MDY0MTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTMwMTllZjJlODkxNDA0YmFkODI3NmI1MmI0MDY3NDAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDhlMDJmYjMwZWI1NGU0OGI2NjQ2ZTFmOWI3MGJjYmEgPSAkKCc8ZGl2IGlkPSJodG1sXzA4ZTAyZmIzMGViNTRlNDhiNjY0NmUxZjliNzBiY2JhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FYXN0IFZpbGxhZ2U8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzUzMDE5ZWYyZTg5MTQwNGJhZDgyNzZiNTJiNDA2NzQwLnNldENvbnRlbnQoaHRtbF8wOGUwMmZiMzBlYjU0ZTQ4YjY2NDZlMWY5YjcwYmNiYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81ZDJlMTk4NGQwZDQ0ODM2OTAwNjM4NDA0ZTJjZWQ0NC5iaW5kUG9wdXAocG9wdXBfNTMwMTllZjJlODkxNDA0YmFkODI3NmI1MmI0MDY3NDApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjc1NTRjOWUxYWExNDg4NTgxMGE0NzM3MWFmZjNlNDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MTc4MDY3NDg5Mjc2NSwtNzMuOTgwODkwMzE5OTkyOTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjg4ODAxNzcyYTAzNGZmYWFlYmI1YWRkMWJhZjFlOTIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2I2ZThjN2YxMjljNGU5MzgwZmMyZDkxNTVkODEyMmYgPSAkKCc8ZGl2IGlkPSJodG1sXzNiNmU4YzdmMTI5YzRlOTM4MGZjMmQ5MTU1ZDgxMjJmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Mb3dlciBFYXN0IFNpZGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI4ODgwMTc3MmEwMzRmZmFhZWJiNWFkZDFiYWYxZTkyLnNldENvbnRlbnQoaHRtbF8zYjZlOGM3ZjEyOWM0ZTkzODBmYzJkOTE1NWQ4MTIyZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82NzU1NGM5ZTFhYTE0ODg1ODEwYTQ3MzcxYWZmM2U0NC5iaW5kUG9wdXAocG9wdXBfMjg4ODAxNzcyYTAzNGZmYWFlYmI1YWRkMWJhZjFlOTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGU2Njk0NGRjNzBiNGJjNzliZjE0MjNkM2VmMDY2NmUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MjE1MjE5Njc0NDMyMTYsLTc0LjAxMDY4MzI4NTU5MDg3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc4YmI1ZTMxN2I5YjRiMzdiMWNiZWRhMDZiMGUyMjk0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2ZkYzI1OWNhNjZkNTQ0NzRiY2NjMmJlMWExNzQ4ZWJkID0gJCgnPGRpdiBpZD0iaHRtbF9mZGMyNTljYTY2ZDU0NDc0YmNjYzJiZTFhMTc0OGViZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VHJpYmVjYTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzhiYjVlMzE3YjliNGIzN2IxY2JlZGEwNmIwZTIyOTQuc2V0Q29udGVudChodG1sX2ZkYzI1OWNhNjZkNTQ0NzRiY2NjMmJlMWExNzQ4ZWJkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzhlNjY5NDRkYzcwYjRiYzc5YmYxNDIzZDNlZjA2NjZlLmJpbmRQb3B1cChwb3B1cF83OGJiNWUzMTdiOWI0YjM3YjFjYmVkYTA2YjBlMjI5NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mODdlN2E4MjEzNzg0MTBmODYwNDYyN2FiOGY4NDM2YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjcxOTMyMzc5Mzk1OTA3LC03My45OTczMDQ2NzIwODA3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84MDE3M2I0MGM5OTc0OWVkOWFkYjZjZTRjMGIzNGY5NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NjY0Y2YxM2ViMTU0NTYxYTRhYzU2N2E3NzEwMTE5NiA9ICQoJzxkaXYgaWQ9Imh0bWxfOTY2NGNmMTNlYjE1NDU2MWE0YWM1NjdhNzcxMDExOTYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxpdHRsZSBJdGFseTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODAxNzNiNDBjOTk3NDllZDlhZGI2Y2U0YzBiMzRmOTcuc2V0Q29udGVudChodG1sXzk2NjRjZjEzZWIxNTQ1NjFhNGFjNTY3YTc3MTAxMTk2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Y4N2U3YTgyMTM3ODQxMGY4NjA0NjI3YWI4Zjg0MzZiLmJpbmRQb3B1cChwb3B1cF84MDE3M2I0MGM5OTc0OWVkOWFkYjZjZTRjMGIzNGY5Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zZmJjNWIxZGZmYTE0MmExOWEzYmI0MDcwNWRiMzQ0YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjcyMjE4Mzg0MTMxNzk0LC03NC4wMDA2NTY2Njk1OTc1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80MThjNDgyYmE0NTE0YWM2OGI4NzBlZDgzNTQ0YTljYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jY2NiOTMwNzIyNmI0OWM2OGUxNTFjNThlMjFkZGJlYyA9ICQoJzxkaXYgaWQ9Imh0bWxfY2NjYjkzMDcyMjZiNDljNjhlMTUxYzU4ZTIxZGRiZWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNvaG88L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQxOGM0ODJiYTQ1MTRhYzY4Yjg3MGVkODM1NDRhOWNiLnNldENvbnRlbnQoaHRtbF9jY2NiOTMwNzIyNmI0OWM2OGUxNTFjNThlMjFkZGJlYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zZmJjNWIxZGZmYTE0MmExOWEzYmI0MDcwNWRiMzQ0Yy5iaW5kUG9wdXAocG9wdXBfNDE4YzQ4MmJhNDUxNGFjNjhiODcwZWQ4MzU0NGE5Y2IpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWM1MDBhNGU0ODIyNGRkNzk2NTc3OTIxNjcyYjJlMjQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MzQ0MzM5MzU3MjQzNCwtNzQuMDA2MTc5OTgxMjY4MTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2EwY2IzZDRkMTI3NGQ4NTkyMmRhZTg4MGYyZGY4NzQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGNhODUwMjM3NTc3NGMyYjhkNzFhODZmYWNlZjg0NzggPSAkKCc8ZGl2IGlkPSJodG1sXzBjYTg1MDIzNzU3NzRjMmI4ZDcxYTg2ZmFjZWY4NDc4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XZXN0IFZpbGxhZ2U8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NhMGNiM2Q0ZDEyNzRkODU5MjJkYWU4ODBmMmRmODc0LnNldENvbnRlbnQoaHRtbF8wY2E4NTAyMzc1Nzc0YzJiOGQ3MWE4NmZhY2VmODQ3OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lYzUwMGE0ZTQ4MjI0ZGQ3OTY1Nzc5MjE2NzJiMmUyNC5iaW5kUG9wdXAocG9wdXBfY2EwY2IzZDRkMTI3NGQ4NTkyMmRhZTg4MGYyZGY4NzQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGE3ZTRhNTRiN2NkNDQ5NGFlODBmZjM5MTVhNGYzMTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43OTczMDcwNDE3MDI4NjUsLTczLjk2NDI4NjE3NzQwNjU1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JiY2Q2OWZjNTNlNjQ4MjE4NmNkZTdjMDhiZjBmMzI5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YyYjdlNzkxMmRmNDQ5OTA5ZmQzN2I5OGQ2YjZiZGVjID0gJCgnPGRpdiBpZD0iaHRtbF9mMmI3ZTc5MTJkZjQ0OTkwOWZkMzdiOThkNmI2YmRlYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWFuaGF0dGFuIFZhbGxleTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmJjZDY5ZmM1M2U2NDgyMTg2Y2RlN2MwOGJmMGYzMjkuc2V0Q29udGVudChodG1sX2YyYjdlNzkxMmRmNDQ5OTA5ZmQzN2I5OGQ2YjZiZGVjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzhhN2U0YTU0YjdjZDQ0OTRhZTgwZmYzOTE1YTRmMzEwLmJpbmRQb3B1cChwb3B1cF9iYmNkNjlmYzUzZTY0ODIxODZjZGU3YzA4YmYwZjMyOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zNmMwODQzOTFmN2M0NTYxODJlZmRmYzAxYjcxMTEwMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgwNzk5OTczODE2NTgyNiwtNzMuOTYzODk2Mjc5MDUzMzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTI0YmY3ZTQ5ZGYxNGQwZGJhZjFkNWU4Njg2YmMwMDQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzQ2YjNjMTc5MTYxNDA4YmE3NzU2YjNhOTY1NDVlNDEgPSAkKCc8ZGl2IGlkPSJodG1sXzc0NmIzYzE3OTE2MTQwOGJhNzc1NmIzYTk2NTQ1ZTQxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Nb3JuaW5nc2lkZSBIZWlnaHRzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hMjRiZjdlNDlkZjE0ZDBkYmFmMWQ1ZTg2ODZiYzAwNC5zZXRDb250ZW50KGh0bWxfNzQ2YjNjMTc5MTYxNDA4YmE3NzU2YjNhOTY1NDVlNDEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzZjMDg0MzkxZjdjNDU2MTgyZWZkZmMwMWI3MTExMDIuYmluZFBvcHVwKHBvcHVwX2EyNGJmN2U0OWRmMTRkMGRiYWYxZDVlODY4NmJjMDA0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRiNTBhZGM5MTE5MDQ4OGI5YzM4NTU2MDM0NmYwZDJjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzM3MjA5ODMyNzE1LC03My45ODEzNzU5NDgzMzU0MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iMzc0M2U2MjQyMzM0OGQ4YmRkYWZjMzYwOWIzNDFmYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zYTMyZTM3OTRmMTA0MjU2OGVlNTlmNDg2ZTI5NThhOCA9ICQoJzxkaXYgaWQ9Imh0bWxfM2EzMmUzNzk0ZjEwNDI1NjhlZTU5ZjQ4NmUyOTU4YTgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkdyYW1lcmN5PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iMzc0M2U2MjQyMzM0OGQ4YmRkYWZjMzYwOWIzNDFmYy5zZXRDb250ZW50KGh0bWxfM2EzMmUzNzk0ZjEwNDI1NjhlZTU5ZjQ4NmUyOTU4YTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNGI1MGFkYzkxMTkwNDg4YjljMzg1NTYwMzQ2ZjBkMmMuYmluZFBvcHVwKHBvcHVwX2IzNzQzZTYyNDIzMzQ4ZDhiZGRhZmMzNjA5YjM0MWZjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I2ZDcyNWVjNWQzZDQ4MGQ5NjI3YWZmNTg5MThhMjY4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzExOTMxOTgzOTQ1NjUsLTc0LjAxNjg2OTMwNTA4NjE3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzNhMmM5NGJjM2NkOTQ1ZmM4M2Y0MTNmN2U1NTBkZjllID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM0YTQ3OThkZDI5MTQ0OGNiOWYxYTVlN2M5MDEyOGI4ID0gJCgnPGRpdiBpZD0iaHRtbF8zNGE0Nzk4ZGQyOTE0NDhjYjlmMWE1ZTdjOTAxMjhiOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QmF0dGVyeSBQYXJrIENpdHk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzNhMmM5NGJjM2NkOTQ1ZmM4M2Y0MTNmN2U1NTBkZjllLnNldENvbnRlbnQoaHRtbF8zNGE0Nzk4ZGQyOTE0NDhjYjlmMWE1ZTdjOTAxMjhiOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iNmQ3MjVlYzVkM2Q0ODBkOTYyN2FmZjU4OTE4YTI2OC5iaW5kUG9wdXAocG9wdXBfM2EyYzk0YmMzY2Q5NDVmYzgzZjQxM2Y3ZTU1MGRmOWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGQ5Y2IxMjQ1MzhkNGI4N2E4MzM1YTI4ZTMxNmEwODggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MDcxMDcxMDcyNzA0OCwtNzQuMDEwNjY1NDQ1MjEyN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wOWUzYzM3NjU5YWY0ZDZiYjQ5NmE4OGQyYjg1MDkwYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84NDY0OTZmN2MwMDM0ZDBhODU0Y2Y1MjJmNTViOWMxMyA9ICQoJzxkaXYgaWQ9Imh0bWxfODQ2NDk2ZjdjMDAzNGQwYTg1NGNmNTIyZjU1YjljMTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZpbmFuY2lhbCBEaXN0cmljdDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDllM2MzNzY1OWFmNGQ2YmI0OTZhODhkMmI4NTA5MGEuc2V0Q29udGVudChodG1sXzg0NjQ5NmY3YzAwMzRkMGE4NTRjZjUyMmY1NWI5YzEzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzRkOWNiMTI0NTM4ZDRiODdhODMzNWEyOGUzMTZhMDg4LmJpbmRQb3B1cChwb3B1cF8wOWUzYzM3NjU5YWY0ZDZiYjQ5NmE4OGQyYjg1MDkwYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMWMzN2JhNGM2NzU0YTUyOGQxODcxZDI0N2FkMWE4NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc2ODUwODU5MzM1NDkyLC03My45MTU2NTM3NDMwNDIzNF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xZTA4MTZjODczZDQ0N2ZlYjA1ZjJkNTA3MGVhMDQwZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xMjU0YzJkYjBmZjA0NjllOTFlNTI4MDc1Y2NkZjhhOSA9ICQoJzxkaXYgaWQ9Imh0bWxfMTI1NGMyZGIwZmYwNDY5ZTkxZTUyODA3NWNjZGY4YTkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFzdG9yaWE8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFlMDgxNmM4NzNkNDQ3ZmViMDVmMmQ1MDcwZWEwNDBlLnNldENvbnRlbnQoaHRtbF8xMjU0YzJkYjBmZjA0NjllOTFlNTI4MDc1Y2NkZjhhOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wMWMzN2JhNGM2NzU0YTUyOGQxODcxZDI0N2FkMWE4Ni5iaW5kUG9wdXAocG9wdXBfMWUwODE2Yzg3M2Q0NDdmZWIwNWYyZDUwNzBlYTA0MGUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWJmODViMjg5Mjg2NDI1NzhhNWNkMzVmMDc4MmI3YjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43NDYzNDkwODg2MDIyMiwtNzMuOTAxODQxNjY4MzgyODRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2EyNThjZmUyMDNlNDcwMGJhN2EwZDg0MDQ2YTRkMzAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjg0MWU1NDFjY2I2NDA2YWE5MjAyZjI2YzhjZGUyNmQgPSAkKCc8ZGl2IGlkPSJodG1sXzY4NDFlNTQxY2NiNjQwNmFhOTIwMmYyNmM4Y2RlMjZkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Xb29kc2lkZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2EyNThjZmUyMDNlNDcwMGJhN2EwZDg0MDQ2YTRkMzAuc2V0Q29udGVudChodG1sXzY4NDFlNTQxY2NiNjQwNmFhOTIwMmYyNmM4Y2RlMjZkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2ViZjg1YjI4OTI4NjQyNTc4YTVjZDM1ZjA3ODJiN2I5LmJpbmRQb3B1cChwb3B1cF9jYTI1OGNmZTIwM2U0NzAwYmE3YTBkODQwNDZhNGQzMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zZWY0NTU5YWQ2N2Y0YzAwYjJmMTY3ZWM3YjliMjg0OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc1MTk4MTM4MDA3MzY3LC03My44ODI4MjEwOTE2NDM2NV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85YTg1ZDM3YjNjM2Q0OTkxYjYzNjg5NDMxMjBjZTVmZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iMGI2Yzk0ZDUxNzY0NzIyODE4MjU2OGFmYjkxNzgzNSA9ICQoJzxkaXYgaWQ9Imh0bWxfYjBiNmM5NGQ1MTc2NDcyMjgxODI1NjhhZmI5MTc4MzUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkphY2tzb24gSGVpZ2h0czwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWE4NWQzN2IzYzNkNDk5MWI2MzY4OTQzMTIwY2U1ZmQuc2V0Q29udGVudChodG1sX2IwYjZjOTRkNTE3NjQ3MjI4MTgyNTY4YWZiOTE3ODM1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzNlZjQ1NTlhZDY3ZjRjMDBiMmYxNjdlYzdiOWIyODQ5LmJpbmRQb3B1cChwb3B1cF85YTg1ZDM3YjNjM2Q0OTkxYjYzNjg5NDMxMjBjZTVmZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hMzQzOGI2ZjI5Nzk0ZjA0OGQ3ZTBlNTVhN2VjZTc5ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc0NDA0ODUwNTEyMjAyNCwtNzMuODgxNjU2MjIyODgzODhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGQxZjQ2NDdkMmI2NGFkMDgzY2I4MzQyODUxMDllZDkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNmExMzAzN2UwYWUwNGE2NzhmNThjNzE2YjBlMmM4NzMgPSAkKCc8ZGl2IGlkPSJodG1sXzZhMTMwMzdlMGFlMDRhNjc4ZjU4YzcxNmIwZTJjODczIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FbG1odXJzdDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGQxZjQ2NDdkMmI2NGFkMDgzY2I4MzQyODUxMDllZDkuc2V0Q29udGVudChodG1sXzZhMTMwMzdlMGFlMDRhNjc4ZjU4YzcxNmIwZTJjODczKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2EzNDM4YjZmMjk3OTRmMDQ4ZDdlMGU1NWE3ZWNlNzlmLmJpbmRQb3B1cChwb3B1cF8wZDFmNDY0N2QyYjY0YWQwODNjYjgzNDI4NTEwOWVkOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yMjkyN2I1MjEwNjM0ZDI1YTE2ZTViYTQ4ZmIxM2JmZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY1NDIyNTI3NzM4NDg3LC03My44MzgxMzc2NDYwMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FiZDU5OWRkNTNkODRlNWNiMmI5MTQ0YmZjZDI1MTc5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ1YzQ5ZDdkZWMzMTQwNzVhYTZkNTEwN2ViNzBlZDViID0gJCgnPGRpdiBpZD0iaHRtbF80NWM0OWQ3ZGVjMzE0MDc1YWE2ZDUxMDdlYjcwZWQ1YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SG93YXJkIEJlYWNoPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hYmQ1OTlkZDUzZDg0ZTVjYjJiOTE0NGJmY2QyNTE3OS5zZXRDb250ZW50KGh0bWxfNDVjNDlkN2RlYzMxNDA3NWFhNmQ1MTA3ZWI3MGVkNWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMjI5MjdiNTIxMDYzNGQyNWExNmU1YmE0OGZiMTNiZmQuYmluZFBvcHVwKHBvcHVwX2FiZDU5OWRkNTNkODRlNWNiMmI5MTQ0YmZjZDI1MTc5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYwYjM1NzBlMmExMTQ0ODE5NjBiZWU0YzgxNTI1ZGZkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzQyMzgxNzUwMTU2NjcsLTczLjg1NjgyNDk3MzQ1MjU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhiOTU4MDYzNWYzZTRjMDQ4NmNkNWUyOTBkNjQxMmY5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzdkZDc1MzAwMjUxMjQ0ZDFhNmI5OGE2ZTc4YzY3ZDcyID0gJCgnPGRpdiBpZD0iaHRtbF83ZGQ3NTMwMDI1MTI0NGQxYTZiOThhNmU3OGM2N2Q3MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q29yb25hPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84Yjk1ODA2MzVmM2U0YzA0ODZjZDVlMjkwZDY0MTJmOS5zZXRDb250ZW50KGh0bWxfN2RkNzUzMDAyNTEyNDRkMWE2Yjk4YTZlNzhjNjdkNzIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjBiMzU3MGUyYTExNDQ4MTk2MGJlZTRjODE1MjVkZmQuYmluZFBvcHVwKHBvcHVwXzhiOTU4MDYzNWYzZTRjMDQ4NmNkNWUyOTBkNjQxMmY5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2YwM2UyOGMyMDA4NzRlNTc4OGIwNjY3OWUwMTg3NjM0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzI1MjYzNzgyMTY1MDMsLTczLjg0NDQ3NTAwNzg4OTgzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdiMDYwZmY0YzA2NjRkZTJiOTM0YTgwMDNhZjNlODAxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q0ZjAwMDI4ZDVlNDQzZTViNjA3NDM0Mjk1NDFhYmE5ID0gJCgnPGRpdiBpZD0iaHRtbF9kNGYwMDAyOGQ1ZTQ0M2U1YjYwNzQzNDI5NTQxYWJhOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Rm9yZXN0IEhpbGxzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83YjA2MGZmNGMwNjY0ZGUyYjkzNGE4MDAzYWYzZTgwMS5zZXRDb250ZW50KGh0bWxfZDRmMDAwMjhkNWU0NDNlNWI2MDc0MzQyOTU0MWFiYTkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZjAzZTI4YzIwMDg3NGU1Nzg4YjA2Njc5ZTAxODc2MzQuYmluZFBvcHVwKHBvcHVwXzdiMDYwZmY0YzA2NjRkZTJiOTM0YTgwMDNhZjNlODAxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU5YjVjY2EwNzI2MjRlYWU5NjA4NmQ5ZGU3NTA4YmRkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzA1MTc5MDM1NDE0OCwtNzMuODI5ODE5MDU4MjU3MDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTdkZmJjZTlkZDQ5NGFkMGE5Y2NmMjExYzdkODFiNmIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjk4NTdhMjA2Y2ZkNDU3ZGI5NGMyZTcxM2YyZDhkOGYgPSAkKCc8ZGl2IGlkPSJodG1sX2I5ODU3YTIwNmNmZDQ1N2RiOTRjMmU3MTNmMmQ4ZDhmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5LZXcgR2FyZGVuczwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTdkZmJjZTlkZDQ5NGFkMGE5Y2NmMjExYzdkODFiNmIuc2V0Q29udGVudChodG1sX2I5ODU3YTIwNmNmZDQ1N2RiOTRjMmU3MTNmMmQ4ZDhmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzU5YjVjY2EwNzI2MjRlYWU5NjA4NmQ5ZGU3NTA4YmRkLmJpbmRQb3B1cChwb3B1cF8xN2RmYmNlOWRkNDk0YWQwYTljY2YyMTFjN2Q4MWI2Yik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82OGZkMjA0OWQzNzI0M2EyOWJjOTE4YjFmODU0MDdmMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY5Nzk0NzMxNDcxNzYzLC03My44MzE4MzMyMTQ0Njg4N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85YTg5ZmViMGY2Mjg0MDNlOGM4YzFhZGY1ZDUyZTlhNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iNTRhYjIwY2U1ZDY0YTcyYjkyYTljZGY1NjM4ZjBmYyA9ICQoJzxkaXYgaWQ9Imh0bWxfYjU0YWIyMGNlNWQ2NGE3MmI5MmE5Y2RmNTYzOGYwZmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJpY2htb25kIEhpbGw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzlhODlmZWIwZjYyODQwM2U4YzhjMWFkZjVkNTJlOWE0LnNldENvbnRlbnQoaHRtbF9iNTRhYjIwY2U1ZDY0YTcyYjkyYTljZGY1NjM4ZjBmYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82OGZkMjA0OWQzNzI0M2EyOWJjOTE4YjFmODU0MDdmMS5iaW5kUG9wdXAocG9wdXBfOWE4OWZlYjBmNjI4NDAzZThjOGMxYWRmNWQ1MmU5YTQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2ZiMDQ2YzM2ZWNjNGI1NGEwZDAyYTE4MWQ2NzdiNDggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43NjQ0NTQxOTY5Nzg0NiwtNzMuODMxNzczMDAzMjk1ODJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmJhODgzMWVmODM3NDZjZjg4YjYxNGRiZWNkNzQ4Y2EgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGRmMWU2ZDNjOTBhNDkyYzkwMTdlNjgxMTJhZWE2ZDUgPSAkKCc8ZGl2IGlkPSJodG1sX2RkZjFlNmQzYzkwYTQ5MmM5MDE3ZTY4MTEyYWVhNmQ1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GbHVzaGluZzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmJhODgzMWVmODM3NDZjZjg4YjYxNGRiZWNkNzQ4Y2Euc2V0Q29udGVudChodG1sX2RkZjFlNmQzYzkwYTQ5MmM5MDE3ZTY4MTEyYWVhNmQ1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzdmYjA0NmMzNmVjYzRiNTRhMGQwMmExODFkNjc3YjQ4LmJpbmRQb3B1cChwb3B1cF82YmE4ODMxZWY4Mzc0NmNmODhiNjE0ZGJlY2Q3NDhjYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lMjdkNmFkYmNjODQ0MjYxYWZlNDkyOGM4MWM2MWE5OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc1MDIxNzM0NjEwNTI4LC03My45MzkyMDIyMzkxNTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lN2ViMzQ3ODJjZGU0ZTlkODFjZGU5YTU5ZDJjMzA0YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mMDEyNzM3OTEyNzA0MTg0OWUxZDFhYjNmNjlkMjA5YiA9ICQoJzxkaXYgaWQ9Imh0bWxfZjAxMjczNzkxMjcwNDE4NDllMWQxYWIzZjY5ZDIwOWIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxvbmcgSXNsYW5kIENpdHk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U3ZWIzNDc4MmNkZTRlOWQ4MWNkZTlhNTlkMmMzMDRhLnNldENvbnRlbnQoaHRtbF9mMDEyNzM3OTEyNzA0MTg0OWUxZDFhYjNmNjlkMjA5Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lMjdkNmFkYmNjODQ0MjYxYWZlNDkyOGM4MWM2MWE5OS5iaW5kUG9wdXAocG9wdXBfZTdlYjM0NzgyY2RlNGU5ZDgxY2RlOWE1OWQyYzMwNGEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDQwNGNiNGFkNzNmNDA5Zjg2ZmMzODhkOTJiMTY5OWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43NDAxNzYyODM1MTkyNCwtNzMuOTI2OTE2MTc1NjE1NzddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjk5MGJlODAxOGZlNGJlZTk2N2Y1MzdkMGM3YjMzZTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzMzM2U2YTFkZjFmNDBmODg3YzU3MzEzODc4Y2UzYTEgPSAkKCc8ZGl2IGlkPSJodG1sX2MzMzNlNmExZGYxZjQwZjg4N2M1NzMxMzg3OGNlM2ExIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TdW5ueXNpZGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI5OTBiZTgwMThmZTRiZWU5NjdmNTM3ZDBjN2IzM2U0LnNldENvbnRlbnQoaHRtbF9jMzMzZTZhMWRmMWY0MGY4ODdjNTczMTM4NzhjZTNhMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kNDA0Y2I0YWQ3M2Y0MDlmODZmYzM4OGQ5MmIxNjk5ZS5iaW5kUG9wdXAocG9wdXBfMjk5MGJlODAxOGZlNGJlZTk2N2Y1MzdkMGM3YjMzZTQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYWJiNzdjNWE5YzQzNGM2MWI2NjUxMTU0M2Y5MWNkZjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43NjQwNzMyMzg4MzA5MSwtNzMuODY3MDQxNDc2NTg3NzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDJkMzMyMDk2OTllNDQ4ODg3YTc1Y2ZlMWI1NTg3MDIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjFiZjc4MGJhNjYxNGZlN2E1YjlhNTJmZGMwYjY0MzEgPSAkKCc8ZGl2IGlkPSJodG1sX2IxYmY3ODBiYTY2MTRmZTdhNWI5YTUyZmRjMGI2NDMxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FYXN0IEVsbWh1cnN0PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80MmQzMzIwOTY5OWU0NDg4ODdhNzVjZmUxYjU1ODcwMi5zZXRDb250ZW50KGh0bWxfYjFiZjc4MGJhNjYxNGZlN2E1YjlhNTJmZGMwYjY0MzEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYWJiNzdjNWE5YzQzNGM2MWI2NjUxMTU0M2Y5MWNkZjkuYmluZFBvcHVwKHBvcHVwXzQyZDMzMjA5Njk5ZTQ0ODg4N2E3NWNmZTFiNTU4NzAyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZmMzE1OGE2Yzg5ODRlNDI4M2VhNmFlZWI1MDk2ZWZiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzI1NDI3Mzc0MDkzNjA2LC03My44OTYyMTcxMzYyNjg1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lODViNWY0YTlhZjc0OTQ0OGQ3NGQ0NDM3ZWNlMzZjNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yNWE1Y2NiOTM5M2U0NTU1YmNlNjUyNWY0NjIxNDNiMCA9ICQoJzxkaXYgaWQ9Imh0bWxfMjVhNWNjYjkzOTNlNDU1NWJjZTY1MjVmNDYyMTQzYjAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1hc3BldGg8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U4NWI1ZjRhOWFmNzQ5NDQ4ZDc0ZDQ0MzdlY2UzNmM1LnNldENvbnRlbnQoaHRtbF8yNWE1Y2NiOTM5M2U0NTU1YmNlNjUyNWY0NjIxNDNiMCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mZjMxNThhNmM4OTg0ZTQyODNlYTZhZWViNTA5NmVmYi5iaW5kUG9wdXAocG9wdXBfZTg1YjVmNGE5YWY3NDk0NDhkNzRkNDQzN2VjZTM2YzUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2YzMjBmMDBhYjkxNDRlNjk0NzQzNThkMzg5YjRiY2QgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MDgzMjMxNTYxMzg1OCwtNzMuOTAxNDM1MTc1NTk1ODldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjdkNTJmZTU2NGUxNDY0OTk1NDdkM2VhMmRlMjZmMjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2RlNTFkZTVjY2NlNDFkN2I5MWZmMTZkYjAxOWNjMmUgPSAkKCc8ZGl2IGlkPSJodG1sX2NkZTUxZGU1Y2NjZTQxZDdiOTFmZjE2ZGIwMTljYzJlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5SaWRnZXdvb2Q8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2I3ZDUyZmU1NjRlMTQ2NDk5NTQ3ZDNlYTJkZTI2ZjI3LnNldENvbnRlbnQoaHRtbF9jZGU1MWRlNWNjY2U0MWQ3YjkxZmYxNmRiMDE5Y2MyZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zZjMyMGYwMGFiOTE0NGU2OTQ3NDM1OGQzODliNGJjZC5iaW5kUG9wdXAocG9wdXBfYjdkNTJmZTU2NGUxNDY0OTk1NDdkM2VhMmRlMjZmMjcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGYxODcxYTNhOWIwNDdmNDlkOTMxNjE1ZjEwYmJjNmIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MDI3NjI0Mjk2NzgzOCwtNzMuODcwNzQxNjc0MzU2MDVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGMyZGU3OWFhODQ4NDg5Mjg5OGJiM2ZiNDY5ZDU0MDYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2I2ODZhYjE5OTFlNGM0YmJmYTA4ZWU1YmE2MzRkNzUgPSAkKCc8ZGl2IGlkPSJodG1sXzNiNjg2YWIxOTkxZTRjNGJiZmEwOGVlNWJhNjM0ZDc1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5HbGVuZGFsZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGMyZGU3OWFhODQ4NDg5Mjg5OGJiM2ZiNDY5ZDU0MDYuc2V0Q29udGVudChodG1sXzNiNjg2YWIxOTkxZTRjNGJiZmEwOGVlNWJhNjM0ZDc1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2RmMTg3MWEzYTliMDQ3ZjQ5ZDkzMTYxNWYxMGJiYzZiLmJpbmRQb3B1cChwb3B1cF9kYzJkZTc5YWE4NDg0ODkyODk4YmIzZmI0NjlkNTQwNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83YWM2Y2JjMjAzMzQ0ZTFjYmYzZGNlZmRmMDE3OWIzYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjcyODk3NDA5NDgwNzM1LC03My44NTc4MjY4NjkwNTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM0NTA1YzFiZTg0OTQ5MzM4ZTllZjAxODc1YzhmYzcwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQyYzVlYTViYzg1NTQ4OWZhODc2MjU1MjE1YzIzOThhID0gJCgnPGRpdiBpZD0iaHRtbF80MmM1ZWE1YmM4NTU0ODlmYTg3NjI1NTIxNWMyMzk4YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UmVnbyBQYXJrPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zNDUwNWMxYmU4NDk0OTMzOGU5ZWYwMTg3NWM4ZmM3MC5zZXRDb250ZW50KGh0bWxfNDJjNWVhNWJjODU1NDg5ZmE4NzYyNTUyMTVjMjM5OGEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfN2FjNmNiYzIwMzM0NGUxY2JmM2RjZWZkZjAxNzliM2IuYmluZFBvcHVwKHBvcHVwXzM0NTA1YzFiZTg0OTQ5MzM4ZTllZjAxODc1YzhmYzcwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U3OTIwMDA4NTg5ZjQ2OTE5MWE5OTBkYTQ4OGQ0MTBkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjg5ODg2ODc5MTU3ODksLTczLjg1ODExMDQ2NTU0MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGVkZWFmYzE5Yjk0NDU0Mjg4OTYyNzc2MDcxMjE3YmQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTRjOGEwYTg5ZTVhNGMwOWE0ODA1MDgzZTE0NTE0MTYgPSAkKCc8ZGl2IGlkPSJodG1sXzk0YzhhMGE4OWU1YTRjMDlhNDgwNTA4M2UxNDUxNDE2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Xb29kaGF2ZW48L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBlZGVhZmMxOWI5NDQ1NDI4ODk2Mjc3NjA3MTIxN2JkLnNldENvbnRlbnQoaHRtbF85NGM4YTBhODllNWE0YzA5YTQ4MDUwODNlMTQ1MTQxNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lNzkyMDAwODU4OWY0NjkxOTFhOTkwZGE0ODhkNDEwZC5iaW5kUG9wdXAocG9wdXBfMGVkZWFmYzE5Yjk0NDU0Mjg4OTYyNzc2MDcxMjE3YmQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDAwMTI1OTViM2Q5NGQ5YzkzY2IyMWUwZTFkMGYyMzkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42ODA3MDg0NjgyNjU0MTUsLTczLjg0MzIwMjY2MTczNDQ3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZkZjMzY2U5YmQ3ZDQzMGJiYjJlN2YxNDdlZjBkYTlmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzY5ZTZkNDgxN2ExNzRmZmRiYTJjYzZmYTMyZGI2ZDdiID0gJCgnPGRpdiBpZD0iaHRtbF82OWU2ZDQ4MTdhMTc0ZmZkYmEyY2M2ZmEzMmRiNmQ3YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T3pvbmUgUGFyazwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmRmMzNjZTliZDdkNDMwYmJiMmU3ZjE0N2VmMGRhOWYuc2V0Q29udGVudChodG1sXzY5ZTZkNDgxN2ExNzRmZmRiYTJjYzZmYTMyZGI2ZDdiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzQwMDEyNTk1YjNkOTRkOWM5M2NiMjFlMGUxZDBmMjM5LmJpbmRQb3B1cChwb3B1cF82ZGYzM2NlOWJkN2Q0MzBiYmIyZTdmMTQ3ZWYwZGE5Zik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hYTQ3NmZlYWM2YmI0YjNmODczYTE1ZmE5M2ZhNzZkYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY2ODU0OTU3NzY3MTk1LC03My44MDk4NjQ3ODY0OTA0MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yZThkNjAxMDVlOTA0MzQyYjQwODhjMWQ0NTA4N2U5NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hM2YyNDk0MGFhYjU0ZjAxYmU4ZDYyNzU1YjM3YmIxNyA9ICQoJzxkaXYgaWQ9Imh0bWxfYTNmMjQ5NDBhYWI1NGYwMWJlOGQ2Mjc1NWIzN2JiMTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNvdXRoIE96b25lIFBhcms8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzJlOGQ2MDEwNWU5MDQzNDJiNDA4OGMxZDQ1MDg3ZTk0LnNldENvbnRlbnQoaHRtbF9hM2YyNDk0MGFhYjU0ZjAxYmU4ZDYyNzU1YjM3YmIxNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hYTQ3NmZlYWM2YmI0YjNmODczYTE1ZmE5M2ZhNzZkYS5iaW5kUG9wdXAocG9wdXBfMmU4ZDYwMTA1ZTkwNDM0MmI0MDg4YzFkNDUwODdlOTQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmY5MmZmNDFiNzcwNDQ2M2IxNWJkZmE0YjlkM2FjZjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43ODQ5MDI3NDkyNjAyMDUsLTczLjg0MzA0NTI4ODk2MTI1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzczZjI4NmQwNjY1YTRlOTU4ZjQ1OTIyYmU2MDQ0ODI4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJlNWQ4NDk2ZjViMjQ5OWE4NGNhYWQxNzk3MDcyNWNmID0gJCgnPGRpdiBpZD0iaHRtbF8yZTVkODQ5NmY1YjI0OTlhODRjYWFkMTc5NzA3MjVjZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q29sbGVnZSBQb2ludDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzNmMjg2ZDA2NjVhNGU5NThmNDU5MjJiZTYwNDQ4Mjguc2V0Q29udGVudChodG1sXzJlNWQ4NDk2ZjViMjQ5OWE4NGNhYWQxNzk3MDcyNWNmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2ZmOTJmZjQxYjc3MDQ0NjNiMTViZGZhNGI5ZDNhY2Y4LmJpbmRQb3B1cChwb3B1cF83M2YyODZkMDY2NWE0ZTk1OGY0NTkyMmJlNjA0NDgyOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mNWU3N2JlN2Q0N2Y0ODEwYTRhZGE3NjQ1MTM2YWRmMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc4MTI5MDc2NjAyNjk0LC03My44MTQyMDIxNjYxMDg2M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82NGJhZjE0ZGRiYWU0NzU4ODQ3MmI1YmQ4MDAwZWNlMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iM2MzOGFhOWRiYjA0NDU0OWEzZThkZTY3OWNiMzMzYiA9ICQoJzxkaXYgaWQ9Imh0bWxfYjNjMzhhYTlkYmIwNDQ1NDlhM2U4ZGU2NzljYjMzM2IiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldoaXRlc3RvbmU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY0YmFmMTRkZGJhZTQ3NTg4NDcyYjViZDgwMDBlY2UwLnNldENvbnRlbnQoaHRtbF9iM2MzOGFhOWRiYjA0NDU0OWEzZThkZTY3OWNiMzMzYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mNWU3N2JlN2Q0N2Y0ODEwYTRhZGE3NjQ1MTM2YWRmMS5iaW5kUG9wdXAocG9wdXBfNjRiYWYxNGRkYmFlNDc1ODg0NzJiNWJkODAwMGVjZTApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGU0Mjk5ZGQwNTBlNDk2ZmE1ZThiZjYxZTVkZTY4NGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43NjYwNDA2MzI4MTA2NCwtNzMuNzc0MjczNjMwNjg2N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83ZTg4ODI5MTk5OTY0MGExODBkM2QzYjI2NzljMGFhZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80NjhhZDMzYjRlODM0N2Q4YjE0MTAyMGI3NDcxMDFmMSA9ICQoJzxkaXYgaWQ9Imh0bWxfNDY4YWQzM2I0ZTgzNDdkOGIxNDEwMjBiNzQ3MTAxZjEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJheXNpZGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdlODg4MjkxOTk5NjQwYTE4MGQzZDNiMjY3OWMwYWFkLnNldENvbnRlbnQoaHRtbF80NjhhZDMzYjRlODM0N2Q4YjE0MTAyMGI3NDcxMDFmMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wZTQyOTlkZDA1MGU0OTZmYTVlOGJmNjFlNWRlNjg0Zi5iaW5kUG9wdXAocG9wdXBfN2U4ODgyOTE5OTk2NDBhMTgwZDNkM2IyNjc5YzBhYWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWNiNDVhMDZkNDE1NDMwODk5MTcxMjc2YmYzOTFiOWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43NjE3Mjk1NDkwMzI2MiwtNzMuNzkxNzYyNDM3MjgwNjFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2Q3YjJkNDllYzQyNGQwNmJiZTVjYmFhZjJiZDJiMTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDc5Yjk2YTRjZjk5NGZhNDg1ODYzZjUyMWE4ZDNlODcgPSAkKCc8ZGl2IGlkPSJodG1sX2Q3OWI5NmE0Y2Y5OTRmYTQ4NTg2M2Y1MjFhOGQzZTg3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BdWJ1cm5kYWxlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83ZDdiMmQ0OWVjNDI0ZDA2YmJlNWNiYWFmMmJkMmIxNC5zZXRDb250ZW50KGh0bWxfZDc5Yjk2YTRjZjk5NGZhNDg1ODYzZjUyMWE4ZDNlODcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNWNiNDVhMDZkNDE1NDMwODk5MTcxMjc2YmYzOTFiOWIuYmluZFBvcHVwKHBvcHVwXzdkN2IyZDQ5ZWM0MjRkMDZiYmU1Y2JhYWYyYmQyYjE0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzc3MWE2ODhhOTcxYTQ3YTg5MDYxNWY3NGFjYTNmNzZiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzcwODI2MTkyODI2NywtNzMuNzM4ODk3NzU1ODA3NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85MTIwODBmMTg4ZTI0YjVhOTJhZTcyNTA2NmM2YjYwZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wN2JjZThiOGI0MGI0YjJhODQ4ZmZlYmUzM2M1MGE1MSA9ICQoJzxkaXYgaWQ9Imh0bWxfMDdiY2U4YjhiNDBiNGIyYTg0OGZmZWJlMzNjNTBhNTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxpdHRsZSBOZWNrPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85MTIwODBmMTg4ZTI0YjVhOTJhZTcyNTA2NmM2YjYwZi5zZXRDb250ZW50KGh0bWxfMDdiY2U4YjhiNDBiNGIyYTg0OGZmZWJlMzNjNTBhNTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNzcxYTY4OGE5NzFhNDdhODkwNjE1Zjc0YWNhM2Y3NmIuYmluZFBvcHVwKHBvcHVwXzkxMjA4MGYxODhlMjRiNWE5MmFlNzI1MDY2YzZiNjBmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzlkMTZjODMwM2U2NzQ5OWJiNTBkZmExMDQ1YjI1ODkxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzY2ODQ2MDk3OTA3NjMsLTczLjc0MjQ5ODIwNzI3MzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzk5NjljODViNjFjNGQyMTg1MWY0NWQ0OTA2MzI5ZjYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODcyYTAwNjliZDQ0NGI1ZTk0ZjRkYmZkNTllM2VlNTUgPSAkKCc8ZGl2IGlkPSJodG1sXzg3MmEwMDY5YmQ0NDRiNWU5NGY0ZGJmZDU5ZTNlZTU1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Eb3VnbGFzdG9uPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jOTk2OWM4NWI2MWM0ZDIxODUxZjQ1ZDQ5MDYzMjlmNi5zZXRDb250ZW50KGh0bWxfODcyYTAwNjliZDQ0NGI1ZTk0ZjRkYmZkNTllM2VlNTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOWQxNmM4MzAzZTY3NDk5YmI1MGRmYTEwNDViMjU4OTEuYmluZFBvcHVwKHBvcHVwX2M5OTY5Yzg1YjYxYzRkMjE4NTFmNDVkNDkwNjMyOWY2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2YxOGY1YjkwMmY3YTRiOGJhNTRmNjNiMGMxZGI1NzNlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzQ5NDQwNzk5NzQzMzIsLTczLjcxNTQ4MTE4OTk5MTQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2E3NGEwOGNmNmJiNTRhMzBiMDcyYWQ4NmVlOTljZDA4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzMzNmI0MWZhZTA2YzQwZjE4OTlhOTY1YWM0MmQ0ODQxID0gJCgnPGRpdiBpZD0iaHRtbF8zMzZiNDFmYWUwNmM0MGYxODk5YTk2NWFjNDJkNDg0MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+R2xlbiBPYWtzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hNzRhMDhjZjZiYjU0YTMwYjA3MmFkODZlZTk5Y2QwOC5zZXRDb250ZW50KGh0bWxfMzM2YjQxZmFlMDZjNDBmMTg5OWE5NjVhYzQyZDQ4NDEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZjE4ZjViOTAyZjdhNGI4YmE1NGY2M2IwYzFkYjU3M2UuYmluZFBvcHVwKHBvcHVwX2E3NGEwOGNmNmJiNTRhMzBiMDcyYWQ4NmVlOTljZDA4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVhZjM5N2RmYzVlNjRjZTM4YzI1MDI5MGI2OGYwNWRkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzI4NTczMTgxNzY2NzUsLTczLjcyMDEyODE0ODI2OTAzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2QwZjllZTM5MGY3NDQxYTU5MTZlMzlmOTUzNDA0NTAyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzlkZmQ0YzZkNTBmNTQ2MDE5ZTE5YTk5MmIwMGRiMTk3ID0gJCgnPGRpdiBpZD0iaHRtbF85ZGZkNGM2ZDUwZjU0NjAxOWUxOWE5OTJiMDBkYjE5NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QmVsbGVyb3NlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kMGY5ZWUzOTBmNzQ0MWE1OTE2ZTM5Zjk1MzQwNDUwMi5zZXRDb250ZW50KGh0bWxfOWRmZDRjNmQ1MGY1NDYwMTllMTlhOTkyYjAwZGIxOTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNWFmMzk3ZGZjNWU2NGNlMzhjMjUwMjkwYjY4ZjA1ZGQuYmluZFBvcHVwKHBvcHVwX2QwZjllZTM5MGY3NDQxYTU5MTZlMzlmOTUzNDA0NTAyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNlZTdiNGQwOGU5MDRkOTc5OTExYzMzOGJhZDk0ZmM4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzIyNTc4MjQ0MjI4MDQ2LC03My44MjA4Nzc2NDkzMzU2Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iNzVmYjFiNTZkZjQ0ZmEyYjAyYTUzZDQ3ZWIzMDQ0OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yMjczOTI0MThlYTU0Zjk0OWJlYjY4YjcwZTI2NWJhOSA9ICQoJzxkaXYgaWQ9Imh0bWxfMjI3MzkyNDE4ZWE1NGY5NDliZWI2OGI3MGUyNjViYTkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPktldyBHYXJkZW5zIEhpbGxzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iNzVmYjFiNTZkZjQ0ZmEyYjAyYTUzZDQ3ZWIzMDQ0OC5zZXRDb250ZW50KGh0bWxfMjI3MzkyNDE4ZWE1NGY5NDliZWI2OGI3MGUyNjViYTkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfM2VlN2I0ZDA4ZTkwNGQ5Nzk5MTFjMzM4YmFkOTRmYzguYmluZFBvcHVwKHBvcHVwX2I3NWZiMWI1NmRmNDRmYTJiMDJhNTNkNDdlYjMwNDQ4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2UyMDVhZTJlNjNiNTQyNzFiOWVkYWY1OWNiMzJlMDQxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzM0Mzk0NDY1MzMxMywtNzMuNzgyNzEzMzcwMDMyNjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTMxYmE5YWU1NDAxNDEyMGI0YmIxYmQ2MzQ3NGZjY2YgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjJlYmE4MWIyNGFkNGNhOTgwMTFjMDc1Y2U1YjAyYjkgPSAkKCc8ZGl2IGlkPSJodG1sXzIyZWJhODFiMjRhZDRjYTk4MDExYzA3NWNlNWIwMmI5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GcmVzaCBNZWFkb3dzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lMzFiYTlhZTU0MDE0MTIwYjRiYjFiZDYzNDc0ZmNjZi5zZXRDb250ZW50KGh0bWxfMjJlYmE4MWIyNGFkNGNhOTgwMTFjMDc1Y2U1YjAyYjkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTIwNWFlMmU2M2I1NDI3MWI5ZWRhZjU5Y2IzMmUwNDEuYmluZFBvcHVwKHBvcHVwX2UzMWJhOWFlNTQwMTQxMjBiNGJiMWJkNjM0NzRmY2NmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q2ZGFiNmYxYmJjNjRmM2JhYzcxMGI5N2YxOTkzMTczID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzEwOTM1NDcyNTIyNzEsLTczLjgxMTc0ODIyNDU4NjM0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM5MGVkZTMzNmVhNjQ3N2U4ZjAwODRhZGQ4MTRjNWM2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2NjOTM0M2ExODcyYTRjMTBiOTVjN2E3MjZhZDUwZDlmID0gJCgnPGRpdiBpZD0iaHRtbF9jYzkzNDNhMTg3MmE0YzEwYjk1YzdhNzI2YWQ1MGQ5ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QnJpYXJ3b29kPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zOTBlZGUzMzZlYTY0NzdlOGYwMDg0YWRkODE0YzVjNi5zZXRDb250ZW50KGh0bWxfY2M5MzQzYTE4NzJhNGMxMGI5NWM3YTcyNmFkNTBkOWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDZkYWI2ZjFiYmM2NGYzYmFjNzEwYjk3ZjE5OTMxNzMuYmluZFBvcHVwKHBvcHVwXzM5MGVkZTMzNmVhNjQ3N2U4ZjAwODRhZGQ4MTRjNWM2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk2MmFhN2YxNjk2MzQzZjhiYjAzNDllNTdkMWZlOTFmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzA0NjU3MzYwNjg3MTcsLTczLjc5NjkwMTY1ODg4Mjg5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2QyMzRhMGU2ZTUyODRkNTg4YjdjMjVlOTNlMmQwZmExID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzdhZTdkZDE3NDNlMzRjOWY5MzA0Y2EzZmMzODgxYWNlID0gJCgnPGRpdiBpZD0iaHRtbF83YWU3ZGQxNzQzZTM0YzlmOTMwNGNhM2ZjMzg4MWFjZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SmFtYWljYSBDZW50ZXI8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2QyMzRhMGU2ZTUyODRkNTg4YjdjMjVlOTNlMmQwZmExLnNldENvbnRlbnQoaHRtbF83YWU3ZGQxNzQzZTM0YzlmOTMwNGNhM2ZjMzg4MWFjZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85NjJhYTdmMTY5NjM0M2Y4YmIwMzQ5ZTU3ZDFmZTkxZi5iaW5kUG9wdXAocG9wdXBfZDIzNGEwZTZlNTI4NGQ1ODhiN2MyNWU5M2UyZDBmYTEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGIxOTYyMDlmZDhkNGQwNzkzMjM1NDQ1NWMyOTE1Y2YgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43NDU2MTg1NzE0MTg1NSwtNzMuNzU0OTQ5NzYyMzQzMzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWIyYmZkYjgwMmY4NDJjNWFhMTZjOTdmNzY2NmJjYWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjFiYTZjYzgyMWI3NDA5MWJmMTllYTAyZTQxYjNjMTEgPSAkKCc8ZGl2IGlkPSJodG1sXzYxYmE2Y2M4MjFiNzQwOTFiZjE5ZWEwMmU0MWIzYzExIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PYWtsYW5kIEdhcmRlbnM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzliMmJmZGI4MDJmODQyYzVhYTE2Yzk3Zjc2NjZiY2FkLnNldENvbnRlbnQoaHRtbF82MWJhNmNjODIxYjc0MDkxYmYxOWVhMDJlNDFiM2MxMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wYjE5NjIwOWZkOGQ0ZDA3OTMyMzU0NDU1YzI5MTVjZi5iaW5kUG9wdXAocG9wdXBfOWIyYmZkYjgwMmY4NDJjNWFhMTZjOTdmNzY2NmJjYWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWExZmIwZjZhZWFmNGQ4NGI3NjYxOTJkNzc4YzMwOTMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MTg4OTMwOTIxNjczNTYsLTczLjczODcxNDg0NTc4NDI0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2E4ZWFhNTY1OWMyMzQwZjE4MTY2ZjhkMjk2ZjM0ZWJjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q2ZDI4MWY4ZWQ1MTQzMDg4OTYwODg5MTBkNjdjOTlmID0gJCgnPGRpdiBpZD0iaHRtbF9kNmQyODFmOGVkNTE0MzA4ODk2MDg4OTEwZDY3Yzk5ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UXVlZW5zIFZpbGxhZ2U8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E4ZWFhNTY1OWMyMzQwZjE4MTY2ZjhkMjk2ZjM0ZWJjLnNldENvbnRlbnQoaHRtbF9kNmQyODFmOGVkNTE0MzA4ODk2MDg4OTEwZDY3Yzk5Zik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81YTFmYjBmNmFlYWY0ZDg0Yjc2NjE5MmQ3NzhjMzA5My5iaW5kUG9wdXAocG9wdXBfYThlYWE1NjU5YzIzNDBmMTgxNjZmOGQyOTZmMzRlYmMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjgxNGM5YzFhZTcwNGM0YWIwMmMwZWQ0MzIxMDVkM2MgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MTEyNDM0NDE5MTkwNCwtNzMuNzU5MjUwMDkzMzU1OTRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWEyOTRlYmNhYzZlNDE1NzllMzQxMjJmODU5ZmI3MzggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDg5NmNkMWRjODE4NDE3YmE5OTcxMjhiMGMyNmNhMzEgPSAkKCc8ZGl2IGlkPSJodG1sXzA4OTZjZDFkYzgxODQxN2JhOTk3MTI4YjBjMjZjYTMxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Ib2xsaXM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFhMjk0ZWJjYWM2ZTQxNTc5ZTM0MTIyZjg1OWZiNzM4LnNldENvbnRlbnQoaHRtbF8wODk2Y2QxZGM4MTg0MTdiYTk5NzEyOGIwYzI2Y2EzMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yODE0YzljMWFlNzA0YzRhYjAyYzBlZDQzMjEwNWQzYy5iaW5kUG9wdXAocG9wdXBfMWEyOTRlYmNhYzZlNDE1NzllMzQxMjJmODU5ZmI3MzgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDcxOTcwODI2ZGQ4NGY4YTg3ZTY2ZjNhZTA2YWI0OTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42OTY5MTEyNTM3ODk4ODUsLTczLjc5MDQyNjEzMTM1NTRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODc4OTQ4Yzg4NGVhNDA5YmE3OGZiMDgzMDVjOTRmYWMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWJiNDNkMTExZTIwNDRmMGFmZWZkNTI2Y2NjMTY5YjEgPSAkKCc8ZGl2IGlkPSJodG1sXzliYjQzZDExMWUyMDQ0ZjBhZmVmZDUyNmNjYzE2OWIxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Tb3V0aCBKYW1haWNhPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84Nzg5NDhjODg0ZWE0MDliYTc4ZmIwODMwNWM5NGZhYy5zZXRDb250ZW50KGh0bWxfOWJiNDNkMTExZTIwNDRmMGFmZWZkNTI2Y2NjMTY5YjEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDcxOTcwODI2ZGQ4NGY4YTg3ZTY2ZjNhZTA2YWI0OTguYmluZFBvcHVwKHBvcHVwXzg3ODk0OGM4ODRlYTQwOWJhNzhmYjA4MzA1Yzk0ZmFjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ViZGZjMDMyMjI5YTQ2MjM5OGMzMTE3ZTc3NTVkMGFkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjk0NDQ1Mzg1MjIzNTksLTczLjc1ODY3NjAzNzI3NzE3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA1NGRiOTM3ODdhZDRkNzhiNmNjYjJlYWJiMGNhZWQ2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzRlMDc0NWZhZTdmNjQwYWZhNWQ3NzkyMWVhYWFhM2RjID0gJCgnPGRpdiBpZD0iaHRtbF80ZTA3NDVmYWU3ZjY0MGFmYTVkNzc5MjFlYWFhYTNkYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U3QuIEFsYmFuczwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDU0ZGI5Mzc4N2FkNGQ3OGI2Y2NiMmVhYmIwY2FlZDYuc2V0Q29udGVudChodG1sXzRlMDc0NWZhZTdmNjQwYWZhNWQ3NzkyMWVhYWFhM2RjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2ViZGZjMDMyMjI5YTQ2MjM5OGMzMTE3ZTc3NTVkMGFkLmJpbmRQb3B1cChwb3B1cF8wNTRkYjkzNzg3YWQ0ZDc4YjZjY2IyZWFiYjBjYWVkNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hM2UwZDYyYzdiMTQ0MTVmODNkZjAyMTIxZWE4NTRiYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY3NTIxMTM5NTkxNzMzLC03My43NzI1ODc4NzYyMDkwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82ZjhjNmI4MTcwYWE0N2Y3OTE2NTcyNmYzYWRkOGYxOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85YmE5OTEzYmZhMmI0NTMzOTI5MmM1ZmQ3NzI2MWZiMyA9ICQoJzxkaXYgaWQ9Imh0bWxfOWJhOTkxM2JmYTJiNDUzMzkyOTJjNWZkNzcyNjFmYjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJvY2hkYWxlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82ZjhjNmI4MTcwYWE0N2Y3OTE2NTcyNmYzYWRkOGYxOC5zZXRDb250ZW50KGh0bWxfOWJhOTkxM2JmYTJiNDUzMzkyOTJjNWZkNzcyNjFmYjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYTNlMGQ2MmM3YjE0NDE1ZjgzZGYwMjEyMWVhODU0YmEuYmluZFBvcHVwKHBvcHVwXzZmOGM2YjgxNzBhYTQ3Zjc5MTY1NzI2ZjNhZGQ4ZjE4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY4MTBkNmUxYzBhMDQ4NjdiZWM3NDhhNzI4ODQ5MzU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjY2MjMwNDkwMzY4NTg0LC03My43NjA0MjA5MjY4MjI4N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84ZTYzNmQ3YzgyY2M0NDE2YmIzOTAyMTUwMDZiZWIyNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jYjYwNTdhOGI2Mzg0NTY2YTZkMjczZjM5OGVlMDlmYSA9ICQoJzxkaXYgaWQ9Imh0bWxfY2I2MDU3YThiNjM4NDU2NmE2ZDI3M2YzOThlZTA5ZmEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNwcmluZ2ZpZWxkIEdhcmRlbnM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhlNjM2ZDdjODJjYzQ0MTZiYjM5MDIxNTAwNmJlYjI0LnNldENvbnRlbnQoaHRtbF9jYjYwNTdhOGI2Mzg0NTY2YTZkMjczZjM5OGVlMDlmYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82ODEwZDZlMWMwYTA0ODY3YmVjNzQ4YTcyODg0OTM1NS5iaW5kUG9wdXAocG9wdXBfOGU2MzZkN2M4MmNjNDQxNmJiMzkwMjE1MDA2YmViMjQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTg3YzZkMWJhMTE0NDlkM2FjMDM3ZTMyZDM0YmFhY2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42OTI3NzQ2MzkxNjA4NDUsLTczLjczNTI2ODczNzA4MDI2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2MxMjJjY2YxODRiNTQ4MzY4ZDViYjI5OTdmOGFmZTJkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y4MTc3YmM0ZTlkODQwYjk5N2Y3ZDM2Nzk2YzMwYzU5ID0gJCgnPGRpdiBpZD0iaHRtbF9mODE3N2JjNGU5ZDg0MGI5OTdmN2QzNjc5NmMzMGM1OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q2FtYnJpYSBIZWlnaHRzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jMTIyY2NmMTg0YjU0ODM2OGQ1YmIyOTk3ZjhhZmUyZC5zZXRDb250ZW50KGh0bWxfZjgxNzdiYzRlOWQ4NDBiOTk3ZjdkMzY3OTZjMzBjNTkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTg3YzZkMWJhMTE0NDlkM2FjMDM3ZTMyZDM0YmFhY2UuYmluZFBvcHVwKHBvcHVwX2MxMjJjY2YxODRiNTQ4MzY4ZDViYjI5OTdmOGFmZTJkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FkOGJjZGFiMjNiMzQ3MTdiMzI5YjAzODVkMjhkMTBlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjU5ODE2NDMzNDI4MDg0LC03My43MzUyNjA3OTQyODI3OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xNzE5YzBlYzlhYmI0NTg2OThiNzliNjg3MTQ1YjhmZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wODU2MThiZDUxNDg0NDc2YjNhNGQzZGQ3YmE4YjI3NCA9ICQoJzxkaXYgaWQ9Imh0bWxfMDg1NjE4YmQ1MTQ4NDQ3NmIzYTRkM2RkN2JhOGIyNzQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJvc2VkYWxlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xNzE5YzBlYzlhYmI0NTg2OThiNzliNjg3MTQ1YjhmZS5zZXRDb250ZW50KGh0bWxfMDg1NjE4YmQ1MTQ4NDQ3NmIzYTRkM2RkN2JhOGIyNzQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYWQ4YmNkYWIyM2IzNDcxN2IzMjliMDM4NWQyOGQxMGUuYmluZFBvcHVwKHBvcHVwXzE3MTljMGVjOWFiYjQ1ODY5OGI3OWI2ODcxNDViOGZlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2YyNTQ4MjNmMGJkNTRlYzFiYWE5ZGZmZWJhMDcxMmRkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjAzMTM0NDMyNTAwODk0LC03My43NTQ5Nzk2ODA0Mzg3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wZjk5OWU3NmFmZTg0MjliODU0NjE1NWNkZGExMTBhZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85ZTIyZmNhNTA2ZTI0YmJkYWM5NDExNDJhYTg3MDEwMSA9ICQoJzxkaXYgaWQ9Imh0bWxfOWUyMmZjYTUwNmUyNGJiZGFjOTQxMTQyYWE4NzAxMDEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZhciBSb2NrYXdheTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGY5OTllNzZhZmU4NDI5Yjg1NDYxNTVjZGRhMTEwYWYuc2V0Q29udGVudChodG1sXzllMjJmY2E1MDZlMjRiYmRhYzk0MTE0MmFhODcwMTAxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2YyNTQ4MjNmMGJkNTRlYzFiYWE5ZGZmZWJhMDcxMmRkLmJpbmRQb3B1cChwb3B1cF8wZjk5OWU3NmFmZTg0MjliODU0NjE1NWNkZGExMTBhZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81OWIzNTIyMGRjOWY0YzVmOGZjMGZkYzBhMDNiMDkwNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjYwMzAyNjU4MzUxMjM4LC03My44MjAwNTQ4OTExMDMyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzE0ODUwYmIxZjdjNjQ4MTVhZjdmM2I5YjE1OTJlYjI4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RhMDc0NTc3YmVlYTQ4MTZhNDlkOTVhODM4OGQ2MGE1ID0gJCgnPGRpdiBpZD0iaHRtbF9kYTA3NDU3N2JlZWE0ODE2YTQ5ZDk1YTgzODhkNjBhNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QnJvYWQgQ2hhbm5lbDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTQ4NTBiYjFmN2M2NDgxNWFmN2YzYjliMTU5MmViMjguc2V0Q29udGVudChodG1sX2RhMDc0NTc3YmVlYTQ4MTZhNDlkOTVhODM4OGQ2MGE1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzU5YjM1MjIwZGM5ZjRjNWY4ZmMwZmRjMGEwM2IwOTA0LmJpbmRQb3B1cChwb3B1cF8xNDg1MGJiMWY3YzY0ODE1YWY3ZjNiOWIxNTkyZWIyOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81MTY3NjU4ZWRlZTA0NjY4Yjc4MzhmMzZjNmQ0MTcwNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU1NzQwMTI4ODQ1NDUyLC03My45MjU1MTE5Njk5NDE2OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mYjhmMTMwYTE2ODk0YTljYTU1OWRmMGJkNWI5YmI3ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iMjNlMDc0OTRiZTc0NDk3OTUyYmJmY2YzN2U1ODRlZCA9ICQoJzxkaXYgaWQ9Imh0bWxfYjIzZTA3NDk0YmU3NDQ5Nzk1MmJiZmNmMzdlNTg0ZWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJyZWV6eSBQb2ludDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZmI4ZjEzMGExNjg5NGE5Y2E1NTlkZjBiZDViOWJiN2Uuc2V0Q29udGVudChodG1sX2IyM2UwNzQ5NGJlNzQ0OTc5NTJiYmZjZjM3ZTU4NGVkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzUxNjc2NThlZGVlMDQ2NjhiNzgzOGYzNmM2ZDQxNzA0LmJpbmRQb3B1cChwb3B1cF9mYjhmMTMwYTE2ODk0YTljYTU1OWRmMGJkNWI5YmI3ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82ZDdlYzk0MDFjOTU0NGFiODFlZDZkMDI4YTllMmJlMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc3NTkyMzAxNTY0Mjg5NiwtNzMuOTAyMjg5NjAzOTE2NzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNWU2YTVmMmU1NWIwNGQ2ZWE3NDE0ZmI2Mzk1MGQ3ZTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjJkZDM4YjY1MzExNDRiODg3YThkZGM5NzI2Mjg0ZDYgPSAkKCc8ZGl2IGlkPSJodG1sX2IyZGQzOGI2NTMxMTQ0Yjg4N2E4ZGRjOTcyNjI4NGQ2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TdGVpbndheTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNWU2YTVmMmU1NWIwNGQ2ZWE3NDE0ZmI2Mzk1MGQ3ZTUuc2V0Q29udGVudChodG1sX2IyZGQzOGI2NTMxMTQ0Yjg4N2E4ZGRjOTcyNjI4NGQ2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzZkN2VjOTQwMWM5NTQ0YWI4MWVkNmQwMjhhOWUyYmUzLmJpbmRQb3B1cChwb3B1cF81ZTZhNWYyZTU1YjA0ZDZlYTc0MTRmYjYzOTUwZDdlNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hMDczN2ExMTBhNmM0NGZkOGRjMjQ2MmUyMDkwNjc1YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc5Mjc4MTQwMzYwMDQ4LC03My44MDQzNjQ1MTcyMDk4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xYTE2MjU0ZWU5ZjI0ZTY1ODE4OTVkN2M1YWIxMTM2NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iMjlhZjYxOTdlNTk0OWQ5YTcxYTQxMDQ5YTc5YTMyYiA9ICQoJzxkaXYgaWQ9Imh0bWxfYjI5YWY2MTk3ZTU5NDlkOWE3MWE0MTA0OWE3OWEzMmIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJlZWNoaHVyc3Q8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFhMTYyNTRlZTlmMjRlNjU4MTg5NWQ3YzVhYjExMzY1LnNldENvbnRlbnQoaHRtbF9iMjlhZjYxOTdlNTk0OWQ5YTcxYTQxMDQ5YTc5YTMyYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hMDczN2ExMTBhNmM0NGZkOGRjMjQ2MmUyMDkwNjc1Yy5iaW5kUG9wdXAocG9wdXBfMWExNjI1NGVlOWYyNGU2NTgxODk1ZDdjNWFiMTEzNjUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWJhZWRjYzRmZmYzNDRmYjk1MWY4NzMyODFjZmRhNTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43ODI4NDI4MDYyNDU1NTQsLTczLjc3NjgwMjIyNjIxNThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWUwYTNlYzJiZWE1NDQ0ODg0ZDZmMjM0ZmRmODJlOGMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzdhOTAzNDNlYmQ3NGY3MzgxZDQ4NzA5MjEyYzFlZjkgPSAkKCc8ZGl2IGlkPSJodG1sXzc3YTkwMzQzZWJkNzRmNzM4MWQ0ODcwOTIxMmMxZWY5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CYXkgVGVycmFjZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWUwYTNlYzJiZWE1NDQ0ODg0ZDZmMjM0ZmRmODJlOGMuc2V0Q29udGVudChodG1sXzc3YTkwMzQzZWJkNzRmNzM4MWQ0ODcwOTIxMmMxZWY5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzViYWVkY2M0ZmZmMzQ0ZmI5NTFmODczMjgxY2ZkYTUyLmJpbmRQb3B1cChwb3B1cF9lZTBhM2VjMmJlYTU0NDQ4ODRkNmYyMzRmZGY4MmU4Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zMzI1NjQ5YzM3NmE0MjZmOThhY2EyYTE2N2IxMmM2OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU5NTY0MTgwNzM2ODQ5NCwtNzMuNzc2MTMyODIzOTE3MDVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzFmZGU5NzdlZmVmNGU2MDk5N2ZhMDA2MTYwMWU2ZjEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGI0MDY0MWMxMDY5NGM2YWIwMDk2MGY0YWI0OTJmOTIgPSAkKCc8ZGl2IGlkPSJodG1sX2RiNDA2NDFjMTA2OTRjNmFiMDA5NjBmNGFiNDkyZjkyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FZGdlbWVyZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzFmZGU5NzdlZmVmNGU2MDk5N2ZhMDA2MTYwMWU2ZjEuc2V0Q29udGVudChodG1sX2RiNDA2NDFjMTA2OTRjNmFiMDA5NjBmNGFiNDkyZjkyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzMzMjU2NDljMzc2YTQyNmY5OGFjYTJhMTY3YjEyYzY4LmJpbmRQb3B1cChwb3B1cF8zMWZkZTk3N2VmZWY0ZTYwOTk3ZmEwMDYxNjAxZTZmMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NjcyM2RjYTU2MTM0Y2RkOWZlNzk5YzI1ZmQ2MmU3NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU4OTE0Mzk0MzcyOTcxLC03My43OTE5OTIzMzEzNjk0M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82YzFmMWJjNzQ0MTQ0YWRhOWU3Y2UyMmFkZDk4NjdiOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iODIxZmQ3MjEwZTI0Y2E4ODYxMmUyOWUzNDlmNTZmOSA9ICQoJzxkaXYgaWQ9Imh0bWxfYjgyMWZkNzIxMGUyNGNhODg2MTJlMjllMzQ5ZjU2ZjkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFydmVybmU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZjMWYxYmM3NDQxNDRhZGE5ZTdjZTIyYWRkOTg2N2I5LnNldENvbnRlbnQoaHRtbF9iODIxZmQ3MjEwZTI0Y2E4ODYxMmUyOWUzNDlmNTZmOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85NjcyM2RjYTU2MTM0Y2RkOWZlNzk5YzI1ZmQ2MmU3Ni5iaW5kUG9wdXAocG9wdXBfNmMxZjFiYzc0NDE0NGFkYTllN2NlMjJhZGQ5ODY3YjkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDU3ZGZiMTc0MGEwNDQ2Yzk4M2IzMDI4ODhkMDNjZTcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41ODI4MDE2OTY4NDU1ODYsLTczLjgyMjM2MTIxMDg4NzUxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzYzY2U4ZGU3YmQyMTRiOGFiMGNhY2VhMjM1ZTRiOTc0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y2YjI0NjdkYzhjZDRlZjk4ODdkNTEzN2RkZTJkNTg0ID0gJCgnPGRpdiBpZD0iaHRtbF9mNmIyNDY3ZGM4Y2Q0ZWY5ODg3ZDUxMzdkZGUyZDU4NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Um9ja2F3YXkgQmVhY2g8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzYzY2U4ZGU3YmQyMTRiOGFiMGNhY2VhMjM1ZTRiOTc0LnNldENvbnRlbnQoaHRtbF9mNmIyNDY3ZGM4Y2Q0ZWY5ODg3ZDUxMzdkZGUyZDU4NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80NTdkZmIxNzQwYTA0NDZjOTgzYjMwMjg4OGQwM2NlNy5iaW5kUG9wdXAocG9wdXBfNjNjZThkZTdiZDIxNGI4YWIwY2FjZWEyMzVlNGI5NzQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMmY2ZDAwMjFmZjViNDE1MDk1YmY4Y2Y3MjQ3MWI5OTQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41NzIwMzY3MzAyMTcwMTUsLTczLjg1NzU0NjcyNDEwODI3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzE0NmU1Y2I4YWRhYzRiZWU5N2Y2NzIyMDg0N2VmOTU3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzMyYmE0ZGZlOGYyZDQ4MWM4MWZkODJlNjMyMzJlMDk3ID0gJCgnPGRpdiBpZD0iaHRtbF8zMmJhNGRmZThmMmQ0ODFjODFmZDgyZTYzMjMyZTA5NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TmVwb25zaXQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE0NmU1Y2I4YWRhYzRiZWU5N2Y2NzIyMDg0N2VmOTU3LnNldENvbnRlbnQoaHRtbF8zMmJhNGRmZThmMmQ0ODFjODFmZDgyZTYzMjMyZTA5Nyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yZjZkMDAyMWZmNWI0MTUwOTViZjhjZjcyNDcxYjk5NC5iaW5kUG9wdXAocG9wdXBfMTQ2ZTVjYjhhZGFjNGJlZTk3ZjY3MjIwODQ3ZWY5NTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTFiMDMzM2ExNTZlNDU4YWFjMmZiMTNkOTBmMzVhODkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43NjQxMjYxMjI2MTQwNjYsLTczLjgxMjc2MjY5MTM1ODY2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFlZWVkNDFjNTdkYTQ2NmFiNjlhY2U2Njk2N2UxOWZlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhlYTQ5YWE3YmNlNTQ1MmM5NWMxMjY0ZjNmYjQ3ZjJhID0gJCgnPGRpdiBpZD0iaHRtbF84ZWE0OWFhN2JjZTU0NTJjOTVjMTI2NGYzZmI0N2YyYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TXVycmF5IEhpbGw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFlZWVkNDFjNTdkYTQ2NmFiNjlhY2U2Njk2N2UxOWZlLnNldENvbnRlbnQoaHRtbF84ZWE0OWFhN2JjZTU0NTJjOTVjMTI2NGYzZmI0N2YyYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xMWIwMzMzYTE1NmU0NThhYWMyZmIxM2Q5MGYzNWE4OS5iaW5kUG9wdXAocG9wdXBfMWVlZWQ0MWM1N2RhNDY2YWI2OWFjZTY2OTY3ZTE5ZmUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzI0ZTdjMTBkYjdhNGU1NWIxNmI1N2ZjYTcyMzAzZjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43NDEzNzg0MjE5NDU0MzQsLTczLjcwODg0NzA1ODg5MjQ2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQ0MTg4MDFiNmQ3NzRiMmY5ZWU5OTY5YzRlYzJiMTAxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzdlNTg2OTA5ODQ3NTQxYjViZTNlZTFhOTgwMGExNGVkID0gJCgnPGRpdiBpZD0iaHRtbF83ZTU4NjkwOTg0NzU0MWI1YmUzZWUxYTk4MDBhMTRlZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RmxvcmFsIFBhcms8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQ0MTg4MDFiNmQ3NzRiMmY5ZWU5OTY5YzRlYzJiMTAxLnNldENvbnRlbnQoaHRtbF83ZTU4NjkwOTg0NzU0MWI1YmUzZWUxYTk4MDBhMTRlZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jMjRlN2MxMGRiN2E0ZTU1YjE2YjU3ZmNhNzIzMDNmOS5iaW5kUG9wdXAocG9wdXBfNDQxODgwMWI2ZDc3NGIyZjllZTk5NjljNGVjMmIxMDEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjJkYzgwNWY2ZjlmNDlmZWIwMDg2OTc3NjhhZTc5MmYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MjA5NTcyMDc2NDQ0LC03My43NjcxNDE2NjcxNDcyOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mOGMxZDRlN2EyOTE0NTYyODFkMzcwMzk3YzBmODFiNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iZTBiYmM0ZTU4Nzk0YjBiYTA0NWI5OTY4ZGYwM2ZiYyA9ICQoJzxkaXYgaWQ9Imh0bWxfYmUwYmJjNGU1ODc5NGIwYmEwNDViOTk2OGRmMDNmYmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkhvbGxpc3dvb2Q8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y4YzFkNGU3YTI5MTQ1NjI4MWQzNzAzOTdjMGY4MWI1LnNldENvbnRlbnQoaHRtbF9iZTBiYmM0ZTU4Nzk0YjBiYTA0NWI5OTY4ZGYwM2ZiYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yMmRjODA1ZjZmOWY0OWZlYjAwODY5Nzc2OGFlNzkyZi5iaW5kUG9wdXAocG9wdXBfZjhjMWQ0ZTdhMjkxNDU2MjgxZDM3MDM5N2MwZjgxYjUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTk1ZjAzZjNhMTNjNGQ2YzgzYTQ0MTU4MGY3NzEzNjEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MTY4MDQ4MzAxNDYxMywtNzMuNzg3MjI2OTY5MzY2Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yMmFmZWZmY2M2NWI0ZWI4OWEzMjQ2Mzk2NTIwOTc3ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MDgwNTNhY2Q5Mjk0NTIyODAzNzI3ZDg0ZTY4OTRmNSA9ICQoJzxkaXYgaWQ9Imh0bWxfNjA4MDUzYWNkOTI5NDUyMjgwMzcyN2Q4NGU2ODk0ZjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkphbWFpY2EgRXN0YXRlczwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjJhZmVmZmNjNjViNGViODlhMzI0NjM5NjUyMDk3N2Quc2V0Q29udGVudChodG1sXzYwODA1M2FjZDkyOTQ1MjI4MDM3MjdkODRlNjg5NGY1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2U5NWYwM2YzYTEzYzRkNmM4M2E0NDE1ODBmNzcxMzYxLmJpbmRQb3B1cChwb3B1cF8yMmFmZWZmY2M2NWI0ZWI4OWEzMjQ2Mzk2NTIwOTc3ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jOGM2NTFkNWVkY2Q0MTE0YjIwY2FiYjA5ZjNmZjBjZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc0NDU3MjMwOTI4NjcsLTczLjgyNTgwOTE1MTEwNTU5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2UzZGVjODNhOGFiMzQ0NzlhM2IzNWE3MzI3NzA1YmY0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc0N2VjMDBhMTIzNjQ2MDdiNzJjMDNiZjFhOTEyZjViID0gJCgnPGRpdiBpZD0iaHRtbF83NDdlYzAwYTEyMzY0NjA3YjcyYzAzYmYxYTkxMmY1YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UXVlZW5zYm9ybyBIaWxsPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lM2RlYzgzYThhYjM0NDc5YTNiMzVhNzMyNzcwNWJmNC5zZXRDb250ZW50KGh0bWxfNzQ3ZWMwMGExMjM2NDYwN2I3MmMwM2JmMWE5MTJmNWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzhjNjUxZDVlZGNkNDExNGIyMGNhYmIwOWYzZmYwY2UuYmluZFBvcHVwKHBvcHVwX2UzZGVjODNhOGFiMzQ0NzlhM2IzNWE3MzI3NzA1YmY0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNmNmFkY2NiYTBkZDRhMjU4MTlmOTQzMDk3ZmIzODJhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzIzODI0OTAxODI5MjA0LC03My43OTc2MDMwMDkxMjY3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84MGQyZTk5NThjOTI0MWI3OWQ3NGYzMmUxZDM5MGU2MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xZjM2ZTkxOTIzYzA0ZDcxOWJkMTZjOWRmZTQ0Nzc2ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfMWYzNmU5MTkyM2MwNGQ3MTliZDE2YzlkZmU0NDc3NmUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkhpbGxjcmVzdDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODBkMmU5OTU4YzkyNDFiNzlkNzRmMzJlMWQzOTBlNjIuc2V0Q29udGVudChodG1sXzFmMzZlOTE5MjNjMDRkNzE5YmQxNmM5ZGZlNDQ3NzZlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzNmNmFkY2NiYTBkZDRhMjU4MTlmOTQzMDk3ZmIzODJhLmJpbmRQb3B1cChwb3B1cF84MGQyZTk5NThjOTI0MWI3OWQ3NGYzMmUxZDM5MGU2Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yMzU4MmZjM2U1ODQ0MjcwOTkzOWNlYjI5YjE2ZTM1MCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc2MTcwNDUyNjA1NDE0NiwtNzMuOTMxNTc1MDYwNzI4NzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmRhNjM1ZDMxMGNiNDZjMmEwOTY2YTgzY2Y0MmQ0NjggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTA2NDU0MjJiNGRkNDVmN2I2NDMyNjcyYzkzYmQ2ZDEgPSAkKCc8ZGl2IGlkPSJodG1sX2EwNjQ1NDIyYjRkZDQ1ZjdiNjQzMjY3MmM5M2JkNmQxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5SYXZlbnN3b29kPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82ZGE2MzVkMzEwY2I0NmMyYTA5NjZhODNjZjQyZDQ2OC5zZXRDb250ZW50KGh0bWxfYTA2NDU0MjJiNGRkNDVmN2I2NDMyNjcyYzkzYmQ2ZDEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMjM1ODJmYzNlNTg0NDI3MDk5MzljZWIyOWIxNmUzNTAuYmluZFBvcHVwKHBvcHVwXzZkYTYzNWQzMTBjYjQ2YzJhMDk2NmE4M2NmNDJkNDY4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q5NGExYTM2YzYxMDRjZGI5MjUwMmU5YjZiNjlmZjViID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjYzOTE4NDE5MjUxMzksLTczLjg0OTYzNzgyNDAyNDQxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y2OTMwMmQ0YjU0NDRjYjM4ZjM0YTQ5ZDA5ZGNjZTA4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzBiN2E4OGMyZDdmMjQ3YWM5NmJlOGFiYTRlN2ZhNjg3ID0gJCgnPGRpdiBpZD0iaHRtbF8wYjdhODhjMmQ3ZjI0N2FjOTZiZThhYmE0ZTdmYTY4NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TGluZGVud29vZDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjY5MzAyZDRiNTQ0NGNiMzhmMzRhNDlkMDlkY2NlMDguc2V0Q29udGVudChodG1sXzBiN2E4OGMyZDdmMjQ3YWM5NmJlOGFiYTRlN2ZhNjg3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Q5NGExYTM2YzYxMDRjZGI5MjUwMmU5YjZiNjlmZjViLmJpbmRQb3B1cChwb3B1cF9mNjkzMDJkNGI1NDQ0Y2IzOGYzNGE0OWQwOWRjY2UwOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81MDY2MzM3OGM2YWQ0YmNiYjUyZGYzNWUwN2ZkZGIwYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY2Nzg4Mzg5NjYwMjQ3LC03My43NDAyNTYwNzk4OTgyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jODcwYjU4Y2Q2NTk0ZDZjOTVlNDg4YTVmYWQ3NDE2OSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zNmVjYmJiMDg5YmM0MmJlYmRkNzJiNzIzY2Y0YzE1ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfMzZlY2JiYjA4OWJjNDJiZWJkZDcyYjcyM2NmNGMxNWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxhdXJlbHRvbjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzg3MGI1OGNkNjU5NGQ2Yzk1ZTQ4OGE1ZmFkNzQxNjkuc2V0Q29udGVudChodG1sXzM2ZWNiYmIwODliYzQyYmViZGQ3MmI3MjNjZjRjMTVkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzUwNjYzMzc4YzZhZDRiY2JiNTJkZjM1ZTA3ZmRkYjBiLmJpbmRQb3B1cChwb3B1cF9jODcwYjU4Y2Q2NTk0ZDZjOTVlNDg4YTVmYWQ3NDE2OSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYThiYzAzNjdlMGM0ZmUxYTA3NzJiNzZkMDcwOGJhZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjczNjA3NDU3MDgzMDc5NSwtNzMuODYyNTI0NzE0MTM3NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xMzI1ZDQ1Y2Q5NzQ0YzJlYjJmYjJiNjk2ODc1MzQ1MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80ZmUyMmQ4ZWE3ZDg0YjkxOTYyOTljODAxYWE1NTY2ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfNGZlMjJkOGVhN2Q4NGI5MTk2Mjk5YzgwMWFhNTU2NmUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxlZnJhayBDaXR5PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xMzI1ZDQ1Y2Q5NzQ0YzJlYjJmYjJiNjk2ODc1MzQ1Mi5zZXRDb250ZW50KGh0bWxfNGZlMjJkOGVhN2Q4NGI5MTk2Mjk5YzgwMWFhNTU2NmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZmE4YmMwMzY3ZTBjNGZlMWEwNzcyYjc2ZDA3MDhiYWYuYmluZFBvcHVwKHBvcHVwXzEzMjVkNDVjZDk3NDRjMmViMmZiMmI2OTY4NzUzNDUyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzBjODMzY2M4YmVhYzQ2NzhhNWMyOWI0MGMyODE1MjlmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNTc2MTU1NTY1NDMxMDksLTczLjg1NDAxNzUwMzkyNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDJkNjI1YzdkODhmNGU2ODkyODJjZDk1YmVlNGRhZGQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTNhNTk4OTU5OTkwNDdjMTkxYzgyMTFiOGVjMzI2OWYgPSAkKCc8ZGl2IGlkPSJodG1sX2EzYTU5ODk1OTk5MDQ3YzE5MWM4MjExYjhlYzMyNjlmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CZWxsZSBIYXJib3I8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQyZDYyNWM3ZDg4ZjRlNjg5MjgyY2Q5NWJlZTRkYWRkLnNldENvbnRlbnQoaHRtbF9hM2E1OTg5NTk5OTA0N2MxOTFjODIxMWI4ZWMzMjY5Zik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wYzgzM2NjOGJlYWM0Njc4YTVjMjliNDBjMjgxNTI5Zi5iaW5kUG9wdXAocG9wdXBfNDJkNjI1YzdkODhmNGU2ODkyODJjZDk1YmVlNGRhZGQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjAwZWM2MGQzNTgyNDdhYTgzZTI4NmE0YWUwYmEyODAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41ODAzNDI5NTY0NjEzMSwtNzMuODQxNTMzNzAyMjYxODZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGYzYWJiMmE5MmZjNDJhOTk5NGRmM2UyZjk5NzE5NjQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWQ4Y2RjODA0NWMwNDg2NmFjZGUxMGU1OTEzY2ZlOTIgPSAkKCc8ZGl2IGlkPSJodG1sXzVkOGNkYzgwNDVjMDQ4NjZhY2RlMTBlNTkxM2NmZTkyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Sb2NrYXdheSBQYXJrPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wZjNhYmIyYTkyZmM0MmE5OTk0ZGYzZTJmOTk3MTk2NC5zZXRDb250ZW50KGh0bWxfNWQ4Y2RjODA0NWMwNDg2NmFjZGUxMGU1OTEzY2ZlOTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjAwZWM2MGQzNTgyNDdhYTgzZTI4NmE0YWUwYmEyODAuYmluZFBvcHVwKHBvcHVwXzBmM2FiYjJhOTJmYzQyYTk5OTRkZjNlMmY5OTcxOTY0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JiNTI3YmUxZjg0YTRkOTQ4Nzc2NjNiZjczOTAzNjZkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNTk3NzEwNjE1NjU3NjgsLTczLjc5NjY0NzUwODQ0MDQ3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI3ZWEzMjllNGNiODRkNzE4NmM3NzUwNTVmYTg2NTgwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzMxYjQ4ZWUwYzExODQ1ZTM4MmU4YTQzMTJhZGU4NGViID0gJCgnPGRpdiBpZD0iaHRtbF8zMWI0OGVlMGMxMTg0NWUzODJlOGE0MzEyYWRlODRlYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U29tZXJ2aWxsZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjdlYTMyOWU0Y2I4NGQ3MTg2Yzc3NTA1NWZhODY1ODAuc2V0Q29udGVudChodG1sXzMxYjQ4ZWUwYzExODQ1ZTM4MmU4YTQzMTJhZGU4NGViKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2JiNTI3YmUxZjg0YTRkOTQ4Nzc2NjNiZjczOTAzNjZkLmJpbmRQb3B1cChwb3B1cF8yN2VhMzI5ZTRjYjg0ZDcxODZjNzc1MDU1ZmE4NjU4MCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xYzQzNDAyNjRiNGQ0ODgzYmE0MTM5OTAwMDAxNWNlYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY2MDAwMzIyNzMzNjEzLC03My43NTE3NTMxMDczMTE1M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yYTU5NTQyZTFhNjM0NWM4YmNmOWY4OTIzYzkzNmNjNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84NGQ4NWViNjJjNDM0Zjk2YTllZjJjM2ZiN2VmMzExOSA9ICQoJzxkaXYgaWQ9Imh0bWxfODRkODVlYjYyYzQzNGY5NmE5ZWYyYzNmYjdlZjMxMTkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJyb29rdmlsbGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzJhNTk1NDJlMWE2MzQ1YzhiY2Y5Zjg5MjNjOTM2Y2M3LnNldENvbnRlbnQoaHRtbF84NGQ4NWViNjJjNDM0Zjk2YTllZjJjM2ZiN2VmMzExOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xYzQzNDAyNjRiNGQ0ODgzYmE0MTM5OTAwMDAxNWNlYi5iaW5kUG9wdXAocG9wdXBfMmE1OTU0MmUxYTYzNDVjOGJjZjlmODkyM2M5MzZjYzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2ZkOTBmNzM5ZTQ4NDEyZWJmY2EwN2M3MDgxMmRiOWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MzMwMTQwNDAyNzgzNCwtNzMuNzM4ODkxOTg5MTI0ODFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjA4ZTYwNTA1NWFmNDYwMGFmNDNlMjZjNmI0OTgzNzUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDZhZWU2YjdmZTU1NGMwYmFiZTAyMTMxYTg2MzAxOTggPSAkKCc8ZGl2IGlkPSJodG1sXzA2YWVlNmI3ZmU1NTRjMGJhYmUwMjEzMWE4NjMwMTk4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CZWxsYWlyZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjA4ZTYwNTA1NWFmNDYwMGFmNDNlMjZjNmI0OTgzNzUuc2V0Q29udGVudChodG1sXzA2YWVlNmI3ZmU1NTRjMGJhYmUwMjEzMWE4NjMwMTk4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzdmZDkwZjczOWU0ODQxMmViZmNhMDdjNzA4MTJkYjllLmJpbmRQb3B1cChwb3B1cF9iMDhlNjA1MDU1YWY0NjAwYWY0M2UyNmM2YjQ5ODM3NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jZjQyY2UyYzc3NGQ0MzEzYWIyOGZjY2E2MmIyOTdjYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc1NDA3MDk5OTA0ODksLTczLjg1NzUxNzkwNjc2NDQ3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMyYmMyZTQyZjNhMjQ0OTU4NjBhMmY5YzJhN2U1N2QxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y3ODcxNzUzY2FmMzRlNWU4Y2I4MGFkNmVhMmZjNjEzID0gJCgnPGRpdiBpZD0iaHRtbF9mNzg3MTc1M2NhZjM0ZTVlOGNiODBhZDZlYTJmYzYxMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tm9ydGggQ29yb25hPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMmJjMmU0MmYzYTI0NDk1ODYwYTJmOWMyYTdlNTdkMS5zZXRDb250ZW50KGh0bWxfZjc4NzE3NTNjYWYzNGU1ZThjYjgwYWQ2ZWEyZmM2MTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfY2Y0MmNlMmM3NzRkNDMxM2FiMjhmY2NhNjJiMjk3Y2MuYmluZFBvcHVwKHBvcHVwXzMyYmMyZTQyZjNhMjQ0OTU4NjBhMmY5YzJhN2U1N2QxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk1ZjhhNWQ2NzQ4NjRmYmZhNDhlNjhhMTdiOTVjZmNkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzE0NjExMDgxNTExNywtNzMuODQxMDIyMTEyMzQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lZjQ1MGZiOGQ5OWM0MzI4ODllZWU0NDU0YWU4N2U1YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jMTFjZDVhMWI4ZmY0NjgyODNjNTMyMDM4Y2M5OTYyYiA9ICQoJzxkaXYgaWQ9Imh0bWxfYzExY2Q1YTFiOGZmNDY4MjgzYzUzMjAzOGNjOTk2MmIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZvcmVzdCBIaWxscyBHYXJkZW5zPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lZjQ1MGZiOGQ5OWM0MzI4ODllZWU0NDU0YWU4N2U1Yi5zZXRDb250ZW50KGh0bWxfYzExY2Q1YTFiOGZmNDY4MjgzYzUzMjAzOGNjOTk2MmIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTVmOGE1ZDY3NDg2NGZiZmE0OGU2OGExN2I5NWNmY2QuYmluZFBvcHVwKHBvcHVwX2VmNDUwZmI4ZDk5YzQzMjg4OWVlZTQ0NTRhZTg3ZTViKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU1ODNmM2RhM2IyZTQ3MGY5NWJkOTRmZTVmMGZkMTgyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjQ0OTgxNTcxMDA0NCwtNzQuMDc5MzUzMTI1MTI3OTddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjk1YzQxNWZhMmU5NDM1OWFlOWEzMTM5ZTAwZTQyNWIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzc2Y2YxNDQxOTJlNDZkNmI5YzdiNDU2ZjBjN2I4ZmEgPSAkKCc8ZGl2IGlkPSJodG1sXzc3NmNmMTQ0MTkyZTQ2ZDZiOWM3YjQ1NmYwYzdiOGZhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TdC4gR2VvcmdlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iOTVjNDE1ZmEyZTk0MzU5YWU5YTMxMzllMDBlNDI1Yi5zZXRDb250ZW50KGh0bWxfNzc2Y2YxNDQxOTJlNDZkNmI5YzdiNDU2ZjBjN2I4ZmEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNTU4M2YzZGEzYjJlNDcwZjk1YmQ5NGZlNWYwZmQxODIuYmluZFBvcHVwKHBvcHVwX2I5NWM0MTVmYTJlOTQzNTlhZTlhMzEzOWUwMGU0MjViKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q1MTE0NzFhNjBlYTQ2Y2RiZDJjZDY5ODVhNmJlODllID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjQwNjE0NTU5MTM1MTEsLTc0LjA4NzAxNjUwNTE2NjI1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkyM2NhOWUwMDU3MTQyZjNhZGEzODI3YzRlMDdkNDU3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzY5OGFlODgwNGJlNzQzNGRhNDJkMmJjZmFiN2IwZWYzID0gJCgnPGRpdiBpZD0iaHRtbF82OThhZTg4MDRiZTc0MzRkYTQyZDJiY2ZhYjdiMGVmMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TmV3IEJyaWdodG9uPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85MjNjYTllMDA1NzE0MmYzYWRhMzgyN2M0ZTA3ZDQ1Ny5zZXRDb250ZW50KGh0bWxfNjk4YWU4ODA0YmU3NDM0ZGE0MmQyYmNmYWI3YjBlZjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDUxMTQ3MWE2MGVhNDZjZGJkMmNkNjk4NWE2YmU4OWUuYmluZFBvcHVwKHBvcHVwXzkyM2NhOWUwMDU3MTQyZjNhZGEzODI3YzRlMDdkNDU3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RlNzZkMjY5NDA4ZTQ5NzY4MTA3MmM5NGI4ODllNmIyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjI2OTI3NjI1MzgxNzYsLTc0LjA3NzkwMTkyNjYwMDY2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzRmYTI4YTA1NTAxNjQ0MWRhYTdiMTdiM2JmNTU5ZDg3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ3ZDNlMzhmNmNlNzQwZGVhZDk4MGUwMTk1MzRiOGRiID0gJCgnPGRpdiBpZD0iaHRtbF80N2QzZTM4ZjZjZTc0MGRlYWQ5ODBlMDE5NTM0YjhkYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U3RhcGxldG9uPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80ZmEyOGEwNTUwMTY0NDFkYWE3YjE3YjNiZjU1OWQ4Ny5zZXRDb250ZW50KGh0bWxfNDdkM2UzOGY2Y2U3NDBkZWFkOTgwZTAxOTUzNGI4ZGIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZGU3NmQyNjk0MDhlNDk3NjgxMDcyYzk0Yjg4OWU2YjIuYmluZFBvcHVwKHBvcHVwXzRmYTI4YTA1NTAxNjQ0MWRhYTdiMTdiM2JmNTU5ZDg3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZiZWQ5ZjMzNmRhNDQ5NDZhN2I5MmEzZjlkMjgxOGVjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjE1MzA0OTQ2NTI3NjEsLTc0LjA2OTgwNTI2NzE2MTQxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NiYzcxM2QxZGVmMjRiNDc5ZWFiYTRmMTQzMGVmNDk5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzllMDc5ZDU4MjljZDQyN2JhMDJhZmU2ODAxMDY3MmQ2ID0gJCgnPGRpdiBpZD0iaHRtbF85ZTA3OWQ1ODI5Y2Q0MjdiYTAyYWZlNjgwMTA2NzJkNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Um9zZWJhbms8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NiYzcxM2QxZGVmMjRiNDc5ZWFiYTRmMTQzMGVmNDk5LnNldENvbnRlbnQoaHRtbF85ZTA3OWQ1ODI5Y2Q0MjdiYTAyYWZlNjgwMTA2NzJkNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82YmVkOWYzMzZkYTQ0OTQ2YTdiOTJhM2Y5ZDI4MThlYy5iaW5kUG9wdXAocG9wdXBfY2JjNzEzZDFkZWYyNGI0NzllYWJhNGYxNDMwZWY0OTkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjg2NTlkNzM0NzEwNDEyMGIyZWU3Njc5M2YyMmM0ZDggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MzE4Nzg5MjY1NDYwNywtNzQuMTA3MTgxNzgyNjU2MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iNGFmZjdkMTdhNmY0ODEzYmQ5NGU2YjIwNDc1Yzc3MyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81MjI3NTVmM2U4M2Y0OWY2OGI5NmI1YmYyNTY5NmE3MyA9ICQoJzxkaXYgaWQ9Imh0bWxfNTIyNzU1ZjNlODNmNDlmNjhiOTZiNWJmMjU2OTZhNzMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldlc3QgQnJpZ2h0b248L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2I0YWZmN2QxN2E2ZjQ4MTNiZDk0ZTZiMjA0NzVjNzczLnNldENvbnRlbnQoaHRtbF81MjI3NTVmM2U4M2Y0OWY2OGI5NmI1YmYyNTY5NmE3Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mODY1OWQ3MzQ3MTA0MTIwYjJlZTc2NzkzZjIyYzRkOC5iaW5kUG9wdXAocG9wdXBfYjRhZmY3ZDE3YTZmNDgxM2JkOTRlNmIyMDQ3NWM3NzMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2UzNjZhMzg3ZGFkNGJmNTk4MDViNWUyOWFkNDIwMTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MjQxODQ3OTEzMTMwMDYsLTc0LjA4NzI0ODE5OTgzNzI5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2UyNDg3YjMwMzQ0MjRmN2FhNDU4ZDBkZDNjMWU5NGM3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2ZjMGQyOWMzMTQxODRhYTY4YWQwNzU4NTEwNjE1OWZiID0gJCgnPGRpdiBpZD0iaHRtbF9mYzBkMjljMzE0MTg0YWE2OGFkMDc1ODUxMDYxNTlmYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+R3J5bWVzIEhpbGw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UyNDg3YjMwMzQ0MjRmN2FhNDU4ZDBkZDNjMWU5NGM3LnNldENvbnRlbnQoaHRtbF9mYzBkMjljMzE0MTg0YWE2OGFkMDc1ODUxMDYxNTlmYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83ZTM2NmEzODdkYWQ0YmY1OTgwNWI1ZTI5YWQ0MjAxOS5iaW5kUG9wdXAocG9wdXBfZTI0ODdiMzAzNDQyNGY3YWE0NThkMGRkM2MxZTk0YzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmI2N2E1YzQxMjBkNDhlM2JlODE1NzUwMWNmMjRhNGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41OTcwNjg1MTgxNDY3MywtNzQuMTExMzI4ODE4MDA4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85MGJiMGIxNjk5MmI0MWNiYTIwMTE3ZDM3MTk4NjE0NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zYzllOTM0MjkxMDE0ZTI3YTY0ZTg4ZjA3Mzc3Y2UzNCA9ICQoJzxkaXYgaWQ9Imh0bWxfM2M5ZTkzNDI5MTAxNGUyN2E2NGU4OGYwNzM3N2NlMzQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRvZHQgSGlsbDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTBiYjBiMTY5OTJiNDFjYmEyMDExN2QzNzE5ODYxNDcuc2V0Q29udGVudChodG1sXzNjOWU5MzQyOTEwMTRlMjdhNjRlODhmMDczNzdjZTM0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2JiNjdhNWM0MTIwZDQ4ZTNiZTgxNTc1MDFjZjI0YTRiLmJpbmRQb3B1cChwb3B1cF85MGJiMGIxNjk5MmI0MWNiYTIwMTE3ZDM3MTk4NjE0Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lNzY3NzBhODAzMzA0Zjk2YTQzYWZiMmI5NTdkYzBmZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU4MDI0NzQxMzUwOTU2LC03NC4wNzk1NTI5MjUzOTgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2MxYjA1MzdkMjMzZDQ3ZTRiNGZmNzBhODUzNTQ2OTUxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzMzOTNiNzJkZTIxMDRmYzE4OGUxYjhlYjUwODYxMTQwID0gJCgnPGRpdiBpZD0iaHRtbF8zMzkzYjcyZGUyMTA0ZmMxODhlMWI4ZWI1MDg2MTE0MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U291dGggQmVhY2g8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2MxYjA1MzdkMjMzZDQ3ZTRiNGZmNzBhODUzNTQ2OTUxLnNldENvbnRlbnQoaHRtbF8zMzkzYjcyZGUyMTA0ZmMxODhlMWI4ZWI1MDg2MTE0MCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lNzY3NzBhODAzMzA0Zjk2YTQzYWZiMmI5NTdkYzBmZi5iaW5kUG9wdXAocG9wdXBfYzFiMDUzN2QyMzNkNDdlNGI0ZmY3MGE4NTM1NDY5NTEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYWJlN2U5NDc1OTA2NDA3OTliZjcxZjkxYTQ1N2Y3Y2MgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MzM2NjkzMDU1NDM2NSwtNzQuMTI5NDM0MjY3OTcwMDhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTRjZDIyYWE0MGRkNGY4OWJjZTQxMTU1ZmYzZjY1YjkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjU0MDQ2NmRlMGE2NDJjZGExZmRjZDAxMDY1ZDZiODIgPSAkKCc8ZGl2IGlkPSJodG1sXzY1NDA0NjZkZTBhNjQyY2RhMWZkY2QwMTA2NWQ2YjgyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Qb3J0IFJpY2htb25kPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NGNkMjJhYTQwZGQ0Zjg5YmNlNDExNTVmZjNmNjViOS5zZXRDb250ZW50KGh0bWxfNjU0MDQ2NmRlMGE2NDJjZGExZmRjZDAxMDY1ZDZiODIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYWJlN2U5NDc1OTA2NDA3OTliZjcxZjkxYTQ1N2Y3Y2MuYmluZFBvcHVwKHBvcHVwXzU0Y2QyMmFhNDBkZDRmODliY2U0MTE1NWZmM2Y2NWI5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E3YTIxZDZiMTZhNTQxNTViNTY0ZTRiMzJiNTM0ZGJkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjMyNTQ2MzkwNDgxMTI0LC03NC4xNTAwODUzNzA0Njk4MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iYmVkNmRkMmE2OWI0ZjBlOTRmYTU3MTA1Y2ZmZjYzNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jNzk1ZTU0MWVlYTc0Nzg5ODk2ZmNlYjBkMWEwYWY3NSA9ICQoJzxkaXYgaWQ9Imh0bWxfYzc5NWU1NDFlZWE3NDc4OTg5NmZjZWIwZDFhMGFmNzUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1hcmluZXImIzM5O3MgSGFyYm9yPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iYmVkNmRkMmE2OWI0ZjBlOTRmYTU3MTA1Y2ZmZjYzNi5zZXRDb250ZW50KGh0bWxfYzc5NWU1NDFlZWE3NDc4OTg5NmZjZWIwZDFhMGFmNzUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYTdhMjFkNmIxNmE1NDE1NWI1NjRlNGIzMmI1MzRkYmQuYmluZFBvcHVwKHBvcHVwX2JiZWQ2ZGQyYTY5YjRmMGU5NGZhNTcxMDVjZmZmNjM2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U1NTA5NTkyZGVjMjRjZmVhMDdjYTZhMWNjNDcyNDZkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjM5NjgyOTc4NDU1NDIsLTc0LjE3NDY0NTMyOTkzNTQyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhhNjczM2UzMTgyOTQwYzVhMjQzNmFlYTFmYmNmNWM3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2QwZmRlOGJjYzg1NjQ1N2FiZTcyZmM1YjRmNDBlMWY3ID0gJCgnPGRpdiBpZD0iaHRtbF9kMGZkZThiY2M4NTY0NTdhYmU3MmZjNWI0ZjQwZTFmNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UG9ydCBJdm9yeTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOGE2NzMzZTMxODI5NDBjNWEyNDM2YWVhMWZiY2Y1Yzcuc2V0Q29udGVudChodG1sX2QwZmRlOGJjYzg1NjQ1N2FiZTcyZmM1YjRmNDBlMWY3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2U1NTA5NTkyZGVjMjRjZmVhMDdjYTZhMWNjNDcyNDZkLmJpbmRQb3B1cChwb3B1cF84YTY3MzNlMzE4Mjk0MGM1YTI0MzZhZWExZmJjZjVjNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iMWQ1OTNjODM3Nzk0N2ZhODk2YmYyMjM1MmQwZjhkOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjYxMzMzNTkzNzY2NzQyLC03NC4xMTkxODA1ODUzNDg0Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lODRlMDNlZTY3OGY0MDA1ODE1M2FlMDU2Y2M0NzFlMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMTAxYzUwNTZkODY0MTBlOTRjOWMyNDhhYjcwNWJkNCA9ICQoJzxkaXYgaWQ9Imh0bWxfYTEwMWM1MDU2ZDg2NDEwZTk0YzljMjQ4YWI3MDViZDQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNhc3RsZXRvbiBDb3JuZXJzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lODRlMDNlZTY3OGY0MDA1ODE1M2FlMDU2Y2M0NzFlMy5zZXRDb250ZW50KGh0bWxfYTEwMWM1MDU2ZDg2NDEwZTk0YzljMjQ4YWI3MDViZDQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjFkNTkzYzgzNzc5NDdmYTg5NmJmMjIzNTJkMGY4ZDkuYmluZFBvcHVwKHBvcHVwX2U4NGUwM2VlNjc4ZjQwMDU4MTUzYWUwNTZjYzQ3MWUzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U4NWViMTQ5MjRiZDQ1ZTU5YWZkMTc3ODFlM2JmYmI5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNTk0MjUyMzc5MTYxNjk1LC03NC4xNjQ5NjAzMTMyOTgyN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80Zjk5NzcxNzJhZjY0ZjZkODEwZGRiMWViYTNjOWZjNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85ZWQ1ZjUxYTBjMjY0YzRjYWE3ZWEwNjVkZDczYWMxMyA9ICQoJzxkaXYgaWQ9Imh0bWxfOWVkNWY1MWEwYzI2NGM0Y2FhN2VhMDY1ZGQ3M2FjMTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5ldyBTcHJpbmd2aWxsZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNGY5OTc3MTcyYWY2NGY2ZDgxMGRkYjFlYmEzYzlmYzYuc2V0Q29udGVudChodG1sXzllZDVmNTFhMGMyNjRjNGNhYTdlYTA2NWRkNzNhYzEzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2U4NWViMTQ5MjRiZDQ1ZTU5YWZkMTc3ODFlM2JmYmI5LmJpbmRQb3B1cChwb3B1cF80Zjk5NzcxNzJhZjY0ZjZkODEwZGRiMWViYTNjOWZjNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMWE4ODA0ODA5Nzg0OTllOTAwYWJmYTE2N2EyMGFkNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU4NjMxMzc1MTAzMjgxLC03NC4xOTA3MzcxNzUzODExNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80NDczM2QyNDA5MTE0NGIxODM5OGFhZDg1YzdkNTY2ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lNzZhN2IxNGNlMDc0YTcwYmY1NWUyNDU2ZWZjYTY3ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfZTc2YTdiMTRjZTA3NGE3MGJmNTVlMjQ1NmVmY2E2N2YiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRyYXZpczwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDQ3MzNkMjQwOTExNDRiMTgzOThhYWQ4NWM3ZDU2NmQuc2V0Q29udGVudChodG1sX2U3NmE3YjE0Y2UwNzRhNzBiZjU1ZTI0NTZlZmNhNjdmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzAxYTg4MDQ4MDk3ODQ5OWU5MDBhYmZhMTY3YTIwYWQ3LmJpbmRQb3B1cChwb3B1cF80NDczM2QyNDA5MTE0NGIxODM5OGFhZDg1YzdkNTY2ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMTA0ODQ4ODI2MTA0YmRmYTljNzZiYTEwZDQzMjgwMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU3MjU3MjMxODIwNjMyLC03NC4xMTY0Nzk0MzYwNjM4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FhNTdiNmFlNTRiNDRkYzY5MTQ3ZTAwMDIxMGMwNGY3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzIyNGQzODU5MmQyOTRlOTE5MGM3YWY3NTYyMjQ5NzYyID0gJCgnPGRpdiBpZD0iaHRtbF8yMjRkMzg1OTJkMjk0ZTkxOTBjN2FmNzU2MjI0OTc2MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TmV3IERvcnA8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FhNTdiNmFlNTRiNDRkYzY5MTQ3ZTAwMDIxMGMwNGY3LnNldENvbnRlbnQoaHRtbF8yMjRkMzg1OTJkMjk0ZTkxOTBjN2FmNzU2MjI0OTc2Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jMTA0ODQ4ODI2MTA0YmRmYTljNzZiYTEwZDQzMjgwMy5iaW5kUG9wdXAocG9wdXBfYWE1N2I2YWU1NGI0NGRjNjkxNDdlMDAwMjEwYzA0ZjcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDMzOTUwZDI4MTQ0NGRjODgzNGFkZWJmMzU0ZDM0N2IgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41NTg0NjIyNDMyODg4LC03NC4xMjE1NjU5Mzc3MTg5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82NjY1ZDY0MTM3NTU0ZDg0YmNkYzgzZWIyZGIzYWE3MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jMzNkNjhjNDc3NzY0NDgzOGExZmFhMTk3Yjc3YjM1NiA9ICQoJzxkaXYgaWQ9Imh0bWxfYzMzZDY4YzQ3Nzc2NDQ4MzhhMWZhYTE5N2I3N2IzNTYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9ha3dvb2Q8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY2NjVkNjQxMzc1NTRkODRiY2RjODNlYjJkYjNhYTcwLnNldENvbnRlbnQoaHRtbF9jMzNkNjhjNDc3NzY0NDgzOGExZmFhMTk3Yjc3YjM1Nik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80MzM5NTBkMjgxNDQ0ZGM4ODM0YWRlYmYzNTRkMzQ3Yi5iaW5kUG9wdXAocG9wdXBfNjY2NWQ2NDEzNzU1NGQ4NGJjZGM4M2ViMmRiM2FhNzApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGMyNWQ4NjMxOGQ0NDhmN2JiMzc0NzM1Zjg5YzUxMDUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41NDk0ODAyMjg3MTM2MDUsLTc0LjE0OTMyMzgxNDkwOTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzIyMGI5YzM3ZDc1YjQyYWRiYWEzZmY5ZTZjNWJlNzc3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y4NTc5OGMyMDM5MDQwMWFhNmJiNWRjYjE2MDQ2MjI5ID0gJCgnPGRpdiBpZD0iaHRtbF9mODU3OThjMjAzOTA0MDFhYTZiYjVkY2IxNjA0NjIyOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+R3JlYXQgS2lsbHM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzIyMGI5YzM3ZDc1YjQyYWRiYWEzZmY5ZTZjNWJlNzc3LnNldENvbnRlbnQoaHRtbF9mODU3OThjMjAzOTA0MDFhYTZiYjVkY2IxNjA0NjIyOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80YzI1ZDg2MzE4ZDQ0OGY3YmIzNzQ3MzVmODljNTEwNS5iaW5kUG9wdXAocG9wdXBfMjIwYjljMzdkNzViNDJhZGJhYTNmZjllNmM1YmU3NzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDMzNWE5YmNlZmQxNDM4ZTg2YTJhOTVjNWZhMmM1NTEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41NDIyMzA3NDc0NTA3NDUsLTc0LjE2NDMzMDgwNDE5MzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWM2ZGE2YTZjODFmNGMzNDhiMDY2YjZhMjVjZjMxM2IgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmU5NDkwYjI3NmFkNGYzZDg1ZGQwNjgxYWRlZmUyNWUgPSAkKCc8ZGl2IGlkPSJodG1sX2JlOTQ5MGIyNzZhZDRmM2Q4NWRkMDY4MWFkZWZlMjVlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FbHRpbmd2aWxsZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWM2ZGE2YTZjODFmNGMzNDhiMDY2YjZhMjVjZjMxM2Iuc2V0Q29udGVudChodG1sX2JlOTQ5MGIyNzZhZDRmM2Q4NWRkMDY4MWFkZWZlMjVlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzQzMzVhOWJjZWZkMTQzOGU4NmEyYTk1YzVmYTJjNTUxLmJpbmRQb3B1cChwb3B1cF9lYzZkYTZhNmM4MWY0YzM0OGIwNjZiNmEyNWNmMzEzYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yMzI0N2JmNzM4M2U0ZDEyYWQ2MzE0MDYzYTNjZWZlOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjUzODExNDE3NDc0NTA3LC03NC4xNzg1NDg2NjE2NTg3OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hMDQzZWQ1NDg4Y2Y0NDhiYTUzYmViZjZhZThmODkwZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hN2FiNDg4YWYyMWE0MWRiODAxMTMzZWZmNzVkMTIxNyA9ICQoJzxkaXYgaWQ9Imh0bWxfYTdhYjQ4OGFmMjFhNDFkYjgwMTEzM2VmZjc1ZDEyMTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFubmFkYWxlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hMDQzZWQ1NDg4Y2Y0NDhiYTUzYmViZjZhZThmODkwZC5zZXRDb250ZW50KGh0bWxfYTdhYjQ4OGFmMjFhNDFkYjgwMTEzM2VmZjc1ZDEyMTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMjMyNDdiZjczODNlNGQxMmFkNjMxNDA2M2EzY2VmZTguYmluZFBvcHVwKHBvcHVwX2EwNDNlZDU0ODhjZjQ0OGJhNTNiZWJmNmFlOGY4OTBkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI2NjNmYzJmZjU1NjQwMGNhZTc3OTA3NzdmNTFlN2ZlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNTQxOTY3NjIyODg4NzU1LC03NC4yMDUyNDU4MjQ4MDMyNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ZTA5MjJhNjMwZmE0ODNlODJmODAxMTQ4NTIwN2Y0NiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zZWEyM2RhOTZjMDQ0MWIwOWNiNDZlZjRiMzU1MjFlZCA9ICQoJzxkaXYgaWQ9Imh0bWxfM2VhMjNkYTk2YzA0NDFiMDljYjQ2ZWY0YjM1NTIxZWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldvb2Ryb3c8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzRlMDkyMmE2MzBmYTQ4M2U4MmY4MDExNDg1MjA3ZjQ2LnNldENvbnRlbnQoaHRtbF8zZWEyM2RhOTZjMDQ0MWIwOWNiNDZlZjRiMzU1MjFlZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yNjYzZmMyZmY1NTY0MDBjYWU3NzkwNzc3ZjUxZTdmZS5iaW5kUG9wdXAocG9wdXBfNGUwOTIyYTYzMGZhNDgzZTgyZjgwMTE0ODUyMDdmNDYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzRjMGEyN2E4MGZjNDQ0ZWI4NTE5NGRkZDhmOWM4NGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41MDUzMzM3NjExNTY0MiwtNzQuMjQ2NTY5MzQyMzUyODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDhkYjUzNDE1ZTFiNGQ3YzlhYTMxMjE2ODIyNzJmYTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmRhOGViYjU1NzgzNDE2ZDhlYjAyMTI5NTIzZjA3ZTIgPSAkKCc8ZGl2IGlkPSJodG1sXzJkYThlYmI1NTc4MzQxNmQ4ZWIwMjEyOTUyM2YwN2UyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Ub3R0ZW52aWxsZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDhkYjUzNDE1ZTFiNGQ3YzlhYTMxMjE2ODIyNzJmYTAuc2V0Q29udGVudChodG1sXzJkYThlYmI1NTc4MzQxNmQ4ZWIwMjEyOTUyM2YwN2UyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2M0YzBhMjdhODBmYzQ0NGViODUxOTRkZGQ4ZjljODRjLmJpbmRQb3B1cChwb3B1cF80OGRiNTM0MTVlMWI0ZDdjOWFhMzEyMTY4MjI3MmZhMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYzljNzYzODk1NmE0YjE4YjgyNjFhYWM5MmE5MzBiYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjYzNzMxNjA2NzExMDMyNiwtNzQuMDgwNTUzNTE3OTAxMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDExZjAxNjgzYTk5NDc2OTk3MGI2NDlkMzlkODJkNTkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDkwODU5YWYwZGZhNDRjYjliZWJkYTBmNmVjOTFiOTQgPSAkKCc8ZGl2IGlkPSJodG1sXzQ5MDg1OWFmMGRmYTQ0Y2I5YmViZGEwZjZlYzkxYjk0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Ub21wa2luc3ZpbGxlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kMTFmMDE2ODNhOTk0NzY5OTcwYjY0OWQzOWQ4MmQ1OS5zZXRDb250ZW50KGh0bWxfNDkwODU5YWYwZGZhNDRjYjliZWJkYTBmNmVjOTFiOTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfY2M5Yzc2Mzg5NTZhNGIxOGI4MjYxYWFjOTJhOTMwYmEuYmluZFBvcHVwKHBvcHVwX2QxMWYwMTY4M2E5OTQ3Njk5NzBiNjQ5ZDM5ZDgyZDU5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAyOGJjODRiNWI1YTRkMjQ4OWIzNGM4Yjk3MjU0ZWQzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjE5MTkzMTA3OTI2NzYsLTc0LjA5NjI5MDI5MjM1NDU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzIzNjFlMDg1NjkwMjRkMTdiZjQ3YzE4NDUyMjNjMzhiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgxYTY0MjU5NWIxNTQ0ZDdiN2Y0MzBiMTQ5NTkxMTczID0gJCgnPGRpdiBpZD0iaHRtbF84MWE2NDI1OTViMTU0NGQ3YjdmNDMwYjE0OTU5MTE3MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U2lsdmVyIExha2U8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzIzNjFlMDg1NjkwMjRkMTdiZjQ3YzE4NDUyMjNjMzhiLnNldENvbnRlbnQoaHRtbF84MWE2NDI1OTViMTU0NGQ3YjdmNDMwYjE0OTU5MTE3Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wMjhiYzg0YjViNWE0ZDI0ODliMzRjOGI5NzI1NGVkMy5iaW5kUG9wdXAocG9wdXBfMjM2MWUwODU2OTAyNGQxN2JmNDdjMTg0NTIyM2MzOGIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjBhZWNmYjZlYTI1NDM2ZWFkNmEwYzRiOGIxMThmYWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MTI3NjAxNTc1NjQ4OSwtNzQuMDk3MTI1NTIxNzg1M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jZjFmOTJlODZiNDA0MmFkYTI5MGMxMGMwYmQzNWM1YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jNDkyZTBmYjA0NmU0MzY0ODM1ZjUxNzQyMzliMWIyMCA9ICQoJzxkaXYgaWQ9Imh0bWxfYzQ5MmUwZmIwNDZlNDM2NDgzNWY1MTc0MjM5YjFiMjAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlN1bm55c2lkZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2YxZjkyZTg2YjQwNDJhZGEyOTBjMTBjMGJkMzVjNWMuc2V0Q29udGVudChodG1sX2M0OTJlMGZiMDQ2ZTQzNjQ4MzVmNTE3NDIzOWIxYjIwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzYwYWVjZmI2ZWEyNTQzNmVhZDZhMGM0YjhiMTE4ZmFiLmJpbmRQb3B1cChwb3B1cF9jZjFmOTJlODZiNDA0MmFkYTI5MGMxMGMwYmQzNWM1Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zYjhiNDI5Y2I3Y2M0MGUxYjJhMDRlNjU0MThmMjk0ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY0MzY3NTE4MzM0MDk3NCwtNzMuOTYxMDEzMTI0NjY3NzldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTQxMGM5ZmFlYjYzNGMyOGJkZjUxNzg0YTY4MzI2NzcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjM5Y2Y5MGUzZmE4NGEwNzllYzUxNDAxNzA0ODI1N2EgPSAkKCc8ZGl2IGlkPSJodG1sX2YzOWNmOTBlM2ZhODRhMDc5ZWM1MTQwMTcwNDgyNTdhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EaXRtYXMgUGFyazwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTQxMGM5ZmFlYjYzNGMyOGJkZjUxNzg0YTY4MzI2Nzcuc2V0Q29udGVudChodG1sX2YzOWNmOTBlM2ZhODRhMDc5ZWM1MTQwMTcwNDgyNTdhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzNiOGI0MjljYjdjYzQwZTFiMmEwNGU2NTQxOGYyOTRkLmJpbmRQb3B1cChwb3B1cF81NDEwYzlmYWViNjM0YzI4YmRmNTE3ODRhNjgzMjY3Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zOTk1NjNiOTUzZmQ0OGRmYjUxYjk5YzhlYzA2YTdhZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY2MDk0NjU2MTg4MTExLC03My45MzcxODY4MDU1OTMxNF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82Y2YzMTM3NTU3MzQ0M2Y5YWVkNDBjYmMwYzZiMmZkOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iZjQwZmFhYWQ4OGQ0YWVjYTI1ZGM1OGI0ZDdmYTMzOCA9ICQoJzxkaXYgaWQ9Imh0bWxfYmY0MGZhYWFkODhkNGFlY2EyNWRjNThiNGQ3ZmEzMzgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldpbmdhdGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZjZjMxMzc1NTczNDQzZjlhZWQ0MGNiYzBjNmIyZmQ4LnNldENvbnRlbnQoaHRtbF9iZjQwZmFhYWQ4OGQ0YWVjYTI1ZGM1OGI0ZDdmYTMzOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zOTk1NjNiOTUzZmQ0OGRmYjUxYjk5YzhlYzA2YTdhZi5iaW5kUG9wdXAocG9wdXBfNmNmMzEzNzU1NzM0NDNmOWFlZDQwY2JjMGM2YjJmZDgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDUxMjhhNjY0MThlNGVkOTk1ZjMxNzY1YmJiMGFlY2IgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42NTU1NzIzMTMyODA3NjQsLTczLjkyNjg4MjEyNjE2OTU1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ZlODU5MjM4MGI0YTQ1NzM4YTQwMzBjOTc4NDg1MDgyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE1Mzc0ZTdhN2FkODQyNTJiYjNhOTdlNTUzYTU4MjhhID0gJCgnPGRpdiBpZD0iaHRtbF8xNTM3NGU3YTdhZDg0MjUyYmIzYTk3ZTU1M2E1ODI4YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UnVnYnk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZlODU5MjM4MGI0YTQ1NzM4YTQwMzBjOTc4NDg1MDgyLnNldENvbnRlbnQoaHRtbF8xNTM3NGU3YTdhZDg0MjUyYmIzYTk3ZTU1M2E1ODI4YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wNTEyOGE2NjQxOGU0ZWQ5OTVmMzE3NjViYmIwYWVjYi5iaW5kUG9wdXAocG9wdXBfZmU4NTkyMzgwYjRhNDU3MzhhNDAzMGM5Nzg0ODUwODIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzQyODdlYjEwZmEzNDdiNDlmNmI1NTgwNDAxY2U3NGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MDkxOTA0NDQzNDU1OCwtNzQuMDgwMTU3MzQ5MzYyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzA0NDg3YTRjNmRmNDdhNjlhZjM5ZmU5OTk0ZjU4OGUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjYwY2U1NTdiNDQ4NDBjNDhhOWFlYWZjYTkyNGIxMzIgPSAkKCc8ZGl2IGlkPSJodG1sX2I2MGNlNTU3YjQ0ODQwYzQ4YTlhZWFmY2E5MjRiMTMyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5QYXJrIEhpbGw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMwNDQ4N2E0YzZkZjQ3YTY5YWYzOWZlOTk5NGY1ODhlLnNldENvbnRlbnQoaHRtbF9iNjBjZTU1N2I0NDg0MGM0OGE5YWVhZmNhOTI0YjEzMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zNDI4N2ViMTBmYTM0N2I0OWY2YjU1ODA0MDFjZTc0Yy5iaW5kUG9wdXAocG9wdXBfMzA0NDg3YTRjNmRmNDdhNjlhZjM5ZmU5OTk0ZjU4OGUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTNiM2JkZDMyMDc4NGE3OGJiNmE2YzA2M2I5Y2E5MmIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MjEwOTA0NzI3NTQwOSwtNzQuMTMzMDQxNDM5NTE3MDRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjUyNDU2NzIwZjdiNDc4NjlkNGJjNmZlM2Y1OWZmYmEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjllNzNiZTYxNjMzNGY0MDgxY2U2ZTFlMDUyYzBiOGYgPSAkKCc8ZGl2IGlkPSJodG1sX2I5ZTczYmU2MTYzMzRmNDA4MWNlNmUxZTA1MmMwYjhmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XZXN0ZXJsZWlnaDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjUyNDU2NzIwZjdiNDc4NjlkNGJjNmZlM2Y1OWZmYmEuc2V0Q29udGVudChodG1sX2I5ZTczYmU2MTYzMzRmNDA4MWNlNmUxZTA1MmMwYjhmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzUzYjNiZGQzMjA3ODRhNzhiYjZhNmMwNjNiOWNhOTJiLmJpbmRQb3B1cChwb3B1cF82NTI0NTY3MjBmN2I0Nzg2OWQ0YmM2ZmUzZjU5ZmZiYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lYmI5ODI5OTE1ZTI0ODJkYjgzNWM2N2RlYmEyM2YwZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjYyMDE3MTUxMjIzMTg4NCwtNzQuMTUzMTUyNDYzODc3NjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTVjZmZkYzEzOGU5NDk5NjhlZTk1MmNiY2JlMGRjMzYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODIyOGY0MGM1NjE2NGI0OTkyMDc0ZGU1NWQzYmM3N2IgPSAkKCc8ZGl2IGlkPSJodG1sXzgyMjhmNDBjNTYxNjRiNDk5MjA3NGRlNTVkM2JjNzdiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5HcmFuaXRldmlsbGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzk1Y2ZmZGMxMzhlOTQ5OTY4ZWU5NTJjYmNiZTBkYzM2LnNldENvbnRlbnQoaHRtbF84MjI4ZjQwYzU2MTY0YjQ5OTIwNzRkZTU1ZDNiYzc3Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lYmI5ODI5OTE1ZTI0ODJkYjgzNWM2N2RlYmEyM2YwZi5iaW5kUG9wdXAocG9wdXBfOTVjZmZkYzEzOGU5NDk5NjhlZTk1MmNiY2JlMGRjMzYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTViNzU3NjFkNWY0NGViNWFmODU5MGVkMzFmOGI1MWMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MzUzMjUwOTkxMTQ5MiwtNzQuMTY1MTA0MjAyNDExMjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzZlZjE1NDhjYTdjNDY4OTk2NTFkZWU4OWRlMTY0NWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWYyZWJiZjk2MDUxNGJlNGJmYzBjZWM1ZWY3NGIxZjcgPSAkKCc8ZGl2IGlkPSJodG1sXzlmMmViYmY5NjA1MTRiZTRiZmMwY2VjNWVmNzRiMWY3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Bcmxpbmd0b248L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc2ZWYxNTQ4Y2E3YzQ2ODk5NjUxZGVlODlkZTE2NDVlLnNldENvbnRlbnQoaHRtbF85ZjJlYmJmOTYwNTE0YmU0YmZjMGNlYzVlZjc0YjFmNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xNWI3NTc2MWQ1ZjQ0ZWI1YWY4NTkwZWQzMWY4YjUxYy5iaW5kUG9wdXAocG9wdXBfNzZlZjE1NDhjYTdjNDY4OTk2NTFkZWU4OWRlMTY0NWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmMyNWVlM2Y1ZmIwNGQzOThhZTk0NGM3MTk4MDM1YzggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41OTYzMTI1NzEyNzY3MzQsLTc0LjA2NzEyMzYzMjI1NTc0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhjZDA3YjVmNDk3YjRiNzRhNmJlOTczMzcyZmZlYmQyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RlNGRjZGI5ZTFmMzQ5YWFiNmJiZDUzYjk2ZjcxYjZjID0gJCgnPGRpdiBpZD0iaHRtbF9kZTRkY2RiOWUxZjM0OWFhYjZiYmQ1M2I5NmY3MWI2YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QXJyb2NoYXI8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhjZDA3YjVmNDk3YjRiNzRhNmJlOTczMzcyZmZlYmQyLnNldENvbnRlbnQoaHRtbF9kZTRkY2RiOWUxZjM0OWFhYjZiYmQ1M2I5NmY3MWI2Yyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mYzI1ZWUzZjVmYjA0ZDM5OGFlOTQ0YzcxOTgwMzVjOC5iaW5kUG9wdXAocG9wdXBfOGNkMDdiNWY0OTdiNGI3NGE2YmU5NzMzNzJmZmViZDIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDYwOTBlY2E3MGFmNDQyYTgxY2VhOWMyZWFiOGJkYzQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41OTgyNjgzNTk1OTk5MSwtNzQuMDc2Njc0MzYyNzkwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84ODI2MTUzNmE5YTU0NjBhODBlMzc0ODg1NGU3MDRhMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82YWUxNjcyMTVkMzU0NWM3OTA1OGNjZjZlOTUwYzg3MSA9ICQoJzxkaXYgaWQ9Imh0bWxfNmFlMTY3MjE1ZDM1NDVjNzkwNThjY2Y2ZTk1MGM4NzEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkdyYXNtZXJlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84ODI2MTUzNmE5YTU0NjBhODBlMzc0ODg1NGU3MDRhMy5zZXRDb250ZW50KGh0bWxfNmFlMTY3MjE1ZDM1NDVjNzkwNThjY2Y2ZTk1MGM4NzEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDYwOTBlY2E3MGFmNDQyYTgxY2VhOWMyZWFiOGJkYzQuYmluZFBvcHVwKHBvcHVwXzg4MjYxNTM2YTlhNTQ2MGE4MGUzNzQ4ODU0ZTcwNGEzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzBlZjYzYzgxZGQ4MDQ1YjBiN2RmMWVhZjE5MmIxNWM3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNTk2MzI4OTEzNzk1MTMsLTc0LjA4NzUxMTE4MDA1NTc4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FhMjQ1M2MxYzQ3NTRmZDBhMGFkOWE4YmNjM2JjMTQzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzA2ZGEwZDg2NzQyZDQxNGZiNjE0ODM5NDUzZTdkMTkyID0gJCgnPGRpdiBpZD0iaHRtbF8wNmRhMGQ4Njc0MmQ0MTRmYjYxNDgzOTQ1M2U3ZDE5MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T2xkIFRvd248L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FhMjQ1M2MxYzQ3NTRmZDBhMGFkOWE4YmNjM2JjMTQzLnNldENvbnRlbnQoaHRtbF8wNmRhMGQ4Njc0MmQ0MTRmYjYxNDgzOTQ1M2U3ZDE5Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wZWY2M2M4MWRkODA0NWIwYjdkZjFlYWYxOTJiMTVjNy5iaW5kUG9wdXAocG9wdXBfYWEyNDUzYzFjNDc1NGZkMGEwYWQ5YThiY2MzYmMxNDMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjhkYWQyMmEwMGVmNDE0OTkyZTNiZjZlMTYyNTQ5YTQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41ODg2NzI5NDgxOTkyNzUsLTc0LjA5NjM5OTA1MzEyNTIxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQzNzYyNTc1ODljYjQ3ZTNhZTg4ZTY3NjVkYWM0NDJiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzdmNDRiMWI2ZTg4YzRiNjFhZjEzY2U1M2JhNTlkZTg3ID0gJCgnPGRpdiBpZD0iaHRtbF83ZjQ0YjFiNmU4OGM0YjYxYWYxM2NlNTNiYTU5ZGU4NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RG9uZ2FuIEhpbGxzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80Mzc2MjU3NTg5Y2I0N2UzYWU4OGU2NzY1ZGFjNDQyYi5zZXRDb250ZW50KGh0bWxfN2Y0NGIxYjZlODhjNGI2MWFmMTNjZTUzYmE1OWRlODcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjhkYWQyMmEwMGVmNDE0OTkyZTNiZjZlMTYyNTQ5YTQuYmluZFBvcHVwKHBvcHVwXzQzNzYyNTc1ODljYjQ3ZTNhZTg4ZTY3NjVkYWM0NDJiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzEwMmZiMzBmOTI4MjRhZDBiYmY2N2Y4YzE1YzA2YWFjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNTczNTI2OTA1NzQyODMsLTc0LjA5MzQ4MjY2MzAzNTkxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU1NThiMTdiYjI5NjRiNTM5NWYzOGQyMDUyZjJhMThjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M1ZTgyMjNhODc0MjQ5NmY5YTNhNmQ5YzBmZDZiNzQ1ID0gJCgnPGRpdiBpZD0iaHRtbF9jNWU4MjIzYTg3NDI0OTZmOWEzYTZkOWMwZmQ2Yjc0NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWlkbGFuZCBCZWFjaDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTU1OGIxN2JiMjk2NGI1Mzk1ZjM4ZDIwNTJmMmExOGMuc2V0Q29udGVudChodG1sX2M1ZTgyMjNhODc0MjQ5NmY5YTNhNmQ5YzBmZDZiNzQ1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzEwMmZiMzBmOTI4MjRhZDBiYmY2N2Y4YzE1YzA2YWFjLmJpbmRQb3B1cChwb3B1cF81NTU4YjE3YmIyOTY0YjUzOTVmMzhkMjA1MmYyYTE4Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zZDdhYzAyZmQ2ZDc0MWNjYWU3NjA3ZmU1NDE5YTJkZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU3NjIxNTU4NzExNzg4LC03NC4xMDU4NTU5ODU0NTQzNF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iN2Y1NWVmZDBhZjg0NTk2YTk0ZjY0N2Q4YzI3M2Q0OSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85MTYxMmUxY2IzOWY0NGMzYmViZjYzMzhlMTc3NTdiMCA9ICQoJzxkaXYgaWQ9Imh0bWxfOTE2MTJlMWNiMzlmNDRjM2JlYmY2MzM4ZTE3NzU3YjAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkdyYW50IENpdHk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2I3ZjU1ZWZkMGFmODQ1OTZhOTRmNjQ3ZDhjMjczZDQ5LnNldENvbnRlbnQoaHRtbF85MTYxMmUxY2IzOWY0NGMzYmViZjYzMzhlMTc3NTdiMCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zZDdhYzAyZmQ2ZDc0MWNjYWU3NjA3ZmU1NDE5YTJkZi5iaW5kUG9wdXAocG9wdXBfYjdmNTVlZmQwYWY4NDU5NmE5NGY2NDdkOGMyNzNkNDkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzFjZGJmNzhjYjhjNDJjYmJjN2I2YjU2ZWY1MWUxZDMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41NjQyNTU0OTMwNzMzNSwtNzQuMTA0MzI3MDc0NjkxMjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmIwNjMwNmI1Mjk1NGFjOWI3MjY0NTQ0ZWY2YzQwZDkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2RjZGQ5Mzg5YmU5NGIwODg2MTdhN2U5MDRlYzYzMDEgPSAkKCc8ZGl2IGlkPSJodG1sXzNkY2RkOTM4OWJlOTRiMDg4NjE3YTdlOTA0ZWM2MzAxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OZXcgRG9ycCBCZWFjaDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmIwNjMwNmI1Mjk1NGFjOWI3MjY0NTQ0ZWY2YzQwZDkuc2V0Q29udGVudChodG1sXzNkY2RkOTM4OWJlOTRiMDg4NjE3YTdlOTA0ZWM2MzAxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzcxY2RiZjc4Y2I4YzQyY2JiYzdiNmI1NmVmNTFlMWQzLmJpbmRQb3B1cChwb3B1cF8yYjA2MzA2YjUyOTU0YWM5YjcyNjQ1NDRlZjZjNDBkOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jOWNhMzcyZTg2MWU0ZGE0YTUxOTA0ZTg4N2Q1NGFkZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU1Mzk4ODAwODU4NDYyLC03NC4xMzkxNjYyMjE3NTc2OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yNWQ4ZDUyZWUwNTc0NDYyYTdkNmM4ZWY3YTU0MGNlMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jYjkzNmE3MzZmODk0NTQxYTNjN2JjMzg0NTQ0ZjNjOSA9ICQoJzxkaXYgaWQ9Imh0bWxfY2I5MzZhNzM2Zjg5NDU0MWEzYzdiYzM4NDU0NGYzYzkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJheSBUZXJyYWNlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yNWQ4ZDUyZWUwNTc0NDYyYTdkNmM4ZWY3YTU0MGNlMy5zZXRDb250ZW50KGh0bWxfY2I5MzZhNzM2Zjg5NDU0MWEzYzdiYzM4NDU0NGYzYzkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzljYTM3MmU4NjFlNGRhNGE1MTkwNGU4ODdkNTRhZGQuYmluZFBvcHVwKHBvcHVwXzI1ZDhkNTJlZTA1NzQ0NjJhN2Q2YzhlZjdhNTQwY2UzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QzNDMwOTMwYzdlMjQ1Y2U4OTUwMTk1MmZiYWNmNWEyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNTMxOTExOTIwNDg5NjA1LC03NC4xOTE3NDEwNTc0NzgxNF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kNzM3M2YyODczZmM0NTMxODhhMWEwNmI3N2M3ZGM4ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iMTQzNjU0YzFiMDY0NjVjOGViODYwY2FjYjVlYzEzMCA9ICQoJzxkaXYgaWQ9Imh0bWxfYjE0MzY1NGMxYjA2NDY1YzhlYjg2MGNhY2I1ZWMxMzAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkh1Z3Vlbm90PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kNzM3M2YyODczZmM0NTMxODhhMWEwNmI3N2M3ZGM4ZS5zZXRDb250ZW50KGh0bWxfYjE0MzY1NGMxYjA2NDY1YzhlYjg2MGNhY2I1ZWMxMzApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDM0MzA5MzBjN2UyNDVjZTg5NTAxOTUyZmJhY2Y1YTIuYmluZFBvcHVwKHBvcHVwX2Q3MzczZjI4NzNmYzQ1MzE4OGExYTA2Yjc3YzdkYzhlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzEzYTIxNjEwMjFiODRkYmNhNTliMmRmNmExNTZiMDYxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNTI0Njk5Mzc2MTE4MTM2LC03NC4yMTk4MzEwNjYxNjc3N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jYmEyMWFkNGFhZjY0MDAxOWExZjk0MWM1MTNlZjA0YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mMzliNDQxZmMyNWQ0ZmMyOTI2YWQyYzA5OWI0MDQ1MyA9ICQoJzxkaXYgaWQ9Imh0bWxfZjM5YjQ0MWZjMjVkNGZjMjkyNmFkMmMwOTliNDA0NTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlBsZWFzYW50IFBsYWluczwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2JhMjFhZDRhYWY2NDAwMTlhMWY5NDFjNTEzZWYwNGMuc2V0Q29udGVudChodG1sX2YzOWI0NDFmYzI1ZDRmYzI5MjZhZDJjMDk5YjQwNDUzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzEzYTIxNjEwMjFiODRkYmNhNTliMmRmNmExNTZiMDYxLmJpbmRQb3B1cChwb3B1cF9jYmEyMWFkNGFhZjY0MDAxOWExZjk0MWM1MTNlZjA0Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYTg5M2FiYTRmZWI0OTBjYTk2ZGQzZDNlNzA4ZDA0ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjUwNjA4MTY1MzQ2MzA1LC03NC4yMjk1MDM1MDI2MDAyN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84MmM0NGY4YjY4YWI0YmNjYWM4ZTM3ODhjM2UxY2ExYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jODRiNDIyOTVjNjk0M2JmOWExZmViYzMyZTBmZDg5NCA9ICQoJzxkaXYgaWQ9Imh0bWxfYzg0YjQyMjk1YzY5NDNiZjlhMWZlYmMzMmUwZmQ4OTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJ1dGxlciBNYW5vcjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODJjNDRmOGI2OGFiNGJjY2FjOGUzNzg4YzNlMWNhMWMuc2V0Q29udGVudChodG1sX2M4NGI0MjI5NWM2OTQzYmY5YTFmZWJjMzJlMGZkODk0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2NhODkzYWJhNGZlYjQ5MGNhOTZkZDNkM2U3MDhkMDRkLmJpbmRQb3B1cChwb3B1cF84MmM0NGY4YjY4YWI0YmNjYWM4ZTM3ODhjM2UxY2ExYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xMGFlZmRjMTI3ZjA0ZDc0OGQwNmIxOTZhOTVkZmYwNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjUzMDUzMTQ4MjgzMzE0LC03NC4yMzIxNTc3NTg5NjUyNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kMzIxMzRjOWNkMGI0Mjg5YTM0YjE4MTRiMzBkNzMyMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jZmE0Yjc1OTk5ZTc0MTU5YmRiNTUzN2UzMWFkNjcxZCA9ICQoJzxkaXYgaWQ9Imh0bWxfY2ZhNGI3NTk5OWU3NDE1OWJkYjU1MzdlMzFhZDY3MWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNoYXJsZXN0b248L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2QzMjEzNGM5Y2QwYjQyODlhMzRiMTgxNGIzMGQ3MzIyLnNldENvbnRlbnQoaHRtbF9jZmE0Yjc1OTk5ZTc0MTU5YmRiNTUzN2UzMWFkNjcxZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xMGFlZmRjMTI3ZjA0ZDc0OGQwNmIxOTZhOTVkZmYwNC5iaW5kUG9wdXAocG9wdXBfZDMyMTM0YzljZDBiNDI4OWEzNGIxODE0YjMwZDczMjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzY4MzM0MDEyN2Q3NDcwYWFhNDFkMWZjZWFjM2EyNGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41NDk0MDQwMDY1MDA3MiwtNzQuMjE1NzI4NTExMTM5NTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2ViNmVkNGIwNTRlNGUzM2E0ZmY0ZGEwOWY1MzJiYmEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWMxNzI2YTg0YjI0NDQ1ZmE2OWQ4YWIzMDY1N2U4ODUgPSAkKCc8ZGl2IGlkPSJodG1sXzljMTcyNmE4NGIyNDQ0NWZhNjlkOGFiMzA2NTdlODg1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Sb3NzdmlsbGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdlYjZlZDRiMDU0ZTRlMzNhNGZmNGRhMDlmNTMyYmJhLnNldENvbnRlbnQoaHRtbF85YzE3MjZhODRiMjQ0NDVmYTY5ZDhhYjMwNjU3ZTg4NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zNjgzMzQwMTI3ZDc0NzBhYWE0MWQxZmNlYWMzYTI0ZS5iaW5kUG9wdXAocG9wdXBfN2ViNmVkNGIwNTRlNGUzM2E0ZmY0ZGEwOWY1MzJiYmEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTMwOTA3ZWFhZmEyNDA0MjhlN2U5ZDFmNzZjOTg4OTYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41NDkyODU4MjI3ODMyMSwtNzQuMTg1ODg2NzQ1ODM4OTNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjdlODg3YWY3ZmNkNDJmNmIyZTkwMGNkYzZiNzVmMTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGE0MjFkY2ZiYTNlNDZmMTg4OGM4YmQ4YjgwZjI2ZDcgPSAkKCc8ZGl2IGlkPSJodG1sXzhhNDIxZGNmYmEzZTQ2ZjE4ODhjOGJkOGI4MGYyNmQ3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BcmRlbiBIZWlnaHRzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mN2U4ODdhZjdmY2Q0MmY2YjJlOTAwY2RjNmI3NWYxMS5zZXRDb250ZW50KGh0bWxfOGE0MjFkY2ZiYTNlNDZmMTg4OGM4YmQ4YjgwZjI2ZDcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTMwOTA3ZWFhZmEyNDA0MjhlN2U5ZDFmNzZjOTg4OTYuYmluZFBvcHVwKHBvcHVwX2Y3ZTg4N2FmN2ZjZDQyZjZiMmU5MDBjZGM2Yjc1ZjExKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JiOGQ1ZDkzNGQ0ZDQ2ZTI4NjQ2Y2MyYzY5NzM5MmY0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNTU1Mjk1MjM2MTczMTk0LC03NC4xNzA3OTQxNDc4NjA5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kOThkYTZkYWE4ODk0MDM1ODI2M2RhZDQxYjAxNjIyMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83YzYwNzRhYzlkMWY0NjFlODk5Mjg2OGZhYTIzNjdjZSA9ICQoJzxkaXYgaWQ9Imh0bWxfN2M2MDc0YWM5ZDFmNDYxZTg5OTI4NjhmYWEyMzY3Y2UiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkdyZWVucmlkZ2U8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q5OGRhNmRhYTg4OTQwMzU4MjYzZGFkNDFiMDE2MjIxLnNldENvbnRlbnQoaHRtbF83YzYwNzRhYzlkMWY0NjFlODk5Mjg2OGZhYTIzNjdjZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iYjhkNWQ5MzRkNGQ0NmUyODY0NmNjMmM2OTczOTJmNC5iaW5kUG9wdXAocG9wdXBfZDk4ZGE2ZGFhODg5NDAzNTgyNjNkYWQ0MWIwMTYyMjEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGEwNzUxMmM4NTc0NDFiZjg1MmE5YThjYmYxNTJmMmYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41ODkxMzg5NDg3NTI4MSwtNzQuMTU5MDIyMDgxNTY2MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzg2MTU0NWUxNzk2NDg0NGI4YTliN2U1ZTliYWZjNjkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2U4ZjdmMTkxZmI4NGRjMThkOTUyNWNlYzc4YzA2MTkgPSAkKCc8ZGl2IGlkPSJodG1sXzNlOGY3ZjE5MWZiODRkYzE4ZDk1MjVjZWM3OGMwNjE5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5IZWFydGxhbmQgVmlsbGFnZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzg2MTU0NWUxNzk2NDg0NGI4YTliN2U1ZTliYWZjNjkuc2V0Q29udGVudChodG1sXzNlOGY3ZjE5MWZiODRkYzE4ZDk1MjVjZWM3OGMwNjE5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2RhMDc1MTJjODU3NDQxYmY4NTJhOWE4Y2JmMTUyZjJmLmJpbmRQb3B1cChwb3B1cF83ODYxNTQ1ZTE3OTY0ODQ0YjhhOWI3ZTVlOWJhZmM2OSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wZDVjZTZkN2ZmZTI0Mjc4OWYwMDMzNTYyNjYwY2MzZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU5NDcyNjAyNzQ2Mjk1LC03NC4xODk1NjA0NTUxOTY5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI2ZWU0NDA3OGJhYjRmNDY5NzVkZmMwMjRjMDQwZjk0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzlkZTdjYTc4MTFmZDRiMzBhNDgwZjQ2YWM2ODljZTU4ID0gJCgnPGRpdiBpZD0iaHRtbF85ZGU3Y2E3ODExZmQ0YjMwYTQ4MGY0NmFjNjg5Y2U1OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q2hlbHNlYTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjZlZTQ0MDc4YmFiNGY0Njk3NWRmYzAyNGMwNDBmOTQuc2V0Q29udGVudChodG1sXzlkZTdjYTc4MTFmZDRiMzBhNDgwZjQ2YWM2ODljZTU4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzBkNWNlNmQ3ZmZlMjQyNzg5ZjAwMzM1NjI2NjBjYzNmLmJpbmRQb3B1cChwb3B1cF8yNmVlNDQwNzhiYWI0ZjQ2OTc1ZGZjMDI0YzA0MGY5NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iMmQxNDM4YmViYTk0OGQ0ODcwOWJmYWQyMzRkMGIyNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjYwNTc3ODY4NDUyMzU4LC03NC4xODcyNTYzODM4MTU2N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hM2QwYzJhM2ViZjI0NTVjOTcyOWFlNmExNWFhODdiMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84OTRlMDJjN2JjNWQ0NzM2OTYzMmRhZTc5MzJkYTVjYSA9ICQoJzxkaXYgaWQ9Imh0bWxfODk0ZTAyYzdiYzVkNDczNjk2MzJkYWU3OTMyZGE1Y2EiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJsb29tZmllbGQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2EzZDBjMmEzZWJmMjQ1NWM5NzI5YWU2YTE1YWE4N2IyLnNldENvbnRlbnQoaHRtbF84OTRlMDJjN2JjNWQ0NzM2OTYzMmRhZTc5MzJkYTVjYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iMmQxNDM4YmViYTk0OGQ0ODcwOWJmYWQyMzRkMGIyNy5iaW5kUG9wdXAocG9wdXBfYTNkMGMyYTNlYmYyNDU1Yzk3MjlhZTZhMTVhYTg3YjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDNlOWU3M2Y3ZGVmNGM0OWE2N2UxY2FhNjM5NWNjNzAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MDk1OTE4MDA0MjAzLC03NC4xNTk0MDk0ODY1NzEyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kNGQ4MjViY2Q2OWQ0ZjA2ODkxNmZkYTEwYzQ0MGIzNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yOGFmNDZlOGExNGU0NzM1YmI0YTQ0OTQzYTllOWEzOSA9ICQoJzxkaXYgaWQ9Imh0bWxfMjhhZjQ2ZThhMTRlNDczNWJiNGE0NDk0M2E5ZTlhMzkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJ1bGxzIEhlYWQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q0ZDgyNWJjZDY5ZDRmMDY4OTE2ZmRhMTBjNDQwYjM0LnNldENvbnRlbnQoaHRtbF8yOGFmNDZlOGExNGU0NzM1YmI0YTQ0OTQzYTllOWEzOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80M2U5ZTczZjdkZWY0YzQ5YTY3ZTFjYWE2Mzk1Y2M3MC5iaW5kUG9wdXAocG9wdXBfZDRkODI1YmNkNjlkNGYwNjg5MTZmZGExMGM0NDBiMzQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTVkNmY5ZThhYTVlNDM0OGI5MzNkNTkyZWU4YjYxM2QgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43ODI2ODI1NjcxMjU3LC03My45NTMyNTY0NjgzNzExMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jZTcxZTM3MGNkMDY0YzkyOWQ2NjhiNjc4MDM1NWM3NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kNDBjMTUzY2VmM2U0ZjZhOGFiMzgyNmJjMTUyNmUzYSA9ICQoJzxkaXYgaWQ9Imh0bWxfZDQwYzE1M2NlZjNlNGY2YThhYjM4MjZiYzE1MjZlM2EiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNhcm5lZ2llIEhpbGw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NlNzFlMzcwY2QwNjRjOTI5ZDY2OGI2NzgwMzU1Yzc3LnNldENvbnRlbnQoaHRtbF9kNDBjMTUzY2VmM2U0ZjZhOGFiMzgyNmJjMTUyNmUzYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lNWQ2ZjllOGFhNWU0MzQ4YjkzM2Q1OTJlZThiNjEzZC5iaW5kUG9wdXAocG9wdXBfY2U3MWUzNzBjZDA2NGM5MjlkNjY4YjY3ODAzNTVjNzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGU2ZDQ5MDQ1ZmI5NGRhOWIwZmU3OTE0NGRlMWE5NGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MjMyNTkwMTg4NTc2OCwtNzMuOTg4NDMzNjgwMjM1OTddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjFkNWVjMjUzOTljNDBlZGEyM2JlODFkMWIzMTQwMTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfN2Y4MGVlZWMzNWU5NGFiNWJmODdmMTYwNGI3MGIyZDMgPSAkKCc8ZGl2IGlkPSJodG1sXzdmODBlZWVjMzVlOTRhYjViZjg3ZjE2MDRiNzBiMmQzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Ob2hvPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mMWQ1ZWMyNTM5OWM0MGVkYTIzYmU4MWQxYjMxNDAxNS5zZXRDb250ZW50KGh0bWxfN2Y4MGVlZWMzNWU5NGFiNWJmODdmMTYwNGI3MGIyZDMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOGU2ZDQ5MDQ1ZmI5NGRhOWIwZmU3OTE0NGRlMWE5NGMuYmluZFBvcHVwKHBvcHVwX2YxZDVlYzI1Mzk5YzQwZWRhMjNiZTgxZDFiMzE0MDE1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI3M2VmNmE4OWM2YjRhYWNiOGQzNjc3NWU3MDkwNDg5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzE1MjI4OTIwNDYyODIsLTc0LjAwNTQxNTI5ODczMzU1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc4YzBlMzdhNTRhOTRlM2Y5MjliMjA3MGVhNTE1MTU3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzIyODc4ZjlmYWE0MDRlYjA5NmZmZmVkYzg3YTY5OWZkID0gJCgnPGRpdiBpZD0iaHRtbF8yMjg3OGY5ZmFhNDA0ZWIwOTZmZmZlZGM4N2E2OTlmZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q2l2aWMgQ2VudGVyPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83OGMwZTM3YTU0YTk0ZTNmOTI5YjIwNzBlYTUxNTE1Ny5zZXRDb250ZW50KGh0bWxfMjI4NzhmOWZhYTQwNGViMDk2ZmZmZWRjODdhNjk5ZmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMjczZWY2YTg5YzZiNGFhY2I4ZDM2Nzc1ZTcwOTA0ODkuYmluZFBvcHVwKHBvcHVwXzc4YzBlMzdhNTRhOTRlM2Y5MjliMjA3MGVhNTE1MTU3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E4MTIzOGZkMmE0OTRlNmU4YWFlNGQ2NzM2NDQ3YzdhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzQ4NTA5NjY0MzEyMiwtNzMuOTg4NzEzMTMyODUyNDddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZmUxZWQ3MTc5MTYwNGI4YTkyYTE3NGRkMDY5ZTIzYjggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTU4ZTM1MzgzMjQ2NDMxNzliMDcyODBkM2NhZTFkMWQgPSAkKCc8ZGl2IGlkPSJodG1sX2E1OGUzNTM4MzI0NjQzMTc5YjA3MjgwZDNjYWUxZDFkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NaWR0b3duIFNvdXRoPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mZTFlZDcxNzkxNjA0YjhhOTJhMTc0ZGQwNjllMjNiOC5zZXRDb250ZW50KGh0bWxfYTU4ZTM1MzgzMjQ2NDMxNzliMDcyODBkM2NhZTFkMWQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYTgxMjM4ZmQyYTQ5NGU2ZThhYWU0ZDY3MzY0NDdjN2EuYmluZFBvcHVwKHBvcHVwX2ZlMWVkNzE3OTE2MDRiOGE5MmExNzRkZDA2OWUyM2I4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk4NzBmYjBkNGU3ZTQ3MzM5MGVlZmUxMmFiNzkxZGRhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNTY5NjA1OTQyNzU1MDUsLTc0LjEzNDA1NzI5ODYyNTddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmUxOWQ4MDUwYTJiNDNiZjkyYTVlOWI4NGFiNTNlYTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjJlYzQzNDY0MGM4NDI0M2E5MGMxNmYzNWU4YjU2ZDggPSAkKCc8ZGl2IGlkPSJodG1sX2YyZWM0MzQ2NDBjODQyNDNhOTBjMTZmMzVlOGI1NmQ4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5SaWNobW9uZCBUb3duPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82ZTE5ZDgwNTBhMmI0M2JmOTJhNWU5Yjg0YWI1M2VhOC5zZXRDb250ZW50KGh0bWxfZjJlYzQzNDY0MGM4NDI0M2E5MGMxNmYzNWU4YjU2ZDgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTg3MGZiMGQ0ZTdlNDczMzkwZWVmZTEyYWI3OTFkZGEuYmluZFBvcHVwKHBvcHVwXzZlMTlkODA1MGEyYjQzYmY5MmE1ZTliODRhYjUzZWE4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzlmOTZlMTU5ZTIyMDRhMmQ5Zjg2NmEwMzU3NzZmM2ZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjA5NzE5MzQwNzkyODQsLTc0LjA2NjY3NzY2MDYxNzcxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzJkOWYwYWRlZTcxMjQ0MGQ5MzUyN2JiYTI3MjY5YTFjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzY4YzAwNzFlY2M2YTRlMDI5YjkwOThjZmY4NTQxNzRkID0gJCgnPGRpdiBpZD0iaHRtbF82OGMwMDcxZWNjNmE0ZTAyOWI5MDk4Y2ZmODU0MTc0ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U2hvcmUgQWNyZXM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzJkOWYwYWRlZTcxMjQ0MGQ5MzUyN2JiYTI3MjY5YTFjLnNldENvbnRlbnQoaHRtbF82OGMwMDcxZWNjNmE0ZTAyOWI5MDk4Y2ZmODU0MTc0ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85Zjk2ZTE1OWUyMjA0YTJkOWY4NjZhMDM1Nzc2ZjNmYS5iaW5kUG9wdXAocG9wdXBfMmQ5ZjBhZGVlNzEyNDQwZDkzNTI3YmJhMjcyNjlhMWMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWVhNTZiOTE0MThhNDBlNmI4OWU5YWY4OGY5YWY2NTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MTkxNzg0NTIwMjg0MywtNzQuMDcyNjQyNDQ1NDg0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M1ZDdiOTU5NTE0YTRjNjg4ODQ3YmYxN2NhZjZlODFjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2MwNjE3YTYwOGNjMjRhMjlhMWVkOWY3NGJjYzI0MTU1ID0gJCgnPGRpdiBpZD0iaHRtbF9jMDYxN2E2MDhjYzI0YTI5YTFlZDlmNzRiY2MyNDE1NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q2xpZnRvbjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzVkN2I5NTk1MTRhNGM2ODg4NDdiZjE3Y2FmNmU4MWMuc2V0Q29udGVudChodG1sX2MwNjE3YTYwOGNjMjRhMjlhMWVkOWY3NGJjYzI0MTU1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2VlYTU2YjkxNDE4YTQwZTZiODllOWFmODhmOWFmNjUyLmJpbmRQb3B1cChwb3B1cF9jNWQ3Yjk1OTUxNGE0YzY4ODg0N2JmMTdjYWY2ZTgxYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iZGIyOWU3YjJlYzY0YmM1YjBjOTJhMTYzODRjMmJjZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjYwNDQ3MzE4OTY4NzksLTc0LjA4NDAyMzY0NzQwMzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzVjNzRmOTEyMTYwMjQ5NmNhNzMxZTVlNWFmODQzOGRhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI4Mjg4ZDBhNDE0MTQxM2U5ODJkNDQwMjUzZWIzMjM4ID0gJCgnPGRpdiBpZD0iaHRtbF8yODI4OGQwYTQxNDE0MTNlOTgyZDQ0MDI1M2ViMzIzOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q29uY29yZDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNWM3NGY5MTIxNjAyNDk2Y2E3MzFlNWU1YWY4NDM4ZGEuc2V0Q29udGVudChodG1sXzI4Mjg4ZDBhNDE0MTQxM2U5ODJkNDQwMjUzZWIzMjM4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2JkYjI5ZTdiMmVjNjRiYzViMGM5MmExNjM4NGMyYmNmLmJpbmRQb3B1cChwb3B1cF81Yzc0ZjkxMjE2MDI0OTZjYTczMWU1ZTVhZjg0MzhkYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mOWY5OTFiOTkxZGI0ZjFiOTJiMzU0MTAwMzIyZmE3MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjYwNjc5NDM5NDgwMSwtNzQuMDk3NzYyMDY5NzI1MjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzUwZjZkODMyYmQ2NGJhYjhkYTE3NjdjNGRmN2NhYWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDU4MzJmMzNhNWI1NDI1NjgzYzljNTVmNDA4Y2YwZTYgPSAkKCc8ZGl2IGlkPSJodG1sXzQ1ODMyZjMzYTViNTQyNTY4M2M5YzU1ZjQwOGNmMGU2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FbWVyc29uIEhpbGw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM1MGY2ZDgzMmJkNjRiYWI4ZGExNzY3YzRkZjdjYWFlLnNldENvbnRlbnQoaHRtbF80NTgzMmYzM2E1YjU0MjU2ODNjOWM1NWY0MDhjZjBlNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mOWY5OTFiOTkxZGI0ZjFiOTJiMzU0MTAwMzIyZmE3Mi5iaW5kUG9wdXAocG9wdXBfMzUwZjZkODMyYmQ2NGJhYjhkYTE3NjdjNGRmN2NhYWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTg4MDdkMTM0OTlmNDk0Mzk5YTY4NzkwYzhlZjg2OTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MzU2MzAwMDY4MTE1MSwtNzQuMDk4MDUwNjIzNzM4ODddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZmVmOGMzN2ZhNTNkNGNiZGIwYWNmNzgyOGE5MDEwNjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTdhMjIzZjRlNzc4NDEzMjg0NzhiZjA4ODI0YmEyN2IgPSAkKCc8ZGl2IGlkPSJodG1sXzk3YTIyM2Y0ZTc3ODQxMzI4NDc4YmYwODgyNGJhMjdiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5SYW5kYWxsIE1hbm9yPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mZWY4YzM3ZmE1M2Q0Y2JkYjBhY2Y3ODI4YTkwMTA2Ny5zZXRDb250ZW50KGh0bWxfOTdhMjIzZjRlNzc4NDEzMjg0NzhiZjA4ODI0YmEyN2IpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTg4MDdkMTM0OTlmNDk0Mzk5YTY4NzkwYzhlZjg2OTkuYmluZFBvcHVwKHBvcHVwX2ZlZjhjMzdmYTUzZDRjYmRiMGFjZjc4MjhhOTAxMDY3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzBhODBjYmFiNTg3ODRhMTc4NWZmNDI2OTEwY2EyOTc5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjM4NDMyODM3OTQ3OTUsLTc0LjE4NjIyMzMxNzQ5ODIzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzAzMWM0NjczZTcyODQ4YTFhYTIxMjk4NDYwZGY1ZTY3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzA3MzRjNzA2MGMxNjRkZDQ5YWU0ZTcyMWJkNmVjYjczID0gJCgnPGRpdiBpZD0iaHRtbF8wNzM0YzcwNjBjMTY0ZGQ0OWFlNGU3MjFiZDZlY2I3MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SG93bGFuZCBIb29rPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wMzFjNDY3M2U3Mjg0OGExYWEyMTI5ODQ2MGRmNWU2Ny5zZXRDb250ZW50KGh0bWxfMDczNGM3MDYwYzE2NGRkNDlhZTRlNzIxYmQ2ZWNiNzMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMGE4MGNiYWI1ODc4NGExNzg1ZmY0MjY5MTBjYTI5NzkuYmluZFBvcHVwKHBvcHVwXzAzMWM0NjczZTcyODQ4YTFhYTIxMjk4NDYwZGY1ZTY3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U5NWVmZjI2NmU3NzRjYjk4NTE2MGU1MDUxYWViY2QwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjMwMTQ2NzQxMTkzODI2LC03NC4xNDE4MTY3ODk2ODg5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U1YTI0ZjgwZWRkODRhMWY4MDBlODc0YmJkYmNiMWJkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM4NDAyMjYxZTQ3MzRiOTQ4MzUzOTlkNjdiMGNhOTlhID0gJCgnPGRpdiBpZD0iaHRtbF8zODQwMjI2MWU0NzM0Yjk0ODM1Mzk5ZDY3YjBjYTk5YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RWxtIFBhcms8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U1YTI0ZjgwZWRkODRhMWY4MDBlODc0YmJkYmNiMWJkLnNldENvbnRlbnQoaHRtbF8zODQwMjI2MWU0NzM0Yjk0ODM1Mzk5ZDY3YjBjYTk5YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lOTVlZmYyNjZlNzc0Y2I5ODUxNjBlNTA1MWFlYmNkMC5iaW5kUG9wdXAocG9wdXBfZTVhMjRmODBlZGQ4NGExZjgwMGU4NzRiYmRiY2IxYmQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWY1MzUxYmNmMDM0NGI1NDg5ODU2NjE3ZTRjMzlmNzMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42NTIxMTc0NTE3OTM0OTQsLTczLjkxNjY1MzMxOTc4MDQ4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQ3YTU0YzM5ZDcyMzQ1Zjg5MGJjYzdlMmJmMWU1M2ZlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzA2ODdiNjUxYjczOTRmYjFhNjMzZDM3MmE5NDkyNzFmID0gJCgnPGRpdiBpZD0iaHRtbF8wNjg3YjY1MWI3Mzk0ZmIxYTYzM2QzNzJhOTQ5MjcxZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UmVtc2VuIFZpbGxhZ2U8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQ3YTU0YzM5ZDcyMzQ1Zjg5MGJjYzdlMmJmMWU1M2ZlLnNldENvbnRlbnQoaHRtbF8wNjg3YjY1MWI3Mzk0ZmIxYTYzM2QzNzJhOTQ5MjcxZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81ZjUzNTFiY2YwMzQ0YjU0ODk4NTY2MTdlNGMzOWY3My5iaW5kUG9wdXAocG9wdXBfNDdhNTRjMzlkNzIzNDVmODkwYmNjN2UyYmYxZTUzZmUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTlmNjdjZjJkNDg2NDJlZjg3NWJmNTMyNGJmZjY0ZTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42NjI3NDQyNzk2OTY2LC03My44ODUxMTc3NjM3OTI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ZmVlOTQ4YzZkMDE0YWJhYWI2ZmEyYzkxZDA2NWNkNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hYWU1NjVkZWM3NjY0ZGQ3YWU5NTI2NmU5ODczMWJmNyA9ICQoJzxkaXYgaWQ9Imh0bWxfYWFlNTY1ZGVjNzY2NGRkN2FlOTUyNjZlOTg3MzFiZjciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5ldyBMb3RzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80ZmVlOTQ4YzZkMDE0YWJhYWI2ZmEyYzkxZDA2NWNkNy5zZXRDb250ZW50KGh0bWxfYWFlNTY1ZGVjNzY2NGRkN2FlOTUyNjZlOTg3MzFiZjcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMTlmNjdjZjJkNDg2NDJlZjg3NWJmNTMyNGJmZjY0ZTguYmluZFBvcHVwKHBvcHVwXzRmZWU5NDhjNmQwMTRhYmFhYjZmYTJjOTFkMDY1Y2Q3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2UwZDU3Y2Q5YmRhODQwM2E4ZmNmY2UwYjM2MzIzNzQzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjMxMzE3NTUwMzk2NjcsLTczLjkwMjMzNDc0Mjk1ODM2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMxNzViMGRiMzQxMDRhMmY4OWZiNDc5ZGNhNWFhNjYwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2FhZjA3MTAzMWIyOTQwMDc5MGJiYTQxMGRkZmRmYTJkID0gJCgnPGRpdiBpZD0iaHRtbF9hYWYwNzEwMzFiMjk0MDA3OTBiYmE0MTBkZGZkZmEyZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UGFlcmRlZ2F0IEJhc2luPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMTc1YjBkYjM0MTA0YTJmODlmYjQ3OWRjYTVhYTY2MC5zZXRDb250ZW50KGh0bWxfYWFmMDcxMDMxYjI5NDAwNzkwYmJhNDEwZGRmZGZhMmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTBkNTdjZDliZGE4NDAzYThmY2ZjZTBiMzYzMjM3NDMuYmluZFBvcHVwKHBvcHVwXzMxNzViMGRiMzQxMDRhMmY4OWZiNDc5ZGNhNWFhNjYwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IwYTRkMzE1ZmQ4MjRiMWY4ODIwYzE4NTM2YTZjNDM4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjE1OTc0MjM5NjIzMzYsLTczLjkxNTE1MzkxNTUwNDA0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc1MjU5ZjIxNDY3MTQ2MWZhYWJjNmI5N2QyYjI3YWZmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M3ZDE2ZmI0YThjYTRmMWJhOGE1YmJhNDlmZjQyYjM1ID0gJCgnPGRpdiBpZD0iaHRtbF9jN2QxNmZiNGE4Y2E0ZjFiYThhNWJiYTQ5ZmY0MmIzNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWlsbCBCYXNpbjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzUyNTlmMjE0NjcxNDYxZmFhYmM2Yjk3ZDJiMjdhZmYuc2V0Q29udGVudChodG1sX2M3ZDE2ZmI0YThjYTRmMWJhOGE1YmJhNDlmZjQyYjM1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2IwYTRkMzE1ZmQ4MjRiMWY4ODIwYzE4NTM2YTZjNDM4LmJpbmRQb3B1cChwb3B1cF83NTI1OWYyMTQ2NzE0NjFmYWFiYzZiOTdkMmIyN2FmZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yZjA0YzQzNTE1YzI0Yjk5OTk2ZTVlY2FjMTkyMmRkNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjcxMTQ1OTY0MzcwNDgyLC03My43OTY0NjQ2MjA4MTU5M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wNmI0ODA0N2FlZjI0MmUxOWY4YmZkOWY0YmFhNTM1ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iNWVkMWE2OTM4NzQ0MmY2OTNiYmFmY2I3M2U3ZGFiNCA9ICQoJzxkaXYgaWQ9Imh0bWxfYjVlZDFhNjkzODc0NDJmNjkzYmJhZmNiNzNlN2RhYjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkphbWFpY2EgSGlsbHM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzA2YjQ4MDQ3YWVmMjQyZTE5ZjhiZmQ5ZjRiYWE1MzVkLnNldENvbnRlbnQoaHRtbF9iNWVkMWE2OTM4NzQ0MmY2OTNiYmFmY2I3M2U3ZGFiNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yZjA0YzQzNTE1YzI0Yjk5OTk2ZTVlY2FjMTkyMmRkNC5iaW5kUG9wdXAocG9wdXBfMDZiNDgwNDdhZWYyNDJlMTlmOGJmZDlmNGJhYTUzNWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDdkMTg4ZGY4YjgyNDJjMzg4MTk2NjI2OGMxYWY2NGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MzM1MDAyNTQyOTc1NywtNzMuNzk2NzE2NzgwMjgzNDldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZThiNDQ5MGI1MDU5NGEyMjg5YzQ3ZDBjNGZkMTM3NmEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjgwODAwOTA2OGRiNDgxZjgzYmQ1MzEzNzgyOWUzNmYgPSAkKCc8ZGl2IGlkPSJodG1sXzY4MDgwMDkwNjhkYjQ4MWY4M2JkNTMxMzc4MjllMzZmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5VdG9waWE8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U4YjQ0OTBiNTA1OTRhMjI4OWM0N2QwYzRmZDEzNzZhLnNldENvbnRlbnQoaHRtbF82ODA4MDA5MDY4ZGI0ODFmODNiZDUzMTM3ODI5ZTM2Zik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wN2QxODhkZjhiODI0MmMzODgxOTY2MjY4YzFhZjY0Yy5iaW5kUG9wdXAocG9wdXBfZThiNDQ5MGI1MDU5NGEyMjg5YzQ3ZDBjNGZkMTM3NmEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODMxODE1OGYxZTczNGUwZDhlNzIyMThhNzg3NDBhMzggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MzQ5MzYxODA3NTQ3OCwtNzMuODA0ODYxMjAwNDA1MzddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTM2M2EyM2FiNzg0NDk2YWI4YjI4NzI0MmVmNmU1ZGMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGM5NTcyMDhhZTliNDA4MDhkMTEyNDJjZDJmZGIzYmQgPSAkKCc8ZGl2IGlkPSJodG1sXzRjOTU3MjA4YWU5YjQwODA4ZDExMjQyY2QyZmRiM2JkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Qb21vbm9rPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lMzYzYTIzYWI3ODQ0OTZhYjhiMjg3MjQyZWY2ZTVkYy5zZXRDb250ZW50KGh0bWxfNGM5NTcyMDhhZTliNDA4MDhkMTEyNDJjZDJmZGIzYmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODMxODE1OGYxZTczNGUwZDhlNzIyMThhNzg3NDBhMzguYmluZFBvcHVwKHBvcHVwX2UzNjNhMjNhYjc4NDQ5NmFiOGIyODcyNDJlZjZlNWRjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQwZDFmOWI3ZGNhMjQ4YzI5ODAwN2FkNmUyM2M3ZmY1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzcwMzE3MzkyOTk4MiwtNzMuODk0Njc5OTYyNzA1NzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGMzNTg2NDRmNjAyNDg2NmFlZGRkMWZkODc5ZTQyYjMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjI4MGRiOGMyOWUzNDI0OWI1YzkxZDJhZTg2N2U2NGEgPSAkKCc8ZGl2IGlkPSJodG1sX2YyODBkYjhjMjllMzQyNDliNWM5MWQyYWU4NjdlNjRhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Bc3RvcmlhIEhlaWdodHM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBjMzU4NjQ0ZjYwMjQ4NjZhZWRkZDFmZDg3OWU0MmIzLnNldENvbnRlbnQoaHRtbF9mMjgwZGI4YzI5ZTM0MjQ5YjVjOTFkMmFlODY3ZTY0YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80MGQxZjliN2RjYTI0OGMyOTgwMDdhZDZlMjNjN2ZmNS5iaW5kUG9wdXAocG9wdXBfMGMzNTg2NDRmNjAyNDg2NmFlZGRkMWZkODc5ZTQyYjMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGVjZTBlNzZlYzMxNDIzZGE5OGI1M2FjNDhiMDJkMGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44MzE0MjgzNDE2MTU0OCwtNzMuOTAxMTk5MDMzODc2NjddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODdhZjA2OTMzZjk5NGFlMzgwYmI5OTc5ZDI3MjhhYTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDY1ZGZlMGU1Yjg5NGY2N2FmMTg4MmM2MzNhZDQ0ZmIgPSAkKCc8ZGl2IGlkPSJodG1sXzA2NWRmZTBlNWI4OTRmNjdhZjE4ODJjNjMzYWQ0NGZiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5DbGFyZW1vbnQgVmlsbGFnZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODdhZjA2OTMzZjk5NGFlMzgwYmI5OTc5ZDI3MjhhYTUuc2V0Q29udGVudChodG1sXzA2NWRmZTBlNWI4OTRmNjdhZjE4ODJjNjMzYWQ0NGZiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzRlY2UwZTc2ZWMzMTQyM2RhOThiNTNhYzQ4YjAyZDBmLmJpbmRQb3B1cChwb3B1cF84N2FmMDY5MzNmOTk0YWUzODBiYjk5NzlkMjcyOGFhNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84YzAxYzAzMjU5NTQ0NDg1YjcxNzcxNjNjNWQyZDc1ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgyNDc4MDQ5MDg0MjkwNSwtNzMuOTE1ODQ2NTI3NTkwMDldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDU5Njg0NDMxMWZhNDRiYmE0ZDY4ZGU0YTFiYTcxYTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzczMTA1YmUyNDM3NDEwZmEyZmUzYTQ2OTVhMGVlYWYgPSAkKCc8ZGl2IGlkPSJodG1sXzM3MzEwNWJlMjQzNzQxMGZhMmZlM2E0Njk1YTBlZWFmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Db25jb3Vyc2UgVmlsbGFnZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDU5Njg0NDMxMWZhNDRiYmE0ZDY4ZGU0YTFiYTcxYTYuc2V0Q29udGVudChodG1sXzM3MzEwNWJlMjQzNzQxMGZhMmZlM2E0Njk1YTBlZWFmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzhjMDFjMDMyNTk1NDQ0ODViNzE3NzE2M2M1ZDJkNzVkLmJpbmRQb3B1cChwb3B1cF80NTk2ODQ0MzExZmE0NGJiYTRkNjhkZTRhMWJhNzFhNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83ZTM2NzQ4YTc5NWI0MWY4YjYwODdlZWM3YTQxZjk1MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg0MzgyNjE3NjcxNjU0LC03My45MTY1NTU1MTk2NDQxOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wMjdmOGFmY2VjMDI0OTNhODY1MTUxZGQ3NTIyNzM3MyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iMjZhMGFjYTA0YTI0ZjczYWU2NGVmZWUzZTVmZDgyMyA9ICQoJzxkaXYgaWQ9Imh0bWxfYjI2YTBhY2EwNGEyNGY3M2FlNjRlZmVlM2U1ZmQ4MjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1vdW50IEVkZW48L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzAyN2Y4YWZjZWMwMjQ5M2E4NjUxNTFkZDc1MjI3MzczLnNldENvbnRlbnQoaHRtbF9iMjZhMGFjYTA0YTI0ZjczYWU2NGVmZWUzZTVmZDgyMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83ZTM2NzQ4YTc5NWI0MWY4YjYwODdlZWM3YTQxZjk1Mi5iaW5kUG9wdXAocG9wdXBfMDI3ZjhhZmNlYzAyNDkzYTg2NTE1MWRkNzUyMjczNzMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTNmNzVkNDhlZWNmNDU5ZTk0ODQ2ZDliYjQxZDUwZTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44NDg4NDE2MDcyNDY2NSwtNzMuOTA4Mjk5MzA4ODE5ODhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDYzMjhjMjRiNTFkNDFmNjk0YWEyYjIxNjUxZTMyYTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2JkZTE4ZDRlNzI2NDM5MGE0NWRmMGNlMWFhODcyYzYgPSAkKCc8ZGl2IGlkPSJodG1sXzNiZGUxOGQ0ZTcyNjQzOTBhNDVkZjBjZTFhYTg3MmM2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Nb3VudCBIb3BlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wNjMyOGMyNGI1MWQ0MWY2OTRhYTJiMjE2NTFlMzJhOC5zZXRDb250ZW50KGh0bWxfM2JkZTE4ZDRlNzI2NDM5MGE0NWRmMGNlMWFhODcyYzYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTNmNzVkNDhlZWNmNDU5ZTk0ODQ2ZDliYjQxZDUwZTkuYmluZFBvcHVwKHBvcHVwXzA2MzI4YzI0YjUxZDQxZjY5NGFhMmIyMTY1MWUzMmE4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU2MWY0ZmQxOTFiOTQyZjNhOGM4Yzc3ZWI2ZGMyMGY5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzYwMjgwMzMxMzEzNzQsLTczLjk2MzU1NjE0MDk0MzAzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M1NDE1M2IxMGE3NTQ0ZDRhMjQ3NzI4MDIyZTU2MGMxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzZkN2MzMWM1NjQ4ZDRhZmQ5M2JjODExODIyZWQwZjJhID0gJCgnPGRpdiBpZD0iaHRtbF82ZDdjMzFjNTY0OGQ0YWZkOTNiYzgxMTgyMmVkMGYyYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U3V0dG9uIFBsYWNlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jNTQxNTNiMTBhNzU0NGQ0YTI0NzcyODAyMmU1NjBjMS5zZXRDb250ZW50KGh0bWxfNmQ3YzMxYzU2NDhkNGFmZDkzYmM4MTE4MjJlZDBmMmEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNTYxZjRmZDE5MWI5NDJmM2E4YzhjNzdlYjZkYzIwZjkuYmluZFBvcHVwKHBvcHVwX2M1NDE1M2IxMGE3NTQ0ZDRhMjQ3NzI4MDIyZTU2MGMxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M4ZTQ1MzFjZjVlNDRmZDM4ZTExMzE1NmRjNmJiMzg0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzQzNDE0MDkwMDczNTM2LC03My45NTM4Njc4MjEzMDc0NV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NDI2NDExMzkyMzI0MmNmOWQ1MjQ5Yjg1YThlYTliYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yODhjNzkxOTM0MTU0M2JlYmExNTU4Yzc3NTM2NWVkYiA9ICQoJzxkaXYgaWQ9Imh0bWxfMjg4Yzc5MTkzNDE1NDNiZWJhMTU1OGM3NzUzNjVlZGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkh1bnRlcnMgUG9pbnQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU0MjY0MTEzOTIzMjQyY2Y5ZDUyNDliODVhOGVhOWJhLnNldENvbnRlbnQoaHRtbF8yODhjNzkxOTM0MTU0M2JlYmExNTU4Yzc3NTM2NWVkYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jOGU0NTMxY2Y1ZTQ0ZmQzOGUxMTMxNTZkYzZiYjM4NC5iaW5kUG9wdXAocG9wdXBfNTQyNjQxMTM5MjMyNDJjZjlkNTI0OWI4NWE4ZWE5YmEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWI3YzM1ZmE2OTc3NDRiMDhjMTUyYmE2MzlhNjFjNGEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43NTIwNDIzNjk1MDcyMiwtNzMuOTY3NzA4MjQ1ODE4MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmU0NmI5ZGJlNjQwNGYzMGJkOWVkNTgzNTUzNTNlNWYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGJiNjU5ZmUzZGZkNDAyYzk5ZWMwOWViNWZhNjI4YjYgPSAkKCc8ZGl2IGlkPSJodG1sXzRiYjY1OWZlM2RmZDQwMmM5OWVjMDllYjVmYTYyOGI2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UdXJ0bGUgQmF5PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82ZTQ2YjlkYmU2NDA0ZjMwYmQ5ZWQ1ODM1NTM1M2U1Zi5zZXRDb250ZW50KGh0bWxfNGJiNjU5ZmUzZGZkNDAyYzk5ZWMwOWViNWZhNjI4YjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOWI3YzM1ZmE2OTc3NDRiMDhjMTUyYmE2MzlhNjFjNGEuYmluZFBvcHVwKHBvcHVwXzZlNDZiOWRiZTY0MDRmMzBiZDllZDU4MzU1MzUzZTVmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY2NjZkNThkNTZjYzRiYzdiOWQ0NmIxYjg1N2JkODNmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzQ2OTE3NDEwNzQwMTk1LC03My45NzEyMTkyODcyMjI2NV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mZDIwYWNhZDg0NjY0YzQ1YjZkN2FhYWIwOTRhZmExYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mM2M2ZWY3YzY2Y2M0NmRmYmYwOGZkMzVkNTg0NTVhYSA9ICQoJzxkaXYgaWQ9Imh0bWxfZjNjNmVmN2M2NmNjNDZkZmJmMDhmZDM1ZDU4NDU1YWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlR1ZG9yIENpdHk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZkMjBhY2FkODQ2NjRjNDViNmQ3YWFhYjA5NGFmYTFhLnNldENvbnRlbnQoaHRtbF9mM2M2ZWY3YzY2Y2M0NmRmYmYwOGZkMzVkNTg0NTVhYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82NjY2ZDU4ZDU2Y2M0YmM3YjlkNDZiMWI4NTdiZDgzZi5iaW5kUG9wdXAocG9wdXBfZmQyMGFjYWQ4NDY2NGM0NWI2ZDdhYWFiMDk0YWZhMWEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYWQ5ODhkMzNlYTkxNDc0Yjk2Y2ViMjRhMzM0YzBhN2QgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MzA5OTk1NTQ3NzA2MSwtNzMuOTc0MDUxNzA0NjkyMDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzRhMjk4NmMxNDg1NGQ1YjllNGZkMjAxZmNkMGM4ZWYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2I5ZDI2ZWEyMzNiNDM3ZDlmYTRlNWZmNzE0ODEwYTMgPSAkKCc8ZGl2IGlkPSJodG1sXzNiOWQyNmVhMjMzYjQzN2Q5ZmE0ZTVmZjcxNDgxMGEzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TdHV5dmVzYW50IFRvd248L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2M0YTI5ODZjMTQ4NTRkNWI5ZTRmZDIwMWZjZDBjOGVmLnNldENvbnRlbnQoaHRtbF8zYjlkMjZlYTIzM2I0MzdkOWZhNGU1ZmY3MTQ4MTBhMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hZDk4OGQzM2VhOTE0NzRiOTZjZWIyNGEzMzRjMGE3ZC5iaW5kUG9wdXAocG9wdXBfYzRhMjk4NmMxNDg1NGQ1YjllNGZkMjAxZmNkMGM4ZWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2ZlOTE5MWFiMTU4NGJlNGExNWU4YzFiMzQxMDFkMDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43Mzk2NzMwNDc2Mzg0MjYsLTczLjk5MDk0NzEwNTI4MjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjA4N2E2NmRlYzgwNDhiODhmMDNkOWRjMzIwNTQ3M2IgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGYwNWI0Yzc4ZDViNGYzZmI0YzI5OTdmN2FiYjc0MzkgPSAkKCc8ZGl2IGlkPSJodG1sX2RmMDViNGM3OGQ1YjRmM2ZiNGMyOTk3ZjdhYmI3NDM5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GbGF0aXJvbjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjA4N2E2NmRlYzgwNDhiODhmMDNkOWRjMzIwNTQ3M2Iuc2V0Q29udGVudChodG1sX2RmMDViNGM3OGQ1YjRmM2ZiNGMyOTk3ZjdhYmI3NDM5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2NmZTkxOTFhYjE1ODRiZTRhMTVlOGMxYjM0MTAxZDAyLmJpbmRQb3B1cChwb3B1cF9mMDg3YTY2ZGVjODA0OGI4OGYwM2Q5ZGMzMjA1NDczYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83YjNmMjhkOTQyYzk0MWE4YmQ3NzE2OTEyMDFkYTM0MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc0NTY1MTgwNjA4MDc2LC03My45MTgxOTI4NjQzMTY4Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yZGYyMmE1NDEyOWQ0NDNjOGEwODA3YzdiNzExMDUzYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85YTg5ODhjMDQ4ZTk0YzlkYTk0MGY4NDkxMWM0YzZlYiA9ICQoJzxkaXYgaWQ9Imh0bWxfOWE4OTg4YzA0OGU5NGM5ZGE5NDBmODQ5MTFjNGM2ZWIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlN1bm55c2lkZSBHYXJkZW5zPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yZGYyMmE1NDEyOWQ0NDNjOGEwODA3YzdiNzExMDUzYi5zZXRDb250ZW50KGh0bWxfOWE4OTg4YzA0OGU5NGM5ZGE5NDBmODQ5MTFjNGM2ZWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfN2IzZjI4ZDk0MmM5NDFhOGJkNzcxNjkxMjAxZGEzNDIuYmluZFBvcHVwKHBvcHVwXzJkZjIyYTU0MTI5ZDQ0M2M4YTA4MDdjN2I3MTEwNTNiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I2MzAyODI1Yjk5ZjRhY2NiOTI1NjJiNGRmYjEzMjM3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzM3MjUwNzE2OTQ0OTcsLTczLjkzMjQ0MjM1MjYwMTc4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg5NjcwMDczNjA2MzQ3NWQ4YWU1YjNkMWE3ZGE3MjNjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M5ZjcyNTkwNTM0ODRjNzNiZTQ4YTExNmMwMTA5YmNlID0gJCgnPGRpdiBpZD0iaHRtbF9jOWY3MjU5MDUzNDg0YzczYmU0OGExMTZjMDEwOWJjZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Qmxpc3N2aWxsZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODk2NzAwNzM2MDYzNDc1ZDhhZTViM2QxYTdkYTcyM2Muc2V0Q29udGVudChodG1sX2M5ZjcyNTkwNTM0ODRjNzNiZTQ4YTExNmMwMTA5YmNlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2I2MzAyODI1Yjk5ZjRhY2NiOTI1NjJiNGRmYjEzMjM3LmJpbmRQb3B1cChwb3B1cF84OTY3MDA3MzYwNjM0NzVkOGFlNWIzZDFhN2RhNzIzYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hNDQwNTI1MDNmMDc0NmM5YWFiOTRhNTc2ZmYyOGFhOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjcwMzI4MTA5MDkzMDE0LC03My45OTU1MDc1MTg4ODQxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82ODNkMmU2YTU3NjY0N2ZjYWY4MzViNzM3YTlhMTRiNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83YzdhNzhhNmE1ZGY0ZDMwODkxODU3ZjU5ZjBiY2ZmNCA9ICQoJzxkaXYgaWQ9Imh0bWxfN2M3YTc4YTZhNWRmNGQzMDg5MTg1N2Y1OWYwYmNmZjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZ1bHRvbiBGZXJyeTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjgzZDJlNmE1NzY2NDdmY2FmODM1YjczN2E5YTE0YjYuc2V0Q29udGVudChodG1sXzdjN2E3OGE2YTVkZjRkMzA4OTE4NTdmNTlmMGJjZmY0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2E0NDA1MjUwM2YwNzQ2YzlhYWI5NGE1NzZmZjI4YWE4LmJpbmRQb3B1cChwb3B1cF82ODNkMmU2YTU3NjY0N2ZjYWY4MzViNzM3YTlhMTRiNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85ZGJiN2QxY2M1Mjg0NmUxOWVmNDk0NmNlMWE5NTg0OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjcwMzMyMTQ5ODgyODc0LC03My45ODExMTYwMzU5MjM5M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hMmNiMWYyNzAwYzI0MjY4ODcwNmQ1YTM3OGNjYzE4MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iZmRmYmE3ODAzZWE0MTZjYTQwNDlmMzNiYTM1YWQ1MSA9ICQoJzxkaXYgaWQ9Imh0bWxfYmZkZmJhNzgwM2VhNDE2Y2E0MDQ5ZjMzYmEzNWFkNTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZpbmVnYXIgSGlsbDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTJjYjFmMjcwMGMyNDI2ODg3MDZkNWEzNzhjY2MxODEuc2V0Q29udGVudChodG1sX2JmZGZiYTc4MDNlYTQxNmNhNDA0OWYzM2JhMzVhZDUxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzlkYmI3ZDFjYzUyODQ2ZTE5ZWY0OTQ2Y2UxYTk1ODQ5LmJpbmRQb3B1cChwb3B1cF9hMmNiMWYyNzAwYzI0MjY4ODcwNmQ1YTM3OGNjYzE4MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hNzY3ZWIzYjBmNDU0OTFjYWEzYjNjMTNlMDY3ZTIzMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY3NTAzOTg2NTAzMjM3LC03My45MzA1MzEwODgxNzMzOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lMzEwMTdjZjRhMjk0N2FhODEwYjNjZTI4NzBkNGViNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80M2E1ZjliZDYwNGI0YjI0YTRjZjlhYWEyMjlmMDY3ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfNDNhNWY5YmQ2MDRiNGIyNGE0Y2Y5YWFhMjI5ZjA2N2YiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldlZWtzdmlsbGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UzMTAxN2NmNGEyOTQ3YWE4MTBiM2NlMjg3MGQ0ZWI0LnNldENvbnRlbnQoaHRtbF80M2E1ZjliZDYwNGI0YjI0YTRjZjlhYWEyMjlmMDY3Zik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hNzY3ZWIzYjBmNDU0OTFjYWEzYjNjMTNlMDY3ZTIzMi5iaW5kUG9wdXAocG9wdXBfZTMxMDE3Y2Y0YTI5NDdhYTgxMGIzY2UyODcwZDRlYjQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2Q4M2M0MjBlYTU2NGRiNWJlYzUwOTg1MTg0MTFkZDMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42Nzc4NjEwNDc2OTUzMSwtNzMuOTAzMzE2ODQ4NTI1OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzE4ZTBjNzNkZGUxNDQyYTgxMmM3YmMxZjBiNjM3OTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODQwMTFmNThiNTk4NGQyMWI2MTEyZmEzMmRkYmU4ZmEgPSAkKCc8ZGl2IGlkPSJodG1sXzg0MDExZjU4YjU5ODRkMjFiNjExMmZhMzJkZGJlOGZhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Ccm9hZHdheSBKdW5jdGlvbjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzE4ZTBjNzNkZGUxNDQyYTgxMmM3YmMxZjBiNjM3OTUuc2V0Q29udGVudChodG1sXzg0MDExZjU4YjU5ODRkMjFiNjExMmZhMzJkZGJlOGZhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzNkODNjNDIwZWE1NjRkYjViZWM1MDk4NTE4NDExZGQzLmJpbmRQb3B1cChwb3B1cF8zMThlMGM3M2RkZTE0NDJhODEyYzdiYzFmMGI2Mzc5NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMGI2MTU1N2IyYTk0NzFkOTQ3Nzc5ZGVhYzY4MzZlMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjcwMzE3NjMyODIyNjkyLC03My45ODg3NTI4MDc0NTA0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RjYzE0OGZkNTQzNDQ1NDNiNTBhYzhhZjQ5NDlkMWJmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I0NGI4ZjQ5NGUwZDQwNWI5NDBhM2MyMmVlNDk5M2YzID0gJCgnPGRpdiBpZD0iaHRtbF9iNDRiOGY0OTRlMGQ0MDViOTQwYTNjMjJlZTQ5OTNmMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RHVtYm88L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RjYzE0OGZkNTQzNDQ1NDNiNTBhYzhhZjQ5NDlkMWJmLnNldENvbnRlbnQoaHRtbF9iNDRiOGY0OTRlMGQ0MDViOTQwYTNjMjJlZTQ5OTNmMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jMGI2MTU1N2IyYTk0NzFkOTQ3Nzc5ZGVhYzY4MzZlMC5iaW5kUG9wdXAocG9wdXBfZGNjMTQ4ZmQ1NDM0NDU0M2I1MGFjOGFmNDk0OWQxYmYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTdmZTJjNzVmODlmNDNhNDgwYzk5MmUxNTE2NmNhOGQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MDE4MDk1NzYzMTQ0NCwtNzQuMTIwNTkzOTk3MTgwMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOGZkYzg0MjY4MzA0NGU1MWE2NmEyYzdiYWVjZTU2MGUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWRiMjEyYzRmMzgzNDI5MGJjMjkwZjBiMmU5N2RmZTggPSAkKCc8ZGl2IGlkPSJodG1sXzlkYjIxMmM0ZjM4MzQyOTBiYzI5MGYwYjJlOTdkZmU4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NYW5vciBIZWlnaHRzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84ZmRjODQyNjgzMDQ0ZTUxYTY2YTJjN2JhZWNlNTYwZS5zZXRDb250ZW50KGh0bWxfOWRiMjEyYzRmMzgzNDI5MGJjMjkwZjBiMmU5N2RmZTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTdmZTJjNzVmODlmNDNhNDgwYzk5MmUxNTE2NmNhOGQuYmluZFBvcHVwKHBvcHVwXzhmZGM4NDI2ODMwNDRlNTFhNjZhMmM3YmFlY2U1NjBlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzkxNjM4YWJmYmZkYjRiNmM5MWJmZTY2NTZkYmJjZThhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjAzNzA2OTI2MjczNzEsLTc0LjEzMjA4NDQ3NDg0Mjk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMwYjlkM2UzN2RmNzQ3ODNhYzliMjM2YzJhZmNiYjNjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RkMmFhZjViMDlhMTQyNTk5Zjc3MGVlNzA1MmRmYWZmID0gJCgnPGRpdiBpZD0iaHRtbF9kZDJhYWY1YjA5YTE0MjU5OWY3NzBlZTcwNTJkZmFmZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V2lsbG93YnJvb2s8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMwYjlkM2UzN2RmNzQ3ODNhYzliMjM2YzJhZmNiYjNjLnNldENvbnRlbnQoaHRtbF9kZDJhYWY1YjA5YTE0MjU5OWY3NzBlZTcwNTJkZmFmZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85MTYzOGFiZmJmZGI0YjZjOTFiZmU2NjU2ZGJiY2U4YS5iaW5kUG9wdXAocG9wdXBfMzBiOWQzZTM3ZGY3NDc4M2FjOWIyMzZjMmFmY2JiM2MpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTQ0ZjY3MjE2NDBlNDgyNTg0ZmNhNDc1MDM4NTk1N2IgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41NDExMzk5MjIwOTE3NjYsLTc0LjIxNzc2NjM2MDY4NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzljOWEzYTM5OTA5NTRmMDk4NTcyMGFmYzNjYzQyNjQ3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q5NzVjZDFiNjFiMTRkZTRiZDAwMjczMDc1MjA3NjQ0ID0gJCgnPGRpdiBpZD0iaHRtbF9kOTc1Y2QxYjYxYjE0ZGU0YmQwMDI3MzA3NTIwNzY0NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U2FuZHkgR3JvdW5kPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85YzlhM2EzOTkwOTU0ZjA5ODU3MjBhZmMzY2M0MjY0Ny5zZXRDb250ZW50KGh0bWxfZDk3NWNkMWI2MWIxNGRlNGJkMDAyNzMwNzUyMDc2NDQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMTQ0ZjY3MjE2NDBlNDgyNTg0ZmNhNDc1MDM4NTk1N2IuYmluZFBvcHVwKHBvcHVwXzljOWEzYTM5OTA5NTRmMDk4NTcyMGFmYzNjYzQyNjQ3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q2OWYzZmM5ZTBjNzQzOTY4YTQ5M2RiOGExYWEzNjc4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNTc5MTE4NzQyOTYxMjE0LC03NC4xMjcyNzI0MDYwNDk0Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mMjE3NTUwODczMjA0NWEzODA5YjlhZmUzZWZmNGEzOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yODY1YzU2NDE3OWI0NzRhOTFhMWQ2MGFlMzgyMzJlNSA9ICQoJzxkaXYgaWQ9Imh0bWxfMjg2NWM1NjQxNzliNDc0YTkxYTFkNjBhZTM4MjMyZTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkVnYmVydHZpbGxlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mMjE3NTUwODczMjA0NWEzODA5YjlhZmUzZWZmNGEzOC5zZXRDb250ZW50KGh0bWxfMjg2NWM1NjQxNzliNDc0YTkxYTFkNjBhZTM4MjMyZTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDY5ZjNmYzllMGM3NDM5NjhhNDkzZGI4YTFhYTM2NzguYmluZFBvcHVwKHBvcHVwX2YyMTc1NTA4NzMyMDQ1YTM4MDliOWFmZTNlZmY0YTM4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ExOWNhZWQ1ODVlOTRmYmJhNmVkNDM5MjhhZDA2MDE5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNTY3Mzc1ODg5NTcwMzIsLTczLjg5MjEzNzYwMjMyODIyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc5ODUyYWMwMDQ0YzQ0MmFhMDVjNWI2NmM1NDQ0YjQyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I5YzU3YjFiZjU5NTQ3YTdiNDRhZGNmMDczMjA0ZjQ1ID0gJCgnPGRpdiBpZD0iaHRtbF9iOWM1N2IxYmY1OTU0N2E3YjQ0YWRjZjA3MzIwNGY0NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Um94YnVyeTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzk4NTJhYzAwNDRjNDQyYWEwNWM1YjY2YzU0NDRiNDIuc2V0Q29udGVudChodG1sX2I5YzU3YjFiZjU5NTQ3YTdiNDRhZGNmMDczMjA0ZjQ1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2ExOWNhZWQ1ODVlOTRmYmJhNmVkNDM5MjhhZDA2MDE5LmJpbmRQb3B1cChwb3B1cF83OTg1MmFjMDA0NGM0NDJhYTA1YzViNjZjNTQ0NGI0Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80NTAwOTNiOGFmNDQ0OGIyOTc0ZWQzMzhkNzE5YmY1NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU5ODUyNTA5NTEzNzI1NSwtNzMuOTU5MTg0NTk0Mjg3MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODI0NzcwN2Q1ZTNiNDljYmFjNmNmYmRjMDY2ZmNmMTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjZmZjcyZTNmZjg0NDk1MmIzYWE2NTg4ZDc1ZDhkZjggPSAkKCc8ZGl2IGlkPSJodG1sX2Y2ZmY3MmUzZmY4NDQ5NTJiM2FhNjU4OGQ3NWQ4ZGY4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Ib21lY3Jlc3Q8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzgyNDc3MDdkNWUzYjQ5Y2JhYzZjZmJkYzA2NmZjZjE4LnNldENvbnRlbnQoaHRtbF9mNmZmNzJlM2ZmODQ0OTUyYjNhYTY1ODhkNzVkOGRmOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80NTAwOTNiOGFmNDQ0OGIyOTc0ZWQzMzhkNzE5YmY1Ni5iaW5kUG9wdXAocG9wdXBfODI0NzcwN2Q1ZTNiNDljYmFjNmNmYmRjMDY2ZmNmMTgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDhhZTU5MGUxMjc4NGNkMmFmNmM1ZDEyY2Q3ZjBjZGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MTY0MTQ1MTExNTgxODUsLTczLjg4MTE0MzE5MjAwNjA0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM5MDc4YjhlZDhjYzQzOTU5ZmM3ODU2MWRiNTRlOWU5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzcwNTc1MTlmNjUxODQ3ZGJhNDUwYzRkY2Q4OTgzOGFhID0gJCgnPGRpdiBpZD0iaHRtbF83MDU3NTE5ZjY1MTg0N2RiYTQ1MGM0ZGNkODk4MzhhYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWlkZGxlIFZpbGxhZ2U8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM5MDc4YjhlZDhjYzQzOTU5ZmM3ODU2MWRiNTRlOWU5LnNldENvbnRlbnQoaHRtbF83MDU3NTE5ZjY1MTg0N2RiYTQ1MGM0ZGNkODk4MzhhYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kOGFlNTkwZTEyNzg0Y2QyYWY2YzVkMTJjZDdmMGNkYy5iaW5kUG9wdXAocG9wdXBfMzkwNzhiOGVkOGNjNDM5NTlmYzc4NTYxZGI1NGU5ZTkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTk0OGUzNmMxN2UzNDhkOTgxMjA3MmVkYWZiY2EzMjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41MjYyNjQwNjczNDgxMiwtNzQuMjAxNTI1NTY0NTc2NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjdhZWJjYTY1MWNhNDMwMGE3OGM3NmJkNTA1NTI1ODEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDA1ZGMzM2M1ZjY5NGJlMDk0ZTdmNGRlZDg2YWU2ZDcgPSAkKCc8ZGl2IGlkPSJodG1sXzAwNWRjMzNjNWY2OTRiZTA5NGU3ZjRkZWQ4NmFlNmQ3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5QcmluY2UmIzM5O3MgQmF5PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yN2FlYmNhNjUxY2E0MzAwYTc4Yzc2YmQ1MDU1MjU4MS5zZXRDb250ZW50KGh0bWxfMDA1ZGMzM2M1ZjY5NGJlMDk0ZTdmNGRlZDg2YWU2ZDcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMTk0OGUzNmMxN2UzNDhkOTgxMjA3MmVkYWZiY2EzMjUuYmluZFBvcHVwKHBvcHVwXzI3YWViY2E2NTFjYTQzMDBhNzhjNzZiZDUwNTUyNTgxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzliZGQyYzFlYTYyNTRmYzE4N2E4YmM3NGY1MmRjOGNkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNTc2NTA2MjkzNzk0ODksLTc0LjEzNzkyNjYzNzcxNTY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZmYjRmNDBiMGFhYzQxZjQ5NjJhYWJkZWVjZTAzMzhlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y5NWIzMTRjODk1YzQzMjc5NGRlYTlhMDQyMTIxOTA3ID0gJCgnPGRpdiBpZD0iaHRtbF9mOTViMzE0Yzg5NWM0MzI3OTRkZWE5YTA0MjEyMTkwNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TGlnaHRob3VzZSBIaWxsPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82ZmI0ZjQwYjBhYWM0MWY0OTYyYWFiZGVlY2UwMzM4ZS5zZXRDb250ZW50KGh0bWxfZjk1YjMxNGM4OTVjNDMyNzk0ZGVhOWEwNDIxMjE5MDcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOWJkZDJjMWVhNjI1NGZjMTg3YThiYzc0ZjUyZGM4Y2QuYmluZFBvcHVwKHBvcHVwXzZmYjRmNDBiMGFhYzQxZjQ5NjJhYWJkZWVjZTAzMzhlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAzMjk4MjAyMWEwYTRlYmJhNzQxNmEwZDE1OGY5MmYwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNTE5NTQxNDU3NDg5MDksLTc0LjIyOTU3MDgwNjI2OTQxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzVmOTZhNWRhMDkzNzQ1NGViYTI5YTRhMzcwZGFjMDJmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzMxYjAxZmUwYTk4YjQyMzg4MzM4MGQyODU1NmUwMzg2ID0gJCgnPGRpdiBpZD0iaHRtbF8zMWIwMWZlMGE5OGI0MjM4ODMzODBkMjg1NTZlMDM4NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UmljaG1vbmQgVmFsbGV5PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81Zjk2YTVkYTA5Mzc0NTRlYmEyOWE0YTM3MGRhYzAyZi5zZXRDb250ZW50KGh0bWxfMzFiMDFmZTBhOThiNDIzODgzMzgwZDI4NTU2ZTAzODYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDMyOTgyMDIxYTBhNGViYmE3NDE2YTBkMTU4ZjkyZjAuYmluZFBvcHVwKHBvcHVwXzVmOTZhNWRhMDkzNzQ1NGViYTI5YTRhMzcwZGFjMDJmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFjYmUwMDFhOWQwNjQ5M2ZhZmZkOGNkOWUzNTdiNDJkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzkwNjAxNTU2NzAxNDgsLTczLjgyNjY3NzU3MTM4NjQxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RlMGQ2Njc3OWJhMDQ1YzY5MzMwYTllMmI2M2VlN2ZjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2FiMmU3YTQ1ZDQ3ZDQyZjU5YWU4ZWUwZThmYmExMGNkID0gJCgnPGRpdiBpZD0iaHRtbF9hYjJlN2E0NWQ0N2Q0MmY1OWFlOGVlMGU4ZmJhMTBjZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWFsYmE8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RlMGQ2Njc3OWJhMDQ1YzY5MzMwYTllMmI2M2VlN2ZjLnNldENvbnRlbnQoaHRtbF9hYjJlN2E0NWQ0N2Q0MmY1OWFlOGVlMGU4ZmJhMTBjZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xY2JlMDAxYTlkMDY0OTNmYWZmZDhjZDllMzU3YjQyZC5iaW5kUG9wdXAocG9wdXBfZGUwZDY2Nzc5YmEwNDVjNjkzMzBhOWUyYjYzZWU3ZmMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjIxODg3YmQ5Y2Q1NDc1ODlkZmY3M2Q2YmI4NzYzZjcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42ODE5OTg5MzQ1MTczLC03My44OTAzNDU3MDk4NzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjIwYTM5YWUxNDQ3NDQ1NTlmM2QzNThlMzliYzJiYzkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWQyNTY3OGJjMjZiNGY0M2FiZmU0NzUyYjc4MWYyMzMgPSAkKCc8ZGl2IGlkPSJodG1sXzVkMjU2NzhiYzI2YjRmNDNhYmZlNDc1MmI3ODFmMjMzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5IaWdobGFuZCBQYXJrPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iMjBhMzlhZTE0NDc0NDU1OWYzZDM1OGUzOWJjMmJjOS5zZXRDb250ZW50KGh0bWxfNWQyNTY3OGJjMjZiNGY0M2FiZmU0NzUyYjc4MWYyMzMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZjIxODg3YmQ5Y2Q1NDc1ODlkZmY3M2Q2YmI4NzYzZjcuYmluZFBvcHVwKHBvcHVwX2IyMGEzOWFlMTQ0NzQ0NTU5ZjNkMzU4ZTM5YmMyYmM5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzA5MDNlNDc1NGJhMTQzOWFhNGJmMTc0MzEzNWRmZThjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjA5Mzc3NzAxMTM3NjYsLTczLjk0ODQxNTE1MzI4ODkzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U3ZTA0ODk3NDA3YzQwMjA5MTI4MTJiYjUxNTdlYTBkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E3NmQ1YmY1NTJlYTQ5NGJiNTM4ODQyMTcwMjgzMzMzID0gJCgnPGRpdiBpZD0iaHRtbF9hNzZkNWJmNTUyZWE0OTRiYjUzODg0MjE3MDI4MzMzMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWFkaXNvbjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTdlMDQ4OTc0MDdjNDAyMDkxMjgxMmJiNTE1N2VhMGQuc2V0Q29udGVudChodG1sX2E3NmQ1YmY1NTJlYTQ5NGJiNTM4ODQyMTcwMjgzMzMzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzA5MDNlNDc1NGJhMTQzOWFhNGJmMTc0MzEzNWRmZThjLmJpbmRQb3B1cChwb3B1cF9lN2UwNDg5NzQwN2M0MDIwOTEyODEyYmI1MTU3ZWEwZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kNWE0YjRkYTk0MjQ0ZDczYjdhMjdjYzlkYWJlMzk5NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg1MjcyMjk3NjMzMDE3LC03My44NjE3MjU3NzU1NTExNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85MjQ3MmYyNGQyZjM0OWY4ODQ0NmExMzc2ZTcwODdkMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85YTA4MjFmZmNkMTg0YTdjYTBhNWNhMzk3NjE2MzY2MCA9ICQoJzxkaXYgaWQ9Imh0bWxfOWEwODIxZmZjZDE4NGE3Y2EwYTVjYTM5NzYxNjM2NjAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJyb254ZGFsZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTI0NzJmMjRkMmYzNDlmODg0NDZhMTM3NmU3MDg3ZDAuc2V0Q29udGVudChodG1sXzlhMDgyMWZmY2QxODRhN2NhMGE1Y2EzOTc2MTYzNjYwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Q1YTRiNGRhOTQyNDRkNzNiN2EyN2NjOWRhYmUzOTk1LmJpbmRQb3B1cChwb3B1cF85MjQ3MmYyNGQyZjM0OWY4ODQ0NmExMzc2ZTcwODdkMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lOWYxYTdlYWY2N2Y0ZDRjOWVjYmM1NjQ3YTRhZTY4ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg2NTc4Nzg3ODAyOTgyLC03My44NTkzMTg2MzIyMTY0N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85ZmNlY2IwMWNmOTQ0ODhkODg5YWMxMDJmMzYzNmRiNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81MmZjNjI1MDA5YmY0ZWQ4YTc3YTVmY2I5YzIzNjg2NyA9ICQoJzxkaXYgaWQ9Imh0bWxfNTJmYzYyNTAwOWJmNGVkOGE3N2E1ZmNiOWMyMzY4NjciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFsbGVydG9uPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85ZmNlY2IwMWNmOTQ0ODhkODg5YWMxMDJmMzYzNmRiNC5zZXRDb250ZW50KGh0bWxfNTJmYzYyNTAwOWJmNGVkOGE3N2E1ZmNiOWMyMzY4NjcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTlmMWE3ZWFmNjdmNGQ0YzllY2JjNTY0N2E0YWU2OGUuYmluZFBvcHVwKHBvcHVwXzlmY2VjYjAxY2Y5NDQ4OGQ4ODlhYzEwMmYzNjM2ZGI0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M2OWYzOTdkYzMxNjQzNDZhNzEzMDczNjM3OTU1Nzk3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODcwMzkyMzkxNDE0NywtNzMuOTAxNTIyNjQ1MTMxNDRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWJhMGQwZmQxNTIyNDEyZGI1MTI4NDc0YjNhMjE0MGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTdkNTY4NDcwMDYxNDA3ZWFjNDdjMGE2YmZkMjkxYzIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjBjMGUyMDRhYjczNDIxZmI5NDE0OWQ2NTViMGI1NWYgPSAkKCc8ZGl2IGlkPSJodG1sX2IwYzBlMjA0YWI3MzQyMWZiOTQxNDlkNjU1YjBiNTVmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5LaW5nc2JyaWRnZSBIZWlnaHRzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81N2Q1Njg0NzAwNjE0MDdlYWM0N2MwYTZiZmQyOTFjMi5zZXRDb250ZW50KGh0bWxfYjBjMGUyMDRhYjczNDIxZmI5NDE0OWQ2NTViMGI1NWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzY5ZjM5N2RjMzE2NDM0NmE3MTMwNzM2Mzc5NTU3OTcuYmluZFBvcHVwKHBvcHVwXzU3ZDU2ODQ3MDA2MTQwN2VhYzQ3YzBhNmJmZDI5MWMyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JhYTJlMjdkZTA2ZjQyZDBiMDE5OWQxYThmODhkMWJjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjQ2OTI2MDY2NTg1NzksLTczLjk0ODE3NzA5OTIwMTg0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzgwYmRkNzU4MjQzYzRkNWQ5ZTUyOTI2YzFhNDBlNzMxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzIyYzAyYzkwM2ZlNTRkMjdhNjliOTQ1MWI3YzJiYzMyID0gJCgnPGRpdiBpZD0iaHRtbF8yMmMwMmM5MDNmZTU0ZDI3YTY5Yjk0NTFiN2MyYmMzMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RXJhc211czwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODBiZGQ3NTgyNDNjNGQ1ZDllNTI5MjZjMWE0MGU3MzEuc2V0Q29udGVudChodG1sXzIyYzAyYzkwM2ZlNTRkMjdhNjliOTQ1MWI3YzJiYzMyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2JhYTJlMjdkZTA2ZjQyZDBiMDE5OWQxYThmODhkMWJjLmJpbmRQb3B1cChwb3B1cF84MGJkZDc1ODI0M2M0ZDVkOWU1MjkyNmMxYTQwZTczMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wYWMxZTZmYmRlZWQ0ZDRiYmU5MzFhN2Q3YTA0NWQxZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc1NjY1ODA4MjI3NTE5LC03NC4wMDAxMTEzNjIwMjYzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wYTcyNTRlMDJkMDQ0MzAyYjhhZDJjYzk5MmIxNTZjNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80ZjhlMGFmOWI5OTE0ODI3YmFhNjE4ZjMwZGU1ZjlmNSA9ICQoJzxkaXYgaWQ9Imh0bWxfNGY4ZTBhZjliOTkxNDgyN2JhYTYxOGYzMGRlNWY5ZjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkh1ZHNvbiBZYXJkczwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGE3MjU0ZTAyZDA0NDMwMmI4YWQyY2M5OTJiMTU2YzYuc2V0Q29udGVudChodG1sXzRmOGUwYWY5Yjk5MTQ4MjdiYWE2MThmMzBkZTVmOWY1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzBhYzFlNmZiZGVlZDRkNGJiZTkzMWE3ZDdhMDQ1ZDFkLmJpbmRQb3B1cChwb3B1cF8wYTcyNTRlMDJkMDQ0MzAyYjhhZDJjYzk5MmIxNTZjNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NWZkYjg1YTdkOTk0N2FkYmFiZDI4NWNjYmJhMDk0YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU4NzMzNzc0MDE4NzQxLC03My44MDU1MzAwMjk2ODcxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xMWU0MGJlNTVmOTY0NDNjOTEwNjhhY2FiM2ExODJjMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yZDE0NTVhYTYxMmY0NTViYWUwMDk1MWY2MWMwNDUyMyA9ICQoJzxkaXYgaWQ9Imh0bWxfMmQxNDU1YWE2MTJmNDU1YmFlMDA5NTFmNjFjMDQ1MjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkhhbW1lbHM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzExZTQwYmU1NWY5NjQ0M2M5MTA2OGFjYWIzYTE4MmMwLnNldENvbnRlbnQoaHRtbF8yZDE0NTVhYTYxMmY0NTViYWUwMDk1MWY2MWMwNDUyMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81NWZkYjg1YTdkOTk0N2FkYmFiZDI4NWNjYmJhMDk0Yy5iaW5kUG9wdXAocG9wdXBfMTFlNDBiZTU1Zjk2NDQzYzkxMDY4YWNhYjNhMTgyYzApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYWNkYjBiNTdmYTg4NGFhODk4NGM1MTQ1YTcyOTEyMDAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MTEzMjE2OTEyODM4MzQsLTczLjc2NTk2NzgxNDQ1NjI3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzliYTBkMGZkMTUyMjQxMmRiNTEyODQ3NGIzYTIxNDBiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Q4ZTNmZGM5NzE0ODQyMDRhZDMxZDE5YzA2ZjgyYzJlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzAwMzRmZmFlZTY4ZTQ0MWQ4NGQ3YTBkMzk2MTFiNmEyID0gJCgnPGRpdiBpZD0iaHRtbF8wMDM0ZmZhZWU2OGU0NDFkODRkN2EwZDM5NjExYjZhMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QmF5c3dhdGVyPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kOGUzZmRjOTcxNDg0MjA0YWQzMWQxOWMwNmY4MmMyZS5zZXRDb250ZW50KGh0bWxfMDAzNGZmYWVlNjhlNDQxZDg0ZDdhMGQzOTYxMWI2YTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYWNkYjBiNTdmYTg4NGFhODk4NGM1MTQ1YTcyOTEyMDAuYmluZFBvcHVwKHBvcHVwX2Q4ZTNmZGM5NzE0ODQyMDRhZDMxZDE5YzA2ZjgyYzJlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFjOWE5Y2Y1Zjg5ZDQ4MjM4MzJjZmMyOWUxMWViM2NmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzU2MDkxMjk3MDk0NzA2LC03My45NDU2MzA3MDMzNDA5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wZmY5OTQ3ZjNlMGU0YTFmYTRiZTg2YjhlYzE2NzZjNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82NDlhNmIzNzFjN2I0MzdiYjA0N2NjODcwMWYyYzBlMyA9ICQoJzxkaXYgaWQ9Imh0bWxfNjQ5YTZiMzcxYzdiNDM3YmIwNDdjYzg3MDFmMmMwZTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlF1ZWVuc2JyaWRnZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGZmOTk0N2YzZTBlNGExZmE0YmU4NmI4ZWMxNjc2YzQuc2V0Q29udGVudChodG1sXzY0OWE2YjM3MWM3YjQzN2JiMDQ3Y2M4NzAxZjJjMGUzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzFjOWE5Y2Y1Zjg5ZDQ4MjM4MzJjZmMyOWUxMWViM2NmLmJpbmRQb3B1cChwb3B1cF8wZmY5OTQ3ZjNlMGU0YTFmYTRiZTg2YjhlYzE2NzZjNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zMmZhM2U0MzRkNzk0NGYwYjM2MDM3OTA5NDNlYWMxNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjYxNzMxMDc5MjUyOTgzLC03NC4wODE3Mzk5MjIxMTk2Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85YmEwZDBmZDE1MjI0MTJkYjUxMjg0NzRiM2EyMTQwYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jMTA1OTZlYzIyZWQ0ZGExYmE0NDMzMzk3MDgwMjg2ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hZjE2ZGFmYjA3MGU0NTljYjU5MGEyOTBiMDBhOGIwMyA9ICQoJzxkaXYgaWQ9Imh0bWxfYWYxNmRhZmIwNzBlNDU5Y2I1OTBhMjkwYjAwYThiMDMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZveCBIaWxsczwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzEwNTk2ZWMyMmVkNGRhMWJhNDQzMzM5NzA4MDI4NmQuc2V0Q29udGVudChodG1sX2FmMTZkYWZiMDcwZTQ1OWNiNTkwYTI5MGIwMGE4YjAzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzMyZmEzZTQzNGQ3OTQ0ZjBiMzYwMzc5MDk0M2VhYzE2LmJpbmRQb3B1cChwb3B1cF9jMTA1OTZlYzIyZWQ0ZGExYmE0NDMzMzk3MDgwMjg2ZCk7CgogICAgICAgICAgICAKICAgICAgICAKPC9zY3JpcHQ+\" 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 0x7f16b879e6d8>" | |
] | |
}, | |
"execution_count": 16, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# create map of New York using latitude and longitude values\n", | |
"print_map (newyork_data, zoom=10)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": {}, | |
"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>Borough</th>\n", | |
" <th>Neighborhood</th>\n", | |
" <th>Latitude</th>\n", | |
" <th>Longitude</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>Manhattan</td>\n", | |
" <td>Marble Hill</td>\n", | |
" <td>40.876551</td>\n", | |
" <td>-73.910660</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>Manhattan</td>\n", | |
" <td>Chinatown</td>\n", | |
" <td>40.715618</td>\n", | |
" <td>-73.994279</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>Manhattan</td>\n", | |
" <td>Washington Heights</td>\n", | |
" <td>40.851903</td>\n", | |
" <td>-73.936900</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>Manhattan</td>\n", | |
" <td>Inwood</td>\n", | |
" <td>40.867684</td>\n", | |
" <td>-73.921210</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>Manhattan</td>\n", | |
" <td>Hamilton Heights</td>\n", | |
" <td>40.823604</td>\n", | |
" <td>-73.949688</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Borough Neighborhood Latitude Longitude\n", | |
"0 Manhattan Marble Hill 40.876551 -73.910660\n", | |
"1 Manhattan Chinatown 40.715618 -73.994279\n", | |
"2 Manhattan Washington Heights 40.851903 -73.936900\n", | |
"3 Manhattan Inwood 40.867684 -73.921210\n", | |
"4 Manhattan Hamilton Heights 40.823604 -73.949688" | |
] | |
}, | |
"execution_count": 17, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"manhattan_data = newyork_data[newyork_data['Borough'] == 'Manhattan'].reset_index(drop=True)\n", | |
"manhattan_data.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 62, | |
"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+ICNtYXBfOTcwN2M2NDQzZTEwNDdkMWJkYTk1MmMyYmI5NzNiYmIgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF85NzA3YzY0NDNlMTA0N2QxYmRhOTUyYzJiYjk3M2JiYiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF85NzA3YzY0NDNlMTA0N2QxYmRhOTUyYzJiYjk3M2JiYicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNDAuNzMwODYxOSwtNzMuOTg3MTU1OF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfODhmMDRlMTRmNTA5NDIwZmE2YzlhOWUxM2RkZmVhZjggPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOTcwN2M2NDQzZTEwNDdkMWJkYTk1MmMyYmI5NzNiYmIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE3MzY5NzcxNjUzYjRkN2Q5NTg5YWExMWE0YjdjNDQyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODc2NTUwNzc4Nzk5NjQsLTczLjkxMDY1OTY1ODYyOTgxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzEwOTg3NDg1NjRiYjRjOGQ4OWU3OWUxNTBlMGUwMjY5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y4YzhhZGU2M2Y4NDRiMjlhMDExNDZiZTgyY2JjYTkyID0gJCgnPGRpdiBpZD0iaHRtbF9mOGM4YWRlNjNmODQ0YjI5YTAxMTQ2YmU4MmNiY2E5MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWFyYmxlIEhpbGw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzEwOTg3NDg1NjRiYjRjOGQ4OWU3OWUxNTBlMGUwMjY5LnNldENvbnRlbnQoaHRtbF9mOGM4YWRlNjNmODQ0YjI5YTAxMTQ2YmU4MmNiY2E5Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xNzM2OTc3MTY1M2I0ZDdkOTU4OWFhMTFhNGI3YzQ0Mi5iaW5kUG9wdXAocG9wdXBfMTA5ODc0ODU2NGJiNGM4ZDg5ZTc5ZTE1MGUwZTAyNjkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWYyN2EyNmJjNzI4NDNjYWJjNzBhYTFjN2U2ZWI1NjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MTU2MTg0MjIzMTQzMiwtNzMuOTk0Mjc5MzYyNTU5NzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOTcwN2M2NDQzZTEwNDdkMWJkYTk1MmMyYmI5NzNiYmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGU4YThhNmMxNjc3NDJjZWIyOWY4N2E2YzY2ZTA3MzcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjVhNWY1Y2VhMDY4NGE0MzlkMWE1YmY2ZmFjZDE3ZDggPSAkKCc8ZGl2IGlkPSJodG1sX2I1YTVmNWNlYTA2ODRhNDM5ZDFhNWJmNmZhY2QxN2Q4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5DaGluYXRvd248L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBlOGE4YTZjMTY3NzQyY2ViMjlmODdhNmM2NmUwNzM3LnNldENvbnRlbnQoaHRtbF9iNWE1ZjVjZWEwNjg0YTQzOWQxYTViZjZmYWNkMTdkOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xZjI3YTI2YmM3Mjg0M2NhYmM3MGFhMWM3ZTZlYjU2Mi5iaW5kUG9wdXAocG9wdXBfMGU4YThhNmMxNjc3NDJjZWIyOWY4N2E2YzY2ZTA3MzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjdkMDIwY2IyZmExNGZhNjkxNDljNDI2MmEzZDJjZDYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44NTE5MDI1MjU1NTMwNSwtNzMuOTM2OTAwMjc5ODUyMzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOTcwN2M2NDQzZTEwNDdkMWJkYTk1MmMyYmI5NzNiYmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDhjZmU0NzNhM2M2NDk1ZGJhMDZjNGI4NzczOWVlZDUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzBjNzMyZDE2MzRmNGJiYTg2NmRlMDI2YTViNzYzMzkgPSAkKCc8ZGl2IGlkPSJodG1sXzMwYzczMmQxNjM0ZjRiYmE4NjZkZTAyNmE1Yjc2MzM5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XYXNoaW5ndG9uIEhlaWdodHM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQ4Y2ZlNDczYTNjNjQ5NWRiYTA2YzRiODc3MzllZWQ1LnNldENvbnRlbnQoaHRtbF8zMGM3MzJkMTYzNGY0YmJhODY2ZGUwMjZhNWI3NjMzOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mN2QwMjBjYjJmYTE0ZmE2OTE0OWM0MjYyYTNkMmNkNi5iaW5kUG9wdXAocG9wdXBfNDhjZmU0NzNhM2M2NDk1ZGJhMDZjNGI4NzczOWVlZDUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjliYWJmZWExNzJjNDZkN2FkNjJhYjc5MjkzOTU1N2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44Njc2ODM5NjQ0OTkxNSwtNzMuOTIxMjEwNDIyMDM4OTddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOTcwN2M2NDQzZTEwNDdkMWJkYTk1MmMyYmI5NzNiYmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTk5ZDg1Yzk1MGJkNDllNjgxNjE3OWFlOTI0NzE3NTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzU2OTc0OTlmMDRiNDc5MWJlMDczNmEwMDZhMWE4NzEgPSAkKCc8ZGl2IGlkPSJodG1sXzM1Njk3NDk5ZjA0YjQ3OTFiZTA3MzZhMDA2YTFhODcxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Jbndvb2Q8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU5OWQ4NWM5NTBiZDQ5ZTY4MTYxNzlhZTkyNDcxNzUwLnNldENvbnRlbnQoaHRtbF8zNTY5NzQ5OWYwNGI0NzkxYmUwNzM2YTAwNmExYTg3MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82OWJhYmZlYTE3MmM0NmQ3YWQ2MmFiNzkyOTM5NTU3ZS5iaW5kUG9wdXAocG9wdXBfNTk5ZDg1Yzk1MGJkNDllNjgxNjE3OWFlOTI0NzE3NTApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGY4YzFjZGFjZmEyNDljMGExMDYyNmVhOWQ2Zjg2YmQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44MjM2MDQyODQ4MTE5MzUsLTczLjk0OTY4NzkxODgzMzY2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzRlYWZlN2M5MGY2MzQ0Y2NiMWVmODIwNGRjNDkxMTgzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y1YjgyM2JkYWVkNzRjZjA4MDEyNGYxZmEzN2YzY2EyID0gJCgnPGRpdiBpZD0iaHRtbF9mNWI4MjNiZGFlZDc0Y2YwODAxMjRmMWZhMzdmM2NhMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SGFtaWx0b24gSGVpZ2h0czwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNGVhZmU3YzkwZjYzNDRjY2IxZWY4MjA0ZGM0OTExODMuc2V0Q29udGVudChodG1sX2Y1YjgyM2JkYWVkNzRjZjA4MDEyNGYxZmEzN2YzY2EyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzhmOGMxY2RhY2ZhMjQ5YzBhMTA2MjZlYTlkNmY4NmJkLmJpbmRQb3B1cChwb3B1cF80ZWFmZTdjOTBmNjM0NGNjYjFlZjgyMDRkYzQ5MTE4Myk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hYzlhMGNmYzdiNmY0ZmMyYmQwZGQ0NzI4YjIzY2Y5ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgxNjkzNDQyOTQ5NzgsLTczLjk1NzM4NTM5MzUxODhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOTcwN2M2NDQzZTEwNDdkMWJkYTk1MmMyYmI5NzNiYmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjVmMGNmM2RjMDNlNGU5ODg5MDJjODgwMmQzZGUwNjUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmNjMDNmM2MwY2NkNDBhZmE1ZGQ2ZDFjMDQzMGQ1NjEgPSAkKCc8ZGl2IGlkPSJodG1sXzJjYzAzZjNjMGNjZDQwYWZhNWRkNmQxYzA0MzBkNTYxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NYW5oYXR0YW52aWxsZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjVmMGNmM2RjMDNlNGU5ODg5MDJjODgwMmQzZGUwNjUuc2V0Q29udGVudChodG1sXzJjYzAzZjNjMGNjZDQwYWZhNWRkNmQxYzA0MzBkNTYxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2FjOWEwY2ZjN2I2ZjRmYzJiZDBkZDQ3MjhiMjNjZjlkLmJpbmRQb3B1cChwb3B1cF9iNWYwY2YzZGMwM2U0ZTk4ODkwMmM4ODAyZDNkZTA2NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81ZWI1M2RhZGVkMzA0ZTdiYTFkM2RjYTllYjQ2ZDIzMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgxNTk3NjA2NzQyNDE0LC03My45NDMyMTExMjYwMzkwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85NzA3YzY0NDNlMTA0N2QxYmRhOTUyYzJiYjk3M2JiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mZDNhNjIyMTI3NWI0YjQzYTNmZjdjZTg5N2NhNmRlOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80YzdjYzEyYzIwNTQ0M2EyYTUyMjc5ZDhiOTM4NWQ5YyA9ICQoJzxkaXYgaWQ9Imh0bWxfNGM3Y2MxMmMyMDU0NDNhMmE1MjI3OWQ4YjkzODVkOWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNlbnRyYWwgSGFybGVtPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mZDNhNjIyMTI3NWI0YjQzYTNmZjdjZTg5N2NhNmRlOC5zZXRDb250ZW50KGh0bWxfNGM3Y2MxMmMyMDU0NDNhMmE1MjI3OWQ4YjkzODVkOWMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNWViNTNkYWRlZDMwNGU3YmExZDNkY2E5ZWI0NmQyMzAuYmluZFBvcHVwKHBvcHVwX2ZkM2E2MjIxMjc1YjRiNDNhM2ZmN2NlODk3Y2E2ZGU4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzkwOGI5ODViNDIzZDQyYmY5MTNmNGZhYWZlNWIxZmQxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzkyMjQ5NDY2NjMwMzMsLTczLjk0NDE4MjIzMTQ4NTI0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkyNTcwYWIyY2Q0ODQwOTRiMTFiNWNkYmNiMWFlYzdhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YxNTcwYzdlNWZiMjRjOGZhNDgwYWEwMGM4OGRjZTExID0gJCgnPGRpdiBpZD0iaHRtbF9mMTU3MGM3ZTVmYjI0YzhmYTQ4MGFhMDBjODhkY2UxMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RWFzdCBIYXJsZW08L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzkyNTcwYWIyY2Q0ODQwOTRiMTFiNWNkYmNiMWFlYzdhLnNldENvbnRlbnQoaHRtbF9mMTU3MGM3ZTVmYjI0YzhmYTQ4MGFhMDBjODhkY2UxMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85MDhiOTg1YjQyM2Q0MmJmOTEzZjRmYWFmZTViMWZkMS5iaW5kUG9wdXAocG9wdXBfOTI1NzBhYjJjZDQ4NDA5NGIxMWI1Y2RiY2IxYWVjN2EpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGRhY2NjOWZkMjEwNDVhNWIwODkyMGNkOWJmMWFkNDUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43NzU2Mzg1NzMzMDE4MDUsLTczLjk2MDUwNzYzMTM1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzczNWVkMWZlYzEwODQ5MWY5MjNlNmM1NTIzNDM1OTFkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E0MzZiNjFiNTQzMzQxYjg5NTg3OGY2OTdlYThmNTk2ID0gJCgnPGRpdiBpZD0iaHRtbF9hNDM2YjYxYjU0MzM0MWI4OTU4NzhmNjk3ZWE4ZjU5NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VXBwZXIgRWFzdCBTaWRlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83MzVlZDFmZWMxMDg0OTFmOTIzZTZjNTUyMzQzNTkxZC5zZXRDb250ZW50KGh0bWxfYTQzNmI2MWI1NDMzNDFiODk1ODc4ZjY5N2VhOGY1OTYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOGRhY2NjOWZkMjEwNDVhNWIwODkyMGNkOWJmMWFkNDUuYmluZFBvcHVwKHBvcHVwXzczNWVkMWZlYzEwODQ5MWY5MjNlNmM1NTIzNDM1OTFkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVkMzE5Zjc3MmUyMDRhNTBhNDY4ZmRmYWE5NWYyNjU0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzc1OTI5ODQ5ODg0ODc1LC03My45NDcxMTc4NDQ3MTgyNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85NzA3YzY0NDNlMTA0N2QxYmRhOTUyYzJiYjk3M2JiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kNmM1YmJjZDhhYWE0MGQ5OTExNDMzMGNiM2JmZWQzMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80NGY2MWNhMzE3YTg0MDg3OTlkN2M0ZjNiNjQwYzMyYyA9ICQoJzxkaXYgaWQ9Imh0bWxfNDRmNjFjYTMxN2E4NDA4Nzk5ZDdjNGYzYjY0MGMzMmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPllvcmt2aWxsZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDZjNWJiY2Q4YWFhNDBkOTkxMTQzMzBjYjNiZmVkMzMuc2V0Q29udGVudChodG1sXzQ0ZjYxY2EzMTdhODQwODc5OWQ3YzRmM2I2NDBjMzJjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzVkMzE5Zjc3MmUyMDRhNTBhNDY4ZmRmYWE5NWYyNjU0LmJpbmRQb3B1cChwb3B1cF9kNmM1YmJjZDhhYWE0MGQ5OTExNDMzMGNiM2JmZWQzMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yMjhlZWZhZjhjNWE0ZGIyOTEzMWJkMWU5MTAwMDViZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc2ODExMjY1ODI4NzMzLC03My45NTg4NTk2ODgxMzc2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY5MGViOGYwZTE1YjQ5NTc4YmMzNTY3YzgwNzE5NjAzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q3NTI5YjNmZTkyMTQxOTViYmI3NTJhMzJmZmJiZmZiID0gJCgnPGRpdiBpZD0iaHRtbF9kNzUyOWIzZmU5MjE0MTk1YmJiNzUyYTMyZmZiYmZmYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TGVub3ggSGlsbDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjkwZWI4ZjBlMTViNDk1NzhiYzM1NjdjODA3MTk2MDMuc2V0Q29udGVudChodG1sX2Q3NTI5YjNmZTkyMTQxOTViYmI3NTJhMzJmZmJiZmZiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzIyOGVlZmFmOGM1YTRkYjI5MTMxYmQxZTkxMDAwNWJmLmJpbmRQb3B1cChwb3B1cF82OTBlYjhmMGUxNWI0OTU3OGJjMzU2N2M4MDcxOTYwMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83OWU3MjY4ZjI0YTQ0ODRhOTQ0OTI4YjAxZjdiYmVhOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc2MjE1OTYwNTc2MjgzLC03My45NDkxNjc2OTIyNzk1M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85NzA3YzY0NDNlMTA0N2QxYmRhOTUyYzJiYjk3M2JiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iMzE2NDA3MDI5YjI0YjhmYWQwYzAxNTk1MjVlMDg3NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kZmUxYTA0OGMwNWU0YzY3OTcyZGY2OGIyMWQ0YmFmMSA9ICQoJzxkaXYgaWQ9Imh0bWxfZGZlMWEwNDhjMDVlNGM2Nzk3MmRmNjhiMjFkNGJhZjEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJvb3NldmVsdCBJc2xhbmQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2IzMTY0MDcwMjliMjRiOGZhZDBjMDE1OTUyNWUwODc3LnNldENvbnRlbnQoaHRtbF9kZmUxYTA0OGMwNWU0YzY3OTcyZGY2OGIyMWQ0YmFmMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83OWU3MjY4ZjI0YTQ0ODRhOTQ0OTI4YjAxZjdiYmVhOC5iaW5kUG9wdXAocG9wdXBfYjMxNjQwNzAyOWIyNGI4ZmFkMGMwMTU5NTI1ZTA4NzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTRhZmYyNzhhZDlkNDBjNWEyODNkNmMxNjkzMjA0YjcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43ODc2NTc5OTg1MzQ4NTQsLTczLjk3NzA1OTIzNjMwNjAzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI5Yzk4MjViYjhmZjRjZTQ4MjkzMWZiOTMyMWQ1YWUyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQyNDJlMmM3ZGE2MDQyYjg4Mjg4ODcwNzU2Mzk3ZDY3ID0gJCgnPGRpdiBpZD0iaHRtbF80MjQyZTJjN2RhNjA0MmI4ODI4ODg3MDc1NjM5N2Q2NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VXBwZXIgV2VzdCBTaWRlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yOWM5ODI1YmI4ZmY0Y2U0ODI5MzFmYjkzMjFkNWFlMi5zZXRDb250ZW50KGh0bWxfNDI0MmUyYzdkYTYwNDJiODgyODg4NzA3NTYzOTdkNjcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYTRhZmYyNzhhZDlkNDBjNWEyODNkNmMxNjkzMjA0YjcuYmluZFBvcHVwKHBvcHVwXzI5Yzk4MjViYjhmZjRjZTQ4MjkzMWZiOTMyMWQ1YWUyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RhNzMxNTViNGUxMTQ4ODJiYTg1YWIyOGJlN2Y1Yjc3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzczNTI4ODg5NDIxNjYsLTczLjk4NTMzNzc3MDAxMjYyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2YyZWNmOWM0MGZkYTQ4ZDJhNGU1YmYyOTRhZjZkNmQ0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M0ODc1Yjg4YWJhMzQ5N2FiZjY3MWIxOTE2NmI4MzUzID0gJCgnPGRpdiBpZD0iaHRtbF9jNDg3NWI4OGFiYTM0OTdhYmY2NzFiMTkxNjZiODM1MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TGluY29sbiBTcXVhcmU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2YyZWNmOWM0MGZkYTQ4ZDJhNGU1YmYyOTRhZjZkNmQ0LnNldENvbnRlbnQoaHRtbF9jNDg3NWI4OGFiYTM0OTdhYmY2NzFiMTkxNjZiODM1Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kYTczMTU1YjRlMTE0ODgyYmE4NWFiMjhiZTdmNWI3Ny5iaW5kUG9wdXAocG9wdXBfZjJlY2Y5YzQwZmRhNDhkMmE0ZTViZjI5NGFmNmQ2ZDQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzFkNzFiZTY4YWJmNDQ4OTliNmE2NGU4NDgxYzk0NDkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43NTkxMDA4OTE0NjIxMiwtNzMuOTk2MTE5MzYzMDk0NzldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOTcwN2M2NDQzZTEwNDdkMWJkYTk1MmMyYmI5NzNiYmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzNlZDFkMzE4MjQzNDhlMjllODBjMTRjYzNjN2I3NmUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfN2EwN2E1ZWU5NWZhNDU4MTlhZDk3NmE4Y2U5ZWFmNWEgPSAkKCc8ZGl2IGlkPSJodG1sXzdhMDdhNWVlOTVmYTQ1ODE5YWQ5NzZhOGNlOWVhZjVhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5DbGludG9uPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jM2VkMWQzMTgyNDM0OGUyOWU4MGMxNGNjM2M3Yjc2ZS5zZXRDb250ZW50KGh0bWxfN2EwN2E1ZWU5NWZhNDU4MTlhZDk3NmE4Y2U5ZWFmNWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzFkNzFiZTY4YWJmNDQ4OTliNmE2NGU4NDgxYzk0NDkuYmluZFBvcHVwKHBvcHVwX2MzZWQxZDMxODI0MzQ4ZTI5ZTgwYzE0Y2MzYzdiNzZlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I5NmY0YTZiMWQ2MjQ2NWZhOGZjZjQxYzNmZDFiOWJjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzU0NjkxMTAyNzA2MjMsLTczLjk4MTY2ODgyNzMwMzA0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzAwN2IxNjE0NDhmZTQ2NDFiNDNkODZkM2JiODllYTkwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzMzMzRhZjg2NWNhNzRjMzE5MTFiZTE2NzVhMjBiMmY3ID0gJCgnPGRpdiBpZD0iaHRtbF8zMzM0YWY4NjVjYTc0YzMxOTExYmUxNjc1YTIwYjJmNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWlkdG93bjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDA3YjE2MTQ0OGZlNDY0MWI0M2Q4NmQzYmI4OWVhOTAuc2V0Q29udGVudChodG1sXzMzMzRhZjg2NWNhNzRjMzE5MTFiZTE2NzVhMjBiMmY3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2I5NmY0YTZiMWQ2MjQ2NWZhOGZjZjQxYzNmZDFiOWJjLmJpbmRQb3B1cChwb3B1cF8wMDdiMTYxNDQ4ZmU0NjQxYjQzZDg2ZDNiYjg5ZWE5MCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83MDIwOGFjY2JjOWU0MGNmYWI0MzEzNmQwYjhmNjI5NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc0ODMwMzA3NzI1MjE3NCwtNzMuOTc4MzMyMDc5MjQxMjddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOTcwN2M2NDQzZTEwNDdkMWJkYTk1MmMyYmI5NzNiYmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDY1YzE3NmNkMDExNDVlNmFjOWM3NWFjMGQ2N2RlODcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWVkODg3MTcyYTg2NDI5YWIzODE4MDQ4NGMyNmNmMjAgPSAkKCc8ZGl2IGlkPSJodG1sXzllZDg4NzE3MmE4NjQyOWFiMzgxODA0ODRjMjZjZjIwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NdXJyYXkgSGlsbDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDY1YzE3NmNkMDExNDVlNmFjOWM3NWFjMGQ2N2RlODcuc2V0Q29udGVudChodG1sXzllZDg4NzE3MmE4NjQyOWFiMzgxODA0ODRjMjZjZjIwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzcwMjA4YWNjYmM5ZTQwY2ZhYjQzMTM2ZDBiOGY2Mjk2LmJpbmRQb3B1cChwb3B1cF8wNjVjMTc2Y2QwMTE0NWU2YWM5Yzc1YWMwZDY3ZGU4Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85YWYwNTQ2NTc2Yjg0M2Y5YTIxZDRiYmJjMTdiZWE3NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc0NDAzNDcwNjc0Nzk3NSwtNzQuMDAzMTE2MzM0NzI4MTNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOTcwN2M2NDQzZTEwNDdkMWJkYTk1MmMyYmI5NzNiYmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGIwZGY0NDU1ZTFkNDIyMDljZjYzOTI1MzZjOTMxNWYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjM3MzdjNmJjOTIzNDMyNmI0NGJjODdlZDE2MzdkMjUgPSAkKCc8ZGl2IGlkPSJodG1sX2YzNzM3YzZiYzkyMzQzMjZiNDRiYzg3ZWQxNjM3ZDI1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5DaGVsc2VhPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kYjBkZjQ0NTVlMWQ0MjIwOWNmNjM5MjUzNmM5MzE1Zi5zZXRDb250ZW50KGh0bWxfZjM3MzdjNmJjOTIzNDMyNmI0NGJjODdlZDE2MzdkMjUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOWFmMDU0NjU3NmI4NDNmOWEyMWQ0YmJiYzE3YmVhNzUuYmluZFBvcHVwKHBvcHVwX2RiMGRmNDQ1NWUxZDQyMjA5Y2Y2MzkyNTM2YzkzMTVmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RmN2Y0M2NjZDBiMDQ0Mzk5ZGQ4ZGIzNmE3NWE0YWFlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzI2OTMyODg1MzYxMjgsLTczLjk5OTkxNDAyOTQ1OTAyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzcyY2U2ODY2YWU5MjQzNWVhMmNmMWEyMDIxNjFjODJmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U2MDlhOTM3MGRmMTQ2OGZiNGIzOTM3OTQxMjAyMjJkID0gJCgnPGRpdiBpZD0iaHRtbF9lNjA5YTkzNzBkZjE0NjhmYjRiMzkzNzk0MTIwMjIyZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+R3JlZW53aWNoIFZpbGxhZ2U8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzcyY2U2ODY2YWU5MjQzNWVhMmNmMWEyMDIxNjFjODJmLnNldENvbnRlbnQoaHRtbF9lNjA5YTkzNzBkZjE0NjhmYjRiMzkzNzk0MTIwMjIyZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kZjdmNDNjY2QwYjA0NDM5OWRkOGRiMzZhNzVhNGFhZS5iaW5kUG9wdXAocG9wdXBfNzJjZTY4NjZhZTkyNDM1ZWEyY2YxYTIwMjE2MWM4MmYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODQ1MjdmZjNhNmNlNGQwMmIxZWFhYWRhOGM5NTFjMzMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43Mjc4NDY3NzcyNzAyNDQsLTczLjk4MjIyNjE2NTA2NDE2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhkZDU4M2U1ZjFlMTQyYTBiMTI5NzRhODY2YjI0NzFlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc1ZjA0Nzc3NmFmMTQzMmJhNmVkNTk0ODQyNDQwOGRkID0gJCgnPGRpdiBpZD0iaHRtbF83NWYwNDc3NzZhZjE0MzJiYTZlZDU5NDg0MjQ0MDhkZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RWFzdCBWaWxsYWdlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84ZGQ1ODNlNWYxZTE0MmEwYjEyOTc0YTg2NmIyNDcxZS5zZXRDb250ZW50KGh0bWxfNzVmMDQ3Nzc2YWYxNDMyYmE2ZWQ1OTQ4NDI0NDA4ZGQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODQ1MjdmZjNhNmNlNGQwMmIxZWFhYWRhOGM5NTFjMzMuYmluZFBvcHVwKHBvcHVwXzhkZDU4M2U1ZjFlMTQyYTBiMTI5NzRhODY2YjI0NzFlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhkZmI0M2MxZWNmMTQyZDdhMjcyZTYzZjAxM2Q5NTc3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzE3ODA2NzQ4OTI3NjUsLTczLjk4MDg5MDMxOTk5MjkxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VhZTY1MWMwYTJiNzQ0YWY5M2JmYzU1Y2EzODJjYmY5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzMxNDJlMmMwZTdkMTRkZDdiODE1MDg4ZmFmOWNjNWRlID0gJCgnPGRpdiBpZD0iaHRtbF8zMTQyZTJjMGU3ZDE0ZGQ3YjgxNTA4OGZhZjljYzVkZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TG93ZXIgRWFzdCBTaWRlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lYWU2NTFjMGEyYjc0NGFmOTNiZmM1NWNhMzgyY2JmOS5zZXRDb250ZW50KGh0bWxfMzE0MmUyYzBlN2QxNGRkN2I4MTUwODhmYWY5Y2M1ZGUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOGRmYjQzYzFlY2YxNDJkN2EyNzJlNjNmMDEzZDk1NzcuYmluZFBvcHVwKHBvcHVwX2VhZTY1MWMwYTJiNzQ0YWY5M2JmYzU1Y2EzODJjYmY5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzEyZWMxZGM4MTYwNzQwNTg5N2U3OTJkNmVlM2ExMTg2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzIxNTIxOTY3NDQzMjE2LC03NC4wMTA2ODMyODU1OTA4N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85NzA3YzY0NDNlMTA0N2QxYmRhOTUyYzJiYjk3M2JiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83NjE5MmYwOWRmMWI0M2FkOGMwYWEzZTMyZDcxYjEzZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MWQ1MjhhMTA2OWM0MTczYjMzNGY2ZDg3NzNlNmNmNiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjFkNTI4YTEwNjljNDE3M2IzMzRmNmQ4NzczZTZjZjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRyaWJlY2E8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc2MTkyZjA5ZGYxYjQzYWQ4YzBhYTNlMzJkNzFiMTNkLnNldENvbnRlbnQoaHRtbF82MWQ1MjhhMTA2OWM0MTczYjMzNGY2ZDg3NzNlNmNmNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xMmVjMWRjODE2MDc0MDU4OTdlNzkyZDZlZTNhMTE4Ni5iaW5kUG9wdXAocG9wdXBfNzYxOTJmMDlkZjFiNDNhZDhjMGFhM2UzMmQ3MWIxM2QpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzIwNTVhODkwZmE1NGM0Zjk0ZjJiNWNjMWUyOTdhZDggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MTkzMjM3OTM5NTkwNywtNzMuOTk3MzA0NjcyMDgwNzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOTcwN2M2NDQzZTEwNDdkMWJkYTk1MmMyYmI5NzNiYmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOGNmYzQ3Yjk1MmExNDEwZjk4NmNiZTU0N2JhY2M5MTMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGMyZWVlYjFhMzgzNGExMzk0ODFmZGU1YmE2ZDg0MGYgPSAkKCc8ZGl2IGlkPSJodG1sXzRjMmVlZWIxYTM4MzRhMTM5NDgxZmRlNWJhNmQ4NDBmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MaXR0bGUgSXRhbHk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhjZmM0N2I5NTJhMTQxMGY5ODZjYmU1NDdiYWNjOTEzLnNldENvbnRlbnQoaHRtbF80YzJlZWViMWEzODM0YTEzOTQ4MWZkZTViYTZkODQwZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zMjA1NWE4OTBmYTU0YzRmOTRmMmI1Y2MxZTI5N2FkOC5iaW5kUG9wdXAocG9wdXBfOGNmYzQ3Yjk1MmExNDEwZjk4NmNiZTU0N2JhY2M5MTMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWRlMWZhOWZjYjFkNGNkYWExMDc3NTFkY2ZmY2ZiMjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MjIxODM4NDEzMTc5NCwtNzQuMDAwNjU2NjY5NTk3NTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOTcwN2M2NDQzZTEwNDdkMWJkYTk1MmMyYmI5NzNiYmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2MxYjEwZmU0YjgwNGRkMzg5ZjJjYjdhZWVhMGMyNGMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjJkYTg1M2IwOWIwNDJjN2FkZWU0N2E3YmJkNGQ3NGMgPSAkKCc8ZGl2IGlkPSJodG1sXzYyZGE4NTNiMDliMDQyYzdhZGVlNDdhN2JiZDRkNzRjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Tb2hvPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jYzFiMTBmZTRiODA0ZGQzODlmMmNiN2FlZWEwYzI0Yy5zZXRDb250ZW50KGh0bWxfNjJkYTg1M2IwOWIwNDJjN2FkZWU0N2E3YmJkNGQ3NGMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMWRlMWZhOWZjYjFkNGNkYWExMDc3NTFkY2ZmY2ZiMjIuYmluZFBvcHVwKHBvcHVwX2NjMWIxMGZlNGI4MDRkZDM4OWYyY2I3YWVlYTBjMjRjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZmN2M1NGI3MDdlNDRiYmJhM2UwOGY5Nzk0YzM1ZDA4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzM0NDMzOTM1NzI0MzQsLTc0LjAwNjE3OTk4MTI2ODEyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzRjMWE4ODBlZmFhYzQyZGM4NmI4ZmJmNTE0YjI0MjdmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzAyNGNjNzg3YzQ2YjQwMjVhZThmOWM0Y2Q2YWNjNTJkID0gJCgnPGRpdiBpZD0iaHRtbF8wMjRjYzc4N2M0NmI0MDI1YWU4ZjljNGNkNmFjYzUyZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V2VzdCBWaWxsYWdlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80YzFhODgwZWZhYWM0MmRjODZiOGZiZjUxNGIyNDI3Zi5zZXRDb250ZW50KGh0bWxfMDI0Y2M3ODdjNDZiNDAyNWFlOGY5YzRjZDZhY2M1MmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZmY3YzU0YjcwN2U0NGJiYmEzZTA4Zjk3OTRjMzVkMDguYmluZFBvcHVwKHBvcHVwXzRjMWE4ODBlZmFhYzQyZGM4NmI4ZmJmNTE0YjI0MjdmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZhMzY0Mzg4Y2U2YTQ2NTdiODllMWVjMWQyMDUyNmY4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzk3MzA3MDQxNzAyODY1LC03My45NjQyODYxNzc0MDY1NV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85NzA3YzY0NDNlMTA0N2QxYmRhOTUyYzJiYjk3M2JiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85NzMyODM2NjRjNGI0OGQ3OGM2ODg3OWYzMWQ4NTc1NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zNDI0YjI5YTVlMjQ0ZjNjOTc1YjlkODRkMjhiNWM0ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfMzQyNGIyOWE1ZTI0NGYzYzk3NWI5ZDg0ZDI4YjVjNGUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1hbmhhdHRhbiBWYWxsZXk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzk3MzI4MzY2NGM0YjQ4ZDc4YzY4ODc5ZjMxZDg1NzU1LnNldENvbnRlbnQoaHRtbF8zNDI0YjI5YTVlMjQ0ZjNjOTc1YjlkODRkMjhiNWM0ZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82YTM2NDM4OGNlNmE0NjU3Yjg5ZTFlYzFkMjA1MjZmOC5iaW5kUG9wdXAocG9wdXBfOTczMjgzNjY0YzRiNDhkNzhjNjg4NzlmMzFkODU3NTUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTljYTE4OWFhNGIwNDgxMzkzY2E4ZWZkN2MyNjBkMzcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44MDc5OTk3MzgxNjU4MjYsLTczLjk2Mzg5NjI3OTA1MzMyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZkNTBjZGM4NWVhOTQ3Zjc5YjY0YjM4YWNhMTE3ZDU4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RlNmFhZGQyOTJhNzRlNjc4NmMwNGFlMjVkYzQ3Y2VlID0gJCgnPGRpdiBpZD0iaHRtbF9kZTZhYWRkMjkyYTc0ZTY3ODZjMDRhZTI1ZGM0N2NlZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TW9ybmluZ3NpZGUgSGVpZ2h0czwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmQ1MGNkYzg1ZWE5NDdmNzliNjRiMzhhY2ExMTdkNTguc2V0Q29udGVudChodG1sX2RlNmFhZGQyOTJhNzRlNjc4NmMwNGFlMjVkYzQ3Y2VlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzk5Y2ExODlhYTRiMDQ4MTM5M2NhOGVmZDdjMjYwZDM3LmJpbmRQb3B1cChwb3B1cF82ZDUwY2RjODVlYTk0N2Y3OWI2NGIzOGFjYTExN2Q1OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83OGVhYjhjNTY3NDU0M2M2YTNhMTBjYTYwNDVhYTUzYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjczNzIwOTgzMjcxNSwtNzMuOTgxMzc1OTQ4MzM1NDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOTcwN2M2NDQzZTEwNDdkMWJkYTk1MmMyYmI5NzNiYmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTM4MGQxZWZkOTdjNDViZDljY2Y0YmI4NGI5MjAzOTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTFkM2YyMDIxM2E5NDYxZTk4OGNjNWUwYzljOWNlMDkgPSAkKCc8ZGl2IGlkPSJodG1sXzExZDNmMjAyMTNhOTQ2MWU5ODhjYzVlMGM5YzljZTA5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5HcmFtZXJjeTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTM4MGQxZWZkOTdjNDViZDljY2Y0YmI4NGI5MjAzOTAuc2V0Q29udGVudChodG1sXzExZDNmMjAyMTNhOTQ2MWU5ODhjYzVlMGM5YzljZTA5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzc4ZWFiOGM1Njc0NTQzYzZhM2ExMGNhNjA0NWFhNTNjLmJpbmRQb3B1cChwb3B1cF85MzgwZDFlZmQ5N2M0NWJkOWNjZjRiYjg0YjkyMDM5MCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MjVjN2FmZjI4ZDU0ZTNmODdjZDVlZjA0ZjA4MmY4ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjcxMTkzMTk4Mzk0NTY1LC03NC4wMTY4NjkzMDUwODYxN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85NzA3YzY0NDNlMTA0N2QxYmRhOTUyYzJiYjk3M2JiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wMDgwNmE1MzczZTM0NzM5OTc4YzUyOWVlMmU2MmE5YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NjJiMTc0MjBhYTI0N2M2Yjc5OGJkZTg5NzQ2MDY0MSA9ICQoJzxkaXYgaWQ9Imh0bWxfOTYyYjE3NDIwYWEyNDdjNmI3OThiZGU4OTc0NjA2NDEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJhdHRlcnkgUGFyayBDaXR5PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wMDgwNmE1MzczZTM0NzM5OTc4YzUyOWVlMmU2MmE5YS5zZXRDb250ZW50KGh0bWxfOTYyYjE3NDIwYWEyNDdjNmI3OThiZGU4OTc0NjA2NDEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODI1YzdhZmYyOGQ1NGUzZjg3Y2Q1ZWYwNGYwODJmOGYuYmluZFBvcHVwKHBvcHVwXzAwODA2YTUzNzNlMzQ3Mzk5NzhjNTI5ZWUyZTYyYTlhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IyODE4NTM5NDhmZTQ1MDBhYjU2NWUxODEwOTI1ZDFjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzA3MTA3MTA3MjcwNDgsLTc0LjAxMDY2NTQ0NTIxMjddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOTcwN2M2NDQzZTEwNDdkMWJkYTk1MmMyYmI5NzNiYmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYWE2NDI3MTA1NDI1NGNlZGFiMWYyZDZjMjk4Y2NjMGIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfN2MxM2U5NTU2MTMzNGMwNTgxYzgwODMzYjNjNDU2OTQgPSAkKCc8ZGl2IGlkPSJodG1sXzdjMTNlOTU1NjEzMzRjMDU4MWM4MDgzM2IzYzQ1Njk0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GaW5hbmNpYWwgRGlzdHJpY3Q8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FhNjQyNzEwNTQyNTRjZWRhYjFmMmQ2YzI5OGNjYzBiLnNldENvbnRlbnQoaHRtbF83YzEzZTk1NTYxMzM0YzA1ODFjODA4MzNiM2M0NTY5NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iMjgxODUzOTQ4ZmU0NTAwYWI1NjVlMTgxMDkyNWQxYy5iaW5kUG9wdXAocG9wdXBfYWE2NDI3MTA1NDI1NGNlZGFiMWYyZDZjMjk4Y2NjMGIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYWYxNGY3OGE0MmZlNDA5NTg1YTc1N2ViNDQ5YzMwNTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43ODI2ODI1NjcxMjU3LC03My45NTMyNTY0NjgzNzExMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85NzA3YzY0NDNlMTA0N2QxYmRhOTUyYzJiYjk3M2JiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mNmE2MWQxZjVmNjg0ZmRmYTFjMjJlNTc1NTI1MDFkMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80ZTUxMWI5YmUwNDI0ZmFjYTdjYTg5MGU1MDIxMWI0OSA9ICQoJzxkaXYgaWQ9Imh0bWxfNGU1MTFiOWJlMDQyNGZhY2E3Y2E4OTBlNTAyMTFiNDkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNhcm5lZ2llIEhpbGw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y2YTYxZDFmNWY2ODRmZGZhMWMyMmU1NzU1MjUwMWQyLnNldENvbnRlbnQoaHRtbF80ZTUxMWI5YmUwNDI0ZmFjYTdjYTg5MGU1MDIxMWI0OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hZjE0Zjc4YTQyZmU0MDk1ODVhNzU3ZWI0NDljMzA1OS5iaW5kUG9wdXAocG9wdXBfZjZhNjFkMWY1ZjY4NGZkZmExYzIyZTU3NTUyNTAxZDIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDEzMjlmOTZlNmU4NDQwZWJkZmIwN2M5M2QzOWUxNjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MjMyNTkwMTg4NTc2OCwtNzMuOTg4NDMzNjgwMjM1OTddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOTcwN2M2NDQzZTEwNDdkMWJkYTk1MmMyYmI5NzNiYmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTk4YzZiNDM0MzhmNGI4ZWFhNjc1OTM3NzYxODU1MGUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2VjMTk5NDhkNWE4NDI3NDk0ZTNlOWM0M2E4YTI3NDAgPSAkKCc8ZGl2IGlkPSJodG1sX2NlYzE5OTQ4ZDVhODQyNzQ5NGUzZTljNDNhOGEyNzQwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Ob2hvPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lOThjNmI0MzQzOGY0YjhlYWE2NzU5Mzc3NjE4NTUwZS5zZXRDb250ZW50KGh0bWxfY2VjMTk5NDhkNWE4NDI3NDk0ZTNlOWM0M2E4YTI3NDApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDEzMjlmOTZlNmU4NDQwZWJkZmIwN2M5M2QzOWUxNjguYmluZFBvcHVwKHBvcHVwX2U5OGM2YjQzNDM4ZjRiOGVhYTY3NTkzNzc2MTg1NTBlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhiN2I5ZjliMmQ5ODQ5Y2RhNjhmNzE2Y2I5ZDMxZDliID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzE1MjI4OTIwNDYyODIsLTc0LjAwNTQxNTI5ODczMzU1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2YyNGMyM2VkNTY0ZjRiMGJiMTUyMWQ1NDVjNzgxYTc1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2QwN2Y3NmM1YTczODRmMzI5OWYwYzI0YzY2NWUwY2I5ID0gJCgnPGRpdiBpZD0iaHRtbF9kMDdmNzZjNWE3Mzg0ZjMyOTlmMGMyNGM2NjVlMGNiOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q2l2aWMgQ2VudGVyPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mMjRjMjNlZDU2NGY0YjBiYjE1MjFkNTQ1Yzc4MWE3NS5zZXRDb250ZW50KGh0bWxfZDA3Zjc2YzVhNzM4NGYzMjk5ZjBjMjRjNjY1ZTBjYjkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOGI3YjlmOWIyZDk4NDljZGE2OGY3MTZjYjlkMzFkOWIuYmluZFBvcHVwKHBvcHVwX2YyNGMyM2VkNTY0ZjRiMGJiMTUyMWQ1NDVjNzgxYTc1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAzZDQ3M2VhMDdlMjQ5YWVhODFhMzZlYjJlOTE5OTdjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzQ4NTA5NjY0MzEyMiwtNzMuOTg4NzEzMTMyODUyNDddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOTcwN2M2NDQzZTEwNDdkMWJkYTk1MmMyYmI5NzNiYmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjY0NjljMzJiYWQ5NDczZjhiOThlZWM4OTAwNWYyYzkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGEyZTc2ZjJhZTVmNGUyNGEyM2U1YjM4MTUwY2JiNTMgPSAkKCc8ZGl2IGlkPSJodG1sX2RhMmU3NmYyYWU1ZjRlMjRhMjNlNWIzODE1MGNiYjUzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NaWR0b3duIFNvdXRoPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82NjQ2OWMzMmJhZDk0NzNmOGI5OGVlYzg5MDA1ZjJjOS5zZXRDb250ZW50KGh0bWxfZGEyZTc2ZjJhZTVmNGUyNGEyM2U1YjM4MTUwY2JiNTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDNkNDczZWEwN2UyNDlhZWE4MWEzNmViMmU5MTk5N2MuYmluZFBvcHVwKHBvcHVwXzY2NDY5YzMyYmFkOTQ3M2Y4Yjk4ZWVjODkwMDVmMmM5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FlZTViMjEwODA1MDQ2NWQ5MDE2NmE0OTY0ZjM4YzgwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzYwMjgwMzMxMzEzNzQsLTczLjk2MzU1NjE0MDk0MzAzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQyZTg4YmZkN2E5MDQyM2JhY2ZhY2Y5OTQ1YzBjYjMyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2NiZmMwNjdlYjM2ZTQxYTFiZWMwMTQ2MjlmMmNiNTI0ID0gJCgnPGRpdiBpZD0iaHRtbF9jYmZjMDY3ZWIzNmU0MWExYmVjMDE0NjI5ZjJjYjUyNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U3V0dG9uIFBsYWNlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80MmU4OGJmZDdhOTA0MjNiYWNmYWNmOTk0NWMwY2IzMi5zZXRDb250ZW50KGh0bWxfY2JmYzA2N2ViMzZlNDFhMWJlYzAxNDYyOWYyY2I1MjQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYWVlNWIyMTA4MDUwNDY1ZDkwMTY2YTQ5NjRmMzhjODAuYmluZFBvcHVwKHBvcHVwXzQyZTg4YmZkN2E5MDQyM2JhY2ZhY2Y5OTQ1YzBjYjMyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2VkMWY1ZjExN2NjNDRjNTg4OTQyMmM1MjI2ZmNiNzBiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzUyMDQyMzY5NTA3MjIsLTczLjk2NzcwODI0NTgxODM0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RkNmI2ZWE1Y2Q5NDQwNmE5M2UwMGFkMTVjNDRhMWI5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U1MDg1NjkxYjZkZTRlY2JhNDhjOWUxYTZhZjNkZWJmID0gJCgnPGRpdiBpZD0iaHRtbF9lNTA4NTY5MWI2ZGU0ZWNiYTQ4YzllMWE2YWYzZGViZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VHVydGxlIEJheTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGQ2YjZlYTVjZDk0NDA2YTkzZTAwYWQxNWM0NGExYjkuc2V0Q29udGVudChodG1sX2U1MDg1NjkxYjZkZTRlY2JhNDhjOWUxYTZhZjNkZWJmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2VkMWY1ZjExN2NjNDRjNTg4OTQyMmM1MjI2ZmNiNzBiLmJpbmRQb3B1cChwb3B1cF9kZDZiNmVhNWNkOTQ0MDZhOTNlMDBhZDE1YzQ0YTFiOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yZTAxMjU5NTQ0MGY0YzM0OTg5NjE3YjE5MDIzMmM0NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjc0NjkxNzQxMDc0MDE5NSwtNzMuOTcxMjE5Mjg3MjIyNjVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOTcwN2M2NDQzZTEwNDdkMWJkYTk1MmMyYmI5NzNiYmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTFlYmRmZWUxNjRkNDgyNWIyM2Q1M2Y3MDM3YTVlZjEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzZiYTViN2Q2YTgyNDE4YzlkOGJiMzI5YjM4OTE5ZTcgPSAkKCc8ZGl2IGlkPSJodG1sXzM2YmE1YjdkNmE4MjQxOGM5ZDhiYjMyOWIzODkxOWU3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UdWRvciBDaXR5PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xMWViZGZlZTE2NGQ0ODI1YjIzZDUzZjcwMzdhNWVmMS5zZXRDb250ZW50KGh0bWxfMzZiYTViN2Q2YTgyNDE4YzlkOGJiMzI5YjM4OTE5ZTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMmUwMTI1OTU0NDBmNGMzNDk4OTYxN2IxOTAyMzJjNDQuYmluZFBvcHVwKHBvcHVwXzExZWJkZmVlMTY0ZDQ4MjViMjNkNTNmNzAzN2E1ZWYxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ViYjdmNjkxY2Q4MDRjZGRiZTNiNmU4OWI2OWJlNDAxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzMwOTk5NTU0NzcwNjEsLTczLjk3NDA1MTcwNDY5MjAzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzVjZmZhZTRjODJmYTQ1ZmE5NWE0ZjdmNDQ3MTNlYWJmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzkxZDhhM2QzZmRiYzRhNzA5NzdiZjYyNTU0Y2IzZjIwID0gJCgnPGRpdiBpZD0iaHRtbF85MWQ4YTNkM2ZkYmM0YTcwOTc3YmY2MjU1NGNiM2YyMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U3R1eXZlc2FudCBUb3duPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81Y2ZmYWU0YzgyZmE0NWZhOTVhNGY3ZjQ0NzEzZWFiZi5zZXRDb250ZW50KGh0bWxfOTFkOGEzZDNmZGJjNGE3MDk3N2JmNjI1NTRjYjNmMjApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZWJiN2Y2OTFjZDgwNGNkZGJlM2I2ZTg5YjY5YmU0MDEuYmluZFBvcHVwKHBvcHVwXzVjZmZhZTRjODJmYTQ1ZmE5NWE0ZjdmNDQ3MTNlYWJmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JhNTM1ZjJlOWI1ZDRmMDk4OTM1YTM3NzA0MDAwZGMxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzM5NjczMDQ3NjM4NDI2LC03My45OTA5NDcxMDUyODI2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzk3MDdjNjQ0M2UxMDQ3ZDFiZGE5NTJjMmJiOTczYmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzUxYzA1MjA2ZTJkODRhOGViYTg0YTJmY2YyZGQ0ZjFhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M0NjEwMDM5ZGYxMDQ4YjE5MTE2NDFiOTYzZDA5YTUzID0gJCgnPGRpdiBpZD0iaHRtbF9jNDYxMDAzOWRmMTA0OGIxOTExNjQxYjk2M2QwOWE1MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RmxhdGlyb248L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzUxYzA1MjA2ZTJkODRhOGViYTg0YTJmY2YyZGQ0ZjFhLnNldENvbnRlbnQoaHRtbF9jNDYxMDAzOWRmMTA0OGIxOTExNjQxYjk2M2QwOWE1Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iYTUzNWYyZTliNWQ0ZjA5ODkzNWEzNzcwNDAwMGRjMS5iaW5kUG9wdXAocG9wdXBfNTFjMDUyMDZlMmQ4NGE4ZWJhODRhMmZjZjJkZDRmMWEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGJlMDY5MWM5MzZjNGFhNzg2ODA5NGFmYTgwNWJiNzggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43NTY2NTgwODIyNzUxOSwtNzQuMDAwMTExMzYyMDI2MzddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOTcwN2M2NDQzZTEwNDdkMWJkYTk1MmMyYmI5NzNiYmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2VlMmIxNWExY2U5NGZlYzkwMTQzOWVjNjFhMTQxYjUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjJjMzc2Y2I3N2Q4NGE4NThhNzA5Mzk3YjM0NzgzNTUgPSAkKCc8ZGl2IGlkPSJodG1sX2YyYzM3NmNiNzdkODRhODU4YTcwOTM5N2IzNDc4MzU1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5IdWRzb24gWWFyZHM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdlZTJiMTVhMWNlOTRmZWM5MDE0MzllYzYxYTE0MWI1LnNldENvbnRlbnQoaHRtbF9mMmMzNzZjYjc3ZDg0YTg1OGE3MDkzOTdiMzQ3ODM1NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84YmUwNjkxYzkzNmM0YWE3ODY4MDk0YWZhODA1YmI3OC5iaW5kUG9wdXAocG9wdXBfN2VlMmIxNWExY2U5NGZlYzkwMTQzOWVjNjFhMTQxYjUpOwoKICAgICAgICAgICAgCiAgICAgICAgCjwvc2NyaXB0Pg==\" 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 0x7f16af412630>" | |
] | |
}, | |
"execution_count": 62, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# create map of Manhattan using latitude and longitude values\n", | |
"print_map (manhattan_data, zoom=10)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# a little tweak to show maps as images in github\n", | |
"plt.imshow(mpimg.imread('manhattan.jpg'))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 19, | |
"metadata": {}, | |
"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>Borough</th>\n", | |
" <th>Neighborhood</th>\n", | |
" <th>Latitude</th>\n", | |
" <th>Longitude</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>Bronx</td>\n", | |
" <td>Wakefield</td>\n", | |
" <td>40.894705</td>\n", | |
" <td>-73.847201</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>Bronx</td>\n", | |
" <td>Co-op City</td>\n", | |
" <td>40.874294</td>\n", | |
" <td>-73.829939</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>Bronx</td>\n", | |
" <td>Eastchester</td>\n", | |
" <td>40.887556</td>\n", | |
" <td>-73.827806</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>Bronx</td>\n", | |
" <td>Fieldston</td>\n", | |
" <td>40.895437</td>\n", | |
" <td>-73.905643</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>Bronx</td>\n", | |
" <td>Riverdale</td>\n", | |
" <td>40.890834</td>\n", | |
" <td>-73.912585</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Borough Neighborhood Latitude Longitude\n", | |
"0 Bronx Wakefield 40.894705 -73.847201\n", | |
"1 Bronx Co-op City 40.874294 -73.829939\n", | |
"2 Bronx Eastchester 40.887556 -73.827806\n", | |
"3 Bronx Fieldston 40.895437 -73.905643\n", | |
"4 Bronx Riverdale 40.890834 -73.912585" | |
] | |
}, | |
"execution_count": 19, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"bronx_data = newyork_data[newyork_data['Borough'] == 'Bronx'].reset_index(drop=True)\n", | |
"bronx_data.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 59, | |
"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+ICNtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8zN2E4MWYyYjI4MTE0MDk3OTRjYjBlMDlkMWM5NWIyYSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8zN2E4MWYyYjI4MTE0MDk3OTRjYjBlMDlkMWM5NWIyYScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNDAuNzMwODYxOSwtNzMuOTg3MTU1OF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfYjBiYTExYjkzNDVlNGM3Y2FkOThkMDIxNWY3YTE2YjMgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg5NTI0MzA5MmYwYTQ2YThhYWQwMDg1OTgwZGQyMTU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODk0NzA1MTc2NjEsLTczLjg0NzIwMDUyMDU0OTAyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY3YzdhM2U2Nzg1NzQ5MjliMDQyYzQxYzJmYTI3ODg1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzUxZGI3Y2EyOGU1MDQ3ZmU4ZWUxZmUxYmMzNjZiYjdlID0gJCgnPGRpdiBpZD0iaHRtbF81MWRiN2NhMjhlNTA0N2ZlOGVlMWZlMWJjMzY2YmI3ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V2FrZWZpZWxkPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82N2M3YTNlNjc4NTc0OTI5YjA0MmM0MWMyZmEyNzg4NS5zZXRDb250ZW50KGh0bWxfNTFkYjdjYTI4ZTUwNDdmZThlZTFmZTFiYzM2NmJiN2UpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODk1MjQzMDkyZjBhNDZhOGFhZDAwODU5ODBkZDIxNTUuYmluZFBvcHVwKHBvcHVwXzY3YzdhM2U2Nzg1NzQ5MjliMDQyYzQxYzJmYTI3ODg1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzViZWI0M2ZlZDlmNDQ4MTZhNDkyODhhMDBiYzY4NTM3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODc0Mjk0MTkzMDMwMTIsLTczLjgyOTkzOTEwODEyMzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y4OWU2MzNiNWFhZTQxZWJhYzhmYmNjMjU5ZGRlOWJhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzMyMDg2M2I0MzQ0YzRhMzE5NzlhMDhjNjRiMjU1NDg1ID0gJCgnPGRpdiBpZD0iaHRtbF8zMjA4NjNiNDM0NGM0YTMxOTc5YTA4YzY0YjI1NTQ4NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q28tb3AgQ2l0eTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjg5ZTYzM2I1YWFlNDFlYmFjOGZiY2MyNTlkZGU5YmEuc2V0Q29udGVudChodG1sXzMyMDg2M2I0MzQ0YzRhMzE5NzlhMDhjNjRiMjU1NDg1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzViZWI0M2ZlZDlmNDQ4MTZhNDkyODhhMDBiYzY4NTM3LmJpbmRQb3B1cChwb3B1cF9mODllNjMzYjVhYWU0MWViYWM4ZmJjYzI1OWRkZTliYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82MzA5NjgzYzE0NWM0YjJmYWJhOWFiZTczZDljOTIzYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg4NzU1NTY3NzM1MDc3NSwtNzMuODI3ODA2NDQ3MTY0MTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWZkMjA1ZTU2NzdjNDZmOGExZjViNWU5MGFkZmIzNjYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODFhMWQ2ZGFhMWZjNGRhNmI3MWQxMzViOTAwYzZkOWIgPSAkKCc8ZGl2IGlkPSJodG1sXzgxYTFkNmRhYTFmYzRkYTZiNzFkMTM1YjkwMGM2ZDliIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FYXN0Y2hlc3RlcjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWZkMjA1ZTU2NzdjNDZmOGExZjViNWU5MGFkZmIzNjYuc2V0Q29udGVudChodG1sXzgxYTFkNmRhYTFmYzRkYTZiNzFkMTM1YjkwMGM2ZDliKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzYzMDk2ODNjMTQ1YzRiMmZhYmE5YWJlNzNkOWM5MjNhLmJpbmRQb3B1cChwb3B1cF9lZmQyMDVlNTY3N2M0NmY4YTFmNWI1ZTkwYWRmYjM2Nik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zNzUzZDU5YTRiOWE0ODMwYjhjNTdkOGFjMTk3ZGFkMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg5NTQzNzQyNjkwMzgzLC03My45MDU2NDI1OTU5MTY4Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zN2E4MWYyYjI4MTE0MDk3OTRjYjBlMDlkMWM5NWIyYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jZjIyZWE2OTQ4YTI0ZjAxODcyOTI1Y2M2NTA5YjA5ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85MWRkZjkxMzgwNmU0ZWFjYTRjYzNjODU4YjU5MTk3ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfOTFkZGY5MTM4MDZlNGVhY2E0Y2MzYzg1OGI1OTE5N2QiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZpZWxkc3RvbjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2YyMmVhNjk0OGEyNGYwMTg3MjkyNWNjNjUwOWIwOWUuc2V0Q29udGVudChodG1sXzkxZGRmOTEzODA2ZTRlYWNhNGNjM2M4NThiNTkxOTdkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzM3NTNkNTlhNGI5YTQ4MzBiOGM1N2Q4YWMxOTdkYWQyLmJpbmRQb3B1cChwb3B1cF9jZjIyZWE2OTQ4YTI0ZjAxODcyOTI1Y2M2NTA5YjA5ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zM2Q5ZmE2MWVlZjc0OGRjOGFmNWExNDA5ZjU1YmVjNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg5MDgzNDQ5Mzg5MTMwNSwtNzMuOTEyNTg1NDYxMDg1N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zN2E4MWYyYjI4MTE0MDk3OTRjYjBlMDlkMWM5NWIyYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kNjE4OWNkN2RhZTk0OGZkYjBjNmYyOWM2MGIxMzU1ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mZTliMDUzZjljNDE0MDdmODkzYzQxMTY0OTBhN2JjYiA9ICQoJzxkaXYgaWQ9Imh0bWxfZmU5YjA1M2Y5YzQxNDA3Zjg5M2M0MTE2NDkwYTdiY2IiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJpdmVyZGFsZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDYxODljZDdkYWU5NDhmZGIwYzZmMjljNjBiMTM1NWUuc2V0Q29udGVudChodG1sX2ZlOWIwNTNmOWM0MTQwN2Y4OTNjNDExNjQ5MGE3YmNiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzMzZDlmYTYxZWVmNzQ4ZGM4YWY1YTE0MDlmNTViZWM0LmJpbmRQb3B1cChwb3B1cF9kNjE4OWNkN2RhZTk0OGZkYjBjNmYyOWM2MGIxMzU1ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82OTdlZjNhNDZkNTA0MzJkODQ5MWUwMTk5Y2MwYzZiMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg4MTY4NzM3MTIwNTIxLC03My45MDI4MTc5ODcyNDYwNF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zN2E4MWYyYjI4MTE0MDk3OTRjYjBlMDlkMWM5NWIyYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85ZjkxMmI2NjgyMjI0ZmY1YTFkZTQzMTlhYzA4OGU1NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NDAxMTg4NmVkNDE0YzNjOTcxMTFkZDZkOGU4MmI0ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfOTQwMTE4ODZlZDQxNGMzYzk3MTExZGQ2ZDhlODJiNGQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPktpbmdzYnJpZGdlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85ZjkxMmI2NjgyMjI0ZmY1YTFkZTQzMTlhYzA4OGU1Ny5zZXRDb250ZW50KGh0bWxfOTQwMTE4ODZlZDQxNGMzYzk3MTExZGQ2ZDhlODJiNGQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjk3ZWYzYTQ2ZDUwNDMyZDg0OTFlMDE5OWNjMGM2YjAuYmluZFBvcHVwKHBvcHVwXzlmOTEyYjY2ODIyMjRmZjVhMWRlNDMxOWFjMDg4ZTU3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUwYjJhZGVkMTRjYTQ0NzliOTE2YzkxNzc4OGM4NTVlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODk4MjcyNjEyMTM4MDUsLTczLjg2NzMxNDk2ODE0MTc2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U4YjY4ZTkwYzYyYjRlM2Q4MWNkZTUyZjIwYjk5NDdjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2ZlZmU4NTNmYjNhMjRlYmY4MGQxMWViMWUzMTAyMzlmID0gJCgnPGRpdiBpZD0iaHRtbF9mZWZlODUzZmIzYTI0ZWJmODBkMTFlYjFlMzEwMjM5ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V29vZGxhd248L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U4YjY4ZTkwYzYyYjRlM2Q4MWNkZTUyZjIwYjk5NDdjLnNldENvbnRlbnQoaHRtbF9mZWZlODUzZmIzYTI0ZWJmODBkMTFlYjFlMzEwMjM5Zik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81MGIyYWRlZDE0Y2E0NDc5YjkxNmM5MTc3ODhjODU1ZS5iaW5kUG9wdXAocG9wdXBfZThiNjhlOTBjNjJiNGUzZDgxY2RlNTJmMjBiOTk0N2MpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDUyNjZkMTJjNDFlNGQ1ZWEzZmMxZmU5NWM3Y2NkNjcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44NzcyMjQxNTU5OTQ0NiwtNzMuODc5MzkwNzM5NTY4MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zN2E4MWYyYjI4MTE0MDk3OTRjYjBlMDlkMWM5NWIyYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jMjBhYzJhOTc1Yjk0NTcyOGRjZmYwZWVjZjE5ZTc2NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jMjllMGU1ODgzMGI0NTgzYTk4YzU4NTM5MzZkNjcwYyA9ICQoJzxkaXYgaWQ9Imh0bWxfYzI5ZTBlNTg4MzBiNDU4M2E5OGM1ODUzOTM2ZDY3MGMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5vcndvb2Q8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2MyMGFjMmE5NzViOTQ1NzI4ZGNmZjBlZWNmMTllNzY0LnNldENvbnRlbnQoaHRtbF9jMjllMGU1ODgzMGI0NTgzYTk4YzU4NTM5MzZkNjcwYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kNTI2NmQxMmM0MWU0ZDVlYTNmYzFmZTk1YzdjY2Q2Ny5iaW5kUG9wdXAocG9wdXBfYzIwYWMyYTk3NWI5NDU3MjhkY2ZmMGVlY2YxOWU3NjQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDhjZTgxOTE4MGRiNDFiNWJlNjllNTMzMjQ3NzI2YzkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44ODEwMzg4NzgxOTIxMSwtNzMuODU3NDQ2NDI5NzQyMDddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDQyOWVhZjY5NmFkNGE0Mzg0NTQxZWMxNWMxNDA0MWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjBmMjA2OWI1N2U5NDczOGE0ODM2ZjI5ZWYyNWJlM2UgPSAkKCc8ZGl2IGlkPSJodG1sX2IwZjIwNjliNTdlOTQ3MzhhNDgzNmYyOWVmMjViZTNlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XaWxsaWFtc2JyaWRnZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDQyOWVhZjY5NmFkNGE0Mzg0NTQxZWMxNWMxNDA0MWEuc2V0Q29udGVudChodG1sX2IwZjIwNjliNTdlOTQ3MzhhNDgzNmYyOWVmMjViZTNlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Q4Y2U4MTkxODBkYjQxYjViZTY5ZTUzMzI0NzcyNmM5LmJpbmRQb3B1cChwb3B1cF8wNDI5ZWFmNjk2YWQ0YTQzODQ1NDFlYzE1YzE0MDQxYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iZWFlYTE2NWJjYmU0ZTUzOGU5ZTA2ZWZkNmY3NWM2YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg2Njg1ODEwNzI1MjY5NiwtNzMuODM1Nzk3NTk4MDgxMTddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWJhNjcwYzA2M2RmNGIwOGFlZWMzNmIzZDUwNGU0N2IgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjI0ZGI5ZTUyMTQ3NDY0Yzk5ZmMwOTg1NGJkNjU5ZjEgPSAkKCc8ZGl2IGlkPSJodG1sX2IyNGRiOWU1MjE0NzQ2NGM5OWZjMDk4NTRiZDY1OWYxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CYXljaGVzdGVyPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xYmE2NzBjMDYzZGY0YjA4YWVlYzM2YjNkNTA0ZTQ3Yi5zZXRDb250ZW50KGh0bWxfYjI0ZGI5ZTUyMTQ3NDY0Yzk5ZmMwOTg1NGJkNjU5ZjEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYmVhZWExNjViY2JlNGU1MzhlOWUwNmVmZDZmNzVjNmEuYmluZFBvcHVwKHBvcHVwXzFiYTY3MGMwNjNkZjRiMDhhZWVjMzZiM2Q1MDRlNDdiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MxZmE0MTU5ZjEwYzQ0NDliNWM2YWRhZWVkN2I5ZTdiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODU3NDEzNDk4MDg4NjUsLTczLjg1NDc1NTY0MDE3OTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2I1Y2I2YzVkY2U3MzRmNTRiOTYyNWZhYzUwMTRlYzM2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzY3ODhiNjQ3N2Y2ZjRiMzk5ZmViZGJhYzZkMzAxYTIwID0gJCgnPGRpdiBpZD0iaHRtbF82Nzg4YjY0NzdmNmY0YjM5OWZlYmRiYWM2ZDMwMWEyMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UGVsaGFtIFBhcmt3YXk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2I1Y2I2YzVkY2U3MzRmNTRiOTYyNWZhYzUwMTRlYzM2LnNldENvbnRlbnQoaHRtbF82Nzg4YjY0NzdmNmY0YjM5OWZlYmRiYWM2ZDMwMWEyMCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jMWZhNDE1OWYxMGM0NDQ5YjVjNmFkYWVlZDdiOWU3Yi5iaW5kUG9wdXAocG9wdXBfYjVjYjZjNWRjZTczNGY1NGI5NjI1ZmFjNTAxNGVjMzYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2I4ZmQ3N2U0NDUxNDJlM2EyN2VlODFhYTYwZmU2N2YgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44NDcyNDY3MDQ5MTgxMywtNzMuNzg2NDg4NDUyNjc0MTNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzNmMjUxOGQyY2M0NDJjZWE0YjkwOTg5MDNlZDVhOWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTQ4ZGEwNDA1OTRjNDZjYjk5NzBhZGMyMGQ5ZjAwMjggPSAkKCc8ZGl2IGlkPSJodG1sXzU0OGRhMDQwNTk0YzQ2Y2I5OTcwYWRjMjBkOWYwMDI4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5DaXR5IElzbGFuZDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzNmMjUxOGQyY2M0NDJjZWE0YjkwOTg5MDNlZDVhOWEuc2V0Q29udGVudChodG1sXzU0OGRhMDQwNTk0YzQ2Y2I5OTcwYWRjMjBkOWYwMDI4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzNiOGZkNzdlNDQ1MTQyZTNhMjdlZTgxYWE2MGZlNjdmLmJpbmRQb3B1cChwb3B1cF8zM2YyNTE4ZDJjYzQ0MmNlYTRiOTA5ODkwM2VkNWE5YSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85ZmQzMGM4ZjUxODk0NzNlYjY4OGE4ZmFiNzZlYzU4MCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg3MDE4NTE2NDk3NTMyNSwtNzMuODg1NTEyMTg0MTkxM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zN2E4MWYyYjI4MTE0MDk3OTRjYjBlMDlkMWM5NWIyYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mZWEzMmM0MGY4NjE0MDQ5YjUxODI3MzQ5MjI2ZjE2MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMjQ0ZjFmZDFmYmE0MWFhYmUxZDZlYTllNmUxZGQyZiA9ICQoJzxkaXYgaWQ9Imh0bWxfYTI0NGYxZmQxZmJhNDFhYWJlMWQ2ZWE5ZTZlMWRkMmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJlZGZvcmQgUGFyazwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZmVhMzJjNDBmODYxNDA0OWI1MTgyNzM0OTIyNmYxNjEuc2V0Q29udGVudChodG1sX2EyNDRmMWZkMWZiYTQxYWFiZTFkNmVhOWU2ZTFkZDJmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzlmZDMwYzhmNTE4OTQ3M2ViNjg4YThmYWI3NmVjNTgwLmJpbmRQb3B1cChwb3B1cF9mZWEzMmM0MGY4NjE0MDQ5YjUxODI3MzQ5MjI2ZjE2MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83MzY5NzIxNjA1MGQ0Mzg3ODk4OTNjNjNjNmYzODU1YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg1NTcyNzA3NzE5NjY0LC03My45MTA0MTU5NjE5MTMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y5ODllNDdiNjlhMjRlZTg5ODI1OWQ2YzZhZmZiNzgxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2MxNzBjOWFlNzk3ZjQ0NjY4ZDI4ZmNkYWVlZWVkYzVmID0gJCgnPGRpdiBpZD0iaHRtbF9jMTcwYzlhZTc5N2Y0NDY2OGQyOGZjZGFlZWVlZGM1ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VW5pdmVyc2l0eSBIZWlnaHRzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mOTg5ZTQ3YjY5YTI0ZWU4OTgyNTlkNmM2YWZmYjc4MS5zZXRDb250ZW50KGh0bWxfYzE3MGM5YWU3OTdmNDQ2NjhkMjhmY2RhZWVlZWRjNWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNzM2OTcyMTYwNTBkNDM4Nzg5ODkzYzYzYzZmMzg1NWIuYmluZFBvcHVwKHBvcHVwX2Y5ODllNDdiNjlhMjRlZTg5ODI1OWQ2YzZhZmZiNzgxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzkyOGVmZjRiMzhkZDQ0ZGE5ZTJiY2RhNzQ3YmI3Mjg1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODQ3ODk3OTI2MDYyNzEsLTczLjkxOTY3MTU5MTE5NTY1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzVhYWY2NmQxODE5MDRiNjBhMTU0ODU5YmE0NWRhN2IyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzljYzYxODVlOTBjYjQ3YTRiNjlhOGExMDlkNmYzZjJkID0gJCgnPGRpdiBpZD0iaHRtbF85Y2M2MTg1ZTkwY2I0N2E0YjY5YThhMTA5ZDZmM2YyZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TW9ycmlzIEhlaWdodHM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzVhYWY2NmQxODE5MDRiNjBhMTU0ODU5YmE0NWRhN2IyLnNldENvbnRlbnQoaHRtbF85Y2M2MTg1ZTkwY2I0N2E0YjY5YThhMTA5ZDZmM2YyZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85MjhlZmY0YjM4ZGQ0NGRhOWUyYmNkYTc0N2JiNzI4NS5iaW5kUG9wdXAocG9wdXBfNWFhZjY2ZDE4MTkwNGI2MGExNTQ4NTliYTQ1ZGE3YjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGRjYzkyNWYyYTM4NGQ2OWJjMDM2MTdiM2M3NTFhMGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44NjA5OTY3OTYzODY1NCwtNzMuODk2NDI2NTU5ODE2MjNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDNmZmY4NGU0YTJhNDc1NmFiZTZiZmIxNzE5Y2ZlYjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzRiNjY1OTM1MGJkNDBmYzk0ODliZDdiMzI3YmNhMzYgPSAkKCc8ZGl2IGlkPSJodG1sX2M0YjY2NTkzNTBiZDQwZmM5NDg5YmQ3YjMyN2JjYTM2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Gb3JkaGFtPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80M2ZmZjg0ZTRhMmE0NzU2YWJlNmJmYjE3MTljZmViNy5zZXRDb250ZW50KGh0bWxfYzRiNjY1OTM1MGJkNDBmYzk0ODliZDdiMzI3YmNhMzYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMGRjYzkyNWYyYTM4NGQ2OWJjMDM2MTdiM2M3NTFhMGYuYmluZFBvcHVwKHBvcHVwXzQzZmZmODRlNGEyYTQ3NTZhYmU2YmZiMTcxOWNmZWI3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIzOTIwNDFmZmIzNDRhNmE4NGI4NDA4ODRmOTgzNmJhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODQyNjk2MTU3ODYwNTMsLTczLjg4NzM1NjE3NTMyMzM4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzcxZjQxYTczZTk3YzQ3YmVhNTExOWNiMWMzODc3N2FhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzBhOGQxOGVhMGNlOTQ0NDlhMzM4Y2Y0MjI3ZDI2NTJiID0gJCgnPGRpdiBpZD0iaHRtbF8wYThkMThlYTBjZTk0NDQ5YTMzOGNmNDIyN2QyNjUyYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RWFzdCBUcmVtb250PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83MWY0MWE3M2U5N2M0N2JlYTUxMTljYjFjMzg3NzdhYS5zZXRDb250ZW50KGh0bWxfMGE4ZDE4ZWEwY2U5NDQ0OWEzMzhjZjQyMjdkMjY1MmIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMjM5MjA0MWZmYjM0NGE2YTg0Yjg0MDg4NGY5ODM2YmEuYmluZFBvcHVwKHBvcHVwXzcxZjQxYTczZTk3YzQ3YmVhNTExOWNiMWMzODc3N2FhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzMzMDNiYTAzNTU1NTQ4MWFhOWEzMjIwMjllYmVhZWFiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODM5NDc1MDU2NzI2NTMsLTczLjg3Nzc0NDc0OTEwNTQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2UwOWRhZWVjYTRmZTRjZDE4YTI5MjY1Yjg3YzJjOTU0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RlZjgyMGU5NTVmZTRhNGM5ZjQzZGE2NTg3ZmExNTZlID0gJCgnPGRpdiBpZD0iaHRtbF9kZWY4MjBlOTU1ZmU0YTRjOWY0M2RhNjU4N2ZhMTU2ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V2VzdCBGYXJtczwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTA5ZGFlZWNhNGZlNGNkMThhMjkyNjViODdjMmM5NTQuc2V0Q29udGVudChodG1sX2RlZjgyMGU5NTVmZTRhNGM5ZjQzZGE2NTg3ZmExNTZlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzMzMDNiYTAzNTU1NTQ4MWFhOWEzMjIwMjllYmVhZWFiLmJpbmRQb3B1cChwb3B1cF9lMDlkYWVlY2E0ZmU0Y2QxOGEyOTI2NWI4N2MyYzk1NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xNmZhNDQ2ZTQxZGM0MGFmYjJiYmJiYjY0YmQyOGY2NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgzNjYyMzAxMDcwNjA1NiwtNzMuOTI2MTAyMDkzNTgxM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zN2E4MWYyYjI4MTE0MDk3OTRjYjBlMDlkMWM5NWIyYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NjQ3NDg3MTdhYTQ0OTM1OGY2ZmIyMjlhMDk5M2E4ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mZjNhNzY2MDg5MmM0YjM2ODQxMzM3MjcyNmY1YWFlMCA9ICQoJzxkaXYgaWQ9Imh0bWxfZmYzYTc2NjA4OTJjNGIzNjg0MTMzNzI3MjZmNWFhZTAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkhpZ2ggIEJyaWRnZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTY0NzQ4NzE3YWE0NDkzNThmNmZiMjI5YTA5OTNhOGQuc2V0Q29udGVudChodG1sX2ZmM2E3NjYwODkyYzRiMzY4NDEzMzcyNzI2ZjVhYWUwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzE2ZmE0NDZlNDFkYzQwYWZiMmJiYmJiNjRiZDI4ZjY1LmJpbmRQb3B1cChwb3B1cF81NjQ3NDg3MTdhYTQ0OTM1OGY2ZmIyMjlhMDk5M2E4ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NTk0ZmRkOWFjOTk0YmE2OWYxZjFhZDg5OTE0Y2NkYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgxOTc1NDM3MDU5NDkzNiwtNzMuOTA5NDIxNjA3NTc0MzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWRkNTc4NzQ3YzI0NDY1ZTk1NmZmYzY3ODJiNjY2YjkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfN2QyMGE2YTI0MjcwNDdkYWFkNDFmODNmNTg4OTBkNDMgPSAkKCc8ZGl2IGlkPSJodG1sXzdkMjBhNmEyNDI3MDQ3ZGFhZDQxZjgzZjU4ODkwZDQzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NZWxyb3NlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85ZGQ1Nzg3NDdjMjQ0NjVlOTU2ZmZjNjc4MmI2NjZiOS5zZXRDb250ZW50KGh0bWxfN2QyMGE2YTI0MjcwNDdkYWFkNDFmODNmNTg4OTBkNDMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTU5NGZkZDlhYzk5NGJhNjlmMWYxYWQ4OTkxNGNjZGEuYmluZFBvcHVwKHBvcHVwXzlkZDU3ODc0N2MyNDQ2NWU5NTZmZmM2NzgyYjY2NmI5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M0NmUwMjM2ZTkxNDRjNzI4YzIyM2ZiMWZmMzIwNzFjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODA2MjM4NzQ5MzUxNzcsLTczLjkxNjA5OTg3NDg3NTc1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZmMjJkNzIxNDMyMTQ3NDY5YTI5ZTY3ZjEwODVkYzNjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JmNzNjNjhlN2QxYzQ2NDQ4OWUzNzQ5OWJjMWE5MTY3ID0gJCgnPGRpdiBpZD0iaHRtbF9iZjczYzY4ZTdkMWM0NjQ0ODllMzc0OTliYzFhOTE2NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TW90dCBIYXZlbjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmYyMmQ3MjE0MzIxNDc0NjlhMjllNjdmMTA4NWRjM2Muc2V0Q29udGVudChodG1sX2JmNzNjNjhlN2QxYzQ2NDQ4OWUzNzQ5OWJjMWE5MTY3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2M0NmUwMjM2ZTkxNDRjNzI4YzIyM2ZiMWZmMzIwNzFjLmJpbmRQb3B1cChwb3B1cF82ZjIyZDcyMTQzMjE0NzQ2OWEyOWU2N2YxMDg1ZGMzYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNGRlYzk3NmFjZmQ0YmM3ODNiZTdhOGE5NmI2NzM1ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgwMTY2MzYyNzc1NjIwNiwtNzMuOTEzMjIxMzkzODYxMzVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfM2U5MTRkMWVkMzIxNGEwN2ExYjIyODAwNmQzYTU4YjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTdmYWI2YTc4MzA1NGVkMzk5NmQxOTFmMTk5ZWE4Y2UgPSAkKCc8ZGl2IGlkPSJodG1sX2U3ZmFiNmE3ODMwNTRlZDM5OTZkMTkxZjE5OWVhOGNlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Qb3J0IE1vcnJpczwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfM2U5MTRkMWVkMzIxNGEwN2ExYjIyODAwNmQzYTU4Yjcuc2V0Q29udGVudChodG1sX2U3ZmFiNmE3ODMwNTRlZDM5OTZkMTkxZjE5OWVhOGNlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzA0ZGVjOTc2YWNmZDRiYzc4M2JlN2E4YTk2YjY3MzVlLmJpbmRQb3B1cChwb3B1cF8zZTkxNGQxZWQzMjE0YTA3YTFiMjI4MDA2ZDNhNThiNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lZjRlZTk2ZDA2ZTY0MjEzYjM3OWRjYzY1N2YxZTg1ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgxNTA5OTA0NTQ1ODIyLC03My44OTU3ODgyMDA5NDQ2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Q3NWQzNDUzNDFjMjRmNDc4MTU1YjFjZWZkYmNiYTFlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzllMDFiMTVmOTlkZTQxY2FiMjg0MzQwNWVlNjMzNzdlID0gJCgnPGRpdiBpZD0iaHRtbF85ZTAxYjE1Zjk5ZGU0MWNhYjI4NDM0MDVlZTYzMzc3ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TG9uZ3dvb2Q8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q3NWQzNDUzNDFjMjRmNDc4MTU1YjFjZWZkYmNiYTFlLnNldENvbnRlbnQoaHRtbF85ZTAxYjE1Zjk5ZGU0MWNhYjI4NDM0MDVlZTYzMzc3ZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lZjRlZTk2ZDA2ZTY0MjEzYjM3OWRjYzY1N2YxZTg1ZC5iaW5kUG9wdXAocG9wdXBfZDc1ZDM0NTM0MWMyNGY0NzgxNTViMWNlZmRiY2JhMWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjBlOGJkZjkxZGQ1NDk3NzhmOWU4Mzg2NzI5NjFlYWQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44MDk3Mjk4NzkzODcwOSwtNzMuODgzMzE1MDU5NTUyOTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmYyYjVjZGJiM2MzNDI0Yzg4NjU2OWExYmM3ZDhmYTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWFkNzE0MjczNzU1NGU0N2JhODMxZjU2ZmI3NjU0NTEgPSAkKCc8ZGl2IGlkPSJodG1sXzVhZDcxNDI3Mzc1NTRlNDdiYTgzMWY1NmZiNzY1NDUxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5IdW50cyBQb2ludDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmYyYjVjZGJiM2MzNDI0Yzg4NjU2OWExYmM3ZDhmYTcuc2V0Q29udGVudChodG1sXzVhZDcxNDI3Mzc1NTRlNDdiYTgzMWY1NmZiNzY1NDUxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2IwZThiZGY5MWRkNTQ5Nzc4ZjllODM4NjcyOTYxZWFkLmJpbmRQb3B1cChwb3B1cF82ZjJiNWNkYmIzYzM0MjRjODg2NTY5YTFiYzdkOGZhNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MWI5ZjY2NmQ0OGQ0NTA0OGY4NmJkZGFkMTIzMmRkNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgyMzU5MTk4NTg1NTM0LC03My45MDE1MDY0ODk0MzA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zN2E4MWYyYjI4MTE0MDk3OTRjYjBlMDlkMWM5NWIyYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jNTIxNjI4YWZkZmU0NjQ2YjQwMWFiNjlhNDYzZDg0ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80YTAwMDRjYTU2MGQ0MmY0OWEzZjcyMmIwNjA3NWFjMyA9ICQoJzxkaXYgaWQ9Imh0bWxfNGEwMDA0Y2E1NjBkNDJmNDlhM2Y3MjJiMDYwNzVhYzMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1vcnJpc2FuaWE8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2M1MjE2MjhhZmRmZTQ2NDZiNDAxYWI2OWE0NjNkODRkLnNldENvbnRlbnQoaHRtbF80YTAwMDRjYTU2MGQ0MmY0OWEzZjcyMmIwNjA3NWFjMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84MWI5ZjY2NmQ0OGQ0NTA0OGY4NmJkZGFkMTIzMmRkNi5iaW5kUG9wdXAocG9wdXBfYzUyMTYyOGFmZGZlNDY0NmI0MDFhYjY5YTQ2M2Q4NGQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTZjY2IzNDdmNjdkNDlmOTg1MTBmOTc1ZjVkYzQ4NDUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44MjEwMTIxOTc5MTQwMTUsLTczLjg2NTc0NjA5NTU0OTI0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2YxYTQ0OGVlZGY5ODQ5NTZiZGE4MjA2ZDg3YzdmM2U0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc0YTBmOWRmZmE0YjRkZTg5MzRiYzU3NjFjODg5ZTIxID0gJCgnPGRpdiBpZD0iaHRtbF83NGEwZjlkZmZhNGI0ZGU4OTM0YmM1NzYxYzg4OWUyMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U291bmR2aWV3PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mMWE0NDhlZWRmOTg0OTU2YmRhODIwNmQ4N2M3ZjNlNC5zZXRDb250ZW50KGh0bWxfNzRhMGY5ZGZmYTRiNGRlODkzNGJjNTc2MWM4ODllMjEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMTZjY2IzNDdmNjdkNDlmOTg1MTBmOTc1ZjVkYzQ4NDUuYmluZFBvcHVwKHBvcHVwX2YxYTQ0OGVlZGY5ODQ5NTZiZGE4MjA2ZDg3YzdmM2U0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzA0ZDVkM2E0ODhmMzQ0NDA4MDcyZTMzYjE4YjY2OWFiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODA2NTUxMTIwMDM1ODksLTczLjg1NDE0NDE2MTg5MjY2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkwOTg0N2FlZWRkZDQ2ZWZhNDMwMWRhMThlZDcxNzhlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzdkYTUzNTA0OWY2MTQ1MmY4NDljOWI2NGIwMTA3MWU2ID0gJCgnPGRpdiBpZD0iaHRtbF83ZGE1MzUwNDlmNjE0NTJmODQ5YzliNjRiMDEwNzFlNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q2xhc29uIFBvaW50PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85MDk4NDdhZWVkZGQ0NmVmYTQzMDFkYTE4ZWQ3MTc4ZS5zZXRDb250ZW50KGh0bWxfN2RhNTM1MDQ5ZjYxNDUyZjg0OWM5YjY0YjAxMDcxZTYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDRkNWQzYTQ4OGYzNDQ0MDgwNzJlMzNiMThiNjY5YWIuYmluZFBvcHVwKHBvcHVwXzkwOTg0N2FlZWRkZDQ2ZWZhNDMwMWRhMThlZDcxNzhlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NkZWUyZTMxZmRkZTRjNzVhM2IyMTVkODMzZjM1ODZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODE1MTA5MjU4MDQwMDUsLTczLjgxNjM1MDAyMTU4NDQxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2MzYmZmNWY0NmM3YjRhNjZiMjUwZWMwOGFiMDMxYzg0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ4ZjM4M2M2Y2Y0MDQ1OTk5OTkzNTViNjY2NjIwYjc0ID0gJCgnPGRpdiBpZD0iaHRtbF80OGYzODNjNmNmNDA0NTk5OTk5MzU1YjY2NjYyMGI3NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VGhyb2dzIE5lY2s8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2MzYmZmNWY0NmM3YjRhNjZiMjUwZWMwOGFiMDMxYzg0LnNldENvbnRlbnQoaHRtbF80OGYzODNjNmNmNDA0NTk5OTk5MzU1YjY2NjYyMGI3NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jZGVlMmUzMWZkZGU0Yzc1YTNiMjE1ZDgzM2YzNTg2YS5iaW5kUG9wdXAocG9wdXBfYzNiZmY1ZjQ2YzdiNGE2NmIyNTBlYzA4YWIwMzFjODQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGRjMWYzYTA4N2UwNDdkZGE2NTc2ZjU3NTcyMjNlZWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44NDQyNDU5MzY5NDczNzQsLTczLjgyNDA5OTI2NzUzODVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDcyOGE0NTNlMGZjNDczOTgwZmViMThhYTUzMDEyMmEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzNjM2ExMmQ1NTdkNDM5YTgzYTIyMzU5NWE1MjQ5OGEgPSAkKCc8ZGl2IGlkPSJodG1sXzMzYzNhMTJkNTU3ZDQzOWE4M2EyMjM1OTVhNTI0OThhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Db3VudHJ5IENsdWI8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzA3MjhhNDUzZTBmYzQ3Mzk4MGZlYjE4YWE1MzAxMjJhLnNldENvbnRlbnQoaHRtbF8zM2MzYTEyZDU1N2Q0MzlhODNhMjIzNTk1YTUyNDk4YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wZGMxZjNhMDg3ZTA0N2RkYTY1NzZmNTc1NzIyM2VlYi5iaW5kUG9wdXAocG9wdXBfMDcyOGE0NTNlMGZjNDczOTgwZmViMThhYTUzMDEyMmEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTJlYTllMjMxNzFiNDhiYjk3MDI2MGE5OGNmZjVkOWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44Mzc5Mzc4MjIyNjcyODYsLTczLjg1NjAwMzEwNTM1NzgzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2UyNTJhMzIxMzExODRiNTZhOGM1MTU5MzU1OWIwMzQzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2VmOWI4NGU3NmEzZjQyMzNiOTcyYmU0OTUyM2UxODI2ID0gJCgnPGRpdiBpZD0iaHRtbF9lZjliODRlNzZhM2Y0MjMzYjk3MmJlNDk1MjNlMTgyNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UGFya2NoZXN0ZXI8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UyNTJhMzIxMzExODRiNTZhOGM1MTU5MzU1OWIwMzQzLnNldENvbnRlbnQoaHRtbF9lZjliODRlNzZhM2Y0MjMzYjk3MmJlNDk1MjNlMTgyNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xMmVhOWUyMzE3MWI0OGJiOTcwMjYwYTk4Y2ZmNWQ5Yi5iaW5kUG9wdXAocG9wdXBfZTI1MmEzMjEzMTE4NGI1NmE4YzUxNTkzNTU5YjAzNDMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWM1YzVkYTJjMTY0NDgwZGI1OTBlYjEyMzVlYTZiNjAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44NDA2MTk0OTY0MzI3LC03My44NDIxOTQwNzYwNDQ0NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zN2E4MWYyYjI4MTE0MDk3OTRjYjBlMDlkMWM5NWIyYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84NzI5ZDJhNTVhYWQ0MmY0OTNmMmE2ZGI3MzQwNDc1NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84NGFjOTYxM2Q1N2M0NTg2OWI3YzZmODAwMjFjYzRkZiA9ICQoJzxkaXYgaWQ9Imh0bWxfODRhYzk2MTNkNTdjNDU4NjliN2M2ZjgwMDIxY2M0ZGYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldlc3RjaGVzdGVyIFNxdWFyZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODcyOWQyYTU1YWFkNDJmNDkzZjJhNmRiNzM0MDQ3NTQuc2V0Q29udGVudChodG1sXzg0YWM5NjEzZDU3YzQ1ODY5YjdjNmY4MDAyMWNjNGRmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzVjNWM1ZGEyYzE2NDQ4MGRiNTkwZWIxMjM1ZWE2YjYwLmJpbmRQb3B1cChwb3B1cF84NzI5ZDJhNTVhYWQ0MmY0OTNmMmE2ZGI3MzQwNDc1NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xY2UyNTZlNWZjM2U0NjZjOThjNzVjNGNiNjU3M2Y3ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg0MzYwODQ3MTI0NzE4LC03My44NjYyOTkxODA3NTYxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FhMWQwMmIxMzg0ZDQzZDE4ZmE0ZjUzY2IzMjBmODRlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgxYTViNGYzZjkyNjRlMGY5NDZjOWQ5Yjk1YTRjNzgwID0gJCgnPGRpdiBpZD0iaHRtbF84MWE1YjRmM2Y5MjY0ZTBmOTQ2YzlkOWI5NWE0Yzc4MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VmFuIE5lc3Q8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FhMWQwMmIxMzg0ZDQzZDE4ZmE0ZjUzY2IzMjBmODRlLnNldENvbnRlbnQoaHRtbF84MWE1YjRmM2Y5MjY0ZTBmOTQ2YzlkOWI5NWE0Yzc4MCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xY2UyNTZlNWZjM2U0NjZjOThjNzVjNGNiNjU3M2Y3ZC5iaW5kUG9wdXAocG9wdXBfYWExZDAyYjEzODRkNDNkMThmYTRmNTNjYjMyMGY4NGUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYWZjNjFjOTYzMGNkNGI0NWJlNGQzOGNkMjEyMTNlN2QgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44NDc1NDkwNjM1MzYzMzQsLTczLjg1MDQwMTc4MDMwNDIxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzNhZTlmY2M2NDhlNzQ0NTE4ODlkYzM2YzQzMzRlMmM5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2IxN2VkNWQzMTUwZjQ0NTU5Zjk3OTAxZWQwMDdjNDg3ID0gJCgnPGRpdiBpZD0iaHRtbF9iMTdlZDVkMzE1MGY0NDU1OWY5NzkwMWVkMDA3YzQ4NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TW9ycmlzIFBhcms8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzNhZTlmY2M2NDhlNzQ0NTE4ODlkYzM2YzQzMzRlMmM5LnNldENvbnRlbnQoaHRtbF9iMTdlZDVkMzE1MGY0NDU1OWY5NzkwMWVkMDA3YzQ4Nyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hZmM2MWM5NjMwY2Q0YjQ1YmU0ZDM4Y2QyMTIxM2U3ZC5iaW5kUG9wdXAocG9wdXBfM2FlOWZjYzY0OGU3NDQ1MTg4OWRjMzZjNDMzNGUyYzkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWI1YmZhZjA1NzE1NGMzODg3ZjYwNjBkYWEwNjNjMTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44NTcyNzcxMDA3Mzg5NSwtNzMuODg4NDUxOTYxMzQ4MDRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYWU0MjM0N2EwZDFjNGVjYmJiODZjMWM3OGYyMjE3OGIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTY4NjAzMDFiZjdjNDg4Y2I5ZmEwNTI0YjM1NzU0MmIgPSAkKCc8ZGl2IGlkPSJodG1sXzE2ODYwMzAxYmY3YzQ4OGNiOWZhMDUyNGIzNTc1NDJiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CZWxtb250PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hZTQyMzQ3YTBkMWM0ZWNiYmI4NmMxYzc4ZjIyMTc4Yi5zZXRDb250ZW50KGh0bWxfMTY4NjAzMDFiZjdjNDg4Y2I5ZmEwNTI0YjM1NzU0MmIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMWI1YmZhZjA1NzE1NGMzODg3ZjYwNjBkYWEwNjNjMTAuYmluZFBvcHVwKHBvcHVwX2FlNDIzNDdhMGQxYzRlY2JiYjg2YzFjNzhmMjIxNzhiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI2NTgyMDg0MjlhNjQyNDQ5ZDUyZTFmZjk0M2I5MDI1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODgxMzk0OTc3MjcwODYsLTczLjkxNzE5MDQ4MjEwMzkzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U5NzlhZTg0NzYwOTRkN2ZiOTgzMWMyYWJhYWUxODMyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNiYmIyZGQ2ZjVhYzRiNWFiNjU1NWJmOWVjNTRiNzZmID0gJCgnPGRpdiBpZD0iaHRtbF8zYmJiMmRkNmY1YWM0YjVhYjY1NTViZjllYzU0Yjc2ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U3B1eXRlbiBEdXl2aWw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U5NzlhZTg0NzYwOTRkN2ZiOTgzMWMyYWJhYWUxODMyLnNldENvbnRlbnQoaHRtbF8zYmJiMmRkNmY1YWM0YjVhYjY1NTViZjllYzU0Yjc2Zik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yNjU4MjA4NDI5YTY0MjQ0OWQ1MmUxZmY5NDNiOTAyNS5iaW5kUG9wdXAocG9wdXBfZTk3OWFlODQ3NjA5NGQ3ZmI5ODMxYzJhYmFhZTE4MzIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGZkNzlkOTFmZTkxNDAzY2E3Y2E1YTAyNGIwZTY0N2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC45MDg1NDI4Mjk1MDY2NiwtNzMuOTA0NTMwNTQ5MDg5MjddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjkyOGMwODg5NWYyNGNjZWJiOGJlN2UyN2FhZjA5MjMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTdiZTViNTU3YzdlNDBjYjhmMmE4N2E4Y2NhYzEyNmIgPSAkKCc8ZGl2IGlkPSJodG1sXzk3YmU1YjU1N2M3ZTQwY2I4ZjJhODdhOGNjYWMxMjZiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Ob3J0aCBSaXZlcmRhbGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y5MjhjMDg4OTVmMjRjY2ViYjhiZTdlMjdhYWYwOTIzLnNldENvbnRlbnQoaHRtbF85N2JlNWI1NTdjN2U0MGNiOGYyYTg3YThjY2FjMTI2Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80ZmQ3OWQ5MWZlOTE0MDNjYTdjYTVhMDI0YjBlNjQ3ZS5iaW5kUG9wdXAocG9wdXBfZjkyOGMwODg5NWYyNGNjZWJiOGJlN2UyN2FhZjA5MjMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjZlNjljZWRhOTlmNGQxNThmMjQ0MGYxNDU3OTJlNjQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44NTA2NDE0MDk0MDMzNSwtNzMuODMyMDczNzgyNDA0N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zN2E4MWYyYjI4MTE0MDk3OTRjYjBlMDlkMWM5NWIyYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83ZTE4OWRmMzkxYTA0YTNlOTA1ODEwYWE1YmU5Y2I2NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83Y2ZjNjkxM2ZiNTU0YzVhODRhZWI5NGQ2ZmNlYWU1NiA9ICQoJzxkaXYgaWQ9Imh0bWxfN2NmYzY5MTNmYjU1NGM1YTg0YWViOTRkNmZjZWFlNTYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlBlbGhhbSBCYXk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdlMTg5ZGYzOTFhMDRhM2U5MDU4MTBhYTViZTljYjY0LnNldENvbnRlbnQoaHRtbF83Y2ZjNjkxM2ZiNTU0YzVhODRhZWI5NGQ2ZmNlYWU1Nik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mNmU2OWNlZGE5OWY0ZDE1OGYyNDQwZjE0NTc5MmU2NC5iaW5kUG9wdXAocG9wdXBfN2UxODlkZjM5MWEwNGEzZTkwNTgxMGFhNWJlOWNiNjQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMmZhN2E1ZTZmNzNhNDk4Y2FmMWRlNjA2NTNiY2ZhYjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44MjY1Nzk1MTY4NjkyMiwtNzMuODI2MjAyNzU5OTQwNzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTM0ZmEzZTVkZjQxNDFiZDlmMzhjMzhjOWE0ZDgxYTMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDEwOTllNWUzMmUzNDhmZTg3NmZjZmUzMTNkMTBhMmQgPSAkKCc8ZGl2IGlkPSJodG1sXzAxMDk5ZTVlMzJlMzQ4ZmU4NzZmY2ZlMzEzZDEwYTJkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TY2h1eWxlcnZpbGxlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hMzRmYTNlNWRmNDE0MWJkOWYzOGMzOGM5YTRkODFhMy5zZXRDb250ZW50KGh0bWxfMDEwOTllNWUzMmUzNDhmZTg3NmZjZmUzMTNkMTBhMmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMmZhN2E1ZTZmNzNhNDk4Y2FmMWRlNjA2NTNiY2ZhYjUuYmluZFBvcHVwKHBvcHVwX2EzNGZhM2U1ZGY0MTQxYmQ5ZjM4YzM4YzlhNGQ4MWEzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzMxYzc2ODIzNzkwMDRlNDhhNmFlMGQzY2UxNGEwN2UwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODIxOTg2MTE4MTYzNDk0LC03My44MTM4ODUxNDQyODYxOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zN2E4MWYyYjI4MTE0MDk3OTRjYjBlMDlkMWM5NWIyYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yZDk0NDdiMjc1ZDM0MmQ0OGRmNzI1OGY4Yzg0NWM5ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jNGJhMGRjNTlhMGM0NjU1OTI0ZDJhNTI2MGRiNGRhZiA9ICQoJzxkaXYgaWQ9Imh0bWxfYzRiYTBkYzU5YTBjNDY1NTkyNGQyYTUyNjBkYjRkYWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkVkZ2V3YXRlciBQYXJrPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yZDk0NDdiMjc1ZDM0MmQ0OGRmNzI1OGY4Yzg0NWM5ZS5zZXRDb250ZW50KGh0bWxfYzRiYTBkYzU5YTBjNDY1NTkyNGQyYTUyNjBkYjRkYWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzFjNzY4MjM3OTAwNGU0OGE2YWUwZDNjZTE0YTA3ZTAuYmluZFBvcHVwKHBvcHVwXzJkOTQ0N2IyNzVkMzQyZDQ4ZGY3MjU4ZjhjODQ1YzllKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhlYjY3NThmZTQzMzQ1ZTY4YTQ5YmZhMWQ1MDkxZDZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODE5MDE0Mzc2OTg4MzE0LC03My44NDgwMjcyOTU4MjczNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zN2E4MWYyYjI4MTE0MDk3OTRjYjBlMDlkMWM5NWIyYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83YzM4NDc2NjZiYmE0N2ViOGU5Yjg3ZGZkNjY2MmJjYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82YWRkMDM3MTI4ZWM0NjRiYjkwZjFkNDk2OTdlN2UwOSA9ICQoJzxkaXYgaWQ9Imh0bWxfNmFkZDAzNzEyOGVjNDY0YmI5MGYxZDQ5Njk3ZTdlMDkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNhc3RsZSBIaWxsPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83YzM4NDc2NjZiYmE0N2ViOGU5Yjg3ZGZkNjY2MmJjYi5zZXRDb250ZW50KGh0bWxfNmFkZDAzNzEyOGVjNDY0YmI5MGYxZDQ5Njk3ZTdlMDkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOGViNjc1OGZlNDMzNDVlNjhhNDliZmExZDUwOTFkNmEuYmluZFBvcHVwKHBvcHVwXzdjMzg0NzY2NmJiYTQ3ZWI4ZTliODdkZmQ2NjYyYmNiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM4YjhhNGMwZmZiMzRlMTFhZTdmN2U2ZWY3MWIyY2U5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODcxMzcwNzgxOTIzNzEsLTczLjg2MzMyMzYxNjUyNzc3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2YyYWYwOWZiNDZkYzQ0ZDZhYWQwYmExZDFhNGFiYmYzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q0MjY5NzE5NzhhMDQ2YTBiODc1MDNkODBjZjE3M2E4ID0gJCgnPGRpdiBpZD0iaHRtbF9kNDI2OTcxOTc4YTA0NmEwYjg3NTAzZDgwY2YxNzNhOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T2xpbnZpbGxlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mMmFmMDlmYjQ2ZGM0NGQ2YWFkMGJhMWQxYTRhYmJmMy5zZXRDb250ZW50KGh0bWxfZDQyNjk3MTk3OGEwNDZhMGI4NzUwM2Q4MGNmMTczYTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzhiOGE0YzBmZmIzNGUxMWFlN2Y3ZTZlZjcxYjJjZTkuYmluZFBvcHVwKHBvcHVwX2YyYWYwOWZiNDZkYzQ0ZDZhYWQwYmExZDFhNGFiYmYzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAyZjAzM2IyZjU5ZTRiNTRhMGE2ZGQwNDRhN2FmYzVmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODYyOTY1NjI0Nzc5OTgsLTczLjg0MTYxMTk0ODMxMjIzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkxMTI2OWE2MzRjMTQ1MDhiOGExMDFjYjNlNmRlNDc3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc0ZDYwZDMwNmFkMDQ4N2VhMzMzYTEyNDBiNmI0NjlhID0gJCgnPGRpdiBpZD0iaHRtbF83NGQ2MGQzMDZhZDA0ODdlYTMzM2ExMjQwYjZiNDY5YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UGVsaGFtIEdhcmRlbnM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzkxMTI2OWE2MzRjMTQ1MDhiOGExMDFjYjNlNmRlNDc3LnNldENvbnRlbnQoaHRtbF83NGQ2MGQzMDZhZDA0ODdlYTMzM2ExMjQwYjZiNDY5YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wMmYwMzNiMmY1OWU0YjU0YTBhNmRkMDQ0YTdhZmM1Zi5iaW5kUG9wdXAocG9wdXBfOTExMjY5YTYzNGMxNDUwOGI4YTEwMWNiM2U2ZGU0NzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODk3MGNmYTc4Mzg2NGU0ZGJjYWNkNjhhNjhiOTk3NTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44MzQyODM4MDczMzg1MSwtNzMuOTE1NTg5NDE3NzM0NDRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDI5MTE4ZjdjNmVjNDQyMTliMzcwY2EzZjhjOTI2OWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTY0ZWJjZjllYTY5NGU0NmIxOWU2ZDA1ZDZhYTgzYTkgPSAkKCc8ZGl2IGlkPSJodG1sXzk2NGViY2Y5ZWE2OTRlNDZiMTllNmQwNWQ2YWE4M2E5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Db25jb3Vyc2U8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQyOTExOGY3YzZlYzQ0MjE5YjM3MGNhM2Y4YzkyNjlkLnNldENvbnRlbnQoaHRtbF85NjRlYmNmOWVhNjk0ZTQ2YjE5ZTZkMDVkNmFhODNhOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84OTcwY2ZhNzgzODY0ZTRkYmNhY2Q2OGE2OGI5OTc1MC5iaW5kUG9wdXAocG9wdXBfNDI5MTE4ZjdjNmVjNDQyMTliMzcwY2EzZjhjOTI2OWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2RhZDFmMmFlM2NiNDRmODk0MThiYWYwM2ZhMTZkMDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44Mjk3NzQyOTc4NzE2MSwtNzMuODUwNTM1MjQ0NTE5MzVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2I1MWVhYTUxNmJmNGM3YzgwNWNlZTYyOWFhNDc2YjggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTZkZWQ0N2QwNzBhNGFjODgyYjU5MGNiY2RmODQ4YmUgPSAkKCc8ZGl2IGlkPSJodG1sX2U2ZGVkNDdkMDcwYTRhYzg4MmI1OTBjYmNkZjg0OGJlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5VbmlvbnBvcnQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdiNTFlYWE1MTZiZjRjN2M4MDVjZWU2MjlhYTQ3NmI4LnNldENvbnRlbnQoaHRtbF9lNmRlZDQ3ZDA3MGE0YWM4ODJiNTkwY2JjZGY4NDhiZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zZGFkMWYyYWUzY2I0NGY4OTQxOGJhZjAzZmExNmQwNC5iaW5kUG9wdXAocG9wdXBfN2I1MWVhYTUxNmJmNGM3YzgwNWNlZTYyOWFhNDc2YjgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGNkZDY2YmRjZDk0NDdiYTgxZjkwNTgxYTQ2OGMzNDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44ODQ1NjEzMDMwMzczMiwtNzMuODQ4MDgyNzE4NzcxNjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjg0NWRkNzBkMDU3NDNjMGI4OTNjZjZlNmQ2NjIyZDYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTFlNzllYWZiYmM0NDZjNmIyZDM5ZjRhYzI3NDIxMTYgPSAkKCc8ZGl2IGlkPSJodG1sXzUxZTc5ZWFmYmJjNDQ2YzZiMmQzOWY0YWMyNzQyMTE2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FZGVud2FsZDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjg0NWRkNzBkMDU3NDNjMGI4OTNjZjZlNmQ2NjIyZDYuc2V0Q29udGVudChodG1sXzUxZTc5ZWFmYmJjNDQ2YzZiMmQzOWY0YWMyNzQyMTE2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2RjZGQ2NmJkY2Q5NDQ3YmE4MWY5MDU4MWE0NjhjMzQyLmJpbmRQb3B1cChwb3B1cF9mODQ1ZGQ3MGQwNTc0M2MwYjg5M2NmNmU2ZDY2MjJkNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84OWNmNDVjMmZiMzg0MjgyYWIwYWU2Y2I4MmI3ODFjOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgzMTQyODM0MTYxNTQ4LC03My45MDExOTkwMzM4NzY2N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zN2E4MWYyYjI4MTE0MDk3OTRjYjBlMDlkMWM5NWIyYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ZjI1MjE5MDVjN2M0M2U0OTA2MmYwNmNlYmI0NGVhOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kOGIyOGE1ZWJjNjE0NmExODUwZmJkNjc4NDgyNmM0MSA9ICQoJzxkaXYgaWQ9Imh0bWxfZDhiMjhhNWViYzYxNDZhMTg1MGZiZDY3ODQ4MjZjNDEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNsYXJlbW9udCBWaWxsYWdlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80ZjI1MjE5MDVjN2M0M2U0OTA2MmYwNmNlYmI0NGVhOS5zZXRDb250ZW50KGh0bWxfZDhiMjhhNWViYzYxNDZhMTg1MGZiZDY3ODQ4MjZjNDEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODljZjQ1YzJmYjM4NDI4MmFiMGFlNmNiODJiNzgxYzkuYmluZFBvcHVwKHBvcHVwXzRmMjUyMTkwNWM3YzQzZTQ5MDYyZjA2Y2ViYjQ0ZWE5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzlmYTE0ZWM0NDUzYTQ3YjZhNDZiY2E0ZTkwMTM2ZmQ4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODI0NzgwNDkwODQyOTA1LC03My45MTU4NDY1Mjc1OTAwOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zN2E4MWYyYjI4MTE0MDk3OTRjYjBlMDlkMWM5NWIyYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85NThiY2U4Mjg5OTY0NDhlOTQxMDIyZmU0YzQ1NDU5YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83ZDA1YjAwNGY5NDQ0NDRlYTFiMzcyNDk4MmIwYWI1ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfN2QwNWIwMDRmOTQ0NDQ0ZWExYjM3MjQ5ODJiMGFiNWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNvbmNvdXJzZSBWaWxsYWdlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85NThiY2U4Mjg5OTY0NDhlOTQxMDIyZmU0YzQ1NDU5Yy5zZXRDb250ZW50KGh0bWxfN2QwNWIwMDRmOTQ0NDQ0ZWExYjM3MjQ5ODJiMGFiNWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOWZhMTRlYzQ0NTNhNDdiNmE0NmJjYTRlOTAxMzZmZDguYmluZFBvcHVwKHBvcHVwXzk1OGJjZTgyODk5NjQ0OGU5NDEwMjJmZTRjNDU0NTljKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZhYTgyYjVlMWJkNjRkNTU4Yzg5NzQ0OTQ4MjdjNTcwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODQzODI2MTc2NzE2NTQsLTczLjkxNjU1NTUxOTY0NDE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzE3ODc1MjBmODhhNzRiYjViNjVjNjhjOWE4M2UzY2MzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM0ZmU5YTU0OTNhNzQzZjI5NjNkODBiODllNDY3NjY1ID0gJCgnPGRpdiBpZD0iaHRtbF8zNGZlOWE1NDkzYTc0M2YyOTYzZDgwYjg5ZTQ2NzY2NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TW91bnQgRWRlbjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTc4NzUyMGY4OGE3NGJiNWI2NWM2OGM5YTgzZTNjYzMuc2V0Q29udGVudChodG1sXzM0ZmU5YTU0OTNhNzQzZjI5NjNkODBiODllNDY3NjY1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2ZhYTgyYjVlMWJkNjRkNTU4Yzg5NzQ0OTQ4MjdjNTcwLmJpbmRQb3B1cChwb3B1cF8xNzg3NTIwZjg4YTc0YmI1YjY1YzY4YzlhODNlM2NjMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80ZTJmYTgwZDE3MWM0M2Y0OGYwZGM0NzU1NTlhMWIyOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg0ODg0MTYwNzI0NjY1LC03My45MDgyOTkzMDg4MTk4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zN2E4MWYyYjI4MTE0MDk3OTRjYjBlMDlkMWM5NWIyYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xYzhmNmExZDA4Y2Q0NmQ3YTJjMWY3YjJlNWE4MjA2MyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82YTRmMzkwZmU3NWM0ZDRhOTA1MTEzYWNmOWNmZjgwYyA9ICQoJzxkaXYgaWQ9Imh0bWxfNmE0ZjM5MGZlNzVjNGQ0YTkwNTExM2FjZjljZmY4MGMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1vdW50IEhvcGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFjOGY2YTFkMDhjZDQ2ZDdhMmMxZjdiMmU1YTgyMDYzLnNldENvbnRlbnQoaHRtbF82YTRmMzkwZmU3NWM0ZDRhOTA1MTEzYWNmOWNmZjgwYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80ZTJmYTgwZDE3MWM0M2Y0OGYwZGM0NzU1NTlhMWIyOC5iaW5kUG9wdXAocG9wdXBfMWM4ZjZhMWQwOGNkNDZkN2EyYzFmN2IyZTVhODIwNjMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjE1NTUzNzVjMjQ1NGQ1N2JlMWNiMmI3MWNkZWM4MTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44NTI3MjI5NzYzMzAxNywtNzMuODYxNzI1Nzc1NTUxMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfM2ZjN2M5YTFjYmQ3NDQ0YmJjNjRkODllODA1M2IxYzkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDk0YTlmNDViOTM0NDAyZTg2ODhkZmI3OGRlNTQzNzkgPSAkKCc8ZGl2IGlkPSJodG1sX2Q5NGE5ZjQ1YjkzNDQwMmU4Njg4ZGZiNzhkZTU0Mzc5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Ccm9ueGRhbGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzNmYzdjOWExY2JkNzQ0NGJiYzY0ZDg5ZTgwNTNiMWM5LnNldENvbnRlbnQoaHRtbF9kOTRhOWY0NWI5MzQ0MDJlODY4OGRmYjc4ZGU1NDM3OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mMTU1NTM3NWMyNDU0ZDU3YmUxY2IyYjcxY2RlYzgxNS5iaW5kUG9wdXAocG9wdXBfM2ZjN2M5YTFjYmQ3NDQ0YmJjNjRkODllODA1M2IxYzkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDk0ZmVlNjYxMDA1NDU4NmJjZjYxMjZkMzMwMTE0MjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44NjU3ODc4NzgwMjk4MiwtNzMuODU5MzE4NjMyMjE2NDddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzdhODFmMmIyODExNDA5Nzk0Y2IwZTA5ZDFjOTViMmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmUwZjY2YWJkNmIwNGU0NTg0YzQzMmYzNmFlMGQ5MGMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWJhNjNjNjE1ZTM3NDU0NWFkZmJkZTliYTc3OGE2MDMgPSAkKCc8ZGl2IGlkPSJodG1sXzFiYTYzYzYxNWUzNzQ1NDVhZGZiZGU5YmE3NzhhNjAzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BbGxlcnRvbjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmUwZjY2YWJkNmIwNGU0NTg0YzQzMmYzNmFlMGQ5MGMuc2V0Q29udGVudChodG1sXzFiYTYzYzYxNWUzNzQ1NDVhZGZiZGU5YmE3NzhhNjAzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzQ5NGZlZTY2MTAwNTQ1ODZiY2Y2MTI2ZDMzMDExNDI4LmJpbmRQb3B1cChwb3B1cF9iZTBmNjZhYmQ2YjA0ZTQ1ODRjNDMyZjM2YWUwZDkwYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83NmQ5MTI0ZWE2MWU0YWE4YTdmNjY0YzUzYWNjN2IwZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjg3MDM5MjM5MTQxNDcsLTczLjkwMTUyMjY0NTEzMTQ0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM3YTgxZjJiMjgxMTQwOTc5NGNiMGUwOWQxYzk1YjJhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U1NmZkMWE0NWQzMDQwNzk5OTkzZTc3NjZmODYwZGE1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU5OTQ1NzU0NWY3ODRlYWFhMzdkYWNlMGE0MWY2OGIxID0gJCgnPGRpdiBpZD0iaHRtbF81OTk0NTc1NDVmNzg0ZWFhYTM3ZGFjZTBhNDFmNjhiMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+S2luZ3NicmlkZ2UgSGVpZ2h0czwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTU2ZmQxYTQ1ZDMwNDA3OTk5OTNlNzc2NmY4NjBkYTUuc2V0Q29udGVudChodG1sXzU5OTQ1NzU0NWY3ODRlYWFhMzdkYWNlMGE0MWY2OGIxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzc2ZDkxMjRlYTYxZTRhYThhN2Y2NjRjNTNhY2M3YjBkLmJpbmRQb3B1cChwb3B1cF9lNTZmZDFhNDVkMzA0MDc5OTk5M2U3NzY2Zjg2MGRhNSk7CgogICAgICAgICAgICAKICAgICAgICAKPC9zY3JpcHQ+\" 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 0x7f16afa80d68>" | |
] | |
}, | |
"execution_count": 59, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# create map of Manhattan using latitude and longitude values\n", | |
"print_map (bronx_data, zoom=10)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 61, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.image.AxesImage at 0x7f16af41fc18>" | |
] | |
}, | |
"execution_count": 61, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# a little tweak to show maps as images in github\n", | |
"plt.imshow(mpimg.imread('bronx.jpg'))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 38, | |
"metadata": {}, | |
"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>Borough</th>\n", | |
" <th>Neighborhood</th>\n", | |
" <th>Latitude</th>\n", | |
" <th>Longitude</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>Brooklyn</td>\n", | |
" <td>Bay Ridge</td>\n", | |
" <td>40.625801</td>\n", | |
" <td>-74.030621</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>Brooklyn</td>\n", | |
" <td>Bensonhurst</td>\n", | |
" <td>40.611009</td>\n", | |
" <td>-73.995180</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>Brooklyn</td>\n", | |
" <td>Sunset Park</td>\n", | |
" <td>40.645103</td>\n", | |
" <td>-74.010316</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>Brooklyn</td>\n", | |
" <td>Greenpoint</td>\n", | |
" <td>40.730201</td>\n", | |
" <td>-73.954241</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>Brooklyn</td>\n", | |
" <td>Gravesend</td>\n", | |
" <td>40.595260</td>\n", | |
" <td>-73.973471</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Borough Neighborhood Latitude Longitude\n", | |
"0 Brooklyn Bay Ridge 40.625801 -74.030621\n", | |
"1 Brooklyn Bensonhurst 40.611009 -73.995180\n", | |
"2 Brooklyn Sunset Park 40.645103 -74.010316\n", | |
"3 Brooklyn Greenpoint 40.730201 -73.954241\n", | |
"4 Brooklyn Gravesend 40.595260 -73.973471" | |
] | |
}, | |
"execution_count": 38, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"brooklyn_data = newyork_data[newyork_data['Borough'] == 'Brooklyn'].reset_index(drop=True)\n", | |
"brooklyn_data.head()\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 57, | |
"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+ICNtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNDAuNzMwODYxOSwtNzMuOTg3MTU1OF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfMmJkZTY1OGI1OTg4NDY1NWJhOWY1YjViZDU5OGNiMTQgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y2NGE5NjYzMGU1MjQwZDk5NTFlZjZjMWUxMzk1Yjc4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjI1ODAxMDY1MDEwNjU2LC03NC4wMzA2MjA2OTM1MzgxM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iYmNlOWIwMjNiZjI0NzA5YWI1YTkxNTZiOWNhYTVkMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wMmQ1YmUyOTBlZTU0NThkYTUyNmU4NWRlMjRjYWE4NyA9ICQoJzxkaXYgaWQ9Imh0bWxfMDJkNWJlMjkwZWU1NDU4ZGE1MjZlODVkZTI0Y2FhODciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJheSBSaWRnZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmJjZTliMDIzYmYyNDcwOWFiNWE5MTU2YjljYWE1ZDEuc2V0Q29udGVudChodG1sXzAyZDViZTI5MGVlNTQ1OGRhNTI2ZTg1ZGUyNGNhYTg3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Y2NGE5NjYzMGU1MjQwZDk5NTFlZjZjMWUxMzk1Yjc4LmJpbmRQb3B1cChwb3B1cF9iYmNlOWIwMjNiZjI0NzA5YWI1YTkxNTZiOWNhYTVkMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xM2Q3MzQ1N2FhNGI0Y2U0YmIzYzBiMTQ4MzY4MGVlNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjYxMTAwODkwMjAyMDQ0LC03My45OTUxNzk5ODM4MDcyOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lODNhOTFiNDVlOTE0NmE4OWI5YWJmMTYyYWVjMWI5MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mZTc4MjRkNjQwZjc0MDlhOTQ3ZTk5NmYwYWQ3OTU4MCA9ICQoJzxkaXYgaWQ9Imh0bWxfZmU3ODI0ZDY0MGY3NDA5YTk0N2U5OTZmMGFkNzk1ODAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJlbnNvbmh1cnN0PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lODNhOTFiNDVlOTE0NmE4OWI5YWJmMTYyYWVjMWI5Mi5zZXRDb250ZW50KGh0bWxfZmU3ODI0ZDY0MGY3NDA5YTk0N2U5OTZmMGFkNzk1ODApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMTNkNzM0NTdhYTRiNGNlNGJiM2MwYjE0ODM2ODBlZTcuYmluZFBvcHVwKHBvcHVwX2U4M2E5MWI0NWU5MTQ2YTg5YjlhYmYxNjJhZWMxYjkyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FiMWZkYTAxMTNhOTRhYjdhNjM1ZGY3Yjc3MDZkZWIxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjQ1MTAyOTQ5MjU0MjksLTc0LjAxMDMxNjE4NTI3Nzg0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ZiNDA2Zjk0OTcyYTQyN2U4NTA3ZTYxZWExNjNlZjlmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2ExNTMwZDc1ZTQwOTRlZjg4NDFhZmNlMTc4NGU5MjYyID0gJCgnPGRpdiBpZD0iaHRtbF9hMTUzMGQ3NWU0MDk0ZWY4ODQxYWZjZTE3ODRlOTI2MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U3Vuc2V0IFBhcms8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZiNDA2Zjk0OTcyYTQyN2U4NTA3ZTYxZWExNjNlZjlmLnNldENvbnRlbnQoaHRtbF9hMTUzMGQ3NWU0MDk0ZWY4ODQxYWZjZTE3ODRlOTI2Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hYjFmZGEwMTEzYTk0YWI3YTYzNWRmN2I3NzA2ZGViMS5iaW5kUG9wdXAocG9wdXBfZmI0MDZmOTQ5NzJhNDI3ZTg1MDdlNjFlYTE2M2VmOWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODNmY2E4NTRiODIzNDI4OGJmYTg3NDlhNDMxYjNkNGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MzAyMDA5ODQ4NjQ3LC03My45NTQyNDA5MzEyNzM5M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mNTY5MDQyMjZjZDY0NzQwOTUzYTQ3MThkZGQyNmM1MyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81NTljMTRhMmM3YTE0MWQwOTUzNWRmYzFhYTllOTY1YSA9ICQoJzxkaXYgaWQ9Imh0bWxfNTU5YzE0YTJjN2ExNDFkMDk1MzVkZmMxYWE5ZTk2NWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkdyZWVucG9pbnQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y1NjkwNDIyNmNkNjQ3NDA5NTNhNDcxOGRkZDI2YzUzLnNldENvbnRlbnQoaHRtbF81NTljMTRhMmM3YTE0MWQwOTUzNWRmYzFhYTllOTY1YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84M2ZjYTg1NGI4MjM0Mjg4YmZhODc0OWE0MzFiM2Q0Zi5iaW5kUG9wdXAocG9wdXBfZjU2OTA0MjI2Y2Q2NDc0MDk1M2E0NzE4ZGRkMjZjNTMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGQ4N2Y5NzlkZTQyNDQ4ZTgyN2Q4ZjFlM2Q1ZjhjNjQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41OTUyNjAwMTMwNjU5MywtNzMuOTczNDcwODc3MDg0NDVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNWUyMTVlNjdiMGNiNDU5MzllNDI3OTZiZWZlZTgzNTIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDlhNzhiNDRmYmFkNDkzMWI4M2U5ZjkxNjNhYTI4ZDkgPSAkKCc8ZGl2IGlkPSJodG1sXzA5YTc4YjQ0ZmJhZDQ5MzFiODNlOWY5MTYzYWEyOGQ5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5HcmF2ZXNlbmQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzVlMjE1ZTY3YjBjYjQ1OTM5ZTQyNzk2YmVmZWU4MzUyLnNldENvbnRlbnQoaHRtbF8wOWE3OGI0NGZiYWQ0OTMxYjgzZTlmOTE2M2FhMjhkOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kZDg3Zjk3OWRlNDI0NDhlODI3ZDhmMWUzZDVmOGM2NC5iaW5kUG9wdXAocG9wdXBfNWUyMTVlNjdiMGNiNDU5MzllNDI3OTZiZWZlZTgzNTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODI4MGJlYzNlZDhhNDk5NmJmNWZmNWI2YTJiYzdjMzcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41NzY4MjUwNjU2NjYwNCwtNzMuOTY1MDk0NDg3ODUzMzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzQzMWQzYmYyMDU5NGZlMDgyYWJkZTc3ZjgxMWEwZTkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzcyNDE4ODI2MTUxNDBlMWIzZTBkNzEyNGFhZDAyZWEgPSAkKCc8ZGl2IGlkPSJodG1sX2M3MjQxODgyNjE1MTQwZTFiM2UwZDcxMjRhYWQwMmVhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CcmlnaHRvbiBCZWFjaDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzQzMWQzYmYyMDU5NGZlMDgyYWJkZTc3ZjgxMWEwZTkuc2V0Q29udGVudChodG1sX2M3MjQxODgyNjE1MTQwZTFiM2UwZDcxMjRhYWQwMmVhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzgyODBiZWMzZWQ4YTQ5OTZiZjVmZjViNmEyYmM3YzM3LmJpbmRQb3B1cChwb3B1cF8zNDMxZDNiZjIwNTk0ZmUwODJhYmRlNzdmODExYTBlOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82YjU0ZDJjOTVlMDY0M2UzYTg3OTgyZjI4MWNkNzgwNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU4Njg5MDEyNjc4Mzg0LC03My45NDMxODY0MDQ4Mjk3OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mYzhiYzcyYzg1MGI0OGZmODExYjdiMjM5ZjBmNGI1MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iYmFhZWU2NjFjZDc0YWM2OGE2NjU4NDMxMWVlNDMxNSA9ICQoJzxkaXYgaWQ9Imh0bWxfYmJhYWVlNjYxY2Q3NGFjNjhhNjY1ODQzMTFlZTQzMTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNoZWVwc2hlYWQgQmF5PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mYzhiYzcyYzg1MGI0OGZmODExYjdiMjM5ZjBmNGI1MS5zZXRDb250ZW50KGh0bWxfYmJhYWVlNjYxY2Q3NGFjNjhhNjY1ODQzMTFlZTQzMTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNmI1NGQyYzk1ZTA2NDNlM2E4Nzk4MmYyODFjZDc4MDYuYmluZFBvcHVwKHBvcHVwX2ZjOGJjNzJjODUwYjQ4ZmY4MTFiN2IyMzlmMGY0YjUxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I0MjNjMmExZWFlNDQxOWM4ZWZkOWM1NjNiM2Q0ZjU0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjE0NDMyNTEzMzUwOTgsLTczLjk1NzQzODQwNTU5OTM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg4MzU1NDM1YTljMjQwZWQ4YjRhNjBlYmRmMTE0NTQ1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzYyYzVlMDA1NzU4NzQzMzhhNTA0NDk3ZjZmODM5NmM4ID0gJCgnPGRpdiBpZD0iaHRtbF82MmM1ZTAwNTc1ODc0MzM4YTUwNDQ5N2Y2ZjgzOTZjOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWFuaGF0dGFuIFRlcnJhY2U8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg4MzU1NDM1YTljMjQwZWQ4YjRhNjBlYmRmMTE0NTQ1LnNldENvbnRlbnQoaHRtbF82MmM1ZTAwNTc1ODc0MzM4YTUwNDQ5N2Y2ZjgzOTZjOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iNDIzYzJhMWVhZTQ0MTljOGVmZDljNTYzYjNkNGY1NC5iaW5kUG9wdXAocG9wdXBfODgzNTU0MzVhOWMyNDBlZDhiNGE2MGViZGYxMTQ1NDUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTNmODcwMmJjOTIzNDI5YTg0M2FkMjE4ZWZmZmJhNGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MzYzMjU4OTAyNjY3NywtNzMuOTU4NDAxMDY1MzM5MDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGYyOWY1ZmU0ZjZlNGY5YWIyZDM0MjJiZjgyN2ZkMDggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTVlNWJjNjExZTQ3NDZkZDlkZDRiZGUyMmQwMTYwYjMgPSAkKCc8ZGl2IGlkPSJodG1sXzU1ZTViYzYxMWU0NzQ2ZGQ5ZGQ0YmRlMjJkMDE2MGIzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GbGF0YnVzaDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGYyOWY1ZmU0ZjZlNGY5YWIyZDM0MjJiZjgyN2ZkMDguc2V0Q29udGVudChodG1sXzU1ZTViYzYxMWU0NzQ2ZGQ5ZGQ0YmRlMjJkMDE2MGIzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzkzZjg3MDJiYzkyMzQyOWE4NDNhZDIxOGVmZmZiYTRiLmJpbmRQb3B1cChwb3B1cF9kZjI5ZjVmZTRmNmU0ZjlhYjJkMzQyMmJmODI3ZmQwOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lZmQ2YTAwNTE0ZTM0N2IzOTRjM2EwYjZiNmE2M2E1YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY3MDgyOTE3Njk1Mjk0LC03My45NDMyOTExOTA3MzU4Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yMjZlZDM1NTFmNzk0MTAwOWY1OGMyOWY0NTZhMjc4YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NjAyOTMxMjk1YWI0MzgxYTFiNmVhNWVmZjU3MTYzOCA9ICQoJzxkaXYgaWQ9Imh0bWxfOTYwMjkzMTI5NWFiNDM4MWExYjZlYTVlZmY1NzE2MzgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNyb3duIEhlaWdodHM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzIyNmVkMzU1MWY3OTQxMDA5ZjU4YzI5ZjQ1NmEyNzhhLnNldENvbnRlbnQoaHRtbF85NjAyOTMxMjk1YWI0MzgxYTFiNmVhNWVmZjU3MTYzOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lZmQ2YTAwNTE0ZTM0N2IzOTRjM2EwYjZiNmE2M2E1YS5iaW5kUG9wdXAocG9wdXBfMjI2ZWQzNTUxZjc5NDEwMDlmNThjMjlmNDU2YTI3OGEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOThmN2JkZWQwYzljNDQ4N2IwMjJjMWQ5YWE4YmJhZmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42NDE3MTc3NjY2ODk2MSwtNzMuOTM2MTAyNTYxODU4MzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjRmMDg2YTVhZDJiNDI1NThhZTRhYjg2MDE5NWJmOTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzlhNWE1YThhZGM0NGI3ZWJhNDBhNDNmODQzYWZmZjggPSAkKCc8ZGl2IGlkPSJodG1sXzM5YTVhNWE4YWRjNDRiN2ViYTQwYTQzZjg0M2FmZmY4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FYXN0IEZsYXRidXNoPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yNGYwODZhNWFkMmI0MjU1OGFlNGFiODYwMTk1YmY5Ni5zZXRDb250ZW50KGh0bWxfMzlhNWE1YThhZGM0NGI3ZWJhNDBhNDNmODQzYWZmZjgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOThmN2JkZWQwYzljNDQ4N2IwMjJjMWQ5YWE4YmJhZmEuYmluZFBvcHVwKHBvcHVwXzI0ZjA4NmE1YWQyYjQyNTU4YWU0YWI4NjAxOTViZjk2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZjYmI4NTkzMWY0NjQ5MzViODEwMmYzMWRhMDI3Y2M2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjQyMzgxOTU4MDAzNTI2LC03My45ODA0MjExMDU1OTQ3NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hN2I5YzNiYmIyOTk0MGQxOGQ3NjMyOTZiN2JiNTAzOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lZWJjOTY4YWMxY2Q0YTVjOWIzNDQ5OWVjOGUxMTMxMyA9ICQoJzxkaXYgaWQ9Imh0bWxfZWViYzk2OGFjMWNkNGE1YzliMzQ0OTllYzhlMTEzMTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPktlbnNpbmd0b248L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E3YjljM2JiYjI5OTQwZDE4ZDc2MzI5NmI3YmI1MDM5LnNldENvbnRlbnQoaHRtbF9lZWJjOTY4YWMxY2Q0YTVjOWIzNDQ5OWVjOGUxMTMxMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82Y2JiODU5MzFmNDY0OTM1YjgxMDJmMzFkYTAyN2NjNi5iaW5kUG9wdXAocG9wdXBfYTdiOWMzYmJiMjk5NDBkMThkNzYzMjk2YjdiYjUwMzkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDExNmE2NDE3OTkzNDJmNGFlZGQ4ZDI1YThmODNkZjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42NTY5NDU4MzU3NTEwNCwtNzMuOTgwMDczNDA0MzAxNzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2ZjOGNjNzc4YTg3NDhhMDg3MmU1NzdiNmI5MDdkM2MgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTQ4NjM5NmNlNmEwNGU1Yjk5MDlmZTQxYjIwMDlmZjYgPSAkKCc8ZGl2IGlkPSJodG1sX2E0ODYzOTZjZTZhMDRlNWI5OTA5ZmU0MWIyMDA5ZmY2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XaW5kc29yIFRlcnJhY2U8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdmYzhjYzc3OGE4NzQ4YTA4NzJlNTc3YjZiOTA3ZDNjLnNldENvbnRlbnQoaHRtbF9hNDg2Mzk2Y2U2YTA0ZTViOTkwOWZlNDFiMjAwOWZmNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wMTE2YTY0MTc5OTM0MmY0YWVkZDhkMjVhOGY4M2RmNS5iaW5kUG9wdXAocG9wdXBfN2ZjOGNjNzc4YTg3NDhhMDg3MmU1NzdiNmI5MDdkM2MpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODY4NzRlOGExN2ZiNDFhMmFmYWZiYTlhMWE3Njk2NDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42NzY4MjIyNjIyNTQ3MjQsLTczLjk2NDg1OTI0MjYyNjldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDVlMTAzNTM5ZDgxNGFhMzhmNjBmNWFkMzAzYTY3MjUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjI0NjNkM2Y2ZGFlNDc3ZGE3MzJmOTgyNmEyM2Y3ZjMgPSAkKCc8ZGl2IGlkPSJodG1sX2IyNDYzZDNmNmRhZTQ3N2RhNzMyZjk4MjZhMjNmN2YzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Qcm9zcGVjdCBIZWlnaHRzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80NWUxMDM1MzlkODE0YWEzOGY2MGY1YWQzMDNhNjcyNS5zZXRDb250ZW50KGh0bWxfYjI0NjNkM2Y2ZGFlNDc3ZGE3MzJmOTgyNmEyM2Y3ZjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODY4NzRlOGExN2ZiNDFhMmFmYWZiYTlhMWE3Njk2NDIuYmluZFBvcHVwKHBvcHVwXzQ1ZTEwMzUzOWQ4MTRhYTM4ZjYwZjVhZDMwM2E2NzI1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NkMTJmMjNkM2M0MTRmYzBhZjlkODJkMTEzNDc5OTEzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjYzOTQ5OTQzMzk3NTUsLTczLjkxMDIzNTM2MTc2NjA3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFiZGMyZWI5ZWRmNzQyZDBhNTBmMGFhODc3NWVmMWRmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzBlNDAzNjVlNWQ5NTRmNWE4ODQ2ZmMwNDQwOTA1ZjYzID0gJCgnPGRpdiBpZD0iaHRtbF8wZTQwMzY1ZTVkOTU0ZjVhODg0NmZjMDQ0MDkwNWY2MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QnJvd25zdmlsbGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFiZGMyZWI5ZWRmNzQyZDBhNTBmMGFhODc3NWVmMWRmLnNldENvbnRlbnQoaHRtbF8wZTQwMzY1ZTVkOTU0ZjVhODg0NmZjMDQ0MDkwNWY2Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jZDEyZjIzZDNjNDE0ZmMwYWY5ZDgyZDExMzQ3OTkxMy5iaW5kUG9wdXAocG9wdXBfMWJkYzJlYjllZGY3NDJkMGE1MGYwYWE4Nzc1ZWYxZGYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzUwZDVkYmY2YmUwNDY2OWJkMjczOGYyMjA1NTNlNDcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MDcxNDQzOTM0NDI1MSwtNzMuOTU4MTE1MjkyMjA5MjddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmM4MzhjMTIwM2Y4NGVmOTg0MDY2NThmNTBkNGNjY2MgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTBkYjg0M2MwMzk4NDk3ZmFlYmY3NGYzMTNhNGY2Y2IgPSAkKCc8ZGl2IGlkPSJodG1sXzUwZGI4NDNjMDM5ODQ5N2ZhZWJmNzRmMzEzYTRmNmNiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XaWxsaWFtc2J1cmc8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZjODM4YzEyMDNmODRlZjk4NDA2NjU4ZjUwZDRjY2NjLnNldENvbnRlbnQoaHRtbF81MGRiODQzYzAzOTg0OTdmYWViZjc0ZjMxM2E0ZjZjYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jNTBkNWRiZjZiZTA0NjY5YmQyNzM4ZjIyMDU1M2U0Ny5iaW5kUG9wdXAocG9wdXBfNmM4MzhjMTIwM2Y4NGVmOTg0MDY2NThmNTBkNGNjY2MpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGU2MTIzOTczOWZiNDdlZGI0ZTMwMDNhMDA0MGYxY2MgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42OTgxMTYxMTAxNzkwMSwtNzMuOTI1MjU3OTc0ODcwNDVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDI4MGRlOTBlMTdiNDc0MmI5MDE3NmJmNjZkN2VkOTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGRmZjIxYjY4NWM1NGVkZTgwZmI1NGYyODdmNjgxMjkgPSAkKCc8ZGl2IGlkPSJodG1sXzBkZmYyMWI2ODVjNTRlZGU4MGZiNTRmMjg3ZjY4MTI5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CdXNod2ljazwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDI4MGRlOTBlMTdiNDc0MmI5MDE3NmJmNjZkN2VkOTAuc2V0Q29udGVudChodG1sXzBkZmYyMWI2ODVjNTRlZGU4MGZiNTRmMjg3ZjY4MTI5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzRlNjEyMzk3MzlmYjQ3ZWRiNGUzMDAzYTAwNDBmMWNjLmJpbmRQb3B1cChwb3B1cF80MjgwZGU5MGUxN2I0NzQyYjkwMTc2YmY2NmQ3ZWQ5MCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hMzMxNWUxZmQ2Nzk0Yjc1ODFlM2E2MDA5NDc0YTdjNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY4NzIzMTYwNzcyMDQ1NiwtNzMuOTQxNzg0ODg2OTAyOTddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTljODcwMTRkMjRiNGJhMjljZTQ2MDU1NDc3YTMwYTMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2JhNmIzNGYwMjYyNGE5ZWE5YzNjZjZhNjgyNWZjY2MgPSAkKCc8ZGl2IGlkPSJodG1sX2NiYTZiMzRmMDI2MjRhOWVhOWMzY2Y2YTY4MjVmY2NjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CZWRmb3JkIFN0dXl2ZXNhbnQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E5Yzg3MDE0ZDI0YjRiYTI5Y2U0NjA1NTQ3N2EzMGEzLnNldENvbnRlbnQoaHRtbF9jYmE2YjM0ZjAyNjI0YTllYTljM2NmNmE2ODI1ZmNjYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hMzMxNWUxZmQ2Nzk0Yjc1ODFlM2E2MDA5NDc0YTdjNy5iaW5kUG9wdXAocG9wdXBfYTljODcwMTRkMjRiNGJhMjljZTQ2MDU1NDc3YTMwYTMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWZiMzU5YTM4ZGU3NDg3MDhjZDhiOTFiODgxMzBmY2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42OTU4NjM3MjI3MjQwODQsLTczLjk5Mzc4MjI1NDk2NDI0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ZlYjE2Y2QyODA4MDQ1MDRhYWEzYjA4ZmMzNGNmMGVjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI3YzI5OWI3MTgzZDRlY2JiOWE3OWFiYmZmMzY2MDY5ID0gJCgnPGRpdiBpZD0iaHRtbF8yN2MyOTliNzE4M2Q0ZWNiYjlhNzlhYmJmZjM2NjA2OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QnJvb2tseW4gSGVpZ2h0czwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZmViMTZjZDI4MDgwNDUwNGFhYTNiMDhmYzM0Y2YwZWMuc2V0Q29udGVudChodG1sXzI3YzI5OWI3MTgzZDRlY2JiOWE3OWFiYmZmMzY2MDY5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2VmYjM1OWEzOGRlNzQ4NzA4Y2Q4YjkxYjg4MTMwZmNhLmJpbmRQb3B1cChwb3B1cF9mZWIxNmNkMjgwODA0NTA0YWFhM2IwOGZjMzRjZjBlYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iYmMxNjVhNDMxZWQ0NzYyOTljOTRlYjRmZjBjOThjNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY4NzkxOTcyMjQ4NTU3NCwtNzMuOTk4NTYxMzkyMTg0NjNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjJlNmNlYmI1Y2NmNDU4MGJkZGE2YmNiNTk4YzdjOGEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2QzNjEwYmVkMzU5NGM2NGI2OTk2OTE5MjM0ZjdiNTMgPSAkKCc8ZGl2IGlkPSJodG1sXzNkMzYxMGJlZDM1OTRjNjRiNjk5NjkxOTIzNGY3YjUzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Db2JibGUgSGlsbDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjJlNmNlYmI1Y2NmNDU4MGJkZGE2YmNiNTk4YzdjOGEuc2V0Q29udGVudChodG1sXzNkMzYxMGJlZDM1OTRjNjRiNjk5NjkxOTIzNGY3YjUzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2JiYzE2NWE0MzFlZDQ3NjI5OWM5NGViNGZmMGM5OGM3LmJpbmRQb3B1cChwb3B1cF8yMmU2Y2ViYjVjY2Y0NTgwYmRkYTZiY2I1OThjN2M4YSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xNmQ3ZWZhMDAwMGE0ZDlkODZiMjZkN2UwNGQwM2MwMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY4MDU0MDIzMTA3NjQ4NSwtNzMuOTk0NjUzNzI4MjgwMDZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWNkZDVhZTg0NGIyNDdlZmFmMjM1ZjQzNWE0ZjMzNjUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGQ1NmJmNmRjNTY2NDQwNmEzNzRmYjgzYTIzYjM3ZTYgPSAkKCc8ZGl2IGlkPSJodG1sXzhkNTZiZjZkYzU2NjQ0MDZhMzc0ZmI4M2EyM2IzN2U2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5DYXJyb2xsIEdhcmRlbnM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VjZGQ1YWU4NDRiMjQ3ZWZhZjIzNWY0MzVhNGYzMzY1LnNldENvbnRlbnQoaHRtbF84ZDU2YmY2ZGM1NjY0NDA2YTM3NGZiODNhMjNiMzdlNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xNmQ3ZWZhMDAwMGE0ZDlkODZiMjZkN2UwNGQwM2MwMC5iaW5kUG9wdXAocG9wdXBfZWNkZDVhZTg0NGIyNDdlZmFmMjM1ZjQzNWE0ZjMzNjUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2M4Zjk3YjM4OTczNDgzMzhkN2NmYmVhNTYyZmEzODAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42NzYyNTMyMzAyNTA4ODYsLTc0LjAxMjc1ODk3NDczNTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTBhZDAyMGMxZTQyNDY3MjliMzFlMDFiZGQ4ODI2OWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmIzMjYwYTc0MDdlNGEwMjgzMGEyOTVmMjI1ODdkYmEgPSAkKCc8ZGl2IGlkPSJodG1sX2JiMzI2MGE3NDA3ZTRhMDI4MzBhMjk1ZjIyNTg3ZGJhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5SZWQgSG9vazwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTBhZDAyMGMxZTQyNDY3MjliMzFlMDFiZGQ4ODI2OWQuc2V0Q29udGVudChodG1sX2JiMzI2MGE3NDA3ZTRhMDI4MzBhMjk1ZjIyNTg3ZGJhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzNjOGY5N2IzODk3MzQ4MzM4ZDdjZmJlYTU2MmZhMzgwLmJpbmRQb3B1cChwb3B1cF85MGFkMDIwYzFlNDI0NjcyOWIzMWUwMWJkZDg4MjY5ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85YWM0NmRmOWFkNTE0NmQ0OWUyOTcwYjMzM2UwYzEwZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY3MzkzMTE0MzE4NzE1NCwtNzMuOTk0NDQwODcxNDUzMzldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTljYjNmYTIzN2ViNDAzNTgyYmFlMzdiMTMwOGViNDggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjVlMTk4NGI2MjE2NDQzMDlhZTk2Y2M2ODQ1N2U0NWYgPSAkKCc8ZGl2IGlkPSJodG1sXzY1ZTE5ODRiNjIxNjQ0MzA5YWU5NmNjNjg0NTdlNDVmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Hb3dhbnVzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hOWNiM2ZhMjM3ZWI0MDM1ODJiYWUzN2IxMzA4ZWI0OC5zZXRDb250ZW50KGh0bWxfNjVlMTk4NGI2MjE2NDQzMDlhZTk2Y2M2ODQ1N2U0NWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOWFjNDZkZjlhZDUxNDZkNDllMjk3MGIzMzNlMGMxMGYuYmluZFBvcHVwKHBvcHVwX2E5Y2IzZmEyMzdlYjQwMzU4MmJhZTM3YjEzMDhlYjQ4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNmZjRiYjdhODY2MTQ5MDY5ODIxNTI2ZTY0YjdlN2RlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjg4NTI3MjYwMTg5NzcsLTczLjk3MjkwNTc0MzY5MDkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzk1ZGU1ODQ3MGIyNzQ1M2M4ZDQ1YzUwMzMxZjM4N2FmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2FkOGU2ODgyZDkyYTQ4MGI4ZDkyYTUzM2I2YzQzNTE2ID0gJCgnPGRpdiBpZD0iaHRtbF9hZDhlNjg4MmQ5MmE0ODBiOGQ5MmE1MzNiNmM0MzUxNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Rm9ydCBHcmVlbmU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzk1ZGU1ODQ3MGIyNzQ1M2M4ZDQ1YzUwMzMxZjM4N2FmLnNldENvbnRlbnQoaHRtbF9hZDhlNjg4MmQ5MmE0ODBiOGQ5MmE1MzNiNmM0MzUxNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zZmY0YmI3YTg2NjE0OTA2OTgyMTUyNmU2NGI3ZTdkZS5iaW5kUG9wdXAocG9wdXBfOTVkZTU4NDcwYjI3NDUzYzhkNDVjNTAzMzFmMzg3YWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjZlMzhkYzIzYmEwNGE2OGI2NmRmZWMzYTY4YzNlODEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42NzIzMjA1MjI2ODE5NywtNzMuOTc3MDUwMzAxODM5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMThmZGRmMTA5MGJhNDg1MzljM2JhNDE4YzEyYWNhYjQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzY2NzQ3OWJlMTE0NDQ3Y2ExYzU4OWFhYzdiZTBlYjkgPSAkKCc8ZGl2IGlkPSJodG1sX2M2Njc0NzliZTExNDQ0N2NhMWM1ODlhYWM3YmUwZWI5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5QYXJrIFNsb3BlPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xOGZkZGYxMDkwYmE0ODUzOWMzYmE0MThjMTJhY2FiNC5zZXRDb250ZW50KGh0bWxfYzY2NzQ3OWJlMTE0NDQ3Y2ExYzU4OWFhYzdiZTBlYjkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMjZlMzhkYzIzYmEwNGE2OGI2NmRmZWMzYTY4YzNlODEuYmluZFBvcHVwKHBvcHVwXzE4ZmRkZjEwOTBiYTQ4NTM5YzNiYTQxOGMxMmFjYWI0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NiY2U3ZjI4Y2Q4NDRlNTE4YzgzYmUxNzIxZDE3MzI4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjgyMzkxMDExNDQyMTEsLTczLjg3NjYxNTk2NDU3Mjk2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg4YWZjMmRhNzIxNDQzNzJhOGM4NzE3ZjA2Mzk0MTMwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNlOGY4ZDFiMTkxODRiNTVhNzMxN2ExZWQ0MDYzMzYzID0gJCgnPGRpdiBpZD0iaHRtbF8zZThmOGQxYjE5MTg0YjU1YTczMTdhMWVkNDA2MzM2MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q3lwcmVzcyBIaWxsczwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODhhZmMyZGE3MjE0NDM3MmE4Yzg3MTdmMDYzOTQxMzAuc2V0Q29udGVudChodG1sXzNlOGY4ZDFiMTkxODRiNTVhNzMxN2ExZWQ0MDYzMzYzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2NiY2U3ZjI4Y2Q4NDRlNTE4YzgzYmUxNzIxZDE3MzI4LmJpbmRQb3B1cChwb3B1cF84OGFmYzJkYTcyMTQ0MzcyYThjODcxN2YwNjM5NDEzMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jOGRhZWU0YmIwMjc0ODcyODhhMGVmYWFiMmMzZjQ2YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY2OTkyNTcwMDg0NzA0NSwtNzMuODgwNjk4NjM5MTczNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWM3MWYzZjg5MTczNGUwYjlhMDY1MjYyOTIxOWY0NWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWE3NGE1OWY2ODY2NGE1NmE0NjZiMWUxOWFhNjcxZWEgPSAkKCc8ZGl2IGlkPSJodG1sXzVhNzRhNTlmNjg2NjRhNTZhNDY2YjFlMTlhYTY3MWVhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FYXN0IE5ldyBZb3JrPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lYzcxZjNmODkxNzM0ZTBiOWEwNjUyNjI5MjE5ZjQ1YS5zZXRDb250ZW50KGh0bWxfNWE3NGE1OWY2ODY2NGE1NmE0NjZiMWUxOWFhNjcxZWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzhkYWVlNGJiMDI3NDg3Mjg4YTBlZmFhYjJjM2Y0NmEuYmluZFBvcHVwKHBvcHVwX2VjNzFmM2Y4OTE3MzRlMGI5YTA2NTI2MjkyMTlmNDVhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzBiOGRjNTQ1M2FlZDQyNDM4ZDBlOGNhMTJkNmJkYzM4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjQ3NTg5MDUyMzA4NzQsLTczLjg3OTM2OTcwMDQ1ODc1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U5NDNiOWIwMDI5YzQ5ZmJiMGM5OGU4YjlkM2M4ZjIzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E0NDBiZjFhMjg4ZTQwMGJiYjUzNTU1NGNjZmY3OTBmID0gJCgnPGRpdiBpZD0iaHRtbF9hNDQwYmYxYTI4OGU0MDBiYmI1MzU1NTRjY2ZmNzkwZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U3RhcnJldHQgQ2l0eTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTk0M2I5YjAwMjljNDlmYmIwYzk4ZThiOWQzYzhmMjMuc2V0Q29udGVudChodG1sX2E0NDBiZjFhMjg4ZTQwMGJiYjUzNTU1NGNjZmY3OTBmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzBiOGRjNTQ1M2FlZDQyNDM4ZDBlOGNhMTJkNmJkYzM4LmJpbmRQb3B1cChwb3B1cF9lOTQzYjliMDAyOWM0OWZiYjBjOThlOGI5ZDNjOGYyMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kYTA5NWQzZjM3NTQ0OTdiYjYwOGZjOGFjMTkxYWQ4OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjYzNTU2NDMyNzk3NDI4LC03My45MDIwOTI2OTc3ODk2Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kN2EwN2I5OTgyZjY0OWNkODlmMzg3NWY5YjQ5MTU4MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85ZDk0NzhkZDNhNDg0NWFkOTIwMzk2ZjFmMjE2MTFjYSA9ICQoJzxkaXYgaWQ9Imh0bWxfOWQ5NDc4ZGQzYTQ4NDVhZDkyMDM5NmYxZjIxNjExY2EiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNhbmFyc2llPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kN2EwN2I5OTgyZjY0OWNkODlmMzg3NWY5YjQ5MTU4Mi5zZXRDb250ZW50KGh0bWxfOWQ5NDc4ZGQzYTQ4NDVhZDkyMDM5NmYxZjIxNjExY2EpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZGEwOTVkM2YzNzU0NDk3YmI2MDhmYzhhYzE5MWFkODkuYmluZFBvcHVwKHBvcHVwX2Q3YTA3Yjk5ODJmNjQ5Y2Q4OWYzODc1ZjliNDkxNTgyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE2ZWZkMjg2NGJjNzQyZjM4Mzc4MjRmM2Y1N2Y5MWQ2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjMwNDQ2MDQzNzU3NDY2LC03My45MjkxMTMwMjY0NDY3NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jN2ZmMDI1YTY4MjY0MTk3OGYwMDM3YmY1ZjAzMzAzOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84ZDkyMDQ4ZmVmMzQ0OGJhODk3ODkyYjE2MDEzMjA2MiA9ICQoJzxkaXYgaWQ9Imh0bWxfOGQ5MjA0OGZlZjM0NDhiYTg5Nzg5MmIxNjAxMzIwNjIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZsYXRsYW5kczwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzdmZjAyNWE2ODI2NDE5NzhmMDAzN2JmNWYwMzMwMzguc2V0Q29udGVudChodG1sXzhkOTIwNDhmZWYzNDQ4YmE4OTc4OTJiMTYwMTMyMDYyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzE2ZWZkMjg2NGJjNzQyZjM4Mzc4MjRmM2Y1N2Y5MWQ2LmJpbmRQb3B1cChwb3B1cF9jN2ZmMDI1YTY4MjY0MTk3OGYwMDM3YmY1ZjAzMzAzOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80YTQ2YWQ0YzZjOTg0NTg3OGNiODc3MjcyNDc5MDFmNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjYwNjMzNjQyMTY4NTYyNiwtNzMuOTA4MTg1NzE3Nzc0MjNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmI4MTFmYTUyODI0NGQ3MjkxZjY0YmRjMTc0ZjgzNjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjZiYzgwZmNiNGY5NGE2OTk2NzhlMDJiMTEyZGM2ODkgPSAkKCc8ZGl2IGlkPSJodG1sX2Y2YmM4MGZjYjRmOTRhNjk5Njc4ZTAyYjExMmRjNjg5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NaWxsIElzbGFuZDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmI4MTFmYTUyODI0NGQ3MjkxZjY0YmRjMTc0ZjgzNjIuc2V0Q29udGVudChodG1sX2Y2YmM4MGZjYjRmOTRhNjk5Njc4ZTAyYjExMmRjNjg5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzRhNDZhZDRjNmM5ODQ1ODc4Y2I4NzcyNzI0NzkwMWY1LmJpbmRQb3B1cChwb3B1cF8yYjgxMWZhNTI4MjQ0ZDcyOTFmNjRiZGMxNzRmODM2Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83ZGVmZmIwNTUwMGU0YzBhODJiYzY0MjRlMjYzOGRiYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU3NzkxMzUwMzA4NjU3LC03My45NDM1MzcyMjg5MTg4Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82YWE5Yzk0OTU3MTE0YTRkYjFjNzMxNzEyZDA5OGM0OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lOGYwMjc2YzVlODY0MjFmOTY3M2Q0MzEwYjg5ZTY2ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfZThmMDI3NmM1ZTg2NDIxZjk2NzNkNDMxMGI4OWU2NmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1hbmhhdHRhbiBCZWFjaDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmFhOWM5NDk1NzExNGE0ZGIxYzczMTcxMmQwOThjNDguc2V0Q29udGVudChodG1sX2U4ZjAyNzZjNWU4NjQyMWY5NjczZDQzMTBiODllNjZmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzdkZWZmYjA1NTAwZTRjMGE4MmJjNjQyNGUyNjM4ZGJjLmJpbmRQb3B1cChwb3B1cF82YWE5Yzk0OTU3MTE0YTRkYjFjNzMxNzEyZDA5OGM0OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kNzdmNWY0NDExZTk0NTc4ODU1MzNiMjMyM2RiMTFmYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU3NDI5MjU2NDcxNjAxLC03My45ODg2ODI5NTgyMTYzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mNjk4YjJiZWM4MWU0NGJjYTZlYjVmNjQxOTAxMzM4NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iMDNkMDgyNDU3ODA0MmJjOTVmYWYyZDFjM2E4YzhkYiA9ICQoJzxkaXYgaWQ9Imh0bWxfYjAzZDA4MjQ1NzgwNDJiYzk1ZmFmMmQxYzNhOGM4ZGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNvbmV5IElzbGFuZDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjY5OGIyYmVjODFlNDRiY2E2ZWI1ZjY0MTkwMTMzODcuc2V0Q29udGVudChodG1sX2IwM2QwODI0NTc4MDQyYmM5NWZhZjJkMWMzYThjOGRiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Q3N2Y1ZjQ0MTFlOTQ1Nzg4NTUzM2IyMzIzZGIxMWZiLmJpbmRQb3B1cChwb3B1cF9mNjk4YjJiZWM4MWU0NGJjYTZlYjVmNjQxOTAxMzM4Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hN2MzMzFiMmI2NzM0NjI1ODRkNDkxZWU5YmFhODczNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU5OTUxODcwMjgyMjM4LC03My45OTg3NTIyMTQ0MzUxOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wYTAzMjNmMDFmYzc0NTA1OGFmZTdjY2NhNzU0OGQ4NiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kNjJkNjVhYTliZTg0NGZkOTdkMTBlY2U3MjBlYmM1ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfZDYyZDY1YWE5YmU4NDRmZDk3ZDEwZWNlNzIwZWJjNWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJhdGggQmVhY2g8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBhMDMyM2YwMWZjNzQ1MDU4YWZlN2NjY2E3NTQ4ZDg2LnNldENvbnRlbnQoaHRtbF9kNjJkNjVhYTliZTg0NGZkOTdkMTBlY2U3MjBlYmM1ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hN2MzMzFiMmI2NzM0NjI1ODRkNDkxZWU5YmFhODczNC5iaW5kUG9wdXAocG9wdXBfMGEwMzIzZjAxZmM3NDUwNThhZmU3Y2NjYTc1NDhkODYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGY0M2RkYWVkM2NhNGVkOTkwZTM4MTEzYTIwZWYzYWQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MzMxMzA1MTI3NTgwMTUsLTczLjk5MDQ5ODIzMDQ0ODExXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZjZDQxZTJkOGJjNDRmMzRiMzRlNmIyY2M0NjBjODkyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE4MDkxZjZjYTY0MjRiZmE4NzI0YmE4OTM0MmJlYzU3ID0gJCgnPGRpdiBpZD0iaHRtbF8xODA5MWY2Y2E2NDI0YmZhODcyNGJhODkzNDJiZWM1NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Qm9yb3VnaCBQYXJrPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82Y2Q0MWUyZDhiYzQ0ZjM0YjM0ZTZiMmNjNDYwYzg5Mi5zZXRDb250ZW50KGh0bWxfMTgwOTFmNmNhNjQyNGJmYTg3MjRiYTg5MzQyYmVjNTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMGY0M2RkYWVkM2NhNGVkOTkwZTM4MTEzYTIwZWYzYWQuYmluZFBvcHVwKHBvcHVwXzZjZDQxZTJkOGJjNDRmMzRiMzRlNmIyY2M0NjBjODkyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2YwYmEwZWEyNTIzNDQ3MzViMDZiZThiNDRkZGVjNDYxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjE5MjE5NDU3NzIyNjM2LC03NC4wMTkzMTM3NTYzNjAyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hOWJkZWQzZTVlNTU0MDljYjMxY2U5NjI4NTI0M2I5NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84ZTVlY2MyYjUzNzA0Zjk5OTVhYzRjYzY5ZTY0YWIwZiA9ICQoJzxkaXYgaWQ9Imh0bWxfOGU1ZWNjMmI1MzcwNGY5OTk1YWM0Y2M2OWU2NGFiMGYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkR5a2VyIEhlaWdodHM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E5YmRlZDNlNWU1NTQwOWNiMzFjZTk2Mjg1MjQzYjk3LnNldENvbnRlbnQoaHRtbF84ZTVlY2MyYjUzNzA0Zjk5OTVhYzRjYzY5ZTY0YWIwZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mMGJhMGVhMjUyMzQ0NzM1YjA2YmU4YjQ0ZGRlYzQ2MS5iaW5kUG9wdXAocG9wdXBfYTliZGVkM2U1ZTU1NDA5Y2IzMWNlOTYyODUyNDNiOTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODhiYmUzM2MzMjJmNDAzODk3NzEyYTI4MDYxYTBmODYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41OTA4NDg0MzM5MDIwNDYsLTczLjkzMDEwMTcwNjkxMTk2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M0NjAxNGMwMDcyNjRlM2ZiZmFkZGNiMmE3ODAxMTdmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U0ODM3NGJiMTQ2MzQxM2FiNWE4NjdhOWNlYWFiNDUyID0gJCgnPGRpdiBpZD0iaHRtbF9lNDgzNzRiYjE0NjM0MTNhYjVhODY3YTljZWFhYjQ1MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+R2Vycml0c2VuIEJlYWNoPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jNDYwMTRjMDA3MjY0ZTNmYmZhZGRjYjJhNzgwMTE3Zi5zZXRDb250ZW50KGh0bWxfZTQ4Mzc0YmIxNDYzNDEzYWI1YTg2N2E5Y2VhYWI0NTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODhiYmUzM2MzMjJmNDAzODk3NzEyYTI4MDYxYTBmODYuYmluZFBvcHVwKHBvcHVwX2M0NjAxNGMwMDcyNjRlM2ZiZmFkZGNiMmE3ODAxMTdmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM3NDE2YjlhNzJjYTQ0OTA4NGY1MjMyMjVmYTA5ZmE2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjA5NzQ3Nzc5ODk0NjA0LC03My45MzEzNDQwNDEwODQ5N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iNzZlODY0NWRmMzM0M2NjYmNkNTZmNmJiMTQ4YWRmOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMWE4MTZkNWM3MTQ0YTBkYmQ5ZjczYmI4MWY5N2Y1MSA9ICQoJzxkaXYgaWQ9Imh0bWxfYTFhODE2ZDVjNzE0NGEwZGJkOWY3M2JiODFmOTdmNTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1hcmluZSBQYXJrPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iNzZlODY0NWRmMzM0M2NjYmNkNTZmNmJiMTQ4YWRmOC5zZXRDb250ZW50KGh0bWxfYTFhODE2ZDVjNzE0NGEwZGJkOWY3M2JiODFmOTdmNTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzc0MTZiOWE3MmNhNDQ5MDg0ZjUyMzIyNWZhMDlmYTYuYmluZFBvcHVwKHBvcHVwX2I3NmU4NjQ1ZGYzMzQzY2NiY2Q1NmY2YmIxNDhhZGY4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q3NDkwMjVjM2E2MzQ2ZGViNzdiZTljMjY5N2JkZGQ4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjkzMjI5NDIxODgxNTA0LC03My45Njc4NDMwNjIxNjM2N10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hMjkwNTFlMDU0ZDQ0MDgxOWE5MmZhYmU1ODgzMzE0YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83NmFjYTk1YzEwZTM0NTdmYmMwZWFjNWNhYzc2ZTliMyA9ICQoJzxkaXYgaWQ9Imh0bWxfNzZhY2E5NWMxMGUzNDU3ZmJjMGVhYzVjYWM3NmU5YjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNsaW50b24gSGlsbDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTI5MDUxZTA1NGQ0NDA4MTlhOTJmYWJlNTg4MzMxNGEuc2V0Q29udGVudChodG1sXzc2YWNhOTVjMTBlMzQ1N2ZiYzBlYWM1Y2FjNzZlOWIzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Q3NDkwMjVjM2E2MzQ2ZGViNzdiZTljMjY5N2JkZGQ4LmJpbmRQb3B1cChwb3B1cF9hMjkwNTFlMDU0ZDQ0MDgxOWE5MmZhYmU1ODgzMzE0YSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81ZDUzNmI0YzlhN2Y0ZjRiOTA2MDFkYjRlNmVhNDdjMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU3NjM3NTM3ODkwMjI0LC03NC4wMDc4NzMxMTIwMDI0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U3Y2QwYjIwMWRiZjQwYzJiYmE2OGJjODQxZWU1MTQwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzViYWViNDNhNjk5OTQ0YzZiZTIzZDAzM2JiMTdmMWI0ID0gJCgnPGRpdiBpZD0iaHRtbF81YmFlYjQzYTY5OTk0NGM2YmUyM2QwMzNiYjE3ZjFiNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U2VhIEdhdGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U3Y2QwYjIwMWRiZjQwYzJiYmE2OGJjODQxZWU1MTQwLnNldENvbnRlbnQoaHRtbF81YmFlYjQzYTY5OTk0NGM2YmUyM2QwMzNiYjE3ZjFiNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81ZDUzNmI0YzlhN2Y0ZjRiOTA2MDFkYjRlNmVhNDdjMS5iaW5kUG9wdXAocG9wdXBfZTdjZDBiMjAxZGJmNDBjMmJiYTY4YmM4NDFlZTUxNDApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGYwOTZjYmY3MWYyNDIyZmFlZDBiZTIwMTJlY2VjNTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42OTA4NDQwMjEwOTgwMiwtNzMuOTgzNDYzMzc0MzEwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDkzZmIxN2FmZTk5NDdlMGIwMDhlYzMwOWNkZGNlNmQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmM0MTI1YWY4YzkxNDI5NDkxMmM0ZWMyZDAyYmU5YmEgPSAkKCc8ZGl2IGlkPSJodG1sXzJjNDEyNWFmOGM5MTQyOTQ5MTJjNGVjMmQwMmJlOWJhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Eb3dudG93bjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDkzZmIxN2FmZTk5NDdlMGIwMDhlYzMwOWNkZGNlNmQuc2V0Q29udGVudChodG1sXzJjNDEyNWFmOGM5MTQyOTQ5MTJjNGVjMmQwMmJlOWJhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzBmMDk2Y2JmNzFmMjQyMmZhZWQwYmUyMDEyZWNlYzU4LmJpbmRQb3B1cChwb3B1cF8wOTNmYjE3YWZlOTk0N2UwYjAwOGVjMzA5Y2RkY2U2ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYTU4ZjBlYWE1MWQ0ZGU1OGJjZWViYjhiNTBlMjU4NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY4NTY4MjkxMjA5MTQ0NCwtNzMuOTgzNzQ4MjQxMTU3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTIyZDYxODAwNGMxNDdkNmFiOWI4Mjg0NDA1ZDgwNDUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWFiMDkxNGM3NjVjNGQyNTk3NTBhMGY3OGNhMjgyODIgPSAkKCc8ZGl2IGlkPSJodG1sXzFhYjA5MTRjNzY1YzRkMjU5NzUwYTBmNzhjYTI4MjgyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Cb2VydW0gSGlsbDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTIyZDYxODAwNGMxNDdkNmFiOWI4Mjg0NDA1ZDgwNDUuc2V0Q29udGVudChodG1sXzFhYjA5MTRjNzY1YzRkMjU5NzUwYTBmNzhjYTI4MjgyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2NhNThmMGVhYTUxZDRkZTU4YmNlZWJiOGI1MGUyNTg0LmJpbmRQb3B1cChwb3B1cF9hMjJkNjE4MDA0YzE0N2Q2YWI5YjgyODQ0MDVkODA0NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NGExY2Y1ZTI1N2I0ZTk0ODQ1OTY5NzhlZTI5ZDg1ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY1ODQyMDAxNzQ2OTgxNSwtNzMuOTU0ODk4NjcwNzc3MTNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmRiZDlhZDMwMWI3NDNkZTlkZGY1NGU1NGUyZGE5ZWYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjMyZTllZDk2NjcyNDg2MjgzZGE1MTljYTI1NjY5ZmEgPSAkKCc8ZGl2IGlkPSJodG1sX2IzMmU5ZWQ5NjY3MjQ4NjI4M2RhNTE5Y2EyNTY2OWZhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Qcm9zcGVjdCBMZWZmZXJ0cyBHYXJkZW5zPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iZGJkOWFkMzAxYjc0M2RlOWRkZjU0ZTU0ZTJkYTllZi5zZXRDb250ZW50KGh0bWxfYjMyZTllZDk2NjcyNDg2MjgzZGE1MTljYTI1NjY5ZmEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTRhMWNmNWUyNTdiNGU5NDg0NTk2OTc4ZWUyOWQ4NWYuYmluZFBvcHVwKHBvcHVwX2JkYmQ5YWQzMDFiNzQzZGU5ZGRmNTRlNTRlMmRhOWVmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RmZGUzNWEzNTgzMTQwMzJiYjFlMGMwZWNmOTZmOTQ4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjc4NDAyNTU0Nzk1MzU1LC03My45MTMwNjgzMTc4NzM5NV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMjhlN2FiM2JkNGI0MGQ0YWM0MDE3NDFjYjk0YjY1MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xYzZlODUwZTg3MjI0YmZiODdjZjRjZjM4ZjYwYWI5NCA9ICQoJzxkaXYgaWQ9Imh0bWxfMWM2ZTg1MGU4NzIyNGJmYjg3Y2Y0Y2YzOGY2MGFiOTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9jZWFuIEhpbGw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMyOGU3YWIzYmQ0YjQwZDRhYzQwMTc0MWNiOTRiNjUxLnNldENvbnRlbnQoaHRtbF8xYzZlODUwZTg3MjI0YmZiODdjZjRjZjM4ZjYwYWI5NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kZmRlMzVhMzU4MzE0MDMyYmIxZTBjMGVjZjk2Zjk0OC5iaW5kUG9wdXAocG9wdXBfMzI4ZTdhYjNiZDRiNDBkNGFjNDAxNzQxY2I5NGI2NTEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzVjOWQ3MjllYmM0NDhhNjgzYmFlMTYzYWUyOGNiYjYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42Nzg1Njk5NTcyNzQ3OSwtNzMuODY3OTc1OTgwODEzMzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZmUzZjRiYjNhNGU0NGM4NzkxNDkzNGJjN2Y1MDg4YTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGIwMTE4ZjQxNmNjNDZkZWJkNzU5ZDhhNzVhMjE4OWQgPSAkKCc8ZGl2IGlkPSJodG1sXzRiMDExOGY0MTZjYzQ2ZGViZDc1OWQ4YTc1YTIxODlkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5DaXR5IExpbmU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZlM2Y0YmIzYTRlNDRjODc5MTQ5MzRiYzdmNTA4OGE0LnNldENvbnRlbnQoaHRtbF80YjAxMThmNDE2Y2M0NmRlYmQ3NTlkOGE3NWEyMTg5ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83NWM5ZDcyOWViYzQ0OGE2ODNiYWUxNjNhZTI4Y2JiNi5iaW5kUG9wdXAocG9wdXBfZmUzZjRiYjNhNGU0NGM4NzkxNDkzNGJjN2Y1MDg4YTQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzIyNThlN2ZiNDBjNDYzMjk3NWFlZTk3MjgzN2NlMTMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MTUxNDk1NTA0NTMwOCwtNzMuODk4NTU2MzM2MzAzMTddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjA4MGEwZDNiY2JkNDE2MDg1NDE0NGViYjM4NTY4ODYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjMzYjhjNDNiYjI5NGU0ZjlhOTk0NGM2ODA4ZWY0NmEgPSAkKCc8ZGl2IGlkPSJodG1sXzIzM2I4YzQzYmIyOTRlNGY5YTk5NDRjNjgwOGVmNDZhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CZXJnZW4gQmVhY2g8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzIwODBhMGQzYmNiZDQxNjA4NTQxNDRlYmIzODU2ODg2LnNldENvbnRlbnQoaHRtbF8yMzNiOGM0M2JiMjk0ZTRmOWE5OTQ0YzY4MDhlZjQ2YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83MjI1OGU3ZmI0MGM0NjMyOTc1YWVlOTcyODM3Y2UxMy5iaW5kUG9wdXAocG9wdXBfMjA4MGEwZDNiY2JkNDE2MDg1NDE0NGViYjM4NTY4ODYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmRjNmJmMzRhYzAyNDA1YmI5NmNhODFiNDdmNzA0MDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MjU1OTU4OTg2OTg0MywtNzMuOTU3NTk1MjM0ODk4MzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYWM2OTU2N2ZjNjdhNGIxYzgyNjQzMTdjNjBlYjIyOWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjcwNmExN2U5MTBiNDcyNjk4N2NhMzg5NTcwZDBhYzggPSAkKCc8ZGl2IGlkPSJodG1sXzI3MDZhMTdlOTEwYjQ3MjY5ODdjYTM4OTU3MGQwYWM4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NaWR3b29kPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hYzY5NTY3ZmM2N2E0YjFjODI2NDMxN2M2MGViMjI5YS5zZXRDb250ZW50KGh0bWxfMjcwNmExN2U5MTBiNDcyNjk4N2NhMzg5NTcwZDBhYzgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNmRjNmJmMzRhYzAyNDA1YmI5NmNhODFiNDdmNzA0MDIuYmluZFBvcHVwKHBvcHVwX2FjNjk1NjdmYzY3YTRiMWM4MjY0MzE3YzYwZWIyMjlhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzljMjc4MzJmNDNkODQxOWZhYTYzNDA4MWIxZTMyMTMxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjQ3MDA4NjAzMTg1MTg1LC03My45NjI2MTMxNjcxNjA0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yYjQ5ZmIwZGVkZGM0NmYxYjEzOGM4NTg4NGY2MTUwMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iYWYyZTE1ODlmNjc0ZGE2OGNiOGZkM2M5N2FhMGQ2MyA9ICQoJzxkaXYgaWQ9Imh0bWxfYmFmMmUxNTg5ZjY3NGRhNjhjYjhmZDNjOTdhYTBkNjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlByb3NwZWN0IFBhcmsgU291dGg8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzJiNDlmYjBkZWRkYzQ2ZjFiMTM4Yzg1ODg0ZjYxNTAwLnNldENvbnRlbnQoaHRtbF9iYWYyZTE1ODlmNjc0ZGE2OGNiOGZkM2M5N2FhMGQ2Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85YzI3ODMyZjQzZDg0MTlmYWE2MzQwODFiMWUzMjEzMS5iaW5kUG9wdXAocG9wdXBfMmI0OWZiMGRlZGRjNDZmMWIxMzhjODU4ODRmNjE1MDApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGI0YzdlNjU3NWYwNDc1NmJlYzRmOWM4ZWFmODdiYjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MjM4NDUyNDQ3ODQxOSwtNzMuOTE2MDc0ODM5NTEzMjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTk5OGJiMmE1ZjY0NDQ3Y2FiYjRhOGU2NjNlY2I1OGMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2E4MmZlM2RkNDYyNDYzYTgwOGZiNTdkMmI5ZDkyNTMgPSAkKCc8ZGl2IGlkPSJodG1sXzNhODJmZTNkZDQ2MjQ2M2E4MDhmYjU3ZDJiOWQ5MjUzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5HZW9yZ2V0b3duPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xOTk4YmIyYTVmNjQ0NDdjYWJiNGE4ZTY2M2VjYjU4Yy5zZXRDb250ZW50KGh0bWxfM2E4MmZlM2RkNDYyNDYzYTgwOGZiNTdkMmI5ZDkyNTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNGI0YzdlNjU3NWYwNDc1NmJlYzRmOWM4ZWFmODdiYjIuYmluZFBvcHVwKHBvcHVwXzE5OThiYjJhNWY2NDQ0N2NhYmI0YThlNjYzZWNiNThjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ2NmY1YjcxOGZlZjQwYTE4NGQwMTkzZjA0ZDcyMzQ3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzA4NDkyNDEwNDE1NDgsLTczLjkzODg1ODE1MjY5MTk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzcyMTcyMWJkZTBjYTQxYmFhMzJjMmJmZDY0MjFjZTFjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM2NDczYmQ2ZjAxOTQ1ZDdiYmEyYjMwNjM0ZTExZDVhID0gJCgnPGRpdiBpZD0iaHRtbF8zNjQ3M2JkNmYwMTk0NWQ3YmJhMmIzMDYzNGUxMWQ1YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RWFzdCBXaWxsaWFtc2J1cmc8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzcyMTcyMWJkZTBjYTQxYmFhMzJjMmJmZDY0MjFjZTFjLnNldENvbnRlbnQoaHRtbF8zNjQ3M2JkNmYwMTk0NWQ3YmJhMmIzMDYzNGUxMWQ1YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80NjZmNWI3MThmZWY0MGExODRkMDE5M2YwNGQ3MjM0Ny5iaW5kUG9wdXAocG9wdXBfNzIxNzIxYmRlMGNhNDFiYWEzMmMyYmZkNjQyMWNlMWMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTJiOGJmYTI1MDI3NGRkNmEyNGFjNmNmY2I3YTY2ODEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC43MTQ4MjI5MDY1MzIwMTQsLTczLjk1ODgwODU3NTg3NTgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBmNmM1YWQ2OWQ4MjQyMDhiYTdmNWI5MzkwNjJkOWMyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI1YWMzMzIyNDVmMTQzYzY4N2VmMzg4ZDJkNGFlNTcwID0gJCgnPGRpdiBpZD0iaHRtbF8yNWFjMzMyMjQ1ZjE0M2M2ODdlZjM4OGQyZDRhZTU3MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tm9ydGggU2lkZTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGY2YzVhZDY5ZDgyNDIwOGJhN2Y1YjkzOTA2MmQ5YzIuc2V0Q29udGVudChodG1sXzI1YWMzMzIyNDVmMTQzYzY4N2VmMzg4ZDJkNGFlNTcwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzUyYjhiZmEyNTAyNzRkZDZhMjRhYzZjZmNiN2E2NjgxLmJpbmRQb3B1cChwb3B1cF8wZjZjNWFkNjlkODI0MjA4YmE3ZjViOTM5MDYyZDljMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NGIyZmJmZTU5OTY0Y2U1YThlM2U2NjhmMzRjMWFiOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjcxMDg2MTQ3MjY1MDY0LC03My45NTgwMDA5NTE1MzMzMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85YmZhOWJjOWFlN2Q0ZDU2YmQ0ZmU0M2UzM2NjZDQ4ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hZTg3MmI3ODU3MjM0NzE3YjA5YjI4NTI5MDc3NjAyMyA9ICQoJzxkaXYgaWQ9Imh0bWxfYWU4NzJiNzg1NzIzNDcxN2IwOWIyODUyOTA3NzYwMjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNvdXRoIFNpZGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzliZmE5YmM5YWU3ZDRkNTZiZDRmZTQzZTMzY2NkNDhkLnNldENvbnRlbnQoaHRtbF9hZTg3MmI3ODU3MjM0NzE3YjA5YjI4NTI5MDc3NjAyMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85NGIyZmJmZTU5OTY0Y2U1YThlM2U2NjhmMzRjMWFiOC5iaW5kUG9wdXAocG9wdXBfOWJmYTliYzlhZTdkNGQ1NmJkNGZlNDNlMzNjY2Q0OGQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDFjNWNkMWY2YTUwNGMyZWEyY2EzM2U1M2M1OTIxOWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42MTMwNTk3NjY2Nzk0MiwtNzMuOTY4MzY2NzgwMzU1NDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWRiYzFiMjI3ZmQ4NDA0ZjhkNmM5MDJiM2M5MGRmNmYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWVlOWJkMmNkNDkyNDhmYzhkNjBlNDE3OTYzZTlmZDggPSAkKCc8ZGl2IGlkPSJodG1sXzVlZTliZDJjZDQ5MjQ4ZmM4ZDYwZTQxNzk2M2U5ZmQ4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PY2VhbiBQYXJrd2F5PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85ZGJjMWIyMjdmZDg0MDRmOGQ2YzkwMmIzYzkwZGY2Zi5zZXRDb250ZW50KGh0bWxfNWVlOWJkMmNkNDkyNDhmYzhkNjBlNDE3OTYzZTlmZDgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDFjNWNkMWY2YTUwNGMyZWEyY2EzM2U1M2M1OTIxOWIuYmluZFBvcHVwKHBvcHVwXzlkYmMxYjIyN2ZkODQwNGY4ZDZjOTAyYjNjOTBkZjZmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM0Mjg2Y2YyYzZkYjRhYjdiMzc0N2Y2Y2VjNzYyNjBhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjE0NzY4MTI2OTQyMjYsLTc0LjAzMTk3OTE0NTM3OTg0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY0MmNlYWViNDlkODRiMTk5ZGU0ZDlmYzQ3Mjk4Mjg0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzMxMTZiMWY1ODAxMzQ0OWNiZTA4YTMyN2EyY2RhODMzID0gJCgnPGRpdiBpZD0iaHRtbF8zMTE2YjFmNTgwMTM0NDljYmUwOGEzMjdhMmNkYTgzMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Rm9ydCBIYW1pbHRvbjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjQyY2VhZWI0OWQ4NGIxOTlkZTRkOWZjNDcyOTgyODQuc2V0Q29udGVudChodG1sXzMxMTZiMWY1ODAxMzQ0OWNiZTA4YTMyN2EyY2RhODMzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzM0Mjg2Y2YyYzZkYjRhYjdiMzc0N2Y2Y2VjNzYyNjBhLmJpbmRQb3B1cChwb3B1cF82NDJjZWFlYjQ5ZDg0YjE5OWRlNGQ5ZmM0NzI5ODI4NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84OTc0NjM1MTNiZDI0MjJmOGIzYWU1MmRkNTZhMGI5YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY0MzY3NTE4MzM0MDk3NCwtNzMuOTYxMDEzMTI0NjY3NzldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTI5M2ZiODYxYWU5NDcxMDhhNDI3Yjg3OTkzYTExMTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjEyNjk5NGZjOTYxNGU2YWE4YzQxODZhMDYxM2FmOTMgPSAkKCc8ZGl2IGlkPSJodG1sX2YxMjY5OTRmYzk2MTRlNmFhOGM0MTg2YTA2MTNhZjkzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EaXRtYXMgUGFyazwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTI5M2ZiODYxYWU5NDcxMDhhNDI3Yjg3OTkzYTExMTAuc2V0Q29udGVudChodG1sX2YxMjY5OTRmYzk2MTRlNmFhOGM0MTg2YTA2MTNhZjkzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzg5NzQ2MzUxM2JkMjQyMmY4YjNhZTUyZGQ1NmEwYjlhLmJpbmRQb3B1cChwb3B1cF81MjkzZmI4NjFhZTk0NzEwOGE0MjdiODc5OTNhMTExMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82MWVjY2I3OTRmNzQ0ZTM0ODhkZDMzOTY1NWU1MmVmMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY2MDk0NjU2MTg4MTExLC03My45MzcxODY4MDU1OTMxNF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85NWRkNmU5YmE3NWY0YzU0ODUyZGM4OGY0YTExNWZmNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NGI2YmE5MDI1MGY0NDM5OTgwMjdiM2VjZjNjMDM2NCA9ICQoJzxkaXYgaWQ9Imh0bWxfOTRiNmJhOTAyNTBmNDQzOTk4MDI3YjNlY2YzYzAzNjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldpbmdhdGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzk1ZGQ2ZTliYTc1ZjRjNTQ4NTJkYzg4ZjRhMTE1ZmY1LnNldENvbnRlbnQoaHRtbF85NGI2YmE5MDI1MGY0NDM5OTgwMjdiM2VjZjNjMDM2NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82MWVjY2I3OTRmNzQ0ZTM0ODhkZDMzOTY1NWU1MmVmMy5iaW5kUG9wdXAocG9wdXBfOTVkZDZlOWJhNzVmNGM1NDg1MmRjODhmNGExMTVmZjUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDhjODA2NTZiMGU4NDg2OWI3N2ZlYTQ1NWI1ZTFiOTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42NTU1NzIzMTMyODA3NjQsLTczLjkyNjg4MjEyNjE2OTU1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg5OTBmMTMyZTNjMjQ2NThhYjQxYzI3YzUyNTNmNTNlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzUxMGFhNTliZjc3YjQ5YzY5MWJkOGZiMTczYzgwMzVlID0gJCgnPGRpdiBpZD0iaHRtbF81MTBhYTU5YmY3N2I0OWM2OTFiZDhmYjE3M2M4MDM1ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UnVnYnk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg5OTBmMTMyZTNjMjQ2NThhYjQxYzI3YzUyNTNmNTNlLnNldENvbnRlbnQoaHRtbF81MTBhYTU5YmY3N2I0OWM2OTFiZDhmYjE3M2M4MDM1ZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wOGM4MDY1NmIwZTg0ODY5Yjc3ZmVhNDU1YjVlMWI5OC5iaW5kUG9wdXAocG9wdXBfODk5MGYxMzJlM2MyNDY1OGFiNDFjMjdjNTI1M2Y1M2UpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzJkZTBhMDg3YWI5NDE0ZWE3ZDI0NmRiYTM1NTdlM2MgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42NTIxMTc0NTE3OTM0OTQsLTczLjkxNjY1MzMxOTc4MDQ4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU1MWRkM2I3ZDZmNDRkMTFiYjg1MDRkN2JiOWE1ZmNhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhjNTM5YmIyNzY5ZDRjY2NiYjU4MTg2NjU3ZGQzN2Q0ID0gJCgnPGRpdiBpZD0iaHRtbF84YzUzOWJiMjc2OWQ0Y2NjYmI1ODE4NjY1N2RkMzdkNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UmVtc2VuIFZpbGxhZ2U8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU1MWRkM2I3ZDZmNDRkMTFiYjg1MDRkN2JiOWE1ZmNhLnNldENvbnRlbnQoaHRtbF84YzUzOWJiMjc2OWQ0Y2NjYmI1ODE4NjY1N2RkMzdkNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83MmRlMGEwODdhYjk0MTRlYTdkMjQ2ZGJhMzU1N2UzYy5iaW5kUG9wdXAocG9wdXBfNTUxZGQzYjdkNmY0NGQxMWJiODUwNGQ3YmI5YTVmY2EpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzNjNmQwZWNmMmI4NDY2MjkxZGNiMmMzYjAwY2ZhMjEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42NjI3NDQyNzk2OTY2LC03My44ODUxMTc3NjM3OTI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mNTEwMGQ1MDYyZTA0NDMzOTg4Y2RlZjVlN2Q3MzU4NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jYTVkMjg2YWFkODQ0OGU1YjRmMDdhY2Y3YjcwYmRmMyA9ICQoJzxkaXYgaWQ9Imh0bWxfY2E1ZDI4NmFhZDg0NDhlNWI0ZjA3YWNmN2I3MGJkZjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5ldyBMb3RzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mNTEwMGQ1MDYyZTA0NDMzOTg4Y2RlZjVlN2Q3MzU4Ny5zZXRDb250ZW50KGh0bWxfY2E1ZDI4NmFhZDg0NDhlNWI0ZjA3YWNmN2I3MGJkZjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzNjNmQwZWNmMmI4NDY2MjkxZGNiMmMzYjAwY2ZhMjEuYmluZFBvcHVwKHBvcHVwX2Y1MTAwZDUwNjJlMDQ0MzM5ODhjZGVmNWU3ZDczNTg3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MyNzkwOGUxNDRkMDQxODZhNmM2NzgyMzAwNGRjMjY0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjMxMzE3NTUwMzk2NjcsLTczLjkwMjMzNDc0Mjk1ODM2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JhYzkxYzM1MzZlMjQ3OGI5Y2FmMjM0OGU1Yzk4MTNhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNiNDVlNTUyMzMyNTQ3YzA5ZjhkMTRkMjQ0MjZjOTU1ID0gJCgnPGRpdiBpZD0iaHRtbF8zYjQ1ZTU1MjMzMjU0N2MwOWY4ZDE0ZDI0NDI2Yzk1NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UGFlcmRlZ2F0IEJhc2luPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iYWM5MWMzNTM2ZTI0NzhiOWNhZjIzNDhlNWM5ODEzYS5zZXRDb250ZW50KGh0bWxfM2I0NWU1NTIzMzI1NDdjMDlmOGQxNGQyNDQyNmM5NTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzI3OTA4ZTE0NGQwNDE4NmE2YzY3ODIzMDA0ZGMyNjQuYmluZFBvcHVwKHBvcHVwX2JhYzkxYzM1MzZlMjQ3OGI5Y2FmMjM0OGU1Yzk4MTNhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIzMmRiOTI2Y2Y0NTQ5ODY5NzM5NjhiMzNjZDlkNzk4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjE1OTc0MjM5NjIzMzYsLTczLjkxNTE1MzkxNTUwNDA0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdiMzZkZjAyNDM3YTQzZjhhOGY2NWMyMGY5MjdhZWY5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzIxOGFmNzI1ZjUwNTQ4NTA5N2Q4MDE2NTY5Y2FlMzYyID0gJCgnPGRpdiBpZD0iaHRtbF8yMThhZjcyNWY1MDU0ODUwOTdkODAxNjU2OWNhZTM2MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWlsbCBCYXNpbjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2IzNmRmMDI0MzdhNDNmOGE4ZjY1YzIwZjkyN2FlZjkuc2V0Q29udGVudChodG1sXzIxOGFmNzI1ZjUwNTQ4NTA5N2Q4MDE2NTY5Y2FlMzYyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzIzMmRiOTI2Y2Y0NTQ5ODY5NzM5NjhiMzNjZDlkNzk4LmJpbmRQb3B1cChwb3B1cF83YjM2ZGYwMjQzN2E0M2Y4YThmNjVjMjBmOTI3YWVmOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wY2NlZWExZWIzMWE0NWY0YTdlZjdiZjNiNmE4M2ZlZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjcwMzI4MTA5MDkzMDE0LC03My45OTU1MDc1MTg4ODQxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wOWM5YjQ3ZWU3ZmQ0ZGRlYjU4YzVlNTBiYmFmNGQ4MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83MjE0OTIzNGJmY2Y0MzhjYjVkYTA3ODg2OGNhOGE2MSA9ICQoJzxkaXYgaWQ9Imh0bWxfNzIxNDkyMzRiZmNmNDM4Y2I1ZGEwNzg4NjhjYThhNjEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZ1bHRvbiBGZXJyeTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDljOWI0N2VlN2ZkNGRkZWI1OGM1ZTUwYmJhZjRkODEuc2V0Q29udGVudChodG1sXzcyMTQ5MjM0YmZjZjQzOGNiNWRhMDc4ODY4Y2E4YTYxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzBjY2VlYTFlYjMxYTQ1ZjRhN2VmN2JmM2I2YTgzZmVmLmJpbmRQb3B1cChwb3B1cF8wOWM5YjQ3ZWU3ZmQ0ZGRlYjU4YzVlNTBiYmFmNGQ4MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wZWQ4ZGY0ZjAzZGQ0Yjk5OTgwZmJlMGNhMDAyMGVjYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjcwMzMyMTQ5ODgyODc0LC03My45ODExMTYwMzU5MjM5M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hYTlmNmZhOTQwNmY0OGE3ODA5YTJjNDQxODQwYmZkNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lMzgxN2NhZmVkNmU0MGI1YWNkMjAwMTg0MjM5M2Y4ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfZTM4MTdjYWZlZDZlNDBiNWFjZDIwMDE4NDIzOTNmOGUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZpbmVnYXIgSGlsbDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYWE5ZjZmYTk0MDZmNDhhNzgwOWEyYzQ0MTg0MGJmZDQuc2V0Q29udGVudChodG1sX2UzODE3Y2FmZWQ2ZTQwYjVhY2QyMDAxODQyMzkzZjhlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzBlZDhkZjRmMDNkZDRiOTk5ODBmYmUwY2EwMDIwZWNjLmJpbmRQb3B1cChwb3B1cF9hYTlmNmZhOTQwNmY0OGE3ODA5YTJjNDQxODQwYmZkNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zODQ1MjI2ODk4NTM0NDFiOWU4MDA1NGNkODhjOWY5OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjY3NTAzOTg2NTAzMjM3LC03My45MzA1MzEwODgxNzMzOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zZWZjYWNiYTZhOWE0N2M3ODU5ZGM4YjAyNTVjMGZkOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MjRmYmRkMDcxMmM0NGViODg0ODE0NDkyZWRjODA1YiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjI0ZmJkZDA3MTJjNDRlYjg4NDgxNDQ5MmVkYzgwNWIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldlZWtzdmlsbGU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzNlZmNhY2JhNmE5YTQ3Yzc4NTlkYzhiMDI1NWMwZmQ4LnNldENvbnRlbnQoaHRtbF82MjRmYmRkMDcxMmM0NGViODg0ODE0NDkyZWRjODA1Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zODQ1MjI2ODk4NTM0NDFiOWU4MDA1NGNkODhjOWY5OS5iaW5kUG9wdXAocG9wdXBfM2VmY2FjYmE2YTlhNDdjNzg1OWRjOGIwMjU1YzBmZDgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWU3NTZhNTdjNTllNDNkNDlkYmNjODA2OWU0Y2FjNTcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42Nzc4NjEwNDc2OTUzMSwtNzMuOTAzMzE2ODQ4NTI1OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzFiZDEzNmJmNGI4NGUyYzhjMTlkZmZjY2VhYWE3Y2MgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjZjMDZmZWI0ODcxNDkxMjhlODJmYjg2ZDk2NzM3MTcgPSAkKCc8ZGl2IGlkPSJodG1sXzI2YzA2ZmViNDg3MTQ5MTI4ZTgyZmI4NmQ5NjczNzE3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Ccm9hZHdheSBKdW5jdGlvbjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzFiZDEzNmJmNGI4NGUyYzhjMTlkZmZjY2VhYWE3Y2Muc2V0Q29udGVudChodG1sXzI2YzA2ZmViNDg3MTQ5MTI4ZTgyZmI4NmQ5NjczNzE3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzllNzU2YTU3YzU5ZTQzZDQ5ZGJjYzgwNjllNGNhYzU3LmJpbmRQb3B1cChwb3B1cF9jMWJkMTM2YmY0Yjg0ZTJjOGMxOWRmZmNjZWFhYTdjYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83NzUwZTNhMmIyMjk0NDMzYWE4Y2NlMjU0MWI4Nzc0ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjcwMzE3NjMyODIyNjkyLC03My45ODg3NTI4MDc0NTA0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y1Y2ZlMTIwYTljNzRiNWM4ZDU4NWNkMmI5MTUzNzhiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YyYWRlZGZkOGZhMDRmMTM5NzczNWE4MmFmNzFmOTRiID0gJCgnPGRpdiBpZD0iaHRtbF9mMmFkZWRmZDhmYTA0ZjEzOTc3MzVhODJhZjcxZjk0YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RHVtYm88L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y1Y2ZlMTIwYTljNzRiNWM4ZDU4NWNkMmI5MTUzNzhiLnNldENvbnRlbnQoaHRtbF9mMmFkZWRmZDhmYTA0ZjEzOTc3MzVhODJhZjcxZjk0Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83NzUwZTNhMmIyMjk0NDMzYWE4Y2NlMjU0MWI4Nzc0Zi5iaW5kUG9wdXAocG9wdXBfZjVjZmUxMjBhOWM3NGI1YzhkNTg1Y2QyYjkxNTM3OGIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2JjYjQwMTgyYzc2NDYwMjg1OWJjODliODM2MTM4NDcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC41OTg1MjUwOTUxMzcyNTUsLTczLjk1OTE4NDU5NDI4NzAyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JkYWZkZjA3NjRmOTQwZDNiODE1YjRkOTQ5ZTgwZjUxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJjYmJhZjllNzRiNjQzMzk4OGNkMWIzNjU5OGNmMDlmID0gJCgnPGRpdiBpZD0iaHRtbF8yY2JiYWY5ZTc0YjY0MzM5ODhjZDFiMzY1OThjZjA5ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SG9tZWNyZXN0PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iZGFmZGYwNzY0Zjk0MGQzYjgxNWI0ZDk0OWU4MGY1MS5zZXRDb250ZW50KGh0bWxfMmNiYmFmOWU3NGI2NDMzOTg4Y2QxYjM2NTk4Y2YwOWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfN2JjYjQwMTgyYzc2NDYwMjg1OWJjODliODM2MTM4NDcuYmluZFBvcHVwKHBvcHVwX2JkYWZkZjA3NjRmOTQwZDNiODE1YjRkOTQ5ZTgwZjUxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJhODhjZTgyNzdlYzQyMGE4ZmRjYTUxMjAwNDBlZTM5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNjgxOTk4OTM0NTE3MywtNzMuODkwMzQ1NzA5ODcyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogImJsdWUiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICIjMzE4NmNjIiwKICAiZmlsbE9wYWNpdHkiOiAwLjcsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzBiYzVjNjA3NjRkMDRjZjU5ODZiZTY5Mjg0MGJkMmZhKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzcwZWUzZjM1OGFjMjQyYjI5ZjdiYTdkMTdlNjk5NmU5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2FlM2QzMDAzYjg3NDRjYWZiZmQxYjNlZGQwMTk5MTQzID0gJCgnPGRpdiBpZD0iaHRtbF9hZTNkMzAwM2I4NzQ0Y2FmYmZkMWIzZWRkMDE5OTE0MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SGlnaGxhbmQgUGFyazwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzBlZTNmMzU4YWMyNDJiMjlmN2JhN2QxN2U2OTk2ZTkuc2V0Q29udGVudChodG1sX2FlM2QzMDAzYjg3NDRjYWZiZmQxYjNlZGQwMTk5MTQzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzJhODhjZTgyNzdlYzQyMGE4ZmRjYTUxMjAwNDBlZTM5LmJpbmRQb3B1cChwb3B1cF83MGVlM2YzNThhYzI0MmIyOWY3YmE3ZDE3ZTY5OTZlOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85OGQ1NzJkZTIxMmM0MjY1ODBmYTJkMjZmMmVmYWY3MCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjYwOTM3NzcwMTEzNzY2LC03My45NDg0MTUxNTMyODg5M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJibHVlIiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiIzMxODZjYyIsCiAgImZpbGxPcGFjaXR5IjogMC43LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wYmM1YzYwNzY0ZDA0Y2Y1OTg2YmU2OTI4NDBiZDJmYSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hZTY2NDY3MGY3OWE0NWNmYWU2MWE3NGM0Nzg1NThiNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kZmIyODYxMGY3YmI0N2MyYTJiZjgyNGU4ZDEzYmE5NyA9ICQoJzxkaXYgaWQ9Imh0bWxfZGZiMjg2MTBmN2JiNDdjMmEyYmY4MjRlOGQxM2JhOTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1hZGlzb248L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FlNjY0NjcwZjc5YTQ1Y2ZhZTYxYTc0YzQ3ODU1OGI0LnNldENvbnRlbnQoaHRtbF9kZmIyODYxMGY3YmI0N2MyYTJiZjgyNGU4ZDEzYmE5Nyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85OGQ1NzJkZTIxMmM0MjY1ODBmYTJkMjZmMmVmYWY3MC5iaW5kUG9wdXAocG9wdXBfYWU2NjQ2NzBmNzlhNDVjZmFlNjFhNzRjNDc4NTU4YjQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTMyY2YxYWY3NzA2NDE3ODkzMzU2MTkwYmZjMTRkNTYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC42NDY5MjYwNjY1ODU3OSwtNzMuOTQ4MTc3MDk5MjAxODRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAiYmx1ZSIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogIiMzMTg2Y2MiLAogICJmaWxsT3BhY2l0eSI6IDAuNywKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMGJjNWM2MDc2NGQwNGNmNTk4NmJlNjkyODQwYmQyZmEpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNGU0ZGQ2ZDY5YzEyNGIxYzlhZDFkMTJhMmQ4OGI0NjEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjIyY2ViNzVhYjExNDA0OTllZjNmODkxNGNkNjgyYWIgPSAkKCc8ZGl2IGlkPSJodG1sX2YyMmNlYjc1YWIxMTQwNDk5ZWYzZjg5MTRjZDY4MmFiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FcmFzbXVzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80ZTRkZDZkNjljMTI0YjFjOWFkMWQxMmEyZDg4YjQ2MS5zZXRDb250ZW50KGh0bWxfZjIyY2ViNzVhYjExNDA0OTllZjNmODkxNGNkNjgyYWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTMyY2YxYWY3NzA2NDE3ODkzMzU2MTkwYmZjMTRkNTYuYmluZFBvcHVwKHBvcHVwXzRlNGRkNmQ2OWMxMjRiMWM5YWQxZDEyYTJkODhiNDYxKTsKCiAgICAgICAgICAgIAogICAgICAgIAo8L3NjcmlwdD4=\" 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 0x7f16af6d5eb8>" | |
] | |
}, | |
"execution_count": 57, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# create map of Manhattan using latitude and longitude values \n", | |
"print_map (brooklyn_data, zoom=10) \n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 58, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.image.AxesImage at 0x7f16af566710>" | |
] | |
}, | |
"execution_count": 58, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment