From a597b5e46f9ed44b2acc10d19bade284541f502b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Thu, 16 Apr 2026 01:40:22 +0300 Subject: [PATCH 01/17] =?UTF-8?q?[1]=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20=D1=81=D0=B2=D1=8F=D0=B7=D0=BD=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BorisovMI/lab_1/docs/data/structures.py | 66 +++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 BorisovMI/lab_1/docs/data/structures.py diff --git a/BorisovMI/lab_1/docs/data/structures.py b/BorisovMI/lab_1/docs/data/structures.py new file mode 100644 index 0000000..2568a2a --- /dev/null +++ b/BorisovMI/lab_1/docs/data/structures.py @@ -0,0 +1,66 @@ +import time +import random +import csv +import os +import matplotlib.pyplot as plt +import numpy as np +import sys + +# Связный список + +def ll_insert(head, name, phone): + + new_node = {'name': name, 'phone': phone, 'next': None} + + if head is None: + return new_node + + if head['name'] == name: + head['phone'] = phone + return head + + current = head + while current['next'] is not None: + if current['next']['name'] == name: + current['next']['phone'] = phone + return head + current = current['next'] + + current['next'] = new_node + return head + +def ll_find(head, name): + + current = head + while current is not None: + if current['name'] == name: + return current['phone'] + current = current['next'] + return None + +def ll_delete(head, name): + + if head is None: + return None + + if head['name'] == name: + return head['next'] + + current = head + while current['next'] is not None: + if current['next']['name'] == name: + current['next'] = current['next']['next'] + return head + current = current['next'] + + return head + +def ll_list_all(head): + + records = [] + current = head + while current is not None: + records.append((current['name'], current['phone'])) + current = current['next'] + records.sort(key=lambda x: x[0]) + return records \ No newline at end of file From 5ed12f966f7eed07ecfd6bc8ee92881c2337a3ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Thu, 16 Apr 2026 01:50:52 +0300 Subject: [PATCH 02/17] =?UTF-8?q?[1]=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D1=85=D1=8D=D1=88=20=D1=82=D0=B0?= =?UTF-8?q?=D0=B1=D0=BB=D0=B8=D1=86=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BorisovMI/lab_1/docs/data/structures.py | 38 +++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/BorisovMI/lab_1/docs/data/structures.py b/BorisovMI/lab_1/docs/data/structures.py index 2568a2a..de369ca 100644 --- a/BorisovMI/lab_1/docs/data/structures.py +++ b/BorisovMI/lab_1/docs/data/structures.py @@ -63,4 +63,42 @@ def ll_list_all(head): records.append((current['name'], current['phone'])) current = current['next'] records.sort(key=lambda x: x[0]) + return records + +# Хэш функции + +def hash_function(name, table_size): + return sum(ord(c) for c in name) % table_size + + +def ht_create(size=1000): + return [None] * size + + +def ht_insert(buckets, name, phone): + size = len(buckets) + index = hash_function(name, size) + buckets[index] = ll_insert(buckets[index], name, phone) + + +def ht_find(buckets, name): + size = len(buckets) + index = hash_function(name, size) + return ll_find(buckets[index], name) + + +def ht_delete(buckets, name): + size = len(buckets) + index = hash_function(name, size) + buckets[index] = ll_delete(buckets[index], name) + + +def ht_list_all(buckets): + records = [] + for bucket in buckets: + current = bucket + while current is not None: + records.append((current['name'], current['phone'])) + current = current['next'] + records.sort(key=lambda x: x[0]) return records \ No newline at end of file From 0f97a32fed32db9f4a18d2496e833cd587337039 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Fri, 17 Apr 2026 20:05:08 +0300 Subject: [PATCH 03/17] =?UTF-8?q?[1]=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D0=B4=D0=B5=D1=80=D0=B5=D0=B2?= =?UTF-8?q?=D0=B0=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BorisovMI/lab_1/docs/data/structures.py | 74 +++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/BorisovMI/lab_1/docs/data/structures.py b/BorisovMI/lab_1/docs/data/structures.py index de369ca..29b6307 100644 --- a/BorisovMI/lab_1/docs/data/structures.py +++ b/BorisovMI/lab_1/docs/data/structures.py @@ -101,4 +101,78 @@ def ht_list_all(buckets): records.append((current['name'], current['phone'])) current = current['next'] records.sort(key=lambda x: x[0]) + return records + +# Функции для дерева поиска + +def bst_insert(root, name, phone): + + if root is None: + return {'name': name, 'phone': phone, 'left': None, 'right': None} + + if name < root['name']: + root['left'] = bst_insert(root['left'], name, phone) + elif name > root['name']: + root['right'] = bst_insert(root['right'], name, phone) + else: + root['phone'] = phone + + return root + + +def bst_find(root, name): + + current = root + while current is not None: + if name == current['name']: + return current['phone'] + elif name < current['name']: + current = current['left'] + else: + current = current['right'] + return None + + +def bst_find_min(node): + + current = node + while current['left'] is not None: + current = current['left'] + return current + + +def bst_delete(root, name): + + if root is None: + return None + + if name < root['name']: + root['left'] = bst_delete(root['left'], name) + elif name > root['name']: + root['right'] = bst_delete(root['right'], name) + else: + if root['left'] is None: + return root['right'] + elif root['right'] is None: + return root['left'] + + min_node = bst_find_min(root['right']) + root['name'] = min_node['name'] + root['phone'] = min_node['phone'] + root['right'] = bst_delete(root['right'], min_node['name']) + + return root + + +def bst_list_all(root): + + records = [] + + def inorder_traversal(node): + if node is not None: + inorder_traversal(node['left']) + records.append((node['name'], node['phone'])) + inorder_traversal(node['right']) + + inorder_traversal(root) return records \ No newline at end of file From 7f1acffb4c40adc70d42e30eb051845717bbe313 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Sun, 19 Apr 2026 16:46:31 +0300 Subject: [PATCH 04/17] =?UTF-8?q?[1]=20=D0=93=D0=B5=D0=BD=D0=B5=D1=80?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2?= =?UTF-8?q?=D1=8B=D1=85=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B8=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BC=D0=B5=D1=80=20=D0=B2=D1=80=D0=B5=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BorisovMI/lab_1/docs/data/structures.py | 113 +++++++++++++++++++++++- 1 file changed, 112 insertions(+), 1 deletion(-) diff --git a/BorisovMI/lab_1/docs/data/structures.py b/BorisovMI/lab_1/docs/data/structures.py index 29b6307..db7981c 100644 --- a/BorisovMI/lab_1/docs/data/structures.py +++ b/BorisovMI/lab_1/docs/data/structures.py @@ -175,4 +175,115 @@ def bst_list_all(root): inorder_traversal(node['right']) inorder_traversal(root) - return records \ No newline at end of file + return records + + # Генерация тесотовых данных + +def generate_records(count=10000): + + records = [] + for i in range(count): + name = f"User_{i:05d}" + phone = f"+7-{random.randint(100,999)}-{random.randint(100,999)}-{random.randint(1000,9999)}" + records.append((name, phone)) + + shuffled = records.copy() + random.shuffle(shuffled) + sorted_records = sorted(records, key=lambda x: x[0]) + + return shuffled, sorted_records + + + +# Замер времени + +def measure_insertion(structure_name, records): + + times = [] + filled_structure = None + + for run in range(5): + if structure_name == "linked_list": + structure = None + elif structure_name == "hash_table": + structure = ht_create(1000) + elif structure_name == "bst": + structure = None + + start = time.perf_counter() + + for name, phone in records: + if structure_name == "linked_list": + structure = ll_insert(structure, name, phone) + elif structure_name == "hash_table": + ht_insert(structure, name, phone) + elif structure_name == "bst": + structure = bst_insert(structure, name, phone) + + end = time.perf_counter() + times.append(end - start) + + if run == 4: + filled_structure = structure + + return times, filled_structure + + +def measure_search(structure_name, structure, search_names): + + times = [] + + for run in range(5): + start = time.perf_counter() + + for name in search_names: + if structure_name == "linked_list": + ll_find(structure, name) + elif structure_name == "hash_table": + ht_find(structure, name) + elif structure_name == "bst": + bst_find(structure, name) + + end = time.perf_counter() + times.append(end - start) + + return times + + +def measure_deletion(structure_name, original_structure, delete_names): + + times = [] + + for run in range(5): + if structure_name == "linked_list": + all_records = ll_list_all(original_structure) + test_structure = None + for name, phone in all_records: + test_structure = ll_insert(test_structure, name, phone) + + elif structure_name == "hash_table": + all_records = ht_list_all(original_structure) + test_structure = ht_create(1000) + for name, phone in all_records: + ht_insert(test_structure, name, phone) + + elif structure_name == "bst": + all_records = bst_list_all(original_structure) + test_structure = None + for name, phone in all_records: + test_structure = bst_insert(test_structure, name, phone) + + start = time.perf_counter() + + for name in delete_names: + if structure_name == "linked_list": + test_structure = ll_delete(test_structure, name) + elif structure_name == "hash_table": + ht_delete(test_structure, name) + elif structure_name == "bst": + test_structure = bst_delete(test_structure, name) + + end = time.perf_counter() + times.append(end - start) + + return times \ No newline at end of file From 38947e917442fcc2ff6569d0835b0f33e8d6d043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Thu, 23 Apr 2026 23:01:03 +0300 Subject: [PATCH 05/17] =?UTF-8?q?[1]=20=D0=97=D0=B0=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=87=D0=B5=D0=BD=D0=BD=D0=B0=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B3?= =?UTF-8?q?=D1=80=D0=B0=D0=BC=D0=BC=D0=B0,=20=D1=82=D0=B0=D0=B1=D0=BB?= =?UTF-8?q?=D0=B8=D1=86=D0=B0,=20=D0=B3=D1=80=D0=B0=D1=84=D0=B8=D0=BA?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BorisovMI/lab_1/docs/data/structures.py | 198 +++++++++++++++++++- BorisovMI/lab_1/docs/experiment_results.csv | 19 ++ BorisovMI/lab_1/docs/performance_graphs.png | Bin 0 -> 119718 bytes 3 files changed, 212 insertions(+), 5 deletions(-) create mode 100644 BorisovMI/lab_1/docs/experiment_results.csv create mode 100644 BorisovMI/lab_1/docs/performance_graphs.png diff --git a/BorisovMI/lab_1/docs/data/structures.py b/BorisovMI/lab_1/docs/data/structures.py index db7981c..ea514c1 100644 --- a/BorisovMI/lab_1/docs/data/structures.py +++ b/BorisovMI/lab_1/docs/data/structures.py @@ -5,7 +5,7 @@ import os import matplotlib.pyplot as plt import numpy as np import sys - +sys.setrecursionlimit(20000) # Связный список def ll_insert(head, name, phone): @@ -177,7 +177,7 @@ def bst_list_all(root): inorder_traversal(root) return records - # Генерация тесотовых данных + # Генерация тестовых данных def generate_records(count=10000): @@ -228,7 +228,6 @@ def measure_insertion(structure_name, records): return times, filled_structure - def measure_search(structure_name, structure, search_names): times = [] @@ -249,7 +248,6 @@ def measure_search(structure_name, structure, search_names): return times - def measure_deletion(structure_name, original_structure, delete_names): times = [] @@ -286,4 +284,194 @@ def measure_deletion(structure_name, original_structure, delete_names): end = time.perf_counter() times.append(end - start) - return times \ No newline at end of file + return times + +# Основная часть + +def run_experiment(): + + current_dir = os.path.dirname(__name__) + docs_dir = os.path.dirname(current_dir) + csv_file = os.path.join(docs_dir, "experiment_results.csv") + + print("=" * 70) + print("ЭКСПЕРИМЕНТАЛЬНОЕ СРАВНЕНИЕ СТРУКТУР ДАННЫХ") + print("Телефонный справочник - 10000 записей") + print("=" * 70) + print(f"\nРезультаты будут сохранены в: {csv_file}") + + print("\n1. Генерация тестовых данных...") + shuffled_records, sorted_records = generate_records(10000) + print(f" Сгенерировано 10000 записей") + + existing_names = [shuffled_records[i][0] for i in random.sample(range(10000), 100)] + nonexisting_names = [f"NotExist_{i}" for i in range(10)] + search_names = existing_names + nonexisting_names + delete_names = [shuffled_records[i][0] for i in random.sample(range(10000), 50)] + + results = [["Структура", "Режим", "Операция", + "Замер1(с)", "Замер2(с)", "Замер3(с)", "Замер4(с)", "Замер5(с)", + "Среднее(с)"]] + + for mode_name, records in [("случайный", shuffled_records), + ("отсортированный", sorted_records)]: + + print(f"\n2. Тестирование режима: {mode_name}") + print("-" * 50) + + for struct_name in ["linked_list", "hash_table", "bst"]: + print(f"\n {struct_name.upper()}:") + + print(" Вставка 10000 записей...") + insert_times, filled_struct = measure_insertion(struct_name, records) + avg_insert = sum(insert_times) / 5 + print(f" Время: {avg_insert:.4f} сек (среднее)") + + print(" Поиск 110 записей...") + search_times = measure_search(struct_name, filled_struct, search_names) + avg_search = sum(search_times) / 5 + print(f" Время: {avg_search:.4f} сек (среднее)") + + print(" Удаление 50 записей...") + delete_times = measure_deletion(struct_name, filled_struct, delete_names) + avg_delete = sum(delete_times) / 5 + print(f" Время: {avg_delete:.4f} сек (среднее)") + + results.append([struct_name, mode_name, "вставка"] + insert_times + [avg_insert]) + results.append([struct_name, mode_name, "поиск"] + search_times + [avg_search]) + results.append([struct_name, mode_name, "удаление"] + delete_times + [avg_delete]) + + print("\n3. Сохранение результатов...") + with open(csv_file, "w", newline="", encoding="utf-8") as f: + writer = csv.writer(f) + writer.writerows(results) + print(f" Результаты сохранены в: {csv_file}") + + print("\n" + "=" * 70) + print("СВОДНАЯ ТАБЛИЦА РЕЗУЛЬТАТОВ") + print("=" * 70) + print(f"{'Структура':<15} {'Режим':<12} {'Операция':<10} {'Среднее время (сек)':<20}") + print("-" * 70) + + for row in results[1:]: + struct, mode, op, t1, t2, t3, t4, t5, avg = row + print(f"{struct:<15} {mode:<12} {op:<10} {avg:<20.6f}") + + return results, docs_dir + +# Графики + +def create_graphs(results, docs_dir): + + print("\n4. Построение графиков...") + + data = {} + for row in results[1:]: + struct = row[0] + mode = row[1] + op = row[2] + avg = row[8] + + if struct not in data: + data[struct] = {} + if mode not in data[struct]: + data[struct][mode] = {} + data[struct][mode][op] = avg + + + struct_labels = { + 'linked_list': 'LinkedList', + 'hash_table': 'HashTable', + 'bst': 'BST' + } + + + colors = { + 'linked_list': '#3498db', + 'hash_table': '#2ecc71', + 'bst': '#e74c3c' + } + + + fig, axes = plt.subplots(1, 3, figsize=(15, 6)) + fig.suptitle('Сравнение производительности структур данных', fontsize=16, fontweight='bold') + + operations = ['вставка', 'поиск', 'удаление'] + operation_titles = ['Вставка\n(10000 записей)', 'Поиск\n(110 запросов)', 'Удаление\n(50 записей)'] + modes = ['случайный', 'отсортированный'] + mode_labels = ['Случайный', 'Отсортированный'] + + for idx, (op, op_title) in enumerate(zip(operations, operation_titles)): + ax = axes[idx] + + # Позиции для групп столбцов + x = np.arange(len(modes)) # [0, 1] + width = 0.25 # ширина одного столбца + multiplier = 0 + + for struct in ['linked_list', 'hash_table', 'bst']: + values = [data[struct][mode][op] for mode in modes] + offset = width * multiplier + bars = ax.bar(x + offset, values, width, + label=struct_labels[struct], + color=colors[struct], + edgecolor='black', linewidth=0.5) + + + for bar, val in zip(bars, values): + if val < 0.01: + ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + val*0.05, + f'{val:.5f}', ha='center', va='bottom', fontsize=8, rotation=0) + else: + ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + val*0.02, + f'{val:.4f}', ha='center', va='bottom', fontsize=8, rotation=0) + + multiplier += 1 + + + ax.set_title(op_title, fontsize=12, fontweight='bold') + ax.set_ylabel('Время (секунды)', fontsize=10) + ax.set_xlabel('Режим данных', fontsize=10) + ax.set_xticks(x + width) + ax.set_xticklabels(mode_labels) + ax.legend(loc='upper left', fontsize=8) + ax.grid(True, alpha=0.3, axis='y') + + + all_values = [data[s][m][op] for s in ['linked_list', 'hash_table', 'bst'] for m in modes] + if max(all_values) / min(all_values) > 100: + ax.set_yscale('log') + ax.set_ylabel('Время (секунды) - логарифмическая шкала', fontsize=9) + + plt.tight_layout() + graph_path = os.path.join(docs_dir, "performance_graphs.png") + plt.savefig(graph_path, dpi=150, bbox_inches='tight') + plt.close() + print(f" Графики сохранены в: {graph_path}") + + return graph_path + + + +if __name__ == "__main__": + + results, docs_dir = run_experiment() + + + try: + graph_file = create_graphs(results, docs_dir) + + print("\n" + "=" * 70) + print("ЭКСПЕРИМЕНТ ЗАВЕРШЕН УСПЕШНО!") + print("=" * 70) + print("\nСОЗДАННЫЕ ФАЙЛЫ:") + print(f" Данные: {os.path.join(docs_dir, 'experiment_results.csv')}") + print(f" Графики: {graph_file}") + + except Exception as e: + print(f"\nОшибка при построении графиков: {e}") + print(" Убедитесь, что установлен matplotlib: pip install matplotlib") + print("\n" + "=" * 70) + print("ЭКСПЕРИМЕНТ ЗАВЕРШЕН (без графиков)") + print("=" * 70) + print(f"\nCSV файл сохранен: {os.path.join(docs_dir, 'experiment_results.csv')}") \ No newline at end of file diff --git a/BorisovMI/lab_1/docs/experiment_results.csv b/BorisovMI/lab_1/docs/experiment_results.csv new file mode 100644 index 0000000..b3a472b --- /dev/null +++ b/BorisovMI/lab_1/docs/experiment_results.csv @@ -0,0 +1,19 @@ +Структура,Режим,Операция,Замер1(с),Замер2(с),Замер3(с),Замер4(с),Замер5(с),Среднее(с) +linked_list,случайный,вставка,11.072574299992993,12.38099840003997,12.155311000009533,12.81002289999742,13.201067199988756,12.323994760005736 +linked_list,случайный,поиск,0.1209169999929145,0.13400630000978708,0.1302103999769315,0.12179599999217317,0.13267739996081218,0.12792141998652368 +linked_list,случайный,удаление,0.05278969998471439,0.05019940005149692,0.05289009999250993,0.0488043999648653,0.061356800026260316,0.05320808000396937 +hash_table,случайный,вставка,0.694432099990081,0.7192347000236623,0.7134853000170551,0.6891152000171132,0.6973775000078604,0.7027289600111544 +hash_table,случайный,поиск,0.006584499962627888,0.004749000014271587,0.004359900020062923,0.006477299961261451,0.006112299975939095,0.005656599986832589 +hash_table,случайный,удаление,0.004070399969350547,0.004140400036703795,0.003542299964465201,0.0032371999695897102,0.0030583000043407083,0.0036097199888899924 +bst,случайный,вставка,0.08137199998600408,0.08989329996984452,0.08159760001581162,0.07841239997651428,0.1001471999916248,0.08628449998795987 +bst,случайный,поиск,0.0006561999907717109,0.00043180002830922604,0.00042429997120052576,0.0004227000172249973,0.00043509999522939324,0.0004740200005471706 +bst,случайный,удаление,0.19723930000327528,0.166880399978254,0.147482400003355,0.18100009998306632,0.16498840000713244,0.1715181199950166 +linked_list,отсортированный,вставка,12.294058899977244,11.597062399960123,11.59195000003092,11.623520500026643,11.401553199975751,11.701628999994137 +linked_list,отсортированный,поиск,0.10066379996715114,0.0991929000010714,0.09696789999725297,0.09909789997618645,0.09873830003198236,0.09893215999472886 +linked_list,отсортированный,удаление,0.05669830000260845,0.048193000024184585,0.05076910002389923,0.04920080001465976,0.05905079998774454,0.05278240001061931 +hash_table,отсортированный,вставка,0.5518350999918766,0.5407364999991842,0.5291212999727577,0.5373308000271209,0.529426000022795,0.5376899400027468 +hash_table,отсортированный,поиск,0.005108800018206239,0.004848999960813671,0.004103399987798184,0.0038874000310897827,0.005848900007549673,0.00475950000109151 +hash_table,отсортированный,удаление,0.0037329999613575637,0.003185699984896928,0.0028516000020317733,0.0030229000258259475,0.0037879000301472843,0.003316220000851899 +bst,отсортированный,вставка,32.23637629998848,33.77348939998774,33.518200399994384,33.78866110002855,33.55791890004184,33.3749292200082 +bst,отсортированный,поиск,0.1479294000309892,0.1305704999831505,0.13548930000979453,0.1314462999580428,0.130273999995552,0.1351418999955058 +bst,отсортированный,удаление,0.1574716999894008,0.16461069998331368,0.15460990002611652,0.15385339997010306,0.15677610004786402,0.15746436000335962 diff --git a/BorisovMI/lab_1/docs/performance_graphs.png b/BorisovMI/lab_1/docs/performance_graphs.png new file mode 100644 index 0000000000000000000000000000000000000000..8cfee3f281de849e62fd145c96d1423b08f7a1d3 GIT binary patch literal 119718 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 XCZxr@*Al4nHJBznGx30L#F~EqFAt}g literal 0 HcmV?d00001 From e38b44c9c7777b871f73b2831a8f74c48cddfb87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Sun, 10 May 2026 18:26:05 +0300 Subject: [PATCH 06/17] =?UTF-8?q?[1]=20=D0=9E=D1=82=D1=87=D1=91=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BorisovMI/lab_1/docs/report.md | 73 ++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 BorisovMI/lab_1/docs/report.md diff --git a/BorisovMI/lab_1/docs/report.md b/BorisovMI/lab_1/docs/report.md new file mode 100644 index 0000000..5ab8071 --- /dev/null +++ b/BorisovMI/lab_1/docs/report.md @@ -0,0 +1,73 @@ +# Отчёт: Задание 1 — Структуры данных + +## Цель работы + +Реализовать три структуры данных «с нуля» в процедурной парадигме (без классов), применить их для хранения записей телефонного справочника и экспериментально сравнить производительность основных операций. + +## Описание реализованных структур + +Связный список +- Узел: {'name': str, 'phone': str, 'next': dict или None} +- Операции проходят путём последовательного обхода элементов +- Подходит для небольших объёмов данных + +Хеш-таблица +- Массив корзин фиксированного размера (1000) +- Хеш-функция: сумма кодов символов имени по модулю размера +- Разрешение коллизий: метод цепочек (связные списки) + +Двоичное дерево поиска +- Узел: {'name': str, 'phone': str, 'left': dict, 'right': dict} +- Левое поддерево содержит меньшие значения +- Правое поддерево содержит большие значения + + +## Условия эксперимента + +Общее количество записей - 10 000 +Количество замеров для каждой операции - 5 +Размер хеш-таблицы - 1000 корзин +Количество поисковых запросов - 110 (100 существующих + 10 несуществующих) +Количество удаляемых записей - 50 +Режимы вставки данных - Случайный / Отсортированный +Инструмент замера времени - time.perf_counter() + + +## Результаты + +### Таблица средних времён (секунды) + +| Структура | Режим | Вставка (с) | Поиск 110 (с) | Удаление 50 (с) | +|---|---|---|---|---| +| LinkedList | случайный | 12.32399 | 0.1279214 | 0.053208 | +| LinkedList | сортированный | 11.701628 | 0.0989321 | 0.052782 | +| HashTable | случайный | 0.7027289 | 0.0056565 | 0.0036097 | +| HashTable | сортированный | 0.5376899 | 0.0047595 | 0.003316 | +| BST | случайный | 0.08628449 | 0.000474 | 0.1715181 | +| BST | сортированный | 33.374929 | 0.1351418 | 0.1574643 | + +### Графики + +![Сравнение по операциям](data/perfomance_graphs.png) + +## Анализ результатов + +### Связный список + +Вставка в список занимает ~2.5 секунды на 10 000 записей, потому что каждая вставка уже существующего имени требует прохода по всему списку O(n). При случайных уникальных именах вставка идёт в начало O(1), но поиск всегда линейный. + +### Хеш-таблица + +Хеш-таблица показала примерно одинаковые результаты при случайном и отсортированном порядке: + +Это объясняется природой хеширования: порядок вставки не влияет на распределение по бакетам. Ключ всегда попадает в предсказуемый бакет за O(1). + +### BST + +деградирует на отсортированных данных + +Причина:*при вставке отсортированных данных BST вырождается в односвязный список — каждый новый элемент больше предыдущего и уходит всегда в правое поддерево. Высота дерева становится O(n) вместо O(log n). Поиск и удаление тоже деградируют до O(n). + +## Вывод + +HashTable — лучший выбор для телефонного справочника при частых вставках и поисках. BST лучше HashTable только если нужен отсортированный вывод без дополнительной сортировки — но при условии случайного порядка вставки или использования самобалансирующегося дерева (AVL, Red-Black). From e2912c5b530e14efbe50a2e321265047e2d35c0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Sun, 10 May 2026 18:28:55 +0300 Subject: [PATCH 07/17] =?UTF-8?q?[1]=20=D0=9E=D1=82=D1=87=D1=91=D1=82=20(?= =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=B3=D1=80=D0=B0=D1=84=D0=B8=D0=BA=D0=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BorisovMI/lab_1/docs/report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BorisovMI/lab_1/docs/report.md b/BorisovMI/lab_1/docs/report.md index 5ab8071..58d688b 100644 --- a/BorisovMI/lab_1/docs/report.md +++ b/BorisovMI/lab_1/docs/report.md @@ -48,7 +48,7 @@ ### Графики -![Сравнение по операциям](data/perfomance_graphs.png) +![Сравнение по операциям](perfomance_graphs.png) ## Анализ результатов From 666638009e8378174d60bbb7c7d4a855848229f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Sun, 10 May 2026 18:30:32 +0300 Subject: [PATCH 08/17] =?UTF-8?q?[1]=20=D0=9E=D1=82=D1=87=D1=91=D1=82=20(?= =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=B3=D1=80=D0=B0=D1=84=D0=B8=D0=BA=D0=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BorisovMI/lab_1/docs/report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BorisovMI/lab_1/docs/report.md b/BorisovMI/lab_1/docs/report.md index 58d688b..ee21dec 100644 --- a/BorisovMI/lab_1/docs/report.md +++ b/BorisovMI/lab_1/docs/report.md @@ -48,7 +48,7 @@ ### Графики -![Сравнение по операциям](perfomance_graphs.png) +![Сравнение по операциям](performance_graphs.png) ## Анализ результатов From 47404cfa9db552cbe77edb96620323d59bba6480 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Tue, 19 May 2026 21:46:18 +0300 Subject: [PATCH 09/17] =?UTF-8?q?[2]=20=D0=9A=D0=BB=D0=B0=D1=81=D1=81?= =?UTF-8?q?=D1=8B=20cell=20=D0=B8=20maze=20+=20=D0=BC=D0=B0=D0=BB.=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D0=B8=D1=80=D0=B8=D0=BD=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BorisovMI/lab_2/docs/data/maze.py | 68 ++++++++++++++++++++++++ BorisovMI/lab_2/docs/data/maze_small.txt | 10 ++++ 2 files changed, 78 insertions(+) create mode 100644 BorisovMI/lab_2/docs/data/maze.py create mode 100644 BorisovMI/lab_2/docs/data/maze_small.txt diff --git a/BorisovMI/lab_2/docs/data/maze.py b/BorisovMI/lab_2/docs/data/maze.py new file mode 100644 index 0000000..aabd9ad --- /dev/null +++ b/BorisovMI/lab_2/docs/data/maze.py @@ -0,0 +1,68 @@ +from abc import ABC, abstractclassmethod +from collections import deque +import heapq +import time +import os +import time +import csv +import random +class Cell: + def __init__(self, x, y): + self.x = x + self.y = y + self.isWall = False + self.isStart = False + self.isExit = False + + + def __eq__(self, other): + if other is None: + return False + return self.x == other.x and self.y == other.y + def __lt__(self, other): + + if other is None: + return False + return (self.x, self.y) < (other.x, other.y) + def __hash__(self): + + return hash((self.x, self.y)) + + def __repr__(self): + return f"Cell({self.x}, {self.y})" + def isPassable(self): + return not self.isWall + +class Maze: + def __init__(self, width, height): + self.width = width + self.height = height + self.grid = [[Cell(x, y) for y in range(height)] for x in range(width)] + self.start = None + self.exit = None + + def getCell(self, x, y): + if 0 <= x < self.width and 0 <= y < self.height: + return self.grid[x][y] + return None + + def getNeighbors(self, cell): + neighbors = [] + directions = [(0, 1), (0, -1), (1, 0), (-1, 0)] + for dx, dy in directions: + neighbor = self.getCell(cell.x + dx, cell.y + dy) + if neighbor and neighbor.isPassable(): + neighbors.append(neighbor) + return neighbors + + def setStart(self, x, y): + cell = self.getCell(x, y) + if cell: + cell.isStart = True + self.start = cell + + def setExit(self, x, y): + cell = self.getCell(x, y) + if cell: + cell.isExit = True + self.exit = cell \ No newline at end of file diff --git a/BorisovMI/lab_2/docs/data/maze_small.txt b/BorisovMI/lab_2/docs/data/maze_small.txt new file mode 100644 index 0000000..49f58c6 --- /dev/null +++ b/BorisovMI/lab_2/docs/data/maze_small.txt @@ -0,0 +1,10 @@ +s + + # # # + # ## + # ## +## ## + # ## + # + # + e From 4422dcb9e742ee4f5f91f5715c4ca430d4dc0c3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Tue, 19 May 2026 22:26:42 +0300 Subject: [PATCH 10/17] [2] mazebuilder --- BorisovMI/lab_2/docs/data/maze.py | 56 ++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/BorisovMI/lab_2/docs/data/maze.py b/BorisovMI/lab_2/docs/data/maze.py index aabd9ad..9d91122 100644 --- a/BorisovMI/lab_2/docs/data/maze.py +++ b/BorisovMI/lab_2/docs/data/maze.py @@ -65,4 +65,58 @@ class Maze: cell = self.getCell(x, y) if cell: cell.isExit = True - self.exit = cell \ No newline at end of file + self.exit = cell + +class MazeBuilder(ABC): + + def buildFromFile(self, filename): + pass + +class TextileMazeBuilder(MazeBuilder): + def buildFromFile(self, filename): + with open(filename, 'r', encoding='utf-8') as f: + lines = f.readlines() + + + lines = [line.rstrip('\n\r') for line in lines] + + height = len(lines) + width = len(lines[0]) if height > 0 else 0 + + + for line in lines: + if len(line) != width: + raise ValueError("все строки одинаковой длины") + + + maze = Maze(width, height) + + + for y in range(height): + for x in range(width): + char = lines[y][x] + cell = maze.getCell(x, y) + + if char == '#': + cell.isWall = True + elif char == ' ': + cell.isWall = False + elif char == 's': + cell.isWall = False + cell.isStart = True + maze.start = cell + elif char == 'e': + cell.isWall = False + cell.isExit = True + maze.exit = cell + else: + raise ValueError(f"неизв сим") + + + if maze.start is None: + raise ValueError("в лабиринте не найден старт") + if maze.exit is None: + raise ValueError("в лабиринте не найден выход") + + return maze + From 047c2baf6dfab3e7a6ebe7f74b4f57957f1078ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Wed, 20 May 2026 23:41:33 +0300 Subject: [PATCH 11/17] =?UTF-8?q?[2]=20=D0=A1=D1=82=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=B3=D0=B8=D0=B8=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BF=D1=83=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BorisovMI/lab_2/docs/data/maze.py | 111 ++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/BorisovMI/lab_2/docs/data/maze.py b/BorisovMI/lab_2/docs/data/maze.py index 9d91122..b3173a7 100644 --- a/BorisovMI/lab_2/docs/data/maze.py +++ b/BorisovMI/lab_2/docs/data/maze.py @@ -120,3 +120,114 @@ class TextileMazeBuilder(MazeBuilder): return maze +class PathFindingStrategy: + def findPath(self, maze, start, exit): + pass + + +class BFSStrategy(PathFindingStrategy): + def findPath(self, maze, start, exit): + if exit is None: + return [] + queue = deque([start]) + visited = {start} + parent = {start: None} + + while queue: + current = queue.popleft() + + if current == exit: + return self._reconstruct_path(parent, start, exit) + + for neighbor in maze.getNeighbors(current): + if neighbor not in visited: + visited.add(neighbor) + parent[neighbor] = current + queue.append(neighbor) + + return [] + + def _reconstruct_path(self, parent, start, exit): + path = [] + current = exit + while current is not None: + path.append(current) + current = parent[current] + path.reverse() + return path + + +class DFSStrategy(PathFindingStrategy): + def findPath(self, maze, start, exit): + if exit is None: + return [] + stack = [start] + visited = {start} + parent = {start: None} + + while stack: + current = stack.pop() + + if current == exit: + return self._reconstruct_path(parent, start, exit) + + for neighbor in maze.getNeighbors(current): + if neighbor not in visited: + visited.add(neighbor) + parent[neighbor] = current + stack.append(neighbor) + + return [] + + def _reconstruct_path(self, parent, start, exit): + path = [] + current = exit + while current is not None: + path.append(current) + current = parent[current] + path.reverse() + return path + + +class AStrategy(PathFindingStrategy): + def _heuristic(self, cell, exit): + if exit is None: + return 0 + return abs(cell.x - exit.x) + abs(cell.y - exit.y) + + def findPath(self, maze, start, exit): + if exit is None: + return [] + open_set = [] + heapq.heappush(open_set, (0, start)) + + came_from = {start: None} + g_score = {start: 0} + + while open_set: + current = heapq.heappop(open_set)[1] + + if current == exit: + return self._reconstruct_path(came_from, start, exit) + + for neighbor in maze.getNeighbors(current): + tentative_g = g_score[current] + 1 + + if neighbor not in g_score or tentative_g < g_score[neighbor]: + came_from[neighbor] = current + g_score[neighbor] = tentative_g + f_score = tentative_g + self._heuristic(neighbor, exit) + heapq.heappush(open_set, (f_score, neighbor)) + + return [] + + def _reconstruct_path(self, came_from, start, exit): + path = [] + current = exit + while current is not None: + path.append(current) + current = came_from[current] + path.reverse() + return path + + From 098ccd7af13857e6c568524c5c365011d95731a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Thu, 21 May 2026 00:41:30 +0300 Subject: [PATCH 12/17] [2] MazeSolver --- BorisovMI/lab_2/docs/data/maze.py | 37 +++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/BorisovMI/lab_2/docs/data/maze.py b/BorisovMI/lab_2/docs/data/maze.py index b3173a7..abe4624 100644 --- a/BorisovMI/lab_2/docs/data/maze.py +++ b/BorisovMI/lab_2/docs/data/maze.py @@ -231,3 +231,40 @@ class AStrategy(PathFindingStrategy): return path +class SearchStats: + def __init__(self, time_ms=0, visited_cells=0, path_length=0): + self.time_ms = time_ms + self.visited_cells = visited_cells + self.path_length = path_length + + def __str__(self): + return f"Время: {self.time_ms:.3f} мс | Посещено: {self.visited_cells} | Длина пути: {self.path_length}" + + +class MazeSolver: + def __init__(self, maze): + self.maze = maze + self.strategy = None + + def setStrategy(self, strategy): + self.strategy = strategy + + def solve(self): + if self.strategy is None: + raise ValueError("Стратегия не установлена") + + + start_time = time.perf_counter() + path = self.strategy.findPath(self.maze, self.maze.start, self.maze.exit) + + end_time = time.perf_counter() + elapsed_ms = (end_time - start_time) * 1000 + + + stats = SearchStats( + time_ms=elapsed_ms, + visited_cells=len(path), + path_length=len(path) + ) + + return path, stats From 062a96a0b4f7fd1c1c8e56fca66d84a60ecc3941 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Fri, 22 May 2026 22:40:41 +0300 Subject: [PATCH 13/17] =?UTF-8?q?[2]=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BD=D0=B0=D0=B1=D0=BB=D1=8E=D0=B4?= =?UTF-8?q?=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=20=D0=B8=20=D0=BA=D0=BE=D0=BC?= =?UTF-8?q?=D0=B0=D0=BD=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BorisovMI/lab_2/docs/data/maze.py | 189 ++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) diff --git a/BorisovMI/lab_2/docs/data/maze.py b/BorisovMI/lab_2/docs/data/maze.py index abe4624..cec87ec 100644 --- a/BorisovMI/lab_2/docs/data/maze.py +++ b/BorisovMI/lab_2/docs/data/maze.py @@ -268,3 +268,192 @@ class MazeSolver: ) return path, stats + +class Observer: + def update(self, event): + pass + +class ConsoleView(Observer): + def render(self, maze, player_position=None, path=None): + """отрисовка""" + os.system('cls' if os.name == 'nt' else 'clear') + + path_set = set(path) if path else set() + + for y in range(maze.height): + for x in range(maze.width): + cell = maze.getCell(x, y) + + if player_position and cell == player_position: + print('P', end='') + elif cell == maze.start: + print('S', end='') + elif cell == maze.exit: + print('E', end='') + elif cell in path_set: + print('.', end='') + elif cell.isWall: + print('#', end='') + else: + print(' ', end='') + print() + + def update(self, event): + if event['type'] == 'path_found': + print(f"длина пути {len(event['path'])}") + self.render(event['maze'], path=event['path']) + elif event['type'] == 'move': + print(f"шаг {event['step']}") + self.render(event['maze'], event['player'], event['path']) + elif event['type'] == 'maze_loaded': + print("перегрузка") + self.render(event['maze']) + + +class ObservableMazeSolver: + def __init__(self, maze): + self.maze = maze + self.strategy = None + self.observers = [] + + def attach(self, observer): + self.observers.append(observer) + + def notify(self, event): + for observer in self.observers: + observer.update(event) + + def setStrategy(self, strategy): + self.strategy = strategy + + def solve(self): + if self.strategy is None: + raise ValueError("") + + + path = self.strategy.findPath(self.maze, self.maze.start, self.maze.exit) + + self.notify({ + 'type': 'path_found', + 'maze': self.maze, + 'path': path + }) + + return path + +class Player: + def __init__(self, start_cell): + self.currentCell = start_cell + self.previousCell = None + + def moveTo(self, cell): + self.previousCell = self.currentCell + self.currentCell = cell + + def undoMove(self): + if self.previousCell: + self.currentCell, self.previousCell = self.previousCell, None + return True + return False + + +class Command: + def execute(self): + pass + + def undo(self): + pass + +class MoveCommand(Command): + def __init__(self, player, direction, maze): + self.player = player + self.dx, self.dy = direction + self.maze = maze + self.executed = False + + def execute(self): + new_x = self.player.currentCell.x + self.dx + new_y = self.player.currentCell.y + self.dy + new_cell = self.maze.getCell(new_x, new_y) + + if new_cell and new_cell.isPassable(): + self.player.moveTo(new_cell) + self.executed = True + return True + return False + + def undo(self): + if self.executed: + self.player.undoMove() + self.executed = False + return True + return False + +def clear_console(): + os.system('cls' if os.name == 'nt' else 'clear') + +def render_maze_with_player(maze, player, path=None): + path_set = set(path) if path else set() + + for y in range(maze.height): + for x in range(maze.width): + cell = maze.getCell(x, y) + + if cell == player.currentCell: + print('P', end='') + elif cell == maze.start: + print('S', end='') + elif cell == maze.exit: + print('E', end='') + elif cell in path_set: + print('.', end='') + elif cell.isWall: + print('#', end='') + else: + print(' ', end='') + print() + + +def run_game(maze, path=None): + player = Player(maze.start) + history = [] + + directions = { + 'w': (0, -1), + 's': (0, 1), + 'a': (-1, 0), + 'd': (1, 0) + } + + print(" W/A/S/D - движение, U - отмена, Q - выход") + if path: + print(f"мин путь {len(path)} шагов") + + while True: + print() + render_maze_with_player(maze, player, path) + + if player.currentCell == maze.exit: + print("\n*** выход ***") + break + + key = input("\n> ").lower() + + if key == 'q': + print("выход из игры") + break + elif key == 'u': + if history: + cmd = history.pop() + cmd.undo() + print("отмена хода") + else: + print("нет ходов") + elif key in directions: + cmd = MoveCommand(player, directions[key], maze) + if cmd.execute(): + history.append(cmd) + else: + print("стена") + else: + print("неизвестно") From 4427e6d0a148c9d935b250762eaa643a6e564859 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Sat, 23 May 2026 23:02:53 +0300 Subject: [PATCH 14/17] =?UTF-8?q?[2]=20=D0=93=D0=B5=D0=BD=D0=B5=D1=80?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BB=D0=B0=D0=B1=D0=B8=D1=80=D0=B8?= =?UTF-8?q?=D0=BD=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BorisovMI/lab_2/docs/data/maze.py | 84 +++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/BorisovMI/lab_2/docs/data/maze.py b/BorisovMI/lab_2/docs/data/maze.py index cec87ec..0f4223c 100644 --- a/BorisovMI/lab_2/docs/data/maze.py +++ b/BorisovMI/lab_2/docs/data/maze.py @@ -457,3 +457,87 @@ def run_game(maze, path=None): print("стена") else: print("неизвестно") + +def generate_empty_maze(width, height): + + maze = Maze(width, height) + for x in range(width): + for y in range(height): + maze.getCell(x, y).isWall = False + maze.setStart(0, 0) + maze.setExit(width-1, height-1) + return maze + +def generate_maze_with_walls(width, height, wall_probability=0.3): + + maze = Maze(width, height) + for x in range(width): + for y in range(height): + if random.random() < wall_probability: + maze.getCell(x, y).isWall = True + else: + maze.getCell(x, y).isWall = False + + + maze.getCell(0, 0).isWall = False + maze.getCell(width-1, height-1).isWall = False + + maze.setStart(0, 0) + maze.setExit(width-1, height-1) + return maze + +def generate_maze_no_exit(width, height): + + maze = generate_maze_with_walls(width, height, 0.3) + + exit_cell = maze.getCell(width-1, height-1) + exit_cell.isWall = True + maze.exit = None + return maze + +def save_maze_to_file(maze, filename): + + with open(filename, 'w') as f: + for y in range(maze.height): + for x in range(maze.width): + cell = maze.getCell(x, y) + if cell == maze.start: + f.write('s') + elif cell == maze.exit: + f.write('e') + elif cell.isWall: + f.write('#') + else: + f.write(' ') + f.write('\n') + +def create_test_mazes(): + + mazes = [] + + + small = generate_maze_with_walls(10, 10, 0.2) + save_maze_to_file(small, "maze_small.txt") + mazes.append(('маленький (10x10)', small)) + + + medium = generate_maze_with_walls(50, 50, 0.3) + save_maze_to_file(medium, "maze_medium.txt") + mazes.append(('средний (50x50)', medium)) + + + large = generate_maze_with_walls(100, 100, 0.3) + save_maze_to_file(large, "maze_large.txt") + mazes.append(('большой (100x100)', large)) + + + empty = generate_empty_maze(50, 50) + save_maze_to_file(empty, "maze_empty.txt") + mazes.append(('пустой (50x50)', empty)) + + + no_exit = generate_maze_no_exit(20, 20) + save_maze_to_file(no_exit, "maze_no_exit.txt") + mazes.append(('без выхода (20x20)', no_exit)) + + return mazes \ No newline at end of file From edbd5e15b8be0fc58ee86e326d6c147aea535789 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Mon, 25 May 2026 01:59:20 +0300 Subject: [PATCH 15/17] =?UTF-8?q?[2]=20=D0=97=D0=B0=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=87=D0=B5=D0=BD=D0=BD=D0=B0=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B3?= =?UTF-8?q?=D1=80=D0=B0=D0=BC=D0=BC=D0=B0=20+=20=D0=9E=D1=82=D1=87=D1=91?= =?UTF-8?q?=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BorisovMI/lab_2/docs/data/maze.py | 184 ++++++++++++- BorisovMI/lab_2/docs/data/maze_empty.txt | 50 ++++ BorisovMI/lab_2/docs/data/maze_large.txt | 100 +++++++ BorisovMI/lab_2/docs/data/maze_medium.txt | 50 ++++ BorisovMI/lab_2/docs/data/maze_no_exit.txt | 20 ++ .../lab_2/docs/data/maze_path_length.png | Bin 0 -> 103854 bytes BorisovMI/lab_2/docs/data/maze_small.txt | 18 +- .../lab_2/docs/data/maze_time_comparison.png | Bin 0 -> 105107 bytes BorisovMI/lab_2/docs/data/report2.md | 252 ++++++++++++++++++ BorisovMI/lab_2/docs/data/resultslab.csv | 16 ++ 10 files changed, 680 insertions(+), 10 deletions(-) create mode 100644 BorisovMI/lab_2/docs/data/maze_empty.txt create mode 100644 BorisovMI/lab_2/docs/data/maze_large.txt create mode 100644 BorisovMI/lab_2/docs/data/maze_medium.txt create mode 100644 BorisovMI/lab_2/docs/data/maze_no_exit.txt create mode 100644 BorisovMI/lab_2/docs/data/maze_path_length.png create mode 100644 BorisovMI/lab_2/docs/data/maze_time_comparison.png create mode 100644 BorisovMI/lab_2/docs/data/report2.md create mode 100644 BorisovMI/lab_2/docs/data/resultslab.csv diff --git a/BorisovMI/lab_2/docs/data/maze.py b/BorisovMI/lab_2/docs/data/maze.py index 0f4223c..46ad99e 100644 --- a/BorisovMI/lab_2/docs/data/maze.py +++ b/BorisovMI/lab_2/docs/data/maze.py @@ -540,4 +540,186 @@ def create_test_mazes(): save_maze_to_file(no_exit, "maze_no_exit.txt") mazes.append(('без выхода (20x20)', no_exit)) - return mazes \ No newline at end of file + return mazes + +def run_experiment(maze, strategy, name, repeats=5): + + times = [] + visited_counts = [] + path_lengths = [] + + for _ in range(repeats): + solver = MazeSolver(maze) + solver.setStrategy(strategy()) + + start_time = time.perf_counter() + path, stats = solver.solve() + end_time = time.perf_counter() + + times.append((end_time - start_time) * 1000) + visited_counts.append(len(path) if path else 0) + path_lengths.append(len(path) if path else 0) + + return { + 'лабиринт': name, + 'стратегия': strategy.__name__.replace('Strategy', ''), + 'время_ср': sum(times) / repeats, + 'время_мин': min(times), + 'время_макс': max(times), + 'посещено_ср': sum(visited_counts) / repeats, + 'длина_пути_ср': sum(path_lengths) / repeats, + 'путь_найден': path is not None and len(path) > 0 + } + + +def run_all_experiments(): + + strategies = [BFSStrategy, DFSStrategy, AStrategy] + results = [] + + + mazes = create_test_mazes() + + for maze_name, maze in mazes: + + + for strategy in strategies: + print(f" тест {strategy.__name__}...", end=" ", flush=True) + result = run_experiment(maze, strategy, maze_name) + results.append(result) + print(f"время={result['время_ср']:.2f}мс, путь={result['длина_пути_ср']:.0f}") + + + save_results_to_csv(results) + + return results + +def save_results_to_csv(results): + + filename = "resultslab.csv" + + with open(filename, 'w', newline='', encoding='utf-8-sig') as f: + writer = csv.DictWriter(f, fieldnames=[ + 'лабиринт', 'стратегия', 'время_ср', 'время_мин', 'время_макс', + 'посещено_ср', 'длина_пути_ср', 'путь_найден' + ]) + writer.writeheader() + writer.writerows(results) + + + + +def plot_results(results): + try: + import matplotlib.pyplot as plt + import numpy as np + + labyrinths = list(set(r['лабиринт'] for r in results)) + strategies = ['BFS', 'DFS', 'A'] + + + n_rows = 3 + n_cols = 2 + fig, axes = plt.subplots(n_rows, n_cols, figsize=(14, 12)) + axes = axes.flatten() + + for idx, lab in enumerate(labyrinths): + ax = axes[idx] + + times = [] + for strat in strategies: + for r in results: + if r['лабиринт'] == lab and r['стратегия'] == strat: + times.append(r['время_ср']) + break + + x = np.arange(len(strategies)) + bars = ax.bar(x, times, color=['#1a5632', '#0e5fb4', '#051f45']) + ax.set_title(f'{lab}') + ax.set_xticks(x) + ax.set_xticklabels(strategies) + ax.set_ylabel('Время (мс)') + + for bar, t in zip(bars, times): + ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.5, + f'{t:.1f}', ha='center', va='bottom', fontsize=8) + + + if len(labyrinths) < len(axes): + axes[-1].set_visible(False) + + plt.tight_layout() + plt.savefig('maze_time_comparison.png', dpi=150) + plt.show() + + + + + plt.figure(figsize=(10, 6)) + + colors = ['#d8d262', '#0e5fb4', '#ed254e'] + + for idx, strat in enumerate(strategies): + lengths = [] + for lab in labyrinths: + for r in results: + if r['лабиринт'] == lab and r['стратегия'] == strat: + lengths.append(r['длина_пути_ср']) + break + + plt.plot(labyrinths, lengths, marker='o', label=strat, color=colors[idx]) # добавьте color + + + + plt.xlabel('Лабиринт') + plt.ylabel('Длина пути ') + plt.title('Сравнение длины найденного пути') + plt.legend() + plt.xticks(rotation=45) + plt.tight_layout() + plt.savefig('maze_path_length.png', dpi=150) + plt.show() + + except ImportError: + print("") + + +def print_analysis(results): + + + + strat_data = {} + for r in results: + strat = r['стратегия'] + if strat not in strat_data: + strat_data[strat] = {'time': [], 'visited': [], 'labyrinth': []} + strat_data[strat]['time'].append(r['время_ср']) + strat_data[strat]['visited'].append(r['посещено_ср']) + strat_data[strat]['labyrinth'].append(r['лабиринт']) + + + + for strat, data in strat_data.items(): + avg_time = sum(data['time']) / len(data['time']) + print(f" {strat}: среднее время {avg_time:.2f} мс") + + + print(" BFS медленный на большом лабсамый короткий путить находит") + print(" DFS быстрый, но не всегда самый короткий") + print(" A быстрый и находит самый короткий путь") + print(" без выхода лаб. стратегии самые медленные ") + print(" в пустом стратегии самые быстрые") + + +if __name__ == "__main__": + + results = run_all_experiments() + + + print_analysis(results) + + + try: + plot_results(results) + except: + print("") \ No newline at end of file diff --git a/BorisovMI/lab_2/docs/data/maze_empty.txt b/BorisovMI/lab_2/docs/data/maze_empty.txt new file mode 100644 index 0000000..d500666 --- /dev/null +++ b/BorisovMI/lab_2/docs/data/maze_empty.txt @@ -0,0 +1,50 @@ +s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + e diff --git a/BorisovMI/lab_2/docs/data/maze_large.txt b/BorisovMI/lab_2/docs/data/maze_large.txt new file mode 100644 index 0000000..2247202 --- /dev/null +++ b/BorisovMI/lab_2/docs/data/maze_large.txt @@ -0,0 +1,100 @@ +s## # # # # # # # ### # ## # # # # # # ### # # # # # ### +# ## # ## ### ## # # ## ## # # # ### ## ## # +# ## # # # # # ## ## # # # ## # ## # # # # ## # # # # +## # # # ##### # # # # # ## # ## # # # # # # # # # # # # # + # ### ## # # # # ## ## ## # # # # # ## # + # # # # # # ## # ### ## ## # ##### # # # # # ### ## # ### # # # +# # # ## ### # # # # # ### # # # ## ##### # # + # # ### # # ## ### # # # # # ## # ## ## # ## # ## ## # # + # # # ## # # # # ## # # # # # # # # # # # ### ## # # # + # # # # # ## # # # # # ## ## ### ###### ## ## ### # + ## ## # # # # # # ### # # # ### # ## # +# # ###### # # # ## # # # ## # # # ## #### # # # + ## # # # ### # # # # # #### # # # ## # # # # + # # # # ### ## ## # # # ## # # # # # ### # # # ### # # #### # ## +# ## # # # # # # # # # # # # # # ## ### ## # # ## # + ### # # # # ## ### # # ## # # # ## # ## # ## # + ### # # # # ### # # # # # ## # # # # # ## # # ## # +# # # # ## # # ### # ## ## # ### # # ### ## # + ### ## # ## # ## # # # # # # # # # # # ####### ## + ## ## # # # # ## # # # ## ### ### # # # ### # # # # ## # ### + ### #### ### # # # # ## ## # #### # # # # # # ## # # + ### # ## ## # ## ## ## # # # ## # # ## # ## # # + # # # # # # # #### ## # # #### ## # ## ## # # # + # ## # ## # # # # ### # ## # ## # # ## # # # ## # # #### # # + # # ## # # # # # # # # # ## ## # # # ### # # + # # # # # # ## # # # ### # ## # # # # ## # # # # # # + # # # ### # # # # # ## ## # # ## # # ## # # # +## ## ### # # ## # # # # # # # # # # # # # ## ## # # # # + # # # # # # ## # # # # # # # ## + # # # # # # ## # ## # ## # # # ## ## ## ## ### # # # # # # +# # # # # # # #### # ## # # # # ## ## # # # ## # # +## # # # # # # # ###### # # ### # # ## # # # # ### ## + # # ## # # # # #### # #### # # # ## ## ## # +# # # # # # # ## # # # # # ### ### # # # # # # # + # # # # ## # # # # # ## # ## # # ## # ## ### # # + #### # # # # ## # # # # # ## ### # # # # ### # ## # + # # # # ## ## # # # # # # # # # # # # # # # ## ## # # ## + # # # # # # ## # # # ## ## # # # # # # ## # +# # ## ## ### ## # # ## # # # ## # # # # # # # # # + ## ## # # # # # # ## ### # # # ## # # ## # ### # ### ## +## ## # # # # # # # # # ## # # ## # ### # # # # + ## # # ## ## ## # # ## # # ## # # # # ## # # +## # ## # ## ## # # # # # # # # # # ### # # # # # ## # # +# ## ## # # # # # #### ## # # # # # # # # # +# # # # # # # # ## # # # # # ### # # # # #### ## ### #### + # ## # # #### # # # # #### # # # # # ### # # ### # ## ## + ## # ## # ## # # # # # # ### # # # # # ## # # # + # # # # ## # # # ### #### ## # # # # ## ## ## # + ## # ## # ## # # # # ## # # # # # # # # # # # ## # + # # ## # # # ### # ## # ## # # ### # # # # ### # + # # ## # ## #### # # # # # # # ## ## # ## ### + # ## # # ## ## # # ## # # # ### # ## # # # # # # # # + # # ## # # ## # # # # # # # # # # # ## # ### ## +# ## # # # # # # # ## # # ## ## ## # # ## ## # # ## ### ### #### + ### # # # # # # # ## # # # ## # ## # # # ## # # ## # # # # + # # # # # # # # ## ## ### # # # # # # ## # # # # +# # # # ## # ### # # # # ## # # # ### # ## ## # # # ## + # # # # # ## # ## # # # ### # ## ## # # # # # # # # + ## ### ## # # # # ## # # # #### # #### # # ## # ## # +## ## ## # # # # ## # # ## ## ### # # # # # ### # ### ## + # # ### # # # # # # # # # ## # ### # # # ### ## ## +# # ## # ## # ## ## # # # ## ## # ## # # ## + # # ### # ## ## # # ### # # # # # # ## ## # ## + # # #### # # # # # # # ### # # # # # # ## # ### # # ### ### + # # ## # # ##### # ## # # ## ## # # # ## # # # ## ## +# ### # ## # # ###### ### # ## # ## # # ## # # # # ## ## # ## # + # # # # # # # # ## ## # # # ## # # ## ## # # # # # + ## # ## ## # ### # # # # # # # # ## # # # # # ###### # ## + ## # # # # ### # # ### ## # # ## # # # # ##### # + # # ### # # # # # # ## #### # # ### # # # ## # ## + # # ## ## # ## # #### # ## # # # # # ## ## # # # # ## ## # +## # # # # ## # # ## # # # ## # # ## # # # # # # + # # # ## # # # # ## # ## # # # # # ## # # ## +# ## ## # # # # # # ### # ## # # # # # # # # # + # # ## # # # # # # # ##### ## ## ### # # ### + # # # # # # ## ## ## # # # # # # ## # ##### # ## +# # ## # # # ## # # #### # ## # # # # # ## # # # + # # # # # ## ## # ## # # # # # #### # ## + ## # # # # ## # ## ## ## # # ## # # # ## # ## # # # + ## # # # # # # # ## ### # # # ## # # ## # +### # ## # # # ## ## # ### # # # # # ### # # # ##### # + ## # # ## # ## # # # # # ## # # # ## ####### ### # # + #### # # # # # # # # # # ## # ## # # ### # ## # # # +# # # # # # # # # # ## # # ## # # # # ## # ### # # + # # # # #### ## ## # # # # ## # # # # # # ### ### # ## + #### # ## # # # ### ## # ## ## # ## # # ## # # + # # ## # # # # # # # # ## # # ## # # ### # ## + # # # # ## ## # # ## # # # # ## # ## ## + ### ## # # # ## ## ## ## # # # ## ## # # # # # # # # # ## # # # + ## # # # # # # # # # # ## #### # # ## ### ### ## # # # + # # ##### # # # ## ## # # ## ## # # ## # #### ##### # # ## ## +# # # # # # ## # # # # # # # # # # ## # +## ### # # ## ## # ## ## ## # # ## # # ### # # ## ### # + # # # ## # ## # # # ## # # # # ## # # # # + # # # # # #### # # # ## # # # ## # # # # # # # # # # +# # # ## # # ## # # ### # # ## # # ## # # ## + # # # ## # # ### # # # # # ## ## ## +# # # # ### # # # # # # # # # # # ## ## # ### # ## # # # # + # ###### # # ## ## ## # ### # # # ## # # # ##### + # ## # # # # ## # # # # # # # # #### # # e diff --git a/BorisovMI/lab_2/docs/data/maze_medium.txt b/BorisovMI/lab_2/docs/data/maze_medium.txt new file mode 100644 index 0000000..f677674 --- /dev/null +++ b/BorisovMI/lab_2/docs/data/maze_medium.txt @@ -0,0 +1,50 @@ +s # ## # # ### # ## # # # + ## # # ## ## # # # # +# # ## # # # # ## + ### # # # # # # ## ## # ## # # + # # # ## # # # # ## # # +# # # # ## # ## # # # + ## # # # # # # # ## # # +# ## # # # ## # ## # # # # # + ## # # # # ## # # ## # ## + # # # # # ## # # ## # # # + # # # # ## # # # # ## # ## # # +# ## # # # # # # # ## ## + ## # ## ### # # # ## # ## +##### ### # # # # ## # # # # + # # ### ## # ## ## #### ### + ## # # # # ### # # ## # # +# # ## # # # # # # ## + ## # # # ### # ## # # ## # # ## ## + # #### # # # # # ### # ## + # ## # ## # # ## ### ## ### # + # # ### ## # # # ## + # # ## # # # # # # # + # ## # ### #### # ## # ### ## # # + # # ## # # # # # # # + # # ##### # # # # # # # ## # ## + ## # # # # ## ## # ## ## # + # # # # # # # ## # # # + ## # # # ## # # ## # # + # ### # # # # # # # # # ### + ### # # # # # ### # # # # # ## +# # # # # ## # # # # # ## +# ## ## ## # # # # # # ## # + # #### # # # ## # ## # + ## # # # # ## # # # # # +## # ## ## # # # ## # # ## # +# # # # # # # # # # ### # # # +# # ## # # # # # ### +# # #### ## + # # ## # # ## ### # # ## +##### # # # # # # # # # # +## # # # # # # + # # ## ## # # # # ## ### # # +# # ### ## ### ### # ## # # + ## # ### # ## # # # # + # # # # # ## # # # # # +# # ## # # ## ### # # # # + # # # # # ## # ### # + ## # # ## # # # +# # ## # ### # ### # ## # ## # ## + # # # # # # # ## # # e diff --git a/BorisovMI/lab_2/docs/data/maze_no_exit.txt b/BorisovMI/lab_2/docs/data/maze_no_exit.txt new file mode 100644 index 0000000..3e2f752 --- /dev/null +++ b/BorisovMI/lab_2/docs/data/maze_no_exit.txt @@ -0,0 +1,20 @@ +s ## ### +# # # # # ## + # # # # # + # # ## + # # # # # +# # ### # # + # # # # # +# # ## ## ### + # ## # + # # ### + # # # # # + ### # # + # # # # + ## # # # # + ## # # # # ## + # # # + # # + # # # # + # # # + # # # # ## # diff --git a/BorisovMI/lab_2/docs/data/maze_path_length.png b/BorisovMI/lab_2/docs/data/maze_path_length.png new file mode 100644 index 0000000000000000000000000000000000000000..5d3d01da34903f0a9e865aaeebc00f93ff2b6ffb GIT binary patch literal 103854 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○Seqd}9WgC;C%b0E<&_qZ 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 z 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 z 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%0DBT%S0q(Veh9}mWOD4#k*(&MNp zqMjIO*80t}8}j|}!5pA<{WE;^@WO9_{mzeut?6_X$}OWfB!&F`mDJj9zOri*n)tLG zy~Ms=SiT{KmY)uwp@$0ZJhAs$h-40AX_fchziGSI-Coy{ts4jhQ18)dzM>|D@t z!ty8?u_Qa+|Fld&2s490yaPXQ(C%#;nmbl_ymKa5yrcG*4LU_TpNOj_SoOM=WO`wFZ1PKN}ttMOhA{0Cv*zu5p zLvrN^0pmuS>taffO^{z_f+;*v@Ql}kekCIfZBHEfQ1Z0Q(#HZEhsZf^Pxy8+Zl=_r zPT(ItK$q7%abOgk6+knEZsl9TtcG6PlSfV9)W^=ahgVsQFKGmU5Rfa8p1)eg=6jOZ zkxgYmuKJNh$98JsJ*k$IYN*DMRsssB=m*kNQ-?x7@{`%fNQL}U89UI_YL{IRtOuqm z!tSaZswaY*#U_onZX7jsYq^)#4@T?V#2hd;F%nziHPS(cE)aQ4=UViX1tCdOJHJTK zU5B^{@YtA6+(uICcI6HP#AAM#2QoGpo1;FVjC23PE>7q&@-exiiEf8nD@&+r-x{-P zF5Oo8qvTMtQhyiX3%_ek4`%IDv+H}3q+=V(=VH-}>q(Z7+s zB_1DM*<(tRSTM4O(qI!9)TcbF$uyw9Hk*w5fl-bK8x{$P@R3^Kfv$3h!DnGl#-b=# z15%2q79$DSK)bIY&7Qgx6tBKbwHB*&P%S0sga%u9#P05}0Uz*plS>ZJz*E$98<;od zKOy!bG>EI(yHutd3cCgy#OOAhxMWFq1o`n^ogqYzWcM_p6G1QGyeTyEb8rXFpcq`L zBEm}pm7+4p0+!nryIYqzg`LxB4^8RRmSs3lia5g()L|){#K_5o>1{J=%Tw$>l}^DG z6fYc=uCgEr)fvCpkA7VE5Ta@PbI-G5xOlM=%SSZB2g?0go+eIXp%E!|JVq4m99AkOTr1=M`pEb8=Y7~(N2;B>{-W)cM{AbmjVf^bf^tcOb78kNd2ai z56PHNtagZJKE)wuWInY)rLROU5XPk0St&?LWC^AzeaRwNVHqN6e`nPgMQI&r3_KS8 zke-~3qDf~m67z&PlPXNqU8CfW{YPG_OtjEqYup#_H#!vuP7iw-TV9rN_(amX&Le{c89H+)N<%!KNgV?j_wdIGvy;5@ zc7S*8n>bSHIZn3^dyhVyi(`uO4)TGVMlnOvO&^SIHqHiFBvJu#r zjyAe7pWZ~se9p1mm~50Q`c^=w~9@7|Ie6 zN{I*#8WE^Nk4Q>1kGzKRMC=qDn?`5JMTk?bbvPJ3XC^(WpN)2{4|AYI(qAX4m^L7f z@@+x3$ins%Yf}0b7T4N90&k%wNAoIZDCZHk%(JP$X-1%$m^f%M-;vdd?6^aCcd|-o zh7qSE^W?MRw}l*)V3nywr}F}c@?@4%Y6N4t5o@3chlCrVsT&E+?2RdjFJluw4!6^% ziY)&8={EGd@I*sk+)Glb+L0bR)xC{HWjQxOgs807bQ&(XCTKK>X%C8+^hG*Dz#)aM z=h9^Yj$mi9UYyfVS9e9ikticyywTNFll)m|!FUWhpa&#$xBxL9IIx}fi}?RH*w=-f zr-|MgR)>HtK83CHS*1U&oa7%x)BThT`Gly6Wz(X8)?5ws8# zWU-+j?&-9^2BD`#O)Y;a!p(oxp`GbF^WbfyvlZzO8QzgXcvjBT^AV9oXUGwoEr4SJ z>9IK$=;57d24H0f?JU??g=c5zTG@-s@ROsb=n_c}r;`gYJU&AHM{=ss*|}(nH0Z2f zvc#qLe}gR?w;!7H9vVsp&M>Se>M7$Jp+uQp3L0eX4Bny7{x|ht!}6D;^Q6pPFrGQ&h_4f?RX$Z_gT(yi*RXO+K*z+0g|?XUzWxGdh>p(QvZ1*^O5F4`HIvT zsCL)+)8M@JKW_V9zxo7iToj=}^updmxzJHecZ-hfI*eISonO27cmNEgigPLIw&v$>FML5NO zl?8303Oeox*Fv-6Ql3LEsFGsOr9I=33P9{`b*ycTIw4rH)PKyCgU8#@K+qA_Sj@cA zaqzR$qa{DNgx44y0_}(xx>UJ&8~!JK{pJQFPce@61v7v?9a- z`TbY<&lRZ&kd*33V!R`_a6DHZ!s-Bp27sG5(UF?uyC_`@nv!nyAi_F_2sgq{SoXt0 zE9X)hwx$27Yjf{uMDIznQ8eA33VWSA4&tPA)&qoHj?vgd^$B#lKi-?W-NU?xNeAo^ zFG^F(M3ifQ`5VRH>~>UFCu;g5#L+tVulnV`E}WkTX6iJNm~kpbP5JkW1h1j2Hn|fK zk?Q~Xne*seobI)aMa?@M6hdqjhV{()Q?vw)1@PL{Rde^}V=%PxGPH~Y94X1$SVy;f z=HqG4JOQ=oSU^D8;G546b@b_12KHpJN2ZM=p@GOR*z!Yw@2$YlYbZ5?8F9m)UpzP# zvJ&EK2p;hT&JL#|B6ARHNJbsBO25lA8ExjB-hkFpe9V+cCyd5kgRWr>ACd+TEFFPhNK}Sl~%+T@M3`uY})<&I*iR^_M+a% z8@{Zp@~x5aIzoDHvS_FjI7%IsU^G$xtzIe`nP7JVJ8HoUS{bwfhjwwF2l-y3juH?E zj2NZs@<+2qkiE_`|1ocsYHhX35Ip2B!X52X^)9B}e!59IHdbZra) z@JxwlDAVim=>#ScXffQ>f+niZQ5Ez`FcbQdMYk!r%ILfn>`lXeY~>w%NDG6mGHFls z2EVCO6eOgpBAkqdMmyo7W)&B1{s98_D6Yro_rDtP$~sSzhp80Q7L$`lhBA*oxQg%hgk$jrrGs-^w{&?U%LbD8=sDJv5@zjge zCp|q4oSdAlbm4>IbraNI*55l=CVc4T&yRiO*}ctgT`7e|HSF_;GpCCRs8%BgEI7KrK?~5>m4DF#i6eemXwsN z+=+mxL#NsR>g23K=ySVk%(Y7{I8E|7+>PorVuyxqWvOdwq9wRXzNkiY^0@ORDD$_r zXoMbMBYsjaW7d6!=X?>mG;Di?@E?P*c;S~zGuC2|;m700k5dqhp7egtpKC3nELm$*kDv7@_;6d9#-QgLghb>RH@^Sj@^y^EPy zb@up3XF3wT9ZCw8tPV55G_iM9!Qe8#43lM;W_s_Ro@2;%{qFAWcwA*;s&W16B5*(3 zMMV!n;;7wuf<8#7;-BtQQMxoS)g(t9n#0wosHkj@K?7DD(o>G-Ta$#OBu8NDPoNP; zxV!LKY^I>R>z~IB3 zyAOGlxDpwMz}fNQ#yr`_M|Y6y)qtKi5qiMD!vH=A#D}3jG!%Ke$;-?4RGtEszlA^& zmX_87ORNtssMOe^FTOayj)Ct~pcymlfkQ(>W5}@sVB(UE?%mACnHnq%d9b6Sqv3FO zIPr0O+yHbxO-WbVU3233vk&yKyhfnzIZA?b*O3&nhE#NXfo*w^}f=nCU@6AO@ z!!Jg!w{7_P9u^*_z8~u7=m=jd2oq=mdy7UzXQu@?=HPr~Sy=Z@d&Ug%u8a)s;p8<~F4yfopO^b0+m z(Nk(6-{>7Z8dnh_vds@x;;zk`Ho5m!tu=daMyB2b{9yPpfn9Mjj!jR?%G5v`96oU1 zmmh!n2^&l79FB9aX+9hD|s%)$B zZ|E>YdVVybuAgdjXwfo(XSf22bvi_@vtu)F^%oDTecp?l4HTn)K7QN}Ka1hxORE}h z?&JF~)N&Y)R1c>M=-t@!C4hk=a*Iu|K;`4d`(UT611i$L`NLOtElSMSh?_n`m+n6H z=8!V@wtVvxA1+71{mt))?OWI;!1P)>ckbj@K9jv{z0z%5t!;#*t!)w{a7Uo2dCJ~-U-x}I?(6#fasST8JO-U-pYyZ4-^cqn zUa!~jdfzJcy5?QgR68=rH$!ou+@r1b9htUs5ZH-A0fT@a*ZuzcD{|GTmtBIPo=*7r zb&#J3kw!cKh?!lulmuK&tzXcYY--Tz%Z$?#06Hd&zt{JUZjfg`a@45TXdli_wUJM% zJ^V^mD~Pe9T<`)We960a@u|fxUmgXJyp@t-fd=C2@ZaU5Ue}KF&h~)}-gXdq4^rg? z6c`P^`%X-#C4SjnTso}sLvi@nx+6D~BX{cD83Ukic4<%Sl%S_IcBlC8l>^8=iMu7o zR9iQG)-64>qcu7M2Ttu{mt+Z|qF)|vfA3mDT)cSAG}5;BO8f}bax@?yplw|2jT^Tz zGAalEqI$&IL5qyzHWQm6-28}K`6S7a#c`@WLBHO9e)amjMC*8;WThN3Y_4H0>C0Wl z`?Xk=ws+_Se!YquNQyf`{_T7BCf2K0Pe@>p)#gH+%$hapgK=$WTC`-T;8QaMy!O`{b#!8*7Cr9%R=<({ z`JWp%IPUNNWX}NA{kf2w=4_JkvNwDEbg{FulN^G~%WTo2AQ7(6Q1}bgg*gcR1IU_1 z=_TdmVGrB2X>*G5G{^mo>Ps_wsrS7ypF3~cVC~h%vs6FZq&6*CFXcXT-N}KNCi5(fkLU~dbmp=cESs^d=A1@r7G$H>S?O$7_8^4vM+ z-Je-8Vz$+dhH2U=j7&}KVlq#uhk|ukdC&e%YWvo$yD6MpU1Lr!s~tAu5PmMYM#JIG zefv&92h6vRS^4frZt|hijIvvaiQ~B?(k&FEt|edU*IT=>;e2kD1jN$3tIu#m}EVZ!=^~uh)o;~UG{#}q zRdes*_G>K!|eG%(D zZ^@EgiiJ<3qht`1O9yi10O%9f8}dZcq5x~|I(rpQ?3!nB|T%cirIHrLRwz584>SQ`FVmnm&(N6a#yZBU04 z-~T-sz*yx0UtirMXD26fH#fImZ>kQhZF5Ul2$B`IFT+v(Md01=TkUt({&S`?Gh&ji z?IlZQ^xo+W)^<#gjijuN7RmcwO*+M?f|#HEvNJAf+D|r*dTE>3r&Z&MwyJE{?@Z?} z?;rN7H+jdwgN}tis17{xA9cyn$nWbYliKh5kG{X|9n~NI!Rh_~=52L{jT<+@<)1=X z)465KmXl7Jk0csha>^NdFn!b3t!c zbu0t?;L%@`=R^z+Idtey;|6Q_k2Gz2-bK}zP~FihEhgUen%!MbZz77l`^eg5$^n5) zCArxX6B9#3Idb>zU7OR*Tem(5TxpM_)@kWdGcvcF=g$vA%A7(Ty=n92JALEq`wCAe zb3eo;;s}^ge0sVS%ko6@3F@s{`Mg}_TKHJY)6bS+o40G%bI6bwo6`nss#eM#J}4>D&}c~~di`&{aRBG~LVkNfTlqpQO-*}5D%5+4B|hBaHhQyvU+v++*92a6Q`K6vXLMz< z+>&luS|c%x+M%gC<;>8cqN3brdfx&lYb133_Sr(nj=R!B96IjZlhkFmtoA2ks5F$v;3je|rjZEjMdtU6WN6 z{h6)!d9cAn#OJDt(t)c=j@j7SJ|Kl1)PBf-0aJJsN(O^`V9w^hzsu~Q8P_b-lkyl$ z-jp}}!}j0I`7qUg2y5EY7ex&pX$&zowv`}!()@T|nsM8{tXl**h}X4S9rHR4z30qw zt1zcf>+yd7lAth1oOWzN_r@dL*e&|{CpMUPI(D}D$fN}M% z?p9@}-vVHR+Q2MrJ)3hQJw1K4yS;q?BV$E!!QWqhCF{kX&9rxK9tDXsv-jML8D?>~I_@E#ZJzN7%E<47{%H|5mCqw9}N+qU$~ja0`rd!9OEB_2@m zM$k1~3$rfwzy1+#=n>+6uDz>=wK*%{WD!ztMi%?!wWxXhCfd6t!&eM+%KjsEjfFe# zSfjbRDF>cCn+X!k5~`OTH)QFvp}WtvHFmR9rZPR+zElP9hg*RUt*9g$e*e7{nZk-s zWeXfOsG_ykgGbij1#SMWl~Zm0vGlT+mzv@}YO-A~r&3G&$#S&jbGemm%o^hnGhl_` zj5Ljmj6jbbWEPQPptk7NvE#657Z$}oc(pw@13kDQ#Gq!89p$kl^}L==?DoTl;uQW#5Gmm3YZYaw|>@0nh#cspl3;d}1PaqRW`6iSSKj+xp^ zmMn3pO<`xx1RI`uY57SMc#ef;b>}h2>8sc@Sne|7gahoN0#DKwbepfkUa>&R@BtvZM{RaH__NQuZp5N|gy zvh#My?IJE-w67@1+1pN>*%<0mfBNaCG7^gd2%}VRi4a(f+mAb{-kjNo0xEX5x3{-I z{~(%yzij+zYRsCbo;DZ#$dX=h_uNpBJ4H?AkfNjB(z?&6`1p7!rv-olYXCknBkN7> z8<&)1O6HSB+?+&JzxYX{HM=T`KjZR`Z)b%$W(^!N0XB?+Wi1G(?Yi~rUvp1R1gJ)& zmr*OG(Y?pR)XwNeM@K7bskrc6#V;-n5oiG(Z6V5QLEyQP4m=|Qkrl*1bYA)5{HM(- zG&c1qG4gxcDdy{jy&Upfl#4yuf77s!%U_u@0HeX`k4ty;w3U+UyvqPNZ?%V--^eC; z@-oZ3L+SI)_w9DFRsl}9PH@;;RCURsE=o*rP(_KEdjYp-@vD=h@)Lk*m&)-P1Ez zI(O_Rn3(L;l*%0GSl?|c$nKwZglXU&H~W%zT})<`4r5?=dwloZce&B2si~E%Tc{4! zFE)wo6;&_wuH5|>1w?M;G4Pvx8GOa!teL8J&va@ibl;bkS0c&Qmw)i*!?yqKZOPSY zU)w2D=Jst9tWlfu^;`Rw`I)@`pC0Hx`JVstw%o;kx&8l}Z%gdd*|U$J$2f&t>=u|8 zb;6%4{A6azyfB6$eewgqe=U-dl1^El^B1h()vH%M@{XN2QGoo;LMqJHuTPQ81W@)% z9ufO)*sx(J$@fXzBnsbp^vIelQNVwo&3A+18q0mCeO=h}TLblJBv}#>(L;tjd^kmX z&QDE`xGeraK0!IkuhqJ?On$EWk8NkN$B$mw;T9AqZR z=MO(DO)jo$ewPyzFzJ6Z;p{EOKoT;j^3KmoXdyK&%E1Rn-;VCwsa{c0(XCUb7YCo# z*3_zdc&4AEe=Ps@G`A~{)o;||R#sM4rr^MW)Y7#w$;`}bs{{Pbc&?N5@o0;lHrn5O z^NsUU*bYHGgQuJw4lL94_O`75sPRXzpa~ztrWeXM*T2&(wME}c!a~-0;?*mA(&usFmX!MR#Dw+= zadmaFaiF1O?1TwcKxlo`yNm%GIfqOm1bHmFgv87>)m5u}2dy#>2?;@honfpoLrG-< zZPP*ViJ(W*T?53K8T_*e=+QKzc*q@qLpH4LMDBmy|-6)_lGcc3qW# zT{+b@NJDLA6MrMyu{*VAoqd{^sC)fl)%5N|wt2q1*@TC#P~wAinsqC0K-@p4x4Q~f z$myxAdI?d(3bT;;B^gV^XFwa-5^ZZc<5T2a3&>k0Z&s0RY6Yxd>f@L#%DKH;g%VZF8r*To$SsqVtfw!3{wgN!3Z0pObf9MB=K_iUG)sS z#?O?4wrkf;dF4S3)$PvA+&7!1L9)p@BVm!Jn_BMQvu_UewQ~bApHXjFC(lB=GYvBnOshKav z3d@4!^JH2v)t>@GX2cvk{J)@=c5dJ9hjo5-{zt3{cCr8bVo7GG369ERtS!Mf1))aB zk|-q&XhN__ds$Cp+Fip1XCt-b2z zTzCn8BWe*+MRMYKPqI|iv)7B;SIJ}2^wE)ht}0EITAs-fEHE-i8MVA+gi}s-aq*#9 ztAF|BckcR8^3?fLWw}X#@I602u?1sfY1=?3?pA#iGh)A6*^GfuOSnLYgL zKD{~XWe6372{jGbynuC15_Z^*t`jCqprc?a9w8x&(ftdyQesU$Jw2F)Wczn7Vr3P` z%*>SSPR6qdWXie|aKl<%yN*+u9vE;K5^2ij*n|Y{T6|9X7s`n;8k-A5phGLG4B{{K z-T2#Q8-7|X)+R5l0;$}gTYOfvJGZ7#(=?x;4o*|}r;!$w@} zYC3(w6r+D!Ii>9N=FIDNi*qgyC^`iG`x?EfZ3H~K39 zZwtSYPeWar{Cb459ij@?iph6Ww{hsip~Gs|jVm6zcklLx43p+&iI~Kh?p?cfb=aUn zA)~hmDuf)IeaPLi<^lKhjKAag(&tqM( ztv-!%Pjv>*21EJo+dOK{R@k#%4jV+mOVl^3D+g4cQCrlsev{h2ss4W@_rLXRA@Sv< zeS35M$+6oi#@)=`uixeA&ifW~tzHia?Pc3N-Qif=469FDyu))7v<)xbesXmEn?a|V z+dNbK9!i;swWnXdoAJo}{x!R=#@nv{srkIkpN%G@q|8q0Zv1J&qX?@Vw%wK}8nm`} zIj^sOOOwdD-`!Go=Nc-byxX2~-FbE9c0FC|ldH7tdw0pYIO&err3-Jyt;$NX==rpE z5n~B%QhR&Myc##SZkxY)xtY7 z%oj$^E$(3yemk_g?YIVOeZxl7eZFDi+9S>kG~b~)BJ}KGV#b|i#S^Hh7dm{Z3v|Fdln-TKsn@pXog-+eNw@%r)rc}APTiD#CJ!WP7 zP+JdqeRZw+nEd9zzW6j!QK3h|lpfB2a^ju)#^Q?{>(Tw+L_2=O%pQQzMYn|gO+tsRP)RxBl^(0^4Z`SEpS>Jdc z9fiLCjc&$0P3{NBjc)bk&8{{-cAAqp$jxz7~Q{h zvzket61#_%1~|5>%X!pC*51mY^~QM*(mJlS&$Hjn4c&CBCl6aY;=u)_Z=j>`sB1p6 z4qlzvb;G9dyV`k}=IiAhFH?`dI?3gD`|Y;z`#!v@%fr1Yx77uanOh$`&KYp?@M@2f zt3R6*HgF&PXpg(u`<#ZI^lNX%6&Hbu{^{jqR5!-ze)c~*MgCjo-@hJQJME`t%?#Lw zLi9f@C_?Ci>nta^8gv@=C74W0h*KwIOz<%VE^nrc96j0&vpi#4kv>S~YGq|LDZp$P z8p{XZH|LDg;Dc0rvd*NjNQo?g8_ts*))h%-LaOfIkk3mSE^_GET|Pbmm@F+IJ==tc z2=l#Qa-Rf59rV9Vw70hpNe5yVF+*Rwq_!Z<0W4`HZ{Oaf&-ekN7`XEJ`{wj*BQ8qp z);S%;&qPrc6%+)5WvW)x#*NRf3=+7W!a;?yhdTz-uqY>H4l8DW5cKjIwwB@b!D>zJ zan;{sH2OXKgkb%=XU!Vv0G6T!^b0sY01;64L4$1ICL*Rgkf089Ejr-#p(q%nMydjl zq0!PS@b*GlFpz*$R(9{uVJKRTG{mri(bJyc0OdG#%$U1Kuy^g-w{KPwM=eJ&98dMe znSu~zoL}?V?K6Tua?}GNo`3)-s;iWSUQI}j6k~3b(tl8Kj)M^s=UB}JSAVMy$=d(J zc%RTXR$ z4;BXx9?X4D)A}f3s=<`dyl$6t(OI}!1b5bmp7q1i88#w^Gqq z73V;PjL5ncVmjepjaX}pK&_k*wUULK+aqEztxfvDxui|FX2qvZQx^@PLg!4*y@{C-GNU3v zl9l+!hhp5DSGpEe8~sClWOQ_q;rF4ly4Bd67m$RXw}K!JeQxq z4f{{~*!W4K5+ilHY}cXB=QXOS(Te%HJ)RX-QbvuR@ts;*YjF(GTUd!GtPegyrW{1xA(b+?c2BS1;w9i zIP3C$im*8glM@a^-qcle?AS4)&4w3omQlB3e)N0$ytI+Jsz)*MKVuTI z7n)M+CbkTve%!Yp362G@{xH--faOVZ!<(us=*+=?J9bn3$N!ANVXQm^@2^oEYAVG1 zc&h{AijgiZE}u|ct)SR$>_Ib(=-<##q|z$ld>P7LGzMrJkrZjA#}$(uudmJk`xuz6 zr^*Y1x^wBOQ{SW`B^=_u1@wa`kI@NWxAOPvwAmhkKMw>pSokC|BEqA(ssi25J@#qo z6ErEpX&$y)Gr+;Qf}PC1L=U<`{I6ZVZZPwT8h}@~>yeOlK5?1Tzx^lG+-pM2dP8`n zT~Sd{G2pXJ>HcCkuvqTjS{f1^6)CGl$dUa(&kQSelN_cXJ&B=s4y#i^@ zlv0QehQmB4yH-YvANLg$4WphvcK5JWE(i_?&>rtQa1ttGE9Ac->7Wn10Jqyo_;l*F z8$v$;(A_;E2!dRl{{8zyP7Fg4yyx`kCA*g`d3;_RmGqa4`^0w5`6%$sX!0wnPEaZgc<)7K#the~QEp+ZU_k`L1SBiXyHB=+g)67!S;*Y_9;etgATKYGw_sVU zKu3i=2(~^q3Vtf$pl4nn1FH4Su3fsI+pu1E@5s8byL)tlk)0GgbrSlVGqQ3)2!?wl zx4KgJ)z@Dq9!lrOcOO3|!B&gVFkAWO(|WNjBQ(^qd#$}^-*>9fw`xPH^=%Kxvxv~` z(q$B2)TPxGp`yX{sB|&LKeTl&XFriv=7}&~$ON>!9eP=Z-l)o>QEegfTzQP)5}%PF zAdtx4prNzhya~E-EFeyfg zZE-Cgt0d%<;XD5tS=x5sJmKgmqzjPQG;G*Vx(-vR{T8Ex>0sL2t3E_u8oaNjg4I2R zd?>i>k7`#Q-zuyX4o2T9RO{d=3FgS{-SVSKhrDCi7Obuef!itei5LjYkDh7dX@>c{ zQ)MwJK)tEJi=tvOa(N?=u724ebO0no_r*7&xa&XEn^}9fXo(;g&xs4zXNr_>IPNa{ z1-h_Fj!7XI=?l+DLS#b8yBjG~M6!Kfv^yR`y8?i_e{c7X4&lg^MGZ?z1!r$Tx?q9q zNrY8}obcpd9KTVY&XV(vzo=Dg8*PeB&I@u0nv@l)0v-_k@^l9Thst9#acia2@1+2_ z>(?^UYqce6SQ3V@A{&44@?}n5p6i5yy@Ridoy&S}+xx+d?D)Nxvs*50Prw@w6)D0Z zIzYA9XyEA@hnxU4wF{dvn`&nw!93!f*;K8hJ%yCnoy>y|=YI&gdEoaA8^$RSek@Ja zt9L7kFqeRQ484JDaaH7|G5EUIVm;eug51!+psDyolaFlQk$46{&}NQXCCA`1uIMrJr{wl)ij^4vZL;gcx_&@QvD;iP1zNi*D%k9EzfY&0oEwr#tRGvqNVN4Im zC;GPnN&9??-_%=LQw5?i*2IMN8{^}^DC3kBrU#kC)AZQdPq$O}*PB{ELcZz{{iC-mTjFs1j>% z39QCt#F5{ni-XA!)B0Zej*5k{jdVN+J=m88V#%=KU#mU*)`=5_HQm(I$p|5O(=__9 z%$DNpIlI~!4!`I0$bc(XhDPBeA+-!zwwcSO*T#tBCWSyMx89b*+LRH?Wu!iia6ZBI zAjgQ?k_)=gjD3FD%Tc^D4v4pynLk~V_!}sme=s*zBM4%;V_EAw~>;iJ4GkXHLd6I2#ef9p2JY1IWgW?4=lC)vN-1WMR zoQ;MUiRB33(H+-95!+x#8c|TLHaEF!6$T7@$~iT=SC!adJc#l1G_L;m^6}X@8+LVK zGqGl0!geFVwtCxkhV^jJMmJ(G`^LATIwo1Eh?c6U49?%4ykB`tpx{b9uNOrUM>S=r zRz$m?`4{XHC4|jShi3Wt?d>_WI5WaRxRST~jNLCp6tg;~HEsrDPY6BoE86Qegiya{ zQp(0|&rkBDZFb7oNrX`TcbclBtjwpXTCrKB{xJbgoQ@0lK$b_8q6lE3|){rQjji$}Xv zzQ3-f=EFh%{n7WbT!>GWQqveq6xXOEX`&HHF~KDv)fKseuu)1esk=P5fmh83nyRIP zQV?^HRN3#?ed=k3k*GchtbNY^yk!)6Wd{~;)SleDbYqQgyyl5Om@RcQPkPo=TW@to zJ38s??2%GhQmaPKKw{aj9urIC2(=Sy<(G-oRAXT^%F0lgSTvSuQ}|Q6rlXtiOm`SP zYScn--F^D=HW6AycsB0Rq;gNX2^10@4V1qJp3u$&!H^ zhO*DV{_eAbTbI#`(nMpRr8IEhPe$rs5E~oY4cS&+@}WJNau=XWE~Tf`n|YPOSfUOh z0U?5{x1I|R7k#WmK;0S9HnORx2h7mS?q612mS2WU>&=FRqwA|_FPChnA4H$f5mF#? zEvLyFZYTA8Im(!+lu9@f^t;sA{G1cStHAH9y?0s7%Xv24NhJx3DL8=~Bbi!=u&%|N zdNUvS9%=~#DTEvO_e3t@!O_v*3)$GT>23$}@ukkCP7*L8Y5TIKFDt zs*}WO;D-k|j?F84%WrtCmSvK}2dDCXJP4RLV$@N+5tTB4$TxEm^mwq{)?W1!%Ob9+K8nV2a7RmC7R+`;3@AefqxMvwjoGk>pu8qD_DNA<-SRU64kXO@35! zqZ+IoMtlr)(H?md%aI-&m*+msh$3fE3l)kSEB0yulrw@s3Hv&G&YUos`8?=;bz>1O zUiF#Fl^~@QE17w($!XJ>J!LEeCou^T^+T;THujzMca0jQNZ%RL>h^;NlOXMBfGRAb z8EdXi+O1wp+B8nHoE=pH=-(01qT%~U(V$7`0IYNyrA1wuQVj*xBM+~?sddc=GHsp~ zoa7GpZ5MW&*;+>I>26>!NjimSja^P`pv9-O0BGr~OMv$57cXA)T~#s{sc!+nIw`e= zLpVIYw(fOC_~~{lpVf=FbV*K=Z+wlZR7lPE_3PI!#0|CN{d-Z9=}Zm^fcbR*w5;$L zs}z5#LKYU>Jujgg3uao!Q_sjnl3bLtNNMZn=)|o6KoR3uc)OE}9)-$9!fqXZ~Lr)D;{)#myuVntTguPc!Og~mWq?e#9BM~{~H`oSjkS#fbM zQaPgZc(U)L)EM^Uvy1Kf$W?fu1LTM?DU7!pJzPjv1(RuuV0TWpY zUKSy7^P0VoW)SJug(dInT4V!N_xN$g!#+MJu0?&={|w5fz~$u9FC9DOgeNI8pA;lg_&+ zTEQjv2lF{@bGm)AW=CqHZjkjcK4rrcthNNcB1c*)SVQu{9v-s z9qY!C&oT>*72!p%{e9|v7&mQaHlsbxRWpFt<(33No#N(SM$ zTT^#>Yb&!0b2>jkYg4o6`l#J`Mt>6E>3m zN9OZQpRnDt46!j>w{9KiiX$4@@QXKDp31Qylol%nf)#>Q$0v~|A$jBJZR9S|VS3_D z>>F48s1x`jOrlBvYt_2E~>)}AD0;cW`}>n*|0tLYi^qzP@nmZZK(-tBUkEK z8TG|!!WxtJg9x*m|MXL*B}Cq)B%q&G6e2DWpN_O_>k4)vlR5dFm`wBEN$9k z;>3v(tmJI)OL;|>bSt$6Z2mPVhddIwyWRzZFuRccV7alfqx6TBqc|;X6MU46nzZUY zR0b6hDd+X;g@xPAOnjUUvCrces>H-p8473}*l6a)i`CqFBDlF^k(V!D22{&=@j^N4 zj)ZxBJ&+zYF(N~s=zG|cki&*Dr)3UEa~*rA$M11&1mVxApQ{=qW^xO&E`@0>pbd>u z+I)RA5c_Kaj`XPxu6jG-vsfJ6t&zlzE;S(p(CYS`bF;B`99s+gN-JsD>Ix^>K(KvM zW59luf>FB*{f63WuXbQj5DTn~v&5a;vplK9RL{?!Rxm!M&?z8YzLtQ21k2aBi`FqFJ z+nraGlcU9#LhNL(+`7u}J>`w%(NRsPQze5%JeqWO$-c`(IPU^_HRE#iNT}|lF8NfM zd}`)1=4I%)a|!P}l9RYzU4;bm*x3yf){eUSrcqGt(8OZEdGDsynhR)bfW@%lCQS~S zGRv{Q?NGXIN=iy@pYeEAh;#UOzA@tR{1ey(vRV0gWFiD8EF82YX5WR|3}mP8G?W}44VAzqKTblnJCZ`|%4f-B|Z=Xayv z6Mh8ZC5_v(;thCbSv>C>0Nt zdCMG44NV>MvPXw>$htj|^)!Tbg8=z`2o93rbH*Dobge@*rT7L}BYEz!2=XH*CjJ$>c# z`rM7ANK=-w;Uh*Mb?n4`7pbfDI`s!k?Gx#ADWwzgbD|}Z$Q{e6ptB-Zi6&DJ|LB@( zcZ3jAWk1xAZA%uz>fK|{$5R5`a_Q1t%R202JVch|%Y&S*gJyBYhDG|@Q`-3Ft-Iim zUKElZp9Jo=T-BLDHKMz98MIh?PnOYK7w!Xg2S5a4FVS)+R%0g4p5QYcj9KL|=*pae zqNak!Xy(gYC5_PCs^@D#l$Ms0WhUtRv=nrP-&y|S55$;}SY@VbDp<(fkjzL~V~f~Y zdTELC5_ln|PLXX`4?e;fn^0)qqt)~LoVccRAK1$0kOkqRbQqmTph~k7gipJwcqTu= z9xR46TLvm3k_A+ouYprzXXNJYMh#}zK8PlNIDi%4_#QX~!?T@5gT5x+Ay0FN(>iqQ zkfSrCkbqm*rBrs3)P&mp6SgH~1kv1qqc1QkcXp=7K|jN=!uROYo?W`!T%B?yD%&l* z_||r!_+gZ=9t5ZDJ6D9{<>VZvH$rjSr$Ev(mZv>5cMFUnMwBU;lDiJ6db?I^2n5!o zrQEf7rSGzFHHQkqmOPz~9Xmv24nU`jbFXT49ExU=LntrT@wr(YjP@h4*HSg)%$ZI z!9oI1DbkH(LBgr7u6~T=PqHM0q0->;rm(Oa{|38@4%a8kGRPewb&I4yC=hIC{$sa3 zT`}d_&8}L1=7fA}XibR?dR^=mttk>tmP6$+lEuvOfsejx+O%Iy1mW9yYoGEgYaa^~ zs2*T=(r_8&wqm_)Q&`9lw(v->@B13NqCP{$c8ZykJU&wy8o5^5dJ_ys7DASnTG|(!>*cqNpGe z%a@;*Vqkf`xh(%gg;Z*oU9&mY+||7q zr>K~v&qBoh5?IKEUBet5v&MxiCD=;Cm9Xs;q>04^+_5s+w_jm;Gnt2iKaKP+<+K_H z4&Eo{7F0>Ri|Lx|SJsbUdueV!z#72ntDRgr-sEzVfrf_jbiR!+PA@GlPjqTxk+j?{ z+A`eHR^-sizTo_g>whm52whrQSvpm($mI^c*!ssGz2iiKZSvWFN|8Z28;PH6+qNy) zlRprQ?gYKB)XY)^Yagm72EsJgIMM!U?Z3G2G);P(uq?xO-Y0qUNCft%G26#|S!HZEsM37Hq*PbRBU0@7udup{DWD1%m0k;S`RY!0cXxL&q7Xf+X4amp_@aJRQ!Xw&j9eJgp3%@HwyL8iFGiV6;Oj_^ zC~`UsV&h9b`j1|hnb=vawDaiXP2JK1$xjb@7mw$6m#it4OY(8NYXt^K6U3 z^SaF_DJ@OG0kA8X8?&r{&#)QceSRVeLs8k2m?t~GVGHKT6xj?CedFCFWWl*v>P|b3 z&ToEsc|oZy<4uuGQ+6%owy8B8sG?4nPWo7~BarA*vh-3N|hWN3CvSX_F%Cgw8Y zS;O=K61|w*te;I{eh-&D7nH{s{@n=n=><=vi_r~pL-n72I>KWsV4m#UuwnGUv@w8> zG&s$pm?IDc5(rjpeJKoIq_%LHjTujJASyXl$Hh4WonMmQFqJ3lE8kH8aj zOG^cY>Foij_JlfV+O(-CHYH<-`Sodw(Wdpg`&YlY(8?ex&ehpfl*A2BXL#v$Hjnw) z|EnCnC#T?&b;N#~S;PV5G1MJX26@uR;C%Ro;B?KJ&3X5bFrr+ZKJx2F@#D81Y;N&n z;^E=zE)R5JF~xj7kS7EipY-Bo$I|XIM7o+o@7Yw|3&H+QNVLRQCGI!w9M%x z4w}7N&X%pwa(`QE^fIa2`vXpv&76#}X1`qNv96xl(8BTGe z?hP9@;6t}c{Dv|NIIcgejX6ts3Rx_@nERjW{d7NAqkZV?u`f!^@4n@Uc9)`7=)c^B zNrVAX!o3A^GQaP?*g+4>h54SG5ay#(t+ocL~0zk3bmdaSz4b0Dc1#i+AvL-W9w+OILc8cykdQYDe_eE~W zsA|jx`8aj`{`+l<+Lyk^{`nPd0b;chQ79w0IEqo7^xm{wx*_ie+uT-iVUm$aDM66q z;+s6ffGkC<_``REUSSDhen@vPMNTJ0Ze*BWj)Bz}Q`3IiWG9|bn-9PidzJ@kf5yke zE&I>W`djpx56oVXK6rg*P@6u;i2E|HnlQ7JfGDB8; ze%AE{rAK?}#`;>k36Ck3pqZ^9kfgeWf85v}w2i~)cDNs0IQpD3z&@kUG(SIIsy%TL zsskY?-DTCP=(+FB8ii;1>q!c8Mv}9}x%}aOg6p7M4w+8zc>bbvekQhbEn1y3-#Zz< zhkbEYlw<@IY0aXIBY+-@1=MTSNye1rh!9S~P$Xn!L7^Ak=Q%rn9z5p$&TbY$8i-E? z1^=pj-4!I(DNGehh!BJx2Fazxf`=%~EiF@xPwztabIPY?(WQrW8&95=BF)t`d_WhL zs1eU^Lod@L9JYE>-#!+swHoc)pN9Kx{8Cr1`PX}&IP~f8 zjBZWpN%_;)yP&~0k_Cb`j>U+_ikqo&A1O$m07v7x!V&FNYbX7bp7oJTiPj!KIP^e4 zZtnbpR-7oNGOyXHC6&97dSs-x$+oF?;9qW zx}$(<+>fzA}P_Ikr`1+ z(Gt@(FL`gDxIxu*3%VeJQoeTVc-5x&Y;ox;2Nnzf_7JjAQ|4dp2Tfquj#J4s(ApWG z?a1_fyBL^5q?HP#ATHj?zb1B1vHiurQSbWC-{;-qiP({2?a2yhMqZqXnm?zgs3#mN zLWqUzpOSkytz>_<_n9|zyJaLF&Nq(EuzQHc-fwAL2Yi!TMJ-drHfra)$`^&(o*UsA z6n(?u(((l&8x;W&67now{{9;74;qBIh|5HMY;!oCY|3E`?B@Hiqc2| zfTTj;4QPo@OCvDJIX}r6xH~etAyuTPw~p0#KGltgO1}SLC2i?zei_3=cG3vk>1pUT zxny5~h$tbZKJg?IV;dXhJPglsd(`~2kCXqKlH+`%G*wV|oPzokC{Ltk5t}^d4i_Mr zg!C}aJ)b<~&a!XDS@e(zuC8jb)fU1)EM))|OW*q%7AAH0T(i!H85p0GRARM}kZ%~b zVol9wSA{uR6{nv=DIgX{@6RECB$r24UVZXpIvaZZzRKY~Xr;Ek{{0sZfhv6tJ*}Xf z>Llf@EL-H2&MQWzK#ZPBO|^^yV57;(@!%Z1#Qde?T(a@x$_|4D4VvH@ zlRXmjH?ifiC7$hG7s4Kh1KwEk-5Gm}9-h6vdc%E0Ib}QpG3AlCfZbQjSASI19NOzn zgrb2t{za=4Lx8eV3}Wk$6*TH8%z@8J497B`ABJ*26iS&82p!1CcWzU4?@vY$TI%|~ zD(N`IWUVy-WJbwiThdt|H4`M&l%FZAK28S7nEO#3^=oN`3~6pQVqr4YJT2l0uv)N}mm2L{`54|~2j{J+ppbkZ>D}VSM4aR^eXg@OJNKBs zy?RJ`B}?7pTKgs^-317XT04L&4^+@7fD3uD!4w zModU4%DQ~cc8&lPJl%P{Ta}?R$r<)lekTp(;y5Nu1$#i*EV0_Z0|{jUqlbkg z*T}o!HO7cm)}?O+n=}!WK#&$5g6`n1nyxAt|z(t3gjP(+Yeq=7ELA}Ie0U#OaIGRL}~vS4>4+- z(&NA%)Z8j=LQ0@mjS?YA6yYv97d^s%%e=L%t+A147M2ID%rb8}AE!=#w(}BQIRwdF zZm!d$I~}sz7Tv`JU3zy+W;Mr?J)@4QofTEFe$JyJ1TxC8cG99N#7(lsH^_$C&G z)E0U(QeQodiK*CHnJEEVf)BqRz>J$3xpLWhZw-WBg6*ND_s#!m`YWUU1y9ZCmnP#|0-gFk5U{=*{6z1kWX(RhU!ou$!7Q+niY65B3go9h`LI zpGxegsKnyq3$nOzHmuiBk1+xdalHa|&pyfls zCK=tLMN;Uu^vl}-JZ4X!3fs7IXL#0U!I*@az8^f}W1gkv(q0kQ$p57lBh-`bOk&3O z$@^LiHORFjJ|bDpr?5y^{suO{r%@Ypg!>De`$p_(Yuul3ae|>b_V&Q^apT6N2z3IM zJFK=kofpzBXXRz?jfnKPCzHUh1iUO=WpZe6R+X!?Q6hNkay^q-D2xDnniarSpKMFW zlgTWaA|(Ni9+DFB2f0=6mVKz2x}+QR@c|f$v*{rOt&|M8$zxD3%A-YzP2r%Ro^;z? z;PYe}or*MEW`Cj~SG^G|ky#Hc?5}Fa4*;^U+0vfqF;TgUfwcD%#_5JfHA@4*kw=k4 z9o3w})ZfC2-e;^nIZvPKgHU~x9w4Uv4DCL{JMIa)CapT4HF|4XJ-1b>_Qthp++Yq9 zW;4ug>lbda*XbQ2V8)1IY8%%TMFifyWA*uDYjVMbi@>nXqH4K`LVs_%%d%y9Y@5_4 zIj)FGWuo#PK0rRa4i~>K6`*+w!EkTx1mA%VwBsK_Uz&LM$9O7kk{z}|K)QQ@iD|LB zDQ+zmoHb$koQ9p-_s(wCZZ$MdzN3n~2@k$EZq>?_tu*K&9WsOpVDFP5Jd$qkx$#mnR~C}hMYqrjM#=nGzgWZ#)X=-mS9pkHG{E%FjzBGjW8 zJ7fEua~Xqn7hbZ6nk@&;OSkXc>dw>72|K&ZS?=VdUz6!K?CX~#hl`gv5@p^IjuYQz zg^_UIBtx;Al5+KG$LoVELYBE#&%0f3{Au>@?Um^a0pWMFUZ zKBogjl>N@ z|GvQA;TMy*;LX7Jy-zdBPByMdVuR3ydM(@anZMbvf8!=iAQ;=WU9^0~3WKrwaFrRY zKj9VnXX8W1-@I^43)&ldv01ZbTVPU>-nLu0a;1-FPa1yY0X>S2!vwJZSpBVR?wGNR z!8%&y=Tfo=W%egPP3iFmgzruzhx^%Gu#o_;&+&}47I~m5rYxlQn1|=d@l0GNWlu(< zx1uClk%$NHHskj`(!)#47wR71T(pa2pFcbmW#k8^eUC2T6Uj@EbAS#VeSLF$5!x6! z9TVsT@p0c|2h45EMD9e_JKLpcc+Vj{#AeZb!nRF5Y`yCrH$8g;Ha=p*A<2hR_vEU( zSp7j{+t)SrLn5={`jgGPCSwz0Fa5>6Fe9EQ+684_decfvH!Q(>OAB)B7x*j|fmFsu zsevOT4w#H|R#6ySL}hc7(h@k!0<*4kO7}9^2*dCx;hVxzc?{+_+hGv{QG1Yhf)eey zWn*~svRH{#7_bW)s@RDEB2RJlGDix}azdA=>0YOt*e3FMA`)td0H!D0b0A)ohw|@z zC8lhmonaJ+j`i%>vts-tf^t#Y119Jf>o4ukm8!RBF@Fs~KahzhWcqo`*;HJ9gv_wK z`J!}pD?f$#tO1^s^+Aed|HgJk&^RPD-LYUI_=xgMlb}OMAmy1@QbML5k!=sArkDNk zYldg^XOG@dCYOifXwn@BGNp6tqJE>3buFsTO5twm9Ddnj!zH7dp1M(3Gxcbf$4*D7 zm{N)15UM9Jy%H~QlmH>*lE?||Zm(l;JpwJJxU|cnhRs6a&xcT(h$Uuzn&So%>d;p1 zmX?+mmOZWbFz*FKm6U=!&&jMBIXqt05CJIYXt83btQtLH94WfM2#T5-`&MddZ)+Nl zI=b!~**Qtg^=fkR1R{(Zh@Zi{+v*M*ERKoqqzGUUkuQJ$#`@8tiTg#tr9Phl!OvB0 zr3TfKx6IzcYNT$z$kh$`6@$8`*sqbaN1u-C`I-mhFRoIO5`q0;#*0&zp-p`O$D;|- zn^0{VAm8zJEqYcY-S5g{sAjj#W@)B5@BwqZmqJW6FOJr);pRFZs8Lqe81r`PWm*Wc z)GBT!B#Z+tnn*Bf(PPTY!lj!wqem9JTX4c& zRjhcNFQ1B+wi_x0fQuai9uQ@~9YmK~7aiv_Z3k2_$9*Y0&1=FJb0fPi+qHAN;?4`{m3+s;Pq%6y3;+&|{x*k#8S*)(M)HSe_3mgjQ}OeIfjK zrZN2n)fjQ8?ZxC8U&7d0>)TjU2yF&XkVb<|2*UZ~6*mO@RacP(>FZ@hfhNq(8N-jg zUc|CwKJMuEZO3pjSGAxGRZVZT|6+;74|x3-8hq7p!|H&{bhPlWrzQvMpu}j|a*z8| zf<;X#aXSZA zAMPdXesX23nPRz*SW5b7CvTOxUH2-|kZ=D^wZVZPP$2SiU$@7gLKtw6$2_<3DRX)h z(Shu41qJ!#HFV9a4GsLZzbz?IY6|6&Q4KQm^u!-u-e;PNs$Kmj3b)<0dj(W>u2Tel z(CzZ~$F#M1aO-|yryyB35iKD#FtmutpV*A5BO>`vi5Ru7q16b2&*&lL+Jo|wY|Q6y z6!v;;$VvzYeIZHEy6vsJu;gh7@t&&V6-L~bo_3U(Qg?)CXROqQP7KGm2@Q7V5z{D- zM7md+EL@tfV2Xd^8wi#9nyTsnf!0#|^A|lb7vhLzQ0zKYN+Z;P51VmcM(*2@-Yl(Y zy)&n>8yN*@$er5W>sGPZ0W{4cX=fc;uMx(MGiT0R-|y%>pToKo>{bqV3%)|_caH)r z2r@4sxWYmauZS*>Y9-Le0hT{8aGB+K{x7ot<$Y5vdswx8KJ zdWN?@z9Vb&u%bl{fCRN%kbiQ=sz(%T+Ld3^GaU%a@T&nO0{-%8%gjZ11@rMT6 zl76|d^8(W1733~~Z0UfVP-6L16dTf=$eP`m>`B;ZAnkodt|8#kA-8VbGI18fsJ!3= zBdLH&LV8LWIAPMDLg(DCzy7*6mz6h=G)Qs)0Ryo@dUZCgodtaD6VDnC5npF~rRttl z+tjGelyK-_(HGl;t&%kEN;+r^lr*^;(kH29NfXf3Iz^?4$r~kbc~RChFzb8p{_1Vp z2IC#B7O z7Nm^g{sX-46fZLbgkNnXWmCH~l~ouhwyQ$S=QFdi5c){JC1%(ZxW{rdIs=_LU> zKRdRe(1ZYW09d_02r7snyC7Ml!@Flap+MA9fClfBzQoV$mo$-9S#|vHY0jAIbB<#v z?!!E5QII)bW?7SdQq`7(PUW@Uwq`p;w|XcPU{z^CwG~pUUi$# zqM^VFaDuQCvi-p5cB_67%|$!*WD;pIo4q7B6$#5um!dsYm>c_DN%Pfb7E@$BDL|M- zFJ*@{wVLAp*s*v91X9G{YI66Uice4Jt)pOZt|UDuht(Y?VkzaEJ92=(&I!LE1b?!_ zLF>mGn*8i9yP`1GTjWUw!a6K<4pm)56fF+8Tt{ODb!f4kEZ=5kjDJl93DCa3TJ*!? z*iQ9 zR!{atOThB|SJB?C?6JhVfN}y#m&V6aBp>yEkiCz#ham$~m~Z?^tH=AxKme`8fVl7- zHi2QZ2sddz*al0ByC6SzJjB3)s>ylt2Ny)LEiy)o7$G3ppkR`IGDKaLWi{A0Sp!HIbU&6RAgjtmu{l@9Muz z*72hLsx*W8Gd|<)i!OU{It$gJO_8#rRjaSzYqHOk<@1Ch)Tr7OG-7BlwV;^hSR9S zY)++vJK6enP1^{kSavze>f19W{nCCzXsM21|ApJn{h zk?%Z%`NrQnDsZbffmEyLwTCLD^$Y0Gr$NJq_{M`9tpCc|9qB#wlFs(9iG71@FHaU# zHj=O-QVoDpNt;I*4a9rnjvYTPyFX$toSBPj1Z(*#U~BZXN?A&|@B%c=1}%rneNXHC zzsJI_&z%ao2+G*>7v^k@Ku0s5=oZ4IV}7)A&z?Q=lMd|NR$Oa$xvm*Oq<#=VOd2n- z(mBS%&&jwXmH@DieOG^cyLwu)k%tHd|Djg{4nVSUyY4nJ+%AGXWGP1ZeXvnbC^p*XoNbOB(Ar#qEEa03yDY=T5+t zHW+lq1@Ln%+Si-)pKTW9yTBA=znpyD{^Q%{QW~zQuCSARNJ`4eQax)bXOKupUh<(V zS{{&^nR=_u;ZJ{S**HE{;qwR+ZuN!yZLmt}XYHl~v+^3SJ-2b^hVC8O=s;V8a8A44%Yy-F5}iWtW$6iOQ!%#<|B4f0u@8MJ?qFpD|}Ykt+!EO6uKz zgiJooe4d?XIEaX0>>Sqpm)f2GRNqm7;fUW45eRn}YV*(bLdPOD9Q0EaIa~gHvfFFk zU;yiN05}na>eSWbGUJr;M5M`YYwcpB`m~u3x!Xe@($fTbj2MFFRe(_4k!BiTXQ(|B z3;uh|d;Rl3rv<{H*9?N;Vf2nyii-~c?iKm&2Lsc;PvDFePpEzmq7S)D>&K{x)?ax0 z_HCs`t?{_(gAe>M*<+5Eyx(-)Nkw$G4D{HNCy-+$-j^8dh_6Ku!iHIQ%*}6Q^VjuUJriM8?+5Az5{=nC5K4byFTA!IYY~xu7hrC;zx83O< z{cZ~zXNE>v)Y=6%Il`6rDSsZkdL@iu#EUNLH4X7N=!4+OX7#&RLz<(`#kQD61tojg zE`CE#S^}7pbDFi?E{7+oYdWKsiFc=;QZ(N80ccl$xcpRCuli{F&)VXXLJ|ET>_ryh zj|I?OrmV%GCbfo)w|8>8yv91B9C@@jJPYAX{B?2ku^AK-O)p$jBz$oNdY40@f?RM= z^<`$e<#t;-Q4B7)z%J_#ZhGI8eI3fTuHe3DDv}13-U(F*RIR3Vd!rmbapG7I4y9z9FtdfgwSI|6?n&(CuFqOLh`TC11NsaFfonOe zyQy(`>H&tyNfvQK<3?&akLhmOC+84Ra=UveJ)Or<09DX_bpSt?%2)?{tM&q?_@6nm zH0-ly)ywwhUT!tYJ#)Qj#?A$*Np__{ckLd9&6fDxDMK`l#OjxgXPYdrzsRF^E(}Ze zN1-Lyx?C?cU02V_jHjVc+GQ9XdwwpMVF5F-B`JbOs!-x{uw;1;wV9>n?r}>dEpKRc zc=ves3&T$r+bz4T95O-8Eb3%&K$6a-3*)K=HJumxT@$k;x3X7%QVSl#w=f?+6xu8z zhAk7*-h`f)d+;nBFJw4ge(?@2rPl@xmnpKr`i#%7ts;sp72MWYA&-a*y&=Ki_9J!? zEY;sw>OG_CNa{OS^*p+tk};m%H-uvH%l!A!IXr4)SG7fvssa@4`_YC;b%3(pB71u; z9om`(k5M*>_Ei;mjDUF@{FK);#|SNj6M3@L(l3bWyrc8wNC%#x2wR0_AO%T9)r*!f zAE&xw`Y`47M{una*1FI!bqMs#wF6|&N9ijjEjR>0TJ>(5rwJvc&OoiYOVNM+dxM82 zFqnFjwYO=sbE54!_xEO|A0O*=nQ+kN^~ZgtwTV7#h~)uxQ#}lFn)^rRt+yC8_hUS3 z4!Ay9)!er>;bZ*X=OcSX=mNvL657odreTPc?TSewPt;wvS#Do;2+Zc^$+C^M2&;yC zy0@()<7xGUBa+R_OS@&8Hh#(o@|6_i0yeb0Y276IIIx8Au$S)C=nqlFIp2GJ96_|y z(N=9z%Y!MIbnZwquTzeM9rmqu7`vH5x5v|}-2UF4p0UlXvXRG|D)0Cj^`|8x9j37(3{cX#rp0*CLTY@%66A5Ig-l=Q$mx|9kv{Ghy#i+CAr@;IS;l+--q0CAfli<t+Z#-OtO*FeK3`wH zwVb+SKCRnHvWYvP)gQuo0pZLssyuCZ@e^YK6&Jembew^#@~|ejLzr=fB0E7$X-(@e zE)=IX|J*+$)jPsBZT2b%?iSOqoe71^89oNkJoy>Yui0}LG2 zRGf|Xtoh)XM+_QAn3J_@*TX*O+8ejl*94?VMnf#Hl%@jJ#=ae<1G}B@b(t!Aq`#Ol za!uLM_BnJ_p-l2{%2*tJoG!muXGqoCtls@U8nB#sox1j&WHeXiFF-I5QFtMPjRG>4 zjb7GggtDw4{r_U`UBGJ2_qOqj8TOdLo`Y?Z!^~KTBBK;V%GhC*4pJ(W96C@5B}u7f zW)CCESe4txxo?Pp%fatHaz=? zJ2RoN5fu)dS&cJ(eh}4km3p~XZ@S_D#@8FAivCk?40*Q0+3Og>ZP!oZdrb~Sel9+B zZ_C}MNC-_`O1Ku?@&sYi+?j%j0WI|E1{A%b@h)#L)_QzIR0!%WyVMe1CyS9h!v+qU z75}$2UrDf@6fsZk%5;MqcywzwB(v9`B#i}bQjdMUqNSQ4Y)E3v+#RFRO=hWP8&UKxkbeZ4f`_m zi!qosJBleKkexnl#df`_jKBx-A=mK$9@e@4Y@@xOPbV0i6Iu_@Mo zX`}p%wI-`=t*%u4pv^HANgd+9m&*C)H)FO`t%DLkA0ohZE)YPcW$bm8)6T4p)f~yN zle8DXI?am$gv33vsx>+R;fn*nKQ3=9R<6i>5$XudiC6+d!6WFFb1-_5gr(Qq<&?$pvBNAf)SnlAC_7pGBa2b;1gc z{BqSr=l1zKJ`_vFVAD74@kFc6>ckr|7K_=VR>ASY8_F0{G|po@Z!fuA3$Urg?d-Gg zX?ZWd0JmV>(lj2sODut$C*_nAEmWX#`jHFvcgf^qF%oF(>j52=px_H^RLQB6 zuw+6f;LQ2a)fkBH36%O~fAo-QH5}*`3DFYcp~4H+bd~PKQyE?6K)86hmH}0>F(w4X zTLbn_DI#?K*Xdk3W<%ALwfK+&hI-=O8&OP@!Km>jY*n7-_w`23-M$UaECQ&z1C;y< z6=lCA*k!vtvDKWO-Z{a@O1%mlLVu?}y>PXjabHVRq|{vFPE6v)3Lfh;_g^4S6hSC2DBDDA=qZ~4Lxt1ubYJ+xc(OxRy*c;^DyVVN>6dXh@a#7x}D$| zQNq^<$kG_KdKNz037yVj1Qunj^Fzu}t%wS-eUxXxZEorD^R=gywBAcJDL$%geNdY2 zth4+0S*2y>uiM`>+f(55;qgbG#$UXa-}xxeXw~7wx69$FiiykaZ>6$nWS=rvafV4fT_TfUmoca%9g9fi+%Ff|lR4}Mil$qBP*V&Vz40;Au=uW>i+QN(W~f zW_uI2z@HI|=MOArx)rJ-@a>)rs zwx__2bLzvbIoiTD3v0FrwO16Vk47l$?>+Lxe%7csnkHOlvY1~J*Zce!V)-OKqtVha z?pHszI%%M>c(4v=(3wgV!07k0O;S9tbv4jz38ohqZMk>apy)n^ z;3FS94G*)R>b57-hKYK4%AxJNZ4NYP{96e*w%<7HvG2yUeqLeH1&(XQUJ4l|0m-UQMfEQM9rv?iZIiv_#_klsQi}2RX zR7Q_Z+=9w6oXOMU9@{EJt2X1c+H~v0aLv8kFyxpOCjmOdA978T-CfRF_zG6Sc&iQg zcmw7aR@6oTUTzGtSW$?c{OtQ`)@MhlIf}%XGqM$On-(@yU}jE*Egp_;J$Dw%(Z!N6 z$Qn8LrYx8yKFop3Z$0RVQWm>dIuEnMeuR23M1&|d%`*>9yb2Ymd!cg;e`OiB!4$7G zrLbYS7sGYfZtSR79J9tyMGQeD_t7C&EQ?Ak!&`V9{O6oUhjy!Ca-|xPpc0IPvev!T z*wbPOzAL*Fi`ndCNw)BSl_Cg3nf?6(l{23qC>IliLMhvTP--OMQ8@&!{CeBt8UqFn zOMEcJfM;w=LSH)GvS1-CCQ{T9tm)lWXLr3@4eEOty9x1{aEYiaotQatO%nvB> zK4W8mfyfXRH3+z2?GGelx7_($tcteFv~hRA?h4!>t}In{Wg~|UH6!bHRpYMf(i`hi zmJ0Uy)X*oj>(!#Hy>G9{C$qOi7HgD7+U*J`xdd@#B$&E7ysT3CD6Mw;LrxzN`Z=B> zesn80eT6MzgpGIK<%1zZ*lM_6bM%B<+s6$C#xWZ&zTef6?r%FM4^?$T=u)FX>{|Ec zoW=$;Eczu;c6r}Tdy}5y{I(Hy5Vs>zy)+IxFWiI1aIQK8gK#`}$PL^iO;8m~k=l3| z?mEFVA6?V!*xHhQ=3yW!DzO9=jw6)BkwCGWPq<++XV2K#8o*)_yqu?Z49UtwK^EDEqG@TXKfMzr z_%SxVctm-V5sgd=ZgV$ZkP1LVAUgsfy@DT81KRi$jcpFZE=+BKMrg(2^-YAWDzDE7 zj4j#5$+Wby%|%4(xHiw!1{WLqwS|n?a%a_uSOCHo9F1kk={+p^+2~H@BZP*H^{SrE zwZi^#{i({Mhi)OKCaMZoqic2jx^8wmYQO}jL7_^&2Iq!YqI*Ga*0SM#5Cj(*-uh$% z+*0K9H4F5PVdI!M$kKmM0)mtiiXMUwa=Kwhg{52cRZyT2?ppYHptJ6Gkc62xChgr4 z0^d%HCPZo4PGRxXAwZY1l+b>0r`Dy#A04JUa-|cDLQuAQYuaCpa`kGP$pYugzR`2? z4lRYJ-i9YC_^S9hvkrc()Dozib`>omEK+liAU%)za-}Y0H`(fbi%wxNb5G>sb>2cK z_pOz$VV&cFJm&WB8g5Ht_}ib9d_1j)1u*pS8qojwtKi%LP86WhS>lh?al_-OKC;SO(dV*|?3bopLbZ#%^fsD}AlwFQ|GV#d%pI_qs_oxin$NY{b zS;}{7n2L(N>HH}yH}n?9nvQ(?9sQRT&qN2b-w-ndfME>wq_4X+*aaVDw>Ovl^rR0E z3B!YDJ^a2K1{KqKu^#N=SoKU;uqW|C3jRj&FyWbGoWL`gN=?Mzaa&imwg64JFPc0Z z+w{VYrLt{xoHrX*2uco12OEm7*?OzjI2q4JBu?zdjbx)w|5ha65Vok8-L?nYE*cSE#dNmistok>VQ3W6)hcjh z?E6^zJ_bRvE2qV`aW?-7PP&X?u0QOK)pf@*I#URI$tqYz)(pYWhQ`t3`gT|9sVXI? zhpG}?U@QA?<5{R5tkPZFvdfp*O%r2bx@S(7#iAzw(CZ(;%yzM4GdjN8U58o^dAi)f zuAhO^fB`M6#)G$A-OP?2s{1TNS4U*y`&U!&VECi7q6E=6IrI0mW^OjuYHv$l?=)hD z!)84Qc#0dU1YXewo?2iPSq>5SzUJP4&{^Ul)+DFytlr(R!Wu6D7?JBQ**uR_L~rk; zc8n!WI^kw(1fb3pw?gjFAm-+E40H1luB%9?loq7}R!s=T=$|@Rve(Nw91!SQB<%FW zTx{THD0Vo|N)=wv=z1S%7y&9fKi$)(x;k)3On{Ahp#o_#j7Z1DZmF7#_GDffkR-B| zqh@b$g;Fr{2C*R5J%(1owl|Mp;fuIk53&lym%0bu4^r-2#>k@j<^Ke>I#X&%o}|q0 zMHU|WRHA*YJHNroD#8N1iKh<^Zw4IBT=P0oH>6tl0m4x6^fgqZI5lPOuiu+4MhgP@ zIY!njiFN?6odXap+UQGW4nkhYH zYD1t~IK}MWs2!CQU>)>Lp<4Fef=CVa$!F{206QVc| zsjZg-OALm~xi24dm-TfU6NgtlTYz5R0Q^1X62Zr4a~AMWCj@XZKWqshkqo!g!9i>g zA}XM{R+@evvLzDWC6M+@z;&wN?k!-=7Y$-7hdt!r3 z&cYLeeW9CnU`IF{`=URZk;uAm^c09@Q6Z=Wcht)XxFeF+`rB`(BsJm{J!q1ZCJwBW zN|}J}@9j807Ui^DUkxHXk2yM?maBC3X{G@i7HsSUY-S|f25B&6iq6?={P8`2d4@o3 zL!dINgVR76puCDRELGV_v;1T21i`Xr-s^iU4M0;t5WK+5KSW!TCr!Ev_%MIVeSD+I zh_2D^mY1Ta@2?ovFRieBLp(v{Zcpfy`ww48xYHXDemhc(Hlmw#x+PT#%DNHByM%ZfM4NcwDVGi);Klg16^_D2;tNC2(!ypf0T8N& zJhkVq)4za3p=^2jY?K`z!e5uyJY`Dt11a{ET=Hl|L5>og`Y+_#7E8<}ucFj~L5A!B zV5Ase{q?A3iZL}92i7R{loM`@SHlDEur_A`1*dyND3+H9f^gb2pg7!2nGW@y*65m=EqAQ6wv9|AWyHJ%`YZ*fDo>mA1YYmfjq& zD5K_V-T0mZRU%zgW}Z^mRYbzqBh{K%hh9^WRzHhnYHVS7x5EOY863W6V_2&cL|sN{ zH@+rb>n1uvkK(DP?Ln1mHtb(R%?BdwrfhW@v|uQ~z_%T5GN2lUtLY>l}tJtkAd1Sf!sxE&IDgkVE+uMzhO4#mf>Ol_|p;bQAkQJ3G_l+V!C z-RzbBdiiTUiCh9ZQ0seEG~Lz2nByWeb2H~Hz#o|xA5A`s7Ccl$N+zj&_sD5R)S745 ztWI??zVXsRs0qkKr2&*dR$3M7ow^qrJVGn)Xox&MVWr1G^g1-ZB;?-?V)`g*(}Xl8 zRyZhiutcSyE+)+C3Pf#h`EE0X*d#MwA`r~-)&-^Q;#?X;8Vcjp>{7rTFa~I26#v< zmjgOZ&8CzrrO)Q$y_MX>y}}qpBJxJNMg9_}+j!($QmRrz-8jWAuiM4epDd21yZx>! z@Ph~uVS?r=d^eVENkMYD~k@QcxLcuxq&e(QMXrcrDZ&M-*Pz|6o8qRDx^Rb${jkhJ9Rf)y}rMu=2Y zXb4xajRM1^#5!on!m;La?t|2N3d+0-e66bMohOQBVOx4gTLQsIm^%zwDN!LcGpI8g zzWG4KvU4}SR?d7sE;s?8HDx=-2;OQ?K#2-|IaGh**p#TwfnKLfAWJVi~@Gi zhnkbI{>TQ29)qp}6K^)h>z3h62iSSBU%=4OiaDSVPagvgmxFfE;8GQ!Ru4c(_I%uU zZ&|A^2R_U(P{|S6cdCU5qus$UM*c%}yY+wH3hJdDpvX~qG35kKRLo%(K$y;6o`OiiGZ&e7sJeLyjdkQ4Z+Bqxp{xNxx&Tp3KxXvIHcu@KV8>9X=5?9vJrwfr!y0(ZPbCsc8_uHlbOb`+g$ z{{NVo%aUD~;XE|_0_o-eEkxw3O{*!+5{Xg#+(Zy@?t2yqP<^79BB+Dj0tof|mC3$d z^{u{o$1;|Tjyv&6`^drE{elwb;)0|<&~Q_9c1I|9T3k+A?0?|4mzmR(*>`-CT2{83 z-^jK#&G8$zvn0~m$Yd%;?I%$j1)%r<+z8_@*?>)UhXx6w!o5_jyypN!C&RlR&R}^~ zirwdNecoU$Im;IHoUW;)r1V}-XOqf~Y>u~_HQF}(KDaYU#cMr zCHIqeGGr4K6QvEFY0*F%P*9(JUlsLE;_|m(nRdV)v!B>(m$SxO6(dd8PpwzFKtC742kFoaT}>An|{)ih?f(>f-(N|cX(>1 z@F&16{#88nbWHqm_D=YYeLxzLFTKQ$_P|FwfeOGW4D*7qietb?j|f%33u`cty|59W z#-{EWqp1qG$cesS)L~)mT_qj}UNeqvQFAjBO~p<}4*8CZqxY3|F<*cKf?)UU=rJid3fbAfO%n$NG#N21>EiXu`I<&YX) zAgf{=iL|*F$kj2#=%%qPBt#is!5JKdT^&j^ZPcKNgkBE>*A34HyP&bO zWxNIHR)_Z55HgSu(ad|Bmy&v8r3a9~CfyRo^Nx9aJuSzO*}Sp$Z$fqaFb6bxJ(~5J zL>q3{zrDGty6{iTyb%_P*q1XutwVYC1U5?~%E)X`S;HboVJ?Vm0F@1-iZDcfW{Gsg z+r{=0inK6=X8>C)H8jb4V7-6-A+RHFE2u@twtQUjp_qCW25b2+lD9h&ul@$r)br4R zu7a6)`=*|{bLi4bD5pb2Y`l_QV-1IZ{8@iH8zQ1u{8Iwn0(87h&h3h^n@uHkcooZ? zQt(}h7$9-qQt1#uRgHWYm|HHU2)WO?m)T?s&x*iv)?d3o4~&6qLS++NrWX0}k4j-f|@m_@&g zO-wC85Co?RL>Q22B>eY6_va<D&r8A1oiDij{&N-Gm3>pO^&y0|vI9p-NN;+%5*~ z&J;)r*0Q5A3bJ z1$L)_kB9+*W>j=_oPg3)R0y$88x%2hQ0cN-rCiG%Tc0{1UIljISov50Q(&Q%$hMv* zYr%`sbz@#8tE+#Jk`BaELCo^yNjJ_m2oZs4v}v(K2(T64EsZ`(`7u)D%=0EXO4A={ z{G~4ml|j>36#1Veoq20X;GHC2OgsMv)mAnclMoShrd3lnz^FF$EC$3`Bi;aX)<(LT z{{)^Y2L{xy(CVhOv3-w`kMP_P_@B<0p{rR11n4GUTDEwoKrPq%!TU@s0oLmndxFsS zjJ4N4BQ!-3c6q~YH}xB+j)DyO$1&nRrj$1k)ePgzzpS@9j;>e`1%WrD_(NfJ4|KzY zRP+OQ>3(@dN2SpTP#u3vdWBl8+!hrpW!el?^s+;9?N7)HR80c907CM+I@so8R9Y1< zK>2E0&vJ8O-)#DY-*}pZ?xHS)Bo+yAY|3bCQlF*T>awp2aIgJ4#Ql)umcTsR9SY|o zxKM9wQpQAva2DwhZ+2&|KL7IJ?i@&4DP_RKgc=JwVqYYpa-L=u7qv#pK2*+C%V=$Y zVf>2o+j1yTMCX$3u^y%Xw;=XbFU4s3>VY9`b5ytZehGy|tBv33Rm?nyaQDprPtKR%_*teV}c{|Gisa!}53Cr36G80qIm^;(#lQzA45RtBRWx<6%yMpiW4il7KL7j5fxPn}_=cp?}a{sibJazw+t@*e~`#e|i? z7&lU&jZ2=Xl~2iz)?DyFIKk8Ha4iBWe_SUi;u4iWDoemUr+E5pKZi|A!9yGL(_ccH zwK1};pPn(X;^m=9I4rWeuXJd}8-QYC>L%8QZ&05Ne(lk!#T!u3C(Mm0<#!nU_aLe& zo;}dIF-%YvO6HS*EGp``2<6*Qki5+HAf}XDG*vNvjKG6r77V`;2sKY?A=tonNG^^* z>e2;t#(H(yqxsns7*bWl0UdtE1U20HojFtB{)8i0=tmHOF)|HktbM7R!QyQI$WqE~ zzr(Gn7of*2_yL~7R;YyPBJ&xFwX*`;(pX=$UTk21JqrJ^=AYF8Jz+aD%vtS7`0~&V7o3 zNq_>QD=Ej)PKq>LnjT6Ct(TlFm{Ou-C7CB zWlUO3r8r|#iir2e{80yKyMEAUyKx6{puJ<~C*%xpXJa;BpSSM*xvmBIb9rl;9>woZ zT8PHO4woJSWX|#8-`_u8G8{T|u{%a2Qq)U<#O?>OZ8{#j{UQk|a9g#E989@km956m+g&0Ti!v3rp!KhRso3J`Dj6aRek8 z`PTN54LFbrlO_L*ol1@udjH|ysDAD0z2Hzsq*h7)-Zt%D};R|MK>g-%!7rCmT0Xk4QSy|mPYQ)y-n>eBP? z-mzq%&D4WQo^7!%Z~%$J84>ATPYL=0wv*o{$dT6lBSO5)YK1=r5fDm^C2Sq9abB-f zTMwrU{x$*E5zM;?1NMaf2`DjL;^Fn%yhBPl749s`v4JC4Po0nY84Xvw)<&6D+)B_b z+GAuPp>*0C;iCJl>@;n?+NRuIs2FNLgffqu9>-K6T1Z!`NsmH3l~n7ZC5*0XjFin~ zX&6u(Ah8Fg{p*u=*wlj)dS(fuk>Ktckx2|N_9Bf`=JUbWo9vqZs9;oyu+;M*5(n=M z|7T4ASo2F6*`amSU<)bmfNBC*X!K^%10O$)xIgv-N0rJOb|Msr2=`ZvYJ!A)F{SKS zQ;o>Alc%2sFwTQ13AYAoJxP4n3Sd>xhrn@s9|Ga_)Fx=#@3C5BnCym1u7uI5bPOL~ zu5A3-H5^_Qv4El{iV2iLy*i@o9)JZRY};Nujf4VuNwa2mETP~*=nfZ2}CU0eHVGDeDvqM z+&2&L6rohwz)JIbJ;(X}@*{blb!f6_IPQ{`GZ7?w&$cVhh&n64v)iz9K-u388B78m zIh&i_M*m(#GBeITB*aPGovwB_=tZ-_Bx!`4MHIdcYGtD25ILoYL&K~8>!|2bb+e;7#+Y?f>lo{rciStYEBR5CN|KGv z-k%y${(Gfq|4%mx8eg+yr$$lb>{AJV3)-?W3}RF&=l*np4Xi#m`?CeRlx;9Y|I8ND z9paFaU>_XAuqhcgWo(QjRA`>Ojg@ zC6YVlPZ-#)NelmwRqvWmnIvHaD?g(DKe5tHh#zK$hlHjaPSgvC<9~f3ynZbv7ch-9}p}D#Qy}!BGeRlG51?G$kO6M+*jy!a(!kT>D8s z&X8#TAHYB7AF`O{*9wBRg*va6_`y3Md>v~v{>Wb1e_CXOuBw#G7l%M=Uf=H&=7{ik zqZ@X~K3C3lweaemsN{F!T*U5nE_*5`C@04TEdyM26H0Pm)ESpv{U+OAwyTvs3Zo!l zBSCf>wJO~llB8!*lN1Yw(DMsiRk@wYfvuyCzM2jX1kRc>+TVgmg&+@g-=~mLI|AGB z*c8Q_iDjc0)by*m*Zga1qYD#F;J8d_s5j7RO8u`L(4LL&+K^Q8p-giBvvbh<{1;e4 z(ysoyOC0j+r^x+R>`r7K^FN5qf7W8=!o&;&Xl8a`<+i4nZ$AlIl`SAz<@_xvz}V|S zXD`CMy(uCArw~B!`ymlnyx4{M*L9FmZUbgH%sCrEGdtGY?4DYnd+|o+Cf$~bo?46A zY4&g!mlt%@oM%jr1#=^3X3mvIt7SIZ)O^vnhRrrt8z~o*{KY6PrL!yWNm0lOvsq%` zV6#Y|hY6@7bHKJxyGrJ-{^eqPs8U>DS`OCNe>{DEZ(CC;dnE#>PoaPzA1TaMp~xu# zah3aHI-{(a!oQksuH+)Mv_mpd&rv+Wt{}R&tvSuYNfgY$r;mvP_@i6D^oF{WLmSW` z5Q=4+%sv{rLtzpeqXD})e@&&%E^UbQblh*~jZ6SlK{AaqWh~gpM{?&2L!VHmYrM*4 zEmacB?17A22Jj+WlmjIVXQLkST;2pA!u*JWz2oysEg1`AG2pHEkCQ)Cm*Q9iiRjIE+?-wt_dpKYP*wqP8_zpQk6a`K?v$s8T~lVX+|AUw?5eRv#rlC?%YFySsjysWu4?oO{Ii*LGCHd{xMOVS2)yawe-t>KX}*{- zWz7f>1Z~^W6Shr$vZBN3T@9W4`5E5r<94JU!%cZUn>@Nt%O}t6{;oc!j4i!xUzbF5 zPIJvW=Rcsxh{Hh1nSU79d+UA5XK^yvZq3qfUk$@M&O3r3*(HB$ckdseP(1k?1dG5I z+@shocInzMp_}Yxwx6T%da0470^}3L1d^ev|Fp~&${wQUbX=leS45jo5OH&1Q#n6q}Gmy7fV!);hz)}>%@YDE+scGSm z6wDO>Xj>sN#rL(usm&mU| z#Wa)w9KwEq^~Jei27O|0zU|R9*Yrl(h9cXCwW|%vbH+-#+#;m}a764dxv+q$VH$Q% zW+&#|-XiC4{0)i_?>b`pta8|bKRkg~;{?RF3w>E67XY%60h!5%+{#lJGWJ0Nr_Og_v_mfUz9*SFgaat!*_ zQB|mqqD^(v!%H8x>y6(Q^w;UDvyJ-tW=<@CZOX?jYg1mOw>kG;2naCZ0*papG)Pwa)(tS(mGo?7`?0)llNYWZZ1Mtaj+q*7U4oMw=OBpGJeY-g#Hg))_+#)U zN+Hz&o-SD2#70GhAlx-(8Qt)C2?TU``h>+_x2a*3kxl2$;6xPbM!YyL%5x~$<@9b? zC?2OjcEfT!&ieWD2kNR%=da<9HKFkj5#fbaF1XAAVUPgS9VH;vcaewH>3M7%spaWx zb>xE-y&LDvYfuml4c-JPFGkv+-ltKcu!>pfy^PkraFotVPEc_?y7;~=}= z+8TvJ#Tt+|jG_F2qiIYvK;bT!hzR=%yI~DMVQ_TzpUg2x^b5@Ux)W_FppUB8r*RVZ zrSoB!B8;Oy1nXJ4S9N17Z3CwxAW5M!AMFIsO+GN>2gyRoUj#o$BqG7#0>rAa5?1B= z*<;OY@ffxE7zJNE-7YA^yjs&yNJRDLGtAo?+{E_hbbCVcY#;-qILZsW?yTDRalQ^- zl?S?LLH3Bd{DE`rtn(?-;0EU;qZ%eIz|5q(#{JdILvP{t@VO4v>MQT;wSe>Z*_Tp? zb@aIC=!w9YF^&?Fw5078@?N-kDy)c>=I8BmG@Aphcjgg~qIL8C&#P8tD+yg~Hupbu(NIplXg0WLKc1 zT%l9d)ib^OV}rr=!R5QFhQ)WoYfD%C7T^}BDRl~gp;4w7;oS`wtTDGKt@yo>Hb00s zaT;kiF!?NntKv*#)(G#XD$ulII*WRyk6Ttv+MqXnc|JNfVIuPiTAaW}$d%3at$WAh zeJ)}XEaG@9VjV8xgNHUWV>BzFI&I1GsqrWe!|$rcYehjpiZ_}s>S{Z1wf-R95+`aU zTZhm0-iC@GuusJg?O7XOp43aV2)PClI;wJ(Oz-FrU4?{G-9EGj(HEXj>qjFMtVd(`rfAFx?)=j19QUtSLh47*r3VI2 z=y}rmlbp%l)(^&+2V>2KI?oPhgRMY(6b*@*v71GO#GQr)Q?4(RbTD4Ai1vXX#{*+6 zA~7e{hUN|WrH@xbE)XfA^9aaM)RaCNO84;*(VQ*=f~7Kj1@a#Gam*Pmf(+GY*3W+r z${l8si!5&sXjd#jLFy3HGz?v~Kq;YhrTEt{Y@A&50K{KF^(LN)h`)9mqYG&BC>Z7R zY2P-;+6Dh7)Q6NWvNa#>_sh3KgL}X+G|<|Nqna!$c*sDTgR~F2b%}_DHV3DJwhc2G zJL0?-r&KshOf?B30%t-&aMF{4@iZv6fJQ=UrL!h9#&{UP(RRZT(370YASFf%NwGVg z$q{hv@~<}sn37v%F-_Bl&CjYlgPMfFN@Ug?RE6}Ds)Nq6=I_{NR*6Ug2}lBlNCLe> zhDbffjgX6uMKCNcU?qqzID)2}`|<}~00u(lBsRXa*&e<=l15C10|avr#EGr61E*8w zq!d|MP+Dpny5-cAsmB2Q&bXEc{Ch`?-_VS+Eog)91h(lMT>=WY&Di-yZ%0?F8wB2D zvsR#%1Oqe}P9MtvoMb@@!kV)SHAEC3M*rHlPfe0rwzv48DOu=VZf?Qk>|#3`$h)A! zKqHKhmRD6%BWGsYUzu!UP|1H@Ro>~0R+zYQnAI(48enyf*w}9E;vA7ckHG2nTrw^?pNdXfYrT{1g zcn@buNxTFF_faj(NzHLSPxldQJ6$|DgPz_a5ic@LzwsoB#HVqtZ~^>xM3KXBfuYWL!6aXLD}`RSafDu!=z_L8z%9k99v z^pp+};YnN8=CYL|F_q*&IDFpVv7rzRD~PFKMp|+N!6FuP%NUSegqp(Q?pa7C7&DN2 zw%`o+NYsQYC&Xd01wVQ)p_MavpMybyz2vhE{#hjhv|_IPPE)Wrzcal!%%!vrE_3o;^O^3Kvb;ck1pkTptVQyks zG>_Gc4>;F+PRxtU1Mb=L|1O3$r1^Mz>brERBYpC>>RRmraMSE+ow0wWUuhD#krK+m9xYZTlIe|z4`)?{~a zDwHY$Ngc}BY3d75=3^vpr#;7pkwc575K_WaBM?eC6SvVb*8YGBHT2b5bZ1FEerQi7 ziaCr5myY!5FKA>dD#XxUI9v*nE>*Ky!j-Dz;JhTx+Bo8|us1+!`z_@QtXG-qL}Dxi zi{ez^t(R%Alvm{oILp9h19l)?(%T^CpU9nn;LkV(Y-=_w!dD&gO&PGR2 zcXUah_w4%TQ)dNEfdYn|<+9?IIGV?p+vxr?TSRggOX#2tbgRB^V$kl zskTpQ0hdknECb9I19=_|M9Bgtxv^%i1@`(Mjkw|C*|C!hw#gRSGw9C}+`;SAZ&g}%affG~G z{a09-feb&!Nq8{s(5?9@3Iof=o3~=YQZXhfMEW>Ua7NFABmm@j%brBxsVfQ=r%nK@ zUG@mf=!I8MhRK;JA)grtwm=-3Npj&jp91r11mLTX;#%I zOX##9A&`%$0pTeT+2(GxO7FnoY<_%j)FaS2iDrnX$sF(imEFGRGS({@hGl$j`I?a> z5fx)L;pXXPQVIZ)-ng9KCt2BU2Ui5K1YOq3pktFhrOV3-U!P$1H&|kXLdh;fRN4Ph zKBpr5wM8S2?z_QJ0=wQ(-Olr6!eMz~7eD^=-j>zK4U`xllrg`G#PF{n$MUe1k{eLa zizW0WojUisgXgFX1vIHrnsf5jKw9^8`%Y9(@zg2~dqPxkiuL!LVee&zM20O>+XpXILo5}8)i4t^2&aVg zuLS`w79@g%r0NeeA}(9{e(()M8m{OXbhX!k}F2SjQyhdGcSMv*k9`2palM&y^S1@&1PH7^Thx?{DBXcR_z z(AiuL8kSIrh~|OzgeKoAZgVD0nzRT_e;XbbO$-bq!Z8MTXvI@IL2ev@FkRf+=OW~~ z3k4LZnd$2t8%+qV2srbSIV(2H2U2!Gi-uj=*lk7bDXQ~z@X=k*jnbk%S2De+7_i~X7f?wA%#9Kl-9h+|x{M1`FHUb2aToVwz> zu8X5JQZLzH)k{Pa6IP5qyf$y`_H~q#or7h@<^1s|V0Ij_PJyVd5)it?w{l9Gxn0Sc z^*R2YZtHVK##StO9wo@uGd2l}$dn*5q{5=UzEhtNyvxKz@S4%wR6F}n<|ndBzpEAc z9UbakN>QxoNYA)I9CiDvyAycm>MK(^x$L%k_9_4R%C`Xgtn9 zM6sFeUX~8r<#OMJ9w7fIo9@SWTJ8AtH&N<52 zty?iLerE+o#^yX7a zrAG>d-V&kA1!cfSfU6}TO$WtE7V1~5+=`({R?5(wMKR96NCQ0VldaBEUikk+ zg}{I^3oOa{6MF~$U5|^NoHb@R275(?%IW7a3)GQvT!LCj1><%XwK?3n>aSr<{EDN4 z5;o#?>-(SwSEHM}7@XPeKKbqC$mD{e4H1Z1cEK*qAMW^!f7BsxCM2m(TN?Hn!uA!u z?iaC(@~eD>97v@M;>xmUf3(Db(Ifm`{xm+VRZGvu8r=YuX{odWMfCF%7H$>kaKWEO z;@kDCS3TA}gPa;3DkpZyh0h6GRvnzSn zN?ZixX&H+Ko;N{3Jc+%uQ~o%#;wr&C5pe=aXCGSI2ssCNr3ZE%Cobitvo5}cf?8y! zafl*(v4kWGVQ|*7P-r*e>aEwepkg?{ixyUW-|UgddnCO8;|Qt&vHR^M3wd+a>;3VJ ziOMiF(sHF$ERQf!gs5a%J;#H84Y7D?M~6YL|NNi69z5<$foxvQR~x-gfc`Vs9&Twp z-4`-#!~7E(M1nYaibh6}PndipkG93ySckku;2Bc@iPwxaFbI!BfkE>rQg?Xt5fEVW zd<9lCf`1au#3MvaVoJS$_P!YZYzgbq`Mw4JN+#q(P@m#iLOc==rjggefoQ5alJ)(X3Ppv`nuz%ws zMUPTK$=1j1q%w&chzdE)f%56prEb({(WE~a7jSco60DOrw~7KDYtd;fimQYMTYNq{ z1`bsU$P$mH;oC#0TIW;qdIduu@aVr>Q7R$b1t?imh=JSO0#B}Tx&8;AO5C&c(kE!k ztxsLUXPqw9ro&1*UOk;Lu5t+wm;$KBSq38VL@n8b6ivAT=HN@><7~R&J%Y8W{i(s>W9whHkBvd~$jS}xhzY!1>Os60z^cdfXjX z)y`=t%$78|TE7XBB5P7l)z_}m7s8FB zm^QH8cka0M?=>5JO1o^db3+%lN41zMvAk05oaGV*utJ+EBZ?ex3Q1CRt#Iop=I;)b z(_Mv=t7q98 zelS>Pk%NOn&O*$nz%};xpAdX5CZ(m7a#9N^(4NvKtl0?kj$uB~2;nDw!2A7^!uY%E zOq+!)!9SS02rokR^J#GWn}0oN%sin0!XKE-!l|vYpZJYR#oBTvbKqCC$=St)q0)UX zE+RG#8g#P(fp$tm5A=)td&20bGxD<+=pFDz*iak z3ktKH>u69N%0b{Y6p~ZEHhITQ~t#?Xh#HpwMM%g zy&Yqdpq}GKM-01X+%bAmJ{r(4A5KRGT>LZo0J)R}z}HLNSN((yU74#x6>xcZIm4?P zIDc9nFzfMz93tItsOwSEX@c&c{Vr{#pH?{1sCT5)Nv6SuVXk6&uBlS-WujB)cUlbL}*{6Vl)o6E#$Ixr0;_`>$ zOk`&sl|d}u;_+MFLSIiiu)Y1R^oQQTW+BME}WQ`t+&WIakoNupq=_YM-IGdHECn&vAKjCVvjAryzUf z`V8m*9Z@Q$y!L|@z6iZW3`JCYt(>XM^%yZ?g!1{aow3%~4jlSp?-lu)kLp6z)nR<_ z9Y;`m(gK-c1zK~+yJpOj^gX?uagxYKQexsFpj{T*@<~Hca8JK&sC<;kSCU~7v2~$m z8-_^Ai(UBH0Xru0IVLVlFr8eO@3rC)q8h{)krbQec+y~qFbE9TRws0B`}w<(s+ik@ zwpan$Zodkknkb|vh=mCP8u|Wwo}anWP$Yb&BIx65Jc0pLLQok zy>P2PdfkpIavv@y$b2F0$gXY$M&X*XhJ&J%_FyVV=;iU|1>X=zayUcF+HA*Pse;2# z{EGKS$IJ0_461|1=QNW6;V%!>xbqqDOhMttf527=h9m)x&Iv0by^%gW{CN_wHzq*+ zD!37e2nqT4?okqZtbsDht`LA4F{q>>-75RLa>s+>2UPr-?+fT}hzL*7rny_Ph5**L zrTrrVn8&Dl_tOg;ktb#f?O-9Ybu`tkz|C)|x?m)EKTy{MFpW4Zsn)&o5o~59_7Ect zRaL_ojLxU({p!aJD01$t+lT+fR|oV>SR3%pEFdD`UA<>(dfdqAQ3&jL#o5_eV*lOr z`4Tg8bBZ=t91z}3!K3P!`K9c-b+td4p*yMrqJ0v6p!@f_W)@B)@58y>dY-w$^+%2z z8s){paX#Wqwp!2q%+1Y70is>b(w{dU`kZB3eSrX>tZ7%=s`uu(EDXV$460;DLyDvl zRl_Z)9;jmKy0O`ixV?9YDzJ67);G$|1*zDUfeY!OKci9LX2 zWg9zd>uB&7d_KpYZ~CPF3-u3q+Z{e9?g9;9SaE*mgWGWN5okO5ih}EOE#g z98lm4ik9jcyu)b07!(uA9EKK-Nx^Qpg`C47>S7yi{5s0c!Olq#?Hqx!mcYr2`-u>{ zP)=pLSRA!rFu_m8E8OMcxt%#>4sbZ(acY9I6#QwyP z=>N^2N#8@yOoU^3f+q&gHnZoXi5BxDHzfzF$d3(N{AO;g@7B9-K;hzfzO-MTasAJ@3`ZSE0tIhAAj#{hPCnL`mY_Dr#TiM^ zM{dk%HweCm+|!{pN%pn613yOI2^z06mle?TD`P?+uJV6Wg;v)Qv>C0YF+qQ(x(mUy z{9b=tUTLU^Yqi2yFwYU7pC@X*-i2xDNl7>_umDzJ=H`O>7Ac92*1WUwGmRdjgD2 zohp(}soZq%)Tu2AE>!ypBCTbQ570X5=hm=i)&0MD-2_i{5W5t5&wW0B#}p4=m|BV@ zQBhH>@lw}=iDCyUio|~pX|eh@^O!1gG$pws4)85El}_bRj+wtDwFR8ULAFuxD1j<9 zRz#Vbwh^m${9ON%JY1z%iH7NTbZRK}{G}0y4vF10~i* zx^TJg?H_>6Sk8LnqCNEBPl~vS65fIm7+Q#^sk9i zIOuw~L;laQdyoI+?w^hTWk;7nTKY9hn(v)4_g{o9BNhV}mW$uSznGTa`wB?XQ6MGCwzohN zG15ZKuzsLX|KquS=1-$nPM&t|m#>I`6crVPrJ)61OsEK)){F=CZ!Udz{D5#;Lh!Kn z@i}SuZ>l~AF77W@ug`iPpF^+#YRTvOnkdS|SVl#k?wbz?B4fj0=M~bHUbtXN-_-dvgva z-qaT~?xWKb>VWuFaQ#7BY+O;$7_^MlQl;=w1QOJ0%KuahO;6Yzgv(n6z>iIDEhgghGA%+?}@rK9T?e!HjuL#hy0l`(mPnGRE z4^Ad-rivpdUTs?^yP6pve>3RipV8lncMcnS6W2Lo-NR=WqiR9y@EC2u%^uIEn7s$J z@yH+4_FJBA7Ft+%4Dz802pd*+18tT_Hi3BZeWZrIR(J>SlB0Uk9jTk=9*}V&Y+{;Z zRx?eO90IZ}^$Lw+0){_A|0>}ShQoos8#{yAg4fGWs#j1Z@NBY)aXn9++JUi6=G-i? zygKWeSIc;EpfvUDcTlZ_9BJ;41HXv5Wxzif>FIr! z+GeF(f(nh+vox|75zrPwL2-%;f(;sL9x7`5JVs&sx)XJ$KaeHg2O(<#EypjSHqkUG z6vt-N@tK4Ep^`AnZ~JnfuVqxC9RX}YmXw4OJXgPU={}Uu;6(^0v4i-bz0@e2 zsd((b&g{DsjpLa$(6Cm*3e#A^!Ghuxc{mNAW+Fnlw`UKTKd5=ih%-V<>i~LTV%*RA{G1j9+CrepaS%N?K!;HZnr}Zh4v-21 z%5hNoO!K0VI8Rn@1QdOhP9y-L)WNgpgFy5EELTw+lhQ>5rF!E}Lxnn;%(IvZ1r$Y% zM5<92MgcHzfMSPeA8Tsx_nWiK!2umWe(1GVAjHF;laW@O5=EsCu_m=Id(Y<12Us@yzQ;x zT3Q}*yZ5cyImmJsk5MLK-OfX`7}SWgq;G%bA_#o%s?7y7GHs-qh|xsA7AXpXsK>_3 z7xR;12}sj&BI!uXjqs6WDi@qSPjy+gPu(>Nq)eU-4AVHXiYyqxXGxbS9upym20&6t z@Q%`Ns)b+r5Q%zC!Jd!QWYH*N`JYBVn80>{d5OAv6n^A4<{da|Z?OaDvVxcjK)9wU ziZO3`ruvn_70x>hiro8fHiY{W(ox6Q}9E^)_RumLe927kTK8{CUGa#SWd5zUtOr;YDPT^uD_5gIq z*n`>1zgQE{@&*s=m^=RROk{nkw0TOZ2Q*<{vZv8!g?`l-$MX=QIK*`cbq5&#K z&TsiXHn1zAHkVa<$BSwX9ifp~gv3anUK$ZXX}ykzip*Ho))HhUK#~bMpQR-y^GFY& zY{Cn-f?V{;`W1m23XR6{xJ&92>q{f_6LR~`0Y&2E?+g&>oaEwQ8FNFiEf1rGsxq

