From 0d017d514fd438ab32f1b413b3567f13b3203c86 Mon Sep 17 00:00:00 2001 From: Rongxin Date: Sat, 23 Nov 2024 14:25:11 +0800 Subject: [PATCH 1/7] feat (gui): simplified, main process --- pdf2zh/gui.py | 682 +++++++++++++++++++++++++++++--------------------- 1 file changed, 395 insertions(+), 287 deletions(-) diff --git a/pdf2zh/gui.py b/pdf2zh/gui.py index c55ec64d..739567f0 100644 --- a/pdf2zh/gui.py +++ b/pdf2zh/gui.py @@ -1,14 +1,10 @@ import os -import shutil -from pathlib import Path -from pdf2zh import __version__ -from pdf2zh.pdf2zh import extract_text +import re +import subprocess import gradio as gr import numpy as np import pymupdf -import tqdm -import requests # Map service names to pdf2zh service options service_map = { @@ -28,133 +24,143 @@ "Korean": "ko", "Russian": "ru", "Spanish": "es", - "Italian": "it", } -page_map = { - "All": None, - "First": [0], - "First 5 pages": list(range(0, 5)), -} - -flag_demo = False -if os.environ.get("PDF2ZH_DEMO"): - flag_demo = True - service_map = { - "Google": "google", - } - page_map = { - "First": [0], - "First 20 pages": list(range(0, 20)), - } - client_key = os.environ.get("PDF2ZH_CLIENT_KEY") - server_key = os.environ.get("PDF2ZH_SERVER_KEY") - - -def verify_recaptcha(response): - recaptcha_url = "https://www.google.com/recaptcha/api/siteverify" - - print("reCAPTCHA", server_key, response) - - data = {"secret": server_key, "response": response} - result = requests.post(recaptcha_url, data=data).json() - - print("reCAPTCHA", result.get("success")) - - return result.get("success") - - -def pdf_preview(file): - doc = pymupdf.open(file) - page = doc[0] - pix = page.get_pixmap() - image = np.frombuffer(pix.samples, np.uint8).reshape(pix.height, pix.width, 3) - return image def upload_file(file, service, progress=gr.Progress()): """Handle file upload, validation, and initial preview.""" if not file or not os.path.exists(file): - return None, None, gr.update(visible=False), gr.update(visible=False) + return None, None, gr.update(visible=False) + progress(0.3, desc="Converting PDF for preview...") try: # Convert first page for preview preview_image = pdf_preview(file) - return file, preview_image, gr.update(visible=True), gr.update(visible=True) + return file, preview_image, gr.update(visible=True) except Exception as e: print(f"Error converting PDF: {e}") - return None, None, gr.update(visible=False), gr.update(visible=False) + return None, None, gr.update(visible=False) def translate( - file_path, - service, - model_id, - lang, - page_range, - recaptcha_response, - progress=gr.Progress(), + file_path, service, model_id, lang, page_range, extra_args, progress=gr.Progress() ): + def pdf_preview(file): + doc = pymupdf.open(file) + page = doc[0] + pix = page.get_pixmap() + image = np.frombuffer(pix.samples, np.uint8).reshape(pix.height, pix.width, 3) + return image + """Translate PDF content using selected service.""" if not file_path: - raise gr.Error("No input") - - if flag_demo and not verify_recaptcha(recaptcha_response): - raise gr.Error("reCAPTCHA fail") + return ( + None, + None, + None, + ) progress(0, desc="Starting translation...") - output = Path("pdf2zh_files") - output.mkdir(parents=True, exist_ok=True) - filename = os.path.splitext(os.path.basename(file_path))[0] - file_en = output / f"{filename}.pdf" - file_zh = output / f"{filename}-zh.pdf" - file_dual = output / f"{filename}-dual.pdf" - shutil.copyfile(file_path, file_en) + # Create a temporary working directory using Gradio's file utilities + temp_path = "./gradio_files" + if os.path.exists(temp_path): + for f in os.listdir(temp_path): + os.remove(os.path.join(temp_path, f)) + else: + os.mkdir(temp_path) + file_original = f"{temp_path}/input.pdf" + + # Copy input file to temp directory + progress(0.05, desc="Preparing files...") + with open(file_path, "rb") as src, open(file_original, "wb") as dst: + dst.write(src.read()) selected_service = service_map.get(service, "google") - selected_page = page_map.get(page_range, [1]) lang_to = lang_map.get(lang, "zh") - if selected_service == "google": - lang_to = "zh-CN" if lang_to == "zh" else lang_to - print(f"Files before translation: {os.listdir(output)}") + # Execute translation in temp directory with real-time progress + progress(0.08, desc="Loading AI models...") - def progress_bar(t: tqdm.tqdm): - progress(t.n / t.total, desc="Translating...") + # Prepare extra arguments + extra_args = extra_args.strip() + # Add page range arguments + if page_range == "All": + extra_args += "" + elif page_range == "First": + extra_args += " -p 1" + elif page_range == "First 5 pages": + extra_args += " -p 1-5" - param = { - "files": [file_en], - "pages": selected_page, - "lang_in": "auto", - "lang_out": lang_to, - "service": f"{selected_service}:{model_id}", - "output": output, - "thread": 4, - "callback": progress_bar, - } - print(param) - extract_text(**param) - print(f"Files after translation: {os.listdir(output)}") + # Execute translation command + if selected_service == "google": + lang_to = "zh-CN" if lang_to == "zh" else lang_to + + if selected_service in ["ollama", "openai"]: + command = f'cd "{temp_path}" && pdf2zh input.pdf -lo {lang_to} -s {selected_service}:{model_id} {extra_args}' + else: + command = f'cd "{temp_path}" && pdf2zh input.pdf -lo {lang_to} -s {selected_service} {extra_args}' + progress(0.12, desc="Loading AI models...") + print(f"Executing command: {command}") + process = subprocess.Popen( + command, + shell=True, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + universal_newlines=True, + ) - if not file_zh.exists() or not file_dual.exists(): - raise gr.Error("No output") + # Monitor progress from command output + while True: + output = process.stdout.readline() + if output == "" and process.poll() is not None: + progress(0.2, desc="Waiting for model response...") + break + if output: + print(f"Command output: {output.strip()}") + # Look for percentage in output + match = re.search(r"(\d+)%", output.strip()) + if match: + progress(0.3, desc=f"Starting translation with {selected_service}...") + percent = int(match.group(1)) + # Map command progress (0-100%) to our progress range (30-80%) + progress_val = 0.3 + (percent * 0.5 / 100) + progress( + progress_val, + desc=f"Translating content using {selected_service}, {percent}% pages done...", + ) + # Get the return code + return_code = process.poll() + print(f"Command completed with return code: {return_code}") + + # Copy the translated files to permanent locations + progress(0.89, desc="Checking results...") + # Check if translation was successful + final_path = "./gradio_files/input-zh.pdf" + final_path_dual = "./gradio_files/input-dual.pdf" + + # Copy the translated files to permanent locations + progress(0.9, desc="Saving translated files...") + if not os.path.exists(final_path) and not os.path.exists(final_path_dual): + print("Translation failed: No output files found") + return ( + None, + None, + None, + ) + + # Generate preview of translated PDF + progress(0.98, desc="Generating preview...") try: - translated_preview = pdf_preview(str(file_zh)) - except Exception: - raise gr.Error("No preview") + preview = pdf_preview(str(final_path)) + except Exception as e: + print(f"Error generating preview: {e}") + preview = None progress(1.0, desc="Translation complete!") - - return ( - str(file_zh), - translated_preview, - str(file_dual), - gr.update(visible=True), - gr.update(visible=True), - gr.update(visible=True), - ) + return (str(final_path), str(final_path_dual), preview) # Global setup @@ -172,16 +178,60 @@ def progress_bar(t: tqdm.tqdm): c950="#020B33", ) + +class EnvSync: + """Two-way synchronization between a variable and its system environment counterpart.""" + + def __init__(self, env_name: str, default_value: str = ""): + self._name = env_name + self._value = os.environ.get(env_name, default_value) + # Initialize the environment variable if it doesn't exist + if env_name not in os.environ: + os.environ[env_name] = default_value + + @property + def value(self) -> str: + """Get the current value, ensuring sync with system env.""" + sys_value = os.environ.get(self._name) + if sys_value != self._value: + self._value = sys_value + return self._value + + @value.setter + def value(self, new_value: str): + """Set the value and sync with system env.""" + self._value = new_value + os.environ[self._name] = new_value + + def __str__(self) -> str: + return self.value + + def __bool__(self) -> bool: + return bool(self.value) + + +# Global setup with gr.Blocks( title="PDFMathTranslate - PDF Translation with preserved formats", theme=gr.themes.Default( primary_hue=custom_blue, spacing_size="md", radius_size="lg" ), css=""" - .secondary-text {color: #999 !important;} + # .secondary-text {color: #999 !important;} footer {visibility: hidden} .env-warning {color: #dd5500 !important;} .env-success {color: #559900 !important;} + .logo {border: transparent; + max-width: 10vh; + } + .logo label {display: none;} + .logo .top-panel {display: none;} + .title {text-align: center;} + .title h1 {color: #999999 !important;} + .question {text-align: center;} + .question h2 {color: #165DFF !important;} + .info-text {text-align: center; margin-top: -5px;} + .info-text p {color: #aaaaaa !important;} @keyframes pulse-background { 0% { background-color: #FFFFFF; } @@ -190,7 +240,7 @@ def progress_bar(t: tqdm.tqdm): 75% { background-color: #FFFFFF; } 100% { background-color: #FFFFFF; } } - + /* Add dashed border to input-file class */ .input-file { border: 1.2px dashed #165DFF !important; @@ -198,6 +248,9 @@ def progress_bar(t: tqdm.tqdm): # background-color: #ffffff !important; animation: pulse-background 2s ease-in-out; transition: background-color 0.4s ease-out; + width: 80vw; + height: 60vh; + margin: 0 auto; } .input-file:hover { @@ -206,6 +259,35 @@ def progress_bar(t: tqdm.tqdm): color: #165DFF !important; background-color: #E8F3FF !important; transition: background-color 0.2s ease-in; + box-shadow: 4px 4px 20px rgba(22, 93, 255, 0.1); + } + + + .input-file label { + color: #165DFF !important; + border: 1.2px dashed #165DFF !important; + border-left: none !important; + border-top: none !important; + } + .input-file .top-panel { + color: #165DFF !important; + border: 1.2px dashed #165DFF !important; + border-right: none !important; + border-top: none !important; + } + .input-file .filename { + color: #165DFF !important; + background-color: #FFFFFF !important; + } + .input-file .download { + color: #165DFF !important; + background-color: #FFFFFF !important; + } + .input-file .wrap { + color: #165DFF !important; + } + .input-file .or { + color: #165DFF !important; } .progress-bar-wrap { @@ -215,211 +297,237 @@ def progress_bar(t: tqdm.tqdm): border-radius: 8px !important; } - # .input-file label { - # color: #165DFF !important; - # border: 1.2px dashed #165DFF !important; - # border-left: none !important; - # border-top: none !important; - # } - # .input-file .wrap { - # color: #165DFF !important; - # } - # .input-file .or { - # color: #165DFF !important; - # } + .options-row { + align-items: center; + display: flex; + padding: 0 20vw 0 20vw !important; + } + .options-row .wrap { + align-items: center; + justify-content: center; + flex-wrap: wrap; + gap: 1rem;} + + .options-row .form label { + color: #999;} + .options-row .form { + border: none !important; + align-items: center !important;} + .options-row [data-testid="block-info"] { + display: none !important;} + .logo-row { + align-items: center;} + .title-row { + align-items: center;} + .details-row { + align-items: center;} + .hide-frame { + border: none !important;} + .hide-frame .top-panel { + display: none !important;} + .hide-frame label { + display: none !important;} + .options-icon { + height: 2em; + width: 2em; + } + .preview-block .top-panel { + display: none !important; + } + .options-btn { + line-height: var(--line-md); + background-color: #FFFFFF; + border: 1.2px solid var(--checkbox-label-border-color) !important; + border-radius: 6px !important; + # color: var(--checkbox-label-border-color) !important; + color: #999; + font-weight: 500; + font-size: var(--text-md); + padding: 0.8em 1em 0.8em 1em !important; + margin: 0.5em !important; + transition: background-color 0.2s ease-in; + } + .options-btn:hover { + background-color: #fafafa; + # border: 1.2px solid #fcfcfc !important; + } + .form { + background-color: #FFFFFF !important;} + .first-page-checkbox { + border: 1.2px solid var(--checkbox-label-border-color) !important; + border-radius: 6px !important; + font-weight: 500; + padding: 0.8em 1em 0.8em 1em !important; + background-color: #ffffff; !important; + margin: 0.5em !important; + align-items: center !important; + font-size: var(--text-md); + # color: var(--checkbox-label-border-color) !important; + color: #999; + transition: background-color 0.2s ease-in; + } + .first-page-checkbox label { + align-items: center !important; + } + .first-page-checkbox:hover { + border: 1.2px solid var(--checkbox-label-border-color) !important; + color: #165DFF !important; + background-color: #fafafa; !important; + """, - head=( - """ - - - """ - if flag_demo - else None - ), ) as demo: - gr.Markdown( - "# [PDFMathTranslate @ Github](https://github.com/Byaidu/PDFMathTranslate)" - ) + with gr.Row(elem_classes=["logo-row"]): + gr.Image("./docs/images/banner.png", elem_classes=["logo"]) + with gr.Row(elem_classes=["title-row"]): + gr.Markdown("# PDFMathTranslate", elem_classes=["title"]) + with gr.Row(elem_classes=["input-file-row"]): + file_input = gr.File( + label="Document", + file_count="single", + file_types=[".pdf"], + interactive=True, + elem_classes=["input-file", "secondary-text"], + visible=True, + ) + preview = gr.Image( + label="Preview", visible=False, elem_classes=["preview-block"] + ) + with gr.Row(elem_classes=["outputs-row"]): + output_file = gr.File( + label="Translated", visible=False, elem_classes=["secondary-text"] + ) + output_file_dual = gr.File( + label="Translated (Bilingual)", + visible=False, + elem_classes=["secondary-text"], + ) + with gr.Row(elem_classes=["options-row"]): + first_page = gr.Checkbox( + label="First Page", + value=False, + interactive=True, + elem_classes=["first-page-checkbox", "secondary-text"], + ) + more_options = gr.Button( + "Preferences", + variant="secondary", + elem_classes=["options-btn"], + ) + with gr.Row(elem_classes=["options-row"]): + refresh = gr.Button( + "Translate another PDF", + variant="primary", + elem_classes=["refresh-btn"], + visible=False, + ) - with gr.Row(): - with gr.Column(scale=1): - gr.Markdown("## File | < 5 MB" if flag_demo else "## File") - file_input = gr.File( - label="Document", - file_count="single", - file_types=[".pdf"], - type="filepath", - elem_classes=["input-file"], - ) - gr.Markdown("## Option") - service = gr.Dropdown( - label="Service", - info="Which translation service to use. Some require keys", - choices=service_map.keys(), - value="Google", - ) - lang_to = gr.Dropdown( - label="Translate to", - info="Which language to translate to (optional)", - choices=lang_map.keys(), - value="Chinese", - ) - page_range = gr.Radio( - choices=page_map.keys(), - label="Pages", - info="Translate the full document or just few pages (optional)", - value=list(page_map.keys())[0], - ) - model_id = gr.Textbox( - label="Model ID", - info="Please enter the identifier of the model you wish to use (e.g., gemma2). " - "This identifier will be used to specify the particular model for translation.", - # value="gemma2", - visible=False, # hide by default - ) - envs_status = "- Properly configured.
" - - def details_wrapper(text_markdown): - text = f""" -
- Technical details - {text_markdown} - - GitHub: Byaidu/PDFMathTranslate
- - GUI by: Rongxin
- - Version: {__version__} -
""" - return text - - def env_var_checker(env_var_name: str) -> str: - if ( - not os.environ.get(env_var_name) - or os.environ.get(env_var_name) == "" - ): - envs_status = ( - f"- Warning: environmental not found or error ({env_var_name})." - + "
- Please make sure that the environment variables are properly configured " - + "(guide).
" - ) - else: - value = str(os.environ.get(env_var_name)) - envs_status = ( - "- Properly configured.
" - ) - if len(value) < 13: - envs_status += ( - f"- Env: {os.environ.get(env_var_name)}
" - ) - else: - envs_status += f"- Env: {value[:13]}***
" - return details_wrapper(envs_status) - - def on_select_service(value, evt: gr.EventData): - # hide model id by default - model_visibility = gr.update(visible=False) - # add a text description - if value == "Google": - envs_status = details_wrapper( - "- Properly configured.
" - ) - - elif value == "DeepL": - envs_status = env_var_checker("DEEPL_AUTH_KEY") - elif value == "DeepLX": - envs_status = env_var_checker("DEEPLX_AUTH_KEY") - elif value == "Azure": - envs_status = env_var_checker("AZURE_APIKEY") - elif value == "OpenAI": - model_visibility = gr.update( - visible=True, value="gpt-4o" - ) # show model id when service is selected - envs_status = env_var_checker("OPENAI_API_KEY") - elif value == "Ollama": - model_visibility = gr.update( - visible=True, value="gemma2" - ) # show model id when service is selected - envs_status = env_var_checker("OLLAMA_HOST") - else: - envs_status = ( - "- Warning: model not in the list." - "
- Please report via " - "(guide).
" - ) - return envs_status, model_visibility - - output_title = gr.Markdown("## Translated", visible=False) - output_file = gr.File(label="Download Translation", visible=False) - output_file_dual = gr.File( - label="Download Translation (Dual)", visible=False - ) - recaptcha_response = gr.Textbox( - label="reCAPTCHA Response", elem_id="verify", visible=False - ) - if flag_demo: - recaptcha_box = gr.HTML( - f'
', - visible=False, - ) - else: - recaptcha_box = gr.HTML() - translate_btn = gr.Button("Translate", variant="primary", visible=False) - tech_details_tog = gr.Markdown( - details_wrapper(envs_status), - elem_classes=["secondary-text"], + # Event handlers + def on_file_upload_immediate(file): + if file: + return [ + gr.update(visible=False), # Hide first-page checkbox + gr.update(visible=False), # Hide options button + ] + return [gr.update(visible=True), gr.update(visible=True)] + + def on_file_upload_translate(file): + if file: + (output, output_dual, preview) = translate( + file.name, "Google", "", "Chinese", "First", "" ) - service.select(on_select_service, service, [tech_details_tog, model_id]) - - with gr.Column(scale=2): - gr.Markdown("## Preview") - preview = gr.Image(label="Document Preview", visible=True) + return [ + gr.update(visible=False), # Hide file upload + preview, # Set preview image + gr.update(visible=True), # Show preview + output, # Set output file + gr.update(visible=True), # Set output file + output_dual, # Set output dual file + gr.update(visible=True), # Set output dual file + gr.update(visible=False), # Hide first-page checkbox + gr.update(visible=False), # Hide options button + gr.update(visible=True), # Show refresh button + ] + return [ + gr.update(visible=True), # Show file upload + None, # Clear preview + gr.update(visible=False), # Hide preview + None, # Clear output file + gr.update(visible=False), # Hide output file + None, # Clear output dual file + gr.update(visible=False), # Hide output dual file + gr.update(visible=True), # Show first-page checkbox + gr.update(visible=True), # Show options button + gr.update(visible=False), # Hide refresh button + ] - # Event handlers file_input.upload( - upload_file, - inputs=[file_input, service], - outputs=[file_input, preview, translate_btn, recaptcha_box], + fn=on_file_upload_immediate, + inputs=[file_input], + outputs=[first_page, more_options], + ).then( + fn=on_file_upload_translate, + inputs=[file_input], + outputs=[ + file_input, + preview, + preview, + output_file, + output_file, + output_file_dual, + output_file_dual, + first_page, + more_options, + refresh, + ], ) - translate_btn.click( - translate, - inputs=[file_input, service, model_id, lang_to, page_range, recaptcha_response], + def on_refresh_click(): + return [ + gr.update(value=None, visible=True), # Clear file input + None, # Clear preview + gr.update(visible=False), # Hide preview + None, # Clear output file + gr.update(visible=False), # Hide output file + None, # Clear output dual file + gr.update(visible=False), # Hide output dual file + gr.update(visible=True), # Show first-page checkbox + gr.update(visible=True), # Show options button + gr.update(visible=False), # Hide refresh button + ] + + refresh.click( + on_refresh_click, outputs=[ - output_file, + file_input, + preview, preview, - output_file_dual, output_file, + output_file, + output_file_dual, output_file_dual, - output_title, + first_page, + more_options, + refresh, ], ) -def setup_gui(share=False): - import doclayout_yolo # cache # noqa: F401 - - if flag_demo: - demo.launch(server_name="0.0.0.0", max_file_size="5mb", inbrowser=True) - else: +def setup_gui(): + try: + demo.launch(server_name="0.0.0.0", debug=True, inbrowser=True, share=False) + except Exception: + print( + "Error launching GUI using 0.0.0.0.\nThis may be caused by global mode of proxy software." + ) try: - demo.launch(server_name="0.0.0.0", debug=True, inbrowser=True, share=share) + demo.launch( + server_name="127.0.0.1", debug=True, inbrowser=True, share=False + ) except Exception: print( - "Error launching GUI using 0.0.0.0.\nThis may be caused by global mode of proxy software." + "Error launching GUI using 127.0.0.1.\nThis may be caused by global mode of proxy software." ) - try: - demo.launch( - server_name="127.0.0.1", debug=True, inbrowser=True, share=share - ) - except Exception: - print( - "Error launching GUI using 127.0.0.1.\nThis may be caused by global mode of proxy software." - ) - demo.launch(debug=True, inbrowser=True, share=True) + demo.launch(server_name="0.0.0.0", debug=True, inbrowser=True, share=True) # For auto-reloading while developing From 7ebcb373f862bfed6e4219d3f958c95000f709e8 Mon Sep 17 00:00:00 2001 From: Rongxin Date: Sat, 23 Nov 2024 14:41:28 +0800 Subject: [PATCH 2/7] feat (gui): simplified process, css formated --- pdf2zh/gui.py | 355 ++++++++++++++++++++++++++++---------------------- 1 file changed, 198 insertions(+), 157 deletions(-) diff --git a/pdf2zh/gui.py b/pdf2zh/gui.py index 739567f0..724db583 100644 --- a/pdf2zh/gui.py +++ b/pdf2zh/gui.py @@ -217,163 +217,204 @@ def __bool__(self) -> bool: primary_hue=custom_blue, spacing_size="md", radius_size="lg" ), css=""" - # .secondary-text {color: #999 !important;} - footer {visibility: hidden} - .env-warning {color: #dd5500 !important;} - .env-success {color: #559900 !important;} - .logo {border: transparent; - max-width: 10vh; - } - .logo label {display: none;} - .logo .top-panel {display: none;} - .title {text-align: center;} - .title h1 {color: #999999 !important;} - .question {text-align: center;} - .question h2 {color: #165DFF !important;} - .info-text {text-align: center; margin-top: -5px;} - .info-text p {color: #aaaaaa !important;} - - @keyframes pulse-background { - 0% { background-color: #FFFFFF; } - 25% { background-color: #FFFFFF; } - 50% { background-color: #E8F3FF; } - 75% { background-color: #FFFFFF; } - 100% { background-color: #FFFFFF; } - } - - /* Add dashed border to input-file class */ - .input-file { - border: 1.2px dashed #165DFF !important; - border-radius: 6px !important; - # background-color: #ffffff !important; - animation: pulse-background 2s ease-in-out; - transition: background-color 0.4s ease-out; - width: 80vw; - height: 60vh; - margin: 0 auto; - } - - .input-file:hover { - border: 1.2px dashed #165DFF !important; - border-radius: 6px !important; + # .secondary-text { + color: #999 !important; + } + footer { + visibility: hidden + } + .env-warning { + color: #dd5500 !important; + } + .env-success { + color: #559900 !important; + } + .logo { + border: transparent; + max-width: 10vh; + } + .logo label { + display: none; + } + .logo .top-panel { + display: none; + } + .title { + text-align: center; + } + .title h1 { + color: #999999 !important; + } + .question { + text-align: center; + } + .question h2 { color: #165DFF !important; - background-color: #E8F3FF !important; - transition: background-color 0.2s ease-in; - box-shadow: 4px 4px 20px rgba(22, 93, 255, 0.1); - } - - - .input-file label { - color: #165DFF !important; - border: 1.2px dashed #165DFF !important; - border-left: none !important; - border-top: none !important; - } - .input-file .top-panel { - color: #165DFF !important; - border: 1.2px dashed #165DFF !important; - border-right: none !important; - border-top: none !important; - } - .input-file .filename { - color: #165DFF !important; - background-color: #FFFFFF !important; - } - .input-file .download { - color: #165DFF !important; - background-color: #FFFFFF !important; - } - .input-file .wrap { - color: #165DFF !important; - } - .input-file .or { - color: #165DFF !important; - } - - .progress-bar-wrap { - border-radius: 8px !important; - } - .progress-bar { - border-radius: 8px !important; - } - - .options-row { - align-items: center; - display: flex; - padding: 0 20vw 0 20vw !important; - } - .options-row .wrap { - align-items: center; - justify-content: center; - flex-wrap: wrap; - gap: 1rem;} - - .options-row .form label { - color: #999;} - .options-row .form { - border: none !important; - align-items: center !important;} - .options-row [data-testid="block-info"] { - display: none !important;} - .logo-row { - align-items: center;} - .title-row { - align-items: center;} - .details-row { - align-items: center;} - .hide-frame { - border: none !important;} - .hide-frame .top-panel { - display: none !important;} - .hide-frame label { - display: none !important;} - .options-icon { - height: 2em; - width: 2em; - } - .preview-block .top-panel { - display: none !important; - } - .options-btn { - line-height: var(--line-md); - background-color: #FFFFFF; - border: 1.2px solid var(--checkbox-label-border-color) !important; - border-radius: 6px !important; - # color: var(--checkbox-label-border-color) !important; - color: #999; - font-weight: 500; - font-size: var(--text-md); - padding: 0.8em 1em 0.8em 1em !important; - margin: 0.5em !important; - transition: background-color 0.2s ease-in; - } - .options-btn:hover { - background-color: #fafafa; - # border: 1.2px solid #fcfcfc !important; - } - .form { - background-color: #FFFFFF !important;} - .first-page-checkbox { - border: 1.2px solid var(--checkbox-label-border-color) !important; - border-radius: 6px !important; - font-weight: 500; - padding: 0.8em 1em 0.8em 1em !important; - background-color: #ffffff; !important; - margin: 0.5em !important; - align-items: center !important; - font-size: var(--text-md); - # color: var(--checkbox-label-border-color) !important; - color: #999; - transition: background-color 0.2s ease-in; - } - .first-page-checkbox label { - align-items: center !important; - } - .first-page-checkbox:hover { - border: 1.2px solid var(--checkbox-label-border-color) !important; - color: #165DFF !important; - background-color: #fafafa; !important; - + } + .info-text { + text-align: center; + margin-top: -5px; + } + .info-text p { + color: #aaaaaa !important; + } + @keyframes pulse-background { + 0% { + background-color: #FFFFFF; + } + 25% { + background-color: #FFFFFF; + } + 50% { + background-color: #E8F3FF; + } + 75% { + background-color: #FFFFFF; + } + 100% { + background-color: #FFFFFF; + } + } + /* Add dashed border to input-file class */ + .input-file { + border: 1.2px dashed #165DFF !important; + border-radius: 6px !important; + # background-color: #ffffff !important; + animation: pulse-background 2s ease-in-out; + transition: background-color 0.4s ease-out; + width: 80vw; + height: 60vh; + margin: 0 auto; + } + .input-file:hover { + border: 1.2px dashed #165DFF !important; + border-radius: 6px !important; + color: #165DFF !important; + background-color: #E8F3FF !important; + transition: background-color 0.2s ease-in; + box-shadow: 4px 4px 20px rgba(22, 93, 255, 0.1); + } + .input-file label { + color: #165DFF !important; + border: 1.2px dashed #165DFF !important; + border-left: none !important; + border-top: none !important; + } + .input-file .top-panel { + color: #165DFF !important; + border: 1.2px dashed #165DFF !important; + border-right: none !important; + border-top: none !important; + } + .input-file .filename { + color: #165DFF !important; + background-color: #FFFFFF !important; + } + .input-file .download { + color: #165DFF !important; + background-color: #FFFFFF !important; + } + .input-file .wrap { + color: #165DFF !important; + } + .input-file .or { + color: #165DFF !important; + } + .progress-bar-wrap { + border-radius: 8px !important; + } + .progress-bar { + border-radius: 8px !important; + } + .options-row { + align-items: center; + display: flex; + padding: 0 20vw 0 20vw !important; + } + .options-row .wrap { + align-items: center; + justify-content: center; + flex-wrap: wrap; + gap: 1rem; + } + .options-row .form label { + color: #999; + } + .options-row .form { + border: none !important; + align-items: center !important; + } + .options-row [data-testid="block-info"] { + display: none !important; + } + .logo-row { + align-items: center; + } + .title-row { + align-items: center; + } + .details-row { + align-items: center; + } + .hide-frame { + border: none !important; + } + .hide-frame .top-panel { + display: none !important; + } + .hide-frame label { + display: none !important; + } + .options-icon { + height: 2em; + width: 2em; + } + .preview-block .top-panel { + display: none !important; + } + .options-btn { + line-height: var(--line-md); + background-color: #FFFFFF; + border: 1.2px solid var(--checkbox-label-border-color) !important; + border-radius: 6px !important; + # color: var(--checkbox-label-border-color) !important; + color: #999; + font-weight: 500; + font-size: var(--text-md); + padding: 0.8em 1em 0.8em 1em !important; + margin: 0.5em !important; + transition: background-color 0.2s ease-in; + } + .options-btn:hover { + background-color: #fafafa; + # border: 1.2px solid #fcfcfc !important; + } + .form { + background-color: #FFFFFF !important; + } + .first-page-checkbox { + border: 1.2px solid var(--checkbox-label-border-color) !important; + border-radius: 6px !important; + font-weight: 500; + padding: 0.8em 1em 0.8em 1em !important; + background-color: #ffffff; + !important; + margin: 0.5em !important; + align-items: center !important; + font-size: var(--text-md); + # color: var(--checkbox-label-border-color) !important; + color: #999; + transition: background-color 0.2s ease-in; + } + .first-page-checkbox label { + align-items: center !important; + } + .first-page-checkbox:hover { + border: 1.2px solid var(--checkbox-label-border-color) !important; + color: #165DFF !important; + background-color: #fafafa; + !important; + """, ) as demo: with gr.Row(elem_classes=["logo-row"]): @@ -433,7 +474,7 @@ def on_file_upload_immediate(file): def on_file_upload_translate(file): if file: (output, output_dual, preview) = translate( - file.name, "Google", "", "Chinese", "First", "" + file.name, "DeepLX", "", "Chinese", "First", "" ) return [ gr.update(visible=False), # Hide file upload From 32d77a2c730c93f8e71201d7e60471ad2c1f4aec Mon Sep 17 00:00:00 2001 From: Rongxin Date: Sat, 23 Nov 2024 15:25:20 +0800 Subject: [PATCH 3/7] feat (gui): better preview ratio --- pdf2zh/gui.py | 55 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 44 insertions(+), 11 deletions(-) diff --git a/pdf2zh/gui.py b/pdf2zh/gui.py index 724db583..5b470019 100644 --- a/pdf2zh/gui.py +++ b/pdf2zh/gui.py @@ -27,6 +27,14 @@ } +def pdf_preview(file): + doc = pymupdf.open(file) + page = doc[0] + pix = page.get_pixmap() + image = np.frombuffer(pix.samples, np.uint8).reshape(pix.height, pix.width, 3) + return image + + def upload_file(file, service, progress=gr.Progress()): """Handle file upload, validation, and initial preview.""" if not file or not os.path.exists(file): @@ -46,13 +54,6 @@ def upload_file(file, service, progress=gr.Progress()): def translate( file_path, service, model_id, lang, page_range, extra_args, progress=gr.Progress() ): - def pdf_preview(file): - doc = pymupdf.open(file) - page = doc[0] - pix = page.get_pixmap() - image = np.frombuffer(pix.samples, np.uint8).reshape(pix.height, pix.width, 3) - return image - """Translate PDF content using selected service.""" if not file_path: return ( @@ -217,6 +218,20 @@ def __bool__(self) -> bool: primary_hue=custom_blue, spacing_size="md", radius_size="lg" ), css=""" + body { + -webkit-user-select: none; /* Safari */ + -ms-user-select: none; /* IE 10 and IE 11 */ + user-select: none; /* Standard syntax */} + gradio-app { + background: + radial-gradient(farthest-side at -33.33% 50%,#0000 52%,#fcfcfc 54% 57%,#0000 59%) 0 calc(224px/2), + radial-gradient(farthest-side at 50% 133.33%,#0000 52%,#fcfcfc 54% 57%,#0000 59%) calc(224px/2) 0, + radial-gradient(farthest-side at 133.33% 50%,#0000 52%,#fcfcfc 54% 57%,#0000 59%), + radial-gradient(farthest-side at 50% -33.33%,#0000 52%,#fcfcfc 54% 57%,#0000 59%), + #ffffff !important; + background-size: calc(224px/4.667) 224px,224px calc(224px/4.667) !important; + + } # .secondary-text { color: #999 !important; } @@ -231,7 +246,10 @@ def __bool__(self) -> bool: } .logo { border: transparent; - max-width: 10vh; + filter: saturate(0%); + background-color:transparent !important; + max-width: 4vh; + margin-bottom: -1.2em; } .logo label { display: none; @@ -242,7 +260,7 @@ def __bool__(self) -> bool: .title { text-align: center; } - .title h1 { + .title h2 { color: #999999 !important; } .question { @@ -372,6 +390,21 @@ def __bool__(self) -> bool: .preview-block .top-panel { display: none !important; } + .preview-block { + # width: 80vw !important; + margin: 0 auto !important; + justify-content: center !important; + align-items: center !important; + background-color: #eeeeee !important; + } + .preview-block .image-frame { + width: 100% !important; + # height: auto !important; + object-fit: cover !important; + } + .preview-block .image-frame img {width: var(--size-full); + object-fit: cover !important; + } .options-btn { line-height: var(--line-md); background-color: #FFFFFF; @@ -390,7 +423,7 @@ def __bool__(self) -> bool: # border: 1.2px solid #fcfcfc !important; } .form { - background-color: #FFFFFF !important; + background-color: rgba(0, 0, 0, 0) !important; } .first-page-checkbox { border: 1.2px solid var(--checkbox-label-border-color) !important; @@ -420,7 +453,7 @@ def __bool__(self) -> bool: with gr.Row(elem_classes=["logo-row"]): gr.Image("./docs/images/banner.png", elem_classes=["logo"]) with gr.Row(elem_classes=["title-row"]): - gr.Markdown("# PDFMathTranslate", elem_classes=["title"]) + gr.Markdown("## PDFMathTranslate", elem_classes=["title"]) with gr.Row(elem_classes=["input-file-row"]): file_input = gr.File( label="Document", From ba33f4f18c73fc60b7572d2f8adf2c80f171bd0b Mon Sep 17 00:00:00 2001 From: Rongxin Date: Sat, 23 Nov 2024 16:01:20 +0800 Subject: [PATCH 4/7] feat (gui): simplified process with settings --- pdf2zh/gui.py | 123 +++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 112 insertions(+), 11 deletions(-) diff --git a/pdf2zh/gui.py b/pdf2zh/gui.py index 5b470019..f0adc7a1 100644 --- a/pdf2zh/gui.py +++ b/pdf2zh/gui.py @@ -31,7 +31,11 @@ def pdf_preview(file): doc = pymupdf.open(file) page = doc[0] pix = page.get_pixmap() + # Get only the top half of the image + height = pix.height + half_height = height // 2 image = np.frombuffer(pix.samples, np.uint8).reshape(pix.height, pix.width, 3) + image = image[:half_height, :, :] # Take only the top half return image @@ -129,7 +133,7 @@ def translate( progress_val = 0.3 + (percent * 0.5 / 100) progress( progress_val, - desc=f"Translating content using {selected_service}, {percent}% pages done...", + desc=f"Translating content using {selected_service}. {percent}% pages translated / overall ", ) # Get the return code @@ -211,6 +215,12 @@ def __bool__(self) -> bool: return bool(self.value) +env_services = EnvSync("PDF2ZH_GUI_SERVICE") +env_lo = EnvSync("PDF2ZH_GUI_LO") +env_deeplx_auth_key = EnvSync("DEEPLX_AUTH_KEY") +env_deeplx_server_url = EnvSync("DEEPLX_SERVER_URL") + + # Global setup with gr.Blocks( title="PDFMathTranslate - PDF Translation with preserved formats", @@ -301,7 +311,7 @@ def __bool__(self) -> bool: animation: pulse-background 2s ease-in-out; transition: background-color 0.4s ease-out; width: 80vw; - height: 60vh; + height: 50vh; margin: 0 auto; } .input-file:hover { @@ -405,6 +415,42 @@ def __bool__(self) -> bool: .preview-block .image-frame img {width: var(--size-full); object-fit: cover !important; } + .options-modal { + position: absolute !important; + # top: 20vh !important; + left: 50vw !important; + transform: translate(-25vw,-0vh) !important; + z-index: 1000 !important; + background: white !important; + padding: 2rem !important; + border-radius: 8px !important; + box-shadow: 4px 4px 10px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.02) !important; + width: 400px !important; + } + .options-modal .gr-group { + background: white !important; + } + .options-modal .styler{ + background: white !important; + } + .options-modal h3 { + margin-top: 0 !important; + margin-bottom: 1.5rem !important; + color: #333 !important; + } + .options-modal .form { + margin-bottom: 1.5rem !important; + } + .options-modal .row { + justify-content: flex-end !important; + gap: 1rem !important; + } + .options-modal div button .secondary { + background-color: white !important; + } + .options-modal button { + min-width: 80px !important; + } .options-btn { line-height: var(--line-md); background-color: #FFFFFF; @@ -476,14 +522,14 @@ def __bool__(self) -> bool: elem_classes=["secondary-text"], ) with gr.Row(elem_classes=["options-row"]): - first_page = gr.Checkbox( - label="First Page", + first_page_only = gr.Checkbox( + label="Only first page", value=False, interactive=True, elem_classes=["first-page-checkbox", "secondary-text"], ) more_options = gr.Button( - "Preferences", + "More options", variant="secondary", elem_classes=["options-btn"], ) @@ -495,6 +541,59 @@ def __bool__(self) -> bool: visible=False, ) + def show_options(): + return gr.update(visible=True) + + def save_options(api_key, api_url, model): + env_api_key.value = api_key + env_api_url.value = api_url + env_model.value = model + return gr.update(visible=False) + + def cancel_options(): + return gr.update(visible=False) + + # Options modal + with gr.Column(visible=False, elem_classes=["options-modal"]) as options_modal: + gr.Markdown("## Advanced Options") + with gr.Group(): + gui_service = gr.Dropdown( + label="Translation Service", + choices=list(service_map.keys()), + value=env_services.value, + interactive=True, + ) + api_key_input = gr.Textbox( + label="DeepLX Auth Key (required)", + value=env_deeplx_auth_key.value, + interactive=True, + ) + api_url_input = gr.Textbox( + label="DeepLX ServerURL (optional)", + value=env_deeplx_server_url.value, + interactive=True, + ) + gui_lo = gr.Dropdown( + label="Target Language", + choices=["Chinese", "English"], + value=env_lo.value, + interactive=True, + ) + with gr.Row(): + cancel_btn = gr.Button("Cancel") + save_btn = gr.Button("Save", variant="primary") + + # Connect the options events + more_options.click(show_options, outputs=[options_modal]) + + cancel_btn.click(cancel_options, outputs=[options_modal]) + + save_btn.click( + save_options, + inputs=[api_key_input, api_url_input, model_input], + outputs=[options_modal], + ) + # Event handlers def on_file_upload_immediate(file): if file: @@ -504,10 +603,12 @@ def on_file_upload_immediate(file): ] return [gr.update(visible=True), gr.update(visible=True)] - def on_file_upload_translate(file): + def on_file_upload_translate(file, first_page_only): + option_first_page = "First" if first_page_only else "All" + option_service = service_map[gui_service] if gui_service else "Google" if file: (output, output_dual, preview) = translate( - file.name, "DeepLX", "", "Chinese", "First", "" + file.name, option_service, "", "Chinese", option_first_page, "" ) return [ gr.update(visible=False), # Hide file upload @@ -537,10 +638,10 @@ def on_file_upload_translate(file): file_input.upload( fn=on_file_upload_immediate, inputs=[file_input], - outputs=[first_page, more_options], + outputs=[first_page_only, more_options], ).then( fn=on_file_upload_translate, - inputs=[file_input], + inputs=[file_input, first_page_only], outputs=[ file_input, preview, @@ -549,7 +650,7 @@ def on_file_upload_translate(file): output_file, output_file_dual, output_file_dual, - first_page, + first_page_only, more_options, refresh, ], @@ -579,7 +680,7 @@ def on_refresh_click(): output_file, output_file_dual, output_file_dual, - first_page, + first_page_only, more_options, refresh, ], From 1b67f266c4b01372baf7918abe938aed1e3038a2 Mon Sep 17 00:00:00 2001 From: Rongxin Date: Tue, 26 Nov 2024 15:35:00 +0800 Subject: [PATCH 5/7] feat (gui): clean static files --- pdf2zh/gui.py | 271 +--------------------------- pdf2zh/static/css/gui.css | 330 +++++++++++++++++++++++++++++++++++ pdf2zh/static/img/banner.png | Bin 0 -> 120816 bytes 3 files changed, 333 insertions(+), 268 deletions(-) create mode 100644 pdf2zh/static/css/gui.css create mode 100644 pdf2zh/static/img/banner.png diff --git a/pdf2zh/gui.py b/pdf2zh/gui.py index f0adc7a1..fda49c8b 100644 --- a/pdf2zh/gui.py +++ b/pdf2zh/gui.py @@ -221,280 +221,15 @@ def __bool__(self) -> bool: env_deeplx_server_url = EnvSync("DEEPLX_SERVER_URL") +with open("./static/css/gui.css", "r") as f: + css_gui = f.read() # Global setup with gr.Blocks( title="PDFMathTranslate - PDF Translation with preserved formats", theme=gr.themes.Default( primary_hue=custom_blue, spacing_size="md", radius_size="lg" ), - css=""" - body { - -webkit-user-select: none; /* Safari */ - -ms-user-select: none; /* IE 10 and IE 11 */ - user-select: none; /* Standard syntax */} - gradio-app { - background: - radial-gradient(farthest-side at -33.33% 50%,#0000 52%,#fcfcfc 54% 57%,#0000 59%) 0 calc(224px/2), - radial-gradient(farthest-side at 50% 133.33%,#0000 52%,#fcfcfc 54% 57%,#0000 59%) calc(224px/2) 0, - radial-gradient(farthest-side at 133.33% 50%,#0000 52%,#fcfcfc 54% 57%,#0000 59%), - radial-gradient(farthest-side at 50% -33.33%,#0000 52%,#fcfcfc 54% 57%,#0000 59%), - #ffffff !important; - background-size: calc(224px/4.667) 224px,224px calc(224px/4.667) !important; - - } - # .secondary-text { - color: #999 !important; - } - footer { - visibility: hidden - } - .env-warning { - color: #dd5500 !important; - } - .env-success { - color: #559900 !important; - } - .logo { - border: transparent; - filter: saturate(0%); - background-color:transparent !important; - max-width: 4vh; - margin-bottom: -1.2em; - } - .logo label { - display: none; - } - .logo .top-panel { - display: none; - } - .title { - text-align: center; - } - .title h2 { - color: #999999 !important; - } - .question { - text-align: center; - } - .question h2 { - color: #165DFF !important; - } - .info-text { - text-align: center; - margin-top: -5px; - } - .info-text p { - color: #aaaaaa !important; - } - @keyframes pulse-background { - 0% { - background-color: #FFFFFF; - } - 25% { - background-color: #FFFFFF; - } - 50% { - background-color: #E8F3FF; - } - 75% { - background-color: #FFFFFF; - } - 100% { - background-color: #FFFFFF; - } - } - /* Add dashed border to input-file class */ - .input-file { - border: 1.2px dashed #165DFF !important; - border-radius: 6px !important; - # background-color: #ffffff !important; - animation: pulse-background 2s ease-in-out; - transition: background-color 0.4s ease-out; - width: 80vw; - height: 50vh; - margin: 0 auto; - } - .input-file:hover { - border: 1.2px dashed #165DFF !important; - border-radius: 6px !important; - color: #165DFF !important; - background-color: #E8F3FF !important; - transition: background-color 0.2s ease-in; - box-shadow: 4px 4px 20px rgba(22, 93, 255, 0.1); - } - .input-file label { - color: #165DFF !important; - border: 1.2px dashed #165DFF !important; - border-left: none !important; - border-top: none !important; - } - .input-file .top-panel { - color: #165DFF !important; - border: 1.2px dashed #165DFF !important; - border-right: none !important; - border-top: none !important; - } - .input-file .filename { - color: #165DFF !important; - background-color: #FFFFFF !important; - } - .input-file .download { - color: #165DFF !important; - background-color: #FFFFFF !important; - } - .input-file .wrap { - color: #165DFF !important; - } - .input-file .or { - color: #165DFF !important; - } - .progress-bar-wrap { - border-radius: 8px !important; - } - .progress-bar { - border-radius: 8px !important; - } - .options-row { - align-items: center; - display: flex; - padding: 0 20vw 0 20vw !important; - } - .options-row .wrap { - align-items: center; - justify-content: center; - flex-wrap: wrap; - gap: 1rem; - } - .options-row .form label { - color: #999; - } - .options-row .form { - border: none !important; - align-items: center !important; - } - .options-row [data-testid="block-info"] { - display: none !important; - } - .logo-row { - align-items: center; - } - .title-row { - align-items: center; - } - .details-row { - align-items: center; - } - .hide-frame { - border: none !important; - } - .hide-frame .top-panel { - display: none !important; - } - .hide-frame label { - display: none !important; - } - .options-icon { - height: 2em; - width: 2em; - } - .preview-block .top-panel { - display: none !important; - } - .preview-block { - # width: 80vw !important; - margin: 0 auto !important; - justify-content: center !important; - align-items: center !important; - background-color: #eeeeee !important; - } - .preview-block .image-frame { - width: 100% !important; - # height: auto !important; - object-fit: cover !important; - } - .preview-block .image-frame img {width: var(--size-full); - object-fit: cover !important; - } - .options-modal { - position: absolute !important; - # top: 20vh !important; - left: 50vw !important; - transform: translate(-25vw,-0vh) !important; - z-index: 1000 !important; - background: white !important; - padding: 2rem !important; - border-radius: 8px !important; - box-shadow: 4px 4px 10px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.02) !important; - width: 400px !important; - } - .options-modal .gr-group { - background: white !important; - } - .options-modal .styler{ - background: white !important; - } - .options-modal h3 { - margin-top: 0 !important; - margin-bottom: 1.5rem !important; - color: #333 !important; - } - .options-modal .form { - margin-bottom: 1.5rem !important; - } - .options-modal .row { - justify-content: flex-end !important; - gap: 1rem !important; - } - .options-modal div button .secondary { - background-color: white !important; - } - .options-modal button { - min-width: 80px !important; - } - .options-btn { - line-height: var(--line-md); - background-color: #FFFFFF; - border: 1.2px solid var(--checkbox-label-border-color) !important; - border-radius: 6px !important; - # color: var(--checkbox-label-border-color) !important; - color: #999; - font-weight: 500; - font-size: var(--text-md); - padding: 0.8em 1em 0.8em 1em !important; - margin: 0.5em !important; - transition: background-color 0.2s ease-in; - } - .options-btn:hover { - background-color: #fafafa; - # border: 1.2px solid #fcfcfc !important; - } - .form { - background-color: rgba(0, 0, 0, 0) !important; - } - .first-page-checkbox { - border: 1.2px solid var(--checkbox-label-border-color) !important; - border-radius: 6px !important; - font-weight: 500; - padding: 0.8em 1em 0.8em 1em !important; - background-color: #ffffff; - !important; - margin: 0.5em !important; - align-items: center !important; - font-size: var(--text-md); - # color: var(--checkbox-label-border-color) !important; - color: #999; - transition: background-color 0.2s ease-in; - } - .first-page-checkbox label { - align-items: center !important; - } - .first-page-checkbox:hover { - border: 1.2px solid var(--checkbox-label-border-color) !important; - color: #165DFF !important; - background-color: #fafafa; - !important; - - """, + css=css_gui, ) as demo: with gr.Row(elem_classes=["logo-row"]): gr.Image("./docs/images/banner.png", elem_classes=["logo"]) diff --git a/pdf2zh/static/css/gui.css b/pdf2zh/static/css/gui.css new file mode 100644 index 00000000..ed8e91c3 --- /dev/null +++ b/pdf2zh/static/css/gui.css @@ -0,0 +1,330 @@ +body { + -webkit-user-select: none; + /* Safari */ + -ms-user-select: none; + /* IE 10 and IE 11 */ + user-select: none; + /* Standard syntax */ +} + +gradio-app { + background: + radial-gradient(farthest-side at -33.33% 50%, #0000 52%, #fcfcfc 54% 57%, #0000 59%) 0 calc(224px/2), + radial-gradient(farthest-side at 50% 133.33%, #0000 52%, #fcfcfc 54% 57%, #0000 59%) calc(224px/2) 0, + radial-gradient(farthest-side at 133.33% 50%, #0000 52%, #fcfcfc 54% 57%, #0000 59%), + radial-gradient(farthest-side at 50% -33.33%, #0000 52%, #fcfcfc 54% 57%, #0000 59%), + #ffffff !important; + background-size: calc(224px/4.667) 224px, 224px calc(224px/4.667) !important; + +} + +# .secondary-text { + color: #999 !important; +} + +footer { + visibility: hidden +} + +.env-warning { + color: #dd5500 !important; +} + +.env-success { + color: #559900 !important; +} + +.logo { + border: transparent; + filter: saturate(0%); + background-color: transparent !important; + max-width: 4vh; + margin-bottom: -1.2em; +} + +.logo label { + display: none; +} + +.logo .top-panel { + display: none; +} + +.title { + text-align: center; +} + +.title h2 { + color: #999999 !important; +} + +.question { + text-align: center; +} + +.question h2 { + color: #165DFF !important; +} + +.info-text { + text-align: center; + margin-top: -5px; +} + +.info-text p { + color: #aaaaaa !important; +} + +@keyframes pulse-background { + 0% { + background-color: #FFFFFF; + } + + 25% { + background-color: #FFFFFF; + } + + 50% { + background-color: #E8F3FF; + } + + 75% { + background-color: #FFFFFF; + } + + 100% { + background-color: #FFFFFF; + } +} + +/* Add dashed border to input-file class */ +.input-file { + border: 1.2px dashed #165DFF !important; + border-radius: 6px !important; + # background-color: #ffffff !important; + animation: pulse-background 2s ease-in-out; + transition: background-color 0.4s ease-out; + width: 80vw; + height: 50vh; + margin: 0 auto; +} + +.input-file:hover { + border: 1.2px dashed #165DFF !important; + border-radius: 6px !important; + color: #165DFF !important; + background-color: #E8F3FF !important; + transition: background-color 0.2s ease-in; + box-shadow: 4px 4px 20px rgba(22, 93, 255, 0.1); +} + +.input-file label { + color: #165DFF !important; + border: 1.2px dashed #165DFF !important; + border-left: none !important; + border-top: none !important; +} + +.input-file .top-panel { + color: #165DFF !important; + border: 1.2px dashed #165DFF !important; + border-right: none !important; + border-top: none !important; +} + +.input-file .filename { + color: #165DFF !important; + background-color: #FFFFFF !important; +} + +.input-file .download { + color: #165DFF !important; + background-color: #FFFFFF !important; +} + +.input-file .wrap { + color: #165DFF !important; +} + +.input-file .or { + color: #165DFF !important; +} + +.progress-bar-wrap { + border-radius: 8px !important; +} + +.progress-bar { + border-radius: 8px !important; +} + +.options-row { + align-items: center; + display: flex; + padding: 0 20vw 0 20vw !important; +} + +.options-row .wrap { + align-items: center; + justify-content: center; + flex-wrap: wrap; + gap: 1rem; +} + +.options-row .form label { + color: #999; +} + +.options-row .form { + border: none !important; + align-items: center !important; +} + +.options-row [data-testid="block-info"] { + display: none !important; +} + +.logo-row { + align-items: center; +} + +.title-row { + align-items: center; +} + +.details-row { + align-items: center; +} + +.hide-frame { + border: none !important; +} + +.hide-frame .top-panel { + display: none !important; +} + +.hide-frame label { + display: none !important; +} + +.options-icon { + height: 2em; + width: 2em; +} + +.preview-block .top-panel { + display: none !important; +} + +.preview-block { + # width: 80vw !important; + margin: 0 auto !important; + justify-content: center !important; + align-items: center !important; + background-color: #eeeeee !important; +} + +.preview-block .image-frame { + width: 100% !important; + # height: auto !important; + object-fit: cover !important; +} + +.preview-block .image-frame img { + width: var(--size-full); + object-fit: cover !important; +} + +.options-modal { + position: absolute !important; + # top: 20vh !important; + left: 50vw !important; + transform: translate(-25vw, -0vh) !important; + z-index: 1000 !important; + background: white !important; + padding: 2rem !important; + border-radius: 8px !important; + box-shadow: 4px 4px 10px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.02) !important; + width: 400px !important; +} + +.options-modal .gr-group { + background: white !important; +} + +.options-modal .styler { + background: white !important; +} + +.options-modal h3 { + margin-top: 0 !important; + margin-bottom: 1.5rem !important; + color: #333 !important; +} + +.options-modal .form { + margin-bottom: 1.5rem !important; +} + +.options-modal .row { + justify-content: flex-end !important; + gap: 1rem !important; +} + +.options-modal div button .secondary { + background-color: white !important; +} + +.options-modal button { + min-width: 80px !important; +} + +.options-btn { + line-height: var(--line-md); + background-color: #FFFFFF; + border: 1.2px solid var(--checkbox-label-border-color) !important; + border-radius: 6px !important; + # color: var(--checkbox-label-border-color) !important; + color: #999; + font-weight: 500; + font-size: var(--text-md); + padding: 0.8em 1em 0.8em 1em !important; + margin: 0.5em !important; + transition: background-color 0.2s ease-in; +} + +.options-btn:hover { + background-color: #fafafa; + # border: 1.2px solid #fcfcfc !important; +} + +.form { + background-color: rgba(0, 0, 0, 0) !important; +} + +.first-page-checkbox { + border: 1.2px solid var(--checkbox-label-border-color) !important; + border-radius: 6px !important; + font-weight: 500; + padding: 0.8em 1em 0.8em 1em !important; + background-color: #ffffff; + !important; + margin: 0.5em !important; + align-items: center !important; + font-size: var(--text-md); + # color: var(--checkbox-label-border-color) !important; + color: #999; + transition: background-color 0.2s ease-in; +} + +.first-page-checkbox label { + align-items: center !important; +} + +.first-page-checkbox:hover { + border: 1.2px solid var(--checkbox-label-border-color) !important; + color: #165DFF !important; + background-color: #fafafa; + !important; +} \ No newline at end of file diff --git a/pdf2zh/static/img/banner.png b/pdf2zh/static/img/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..c04b84729c90eaf32fcc99400da10e147ea84cf3 GIT binary patch literal 120816 zcmeFZi96Kq_dh;TBwJDjV@Y~dNcJs4DO#kcsO(EA#xi7Iizs`gC`1X#9>zM>3|W(9 zFf+ttH#5dI#x~!3#_Rq5eLmmo_ZR%GU)R;uWz0P1zVCC+<2=seoV%AdjSRRC2p@nz zAlz3jUo?S0*oGjGy~p;mfmbB@XieZB4)@FVJRuN)e;9vRu9zHO1TV69niyPw6n2Zu zf*u`tZ_b2`98hIPvf3y3ZIJ{4`?U0#3 zg5T5E-dFwlpeE+G8ZP&-UY3+|rC!$@w|XLbUpO!HW6NE$(I+e}=hr@?6n?i0b$;H* zQ7QP?*vyHeLhW7I8{y(`=bnscX%7fhceuNAk77+C*T;a-qmoK($9w!FCt_`WXw-`v zzOmC+d`4+>NDbLaKe-ny^Z)kK4;U4g`$=UZYO>+r}@;+9Uk{D z5mbe?A2kwWhd|_o_NX#GUM8N8y3gi7S2z5nE9isLDwSpNlZjx|zd=28${nYwM($oXcYQY?Kj+l z^8)2!SRtXqIgJ3Bm^C3z_HL#N+jx*j z(VR`{z~aJ^$H4whe5rx$1JI)HTBQmODmzB!%$%F z+1*EdzZtG0x2H2E%oev(S81mc1AAzl3Jx?Bxoiil63RjA3$faAd2a;Y`>6P-{25h3 zp*RoW8Q)v5y#%H~F6^wNA2|Sb?^#uhsTt)ZJY%f1Q-SFnd-JWNO~q#-boSaD_Mx^s zmu#v8YcQ|lApF;29P0*2QLSh3i}xTWh^~Tam2!puS!2WT)BAuuzRU2=6_FwWO^u+o z+i*T)p;uFvxs?nDtEnEJSdC_U`OLQ5VLXZ+6W^@)N$tCryS0TN7hz*_A{;E_%OR%K z8%RcezjW+*ylo5iyKN7o)zC%5ki;Ttx6S7LnIMs{igiR_$g=lAbfd&2KGk*~7*)Fj zihfSAI_P642u(p?cq0*wb?T5%(_Jsp^>Yu-+)v9-(_A00OOdV1nu$cHxjna9^j43- zo}p`fWUI_M6BBKB(5%`@d$fq!T6WykcDTLTpwUa9f+H{U8fM zPGo2u+_^l+_sa34crmwR1OjT*8Xv()V57F+Ma>>ti{KnXE>5Bh?vB(|y5ANw3-(_& zp9}!Lt*gxpH;%S*$Ceg(kba7Wf)!piB9q&UQ+KaV3_?^i1=-@B^1Yp$Eu=Q9OG>jq z<~W#NX|Lk&Wa`PI=lwwlu&d}yDKc`Ltx0`z;!m)_bA&j@Byzme@ihDjfaqSf)KCddC(qeG0~FJ9R|Nw8|Ax!i85Yl1%R!! zEsS4lLA$DLxwOrYgK4}^f5LE3pWDEg9sxO&C&K!C2Djfy;8ueLeSDc7pA6N%xCa7p z805B9aoqauZR+WAKLQWMz;0COy!&0J{H6N4HFA zRscX#_cA#=k-4j;wj@BZOvXtFVH}R-u+axpAh+F$~vk>zRpj@2C z(U_Xe;0&RpYB@%-=wf^mFK&D<0)YYkvN-{< zK{H)cQHD3Pa0=HbfHjbhHlem$V&ZFMfQtt3n1lhv7<2B(CdMAeU&x;U2uvUG0{;1T zcZCIl>Vh8{g(QzX4(*qBb+^Wi%ag3k!4@J#hM*XwgJ@A#^lEcuBRGo|lnujsE)yz@ zfy;HavnJn@ajd7&)b7LG!yDyEq`U1!)U_Y0V^}DAW*!!LGKMvyYb$~SWR2eDq^MZD z>pC`}cWiq}e2@Ic0#>lMG4P%+3RgIyM962`T@VVgScYxP3y{LwoFyH~fP-;+%*5ts z!F0Zb7&1>UL=b9ld$dwC93h`E1dFdlkoh;`k)&t zTlUKDrrp8I%Wh>up@YL`<>QtB$~CDA_5dyhIFHcKzhH5D*?d1hn-hTLsWSME-U-A- ztXuF7FH0x^IJEkQ?_&}3@!xQqlQCbz6>xYcl;=5uLfG!xPY5+tJa!1+M0zYZNvSTC z(6b0Li@05k@C4t{(@8@F6f#cj&gfD`E5`PXxmFJ)#vvj1by#jLH5^7%{!BN5Acq>M6*h zxLxPbtd#?3z*xOQITyjS`ICI1E8vyKnE9mM+ftDIHXp+q{+fgN7*GP$8B7olpV3wf+wv344E%!6DkR z+G@gFh!%jh_rh-YsRkzspz$yRKY$}J4>ebITM@3WoP^IH6nCjv)2ATB=E)=IMvlcI zVcQ@Z88FF4c|q&Q|XmDuayp&Ys%QLhGy@c5#YuoQsq^U_p~=9rOD@-euMlE z5NW9|WlVaElb{~Q@F5$vf;5mFbW^zhS5B6DV2vwqw+1kB@qu48s8YILw68JU+u^46 z&(Zyg3Xng0zkn5O0E1umtKe2U$OwBXARL-b7ax2bhE{}_*jnhVUty%Y^R)1@&b4dv z^*bkMx2@#UuYXIN0$J_LRcd+1(iru_y|X4+Fr(V7<5h7NNni{K$}DQ15;#!KZ7ug znH9H`7Mp+4>?rZ(ZJ)%})HFcb3_s*rbH&bGa4I&Z%%B3z&d-p;HtdYLD_KDAE}ol~ zpWa0q0BqU7ZSUIfy7Bg@1qSxSk3xOy>qXgR5sxciXSQc`n1EU1yBe0^ zoH+!8=I01(W{;z^DMNLMNscW(0BTvjAKa)Q3SNjIC;VasMFa{0nz zTT5+0-OP5WkC>ypt44lKG_bC-iZ19f8|32(%-%pX^G)4r3s{X`VMFV$N9?I5by8CBE z9&>J?VTN)-{J!e77V4rTe}sAFd|pwD%o+tCkKjFn233`RUseWg5UK#T=B&c+H{A86 zihWd2^``+N|Gz4OTc?Qai-`pB;24AOI1%ua| z4|BQCL=nj$yn+~@Xo5Yl<`PB!a3dezW60NB1;EubBun11vr4YpqH+{iI&BK$w0`V4r59=h`(QG(^>w;RD&4su|v z;3z%N_ABcls5qXxM`xJ(Mxt#B`X~f)k~l@I9ltLx=JAcWq|9NE%ibMnjXpo}HeR6V zEicp{_$~Qlz2yw*l3e0>?6n@ReZbjLlM9OW!Iur0Mu|F>${|$1;U9Md=3Hc9+3gRR zAjU%j+%%pcsXFHS)!fMV2tbg?*WKA6x@jrzsYP$=W!>2RMX+Z}Kj)pg_dg(}>Q0?< ztF1UZ>g%Imc$I6|E{`|>^=VRyCr22swB8XDFn>AkxLNbZyJL9<*nb9wlSus;+tAMh zP5qlsn)DN1Uhj_|wV2yy^G1LdzO@ML7@wT>ZtCda5r5XQHu5UHet^Sz#p*4NBY=8@ zVQuPP*W$PJ-md>yOVlwk53=0zDNEl03>%6<8ol+`Ru9QhyHsgf8|*qt3V(a6W#>`* zdT@~}lzdJ9_8v%Q9j@L$z`OYRTc)WmGl&-M!SSbU=Za7&+wKK&5%6hD)FNh9iU^J8NgYdsZfyfc+#7D#H$0*m>lM%C*~rAIVq!?e+2dzlvYF3$-S+vY<`#M1 zOSX=<^u5-YFRCzIrs;+pJ{Kj%0vUOfJQnok^yA{|w??iJLHJbW_5IX3w$%8`pE6L> zykHq!(_*zf+I>?tHz^&<5wc8hdrddGnsP?Prek=j-Rq-spcXUHyaJ4ABHq*Yppu*F-+A?^-my&a> zl@vW+v34dOX3PQUMD`mK^eV-YrI|3a2*f@Y-aQeIi&|`mOMQfWDm_|t*v+$2)3mi# z&bQM^+Q$?f-uQpKLlE_hMH+H%PWX01&yeDRtmBh5D}kyr>OYy{PU$7ocW-V6Fokua zt0Xq_9DA+5yR0>$A0#6U-qvYck4pSRVd-ItzyE9%#r$S3@5j;W2Zri!-|FDGEVsHL zCnvScoP<4di;@dB&*qMWXoWtRY<@o4U5kKQU(>X-v|j{X>3<%d0V)EL-a`3!Hwi@y z5&^2LuJ^FPMFC-WACqOP+j`lre;}nvj5yD~Z))S5uNe=dtxcMG{W{!w(ew&OvIqOu zD=gStih-uShTP`c_;*dqW5c5Js#+pZqB(^MzWtagHO0~$twBJF#Ezg_D5;J{Kw%Cg zOb$f`w8b{uW~R;vkhk@_Md2D$&#n}~mHy{H9wnEIcVOuDuuZKc68*gcjPh?(DgV^lhR+T)K zb7oWE9LOkWnI)3VCP9E5ZVk^mCmS2k=fQqwnw~$SGCWsDGQD*4P5+4id55u3e4vl{H=QE?BOphi-Zg0wac86 zMt1STWd@q2L1_ifncOWeT?z#c$0|xw^dpR~DrlXP@``Q9{E5+n1> zJjFg+>0n8$qiSwBX{4=<1r>J_*6dUk^TOp$1t&x*N+9E;ol%h|~?W2izlIV#lX)>WL9a zALn__on0!g5C{lZv1{|5S{d~ctuIo4tsLy?5~B6sFxFrHmPyu_6|AhL23AKqAsZ;p zMG$~O$((=K##lQ);{t4JK>A5zLhSxY+vNDwF0H=N9`x8M;;%>N$&FUkM9Qhk28fTv$u@Ogmav>VQ|C*w+M4xP z3v&&#yDR{6Vf0cyT`1o1!qgbK{-YgyqgB*BfE<5-Ffl!mB3~F3cVH+&!4Pzwo_WZ} zXi6utCP$>aZ`ISUuOAuaGTcp$`!Ai$kBDh~iV?Y8cn7+Yn%Lhk-IA`IP(T4d=2cT? z^6ZtbP+m-c&8eMj8Syi~OxK)C@RzyDonUYd`zwT*!D@vlg-7%8DKPs$1POrKpMIIQ|A3nlgPnYu#ajTR+Ga45VpL8tMdJHRRQ2HYjexHqs8W0jO z7#6?bS9t`;fbxaLKEtMfsilPg(hG?wG ziy6C_*fz_@rf2p)M*`rr($u7d%8FTR{4~EdocH#ReP8&+X}m4i}ivs5{5IEAETyD53qG!t!7RWeD@pvs4BY5n5Kt;Zaf*$Y3} zcmuGxPzeWdzTqWN_%i&r%SYoDO2i!#YXwW6F+-ei zS45(>j5STrzmD!V(zv94hB5%HX$?+? z4n{8(U^)LxtnQ4MN0(zP+qG*8_ya|pidAmS8I>W0ru>CO&imaKR1<7xDg7rvrk20% zfZ=Wgspm;#RwJ+XwS<-w8kehNUN5=lQe2>QcY8XQ{mEc=EZu8jr?P|o1Db^u>s$AYVg5gC z{)td3^|nmw*Zy`^q5s?Kk^L4rDVZFm3$aRpPHMFjE3asxf!mo#`edt594hS=&&2}F zUU(JSehMVnkyRn{$IVf($fR`QpcP%=Z@zzOma2HV-|2`G0bTvRIzRamFwaq);>7Y< z(4_=I{UsnrTa%zpvI4+Ldv!QKP4wF(JSOHG=lDwlpEvph6#X9HL21KPbtb$~`ROwL zE?*0_6WoR8p0y=rd~>}x5!)|-+X>oQ>eC!=HyDsb`lgx2N*RvOOfjR^0?XIm^9%C5 zKZfkpr!@J@u_8}JJerQDjou0y77uZouFFswC7EN^Mq9~Va>`=?WAy4fwz%r_x3Q8o zDVDp{H;|szRhgo7YsWdK+AZ$$VZ^=6a=_?C7+OL8at+TY&7p*gV=0zDfL@9U3qnN< zRE@hu_lM4A(Fxs8J5c4~r+&CgM4Y1#f`=0FD7T=v?C`L8$GoC>+Y}px;sDw(epI_y z8W1<>=1RPzUQ=R+rP_#s%JC0tGlTt$UgRgubleN-%fz6_JM5b#as=b}EZ3) zpaWW)5Bub8aW*m}&ZmcmB1=Op1N-w?FrUv5J zupEnhV5Z=xvETkcmFYfP&7n0dy2Jejfw1?L26K~+k-X5236@y3(E^>KnVNV}ae)|N z`B=$SEqdh%hpSG{&L!q>c&mq2ug|!W3(hzM>=r=Orv8Gzy>SF``g|Jc=Ft5~_hkhn zovpc&bAFY(-1ftJ9qFPJ!Ns^`b@i+G2c5lv;dScw4|-hYCd3IFFa+~MXa!jSy7q~Et^!xj zGLB7F_qG3Xry@n|XvEq7#?B7b*k0OJ;0Z_rOffOxYv5A#hvmf*Htad6Ox8`i%7a)7 zxpSE7JjHf*m)i#>|C(`$m$Slum8}_bUwv#nkT$KHV$&MS8DqV`;R`Wxhg2iMmJ&=^ z+X<>23-1s`W~tJZhc5qPlPRS?3>@hQTF7`<4Ex@C@z$f_G{N}0AT{2;1l0XBg=0&h z>Sq_}i*F|X8ovl@Z2BXXe=0b(zU=e=JT5&13>jXQFi_~#M6?;KD1o?s1ZuK zq+q?%-sktoEw7qs*BkXH)rA+o%<3!n>u@Bl0SDLFXQD<4s9PGpFmk#3gZuPxv|ijqff*?r zv$OsC*L7sGKgN=#GGShOgICF9wYYyRoeh?&JoLwxLg5<&f?_k_6g%ji_b6$4ki&^! zp6t&>Uk8v6j{B~gl$4mK*KoDGXxnU|c$fTK%T&vuKUtlq@Co4le3)UNNiAoe9K3Ky zzunyVPt}_~@YL-Ulb{U$$xL7CuOa#Qm|(KRm94XCuG4;Aw69NZ)rzANmSd>`-!0;T z^IZBfWFH)NT6t6Pu8Fq#*+(a)f<6+Qr#w0s#(it#dI0y*zbzB>&r9y0#aH?B+P06% zfSv8dzgL(|k1s&bDoFFnps8=O4J+#*IUk%_?5H=?oJo#@p^Kpnfo09c%s5T@MBrw)_RJ)$+FJJK{K#Wk8iflnY+c zCC_Ka=*4=FqFz!b6E~OVlStvvI{O$Kej#3tQaR8AP*#uouJdupT?Vv^!v0lj(+*RC z{t>zt?>f{*yIoo6(rlG?nv~f-{72|8YhqG|`}9)Zd&dxx=F6blUeoWFqGqdm-(fKq zUMuDF89`xig&85LYN0ci(RV*VdiV2Ds^)uap!}m~+rOIiR{PVpTx)NBA3NAp?kTUf ziTiM^fvxMcFj`b4&I3$#^}mxpGtFuCdD7-TmOOqco$mHm%i9X0Y}a#KSWAJcYOCK> z?k?;f!=Iw^*O#?!J$qekW3O4&2z}jxrEd4MV%1DBf`%KTjX(s%MZBAr4y#z;Vxv0=SM}@m8{gjc z-K3&${0NA^^M31oDh>|pSoe+d*w&Ek>%OZkY3>wkv)a*#v6r#s@${}V#b3iheg-4Q z_hdg#bG#aQ2V--MyD_3Fm_UT-^&tK}((3A)84Mm;Q`4#I3$XZMoHMUy#g2%Xl;No1 zx$&j(9fi^i@3mq5ri^M-ecC&n@{~W5p?W7|fD++?zRZY_|BRpFM; zR;yTzA>#k!jd7yh0Tt2QP&*WA?w-Dd>l6f;M~u{tSs zdnf9nf7t%f5Qcl%pNQvYaHP5lbNJmmVx@MeD%(QqIT5x3* zo7AJFeP58THA7!Y!WK@L?WcQ?s z(Z9!(@)ENgYxLORUXo@Ng;_zUHzIgpn0KVPw}Jxz7`LXcc5Q33- z$F)4`798kUKiS7?NkWY|?>up8{?u<~XtwX4T=wT^RDAu;cG}|K`rxCq6)#DtTY8^w zQ1wv0qCW%%-rsryoAwVrM|@%pe_pc26&FCe<+iL8T=)vKfci_qT+}-*Rf?%AFjXmk z&|0aq=7@NeNm*`v0P&z;18NA!IF9Rc7pe>X3gCQ`RCcyIZg@4njh~}NUXtN8rTaNu zKHNk8x-5c=N3Pv05pOtxvMCZra|dkpmy>zzIOH1j`6UhXKJ>5YrCT*9_uQQ_mCb3z`ukhzlui0)=oDVF zp0Ecw^U^JcXaE$9tWmF>-=6rtp*zt9M(fb}yGCbSxHjV6l+k;l*)D%+WGfr4lv~$m zCl`6EvhI5M&CHqbfdtAr!V=5&@D7)WmGAe5F%Cj)f1Ms%1^b_@1&v5z9%_Ei$H)8N zkpq^6>)V#JQw3SnwbtnI?H(xT@DL-W(-+=-8tS#)d^6_lZ!ckgDrv4JJ{BYWyZxWH zY_OXT5DG5JE49^rnww-vwBAQ~hG?LRicNTB?4*3JyZ9gEP_X~wleO!8b0Tl>r|v@W0%cYb2Db)1ym zrwvAB?k0vS$A-J3Z?(qfk7ChGrSqkT3ZU;I1h zo}omY-yG_hPYUtNSql)K)U~NSQ#Z4X+Q@LT(O-|hyTv7V!f#9Rpbsj|*R5E(5={w#MfmNX22*;40N1q>iUj7*q z5%8I7AcA9X;{@I&?@;T--=~@G2PE}3f#V0>FuTlOi)$F&+vz5moIMRU?e4C15-3C~ z-CnF0a$uP5>n3NhMLUG`be@hno%!g-l5WPfa~GI_{Z=Mn)1kfLcLnfCrVmR$IcqC9 zZ958@$PGhw5HCva&xo4}#nI>SgNb2Cl>lkj&li_7uIBVDcw>&=A7|>csi&A>^_is1e1`o?+Nwm$Ig164ZclR$_In;gws?bd+7C)N5w36K7byUPgntnI}ZV7N|*jO z?q-xSX2Gy1W8g=y(k1DW1=pYMqD_rqFgBnD5y_e5MlMJm}k=dsH)`*s$(r z)7&N9Czv(oov2#Pp`E)8Y`UCaz~FYT4a|ry=0)m0CeYi13l86rn9p8dIPj4WQ6(cT z)J6Rgs4`A7Cm=-ZHU7F36>wl6k0ih^ul51y8wi*$EDjfUG3Uh_6a-4i*8Iiz+PBn! z8c3%$w`#^!*dAnkeHzv0Ps=}&#~ja>1|$JRz?d@yE+LHnO%9J+(;oC#)L~d(f!m&eNzt`4^e1I=rdiWmB_K-R6{YNmZlf_&la_Auzvj-x395~{m zV(y&U>N3p3aK2YyJFPQdlsDD#8&Yiu$?tOm49hAJV|}1hZ*&^>W)0zjx~CJ_9zwzp zy;&O&AHWxGMt2@y!RGHCD z2;!&DJ}Dto3f|q;a-FR#2_%dx3JVtF2lIc<_ex2RF{R+1dJG;O(_I#L@oyJ)HRt`R z!iV||_mZWaigwmh=8-&~;nwpJnEHBt$cU3;YmaUQ%Ea2?T|Q8TJ9iC8`3?qcB==$A zoArmi zxS%L7aRdW<{_JOtJt-B%JPv?(NZK}Tw&%*1PLRrtf3&QbKTuEdT$wBajpEomt$dx& zigk~>SW0ynxU(e+_k+Qs!Inzx){{m-{ax0q-}cBQf*N)GT6^R3x9rV^QAyjxcmvL% z&%D|ln=6}@^NMjfF^%T6`RQA#%j(BM`Syb)adLLWpE9v>P>sO@Z;@e4$Uw4fEF0dH zh1d~44cC6ucPUy8s(P!oa8={xa;92RGo#398!r#37p%is&BSKLR2akU3yBqzpUXW- z1W3c;hf%BO?`lKu_QFe<6EW`Lu4?cZ`rkMHHnyg%kAgR9C{~t1{pziVFX3+~XX6|H zbo9jP%qvGYdyO?e2Rb>ZgZLqAj{z)<{Ia=5L%9etMuP6yGQE-SY#MOKp7I(zzX3Em zxyASc7>q~=q{Z_$7Zw;6S&2>E`2{4}_TZb->U~4$73Cr4TrK%Snrnd<-8q}~ke*U^ z?&;V)<|NU>aOPz#zV>9tU19Kdr`)>^T!M5-)V{&#^bpmt@o^~c&@9GqRZln zg_3tK+DS4%t?d-4(5aN@{5VHb$sThnZtcFch!U;I2d(ofP|21)lA+cfx=33JY~}c9 zQWz$(xon3eG1{eJJpxTobIvO{^v|{0b*ES>sXAEA?dPkzqgQ2He%xeeg7Z@d(L;o5Z*4ys#YO9h!u_eu2VfKlf*1Zsj21X2Ntj~>Fnwlvp zy3W0V#-~%!0ny_>=~xe-W@LSFC#oyJH$i1I-V#!S+x*b*6AWX0J1whH!5njpsVI{ujVgjrMk&OZ^ zj;tSLiObJs`YFIb}AUhyCW=K{6LJsq`D3>nUrx9xT$bo6MA3vaU>?D95YH& zm%Zy>$2Bx@w@I+Ff8R@T$RLMYOjV>yBAfYP*3Z%Lqa4jwxmWau)1i7lF{Aeld29^$ zii)5i8@j%yT`ki^VaJYLLXir1byPGbQMlL*{i{>z}0W{!1 z9LBx#y7>3~txp54qlG$M8^gnoHGb%36}}Q^Su?2@I--X>Ywa3KR}SoFRVis19J{58 zqh+PJ4gt4P!-0XN505In|7?v~3i~-Y%y}iqSVY@e!9~#2zUp8b6DEf64(SKk_9M=M z$|qTfIg}Eq6_`6TBw8@zk&ldjQTyuP&HT=r`)TN!$LBjcdhj)wS`^}Eu1nu;(08Ue z#|OyIOF-bY`VkAjw5B|@wVxGCM)pLHKbZ4My~Q>B*)|2<=W4T)Uz^;t!4 zVm3bdmepnTjy0>sA*?t=>7=*3k(!4SYEVby^x%bQiGtrPX^$%1xD-Mc+N%?%=d+C1g3e3oy zHEF#Z*)c!Sp>9O+X%@|hmcaUS6eVp8rFye2e-TbcxzjM5K$#nRXRed?v||R8x3b$kQ~$!qOkfN^jH}?Czm3H73l!puYFO~%N+WA4O8zs~iMc(+sB`d4 z(I<89$M5{2IM-4}F94mWjPgvXV(k47$O+Zf2#)>sZTzk7X!io?zb}&%;!+K{4G3O~ z?J3vBfjWCUZHMf3GUi3+y1Gs-+Ht^3kc?I6kFLnkz}VdO0;&x2Nt^z+msqqMVmdasZs%`iJ)0C@d0c0S?*3P>ew5nKpxLct`TR4re0>ei1TTX z?vf<|O^ITny+qnEtwV|*-s0^}PEHZa`qDJU`CjD`%PXCUm4mmg!la|RavjCQcYNjC_d&SsywQ2LD`javQ+4&W{*}oe2)8z+8mgsXeWODtl8lFKflFu#kVC)%AG9 zrz)}OlfCOAQ)?OvVW6O$%rU4(p^v!L7dU^ah;|G3Q;mf^sG{yPRYT9FCc0Apl3)!B z&Kob0isBPcI2ic^wQsBNzbZ;J=;1Yrn>=AP$0y*TJH>3a>w{5fa$^*=M5>YLX zf~#9Qb4}g%Tx_Pa>ies+T!(>MviU%SEwbyTO{(SluBo!^=h>EeG+7yv+B_=;5 zup)mz-*b=a+hosB0MiyR`5_7y65`Xq^95wSkT`EC$ln5)d44hvCIqdwqz467of`&M zOpTr|E_tp>3J|CwDFLll@Qi-%x3lr*TZu?m%e9_t6-VuYDttxJ^W3ZF>QiHTtb>#{ zcv6EeYj9Hn?UX2BB;*%oe54R+wZ$}t>N7DG1Ug*_f$0ufV5*u?GyKkgBNFoBfW~w+;Fvd=%0F{hVuTbaC!R|fGh6# z;`v#7$Gs+kmOz8uk#l5%a55sqd=ew-Rd08T<6oAyGy3k^R>73NO|~E(xH}b(2U+y|DFTOGqp{TGLU_A<{|d&=cjz-X~%!C0^k4W?S3*YIL75`H7lNCvrbcV z$b+S*wTmIY6i+vXf!pAXKH7z&3ee_IAh+!=svA1DLZe`BBWkUqIOlCoWU0t6pX<&U zUKeqsj%4`KY2RzpZedfTvX2z5wzLjL)4lz^B*=Ot&h>_XF5b-c_IOjJU|mZ^=7*fp zCSOoc_hFrlNznI1VLlB{W*Nrn?bGDcwr=4&dHWF%aC%ObgWHDQ*SKFzoT{p;9{lM~ z+vzB{={Xt@FccxQnsnGy`w1NrEsLyv*9$PYY54}}-FXbEKK;;IKi*r4J;`of4%60* zb3KlW^wjRo8CZ{*e)C%kD8;UFrwePyEk$0z=WYxwkC^vyV>a};hqJv>z@@c`o{#r< zh8WoBvVX{<><8~%#bX|W%&MDhS1H(OcKM9V#kvjnm}Dv&;B{0C=fAYe2Mn1sw`V^4 z79CGod-j^DlgA?)Y{CX}LwQV-LUQ)9-#LFVq~~5*WxSJV>~CR_)-vJr+)U$;#oKCu zi^HR5%A~8-id&Yemd00_%jX)V(ThFKAG`&r_{PpgKaX%_WjC8fqwgbzZ`Lp@r%T)6y;RtShdmHCnQ?79iZaZIsZWxX2pKjB2~u_#5W772tRb< z3+liMgJNO!Vj@>jozs{I&I4;BW@$BJ&RjDm$}^>XQUlEQ6(qCGP`T zjlSJ;yX*{*NC0|+)N;5lVdGe-gdnfR?tj_94klzCdM)6~V*08-lo?~4HChI5?0?Bl zc~jJpsUzO}y5j~hLTxn9xkNUyo<>na#orn+zvJ=^A-9aMlRvBeeR&k4QJE>tcF=j+ zn~L`Rh=)xN)0YqDX3{k7Ea~YSTvV4+Cc>52nbAwh>yQ5 z3TEZ2IQkC1$e4YS?G8wKkPF3S;gEg8e11b$h=qn(K-_o?k`GR9V(v*yWa=fRz`+7C zE6&Cw!T6wgiH%1?_8fi-5V#_L`AN zfJ}2x;AFqMHKFnkX{I;LfL(fib92dVd3Mq90I!&ekuQ4};fN6SIg?MYqAdNI~4N1rqjN_{?(pbHn0D+RS@9 z`sj$bF9`^s-L!kY|EvG>F9axn48W1H8qxSAOUxp9t$d}F`q2Kgac%H~7_zMIM1f1fy2a!VfE#Cjr!FQiKegv-e&=xQ#uf?|5(f1y`wT z5EVP^J%-#}es%N^kH-hsE*Wpn|Gwo`TFFY8bfk7~0(hQWtD z(xtXX$$&YytJ})~YgFifoA935YPlgcgVJ&OVNE7%BYTS_cj9UcHP$Xo9`d=EwP1@i zg8%FnEsK{$`e>7GvprH!_MPl1(_=f?`@56&ZSh;Ee7Q<;-cyZOwBy{P{v;li3cEh? zc2AzT8lq=--gdntv{~zf{bd!WN^h!jq6C(mo?F)K$b{}U}QyGkF5Z_ddVO*PY_)LQ> zQQ5fl8dyV`EGe!83^IOJ484ZeIRZPu7z!PIFj9^58IC)<9<;nRO3JnMHsId)vs_l< zPYIm+g8Ui0Wv9lFwS+-o~@%U&oots zawl6~=NmO|!Rn^_A_Prab!%sxFrcUT7E5~d^nvMe z*efV+u=UKoQ>zt|gTd9y$dOX_CTrjPz)pzT@_wVJ&U^jCH$FaDiHVrgIS__9sTUsnIB(hpyWGHx1dzSA3B8@aNO{XvC)NXIx&dQm7_ zN~vA2TCnVg=@qUbD_@TaHGx8-5H8C!7zg{3eWu(%yme>a8I4R>8F(;zf zn{x1pF9Y%l18xpRc$}9q#lMn{fq}-BhXjOqRDP+ z6--^5AV-RT67*gF5x8ZxN3y!a|E%se3o0$f_L^boyV^E_CEuTr*Iv8D*`Y>H@qAUc zGz4y8I5DKqh!PNxEj>GWX#Q;a!0Cov*0q{y1LKvx3Dv4Rp8}=`PQ2c=VAYVIbWjJI zL62R~PkWGR+1%o}d>XmBn0C?x2`||2XI|+JEuItY;3`o&OI|*g+#yxF&7wT=A?vYM z&Ri8p*l7=)&bRQ78hlTQyZNgTAXn_b{50p8a<^O~FvLnv@0ANg5yqRk#gv-cYE1zb z2UO84<6oC9X4A^@AWzF0*R-pJ`(2Ql@p?$lr|FQab)&u$RlLv+1SdQn>U-ES{)Zgfoivh#Dki@ct?*lb@%u zFHSl2fGF+c-5HakEnt|;6c(EC)jxgLQWT`FkNEpLaNvwLEI3+>=Ahu){=>-+N$t3Q zAJ{oI8L7<;MAnd}851-ZrcI7hehv5YFsd&!r8ltlpcnUt*F`g1)>)b-z}eU$!#NGO zn>?`*)bx1oC1{V`2#w4xl~tw10`J)#@7Z#?blK}oc*psgXyzQh0&Razlc&imV!yp; z$;F_kdGB_fol*PYfe~ZJvAU85N#K(3liB~|g&HUDO~|=OdDIry68~fX79(SVs>{*K z-Kn8_nfQ!Q3zk@-sfW?)-t**X8;esY?=P6lN&NcMQM>BSgg|U#{u8Aq&3W9)7HMJE zq0)c}|J}930&dC7mkaKEYzDofiD1CF_Bk`pfbaNw)^fO!a5&dDpt8VKvQwr?Bh-zG z6U{70+E68J$TLwOpOqM~_O9q56oJmqgQ~lg`0O}nV-@Ih`8VZX0q}^oQ3f)vKm6_1 zzcKb>tit0GGRL?Hysuj27ifLs2{8?N5|sZT3D4t;XVIx5^gs7FAb#QgG)83G3Xz_^_|9ybm_D{t0(r>t2_3QMgeHc|Sbu(h$=V)UuDs9axv(o>&P~nZ>5jact5%6EO z8d`VUr)FMHxa{xdZ#&iK=(TmnJ`?ai>sr}67)RA{jSTk=as)_;MeGOfd*(Rzd=-U< zEa!tr^Z}b}4%^Kdgcj{(3YUX-)2M43+~*>u@K2f-v?ZeD9erGyCl3HCmeTkkVqypushf)%jocXr{*a=pmGA zD&5sdzXIMhQ(ro=$cnH`c&1ZLEz51`4UbYfrC&-kN{wNB96WVEO`%qs#^52KcjSgb z_a6BcNXe}KlrLMKc)pI*F0~QxbI7bmJQUQP3+nF8O?W2%`}fa`HMwz<{ppvLN7XW? z1vwdBeg1cGrX9U=Fnvldm@_nv&8KN)B6Rdc?LI{7sH3Rz{9g zN4T4{Dg27=kwRj1VlU4`0dxTZWT25$cY370UzUY_Zs2*Hj(-KCjHK6N^Iu8nbT5~) z1>9CBm2L#z>ER}?0$RBJ!cBM`j(ww)!`R!#;oqsVW6PsAmga90{Y{8t~Uv7ple4R)#m>O*@HEA{DGwfpUo zKPI-%I;k1RV_AZJaUWLBkbK%b3D2qOZ_|sDyDMKQYzyd1#Xql^Hxb5!Bf0&3KRu}8 z41RGf!g-HZ8(;ouF1pR*zUio_uavp#WtT=zjXJR+k}>)xT4=_8}}BB+P^GL#}ML(JW{5thkJ;K$!D5?rEP7 z=La#L?Bk(;w9d2-@26~)lgQ_0*3uhyx3SN?=cZJ5K7XbV?YiF*!|LX ze$d{Tx_^v)ySY+vMIuacia%$}hO?=;_q>7A!02R;_td0?T6yA>g$Hpenv-#Gdw%5~ z{dX1t+V0#eJg>t1RzWYC5<`S(_+*QL0@tRL=9w#VG6C_IT5_8n2!nj&uV6}p<=_qH z9@7MEk`wbJ{j8XLbJ%mJM}Gs4)^%$W{PPD;1+)b{yD4N&OgJKnPZXEN@~}}iZM>Nn zYEo9FJvlW7`OctIezTn=FMVM2Auc<1;oJ9WCxctQ{}u=TCpd+xrZKDqTs zvO3Z7TCw;ths6S^y4q+8{A`pp_=!M z! zQy%3nJ7;NXc|67y^+ix)%+>5spYuBWi^)-fgVz_B|JH;&YgyQ6!vaOn7{8a<31vI< z$dPE{8+>>uzWl>k&=@NZq~O^B5#hXGXgR z&*XQKs%GReAv4NV^4m0M0v}EYtt_gjp4Ftg3;I<@Db6?bTog;4#0f_-on`&v{*U(* z|GyKxiywY9zIB&T#o0u&Vd>uvyr5$vlBv;k0?=Bkyxfjokc}*L2O%Plx^+-@>=pjq zsmb)_H_`2TDsl<8_CR`hVkI;hn|)gas&n}E%~JWFwWiaU5K1O|1cqYtDVgHn}-kshyqAR8y({KS?9xI#^QFUHo#{nQzsbY=TAAHHHqC0=uMs^#b?WE<_pCQ@ z(EA0|O*6+2*_=o}IDXNmK>J|sL$d0TvHwmeRa>6;UVS@QBEpFhi8Z%eHj}stv-EJg z*~G*|SdWgl%P|>(Fi1H7Fmr7YbjlZzA@W(YX6S~V*KMvBjjXQKmTOX~HiqBjNUH|L zGrI({Z(=Gv+L|j<{c0*7YgmeEEggYi(NokD=1#} z(k+L&eu#FWgT!8isD_voDt9C9Y=fX`=Xu-%Aw;Ny)455iWIR5MIPLx-&niOp8h;Mc zL}lbktcjWXbTa#j&nIRvqkV#X|A_JVv*ab<0BhJ5RBt@+QfCP&0PxA7Q3Ctn!zno0@qQYeJfTsy4L7DAX+D@5(5wqpCKD3)YJ@lGJV- zniiX~#lJ~#S2?t*m*k$au?U}h#{GYvEo|cF;dG+P4s7kEklX5Ht9>wP7mtD+MyTAEg~zQUEYvz4#<2hId1G*z+RGz zN683vyrtUSTOq1s595n#HWpuy{YtMjx=xPS8|RJi2}9SG%5uq=v+L4b^xuE3PaWqB z6D?UEQi4!#FeNS@Jug8@-jlk%_4A*D$E|UI`p- zz9df$9q8K|tlnPpAr6@A8*j@nxF7j&;g?m@Zk!TnTzB3}>h#3?r5EY_D<>$6pAl|W zA3)ga?5;g!K%Ba6mT?Yeh5Ki8ycBLrR-!lO*=Lpd$Di*3WGl3yRVJY z_u2fH{TXnShmp@u+PQ_J!@cs!Wm++afawRTK~PZ^uCsQI5fPClj&)w7##$ypngvl! zBF4xKpk(h6D>x8+bLREh+F5TM7DV7Z2m9^-%IE@Mo+;$I`^ z+S-THF4YNR%2ABQ7DQY3ANdwQOS%&PcfnNvBkM^rvQQmOe-{Oe=K`hK8h-2ab_KE_ z-C~@X5#d)}?5^%2xW5ptEmbP6BUEGbRG{#rRy3P#-1C0+Uy$}hp(Y4UT?tG0S%`Ip zBwN@;&=uVEi3U*iqKpy!xrru1f}boveb&QX@{(ctIf!P(l2o;aC?+X`xX5m{GpBlN zyQTW^qD+(ZztLwoSnoU{)g*&bu>ZJe^hlI9Lx7t`WO1qz#-ir`cqWCVWTdRR)PHUk z-KYUT7K1*U(9W0Mdr1HK z*>Hbx^)}#AEFddzk0%~E#n1Sgk@Cb4bOQu9HV=aA`bnEphYxT^%-N`bJTc%hWN9|K z%_*D3*bbGp0ZzMTX{3Ue)A>!weRq5x1=-CWKePx{Zat-b3bEh?NO^@915&5Kqf$k% z8ii$LEb+FIM>1WD3A&OeN>~T>u`HmVaR{QkI}1y(BjrEG>PxnehXHWG4btwdWSV%~ zis)nzgXw2n-zQRWPFM;Of(E3{1Cq<3M%q03 zKS2!`tl8pkv=G#ad6MeyhS06-`Dj3bNGhs3UbK=1hLUp9U-fOaoY&rd!96S8+h=$;`$Q5e!d+t z1UD%H0OeTDM0HR>k-i@NN=Z=n7Nbc9(^n>C!|TA@X9MiO8jv^%1Ns+SK`EY(Ab3Bp zA(+8VgNv0UzMQ`Y4gEQ~v>w!gpZP1j(9qD-A0@dKk$SmQ$F!!1B8Wrr1^65ubYUDv z&*@84TRd7lN!0-Q*`%%v8!NC)FlwbZs1oQY!i_Ep_@98)MF5%yEG`G4YlGFLfMZ^g zhm^MzKjCthBw3xGKO})@hgv~JCMZgL2dWO)p`(^k{kDn>H&hOYwV@JEsIrb41UP9) z(|$-Ih8U~>fkRBk^0GY)6ai8i5CYKPpq?i^9YcyH0uoIa`pdChi^Y8ou(L0-0^vL~ zhDE-g61S(9H%^t}dz>_9WS#j7_DLg_<3m=)vD>DffMFt_k~(@a9I3=Gm($jTR8xof zB|l4v8@fXTWsjtVNskuyi5CU@$V-0y#YLZ77;Z2~UeZ}-NJ^BVd;gDjOg|lmrwo_^XWMNsidxq9@1@v5e5L*@o@c2O10KZs8Uo9VGw@i``;ReuE zf5JeqC#DA~kV0f9fW{nTgYL_6($I#k193oG5IQ)ZJ*A4wAf0-E+~wFJwLz4+@8Y1R z!wGC44^4*qPk(!o6467Jf4Rlvi2s!?a@h~l=;0}WgpO0yjUWX8gE1ifA8_M9+C15= zm7rh})}sVjp8tvV@})Tv$0-8H5{wN3o}{UfRO?N5Z}?Ev&`;9@VUl39+iu%Jytsee~xqUuKy&fA-OJzoJ z2Mey3gQrX=W=Twth=d$6Tm>XUz|@}cYyV8tUv{#;e-8g2JDGk9NK&g#vD^NoDC^)P zoe!S>D9Vo4__)!fgk1zX8%3Hy_z36JMKV*vW`z^lP^l+a0Z%xnH@ZxEnk`Wk=mEgy zrVmnI00IW!XVL$0lKnS?V;%br2!frz^U@q0lC?n9GbAQ4rx8n2{$m_?J-KR@^NeQ~nG$TM z1uAauWw!+s1D=-!KO7s9bBTatf-EH*vTi_`W`3y`%Om~8`y3EhF<^buCs`1$x>(TW zgRK`UJ=Q@`?RP{-SU(;tlEweQ41+lG5^xHPk4^Sd22Y#~AK*vCL_qs^4cNGl9KgHf zLUNZd4bQ3d*licBssp)!ruZ+k!gc1yKB<)lonIL(4z>XkP(sil2faQ9CRPmCSg-;l z@)QJ$v{$L1_X9@-%8%8EThy~&BW0ONN z{|Xp%y^NSHLK$Ey(oScRQ1rM0(N%*Ac%p0N2q>9Gp)8ddjwzh}a=ir>yFfo?`3uL(Oo6~yK^E#!ay>R`2#Sc$1_{27y+byB!F(ER+cgiA|X^e zSPSM3^(IIpR!#KglzZ}-Z$tNB)D2tveWe3eA&e$C)UYbca1fa2OD6u+9k4XbB|RIbJ|G|J5R~^xK$iQ- z!2pgi_>+z*0Fga1e|sY&0k%L@f$+U23Du=peqtWFZNDOQ+PM(2z@$pvo95i9w>5#G z!S(PZYuHlGlF)Ul<$E~BX`1VdXEPu<)Nf@tM&S57;mEor(0=X$8VmtP&CFMQ#8jE@ zHJ2c~EpWa_d-*Tw20PP*gcUgiv*8$xg9$glQ-yIJ0Fg;4h%7n^l9>c$OE)6Urr0C(GOt4cD+6W@*wyDyqb>!?8_e-4a(ZUb6 zU&8GA4G>cRJUSaegQFr9YC;$W=qA!L9hq;Lhm>xMG#7LpIuh#vxopb{)BkG>{t7C9 zwa+0HSvhj}r&%^~1&5VqZ{a>P80ECJnKSJEYx(A<>60y0mcf)fi-GEZ=$>JYfdm6Y zWXuFsgDjp|pR&{)=Noe_aqvIq3`K@u@M-spDV<=orA`zy#~ta{ug)|hU|V1i#~#b5P}0rEsA8E$5I0%K$hKp6kJyU2w}ut0=p1Uo{DPD zKeU-$duL;XviWO8^Yc%~FE^v#Y47G}2cgLzDRrEKi&zf+|IBp%Noc-l*7+zMN-K8g z9IW@UuT7<(nm|lTfuQWM0T{&VrW;PeE@t7w?hB zT|e4z3~)<9>G;XWWzEdY7<&+|`LACCY0TFIW&cg(XGmo6_HN^0qrWj7I9<;E6vuF? zsi~^gr91w=n8NXR>EM(I=zwN1vqhf{DrET>vt8gg+YvWP+!+(PADTKO=v@2jH_%u^ ztt&`U=Niz~j94*p(gKXjIE9(*+HbvP)*nXo6NTX-O2{%)KVxr%O=|e%?Q9iY2#6-y zmmZ@DFq?PUVDVXiFalyFvQT2DQ-Ch;D82tgJ9aS?AnNR!Osv^7_=LjII5d}btsgsb%U?(mPXVa`8_7-e!L^xL7d;BGpSXOKh@BEgHH38K8tZJ-}4IvA=AFTBL-nYEguztPz|{DKAomz@XgX>Y|@P zhuWL`xN+0`3xMeXnd~Jf%Elh~F9O>&ul~3C0O^32DT0&q0Gy<{dx%t_8~TW^t%nbL ze~~=Pu=CYqAR54-s)5KCg{H;w2AqknsOGYg+!^1ic#?NHrRXG=2nDYU&gF|jlDi!X ze)JjD{1y0<=;Wh#{33V0Wgi#d0KgnP=jB|g0A zuuKsG1L|=EyY?+JThYyJJ{4W_1^{s9Xn+fpK8VkKu!KB>01)Yif^*OoV)?W+2L5}k zJee*}S_`n;vv*$xA04ZW_0Dsd_e#+KuN0)B)JL$-_{%)0v0L)z0KaF^vyJ0q__+rM zy>uHly@T)=$k$wxA_p54EU5`*V4j6>Py}q$k7QsOSw0~p5*shZ>qg!xoYF@K-4||- zN^9c;E*cYLhG#aS0dNAs_`9eOvySGi$F%5up8%}`=Aq>MAIY0C%aM-1<%4|syLQXz zX_34g_xLmJ%(3cs%TRyXZk-vX! zpCaRPz1Wq@m)HSjg}s?%X;~jxI0MJDOwI){vzhhC2UP*v^B?X4#vl6mr}gVVoznwD z5G{=C7#%0j|2rW8rl>&5r0yTr_F%`2l zYM0Ei{11x#=kC&O1E3oYUYgs&RS$UH`TOBGu+zXUxmyJFO}<$jx+Cx#cC5G8 zZ>t~*!5$ced^H;u@XBlQ$FFq5b?rawEiO8ww~q4YF%yNIuGvC6Y{{3{m*R*kI|V)T ze{A+bHCkYIkb8FXyG-ozIzyEHpc2K9V1ILf_sFHr=fxgF$*^~#!bMY?OJE8y&%r+VmU%vf z(>m4el>!+X-J&Bcyrg??rMM?RW2AN8S`+l2nu-8oc)-^Msvve`YMyGcP!)l8M}ygd z4Uo}>CWI&lSY&^NT+I~hZY8>|=jv%F%Ey|^lsJg`+jMfWe(yIqFz${a&;>jJPC&Sx zCoQk}Fd;a|*yU)KfSTmOXv0OE-%jZHZx5ORsO7$21qAbtvn;DIh?E4dz6V4tOm*~t z#17nH6AzvJ734C@nZf%f!~!V)l=ie;qXt^fpKHt}HL6hqj`0fsL+Bux*%^$#IGHII zxR+=RE*d78%LLu5aO99eFNs~3$$NS;?6obBMcpSB+f)>hTm)E8@Tka-{(*9wO@k;5 z5%g@kiJlU02>ujXTl?h-=?htU5iHyNI!eLI!FH+jf|wqdQW1!_z!+H5%7t$Su4f3^ z3+4oQ{)GJ6>iUu^Bx%>30~!-(JD7J#9tA8QE~-L+UxK5Kz6M;=6u~Y?3;Gb-s|U)Z zc#Bv`a!~@h=sh!=Ts0nW=XV2}1M3C6?10P%h~V*)^l1N;wVQF@jps;V8E9Y7Jpdc> zr#v}e(bJ6|0_-gv@y`fNoPEK7IDRSA?3{|MOcYQ|J;pXS!F(?szrN0V#;yLu2g_FMcxPC{jF9U%%&w)B)f@OxjbgSoW-v`dHft{lQB$v=fa(* zzk;IfJ&`PWYwkpM?*z|jhrOnolgtC2XUuM0xxz^3wwP>M^x_&CU`|Ctcvx~()Yg5&~t)+VQoLQLM95rffoVueP>~8s3mH6 zJIu`3&>=?J)aBq?wSI30`@jE?u?M`=2$%EOI9Q#II?8PkUAiYrCESxCPad%D zd~o+E0&4$wC#%;`hVgWIi=H0%yQLV^`h*4_NtE}U9vB)hp=)wcJpU7JR{QEAq!)SHewY3Mc2fl9^S~)nR z2BIPMDA%j0G;r#l8S)A(U<@#Gr=M$76UR;X4}X9Mvs5gYW}9NFy;MHAH?yP#qI1AQ zUq92(SKnh|gViw&pbeFF_`zL)uuB+0BR1fYD633i@B&1m zQfTO<6~QwpCYGF~uQ~Kuyt%+ruGiYD$_Oxijt+`v!zpu3eTzs<%j%Dd!yc(hbvjSL zjs@=tHU=Mry`##lebGh-U_WeA6Hq+a85`y`logh~c9k9&>=nEY2YH_>U?Kt-hKO;N{lfnYRX$oAyjyN!5L^yKX6RvT z=%{BgyC;mYs!zdy03t`~-&vhw!1&eOa_6pw+1&yU!Fa(U%%ur!P<{h|=5`vdh=3e!5@l|X zAs=Kz+FyHjd_WLC%dq?5J10wUK4Gw!$qK&U(oNj)M9H({*}1p~JAZwhCiZ+8u;7Zl~5GgkCGPo&se>(>|2l6L^~R z;IPZcC1>+QXmIL6xwU0;R|V;VeqAzEctN3!c=YH|{ZbL(v>jOUci{iQ6-l9s4)GDI zb3PZ+tgQW>R+t&uNzDHPo(?#iZ!(-KKW}~fbSfk~AZu8_bEku69!p{ki6Z9(20A)C z%~ZQF4Jz6P;da(u6Hl#h%W-Cnvw!%IM|0%fA39vlR(${)QSPWLY0(zJs0Zi(TSc>a zdLC(|lEKs&_MT`@U2b8r)lyS@l0leE5Os0R@~a-Q-E!l`VMSVMJUhc2Fu33>nf*O( z^qPR$xgKd>#~+X+52h=m&CyEUt%a9O8|(gWbk05Jvo@1f7y7afyCn#t0(&j>-c8NJ zAGeQe!uibDPhp3ucV^$2STHkXp>7CD?oiouBugXVq8XcN#HD!lP*(2}{)81jv#0<- z+6wcXt5P(NrYQm6P#6QG((5K}a5((HA(&U>HgwcrGp8APa*Zl2tG2@r3;bkXZ@;xh zzD|hX;1*Lh&du9Nl+RaSyqOT5_mMFuKoB4b-vepS+THoikawxO5|L$mG zelXsD417nOzl#rxI0G%mpEv6Hgfe%mX~4(vyR`dfgQqj!V-mIZ_ULfL0o!fM{>qepSh!`uFD1il_B;5*zoCmX zVk;wX_@zf6sNHptezciHToBEChbFo~tGdL0yY0ZVyTsz?v<&)0Svo^5gAtBz($({U%h3Al zTF3|c;qJ=PLsZ+OXZ}jm8c$pa-s>8ep=$E_*`k_T4fahKWHd(t161(njpLua31fBSTxG zkd!=LB|})dwLX2Cq>fSS(Gu#30^e*desG8;`>j%H$_X(I(S+rJm({Ndfvglih$xg@ zZq&+;0eOQ8H{aQzTJhHE6dHWLfy0(RLxTuu$Hm^#Nky93*W=H>)OtxFU>f?=^p7RZ zhq%)gnH(wmq{CO+4&DeC>f>Fn8_k9cZqv8rlewMM>NYI@0_UJ&eSf3dVU5{2NxU`O zk!k49pFiO+lCpaH<*hbiBqb0n{#k!I40+ojr`ik6^n^*gm9G1FuiNLhAPC2SapV8}MwYB!lKv8I0-ndVkZd;%!`N=S3RkLa7+f=)~Vk|aw zm0E~<$XD1jIy!y9xK5{Yu9|n3ITz#CFC))%9V~f##xniL>L|S^-9wPA<78)J+d~FD zB`v&kG!3L@{=F z)*5NNc9#Ghvn_o?liOZ(2`aGEDuUI;bmhJ0e$>@Kuo~|Sq%%yvD4J88&QHC(<>jke zq<6@ud_1?i>dYJs+K7{grnw5~uUf^`BdrxWPsOI-{NE|AIn9Okj&eD7_d8=k=xn() zL4DVlHsY-3^iDo^F6u??pv>r|f|9JEWaYZ&?qmX*w{*pCDxUixIIPp*8v*DCp{=|Z zOcj)?9PK{bAR}$@5XS)KTzT58UUg%j5NbC?bS7xnQQTyxi&V)*<#xq(gcW@PGq?W5 zwkE!2#;Hlm{$kz=9ZGnjRvtyE0+Si8B^Hg-Bs3Bvk^c6(Ri7nIZz@0K*H8X6KcJ!4K7g;iz zua%hCegQ*ta6kI@a{fb0S>x(D!S`$EE!>%n0k^P($Ay5gxZEkhM!X^6!zjl(?rd;) z2;aDvn64I_%ggbO=4#PY*K8IpJFDha7n|hX9AD{|<;Anzc|zy&ZpH({shBkPv%1}K z58KwGad+gWZg9th^5oWjE?6dRK* zlU!Y};p;4U+F5{;fG%+Y2-dH1GZPo$7%wt8T_>D-v#3>ju$?*a!(?ZN$L);Zr~Al%>jGH#;_=Oa$X3*z>iFT@g7*h7{p7Ws?3x9x#^)`51N?);`U(q-EI&p-d_ zY2E+#s*hH{FJp>Q-wu`5+?GFsdGPq4?p!@&A|u}T&e^5a%jkh`ms@mKu4QG=Qb}E2 zl%Vxi8pzx4cM+%|OLYIjiP1627bL{T7*!ZnGb!1=V%d@vTXnmm9H5X54Ijbou;9)yExpl8} z?oYPDF_e`yumQ0~7$)uji~kT9k9nO#2W*k~ix)4f5v?Q7o4fr8!a(lB03mBT**`-& zz4(_os)j&_cyAG`uO&CwO>=HAW4sBXLi5$J6W^j02fqI4K z@?o3B;@d*AjoG_z2ceAwO7N*v=Q|%62MC^}DRw0$d-!4V>?@rr7VR!>OdjogdFE1q z4o}NUY!)wxVB(6%sXW|BTRbv$u;1Ul`)doQl?*_&`qJ~hsjIn{maIb6wQa4LCp<`l^p{bav>E!lz($ z*7ai!x(h1$_jD)#N|_KbO-N3LvaDMDGwmM^g5*Ug5I|h>UGOq`>{E{j@fxAp)S43{ zU6$=RG%qAgm==u|r`dN^KV9tjtxxBPwm%I|&{Rs_*D=*Xc)nK3bM~ySC?{);I~84a z7dATzyr%KJNLgRO3NMw&hkX|Y(~4;jwS0dfNP9Lb{$^m-N5NvgrRMvQR=CW! za9&gIz47PW3h{)~m)pa#6Z$OYOEsPickK2TEDEZowgZO;oozRxJKo7s>kMBgP`^6C z?SJ`D;#@B0n+z`-MrvjGXX6T$9}e2-b7dJ{8md>{DaqU}o#_c`9~CR}`od)8;ZHN9 zT*CgW3sB2tLpX<<$26M;oQMwEflmxJS`hYg1lJ`*G>ByLodm z_`wp}l1PEPcpE~s?xN+<@}bVy)AXF+Wad1tj1kW zM-a!ze=kJ3(PPk2!p$nvVby+5{*=KF8x&t`l-MT^E2niUpX|sly09b5WsaBYTC3O zRL1JZI2MU!qjF6ROz4V{@ku{--*`2FEQ<7I3a4(r)goZ4zOQ^r@y^Ax*#ygO*8T&pE>yG=CN zd(s()biZyblyfaHdQvZb333KX)GG(Xfo|kXr?7WD>N;2Gd$_@x7Dx_L|Ht}FW>EWr zW6Bc0uM&kp>2KAQ>C9C2jm*HY;`Sk#B5vBi{A>P{v`V0FGQF$js!s)ZDUXWg`w7NhafQoQXw>g~hT)gKF(d?!La=t^}tZ^l%d zpGNyg0f?@Tl%U9E^qepd{D2+^RJReKVoKH^!|f=IngNZ)kH(9>dj(8z!pDyvlRtg3 z^^gT8)UeDEN~f#qWj#0JxnbH395boXyGu;P+nS+GA~g5ih6hCeU_8iIdG@s-G9@s> zD6jNeL(tf&JjPV@Lqm*dT5ML_xpl;$zFdr=as;DAmUH1xnQaxEIq^1phe5Uwp{m+f zb$WA_0DL*FketYRlKOVYt-2|FsBFTjFQg1N{FZT`*5@j@xBv7cldb1Ry|U99MseGE zZ$ZgNL(UX)lnO7F7sVX)C$^Wj#AYCu6-3RfJK0L{%K?RwrQ>dH6IdS2J0)m#WX0L^ z;C(^WXE=ab_hKBJN+RBl^6pst-7ZZf1>R% zPCUsy?3*t2yx4WRC%AhDIgO7a^$`rezIf|8&`MJ(n{6ZF( z<#6`-Sfl8vBsD!g8SjZ`zBBMkyZn4W%bYa9I;UBVif7RAVtdfs-XTWKQM;aVM%RF! zO;`N-B#<%%4ndJE`MXU`xJb+M>`ngbSMpE!ydRQND*jBo$0W+G(&Cz6ye@yEn2Ju| zm6W)Xop#fw2Bu;vTSk`}JcW>VNjdR}i8n=p%GQu@OR#RDKnhW)rU044Td(uYG+SRV zgN^Rcdvv4{z9*LT9$%Mai!huOhe6u5V zh_%zwJpt?K+R7Q%@6E3>x(H6aPUG!+Kt-ms_2(iD!pZ*~9Ihh1?dC0ct!2}6Q2FI3 zLH?#TV*cr~;MwqbtD~KV&acO*?k2?ZG4H0!X6Tiw{g!VT9W!2(<%xeG7Tr^!9Am0s zN7a|M+Ef~>^U8?^q4g$R?EMH$i1bTucwpi|Wfc))f9F=~Z@WZ-0r8u_W|)aX-;D`D z`z0@!_#Z)jdxki|RcXr*u8w}*_3}50{>jw6W}cU{9%SC}(GvhIdz4ZkE0Z&S#&p+2 z8DIe-UM7oAsv#fhqN#$eb+P`JLDy{_BVkZ^o59PAg?R%fn$p%YN3aq?M(FD}mdWL?1d&4~*5EG!G@ z_F(P1OE%lJR?qiynOjRzwA4R-mm#Q%Lo_>Ewt67!M_Vgmo_!i(&|YRlIJ z=iY?FRmu(N_6NKDEdQHCE>0n$Xm!cZyEuN4Ao&b0oOig{nTqvftKcO1d84^`=Y6ab z((~tgf(D0}d9Tpmijd`BXi^Cmgdga$q@T8(^|9;oRim96-8smP>Lx=)S^r?I;m}?- zsw(^wVw6}&Pl;31zWSC|sPfbR<{;wGvzkdFn2%iC!rP8|c_0N?4EcGfj$m@w1&2?y z%A6p`{}A|x@bouT`u7&{EyIbivH*3DtO`1G!VEshxUlDk`;68J6+iQt#di8D7i)!m zS$&k+y%heiM2E;FdvCoVW^hA1yJFKp+X6L6mz|uHxf@cKN|ncEP$7-qo=Y96PA0}& z4NEBJsu{r=r`pX?xehdzMSUC$^82&-(6#tuCr9zu)97B*P3>_`FVn%iEZT&_6s8I! zo9&BWT&P3;*x9j@mSK~wVZ855OJ+{cfI z$EvCeie^Dh)4#qwngy{Ya96Qblzd53lOp+rxJ6dmtmlCSG+YfX*g(0Cv`c?x>4Yk? za$}C{i)la6Q#_tnRI5-mxR$09f;yna7Os|#C>{JBtU9q>EX#Q3mfZyy&kK*=ym6sHkp^?7R#KI?26-d{0*stH>Z;o?2pfU(p(K z?(ndzt<}_nMX@viY7CVZu?Tc*xQak)g(oLXZ4J^E>$5FB;*->&uLy!C z3WpsMvg5uUPJOmjI{7xT>?`GOY-a05y9n7Cj;`i)c6?;8)-O3Gg%76=v>jNqz^%&_ zvnU(jk7|JoshoCZAl^!r7)SQ5W0y{hIoVtOZby<`yZCI(jnng%IyzicNK18;>ImKBY6Jjg9pdt(mZRF0~Jqd}t8ud_ZebYd==I-yhG^r+-bAemAl^$?jmJ zwt=`2QDEWnr+$ZMCCskYvhC)?{W*(D63uoJmeTQymmryMs(u4#+@bY#XEWfbooMOH zCNwqyo5B9UU-RXy1cRqGhMyJ9SELSCe}xCA)CcnVzCZE0ibzA4=Ebf%R)Tmz!q>QhM8vHiv@_5m#Z663H>OV8 z6#$ejCiOUo>;e=k@DF3PqBKy;T)2?}`&!-kT*GG(+cvKBOf7CZk#nk(34fuOx_G5@ zApTksw^*-mHn)OwE&u>$^{Uex@mTRZy>1cB`-Jbb;zvBoW7Soc49{v0Di&u;t*@`X z?TPl#X0AHA(r@Al{AH})9CAnU0C`eNzdbmek-R(ZvmF(0MQ(wsN(DO%>%l1@9V zdQPyZ81ohBu2IPy%a-5=Hli~xJ~WF>a#Gq@c#f#s6#Iduww4%iRrnX=h`faF5-jHNX#S|6*4- zG&?&t&YdGfbcZM4-T8^7CPdKdJ*wqGk!otZZ3U$}^Yw?l<09yLFBMvYY)4yUcw>N_ zUs66d%+PbCdb?w&*yf-|3Ge=*KEdDm%&7~b!+`*1R^23o>nmDY#tzZ*KE31YbKN;u zCn-bz;maqcN6X)8O1L@_E+EdL9-`eM296TWPny%`b9tNokger^WEXFlC*ZmZzlLil zC8!I-KlS=M6ko00-MPVmJlH`wwEU?vxTkdF*HcOh3#fWyBRdjK%2z(TXd1*vKXn>- zQ{!EdD^*1c?ld_2@)_o%ry(Pi?q{oJsNt7hnnO_#`!9uGl7HK))3PZ?40J-!RlRv< zV{rX`{f}sYVLI0X$9bDR`hlSv_i;t&%DKp_;rG|gHUG?pIO^(9T4%}h*}b;D!J2+v z_*cW2A2$v`X)RWw_!VToE(*^j`WM8!jiPzJMX3rRR!T+l_Rj)Y!H|@O&ogflS8ebS zoRWaM4|osv#l%<20?{xyO}o+tRtxXC7o=}*;L3~9kZivorBRkvZnGqC@GYyj%!g{1}0yl@f7SWWusj*40$wUK3qL5|I^CHapWZmdhGeW%KTiSsvF?Td# zzojMb_rl85IgCX|qs;>?++*V@80={$2&(b`Rd znuo-{Yy+|D&aOmBl~P;%WqWLX{RNW@Q}Vq>FB1JfV{F6@+&)wEWny06~I?V&vprr-7 z&Z+&!Z}X>eW_smfZe^3&R5#uu zP79azB~G!w2&YVu1linM*V5x>NByOC@*gsli)oj~3umO**+SibDe+({r^Y`meKrO)v4W-W5#0rd zA(sY)a!tb>fmd#%XBD5u1^_iAqmIeR&%HEa%vNMtG1+kl*@JmCO|>tl=c>0yH-d^% zzL~3|`ss}uE0rnOPutno+lAiGg6dHMtjj$HZ;Nlsqo0ADIb8QG*y%AXCfACbtnR|# zNwr-4dqY|${K3{dtQS2|vi$#1^&kFJzyJRLjykF%r81J02C{`yl$~T|oMX>y&M~q= zMkGZ@GLO9-j(Hq=S1M$$bBs#a#|Xzb9e$VB`}6z$Za;rOJnJZp=-aR66>;+nVoL%bo8*I`Z)7&hFx^?OZ_-Ag1R7(c9Pm*0g06}3QiWux)Y;7R0m^*EsSQ5tAt^o!eO7mq4 z_v1x`KRR#vK=d;FVkyi6V^}JkrtLRNHwL6ge+riQ&>ExH@L!@!m21v0*SrqMfY&EQ z>b@6K_XaGgF;F$Eu*M$~)rt|lnSN#+4r#~F0{$HrXXg?C5tgGKClWeo5jcmwE2YD? ziuK-o*mWs3DAL)-vQzd6EG$pJ_Yqjg#{ByDY^%6$-WD9>QovQy)mVgL{88B8-_*uo z^0ur<72u;Zx;M*D;O)E4;xX5(!(AEY-m%8|R9d_|r7LVQ@5PccZ9Vc9XF0r6+op54 zU8EqLF<`$aG3Yziuar_aNAA`bPi3uaC?6}mCO8qAnBH$id{lq@Ip|IJialBFtMv&$>`LKVZ>9l?I*i>rRQ0F61Oh7uf2=v0!o@17#+lXy|e@~ED{ z!9fmMf=J!e`=!kRXP-wdC)6Qm4(KGfjhvCjR(`+C&HPG10HEM$iaCMuV8;fqZ9wkU zGO%&Z?Co_^0pPXDUE0rKQW>@QDPu)Sgr7RkE#?2AfSM7O*USNLFC?dS_z>}t&6Kq! z?Ybd47FCBF;=yULj_I$}|TU?zD z)mDnY$m~4V^4w zWrJQt6Lx|&s&@zQe%k+UPXuUR5gXZi<*5pGg^ZZFnfSS#z|0E+?s%XN?-Wd^ZraZSLEB67h$l(oZN_G#v8FVD9WE3Z5>33EYIHl%QkX*$!Q36BnILdgC9uJ+-7 zX)mZlCvX)d-}>fv^l1x9HJWfx*q~P^*qSD$C3N>C`@308Sg26{^>_6u*4dOPXiuga^5s1)R2E=0rpPZ#K8ATK-Vi#-j zMa}E2{}v}K_{^NZ<0vEQS4)%P)o~%gdp{%jV%*TBGKl*{;j6PtWAXx zqrU5zJ^-X7P2$r*@UqkVXS1upsXq1bWI$-$0Ropd6y1ujJ;B_;as93Pcki&I85b@b|S&Y3EHeTJHOQJundvxw+VT=#r0 zCnLk!s&V{WQmB<mwsenJ-pLqd;qLK5y^X=^j zSLoM~+Z(a>*2K-~+-lGDG2c%56u92v_*W2{k!Lr}gX*joF~jdg-u0XI8OQVtlAbMO z_{jzbPpk%FE~@S>?==2zfkIKp>&J>y8eM6I*tS#6$YSf#+W z8w^WRo7P*2t5Xfb>9Rg9qgr_KhIYpmhkLWaHLBXE9ZBNjgpJQGJdKl4k14 ze-1_(!ES(uABfYMC03b+XKt_t6oHdFn$`65!;s1ELd2H9IxE#gqjCqMhQh0Pat{oi zjj3Cg4D|B76gAMr!s2D?GjGj@aT9R^B?(ayBsTR9^9|XO;c36wpy2kxZ0&v{RM7@r zHjrF)G~2mA9gGY9oh2qD*KIy)1c(Lt%aV2NTgNX~(eM8b9zf>amM_TVZw^Jx*tb7~ zJUF6~W)HCnO~TqUJRIoCJfkp-B!nq1FYnOPoW-v&Qu;$7NXf;vEMECTEN~VE6=tVylwi3a+$#v1=?sxtk*wbcbff18~c#Qr2R~Aag z^EZ`apm->d7d{pSEDR%K1IK2OstuRmB2&7@A*2)KDn+;;jb!#6S$25JD>LQKgRs$^)rqREiR#J2=3u}6 zKeO=cV$q;wvVZ%3YTay82YFxaO6jwLU@yu^NJtE(q^C=XmRQ)B%&W1yAgxxH)#TIj zimW~wsu0B8?RZ|6E$7GtFP3&}hn*Gav`vh_N6_Wm#|vmPbjj`yg=)XUP;ac=Mr1f# zT5SOb{$UmBi^C;8{%O$(z4k&_JP6^SFUEMq3Qas*ZOuB~vNZ8P?3<|8{>swjS)|D4 z3nFJPRqn*0?%ftiU&ug7Pg?j*|EU{Vab!s&l{Hn8H-^FgYX(6VV{I;+fTbpwj`;sO<2+Fv*+XDM zOa4Dn_3V>ZhKZBkMGX``?0)hh63IOv0#NRZXCBZCmxUGtxh0YQMA)bH!SUHDISJ?d z(VrY@c&MOW?_^mK&UZ5how3Q&Lud+_bii4acamMZW*kGw`qRr$R*yibdNlBbroVSS*_n_EoBp z>LTP1HhuRiB3;M}i@L7W~pwP0S{|Jk4fA3(p(;V$WjMb^=Bm|C({n?|>49H@lLt25y7jP{9{h68PG= zADp&$2xrLsHa|~l6}EM?3u-WZK+gb?#HWwq=^SoRvXh}0z+*PGNrambNmUEsK&7q>wj8gFd6F6rj zR>+9OXw2}AEOlF}4`8BSID=~40D&p(u+V1V3Pd9ly>|}{#lUmDV*|j&f7At-Ndii2 zID3fyimPiFPs^TZCM;Dk_KO%WG2`rz=M(U5(`hoz153l51!Sgn*z?OT$&@FQW{*wd zh7UKHG!p7ekm1j;&`u}xis9n(*`VEhk*laMyNHy=DNwu08o_bEvmj^?{U`$2(*sY< z4lu8a6gEIVFp542owfv+TclegkBQVN@?TTX$%Q^O@u0SB9XE+U?<*$>juZtMnG)t% z6Aj=CwZhl*ATb8sX;&48|A|8${A_SA5j2-Ac~zBhsi5cFnqMZNYKbhgF^syx#U))g z^|UAI$c^LfJoZ|@{mOWA-xIU8;1>3ia#=_#exJr53OO}_|FLPtAvpGTcDwGa)!Tkr zA12u7cg&xo<-oXn_kozbnb9HOUiK=#mh0J8zUnrlV=|=U11lL-3ig^hOA=}#hj`^AQg&?rV9-!+ynuww)>1fSlNO6A zjYlqeLL*;?k3=^_`D32Ao>!`YlHdHu4yrON{e*Wpi|b#|%o|>tX}P!a^n}8}U|jDZ zm14A->|AlF*|#ZgJmSB0AZ7&$glXSKuT`_fHs4?E$K2bd;XN)6QSM_wLf!-wa4DbM zuB{3PPk_;)pC3_X?@))n23vFZ3N$mEI%V3shG;KD1%iD?slyW6dthf-5KQNu$Qw5a z$K??&3f|YugW_u(`wvhLPW2UjD(04igeloSVZwYST?%+U99F55$wRP|&B9w;nSOO= z=2_SM?Ew{fs!_!_qpqsg7C5ZOl1o(W{)G@F#-!qc{0Do3&9~aHrNakX;|{KdvonY< zzSjLuOYm&qnK55|7EXa2A(i%5GhPSE!*Lq9nBi-Id)ZN`%}e>v9^Xt;ihSYLq@gKj zCU32(%T}y~M|+4or-GlxJ%0Zrk{}P;zKkT|`_6|T*RlwgXMDyjPE-ulI7?uNCCd_K zjgOtK!g}5r{G+MTD{*0XmcEjyAU_o#9S!)^#Oaw1HT@{uN z3g2DKI!5;9!YR=+nv_8!se~B8;~|`xsM_80O}gu!G&ridn>`#bliqcqgX*q|W%&{N z*7T+nVca#5Fh^`>bw<%xD0*S5;w$O5i2g1lTD0KXkxsFc@WhC|sXB7fhv~|e z^yZT#cqLtN0})LYw2oglm*3gv+-9cHgF2m+Ak7}VP%mmmO8|iBrTy8pR?6BJluJ#8 zYnxYXg;6Rg84_BZYGyqfmw?k1eMVMCkT)Z~XYv6ibRQAjm9n5Ri+%RGCCFlFdpa7E-J8~dG zw+6zat7y^bhoPY&(U%NVs#t*ZAo4%$Iu)>K*so_{z`nmd@$usW+ow;5>VH=kSnB=P z7N(}9-9|VNEya5sGSkRnM#%YApNo|rBlux2GQF!w<~{liEafRf>6H)jY-*>yuhcHV zM@O^sA^I7;mvCqF!6T0N9&U7#nASJXI`_IKDL^&R zUP9g-=TY%PJtvZth=|E+S3EjLSF#>*L@7xg2B$RXS8M6jc84{z>CH?TFFr4He=*G` z*fSsYYre|kSPJU8pcH(uFq~w6j6=+W_MGR-*5`TIn*V-{MY9e)agxQssWERn>Hf(- zifzyTXVdVU{GdK`$5VQ@=b>p+dX;wH$1Run2{Xr`u8<7!r#mZ$Kig*t^yyLRO7`4q zEAh!I^NXd}g%223wXxI{$zN&nRi}~#4eU>Ya}mrtj}*aI?`2t!x8}rrds}tGzk+U% zG)z~id;+3%;K!6bIYq|lY6M6$3BHrwc%4UFg!H~C(pwx*Z|W~5*g=)H2^$AJCKQ{89~mIUBWc(yL9bM#3( zLIc|Te)aO5s_~GGNog)b+mbBHH!jM2ZEr_{@~2Cn4aEB$4oj*CwZ@cXKZ*>j6A6rT zD5qeS@r{|I`7|ATH@=xh*aw;tgS3cNBx;yptO+Qt7yS0|#P5jL6KDF!)j3pw z@-U6KKY$MD-QLDk<&aojBB|*&Szq?4_m7s1rofa0D-!+y?;9r7%wy_W^@C}b1lBW1 z;ss1W9wzO*D8FFw3ZJ=|CwoZcXIVRgO5g2KUa#%M0OTJ_kHD}2U6ETnf!2eov(s5W zoXF4rg>abM+1n7j^?`&SK7y1GMDJk!z!F{0T>~^}TeO_hYuJCVu7BA;_QLYc!SkA> zwG(iDa7aC3*ln3&1x`R>QZO{x{3RR4x2D0}WI<~(6DC?e0CSSMBIJ<6s9_%Zq=`h& z(!Lmg0!Rk=B@vI>;yF*Gm?;!MkQulGO$L1mRaTwSeJHrasdF{zf6YKm zWfo4?V^c%uu50a)D}*CWfvqaJzsyVoH}+!`Ol^br z;D2YkbWX@c+;h(`S*gnh#wmR@-l1N9M9*k5%6F>~!CU8O_F!Z2>h@|u#LFNDoZ8lz z$C+26ruw&y@9);S1~Dkm(kS}$rTfYEq(fZxjz8D`!+^y73O~Ufy-9#Eh;V*5#yt&b z(WU#(@Jhz~(FfDGtdSjOv)@WnwzH_$6Rx5J6?$Bppl~3mcKoe~T(E2wMueiuTe~7I zOxmAaA6KWtA3i+>hQb>B0lKxK$y|B!tc%f}@9$^3JiAi-*y(8Zb2sTNBDsxkgXWUm zp(J+|I9uWu7%+?H)XbCXi<5?TN;7^}@mH9vpK$ljA=Jfn_a@()f%cwT-CA4ey5sIQ zq}3eH4KX&kfvBAPzUt+ZfkhRZ09*piq6jEKwO2^IgFy8Y>~uL2_YPevZOuMuDDK4D zI&9)ZOEe6_Fg@k%DZ`Zwb)Hkloa>3Mr}^YdYzQc;u0|~hII|!-oIzjh^8FaFTfzmL zEB<7skT1vAlEPm+uFiEZdd`3)!}(w`t!DNAhgAIlNL8G$fAO`a_G3GoZ(xA&c#HhA zOM3ZZ4alw9Ov^HY>q5rg^LzlduybXxt+JdPmA9UINl2YZ?Axdkjx5}oC#r`5h zP0f;iRP8#w&`6i^p9@-4vU$Bh(g~|LdMiC%+XaHo{{@1VSEsJ+G z`I$xGa@IABfootyEU!x>b=H>(vJw?55>{#^Sv_BBC0>cQ*&GGyu1lO)2&0Qt(V zlm3O7Q_#-9cy`4%-lZk&vqNU~8d_PhltU zgv#rjXN5j@+1%SU%CoX%KKKZXPkSCB*;m!PrgI6Rn25Pdl#rP1K{&6%19T=93uQ*w zu(8ky{x&Euw{z`Y*|q7%FH(x|X(pYu?QaZJf)!Jw=7dGGhNwVB^v+5qnKKjbmWBWG zQw=WRv>OqfFWA1xO^*z3v;^Hi=oS=a`rsG17k#_un5oAmB)Qnznsv;(m`$EU=CQ(DI>#k%|moDHS9FQ19C;pE|+_Pt-BLZ;0PEmcGJR zI=l>viHS)S_HJ8mSm53|SgCLX<3p7j`a7`{WwT|@Xezrbp(kE=RhyFPhK}7?FGEC9 z12RT}Q(uwat&OfsvW2|Jl|3d-?cNAFyvG#C=3Ld}O{J^6TjV&`^*(v#@?W8oEdPoL zF3)YfM-9zuN0w4YlUsm`Duf9Ub?e#ClK0(orbW5K4Si%gaJw#223+DHb=v92jd+nRCjOcg82{H!wI+3+jf~ApeL?J0@?26v5(hGf$$%DGE z+~RLn(HJ3OXy2%<{dG>}!ZYsC!fW+&=Mh3$r96U=9WZ7c#E z{NwWzC*)oGWd#(c8qMlq3BBaR9#kCVhEFE~j`%1 z7MJ#d6(%=q^22}2m+ajKbBE0&UVb0uX^Z1+U(1gY_V4W2=jK9!Lo{hPg zel#r(hzx2iKs#GCdS=3dt5kB4LChNM$6mSfM56IEGK|^C#x7~nUUY)q=D2Hk$#v0B z0d7&ClBB_pMzO&YmhjU-yVJoCvmw;TeaUG*ghg#6l3MPjl~53X0&Jdz(LDenS^cex zIcMS&=+q>Xuj$e?c}9-U#Qkwy_5D^%5?p}2cb-96+Q>XIsWPkU4D&R9Rs$;1bR;TO zz}f4@!|R<4h>}lz3JLj>cK$g(9Ona6E$dYsn7H>vZaBKW8MV`sQW1GW(8EW%()K+c z-rfgDvl^Es9m;OaJOl~2%ir%nr*j}Ka_zVbw;G$9r(e19 zbo>{;@yYT7a~?Eh-6ej?*Eh9vrG{}^_KX=ICh94J>I_O?jm~MX+$PPo%~lj^5Hg{E zywf7N1DrmsQ@CF74WfGWweeu48Wxcg3;tsie6#kVcr2X~Bt_KhAtp?ypB7D)sU3Uk zqDc@zsaVKQ9k(H0Y8oJQJVsHb5|?h4>|{RZlRsV=u~x)xcz*pB-=^8^fFtzMlg(?l zJoK1$hR{2`9VQ>DUX$bbi++h2@g^(dZbWjMZxaPSM;LqVYUenlcbyk2Pm}apR6<-7 z{bbm36LGCjM0oP0tIcuY4sZC4|8NH3RcAljj|<5-{NYf4rI!-Tpb*HrDWB-{`8t3d z-`ju3#@uwM{CRwIfBOFppv<_D(%WdfYew&_mF>olh}YH}i#|_-Knd&F`07BcwaQXH z1Gx|5C9bZPSs~aK|KNL;0sdJjk6qgWK)Sv8z@b|W_1EHkg}sjR|6K4`vpQeuzoqfA zCf`OL{5bZTdc^y3p_dj$CvsH*dH6t7biQfmk-t|1VPm@Hx5MV>fTZ$IK5eRR&Fclt0&)c_J{08dW1u`Ak=Nba4m0n0ik^GEfMdx4wwYKSP= zTKU@)L+vZtv$Pxsr9Zjwm({|O0>H?AO?V}}+O1r(qlf|j!jga7v1Ya&%J<2Es2ZW@ z%!@v3QjRAtXM+Yv7=9t~=G3yP*=ILp*cku|5gX4O9qgMH1R0JOEi`l65?98SnE94H zy;PGI1f@Q?fB_f^s1;uY9-+ZsyPrf^_kkjmllXmOv9znI<9ofmVo9ZKq?K+~@PWtW zaqjx-yUiL`8k-N1 z;LnQ0O_TE~#Y%1#Jnvyxh?QffLNY$Oh(#~tg|+2XCN*WsT^$cCTC!59r+W;rh3W+wu`sm2K9VA z!FxF&X5stxV5S?jWl>EI1gQARa8sG3Yul8Y3M^wi!*6CYyhtY;Hcm87F1m_{+gV&J z4k-&M4X8rvJ_Ga7{OV+l4rT%;hM{9>$?I+$SCSET0!Hj6mJjx{=I_Izag&BFj+fag zZ^7TVN?aCxuLe2mo;BL3O8!=tFTVDr$EVao#>D2QFGh$EX@~%H*#Hl!e#K#OP4%7luji3X@SM!{3nrxwDQDak!&o zHiqIXS04UPCt_*XwbW=1uUfjzT#jgoajz&*y`k&7klt@y3anBDWT_#`*J_yyl73*A zifmEcUTm8S#KT&)u$EF;WY&?F99d9x5zgA~k?6?E7N7KZY|F#~gZH9ys z9%t2ya6xQM2njA6BIcX;j&7k49vlIl;(yJ?*UbF%2Y5jdg`K4wazp~o;)54PoRDBW z)UA7?&h@MVz5&1X$5zzpc+vB}Gg36pOG&fojkBK|ga*{jP70e7zx>$GrrHyZ_UGra zDYcGf2lh80rB+wXPta^nuKLdz0z_--2F1<1yDyBC(%5xQ4>c8WF!a z_@>@~7&M9iWknVX-I61<91YDA&Iud`?3l970eYw0dK~EA&aH~LF zUcUX{tR0GRvUItYyfV=i(kA1xJQ9;#ZSXT&8xamA4v}x6gVq3Aw5u}Y1|W+9LA(wf zY}!FC78*_@Cgp;_cwNYMvj<5|^kz>WXw}f2iEz!T93_2K{i%JNz|rrmO)TAseooig zO#|`5Zd=MkwH0q+R+m?Ep~CC75U5rr`cbA*s+2ntr^fIPLs%LC9sYbl-SVODV`wMx zK}4AIsH+P@8g91OMLn_}(_Rn#{2Pj2oGlFy6fqx0aalP2yL#I>aH)E2$Ib5!uhCE| z?w5CRA4Yetp~6CPjv~uo#PWfj#g00HGV7P>Edi@(R=18NNCVeP{hLJgZS5AzEO*#+ zOX^zT#R4syM;2bh9HMF>*cOJ5fckq=m0r*1?wB`~ZS5Uc>=#kohXGZA$=SfyGOAdd z8s!Pvj^|-^sB)i`9~OgFGM{Wnkt{?N?IUFc^8cwFE%NODgs0;$%B1V%UEg(_C<0f9 zZBu<^r!7gY(9tlLd)t8NHO~G5ytUK)YC=QTh8!;37ZKMR{ho=6j$arS#uxj(Xe?`K zYZ>DNKouf-(R4!B?Az5)-O$|du!0}3wtdPSp@YZ#Cxs)qwJIKI0N0br2!pzkmU&7( zai3$>^PZ!q;5+rk=cqumV1-)C@JEu^u*A$P*-hU?>B53?P_4OeJj7 z(L{9taL+(;o#V%Gx$YYpdM`NfR;V|_x$2C*c|<(EzPBUYnOgTgi5(F6 zoDd~f)%sJd$;9l^)q!6C)qZF6U1%bJx$Jig=^9z3>DLK7+bpKrQ2J&q!${|WyqFz> z;K)dlL7Tz558EUgi)1X0)eA~`UtUU;kKunwkHx=TLW%e^)?J*>RgJht;3LGAw;{M# z=5LA!lj?^>rQTqiv>N~Aue>FyW$h>I-HZaA&BHZ*CF8O!?jRqZyG6RYOW~SaMqwh} zo4ztjvbFui1;5R1ZEfR11YR=e`0ZVAzjuGNoXe3FZ>9g5!La*IVZZwcnsz{I3STOC z82#uafT^>te9p;Ev=m#o!16*HqB6#$M1-A=BAm#(zx>;`AcAYCb(%T19*J5q-SeH0 z7wgP1zk};{S~DFRd)JcQlJtNUJzrg7pN|n~Dxl;v*s2e4C)}@XLEN;|m*)PfByx?V zT12eIIO1s<+K=b=Zqul#nA~Bd!#k1bl%9e)6L&o`1RTF>fY8JUMnj)@rvmR}6r&Wb zy<+S08Nm@`v0zC{nBc7&|1$lWm{T4M`tFToeGci3!K`Vb`-(hlkJh$_KfY-a!jjQ-U{$4Tme0Mu zVE#%(&9i*BJpZ=Pv8HxI3uC@2WiI#kZ>9fcOn_a16Ti0^T!N6sHBSA9`)KV0LcOxr z%}*g`ngBO31tKR}ftBjmbvnW@KtK1oGX`@CiQ%gnpu-?s2)9BLp4HT;4nuWLOYtfnVGeLM*8zSG6^t5QGoSu!!dhKlKg8Lh4;8iLRd z$=y-cKWUUpZt>%{L<)HVtYu&V0D1607UzhoyjO;C1ej+AA$=&Vq`A$wanKM_t(CWa zgf*ZJc7f^kA301tM-_fGhg2E#T*mhmVb>BHNNe_wJhl@=+4Jc1DVMLH%gQIef%=SG z^q^#5b+K|%L7OWIY=JYyp+2ymjYD*wb?g~U-z#gNp=xrmr^v!;hE>iF&5LNw>RWz~ zA34Ra(LJ2~e)R^pxr}uy0MSs~BM$<-(qAIov)KPSj!xe7*HAJq&6RX}Xs%yrS}2o3 z6Z*^e7(t$~qvvn~nP_c5;4M1$8t7Phg|FNovfsyy#Anl$YRQ&#R-d_dgY(%$Zxe?U zBtJlB;+0fmh?2ngtyRM`#o*NK?TJ!Y?r}*deOc8 z*OLV=`_TK8-!*GtXy3V;3=`&?#6JJX)D;$w+kvet7X@f^FIQgYTOHcRS(on{W%M!; z+XBA=D0XoyNWEs}0qQ8s-%WINc66H#zj#zQ_8fX~j__A*Q~5774w@k4CG>sx6x*e) z?ED{sqK|Z-UI8otH)g)SUeO}(xl?`;2Vw+E4eM(TZsTW5#JzU@XodWkN3W%|h!GQjb)SuZnhVXGqYLEh2_5D<(jxE2Ct+bs#iKJ-YlYHU<@{)K8!x-;? zK(g6jBqu%6o*_!s2H;4!jFy%@)jSjQ2|wGr9A+#O1kMhV#z})H1LNY2hezkujFR3x zOw7)pM?%ME0F9)zz;5UIwz%0w_7D-b5)Hp%+49z{hC1K# zl(}h!tR^UbEdFt0Nj6WpJ9VpyKaLUJO_d433JOlYswXYG*oZ7W{Y6lE#pU0S*~qoC zr|=tM6ue@zj^i(S^`y&gIxdMZd0{)%^IVQdu`94v|E{J zX*@pfG!vy?9d|KBhTG_2?`x=6hAfp=+p48=MTpn-iTp6NpL>Lp=(&~ zSUH$hRu`5nQXDXx>o3kBdRlRWtj8jcAB91GjAX9ASs+=h;1rK0PV|6$+1}isQj2+g zyTA^`B7~P7?*sEaOj#s~Pp9Zk+yr zG&7~gUZ^o|jq&)D)}t$ch4!hQ&Li2>SlLbcG0S4Um4f9-bVc8BhxxPNDo27wp5w{i zKIxQhoF4xHlE=QiWk-I>hxkP}1%eyE&aI*ljU|8iMW*x>3pFzHqpIUyivD!*_y60i z!d2Tea>&Awruve}Y9svBXwkTR@5kOX=piNA{bp}{qX_VY3+5x|6I!+n|B>U;Qj?8I zi1r2Bq;F*cgvdFkz<--}ewoR+%s!_eMQ*5kom#Ko?`FWy`@_63zmkkm@!mZJz^bE+0i|F}&0{@Cu**HBsSFO>`$AXMwRCTl_`89^`ZN zK{Mlbq>mPgA^-BN)hMq8U*q<&Zra`Z=i$maA3xVsRo6D1iQSZ(l`>iZUQnTV|D{$S zQuxB4zx<}-fw|K=?+~1Jg0h_dX5a50n=`L{v%Zp;NeY*iZUvSo$OfmOBqL3SU$-iV{#=)1HCc9o#)>0G;jx2Cn)Pakq zr{{4>PhEWNMAk9g^Jnw02{SOXkMzEXU-m8NgEO2`C%w=R*A(K+h3r;k{fu5~65I=O zQHa3G;u$-TCtwztowYg+GtPmlGc82sM9iA^-cWL@or9wzgI+|W%dyh=3tBTvuj5tX z_T_^_;lPB)b+*qZn<+fy2MR)`Q(Cys_GRvN*55;yjK|-!GpH~8AyyJ&4?ms5Zsti6 zVA17#?u+FSE>Zo_2Tk85Ce-E%Y~=eJHD-%I1&AV|#1@y#Nq zVW{v3A?&1`62s7sz470TIF)>ikz~H!cORB?vlL5M zo3lMHj4k$lOXNwQgOSuS;ID(J_gwqXZGNMeWvzZ81Vf>mRajDntbkLXZ046W}f95L?u9K_^98Xv9K?!f3R+5B%y9)18TmaMeA)M)`8u&4e6L3!Y^z%NOS|eqn$h zT`o1$*E@w)djfZ(uk~m?WUDNC9$GT9!MatuQSR^Pt_tTS9TP|)`J=7+@0BBp#nl%K zM)jx4?&>LS7=E0RjBxWriRX3RN3*+P{^}JMryAW;CUN^vAGf~agb8lH4G0c;db33J z_wsCsvY^QG!JXnOee)817qtkF&Q9pJn%$u){X^+qMS6w&qj1&4coT;(OsI+8$4&l$ zxfMdUj8U`hK7lB~OFl<%)zqQQ)8QJpH|HG_0-U1>zIO@9WEA4BhnFS(BZv?WGI|TwgFjFR&c!3n-ZQjbGTnZ07 z+JWVzE6(6#K%^k-!ze&E*WDjFUwHGDnG;fz#eDXpQVd-&8Dd_Wy0uWL3fBwbb(jrY zbB#V+s)6$?k&AE6Z%a_({;KC7>JtleRI7ewUOZ zPR`1-(GAR!-B^j2%q(ZdR{u4l-(JcRm>@Vc{>sHJ@ZWmjHt^TyF*sPra<#Eq1jiu< zi0_qhZ2emWcJc|dn?vgx%*|h>pXm`5o?(L8o%PRL-ZVb7YS^!D+oTvdpJB9y7+K*O zazN^b;%Tsv%l{upmD|U?5+PjEO;GJq)2;)RBCYmSwtKiNmeFw0R^ z8)IkhauJ;M_{-CjquUjpFQ>^I_vB01oRMV_#8`3XL(=-M2NBYsK!TnWJzP`E;)U@> zqZSecgfI6`B;78zD4nkd`D0Pd!iXWp03E|85HpQWTEEEkeSK6@kBzDcRkQwls&O1O z%b)U`Le`%kcZK+kKL2xM$`N>&f7KMli|Uj{N6A2Z2y9Jf>hW>iM|G1UEAF*eW>nE; z4AvIaq_!(sahk7G(3xiiAzng#SaY=`_C%B;xtSP>9g|u@W&h`UzxO|zOJifvY2=Bs zeK7~XqcJfkj1$l3=bP}pptbWJ^(RYN98Hn<0#v?ButJjB!TNE7*2bg#_%Z(sf2VYI z$jG&e0_X<+T~ve#bJx|0Rlj4^XC!yo{?DPM^Dgr^%%5^xSUG8~=kQ63pkG*zhN(c5 zsksi4vS2YkcV4XG^aS#j_uJBssWLnv{&^C_2MCq^kMMc9&3{)y&Y2DUY7l(IEWhkq zLU1_-Nk~PM#cS!BWoye%^b~qr6G|I=J>ReAsVB1b%HQ!6k?;s6yG93>4%PR>x`dYy z)0t&mLr$A!(T`)P)MKRprKOzTnJ*_MKQ*Mt@jY8W7jKQ_i9#wWVC%j*EfGv9z+m6l zrf@*IM73TEP&9han)p?zZYj0mXs~j3f^oWd1BIG3R4gA?0tr9+1-o$3Q8e!LM~$*C z+3Vo0!=hKOUIkCzRc;@{SPt-Fp&B`9(JtcXN&6=pT8vRBh*_n@mU+Y&RyZz^U?*r7 z2y7X>pbF!b+b)&UQdQeu-IlHU0kh^1>d3wJO*^_K*sQT-sR$7$S8Lxq8CxxFb)y`j zZz`S2x_Vxr`8NbkChagA-heQ@iT<(jB)F}Wr5ZAN&jzY@oU5ep_AQ1P4l!V=F3u=A z$FDPeR&WGXp1k!HN#uW6g|hIGD6lVz7M#xSsXN2;K5TTXHR(Bfnp$!q_ijBAD-+ot zgt}GzMCTMD?jdOxI@4H^rj?eQjElkb^U2XW|D4*jjB&3i8ISSo8B10|f18Y}m`#q^ z-+!+$MAn4Dnpo~1g+pgIe05y*&scAm!=FX^R{&F=4aCrH!0-PoO7p#ZizRds?9Rka z#ARoW^xty-a4kG8(a*@MllqYjChKNQxz5DmG%R)ZrK{r6w#zwwUB2FGrAenO{B#BA zB9Uv;zI|5AW7jPGx8m^G<6i@(8drFz%glxqf}l}R*L zPh%D>iExm8WN_HTLs|a0baJ-CR^@O6ond=z9Ti%Xqo#R$kY%!QTGk|B}+W zG(b6RDk!*#sAM-vxi|deQe^}5I;tz-T5osH?Z@T4vO#6OYg0=+LUsm_sn#IM>G4o` zuj3vg`k1XUc(^zG5?X_bFNQor>2Clpy}J5YvKpQu?0!UG2_@kUnq+ zZ+P%I_1-3;tkD7=ZQt13&4oz5VX?rbAC{A!YK|w#By=Wo*-jg+37fA4mm`WgFj#Vs zSjjKfBhe-qm-D13w|LACEC;dsk}|^m9?G5Q$jqsVaK~ryiKYiqwEmH_U4$l~<&g%v zDi-T+46xroh{Y;dWIwS2<~@_Tr6g_cM^SpxK9<+E)8cZTAzJ|{^aXhW?jA(lel0y-Y(b zVvUDRCMB~6#QpV<3)fB*r5S=Gik=cSMew;s(C9^*IwLfWO~0g7+~O>w#gSi|CsvH5 zY&OvT%l#m6d8F=2S3N1G{VJ9#hjkAufZDFl5%-VW@VEyV^rd&cXGwf{cJC&0z)Ha4 z2dNNY(bER1#&_PYt#6;IMT`eN`L=eD+bILO+r2G?D+Vovm8);qUP+3{*Uir`QdrzW zkei&tb4=&@M&%7g9kA^0qJ_vo8L;9?1knI7`AST|lcxcDr{9O|r(|e{heZot44cdG zrUCHb^#9q`EZ?ruTbt;zn2nx*A)cr+l?iMNtZ%#bT`?H=<-)P_7sbqLUDG1wf9a)T z0CJ~(xvKR~l9}86u@0(!y~CwSAF~{_dit}hVE&mODsmH&+pr%_}YJ|C+ynjE3dVtdBS!oErVsCg965~VeuUz=Yh5@WjB?W4k@Y_xpKB8eZdSbf z;XkpD-iitlgQ-3!usXPTG!WM=aC&n{IrZ8}BsBl;H&x>_d&^Aj{#^Q4#nB}n8_%jO z8D7PibdU$_P*us0eW$uNnqj!}fCF^G6;lCAF}z!2liNRnBH6;^$bSk({0%a6Unj!t zncXbd5%%6+nk+nN(cg>2t6Hu+dNB&p_NW`8v8C)@(}r2<`o^OqHm=;Tw-IjQ{v=zq5a z6|oka`h9rHIj5-pLlgZs?ICnxOMPP-v;mSqYS z(v;~i#MrC0aY{WfY7xcb1#ta0DZD{oCr=y&k^<5#vPeu1Be z1~`@4VT(5O6SFD*t1s;Hm;#b*W9Id4ARrbhU02yiAH#!o^BZf8Xs07hxWr1mYW^<9 zqk{%z9Mho)1h;pj#6Gh`++7qSdI+rlbgbhwQUKO4V3qJ=r#TkMR_}iVPFQVvn#RKR z-xCSr|6DTi-(7Q4dK|q8^e#`jYyNbCFpP-=!xX(4`FkKOO*3mNX{xn9U!!!ah9#3Y zDt|&(VI{z!!syg8Ow9aE>zZ3z`h`30;>{V`HOdvfX-dVELGH@FbgTXKeDb@vhxZ-C zZo-?E4l-rynFHHcn6mzD>i%vm)wqKg;tCKa%Cq~-b`jh)hvdl-FDr$dx?HxJhn?I0 zVryr-sFXBlXnzMvkebO|J5*z&iZe__3blM~=nQf;jEyFUUk?s|}%*_iT?* zjx@`7AtzUeM=9~H@3mXc^)`x#K+e9nqNgh@cZtgmvXGb{LAvQPtw)R0zxNFn^+=9B zPOj1pU>4L?10^K9J!!jsrg^n+vaOUwke+sNX)*^v6u)&fx`_nje4+TQWBhu*rl|a; zk)J;A`QK@ME00-g3sdhXav0i*GaVZwM1>}pe+gX8*|9h(*64Y7VSet`4Uka#ST4p? zgietgz#CdXcHf$n7j!Aq@-*Gs6M@P$;tYqKix9bB&U+7GHB_K%J|R{27LE(LG{ztLmpsABPM;zy2bqfOy)^ zhg9fy4kIe7-?S`B|8yGj*;C{|%2&zm+#|ColsW@``+k6I;ZxD)fnt18-RcKsSuiir zSo}I@voD%u9se$~q1i;85p*FqsmnfFUjwXuxdv0QElk}8kpBdhD%Ut(n!n|wWE7L0&kb7efm6r-BPaeG; z_;1Bn2Q|sBXJg8rs0vHwcn!Ucv-s8dRfoXRSUAA%#+u%lTOX>GXqQX9zWlGlH>xx^ zL2dUT;{B)0`%f*+KIB)9RQz*gfQc1qz16KRTu@Bku&=G_KFcwCnaXWUd4USWrUpu) zDA^7@`v%ERDw20ED`tXuam&)V*t$y)RG)lMeV%X*a>58ZJ8^{T1Oa7ndoL?EuX^H* z(EA1~=vE{hGZ%@M79KOp?Ou1zA)DEI0ypHt!yFYLVx-yO_=K+PdUqrh)12Q% z3$+?q^XT4jsS2zUoi64iO03PhM*@-i>3i5om)b>L0dw_2#TD-Mdcabpq3;R`jqt&tpsS$lTUQ$0rt+5a{pL zpk~C*SmXD-)F_(2sGrrIt|?Gh**tkz=$#VQ5QK7wTKQ5jZ*Fv~R!b>~CpxN+K5LAF zx~&6^BWpSB?<-a`iYC2aA?7GXG}fvey;c09hY}6fi_@aJ_u!ID}*SrBYTUKm38b{_LkM59Fde= z**lrX%$7|?wroN+ak9xe=X$;M{rs-$`mLv~~zQ=?nEm*DWaCwSD0s|TA-+7(!v+b2E zI*EMe<$Wh~$IWcq_jwkUhl_t&le4xtiqF#-ecguY_w_uZGkeZXe8x`3n-=?X=)8HW zjofa(*2xUGi^46Wn%)|5HfPF8O+YEXc}$KrLYP-8UvdJHAC!1<@IMFI;K9P)?e&y7 zFJ^5-Om%9csWhenUI)vZRtrVo?*iNF(v`UlsixDn7YI5Hun{Mp1f@-nS_@ zWWUQ;ddFlK2NoJ0Kx%y#jMfG^OA}kbqTvD``}DX+4ENg#G92V&9dlyUxf`-nKGz%~ zF~~hWN#4s>6oldVlYbXod9LeMMJZ!txSnh0d1N?y8|k`bol=gU2;_6|*h@}n!wo(h zZg|6mIo|Q!WIOy)J?fdi6rp(dQ=)2u{G4!~0D8zAvW^pFBB( z&}CB3hr%CMZVMPI9vMJZ=n(D2$ygofcI&J;mnz}`6CC)gNz6w8jXjQT_7vyi{`dj4 zHKl}~U z#Hgn>Gg{y^O(}JLeC_b&*zs+L3JHPD{|N24M0;OO21G2L%G`kM0}1l(g&($&cvb2= z0XTBAcOIVns!Kn{ne08zz%BN2+Ecm$XI~f8{XX_+G!T`VemeDGvT54+Vcyj{`9xei z4&F)qCDS%kjK3?;G;Wq!=-YUYc!k;kfYkQuS>Y#x58oVWs+tb$%j2u&?0se)o!+3? zm1~^zcV`L0$5XWU_v-;sn7)#jCpLOmO@K)}22}L21i&JM!A7$NpM;oC#z@y|((iU` znF<4y4pIJwyH>Lj$v3XApFmk}h;ajvT2)jwq0?8iJ5B-$@1spI{^6Di86n(~mTs(a z<;N(c?ZC0KNbW-Qdc$-XzLQ}StUP+VVP>exp(b%}(#X&|kO;vt2iQu9*J+&oy{acq zp7=j|ru~vhlwMi4{Xz4XEC2vS^FutCnLbh+f_X4z8^sBmAr8F4(Xvy=Mj!^+QfpqFV^ zmvD<(^`q2)^K#Qi+A&l7r@CEu$1DGK@4kT;H{)M#cBOO%f|Z?9(3BPdggy49n*rDa zt_2AX_#Q`N#ipvwZxrg5o@0{2_eecpdF=Ri{I|=eNk$GOX{1J}9(!z6Ef@EfoF?kN zqKn(Telm|qpMYv`WFP7Pxla0U-v*a}o5{&Or!r627poUR z*N>O??^KhY_)ZVYbf-EB&kt?WX|FK@mL_|L^gquDalM#6nsz)NUUyw9q(j|#uA1q# zHS}@_$5NX!9=w@iGsg!eRqJbIQ}#D3HV=R+)l~uead$6I2xyws95%YI?OKnMdcU^; z({lu{X!2gm`$I2x6Q`q}zgR58fmuXT!y2IWgJlG&)TV^FAmUSNT8Q^8LUj>j&jM~S zCsf1ZKuX2X`?teul@P^63%t?7)T(9CnhmsGGoSCw&xHF-|KR%Rb^4KOA`jTsJ}-d4 z3W3v;jQnG1ntnh3C%^y)MXk*LRL3lS=@wPCm7uzBbmv{)*lr8M@QBMM)cqiO8yNQv zXlvOL`FSEB@r~*rHKIu;PLpY>;aNd&rNhY2X7Iq?E;7>gbs%;&IQxZaFC6vvX4ht{~fimz$ zc4s=snAJ@L5!ib0k6b5s+gzbRGP1C+5aa$(XabU#`uDT|5#!B(P6h&C*#UNiZD0~M zookS~0zGFf+NRzz1vbrlK~IJEuE|FYg)b95Ct`ke-<7FWe%SAvi(>2|m^F*P@@@Hm zITD3nsc2Wg3RJ$aNAR|Vi-f@8$&<{x;^OuuUwscy;J~A+(*dm%x6*X1#o9}3@bSN` zYzU|mttg*JR=yhFyH6+#c7p~ZwW;6S(e$-DDg$u*3e5D>BTm}YCkl1nYrG@AK7QnU zGq>Ti2I6<(nO&`ZS${BVC^W92MtaLE9hnO5UM+O@05pt!fufX^{9=7n(PKgeilGOUX@i|1GnmBN%Ij@VLV%u;uW2vrxV)nBSYa^H_oi1HC>;=Xt zzf0}B*!2t3S1Zb{KX6ZVIGNF7<8Q&-!#gwPSzvYyNeOu+^5c zii)O#Bq0t%g{sxYDl3hFZ&)AbBzTy$fJr5G3w#2^AmnlZq#t-$C2t@&g*gQ!8yJje zt9jP?>0xo&-NMqooFp~Y=|lIYjYq$u6OYC0(~O4!OPB8a*cr@=&wYg4crv7lcI|Q4 z!*5UU3GjS?lB9bu#EQ2Drx>N0PIhg)1C(oEu>nt?c-I$+2cYXVkqtUY#oGyC`$fwk>p9~n5A zc|*$33ub+6VKEFi451D#{t@o>uiF7q;_AYH-gMm((~rjmC{cJ_K5w>7=bi9j9RJLmT8BARs^jX%MI_Jf4bip`r z=7CW#vx+qa|#YC!+Od z0Efx1LDvU&wDdxAg1Y~|vGtYe{)3`Qi7Bm zts3rR)%+e_Ubevrr0%ern!GjUc2FkZB6TYCO8RCz4 z(3T?YH%5&=K$>yg;GQx?s)tNaQ38z<(T}g$(fw8GPFFkDz3z{e%p(cq8F{%Nk-tmj zs}aWPxFYO}A1R-;oDR;qeMz{=q8M<=`8wRx8`M%0%nX`jn#`lHXRESX1I9Y-NiMk; ztU-_PscL;RX*?}=P}KOR2(H{^23KqF?Qf-=w^}(>_{P9x*UC{N*sIC7~Q>xv0ax^iKPz&}KNr7$^ zm)eQx6+EB{g+Kj3=OI{c%~>n!4sg$^-oezLpLe!K<}Q4ifRvJs-#<; zU@D%Nj_+zIO@K4_F+C@V@=Z3pnE{x{NYpYr?J+D=iTFnq@z3UrzP>svWp9_Sks_^p zTxf$Ead(~oA7eN8DKdO*2I`6|3PeFG)(S{qQsvHF)_flD!VQSd@tT_RgT+Y;33mKf zLB$Fl6na0rX*h2*`~d|H&I|3C4iQ=*laKXPZ+r2k5$-=`BL(fWt`&!VPUQo;MzuU* zW@Kg};MHGC=Zxl%J%nJvmvGOA0k+9ye^-Q4Z1`N)AZ``dJh+J2uYicL zVwVY^s*2`p+go@oKnA`geTsf5DHZgWD5E(5K^Mo^mD5VxW2ILPT#8TAQ`|>$$R_t& z1D4h$Q%<;Rr1)oYTD`p6UljAqHkx?$7FsP+jC6lrC0o3Bp#lbU{1+-+Mv6DDrCYsc zm<<^Q7~DV89haPTa&mL~;&_cETps7`(W$3RWi5ZQw&C!c2AZx57O&`(7JLb&CvLBl zv^4Non$&RdIhZj*$1cFQ_DWKMQ!&OshUW0hU`gm_g^n-g|T6{rZ`R zQ0J~g=VxG$EfK(HtWj#(%f|f1d^XwBpF0hYl zw=6J*xo}_mP@~|nJI?0uG&wNeD10?{w_cCvPA*@squkt!A(G1Lc;fHvZFDTE?#?qwOGulPC=vZjQ3`7-5)^!TJakw z7|g84oNS1qesn)zO{~gJqdF0vXq0!mlJR1n(YED=(l0=)hK_#b6jVwN0jfvW7&8F{ z73_PB{!eej0;rI{Q1aYwxSb9uzPC* zcHV3>L+j^&Oel-mD3KgR3ZNA)rw#>Hy)`j15|nGQzOwjZrJVwLE_py?-C3Oj2tXKg zf4R+SR`!EcozGDk9^<-+aY_Qoyv0ep#ewR%q-67kcJpqlr*qiG@8$LS&wyqd3vq+Y zwlx*?D`*KnA}1Okz-J+eVwP~73EGNWr;^amO1A*`*7|=9_VeVZpw@*Mo@edGx^^{Z zRcv9Q9VM6QfT8IFV6GhWr(sl47T4rR*_U%c;c{Ln;y#g|UlL74x>UGla^*MlX_9U{ zRS?hkna3hW(F@E*9f$}lww>B)4!cEH0G~cUPL?S<3b~@ay#e3*WRY+uIgA;C_Mim8g;VIzvAd^HS z!eSVQaGw|8lj1LKFp6{l5q)Tb&e#1bXEmGfa`XJpx zLG3|VN8J(}7jTYRd7)?2?+HzKHr|tkt3bPc(cS70t zoga*!XLP&?taND;mZlYffB+_I>;c+tIn8QCw}ZIuF%j;q1TIR!KY6j)iLMvBQvI1^N~cP{T}z$}CWjO+G1~(IQ6LDX**b|<)-bR4 zWzwXMRrm}>txiXu*uRR?U;vtew$bwMRhxFXn|_pY-E(FOHj*GC3sPi&XPoT^!@!rG zghHU#)CdBGfU|Pa#mp(KH>>Rzp4+AOpM`72-CBxP{^u{MXpG>MKs!)YO?!}5dDP|6 ztB>jrMK7nmQBHmBC|{Gu!h3npGv&zbeE=z^?35wvRzIlx8M_j_BNE9l8OhX!G{zg4 ztbv|676@+@dJnk=<$$D_XXg(I0@SLsTH;(FL&mLG8SXS^hB8qlPBE!c^~^VqYEVEi zpZy}td3!nI)oytz?-i2n?14NBDxe$w6>`qF7uR9%8Gx}lx4^&!h?WF0??X;sjp@In zp2EG7dUE34mjDA6fx6viG7YweexMV4j& zi{a{XtCx52M0iW_(bMaf%uEF?0-THEr25S%oZZPEi=3@`ZcKo`|KS} zH2KZukC9s=3SyDXQ9g^-eU#U^@SjpH(;hv}s1iQI?jI;*WPh5h#){Z_MGC92lH}KD z1s8~ys}1g6k#`B$!}cD470tO@@gk6BmWeegr7<8s^ifEC)m;F?w<7khl77s;z8e%2 z$iuX;^I|bVlybm!+NM1i*!*mM9Agujq~i3KjB?bpZPB*Cm6;3QH5;UT4>-5<>>x&S zHcPn*4C0CNVf`Y|I>l$$+>Ruy1w1y0@Tl9hQs^@S1?{LC6W^~V)RIg$HDiR7=l`jj2Qh&Y7&{E)0sPYfiaLK7v2!&K5q_x{RK-cQY0Ca?T&WiqfHH^M zO^p%71Ih_N()0WUlYuo}D5Fk&5`?hGX~5KSGT{CdUm0meuoDncJR36Fu8f!7%fW^u^1o; z*w)(_DZ57oKF%BZxQi0Z!&i7^#H|d$w)U}bXlUxuQ>rDa{9h`>6DRggPEHwsD_r9? zABdyrLUeq3oQ>B!ma+&a-GSaxIjz*NO~}6-ddJ9zb-TeC_ZEQCG2h`Yzr~BfLuqr} z<)t5>($cnE-RCr|t*b6pKh#=)TWZ0l|D4quz^(iPMo6cFP4RV$Z_NyVa-!GEImJ&# zxy}zwfw2oBdYp0gmq2v48>nJUIIHU@f?D1nLlrP^lHJ?&VyxkK0WZEjZ%1^}atT{R z_z-m6+ERCHvrbOo(l5oIk7!L|G5Fygx80!xd&*E+TZsAL#f1d6?9)WSp_DyRqH}-2<0<}&|ACcYR!e~3CoFj z{f-d_jMnwIuz(-8yHt`M=X44%s@!3(uoqACZs2PhkCHiAdyp}?1-*QJpYvdI3e z65jm{?(a(vCpIAN5HQ2}90pCZ7F;s8AZOh_RP^rWj|g{4nvS7NN)QaD z`OE?#WLVtao^TTY+5Ueu-gNKExd{)bO&1%BjM@+lgIP_l;m3S`j9Io$<6X=JxHaYr zFb$wS*yP1He_hkxDBAM&on0H3SBKdO0RPI;Q(trVD+1vTL-k(B4ZO!eI={EoD3}Nx z%oz|4=HQ#Cnivrwn-Y5f|FrzR=kQZ87lCB;nXO# zXYwtHWJW2Z^#JQ5YV!#n$B4pqMro#6qZUQ4_TxqdNU^@U&>i8(A?{A&Aw1S~j!u`J z%Y!|Go0PCYV#Ag8;IQ;G1!b!8q##Aep8Khu?=6TIl@ByxNf?{q#CK zE5Fj>7oatIJ*!0w`p-!$XFe$fp@0@m2=L_Wd3Y+_qw#z&ebCUvG+evp#EQ@dUl>MT z0iyq@da+h9n35ic#eD*hI~5rfjk!(obuJec-5d%;g|Voys)@b+F`z^;5eQSQHkTz7 z>M{YeyY0>Lp&>17jXr?qa*-(9OAc)VQ}AL}7;u)zi5a_+AIlUl#CM3&Ruh4e4os81 zYHxx4CrGUxPnyvvhpE73Kq^jP)nYENH1^}ikC>kJ=9^Xgp7Jf~CVp!8(nOxr+b;m% z|6TmB8BW3~SFS&Sfu($VMipH5?Knuiwtv{ zi+9@8Q}+A{OwMc)BOT_Td@YTRULW+7ll6$bh-QwT zK&ParrAm`!FNpb!W#`${eF-}BRY@BC;IS|mcLDO4AG_QPR#mmy^-yx~Qu?nn*cenOuXyT!_hfdt;DgbFyOZs_p4(bJ{Tjhpc*OL}D_*z`*x|C9;5Q3J=> zM*~k}YOY9aFX*77b6=rKtw(TUF1>?Nk&`$}9KPxLt`lUtuw#{)$abt$) zQ8%>ZMZv&2`W6U6m`Fq1wLUR|1p9yGlu1x9g4DBOj&P75h&%Mz(Y+Q&U0N9;C&FrA zh8mn|D{`K$I#@cXMB2yAWPrCQkI$g#;*g5B)D8{ZDRqcYmRegfbSUAw^@icWVzlC# zZ0EgW+|hUJwXW=^?Okxqqe)BlyM*~o{N}_IpI?1U<77`wkKbaX`6_2oUjLJ|^OwB1 z#D>cg{VC#4LH?`$emOshEWpnfJi3ve;z$G zS$gYGHEWh5^bL;SuTh5Dm6tHr8lHySb5p5gxlIt>a%&tFG@TUWn444?I5jaB$7EMp zi#^2GlV5Xp0V`%hRuz!d)(LgJ&I8CN~qv;^3yn%ED0-)2B-YvMw$!|2k!Vhq? zG43{{v3mb^0Du#PSw}Cs8vfm~y9nt5GTi~=8YEFp2G;Vk;@B}5dMmRQ*d_cCkkgM0 zLq!oT3!RMYpq|r7v)~*gA&$}5`9xJ~q{`!r`atr2U4+FTuu1(2Ol&4?Uci3>V+5Qh zEJhyu{va(1qK%zLi8WS)NEy2Q%tC22zX^Y?q*$!3rq=sdLqnvVxtdNywh zt=SnZ=;Cm1ItA&%+Ox)SaH|}2{5l@X6eZUN3(s0koche9hvY1(rjs6H8@yf!U6PE~ zcK7aCjq9V68AqKQ2M;-l`up?@@Ftu8bSpY22NfVo&mrt_2^O;&uFAGSGALxY+8&H| z5vF%@UR>>5+E|I#ZDK3!pBOH5+Up-nlj2!{h1HvXzd&LnpUzF|D}dNqIGH^hjv$}# zWcD598d(vnlzTc|JXBfHX^;TF9K*nDQXtPdSsPqw7F{`ZHu`hm*mBYwSusZ3J$7h? zNo4LeZTjgEIW0Ry4$$-k)wV|C8aL>UQA z1p=CkL=~8m&*?(B*Eh~k_uwIUy~C-)i8?LN91{6ienlIHnu=KOI?5oT5Pvte0;ybLvR7~~6}?PS{1@wYt(IC0Nip=%m!sAka$vdERSDs z90EuucN_w4x}7XMIIVjwGOwvEkd4i0Tj@(KGNJ&iWuSkj?cPz)^1D7mVoy76^QTI-HZu_m*9q(Xb#*j{vf=KjJ5Zp>Qeu~ACL(_3`aeIH)lqz} z3l~_3$xAZsuOe|jkDK}R%@tSSK$mIuV`s~4DKxx5)3jP0-_$Q)Gz?e|l4lxF@<1p( z6|@{?lXE`#_<_r7hps;h%SqzyDj{PxJ0f>-5T09^2s=?rhQT5p^Zv{FR}_QY=S#tQ zZRURg>_+%3RuT>{0xWE}BGkdd0TIAM{b>D^_bYqIE`j-cO&K#lR7`z&^0ilkFQXIJ zj_)<2_2g!IoN2&sHBSUaxHK1J8>KHlUd~9^mr!aJc`l!Kcz-J+eSQo8#nqUNpQef1 z^d``iGWkZAlCFjD6qQfm)oi<8?btaY`sV1m~qK@^0WW z9sl{vds{qr7#+xipyDkkw)!p3O;y?Ur|blMy$5|QqZuH_g@WhdHdYV`;JQjX@1)L zx%yE-&hQje1-QetDIB7lh(Z+JugJ!?&3pAt)H%{vx@rp4asbzK+VjSPBP8~Z_1;?A zEiAp9KPb)8!Aa>Dxi3=L43buJiFcVzsf&w?Ilcd>#dZO*dGN3E7Q33w`)U_QIGU@3 zx)_3DzQ>xzS|%~YUL%KF}FZpC`fC%+-2XBGPzfAW8`CYF<4k z4deHDoRjoxBy1k{A-d= zDpLrh?YE=M&}*L7(4IlRKY!NM(>B|Zfagb3!J8;OeR(RNY{S#c1T=^tbVdwvze6uxtwO`7%B)*KkCd0>_04<3M%xRFg`8BxQ>K%VR&y z|LJ86f-xuR*8ffFe@G(jpqQFd^7x_-G$)??ftZM&na??eEr@Rr25TjKrv)X*z5ma4=q11_yz3gbly;0QtxyYA5=N+s^r}PN&7fS~a z6MD$gch-x+mJ83o(Da zh@~JRgH-OKV1DROb9iC>HPy1oCm5^WI%&7O0iE+t4}n%7*FT565hU`o#2f(1b^@K?zY!`6AQ@KX{kNyr&6|%k$tSUj;7KxYoe3!y> zeYiIFaF8J5MTKSoNUQ&y3t|i@Y%QXU(8-tlk2c7yz1~EYmIbzM&%PBk!MM{~IkwjO z0=YJ!RI`>LsOJvqQH-Z^UR@rQ7A1#x&L2T7mjTwrjj~&`ubK+m`uV#$=#o7D`E+ab-5>sGiqK35qMb7~nl-aO% z-9_7`Nw;V;3gPordYhVqtbYHIgxb8tj}P|1|*TS}>a&0?hF zS#)1crYg=D*iI^}O6>_ykEdaz&R7?-YoH(X)*5Hep7roD4e&BBFc`ZdT5w>4U@?!fBB;=4 zG)W=-E|Z9GUzfzNgxTB)!s_M5-2CwE#99o_(ZX^vUZ?GVUr3ZArs=?AqsDu&0`9gj z676HKplTN184dFjSR34l(!JbTP{i; z{d@}T>vmz&giWY|tu7$J(50+5%|-2c!eEL8;~P2MD9y^8W~WYrVJBu+e0!pis<}x| zGcB*h-Lo%V>+#ak!$h+hew{?~o>J1r9vFFXejp3sWcK2-OXSPF>!V;Cj}5p+C3stK zo0yR4t?PP{z+Bs<_wN ziWkt5x64>1s8>&5S; zByVe#J^*rcL0atrMQU(Iq7gt{I&7`b%NQdn3RORn4>_-M|tfLPd-?503G>Hn)Rajr17p?`4(Y5 zkUSz4hsNJg>!iN1^-aN-ZI4&sgE{HS%F5?Y&y7c&UpvAC#H!|6`N9Nsi-PegrKeF} z2FHkI;(9+38e{!8d?#`S)n6G?+_`twT|JhROKv7acvxmZ1cTdv68`_fCFnJ*<5h8Y zRN~`#z6IgHLW7p4QOjX@`gt!)lEPhh**lwZFBP1r63p+C>o7TtZg!yhtEoM+(!<;> zPt1{%W?)qmIoj+ni2l6p_u=39On;-@X+ADDNd(G9Lyg99>~$mJ^xK|e@A|dM@TD*K zuq>#3v+^zYqJ5)jW{ph|-T10x1$t$kARJK|7KprKwNW8aunBRgp@}s9qBYHxxcd%Q zj$JW(2}l!ml&+uW9GGD(c(nb&!s+QS@s0TUAl!mm{8kKt{0&-#-BmylIhhJ*a88KY zU%LWxV*_bio&zY-0N0c8yxXiLhkvqmsR1vy{h9=L^9uiQhr(tF7Q4U{;ANm57n|)W z8s~L;og69k1hYLLN|$phOF@`xR3g`T49M^5RlVGbWfhYCi0w45*5_p-mo2jcv#eHt z${i1!ksoYa1`2<=Ldx_@Ytz1OHoOr2cf_@>FPI_71qM-M~HTPqOkSi2N>UvwnPDB(lv^eM$DV^ zu1Tx6Y5V3k;LdY0W}-sOtD<(2U@=@AfpWq8Wq_n(sr5nmTg#a%k&e(ahsdMKwEC?{ zjuQJii6u2SzS7) zDT$+hF9;}XqquqqOPi!l5qov~*e5QlMHGe0s(z;r@m&ymK3Gjr?1`lLy{5e`@x3OO zbHfGupbT|Fe0MYsG-d%3$Nyi2i1S9Jj*s)j#1s>lx|n}{!6x}9><-I7InmwO-Moly zpYM8qRKDbR?EU#=))74uLL4cdjJr5@JS^G!6nj>mxJ~9>_CiPYXBjtFIC01`puz%= zgF05=LqoHi*kDrtK##c*dlt$!!MGw zg$SulfgWn;S@}-)W@f-=El{EAu?&-7)4||lby=v4 zHyZgt07z%`kMu(9tIqrWU1J)jbD#M66GOatlXoIsJHw)ttB?bkV3-UlE8XXhX&`>} zuar0lT4>bp3lEs5&JHQzqC#m)kDd3-&N44fCY=#I^5hq|)qdYI{!&Lb?)d4St5mr% zm#p5l(~%qj)twce8)-t-FZg6xi)l$pfMU4U6ezp8Xk8o4DN{=m7jcSg{9tlT+^^9l z?U-uI6Iq;blvK@3S%xF06^yOQzC!2*YAJF24KQo0!pB*D@hXb|$mT}>pJZ|Ei&{b| zL2xkN-aJ^>uQ`Ow&G81v*rezU=KvwVKm@>XcaaZj87JzNm?2jd$vDutx5Pj2^NGKs zW$)R1Q(7Oq%ZB?R`6=eK{7E%HZtEb43jQ24P%M0b8DPF$K^Rc>|BHre96kr~vVlnx zRWLKj&Tryzg2sh|(M(Oa(sA74&$H`$$j1G!+AHHDWV@4{wD!w-I7AX;n>_%A<2#_VCMJ`D&v&AA;ua*ky0qA&`v(D^J#;b0u2t<(TxMd`70l5|1^GXFsR#e zXj~ffA=eE(h^GoB@j)mgSQ$PNUL~blUYW-5+R5dNT-Sl1yz z(9x0nufWMr2$^B1;}Q>I&4;th=sWR90U*;0>{puX>*ZS}#He`cLKyH_Y*rho|3<%7 z+RxFC#}TLP1J@u6yx$v*_|3x0h64*4S_l3_Ad)ur4-{X5%Z4)p%!rn7_*0@u8SL=@ z&}Km0HlXgG4w(icu*X8<1Wd*GG+9Op+Ldp-5&1U59!oxECz;1>NNGoxW5zJupurm* z=k0Y3`6M##4qa+M_ybTPg%w0#a>drEbabO>9}w=7x~vu+nD#25NH)lH6CebZmX`3h z?1J2vFsECh5HkwQFb@Hl;)DV{KB95m+QV^=bfKV3Id${|nRLQdoYQ!*sgQ?<#|jcN zfL&)c|LVE^AS_Mb<*&wrG2=e|Ga#=7dIrax4nBmUP&6IM$Sg?5PwtY8+2wzs(iKP5 zbhOK#fW>^I7*=(-cI?`?Yj}%x7zVri+F0`eQ~@e>0IJyfzbpH~;v*)HU1z*6|6P;a zd3AYaK2$***HW$-x>ByTzeB%Z0;4cIJ#*!UFuoUzuidSa==2Yd z9l^lsToVG%^PSH)XBjhC%7wvF275E=|3-1RiXst*v_hQ!)H}ZWsCESh<9qBbJ!*PV zq{ECn`+_)Lj_>0?|G}S#+~LOrgEfv8=e;sbfm4WoLM{WOFA`Qq@{h*-a1I8N=MYO< zqy(#U%5;5qhW%vEzP}YeX!*J!^tWsP>Q=Ni5yCRMz{peu!d?5dK=CHB4&Jiz;pi~e zGJtO<@|x1hzA-^OzodUG0W3pqch_?BxM{);v!80*mjSVUk9b+JhpyPMvm-2K?%Z{z zW9Z3olCa~M(r!gN%rq_VYsrgc?v*g}vrKs(-ADWT`gDC0w?P?ABq16dB704^sm5|h z?QCzq`@wz(Z~DgE##@_hroUM1hvT9Ue+ROkFIf-vK?&=_Ydq1H6l{Ne{I2RBy7uD1 zx_SSLu0*>K?w6dd0dej7N8p+n%(f2c{%FP8*weHr^WB*;My?Eqt{QLPN+NNsPxjzGXr^o471dYwmY@YtT7YGAJIS&icAKZ2pEUzeyaVzq;%vYev~-So&ClA+3yH?} zC(b`2cOUl_o7VN79Bi-+oYoG!>}P)7=&`CH>m&AIc!U!JVzLeqk;j$7#(Eml@n z^Y*-8Sb@(#vaBXrW4LH4vFl|Q%ExEavp zZsHhU=#6Kn)<0FUL?8`vOfd5`-smKxrX-jQMA<|$cZ|$#`j}&sgf0^v@+IbyulUU- z<^3?Du|dx#p++0emid!G;laQ>PC>BG|1D!PZhGg7YoTz_cH=<~faK-Z^Fi~Z%}UUD1I>HWMaNvuLhOk-cH^w+ zL?8Qmjv=I@v-6zxA+U)Nv^?;>nJq&cqstgkETZ?UEgQohdBgwtkkt9;tvwI?zb+B2 zm5*hPt=hNt8?CXJbAOAtScS^`{5!G&8%uY`5&kE`=}AJi{eQ7~gUZC;pHFq(IJTYY z7v4LZ#Jri*r*rgI8kU{&{cbodH!W7hSPZb8( zjy!k~E$IP%z<|tYuWVj$5yoacW4r^{6|4c;#cR;f#BFL@6muZa?nnd6SPSG&&3pK3 z)&I}xnG4NtE3LyO_c_1HKliNmaI3!e$RcdIVWz(v%{agQTiPY8Fm^?66#@y;-6vP! zPS{n|rZphBkmH8lW>d|%3{p5ucZ#HsOZ%3H%g?m|)nUTlJQW5-W6@in5F6TEsj)6N z`(jTW*y26WmG{awc4U9D&CV+u(MT#s9v%5b`p2&Amal9Yq z&FwS76(jlf3jF7#7_JGE*C>f&)6vJrBPd(z;@IQDSnlx?|C@p+E^cmq?(*H;7voz; zLVaPwO&m9GWF?wBNgRb`GTD5q&3mvzGmdxw{KfLFdt@! z8oC>uC?2&xZGK?QTW4V9MSqKH0{rI>uI_6hd8p@i7)q6jQd))W?Csr+($@p~rQ7Bp z<<=iRe{Ld@l9H|`in^wSUl;DKc_`(+pt#CSo9&(o9fsau5A*&eEEwbfmX<4sfRu8# z>e-I4?Vq_}e&thl60DET1M~NUuC`s2w>Yd$!)RBBm7=~vU}a`oHY%^1OJwM-hAAe}h5!ab4q{DrNubrGoM-#L|E=5MDYa8gu^vC-l^ zv3w=^+l|z+<9E7Q?0RLYHrXKM?!=d;Wnh5&M(1Y-=cx+&#(q3BgU{v!Yn?ZG*M#wg z__M6uR7ri8nt1~A)pwm;S&u%Zw1MDfEv3nS_VOeML{@dn+$qFGFEtE1NG|QHo;;dv zUt6)R->%aVbX;ivRt>brILcdStIm;zk~vnqY&$z@Hfa^+ z>AoTJV&Y2CVC2wJPO{50f`rw;qX!^_i3LIxzJH`%8`=xm^t!cHDoiHV`FaD z`ke<+2$#+%=6EnG)+O%RO&aw`O5`)ihxc9QgLV9Fr zTz$O?n@a(mFrx>2N!?5&s;pi0V$$LF!&JNkD)ZTI-c&*9oo>YnDOlm)iEufh(P(uM z*@vZp5#Yq|gtm)UC`(?mTz*jd+R<+At)XLrbsVvgxUYQao9=4R88_ER7a5pr&D;di z8=PUZyxj~V$9H}A?GW27gv+3Z_=loQSVTm{)HIdknxGOmPGoXeoqJr&IZ1AKVE6S8_sq!^BE|s7NYWgoe7r(;V{J3g&VwyMt|KX zrUEy$LMzP0pqIF9I$gJ?U^+x4rkm9SIFIBPXFHvZQ=t*pggTys<)zisfIrQz@D|`R zQB6?G%KF<|iYHVGO@`$*;_)RW4Zfqb>Y#|0uIUfBW!tOs`tP|CIz_y@gbnYma)0_E zR}-B09DCryraC3K8-zFho&Sbpf86^kn&1rz1iL$FJyKM3|MA2RnV~`8WJNf~3x4*J z64~*=!2k|L$2w&p3-B2Ch`BB9SAHYjP<|AXR?b7j04&16yO<9WBDk#D zuuJ@7k?-j+nM!${gMz!G*fYd;;|G|(*kbFRhrjV9XMX(>4fm-2Jkln1{v4bGmcnZ7 zl4v$?cIQSlDL1Jhd!eYu^6d*LaYu*-S#+LMJ$%e=wNW zUsz${EPr>LG}dl7_i;RUAQfQgoHws_%%8=qtk`f=2*GFHSLeq0;4^3iJ2}x@Vz9T=}%ejeZ)bJSH5k1355u_4D0HlD!D-+z9!1Zi}MI8WVML_Bp#zEL_~#%KDK z9S(;pw6IvU2^p8f})Jh~$7PQ3$zVqC@^zv(^rVYMu$P*F?O`Nsj(x4JcErOeL%tvpI zp(x_m%p1CY)RqY{`x0$ea>$AS(cc{iFw@$D~zK!S##{L;}q{jNVN+XaH) z8T|e0mnwz@ce9U_V=AoKxz^L_S4p@T^LhS~E~=q94-oFn0+DYyWt^(t7H;+gL~Q<& z#OLyx6dh0(F_yO=U{I(sK}Uhd_@IJRhZAdu8oGYJO+bI8HqN3-B+_);kKe1{MeNwDU6A%y$qFqvU*i$csh+ozxCEfEc{2@ zdsn13Z-g>oH}Yj>Vic(g$);Rj(40X3Or$pX;{M{hx15a5bm&I9{>Fmt%kS}D9ORbi zo13TG+u2=B9wc~&!vGEv1?}68NG9Wbo{zTr%2dTI;PX%;WKqbPH!6I((d#*Ci8t?u zycx$Oi?6jExRL8n)X-oX%xr`D_josYOp$KbFCsc_a!u z#(B7z6S&>haKFleO-H_j-#Dwq{{Erx1#Ttv$$Ci@JO7p{Ag;`MDHJP`$jf#oHn2Br zxJ?W)lx1z+2iL94@-6Tg3|j&sKHU5$tp=jO+(Y1zIe@9Lr_NH(`kvJH(#rJdJsbw3 zHT9ARWDP;y$us^z)+Hj<+aKS9e*AcTzo)R=UQ^x>74eGJ)^K4t;;wOX z2ag z^V>=7erTig$$3_%r-#D?kH+Z^FmUCK`X}$GI8r9qJ8+WWBU*v`V!KLDkF%W`MU1RE%c80Rk{~52%fSb1%in4n z`<+Deq$p#}?(QwPx#@R)QMyIZE+4j>+9Ls0uW0XDd{*pgq>vh)w0C`v{wdyH3t~Sa zhf#(hT`uX$LQ{v3c>NlJKlmjA+;t8P4puFJ_<{~G2)*I$`Lnk8p*HZmC`HZz0hNd&OjB`g?ZKJZALoZNyP{b&Ho7)Snr5#|>&ki0 zx8hG$yQT~2JMXUziBCVs)c*5^!6kZUu~U-9&A02#bl7AS#F>wl_EGy2EzL`_JNey> zPVjNn;YUL%{%(Uex4*pUzT0bkf4bwdZPTr6xA|w;_2=I$uF0$=sa<=i^p?}`YDZ;t zwWKqb))lUx=R|RQ#z#uq?B${V(1z`8bmsz8)<29 z=sbIT{^z{w{p4DH@i*JO?|t1@-23|S_F{Fq1YjI@j-0RE;W8c_-TZN&_}pAyjUROI zY3yBn?O!k5oO_={iU zgbdJ#o^XSmS5Q{=(ukqRm*yHF{|NLP4SZ>rvdEN!Q%OJY904L!V~%&S`Rebh4{X)3 z8V8w{0Etz;8K6AhsTy*=q0v+GyPRFz8;4qVMbr2=SUg;>5Ixmi;u7JfEsU=fFC>Ez zT0T4<@fU!aRlV0Q%tn=Rx1e;9t`85SKd0fW5ET^S)B)4T3DyeH5BgYPr{&-$QR*hN z9Rj(l?ZpmhLhNPq>fgZ$dE65&liu+{T6%Rzy!2xp-(!L`+dsoOqJCm7>rv_A{)Wp~ zc1%ycD3-nG@cvS};PvX}*ywg#_YN}9Ev|OnO+RL(T*vL`k1Bn``nYR%?`6kri^m5| zTMLWcWVXNUq#R1#LuwKYy)D<8938sQO38sp-Vi6O`NnpE#!2TeCjq*2I^u*Ftyu@F zi^{-{JD`rsRjRX_M#_TfeU)2a$aXprixbG)REdi#5=KaOA|eWJdpE^+XqGdv_QK;B(73k%Qv8s?-k=@jOKwRl99;6)Mkh#+5^0|suJ zPN`X$hOB3ppjBiy1s`g9+(Yb80LnN^Eem|Iw~6m7kLeGr!qPq6fnQ@|tJ5Q3qIn=p z^m7M$6(Dl`o!;cu)SeR1u)%ix&WekRKZBy8eseW+YXENgkrj7+gze!ReWCyD4Uf%4 zF>RNL$@U0i-~9*OR*-Wav=XS%yqHF*Tml{iceb{N{9#C9T#JrV<5vy_)w}1bw|wt8 z7(TGL9ndNeuFN5q=SP0cMXmPvEJLcA25; zn_Lu4TWQ=DXowta573IMV@LB5GPniL!VjK31161kfzNBE-mUdQ1pTh+<~&wDO1g1m zj4xG3&Q*#xcD0A}`L2GW@a(dHdr}7W9as&6^QIbuMRo}7e)&x zI}FDIkk9+NC4w;Is6SE*j?~+Gy?V8SJs7}2Jv3?b33V%Z;nK`UQeE`+cGApquvR#p zl{onJO)h@FFCh9^iXxv*`2+>9#D%srJ|(~{81!D;?2I2OX})IF*Crtjk@NTMdr7!V z@sl{EM%SJ@(KkPx7#ewor}!bx7dc|?LTF!&`Mf)Ch?*X3e@<16GSQkHJ*b}4*03R= zrY(?sw!{cz(I0VNRAyB?Noc^(;bEL^7f+);K}srU zD)^ZY9*TDJ!fo)vH)&JHE;3X{1y51LAn&M@1lIAk(XAe>=PL2TXZGnEi_q-n&!2&Q zGd~sIB&|8@DSS@se3djs%=dfMpJmLz@1Xe$=Aj#y7aQ4!l0e?9E!+H^Np$SkCtoaN zXEDZwc4uCA^>M0GFiq=|s4vc@4S|X@=gQVXCnaU;!xHqjhjWWik2I|eojQwul zdGgkHM~~$JlHjQM%W)Zorg*K>VpSI_Y6zUm+>?TNV&Y#c`OCU%%MqDO8mI~ieEWvmhW zJ}QGnz3OWe02S#N)ZM>e!{4;nO!LHtcUL|td%NZOz$DFDd9yUaEK(lEI191ONN;xfl>7yW=N>Sc!U9kigCb9_d7|mW zIf2q7aVk<v^LZEZhf#5E^L>iUmOj|mz=F&4~hQLh>RQgU1e}hfnUX9>Sr`Gm*4=X0o4joBY{g*76xguL){n> z#s*{ani$TFU;uxPgJmwc$@iAdFaGM+5#mH1W7RjJt|b)P0%*^8F#13lb&x&v*zFZk zcsj91RX&EopYmnx0u-kt+>0WrGSrbZEdZB8|!nE_o-WLQ%4k^#!nNsuJNKpv}B#B zWPZEU{w#4LzvCjK9^l3LK{ofoy_Mg3j3wtFCy-+YhDhT7{1%dCC(&N#gItz>__HuE zj;olC)doSBpav=$v%g>*xE{iL4Prf=yeRUAB3-omoD2=TrtOL4%&EXB{=5@;D413y zs*%PBg+jM39IKdCPh!R8&UW}ZuW9dlA1}BJi7FkZT)KNWAgAAE$$>@>fZx8ThrG^O zf%vo{I(sd*e)*<$9ijNn;BD9q58p0&cD1pwF#(r3=Mc9}0gnUYnCv^X6$peD3#Ey6 zMTyPMO7%`*>9T=n3r+_4Mrkyzi{Ts)0NnImG#}lB1EN%#asJb3x=EibG&dL*^n7Js zyeQt{tg#3d58dqb0jeYNE)}D^x3~AF0dln#uD_`MwET^F-4Z2y(mE{Ptm0Lxg^WVvrU!4 z1Rb$%StwOCDw@ue=saPJIUZx6QAS#;>;7r115`jyZsBbaxPKRKzUl#l`}y`lnpX<^ zw>zVGijK~z!cRW$!37WnQ7wo_)A=547!N3zS#m5^Jf_5YEG7>7;Hp#t^>SpdhGS_D zKQ(cS&#^Y31Ji$;@}*`WAozQ%kbgo?nZQ(qe@sRYp%@Fpi>N<`-ofr?vtUHcadH*E zacjUHlE7Qy?ow(43763$*^`jhohQqo&3IGt?A_E&jcl;?)JXfG(4(!rRqMTysz(deP}3#h%N!~ zE0xZl0VtZBVE1=%?Z)ueLNEL|-n8;N0W{t~&4rUmtW5)5dJQpa?*gBQ1~=%o2$6A# zVbgbSF@2yRW<0kC-L2?75q7dibCS67=}flCO($XES2mCU=#fl@?rYhaF0WGlNFT$wGXLtnff(Z(Zh@6znY(h9YeTN&*xeOiT z-1H`}scCACubioVdC~KCtuG^@9FQq}fa>zTqQ$)zMnDs9))n0Yp5^5-@;Q`=S&Vte z`vTBKkHD|_#PaCz)qsQFs7;(H&}8OJ3Z>giO)t9uy>@q2GspZ_M;#r<=4Z_PD?M8O zQlkQ4y;Y!m0m{=_VxzOL^&@f_=WUaWIWyZ-w-|=)XKCS1)7DUa1=Loaa7IW@@P(W% zIV_A3q-dp;;!upTSAsU*dv7c#00&}hiCYf_dN4pM>kAi`s$!#-=E+MYgDl2ZiSKHg@u=Pm=0qqB%&RP}cu*hZoCy5B zC_E99BXfhy0tQM=J0$f5)-;e960c#E)^=8s2;8Jg0iaqPzdWtM&}#+legs1c5(tJb zKa~A3j$2LqJi#_K1&x<%4fsgH-0*xP82y2M^F@UBOYk$lgH!H-Tc}gsc~$dN(sdey z^uGJQK&M)8U$s&EXl%bZ^355H(C7oGee~K8y=sb#LvO6;`YX1c;th~JlfJx+IZ2+( zJG;(~-j0HQPfR3x(sbKyTNlUhQl7%GNtMI>;>hYPRW$-3^nMK#@$_s$h-cm`hR)~b z-5>7jX%kRB?Vh%;D=nx41g!L9}l=Jk@=VM*Ixz@5!kxf}@!ZP|c=n0+n;c97FL!3t41W6CZLLdhgjwlW5k zOC^3|;kUfT9hpM_7RTrXq-9pR`OAe8@_DCr=u7)rdwP+tF)OA%Mp=2P?i6RI;w`1n zC6}F`s79Abl@EO8-LZ}SL8p9x@lF6UDLgs(l>x0i)jl#N=?t3K2!Eis@3*Y#H{?tF zw@GD!G0gN6e4(c~CEw*&_r4!-nnu%#&R|ayQLtKGdUW7F6F^Q}QSw=9EQ}ggP*lyT z*yRmbkK$7cr~tN~75K06pD2vX>aGVyl<)hUHYnZEVK;E7F8kryg=ljvuV+ZW9;9od zA+XH(Ktw!l2ly@}TxAWM#1&Hvn9Q#UuHx*~8bx0$12-&DBW7YwZaHBy8IS_fiP>Tgb*`cGgF%T=*}YQH=-Ir)~7lJZAhS<6i- zV3y-B*}F}CX*n>Q9kKbYCHW8F{C@0VCFQY8pEPKz?AnPd$sVi=n&~}aO4Kb=_(NOWT!bjSziS^_Q>hvdd=-J4o{5e!z?5`X#9WS&+2r*O2q`>xk8UMD76%=#W zWu?sH=`K)mVE^c7?#cV!W~9Wb$_4h4$?FT-G+is@@5oNKINzQEQ?)Ssh7^fZv8yv~yZ2Do%~rQM)_{ktF<`*6**L9R_78IS zNGrPF#VgbB#G#9fgz12i>iuU|p(tJVZifIA`j-L!ZrbiC-!1^`^u}OMet!KM*erSh zvCf?p6dvCEzOyOcsIWiOasd}uJ4Te(#{p9>h+8GPdNf1u){Wo;O4bMUXubb|`tZ-g znn^>Kb}o&2^!Gq9b?a!e5qtP1YRQ>6;@k<)uC$Yc!#_#x(!4?7Q*b|zZ~|3ly3Xl~ zdW9C}?nF6--=AT6=2q!pgyk>jTP^+cfue0kg5(r348(_OOcRT~6!F0}h39Nt+`D3W zVzc)Xn*BC9Q{YQS+|eAc58)#va~tGAM32H0)iP3OAL-!dlh)SazsA`)BuREAwc{`Z#Ee~E%loJ!57wNf}6?OmprWYNuwkIUU^e%brxM|;4dBI}^|LsB& z0SES?-=$q493Bs-(mtR|XH1M+;s!m!&!L9*fw5$34~yFdo-MKi1*FyhB!x)O)}#5J zJv$Y!@BPdw6Jn#YD&r9j?r7Jv2L+bG&a2_PL-rHJx-yutCOS|4SNoo$xqFltuQ`)9 zB`~-NZCbA+&v{yE2uaKY1Ia_tB%O8w6ab%!K#t^{^Tx>|lt>Dj znrI-lrmx~pikYA|xv}t?g^f0?xHU^(;!{tt7>?hDhlUsg)GTaT#j$yLOkl_oyEOs( zdhtM}sD7SumfG2H=xK`U}nC zatN}qbzElQY*n1^<{&;O=(YaTiazA`y>}l`j*=c-mXH3E9=kcywlkf~FGaOZ<|SW* zqwqmIjDgHV*}VFLv@jE}UwAl4eJl3*GSW+>uhE(VwKk+7Z|m($yuZXj$&~>L9J!B9 zGsw)P^G9J#pX|;iRULmJXO937xH8+(4s8FyIX?H+XXf2RDS|F}Xd&gBAaj5MmEWKS z>YPT+>{QR}KZDkzyV9aB{SF_&f%uuN=3AB}6`i)%$>lV9Rf3f`zovRC8rhd@7Hr%$tw+{1MOVf?@#@EOC>;rOV}w}dNR z?AlrUd{^ASqNtlEdz~fZF7oV*;sCR11Ql!5t+tG-uC5k9HVq>vd1uO32+5$txjAb1 zyNpkm70U=(t&Dt+HB+9Lh4K>OE$N7%Y&k&K8BSq%^Ia^Nl>A*OMd@YB&321W)$+&| zkcdC+c&q0NRm5(I&ki#=d)d8ZDFHVqNf!<5$kWn`tqWmW{*$Q0Cr9-0I*!^o78oLs zM&1RK;1Tw74(M*Pc#(0WEDp*mP^oZ2;ghX5FB7|w!CQI7t}_vCHsiyTzZ zPk0^GYrZI}k2_VKFF>q1VxoLd4yXK$f-;fcfi=M)Ip;xQ!**Rcge;hU@p{jF4RG9c zWfRc_Zc=yhwe#rfkfWu<2@WVbfuvwddB8asZfS^cSj>bc#-0OCWT6n|vl{o(d~2*w zO}^j)*y;r6FdH(Zb};Gow4yIWo@(WM8|uBB)opq)5BgZ%n!?pa0Vs@F&VdlSBvD^l z%gq^sDg-!>7`5DLP%Gn996m8CyTPzu;oCts#zWLQ5e@Z4 z1Ge--NH4aR)oIe`lqbeN-_ujFPSJ;t+h}01%den3FGC+(h9cF)Nr`1xH^*&^8v;uz zx!9&ysKFkusC0P8%YXXkxjr4R?>Lf`B)WE26|phmp_b7k#HMwt#?qLH3O3FC$qsbS z&fr#j?jJ+AgVMC-04(4EV-lYGN6Ng=7)FuUl1(|iMB@S17ssCj>bzmF#7-eJvxYR{ z-zokvTG9WvzRCJMs(XFyKBpSiP7a(c!U3Z}f{>pmL*H~fc=&sEANvv*`u_KQkx~!S z91Nd)2@YrB(Bf=n+D?N>;_3q{M05FX8Zr#qU+w+;VA#K)%L@V;p~pbuaak`hd68z= z6iWE#J|@AtHv_rfw}2++_@)F9JS-ZePYifF+^#{NL6_!;pMKj@v$Uh|UeMN#T-dwD zS-OEP)KUX)C%ePiG9vAfi9xfc6W&TVOP1t9eiG^IxJ|6*w?K&P102v`>P$cTstDGu z6^}pI)=BRHJrsvjUnXyKB35#|)a_kk*_TklMWB7YBQR+XeDtOinAvcS$!dG~&^e%o z)YLzbSMZvv0=W~XJxa#+i=IxuOG914oB)aUSxL?)&9>%t;VFYO{Zc-yeDVJ!hL1qw z44h%PV_*-xn{j@W{@j(eXp+PZ7yv54W3D+1M5QG<6;Q-J{f6T1XII5ymM>==m+^1? zx*xqC>2v^;&+q^0G>c%oVOyxyGQTEJ*oaW%ZQuXMTVMy@My)ki;n#ZU^|DJoIt|{i z`-rb#IA9&Bt$aBvw-xBP>%DksSnNJ5nbz&9*psy)u?C)qT`wh$d-(knWwb)VBh-=0 zV?)vpl>Lf~`yhHzqzSlS(JUblNXm}s(Bq2LWtqMP6(ZtOuqjT1 zx<@EF5|nURzz_3w6jxTB;VAjsq2+y}0CgW}<3|k>T?1(|l9y8r+KZQTxM7y(G%^$v zT`4w9?k<>^ICrXs^2Xf+?ELe`-GtgEN6U`zeM^BYK+yeTcOsxA=kBJ{_7`%apiFMk zS-@`8{3#@(_`h|K?&Hj)CXVC|`xwq*2i8FJwl2#-QGjyuVXx;bj+pi-fDabH^lXMhQYbz>+iNq~aeI6xuwsoaZ?l#GDS`?R%X z&CJqyFZes5laa9m(R*VXn<8MDRs!&uA}6fk-oom(qT^{tl}2 zT9aWP-horT33xKVqRO*@l@2SxY_IpvpZwuZzXouNGhhtzm$5M+5%d8PI;5W)Byn;G z2F2y>&Z1asdCT^!Z`fTD>PKDIzIh6OjrJ-LK%4j)heK*|r=0tbO|YMH@)_*+@U|2Y~o} z1EtdK!?GUKw%7lwFFoUHr1y(;Bbene`0igfQ&2VAHYgQv!2%rrwhcy*U@?*Z2xUA$%PuQTianN*Wn{G1n z(jfF;|MrS%@HK-xwB=t>05+=;md(5RX={7Pe^T`l$~cqg+cBtJ1F)5_bE zmP`og14?i*-#x6r!j-oq^#qn-Y+_YPu;9+S_5}Mudb{Bsi&+I~&im3|?(tK{#G)rC z+UFT_7)^!p2Ll?FWt;G)Wlnf+GYdYQm_Z`DE)<;Iqj`*x&>X2Sp`7Xd6kZE3zGASE zpR_uJebNy>Px-ftJ@sY@brEr%;u(_yo5jJ=&Q^0ym<_Okyd!h3qlexG4uWenA6%<2 zOt~_{`?DNSwo4F=IY1c#{-04+)#ko(`7nw|9f>M|ek$YuPwc@(bq!32(Z}U}6WAZ{ zlGy;gWltlcaN0Hxc_8FaJ29bE57In%fOF{m1!&1NLjSWMY4rEwbM-D6Zn57C6q313 z?k#8w)q>UC74-`nCS1}3b?7sjhS-wev*HcczgogqX(t~63eYd1w(FRyAz#FZ z6W~00SKNJ1zW!lTBQ_5{H8V4l4s&Y~VwEk(qsyO>2EW3v_t(#lR17xwA6jvc{oIr6 z1mzTAC!am&&Ok!14}@>i9ql?JAQt-dd1;1`g0^^5?b+)&_4eQ1z&v#U+&m%6!^yx{JVJ}MU_0$c1?ELWfJQNI9lbZmMA*Jg8V1X^fR7`d;Hbm zkD>CypnPPOua|Y!d*P$(am*~giY7JcFyM-h0|lyCk4U~&;=9cEJ~5W!t^+Bg5AEO} zu7RA#hczWdFo!10aW=}l=y7sPMO z@j+qQejO+UCcuQ+Q_icEOpMW`U~S3{`+BgO+sA%>on~y zG8^g7KEM+FUpJ3j9%1hF{2`|TnleeS8A-S#R}5Fm792Hz*a^8%YI|$^s`z zOL(J{nD`+Y_6oT1ybY;4>daZz43=4{(;>5ZAuQ6M!X8#~i2!^>Th8(V2(|^r)6Kr# z?hSL7_9Bn-+4jsqZ!_tpDrs}cS0`_}{pZ)0L6Ikryv-v~Db2L*f2NpDoQw{Pe5H(d zK=>yN&=%A+*WqI|4?~Gd_y}o)R_pO`-ov>yN)z-gjMNmeVy`xIgUyq@-=v29LhWy(k^rJ61Zu(I+xMCX)z+#d)}cHw`3zmrSu%fDWfekBq#`z(CxN3 zkW-Y~In36Q^n*(O_EjMD;>5&yu-h6DlZlB;+3zkyGBD1gm1I$e*5Vv>cSYDGFsP z$0~{;W@ki^`>Jhu`{tzPH>sDW9$fF?<=CW5vUBtXyd0@f)PicjP|23%^Y=rQC~gSi zWsJz*a8y8|pxV01L}SVYVf&n7lvl(I5Kq5dMI-8MM$Nu6V4w&ks-G$U)Z_pYgTwem z=*XUTOoYE+ zFatzl3-FM6CGeDO2!0_-2ICx`e+wIiao$Z!4O_Qg3nz=g`_*1+ZD*ugB{)|P6nB?B zO3y{*T${TZ8J~?)5=2@kb8KUk zXs+(9m!gaB?b;hzazMj6t9sFpL&Fzi9Fx@ikV^2NQNZf)62I*4P?F3FYN~houO=ndW30Xb^r@iK21Vq-`uw{Au2@@N{c?X9#P&k-V+4 z-d@RLr!MH(mH!q;abSO9j)So(8`x4sx6v+>K<&(u+~}+?T8Zc8;sl-Lu=Qn?l@Yi+ z>drm{jX)WIZLE zynU?r$bXrS0Xx_yW;i$wfS z^QHg`o3Vf0Z={~Dp5J+itx>+@qmZK$>!?^$2z-B0>Kv5Mux@eYC9r3000qDU90>n# zKauJ)v!8ey?hm+3YQh^G>qYJrJ~Byf4r{bBG^h`8+N$AGnA%)U={lcLl$Ks&1S+)q zoqS9eSQOhELxT~vJ*k3R6sdzMnI^~B5bt*@0ZnBe!rKEjl0Q;C6EaEyU=l29f?9`* zApl_pjZ+P*LX!NV>E70!+C|;-1GW&kLub$p7@83NF`=ppV$?j$n~{e4NP0_AY1%R? zXMP4&)1UVAH(=ne8oS2DKniac_OwO~8-jjDR_#hdTaJa(KyG1SLSp7cAveM83S9JC z1FZBj?wcw7EAbnbx-1(Nnh*6hPIfdvNHz!27A1c!;NY@0OlOUHWXIPG;IsGX#}0k7mNqDK|%>l8SG?>8f&pS`@Gv@$w$dqqTUFUHw{$U zZwN%ps&o?ndKTE2S9D6^*U{h%Y2O&p zqQ^n045USOsmMC&1f-=+Bx)!Ku%>M}oM!_-T>goW6t4wqYgzP;zVQ$Y5as~zKmXBhe)Yw$>B z$p?t7^tTm)$zdoSZja^N!ga5uTO0|>nY#KVcQAh;ll}GgYV+OBTz<>p?7jUJo-Be{ zTFldBVZWdBlfFp8nA*OTp%Bt?6N z$N-)noNvJ;f!D{pbPUvr`*vg0b%MiYys}fioRh$!nj?!gzw-&1GQ%~29-KDw-PfGG~NaVE*!eW1hrJ1{R*-qbcftJVGsn0am2402Uu~I zEvoI7^xiX#klzk-8ho=LF8UZ>;{eOatGVr%yQbs^yC}FExXVgAtX9I^qD_p8Wd83sU|J5v6y8u1#N$l2B%gylNZkso{vAu|s6SsUy`+wxP4px_I1^&>k!2>SZjXUZ& zAX*)A{N=F%)}*0Ft}YH3g0dk)I0wLxw?=n;(K^_#EDJM|9+BRE6CyxA7q$PCl@CdUmZNvn)-E)CWG?K?1tXgv>OSDyTxzHCDQGy zXs}86w?qJQh`5h-{@mITiM$W)*DBbE71JCrsW_wKG)V6lSz|(7HsJio98#E zO%tZ;bgo3o-;%&2QQo z(*R(sfw;Z%@(=8d^IMRm9UR0JAixwEGJQ#}$rshqbv{MS{2c70wx?M&wCX?JCW|ss zf;vl8q+B`|lzfM7DlIiNoh;nar2BUbGg_?ILEvu4?q{|r)m?_B?2qP@#=<|G2+~kL zNQ7DIt;3*;KV+dj%^D*2^-=K*h?nfwzo`%8Z*}=}>2C~T$n!~Skm9w5=&bzKbu>cMvUC0#DGb z>lUtSGNR|51j~hl_^|)^!8*(ZUSODl#pec}#Oknw_>|DQ8s=w+csiGj<_6*qS-|B7 zl?B$ug-F5x87EZ2{ED#{Mu4!Y>TtLefv)W;!$GggZ_&R->oVE<@ZM7@;4-?+1Yg*w z>p(o+gTo(zvAC%^WBvn*Vfz*2IhSGZsXM#SiaUvkx+e9;F-D|lc9ta{xJMpOHa@ws z8*@ylQyw?$pF%#ASOUzGcXebHz6lv8uTnysA;eZ9lk^wN`Fc?7B#h#gSWkvCWtzUG zBSY+*CrB=JeaBSn}Zx z8*mtZT`xPc%bLKwzQW2uUo%DXG@#^Eo)JK`766*RD*iKwhE22!{4qhrlZaJkLJq{L zHNk>|>xJ=>p2@6g4RkOgh1s$pwgr|_ETH$Nrsu6*I9!G-KQBGE>ukLq9~oJ`awv*; z60ENya(LlS*ifl}{_z_Yq{&0G9KDcTqXbIl&zXLyRuf@xJ$h#QEP~b$Nk}J_j(jQs zp8;uzWx6{q!V2uJXDWc%}du%>3!peL|J3y#O4DuXp+;!D=5(KnM zNTh^^-EH=4U!Z5__9s~z(%nD!T&hc`=Lw87u21{7oNGn%!3rBz%XqiqLu zd2N{74u6VkR!TKJ?iHsQD)-lDGA7D=Zzi|!O2J$`_MyZ7NCanaBAwne1ae&V1c9$7 z0bg%dELLw?Ab4}0gKjDA&s65}V-wn+2 z3IAzI_tj$PO|i*#kI@|~F-ypPy&>j~%u5gK2e!K2@2=b5gDCsWJC3_{Wz)WY7ZP;a z(J4E5uOpzPX~ty8+eNhCF(4wvRtMY#*z#qK?dRS#LO=G0q4uChh!dqf?rY=kAvdgl z+ewe6p5P^5D9Qu?z1o;dlD38EaKOhB=x%#IZ?K+{hg=#x0V(AVEN3aYS~r_Jxz{2X-F%s?Wyq6 zL)fqi{lx$LTY6lHOwxUz7o!kI2|>Wu_pNNy^e*vTz0zKeEB}=BdiriDqL4D3x*zQP zr@3aaT5((Ma7FV%K+IC&j^y9(*RN_2d{Zs8=6fcBp>n()T8<5IGCT^ggecIzlUhqE+-2~Kc{Fx?CYhXv zX&GzIhZCOaFwru!pWGkMg#hIaaaOZX-uCJ1U zevvGAVl3pX=tfQgJi$yyPyPYcvi}<3QhzRPzE8ucIe^5xz9NKBRxSm|NL<~b<|6;> zbLw*!DOK0kPs5|5-F+lHM<7yb(CnjYD+Qs_>sMRCz@vC%g1vo?xr@f?quT#k|LO6) zjZ#$!9572Yk6VdwEj+y7D&*Js>M9%LA$`Oh07f#Rqobn+o-L;{kC2k_{gT{9bu&8I za0?=pGu@q+<#9dc-~BmdUWuhSrm5n8(_W<)k+e)kXvO($R-Hc3v`TbHTY8swhrmC~ zaqvMU{n1>rZv$!Q)}%z+we}z15aiE$o~62$eg$N4XA!rI>`Dw+t&?h+?p~U$o&$qO z1}osADg-}&Mt+Q#s7%6dMrw ztr#KIbI13GLhz;{g52^5+%lsAmb`!CDlR>aKDcW4eggwI&;yi# z=U!N$-0LH>!~NlBq3LIn57~34m-(1scI9`%RU~VqG|F{8pu3~J#p)x{TFu3zvMfsu zCc@#sKaODc>D(Q=pYgQgq}2=!clq*ke;*>U^rRfP71=oOoy4%F=aO<@6OLKGy&>&| z0o6oxirbTAr>=VAgCj*a__N33cjc^&;6|^OEU1av_#$bG=X4 zzrl@#fsRh9bY2KmAF~=y=Wd}-gBz-23i#jnlx-ACu9x4PkzT$P+iE)Mz?nK|W?jTn z>K(Ab$ip`YSq{Q@Y=-g1ps?P?#Cz$(o59y#blNt&sDVLp&+RiX@NR**CJ~9iqr5Zf z4S-#{I{|6|78Uu)3rB!?EOOJ*^G~S&Puu43-(NN+hJ^gaBVXm>(R9ALYF8{FmQTL< z#yNpeIHEAJd5zA*k`P07k0N<~_3qF<@VMiq7{RG(4t<&5jWroHT+qo6exWe%qOUf# z3@+-Jc}Dj^>Yx~oK0ix5sjN8*f!dcqk5Sg7m+X?f(tTy;wnwvAZK(|dYy}5wM#C6z zKGPg}DtPt5t=%%S#%Rtx1R#q4WZ(tj6yej~>o?70kWDB1YJy!9XxDEX%46bXa$O+1 z4$K>0od4f66h%AWqb%^?Kr|@315;csN?_~0_+)E9*7)U3s!hl)w?*%Re9BEALy0QI zp!1;t%8%~&4$g-9VAbTDif{I!SSv!-yEU$g+vYhcYGRt0%ooA1bJAFiI|9@E4CQb$ z%M~5dj>uA{$kyt}#Y=f%urc;08d}B`WwBZjQ%nMMnmymR{Fa}56=y2n)nHT8sDY4H zFF7~~gJ6WHa!?;j;-o@d_R$8pZCL^NOp^!rcQ&N?{0UTgQk5Toq^(zeyrw1b^8l+a zjQK`bUo?tXL>2D4Cns#5p3%~iy2VbR+M8@S0Dw*Vj&HNLbVmJShKVGo$o6srjfp33 zL7>F+ex}Q>Jrd#Hj~dx!T2HcWM*ZVi?B?oJ!T1Pz1en+KqP@I9u(5NoB1o`G0IxvL zd-K}y?Neu35_ zuZFm4-z{YD|h>h<>7EXVtXl&>txb2vc`R%w>JMax0lk zk*rp}%>D8As_3>@IR{h7_%g47`4=RbRmlV4i9V<|rCo072ld4tNmGh=IF^mB!Bdfe zxAYooGWAGo`}<^}8A!=9an zh@4!`Zpc^#cNC+QitB2oZU}$eH>{~6*weWrouePxt_QfMg7&1a_I4eXPK0WS%>0;B zXRxjHY?>q@M*L<XI)X|ia~JZvvg zY7^OP)mu7TsG74tFt5s8aQ%fBM^s^pD#R8mZ_KPImMm^>~Ve>Ky4FYar5aXo07!tJoU?FJZKJBoX_!O#TV?q)FN2hVqJW|32Hpx#EBScQWL z7_NIy-u@&2E{$JHMFQV6U$D#Tqo=X%IC5Rk*R@K1Ux1N-W1*l{LISDAWv@ki@cYeg zLiJ}Bt(HpD&V)U6%Oo6U_<#?*MZGCxMo)N(eUDay*SJly=3UgXU%MGbPU)u5N=5j# zrmVO8_0=K8JIwYv5e@6yT`Ouyep?q%EXW&zBx|x8LToAm`z>)BG#`hQF}7ds0rRt{ z-wCgSqIiZMrAX}`VQ=GR7TQ`6QU2>gpy{%x(H$DwS#3%7HA0al>_8>MT|3J*81A;=z8?V~&MsK=xu7;2RFP^(38JTcptW>=( z7(NmKq=9d*i`K5g*@OYvncJc5B>!!vT{ z*|O1q1{@|%h?L3m*!4_hZA;C2d${B670Ixt>=Y}_st`ArLZ54vjGSh7O5p3~RB~6% z!{vmLEryx}9y_K_Xz29|YeT+Y72NlAkL>c%(EQ>hQm8^^MBIxpA8k?_@%3QW>H`yz zC6>)9Z1U8LP`r=4042Jdc zr2w}iiEKUmGS>p8qd?>pup_PQHS8xoo@sC|3#RWUGc~y`Q+jA8ZmCcu#eDga$9=cQ zdk_aTS?__ZcDd$>1v-^X7$7j!+=xrDag7i^teDiM0udcYRYZTpl+i?-zSe4@u~%bg zs;jSPplzyTtmO~T)4u)q@#B0IkgPed_%y~J&d|c)PuZ^$rD`6*ZX56M+hW>wNES`a zorX~%8sO$^7TtNA!m^PvX-V5+oW1ZD2;k~(NZV~%SP$Izi9qlhLA1}?`GYO7rWBYI zl7EYUgm4>Xli}?#vh&oMAgAz~(Xg&X4vgR}*YkC2ohCyfPo z)M6rY<&UgUk)X1PNyJ%-iEhC>JrHHA@b2^L16pq12-jWd@c6!vfcr-lQ;$UnFdPxF z@#T~h=ymUa*+Wlv{?pw^SyfJtBoZb0a_e!PxH@4?ANApnm{#a`7{I%!!2YHMMPcaYhOuJWz@*a#|BXjd^+F}IX z=pk?;AqSqlybu>aCGPlohY&wDhsj9BgZ+Nr%rtsdp?q?tE?xO*9nn;Ih~!SmJ|*h* zfJbvD?V≻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 QfPg=pTLv1HYIfoO0ZE?v Date: Fri, 29 Nov 2024 13:18:28 +0800 Subject: [PATCH 6/7] feat (gui): chore --- pdf2zh/gui.py | 368 +++++++++++++++++++++++++++++++++-- pdf2zh/static/css/gui.css | 330 ------------------------------- pdf2zh/static/img/banner.png | Bin 120816 -> 0 bytes 3 files changed, 352 insertions(+), 346 deletions(-) delete mode 100644 pdf2zh/static/css/gui.css delete mode 100644 pdf2zh/static/img/banner.png diff --git a/pdf2zh/gui.py b/pdf2zh/gui.py index fda49c8b..c9da8c03 100644 --- a/pdf2zh/gui.py +++ b/pdf2zh/gui.py @@ -215,14 +215,348 @@ def __bool__(self) -> bool: return bool(self.value) -env_services = EnvSync("PDF2ZH_GUI_SERVICE") -env_lo = EnvSync("PDF2ZH_GUI_LO") -env_deeplx_auth_key = EnvSync("DEEPLX_AUTH_KEY") -env_deeplx_server_url = EnvSync("DEEPLX_SERVER_URL") +env_service = EnvSync("PDF2ZH_GUI_SERVICE").value +env_lo = EnvSync("PDF2ZH_GUI_LO").value +env_deeplx_auth_key = EnvSync("DEEPLX_AUTH_KEY").value +env_deeplx_server_url = ( + EnvSync("DEEPLX_SERVER_URL").value + if EnvSync("DEEPLX_SERVER_URL").value + else "https://api.deeplx.org" +) -with open("./static/css/gui.css", "r") as f: - css_gui = f.read() +css_gui = """ + body { + -webkit-user-select: none; + /* Safari */ + -ms-user-select: none; + /* IE 10 and IE 11 */ + user-select: none; + /* Standard syntax */ + } + + gradio-app { + background: + radial-gradient(farthest-side at -33.33% 50%, #0000 52%, #fcfcfc 54% 57%, #0000 59%) 0 calc(224px/2), + radial-gradient(farthest-side at 50% 133.33%, #0000 52%, #fcfcfc 54% 57%, #0000 59%) calc(224px/2) 0, + radial-gradient(farthest-side at 133.33% 50%, #0000 52%, #fcfcfc 54% 57%, #0000 59%), + radial-gradient(farthest-side at 50% -33.33%, #0000 52%, #fcfcfc 54% 57%, #0000 59%), + #ffffff !important; + background-size: calc(224px/4.667) 224px, 224px calc(224px/4.667) !important; + + } + + # .secondary-text { + color: #999 !important; + } + + footer { + visibility: hidden + } + + .env-warning { + color: #dd5500 !important; + } + + .env-success { + color: #559900 !important; + } + + .logo { + border: transparent; + filter: saturate(0%); + background-color: transparent !important; + max-width: 4vh; + margin-bottom: -1.2em; + } + + .logo label { + display: none; + } + + .logo .top-panel { + display: none; + } + + .title { + text-align: center; + } + + .title h2 { + color: #999999 !important; + } + + .question { + text-align: center; + } + + .question h2 { + color: #165DFF !important; + } + + .info-text { + text-align: center; + margin-top: -5px; + } + + .info-text p { + color: #aaaaaa !important; + } + + @keyframes pulse-background { + 0% { + background-color: #FFFFFF; + } + + 25% { + background-color: #FFFFFF; + } + + 50% { + background-color: #E8F3FF; + } + + 75% { + background-color: #FFFFFF; + } + + 100% { + background-color: #FFFFFF; + } + } + + /* Add dashed border to input-file class */ + .input-file { + border: 1.2px dashed #165DFF !important; + border-radius: 6px !important; + # background-color: #ffffff !important; + animation: pulse-background 2s ease-in-out; + transition: background-color 0.4s ease-out; + width: 80vw; + height: 50vh; + margin: 0 auto; + } + + .input-file:hover { + border: 1.2px dashed #165DFF !important; + border-radius: 6px !important; + color: #165DFF !important; + background-color: #E8F3FF !important; + transition: background-color 0.2s ease-in; + box-shadow: 4px 4px 20px rgba(22, 93, 255, 0.1); + } + + .input-file label { + color: #165DFF !important; + border: 1.2px dashed #165DFF !important; + border-left: none !important; + border-top: none !important; + } + + .input-file .top-panel { + color: #165DFF !important; + border: 1.2px dashed #165DFF !important; + border-right: none !important; + border-top: none !important; + } + + .input-file .filename { + color: #165DFF !important; + background-color: #FFFFFF !important; + } + + .input-file .download { + color: #165DFF !important; + background-color: #FFFFFF !important; + } + + .input-file .wrap { + color: #165DFF !important; + } + + .input-file .or { + color: #165DFF !important; + } + + .progress-bar-wrap { + border-radius: 8px !important; + } + + .progress-bar { + border-radius: 8px !important; + } + + .options-row { + align-items: center; + display: flex; + padding: 0 20vw 0 20vw !important; + } + + .options-row .wrap { + align-items: center; + justify-content: center; + flex-wrap: wrap; + gap: 1rem; + } + + .options-row .form label { + color: #999; + } + + .options-row .form { + border: none !important; + align-items: center !important; + } + + .options-row [data-testid="block-info"] { + display: none !important; + } + + .logo-row { + align-items: center; + } + + .title-row { + align-items: center; + } + + .details-row { + align-items: center; + } + + .hide-frame { + border: none !important; + } + + .hide-frame .top-panel { + display: none !important; + } + + .hide-frame label { + display: none !important; + } + + .options-icon { + height: 2em; + width: 2em; + } + + .preview-block .top-panel { + display: none !important; + } + + .preview-block { + # width: 80vw !important; + margin: 0 auto !important; + justify-content: center !important; + align-items: center !important; + background-color: #eeeeee !important; + } + + .preview-block .image-frame { + width: 100% !important; + # height: auto !important; + object-fit: cover !important; + } + + .preview-block .image-frame img { + width: var(--size-full); + object-fit: cover !important; + } + + .options-modal { + position: absolute !important; + # top: 20vh !important; + left: 50vw !important; + transform: translate(-25vw, -0vh) !important; + z-index: 1000 !important; + background: white !important; + padding: 2rem !important; + border-radius: 8px !important; + box-shadow: 4px 4px 10px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.02) !important; + width: 400px !important; + } + + .options-modal .gr-group { + background: white !important; + } + + .options-modal .styler { + background: white !important; + } + + .options-modal h3 { + margin-top: 0 !important; + margin-bottom: 1.5rem !important; + color: #333 !important; + } + + .options-modal .form { + margin-bottom: 1.5rem !important; + } + + .options-modal .row { + justify-content: flex-end !important; + gap: 1rem !important; + } + + .options-modal div button .secondary { + background-color: white !important; + } + + .options-modal button { + min-width: 80px !important; + } + + .options-btn { + line-height: var(--line-md); + background-color: #FFFFFF; + border: 1.2px solid var(--checkbox-label-border-color) !important; + border-radius: 6px !important; + # color: var(--checkbox-label-border-color) !important; + color: #999; + font-weight: 500; + font-size: var(--text-md); + padding: 0.8em 1em 0.8em 1em !important; + margin: 0.5em !important; + transition: background-color 0.2s ease-in; + } + + .options-btn:hover { + background-color: #fafafa; + # border: 1.2px solid #fcfcfc !important; + } + + .form { + background-color: rgba(0, 0, 0, 0) !important; + } + + .first-page-checkbox { + border: 1.2px solid var(--checkbox-label-border-color) !important; + border-radius: 6px !important; + font-weight: 500; + padding: 0.8em 1em 0.8em 1em !important; + background-color: #ffffff; + !important; + margin: 0.5em !important; + align-items: center !important; + font-size: var(--text-md); + # color: var(--checkbox-label-border-color) !important; + color: #999; + transition: background-color 0.2s ease-in; + } + + .first-page-checkbox label { + align-items: center !important; + } + + .first-page-checkbox:hover { + border: 1.2px solid var(--checkbox-label-border-color) !important; + color: #165DFF !important; + background-color: #fafafa; + !important; + } +""" # Global setup with gr.Blocks( title="PDFMathTranslate - PDF Translation with preserved formats", @@ -264,7 +598,7 @@ def __bool__(self) -> bool: elem_classes=["first-page-checkbox", "secondary-text"], ) more_options = gr.Button( - "More options", + "Configure Service", variant="secondary", elem_classes=["options-btn"], ) @@ -295,23 +629,23 @@ def cancel_options(): gui_service = gr.Dropdown( label="Translation Service", choices=list(service_map.keys()), - value=env_services.value, + value=env_service, interactive=True, ) api_key_input = gr.Textbox( - label="DeepLX Auth Key (required)", - value=env_deeplx_auth_key.value, + label="Auth Key (required)", + value=env_deeplx_auth_key, interactive=True, ) api_url_input = gr.Textbox( - label="DeepLX ServerURL (optional)", - value=env_deeplx_server_url.value, + label="Server URL (optional)", + value=env_deeplx_server_url, interactive=True, ) gui_lo = gr.Dropdown( label="Target Language", choices=["Chinese", "English"], - value=env_lo.value, + value=env_lo, interactive=True, ) with gr.Row(): @@ -325,7 +659,7 @@ def cancel_options(): save_btn.click( save_options, - inputs=[api_key_input, api_url_input, model_input], + inputs=[api_key_input, api_url_input], outputs=[options_modal], ) @@ -340,7 +674,9 @@ def on_file_upload_immediate(file): def on_file_upload_translate(file, first_page_only): option_first_page = "First" if first_page_only else "All" - option_service = service_map[gui_service] if gui_service else "Google" + option_service = ( + service_map[gui_service.value] if gui_service.value else "Google" + ) if file: (output, output_dual, preview) = translate( file.name, option_service, "", "Chinese", option_first_page, "" @@ -422,7 +758,7 @@ def on_refresh_click(): ) -def setup_gui(): +def setup_gui(share=False): try: demo.launch(server_name="0.0.0.0", debug=True, inbrowser=True, share=False) except Exception: diff --git a/pdf2zh/static/css/gui.css b/pdf2zh/static/css/gui.css deleted file mode 100644 index ed8e91c3..00000000 --- a/pdf2zh/static/css/gui.css +++ /dev/null @@ -1,330 +0,0 @@ -body { - -webkit-user-select: none; - /* Safari */ - -ms-user-select: none; - /* IE 10 and IE 11 */ - user-select: none; - /* Standard syntax */ -} - -gradio-app { - background: - radial-gradient(farthest-side at -33.33% 50%, #0000 52%, #fcfcfc 54% 57%, #0000 59%) 0 calc(224px/2), - radial-gradient(farthest-side at 50% 133.33%, #0000 52%, #fcfcfc 54% 57%, #0000 59%) calc(224px/2) 0, - radial-gradient(farthest-side at 133.33% 50%, #0000 52%, #fcfcfc 54% 57%, #0000 59%), - radial-gradient(farthest-side at 50% -33.33%, #0000 52%, #fcfcfc 54% 57%, #0000 59%), - #ffffff !important; - background-size: calc(224px/4.667) 224px, 224px calc(224px/4.667) !important; - -} - -# .secondary-text { - color: #999 !important; -} - -footer { - visibility: hidden -} - -.env-warning { - color: #dd5500 !important; -} - -.env-success { - color: #559900 !important; -} - -.logo { - border: transparent; - filter: saturate(0%); - background-color: transparent !important; - max-width: 4vh; - margin-bottom: -1.2em; -} - -.logo label { - display: none; -} - -.logo .top-panel { - display: none; -} - -.title { - text-align: center; -} - -.title h2 { - color: #999999 !important; -} - -.question { - text-align: center; -} - -.question h2 { - color: #165DFF !important; -} - -.info-text { - text-align: center; - margin-top: -5px; -} - -.info-text p { - color: #aaaaaa !important; -} - -@keyframes pulse-background { - 0% { - background-color: #FFFFFF; - } - - 25% { - background-color: #FFFFFF; - } - - 50% { - background-color: #E8F3FF; - } - - 75% { - background-color: #FFFFFF; - } - - 100% { - background-color: #FFFFFF; - } -} - -/* Add dashed border to input-file class */ -.input-file { - border: 1.2px dashed #165DFF !important; - border-radius: 6px !important; - # background-color: #ffffff !important; - animation: pulse-background 2s ease-in-out; - transition: background-color 0.4s ease-out; - width: 80vw; - height: 50vh; - margin: 0 auto; -} - -.input-file:hover { - border: 1.2px dashed #165DFF !important; - border-radius: 6px !important; - color: #165DFF !important; - background-color: #E8F3FF !important; - transition: background-color 0.2s ease-in; - box-shadow: 4px 4px 20px rgba(22, 93, 255, 0.1); -} - -.input-file label { - color: #165DFF !important; - border: 1.2px dashed #165DFF !important; - border-left: none !important; - border-top: none !important; -} - -.input-file .top-panel { - color: #165DFF !important; - border: 1.2px dashed #165DFF !important; - border-right: none !important; - border-top: none !important; -} - -.input-file .filename { - color: #165DFF !important; - background-color: #FFFFFF !important; -} - -.input-file .download { - color: #165DFF !important; - background-color: #FFFFFF !important; -} - -.input-file .wrap { - color: #165DFF !important; -} - -.input-file .or { - color: #165DFF !important; -} - -.progress-bar-wrap { - border-radius: 8px !important; -} - -.progress-bar { - border-radius: 8px !important; -} - -.options-row { - align-items: center; - display: flex; - padding: 0 20vw 0 20vw !important; -} - -.options-row .wrap { - align-items: center; - justify-content: center; - flex-wrap: wrap; - gap: 1rem; -} - -.options-row .form label { - color: #999; -} - -.options-row .form { - border: none !important; - align-items: center !important; -} - -.options-row [data-testid="block-info"] { - display: none !important; -} - -.logo-row { - align-items: center; -} - -.title-row { - align-items: center; -} - -.details-row { - align-items: center; -} - -.hide-frame { - border: none !important; -} - -.hide-frame .top-panel { - display: none !important; -} - -.hide-frame label { - display: none !important; -} - -.options-icon { - height: 2em; - width: 2em; -} - -.preview-block .top-panel { - display: none !important; -} - -.preview-block { - # width: 80vw !important; - margin: 0 auto !important; - justify-content: center !important; - align-items: center !important; - background-color: #eeeeee !important; -} - -.preview-block .image-frame { - width: 100% !important; - # height: auto !important; - object-fit: cover !important; -} - -.preview-block .image-frame img { - width: var(--size-full); - object-fit: cover !important; -} - -.options-modal { - position: absolute !important; - # top: 20vh !important; - left: 50vw !important; - transform: translate(-25vw, -0vh) !important; - z-index: 1000 !important; - background: white !important; - padding: 2rem !important; - border-radius: 8px !important; - box-shadow: 4px 4px 10px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.02) !important; - width: 400px !important; -} - -.options-modal .gr-group { - background: white !important; -} - -.options-modal .styler { - background: white !important; -} - -.options-modal h3 { - margin-top: 0 !important; - margin-bottom: 1.5rem !important; - color: #333 !important; -} - -.options-modal .form { - margin-bottom: 1.5rem !important; -} - -.options-modal .row { - justify-content: flex-end !important; - gap: 1rem !important; -} - -.options-modal div button .secondary { - background-color: white !important; -} - -.options-modal button { - min-width: 80px !important; -} - -.options-btn { - line-height: var(--line-md); - background-color: #FFFFFF; - border: 1.2px solid var(--checkbox-label-border-color) !important; - border-radius: 6px !important; - # color: var(--checkbox-label-border-color) !important; - color: #999; - font-weight: 500; - font-size: var(--text-md); - padding: 0.8em 1em 0.8em 1em !important; - margin: 0.5em !important; - transition: background-color 0.2s ease-in; -} - -.options-btn:hover { - background-color: #fafafa; - # border: 1.2px solid #fcfcfc !important; -} - -.form { - background-color: rgba(0, 0, 0, 0) !important; -} - -.first-page-checkbox { - border: 1.2px solid var(--checkbox-label-border-color) !important; - border-radius: 6px !important; - font-weight: 500; - padding: 0.8em 1em 0.8em 1em !important; - background-color: #ffffff; - !important; - margin: 0.5em !important; - align-items: center !important; - font-size: var(--text-md); - # color: var(--checkbox-label-border-color) !important; - color: #999; - transition: background-color 0.2s ease-in; -} - -.first-page-checkbox label { - align-items: center !important; -} - -.first-page-checkbox:hover { - border: 1.2px solid var(--checkbox-label-border-color) !important; - color: #165DFF !important; - background-color: #fafafa; - !important; -} \ No newline at end of file diff --git a/pdf2zh/static/img/banner.png b/pdf2zh/static/img/banner.png deleted file mode 100644 index c04b84729c90eaf32fcc99400da10e147ea84cf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120816 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≻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 QfPg=pTLv1HYIfoO0ZE?v Date: Thu, 19 Dec 2024 13:12:10 +0800 Subject: [PATCH 7/7] fix (gui): fix threads empty value and add annotations --- pdf2zh/gui.py | 147 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 116 insertions(+), 31 deletions(-) diff --git a/pdf2zh/gui.py b/pdf2zh/gui.py index 32b2d16a..dbf0aa5b 100644 --- a/pdf2zh/gui.py +++ b/pdf2zh/gui.py @@ -32,6 +32,7 @@ ZhipuTranslator, ) +# The following variables associate strings with translators service_map: dict[str, BaseTranslator] = { "Google": GoogleTranslator, "Bing": BingTranslator, @@ -49,6 +50,8 @@ "Dify": DifyTranslator, "AnythingLLM": AnythingLLMTranslator, } + +# The following variables associate strings with specific languages lang_map = { "Simplified Chinese": "zh", "Traditional Chinese": "zh-TW", @@ -61,6 +64,8 @@ "Spanish": "es", "Italian": "it", } + +# The following variable associate strings with page ranges page_map = { "All": None, "First": [0], @@ -68,7 +73,10 @@ "Others": None, } +# Check if this is a public demo, which has resource limits flag_demo = False + +# Limit resources if os.getenv("PDF2ZH_DEMO"): flag_demo = True service_map = { @@ -81,8 +89,18 @@ client_key = os.getenv("PDF2ZH_CLIENT_KEY") server_key = os.getenv("PDF2ZH_SERVER_KEY") +# Check if everything unconfigured +if os.getenv("PDF2ZH_INIT") is not False: + service_map = { + "Google": GoogleTranslator, + } + +# Public demo control def verify_recaptcha(response): + """ + This function verifies the reCAPTCHA response. + """ recaptcha_url = "https://www.google.com/recaptcha/api/siteverify" print("reCAPTCHA", server_key, response) data = {"secret": server_key, "response": response} @@ -91,7 +109,18 @@ def verify_recaptcha(response): return result.get("success") -def download_with_limit(url, save_path, size_limit): +def download_with_limit(url: str, save_path: str, size_limit: int) -> str: + """ + This function downloads a file from a URL and saves it to a specified path. + + Inputs: + - url: The URL to download the file from + - save_path: The path to save the file to + - size_limit: The maximum size of the file to download + + Returns: + - The path of the downloaded file + """ chunk_size = 1024 total_size = 0 with requests.get(url, stream=True, timeout=10) as response: @@ -111,7 +140,15 @@ def download_with_limit(url, save_path, size_limit): return save_path / filename -def stop_translate_file(state): +def stop_translate_file(state: dict) -> None: + """ + This function stops the translation process. + + Inputs: + - state: The state of the translation process + + Returns:- None + """ session_id = state["session_id"] if session_id is None: return @@ -135,10 +172,37 @@ def translate_file( progress=gr.Progress(), *envs, ): + """ + This function translates a PDF file from one language to another. + + Inputs: + - file_type: The type of file to translate + - file_input: The file to translate + - link_input: The link to the file to translate + - service: The translation service to use + - lang_from: The language to translate from + - lang_to: The language to translate to + - page_range: The range of pages to translate + - page_input: The input for the page range + - prompt: The custom prompt for the llm + - threads: The number of threads to use + - recaptcha_response: The reCAPTCHA response + - state: The state of the translation process + - progress: The progress bar + - envs: The environment variables + + Returns: + - The translated file + - The translated file + - The translated file + - The progress bar + - The progress bar + - The progress bar + """ session_id = uuid.uuid4() state["session_id"] = session_id cancellation_event_map[session_id] = asyncio.Event() - """Translate PDF content using selected service.""" + # Translate PDF content using selected service. if flag_demo and not verify_recaptcha(recaptcha_response): raise gr.Error("reCAPTCHA fail") @@ -195,7 +259,7 @@ def progress_bar(t: tqdm.tqdm): "lang_out": lang_to, "service": f"{translator.name}", "output": output, - "thread": int(threads), + "thread": int(threads) if threads else 1, "callback": progress_bar, "cancellation_event": cancellation_event_map[session_id], "envs": _envs, @@ -238,14 +302,7 @@ def progress_bar(t: tqdm.tqdm): c950="#020B33", ) -cancellation_event_map = {} - -with gr.Blocks( - title="PDFMathTranslate - PDF Translation with preserved formats", - theme=gr.themes.Default( - primary_hue=custom_blue, spacing_size="md", radius_size="lg" - ), - css=""" +custom_css = """ .secondary-text {color: #999 !important;} footer {visibility: hidden} .env-warning {color: #dd5500 !important;} @@ -264,9 +321,9 @@ def progress_bar(t: tqdm.tqdm): .progress-bar { border-radius: 8px !important; } - """, - head=( - """ + """ + +demo_recaptcha = """ """ - if flag_demo - else "" + +tech_details_string = f""" + Technical details + - GitHub: Byaidu/PDFMathTranslate
+ - GUI by: Rongxin
+ - Version: {__version__} + """ +cancellation_event_map = {} + + +# The following code creates the GUI +with gr.Blocks( + title="PDFMathTranslate - PDF Translation with preserved formats", + theme=gr.themes.Default( + primary_hue=custom_blue, spacing_size="md", radius_size="lg" ), + css=custom_css, + head=demo_recaptcha if flag_demo else "", ) as demo: gr.Markdown( "# [PDFMathTranslate @ GitHub](https://github.com/Byaidu/PDFMathTranslate)" @@ -387,12 +459,7 @@ def on_select_page(choice): translate_btn = gr.Button("Translate", variant="primary") cancellation_btn = gr.Button("Cancel", variant="secondary") tech_details_tog = gr.Markdown( - f""" - Technical details - - GitHub: Byaidu/PDFMathTranslate
- - GUI by: Rongxin
- - Version: {__version__} - """, + tech_details_string, elem_classes=["secondary-text"], ) page_range.select(on_select_page, page_range, page_input) @@ -525,7 +592,16 @@ def on_file_upload_translate(file, first_page_only): ) -def parse_user_passwd(file_path): +def parse_user_passwd(file_path: str) -> tuple: + """ + Parse the user name and password from the file. + + Inputs: + - file_path: The file path to read. + Outputs: + - tuple_list: The list of tuples of user name and password. + - content: The content of the file + """ tuple_list = [] content = "" if not file_path: @@ -546,12 +622,22 @@ def parse_user_passwd(file_path): return tuple_list, content -def setup_gui(share=False, authfile=["", ""]): - userlist, html = parse_user_passwd(authfile) +def setup_gui(share: bool = False, auth_file: list = ["", ""]) -> None: + """ + Setup the GUI with the given parameters. + + Inputs: + - share: Whether to share the GUI. + - auth_file: The file path to read the user name and password. + + Outputs: + - None + """ + user_list, html = parse_user_passwd(auth_file) if flag_demo: demo.launch(server_name="0.0.0.0", max_file_size="5mb", inbrowser=True) else: - if len(userlist) == 0: + if len(user_list) == 0: try: demo.launch( server_name="0.0.0.0", debug=True, inbrowser=True, share=share @@ -576,7 +662,7 @@ def setup_gui(share=False, authfile=["", ""]): debug=True, inbrowser=True, share=share, - auth=userlist, + auth=user_list, auth_message=html, ) except Exception: @@ -589,7 +675,7 @@ def setup_gui(share=False, authfile=["", ""]): debug=True, inbrowser=True, share=share, - auth=userlist, + auth=user_list, auth_message=html, ) except Exception: @@ -600,7 +686,7 @@ def setup_gui(share=False, authfile=["", ""]): debug=True, inbrowser=True, share=True, - auth=userlist, + auth=user_list, auth_message=html, ) @@ -608,4 +694,3 @@ def setup_gui(share=False, authfile=["", ""]): # For auto-reloading while developing if __name__ == "__main__": setup_gui() - setup_gui()