diff --git a/PyHa/IsoAutio.py b/PyHa/IsoAutio.py
index 5ecd6e0c..2c28f729 100644
--- a/PyHa/IsoAutio.py
+++ b/PyHa/IsoAutio.py
@@ -125,6 +125,36 @@ def build_isolation_parameters_microfaune(
return isolation_parameters
+def write_confidence(local_score_arr, automated_labels_df):
+ """
+ Function that adds a new column to a clip dataframe that has had automated labels generated.
+ Goes through all of the annotations and adding to said row a confidence metric based on the
+ maximum value of said annotation.
+
+ Args:
+ local_score_arr (np.ndarray or list of floats)
+ - Array of small predictions of bird presence
+ automated_labels_df (pd.DataFrame)
+ - labels derived from the local_score_arr from the def isolate() method for the "IN FILE"
+ column clip
+ returns:
+ Pandas DataFrame with an additional column of the confidence scores from the local score array
+ """
+ assert isinstance(local_score_arr, np.ndarray) or isinstance(local_score_arr, list)
+ assert isinstance(automated_labels_df, pd.DataFrame)
+ assert len(automated_labels_df) > 0
+
+ time_ratio = len(local_score_arr)/automated_labels_df["CLIP LENGTH"][0]
+ confidences = []
+ for row in automated_labels_df.index:
+ start_ndx = int(automated_labels_df["OFFSET"][row] * time_ratio)
+ end_ndx = start_ndx + int(automated_labels_df["DURATION"][row] * time_ratio)
+ cur_confidence = np.max(local_score_arr[start_ndx:end_ndx])
+ confidences.append(cur_confidence)
+
+ automated_labels_df["CONFIDENCE"] = confidences
+ return automated_labels_df
+
def isolate(
local_scores,
@@ -225,6 +255,10 @@ def isolate(
filename,
isolation_parameters,
manual_id=manual_id)
+
+ if "write_confidence" in isolation_parameters.keys():
+ if isolation_parameters["write_confidence"]:
+ isolation_df = write_confidence(local_scores, isolation_df)
return isolation_df
diff --git a/PyHa/annotation_post_processing.py b/PyHa/annotation_post_processing.py
index 1f1e7041..fa2ac856 100644
--- a/PyHa/annotation_post_processing.py
+++ b/PyHa/annotation_post_processing.py
@@ -15,17 +15,23 @@ def annotation_chunker(kaleidoscope_df, chunk_length):
kaleidoscope_df (Dataframe)
- Dataframe of annotations in kaleidoscope format
- chunk_length (int)
+ chunk_length (int, float)
- duration to set all annotation chunks
Returns:
Dataframe of labels with chunk_length duration
(elements in "OFFSET" are divisible by chunk_length).
"""
-
+ assert isinstance(kaleidoscope_df, pd.DataFrame)
+ assert isinstance(chunk_length, int) or isinstance(chunk_length, float)
+ assert chunk_length > 0
#Init list of clips to cycle through and output dataframe
clips = kaleidoscope_df["IN FILE"].unique()
df_columns = {'IN FILE' :'str', 'CLIP LENGTH' : 'float64', 'CHANNEL' : 'int64', 'OFFSET' : 'float64',
'DURATION' : 'float64', 'SAMPLE RATE' : 'int64','MANUAL ID' : 'str'}
+ set_confidence = False
+ if "CONFIDENCE" in kaleidoscope_df.keys():
+ df_columns["CONFIDENCE"] = 'float64'
+ set_confidence = True
output_df = pd.DataFrame({c: pd.Series(dtype=t) for c, t in df_columns.items()})
# going through each clip
@@ -57,14 +63,18 @@ def annotation_chunker(kaleidoscope_df, chunk_length):
1000,
0))
# Placing the label relative to the clip
- human_arr[minval:maxval] = 1
+ if set_confidence:
+ human_arr[minval:maxval] = species_df["CONFIDENCE"][annotation]
+ else:
+ human_arr[minval:maxval] = 1
# performing the chunk isolation technique on the human array
for index in range(potential_annotation_count):
chunk_start = index * (chunk_length*1000)
chunk_end = min((index+1)*chunk_length*1000,arr_len)
chunk = human_arr[int(chunk_start):int(chunk_end)]
- if max(chunk) >= 0.5:
+ chunk_max = max(chunk)
+ if chunk_max > 1e-4:
row = pd.DataFrame(index = [0])
annotation_start = chunk_start / 1000
#updating the dictionary
@@ -75,5 +85,7 @@ def annotation_chunker(kaleidoscope_df, chunk_length):
row["SAMPLE RATE"] = sr
row["MANUAL ID"] = bird
row["CHANNEL"] = 0
+ if set_confidence:
+ row["CONFIDENCE"] = chunk_max
output_df = pd.concat([output_df,row], ignore_index=True)
return output_df
\ No newline at end of file
diff --git a/PyHa_Tutorial.ipynb b/PyHa_Tutorial.ipynb
index 5f74ec52..ac876a58 100644
--- a/PyHa_Tutorial.ipynb
+++ b/PyHa_Tutorial.ipynb
@@ -58,16 +58,17 @@
"#}\n",
"\n",
"# Example Parameters for Microfaune\n",
- "#isolation_parameters = {\n",
- "# \"model\" : \"microfaune\",\n",
- "# \"technique\" : \"steinberg\",\n",
- "# \"threshold_type\" : \"median\",\n",
- "# \"threshold_const\" : 2.0,\n",
- "# \"threshold_min\" : 0.0,\n",
- "# \"window_size\" : 2.0,\n",
- "# \"chunk_size\" : 5.0,\n",
- "# \"verbose\" : True\n",
- "#}\n",
+ "isolation_parameters = {\n",
+ " \"model\" : \"microfaune\",\n",
+ " \"technique\" : \"steinberg\",\n",
+ " \"threshold_type\" : \"median\",\n",
+ " \"threshold_const\" : 2.0,\n",
+ " \"threshold_min\" : 0.0,\n",
+ " \"window_size\" : 2.0,\n",
+ " \"chunk_size\" : 5.0,\n",
+ " \"verbose\" : True,\n",
+ " \"write_confidence\" : True\n",
+ "}\n",
"\n",
"# Example parameters for TweetyNET\n",
"#isolation_parameters = {\n",
@@ -91,18 +92,19 @@
"# \"power_threshold\" : 3.0,\n",
"# \"threshold_min\" : 0.0\n",
"#}\n",
- "isolation_parameters = {\n",
- " \"model\" : \"template_matching\",\n",
- " \"template_path\" : \"./TEST/templates/piha.wav\",\n",
- " \"technique\" : \"steinberg\",\n",
- " # ideally this is the length of the template in seconds\n",
- " \"window_size\" : 4.2,\n",
- " \"threshold_type\" : \"pure\",\n",
- " \"threshold_const\" : 0.3,\n",
- " \"cutoff_freq_low\" : 850,\n",
- " \"cutoff_freq_high\" : 5600,\n",
- " \"verbose\" : True\n",
- "}"
+ "#isolation_parameters = {\n",
+ "# \"model\" : \"template_matching\",\n",
+ "# \"template_path\" : \"./TEST/templates/piha.wav\",\n",
+ "# \"technique\" : \"steinberg\",\n",
+ "# # ideally this is the length of the template in seconds\n",
+ "# \"window_size\" : 4.2,\n",
+ "# \"threshold_type\" : \"pure\",\n",
+ "# \"threshold_const\" : 0.3,\n",
+ "# \"cutoff_freq_low\" : 850,\n",
+ "# \"cutoff_freq_high\" : 5600,\n",
+ "# \"verbose\" : True,\n",
+ "# \"write_confidence\" : True\n",
+ "#}"
]
},
{
@@ -118,7 +120,25 @@
"metadata": {
"scrolled": true
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "1/1 [==============================] - 2s 2s/step\n",
+ "1/1 [==============================] - 1s 857ms/step\n",
+ "1/1 [==============================] - 1s 623ms/step\n",
+ "1/1 [==============================] - 0s 359ms/step\n",
+ "1/1 [==============================] - 1s 776ms/step\n",
+ "1/1 [==============================] - 0s 199ms/step\n",
+ "1/1 [==============================] - 1s 538ms/step\n",
+ "1/1 [==============================] - 0s 396ms/step\n",
+ "1/1 [==============================] - 0s 479ms/step\n",
+ "1/1 [==============================] - 0s 433ms/step\n",
+ "1/1 [==============================] - 0s 134ms/step\n"
+ ]
+ }
+ ],
"source": [
"automated_df = generate_automated_labels(path,isolation_parameters);"
]
@@ -135,6 +155,14 @@
"execution_count": 5,
"metadata": {},
"outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/home/jacob/acoustic-species-id/PyHa/PyHa/statistics.py:49: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
+ " 'MODE': stats.mode(np.round(annotation_lengths, 2))[0][0],\n"
+ ]
+ },
{
"data": {
"text/html": [
@@ -170,26 +198,26 @@
"
\n",
" \n",
" 0 | \n",
- " 53 | \n",
- " 4.33 | \n",
- " 4.678854 | \n",
- " 1.265239 | \n",
- " 3.722222 | \n",
- " 4.32746 | \n",
- " 4.362222 | \n",
- " 4.419728 | \n",
- " 12.123016 | \n",
+ " 59 | \n",
+ " 2.02 | \n",
+ " 8.683796 | \n",
+ " 8.962595 | \n",
+ " 1.139184 | \n",
+ " 4.121293 | \n",
+ " 6.844082 | \n",
+ " 9.224694 | \n",
+ " 55.420816 | \n",
"
\n",
" \n",
"\n",
""
],
"text/plain": [
- " COUNT MODE MEAN STANDARD DEVIATION MIN Q1 MEDIAN \\\n",
- "0 53 4.33 4.678854 1.265239 3.722222 4.32746 4.362222 \n",
+ " COUNT MODE MEAN STANDARD DEVIATION MIN Q1 MEDIAN \\\n",
+ "0 59 2.02 8.683796 8.962595 1.139184 4.121293 6.844082 \n",
"\n",
" Q3 MAX \n",
- "0 4.419728 12.123016 "
+ "0 9.224694 55.420816 "
]
},
"execution_count": 5,
@@ -241,6 +269,7 @@
" DURATION | \n",
" SAMPLE RATE | \n",
" MANUAL ID | \n",
+ " CONFIDENCE | \n",
" \n",
" \n",
" \n",
@@ -249,50 +278,55 @@
" ScreamingPiha7.wav | \n",
" 133.590204 | \n",
" 0 | \n",
- " 3.0 | \n",
+ " 0.0 | \n",
" 3.0 | \n",
" 44100 | \n",
" bird | \n",
+ " 0.988941 | \n",
" \n",
" \n",
" 1 | \n",
" ScreamingPiha7.wav | \n",
" 133.590204 | \n",
" 0 | \n",
- " 6.0 | \n",
+ " 3.0 | \n",
" 3.0 | \n",
" 44100 | \n",
" bird | \n",
+ " 0.988941 | \n",
"
\n",
" \n",
" 2 | \n",
" ScreamingPiha7.wav | \n",
" 133.590204 | \n",
" 0 | \n",
- " 9.0 | \n",
+ " 6.0 | \n",
" 3.0 | \n",
" 44100 | \n",
" bird | \n",
+ " 0.988941 | \n",
"
\n",
" \n",
" 3 | \n",
" ScreamingPiha7.wav | \n",
" 133.590204 | \n",
" 0 | \n",
- " 15.0 | \n",
+ " 9.0 | \n",
" 3.0 | \n",
" 44100 | \n",
" bird | \n",
+ " 0.988941 | \n",
"
\n",
" \n",
" 4 | \n",
" ScreamingPiha7.wav | \n",
" 133.590204 | \n",
" 0 | \n",
- " 18.0 | \n",
+ " 12.0 | \n",
" 3.0 | \n",
" 44100 | \n",
" bird | \n",
+ " 0.988941 | \n",
"
\n",
" \n",
" ... | \n",
@@ -303,19 +337,21 @@
" ... | \n",
" ... | \n",
" ... | \n",
+ " ... | \n",
"
\n",
" \n",
- " 118 | \n",
+ " 180 | \n",
" ScreamingPiha9.wav | \n",
" 37.302857 | \n",
" 0 | \n",
- " 24.0 | \n",
+ " 27.0 | \n",
" 3.0 | \n",
" 44100 | \n",
" bird | \n",
+ " 0.460223 | \n",
"
\n",
" \n",
- " 119 | \n",
+ " 181 | \n",
" ScreamingPiha9.wav | \n",
" 37.302857 | \n",
" 0 | \n",
@@ -323,9 +359,10 @@
" 3.0 | \n",
" 44100 | \n",
" bird | \n",
+ " 0.460223 | \n",
"
\n",
" \n",
- " 120 | \n",
+ " 182 | \n",
" ScreamingPiha9.wav | \n",
" 37.302857 | \n",
" 0 | \n",
@@ -333,9 +370,10 @@
" 3.0 | \n",
" 44100 | \n",
" bird | \n",
+ " 0.460223 | \n",
"
\n",
" \n",
- " 121 | \n",
+ " 183 | \n",
" ScreamingPiha3.wav | \n",
" 6.844082 | \n",
" 0 | \n",
@@ -343,9 +381,10 @@
" 3.0 | \n",
" 44100 | \n",
" bird | \n",
+ " 0.250364 | \n",
"
\n",
" \n",
- " 122 | \n",
+ " 184 | \n",
" ScreamingPiha3.wav | \n",
" 6.844082 | \n",
" 0 | \n",
@@ -353,40 +392,41 @@
" 3.0 | \n",
" 44100 | \n",
" bird | \n",
+ " 0.250364 | \n",
"
\n",
" \n",
"\n",
- "123 rows × 7 columns
\n",
+ "185 rows × 8 columns
\n",
""
],
"text/plain": [
" IN FILE CLIP LENGTH CHANNEL OFFSET DURATION SAMPLE RATE \\\n",
- "0 ScreamingPiha7.wav 133.590204 0 3.0 3.0 44100 \n",
- "1 ScreamingPiha7.wav 133.590204 0 6.0 3.0 44100 \n",
- "2 ScreamingPiha7.wav 133.590204 0 9.0 3.0 44100 \n",
- "3 ScreamingPiha7.wav 133.590204 0 15.0 3.0 44100 \n",
- "4 ScreamingPiha7.wav 133.590204 0 18.0 3.0 44100 \n",
+ "0 ScreamingPiha7.wav 133.590204 0 0.0 3.0 44100 \n",
+ "1 ScreamingPiha7.wav 133.590204 0 3.0 3.0 44100 \n",
+ "2 ScreamingPiha7.wav 133.590204 0 6.0 3.0 44100 \n",
+ "3 ScreamingPiha7.wav 133.590204 0 9.0 3.0 44100 \n",
+ "4 ScreamingPiha7.wav 133.590204 0 12.0 3.0 44100 \n",
".. ... ... ... ... ... ... \n",
- "118 ScreamingPiha9.wav 37.302857 0 24.0 3.0 44100 \n",
- "119 ScreamingPiha9.wav 37.302857 0 30.0 3.0 44100 \n",
- "120 ScreamingPiha9.wav 37.302857 0 33.0 3.0 44100 \n",
- "121 ScreamingPiha3.wav 6.844082 0 0.0 3.0 44100 \n",
- "122 ScreamingPiha3.wav 6.844082 0 3.0 3.0 44100 \n",
+ "180 ScreamingPiha9.wav 37.302857 0 27.0 3.0 44100 \n",
+ "181 ScreamingPiha9.wav 37.302857 0 30.0 3.0 44100 \n",
+ "182 ScreamingPiha9.wav 37.302857 0 33.0 3.0 44100 \n",
+ "183 ScreamingPiha3.wav 6.844082 0 0.0 3.0 44100 \n",
+ "184 ScreamingPiha3.wav 6.844082 0 3.0 3.0 44100 \n",
"\n",
- " MANUAL ID \n",
- "0 bird \n",
- "1 bird \n",
- "2 bird \n",
- "3 bird \n",
- "4 bird \n",
- ".. ... \n",
- "118 bird \n",
- "119 bird \n",
- "120 bird \n",
- "121 bird \n",
- "122 bird \n",
+ " MANUAL ID CONFIDENCE \n",
+ "0 bird 0.988941 \n",
+ "1 bird 0.988941 \n",
+ "2 bird 0.988941 \n",
+ "3 bird 0.988941 \n",
+ "4 bird 0.988941 \n",
+ ".. ... ... \n",
+ "180 bird 0.460223 \n",
+ "181 bird 0.460223 \n",
+ "182 bird 0.460223 \n",
+ "183 bird 0.250364 \n",
+ "184 bird 0.250364 \n",
"\n",
- "[123 rows x 7 columns]"
+ "[185 rows x 8 columns]"
]
},
"execution_count": 6,
@@ -614,6 +654,14 @@
"execution_count": 8,
"metadata": {},
"outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/home/jacob/acoustic-species-id/PyHa/PyHa/statistics.py:49: FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosis`), the default behavior of `mode` typically preserves the axis it acts along. In SciPy 1.11.0, this behavior will change: the default value of `keepdims` will become False, the `axis` over which the statistic is taken will be eliminated, and the value None will no longer be accepted. Set `keepdims` to True or False to avoid this warning.\n",
+ " 'MODE': stats.mode(np.round(annotation_lengths, 2))[0][0],\n"
+ ]
+ },
{
"data": {
"text/html": [
@@ -694,14 +742,12 @@
"outputs": [
{
"data": {
- "image/png": "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\n",
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAHHCAYAAACRAnNyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA460lEQVR4nO3deXxU1f3/8fcYkkkIEIIJJIFAICA7SMNSwA0BEQJuaJFiC1apC4uA+q1YK8RSoVoRlM2FglUQRUQtsgjIYosUiCBBJQUMgohGFBKIkEDy+f3BL1OGBEhCYA7yej4e9/Hgnnvmns+cGZJ37jLjMTMTAACAgy4JdAEAAACnQlABAADOIqgAAABnEVQAAICzCCoAAMBZBBUAAOAsggoAAHAWQQUAADiLoAIAAJxFUAEuUgkJCRowYECgy7ggzJw5Ux6PRzt37gx0KReMlStXyuPx6K233gp0KbjAEVRwQZgyZYo8Ho/atWt31vtauHChRo8effZFnQcu1XrgwAGFhobK4/Hoiy++CHQ5RZTHXD355JN65513yqWe8pKQkKCePXsGuoxTmj17tiZMmBDoMvAzRlDBBWHWrFlKSEjQunXrtH379rPa18KFC5WSklJOlZ1bLtU6d+5ceTwexcTEaNasWYEup4jymKtTBZXf/OY3Onz4sOrUqXNW+/85IqjgXCOowHkZGRlas2aNxo8fr+joaCd/SV4MXnvtNfXo0UN9+/bV7NmzA13OeRUUFOQ7mgTg/CKowHmzZs1SZGSkkpOTdeuttxYbVArPh69cudKvfefOnfJ4PJo5c6YkacCAAZo8ebIkyePx+JZCOTk5evDBBxUfHy+v16uGDRvqb3/7m07+knGPx6PBgwdr7ty5atKkicLCwtS+fXulpaVJkl544QXVr19foaGhuuaaa4pc2/DRRx/ptttuU+3ateX1ehUfH6/hw4fr8OHDvj5nqrWgoEATJkxQ06ZNFRoaqho1auiee+7R/v37/cYyM40ZM0a1atVSxYoV1alTJ3322WclmPn/2bVrlz766CPdfvvtuv32233h8WTXXHONmjVrps8//1ydOnVSxYoVVbNmTT311FN+/QpfrzfffFN/+ctfVKtWLYWGhqpz587FHjGbO3eukpKSFBYWpqioKN1xxx3as2dPiefqb3/7mzp06KBLL71UYWFhSkpKKnLthMfjUU5Ojl555RXf4wuv4TnVNSpTpkxR06ZN5fV6FRcXp0GDBunAgQNlmpOz9dprr/nmqFq1arr99tu1e/fuMtfy1Vdf6YYbblB4eLiqV6+u4cOHa8mSJX7/z6655hq9//77+uqrr3xzlpCQ4LefgoKCM77G27ZtU+/evRUTE6PQ0FDVqlVLt99+u7Kyssp1jnCBMsBxjRo1srvuusvMzFavXm2SbN26dX59VqxYYZJsxYoVfu0ZGRkmyWbMmGFmZmvWrLGuXbuaJHv11Vd9i5lZQUGBXXvttebxeOzuu++2SZMmWa9evUySDRs2zG+/kqxFixYWHx9v48aNs3HjxllERITVrl3bJk2aZE2aNLFnnnnGHnvsMQsJCbFOnTr5PX7IkCHWo0cPe/LJJ+2FF16wu+66y4KCguzWW2/19TldrWZmd999t1WoUMEGDhxo06ZNsz/84Q8WHh5ubdq0sby8PF+/xx57zCRZjx49bNKkSfa73/3O4uLiLCoqyvr371+i12DcuHFWqVIl++mnn8zMLDEx0e6///4i/a6++mqLi4uz+Ph4e+CBB2zKlCl27bXXmiRbuHBhkderVatWlpSUZM8++6yNHj3aKlasaG3btvXb54wZM0yStWnTxp599ll75JFHLCwszBISEmz//v0lmqtatWrZ/fffb5MmTbLx48db27ZtTZItWLDA1+fVV181r9drV155pe/xa9as8ashIyPD13/UqFEmybp06WLPP/+8DR482IKCgorMf0nn5FTq1KljycnJp+0zZswY83g81qdPH5syZYqlpKRYVFSU3xyVppZDhw5ZvXr1LCwszB555BGbMGGCtW3b1lq2bOn3/+yDDz6wyy+/3KKionxzNn/+/FK9xrm5uVa3bl2Li4uzMWPG2Msvv2wpKSnWpk0b27lz5xnnBz9/BBU4bcOGDSbJli5dambHw0StWrXsgQce8OtX0qBiZjZo0CArLqO/8847JsnGjBnj137rrbeax+Ox7du3+9okmdfr9fvF9cILL5gki4mJsezsbF/7yJEji/ySK/yFf6KxY8eax+Oxr7766oy1fvTRRybJZs2a5de+ePFiv/bMzEwLCQmx5ORkKygo8PV79NFHTVKJg0rz5s2tX79+fo+Pioqyo0eP+vW7+uqrTZL94x//8LXl5uZaTEyM9e7d29dW+Ho1btzYcnNzfe0TJ040SZaWlmZmZnl5eVa9enVr1qyZHT582NdvwYIFJskef/zxM86VWdH5zsvLs2bNmtm1117r1x4eHl7snJwcVArn9brrrrP8/Hxfv0mTJpkk+/vf/17qOTmVMwWVnTt3WlBQkP3lL3/xa09LS7MKFSr4tZe0lmeeecYk2TvvvONrO3z4sDVq1KjI/7Pk5GSrU6dOkbpK+hpv3LjRJNncuXPPOBe4OHHqB06bNWuWatSooU6dOkk6fni+T58+mjNnjvLz88t1rIULFyooKEhDhw71a3/wwQdlZlq0aJFfe+fOnf0OcxfekdS7d29Vrly5SPuXX37pawsLC/P9OycnR/v27VOHDh1kZtq4ceMZa507d64iIiLUtWtX7du3z7ckJSWpUqVKWrFihSRp2bJlysvL05AhQ/xOhQwbNuyMYxTavHmz0tLS1LdvX19b3759tW/fPi1ZsqRI/0qVKumOO+7wrYeEhKht27Z+z7/QnXfeqZCQEN/6lVdeKel/c7VhwwZlZmbq/vvvV2hoqK9fcnKyGjVqpPfff79Ez+HE+d6/f7+ysrJ05ZVX6pNPPinR409WOK/Dhg3TJZf878fowIEDVaVKlSJ1lWZOSuvtt99WQUGBfvWrX/m9F2JiYtSgQQPfe6E0tSxevFg1a9bUDTfc4GsLDQ3VwIEDS13fmV7jiIgISdKSJUv0008/lXr/+PkjqMBZ+fn5mjNnjjp16qSMjAxt375d27dvV7t27fTdd99p+fLl5TreV199pbi4OL+QIUmNGzf2bT9R7dq1/dYLf+DGx8cX237itSO7du3SgAEDVK1aNVWqVEnR0dG6+uqrJalE5+W3bdumrKwsVa9eXdHR0X7LoUOHlJmZ6VdzgwYN/B4fHR2tyMjIM44jHb/2ITw8XPXq1fO9BqGhoUpISCj2eqFatWoVueg0MjKyyLUzUtE5LKypsG9h/Q0bNizy2EaNGhV5TU5lwYIF+uUvf6nQ0FBVq1ZN0dHRmjp1apmvgThVXSEhIapXr16RukozJ6W1bds2mZkaNGhQ5L3wxRdf+N4Lpanlq6++UmJiYpF+9evXL3V9Z3qN69atqxEjRujll19WVFSUunXrpsmTJ3N9CnwqBLoA4FQ+/PBD7d27V3PmzNGcOXOKbJ81a5auu+46STrl3RjlfdTlREFBQaVqt/9/QW5+fr66du2qH3/8UX/4wx/UqFEjhYeHa8+ePRowYIAKCgrOOHZBQYGqV69+yjugoqOjS/gsTs/M9PrrrysnJ0dNmjQpsj0zM1OHDh1SpUqVfG1nev4nKk3fsvroo490ww036KqrrtKUKVMUGxur4OBgzZgx47zdvXQun2dBQYE8Ho8WLVpU7DgnvjbnupbilGS8Z555RgMGDNC7776rDz74QEOHDtXYsWO1du1a1apV65zUhQsHQQXOmjVrlqpXr+67m+NEb7/9tubPn69p06YpLCzM91fayXdcFPcX96lCTZ06dbRs2TIdPHjQ76jK1q1bfdvLQ1pamv773//qlVde0W9/+1tf+9KlS0tca2JiopYtW6aOHTv6ndY4WWHN27ZtU7169Xzt33//fYn+ml+1apW+/vprPfHEE74jS4X279+v3//+93rnnXf8TiWUp8L609PTde211/ptS09P93tNTjVX8+bNU2hoqJYsWSKv1+trnzFjRpG+Jb39+MS6TpzXvLw8ZWRkqEuXLiXaT3lITEyUmalu3bq67LLLymWfderU0eeffy4z85uT4u7IKq9btps3b67mzZvrscce05o1a9SxY0dNmzZNY8aMKZf948LFqR846fDhw3r77bfVs2dP3XrrrUWWwYMH6+DBg3rvvfckHf/BGhQUpNWrV/vtZ8qUKUX2HR4eLqloqOnRo4fy8/M1adIkv/Znn31WHo9H3bt3L5fnVvgX5ol/UZqZJk6cWOJaf/WrXyk/P19//vOfizzm2LFjvv5dunRRcHCwnn/+eb/xSvoBXYWnfR5++OEir8HAgQPVoEGDc/q5Nq1bt1b16tU1bdo05ebm+toXLVqkL774QsnJyb62U81VUFCQPB6P39G1nTt3FvvBbuHh4UUeX5wuXbooJCREzz33nN+8Tp8+XVlZWX51nWu33HKLgoKClJKSUuSoiJnphx9+KPU+u3Xrpj179vj+f0nSkSNH9NJLLxXpGx4eflanabKzs3Xs2DG/tubNm+uSSy7xe81x8eKICpz03nvv6eDBg34X853ol7/8pe/D3/r06aOIiAjddtttev755+XxeJSYmKgFCxYUOT8vSUlJSZKkoUOHqlu3bgoKCtLtt9+uXr16qVOnTvrjH/+onTt3qmXLlvrggw/07rvvatiwYUpMTCyX59aoUSMlJibqoYce0p49e1SlShXNmzev2CMcp6r16quv1j333KOxY8dq06ZNuu666xQcHKxt27Zp7ty5mjhxom699VZFR0froYce0tixY9WzZ0/16NFDGzdu1KJFixQVFXXaOnNzczVv3jx17drV70LWE91www2aOHGiMjMzVb169bOfnJMEBwfrr3/9q+68805dffXV6tu3r7777jtNnDhRCQkJGj58uK/vqeYqOTlZ48eP1/XXX69f//rXyszM1OTJk1W/fn1t3rzZb7ykpCQtW7ZM48ePV1xcnOrWrVvs1zZER0dr5MiRSklJ0fXXX68bbrhB6enpmjJlitq0aVPuR5i2b99e7JGFVq1aKTk5WWPGjNHIkSO1c+dO3XTTTapcubIyMjI0f/58/f73v9dDDz1UqvHuueceTZo0SX379tUDDzyg2NhYzZo1y/c+OPEoSlJSkt544w2NGDFCbdq0UaVKldSrV68Sj/Xhhx9q8ODBuu2223TZZZfp2LFjevXVVxUUFKTevXuXqm78TJ3v24yAkujVq5eFhoZaTk7OKfsMGDDAgoODbd++fWZm9v3331vv3r2tYsWKFhkZaffcc49t2bKlyO3Jx44dsyFDhlh0dLR5PB6/W1oPHjxow4cPt7i4OAsODrYGDRrY008/7Xdrr9nx25MHDRrk11Z4K/TTTz/t1154m+aJt19+/vnn1qVLF6tUqZJFRUXZwIED7dNPPy1VrWZmL774oiUlJVlYWJhVrlzZmjdvbv/3f/9n33zzja9Pfn6+paSkWGxsrIWFhdk111xjW7ZssTp16pz29uR58+aZJJs+ffop+6xcudIk2cSJE83s+O2vTZs2LdKvf//+frewFjcnJ87hiXNgZvbGG29Yq1atzOv1WrVq1axfv3729ddf+/U53VxNnz7dGjRoYF6v1xo1amQzZszwfQ7KibZu3WpXXXWVhYWF+d2+XdznqJgdvx25UaNGFhwcbDVq1LD77rvP73NLSjMnp1KnTh2TVOxS+PlCZsdfryuuuMLCw8MtPDzcGjVqZIMGDbL09PQy1fLll19acnKyhYWFWXR0tD344IO+98TatWt9/Q4dOmS//vWvrWrVqibJt5+SvsZffvml/e53v7PExEQLDQ21atWqWadOnWzZsmVnnBtcHDxm5+gKKgDAz8qECRM0fPhwff3116pZs2agy8FFgqACACji8OHDfhdqHzlyRK1atVJ+fr7++9//BrAyXGy4RgUAUMQtt9yi2rVr6/LLL1dWVpZee+01bd26lS8FxXlHUAEAFNGtWze9/PLLmjVrlvLz89WkSRPNmTNHffr0CXRpuMhw6gcAADiLz1EBAADOIqgAAABnXdDXqBQUFOibb75R5cqVy+1jnAEAwLllZjp48KDi4uL8voG8OBd0UPnmm2+KfFMtAAC4MOzevfuMXzx5QQeVwi+O2717t6pUqRLgagAAQElkZ2crPj7e7wtgT+WCDiqFp3uqVKlCUAEA4AJTkss2uJgWAAA4i6ACAACcRVABAADOIqgAAABnEVQAAICzCCoAAMBZBBUAAOAsggoAAHAWQQUAADiLoAIAAJwV8KCyZ88e3XHHHbr00ksVFham5s2ba8OGDYEuCwAAOCCg3/Wzf/9+dezYUZ06ddKiRYsUHR2tbdu2KTIyMpBlAQAARwQ0qPz1r39VfHy8ZsyY4WurW7duACsCAAAuCeipn/fee0+tW7fWbbfdpurVq6tVq1Z66aWXAlkSAABwSECPqHz55ZeaOnWqRowYoUcffVTr16/X0KFDFRISov79+xfpn5ubq9zcXN96dnb2eas1NzdXqampRdqTkpLk9XrPWx0AAFxMPGZmgRo8JCRErVu31po1a3xtQ4cO1fr16/Xxxx8X6T969GilpKQUac/KylKVKlXOaa1r1qzR0CnvqmrNRF/bgT079Nz9N6pDhw7ndGwAAH5OsrOzFRERUaLf3wE99RMbG6smTZr4tTVu3Fi7du0qtv/IkSOVlZXlW3bv3n0+yvSpWjNRUYnNfcuJoQUAAJS/gJ766dixo9LT0/3a/vvf/6pOnTrF9vd6vZxmAQDgIhLQIyrDhw/X2rVr9eSTT2r79u2aPXu2XnzxRQ0aNCiQZQEAAEcENKi0adNG8+fP1+uvv65mzZrpz3/+syZMmKB+/foFsiwAAOCIgJ76kaSePXuqZ8+egS4DAAA4KOAfoQ8AAHAqBBUAAOAsggoAAHAWQQUAADiLoAIAAJxFUAEAAM4iqAAAAGcRVAAAgLMIKgAAwFkEFQAA4CyCCgAAcBZBBQAAOIugAgAAnEVQAQAAziKoAAAAZxFUAACAswgqAADAWQQVAADgLIIKAABwFkEFAAA4i6ACAACcRVABAADOIqgAAABnEVQAAICzCCoAAMBZBBUAAOAsggoAAHAWQQUAADiLoAIAAJxFUAEAAM4iqAAAAGcRVAAAgLMIKgAAwFkEFQAA4CyCCgAAcBZBBQAAOIugAgAAnEVQAQAAziKoAAAAZxFUAACAswgqAADAWQQVAADgLIIKAABwFkEFAAA4i6ACAACcRVABAADOIqgAAABnEVQAAICzAhpURo8eLY/H47c0atQokCUBAACHVAh0AU2bNtWyZct86xUqBLwkAADgiICnggoVKigmJibQZQAAAAcF/BqVbdu2KS4uTvXq1VO/fv20a9euU/bNzc1Vdna23wIAAH6+AhpU2rVrp5kzZ2rx4sWaOnWqMjIydOWVV+rgwYPF9h87dqwiIiJ8S3x8/HmuGAAAnE8BDSrdu3fXbbfdphYtWqhbt25auHChDhw4oDfffLPY/iNHjlRWVpZv2b1793muGAAAnE8Bv0blRFWrVtVll12m7du3F7vd6/XK6/We56oAAECgBPwalRMdOnRIO3bsUGxsbKBLAQAADghoUHnooYe0atUq7dy5U2vWrNHNN9+soKAg9e3bN5BlAQAARwT01M/XX3+tvn376ocfflB0dLSuuOIKrV27VtHR0YEsCwAAOCKgQWXOnDmBHB4AADjOqWtUAAAATkRQAQAAziKoAAAAZxFUAACAswgqAADAWQQVAADgLIIKAABwFkEFAAA4i6ACAACcRVABAADOIqgAAABnEVQAAICzCCoAAMBZBBUAAOAsggoAAHAWQQUAADiLoAIAAJxFUAEAAM4iqAAAAGcRVAAAgLMIKgAAwFkEFQAA4CyCCgAAcBZBBQAAOIugAgAAnEVQAQAAziKoAAAAZxFUAACAswgqAADAWQQVAADgLIIKAABwFkEFAAA4i6ACAACcRVABAADOIqgAAABnEVQAAICzCCoAAMBZBBUAAOAsggoAAHAWQQUAADiLoAIAAJxFUAEAAM4iqAAAAGcRVAAAgLMIKgAAwFkEFQAA4CyCCgAAcBZBBQAAOMuZoDJu3Dh5PB4NGzYs0KUAAABHOBFU1q9frxdeeEEtWrQIdCkAAMAhAQ8qhw4dUr9+/fTSSy8pMjIy0OUAAACHVAh0AYMGDVJycrK6dOmiMWPGnLZvbm6ucnNzfevZ2dnnurxyl5ubq9TU1CLtSUlJ8nq95bqf4vrk5eVJkkJCQso8NgAA50tAg8qcOXP0ySefaP369SXqP3bsWKWkpJzjqs6t1NRUDZ3yrqrWTPS1HdizQ8/dL3Xo0KFc91Ncn683rVaFStUUU79ZmccGAOB8CVhQ2b17tx544AEtXbpUoaGhJXrMyJEjNWLECN96dna24uPjz1WJ50zVmomKSmx+XvZzcp8De3YoOCKmXMYHAOBcC1hQSU1NVWZmpn7xi1/42vLz87V69WpNmjRJubm5CgoK8nuM1+vlFAUAABeRgAWVzp07Ky0tza/tzjvvVKNGjfSHP/yhSEgBAAAXn4AFlcqVK6tZs2Z+beHh4br00kuLtAMAgItTwG9PBgAAOJWA3558opUrVwa6BAAA4BCOqAAAAGcRVAAAgLMIKgAAwFkEFQAA4CyCCgAAcBZBBQAAOIugAgAAnEVQAQAAziKoAAAAZxFUAACAswgqAADAWQQVAADgLIIKAABwFkEFAAA4i6ACAACcRVABAADOIqgAAABnEVQAAICzCCoAAMBZBBUAAOAsggoAAHAWQQUAADiLoAIAAJxFUAEAAM4iqAAAAGeVKajUq1dPP/zwQ5H2AwcOqF69emddFAAAgFTGoLJz507l5+cXac/NzdWePXvOuigAAABJqlCazu+9957v30uWLFFERIRvPT8/X8uXL1dCQkK5FQcAAC5upQoqN910kyTJ4/Gof//+ftuCg4OVkJCgZ555ptyKAwAAF7dSBZWCggJJUt26dbV+/XpFRUWdk6IAAACkUgaVQhkZGeVdBwAAQBFlCiqStHz5ci1fvlyZmZm+Iy2F/v73v591YQAAAGUKKikpKXriiSfUunVrxcbGyuPxlHddAAAAZQsq06ZN08yZM/Wb3/ymvOsBAADwKdPnqOTl5alDhw7lXQsAAICfMgWVu+++W7Nnzy7vWgAAAPyU6dTPkSNH9OKLL2rZsmVq0aKFgoOD/baPHz++XIoDAAAXtzIFlc2bN+vyyy+XJG3ZssVvGxfWAgCA8lKmoLJixYryrgMAAKCIMl2jAgAAcD6U6YhKp06dTnuK58MPPyxzQQAAAIXKFFQKr08pdPToUW3atElbtmwp8mWFAAAAZVWmoPLss88W2z569GgdOnTorAoCAAAoVK7XqNxxxx18zw8AACg35RpUPv74Y4WGhpbnLgEAwEWsTKd+brnlFr91M9PevXu1YcMG/elPfyqXwgAAAMoUVCIiIvzWL7nkEjVs2FBPPPGErrvuunIpDAAAoExBZcaMGeUy+NSpUzV16lTt3LlTktS0aVM9/vjj6t69e7nsHwAAXNjKFFQKpaam6osvvpB0PGS0atWqVI+vVauWxo0bpwYNGsjM9Morr+jGG2/Uxo0b1bRp07MpDQAA/AyUKahkZmbq9ttv18qVK1W1alVJ0oEDB9SpUyfNmTNH0dHRJdpPr169/Nb/8pe/aOrUqVq7di1BBQAAlO2unyFDhujgwYP67LPP9OOPP+rHH3/Uli1blJ2draFDh5apkPz8fM2ZM0c5OTlq3759mfYBAAB+Xsp0RGXx4sVatmyZGjdu7Gtr0qSJJk+eXOqLadPS0tS+fXsdOXJElSpV0vz589WkSZNi++bm5io3N9e3np2dXZbyy03BsaNKS0vza0tKSpLX6/Wt5+bmKjU11beelpamgoLT7/fkx5xq32eqpyRjFfcc8vLyJEkhISElHhsAgHOhTEGloKBAwcHBRdqDg4NVcKbfjCdp2LChNm3apKysLL311lvq37+/Vq1aVWxYGTt2rFJSUspS8jmR/d0uPb/zsGK+PP69Rwf27NBz90sdOnTw9UlNTdXQKe+qas1ESdLXmz5SZP2k0+735Mecat9nqqckY538mOOPW60Klaoppn6zEo8NAMC5UKagcu211+qBBx7Q66+/rri4OEnSnj17NHz4cHXu3LlU+woJCVH9+vUlHf+rff369Zo4caJeeOGFIn1HjhypESNG+Nazs7MVHx9flqdQbirH1FVUYvPT9qlaM9HX58CeHSXa74mPKWs9JR3r5OdwYM8OBUfElGl8AADKU5mCyqRJk3TDDTcoISHBFxR2796tZs2a6bXXXjurggoKCvxO75zI6/Vy+gEAgItImYJKfHy8PvnkEy1btkxbt26VJDVu3FhdunQp1X5Gjhyp7t27q3bt2jp48KBmz56tlStXasmSJWUpCwAA/MyUKqh8+OGHGjx4sNauXasqVaqoa9eu6tq1qyQpKytLTZs21bRp03TllVeWaH+ZmZn67W9/q7179yoiIkItWrTQkiVLfPsEAAAXt1IFlQkTJmjgwIGqUqVKkW0RERG65557NH78+BIHlenTp5dmeAAAcJEp1eeofPrpp7r++utPuf26664r9rZaAACAsihVUPnuu++KvS25UIUKFfT999+fdVEAAABSKYNKzZo1tWXLllNu37x5s2JjY8+6KAAAAKmU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N97QiBEjNGrUKH3yySdq2bKlunXrpszMzECX5rScnBy1bNlSkydPLnb7U089peeee07Tpk3Tf/7zH4WHh6tbt246cuTIea7UfatWrdKgQYO0du1aLV26VEePHtV1113n98Vyw4cP1z//+U/NnTtXq1at0jfffKNbbrklgFW7qVatWho3bpxSU1O1YcMGXXvttbrxxhv12WefSWIey2L9+vV64YUX1KJFC7925rJ0mjZtqr179/qWf/3rX75tzGUZlMu3C14g2rZta4MGDfKt5+fnW1xcnI0dOzaAVV1YJNn8+fN96wUFBRYTE2NPP/20r+3AgQPm9Xrt9ddfD0CFF5bMzEyTZKtWrTKz43MXHBxsc+fO9fX54osvTJJ9/PHHgSrzghEZGWkvv/wy81gGBw8etAYNGtjSpUvt6quvtgceeMDMeE+W1qhRo6xly5bFbmMuy+aiOaKSl5en1NRUdenSxdd2ySWXqEuXLvr4448DWNmFLSMjQ99++63fvEZERKhdu3bMawlkZWVJkqpVqyZJSk1N1dGjR/3ms1GjRqpduzbzeRr5+fmaM2eOcnJy1L59e+axDAYNGqTk5GS/OZN4T5bFtm3bFBcXp3r16qlfv37atWuXJOayrJz4ZNrzYd++fcrPzy/y0fw1atTQ1q1bA1TVhe/bb7+VpGLntXAbildQUKBhw4apY8eOatasmaTj8xkSElLkyzaZz+KlpaWpffv2OnLkiCpVqqT58+erSZMm2rRpE/NYCnPmzNEnn3yi9evXF9nGe7J02rVrp5kzZ6phw4bau3evUlJSdOWVV2rLli3MZRldNEEFcM2gQYO0ZcsWv/PXKJ2GDRtq06ZNysrK0ltvvaX+/ftr1apVgS7rgrJ792498MADWrp0qUJDQwNdzgWve/fuvn+3aNFC7dq1U506dfTmm28qLCwsgJVduC6aUz9RUVEKCgoqcnX1d999p5iYmABVdeErnDvmtXQGDx6sBQsWaMWKFapVq5avPSYmRnl5eTpw4IBff+azeCEhIapfv76SkpI0duxYtWzZUhMnTmQeSyE1NVWZmZn6xS9+oQoVKqhChQpatWqVnnvuOVWoUEE1atRgLs9C1apVddlll2n79u28L8voogkqISEhSkpK0vLly31tBQUFWr58udq3bx/Ayi5sdevWVUxMjN+8Zmdn6z//+Q/zWgwz0+DBgzV//nx9+OGHqlu3rt/2pKQkBQcH+81nenq6du3axXyWQEFBgXJzc5nHUujcubPS0tK0adMm39K6dWv169fP92/msuwOHTqkHTt2KDY2lvdlWQX6at7zac6cOeb1em3mzJn2+eef2+9//3urWrWqffvtt4EuzWkHDx60jRs32saNG02SjR8/3jZu3GhfffWVmZmNGzfOqlatau+++65t3rzZbrzxRqtbt64dPnw4wJW757777rOIiAhbuXKl7d2717f89NNPvj733nuv1a5d2z788EPbsGGDtW/f3tq3bx/Aqt30yCOP2KpVqywjI8M2b95sjzzyiHk8Hvvggw/MjHk8Gyfe9WPGXJbGgw8+aCtXrrSMjAz797//bV26dLGoqCjLzMw0M+ayLC6qoGJm9vzzz1vt2rUtJCTE2rZta2vXrg10Sc5bsWKFSSqy9O/f38yO36L8pz/9yWrUqGFer9c6d+5s6enpgS3aUcXNoySbMWOGr8/hw4ft/vvvt8jISKtYsaLdfPPNtnfv3sAV7ajf/e53VqdOHQsJCbHo6Gjr3LmzL6SYMY9n4+SgwlyWXJ8+fSw2NtZCQkKsZs2a1qdPH9u+fbtvO3NZeh4zs8AcywEAADi9i+YaFQAAcOEhqAAAAGcRVAAAgLMIKgAAwFkEFQAA4CyCCgAAcBZBBQAAOIugAqBcDRgwQDfddFOgywgoj8ejd955p9SPS09PV0xMjA4ePHjGvp9//rlq1aqlnJycMlQIXDgIKkAAffzxxwoKClJycnLAali5cqU8Hk+RL0o7k507d8rj8WjTpk1+7RMnTtTMmTPLrb5TKWsYKE+jR4/W5ZdfXm77GzlypIYMGaLKlSufsW+TJk30y1/+UuPHjy+38QEXEVSAAJo+fbqGDBmi1atX65tvvgl0OeUiIiJCVatWDXQZF5xdu3ZpwYIFGjBgQIkfc+edd2rq1Kk6duzYuSsMCDCCChAghw4d0htvvKH77rtPycnJRY5CFB7pWL58uVq3bq2KFSuqQ4cOSk9P9/Up/Iv+1VdfVUJCgiIiInT77bf7nTrIzc3V0KFDVb16dYWGhuqKK67Q+vXrJR0/KtKpUydJUmRkpDwej+8X5eLFi3XFFVeoatWquvTSS9WzZ0/t2LHDt9/Cb35u1aqVPB6PrrnmGklFT/2cbvySPs+yePnll9W4cWOFhoaqUaNGmjJlim9b4dGgt99+W506dVLFihXVsmVLffzxx377eOmllxQfH6+KFSvq5ptv1vjx430hbObMmUpJSdGnn34qj8cjj8fj9xru27dPN998sypWrKgGDRrovffeO229b775plq2bKmaNWv62r766iv16tVLkZGRCg8PV9OmTbVw4ULf9q5du+rHH3/UqlWrzmKmAMcF+suGgIvV9OnTrXXr1mZm9s9//tMSExOtoKDAt73wyyDbtWtnK1eutM8++8yuvPJK69Chg6/PqFGjrFKlSnbLLbdYWlqarV692mJiYuzRRx/19Rk6dKjFxcXZwoUL7bPPPrP+/ftbZGSk/fDDD3bs2DGbN2+eSbL09HTbu3evHThwwMzM3nrrLZs3b55t27bNNm7caL169bLmzZtbfn6+mZmtW7fOJNmyZcts79699sMPP5iZWf/+/e3GG28s0fglfZ7FkWTz588vdttrr71msbGxNm/ePPvyyy9t3rx5Vq1aNZs5c6aZmWVkZJgka9SokS1YsMDS09Pt1ltvtTp16tjRo0fNzOxf//qXXXLJJfb0009benq6TZ482apVq2YRERFmZvbTTz/Zgw8+aE2bNi3yLdiSrFatWjZ79mzbtm2bDR061CpVquR7zsW54YYb7N577/VrS05Otq5du9rmzZttx44d9s9//tNWrVrl16ddu3Y2atSo084VcCEjqAAB0qFDB5swYYKZmR09etSioqJsxYoVvu2Fv8CXLVvma3v//fdNkh0+fNjMjgeVihUrWnZ2tq/Pww8/bO3atTMzs0OHDllwcLDNmjXLtz0vL8/i4uLsqaee8htn//79p633+++/N0mWlpZmZv/7Zb9x40a/ficGldKMf7rnWZzTBZXExESbPXu2X9uf//xna9++vV/tL7/8sm/7Z599ZpLsiy++MLPj34KbnJzst49+/fr5gorZ8flv2bJlsbU99thjvvVDhw6ZJFu0aNEpn0/Lli3tiSee8Gtr3ry5jR49+pSPMTO7+eabbcCAAaftA1zIOPUDBEB6errWrVunvn37SpIqVKigPn36aPr06UX6tmjRwvfv2NhYSVJmZqavLSEhwe/iy9jYWN/2HTt26OjRo+rYsaNve3BwsNq2basvvvjitDVu27ZNffv2Vb169VSlShUlJCRIOn4tRUmVZvwzPc+SysnJ0Y4dO3TXXXepUqVKvmXMmDF+p67ONGZ6erratm3r1//k9dM5cd/h4eGqUqXKaZ/P4cOHFRoa6tc2dOhQjRkzRh07dtSoUaO0efPmIo8LCwvTTz/9VOK6gAtNhUAXAFyMpk+frmPHjikuLs7XZmbyer2aNGmSIiIifO3BwcG+f3s8HklSQUFBsdsL+5y4vax69eqlOnXq6KWXXlJcXJwKCgrUrFkz5eXlnfW+i3Om51lShw4dknT8+pJ27dr5bQsKCjonYxantK9LVFSU9u/f79d29913q1u3bnr//ff1wQcfaOzYsXrmmWc0ZMgQX58ff/xRiYmJ5VIz4CKOqADn2bFjx/SPf/xDzzzzjDZt2uRbPv30U8XFxen1118vt7ESExMVEhKif//73762o0ePav369WrSpIkkKSQkRJKUn5/v6/PDDz8oPT1djz32mDp37qzGjRsX+SVa3OPKMn55q1GjhuLi4vTll1+qfv36fkvhBcAl0bBhQ7+LfiUVWQ8JCTnt8y+NVq1a6fPPPy/SHh8fr3vvvVdvv/22HnzwQb300kt+27ds2aJWrVqVSw2AiziiApxnCxYs0P79+3XXXXf5HTmRpN69e2v69Om69957y2Ws8PBw3XfffXr44YdVrVo11a5dW0899ZR++ukn3XXXXZKkOnXqyOPxaMGCBerRo4fCwsIUGRmpSy+9VC+++KJiY2O1a9cuPfLII377rl69usLCwrR48WLVqlVLoaGhRZ5PScY/GxkZGUU+x6VBgwZKSUnR0KFDFRERoeuvv165ubnasGGD9u/frxEjRpRo30OGDNFVV12l8ePHq1evXvrwww+1aNEi35EX6fhpt8IaatWqpcqVK8vr9ZbpuXTr1k1333238vPzfUd+hg0bpu7du+uyyy7T/v37tWLFCjVu3Nj3mJ07d2rPnj3q0qVLmcYELgiBvkgGuNj07NnTevToUey2//znPybJPv3002Ivct24caNJsoyMDDMr/mLOZ5991urUqeNbP3z4sA0ZMsSioqLM6/Vax44dbd26dX6PeeKJJywmJsY8Ho/179/fzMyWLl1qjRs3Nq/Xay1atLCVK1cWuYD1pZdesvj4eLvkkkvs6quvNrOid/2cafySPM/iSCp2+eijj8zMbNasWXb55ZdbSEiIRUZG2lVXXWVvv/22mRV/IfD+/ftNkt8FzS+++KLVrFnTwsLC7KabbrIxY8ZYTEyMb/uRI0esd+/eVrVqVZNkM2bM8NV28oW+ERERvu3FOXr0qMXFxdnixYt9bYMHD7bExETzer0WHR1tv/nNb2zfvn2+7U8++aR169btlPsEfg48ZmbnPx4BwIVn4MCB2rp1qz766KNzsv/Jkyfrvffe05IlS87YNy8vTw0aNNDs2bP9LlYGfm449QMAp/C3v/1NXbt2VXh4uBYtWqRXXnnF74Pjyts999yjAwcO6ODBg2f8GP1du3bp0UcfJaTgZ48jKgBwCr/61a+0cuVKHTx4UPXq1dOQIUPK7fohACVDUAEAAM7i9mQAAOAsggoAAHAWQQUAADiLoAIAAJxFUAEAAM4iqAAAAGcRVAAAgLMIKgAAwFkEFQAA4Kz/ByYKBik1EccGAAAAAElFTkSuQmCC",
"text/plain": [
- "