$sI`Quvl%}dZ^~YfdJ{j5weO!cY+8BneuG}u3}0H)yn3m!Cc)4+38774&8v7 z{F=1I8a2M{RI-s1dJKMY>1&-kb|lCni)}oE z0?OO+nL4M>K{bMi7{Q+g>{IS;XRd7oV_6EpQG{k5*hxxRu7b;n1252kdgS=*nZRE} zg^>S;0jtPveu?<#j>vlq2qPUlbbdbGf8mpYnU(9GSC;u{P{crCPD2(7f-8AEj;sVV zNHk~VAr5$HDK)}~Igb$0Kz`uSsg*0g9V#4s2p+8r5&R}9Xfip4xV#l!CCo6N7|)r` zgJlVjB5=(l4nPqw@+y-I;Gla~{Ko2KSFV~3;&W28e|5K6&O+JMO;VmWFbIQivEh_~ zQs==;#O#NtCq_|BF>HNB8C+*Mtjd~@M-uT&K9nc!(5w1Cb?O8>fr!7ijl-8<5~wq! z2MAdax^ec_^u6|{!aDqHGrDLa$elc(p5*`rfSh$4uV(C{7F+REOMkN-zg7u}JE?lU zt|r)ZZKy}KaK@705Ku4v9{cMQ)cf4qZBU8TL7ZzrNfyj~kD4hZppha_Ettpx$Dh_& zY?=BinPk-nmN_VL?C1dZb#GA~4%_{f^r}!eY4YxtwedHa=-7v$N(NBejkP-}usSwQ zR4i0iA;ZiqU(_-Gy4?8dAZRH#NPOLkp@|ZXVdCyojrsvc z_E`@GYT%R#MEhgSuWPVs#hKUopN-rT3z9Z2fyig>d;7oi`dZeR6zbqtA~ZFy1d&Er z{<8`%n$b_Y>DGS1U<>23;o8ql?zw%)$SnBcqRW?<$N9-^J8j=#9#+IIb@32 zf?W?xbtrJ5D;0^W6f9Iuh7@b7$ZqYz^5aAY_fZ!>gcVsz6=Sj7AeCzm2ZdWv2T09% z7ghSIhVbLzPsR%%PeYhiFfq0KaThAjdeFLSFYJ>2x!mZH<7KKo{Quu+H1Mwt5Su)g zd9T;g(}Tg9C&YkL=J$Il>oxcgl45t*{(~UM|C#ecyoOt<_(;ZfRO^Wf9@!n8vrC1 z^MC@D=auLiDGe76ufr=Z)}AQ)JpoBkz5(2Xs9sW1QX$6H4!}pakq5v+0c`r~H&kpx zANVJ9heq7_SWQ?lJYlYSLjTpKbl}B*%wc^Fv9lE&1;$GQ{+z=67Gk>HTOUSYLLkQ& z=mG3OcVNt=6%CSi{Q*tDUEv%EkbI#&b7U79umC&3pb}o6bm<{}E}S%qWDTDC|aHNOuUS*oKnz2xqUIcNME}j5YpY=`iYe#T@p-}ELqb0X0MFa##7|k<}yMS zUmfuBYX1_Eiw}5r=r5mB2akYK&k&fiu>aQAn&H;pAyCBBfOyS8q?(>)uclJE@x3vZ z3g7fq|J`Iq1G313FQPBBDc5*J?m19_9M@Q?6c%pP9$Dr)kzy_n7$HWi(|_|@ariAk z6@oxsf>!c>wRi1NQI`99I<+)AqPfjHQt38FF%fYqSfpIE?PWy78y7`|tqh=`<`9~4 z-F3`W#&$D+TvR~OP%eU?8KVM1iCh#!0VPNckb*68(YQ0`dEWV`tkYVpbN=a^C2Q$& zDKg)D^S$r;`#rbc3{+Dbw2^7bC|K&xs!=~GBL`rw?I)&o$d<{`%&j9{!Oy`Ox?2a$ zRvaAHFm&%`Q0Tz3HVruV@e9xscU3o7bR0n+>jf-`Cyc(w6zKvkgP5~MQ1dQy+wCDu zSX`XDH7HU#+2ghY?pOg`>Ry-u0}F80UMvGJXUe%RoF4k-lbDYR!-d_jKQqCX>9TVOu#UG_J6@GmKSU0PO>FB^hkZii_F|AP`>^ z-x%1EE&{qA_b%>b1HRt|dK5a4CMwp0J*66iECiD?ST8DLBqrG9f!p3eok3{s{a}nM zp&y;uR1}AzGAM(+jQ%Ue+GH-2kSfO}AXO7#s6Nd3&9{LT6`4!Wn^iohnQ%ub>O*Hp zXD0|f2T#~20|}6G>=}a1ocbWRd_*EAmVQPtqt1-cPkHk+F8fhrl4S#$tk?zxM!MpIM#vW0i#E_ zg)+a0vrG>Goq9Bc1G9A&G?cA*BS@Sw`eL*JjV~VDa*F8g4 zwSVSwhQGpLWm|!!J^a*aNJuD*rMh@?PJ!+lvE_0x@<9c(XsN0}7nxCR?_`?uSLqvq zLy7y*;LPKRwz2S2yU-Q4!$^1^bC^B9xHRyiq6A(e#8t!?n5;sT^EDdk2z@BHlB&_| zbFi97y{4)#DnUA89ewSv+pWml8+6nWd%aqY+Ma@`wHfIYPC-I=4^lNem_<08MQ6pF z8RXa=0`kLHoB{|6qnU98*3j_64{Qyw-9@w8Vav`o4^6X@lYQ$O0wbZEo2Y=ig!cAm&u~}3`g`a~q@(uJnJUbctH&~7({vznE6yAOBn+_N+-AzOXy6T* zu<$-$*{c9?s{hOhjQqN3AZ?L)KP01fpniaO>J33GvL_>0!-c}AdUlH%Z$=$Z*GrOa z3`X77`21R_vn{Ps+K85o6D(D77MRxtgi4gp;8p|?gc#f?0__;Nqw$`=3;y2{t;Ux`s1i#qs%pUR@G$6O+w|2`LMw5Uq{U|s`MB>lcK1FN58UZ z3A+!qD*YL(b>=ahw1jNNhzO;ToHP`u_7IqZ_9B7N&cUaVxdBv!Vfgu8O@#WHLK;| z!J8MSrr?gC37LVk7V444btU8ZO=;-_sz4drezO6VqjBTjLHcLmuo9gU<|~GyU{Qj! z-39F>!7n1^L{b=mb||pFi(_Ir7K{F8!17lBmY%C>pdpZBN6>nRkV@2;jn~2#AD1iG zR;N0rOPiaEjXPhDDOITI3Kv+WWm~srlXy%+6RrPomxK`-q%?R!TWrXHu2POkN_((g(kHG0?|Vqi0TS z%`EYsCUm9AEgJ4NIDpn{@#e5F7G^6^-*KEghUeZ>d6EaNyK^t^6QHbaI9%W$elW$q zT6#FGLWY3mp&}oM)zqCA&;u*fB$`?@T#QgCCn-N7N#NX>JDLGdoB~Sx$f5J}pCAGg z<^ntb$$YR@RKdZ z(0ii}sAw8s%k_>NT{R`V(EPbDx?b!%TZbiW1_&41Sw&a4Zr&F*_)|TR`-U?nEdvJl z3jaW43)C~!9b4f$f5r2?JH68c^rEZ z6m<^E-p6h4rMc|jR6WORN)m>Q7m52mfmzs4QAl;R+$(xc4;%S*mVPLyOo%~aBg`PM zi#P>33N6beYDYF70IQ4H{H~PgcuFE~A9-f-X#C+8{(#qsdrK!u7Mn%T@IO7Ju65g{ zj=FxSn3fibU>F-zhA9B(m|c1QQ+h!D#c=gvTF2i=XV5D~kw4DRmXH#9`&1|lSR%1Z zfwVB3>Sz4*dVs}F!&7xtn#EZ3{Z^M)oUjk3L&^_~Vt=U*ms1<6led|9ZHt-I%z$B` z90C19*E_Mxv4$yohPkqEl*8H(w55g=-*OT+8cq}s<-LjG&D^a$iJDv{o9an_6)GEO zX+xNoC+4W6FRs?r3 zqB@Pc=89Ko8A2)C3!g#2GSc~L+$y<3S-)3ny6yXa{%sT8Lh3s7W7;ousCrK0-3bOV zS;e~qRp=(<#<8<{JEtg6O>6sJD&yZ3WuVB*&0ZI;;ODgiS~ABxTmilD3N>MF)?ox* z_xs2Gf&ofx{)^aT?ruDdxPu)1t*As;3ou374ScgTL_!=RvEPS7j-TLOVsy%?AUgx` zg7Bgn^42hPffYYWF+yVYUEP?6N8vto-q7vd0Clzd(97at?Stw2aNNh^2{JBE7XEf? zEK&18f0KY?1mziHS(D&E{aZqd{Muy^*WtNJx1V3PBn;yFS^Aoei2C{W;BQOU2kw zsD~K{!sHz#@O={FHQlH#s#3)53`*xF@lq*iUA!C3LneMz1BX_q**>D@vti8O+U;MB zq7HZ_8e=ciWHhR<(Z{cVs2()Plkv$X_Vilx{c2a1MzcF}qqq~x0n)2E21u#o0SOhSM}7u@1Z(_w?? z%^LB>8R<6Zp;uR)LE)BwJSV1nqgy@i3eKXx^zkn%axt8n%Msds*v;~fVWVVm`p%~! z=?72tHb~eOSax0-Zc)(<09&qrIno{!pmx{&C3_L>Bll$P>5b1A2_ z=U4JUy|+i}uGGr^MX0_u{IYt^f+j$r#y0ZiBRq8CE9o$G`M*{4zVi>M?n|q(gDea$ z`y=V|9y~F2WIEuMam5Phx#GJ62_}2;4WK0f+7*~SS1c!)%>LQgxENF*Lbz_Bl4!G> z=xf9D(mrxbubsDL%Y((0v`H(}3@$1&H$b13TWk1rrt~A?j@&we%S6e!m@%3@dm21F zJ!b+b18cb>++wTLImcZ==lszvw0_J+WoFKv<#|7f_TJh5sm$}AC{!mYz+op7#qr6{hk*cNnHNj z5C7OpUb@Hshc>CFS1j(pZ`mz>$Kw`cS_({oh@A*s!&yp|ha2qG5cF=&TqvDfjz(PZ zL{~_}38e#PP%#e;s7(nauS^;O8(%+mgzi(36tNV<(BMTu1r(2B5-?WT>wrM6pa$Zo z0oDHJb^oR1BsYw7iAr6h?uF`>Nq~*l^j>@01pQtKfpM7K64y=`0P$W18}Z>BaA(vP zb5I^KHMVEAqk>(c7D7dH$ykxId7=kwR5;Nhz@B+G^DQnkLcHgWl z?Dm_Spvu--q?l=RCU7XoPGV+dn;GBTnx_EI_UCJz8jpY#)=hAPUmym!K$oRA4AjMGxu9|{Ut8RJ_mZ; zj%tH*qVs!3S9pDs$2Z$DjulW^<4=n2|K=uPhPPb7X&9qooK+Wq0_)Av>D*+x0v& zw?x}(OKk4~GNV@mG|$lX_cRpGEGZ^e-aK&5SeX8dM*SaGg-;rybJmSDF5tLj!AwkeHA!{ zNO9Z-2s{JA@oKOy0?BpOUP^6jY*bd1pl+f3i9w%a9hv=3a-E$f6G8}6?GE@Vr;K+^ z)6t~GjS16P%_pD#1meXh9WTm~*IVa)h-`gL^DQ9QRPAyOyDcyv&e>+eQnc0qdM{?t z5pIE4??SGxmLAfcc9=I+Ko}<}c0hZ|?oXtWA_Wj_rx`B?`;J3<(uZd&2j4l*#7Mpb zy9&z6kfK7c{j>OUs57ydbz4q;kAOd&@k~pg ze5d>UlQ}Q&*%GrnFhLs#CAB=t7_sFPT9?YwUS8Ao&eh@l69O1M1;&v{BkmAkFq137 zEL-mJA1DP>*#&)b(Q^1gm=%eeV99QpsWZi0^v@DtWX_1K_Jg<($J@SdDk$}3x&j3O zG%7Nt*&3n-hpz77-6U|Cen6fD8&ZdBeDJKq+2}{wz!Hg3t%#%Td}IBHv_t}CfU!(~ z8|;`>0DW}t-!YvOK#mHw?+N0E#RWsFvvr6h0JOoZOO0)wHzS_ z{!t0seuLW3!I{jk*4|aYh#uQ%f%~*b4b^-9%97`jHK?_ZB_>XxB!oP;t=~9=79W_{ znhQH`6gKi13S#+60A%&A3ej;P_TbVh9JQ!W(`k%P|DHjXE%swD0fVQ*k(i{MbvOPj zCi)Q6P|G2%>-w@|b=%l1fZGn=PnZ(aJrgc#ybE(Oef+3E#JYk*yh@DvQ+?CKYT@&+ zx($p$|6@>3?$DPAu0hUD+@idX267N*Vu+)?)0S|`8<;OY6YiVxzf5ZxPpnK%9M_`N z9H|&z$O}>f9w&Jr)5{E3-p-h?tqp_X?m>8B!~>IJVBp)66gAWIs7x$+OGp&LBI2HL zF|r4R+acy@u${#T#;u9scf*UP#PT{{*M!U(|C(rq<&q4grjptwhqc@1lV@-zMME(e zVj~RT``r@cFeJD{U1P`jce(9`yS4U!nt;aoctV&kjsem{8NU2@q&L=OJs=_#A1e{a zh?8Ic+vBp;Kh#b-(Ansa9gUWr^L3aQoVkFdKu~%jA)uSFVpk}kE&{Uy+JG_FA*LyS zj5#m>_dS)5G2RTjL8~f%wol`k;tn9$t{huH&Jq#y?=f{+hzhZB(+J)GIKB{#gh(Rq z$&CwfY8x?vJk^}+N4|lZz%(WGw4*-=r3C3%=+Z(8UB)x2o_tbRPr=b)1osp)`TA9Ecw3bzUV&;)Rh>CJb(B4Ez6 z5@l9DveYIim|BC!;`E_-ZXi~xxeSkRb_hLlk3W9cy4<+fzSh>ItSDZYPn>ulv>FG!LLX&8b_*49EG8+K>}}gS^sXfxC`_ixY)nj|gAYQ~Mr?~9Hm_haJczb= zTU0F|I|_I}4_m@w_d2k}mW18I(l#(u6HbRi@~*1Ntk27Q$TonX6cjd8-X14JWfAux z)wi<8?g$X}35)@!ML`ONRn6f6$b<*Rkj8d?!`+^2pwQLgkQef5ZGTEL=}AS~9%Dav z@rHJ-N_|E@9$9WoH$-qLbH&uKE>hTry`BN983@DhOLV6zXpD)+G6v%zh4qcsX75;n zYK!L1UZla=su|V%{q^|#1b?%f7s$E7X1;(KKL5gfGhBBLy}2vg4dO}Xd13}n;4AMg z<})%m^^>xN58fP_qo2U~W+VL;(1CKm58n-6HrizMj`$c9CUdYt=_dhLWBF(dLSL^^ zMNPJr_#MYvTtGcWJtIv}TrivgVE@*?r)?PLm%Yl~p3zd2(lCpy-rBi)Mb@L^#>dlD zU)eOOn;hy>cY*{f;m?GMx&a?s5h^9fM}-j`5>gSG0B*49M)qWvJy~txsdc1@C9n|2 zPZ$YIDAuFs383uMj)&X$9vz*2h6c7K4WNX7NaT*!i?63`{Lf1GpJfpJj;2_513^MO zHS<5c6}mg{8@T_I9iDWvp02#7D^Ge9{ujvH|GSlUNIU$xN$TY*d9OU=dsEC``qxwQ HTt4_OqV+Ab literal 0 HcmV?d00001 diff --git a/BorisovMI/lab_2/docs/data/report2.md b/BorisovMI/lab_2/docs/data/report2.md new file mode 100644 index 0000000..8a9edb0 --- /dev/null +++ b/BorisovMI/lab_2/docs/data/report2.md @@ -0,0 +1,252 @@ +# Отчёт: Задание 2 — Поиск выхода из лабиринта + +## Цель работы + +Разработать гибкую, расширяемую программу для загрузки лабиринта из файла, поиска пути от старта до выхода с возможностью выбора алгоритма, визуализации процесса и экспериментального сравнения алгоритмов + +## Выбранные паттерны и их обоснование + +### Builder + +Для загрузки лабиринта из файла был использован паттерн Builder. +Создан интерфейс: +class MazeBuilder(): +и его реализация: +class TextFileMazeBuilder(MazeBuilder): +Преимущества использования Builder: +пользоватеь не знает деталей создания лабиринта; +можно добавить новые форматы (JSON, XML, бинарный); +код загрузки изолирован от остальной программы. + +### Strategy + +Для алгоритмов поиска пути использован паттерн Strategy +Создан общий интерфейс: +class PathFindingStrategy(): +Реализованы стратегии: +BFSStrategy; +DFSStrategy; +AStrategy; +Каждая стратегия реализует собственный алгоритм поиска пути по правилам. +Преимущества паттерна: +алгоритмы можно менять во время выполнения; +код MazeSolver не зависит от конкретного алгоритма; +новые алгоритмы можно добавлять без изменения существующего кода. + +### Observer + +Для уведомления интерфейса о событиях использован паттерн Observer +Создан интерфейс: +class Observer(): +и реализация: +class ConsoleView(Observer): +MazeSolver хранит список наблюдателей и уведомляет их о событиях: +начало поиска; +окончание поиска; +перемещение игрока. +Преимущества: +логика интерфейса отделена от логики поиска; +можно легко добавить графический интерфейс; + +### Command + +Для пошагового перемещения игрока использован паттерн Command. +Создан интерфейс: +class Command(): +и реализация: +class MoveCommand(Command): +Каждая команда умеет: +execute() — выполнить действие; +undo() — отменить действие +Преимущества: +поддержка undo; +возможность расширения системы команд + +## Листинги ключевых классов + +### Паттерн Strategy + +class PathFindingStrategy: + def findPath(self, maze, start, exit): + pass + + +class BFSStrategy(PathFindingStrategy): + def findPath(self, maze, start, exit): + if exit is None: + return [] + queue = deque([start]) + visited = {start} + parent = {start: None} + + while queue: + current = queue.popleft() + + if current == exit: + return self._reconstruct_path(parent, start, exit) + + for neighbor in maze.getNeighbors(current): + if neighbor not in visited: + visited.add(neighbor) + parent[neighbor] = current + queue.append(neighbor) + + return [] +class AStrategy(PathFindingStrategy): + def _heuristic(self, cell, exit): + if exit is None: + return 0 + return abs(cell.x - exit.x) + abs(cell.y - exit.y) + + def findPath(self, maze, start, exit): + if exit is None: + return [] + open_set = [] + heapq.heappush(open_set, (0, start)) + + came_from = {start: None} + g_score = {start: 0} + + while open_set: + current = heapq.heappop(open_set)[1] + + if current == exit: + return self._reconstruct_path(came_from, start, exit) + + for neighbor in maze.getNeighbors(current): + tentative_g = g_score[current] + 1 + + if neighbor not in g_score or tentative_g < g_score[neighbor]: + came_from[neighbor] = current + g_score[neighbor] = tentative_g + f_score = tentative_g + self._heuristic(neighbor, exit) + heapq.heappush(open_set, (f_score, neighbor)) + + return [] + +### Паттерн Command + +class Command: + def execute(self): pass + def undo(self): pass + +class MoveCommand(Command): + def __init__(self, player, direction, maze): + self.player = player + self.dx, self.dy = direction + self.maze = maze + self.executed = False + + def execute(self): + new_x = self.player.currentCell.x + self.dx + new_y = self.player.currentCell.y + self.dy + new_cell = self.maze.getCell(new_x, new_y) + if new_cell and new_cell.isPassable(): + self.player.moveTo(new_cell) + self.executed = True + return True + return False + + def undo(self): + if self.executed: + self.player.undoMove() + self.executed = False + return True + return False + + + +## Результаты + +| Лабиринт | Стратегия | Время (с) | Посещено | Длина пути | Путь найден | +|---|---|---|---|---| +| маленький (10x10) | BFS | 0.9148200158961117 | 19.0 | 19.0 | True | +| маленький (10x10) | DFS | 0.717819994315505 | 39.0 | 39.0 | True | +| маленький (10x10) | A | 1.577159995213151 | 19.0 | 19.0 | True | +| средний (50x50) | BFS | 14.496059995144606 | 99.0 | 99.0 | True | +| средний (50x50) | DFS | 8.470179990399629 | 393.0 | 393.0 |True | +| средний (50x50) | A | 9.11291999509558 | 99.0 |99.0 | True | +| большой (100x100) | BFS | 0.013179995585232973 | 0.0 | 0.0 | False | +| большой (100x100) | A | 0.013079994823783636 | 0.0 | 0.0 | False | +| пустой (50x50) | BFS | 29.2012800113298 | 99.0 | 99.0 | True | +| пустой (50x50) | DFS | 13.176999986171722 | 1275.0 | 1275.0 | True | +| пустой (50x50) | A | 50.366899999789894 | 99.0 | 99.0 | True | +| без выхода (20x20) | BFS | 0.004239997360855341 | 0.0 | 0.0 | False | +| без выхода (20x20) | DFS | 0.006399990525096655 | 0.0 | 0.0 | False | +| без выхода (20x20) | A | 0.008680007886141539 | 0.0 | 0.0 | False | + +### Графики + +![Сравнение длины](maze_path_length.png) + +![Сравнение времён](maze_time_comparison.png) + +## Анализ эффективности алгоритмов + +В ходе экспериментов были получены следующие результаты. + +### BFS +Преимущества: +всегда находит кратчайший путь; +простая реализация. +Недостатки: +посещает большое количество клеток; +требует много памяти. +Выходит, что наиболее эффективен в небольших невзвешенных лабиринтах. + +### DFS +Преимущества: +простая реализация; +самым быстрым находит произвольный путь. +Недостатки: +не гарантирует кратчайший путь; +может уходить в тупики. +Подходит для быстрого поиска любого решения. + +### A +Преимущества: +высокая скорость; +посещает меньше клеток; +Недостатки: +требует выбора хорошей эвристики. +Показал хорошие результаты на больших лабиринтах. + +## Анализ применимости паттернов + +### Builder +Без Builder код загрузки лабиринта был бы жёстко связан с классом Maze, а добавление нового формата потребовало бы изменения существующего кода. +Strategy +Без Strategy пришлось бы: +хранить все алгоритмы внутри одного класса; +использовать большое количество условных операторов; +изменять код MazeSolver при добавлении новых алгоритмов +Strategy помог полностью отделить алгоритмы друг от друга. + +### Observer +Без Observer логика интерфейса смешивалась бы с логикой поиска. +Это усложнило бы: +добавление GUI; +логирование; +визуализацию. + +### Command +Без Command было бы сложно реализовать: +undo; +историю действий; +расширяемую систему управления. + +## Выводы + +### В проекте были успешно реализованы: +загрузка лабиринта из файла; +несколько алгоритмов поиска пути; +визуализация; +система наблюдателей; +система команд; +экспериментальное сравнение алгоритмов. + +### Использование паттернов GoF позволило: +сделать архитектуру гибкой; +уменьшить связанность компонентов; +упростить расширение программы; +облегчить сопровождение кода. diff --git a/BorisovMI/lab_2/docs/data/resultslab.csv b/BorisovMI/lab_2/docs/data/resultslab.csv new file mode 100644 index 0000000..59c59d0 --- /dev/null +++ b/BorisovMI/lab_2/docs/data/resultslab.csv @@ -0,0 +1,16 @@ +лабиринт,стратегия,время_ср,время_мин,время_макс,посещено_ср,длина_пути_ср,путь_найден +маленький (10x10),BFS,0.9148200158961117,0.8840999798849225,0.9673000313341618,19.0,19.0,True +маленький (10x10),DFS,0.717819994315505,0.5779999773949385,0.8650000090710819,39.0,39.0,True +маленький (10x10),A,1.577159995213151,1.531599962618202,1.7019000370055437,19.0,19.0,True +средний (50x50),BFS,14.496059995144606,12.946999981068075,18.392199999652803,99.0,99.0,True +средний (50x50),DFS,8.470179990399629,7.544599997345358,9.55930002965033,393.0,393.0,True +средний (50x50),A,9.11291999509558,8.53859999915585,9.788900031708181,99.0,99.0,True +большой (100x100),BFS,0.013179995585232973,0.009100011084228754,0.026200024876743555,0.0,0.0,False +большой (100x100),DFS,0.012619991321116686,0.008300004992634058,0.026499968953430653,0.0,0.0,False +большой (100x100),A,0.013079994823783636,0.008699949830770493,0.027500034775584936,0.0,0.0,False +пустой (50x50),BFS,29.2012800113298,19.71900003263727,47.252200020011514,99.0,99.0,True +пустой (50x50),DFS,13.176999986171722,12.441499973647296,13.887099979911,1275.0,1275.0,True +пустой (50x50),A,50.366899999789894,47.1535999677144,60.296199982985854,99.0,99.0,True +без выхода (20x20),BFS,0.004239997360855341,0.002700020559132099,0.00909995287656784,0.0,0.0,False +без выхода (20x20),DFS,0.006399990525096655,0.003200024366378784,0.012699980288743973,0.0,0.0,False +без выхода (20x20),A,0.008680007886141539,0.005399982910603285,0.01810002140700817,0.0,0.0,False From cb04e571d3d0f5ede872cec59d5a5b3b6fd7a99e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Mon, 25 May 2026 02:03:27 +0300 Subject: [PATCH 16/17] =?UTF-8?q?[2]=20=D0=9E=D1=82=D1=87=D1=91=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BorisovMI/lab_2/docs/data/report2.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BorisovMI/lab_2/docs/data/report2.md b/BorisovMI/lab_2/docs/data/report2.md index 8a9edb0..bdd7597 100644 --- a/BorisovMI/lab_2/docs/data/report2.md +++ b/BorisovMI/lab_2/docs/data/report2.md @@ -159,13 +159,13 @@ class MoveCommand(Command): ## Результаты | Лабиринт | Стратегия | Время (с) | Посещено | Длина пути | Путь найден | -|---|---|---|---|---| +|---|---|---|---|---|---| | маленький (10x10) | BFS | 0.9148200158961117 | 19.0 | 19.0 | True | | маленький (10x10) | DFS | 0.717819994315505 | 39.0 | 39.0 | True | | маленький (10x10) | A | 1.577159995213151 | 19.0 | 19.0 | True | | средний (50x50) | BFS | 14.496059995144606 | 99.0 | 99.0 | True | | средний (50x50) | DFS | 8.470179990399629 | 393.0 | 393.0 |True | -| средний (50x50) | A | 9.11291999509558 | 99.0 |99.0 | True | +| средний (50x50) | A | 9.11291999509558 | 99.0 | 99.0 | True | | большой (100x100) | BFS | 0.013179995585232973 | 0.0 | 0.0 | False | | большой (100x100) | A | 0.013079994823783636 | 0.0 | 0.0 | False | | пустой (50x50) | BFS | 29.2012800113298 | 99.0 | 99.0 | True | From 9f8e9e1384623d08f97949e80a10bff8fbcfc624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Mon, 25 May 2026 02:21:51 +0300 Subject: [PATCH 17/17] =?UTF-8?q?[2]=20=D0=A3=D0=B1=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=B0=20=D0=B8=D0=B7=20=D0=B2=D0=B5=D1=82?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BorisovMI/lab_1/docs/data/structures.py | 477 -------------------- BorisovMI/lab_1/docs/experiment_results.csv | 19 - BorisovMI/lab_1/docs/performance_graphs.png | Bin 119718 -> 0 bytes BorisovMI/lab_1/docs/report.md | 73 --- 4 files changed, 569 deletions(-) delete mode 100644 BorisovMI/lab_1/docs/data/structures.py delete mode 100644 BorisovMI/lab_1/docs/experiment_results.csv delete mode 100644 BorisovMI/lab_1/docs/performance_graphs.png delete mode 100644 BorisovMI/lab_1/docs/report.md diff --git a/BorisovMI/lab_1/docs/data/structures.py b/BorisovMI/lab_1/docs/data/structures.py deleted file mode 100644 index ea514c1..0000000 --- a/BorisovMI/lab_1/docs/data/structures.py +++ /dev/null @@ -1,477 +0,0 @@ -import time -import random -import csv -import os -import matplotlib.pyplot as plt -import numpy as np -import sys -sys.setrecursionlimit(20000) -# Связный список - -def ll_insert(head, name, phone): - - new_node = {'name': name, 'phone': phone, 'next': None} - - if head is None: - return new_node - - if head['name'] == name: - head['phone'] = phone - return head - - current = head - while current['next'] is not None: - if current['next']['name'] == name: - current['next']['phone'] = phone - return head - current = current['next'] - - current['next'] = new_node - return head - -def ll_find(head, name): - - current = head - while current is not None: - if current['name'] == name: - return current['phone'] - current = current['next'] - return None - -def ll_delete(head, name): - - if head is None: - return None - - if head['name'] == name: - return head['next'] - - current = head - while current['next'] is not None: - if current['next']['name'] == name: - current['next'] = current['next']['next'] - return head - current = current['next'] - - return head - -def ll_list_all(head): - - records = [] - current = head - while current is not None: - records.append((current['name'], current['phone'])) - current = current['next'] - records.sort(key=lambda x: x[0]) - return records - -# Хэш функции - -def hash_function(name, table_size): - return sum(ord(c) for c in name) % table_size - - -def ht_create(size=1000): - return [None] * size - - -def ht_insert(buckets, name, phone): - size = len(buckets) - index = hash_function(name, size) - buckets[index] = ll_insert(buckets[index], name, phone) - - -def ht_find(buckets, name): - size = len(buckets) - index = hash_function(name, size) - return ll_find(buckets[index], name) - - -def ht_delete(buckets, name): - size = len(buckets) - index = hash_function(name, size) - buckets[index] = ll_delete(buckets[index], name) - - -def ht_list_all(buckets): - records = [] - for bucket in buckets: - current = bucket - while current is not None: - records.append((current['name'], current['phone'])) - current = current['next'] - records.sort(key=lambda x: x[0]) - return records - -# Функции для дерева поиска - -def bst_insert(root, name, phone): - - if root is None: - return {'name': name, 'phone': phone, 'left': None, 'right': None} - - if name < root['name']: - root['left'] = bst_insert(root['left'], name, phone) - elif name > root['name']: - root['right'] = bst_insert(root['right'], name, phone) - else: - root['phone'] = phone - - return root - - -def bst_find(root, name): - - current = root - while current is not None: - if name == current['name']: - return current['phone'] - elif name < current['name']: - current = current['left'] - else: - current = current['right'] - return None - - -def bst_find_min(node): - - current = node - while current['left'] is not None: - current = current['left'] - return current - - -def bst_delete(root, name): - - if root is None: - return None - - if name < root['name']: - root['left'] = bst_delete(root['left'], name) - elif name > root['name']: - root['right'] = bst_delete(root['right'], name) - else: - if root['left'] is None: - return root['right'] - elif root['right'] is None: - return root['left'] - - min_node = bst_find_min(root['right']) - root['name'] = min_node['name'] - root['phone'] = min_node['phone'] - root['right'] = bst_delete(root['right'], min_node['name']) - - return root - - -def bst_list_all(root): - - records = [] - - def inorder_traversal(node): - if node is not None: - inorder_traversal(node['left']) - records.append((node['name'], node['phone'])) - inorder_traversal(node['right']) - - inorder_traversal(root) - return records - - # Генерация тестовых данных - -def generate_records(count=10000): - - records = [] - for i in range(count): - name = f"User_{i:05d}" - phone = f"+7-{random.randint(100,999)}-{random.randint(100,999)}-{random.randint(1000,9999)}" - records.append((name, phone)) - - shuffled = records.copy() - random.shuffle(shuffled) - sorted_records = sorted(records, key=lambda x: x[0]) - - return shuffled, sorted_records - - - -# Замер времени - -def measure_insertion(structure_name, records): - - times = [] - filled_structure = None - - for run in range(5): - if structure_name == "linked_list": - structure = None - elif structure_name == "hash_table": - structure = ht_create(1000) - elif structure_name == "bst": - structure = None - - start = time.perf_counter() - - for name, phone in records: - if structure_name == "linked_list": - structure = ll_insert(structure, name, phone) - elif structure_name == "hash_table": - ht_insert(structure, name, phone) - elif structure_name == "bst": - structure = bst_insert(structure, name, phone) - - end = time.perf_counter() - times.append(end - start) - - if run == 4: - filled_structure = structure - - return times, filled_structure - -def measure_search(structure_name, structure, search_names): - - times = [] - - for run in range(5): - start = time.perf_counter() - - for name in search_names: - if structure_name == "linked_list": - ll_find(structure, name) - elif structure_name == "hash_table": - ht_find(structure, name) - elif structure_name == "bst": - bst_find(structure, name) - - end = time.perf_counter() - times.append(end - start) - - return times - -def measure_deletion(structure_name, original_structure, delete_names): - - times = [] - - for run in range(5): - if structure_name == "linked_list": - all_records = ll_list_all(original_structure) - test_structure = None - for name, phone in all_records: - test_structure = ll_insert(test_structure, name, phone) - - elif structure_name == "hash_table": - all_records = ht_list_all(original_structure) - test_structure = ht_create(1000) - for name, phone in all_records: - ht_insert(test_structure, name, phone) - - elif structure_name == "bst": - all_records = bst_list_all(original_structure) - test_structure = None - for name, phone in all_records: - test_structure = bst_insert(test_structure, name, phone) - - start = time.perf_counter() - - for name in delete_names: - if structure_name == "linked_list": - test_structure = ll_delete(test_structure, name) - elif structure_name == "hash_table": - ht_delete(test_structure, name) - elif structure_name == "bst": - test_structure = bst_delete(test_structure, name) - - end = time.perf_counter() - times.append(end - start) - - return times - -# Основная часть - -def run_experiment(): - - current_dir = os.path.dirname(__name__) - docs_dir = os.path.dirname(current_dir) - csv_file = os.path.join(docs_dir, "experiment_results.csv") - - print("=" * 70) - print("ЭКСПЕРИМЕНТАЛЬНОЕ СРАВНЕНИЕ СТРУКТУР ДАННЫХ") - print("Телефонный справочник - 10000 записей") - print("=" * 70) - print(f"\nРезультаты будут сохранены в: {csv_file}") - - print("\n1. Генерация тестовых данных...") - shuffled_records, sorted_records = generate_records(10000) - print(f" Сгенерировано 10000 записей") - - existing_names = [shuffled_records[i][0] for i in random.sample(range(10000), 100)] - nonexisting_names = [f"NotExist_{i}" for i in range(10)] - search_names = existing_names + nonexisting_names - delete_names = [shuffled_records[i][0] for i in random.sample(range(10000), 50)] - - results = [["Структура", "Режим", "Операция", - "Замер1(с)", "Замер2(с)", "Замер3(с)", "Замер4(с)", "Замер5(с)", - "Среднее(с)"]] - - for mode_name, records in [("случайный", shuffled_records), - ("отсортированный", sorted_records)]: - - print(f"\n2. Тестирование режима: {mode_name}") - print("-" * 50) - - for struct_name in ["linked_list", "hash_table", "bst"]: - print(f"\n {struct_name.upper()}:") - - print(" Вставка 10000 записей...") - insert_times, filled_struct = measure_insertion(struct_name, records) - avg_insert = sum(insert_times) / 5 - print(f" Время: {avg_insert:.4f} сек (среднее)") - - print(" Поиск 110 записей...") - search_times = measure_search(struct_name, filled_struct, search_names) - avg_search = sum(search_times) / 5 - print(f" Время: {avg_search:.4f} сек (среднее)") - - print(" Удаление 50 записей...") - delete_times = measure_deletion(struct_name, filled_struct, delete_names) - avg_delete = sum(delete_times) / 5 - print(f" Время: {avg_delete:.4f} сек (среднее)") - - results.append([struct_name, mode_name, "вставка"] + insert_times + [avg_insert]) - results.append([struct_name, mode_name, "поиск"] + search_times + [avg_search]) - results.append([struct_name, mode_name, "удаление"] + delete_times + [avg_delete]) - - print("\n3. Сохранение результатов...") - with open(csv_file, "w", newline="", encoding="utf-8") as f: - writer = csv.writer(f) - writer.writerows(results) - print(f" Результаты сохранены в: {csv_file}") - - print("\n" + "=" * 70) - print("СВОДНАЯ ТАБЛИЦА РЕЗУЛЬТАТОВ") - print("=" * 70) - print(f"{'Структура':<15} {'Режим':<12} {'Операция':<10} {'Среднее время (сек)':<20}") - print("-" * 70) - - for row in results[1:]: - struct, mode, op, t1, t2, t3, t4, t5, avg = row - print(f"{struct:<15} {mode:<12} {op:<10} {avg:<20.6f}") - - return results, docs_dir - -# Графики - -def create_graphs(results, docs_dir): - - print("\n4. Построение графиков...") - - data = {} - for row in results[1:]: - struct = row[0] - mode = row[1] - op = row[2] - avg = row[8] - - if struct not in data: - data[struct] = {} - if mode not in data[struct]: - data[struct][mode] = {} - data[struct][mode][op] = avg - - - struct_labels = { - 'linked_list': 'LinkedList', - 'hash_table': 'HashTable', - 'bst': 'BST' - } - - - colors = { - 'linked_list': '#3498db', - 'hash_table': '#2ecc71', - 'bst': '#e74c3c' - } - - - fig, axes = plt.subplots(1, 3, figsize=(15, 6)) - fig.suptitle('Сравнение производительности структур данных', fontsize=16, fontweight='bold') - - operations = ['вставка', 'поиск', 'удаление'] - operation_titles = ['Вставка\n(10000 записей)', 'Поиск\n(110 запросов)', 'Удаление\n(50 записей)'] - modes = ['случайный', 'отсортированный'] - mode_labels = ['Случайный', 'Отсортированный'] - - for idx, (op, op_title) in enumerate(zip(operations, operation_titles)): - ax = axes[idx] - - # Позиции для групп столбцов - x = np.arange(len(modes)) # [0, 1] - width = 0.25 # ширина одного столбца - multiplier = 0 - - for struct in ['linked_list', 'hash_table', 'bst']: - values = [data[struct][mode][op] for mode in modes] - offset = width * multiplier - bars = ax.bar(x + offset, values, width, - label=struct_labels[struct], - color=colors[struct], - edgecolor='black', linewidth=0.5) - - - for bar, val in zip(bars, values): - if val < 0.01: - ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + val*0.05, - f'{val:.5f}', ha='center', va='bottom', fontsize=8, rotation=0) - else: - ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + val*0.02, - f'{val:.4f}', ha='center', va='bottom', fontsize=8, rotation=0) - - multiplier += 1 - - - ax.set_title(op_title, fontsize=12, fontweight='bold') - ax.set_ylabel('Время (секунды)', fontsize=10) - ax.set_xlabel('Режим данных', fontsize=10) - ax.set_xticks(x + width) - ax.set_xticklabels(mode_labels) - ax.legend(loc='upper left', fontsize=8) - ax.grid(True, alpha=0.3, axis='y') - - - all_values = [data[s][m][op] for s in ['linked_list', 'hash_table', 'bst'] for m in modes] - if max(all_values) / min(all_values) > 100: - ax.set_yscale('log') - ax.set_ylabel('Время (секунды) - логарифмическая шкала', fontsize=9) - - plt.tight_layout() - graph_path = os.path.join(docs_dir, "performance_graphs.png") - plt.savefig(graph_path, dpi=150, bbox_inches='tight') - plt.close() - print(f" Графики сохранены в: {graph_path}") - - return graph_path - - - -if __name__ == "__main__": - - results, docs_dir = run_experiment() - - - try: - graph_file = create_graphs(results, docs_dir) - - print("\n" + "=" * 70) - print("ЭКСПЕРИМЕНТ ЗАВЕРШЕН УСПЕШНО!") - print("=" * 70) - print("\nСОЗДАННЫЕ ФАЙЛЫ:") - print(f" Данные: {os.path.join(docs_dir, 'experiment_results.csv')}") - print(f" Графики: {graph_file}") - - except Exception as e: - print(f"\nОшибка при построении графиков: {e}") - print(" Убедитесь, что установлен matplotlib: pip install matplotlib") - print("\n" + "=" * 70) - print("ЭКСПЕРИМЕНТ ЗАВЕРШЕН (без графиков)") - print("=" * 70) - print(f"\nCSV файл сохранен: {os.path.join(docs_dir, 'experiment_results.csv')}") \ No newline at end of file diff --git a/BorisovMI/lab_1/docs/experiment_results.csv b/BorisovMI/lab_1/docs/experiment_results.csv deleted file mode 100644 index b3a472b..0000000 --- a/BorisovMI/lab_1/docs/experiment_results.csv +++ /dev/null @@ -1,19 +0,0 @@ -Структура,Режим,Операция,Замер1(с),Замер2(с),Замер3(с),Замер4(с),Замер5(с),Среднее(с) -linked_list,случайный,вставка,11.072574299992993,12.38099840003997,12.155311000009533,12.81002289999742,13.201067199988756,12.323994760005736 -linked_list,случайный,поиск,0.1209169999929145,0.13400630000978708,0.1302103999769315,0.12179599999217317,0.13267739996081218,0.12792141998652368 -linked_list,случайный,удаление,0.05278969998471439,0.05019940005149692,0.05289009999250993,0.0488043999648653,0.061356800026260316,0.05320808000396937 -hash_table,случайный,вставка,0.694432099990081,0.7192347000236623,0.7134853000170551,0.6891152000171132,0.6973775000078604,0.7027289600111544 -hash_table,случайный,поиск,0.006584499962627888,0.004749000014271587,0.004359900020062923,0.006477299961261451,0.006112299975939095,0.005656599986832589 -hash_table,случайный,удаление,0.004070399969350547,0.004140400036703795,0.003542299964465201,0.0032371999695897102,0.0030583000043407083,0.0036097199888899924 -bst,случайный,вставка,0.08137199998600408,0.08989329996984452,0.08159760001581162,0.07841239997651428,0.1001471999916248,0.08628449998795987 -bst,случайный,поиск,0.0006561999907717109,0.00043180002830922604,0.00042429997120052576,0.0004227000172249973,0.00043509999522939324,0.0004740200005471706 -bst,случайный,удаление,0.19723930000327528,0.166880399978254,0.147482400003355,0.18100009998306632,0.16498840000713244,0.1715181199950166 -linked_list,отсортированный,вставка,12.294058899977244,11.597062399960123,11.59195000003092,11.623520500026643,11.401553199975751,11.701628999994137 -linked_list,отсортированный,поиск,0.10066379996715114,0.0991929000010714,0.09696789999725297,0.09909789997618645,0.09873830003198236,0.09893215999472886 -linked_list,отсортированный,удаление,0.05669830000260845,0.048193000024184585,0.05076910002389923,0.04920080001465976,0.05905079998774454,0.05278240001061931 -hash_table,отсортированный,вставка,0.5518350999918766,0.5407364999991842,0.5291212999727577,0.5373308000271209,0.529426000022795,0.5376899400027468 -hash_table,отсортированный,поиск,0.005108800018206239,0.004848999960813671,0.004103399987798184,0.0038874000310897827,0.005848900007549673,0.00475950000109151 -hash_table,отсортированный,удаление,0.0037329999613575637,0.003185699984896928,0.0028516000020317733,0.0030229000258259475,0.0037879000301472843,0.003316220000851899 -bst,отсортированный,вставка,32.23637629998848,33.77348939998774,33.518200399994384,33.78866110002855,33.55791890004184,33.3749292200082 -bst,отсортированный,поиск,0.1479294000309892,0.1305704999831505,0.13548930000979453,0.1314462999580428,0.130273999995552,0.1351418999955058 -bst,отсортированный,удаление,0.1574716999894008,0.16461069998331368,0.15460990002611652,0.15385339997010306,0.15677610004786402,0.15746436000335962 diff --git a/BorisovMI/lab_1/docs/performance_graphs.png b/BorisovMI/lab_1/docs/performance_graphs.png deleted file mode 100644 index 8cfee3f281de849e62fd145c96d1423b08f7a1d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119718 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 XCZxr@*Al4nHJBznGx30L#F~EqFAt}g diff --git a/BorisovMI/lab_1/docs/report.md b/BorisovMI/lab_1/docs/report.md deleted file mode 100644 index ee21dec..0000000 --- a/BorisovMI/lab_1/docs/report.md +++ /dev/null @@ -1,73 +0,0 @@ -# Отчёт: Задание 1 — Структуры данных - -## Цель работы - -Реализовать три структуры данных «с нуля» в процедурной парадигме (без классов), применить их для хранения записей телефонного справочника и экспериментально сравнить производительность основных операций. - -## Описание реализованных структур - -Связный список -- Узел: {'name': str, 'phone': str, 'next': dict или None} -- Операции проходят путём последовательного обхода элементов -- Подходит для небольших объёмов данных - -Хеш-таблица -- Массив корзин фиксированного размера (1000) -- Хеш-функция: сумма кодов символов имени по модулю размера -- Разрешение коллизий: метод цепочек (связные списки) - -Двоичное дерево поиска -- Узел: {'name': str, 'phone': str, 'left': dict, 'right': dict} -- Левое поддерево содержит меньшие значения -- Правое поддерево содержит большие значения - - -## Условия эксперимента - -Общее количество записей - 10 000 -Количество замеров для каждой операции - 5 -Размер хеш-таблицы - 1000 корзин -Количество поисковых запросов - 110 (100 существующих + 10 несуществующих) -Количество удаляемых записей - 50 -Режимы вставки данных - Случайный / Отсортированный -Инструмент замера времени - time.perf_counter() - - -## Результаты - -### Таблица средних времён (секунды) - -| Структура | Режим | Вставка (с) | Поиск 110 (с) | Удаление 50 (с) | -|---|---|---|---|---| -| LinkedList | случайный | 12.32399 | 0.1279214 | 0.053208 | -| LinkedList | сортированный | 11.701628 | 0.0989321 | 0.052782 | -| HashTable | случайный | 0.7027289 | 0.0056565 | 0.0036097 | -| HashTable | сортированный | 0.5376899 | 0.0047595 | 0.003316 | -| BST | случайный | 0.08628449 | 0.000474 | 0.1715181 | -| BST | сортированный | 33.374929 | 0.1351418 | 0.1574643 | - -### Графики - -![Сравнение по операциям](performance_graphs.png) - -## Анализ результатов - -### Связный список - -Вставка в список занимает ~2.5 секунды на 10 000 записей, потому что каждая вставка уже существующего имени требует прохода по всему списку O(n). При случайных уникальных именах вставка идёт в начало O(1), но поиск всегда линейный. - -### Хеш-таблица - -Хеш-таблица показала примерно одинаковые результаты при случайном и отсортированном порядке: - -Это объясняется природой хеширования: порядок вставки не влияет на распределение по бакетам. Ключ всегда попадает в предсказуемый бакет за O(1). - -### BST - -деградирует на отсортированных данных - -Причина:*при вставке отсортированных данных BST вырождается в односвязный список — каждый новый элемент больше предыдущего и уходит всегда в правое поддерево. Высота дерева становится O(n) вместо O(log n). Поиск и удаление тоже деградируют до O(n). - -## Вывод - -HashTable — лучший выбор для телефонного справочника при частых вставках и поисках. BST лучше HashTable только если нужен отсортированный вывод без дополнительной сортировки — но при условии случайного порядка вставки или использования самобалансирующегося дерева (AVL, Red-Black).