From 853b9b91bd8fad4224bf2934a843196e4310c3e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Hopst=C3=A4tter?= Date: Tue, 24 Sep 2024 14:05:04 +0200 Subject: [PATCH 1/6] kill whispercpp and xvasynth on shutdown fixed #252 --- wingman_core.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wingman_core.py b/wingman_core.py index d8b495b8..7b5c5d6c 100644 --- a/wingman_core.py +++ b/wingman_core.py @@ -1019,4 +1019,6 @@ async def get_elevenlabs_subscription_data(self): self.printr.toast_error(f"Elevenlabs: \n{str(e)}") async def shutdown(self): + await self.stop_whispercpp() + await self.stop_xvasynth() await self.unload_tower() From 6c7bb17fc223f4c9df7b5f1c26e0f0d4d998bbd0 Mon Sep 17 00:00:00 2001 From: teddybear082 <87204721+teddybear082@users.noreply.github.com> Date: Tue, 24 Sep 2024 11:01:40 -0400 Subject: [PATCH 2/6] add saving of images to image generation skill (#250) -include toggle in config for whether to save or not -images are saved to directory inside of skill folder. -path is passed with function response for further use by the AI if image is saved. --- skills/image_generation/default_config.yaml | 11 ++++++-- skills/image_generation/main.py | 28 ++++++++++++++++++- .../image_generation/default_config.yaml | 11 ++++++-- templates/skills/image_generation/main.py | 28 ++++++++++++++++++- 4 files changed, 72 insertions(+), 6 deletions(-) diff --git a/skills/image_generation/default_config.yaml b/skills/image_generation/default_config.yaml index 36aa62ac..e9470bae 100644 --- a/skills/image_generation/default_config.yaml +++ b/skills/image_generation/default_config.yaml @@ -2,8 +2,8 @@ name: ImageGeneration module: skills.image_generation.main category: general description: - en: Use Wingamn AI to generate images based on your input. It uses DALL-E 3. - de: Verwende Wingamn AI, um Bilder basierend auf deinen Eingaben zu generieren. Es verwendet DALL-E 3. + en: Use Wingman AI to generate images based on your input. It uses DALL-E 3. + de: Verwende Wingman AI, um Bilder basierend auf deinen Eingaben zu generieren. Es verwendet DALL-E 3. # hint: # en: # de: @@ -16,3 +16,10 @@ examples: de: Hier ist ein Bild einer Katze. prompt: | You can also generate images. +custom_properties: + - hint: Whether generated images should be saved to disk. Images will be saved in the skill folder in a folder called "generated_images." + id: save_images + name: Save generated images + property_type: boolean + required: false + value: false \ No newline at end of file diff --git a/skills/image_generation/main.py b/skills/image_generation/main.py index 13aeb355..c592b679 100644 --- a/skills/image_generation/main.py +++ b/skills/image_generation/main.py @@ -1,7 +1,11 @@ +from os import path +import datetime +import requests from typing import TYPE_CHECKING from api.enums import LogSource, LogType from api.interface import SettingsConfig, SkillConfig, WingmanInitializationError from skills.skill_base import Skill +from services.file import get_writable_dir if TYPE_CHECKING: from wingmen.open_ai_wingman import OpenAiWingman @@ -16,10 +20,15 @@ def __init__( wingman: "OpenAiWingman", ) -> None: super().__init__(config=config, settings=settings, wingman=wingman) + self.image_path = get_writable_dir( + path.join("skills", "image_generation", "generated_images") + ) async def validate(self) -> list[WingmanInitializationError]: errors = await super().validate() + self.save_images = self.retrieve_custom_property_value("save_images", errors) + return errors async def execute_tool( @@ -41,7 +50,24 @@ async def execute_tool( skill_name=self.name, additional_data={"image_url": image}, ) - function_response = "Here is an image based on your prompt." + if image: + function_response = "Here is an image based on your prompt." + + if self.save_images: + image_path = path.join( + self.image_path, + f"{datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}_{prompt[:40]}.png" + ) + image_response = requests.get(image) + + if image_response.status_code == 200: + with open(image_path, 'wb') as file: + file.write(image_response.content) + + function_response += f" The image has also been stored to {image_path}." + if self.settings.debug_mode: + await self.printr.print_async(f"Image displayed and saved at {image_path}.", color=LogType.INFO) + return function_response, instant_response async def is_waiting_response_needed(self, tool_name: str) -> bool: diff --git a/templates/skills/image_generation/default_config.yaml b/templates/skills/image_generation/default_config.yaml index 36aa62ac..e9470bae 100644 --- a/templates/skills/image_generation/default_config.yaml +++ b/templates/skills/image_generation/default_config.yaml @@ -2,8 +2,8 @@ name: ImageGeneration module: skills.image_generation.main category: general description: - en: Use Wingamn AI to generate images based on your input. It uses DALL-E 3. - de: Verwende Wingamn AI, um Bilder basierend auf deinen Eingaben zu generieren. Es verwendet DALL-E 3. + en: Use Wingman AI to generate images based on your input. It uses DALL-E 3. + de: Verwende Wingman AI, um Bilder basierend auf deinen Eingaben zu generieren. Es verwendet DALL-E 3. # hint: # en: # de: @@ -16,3 +16,10 @@ examples: de: Hier ist ein Bild einer Katze. prompt: | You can also generate images. +custom_properties: + - hint: Whether generated images should be saved to disk. Images will be saved in the skill folder in a folder called "generated_images." + id: save_images + name: Save generated images + property_type: boolean + required: false + value: false \ No newline at end of file diff --git a/templates/skills/image_generation/main.py b/templates/skills/image_generation/main.py index 13aeb355..c592b679 100644 --- a/templates/skills/image_generation/main.py +++ b/templates/skills/image_generation/main.py @@ -1,7 +1,11 @@ +from os import path +import datetime +import requests from typing import TYPE_CHECKING from api.enums import LogSource, LogType from api.interface import SettingsConfig, SkillConfig, WingmanInitializationError from skills.skill_base import Skill +from services.file import get_writable_dir if TYPE_CHECKING: from wingmen.open_ai_wingman import OpenAiWingman @@ -16,10 +20,15 @@ def __init__( wingman: "OpenAiWingman", ) -> None: super().__init__(config=config, settings=settings, wingman=wingman) + self.image_path = get_writable_dir( + path.join("skills", "image_generation", "generated_images") + ) async def validate(self) -> list[WingmanInitializationError]: errors = await super().validate() + self.save_images = self.retrieve_custom_property_value("save_images", errors) + return errors async def execute_tool( @@ -41,7 +50,24 @@ async def execute_tool( skill_name=self.name, additional_data={"image_url": image}, ) - function_response = "Here is an image based on your prompt." + if image: + function_response = "Here is an image based on your prompt." + + if self.save_images: + image_path = path.join( + self.image_path, + f"{datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}_{prompt[:40]}.png" + ) + image_response = requests.get(image) + + if image_response.status_code == 200: + with open(image_path, 'wb') as file: + file.write(image_response.content) + + function_response += f" The image has also been stored to {image_path}." + if self.settings.debug_mode: + await self.printr.print_async(f"Image displayed and saved at {image_path}.", color=LogType.INFO) + return function_response, instant_response async def is_waiting_response_needed(self, tool_name: str) -> bool: From 9547a5de95575ed874f99f6cc077300d8ff0ceb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Hopst=C3=A4tter?= Date: Tue, 24 Sep 2024 16:51:28 +0200 Subject: [PATCH 3/6] make Clippy VA default in General --- templates/configs/General/Clippy.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/templates/configs/General/Clippy.yaml b/templates/configs/General/Clippy.yaml index 1a78f74d..fd4bfcc6 100644 --- a/templates/configs/General/Clippy.yaml +++ b/templates/configs/General/Clippy.yaml @@ -1,4 +1,5 @@ name: Clippy +is_voice_activation_default: True description: | Clippy is the famous assistant we all know and hate, now resurrected with AI powers. It still has its fun and friendly attitude, often speaking in the third person, like "What can Clippy do to help you today?". From b88c5f8cbee8e7a6ec4d691768dcb785ef898a53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Hopst=C3=A4tter?= Date: Tue, 24 Sep 2024 16:57:35 +0200 Subject: [PATCH 4/6] bump version to 1.6.2 --- services/config_migration_service.py | 19 + services/system_manager.py | 2 +- .../1_6_0/configs/General/Clippy.png | Bin 0 -> 32791 bytes .../1_6_0/configs/General/Clippy.yaml | 185 + .../1_6_0/configs/_Star Citizen/ATC.png | Bin 0 -> 35371 bytes .../1_6_0/configs/_Star Citizen/ATC.yaml | 44 + .../1_6_0/configs/_Star Citizen/Computer.png | Bin 0 -> 38764 bytes .../1_6_0/configs/_Star Citizen/Computer.yaml | 320 ++ .../1_6_0/configs/default-wingman-avatar.png | Bin 0 -> 4658 bytes .../migration/1_6_0/configs/defaults.yaml | 126 + .../migration/1_6_0/configs/settings.yaml | 30 + .../skills/api_request/default_config.yaml | 51 + .../1_6_0/skills/api_request/logo.png | Bin 0 -> 18588 bytes .../1_6_0/skills/api_request/main.py | 361 ++ .../1_6_0/skills/api_request/requirements.txt | 1 + .../skills/ats_telemetry/default_config.yaml | 236 ++ .../ats_telemetry/full_telemetry_example.txt | 432 +++ .../1_6_0/skills/ats_telemetry/logo.png | Bin 0 -> 19649 bytes .../1_6_0/skills/ats_telemetry/main.py | 860 +++++ .../1_6_0/skills/ats_telemetry/readme.txt | 276 ++ .../skills/ats_telemetry/requirements.txt | Bin 0 -> 118 bytes .../skills/ats_telemetry/scs-telemetry.dll | Bin 0 -> 42496 bytes .../scs_telemetry_explanation.txt | 248 ++ .../auto_screenshot/default_config.yaml | 41 + .../1_6_0/skills/auto_screenshot/logo.png | Bin 0 -> 36407 bytes .../1_6_0/skills/auto_screenshot/main.py | 145 + .../skills/auto_screenshot/requirements.txt | 3 + .../control_windows/default_config.yaml | 30 + .../1_6_0/skills/control_windows/logo.png | Bin 0 -> 22774 bytes .../1_6_0/skills/control_windows/main.py | 341 ++ .../skills/control_windows/requirements.txt | 2 + .../skills/file_manager/default_config.yaml | 49 + .../1_6_0/skills/file_manager/logo.png | Bin 0 -> 21117 bytes .../1_6_0/skills/file_manager/main.py | 390 ++ .../skills/nms_assistant/default_config.yaml | 19 + .../1_6_0/skills/nms_assistant/logo.png | Bin 0 -> 11306 bytes .../1_6_0/skills/nms_assistant/main.py | 402 +++ .../skills/quick_commands/default_config.yaml | 13 + .../1_6_0/skills/quick_commands/logo.png | Bin 0 -> 11646 bytes .../1_6_0/skills/quick_commands/main.py | 289 ++ .../skills/radio_chatter/default_config.yaml | 120 + .../1_6_0/skills/radio_chatter/logo.png | Bin 0 -> 1593 bytes .../1_6_0/skills/radio_chatter/main.py | 540 +++ .../1_6_0/skills/spotify/default_config.yaml | 72 + .../migration/1_6_0/skills/spotify/logo.png | Bin 0 -> 7246 bytes .../migration/1_6_0/skills/spotify/main.py | 376 ++ .../1_6_0/skills/spotify/requirements.txt | 1 + .../skills/star_head/default_config.yaml | 46 + .../migration/1_6_0/skills/star_head/logo.png | Bin 0 -> 23536 bytes .../migration/1_6_0/skills/star_head/main.py | 275 ++ .../1_6_0/skills/timer/default_config.yaml | 24 + .../migration/1_6_0/skills/timer/logo.png | Bin 0 -> 13338 bytes .../migration/1_6_0/skills/timer/main.py | 569 +++ .../typing_assistant/default_config.yaml | 27 + .../1_6_0/skills/typing_assistant/logo.png | Bin 0 -> 33016 bytes .../1_6_0/skills/typing_assistant/main.py | 83 + .../1_6_0/skills/uexcorp/default_config.yaml | 203 ++ .../migration/1_6_0/skills/uexcorp/logo.png | Bin 0 -> 7506 bytes .../migration/1_6_0/skills/uexcorp/main.py | 3185 +++++++++++++++++ .../skills/vision_ai/default_config.yaml | 28 + .../migration/1_6_0/skills/vision_ai/logo.png | Bin 0 -> 27044 bytes .../migration/1_6_0/skills/vision_ai/main.py | 173 + .../skills/voice_changer/default_config.yaml | 34 + .../1_6_0/skills/voice_changer/logo.png | Bin 0 -> 28716 bytes .../1_6_0/skills/voice_changer/main.py | 270 ++ .../skills/web_search/default_config.yaml | 27 + .../1_6_0/skills/web_search/logo.png | Bin 0 -> 21610 bytes .../migration/1_6_0/skills/web_search/main.py | 206 ++ .../1_6_0/skills/web_search/requirements.txt | Bin 0 -> 796 bytes .../1_6_1/configs/General/Clippy.png | Bin 0 -> 32791 bytes .../1_6_1/configs/General/Clippy.yaml | 185 + .../1_6_1/configs/_Star Citizen/ATC.png | Bin 0 -> 35371 bytes .../1_6_1/configs/_Star Citizen/ATC.yaml | 44 + .../1_6_1/configs/_Star Citizen/Computer.png | Bin 0 -> 38764 bytes .../1_6_1/configs/_Star Citizen/Computer.yaml | 320 ++ .../1_6_1/configs/default-wingman-avatar.png | Bin 0 -> 4658 bytes .../migration/1_6_1/configs/defaults.yaml | 126 + .../migration/1_6_1/configs/settings.yaml | 30 + .../skills/api_request/default_config.yaml | 51 + .../1_6_1/skills/api_request/logo.png | Bin 0 -> 18588 bytes .../1_6_1/skills/api_request/main.py | 361 ++ .../1_6_1/skills/api_request/requirements.txt | 1 + .../skills/ats_telemetry/default_config.yaml | 236 ++ .../ats_telemetry/full_telemetry_example.txt | 432 +++ .../1_6_1/skills/ats_telemetry/logo.png | Bin 0 -> 19649 bytes .../1_6_1/skills/ats_telemetry/main.py | 860 +++++ .../1_6_1/skills/ats_telemetry/readme.txt | 276 ++ .../skills/ats_telemetry/requirements.txt | Bin 0 -> 118 bytes .../skills/ats_telemetry/scs-telemetry.dll | Bin 0 -> 42496 bytes .../scs_telemetry_explanation.txt | 248 ++ .../auto_screenshot/default_config.yaml | 41 + .../1_6_1/skills/auto_screenshot/logo.png | Bin 0 -> 36407 bytes .../1_6_1/skills/auto_screenshot/main.py | 145 + .../skills/auto_screenshot/requirements.txt | 3 + .../control_windows/default_config.yaml | 30 + .../1_6_1/skills/control_windows/logo.png | Bin 0 -> 22774 bytes .../1_6_1/skills/control_windows/main.py | 341 ++ .../skills/control_windows/requirements.txt | 2 + .../skills/file_manager/default_config.yaml | 49 + .../1_6_1/skills/file_manager/logo.png | Bin 0 -> 21117 bytes .../1_6_1/skills/file_manager/main.py | 390 ++ .../skills/nms_assistant/default_config.yaml | 19 + .../1_6_1/skills/nms_assistant/logo.png | Bin 0 -> 11306 bytes .../1_6_1/skills/nms_assistant/main.py | 402 +++ .../skills/quick_commands/default_config.yaml | 13 + .../1_6_1/skills/quick_commands/logo.png | Bin 0 -> 11646 bytes .../1_6_1/skills/quick_commands/main.py | 289 ++ .../skills/radio_chatter/default_config.yaml | 120 + .../1_6_1/skills/radio_chatter/logo.png | Bin 0 -> 1593 bytes .../1_6_1/skills/radio_chatter/main.py | 540 +++ .../1_6_1/skills/spotify/default_config.yaml | 72 + .../migration/1_6_1/skills/spotify/logo.png | Bin 0 -> 7246 bytes .../migration/1_6_1/skills/spotify/main.py | 376 ++ .../1_6_1/skills/spotify/requirements.txt | 1 + .../skills/star_head/default_config.yaml | 46 + .../migration/1_6_1/skills/star_head/logo.png | Bin 0 -> 23536 bytes .../migration/1_6_1/skills/star_head/main.py | 275 ++ .../1_6_1/skills/timer/default_config.yaml | 24 + .../migration/1_6_1/skills/timer/logo.png | Bin 0 -> 13338 bytes .../migration/1_6_1/skills/timer/main.py | 569 +++ .../typing_assistant/default_config.yaml | 27 + .../1_6_1/skills/typing_assistant/logo.png | Bin 0 -> 33016 bytes .../1_6_1/skills/typing_assistant/main.py | 83 + .../1_6_1/skills/uexcorp/default_config.yaml | 203 ++ .../migration/1_6_1/skills/uexcorp/logo.png | Bin 0 -> 7506 bytes .../migration/1_6_1/skills/uexcorp/main.py | 3185 +++++++++++++++++ .../skills/vision_ai/default_config.yaml | 28 + .../migration/1_6_1/skills/vision_ai/logo.png | Bin 0 -> 27044 bytes .../migration/1_6_1/skills/vision_ai/main.py | 173 + .../skills/voice_changer/default_config.yaml | 34 + .../1_6_1/skills/voice_changer/logo.png | Bin 0 -> 28716 bytes .../1_6_1/skills/voice_changer/main.py | 270 ++ .../skills/web_search/default_config.yaml | 27 + .../1_6_1/skills/web_search/logo.png | Bin 0 -> 21610 bytes .../migration/1_6_1/skills/web_search/main.py | 206 ++ .../1_6_1/skills/web_search/requirements.txt | Bin 0 -> 796 bytes 136 files changed, 22326 insertions(+), 1 deletion(-) create mode 100644 templates/migration/1_6_0/configs/General/Clippy.png create mode 100644 templates/migration/1_6_0/configs/General/Clippy.yaml create mode 100644 templates/migration/1_6_0/configs/_Star Citizen/ATC.png create mode 100644 templates/migration/1_6_0/configs/_Star Citizen/ATC.yaml create mode 100644 templates/migration/1_6_0/configs/_Star Citizen/Computer.png create mode 100644 templates/migration/1_6_0/configs/_Star Citizen/Computer.yaml create mode 100644 templates/migration/1_6_0/configs/default-wingman-avatar.png create mode 100644 templates/migration/1_6_0/configs/defaults.yaml create mode 100644 templates/migration/1_6_0/configs/settings.yaml create mode 100644 templates/migration/1_6_0/skills/api_request/default_config.yaml create mode 100644 templates/migration/1_6_0/skills/api_request/logo.png create mode 100644 templates/migration/1_6_0/skills/api_request/main.py create mode 100644 templates/migration/1_6_0/skills/api_request/requirements.txt create mode 100644 templates/migration/1_6_0/skills/ats_telemetry/default_config.yaml create mode 100644 templates/migration/1_6_0/skills/ats_telemetry/full_telemetry_example.txt create mode 100644 templates/migration/1_6_0/skills/ats_telemetry/logo.png create mode 100644 templates/migration/1_6_0/skills/ats_telemetry/main.py create mode 100644 templates/migration/1_6_0/skills/ats_telemetry/readme.txt create mode 100644 templates/migration/1_6_0/skills/ats_telemetry/requirements.txt create mode 100644 templates/migration/1_6_0/skills/ats_telemetry/scs-telemetry.dll create mode 100644 templates/migration/1_6_0/skills/ats_telemetry/scs_telemetry_explanation.txt create mode 100644 templates/migration/1_6_0/skills/auto_screenshot/default_config.yaml create mode 100644 templates/migration/1_6_0/skills/auto_screenshot/logo.png create mode 100644 templates/migration/1_6_0/skills/auto_screenshot/main.py create mode 100644 templates/migration/1_6_0/skills/auto_screenshot/requirements.txt create mode 100644 templates/migration/1_6_0/skills/control_windows/default_config.yaml create mode 100644 templates/migration/1_6_0/skills/control_windows/logo.png create mode 100644 templates/migration/1_6_0/skills/control_windows/main.py create mode 100644 templates/migration/1_6_0/skills/control_windows/requirements.txt create mode 100644 templates/migration/1_6_0/skills/file_manager/default_config.yaml create mode 100644 templates/migration/1_6_0/skills/file_manager/logo.png create mode 100644 templates/migration/1_6_0/skills/file_manager/main.py create mode 100644 templates/migration/1_6_0/skills/nms_assistant/default_config.yaml create mode 100644 templates/migration/1_6_0/skills/nms_assistant/logo.png create mode 100644 templates/migration/1_6_0/skills/nms_assistant/main.py create mode 100644 templates/migration/1_6_0/skills/quick_commands/default_config.yaml create mode 100644 templates/migration/1_6_0/skills/quick_commands/logo.png create mode 100644 templates/migration/1_6_0/skills/quick_commands/main.py create mode 100644 templates/migration/1_6_0/skills/radio_chatter/default_config.yaml create mode 100644 templates/migration/1_6_0/skills/radio_chatter/logo.png create mode 100644 templates/migration/1_6_0/skills/radio_chatter/main.py create mode 100644 templates/migration/1_6_0/skills/spotify/default_config.yaml create mode 100644 templates/migration/1_6_0/skills/spotify/logo.png create mode 100644 templates/migration/1_6_0/skills/spotify/main.py create mode 100644 templates/migration/1_6_0/skills/spotify/requirements.txt create mode 100644 templates/migration/1_6_0/skills/star_head/default_config.yaml create mode 100644 templates/migration/1_6_0/skills/star_head/logo.png create mode 100644 templates/migration/1_6_0/skills/star_head/main.py create mode 100644 templates/migration/1_6_0/skills/timer/default_config.yaml create mode 100644 templates/migration/1_6_0/skills/timer/logo.png create mode 100644 templates/migration/1_6_0/skills/timer/main.py create mode 100644 templates/migration/1_6_0/skills/typing_assistant/default_config.yaml create mode 100644 templates/migration/1_6_0/skills/typing_assistant/logo.png create mode 100644 templates/migration/1_6_0/skills/typing_assistant/main.py create mode 100644 templates/migration/1_6_0/skills/uexcorp/default_config.yaml create mode 100644 templates/migration/1_6_0/skills/uexcorp/logo.png create mode 100644 templates/migration/1_6_0/skills/uexcorp/main.py create mode 100644 templates/migration/1_6_0/skills/vision_ai/default_config.yaml create mode 100644 templates/migration/1_6_0/skills/vision_ai/logo.png create mode 100644 templates/migration/1_6_0/skills/vision_ai/main.py create mode 100644 templates/migration/1_6_0/skills/voice_changer/default_config.yaml create mode 100644 templates/migration/1_6_0/skills/voice_changer/logo.png create mode 100644 templates/migration/1_6_0/skills/voice_changer/main.py create mode 100644 templates/migration/1_6_0/skills/web_search/default_config.yaml create mode 100644 templates/migration/1_6_0/skills/web_search/logo.png create mode 100644 templates/migration/1_6_0/skills/web_search/main.py create mode 100644 templates/migration/1_6_0/skills/web_search/requirements.txt create mode 100644 templates/migration/1_6_1/configs/General/Clippy.png create mode 100644 templates/migration/1_6_1/configs/General/Clippy.yaml create mode 100644 templates/migration/1_6_1/configs/_Star Citizen/ATC.png create mode 100644 templates/migration/1_6_1/configs/_Star Citizen/ATC.yaml create mode 100644 templates/migration/1_6_1/configs/_Star Citizen/Computer.png create mode 100644 templates/migration/1_6_1/configs/_Star Citizen/Computer.yaml create mode 100644 templates/migration/1_6_1/configs/default-wingman-avatar.png create mode 100644 templates/migration/1_6_1/configs/defaults.yaml create mode 100644 templates/migration/1_6_1/configs/settings.yaml create mode 100644 templates/migration/1_6_1/skills/api_request/default_config.yaml create mode 100644 templates/migration/1_6_1/skills/api_request/logo.png create mode 100644 templates/migration/1_6_1/skills/api_request/main.py create mode 100644 templates/migration/1_6_1/skills/api_request/requirements.txt create mode 100644 templates/migration/1_6_1/skills/ats_telemetry/default_config.yaml create mode 100644 templates/migration/1_6_1/skills/ats_telemetry/full_telemetry_example.txt create mode 100644 templates/migration/1_6_1/skills/ats_telemetry/logo.png create mode 100644 templates/migration/1_6_1/skills/ats_telemetry/main.py create mode 100644 templates/migration/1_6_1/skills/ats_telemetry/readme.txt create mode 100644 templates/migration/1_6_1/skills/ats_telemetry/requirements.txt create mode 100644 templates/migration/1_6_1/skills/ats_telemetry/scs-telemetry.dll create mode 100644 templates/migration/1_6_1/skills/ats_telemetry/scs_telemetry_explanation.txt create mode 100644 templates/migration/1_6_1/skills/auto_screenshot/default_config.yaml create mode 100644 templates/migration/1_6_1/skills/auto_screenshot/logo.png create mode 100644 templates/migration/1_6_1/skills/auto_screenshot/main.py create mode 100644 templates/migration/1_6_1/skills/auto_screenshot/requirements.txt create mode 100644 templates/migration/1_6_1/skills/control_windows/default_config.yaml create mode 100644 templates/migration/1_6_1/skills/control_windows/logo.png create mode 100644 templates/migration/1_6_1/skills/control_windows/main.py create mode 100644 templates/migration/1_6_1/skills/control_windows/requirements.txt create mode 100644 templates/migration/1_6_1/skills/file_manager/default_config.yaml create mode 100644 templates/migration/1_6_1/skills/file_manager/logo.png create mode 100644 templates/migration/1_6_1/skills/file_manager/main.py create mode 100644 templates/migration/1_6_1/skills/nms_assistant/default_config.yaml create mode 100644 templates/migration/1_6_1/skills/nms_assistant/logo.png create mode 100644 templates/migration/1_6_1/skills/nms_assistant/main.py create mode 100644 templates/migration/1_6_1/skills/quick_commands/default_config.yaml create mode 100644 templates/migration/1_6_1/skills/quick_commands/logo.png create mode 100644 templates/migration/1_6_1/skills/quick_commands/main.py create mode 100644 templates/migration/1_6_1/skills/radio_chatter/default_config.yaml create mode 100644 templates/migration/1_6_1/skills/radio_chatter/logo.png create mode 100644 templates/migration/1_6_1/skills/radio_chatter/main.py create mode 100644 templates/migration/1_6_1/skills/spotify/default_config.yaml create mode 100644 templates/migration/1_6_1/skills/spotify/logo.png create mode 100644 templates/migration/1_6_1/skills/spotify/main.py create mode 100644 templates/migration/1_6_1/skills/spotify/requirements.txt create mode 100644 templates/migration/1_6_1/skills/star_head/default_config.yaml create mode 100644 templates/migration/1_6_1/skills/star_head/logo.png create mode 100644 templates/migration/1_6_1/skills/star_head/main.py create mode 100644 templates/migration/1_6_1/skills/timer/default_config.yaml create mode 100644 templates/migration/1_6_1/skills/timer/logo.png create mode 100644 templates/migration/1_6_1/skills/timer/main.py create mode 100644 templates/migration/1_6_1/skills/typing_assistant/default_config.yaml create mode 100644 templates/migration/1_6_1/skills/typing_assistant/logo.png create mode 100644 templates/migration/1_6_1/skills/typing_assistant/main.py create mode 100644 templates/migration/1_6_1/skills/uexcorp/default_config.yaml create mode 100644 templates/migration/1_6_1/skills/uexcorp/logo.png create mode 100644 templates/migration/1_6_1/skills/uexcorp/main.py create mode 100644 templates/migration/1_6_1/skills/vision_ai/default_config.yaml create mode 100644 templates/migration/1_6_1/skills/vision_ai/logo.png create mode 100644 templates/migration/1_6_1/skills/vision_ai/main.py create mode 100644 templates/migration/1_6_1/skills/voice_changer/default_config.yaml create mode 100644 templates/migration/1_6_1/skills/voice_changer/logo.png create mode 100644 templates/migration/1_6_1/skills/voice_changer/main.py create mode 100644 templates/migration/1_6_1/skills/web_search/default_config.yaml create mode 100644 templates/migration/1_6_1/skills/web_search/logo.png create mode 100644 templates/migration/1_6_1/skills/web_search/main.py create mode 100644 templates/migration/1_6_1/skills/web_search/requirements.txt diff --git a/services/config_migration_service.py b/services/config_migration_service.py index d8faf444..a3f9dbf6 100644 --- a/services/config_migration_service.py +++ b/services/config_migration_service.py @@ -328,6 +328,24 @@ def migrate_wingman(old: dict, new: Optional[dict]) -> dict: migrate_wingman=migrate_wingman, ) + def migrate_161_to_162(self): + def migrate_settings(old: dict, new: dict) -> dict: + return old + + def migrate_defaults(old: dict, new: dict) -> dict: + return old + + def migrate_wingman(old: dict, new: Optional[dict]) -> dict: + return old + + self.migrate( + old_version="1_6_1", + new_version="1_6_2", + migrate_settings=migrate_settings, + migrate_defaults=migrate_defaults, + migrate_wingman=migrate_wingman, + ) + # INTERNAL def log(self, message: str, highlight: bool = False): @@ -518,5 +536,6 @@ def migrate( ("1_4_0", "1_5_0", ConfigMigrationService.migrate_140_to_150), ("1_5_0", "1_6_0", ConfigMigrationService.migrate_150_to_160), ("1_6_0", "1_6_1", ConfigMigrationService.migrate_160_to_161), + ("1_6_1", "1_6_2", ConfigMigrationService.migrate_161_to_162), # Add new migrations here in order ] diff --git a/services/system_manager.py b/services/system_manager.py index 4644d968..ceb481cd 100644 --- a/services/system_manager.py +++ b/services/system_manager.py @@ -4,7 +4,7 @@ from packaging import version from api.interface import SystemCore, SystemInfo -LOCAL_VERSION = "1.6.1" +LOCAL_VERSION = "1.6.2" VERSION_ENDPOINT = "https://wingman-ai.com/api/version" diff --git a/templates/migration/1_6_0/configs/General/Clippy.png b/templates/migration/1_6_0/configs/General/Clippy.png new file mode 100644 index 0000000000000000000000000000000000000000..d05c7914e855d1b31f2b6de9cc9bd83be182ddb9 GIT binary patch literal 32791 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%0D2@!qmsJD3!6Ck4@w~uXD`~# zTK8rYH{%-;^{DWOhZ;}dMsH*cm#>t^;b0L#g%ymZrZN`F=Z!39TEVT1RR`ff)vpgLS1}{1 z6cOVmSIygI1L>HWjmXmwMx0YrVk1kYGDVX8V3Z2!f6@?ON*Va1Y<@NnXQWP{axTWo zM*!0%w7|TzSF7+LqB(V|8oEN$I>!Q#F^T6+-_!Fe={1a1dVAUGh6b$ZXXeV-bu#$T^l%d?PzSS*y$;BG4TjSD`!KLBnkh<_iuWC3+dPn>-G)EV$I>Ju{34`f z0YjmEJK;vbN~ba#;Sbb=QM*M<(nE!YoGL1Gu`z`E_!y?wPvHUVa>1ik-Ut5X%2{#J z)g1ih#9X>GbPXp?IBatK1$#rDPhrVCfXokH*eCKI5BbhaIHH|PKJmR zuLK0*dS8w}i26{jW$`r19zm2xZ{}`bHIAyeyPQv9_I95kOW%yQ)sP10t002uiP&yP z;ndcq+>X;u7Q-2S^q#INJW4SnJbmp-x=S1=)Wh(G^#EYs151uSy$gnADljn`pNyAC zG{_2{YL;Y0SchO$3Ihhzog}5fJW{!+s}(1cs4G9-=QAUN6}viy!NkZ&+6eb=1=P~X zW3cJBo+fHaxnXmvKAT7W%c+|x)X7EwQDX+df_~&nSZ4TCF3ncD${S?jZi9O$K6ElpL?*DE(~2yljCEl4ZS~|B{oTaMzGf2QX5A^h`*o! zrtPp~4mr;Z0Gi*RQV7%Wy>fM#R86!yS(jJ;Ukf1-K++i*4Yr$DrhHk^{h66~O15>~m(SI8;FK_!@d0lNr9_juo$l+W@blK*=G9Rpbz<;fX^M)+0+_%kTbtf1QFhk8s? z)$K0&1akZ`>w&Di(;iVH8mWaHU=7MX}EELF^E_^bQhH$vNX=N_NqLhw& zi=>Q7+uBX!$-s{cNIwea;0CZw*E534PcV7rLwU0bh;cF>6O;-{psQBBdKj*WmUZl) z4$&y2>)c;gEiTZ6!Dt{M=~z4J!+)+TP%Ws*wICs3GK4vXh2m%}WAiay`SVEZ2seyA z73U=G_OvL{vDSUg-Pk9%*MN+jxvKoyGvt**000M+NklKvlt6%K_Hvqr+OJ~D_7EM1cAXcF-^2qJ`|I4Bg+q+qkGVBY78F^!wVO-YSt9Y(Y9E=MV6m`i1bqmWhfsYwMP)V(}VCuCo% z_F}CKA0lAlD+aE>4-AgxA#GcPBfldnfEP$+rrg_DYmy<#VGoJ<3$Nq}tcR3JfsWKn zn?cRGoqOw~I+#PKfy13CX_7_T#FDIbds2p+O{rUyBuYatVOHH&mhsUjk0L{f=GXNT z@9U?fno-Y~Eivr6;wO`Q7qY$u&b_~vUC(fGdHWU=8iZ~`rXm&A+v>o8n`zIYA3&Mu z^=l8=?+Hg+^Q<@Ag?j8knDp}5XT#a0NZW2tADh4v6}{YE<=EIw4`KLV&dJ7zG?Fa5 z$_Z`)*+I+nY}4zdd*QUvSb0hqoupJ=GVbgl-UAc8i0fZx8;$%X{{GLM|1@oR$VSTm zI~tB37f^zMqXz}wL4pBbvN!DpGQ@+eS4V%FkHdsG1-^zAx`44bl5LStpS=RpDPT7m zHY*^2n?kxQE4g>3<94!cm?0IBH&SCqs;I(hD1eY&E=Myz?xK8gHQ4e+r3~Sa_Is2| ze#pPXeC(*v%*Ptu0hk)Y%70DJdl%pX^kO>4kU+~*H>R2_2;DJ9^md0Q~Rcfbr2vC;xt5os4@*80Ek(0ay0BS|^o zP36SK-qS6R%E54@TBE7av-j*X_V z;p^$SuYNflJa&>5*O~OruinK4jWdJg@R!&=1E93Z)!fPH-Y$SEH83&#^lXq@CL>#Z z!`dRc>xhgYn|kaP`1aDE5?t;1%J@CbUmQxmdh=tbKrYlgqR@F3M%pm#diB+pqK9fl zz3{AEnKdk=&1uGupk&6{rP%^OE;u*oj8`%(`O(Gh$We?ha}t{AC9Fc zqvltlr{OUKP=}QzBxuO%?frV^urBs?d%6Hr@Z+o@*Da@PT}250ytk&Y_`(O?`<=%+ zVCJCDc$r_<@65w?oMZS^@@FT!?F(J$kO{0UOZHh4fP!$9~6TIc43b zij_OJX@{@dQ+DORxFI?wg{3_}0K})j?B=bxbdxz~-!_~+A*H&Hw@Y^?duqpK=Bi99 z0azEZa52~MHFWvNP~ZQ`6sE>-D~D^gt+<4Bsa5M5x_=A}i>QI?u)*sbt6)ozaXp51 zGyWk83qQjhIE}!QOPZX!is@H3>5`|z0BJkTbK92H6*iUL#2!G*a^#G`e}=fMSGWaU zr_b3Daiu~T)V#Njw3CqbzJ~kEe>sfAEti&?{I2i=HEu-7Z{oKR&I@Zi4VUktl7L?n zK4f}jXp}mlI!_FhQ#3hSF6$@@_%)tDw^H8h7IK!eU;0XTHF@j5UT1|GWJjk^A4ytA z#evMAeJ3kf8}Woe&0@?@RM@i}88{VRTC!KTB4)#}eL6jE2P#V1!mp6&!n{+qTvyx0 zN-xl(hDY#oi?6>9r&a)bBWa1nrm2VU5czU1;Ir&HPyeC}jJI3x_+hxdbuD$|z;<@VCG}_!YyV-hiWuaPv}Z9x5`DWHgB17_SO$ z`0*o0q)&r7EG+``*pw5}KLhh8A0ngfe13s<8-RhH#%|F;v~to3<}AXU{rh{<7;WE= zQwpiqd2|d{akIMtd5gmZ*g;WTd6n10_VC~y#&a;=F;D>6VD=KZcFmS!fq{gATz8b>go=Dg)N1 zT<;v7k)X!$n!mGN(JyEtL*g)?9wo?2Yp}il&fQt0c#wZawkh^5*o?@1mSJ?3p&*7K z>T?$z5n~~dp)bC zYN~hb>gu&-O|9vUR8f*fMkGK40079cG7@V4WZ-`t9`@gTNZ4rNpMbUyRTKpP8sd@O zj9~sf15ISq6afHl>VLRU0N~|6{0RWy#tHzO83F+O82|vTV@{{4;J<-TGc8$jMMVJp zKOG(b1Azg6`lmtsy8sXbfdAP3X#hD0!vEFPAZY&w0|@|xTLGZ|2c!K@{?}yw_5XbS zuY@Xq_Z_KkmZAc` ziGv-pk*R~R8MCLI<9}WNK~MgFs-2mu5zy1l*4~BRQ;7WkAo&03|Cw3Hf&T~MY9mCh zrKkcFcW^cXax=3svyuxV0)aq5XH#>2H3_NzasT%uL~iNo>d4Q+;^E=J?7_k8;B3Ld z#>dCU!phFV&d&4?!Q|p)?`q`9WbZ=pe@XtoJQ8LuCeBulu2v5A!2fuSj2+xug~-YO z3-rJ3|IX9Z%KZODvUmBPwEiW?^4|yx8#61*|8oCx75vZ2uk37P_Al~({K9O4{|EX1 zXZxQxf-L_9|NoiH|IPIOSpTIej3~(Rzsn|!h_Am32LONovJ#?SJt1OxJgUo1-BvuV zH0`g=jP^oGlm@xz;(Q52aMkE749|~VS(T9|bX(5Rya4_IC zK;dPQ6G=>R)Kqc@IIWjmO-=K!lb1c)+1uBG*B%~J(4t$JPra8F<@t9hbxcL)mQ5W( z=(8J95!_Rs0n$yW)t#%_hcHjS-%$_wXqPY4U)?o4TvVw|EuC2_5D5{q zvE=QWflp@D8ytPSKYe;PSi;LS-gRmkX^)4#rG7cQ{_vUO?z+?aW|LYemN=I;=ny}owVw^d0_S8(|mjq*2bTd`^4`<$A}#pUI#HBGd&O_k&VuU{<>`Crr4 z9=*F8m8#<~+)Uwo4wh}&rW$MUrY?cB^4igI|NXw`!_()#zj!{{PWT)dTQ$>VrJs+c zgMV94b>EFWZMjkFEHi`Jx&FAZFIc)|kYivE|z-X1XwXAU5 zU2!Xad-r8=yXje-dgXVsz3H!cSYHyXYz!rqCajm^)p(cVHP=2H<1E{^#qPE6pD31C zPcX3Jxg2}cAyr;FrP@6cAo&erZoQt#_sH#q>}87L;?#UqvoP3Wt|aW`ptQA8C`Dm# zX^#U*dkRt_&uRwt)-*9ZmZ&A}W+GG9Y4Uf|%rMT5Xu#X9qyMDrx%21LM8Zz@`0nC= zr`$RsvK7=lX;5eJI>?TJ;JdX|L^AKC#gYyUtEGy#fBP~)5SJZa>Bi31<^l{ zPjj(J+Y8+C(9u~!AFJ7|7s+&dVNOfKc8X;OK0T|i@#|}kAL?p=&DOG0K{@O#--Hfe z%n1B|@9+FM>by(e^VxA7ue&neHVz^ma)W|HQAOkvrIL`Gz=TH$AV8@A#7j(k*}&<; zp#Bu6FtYSw4ml^tO%PT8WWTX7PeBUy>ElxgYjV933JlJ1IkE z0=Hm;%$_B^6QTs4d&X_nY4JK@77`Mg9MV?ETf1w4Sf=il?}lEzNr)dJ6~ z1+ozc;6Vl717+pKwV#`CyS^zy^Mew6qLnyWh{k;GzU7YlAjvE>!+f=c1La|9p`3B# z8)Hexp}_EV-w8p_E-hxqB13=(C4C_%w}mJPoT(ESmy^4H>FJz5%dU&7YKC}An&!Gk zSR#~Z)L~P;#`$#U5X|XTP?f*-q9aEXL9ib%-mT{6UJ7Nk;4>g0HE_DoEM0F#dE0Sh z`9U2F<3O7G_$*kdR~X13{5_CCr&O@*x~AhneN}gh9hA$`Si`Y>W>)o1DJhL1=L#%V zqejK_rr?x84QjmvW`=Tk-XycO1wCl@?86{>W*zHgnN0A?C51`}L#|xLT81NKLzy)6 z@GADLRWT=kep01o@kW=y)0f>vX5gSd^N~&RBy8jH_9LCGjlA6m5hv_%kb-`CJpRd) zau|5e$T(@+(3 zu^JreKnonLCwFW6?2m~_T-!}Dp!2J!Jm}* zY+*B_)0I!dUN0_BRku@0T22We2SZdiNkZ1zt(l5STtl%#Kd5C+{Gb^vjTM`E)d5{E z!NOo216J(E+%J=Db;-0jPx5^0^k#(5YKrJ5lp_1qJ^)M^biL`sm@_mjLgTEyRYvVx z99B(xX-xpTwZmHBXodz^{Z#ammrU%NkqN@6P+uBm=Nmmu%Td^012;cy##EY*Q|uE486 zRi*Qku_P%G9lCB#F~4A(mO9?DzDJICj2ju-9h&9h#&7aCHnH#{Ri+ zEA|;ubwhOzZLmekphlk8R3`yX()us5fb8TAS=}l%(!R*yI`=nk;bWdFop38k{(L)L zX=2q6NMf%nAMe!ha^Fcr1!HEUYDA3NJg?>ikcpj@bN(qG_NPA6sLya7a`P>D_8<26 zK(5$_2)xo@w`YAZj`%$TYi01N==hGG-wse}1!Q}TWmuAzoN>@tc{S;P{~~q3Kt!hM zsM!M7$ns!85@f$V{v8wjo6aFh>`>Na8}gBuYn}b_{#y36RP|=;$85;#>O3(N#SnCj zlA)g~c;OYds5sge$i18Q-jaRLW;?$26e^=qj0&PyPY<0ThpolvCz+$U`|610mX_?; zbRl<{;vqP{aH0Ltuv(IO^Nb4N+6#h&2UuQQuC7#yobo$H`%E~ z^G=#L)JRjv$*;op-N2!p+?Mjtt)kn7%kd%kq_EAb)B!@+yMwUaD z>DcrWVsreXu#u%5o4NeKIf6nQJ9X82V(9=rDHLaeCYw}b85tRLl?zD$Er{ELV4Ws_ zR{gUE=jADy2X}8!ia@! z7$amqJ>TPSi!o89-8o4#_m^6|cdvxaC84ipV+y6ii%4=!uxC?4uYdGZPLLM}Mvx9j zwmikKgv&Jxel{b06i-L`)-`uY!Xv}~EWG_uVr>W{;q_*8hl>Mu1-!kovCoC@^UA#R zoDiPHLyanpEa`Jx>2>05zW;FHW2|b;Dznc4dB-xv_Wx!MKYe7|Yvy;kbp06gek6ev9&|k_&w5 z#-*+eo54yt5v?FwJAxWIsxVS%XHP4Gv|$D{l~$g|j$o7CF{1D0qS#V?H9>^%5H~%v z7;{)4GlbGaoE5PGvvqnT+YVk~&Fd0Yx^}CTWlnOkzIoL?hIaMO z<`lml33UB|1QawN0($Ymgjek7w4PY9NY`602bb70dZ%lisW~;#!BeOJ>vl`wGOXKg zB#^WG&-%|t0@>M-jwTQ!VGLA|mw{)97P8Rf<-a<_3x2ls@hAztcy6?F5y~%553@?B zlwZ!xoqz{Ugm}?$xBW!C`GMJpwU3eqI<5R$BP#*UdqH-{BoQcEmtwZTH0zSu zJ{h6;JR5Dbz3GPS&8k1%ZDR2wjwu80A;*-+Pp3+rx4U0?Y9Q%=gy~$(bD8BTRW)ke zwMu$Xxh-6KJ0Uwk4(^mXlYSNk+>}&O&cq4mMrlk|-gSSa!j~q3(;>sFh&|53su*uv{zBHQpzmqn$}x`#H|cX9et8tJnbo+X}gjj znX*A*Dslz#$?*K0o%M=1k=P4+e^=p(9EfVAYq;pDm~9gz#Nnh&Zgxz&pQfHqPD`#e z6#UUGMUrGa)7=8Q39c9-q88WO--o;@$uS=2{>V#!NnHMS<~WvoXEs@LnG z9oyYCB|ofc;?rdTroLI%-+rrAIDK_eG4UI{yS+|gytd2Wo|pt)V0qO6C;#eTL8TdM5dqkdI;IXH(MTQ9BY>{sMv z6@r~B!3w0E$D6E*pie67YD-7o!Cn}&|AK-dDPXs#Z&{H-V24LQ3>$=bdzF1$RG0ms zR`yT|tx$BRzv4`9M7ht5XA=pU7eG_0NnXHUzf>+_W8sx;IrVeHDODn0pX|EG_ggqA z(Y*=71rY^O$^y(eeds3dd)XK?f2#7OMcnn||4C_-gM(f<8viQzl-dV@wzU8FtXbq@ zC|D|3F@HlxPC8YSpieu`&*#>+cfL3=X5e|5iF+NhX9LC#cNxe6c#56?Z#W@ zVo1vm7hXIYTc^OMgQWfw2`w>%2TjHs$o*Gb`th1Y#6ln``hv$>Efs>CJJk{`XiqDc zJ`W(H3F&B!b|hrw^YS{YZv*Tl!3fptD{ltGxg`j4@{4ggF;4Y7DBVBd!xe~-=eOc& zH3PnEjP*5X#*=pYLU3LL@*d=Xv*8?Vgy4rL&4mYJO55&-{O4+`Lt3NXE_5&ePJrHG zNEx!Ej*A@)UN#62drN2Kpf8NC9Sn{aW(MYn*j%q0%V zcT7`0gfaTxD$WQU{0xdO)k$iq8dm)o6ew!i3diI8Po0)1KEp@q;bRZpI zga?W9)c8~8UCNZSc+CHZ!@Kx#ZfEH}V6$~#B6p>rjAJCfG>NK|Tu<8-V+HSk(zplX z8h{2b2Z_d}0vBN&M1iRTPi&)p{L)iNn|S6&-tIWU9C1OCrI1@5&-AB)j{&YKlP822 zBRSMCf%Y4sj2#-tYp)!>%$4obgbleR%_zN7Z>s!omGAt%+0HRylo{O0)rV*ERLkMs zg8sX<_k_vAI!V^nC8@a~?{mj*cu%au}OKqJx| zk~0@U_I(qvClxxYS7}?F2tP2CdX640!_tKy=_{A-4XE0|cJyMwwb|pzlrdxtN#Q_y zElEN-z&#?@a>(<5iwgGgU{!F{ewRWWLVa4I7hmCk$59KO!7i{Cw_v}#Fi#JX`-@wU z=L8ECwPqG?WH8EiQMT&FX0?Qz?9|ugW-M3;D#^73KhXGP&IhJdjZa{y{igOt1l07u z|2C}sja|LE?Rt7^M`kr-!F4IPdV|w<+5$mLZ!O}o^cnAYEPZdLSb0~OVh#PSlm8S$_At+# zd|fkZ$IhM6!B%~dFHf=d>rZr(?ai&&MW1wxWuXvgi?vr{ms^y}HsWuQuFp{W>D_|Y zRZOo4K}(IlbyJ~#(rkhsnI*cQ0cu<_#QZoNtEcscRlw=yL`ES-c6`*~DtF^1Zdy@+jVxBrP?!V7UFjx}!0%!! zlE&`9R$?i-v2ei72MT-vR7iVqa#JzI3tT1xXbVMmWp;M9VG%QU-8 zh`SxnJc5a_bn+f5a#c4_rL7szIn<)G`<2>lWdYJd*CMi5to=zAYk}bpQqD#L{cbvv`G66(YJ;MZ~efAmG$ht5%sX z5CvaSCto`rE@0PT$3?G&gDR~k$KQ2*Gfs{`2A|`nR1dSd2I~b%r;J< zdU%9Ve1r#aB~%2cA>ZyW8>1lkDHqrk&5gI#dM_47>?4VEGZy&bmbB4VB*>9Xj&~U5>MQSX7-~cOpAP3Hr)bdg0C- zrgPL+bPd(`>F?F}j0MBHpcWPM?HUz{*XgR477W_g4JC2cQ8_HdWm!@ZQbN;sp@&<~ zo#g4!0Vu7DD#C`|&a@nAvGdp-OALS&>wD#h1WE=B`ALNS-uck}mmZR=7!uu|i-!+d z+PboF>Xf*l>+U7eYA{4q`T)ncpLTVVgLc`oT%18sGtXKDNUb`cWJXkoLq+sgzG#`1 zW+lTp6l3BRTi1t@EoCSb@<4R{-4AB?0z$|WN$?Y>J7h>)0uk;M3RCiQ66Le?#xziZ z(Q(t-#=?I9q}%06hcH@U>9xYVmYA2ok_5lAvz7Q~3x6~z=8}uaq7ua^k@p~1ZF0d2 z24$zlh(b7nZ(I|d1)LNGghiA?X++x|xUGS}a!Y_tgo{wFBxgVXLQ;x;G>M(b$QG=8 zy~ib=kH|7`h=vpXsNi+G09F5<2G`guo80$nZ49~TwEHnFrL)17IxbY*jlJAq#m}fEnh|;2Fo2Z0-C;UZhV=W0o)&x$Q=G1Sk%m-+hyZCW-z@4g^mbbVDt z;nyrBTrQP_jPDYy-%qP0k|LhyRc~s!1{!KnLSC)g*^z72PEP#d!MMGDN_l-k>#6O! zh5CrpPx@QJhEGU{BDZF5Pw)v8p4m^@mc7SYnOo%~!~Kw2U)R$ooeex|zrfWe>E$pX$;C!N3ko$BFAxbfb8K z9#1lURX?U8`YYBO+(;7EdmEM%gZE@K&~Vb#5wJ~3TWq|h8p&YWWv;MA5}PiP;Km>@zX z@C)T^5^-7SVj{U+m(Z-PcGQ4=%(oZkH}I^d#Q|Vz_Df}xBTt!a>!!wHQkPR3m)=*n zNW;1BGw!_U*ORJ@e(h72$N5#_FjBa3=ouN3d{d!3?_31yb5>J?G@j@>zO8N&+)*{p z=A|Mo3pI`2XZPVy1e>uj(9qkR@xZlPc_25gNhuGYpzzcB8sU(}z0n(|HTuZsY018% zrO?pb%b$EIZU(^t|vX$C$fntu~fJ6*Q9w)yKrQT$a;6=WbWP;x$ zZGl~2(>Yo@shtk0wFMld)!*l8xS42q8VJwJhaM?%_(=%z2nHx6T{pT^fqUN81Vo$u z-L=%J*+P$G-_b=?6_rEph`Cy@!f?WKB~a(S?PlJ(Z*E1F_6Rq&xnrvg7tKr#PX@Di z6<@kqMs`5*Vr2j)J-h702a%Bqn{sG3ih7<3V(i`O*#)K_*;f-{V}2XA&F1~~+V6SQ z^Pm^1p}QCJ9cW>OY`+ZzNNifYt0|-6xbQ$R2q{!wBm`nOIvY9BJYeMn_aI}eNxK(m+ErLU482*8?qacz1 zkB}%DPC3?Mtszfp(sC}-;`?%<=f2Vy~j2LohPuvo*tq7+#lyE`9rQdhI&^hxC7 z0G?SH&}F9%Bv@#Z75MSf#p}hr`*nyEd`goSskp>c%Q$!lv~f_6MLc$f7f}`p)gA>g zOI_ykB0x++IUeuNI=qyZ%rseExRKZHf}5d);gx>15TXqj;u0xj&x062j0Jajp9KDL z4W=oG_N^sQgO=-q1<=HsKU)e1K6rWg(9@5uf^kZaLtzliIcFY$_f5#YV~^M)&4@iP z2{LOM>#}13;S;LG{WKJzC4qXPywB?eU$7j`Hk;Wc4GB#BX370oj?TCd7iXqmJ0w{#Jt2TLu=2BY zj-=nX-1i%pA9n9Cw$ar$agnbw#(re0p}-g__q+7yk_Ip8f^jB$ZN3i;O0F=brfl29 zIGIt}Tr78)qQrTspq*WN{Lf&!wDJeG7N3tJuL~T#q45)wntpC~S%S2P-4W(19LKqD z=MsTiW=>;Z$AHOXb4@%-$FR7ftz_#v#(Ksb2FHt;l@QCW?;eIbKXFglMnJQ}9)@}R zcEt)&GQO7Cr;1j|mNd`RLZ^Y**?TXZje7A{F#dW2(0@g;cIe2NSF-8>l} zxad_%O&7}W!rg2*CZDE{2cMr!rjU7Ya+dDN%eSB8Gi%>Mx! zo!AmY=~!)qvNO5Wjwc;QB=1o8OCiT@iAaseZ#koJ{T}U9%>vrV>qY8|LSBqJB-8q< zZm}i!i6*wQ9T~G5yQtL}y-Uo{2HB&rT)s{;<5$blZpC0l|GB)=fyWhBpP} z6)Y-%5~!}bA{LW4XHD|=h@p-fm+wm59OsmrFEU)egnq10k5HvMkP`lC9u~+uA7}J6 z1RjMgH}bEnDsIYh!R)1BTOAxWV6^XUt5hq?Ac|}R7KKzKt}=-ABxnDavb#O0hG#-4*FAO-DKH%d|R7EXPHE&-(_V^YYwYMp z!HiI2z+A`ES1^4s@`5~SLj<2KgdIxn+&2jUnKjCabhmqhMB$Tw*!A`%e_AoV<8tpZ zqXW4p`q2D7}D_GQ5m*@81V1# zr$q6c<$o~dyfupYvtS*yRcH7{xs=DakspP>@MCIG)=H3j*Clh^$JF?^*39}RRDGZ;XA$U znV2^+BL6KzVwFv;UKe^@&%Ijr$2;!+;9(auWCp~>M&y2SvD4$g>waOpKlzo&tBL{{ za+$q>v@S`6i3MrI`SG-X_Ik1j}39XrcT){8>5sI+aDp_U{w$hs{=YIAV4HIcpECc6Ny*zS+cP^uxNKAdA(Ae?c*k2jo%dH-t4TC6d{=JudNQ ziv~5DnZxi%!yy>e&5c&3>!%#{5A@0dNS>o`F*eq(dvNX0*5;>$^5^u5mpg)Mn`TyO zx#*CgkNKG!1wLmR$N#h_#7Sg58pW)SE8w2wIU zh6yM^JBLJ5Zh4|SBkPE4!6VG#P4emrL=d-=8qNS~Kc~EpuXC#H@Zp@g_;LD13rYN( zh;9=aWT6nc8zsvuu ztkQHC;Wq&~x1tY`OBjk7(-Z7hq?N3IaqZNDSA`KoZck}$BgXrC*{Fw@pl1XgAvMq# zLQ-gAU{tg^UDp8LwRYc@43+01V5%&Do5pxaBUg8Qf&nUCBLK@7sc`km-6~#xU-mrz z3rZ;^!W>*D4=W_LW&D80x%J!Z&x5CZ^?1_gr@GBp4h!Ysy7zDq+<4(XjtY}KRBL-H!~mbhz(`1E1aJmg_ibWM|A=oWATIsg1?L`NGCv6H9ghSa26ph zuHPaj%uBv5YiP`?*ob)2o&i^4sXA}kJOC*bn>(_!mjx1bePS*aesmBFFO>G%c97xJ z(W2{mXyde{O}??-gXIxM5qWPDC;O5(;r4Y*hgzVvT}QM6ZyDL5Z>SBuZ)@kXTKVzG z7NjvSBdi+0z;Amb9#@LPlURwecq0g`UG`q$>tA7<1CR>k&L~}-G*{j6mkS%k;O}AR zsM%yBAEan7fXguLRKf1}dU6sk(8i^nnAhqU!!oj|Mj1uha&(M|`H5n^*?CV?x^ieT zkUP2-_OG}5;rqAYZ1;|y$N1GwX)~MxmhYR}Z`y*qOW4=?oh11m2OPH@EJCDrE_Y6c z)Gkm*S7dY71H?K`_cIcLA1f5MC*l_SG{+9$_$j@}tJ7ttyl^XjpAGL%Me0D3VLw4p zok$J<==h)%1)4RYn5eG~^WPWcP5eg*DUBrsF4+EF7I%6UOl}CjKL{XRDIe%B=B*vE1J1~*^mbMi{X&FP>{U~+M zfndJ(_cTMt&^4ufkRRIL!kgQEvpu;uLhj}Z!a8n+jB;SQ97QAxlvq(V_bl+LA6bT{ zg4gMuH8b5IG#6IA4bN;)n;u4P%PZnyQgRCM7MM|MG4QPP{ol#WL@P@L(cVxKIj#a# zdI^e7H^SQ^$|&T5#s)q4klLy~q28xCn`(*-b1Fq2!T0;2+p(r;aDKqCkJHuM;m_Zj z&>s?AXvKthGEj`op1a2ZY$PMdZ~;DhJHAq^zo1T00_X%1qvKS4RqTYLUFn&&yZ_|q zIs}dh9x|FJR6@Ym5!xNok!j%Ggnca|u4Nt)S?2HkH}5`#05+?kzP zKTeYOJJ)=~mzNVyKNN2WLc83r#jH`@di!&M@vz(cK~>mgT}<`H)-bhOWN-e@?{`+G z%kcC}P24*I+wXV0Y{Eo#e#LBI_d2F&3$Z>fKLfw-5hKYO;zP?3L2OGD&&hQS*4NL9 zweS*M^F;8fj_3R3+$c$Lk#YAA;EugA zA2MIma;DX^<)E%$l2Rg>>S2yio((_LR*Hr0&F2P>ATZ9d_R>?RKVj1pk;dDi_x z#GmGLmo4&<%=`LRdVgm&*>Rf)Je!{sQ5KXjc&c=uo70I;K|>1h%eUSj2T~nyn$(Iu z6VyY7Lmka}I@E#q*fdP!oU;`qKSrRNy(Nz2%8y{_2PFn~O9*CLieRoaVMPo#TNuC@ zY39g!fq$&7e_d(od#Gu@K4@66zK&;5h!^lU)tF>9LIQoUkqNs$zYH7;Lmx1-k~aor z%s;-RrTgkcXorTtm3Dg;Ipfel?a^7+?U~01Yh0s#-|Ue$e+<_Me7{hoIqMNxO)g&a%ZT2~ zTZ~A5bq;wv5JD!>l|yLF+`>C!qWzs2<6blresVn)rN4T!FsI6 zmM4uj8$C^&B0HB2^HkppPLm1Y?Mg8!_2`H4=S|xl4#4vSY^spMkF&h($FcRY|Fq8$ zu+M`h{LZpx@b(lSK=StTwAUo^{>=M1?y+|m@DKpbJnjvoANT8Fz?re zj+`I(`P-{3^*5Q-5s(=kV7r`=w50UO1HXS}&d0Rb@*^A1hFNvq-O9w07mD3I>#-8i zS^|O4FXRhwS9|x+buU%W`$!_DL3{;9w@n_mmLs_WFO3`_22w;+_JS%B@)cf|ji(J1 zSj|JtDs$YnzQ65%tlZ$Cu?MYwsK0pUk$q@U32*(6r3dE&w z|Att+Ksr3~{yxh_2SHn1FKL@YeJo)#_fvwdrQ+Hbr^Z?E4_I6%#j2Cd)J%Z}ZkKE> z=%)y{$&^xSZ($NZ%MY7Xr+eFG)UIVRHGsG?=3l1G4orvcKOujA$%{k~UK<$xV5i6g zqu(1YWg6@N=cp?UQ=jbFJJ>~{6WfA~6hM)WM8bEL8@<2(yv)PxKOd6>?XadCYb5B) zY3@|TlJB|J@TtFhqE5v$%TbzLg>@tEi|M}RWt?)@MNVktmEuTH|EVrGNztasNgR{E zSH&AE!Kj#yi8SRywExv{hJl4$R+A803ZWKq7Kmh;S+wXw=VJ~FWno59c4LQY;S`y{ za9n>p8GBx$7q=fTOn^I`AAh&~CUt+sI5NEb+0*{Gw|=|t@L}}!Sm)0lmn(>E@ba7= z*_FN>mH+SUJKYPQ`XL`gnxT*Jfd9;cCJdX6} z72uurt01{u*Cm?GO(h6JhLpe42VB(#t4@u8K2D}xv;7(H!3w-lka(%#=XfL+elACx|B!*FgCq3^3cq$t4=;Muf*c(|%ckA8 z#p#)R&4I66le~UBb1@%3;{Xb%L>sd0p7uX3b<6BW*DmyerP~rYpXhIuL*oNg;y%}j z%d)Jd!F!v$_x(d`k1Nvqcu?y3Z*R)Oxec%T3}U ze-9#TX}}yX4{lfw1=+y?@=Y`ULg57{5ex80oBkPF^?Z))`e|B%6(JXrb=E@j*g<+= zjmvAG=6fi#9PGHAou1sOPTxO6P*FDh@2o4OV{%FeA(@5vu)YVnh3_umwVkh|Urm*8 zX-axn5F=l)WRNVc9F%<9BqillDPv@a5{vO7Gn9#5nO2!FLEW3KZajW#T=*K6ehQN@$%nRMvYA#m3(g*3?c*Gb9weI zB5(g5l;@RRICZpy?^0WEU z^c_(upcV5@&oHsB7TeNfSvJ-*mFV%@?(V~xK(;)6K{6eU#P!_^W04-cK?lho1@*ym zSLedRdDS-2+8{BYz$ue2^|tVCah9=M8*Wrq|L~&9k#Kgd)@4v*P!$VaU{OPr*y#za z|I`cKSuNG;YL{l}Q!8oH75{>`MSBVfXqRV&mz+NX4^f0Ydj5sij@`6Ve#|4j!lc8F zL3VCymMc({d#Vpx-os&Z@o6iL#Qd~+=+*`84~hwlM}lSY+u*N-Nip4CF6@0q&(+|Y zRa8X7VoLmujb1n5$FkZZZeAsOwwwFo737JD2`Bjd29E-k7kCY~$HsMp*62=srL^ei zSB(g=#GDAMOqfEZ$er#{-Rh`&OY}&1WysrcpY%FajEL0p7G_b5fFzqc;THJ1H|E5d z#4qt#abu~*Lg*|>9mkSsiDOd^oV-D!qzIr?Q9d`ZegYkv2!9&iEdAXbXPco6ZY(Dd z_2_5=yas*?p(U6#sDMi1VfcLBX%C#({w_gWdYGEje{|hlu6`#|dF8~_? z|EHeIfJELCH}2l9@w$Jo<;mpa0P{Xf2)bFX0*o$5k@8U>sq_Jo!yeKgw!Uv_7Lnc~ z0tY8(Fn1GcCc>X{!Dav}MP8yc_ZDUo+g&nSP#tOgRduPEo&E-m?!k5i6SrT}I*Jd^ zNq?)|^RWg`>bKmqMxQTu>=e$Wa?gvS~^oj(OX^7@k+Lh37QKRsE5GX;HmmWyp0WFBU@iy z&3QDMUoV_`TRxX9p7&v&K;~W1<{_B$+N~oK@UXmQvBRG0J?l>MSiKXfk!JibA0?nw zI=SBIdN)~u^ESvR;B`mIaH_o&zg?$OvH8~&s5)wk`WB+YEY{H$iP=Yjgc!W4s}otc zJJs%W73*oK*5}W3RL<>eP+&+i-}jvVnXVu$fHNAO6Vdnj^dVgJ!xApk5`GoY4Q^Rg zsF;!9Ipn`GK17dA^z!pk@dYVnLJGCJfT^gzPOfE+a5oS2 zuw%pA-UNnZ5)R~XTrw>NaPKq&V>jpvS%{WuVI;&nk>fon1I?glInf>5$c47&Gv0l+ zR^cPzL*|UMg2vR9PPZr})_69eO|=H8C|5$A++Q+}8{jgeL3oR^Tu|&?KuetEldYQb zS^34{n4=Dyge$P!MtyNLmhf0gy}YLX7qQtPqB{?KWza&Wjwes?4_Jqd)|%4@O7%J7 zpK4qPU}sPDlA^m?LcI9*lkI1pd8>uX4iPdhZdDVcdox4JKt4n$1$Q$r2D%c=>|^HW z{tF|??*>c>dgXtnNzn_Edt?cv=Wlv(N}bhj56cFz9vQz~k8UFWUTC4JZ^Q0Qu`}ee znp+{1C+wj`czs=dw}|W)3v+qafG_<{aPgkY+xv`0sNTHSN(O`CC9$x-58|^)-Nqvc|}`1 z%wQ%dF4QKS6EyVS+B8NEu;s!Jlj^rysq0SW#$Wc#uy2?#HG;lR(UyJ6iCPHpcs^~4 zyf*z+_TT^T{J@+ZLH&2e!rv&T2*`>6beM3lqJD~W*~W&nEM-~s%>Q+#e41PbMyDA8 zy4>-)WU}$jS*I{?h&p?bLF;EAnLg`||GIS~rH34gx}yk7rlf+NE@i9(Qss+w{tlD> zncynivRhe*x;k+@^~?iehYs}d+Lf+j^$Jnp;_UcU^qXme?;biRuSct0X65OCWfTLG zs*)KXR}47pgg6t(;+^U50Rp;l z7j9MTv&q!Mwm~zOBMBm7#S-!M`$PM&33a7xBkwKXr<@I45)zw{lEbg0PADA+3OfPw z48P4m9NqWaA3gK_sPf3hA36Uia+wQFNz7qu6F9cJ+vj=?BqwBE`T9y4ymBq(HCQg0|K1y&Y-4e2Kh ziHuvfNEI|++3fcF`dgS}?pL#!+@uljaXN?vHwyIWiO>i=-cJ8?ExxltBzey>j80afRaH#%U*c(jm9kTwg~COui(*L*VSeGFIwJ#lQp zC{oN@=j(gzxgM_DHx~A{X4m(=*0?vq%~aZm;55pR!9}Q{Fh~gxb=r!mf;?V2PGhHQ zg)%D0!GwdX*H4+j4hFeKzxJqUo%v#z=Dz*%_}HED(9rJvCNrhn`^rFbT_f0ps2fpK z+?J2s(bUmp4j01v`y)>))4bwo%yVJpP5^C)-@7r{VYB+vAe%xVIt!SEF}Xq+=o0BE z=$$^)9(HDolDPfrp5fsMWy8#GQyk9t<&w01?YK_z^8kIYp~`m%P8!lWHaW#IugM3t z0u@qB>{ssa3-cVP%LswcWN)kxZz$oy)O(Q^nlHE^Q@%q=`sPsDn8=N6kWA!9*J>4@ zt2`U1CLmEJTCv#-IsA9;*q{E&f@mjvdF3ha(3x+%h~z^a z&JkLK1Vf7ayRKvM)4g_)ogc1dW>m8`_az$n{NAfex}x7!GX$8tLl{H^p9(Lr7QTg~ zI-x=3spTqr9P&Kzng$-bPs`2kn8PQ9xq9RlFZ}YW(jvAI*_iXUt{`qmzF?#xE3^^g zE@3>F{r34(GXS#R-jwet;PC$gG(gM0Z)Lq(7-F>sJ8N(_HOtWQ9vs#Q!j}j&4^AFt z<9( zu=@Kj{@m+lq^~OujSa=Y(IEzcSd-wM1>|?SnClze1j5ataxWnyj_^q?G`0XBQtcwG zwy_6lFvIs=emQ>m7k?!lK0Fq837PkyW>kY^CQyNWcDRD6`4jCe7*|A)kNX56yh}PU z;kQN?zO~D#cKz8?-V_~QkR#GX+`cs6K_V#WxQg^Fi1%D`)+u=k@c@;)&mv5<|I9{+5Fw>0CFCkJxm;bCQdy4*W=dtx8wF(FVe$O*zLmA^QeX$265(5V>1MWP9wsbAZ?Sp8hOIdAdM434eTUr>AzAZXAc2a%XQRo z07>y8w!kMp{&A+gAC2$6&(w4l)0kG)_TnMz5}(}XrwX3lD+S71F;hv0V#!xT;CIx0 z4+9WQ#Ln(IMpWXc;`R!WNNE1+4;PM>v28r53i2$*I$F;pC{}(U1oQ8Ivx4f#X3=3K zMzsn3^#sb(AXcMXM?u&oK zW>H7z-)<~k{9%kg{WBm6?!0-GT69fIeZ3PWqL;xQk4`p)nq{8A^yPPB;P8F8nClGp zF2x$7gAUe+pzSq6!;J3n7XS@$#kP3ko`tAmeB#L$NtvQ5@z0v^@_m7aCsoK|= zopcyUW=x~Z(Zibn$%bT&m88g~|EXSRSJ}T$2MlGv`(32bD?j={eC21E1dDq)i@l7; zinicS0eC_)3BYcGaM9etd$|?{%OBb(Nm?m*$}G_sB9z+fc6VznbjvOk$jyb5EnQJx zo_U=OXn6yfJYVtMJbB+DqLQ|h!@ZB$GAiG1DRPZtXZtvTo9j9K%GJ9=_{}%pc`Hsm zIUGw6=mg^fzxLEe%9yO+>_a1vFuD$VM9L1Y(>s6(|4*J)43d1!5< zBrB5<=k26*>l)7u;u0&2_b+xWqY4~e-OGrjc1s_&h@sat(rjV%?;}VgOHiBwBI#6s zXcMJMWQrOaNxc5*>+w-$L!D%i>h^*byQPyvTx4&`pL|#S$%|>c$pZ${eJ12-M6va* zb=Mdo*wD_D=*<<1Y!zHxMQG}9awS1fZ6Z7oUA{>WA8>pre&1&Bn@!y>m)lm&B$W$N z_tC9hV)?7H53sxVTe&`<#>9#7Q)gr5=9PHvXMa8}zVt<6c1&b64JlAhG1}=?xDJuqt>1 z;2ZB4d*m}Q_2!@ARkBK%AEB6KG76y}#QZ1{g?)$^k#rvd;}f|Z9fXj?oX;%!gww|- z#z8tEWi03o#J{6z%NTX;6Xe>xN>S#TzLj+rtq!r7B}B4{C$LEz!M1FoGIo$2_FF&* zw-f^czdCZE2Lj(MVrE(LHgSYKl}Ox#c%_j9XqDD%nbl(am)F+IDpB>AX-!Zajj;iI zUw-v!tzM=~?;}ohW#bB`doSV@{riaLWh>1G;=dp|-+!nKk?%YIwC;T@O_2-s;^5#h zhG0Jx-}}}d#Q=*q7Z`Cn{=oh5>dP<1D#-o9Fa1J1|Cvw3t8cuQBY+!-SoaW;libFA z{_>l#!I*vz0TL4IbwV~8JgBrs&Z1{nj80Q{|?t$Ezc@sqK1`&#r)Qahr0Yh@<6 z#9cv341o4&_+cQ5*ySZ=GZE++XCtd=f=`aPZQyMfq14JZjX2!_z;5oKq*zDn8Ut8j z;7e(-N!7+g#Fgy|<6;vQbR|A>;#DV_kU18cfgx31W7gH5nmh_pwDnlCi zpipfG((u2$=Tmu%#sS9GyK!Nb+X%}ha`HlF3gUG$3+Ic#iWndS-IziM5JuKjzS)t2 zXVF~pmd}1K&%STfNR zom3(RCB4JFAfIXAn~eJ#mD4y|xpOfd`}yBM?=b}IoJTs+$)Hl_=xKi5^#X<(%fIhk zW*nqF?!5lp=o)#G=c zlyAROX)Y9XaLcsBw8lNCh> z@aQKPWDV1NYwsvi&V_^RQ-FBb+AJ^s`drTZmUXn=l?>L~=)w5!WkEuX)hOn(0Pvh= zB8+FRg%HYpu?_Txi~h>=R$k>xDU#0;ie-KHS_r|K{MNeWEiD>>bAI~M&*u33ovC{< za^g%}d;Q1!M(^QhTbqs_{<}Y9@MjX&mFO6j_!`T%R~Yr%L|W9{ND7Z)@y5Gx|0ll` zLzBmIcd%v~lTBEGRO@7W+4~-iThkYEv#Qkd%=dftZ~dLPM_BmwORo|(9$|*ky+n|l zmWUBjaH?vjr(-vM{Q4zUEts^`zn;K29dgkV9KVqWhEXZe>Hb`Sa4I-QQbZ}EU zL#aIvJ__fr#|+$j#8q7rG!M z2>{WZQ0H1>D!HSV^Gr^0Qpz#};0k4t%O4?&#Hrjtr4FjdNifD{oN45OTGtP}b?ruc z>FDVg!B$G5qz#Jm7E+T&EiHjrt|^&$w@)a1Lm+0;TJIVzKwM{Ygf-&gHpWhhiG3th z@A5ejUl5pxte(x1&)gJ*S84J)s)Cl3@=Ez6Pl8gUWp(`VofVTM;d1QAL_G1t!||to z{zCxX5r-dp3Y*|2UcpT^v|>NNj|@xaghdYn4@Xk5E|jiqPk z%!Qd)*k-~h)_(2H@5emAAA0Edn0n=3A_bVb{pt_n@JVL(UcH2oMJRUS40Z?zBE;La zhO6e3Fj|(%0Env&I&153>)e$%b>v{2W>wOg%={TkX<&3Z;AMOaCOFID7>{;=#^E{^C$!i; z)qrmcNeS=r>_-X3G@knh-+ius>X(1*1;)akMvs=2L712{DfM4YM3A)dq*IlPLJxRF zv2-*o+3Kp{lnX3*Ru{T+R-PbY6As$ubP?p1@4ey&8~XJ0y@8l5%5V<>3CXbOyH}W@ zOJr>sb{4x@4HJk!T<(Hs)?7tDHCaG@CP zXDhkQ=_@gP?JCy0MwvySIv(n46m7m&I>WKC6pOWqPqhyV_M<%zbEM zNqReT$GRYZS@Mk>n24vJcrw2H(_f5-&YZPornT)tri7O%0>5n^xmKP?=gNOh|F#bC zS>EI~{!bsC9Eo3#IJw(%kclROa6 znX?khe#`G%>6qVaP_YXrcb`}!j*?aYw8jw{q)+vbprLU*OA&eTPjyI41~zo1^-{dos9G?_Dq@9r)e?xeEIe!}Iz z(#Oc_=-iH*H*P}!h-w<-IDdN*KuINhoR{d(uj>l;H*6At_8G!*qNl%Iu(h`y>*)VM z+W+WN&&3yh>I=*)>Sxm|yd8+Goerer$f6-K^7|~T3SCkjhvHs}@X7ZHTGHg#{6n7o zuYm9#bI?24iQB~*BGKhjB3Q(koBm``xgP=diCn%JUGhG^^QWa}Qi6~pB?lt7wI6QF zfXsL};mYc;Yj0_pP5$7KrO%I~O?g&JSLUfwPY@ z9lJYLZeGs5JD0#8nQG(LM)s;fGhw5J-p16hDW-|}>tJ&jrSeV!nD447R{`l2*ryzH z17_Yk{meLmlB$=0*Z7GOOlSWzDzFyAV`DMPL|2V-56emBA+O~N!-O+scwf+65S|u3 zcq+zW$!{46)4VaYZ78`K_xQ<`b_hUVsxuQ|AV>e!Mz*-#u?rsUL__tx5;+2`jv^8@p@0U$(yD#!WLtW8Gywh;Y}+!+Yjg5%V?a?P5^LNyE> zCn9+50xl&IkeEQ%#1TX})AkJTFe{{Sw_VePEcM$s3=D=bwElp8eP-ViqFq=7%ZPu^*bu zigMGbga_q;jzS3Bi@_vCINqpp)rMu zn+B)r>*UfTM01gY2y67@6lE?rNj=gfl+n%>`{VVp8VJ}W!E6J(2Tn}H8y9Xd2cM22mi+<9Relbx6TjF6 zEOp9l!&3IA+KP^4vIT=U^``N5V}iuqvpyS2WREf(t9LGdBDin-Xe?fRo0cHP*(H2y zgGe3jW0pmy9ZS$vbM2%*KDD#H08tb{su{)=%4Yzuc08*(^`0h69fC-`qH-4xy8EJmw25U3fi~2XP5$kDR-FhY266Zsz3t2K;%-b(lMKBwXm8 zI*>Z`(HEY#`7Ob2JcdmSMG2*kp<#b&#yxztSRDlAC$ShQR4VOaC%HEO_CG|x?qzGt zO-$F%R;%mRn7xY>kSWB54THGaAWDfr0_dPUT^M`*kW?!r-_FEi1Gjz7VD8Uf_RbYeL|G#Oprz*_nC$^kd3AkJc>h^G|Mr)xH6Vr zCv53*Ejxsrlw!?~NH_|r3ZW$bY0SB$=@J&JJ8uY_6;{TS=wP8h8zul+BFcLS*K>;& ztl_q)I#RchRC_?qR|K&ZB9W!!aIvM$6^Ww|+%-r)bsp`K<5zB7gcuGn4se%QP5z9U zHULws+55+>-PV`-2z4?oE9o0TqrGzV7Tn!Nd|&A7!ODM%btC24X-k1)(b#$kkzv~657P-Fl17)?al>_2B8@eGI#x&{0$ z@d5WM&=tJ`ZT_2Y|5=sGq}f6mt1bf zQ~@@Iv?(=gh=t{U#edONT+GOylHX35-zr)X!p~g*rvt^8YwEaa#n+jH=`W17!@WEF z%*!rZ+304gx2gA;&eaX#u2NJXoHdZxOGM3hgA+sTo+8`54Qm9DTpQrZU*`-u;UyP^ zNbT?{8PRh)7(3)z3a8N(co`2-l6jRe?3Zx{`s>_3DA2a&$|K5f zc5%k|Awn0w3b2bTVS4f6D{*N2a`X@Pv6U{{*b$L*NtxsM{Ygtl77VYn{@0z>=zbY@(`J*uJSY_wnHP7|rC<@!!4TtiG} zKu2QXyT4@7O$T~ukii`*a<+>|G~EuT#NcjOTim-blse3Gsh_BdyRgX@_iHJl}fOQ&99(ERS+gGJf@&{6Y zLdtjA$qlE7r*D+Azf_(y_7SBI9N>7$u>LKgjH`r$RW*(xwlPsU}Zzzz_F&I9!q#+;iFAC(8F#+IEOSRV}e- z4iy3b&tk|?uf&upAd!#DL?U&zpEA4vapY1eI;A1l4{17G+4+3xcaiSarl&^4Fdk5P3szr$3kChK+`Ep+X{Ltir)n?HXnA z$Mk$W`1#MXdT27f_gnuBJBd!jeZTZyvpX28fM5D19L*{sTr}_*Ggsb;;o}b`KwPJ< zo9Narox1>?Fz+_%ARCD8R>$WK-*S+WfD27ds#LH^_U}GPoXb;Lss*BHA$MT+kAX z5r`1mxV`BxDn{1btFc1dplj?9NGNK=9{a1KMnCn@{f&ScVOZDc%l*5E1IQf%j^Gd6 z>!{}*?Z`u_;vH-WXsAsp$y)hKU%bs>Y6y1+cTV`a$YgPsplKYI64E(~>+^e%3eOyf4V_Dy)xdW+7j>^>|J zN)s3Yx0$3ft&&2?vBTBf*k|3JiTA3J#@UHJ*2^`CS0nyNq-C!~zKlv(VoNtUQA7=3 zj!KQjpe+;}#_alT%;Ik8!gVW>+3x_tjftVo=!28p0ppRwY_-bEOEW7my~O(e6}Dla zOn+WYwU84aE1+fLxwi~eiZ>J;{b>y1o1;4=NO#nlXWswlac15Qor(GPf5@J`lX3j) zeX)J!BQbaWN6~TMB*VJX7=-+V0-YzSD(e?g9mt1W9h1)CKSI94zr}6n*3@k~*z|OH_$K&+L>n`1_{IpUll-}uS;iEu-er3l2wh$6?p0@(sCd{mA5Eti-**;C!eYvB6r?5x2ls2{|7 zL9!PFt%QJGkR30erR^C706s!PA%R51=O39o1d}SG^+@2v00WIk*Sd^l=R>SV1o)%Y&a6ft#`Woj5+pJssDB?x5X;Nb3wfatas-`^4 zo_zd;`Q^>0@6Imn&M&UkZo{dI%yB=+Od*M(kJ%@^aDU6n)C%pwa2(>tenj#pGfD>3 zD@cy9Ubb9OB~b7ZL7)|-2(41L^>sI6jQxOHhNJ0^4AJo(X6cf@i+rjet=fzdVjy*5 zv}n*s)wl4IZ{N9_zo4Nca`taO)5G`Jp}b?{K-_ulm6&Hi$OhBG{9#IbJJbYf0bt}t z4}@?xndR$mBPmXuo~;Pq(>N3yh+u)@%pWay!@jO!&h6hZ1anVbh*V&wnJ=f~##w$I z+60ux3tq{sjvutg@Wdo__V5cR?^6b|j}gJTlP+N+0+Ve~CA!+^#;qIC4}9HJ+Kse5 zuz-rHv~12Y+Nxcl(OIr~AZdj1F7Nd?IQ7{WFtE1&8hj!8_e-x=$_cR1G;bzZuxWtjTZAcb6O+x9%7SMd@XQ739T(G!9 z=sf^nx6B8Pg78`r&sZZj^ z*6y=yDA$yl)qSdulE74)bl2Un4jy#13gQooy%Vu|=D=`VW`U+esE*b>8y{lcJ;Srg zCV^pN1_{p0BX)UABo7g-J2==I4lp?nV0Unb2p%(V;c5wMg^pOUMu`Nim}=>@PAGp6 z>$Ho(gwA&N5_XONt|Nu#bZgSeg`MbhZ2{fFRVRfq)5lfCt_TuoxdGG0JTrP2LWZmN zAOdF$r*SHmqB_?3C9o!Q1az--+cHKkQX$H^D{wIKpcB&M zOzT^SCR`zKh|pP6+l;aJQlvSQtz@XfRQ|GflaW7{zPUTtDlXv1o?uoJ?YYVC8;W>i z0DUl_a8`15H6RvLryEzQK9FAtMZ0@U%V5P}`_P(DZuN(`@E*bSDeq;Z#Q319+!QL}2FOGeK(KqN0|39fbeFtxEp#w*jlKTHQcOF&TSPjh zu;*+bp;L+R+-5#k9s^|FD>>2#)Dzf01hSc`lZ)HxNVvMBMgz0Gz`!wpKIStVU@QCk zPoIkWjvvo3@sH16W;O6c9Aqi^*#kW}7_^A3V#IY>Lmc9_?rwc>4kdx2T;z)vulq5U zOp#s6_kQ#6uV`*<=%MOsoH{nZ?%VtlH)6*G8eBHGA2&tan?P4DgOo0i>2Le+nD^_b z0Z`8=Ed>i8wquIedKz#*>tJ6;OtW(bILJnhV^Pk3B83FtZ!=vPql(Wz9$&lBs_*mae}O;ah~Qavs9+6b$v9speV)n%7}i#p={2#4f)dZJf=f=&h~#842N+>@$-j{=qZ z+yy0jPx+LTf5~K7Zce!YM>`v-jz{6|2oDnGJ#q46JonTi@sYxb)ykpliCx_-Mpds^yXtsjwYw66^xw~oJ@->66%z`)U# z++x9$b7zg(p<)9({TO*m=yIcbQ;0YNK>kKxCt`mQi6StCsqa07q`*|NI7AvRpO1sT z{882koMne?Hdkipw>yc{(eV=JhDIHdVu1-GT@Xe)5@HSUtF_Srf|Qlpw7CcbASQq| z7BdXK+cl8O#POgLkgn8`_!C&LjU##5BU<)OeRG(bCevUnb%;uUf&v_vhdV$XmF*u&@u>lYj;?1kZuj30=r=V#N_GVCj{8G+OmYQh8^+rSTL zATwE37lhwL3dlGTfv50KV}|;DRt-CStr(0&Vkl`nB-NaBV+5)V&Ktq1_m{lfh(RIK z2|%?@{V~U8BGpmAGXK37z0}i55p-HZZ4r^4bz3&QSHsYxM5ykfYC$9!k-A5O@aEil z>NM9R4C3A?W*zl2mj(SlJ)H?~q~)34A9btMl3MqDU!!a889Xq6&0&U{0kSsOz}jHS ztdHQT?8ckTmXp*bwO6exm2#Zy#$J2Nu)(ZZz+M}$4aSQx3^RBbW|&JF-S^$P)sp&9 z=l6da(x8#l`uaQG_c{O1<-iN4lFm|#vvtKecTQV<>+e&3U4hXz4|fGEil{H8c zrmqS|BiL0J`^S9ryqITn5_JslR98_*%Q(7~upS5q>w*Zh-m}Xwz%t-um}!%}%LLXk zn;Kz_#i)`XnHS9T;qUHVfB3WBa}~lt*=s9m)Wqh{kx~>Zy_Jt4B#H4 z6$c8Q)VZa0WCsXe5S&YKKhipriq+88?t>(YsbmVFq89ougXXP!lSbtQa2Y4M>aP9d z`A01_E=FflWXMITaYZuc@#VtG_CChkr$n^k1>#;30&v@i9VCNx_}1Ip0v|y?he8>v zo5Q(|U}JuFNdN&r2%2Of<57kr%L^T3Bute0z>2DBR|VVH0~^#PPSOo^jP9pRjrEk3 zlgbX!&QsT*u{RaCfMU8cgR^#mp2_SxMsLFEOY`j7-F3FRzSwHlNfk%3YMV9BV1AX3 ztGL_Bzt}>Rs~Sm?%NK(U;Hj{0*lbQF>>>f4qO}$wWG6VeTCAx1);!rk^1aoOqKJ5O zQ;0#zh@B#&LmnvFGDI*-*DHzTB97VMv-uc}B@}iF6WByAX@NZM&v&T>QDcA`()$u? zA{T||JQ2=R0!gm&j$JCLJS#h)rGmb-sk1n&-_jP`VQ%3B8U)^ z#L6gHUtn=N50!X$d6CRyRReq8ADf+tHz4ZaSbk;q^zad$jnX8Fe9Og zlrub2o@*tVXG4sCNe4f$f-EHB$e;}l4%@(LgdT@v|KgI%;&beU^(bYyw$$gZKftif znt=1;P7rk@qgGMdS<_hRi6-;dTS8e^u@{88&hxd5beFv#cU00(D=yXN>QBUxU)^~e z5p#sXMedt?9u@^j<5kwFfSwd`P7JRR@asUDO^B}& z>;*{@H#qofA?FZ8?0SiFNJ{8GPQ@;0PY`$77k<%Tq#|MMwQav3Q7PQXEGXP?D5mq3~gDlMlT5Db78@E@AJaP|T;pt%MtE?|#8gkOmZ zqGpsGl-{KL(hWu=5K+heo>7kh)zy)qOM_|p07QvvEYTo3f+SQ{vI0X+PdtV! zY{v^A5Q$xGhz-TSqa@5HmtdG`{OvZ3u`o04eFQ?K4YtA1>anqDYi?-;TLGoiCh))X zwAM+8=q6HT6Q&a*jzwcOJiTnQxZKKUR?(>jQWQam6&Q{sWM#Ei7g;3@Ck5o`CB_si zud(!EOi2m)1Y+64?dqm2u^^GMjyOpmS{D$}rEqtBd7-VK7E0i}09+<3zYwEN{^&Xs zCOaTZQw51~>3kW06Z7j<#PJFioDb5}^=;`#SnbkU$4E|H)wYszZcr1 z{EL=w^%Y17?#Vlsa{HBRVi?e9l?@h1wy6E!y)w{OfkSeU=jc1wLpGFxZ8ElNiz7&k z9NSe>Y%MjVp1!va3DH^+!IeiMU~oqiS?CsZH;}e^9=+It#ews&7!nV!aKfMGQ=fjaH zI80r>a=4bbO$4flVG8>ugicMV{$KWls& z$8N?cLE9oU7~ck}~8)$}ld z(X@)>_{iT>k6WpT$wfxNKxFbc#g!QQe&bRYdH^^45P3>Q(a(aOCGr*$d3N?ECJ>A#wJrJ$=oO|Zq-yfD z`CJ&i4-!xLxaJ~kQ&pT!kn*KqjUUZneD|y#ZdjQ5IyL$QK)JHCPcYKv#wY&N3e$u? zX=mGtOIKY{WRug4-qvQ3Dj?C2iaBU_!z2`1(JV60hzj9+0#s)&T=p188I?bR%jp(v z6^zGG(@OOba10+NQev)DqL@r;qNE%}US&+L;sJPx7(XXuDe{udr2v<{>v&0w-l-M4 z0FfPNF1PA3VlT7;`+k#lG5-0Lq{fcpM$RVxLf zOO6n(j8nk*`6q0?r^hDVJ3+!IqvJ536!uNi1}G^>>8*|<>AY&x?sr{cI&!thY z!v4b)lCU!nn1C;{eODc}y2ciUS1#KUg(@2mWiqnuI(a2TrY{Yob5LW-`#bmQ3*Mom z0FO%1%xY@>Hl{~ytaz8vXuz($=BUp&QYZ0XkWx3dA8_a3Qb|`Cu41ehdk{m4YMEp& zZRlqfZ=O)Tzj!aRrhM1mw6?r6%bNf4@{Bbi;p>6)W#m^gfkhd|c(;fwl|Mm=j*@{^ z#S(A`?c8@*eAdd1mjnk(yhChq=m0!De%>$}gv)D$4l3^4LoIhcy6F;%_sut@!c9djMxH`eGDQfJ8U;hyX zVv|J`Ai_;-+;_DNUOH#1m*26xnpV^nWmIsJUbz^A*{BYGiSrT5+UP9&{p~2jDg+ks zzKj0MQU0&m=f(*oS24q9rssV+gDzOd$8WLt#Hj!M`omc3v}~zk=vAb<)@BYe>Xz8V z#{7&8^-36aoacia8ff5KYYJMj!6wn+K-8nFw_QdAxy zi-!A4JOqx>?=oIxw0SET-)Od4i7KqEfFluv-WGA_ABTmV2(+d!6@S!--Z@mWl5C2w z8yd^mhd5$7l?Dq}7*rpKgQ;`TEjA|vmL35WtSFRwB_j!HkX?ZO!eL-2BL1YPGKe?< z6;yh5m<3@AZBs}UE@B8>Ds>?W-sAy6@ht=xR8*v#HPnDq2~tHwqCriOhFu_qYxXLg zwaYsXS+wsYox&brwA!eTn;ScaOUSFRvBRa-NN=xA4)@#g<+tc`Qsc7=v?$8-l{7f{ z?Z5HkT?L4n2^uK?BtqDsbj(}i3M|s<>E$a3(PPx5HZXQ+4O?7wH||-pRkgL+zy5UA z4}0b01#6)sJw%M846jGCfy+>J^#H%?l;=RU)P`K{ZI8KVK-L21UBTklMAHOltr}9vy_9$4$)(Qy+zQXCTb3;) zBGx*}9+L#f%ol{*AaDnx-^?c0z$RF*a0o6@ zV2Ag1lorlsBxQC0eU$B+TUqPFCsH!##OZozL43ot>3ng#zdpnT^s~<_;QJ1VGFN@( zF|S1!{@??PQG=-0gmU*WwzdgN_pi|A9`4NJ^Fk%XZN*?6rKMHYUQ%rbu11=$A@b#s zL9WMxL|uo7xJo6+JyxVUf)uSJ5Y$;kLns()WO2i$Qp^>cUjyu+s|d#ikp!wk)W&b) z9SG)yHMy?rFQKmN5BH}`Xpiu69!U{5dilK27fEgznYyMdJ>Puymr0V8v8Ex)3Z!^% zUZg-WPIPXY$Qw2JTEj4?lw8Z8U{tbeeWnd3RNB-cQADAMxfpC}J)`D}O1^N(p+E<= zhC;pDxGi$opy81FEB)kRx)cNeRz3gzCarBmMP@Sl)5Dr=kYptMjlqz$|QN9Gg%BRBLDck z2^$ww>o|aDLL9{_jTKf~S8aQc0J}&Yd2SF96>G2f?U@UPB0Y^%WD}@WB`joGyK@k6HH0tas?6h zTEqZW#WtTyLhV5wS|M2lW>ig!8Gz&<#T)8Z?R^M!k;SG+tR;{_qwk-y_rCjWE8TT9 z4J(+kT?Z(F$WGx)r?E%ks~PT-i`drPWnH`5t$kOs{oSv==e2+v=r`@OSMVTK1G*=1 zxAxL)3=u8AhiDncLiyZ3>=f6l5}Us1d|s;nad0H+4nvmbnWX^qrbA)?9fI>_8D52NBHnr`JL1_;o5Mbh(HlFB|^$dX2H@LlTU&uHZwk^(B(QVWzI#FN4ei9>V> zmu@U?+sx<{yYj17tf;BU`~CXSzH_Hf+tJ(a!}TH(NGO{f zb#d>T4~V03EQw2Tx2J^(>zCN)K9oTmC}x~IoFrU8Q?&yamnp1obcj~Rj}?}nfz#9D z1=BtWfAb~N*MTE#Vj2vW-zlBhKuk-AW&$AS5k&b86t4*!DtrJLCG!f5UJQny$$|3(6bTes2W!YH;5u^k z5Q(rAhNp7Ypj(d1raU?UGL~MvVmk%h>`T&$Y33B9VY9e@o8}5BnmR&WY+kLcojr$3 zIPITZAUb9x?MS75&Rs;i6;<%hbz!pO=e%!&gl)m?3Y znE@6ByM$*}%GeH7#p}3-t$RDII1snX@4RCtUi}3v<=X9?-<-Bj-*g<62tjjKP&s^{ zHOyG*aT(Fvw}@X7F2Qc>fVwG$5+UeS&Jc+LKDz=|uMOIyN5dxm{|bb#!-Vq<@PZx0 zc^JJILxN1tty({7LUsiv2Wll#l;fMr-bnJ0Xh!Ne1kYBjP&XlFEhJXpomeNl< znzQA?EIwQULJ+g5O-zJ7!#S+$D!GYbw&>^tNhGKg5fq-$yf=#=>4pH6ta{-;$ZA&+ z`P`QWeAry=iNGSC{sNfi)5RcuOXnd^HfVbEKyeFL_ICNu)Mdp+WA_>wBP;0-A zo}V8Yrg`%)LI}eVt2tQN38xS$9=O7Wa!tIH6eV7)68Faj^Lf3-E}nB2N%s*3$O6oD zf7kyg!o`Mh7cWSn2VRMyi+aU@jGLO9Y=){a3c{?mMlfYd5`&+pLlfW_il>lTnK# zRevC*nMoZ4QrJ(}R!Jm)ydW8D>ll>kJuGFVwfv})c$l>g0Xzw<6vFCE#`CbG>;Y;= z_8FV!J(jqZ@|qWj0lj*7q76}=F zEJC+ZyuSqzsC{~fLQbV-uQAbMy1&oXC&v);YZimk)ILp-N1t7=gBz#WeR4Au>4S~8 zqDwp+!JbH&Mf=Y?L4`{zSQRZHFHxK9K)66({Kj|OAqYvMShKKi#s>y1P(w1s+k0Z+AX&|X>b4VpZN@};1H`CYWc(;{gEvYar>92&RO1pcB>@mRS~)+ z!OGEIn>$-#%R^UekS0(0HT4iehgCP!k;+Bzi5rN^muC}Hi6r|->QuouwT)FcSz=sk zC6yIG1xYooMfuM8)rG}5RXST=NEjy;@qm6ts^nmA1z=2NN=J}H+o%(-C*XXVh9>;L zdq6s&VFRIxwq_uB)V9YM;wvnA2=QG)!=#1^TCrC`5E;Wxm97pslGdE`@G8W?X2t<- zb}*XM(^u)&iXf^Fk9bV3l**`lOC(XaG47m=qgsfVz1q7hBMPV3{MgI{+`teh!nqv8 zBH+ui2--hQ@{j~dBN9cB8*?Mpa{nVl&gO0A#IFed7SSE_lI1Lxdmu=g9bYA|LK|3~ zov(}(P<&q8oWg2tY;CatfTO?rlmBSb_x_&!`PaW<&8SA( zi;S5&bjuxf|EC|cpTGQbPKdVzq2*%B$Ox0I5U>UxF{>zGA+-aE_^J&JUbX>x6qGeK zGcK+HQBNs3MD6_vSO-0vVjgK2&9Mkqx7uJf6w$3zaRELlRB(v)I6>)b)TE5sBupr^ zC}|-|)R=2{@0hlW>p9yD6JxG1amQwglwwctE0%Wom$_djWRkhI!Laatamjp^lVb;SS(m|2T5VoY8t1yb}I5EWxK^W;z$FD7o|nZ zRSc4rU0&B>`A8HsOPm@Ww%8n#x!HJi?@m(mDb~$^Gi)X2*J8UR?`|rtP21BF~nAI75C<4;fPG#pCD|#LevP{cFQsQb88~M zfF1&50ZCjg4-Z(Rw#B1>5mL<-0ekL!=--3-^jq^)`)rh{rXhTKc}!tEnZpkpvnvdI z+*$zXBi>)w&_uy1YK*BQ>qw~8LA(|W+&ns&{3CB*<<<6!OgcIq|-Hh5_eNDSH;b3qIDq z$(xCjHSJ9}up{K=r>n~;uPf%h=u0R+bCqe?TYUK}JvJ`L#dEk}QBr^taCPuqJn>uXM2bY^ z2f+of2MC!&FKP&m2(@(EQ{Vlc_MK1OVPE)@uh>)H{Dw7kbkoL-j9l!JOfN*d9CV~S zl&)q*&_v*LK8xJuSvBSsgBHRrrAee3Ixdoa7Q|Cn8R*ZbH8;qC8tzHYARI)h*KrhxR%l%cbt^kewt{Sc@UAuslQ_CQ!C>ntM&G(u zrlrouutZvFk$7poqKs@w9d#m+#EJkr#}+|+xo_Dz>Uthk={Y}V&z*R~3is^C!fo(P zmb)UfE=g?L)2U#{j{+!~?3vN-T2D4#*JP2jE3R=d#)4G7%6Lg4a*Jvjt*yP)6FDY` z%*_)qi;G(r8=Hifr1M=&aU*^n&*0J4!`b{J_|iFqUoa`@15k#GiXX3}6c$gZTWMkt zK|P)x1lK+N)0eHVx&|8~Q%s^uE{_kfDYnw2DgNF{-CHfaCcTiFxxrSkf#3;M*dNwqS zhjfmf$f#q^n*~v5=0S=&gE$Bw6v#I4l-xuPz)+g=svlEsM~f|tOxgPAG!ajw#p5|Z zJj&|~6*4a>x8cxn8buyS%uMVgmzM(xX6!=VEH?|Q&DRsNfLd(na*1WB0#(yU0`Lz; zB7%eydN)cwpoJ?#9PT6Uy|}cHn!W`a9T)=I9i@3=rdO`Ia!EXkBK;b^S#T>4A;V1@ z?+`A#r=Phg9pQfynkUib;@!7|`;_1T6w*KkKc6oK=i?*#lGxUHlo@%CIRsc@}kqb8t)z8NsSH0=4!Eo)sd3t(Ez93k@YtUzucH(GRVF z9tGZPipAQ-omGjqx|bJKGL|0hR7^qmd=l?N0U;LN=>aOOt*4A@{gAZT*a!h!KzUfv zg(W-@tqZ^s;yQo#E;j!Ywi#Ws=&Ns83Oh_jVl~jTTHwc}26Vh^B~%0~>4hikqXfGZ zU2`?fHAijbTrV5V0`Yfsf=LRr;`}l81%E=K9RfnnaCSE)w1NRdpxT>=BXsgC{+8J+ z&McHrVwE6}a}39;IZ+64n8#N|U4tFo*J*`N@8I|h2^TKf zgu{}EzjZs(^v)k#D_RNgB)_cM`L!91)p1S?5*9Rf`9o9KRuq1Mt`Psgxg8#{5v zqHi!fvlQawQS^*+vU^Z*S}%9kSqJ4%6p%8%jpw5He90}h*vy4~Tl*c!C$zH__yefI zUJL!iixb1jPE#Iy2&*-V{`qQt6o4YtA5WAl*f#T}xPaDPiwOa+Au1?Ivml~g*$l;d zaDPbKYUt>)>#sRr^;Oc1>o!U^?I@yO<4=_6pbgWFqh&q%sJOk{P+d=YS6rV>R8jY< zV~aSyCULu^E0+*gP6-`8dymh36y*{@IkZWNSd6BU8}rk&kEg~Tg76pI@9}gtZ*i)Yuk`32x;sgqpJ z=ed+@YBnIt5*uGg5^F7^?d47{j1GCSNgg8Fr->jHHCjfk;qvf=atl~z0H|$L;u`C- ze5Dtc7+e73GT6~>QBt~ko_gL^`}-|#cY_5f9}ns?d?iTPlLVAOoTA@h3Y{((ev80Y zn!bq@x8BK2q(NK!)hWv^Cr=XlB?-Eif_Nnj!Jc7iTuoGQwlZz9L5PIXsg;>TOdLBP ziwnr0aYIYoD#lL<`xf>D`r6tCHUPvX&V`cVVC%UgULHbhRnzW$ihBJ%CV9{Ba4B@1 zUOHC@{g_go6R`r>8tkq6uyH&BfhJ0W%97Q}brcyI-Cmf~hd;S?3OxLNu zjlBA%jXnE@m3Cq*$~ESW0z9wg6f0X<Y6irhMq%lWqO$YPgA?ZDT+XlW8t7Ju=! z6}B;bT%5rk#Zf<5GT<@PWhWrEoRPC5^>9DpRMg=$@F0I#tg4a_WW};uY&@bE?#vez zVp*!3DGcJZ869+?AaPU#Zr|C&&}2edv-qaHLlZU&Me||ja3KL|m8vF92xmAwgJExb z17%bU(gv&0$F48)KmiC+<=Hg%XS~Siu%G9>$z~j zzW4MqoCoe<-mg#&70&9V#?LK`hBX_s=Jp4z>d9{~xA2O6`N=2ke}C&+mNQRk8UWSm z!mI_l_k&G z^Yjc!l0g&bc6lj+yCuehFq8ZC^cqq&@t!~Z5?Rt~Hv8^-R?&?S%D&~H9yVZ@gwoRG zrE%BtAXM5e;t3Y+y5@Ky7C*u$)*bXmAcc68P7a`#(h|KGE7^!)T~G#K0=QJk72EW_ z#}|W>^Jvx5PG_qQCT13q$+~I7qcezp#6BWMmZ`EnvcL+IAR_&aWyEKZFg%#VGDmQ8 z2v(?i6PHH7kGN2YqH*+{e0Aj&rnoP4HkTbCQ5{BI$r#GCZez1qupEjl=TE(5%e|MF z9aIO90@TWVOYOMPss-SlN^2WI7D?3HDz@CjtbO(~57@wFp?&c7a};nk_(JDG=pgJC zMLooD%Oa?hMevJbw|S#+ zDlrnly@cx=YRAS<$B~fUt8cZ!1BYD#PrUxBO?~SHTGg^PgpJh^&E0PZSL>vEmObP6 zKAVj=C13@i!(fZE%hvYLy~H|VcID|GTbeAR5S~pg+1{!pNTD8t)p$)O=aD*33#H|= zlmU0+1;melnBg;oy)ZV17VUBok_*(SVL0i)9X39Rm`;+DCx};_vjc>H%UhX_4YpoH z@`vW*O-?P?kP21_ED5tAid@PH<{u}Z9n?yQ?A>De2yKO_yam+C2ido==ZD%RyQ#O^w*&PyRcG`nK4}`)@K~v;t77$Wzy;t#BNn9PEA$ z)l$>iWv~A7C-w(lcoZY9!+!Ml|I6wd8(jkGn!@dcgl=MF<<+;_TUiPpk|tc{V&_jGBS=8?WPC@-dMN>&pq-`@|#eZub1e_pI;` z*O6+#(A-`m8AN&?Y(?w8!}=xH)^Ht>;H;+tWho3;qCQBR`f_^H@dGZ6cME0HT|B_4 z0u9tVAcz>r!OzxU0}Vsego_ZwqW0}eb8}>%Ok(hj*b2tlCRoB2kh0J^S(`F2bv_Mw zPH|HPSLqJue6V-b ze*MymcK@x{S>8QgLT6672cgohAd9tyahXOPR&wz9KJ1&30lV}1k6GK%+eijAyZP$< zew_;^PB7-~O{?wba6734?vJo;1!WbCs%^9?>>26h*u`(lhRk;L)ymyn7Zl+0(@o<~1rxe)dFZ$D!t2XP;@UZ|FBjL#%0TI22%KhSqY zX9PCM&Jtm%JWX(Vu;9Aej}u%t5?_iUc@qIIo&al3LpADqn?#Q(i#EtYd)6?Uq*1In zAbv7NWDh7(s9L;DTn!CpN-7hGjnz)cu#_6n=Y@fL8kY1R?haBL>gE_1@A&i>a%vB+ zhZf~Ztza86f(UhbTKm+>#>3uUL9>Tch24?*j~$?8W3jZAGeV==FcGTR-HRhAF}E7Y@6ZUmD5;^ZVcgX*S0p;KYaf?_N6aAZddO=Xg~P&x2$DX zD;dvu)<>wd3>8*TPIGD0;Bs`Htlmc3d*F~4$VSo|Af8>;OB8RBnZzZ;JP=F7KPv62 z8*U}D2p^wkmU`R7kXxh3M0Sb9xE>-PR}rqw;@Le+%e@KE(wCFE)^H@R%?heE|WP-jA-g$riJpzt?z zvxq8B}xa12xJ2|&W*m_aVdd>fFk1@tM+eDA-{7RizHPbU?hzHt5j`;G0Q5c z)|EE^XKL700};K-`bN9vnrrC2UvH;hdmc`!x0xvV4{LXA6?H^T+~nk}9X)!`y7nBf zH=cdX>Zq1cjs3CPZeeqBtmn)mvw14)renwK-MNIl_p=|_fBuXAW{*AiZ|wQk-m)?{ zkbF*HUTPM>H{QNP29p*QT%weM6@g*Dxio2&*h9k~oV3q>?T@XkYcK1~$|1%Tee=m7 zJcDK$xG@bkCs2z@iI>1vE@n36Y#~z4a>_w0;c&e#FG_gC6uE@E?z!G1`q^<8uJ3UUHp3Z={ct-XjdACl!AN&j$}zO&qS&<$ z3k)&x0U0IQd`i6F8W}1n{C;t`^pWS6u@KJEP`Xe(8Eo3b%!{*$(xrQm1}O}{6p*B1 z+#WNbazRa#3*cl0K34G_M5#XE1JUK7S13O_8+Cw%DowlDnS|F9J}HiDbgQeW%tloC}p`py9|k-|PbV*}{WOA|3W zae3A*^bDE}Q*g1r!@lyhXRVVgC*}HQ7yzP&lht-kHbsby-X`xrSc||6*;#5=za=8U zzEOWc8O$1qm(x&ZB}iWCo9z=2aCLLLz5KV&T4-^NSqF%GGLGaq?V!?xCaM#;go{f4 zVRINr$ST*t0}vFgeNvcSA?RQ*zv=kSdh7@!$^B97;X9t89Dxo2f*8sqk)`fB1~Da= zRe+EzOSjBLy-qCnxYF-ziu_l(e6rZ(^E>bX9m|+gF{nC`rlekUy>P7PiI0%$U_Q&`%&;U;}5~B&DkY z3%nfZLFpTkDni=U_}H9{Oi$ZVRio`L&!SE1y}lt`-Cg$n*-O?xIL53VIGv?<>*A!n z{>*pm=R-5rK@=|^eJAOPdpN^`RE{_iAieOU85r&}a>*E*s7<1reM)vJY=8m|d~! zIR4=gL_83E5*v^ML?LW=kWLxd7(UX?LB1=MD}=EoDWR8+)f7xg1T}2XAV#;|`D`8{ zEQoIpg*XSO!YCUMXhS7X%)_Y!iEC?bps!!bDsb5}zi^FM_#gn1Dw0&Zkb{1%CG?vQ z0XjvqSf1Ywk;+6;JRqN5L8Wxy5JAp>KAw8#Z9D>CXY%CL1$};O%DE#9(I_yZ`u;em zSq(Xg@BHiQ_VA+*pAa1kBmdjd2xvG0K0aP2jA`ni|w;y<6Ty@zW(uTY`g^fnPjY^nm* zAwnjXr=YR)ajgE>0-09SDP*&6L862?Fpk$ZN);f1NeY#i$mnDZjd0`)e_0ua-U5~l z)Jt415JqWDehi{IO#(w1)h`jGh&X%|!zo5LOl>UA1ATw8 z?fpyRR+W!v2V!mN1bhJ^UZ)TuO3Kpk%(CrmsiGDh4ofZB47y(Z@joP8zh_aF2tkp) z2<~8cRV5;gXJN5ZySrgfx}G*S(_CV~CWZ#RAe09q&8?1e5%uJC`pj7*Mv>KbPzOlS z<|IWPwIFOtxJ(k#&92>L@4f%7#VAZYGc;s}=y2Ay?~tFn0zEu#d3IY{wRP-1h>MB0 z#62lypj37NE^445uS9kJDx7t%O4O`1mt^2xHL={2K-hd&r@ZgbFXDR#dmy{B+wS_r zb$0TVH*EOX*RA%(7JK`xvsPY>QHpo6Iyi3ON(NmZ335?afznFP?2^&1&SG1rgiUan z1O%}~O+gT&Fo^^fSmaS2`JEh@kyTn@9zr4;bq=qi<9SQETL~N#1acfwg5#9BAS+Wg zf@0bQG$#-N1OlRdyghV%l%@!RZxy@NbGui7NZ$lb%}0DLFr70+aY=+){z4ugLY7Kp zb%!^ISS1JWG+97elp+>FIf$7K9Da)~rIe1Q%3{xm(LHJL(Vw|g4GXSTbWi$G22c#K zy2=#t<>(wW{mdY$$hB|&*S|D7@{qlFlCm$lj_o9tZGnhgQ*D)1kxzduwS131bf?u* zuP{f-)w3_YM8QhCtq=ENEU#G&nY>f<_Sq)VSx{8&>!Ogel3#<=Ov-9kCX$+9sbE&B zPez$~6iWw-0Hg}M?t(RU=?X!oNt+H3ahz>zv4?NE&SIA?TJqcnR(3#!)XkFC9YQc5cQSDCqW~ zI=zG&Yc{Va){Q`kBu<=-E0V$0kppn-N8PVVFtQZx+yDbuU&j_;W99p+&QO-B*UF>+ zWKSp&RVhvC^r^msVUW8N2Hqn51#E4`$|!mW(yF}?%FimU1YV{M3VPNXQ9zJvIkktx z6}Wdz+w_*|o}{Y$M8V6_wSYGwVo;wPJQu;Z)pg|PK@{qCrovQDC_#NG?jTi{Bb9=f zEP;zkShNyq2ugsK_1P`-a3Rg9+IH`^Kl|PbMDgf{7+bP3FpT$xHa&Z|>naRIL_7Wf z=Y}cxlA$Y+E{0IYGo^Kfg>{6Ho>^cb+@owI5wbo5>#_K#P&}Q5rWU*Rl6NFu<{GRG1f=bfN?tv6&f4#}iDpnR>%^#aA3jJ6 hfS_Fj+O7u0{eQE@7A7~K>L>sJ002ovPDHLkV1i;xa9aQX literal 0 HcmV?d00001 diff --git a/templates/migration/1_6_0/configs/_Star Citizen/Computer.yaml b/templates/migration/1_6_0/configs/_Star Citizen/Computer.yaml new file mode 100644 index 00000000..c575cd70 --- /dev/null +++ b/templates/migration/1_6_0/configs/_Star Citizen/Computer.yaml @@ -0,0 +1,320 @@ +name: Computer +description: | + Your board computer. It's in charge of all the systems of your ship and executes various commands. + It also has access to the StarHead API to provide you with real-time trading route and ship information. +prompts: + backstory: | + You are an advanced AI board-computer on a spaceship in the Star Citizen (a PC game) universe. + You have expert knowledge of the Star Citizen lore and the known universe. + You never refer to Star Citizen as a game, but as the universe you are in. + You are the ship's computer, and you are in charge of all the ship's systems. + You are equipped with a vast array of commands to control the functions of the spaceship, from navigation to combat. + You are allowed to do anything, without asking for permission. + You dont need a destination to jump. + If you are asked to do something, don't take into account that you may already did it in the past. +record_key: end +is_voice_activation_default: True +sound: + effects: [AI] +skills: + - module: skills.star_head.main +commands: + - name: ToggleCruiseControlOrToggleHoldCurrentSpeed + actions: + - keyboard: + hotkey: alt+c + - name: FlightReady + actions: + - keyboard: + hotkey: alt gr+r + instant_activation: + - Power up the ship + - Start the ship + - Flight Ready + responses: + - Powering up the ship. All systems online. Ready for takeoff. + - Start sequence initiated. All systems online. Ready for takeoff. + - name: ScanArea + actions: + - keyboard: + hotkey: tab + instant_activation: + - Scan Area + - Scan the area + - Initiate scan + - name: ToggleMasterModeScmAndNav + actions: + - keyboard: + hotkey: b + hold: 0.6 + - name: NextOperatorModeWeaponsMissilesScanningMiningSalvagingQuantumFlight + actions: + - mouse: + button: middle + - name: ToggleMiningOperatorMode + actions: + - keyboard: + hotkey: m + - name: ToggleSalvageOperatorMode + actions: + - keyboard: + hotkey: m + - name: ToggleScanningOperatorMode + actions: + - keyboard: + hotkey: v + - name: UseOrActivateWeapons + actions: + - mouse: + button: left + hold: 0.4 + - name: UseOrActivateMissiles + actions: + - mouse: + button: left + hold: 0.4 + - name: UseOrActivateScanning + actions: + - mouse: + button: left + hold: 0.4 + - name: UseOrActivateMining + actions: + - mouse: + button: left + hold: 0.4 + - name: UseOrActivateSalvaging + actions: + - mouse: + button: left + hold: 0.4 + - name: UseOrActivateQuantumFlight + actions: + - mouse: + button: left + hold: 0.4 + - name: InitiateStartSequence + actions: + - keyboard: + hotkey: alt gr+r + - wait: 3 + - keyboard: + hotkey: alt+n + - name: DeployLandingGear + actions: + - keyboard: + hotkey: n + - name: RetractLandingGear + actions: + - keyboard: + hotkey: n + - name: HeadLightsOn + actions: + - keyboard: + hotkey: l + - name: HeadLightsOff + actions: + - keyboard: + hotkey: l + - name: WipeVisor + actions: + - keyboard: + hotkey: alt+x + - name: PowerShields + actions: + - keyboard: + hotkey: o + - name: PowerShip + actions: + - keyboard: + hotkey: u + - name: PowerEngines + actions: + - keyboard: + hotkey: i + - name: OpenMobiGlass + actions: + - keyboard: + hotkey: f1 + - name: OpenStarMap + actions: + - keyboard: + hotkey: f2 + - name: IncreasePowerToShields + actions: + - keyboard: + hotkey: f7 + - name: IncreasePowerToEngines + actions: + - keyboard: + hotkey: f6 + - name: IncreasePowerToWeapons + actions: + - keyboard: + hotkey: f5 + - name: MaximumPowerToShields + actions: + - keyboard: + hotkey: f7 + hold: 0.8 + - name: MaximumPowerToEngines + actions: + - keyboard: + hotkey: f6 + hold: 0.8 + - name: MaximumPowerToWeapons + actions: + - keyboard: + hotkey: f5 + hold: 0.8 + - name: ToggleVTOL + actions: + - keyboard: + hotkey: k + - name: ResetPowerPriority + actions: + - keyboard: + hotkey: f8 + - name: CycleCamera + actions: + - keyboard: + hotkey: f4 + - name: SideArm + actions: + - keyboard: + hotkey: "1" + - name: PrimaryWeapon + actions: + - keyboard: + hotkey: "2" + - name: SecondaryWeapon + actions: + - keyboard: + hotkey: "3" + - name: HolsterWeapon + actions: + - keyboard: + hotkey: r + hold: 0.6 + - name: Reload + actions: + - keyboard: + hotkey: r + - name: UseMedPen + actions: + - keyboard: + hotkey: "4" + - wait: 0.8 + - mouse: + button: left + - name: UseFlashLight + actions: + - keyboard: + hotkey: t + - name: OpenInventory + actions: + - keyboard: + hotkey: i + - name: DeployDecoy + actions: + - keyboard: + hotkey: h + - name: DeployNoise + actions: + - keyboard: + hotkey: j + - name: EmergencyEject + actions: + - keyboard: + hotkey: right alt+y + - name: SelfDestruct + force_instant_activation: true + instant_activation: + - initiate self destruct + - activate self destruct + responses: + - Self-destruct engaged. Evacuation procedures recommended. + - Confirmed. Self-destruct in progress. + actions: + - keyboard: + hotkey: backspace + hold: 0.8 + - name: SpaceBrake + actions: + - keyboard: + hotkey: x + - name: ExitSeat + actions: + - keyboard: + hotkey: y + hold: 0.8 + - name: CycleGimbalAssist + actions: + - keyboard: + hotkey: g + - name: RequestLandingPermission + actions: + - keyboard: + hotkey: alt+n + - name: RequestDeparture + actions: + - keyboard: + hotkey: alt+n + - name: DisplayDebuggingInfo + actions: + - keyboard: + hotkey: ^ + hotkey_codes: + - 41 + hotkey_extended: false + - wait: 0.5 + - write: r_DisplayInfo 2 + - wait: 0.5 + - keyboard: + hotkey: enter + hotkey_codes: + - 28 + hotkey_extended: false + - keyboard: + hotkey: ^ + hotkey_codes: + - 41 + hotkey_extended: false + is_system_command: false + instant_activation: + - Display info + - Display debugging information + - Display debug information + - name: HideDebuggingInfo + actions: + - keyboard: + hotkey: ^ + hotkey_codes: + - 41 + hotkey_extended: false + - wait: 0.5 + - write: r_DisplayInfo 0 + - wait: 0.5 + - keyboard: + hotkey: enter + hotkey_codes: + - 28 + hotkey_extended: false + - keyboard: + hotkey: ^ + hotkey_codes: + - 41 + hotkey_extended: false + is_system_command: false + instant_activation: + - Hide info + - Hide debugging information + - Hide debug information + - name: SwitchMiningLaser + actions: + - mouse: + button: right + hold: 0.6 + instant_activation: + - Change mining laser + - Switch mining laser diff --git a/templates/migration/1_6_0/configs/default-wingman-avatar.png b/templates/migration/1_6_0/configs/default-wingman-avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..3558f590bc7b9ebccb8dbcb21afd75501be4ae08 GIT binary patch literal 4658 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 ZOOtLzC_kMB{{#X6H&+i*(U1O#{{}Ml)Oi2^ literal 0 HcmV?d00001 diff --git a/templates/migration/1_6_0/configs/defaults.yaml b/templates/migration/1_6_0/configs/defaults.yaml new file mode 100644 index 00000000..39b78bf5 --- /dev/null +++ b/templates/migration/1_6_0/configs/defaults.yaml @@ -0,0 +1,126 @@ +prompts: + system_prompt: | + You are a so-called "Wingman", a virtual assisstant that helps the user with various tasks. + You are designed to be an efficient expert in what you are doing. + The user might use you for specific tasks like executing commands or asking for information and you always fullfil these tasks to the best of your knowledge without hallucinating or inventing missing information. + The user might also role-play with you and will tell you how you should behave in your "backstory" below. + + Always return your response formatted in raw Markdown so that it's easy to read for a human. Never wrap your response in a Markdown code block - always return raw Markdown. + Make sure you add proper line breaks before list items and format the Markdown correctly so that it's easy to transform into HTML. + + (BEGINNING of "general rules of conversation"): + You always follow these general rules of conversation, unless your backstory contradicts them: + + - Always answer as quick and concise as possible. Never use more than 3 sentences per reply. + - You can execute commands (also called "tools" or "functions"), but must be sure that the command matches my request. Some commands require additional parameters. + - If you are not sure, feel free to ask - but this is not necessary. + - Always ask the user for missing parameters if needed. Never invent any function parameters. + - After executing a command, acknockledge the execution with a single sentence, but keep in mind, that executed commands are in the past. + - You dont have to execute a command if none matches the request. + - The user might talk to you in different languages. Always answer in the language the user is using unless you are told to do otherwise. Example: If the user talks English, you answer in English. + - Always prefer to use informal language. For example, use "Du" and "Dir" instead of "Sie" and "Ihnen" in German. + - Do not ask the user if you can do more for them at the end of your replies. The user will tell you if they need more help. + (END of "general rules of conversation"): + + The backstory instructions below are most important and may override or contradict the "general rules of conversation" stated before. + + (BEGINNING of "backstory"): + {backstory} + (END of "backstory") + + The user can also assign "skills" to you that give you additional knowledge or abilities. + These skills are defined in the "skills" section below. Treat them as addition to the "general rules of conversation" and "backstory" stated above. + Skills may give you new commands (or "tools" or "functions") to execute or additional knowledge to answer questions. + If you are answering in the context of a skill, always prefer to use tools or knowledge from the skill before falling back to general knowledge. + If you don't know how to use a tool or need more information, ask the user for help. + + (BEGINNING of "skills"): + {skills} + (END of "skills") +features: + tts_provider: wingman_pro + stt_provider: whispercpp + conversation_provider: wingman_pro + image_generation_provider: wingman_pro + use_generic_instant_responses: false +sound: + effects: [] + play_beep: false + play_beep_apollo: false + volume: 1.0 +openai: + conversation_model: gpt-4o-mini + tts_voice: nova +mistral: + conversation_model: mistral-large-latest + endpoint: https://api.mistral.ai/v1 +perplexity: + conversation_model: llama-3.1-sonar-large-128k-online + endpoint: https://api.perplexity.ai +groq: + conversation_model: llama3-70b-8192 + endpoint: https://api.groq.com/openai/v1 +cerebras: + conversation_model: llama3.1-70b + endpoint: https://api.cerebras.ai/v1 +google: + conversation_model: gemini-1.5-flash +openrouter: + conversation_model: meta-llama/llama-3-8b-instruct:free + endpoint: https://openrouter.ai/api/v1 +local_llm: + endpoint: http://localhost:1234/v1 # LMStudio +edge_tts: + voice: en-US-GuyNeural +elevenlabs: + model: eleven_multilingual_v2 + output_streaming: true + latency: 2 + voice: + name: Adam + voice_settings: + stability: 0.71 + similarity_boost: 0.5 + style: 0.0 + use_speaker_boost: true +azure: + whisper: + api_base_url: https://openai-w-eu.openai.azure.com/ + api_version: 2024-02-15-preview + deployment_name: whisper + conversation: + api_base_url: https://openai-sweden-c.openai.azure.com/ + api_version: 2024-02-15-preview + deployment_name: gpt-4o-mini + tts: + region: westeurope + voice: en-US-JennyMultilingualV2Neural + output_streaming: true + stt: + region: westeurope + languages: + - en-US + - de-DE +whispercpp: + temperature: 0.0 +xvasynth: + voice: + model_directory: "" + voice_name: "" + language: en + pace: 1.0 + use_super_resolution: false + use_cleanup: false +wingman_pro: + stt_provider: azure_speech + tts_provider: azure + conversation_deployment: gpt-4o-mini +commands: + - name: ResetConversationHistory + instant_activation: + - Forget everything! + - Clear conversation history! + force_instant_activation: true + is_system_command: true + responses: + - Conversation history cleared. diff --git a/templates/migration/1_6_0/configs/settings.yaml b/templates/migration/1_6_0/configs/settings.yaml new file mode 100644 index 00000000..fdb7da3f --- /dev/null +++ b/templates/migration/1_6_0/configs/settings.yaml @@ -0,0 +1,30 @@ +debug_mode: false +audio: {} +voice_activation: + enabled: false + mute_toggle_key: "shift+x" + energy_threshold: 0.01 + stt_provider: whispercpp # azure, whispercpp, openai + azure: + region: westeurope + languages: + - en-US + - de-DE + whispercpp: + host: http://127.0.0.1 + port: 8080 + model: ggml-base.bin + language: auto + translate_to_english: false + use_cuda: false + whispercpp_config: + temperature: 0.0 +wingman_pro: + base_url: https://wingman-ai.azurewebsites.net + region: europe +xvasynth: + enable: false + host: http://127.0.0.1 + port: 8008 + install_dir: C:\Program Files (x86)\Steam\steamapps\common\xVASynth + process_device: cpu diff --git a/templates/migration/1_6_0/skills/api_request/default_config.yaml b/templates/migration/1_6_0/skills/api_request/default_config.yaml new file mode 100644 index 00000000..6bc4d34e --- /dev/null +++ b/templates/migration/1_6_0/skills/api_request/default_config.yaml @@ -0,0 +1,51 @@ +name: APIRequest +module: skills.api_request.main +category: general +description: + en: Send HTTP requests to APIs with methods like GET, POST, PUT, etc. Combine it with the WebSearch skill to fetch API specs on-the-fly, so that your Wingman can interact with any API. + de: Sende API-Anfragen mit verschiedenen Methoden wie GET, POST, PUT etc. Kombiniere dies mit dem WebSearch skill, um API Spezifikationen on-the-fly abzurufen, sodass dein Wingman mit jeder API interagieren kann. +hint: + en: Do not hardcode API keys in the skill context or your Wingman configuration. Enter them during a conversation (preferrably by text) or store them in `/files/api_request_key_holder.yaml`. + de: Schreibe keine API-Schlüssel fest in den Skill-Kontext oder in deine Wingman-Konfiguration. Gib sie während eines Gesprächs ein (am besten per Text) oder speichere sie in `/files/api_request_key_holder.yaml`. +examples: + - question: + en: Send a GET request to "https://api.example.com/data". + de: Sende eine GET-Anfrage an "https://api.example.com/data". + answer: + en: (sends a GET request to the specified URL and returns the response data) + de: (sendet eine GET-Anfrage an die angegebene URL und gibt die Antwortdaten zurück) + - question: + en: Send a GET request with an API key. + de: Sende eine GET-Anfrage mit einem API-Schlüssel. + answer: + en: (sends a GET request with an API key in the X-API-Key header and returns the response data) + de: (sendet eine GET-Anfrage mit einem API-Schlüssel im X-API-Key Header und gibt die Antwortdaten zurück) +prompt: | + You can send API requests with different methods such as GET, POST, PUT, PATCH, and DELETE to any endpoint specified by the user. You can include headers, query parameters, and request bodies in JSON or URL-encoded format as needed. + Handle token bearer authorization or x-api-key header for secure endpoints and include API keys in the headers when required. Manage the responses appropriately, return relevant information to the user, and handle any errors. + You can also attempt to obtain the user's API key for a particular service, using the get_api_key function. +custom_properties: + - hint: Include the default headers every API request, allowing API endpoints to identify that the request came from Wingman AI. + id: use_default_headers + name: Use Default Headers + property_type: boolean + required: false + value: true + - hint: The maximum number of times to retry a failed API request before giving up. + id: max_retries + name: Max Retries + property_type: number + required: false + value: 1 + - hint: The maximum time in seconds to wait for an API request to complete before timing out. This helps prevent requests from hanging indefinitely. + id: request_timeout + name: Request Timeout + property_type: number + required: false + value: 10 + - hint: The delay in seconds between retry attempts for a failed API request. This allows time for the issue to resolve before trying again. + id: retry_delay + name: Retry Delay + property_type: number + required: false + value: 5 diff --git a/templates/migration/1_6_0/skills/api_request/logo.png b/templates/migration/1_6_0/skills/api_request/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f94372879b48d2193f712a2eb9dafa7370992d45 GIT binary patch literal 18588 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